diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8baa58e3..635379c0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ jobs: test: runs-on: ubuntu-latest env: - KSADK_WEB_VERSION: "0.3.2" + KSADK_WEB_VERSION: "0.3.3" steps: - uses: actions/checkout@v4 @@ -98,7 +98,7 @@ jobs: name: full pytest (google-adk ${{ matrix.google-adk }}) runs-on: ubuntu-latest env: - KSADK_WEB_VERSION: "0.3.2" + KSADK_WEB_VERSION: "0.3.3" strategy: fail-fast: false matrix: diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml index 16d54694..9fba35d2 100644 --- a/.github/workflows/publish-pypi.yml +++ b/.github/workflows/publish-pypi.yml @@ -9,7 +9,7 @@ on: ksadk_web_version: description: KsADK Web npm version to bundle required: false - default: "0.3.2" + default: "0.3.3" approved_source_commit: description: Reviewed source commit SHA recorded in docs/maintainer-approval-record.md required: false @@ -37,7 +37,7 @@ jobs: environment: name: pypi env: - KSADK_WEB_VERSION: ${{ github.event.inputs.ksadk_web_version || '0.3.2' }} + KSADK_WEB_VERSION: ${{ github.event.inputs.ksadk_web_version || '0.3.3' }} KSADK_APPROVED_SOURCE_COMMIT: ${{ github.event.inputs.approved_source_commit || vars.KSADK_APPROVED_SOURCE_COMMIT }} PUBLISH_TARGET: ${{ github.event.inputs.publish_target || 'full' }} permissions: diff --git a/.github/workflows/release-check.yml b/.github/workflows/release-check.yml index 8d12363b..a3961700 100644 --- a/.github/workflows/release-check.yml +++ b/.github/workflows/release-check.yml @@ -9,8 +9,20 @@ on: - "Makefile" - "ksadk/**" - "ksadk_runtime_common/**" + - "tests/compat/**" + - "tests/e2e/test_codex_plugin_bridge_e2e.py" + - "tests/e2e/test_codex_provider_app_server_e2e.py" + - "tests/e2e/test_dsh_managed_toolchain_e2e.py" + - "tests/plugins/test_dsh_node_provider_e2e.py" + - "tests/fixtures/dsh-node-agent-provider/**" + - "tests/packaging/test_phase2_release_preflight.py" + - "tests/studio/e2e/**" - "scripts/open_source_audit.py" + - "scripts/audit_release_artifacts.py" + - "scripts/phase2_release_preflight.py" - "scripts/verify_ksadk_web_static.py" + - "scripts/write_build_provenance.py" + - "docs/phase2-plugin-compatibility.md" - ".github/workflows/release-check.yml" jobs: @@ -33,18 +45,25 @@ jobs: node-version: "22" - name: Install dependencies - run: uv sync --extra dev + run: uv sync --extra all + + - name: Install Chromium for Phase 2 browser gates + run: uv run playwright install --with-deps chromium - name: Build pinned frontend static assets env: - KSADK_WEB_VERSION: "0.3.2" + KSADK_WEB_VERSION: "0.3.3" run: make build-frontend - - name: Build artifacts - run: uv build + - name: Verify clean release source + run: | + test -z "$(git status --porcelain --untracked-files=all)" - - name: Check package metadata - run: uv run --extra dev python -m twine check dist/* + - name: Build one provenance-bound artifact pair + run: | + rm -rf dist + uv run python scripts/write_build_provenance.py + uv build --out-dir dist - - name: Audit wheel and sdist file lists - run: make open-source-audit-dist + - name: Run Phase 2 release preflight + run: uv run --extra all python scripts/phase2_release_preflight.py --dist-dir dist diff --git a/.gitignore b/.gitignore index 8c0e0ec3..2ab6793b 100644 --- a/.gitignore +++ b/.gitignore @@ -91,6 +91,9 @@ webui ksadk/server/static/** # Generated from the tracked React Studio source during release/build. ksadk/studio/static/** +# Generated immediately before packaging and embedded in wheel/sdist. Release +# gates verify it against the checked-out source commit; it is never source. +ksadk/_build_provenance.json ksadk/studio/web/node_modules/ ksadk/studio/web/dist/ site/ @@ -100,3 +103,4 @@ ksadk/server/web-ui/ e2e-codex-agent/ ksadk/studio/react-ui/node_modules/ .agentkit/secrets.env +agentkit.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index be77fe05..ad815ba4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,33 @@ 格式参考 [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 版本遵循 [Semantic Versioning](https://semver.org/spec/v2.0.0.html)。 -## [Unreleased] +## [0.8.3] - Unreleased + +> 本节是 Agent Runtime V2 Phase 2 的开发中草案,不代表已经发布或通过稳定版门禁。 + +### 插件化基础 + +- 新增统一的 `agentengine plugin` 产品入口,但不定义第三种 KsADK 私有插件格式。DSH Bundle/Profile 是唯一默认生态;受管理的固定版本 DSH/pnpm 工具链覆盖 `create`、`validate`、`test`、`pack`,开发者无需检出或编译 DeepSeek Harness 源码。 +- 新增事务化 PluginHost、能力注册与组合合同。一个真实仓外 DSH AgentProvider 已在同一受管 Profile 中通过安装、连续两轮状态延续、停用阻断、损坏升级失败回滚、重新启用旧版本继续执行以及卸载的完整 E2E。SQLite Store 与 Renderer 保持 host-owned,MCP、Skill 和 Context 只投影经过边界校验的安全数据;数据库路径和已解析 Secret 不越界。 +- DSH 本地目录和 `.tgz` 安装源按 SHA-256 固化到受管不可变存储;目录使用固定 pnpm 按 npm `files` 语义打包。启用、更新和投影前发现来源或制品摘要漂移会 fail closed;升级失败恢复旧 manifest、lock、状态和可执行旧包。 +- 新增 Codex App Server 插件桥接。Codex 插件的发现、详情、安装和卸载均交给 Codex 宿主,KsADK 不复制插件实现,也不接管其认证或宿主权限。 +- 新增 DeepSeek Harness Profile 管理桥接。DSH Bundle 的发现、安装、启停、升级、卸载和配置预检均委托给受管理的原生 `dsh plugin`,KsADK 只保存无 Secret 的 inventory、来源摘要与配置摘要。 + +### Studio 自动化与会话表面 + +- 新增本地 Scheduler Lite:支持 once、interval、cron、IANA 时区、启停、编辑、删除、立即运行、misfire 策略、并发保护和 occurrence 历史。Studio 提供全局自动化页和 Agent 详情页自动化 Tab;浏览器纵切已通过真实本地 Kernel、Codex RuntimeAdapter + App Server 以及 KsADK Harness 生产模型客户端验证 new/follow-up、accepted、run identity、terminal 状态和刷新后历史对账;测试仅以本地确定性 HTTP 模型端替代外部模型服务。 +- 冻结 `ConversationSurface`、`ConversationInput` 和 `ConversationItem` 合同,统一文本、reasoning、工具、审批、A2UI 与未知 item 的 identity-aware 归并和回放边界。 +- 新增核心 Conversation Renderer 与受控 A2UI action bridge。自定义前端可以消费同一会话表面;未知类型保持安全的通用降级,不要求客户端理解某个 Provider 的私有事件。 +- Hosted UI 与 Studio 固定到 `@kingsoftcloud/ksadk-web@0.3.3`。该版本新增可在 Node/SSR 环境安全导入的 headless conversation 入口、严格的 Conversation v1 解码、SSE 有界重连、按 item/event identity 归并、思考/工具/审批/产物/A2UI 的统一时间线,以及附件、模型、推理、审批、Goal/Plan 的统一输入合同;只有明确的 404 才回退旧 Responses/AG-UI,畸形响应与 5xx 继续 fail closed。 +- 修复基础安装把 `agentengine studio` 整体误降级为不可用的问题:Studio 所需的 `google-adk` 现在随基础包安装;LiteLLM 与 JSON 修复等仅在 `[adk]` 扩展中保留。 + +### 兼容与尚未关闭的门禁 + +- Phase 2 只增加本地能力,不要求已发布 Agent、历史 Bundle、无来源三元组 Runtime、未启用 Kernel 或无 PostgreSQL 的单机模式升级。历史 Harness 只有命中显式登记的精确来源摘要才进入 legacy adapter;未知 v1 fail closed,新 v2 缺少就绪 DSH registration 时也不会回退旧路径。 +- Codex 已覆盖真实 App Server 插件生命周期、DSH Codex Provider 的 MCP 两轮/同一 Thread、插件 inventory 与失败回滚、以及隔离 one-shot child 的取消和清理;DSH 也覆盖受管 Profile 和一个真实外部 AgentProvider 的连续多轮与完整失败回滚。上述证据不等于任意第三方 Provider 自动受支持,也不把云端持续后台任务纳入本地稳定声明。 +- Claude Code、游戏插件和任意第三方插件格式尚未作为已支持生态发布。后续可以通过 Provider 或 ecosystem bridge 接入,但必须先通过权限、生命周期、ConversationSurface 和兼容性 conformance。 +- `ksadk-web@0.3.3` 的源码门禁、独立浏览器 E2E 和显式 tarball 消费已通过;绑定该制品的真实部署 Hosted UI 已完成 Studio 创建 Codex Agent 与 0.8.2 历史 Agent 的两轮会话,验证了正文、思考、工具卡片和上下文续接。正式发布仍要求先完成 npm Trusted Publishing,再从公开 registry 重建 Studio/Hosted UI,并以最终 clean commit 通过 wheel/sdist provenance、公开内容审计和维护者审批;在这些外部写入完成前本节保持 `Unreleased`。 +- 新增 Phase 2 最终候选聚合门禁:只有最终源码提交、wheel/sdist、npm integrity、Hosted UI 镜像 digest、Helm revision,以及 Studio 新 Agent/历史 0.8.2 Agent 在 Studio 与 Hosted UI 的多轮流式证据全部一致时才输出 `passed`;本地 preflight 不再能被误当成完整发布结论。 ## [0.8.2] - 2026-08-26 diff --git a/MANIFEST.in b/MANIFEST.in index 37067272..d8860dce 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -3,3 +3,4 @@ recursive-exclude ksadk/server/web-ui * prune ksadk/studio/react-ui recursive-exclude ksadk/studio/react-ui * recursive-include ksadk_runtime_common/schemas *.json +include ksadk/_build_provenance.json diff --git a/Makefile b/Makefile index 5c7791c7..cc397fe0 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # AgentEngine Makefile # 用于同步 KsADK Web static 和管理项目 -.PHONY: help install clean clean-cache clean-dist clean-static clean-offline dev test publish publish-test public-status public-init-worktree public-worktree-status public-sync-check public-secret-audit public-audit public-version-gate docs-site-build docs-site-dev public-test public-build-check public-build-alias-check public-preflight public-publish-check public-release-approval-check public-publish-gate public-release-tag public-review public-sync-ksadk-web-static open-source-audit-dist open-source-audit-alias-dist openclaw-build openclaw-push openclaw-size hermes-build hermes-push hermes-size sync-ksadk-web-static verify-ksadk-web-static verify-ksadk-web-wheel-static build-studio-static sync-hosted-ui build-frontend build-webui sync-static webui build-wheel build-all clean-frontend print-build-provenance phase1-canary-build phase1-canary-push phase1-canary-deploy phase1-canary-matrix phase1-canary-status phase1-canary-delete +.PHONY: help install clean clean-cache clean-dist clean-static clean-offline dev test publish publish-test public-status public-init-worktree public-worktree-status public-sync-check public-secret-audit public-audit public-version-gate docs-site-build docs-site-dev public-test public-build-check public-build-alias-check phase2-release-preflight phase2-release-candidate-gate public-preflight public-publish-check public-release-approval-check public-publish-gate public-release-tag public-review public-sync-ksadk-web-static open-source-audit-dist open-source-audit-alias-dist openclaw-build openclaw-push openclaw-size hermes-build hermes-push hermes-size sync-ksadk-web-static verify-ksadk-web-static verify-ksadk-web-wheel-static build-studio-static sync-hosted-ui build-frontend build-webui sync-static webui build-wheel build-all clean-frontend print-build-provenance phase1-canary-build phase1-canary-push phase1-canary-deploy phase1-canary-matrix phase1-canary-status phase1-canary-delete PHASE1_CANARY_NAMESPACE ?= agent-kernel-phase1 # Phase 1 runtime drills must run beside real Agent workloads in the preprod @@ -27,7 +27,7 @@ help: @echo " make test 运行测试" @echo "" @echo " \033[1;32mWeb UI 构建:\033[0m" - @echo " make sync-ksadk-web-static KSADK_WEB_VERSION=0.3.2" + @echo " make sync-ksadk-web-static KSADK_WEB_VERSION=0.3.3" @echo " 从 @kingsoftcloud/ksadk-web npm 包同步 static" @echo " make build-frontend 准备 ksadk-web 与 React Studio static" @echo " make build-studio-static 编译 React Studio static" @@ -53,6 +53,8 @@ help: @echo " make public-version-gate 版本号门禁(防降版/重复发版,对比 PyPI 已发版本)" @echo " make public-init-worktree 初始化/校验 .worktrees/public-main" @echo " make public-preflight GitHub/PyPI/Release 前必须通过的本地门禁" + @echo " make phase2-release-preflight Phase 2 兼容/原生宿主/浏览器/制品门禁" + @echo " make phase2-release-candidate-gate 绑定 npm/镜像/预发 E2E 的最终门禁" @echo " make public-publish-gate PyPI/GitHub Release 写操作前的审批门禁" @echo " make public-release-tag V=x.y.z 创建公开 release 留痕 tag" @echo " make public-review 公开候选审核入口" @@ -184,7 +186,7 @@ studio-react-install-browser: studio-react-test: @if [ -f "ksadk/studio/react-ui/package.json" ]; then \ - npm --prefix ksadk/studio/react-ui ci; \ + $(KSADK_WEB_NPM) --prefix ksadk/studio/react-ui ci; \ npm --prefix ksadk/studio/react-ui test; \ npm --prefix ksadk/studio/react-ui run test:ui; \ (cd ksadk/studio/react-ui && npx tsc --noEmit); \ @@ -269,6 +271,7 @@ check-build-deps: build: check-build-deps sync-ksadk-web-static build-studio-static @echo "📦 构建 Python 包 v$(VERSION)..." + @python scripts/write_build_provenance.py python -m build @# 删除 tar.gz 和临时目录,只保留 whl @rm -f dist/*.tar.gz @@ -284,6 +287,7 @@ build-only: check-build-deps build-studio-static echo "❌ 错误: ksadk/server/static/ 目录为空,请先运行 make sync-ksadk-web-static"; \ exit 1; \ fi + @python scripts/write_build_provenance.py python -m build @rm -f dist/*.tar.gz @rm -rf build/ *.egg-info/ @@ -431,6 +435,10 @@ public-sync-check: public-secret-audit: @echo "==> secret and sensitive-file audit" + @# Docs static output is generated, untracked release byproduct. Remove it + @# before scanning so a second public-preflight checks the same source tree + @# as the first one instead of scanning bundled third-party source maps. + @rm -rf docs-site/.next docs-site/out @if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then \ if git ls-files | grep -E '(^|/)(\.pypirc|kubeconfig|.*\.kubeconfig|id_rsa|id_ed25519)$$'; then \ echo "❌ 发现禁止跟踪的敏感文件"; \ @@ -478,6 +486,7 @@ public-sync-ksadk-web-static: sync-ksadk-web-static public-build-check: clean-dist sync-ksadk-web-static build-studio-static @echo "==> build and twine check" + @uv run python scripts/write_build_provenance.py @uv build @$(MAKE) verify-ksadk-web-wheel-static @uv run pytest tests/test_runtime_common_packaging.py -q @@ -513,7 +522,27 @@ public-version-gate: @echo "==> release version gate (prevent downgrade/re-publish)" uv run python scripts/check_release_version.py -public-preflight: public-version-gate public-audit sync-ksadk-web-static public-test docs-site-build public-build-check +phase2-release-preflight: public-build-check + @echo "==> Phase 2 compatibility, native host, browser, and artifact preflight" + @uv run --extra all python scripts/phase2_release_preflight.py --dist-dir dist + +PHASE2_FINAL_COMMIT ?= $(shell git rev-parse HEAD) +PHASE2_LOCAL_EVIDENCE ?= dist/phase2-evidence.json +PHASE2_WEB_REGISTRY_EVIDENCE ?= dist/evidence/ksadk-web-registry.json +PHASE2_DEPLOYMENT_EVIDENCE ?= dist/evidence/hosted-ui-deployment.json +PHASE2_PREPROD_EVIDENCE ?= dist/evidence/preprod-e2e.json +PHASE2_FINAL_EVIDENCE ?= dist/phase2-release-candidate.json + +phase2-release-candidate-gate: + @uv run python scripts/phase2_release_candidate_gate.py \ + --expected-commit "$(PHASE2_FINAL_COMMIT)" \ + --local "$(PHASE2_LOCAL_EVIDENCE)" \ + --web-registry "$(PHASE2_WEB_REGISTRY_EVIDENCE)" \ + --deployment "$(PHASE2_DEPLOYMENT_EVIDENCE)" \ + --preprod "$(PHASE2_PREPROD_EVIDENCE)" \ + --output "$(PHASE2_FINAL_EVIDENCE)" + +public-preflight: public-version-gate public-audit sync-ksadk-web-static public-test docs-site-build phase2-release-preflight @echo "✅ public preflight passed" public-publish-check: @@ -668,17 +697,18 @@ STATIC_DIR := ksadk/server/static STUDIO_REACT_DIR := ksadk/studio/react-ui STUDIO_STATIC_DIR := ksadk/studio/static # The wheel must embed a reproducible Web bundle. 0.8.x is coupled to the -# Interaction/v1 Web 0.3.2 release; a normal release build must fail rather -# than silently substituting an older npm package when that release is not +# The shared Conversation v1 Web 0.3.3 release; a normal release build must +# fail rather than silently substituting an older npm package when that release is not # visible. A reviewed local tarball is permitted for a pre-release image # build, but remains explicit in the command and provenance output. -KSADK_WEB_VERSION ?= 0.3.2 +KSADK_WEB_VERSION ?= 0.3.3 KSADK_WEB_PACKAGE ?= @kingsoftcloud/ksadk-web KSADK_WEB_TARBALL_NAME := kingsoftcloud-ksadk-web-$(patsubst v%,%,$(KSADK_WEB_VERSION)).tgz KSADK_WEB_TARBALL ?= KSADK_WEB_RELEASE_URL ?= KSADK_WEB_CACHE_DIR ?= .cache/ksadk-web KSADK_WEB_REGISTRY ?= https://registry.npmjs.org +KSADK_WEB_NPM := npm --registry="$(KSADK_WEB_REGISTRY)" sync-ksadk-web-static: @echo "Sync KsADK Web static assets from $(KSADK_WEB_PACKAGE)@$(KSADK_WEB_VERSION)" @@ -698,7 +728,7 @@ sync-ksadk-web-static: echo "$(KSADK_WEB_TARBALL_NAME)" > "$(KSADK_WEB_CACHE_DIR)/.tarball-name"; \ elif command -v npm >/dev/null 2>&1; then \ echo "Using npm pack (npm found in PATH)"; \ - npm pack "$(KSADK_WEB_PACKAGE)@$(patsubst v%,%,$(KSADK_WEB_VERSION))" --pack-destination "$(KSADK_WEB_CACHE_DIR)" > "$(KSADK_WEB_CACHE_DIR)/.tarball-name"; \ + $(KSADK_WEB_NPM) pack "$(KSADK_WEB_PACKAGE)@$(patsubst v%,%,$(KSADK_WEB_VERSION))" --pack-destination "$(KSADK_WEB_CACHE_DIR)" > "$(KSADK_WEB_CACHE_DIR)/.tarball-name"; \ else \ echo "npm not found; resolving tarball from registry $(KSADK_WEB_REGISTRY)"; \ REGISTRY_JSON=$$(curl -fsSL "$(KSADK_WEB_REGISTRY)/$(KSADK_WEB_PACKAGE)/$(KSADK_WEB_VERSION)"); \ @@ -735,8 +765,17 @@ verify-ksadk-web-wheel-static: build-studio-static: @if [ -f "$(STUDIO_REACT_DIR)/package.json" ]; then \ + set -eu; \ echo "Build React Studio static assets from $(STUDIO_REACT_DIR)"; \ - npm --prefix "$(STUDIO_REACT_DIR)" ci; \ + if [ -n "$(KSADK_WEB_TARBALL)" ]; then \ + WEB_TARBALL_PATH="$(KSADK_WEB_TARBALL)"; \ + case "$$WEB_TARBALL_PATH" in /*) ;; *) WEB_TARBALL_PATH="$(CURDIR)/$$WEB_TARBALL_PATH" ;; esac; \ + test -f "$$WEB_TARBALL_PATH" || { echo "ERROR: KSADK_WEB_TARBALL does not exist: $$WEB_TARBALL_PATH" >&2; exit 1; }; \ + echo "Install Studio dependencies with the reviewed KsADK Web tarball: $$WEB_TARBALL_PATH"; \ + $(KSADK_WEB_NPM) --prefix "$(STUDIO_REACT_DIR)" install --no-save --package-lock=false "$$WEB_TARBALL_PATH"; \ + else \ + $(KSADK_WEB_NPM) --prefix "$(STUDIO_REACT_DIR)" ci; \ + fi; \ npm --prefix "$(STUDIO_REACT_DIR)" run build; \ else \ echo "React Studio source is intentionally absent; using reviewed compiled assets from $(STUDIO_STATIC_DIR)"; \ @@ -751,6 +790,7 @@ build-frontend: sync-ksadk-web-static build-studio-static @echo "Frontend static assets prepared for packaging" build-wheel: build-frontend + @uv run python scripts/write_build_provenance.py uv build @$(MAKE) --no-print-directory print-build-provenance diff --git a/README.en.md b/README.en.md index 483fe415..6f8edb49 100644 --- a/README.en.md +++ b/README.en.md @@ -47,6 +47,17 @@ agentengine web . --no-open See [AgentKit Local Studio](https://kingsoftcloud.github.io/ksadk-python/en/docs/framework/guides/agentkit-local-studio/) and the [changelog](CHANGELOG.md) for details. +## 0.8.3 Agent Runtime V2 Phase 2 (release preparation) + +Phase 2 is converging KsADK extension points into a controlled plugin system while keeping existing 0.8.2 Agents and Bundle v1 on their original paths: + +- DSH Bundle/Profile is the only default plugin ecosystem. `agentengine plugin` uses a pinned, managed DSH/pnpm toolchain to create, validate, test, and package bundles; developers do not need to check out the DeepSeek Harness source tree. KsADK does not define a native KsADK plugin package format. +- Official Codex plugins remain under Codex App Server. KsADK does not copy their implementation or take over host permissions; DSH Codex Bundle/child Provider, Claude Code, and third-party Providers that have not passed conformance remain outside the completed capability set. +- Studio Scheduler Lite covers local once, interval, cron, timezone, run-now, and occurrence history flows on both the global Automations page and the Agent detail view. Cloud 24x7 scheduling belongs to a later cloud-projection phase. +- `ConversationSurface`, `ConversationInput`, `ConversationItem`, the core renderer, and the A2UI bridge define one input/output boundary for Studio, Hosted UI, and custom clients. The shared Web package dependency and browser interaction loop remain release gates. + +This is an unreleased preview. See [Plugins and automations](https://kingsoftcloud.github.io/ksadk-python/en/docs/framework/guides/plugins-and-automations/) and the [0.8.3 changelog draft](CHANGELOG.md#083---unreleased) for commands, compatibility, and current gates. + ## 0.8.1 Observability Contract - Remote traces use standard OTLP/HTTP only: Langfuse consumes `OTEL_EXPORTER_OTLP_*`, while CloudMonitor consumes `CLOUD_MONITOR_OTLP_*`. Both backends receive the same span with identical `trace_id` and `span_id` values. diff --git a/README.md b/README.md index 23a563b5..4ae7141c 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,18 @@ agentengine web . --no-open 完整操作见 [AgentKit Local Studio](https://kingsoftcloud.github.io/ksadk-python/cn/docs/framework/guides/agentkit-local-studio/),详细变更见 [CHANGELOG](CHANGELOG.md)。 +## 0.8.3 Agent Runtime V2 Phase 2(发布准备中) + +Phase 2 正在把 KsADK 的可扩展能力收敛为受控插件体系,同时保持已发布 Agent 与历史 Bundle 的原路径可用: + +- DSH Bundle/Profile 是唯一默认插件生态;`agentengine plugin` 使用固定版本的受管理 DSH/pnpm 工具链完成创建、校验、测试和打包,开发者无需检出 DeepSeek Harness 源码。KsADK 不再定义“原生 KsADK 插件”包格式。 +- 本地目录或 `.tgz` 会先按 SHA-256 固化为不可变安装源;投影前发现来源漂移会 fail closed,升级失败会恢复旧 manifest、lock、状态与仍可执行的旧包。一个真实仓外 DSH AgentProvider 已通过同一 Profile 的安装、连续两轮、停用、失败升级回滚、重新启用和卸载 E2E。 +- Codex 官方插件继续由 Codex App Server 管理,KsADK 不复制其实现或接管宿主权限。DSH Codex Bundle/child Provider、Claude Code 以及任意未经 conformance 的第三方 Provider 仍不属于已完成能力。 +- Studio Scheduler Lite 已覆盖本地 once、interval、cron、时区、立即运行和历史,并同时进入全局自动化页与 Agent 详情页;云端 24×7 调度留在后续端云阶段。 +- `ConversationSurface`、`ConversationInput`、`ConversationItem`、核心 Renderer 与 A2UI bridge 统一 Studio、Hosted UI 和自定义前端的输入输出边界。`ksadk-web@0.3.3` 的源码/浏览器门禁以及真实部署的新、历史 Agent 两轮会话已经通过;正式版仍须从公开 npm 制品重建并完成最终公开审计。 + +当前内容是未发布预览。能力边界、命令和兼容策略见[插件与自动化](https://kingsoftcloud.github.io/ksadk-python/cn/docs/framework/guides/plugins-and-automations/)和 [0.8.3 CHANGELOG 草案](CHANGELOG.md#083---unreleased)。 + ## 0.8.1 可观测性契约 - 远端 trace 统一使用标准 OTLP/HTTP:Langfuse 读取 `OTEL_EXPORTER_OTLP_*`,CloudMonitor 读取 `CLOUD_MONITOR_OTLP_*`;同一 span 在两端保持相同的 `trace_id` / `span_id`。 diff --git a/README.zh-CN.md b/README.zh-CN.md index a9f5492e..7e4dfa0b 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -47,6 +47,17 @@ agentengine web . --no-open 完整操作见 [AgentKit Local Studio](https://kingsoftcloud.github.io/ksadk-python/cn/docs/framework/guides/agentkit-local-studio/),详细变更见 [CHANGELOG](CHANGELOG.md)。 +## 0.8.3 Agent Runtime V2 Phase 2(发布准备中) + +Phase 2 正在把 KsADK 的可扩展能力收敛为受控插件体系,同时保持 0.8.2 Agent 和 Bundle v1 原路径可用: + +- DSH Bundle/Profile 是唯一默认插件生态;`agentengine plugin` 使用固定版本的受管理 DSH/pnpm 工具链完成创建、校验、测试和打包,开发者无需检出 DeepSeek Harness 源码。KsADK 不再定义“原生 KsADK 插件”包格式。 +- Codex 官方插件继续由 Codex App Server 管理,KsADK 不复制其实现或接管宿主权限。DSH Codex Bundle/child Provider、Claude Code 以及任意未经 conformance 的第三方 Provider 仍不属于已完成能力。 +- Studio Scheduler Lite 已覆盖本地 once、interval、cron、时区、立即运行和历史,并同时进入全局自动化页与 Agent 详情页;云端 24×7 调度留在后续端云阶段。 +- `ConversationSurface`、`ConversationInput`、`ConversationItem`、核心 Renderer 与 A2UI bridge 统一 Studio、Hosted UI 和自定义前端的输入输出边界;共享 Web 包和浏览器交互闭环仍须通过发布门禁。 + +当前内容是未发布预览。能力边界、命令和兼容策略见[插件与自动化](https://kingsoftcloud.github.io/ksadk-python/cn/docs/framework/guides/plugins-and-automations/)和 [0.8.3 CHANGELOG 草案](CHANGELOG.md#083---unreleased)。 + ## 0.8.1 可观测性契约 - 远端 trace 统一使用标准 OTLP/HTTP:Langfuse 读取 `OTEL_EXPORTER_OTLP_*`,CloudMonitor 读取 `CLOUD_MONITOR_OTLP_*`;同一 span 在两端保持相同的 `trace_id` / `span_id`。 diff --git a/contracts/agent-kernel/v1/activation-lease.schema.json b/contracts/agent-kernel/v1/activation-lease.schema.json new file mode 100644 index 00000000..94139f98 --- /dev/null +++ b/contracts/agent-kernel/v1/activation-lease.schema.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ksadk.local/contracts/agent-kernel/v1/activation-lease.schema.json", + "title": "ActivationLease/v1", + "type": "object", + "properties": { + "schema_version": {"const": 1}, + "agent_instance_id": {"type": "string", "minLength": 1}, + "activation_id": {"type": "string", "minLength": 1}, + "fencing_token": {"type": "integer", "minimum": 0}, + "lease_expires_at": {"type": "string", "format": "date-time"}, + "bundle_digest": {"type": "string", "minLength": 1}, + "runtime_type": {"type": "string", "minLength": 1}, + "capability_digest": {"type": "string", "minLength": 1} + }, + "required": [ + "schema_version", "agent_instance_id", "activation_id", "fencing_token", + "lease_expires_at", "bundle_digest", "runtime_type", "capability_digest" + ] +} diff --git a/contracts/agent-kernel/v1/agent-control.schema.json b/contracts/agent-kernel/v1/agent-control.schema.json new file mode 100644 index 00000000..e6f3150b --- /dev/null +++ b/contracts/agent-kernel/v1/agent-control.schema.json @@ -0,0 +1,268 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ksadk.local/contracts/agent-kernel/v1/agent-control.schema.json", + "title": "AgentControlChannel/v1", + "type": "object", + "anyOf": [ + {"$ref": "#/$defs/agentControlCommand"}, + {"$ref": "#/$defs/agentControlPermit"}, + {"$ref": "#/$defs/agentControlReceipt"}, + {"$ref": "#/$defs/interactionCommand"}, + {"$ref": "#/$defs/agentStatusQuery"}, + {"$ref": "#/$defs/sessionEventSubscription"}, + {"$ref": "#/$defs/agentStatusSnapshot"} + ], + "$defs": { + "controlSource": { + "type": "object", + "properties": { + "kind": { + "enum": ["studio", "responses", "agui", "a2a", "parent_agent", "scheduler", "workflow", "channel", "system"] + }, + "ref": {"type": "string", "minLength": 1} + }, + "required": ["kind", "ref"] + }, + "enqueuePayload": { + "type": "object", + "properties": {"content": true, "reply_to": {"type": ["string", "null"]}}, + "required": ["content"] + }, + "steerPayload": { + "type": "object", + "properties": {"content": true, "run_id": {"type": ["string", "null"]}}, + "required": ["content"] + }, + "injectPayload": { + "type": "object", + "properties": {"context": true, "run_id": {"type": ["string", "null"]}}, + "required": ["context"] + }, + "interruptPayload": { + "type": "object", + "properties": {"run_id": {"type": ["string", "null"]}, "reason": {"type": ["string", "null"]}} + }, + "pausePayload": { + "type": "object", + "properties": {"run_id": {"type": ["string", "null"]}, "reason": {"type": ["string", "null"]}} + }, + "resumeTarget": { + "type": "object", + "properties": { + "kind": {"enum": ["checkpoint", "continuation", "run"]}, + "id": {"type": "string", "minLength": 1} + }, + "required": ["kind", "id"] + }, + "resumePayload": { + "type": "object", + "properties": {"target": {"$ref": "#/$defs/resumeTarget"}, "input": true}, + "required": ["target"] + }, + "submitInteractionPayload": { + "type": "object", + "properties": { + "run_id": {"type": "string", "minLength": 1}, + "interaction_id": {"type": "string", "minLength": 1}, + "token_ref": {"type": "string", "minLength": 1}, + "response": true + }, + "required": ["run_id", "interaction_id", "token_ref", "response"] + }, + "interactionCommand": { + "type": "object", + "properties": { + "schema_version": {"const": 1}, + "command_id": {"type": "string", "format": "uuid"}, + "tenant_id": {"type": "string", "minLength": 1}, + "agent_instance_id": {"type": "string", "minLength": 1}, + "session_id": {"type": "string", "minLength": 1}, + "run_id": {"type": "string", "minLength": 1}, + "interaction_id": {"type": "string", "minLength": 1}, + "expected_revision": {"type": "integer", "minimum": 1}, + "action": {"enum": ["approve", "reject", "submit", "cancel"]}, + "response": true, + "idempotency_key": {"type": "string", "minLength": 1}, + "actor": { + "type": "object", + "properties": { + "subject_ref": {"type": "string", "minLength": 1}, + "kind": {"enum": ["user", "service", "system"]} + }, + "required": ["subject_ref", "kind"], + "additionalProperties": false + }, + "authorization_ref": {"type": "string", "minLength": 1} + }, + "required": [ + "schema_version", "command_id", "tenant_id", "agent_instance_id", "session_id", + "run_id", "interaction_id", "expected_revision", "action", "response", + "idempotency_key", "actor", "authorization_ref" + ], + "additionalProperties": false + }, + "agentControlCommand": { + "type": "object", + "properties": { + "schema_version": {"const": 1}, + "command_id": {"type": "string", "format": "uuid"}, + "idempotency_key": {"type": "string", "minLength": 1}, + "tenant_id": {"type": "string", "minLength": 1}, + "agent_instance_id": {"type": "string", "minLength": 1}, + "session_id": {"type": "string", "minLength": 1}, + "command_type": { + "enum": ["enqueue", "steer", "inject", "interrupt", "pause", "resume", "submit_interaction"] + }, + "payload": {"type": "object"}, + "source": {"$ref": "#/$defs/controlSource"}, + "authorization_ref": {"type": "string", "minLength": 1}, + "submitted_at": {"type": "string", "format": "date-time"}, + "causation_id": {"type": ["string", "null"]}, + "correlation_id": {"type": ["string", "null"]} + }, + "required": [ + "schema_version", "command_id", "idempotency_key", "tenant_id", + "agent_instance_id", "session_id", "command_type", "payload", + "source", "authorization_ref", "submitted_at" + ] + }, + "agentControlPermit": { + "type": "object", + "properties": { + "schema_version": {"const": 1}, + "permit_id": {"type": "string", "minLength": 1}, + "subject_ref": {"type": "string", "minLength": 1}, + "tenant_id": {"type": "string", "minLength": 1}, + "agent_instance_id": {"type": "string", "minLength": 1}, + "session_id": {"type": ["string", "null"]}, + "allowed_operations": { + "type": "array", + "items": { + "enum": [ + "enqueue", "steer", "inject", "interrupt", "pause", "resume", + "submit_interaction", "get_status", "subscribe_events" + ] + } + }, + "issued_at": {"type": "string", "format": "date-time"}, + "expires_at": {"type": "string", "format": "date-time"}, + "nonce": {"type": "string", "minLength": 1}, + "key_id": {"type": "string", "minLength": 1}, + "alg": {"const": "Ed25519"}, + "claims_digest": {"type": "string", "minLength": 1}, + "signature": {"type": "string", "minLength": 1} + }, + "required": [ + "schema_version", "permit_id", "subject_ref", "tenant_id", + "agent_instance_id", "session_id", "allowed_operations", "issued_at", + "expires_at", "nonce", "key_id", "alg", "claims_digest", "signature" + ] + }, + "controlError": { + "type": "object", + "properties": { + "code": {"type": "string", "minLength": 1}, + "message": {"type": "string"}, + "retryable": {"type": "boolean"}, + "details": {"type": "object"} + }, + "required": ["code", "message", "retryable"] + }, + "agentControlReceipt": { + "type": "object", + "properties": { + "schema_version": {"const": 1}, + "command_id": {"type": "string", "format": "uuid"}, + "status": { + "enum": ["accepted", "duplicate", "rejected", "unsupported", "queue_full", "persistence_uncertain"] + }, + "message_id": {"type": ["string", "null"], "format": "uuid"}, + "run_id": {"type": ["string", "null"]}, + "accepted_seq": {"type": ["integer", "null"], "minimum": 0}, + "error": {"oneOf": [{"type": "null"}, {"$ref": "#/$defs/controlError"}]} + }, + "required": ["schema_version", "command_id", "status"], + "allOf": [ + { + "if": {"properties": {"status": {"enum": ["accepted", "duplicate"]}}}, + "then": {"properties": {"message_id": {"type": "string", "format": "uuid"}}} + }, + { + "if": {"properties": {"status": {"enum": ["rejected", "unsupported", "queue_full", "persistence_uncertain"]}}}, + "then": {"properties": {"error": {"$ref": "#/$defs/controlError"}}} + } + ] + }, + "agentStatusQuery": { + "type": "object", + "properties": { + "schema_version": {"const": 1}, + "tenant_id": {"type": "string", "minLength": 1}, + "agent_instance_id": {"type": "string", "minLength": 1}, + "authorization_ref": {"type": "string", "minLength": 1}, + "session_id": {"type": ["string", "null"]} + }, + "required": ["schema_version", "tenant_id", "agent_instance_id", "authorization_ref"] + }, + "sessionEventSubscription": { + "type": "object", + "properties": { + "schema_version": {"const": 1}, + "tenant_id": {"type": "string", "minLength": 1}, + "agent_instance_id": {"type": "string", "minLength": 1}, + "session_id": {"type": "string", "minLength": 1}, + "authorization_ref": {"type": "string", "minLength": 1}, + "after_seq": {"type": "integer", "minimum": 0} + }, + "required": ["schema_version", "tenant_id", "agent_instance_id", "session_id", "authorization_ref"] + }, + "runtimeCapability": { + "type": "object", + "properties": { + "supported": {"type": "boolean"}, + "mode": {"enum": ["native", "emulated", "unavailable"]}, + "reason": {"type": ["string", "null"]} + }, + "required": ["supported", "mode"] + }, + "runtimeCapabilityMatrix": { + "type": "object", + "properties": { + "schema_version": {"const": 1}, + "cancel": {"$ref": "#/$defs/runtimeCapability"}, + "pause": {"$ref": "#/$defs/runtimeCapability"}, + "resume": {"$ref": "#/$defs/runtimeCapability"}, + "submit_interaction": {"$ref": "#/$defs/runtimeCapability"}, + "attach": {"$ref": "#/$defs/runtimeCapability"}, + "steer": {"$ref": "#/$defs/runtimeCapability"}, + "inject": {"$ref": "#/$defs/runtimeCapability"}, + "checkpoint": {"$ref": "#/$defs/runtimeCapability"}, + "durable_restore": {"$ref": "#/$defs/runtimeCapability"} + }, + "required": [ + "schema_version", "cancel", "pause", "resume", "submit_interaction", + "attach", "steer", "inject", "checkpoint", "durable_restore" + ] + }, + "agentStatusSnapshot": { + "type": "object", + "properties": { + "schema_version": {"const": 1}, + "agent_instance_id": {"type": "string", "minLength": 1}, + "instance_state": {"enum": ["ready", "degraded", "unavailable"]}, + "session_id": {"type": ["string", "null"]}, + "active_run_id": {"type": ["string", "null"]}, + "active_run_state": {"enum": ["pending", "running", "paused", "waiting", null]}, + "inbox_depth": {"type": "integer", "minimum": 0}, + "activation_id": {"type": ["string", "null"]}, + "lease_expires_at": {"type": ["string", "null"], "format": "date-time"}, + "capability": {"$ref": "#/$defs/runtimeCapabilityMatrix"} + }, + "required": [ + "schema_version", "agent_instance_id", "instance_state", + "session_id", "active_run_id", "active_run_state", "inbox_depth", + "activation_id", "lease_expires_at", "capability" + ] + } + } +} diff --git a/contracts/agent-kernel/v1/fixtures/activation-lease.json b/contracts/agent-kernel/v1/fixtures/activation-lease.json new file mode 100644 index 00000000..8d5412a4 --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/activation-lease.json @@ -0,0 +1,32 @@ +[ + { + "schema_version": 1, + "agent_instance_id": "agent-instance-1", + "activation_id": "activation-1", + "fencing_token": 3, + "lease_expires_at": "2026-08-17T00:01:00Z", + "bundle_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "runtime_type": "langgraph", + "capability_digest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" + }, + { + "schema_version": 1, + "agent_instance_id": "agent-instance-1", + "activation_id": "activation-1", + "fencing_token": 3, + "lease_expires_at": "2026-08-17T00:02:00Z", + "bundle_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "runtime_type": "langgraph", + "capability_digest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" + }, + { + "schema_version": 1, + "agent_instance_id": "agent-instance-1", + "activation_id": "activation-2", + "fencing_token": 4, + "lease_expires_at": "2026-08-17T00:03:00Z", + "bundle_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "runtime_type": "langgraph", + "capability_digest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" + } +] diff --git a/contracts/agent-kernel/v1/fixtures/agent-control-enqueue.json b/contracts/agent-kernel/v1/fixtures/agent-control-enqueue.json new file mode 100644 index 00000000..fc73a7f2 --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/agent-control-enqueue.json @@ -0,0 +1,21 @@ +{ + "schema_version": 1, + "command_id": "4bf84e1b-f4cd-4c55-907f-2dc5e676b119", + "idempotency_key": "studio:s1:message-enqueue", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "command_type": "enqueue", + "payload": { + "content": { + "text": "hello" + }, + "reply_to": "reply-1" + }, + "source": { + "kind": "studio", + "ref": "local-studio" + }, + "authorization_ref": "permit-1", + "submitted_at": "2026-08-17T00:00:00Z" +} diff --git a/contracts/agent-kernel/v1/fixtures/agent-control-inject.json b/contracts/agent-kernel/v1/fixtures/agent-control-inject.json new file mode 100644 index 00000000..03daa25c --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/agent-control-inject.json @@ -0,0 +1,21 @@ +{ + "schema_version": 1, + "command_id": "6d2a063d-1e4f-4a77-b291-4fe7a898d33b", + "idempotency_key": "studio:s1:message-inject", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "command_type": "inject", + "payload": { + "context": { + "doc": "spec.md" + }, + "run_id": "run-1" + }, + "source": { + "kind": "studio", + "ref": "local-studio" + }, + "authorization_ref": "permit-1", + "submitted_at": "2026-08-17T00:00:00Z" +} diff --git a/contracts/agent-kernel/v1/fixtures/agent-control-interrupt.json b/contracts/agent-kernel/v1/fixtures/agent-control-interrupt.json new file mode 100644 index 00000000..0e78751b --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/agent-control-interrupt.json @@ -0,0 +1,19 @@ +{ + "schema_version": 1, + "command_id": "7e3b174e-2f50-4b88-c3a2-5af8b909e44c", + "idempotency_key": "studio:s1:message-interrupt", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "command_type": "interrupt", + "payload": { + "run_id": "run-1", + "reason": "user_requested" + }, + "source": { + "kind": "studio", + "ref": "local-studio" + }, + "authorization_ref": "permit-1", + "submitted_at": "2026-08-17T00:00:00Z" +} diff --git a/contracts/agent-kernel/v1/fixtures/agent-control-pause.json b/contracts/agent-kernel/v1/fixtures/agent-control-pause.json new file mode 100644 index 00000000..d6375681 --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/agent-control-pause.json @@ -0,0 +1,19 @@ +{ + "schema_version": 1, + "command_id": "8f4c285f-3a61-4c99-d4b3-6b09ca21af5d", + "idempotency_key": "studio:s1:message-pause", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "command_type": "pause", + "payload": { + "run_id": "run-1", + "reason": "user_requested" + }, + "source": { + "kind": "studio", + "ref": "local-studio" + }, + "authorization_ref": "permit-1", + "submitted_at": "2026-08-17T00:00:00Z" +} diff --git a/contracts/agent-kernel/v1/fixtures/agent-control-permit.json b/contracts/agent-kernel/v1/fixtures/agent-control-permit.json new file mode 100644 index 00000000..dd6a037d --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/agent-control-permit.json @@ -0,0 +1,68 @@ +[ + { + "schema_version": 1, + "permit_id": "permit-1", + "subject_ref": "user-1", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "allowed_operations": [ + "enqueue", + "steer", + "interrupt", + "get_status", + "subscribe_events" + ], + "issued_at": "2026-08-17T00:00:00Z", + "expires_at": "2026-08-17T00:04:00Z", + "nonce": "nonce-1", + "key_id": "wk-2026-08", + "alg": "Ed25519", + "claims_digest": "6b1f0c2c9e3a0a5b8b6e2c1f9e0a4d73b1c5e8f2a0d9c3b6e1f4a7d0c8b5e2f1", + "signature": "c2lnbmF0dXJlLXBsYWNlaG9sZGVyLTE" + }, + { + "schema_version": 1, + "permit_id": "permit-2-expired", + "subject_ref": "user-1", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "allowed_operations": [ + "enqueue", + "steer", + "interrupt", + "get_status", + "subscribe_events" + ], + "issued_at": "2026-08-16T23:56:00Z", + "expires_at": "2026-08-17T00:00:00Z", + "nonce": "nonce-2", + "key_id": "wk-2026-08", + "alg": "Ed25519", + "claims_digest": "6b1f0c2c9e3a0a5b8b6e2c1f9e0a4d73b1c5e8f2a0d9c3b6e1f4a7d0c8b5e2f1", + "signature": "c2lnbmF0dXJlLXBsYWNlaG9sZGVyLTE" + }, + { + "schema_version": 1, + "permit_id": "permit-3-tampered", + "subject_ref": "user-1", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-2", + "allowed_operations": [ + "enqueue", + "steer", + "interrupt", + "get_status", + "subscribe_events" + ], + "issued_at": "2026-08-17T00:00:00Z", + "expires_at": "2026-08-17T00:04:00Z", + "nonce": "nonce-3", + "key_id": "wk-2026-08", + "alg": "Ed25519", + "claims_digest": "0000000000000000000000000000000000000000000000000000000000000000", + "signature": "c2lnbmF0dXJlLXBsYWNlaG9sZGVyLTI" + } +] diff --git a/contracts/agent-kernel/v1/fixtures/agent-control-receipts.json b/contracts/agent-kernel/v1/fixtures/agent-control-receipts.json new file mode 100644 index 00000000..915a8ccf --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/agent-control-receipts.json @@ -0,0 +1,64 @@ +[ + { + "schema_version": 1, + "command_id": "4bf84e1b-f4cd-4c55-907f-2dc5e676b119", + "status": "accepted", + "message_id": "11111111-2222-3333-4444-555555555555", + "run_id": "run-1", + "accepted_seq": 42 + }, + { + "schema_version": 1, + "command_id": "4bf84e1b-f4cd-4c55-907f-2dc5e676b119", + "status": "duplicate", + "message_id": "11111111-2222-3333-4444-555555555555" + }, + { + "schema_version": 1, + "command_id": "4bf84e1b-f4cd-4c55-907f-2dc5e676b119", + "status": "rejected", + "error": { + "code": "invalid_command", + "message": "payload missing content", + "retryable": false, + "details": { + "field": "payload.content" + } + } + }, + { + "schema_version": 1, + "command_id": "4bf84e1b-f4cd-4c55-907f-2dc5e676b119", + "status": "unsupported", + "error": { + "code": "unsupported", + "message": "steer not supported by runtime", + "retryable": false, + "details": {} + } + }, + { + "schema_version": 1, + "command_id": "4bf84e1b-f4cd-4c55-907f-2dc5e676b119", + "status": "queue_full", + "error": { + "code": "queue_full", + "message": "inbox depth reached limit", + "retryable": true, + "details": { + "limit": 128 + } + } + }, + { + "schema_version": 1, + "command_id": "4bf84e1b-f4cd-4c55-907f-2dc5e676b119", + "status": "persistence_uncertain", + "error": { + "code": "persistence_uncertain", + "message": "commit result unknown", + "retryable": true, + "details": {} + } + } +] diff --git a/contracts/agent-kernel/v1/fixtures/agent-control-resume.json b/contracts/agent-kernel/v1/fixtures/agent-control-resume.json new file mode 100644 index 00000000..c7fab591 --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/agent-control-resume.json @@ -0,0 +1,24 @@ +{ + "schema_version": 1, + "command_id": "9a5d3960-4b72-4dad-e5c4-7c1adb32ba6e", + "idempotency_key": "studio:s1:message-resume", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "command_type": "resume", + "payload": { + "target": { + "kind": "checkpoint", + "id": "ckpt-1" + }, + "input": { + "text": "continue" + } + }, + "source": { + "kind": "studio", + "ref": "local-studio" + }, + "authorization_ref": "permit-1", + "submitted_at": "2026-08-17T00:00:00Z" +} diff --git a/contracts/agent-kernel/v1/fixtures/agent-control-steer.json b/contracts/agent-kernel/v1/fixtures/agent-control-steer.json new file mode 100644 index 00000000..809608c2 --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/agent-control-steer.json @@ -0,0 +1,21 @@ +{ + "schema_version": 1, + "command_id": "5c19f52c-0d3e-4f66-a180-3ed6f787c22a", + "idempotency_key": "studio:s1:message-steer", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "command_type": "steer", + "payload": { + "content": { + "text": "focus on latency" + }, + "run_id": "run-1" + }, + "source": { + "kind": "studio", + "ref": "local-studio" + }, + "authorization_ref": "permit-1", + "submitted_at": "2026-08-17T00:00:00Z" +} diff --git a/contracts/agent-kernel/v1/fixtures/agent-control-submit_interaction.json b/contracts/agent-kernel/v1/fixtures/agent-control-submit_interaction.json new file mode 100644 index 00000000..306dbc1a --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/agent-control-submit_interaction.json @@ -0,0 +1,23 @@ +{ + "schema_version": 1, + "command_id": "ab6e4a71-5c83-4ebe-f6d5-8d2bec43cb7f", + "idempotency_key": "studio:s1:message-submit_interaction", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "command_type": "submit_interaction", + "payload": { + "run_id": "run-1", + "interaction_id": "interaction-1", + "token_ref": "one-time-ref-1", + "response": { + "choice": "approve" + } + }, + "source": { + "kind": "studio", + "ref": "local-studio" + }, + "authorization_ref": "permit-1", + "submitted_at": "2026-08-17T00:00:00Z" +} diff --git a/contracts/agent-kernel/v1/fixtures/agent-control.json b/contracts/agent-kernel/v1/fixtures/agent-control.json new file mode 100644 index 00000000..adaa2835 --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/agent-control.json @@ -0,0 +1,150 @@ +[ + { + "schema_version": 1, + "command_id": "4bf84e1b-f4cd-4c55-907f-2dc5e676b119", + "idempotency_key": "studio:s1:message-enqueue", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "command_type": "enqueue", + "payload": { + "content": { + "text": "hello" + }, + "reply_to": "reply-1" + }, + "source": { + "kind": "studio", + "ref": "local-studio" + }, + "authorization_ref": "permit-1", + "submitted_at": "2026-08-17T00:00:00Z" + }, + { + "schema_version": 1, + "command_id": "5c19f52c-0d3e-4f66-a180-3ed6f787c22a", + "idempotency_key": "studio:s1:message-steer", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "command_type": "steer", + "payload": { + "content": { + "text": "focus on latency" + }, + "run_id": "run-1" + }, + "source": { + "kind": "studio", + "ref": "local-studio" + }, + "authorization_ref": "permit-1", + "submitted_at": "2026-08-17T00:00:00Z" + }, + { + "schema_version": 1, + "command_id": "6d2a063d-1e4f-4a77-b291-4fe7a898d33b", + "idempotency_key": "studio:s1:message-inject", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "command_type": "inject", + "payload": { + "context": { + "doc": "spec.md" + }, + "run_id": "run-1" + }, + "source": { + "kind": "studio", + "ref": "local-studio" + }, + "authorization_ref": "permit-1", + "submitted_at": "2026-08-17T00:00:00Z" + }, + { + "schema_version": 1, + "command_id": "7e3b174e-2f50-4b88-c3a2-5af8b909e44c", + "idempotency_key": "studio:s1:message-interrupt", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "command_type": "interrupt", + "payload": { + "run_id": "run-1", + "reason": "user_requested" + }, + "source": { + "kind": "studio", + "ref": "local-studio" + }, + "authorization_ref": "permit-1", + "submitted_at": "2026-08-17T00:00:00Z" + }, + { + "schema_version": 1, + "command_id": "8f4c285f-3a61-4c99-d4b3-6b09ca21af5d", + "idempotency_key": "studio:s1:message-pause", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "command_type": "pause", + "payload": { + "run_id": "run-1", + "reason": "user_requested" + }, + "source": { + "kind": "studio", + "ref": "local-studio" + }, + "authorization_ref": "permit-1", + "submitted_at": "2026-08-17T00:00:00Z" + }, + { + "schema_version": 1, + "command_id": "9a5d3960-4b72-4dad-e5c4-7c1adb32ba6e", + "idempotency_key": "studio:s1:message-resume", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "command_type": "resume", + "payload": { + "target": { + "kind": "checkpoint", + "id": "ckpt-1" + }, + "input": { + "text": "continue" + } + }, + "source": { + "kind": "studio", + "ref": "local-studio" + }, + "authorization_ref": "permit-1", + "submitted_at": "2026-08-17T00:00:00Z" + }, + { + "schema_version": 1, + "command_id": "ab6e4a71-5c83-4ebe-f6d5-8d2bec43cb7f", + "idempotency_key": "studio:s1:message-submit_interaction", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "command_type": "submit_interaction", + "payload": { + "run_id": "run-1", + "interaction_id": "interaction-1", + "token_ref": "one-time-ref-1", + "response": { + "choice": "approve" + } + }, + "source": { + "kind": "studio", + "ref": "local-studio" + }, + "authorization_ref": "permit-1", + "submitted_at": "2026-08-17T00:00:00Z" + } +] diff --git a/contracts/agent-kernel/v1/fixtures/agent-status-snapshot.json b/contracts/agent-kernel/v1/fixtures/agent-status-snapshot.json new file mode 100644 index 00000000..da3e8bd3 --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/agent-status-snapshot.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "agent_instance_id": "agent-instance-1", + "instance_state": "ready", + "session_id": "session-1", + "active_run_id": "run-1", + "active_run_state": "running", + "inbox_depth": 0, + "activation_id": "activation-1", + "lease_expires_at": "2026-08-17T00:02:00Z", + "capability": { + "schema_version": 1, + "cancel": { + "supported": true, + "mode": "native" + }, + "pause": { + "supported": true, + "mode": "native" + }, + "resume": { + "supported": true, + "mode": "native" + }, + "submit_interaction": { + "supported": true, + "mode": "native" + }, + "attach": { + "supported": true, + "mode": "native" + }, + "steer": { + "supported": true, + "mode": "native" + }, + "inject": { + "supported": true, + "mode": "native" + }, + "checkpoint": { + "supported": true, + "mode": "native" + }, + "durable_restore": { + "supported": true, + "mode": "native" + } + } +} diff --git a/contracts/agent-kernel/v1/fixtures/interaction-requested.json b/contracts/agent-kernel/v1/fixtures/interaction-requested.json new file mode 100644 index 00000000..c9d9622c --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/interaction-requested.json @@ -0,0 +1,52 @@ +[ + { + "schema_version": 1, + "event_type": "interaction.requested", + "interaction_id": "int-1", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "run_id": "run-1", + "kind": "approval", + "revision": 1, + "timestamp": "2026-08-19T00:00:00Z", + "request": { + "kind": "approval", + "request_schema": {"type": "object", "properties": {"approved": {"type": "boolean"}}}, + "presentation": { + "title": "Approve deployment", + "a2ui": { + "wire_version": "0.9.1", + "catalog_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "messages": [{"surfaceUpdate": {"surfaceId": "int-1"}}] + } + } + } + }, + { + "schema_version": 1, + "event_type": "interaction.cancelled", + "interaction_id": "int-2", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "run_id": "run-1", + "kind": "plan_review", + "revision": 2, + "timestamp": "2026-08-19T00:01:00Z", + "reason": "run_cancelled" + }, + { + "schema_version": 1, + "event_type": "interaction.expired", + "interaction_id": "int-3", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "run_id": "run-1", + "kind": "structured_input", + "revision": 1, + "timestamp": "2026-08-19T00:02:00Z", + "reason": "deadline_reached" + } +] diff --git a/contracts/agent-kernel/v1/fixtures/interaction-resolved.json b/contracts/agent-kernel/v1/fixtures/interaction-resolved.json new file mode 100644 index 00000000..79143d08 --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/interaction-resolved.json @@ -0,0 +1,17 @@ +[ + { + "schema_version": 1, + "event_type": "interaction.resolved", + "interaction_id": "int-1", + "tenant_id": "tenant-1", + "agent_instance_id": "agent-instance-1", + "session_id": "session-1", + "run_id": "run-1", + "kind": "approval", + "revision": 2, + "timestamp": "2026-08-19T00:03:00Z", + "outcome": "rejected", + "response": {"approved": false, "comment": "needs changes"}, + "actor_ref": "account:123" + } +] diff --git a/contracts/agent-kernel/v1/fixtures/interaction-submit.json b/contracts/agent-kernel/v1/fixtures/interaction-submit.json new file mode 100644 index 00000000..cd905954 --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/interaction-submit.json @@ -0,0 +1,8 @@ +{ + "schema_version": 1, + "interaction_id": "int-1", + "expected_revision": 1, + "action": "submit", + "response": {"approved": true, "comment": "ok"}, + "idempotency_key": "interaction:int-1:revision-1" +} diff --git a/contracts/agent-kernel/v1/fixtures/runtime-capability.json b/contracts/agent-kernel/v1/fixtures/runtime-capability.json new file mode 100644 index 00000000..bd6f4670 --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/runtime-capability.json @@ -0,0 +1,96 @@ +[ + { + "schema_version": 1, + "cancel": { + "supported": true, + "mode": "native" + }, + "pause": { + "supported": true, + "mode": "native" + }, + "resume": { + "supported": true, + "mode": "native" + }, + "submit_interaction": { + "supported": true, + "mode": "native" + }, + "attach": { + "supported": true, + "mode": "native" + }, + "steer": { + "supported": true, + "mode": "native" + }, + "inject": { + "supported": true, + "mode": "native" + }, + "checkpoint": { + "supported": true, + "mode": "native" + }, + "durable_restore": { + "supported": true, + "mode": "native" + }, + "interaction_mode": "live_submit", + "goal": { + "supported": true, + "mode": "native" + }, + "loop": { + "supported": false, + "mode": "unavailable", + "reason": "codex_loop_requires_run_control_spec" + }, + "plan": { + "supported": true, + "mode": "native" + } + }, + { + "schema_version": 1, + "cancel": { + "supported": true, + "mode": "native" + }, + "pause": { + "supported": false, + "mode": "unavailable", + "reason": "runtime_pause_not_supported" + }, + "resume": { + "supported": true, + "mode": "native" + }, + "submit_interaction": { + "supported": true, + "mode": "native" + }, + "attach": { + "supported": true, + "mode": "native" + }, + "steer": { + "supported": true, + "mode": "native" + }, + "inject": { + "supported": true, + "mode": "native" + }, + "checkpoint": { + "supported": false, + "mode": "unavailable", + "reason": "runtime_checkpoint_not_supported" + }, + "durable_restore": { + "supported": true, + "mode": "native" + } + } +] diff --git a/contracts/agent-kernel/v1/fixtures/session-event-control.json b/contracts/agent-kernel/v1/fixtures/session-event-control.json new file mode 100644 index 00000000..fd4d27d9 --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/session-event-control.json @@ -0,0 +1,179 @@ +[ + { + "schema_version": 1, + "event_id": "5182d503-5c72-59f5-9e93-14c09ae7bb62", + "session_id": "session-1", + "seq": 10, + "timestamp": "2026-08-17T00:00:01Z", + "family": "control", + "family_version": 1, + "event_type": "control.command_accepted", + "payload": { + "command_id": "4bf84e1b-f4cd-4c55-907f-2dc5e676b119", + "message_id": "11111111-2222-3333-4444-555555555555" + }, + "run_id": "run-1", + "causation_id": "cmd-4bf84e1b", + "correlation_id": "corr-1", + "actor_ref": "worker-1" + }, + { + "schema_version": 1, + "event_id": "fa6005d5-b3d5-5365-8fbf-d4d859306673", + "session_id": "session-1", + "seq": 11, + "timestamp": "2026-08-17T00:00:01Z", + "family": "control", + "family_version": 1, + "event_type": "control.command_rejected", + "payload": { + "command_id": "4bf84e1b-f4cd-4c55-907f-2dc5e676b119", + "code": "invalid_command" + }, + "run_id": "run-1", + "causation_id": "cmd-4bf84e1b", + "correlation_id": "corr-1", + "actor_ref": "worker-1" + }, + { + "schema_version": 1, + "event_id": "b27d1189-6d5d-5c2e-899b-76fccd0d6349", + "session_id": "session-1", + "seq": 12, + "timestamp": "2026-08-17T00:00:01Z", + "family": "control", + "family_version": 1, + "event_type": "control.command_claimed", + "payload": { + "command_id": "4bf84e1b-f4cd-4c55-907f-2dc5e676b119", + "fencing_token": 3 + }, + "run_id": "run-1", + "causation_id": "cmd-4bf84e1b", + "correlation_id": "corr-1", + "actor_ref": "worker-1" + }, + { + "schema_version": 1, + "event_id": "efe9f437-2727-52cf-9287-b53017fe40ef", + "session_id": "session-1", + "seq": 13, + "timestamp": "2026-08-17T00:00:01Z", + "family": "control", + "family_version": 1, + "event_type": "control.command_completed", + "payload": { + "command_id": "4bf84e1b-f4cd-4c55-907f-2dc5e676b119" + }, + "run_id": "run-1", + "causation_id": "cmd-4bf84e1b", + "correlation_id": "corr-1", + "actor_ref": "worker-1" + }, + { + "schema_version": 1, + "event_id": "592fb5a8-684f-50e8-8a20-c467fdcc3907", + "session_id": "session-1", + "seq": 14, + "timestamp": "2026-08-17T00:00:01Z", + "family": "control", + "family_version": 1, + "event_type": "control.command_discarded", + "payload": { + "command_id": "4bf84e1b-f4cd-4c55-907f-2dc5e676b119", + "reason": "superseded" + }, + "run_id": "run-1", + "causation_id": "cmd-4bf84e1b", + "correlation_id": "corr-1", + "actor_ref": "worker-1" + }, + { + "schema_version": 1, + "event_id": "bb84c222-dcba-53c1-8764-23065b220f7b", + "session_id": "session-1", + "seq": 15, + "timestamp": "2026-08-17T00:00:01Z", + "family": "control", + "family_version": 1, + "event_type": "control.activation_acquired", + "payload": { + "activation_id": "activation-1", + "fencing_token": 3 + }, + "run_id": "run-1", + "causation_id": "cmd-4bf84e1b", + "correlation_id": "corr-1", + "actor_ref": "worker-1" + }, + { + "schema_version": 1, + "event_id": "3111c8c2-4d8a-5268-aab1-298f539c5214", + "session_id": "session-1", + "seq": 16, + "timestamp": "2026-08-17T00:00:01Z", + "family": "control", + "family_version": 1, + "event_type": "control.activation_renewed", + "payload": { + "activation_id": "activation-1", + "fencing_token": 3 + }, + "run_id": "run-1", + "causation_id": "cmd-4bf84e1b", + "correlation_id": "corr-1", + "actor_ref": "worker-1" + }, + { + "schema_version": 1, + "event_id": "62f27c7b-dba5-5c4b-9a89-b84e15e79496", + "session_id": "session-1", + "seq": 17, + "timestamp": "2026-08-17T00:00:01Z", + "family": "control", + "family_version": 1, + "event_type": "control.activation_taken_over", + "payload": { + "activation_id": "activation-2", + "fencing_token": 4 + }, + "run_id": "run-1", + "causation_id": "cmd-4bf84e1b", + "correlation_id": "corr-1", + "actor_ref": "worker-1" + }, + { + "schema_version": 1, + "event_id": "a49219c0-51f9-5618-a9d4-337c92472e8d", + "session_id": "session-1", + "seq": 18, + "timestamp": "2026-08-17T00:00:01Z", + "family": "control", + "family_version": 1, + "event_type": "control.activation_released", + "payload": { + "activation_id": "activation-2" + }, + "run_id": "run-1", + "causation_id": "cmd-4bf84e1b", + "correlation_id": "corr-1", + "actor_ref": "worker-1" + }, + { + "schema_version": 1, + "event_id": "57a16ff9-4777-5b00-8ca7-8b482638655b", + "session_id": "session-1", + "seq": 19, + "timestamp": "2026-08-17T00:00:01Z", + "family": "control", + "family_version": 1, + "event_type": "control.recovery_decided", + "payload": { + "decision": "resume_from_checkpoint" + }, + "run_id": "run-1", + "causation_id": "cmd-4bf84e1b", + "correlation_id": "corr-1", + "actor_ref": "worker-1" + } +] diff --git a/contracts/agent-kernel/v1/fixtures/session-event-runtime.json b/contracts/agent-kernel/v1/fixtures/session-event-runtime.json new file mode 100644 index 00000000..5105726f --- /dev/null +++ b/contracts/agent-kernel/v1/fixtures/session-event-runtime.json @@ -0,0 +1,18 @@ +{ + "schema_version": 1, + "event_id": "614e828c-fed7-5202-a07d-354cfa1942a0", + "session_id": "session-1", + "seq": 20, + "timestamp": "2026-08-17T00:00:01Z", + "family": "runtime", + "family_version": 2, + "event_type": "run.message.delta", + "payload": { + "text": "hello", + "delta_index": 0 + }, + "run_id": "run-1", + "causation_id": "cmd-4bf84e1b", + "correlation_id": "corr-1", + "actor_ref": "worker-1" +} diff --git a/contracts/agent-kernel/v1/interaction.schema.json b/contracts/agent-kernel/v1/interaction.schema.json new file mode 100644 index 00000000..e5f83794 --- /dev/null +++ b/contracts/agent-kernel/v1/interaction.schema.json @@ -0,0 +1,194 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ksadk.local/contracts/agent-kernel/v1/interaction.schema.json", + "title": "Interaction/v1", + "type": "object", + "oneOf": [ + {"$ref": "#/$defs/interactionRequest"}, + {"$ref": "#/$defs/submitInteractionRequest"}, + {"$ref": "#/$defs/interactionCommand"}, + {"$ref": "#/$defs/interactionReceipt"}, + {"$ref": "#/$defs/interactionEvent"} + ], + "$defs": { + "identifier": { + "type": "string", + "minLength": 1, + "maxLength": 256 + }, + "interactionKind": { + "enum": ["approval", "structured_input", "plan_review", "custom"] + }, + "interactionStatus": { + "enum": ["pending", "resolving", "resolved", "cancelled", "expired"] + }, + "interactionAction": { + "enum": ["approve", "reject", "submit", "cancel"] + }, + "runtimeInteractionMode": { + "enum": ["live_submit", "durable_resume", "unavailable"] + }, + "a2uiPresentation": { + "type": "object", + "properties": { + "wire_version": {"const": "0.9.1"}, + "catalog_digest": {"type": "string", "pattern": "^[a-f0-9]{64}$"}, + "messages": { + "type": "array", + "minItems": 1, + "items": {"type": "object"} + } + }, + "required": ["wire_version", "catalog_digest", "messages"], + "additionalProperties": false + }, + "presentation": { + "type": "object", + "properties": { + "title": {"type": "string", "minLength": 1}, + "description": {"type": "string"}, + "a2ui": {"$ref": "#/$defs/a2uiPresentation"} + }, + "additionalProperties": false + }, + "interactionRequest": { + "type": "object", + "properties": { + "schema_version": {"const": 1}, + "interaction_id": {"$ref": "#/$defs/identifier"}, + "tenant_id": {"$ref": "#/$defs/identifier"}, + "agent_instance_id": {"$ref": "#/$defs/identifier"}, + "session_id": {"$ref": "#/$defs/identifier"}, + "run_id": {"$ref": "#/$defs/identifier"}, + "kind": {"$ref": "#/$defs/interactionKind"}, + "request_schema": {"type": "object"}, + "revision": {"type": "integer", "minimum": 1}, + "created_at": {"type": "string", "format": "date-time"}, + "expires_at": {"type": "string", "format": "date-time"}, + "presentation": {"$ref": "#/$defs/presentation"} + }, + "required": [ + "schema_version", "interaction_id", "tenant_id", "agent_instance_id", + "session_id", "run_id", "kind", "request_schema", "revision", "created_at" + ], + "additionalProperties": false + }, + "submitInteractionRequest": { + "type": "object", + "properties": { + "schema_version": {"const": 1}, + "interaction_id": {"$ref": "#/$defs/identifier"}, + "expected_revision": {"type": "integer", "minimum": 1}, + "action": {"$ref": "#/$defs/interactionAction"}, + "response": true, + "idempotency_key": {"type": "string", "minLength": 1, "maxLength": 256} + }, + "required": [ + "schema_version", "interaction_id", "expected_revision", "action", "response", + "idempotency_key" + ], + "additionalProperties": false + }, + "actor": { + "type": "object", + "properties": { + "subject_ref": {"$ref": "#/$defs/identifier"}, + "kind": {"enum": ["user", "service", "system"]} + }, + "required": ["subject_ref", "kind"], + "additionalProperties": false + }, + "interactionCommand": { + "type": "object", + "properties": { + "schema_version": {"const": 1}, + "command_id": {"type": "string", "format": "uuid"}, + "tenant_id": {"$ref": "#/$defs/identifier"}, + "agent_instance_id": {"$ref": "#/$defs/identifier"}, + "session_id": {"$ref": "#/$defs/identifier"}, + "run_id": {"$ref": "#/$defs/identifier"}, + "interaction_id": {"$ref": "#/$defs/identifier"}, + "expected_revision": {"type": "integer", "minimum": 1}, + "action": {"$ref": "#/$defs/interactionAction"}, + "response": true, + "idempotency_key": {"type": "string", "minLength": 1, "maxLength": 256}, + "actor": {"$ref": "#/$defs/actor"}, + "authorization_ref": {"type": "string", "minLength": 1} + }, + "required": [ + "schema_version", "command_id", "tenant_id", "agent_instance_id", "session_id", + "run_id", "interaction_id", "expected_revision", "action", "response", + "idempotency_key", "actor", "authorization_ref" + ], + "additionalProperties": false + }, + "interactionReceipt": { + "type": "object", + "properties": { + "schema_version": {"const": 1}, + "interaction_id": {"$ref": "#/$defs/identifier"}, + "revision": {"type": "integer", "minimum": 1}, + "status": {"$ref": "#/$defs/interactionStatus"}, + "outcome": {"enum": ["approved", "rejected", "submitted", "cancelled", "expired"]}, + "event_id": {"type": "string", "format": "uuid"}, + "accepted_seq": {"type": "integer", "minimum": 0} + }, + "required": ["schema_version", "interaction_id", "revision", "status"], + "additionalProperties": false + }, + "eventRequest": { + "type": "object", + "properties": { + "kind": {"$ref": "#/$defs/interactionKind"}, + "request_schema": {"type": "object"}, + "expires_at": {"type": "string", "format": "date-time"}, + "presentation": {"$ref": "#/$defs/presentation"} + }, + "required": ["kind", "request_schema"], + "additionalProperties": false + }, + "interactionEvent": { + "type": "object", + "properties": { + "schema_version": {"const": 1}, + "event_type": { + "enum": [ + "interaction.requested", "interaction.resolved", "interaction.cancelled", "interaction.expired" + ] + }, + "interaction_id": {"$ref": "#/$defs/identifier"}, + "tenant_id": {"$ref": "#/$defs/identifier"}, + "agent_instance_id": {"$ref": "#/$defs/identifier"}, + "session_id": {"$ref": "#/$defs/identifier"}, + "run_id": {"$ref": "#/$defs/identifier"}, + "kind": {"$ref": "#/$defs/interactionKind"}, + "revision": {"type": "integer", "minimum": 1}, + "timestamp": {"type": "string", "format": "date-time"}, + "request": {"$ref": "#/$defs/eventRequest"}, + "outcome": {"enum": ["approved", "rejected", "submitted"]}, + "response": true, + "actor_ref": {"type": "string", "minLength": 1}, + "reason": {"type": "string", "minLength": 1} + }, + "required": [ + "schema_version", "event_type", "interaction_id", "tenant_id", "agent_instance_id", + "session_id", "run_id", "kind", "revision", "timestamp" + ], + "allOf": [ + { + "if": {"properties": {"event_type": {"const": "interaction.requested"}}}, + "then": {"required": ["request"]} + }, + { + "if": {"properties": {"event_type": {"const": "interaction.resolved"}}}, + "then": {"required": ["outcome", "response", "actor_ref"]} + }, + { + "if": {"properties": {"event_type": {"enum": ["interaction.cancelled", "interaction.expired"]}}}, + "then": {"required": ["reason"]} + } + ], + "additionalProperties": false + } + } +} diff --git a/contracts/agent-kernel/v1/manifest.json b/contracts/agent-kernel/v1/manifest.json new file mode 100644 index 00000000..e60cdcd1 --- /dev/null +++ b/contracts/agent-kernel/v1/manifest.json @@ -0,0 +1,123 @@ +{ + "contract_set": "agent-kernel/v1", + "digest_algorithm": "sha256", + "canonicalization": "utf-8; json key sort; no whitespace; lf; path-sorted", + "aggregate_digest": "b610a25aae957306b9f84a2cc2c948b30d1ce6218585cfd2a91f96736b92d102", + "files": [ + { + "path": "activation-lease.schema.json", + "sha256": "84625716852be6d054b144b4b7d2e79eaff61da7fae6f05882c4dd88cce68fbe", + "bytes": 734 + }, + { + "path": "agent-control.schema.json", + "sha256": "9ac2e5e0d7258a0c926170b32172366c91f74a0ec0686ed88aebbe9fde893198", + "bytes": 8136 + }, + { + "path": "fixtures/activation-lease.json", + "sha256": "85d49ba61e8f09db53d7c71e587c88a03a2cc16408c212cdac6a12db83d58a67", + "bytes": 1087 + }, + { + "path": "fixtures/agent-control-enqueue.json", + "sha256": "5f38e44709ae26a01fb3c83e713c5b983e5a115ce8decd2424076690df4271f7", + "bytes": 407 + }, + { + "path": "fixtures/agent-control-inject.json", + "sha256": "42266f8d1905fafd47dc5432c4f79160d558d9485141b9bdeee012f46a19e384", + "bytes": 402 + }, + { + "path": "fixtures/agent-control-interrupt.json", + "sha256": "2efccab54c5c733c14aee72d68e0c3f6f65f992e33bdd38dde97f688dab85baa", + "bytes": 406 + }, + { + "path": "fixtures/agent-control-pause.json", + "sha256": "d2833d9f911cf4654c36b4d086809523ae7cfc8f3ded515f71f5916331460875", + "bytes": 398 + }, + { + "path": "fixtures/agent-control-permit.json", + "sha256": "ab52298d9d03dde66563b62b24d6576e4007e665b38cfd612d415d9d7362c981", + "bytes": 1503 + }, + { + "path": "fixtures/agent-control-receipts.json", + "sha256": "02ce480b675fb8e8f0a6653aa6bc3da08a9d60cf130f804524432996f9eff1e7", + "bytes": 1163 + }, + { + "path": "fixtures/agent-control-resume.json", + "sha256": "aee3b46f5bee27e211fd634ad746eb74415f1f5d4b0c05e5ddb08f29af45da2c", + "bytes": 430 + }, + { + "path": "fixtures/agent-control-steer.json", + "sha256": "8ea1808a0b3fb4b0ce62b089df9a3d99e9717f8b957a8eede8537d10192e6214", + "bytes": 410 + }, + { + "path": "fixtures/agent-control-submit_interaction.json", + "sha256": "0b7e22a7374798ab49ebb0658cc193e5f7d0c2736a6aeecabf8408168be6aad7", + "bytes": 492 + }, + { + "path": "fixtures/agent-control.json", + "sha256": "fae536523976b17ba082da29ffbfac31722f954a8978fa49929c76599765967b", + "bytes": 2953 + }, + { + "path": "fixtures/agent-status-snapshot.json", + "sha256": "ca1361c07de03f67b8fd2388afdde11eef156bfe2cb3f02e3cbc796186f581b2", + "bytes": 704 + }, + { + "path": "fixtures/interaction-requested.json", + "sha256": "2732a7f60712a1a70090a1258657a2ed9a49ffbaad1c4e18d209434d8d2cf4f5", + "bytes": 1147 + }, + { + "path": "fixtures/interaction-resolved.json", + "sha256": "dfadfac4befde3a28f4624f2a5794d4199223d39cf5be6dcc639de70323df044", + "bytes": 356 + }, + { + "path": "fixtures/interaction-submit.json", + "sha256": "3ad18235c0c6848e19bef87ad73c3ff0927429cdad1d93c55f783d9bf9c5bbfa", + "bytes": 178 + }, + { + "path": "fixtures/runtime-capability.json", + "sha256": "8af3e5fcb72807bbdd1db2cd1a733dcab99299ea23d8e9af0bde151103eecf6b", + "bytes": 1189 + }, + { + "path": "fixtures/session-event-control.json", + "sha256": "1dc42ed299ed61ec637a2c99835b62de39b5eb046663321011daee880fe5b2b3", + "bytes": 3866 + }, + { + "path": "fixtures/session-event-runtime.json", + "sha256": "bb583b30db1d3584593f39422b27a5fcec170707801aa29f54b96f546f427561", + "bytes": 349 + }, + { + "path": "interaction.schema.json", + "sha256": "ca827d010eb200fb017c25e86005670475f27d72439bc6496e70576c16f09bb2", + "bytes": 5557 + }, + { + "path": "runtime-capability.schema.json", + "sha256": "16d0b7a07dc8c6fb4965b6ec24750841863bb774f09a71b5ceb0944a444f7f7a", + "bytes": 1809 + }, + { + "path": "session-event.schema.json", + "sha256": "b2b343c91834ab366d57fe26cece83730fce25d183dda34b00479c8bb898e1ab", + "bytes": 1359 + } + ] +} diff --git a/contracts/agent-kernel/v1/runtime-capability.schema.json b/contracts/agent-kernel/v1/runtime-capability.schema.json new file mode 100644 index 00000000..584548b6 --- /dev/null +++ b/contracts/agent-kernel/v1/runtime-capability.schema.json @@ -0,0 +1,48 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ksadk.local/contracts/agent-kernel/v1/runtime-capability.schema.json", + "title": "RuntimeCapabilityMatrix/v1", + "type": "object", + "$defs": { + "runtimeCapability": { + "type": "object", + "properties": { + "supported": {"type": "boolean"}, + "mode": {"enum": ["native", "emulated", "unavailable"]}, + "reason": {"type": ["string", "null"]} + }, + "required": ["supported", "mode"], + "if": {"properties": {"supported": {"const": false}}}, + "then": {"properties": {"mode": {"const": "unavailable"}, "reason": {"type": "string", "minLength": 1}}} + } + }, + "properties": { + "schema_version": {"const": 1}, + "cancel": {"$ref": "#/$defs/runtimeCapability"}, + "pause": {"$ref": "#/$defs/runtimeCapability"}, + "resume": {"$ref": "#/$defs/runtimeCapability"}, + "submit_interaction": {"$ref": "#/$defs/runtimeCapability"}, + "attach": {"$ref": "#/$defs/runtimeCapability"}, + "steer": {"$ref": "#/$defs/runtimeCapability"}, + "inject": {"$ref": "#/$defs/runtimeCapability"}, + "checkpoint": {"$ref": "#/$defs/runtimeCapability"}, + "durable_restore": {"$ref": "#/$defs/runtimeCapability"}, + "interaction_mode": {"enum": ["live_submit", "durable_resume", "unavailable"]}, + "goal": { + "description": "A durable objective that continues across turns toward a verifiable stopping condition.", + "anyOf": [{"$ref": "#/$defs/runtimeCapability"}, {"type": "null"}] + }, + "loop": { + "description": "An externally bounded, eval-driven improvement loop. This is not an ordinary runtime agent loop and is not collaboration_mode=default.", + "anyOf": [{"$ref": "#/$defs/runtimeCapability"}, {"type": "null"}] + }, + "plan": { + "description": "A collaboration mode that produces a plan without directly implementing it.", + "anyOf": [{"$ref": "#/$defs/runtimeCapability"}, {"type": "null"}] + } + }, + "required": [ + "schema_version", "cancel", "pause", "resume", "submit_interaction", + "attach", "steer", "inject", "checkpoint", "durable_restore" + ] +} diff --git a/contracts/agent-kernel/v1/session-event.schema.json b/contracts/agent-kernel/v1/session-event.schema.json new file mode 100644 index 00000000..ae7af497 --- /dev/null +++ b/contracts/agent-kernel/v1/session-event.schema.json @@ -0,0 +1,48 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ksadk.local/contracts/agent-kernel/v1/session-event.schema.json", + "title": "SessionEventEnvelope/v1", + "type": "object", + "properties": { + "schema_version": {"const": 1}, + "event_id": {"type": "string", "format": "uuid"}, + "session_id": {"type": "string", "minLength": 1}, + "seq": {"type": "integer", "minimum": 0}, + "timestamp": {"type": "string", "format": "date-time"}, + "family": {"enum": ["control", "runtime", "interaction", "workflow", "schedule", "job", "relationship"]}, + "family_version": {"type": "integer", "minimum": 1}, + "event_type": {"type": "string", "minLength": 1}, + "payload": {"type": "object"}, + "run_id": {"type": ["string", "null"]}, + "causation_id": {"type": ["string", "null"]}, + "correlation_id": {"type": ["string", "null"]}, + "actor_ref": {"type": ["string", "null"]} + }, + "required": [ + "schema_version", "event_id", "session_id", "seq", "timestamp", + "family", "family_version", "event_type", "payload" + ], + "allOf": [ + { + "if": {"properties": {"family": {"const": "runtime"}}}, + "then": {"properties": {"family_version": {"const": 2}}} + }, + { + "if": {"properties": {"family": {"const": "control"}}}, + "then": {"properties": {"family_version": {"const": 1}}} + }, + { + "if": {"properties": {"family": {"const": "interaction"}}}, + "then": { + "properties": { + "family_version": {"const": 1}, + "event_type": { + "enum": [ + "interaction.requested", "interaction.resolved", "interaction.cancelled", "interaction.expired" + ] + } + } + } + } + ] +} diff --git a/contracts/conversation/v1/conversation-input.schema.json b/contracts/conversation/v1/conversation-input.schema.json new file mode 100644 index 00000000..8ebc55fc --- /dev/null +++ b/contracts/conversation/v1/conversation-input.schema.json @@ -0,0 +1,62 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$defs": { + "ConversationAttachmentPart": { + "additionalProperties": false, + "properties": { + "kind": {"const": "attachment", "default": "attachment", "type": "string"}, + "attachmentRef": {"maxLength": 2048, "minLength": 1, "type": "string"}, + "mediaType": {"maxLength": 256, "minLength": 1, "type": "string"}, + "name": { + "anyOf": [{"maxLength": 1024, "type": "string"}, {"type": "null"}], + "default": null + } + }, + "required": ["attachmentRef", "mediaType"], + "type": "object" + }, + "ConversationTextPart": { + "additionalProperties": false, + "properties": { + "kind": {"const": "text", "default": "text", "type": "string"}, + "text": {"maxLength": 131072, "minLength": 1, "type": "string"} + }, + "required": ["text"], + "type": "object" + } + }, + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "conversation.ksadk.io/v1", + "default": "conversation.ksadk.io/v1", + "type": "string" + }, + "kind": {"const": "ConversationInput", "default": "ConversationInput", "type": "string"}, + "inputId": {"maxLength": 256, "minLength": 1, "type": "string"}, + "sessionId": {"maxLength": 256, "minLength": 1, "type": "string"}, + "idempotencyKey": {"maxLength": 512, "minLength": 1, "type": "string"}, + "parts": { + "items": { + "anyOf": [ + {"$ref": "#/$defs/ConversationTextPart"}, + {"$ref": "#/$defs/ConversationAttachmentPart"} + ] + }, + "minItems": 1, + "type": "array" + }, + "modelRef": { + "anyOf": [{"maxLength": 256, "minLength": 1, "type": "string"}, {"type": "null"}], + "default": null + }, + "reasoning": { + "anyOf": [{"maxLength": 64, "minLength": 1, "type": "string"}, {"type": "null"}], + "default": null + }, + "extensions": {"additionalProperties": true, "type": "object"} + }, + "required": ["inputId", "sessionId", "idempotencyKey", "parts"], + "title": "ConversationInput", + "type": "object" +} diff --git a/contracts/conversation/v1/conversation-item.schema.json b/contracts/conversation/v1/conversation-item.schema.json new file mode 100644 index 00000000..b5f417f1 --- /dev/null +++ b/contracts/conversation/v1/conversation-item.schema.json @@ -0,0 +1,58 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "conversation.ksadk.io/v1", + "default": "conversation.ksadk.io/v1", + "type": "string" + }, + "kindVersion": {"const": 1, "default": 1, "type": "integer"}, + "itemId": {"maxLength": 512, "minLength": 1, "type": "string"}, + "parentItemId": { + "anyOf": [ + {"maxLength": 512, "minLength": 1, "type": "string"}, + {"type": "null"} + ], + "default": null + }, + "sourceEventIds": { + "items": {"type": "string"}, + "minItems": 1, + "type": "array" + }, + "sessionId": {"maxLength": 256, "minLength": 1, "type": "string"}, + "runId": {"maxLength": 256, "minLength": 1, "type": "string"}, + "kind": { + "enum": [ + "user_message", "assistant_text", "reasoning", "tool_call", + "approval", "progress", "plan", "goal", "artifact", "a2ui", + "error", "unknown" + ], + "type": "string" + }, + "operation": {"enum": ["append", "replace", "completed"], "type": "string"}, + "lifecycle": { + "enum": ["pending", "streaming", "completed", "failed"], + "type": "string" + }, + "visibility": { + "default": "public", + "enum": ["public", "internal", "hidden"], + "type": "string" + }, + "payloadSchemaRef": {"maxLength": 256, "minLength": 1, "type": "string"}, + "payload": {"additionalProperties": true, "type": "object"}, + "capabilityRef": { + "anyOf": [{"maxLength": 256, "type": "string"}, {"type": "null"}], + "default": null + }, + "nativeRef": {"additionalProperties": true, "type": "object"} + }, + "required": [ + "itemId", "sourceEventIds", "sessionId", "runId", "kind", "operation", + "lifecycle", "payloadSchemaRef" + ], + "title": "ConversationItem", + "type": "object" +} diff --git a/contracts/conversation/v1/conversation-surface.schema.json b/contracts/conversation/v1/conversation-surface.schema.json new file mode 100644 index 00000000..b7147f46 --- /dev/null +++ b/contracts/conversation/v1/conversation-surface.schema.json @@ -0,0 +1,50 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$defs": { + "ConversationCapability": { + "additionalProperties": false, + "properties": { + "name": {"maxLength": 128, "minLength": 1, "type": "string"}, + "mode": { + "enum": ["native", "translated", "degraded", "unavailable"], + "type": "string" + }, + "reason": { + "anyOf": [{"maxLength": 512, "type": "string"}, {"type": "null"}], + "default": null + } + }, + "required": ["name", "mode"], + "type": "object" + } + }, + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "conversation.ksadk.io/v1", + "default": "conversation.ksadk.io/v1", + "type": "string" + }, + "kind": { + "const": "ConversationSurface", + "default": "ConversationSurface", + "type": "string" + }, + "surfaceId": {"maxLength": 256, "minLength": 1, "type": "string"}, + "sessionId": {"maxLength": 256, "minLength": 1, "type": "string"}, + "providerRef": {"maxLength": 256, "minLength": 1, "type": "string"}, + "inputs": { + "default": [], + "items": {"$ref": "#/$defs/ConversationCapability"}, + "type": "array" + }, + "outputs": { + "default": [], + "items": {"$ref": "#/$defs/ConversationCapability"}, + "type": "array" + } + }, + "required": ["surfaceId", "sessionId", "providerRef"], + "title": "ConversationSurface", + "type": "object" +} diff --git a/contracts/conversation/v1/fixtures/conversation-input.json b/contracts/conversation/v1/fixtures/conversation-input.json new file mode 100644 index 00000000..1386ce7b --- /dev/null +++ b/contracts/conversation/v1/fixtures/conversation-input.json @@ -0,0 +1,24 @@ +{ + "apiVersion": "conversation.ksadk.io/v1", + "kind": "ConversationInput", + "inputId": "input-example", + "sessionId": "session-example", + "idempotencyKey": "turn-example", + "parts": [ + {"kind": "text", "text": "请总结这张图片"}, + { + "kind": "attachment", + "attachmentRef": "attachment://image-example", + "mediaType": "image/png", + "name": "example.png" + } + ], + "modelRef": "model:example", + "reasoning": "high", + "extensions": { + "ksadk.approval": "risk", + "ksadk.collaboration": "plan", + "ksadk.goal": "完成可验证的图片总结", + "vendor.preview": true + } +} diff --git a/contracts/conversation/v1/fixtures/conversation-item.json b/contracts/conversation/v1/fixtures/conversation-item.json new file mode 100644 index 00000000..b15d0157 --- /dev/null +++ b/contracts/conversation/v1/fixtures/conversation-item.json @@ -0,0 +1,15 @@ +{ + "apiVersion": "conversation.ksadk.io/v1", + "kindVersion": 1, + "itemId": "assistant-1", + "sourceEventIds": ["evt-123"], + "sessionId": "session-example", + "runId": "run-example", + "kind": "assistant_text", + "operation": "append", + "lifecycle": "streaming", + "visibility": "public", + "payloadSchemaRef": "conversation.item.assistant_text/v1", + "payload": {"text": "你好"}, + "nativeRef": {"framework": "codex", "itemId": "native-1"} +} diff --git a/contracts/conversation/v1/fixtures/conversation-surface.json b/contracts/conversation/v1/fixtures/conversation-surface.json new file mode 100644 index 00000000..a661dca5 --- /dev/null +++ b/contracts/conversation/v1/fixtures/conversation-surface.json @@ -0,0 +1,16 @@ +{ + "apiVersion": "conversation.ksadk.io/v1", + "kind": "ConversationSurface", + "surfaceId": "studio.conversation", + "sessionId": "session-example", + "providerRef": "runtime:codex", + "inputs": [ + {"name": "text", "mode": "native"}, + {"name": "attachments", "mode": "translated"} + ], + "outputs": [ + {"name": "text", "mode": "native"}, + {"name": "approval", "mode": "native"}, + {"name": "plan", "mode": "degraded", "reason": "provider emits opaque plans"} + ] +} diff --git a/contracts/conversation/v1/manifest.json b/contracts/conversation/v1/manifest.json new file mode 100644 index 00000000..47ded560 --- /dev/null +++ b/contracts/conversation/v1/manifest.json @@ -0,0 +1,38 @@ +{ + "contract_set": "conversation/v1", + "digest_algorithm": "sha256", + "canonicalization": "utf-8; json key sort; no whitespace; lf; path-sorted", + "aggregate_digest": "0920c82418155841ae0af7183ad44238fe16da45d65c9e744b8f6f8eb8aa0d38", + "files": [ + { + "path": "conversation-input.schema.json", + "sha256": "17d778a80ebda278f4dc6c907a8cbd30a27b7fe3b14e6b6789edb1a2c59cf7df", + "bytes": 1623 + }, + { + "path": "conversation-item.schema.json", + "sha256": "94bb626042ed05ac1489e64b693179c6728a7ff7fb3822dda908ddebf384e55e", + "bytes": 1440 + }, + { + "path": "conversation-surface.schema.json", + "sha256": "cb8844c8fa7428c8e1b2c4ec2c16b90cd4143510eb2f781f2b5ac192bdacef63", + "bytes": 1096 + }, + { + "path": "fixtures/conversation-input.json", + "sha256": "534eed029f05455bb83f9943912a7755c8bc47f21912d9eaed8851366bcd8bfb", + "bytes": 507 + }, + { + "path": "fixtures/conversation-item.json", + "sha256": "23748e43cfba4389a60962ac98d99ace75090622fa0fc82e3ea3a403ed582cbd", + "bytes": 391 + }, + { + "path": "fixtures/conversation-surface.json", + "sha256": "333c1e43fcccad3ab261b0c67b747096235d3508c3a00a95745847e9b53b51ac", + "bytes": 403 + } + ] +} diff --git a/contracts/plugin/v1/agent-bundle-manifest-v2.schema.json b/contracts/plugin/v1/agent-bundle-manifest-v2.schema.json new file mode 100644 index 00000000..f2a5fb2f --- /dev/null +++ b/contracts/plugin/v1/agent-bundle-manifest-v2.schema.json @@ -0,0 +1,84 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ksadk.local/contracts/plugin/v1/agent-bundle-manifest-v2.schema.json", + "title": "AgentBundleManifest/v2", + "type": "object", + "additionalProperties": false, + "$defs": { + "digest": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "timestamp": { + "type": "string", + "format": "date-time", + "pattern": "(?:Z|[+-][0-9]{2}:[0-9]{2})$" + }, + "file": { + "type": "object", + "additionalProperties": false, + "properties": { + "path": { + "type": "string", + "minLength": 1, + "maxLength": 4096, + "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$)).+$" + }, + "sha256": {"$ref": "#/$defs/digest"}, + "size": {"type": "integer", "minimum": 0} + }, + "required": ["path", "sha256", "size"] + } + }, + "properties": { + "bundleFormat": {"const": "agentkit.bundle/v2"}, + "agentId": {"type": "string", "minLength": 1, "maxLength": 256}, + "sourceRevision": {"type": "integer", "minimum": 1}, + "resolvedDigest": {"$ref": "#/$defs/digest"}, + "runtimeType": {"type": "string", "minLength": 1, "maxLength": 128}, + "sourceDigest": {"$ref": "#/$defs/digest"}, + "runtimeContract": {"const": "agentkit.runtime/v1"}, + "pluginLockDigest": {"$ref": "#/$defs/digest"}, + "compositionMode": {"enum": ["legacy", "composed"]}, + "compositionProfileDigest": {"$ref": "#/$defs/digest"}, + "hostedKernelRequirementDigest": {"$ref": "#/$defs/digest"}, + "files": { + "type": "array", + "minItems": 1, + "items": {"$ref": "#/$defs/file"}, + "uniqueItems": true + }, + "createdAt": {"$ref": "#/$defs/timestamp"}, + "bundleDigest": {"$ref": "#/$defs/digest"} + }, + "allOf": [ + { + "if": { + "properties": {"compositionMode": {"const": "composed"}}, + "required": ["compositionMode"] + }, + "then": {"required": ["compositionProfileDigest"]} + }, + { + "if": { + "properties": {"compositionMode": {"const": "legacy"}}, + "required": ["compositionMode"] + }, + "then": {"not": {"required": ["compositionProfileDigest"]}} + } + ], + "required": [ + "bundleFormat", + "agentId", + "sourceRevision", + "resolvedDigest", + "runtimeType", + "sourceDigest", + "runtimeContract", + "pluginLockDigest", + "hostedKernelRequirementDigest", + "files", + "createdAt", + "bundleDigest" + ] +} diff --git a/contracts/plugin/v1/capability-definition.schema.json b/contracts/plugin/v1/capability-definition.schema.json new file mode 100644 index 00000000..f7ac922a --- /dev/null +++ b/contracts/plugin/v1/capability-definition.schema.json @@ -0,0 +1,33 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ksadk.local/contracts/plugin/v1/capability-definition.schema.json", + "title": "CapabilityDefinition/v1", + "type": "object", + "additionalProperties": false, + "properties": { + "apiVersion": {"const": "capability.ksadk.io/v1"}, + "kind": {"const": "CapabilityDefinition"}, + "metadata": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": {"type": "string", "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"}, + "version": {"type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$"} + }, + "required": ["id", "version"] + }, + "spec": { + "type": "object", + "additionalProperties": false, + "properties": { + "definition": {"type": "string", "pattern": "^[a-z][a-z0-9._-]*/v[1-9][0-9]*$"}, + "slot": {"type": "string", "minLength": 3}, + "multiplicity": {"enum": ["unique", "multiple"]}, + "ownerRequired": {"type": "boolean"}, + "configSchema": {"type": ["string", "null"]} + }, + "required": ["definition", "slot", "multiplicity"] + } + }, + "required": ["apiVersion", "kind", "metadata", "spec"] +} diff --git a/contracts/plugin/v1/composition-profile.schema.json b/contracts/plugin/v1/composition-profile.schema.json new file mode 100644 index 00000000..5f1bf17e --- /dev/null +++ b/contracts/plugin/v1/composition-profile.schema.json @@ -0,0 +1,46 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ksadk.local/contracts/plugin/v1/composition-profile.schema.json", + "title": "CompositionProfile/v1", + "type": "object", + "additionalProperties": false, + "$defs": { + "pluginReference": { + "type": "object", + "additionalProperties": false, + "properties": { + "ref": {"type": "string", "pattern": "^plugin://.+@\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$"}, + "config": {"type": "object"} + }, + "required": ["ref"] + }, + "capability": { + "type": "object", + "additionalProperties": false, + "properties": { + "ref": {"type": "string", "pattern": "^(plugin|mcp|skill)://.+@.+$"}, + "required": {"type": "boolean"}, + "config": {"type": "object"} + }, + "required": ["ref"] + }, + "nativeExtension": { + "type": "object", + "additionalProperties": false, + "properties": { + "runtime": {"type": "string", "minLength": 1}, + "ref": {"type": "string", "minLength": 8} + }, + "required": ["runtime", "ref"] + } + }, + "properties": { + "apiVersion": {"const": "composition.ksadk.io/v1"}, + "agentProvider": {"$ref": "#/$defs/pluginReference"}, + "capabilities": {"type": "array", "items": {"$ref": "#/$defs/capability"}}, + "nativeExtensions": {"type": "array", "items": {"$ref": "#/$defs/nativeExtension"}}, + "policies": {"type": "object", "additionalProperties": {"type": "string"}}, + "uiContributions": {"type": "array", "items": {"type": "string"}} + }, + "required": ["apiVersion", "agentProvider"] +} diff --git a/contracts/plugin/v1/context-contributor.schema.json b/contracts/plugin/v1/context-contributor.schema.json new file mode 100644 index 00000000..bc447bdc --- /dev/null +++ b/contracts/plugin/v1/context-contributor.schema.json @@ -0,0 +1 @@ +{"$defs":{"AuthenticatedContextScope":{"additionalProperties":false,"description":"Identity established by the Host before a Contributor is invoked.","properties":{"actorId":{"maxLength":256,"minLength":1,"title":"Actorid","type":"string"},"agentId":{"maxLength":256,"minLength":1,"title":"Agentid","type":"string"},"authenticated":{"const":true,"title":"Authenticated","type":"boolean"},"sessionId":{"maxLength":256,"minLength":1,"title":"Sessionid","type":"string"},"turnId":{"maxLength":256,"minLength":1,"title":"Turnid","type":"string"}},"required":["authenticated","actorId","agentId","sessionId","turnId"],"title":"AuthenticatedContextScope","type":"object"},"ContextContributorCapabilities":{"additionalProperties":false,"description":"Maximum authority and resource envelope granted to one Contributor.","properties":{"cacheability":{"enum":["stable","turn","none"],"title":"Cacheability","type":"string"},"contributorId":{"maxLength":128,"minLength":1,"pattern":"^[a-z][a-z0-9._-]*$","title":"Contributorid","type":"string"},"failureMode":{"enum":["skip","warn","fail"],"title":"Failuremode","type":"string"},"maxTokens":{"minimum":0,"title":"Maxtokens","type":"integer"},"timeoutMs":{"minimum":1,"title":"Timeoutms","type":"integer"},"trustLevel":{"enum":["platform","developer","resource","user","untrusted"],"title":"Trustlevel","type":"string"}},"required":["contributorId","trustLevel","maxTokens","timeoutMs","cacheability","failureMode"],"title":"ContextContributorCapabilities","type":"object"},"ContextContributorRequest":{"additionalProperties":false,"description":"One authenticated, policy-bound and token-bounded read request.","properties":{"allowedClassifications":{"items":{"maxLength":64,"minLength":1,"not":{"enum":["credential","secret"]},"pattern":"^[a-z][a-z0-9._-]*$","type":"string"},"title":"Allowedclassifications","type":"array","uniqueItems":true},"invocationId":{"maxLength":256,"minLength":1,"title":"Invocationid","type":"string"},"metadata":{"additionalProperties":true,"title":"Metadata","type":"object"},"policyRef":{"maxLength":512,"minLength":1,"pattern":"^policy://[^\\s@]+@[^\\s@]+$","title":"Policyref","type":"string"},"remainingBudget":{"minimum":0,"title":"Remainingbudget","type":"integer"},"requestFormat":{"const":"ksadk.context-request/v1","title":"Requestformat","type":"string"},"scope":{"$ref":"#/$defs/AuthenticatedContextScope"},"userInput":{"maxLength":131072,"title":"Userinput","type":"string"},"workspaceRoot":{"maxLength":4096,"title":"Workspaceroot","type":"string"}},"required":["requestFormat","scope","invocationId","userInput","workspaceRoot","policyRef","remainingBudget","allowedClassifications","metadata"],"title":"ContextContributorRequest","type":"object"},"ContextContributorResponse":{"additionalProperties":false,"description":"Ordered fragments returned for one request.","properties":{"fragments":{"items":{"$ref":"#/$defs/ContextFragment"},"title":"Fragments","type":"array"},"responseFormat":{"const":"ksadk.context-response/v1","title":"Responseformat","type":"string"}},"required":["responseFormat","fragments"],"title":"ContextContributorResponse","type":"object"},"ContextFragment":{"additionalProperties":false,"description":"One read-only, attributed Context candidate returned by a plugin.","properties":{"classification":{"maxLength":64,"minLength":1,"not":{"enum":["credential","secret"]},"pattern":"^[a-z][a-z0-9._-]*$","title":"Classification","type":"string"},"content":{"title":"Content"},"contentHash":{"anyOf":[{"maxLength":71,"pattern":"^sha256:[0-9a-f]{64}$","type":"string"},{"type":"null"}],"title":"Contenthash"},"droppable":{"title":"Droppable","type":"boolean"},"expiresAt":{"anyOf":[{"format":"date-time","pattern":"(?:Z|[+-][0-9]{2}:[0-9]{2})$","type":"string"},{"type":"null"}],"title":"Expiresat"},"fragmentFormat":{"const":"ksadk.context-fragment/v1","title":"Fragmentformat","type":"string"},"groupId":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}],"title":"Groupid"},"itemId":{"maxLength":256,"minLength":1,"title":"Itemid","type":"string"},"kind":{"enum":["compiled_prompt","core_memory","resource_manifest","checkpoint_summary","working_state","recalled_memory","history_round","skill_content","tool_result","attachment_context","current_input"],"title":"Kind","type":"string"},"metadata":{"additionalProperties":true,"title":"Metadata","type":"object"},"priority":{"title":"Priority","type":"integer"},"required":{"const":false,"title":"Required","type":"boolean"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"seqEnd":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"title":"Seqend"},"seqStart":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"title":"Seqstart"},"sourceRefs":{"items":{"maxLength":2048,"minLength":4,"not":{"pattern":"^(?:credential|env|secret|vault)://"},"pattern":"^[a-z][a-z0-9+.-]*://\\S+$","type":"string"},"minItems":1,"title":"Sourcerefs","type":"array","uniqueItems":true},"stable":{"title":"Stable","type":"boolean"},"tokenEstimate":{"minimum":0,"title":"Tokenestimate","type":"integer"},"truncatable":{"title":"Truncatable","type":"boolean"},"trustLevel":{"enum":["platform","developer","resource","user","untrusted"],"title":"Trustlevel","type":"string"}},"required":["fragmentFormat","itemId","kind","content","sourceRefs","classification","expiresAt","tokenEstimate","trustLevel","priority","required","droppable","truncatable","stable","groupId","seqStart","seqEnd","score","contentHash","metadata"],"title":"ContextFragment","type":"object"}},"$id":"https://ksadk.local/contracts/plugin/v1/context-contributor.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Complete golden exchange used by hosts and cross-language conformance.","properties":{"capabilities":{"$ref":"#/$defs/ContextContributorCapabilities"},"contractFormat":{"const":"ksadk.context-contributor/v1","title":"Contractformat","type":"string"},"request":{"$ref":"#/$defs/ContextContributorRequest"},"response":{"$ref":"#/$defs/ContextContributorResponse"}},"required":["contractFormat","capabilities","request","response"],"title":"ContextContributor/v1 exchange","type":"object"} diff --git a/contracts/plugin/v1/dsh-agent-provider-host.schema.json b/contracts/plugin/v1/dsh-agent-provider-host.schema.json new file mode 100644 index 00000000..4bb2823a --- /dev/null +++ b/contracts/plugin/v1/dsh-agent-provider-host.schema.json @@ -0,0 +1,72 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ksadk.local/contracts/plugin/v1/dsh-agent-provider-host.schema.json", + "title": "DSH AgentProviderHost/v1 JSONL conformance transcript", + "description": "The fixed, language-neutral DSH AgentProvider sidecar ABI. This is not a third plugin package format.", + "type": "object", + "additionalProperties": false, + "$defs": { + "id": {"type": "string", "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$", "minLength": 3, "maxLength": 128}, + "semver": {"type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$"}, + "digest": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"}, + "method": {"enum": ["handshake", "describe", "preflight", "activate", "inventory", "execute", "cancel", "health", "drain", "dispose"]}, + "handshake": { + "type": "object", "additionalProperties": false, + "properties": { + "protocolVersion": {"const": "ksadk.dsh-agent-provider-host/v1"}, + "methods": {"type": "array", "items": {"$ref": "#/$defs/method"}, "minItems": 10, "maxItems": 10, "uniqueItems": true}, + "hostVersion": {"$ref": "#/$defs/semver"} + }, + "required": ["protocolVersion", "methods", "hostVersion"] + }, + "descriptor": { + "type": "object", "additionalProperties": false, + "properties": { + "descriptorFormat": {"const": "dsh.agent-provider-descriptor/v1"}, + "ecosystem": {"const": "dsh"}, + "providerId": {"$ref": "#/$defs/id"}, + "providerVersion": {"$ref": "#/$defs/semver"}, + "displayName": {"type": "string", "minLength": 1, "maxLength": 256}, + "pluginName": {"type": "string", "pattern": "^(?:@[A-Za-z0-9._-]+/)?[A-Za-z0-9._-]+$", "minLength": 1, "maxLength": 256}, + "profile": {"type": "string", "minLength": 1, "maxLength": 64}, + "profileDigest": {"$ref": "#/$defs/digest"}, + "definition": {"const": "agent.provider/v1"}, + "slot": {"const": "agent.execution"}, + "runtimeProtocols": {"type": "array", "items": {"type": "string", "minLength": 1, "maxLength": 128}, "uniqueItems": true} + }, + "required": ["descriptorFormat", "ecosystem", "providerId", "providerVersion", "displayName", "pluginName", "profile", "profileDigest", "definition", "slot", "runtimeProtocols"] + }, + "preflight": { + "type": "object", "additionalProperties": false, + "properties": {"ready": {"type": "boolean"}, "descriptorDigest": {"$ref": "#/$defs/digest"}, "profileDigest": {"$ref": "#/$defs/digest"}}, + "required": ["ready", "descriptorDigest", "profileDigest"] + }, + "inventory": { + "type": "object", "additionalProperties": false, + "properties": { + "providerId": {"$ref": "#/$defs/id"}, "providerVersion": {"$ref": "#/$defs/semver"}, "profile": {"type": "string", "minLength": 1, "maxLength": 64}, "profileDigest": {"$ref": "#/$defs/digest"}, "descriptorDigest": {"$ref": "#/$defs/digest"}, "state": {"enum": ["ready", "draining", "disposed", "failed"]}, "activationCount": {"type": "integer", "minimum": 0} + }, + "required": ["providerId", "providerVersion", "profile", "profileDigest", "descriptorDigest", "state", "activationCount"] + }, + "request": { + "type": "object", "additionalProperties": false, + "properties": {"id": {"type": "string", "pattern": "^dsh-[1-9][0-9]*$"}, "method": {"$ref": "#/$defs/method"}, "params": {"type": "object"}}, + "required": ["id", "method", "params"] + }, + "response": { + "type": "object", "additionalProperties": false, + "properties": {"id": {"type": "string", "pattern": "^dsh-[1-9][0-9]*$"}, "result": true}, + "required": ["id", "result"] + } + }, + "properties": { + "contractFormat": {"const": "ksadk.dsh-agent-provider-host/v1"}, + "handshake": {"$ref": "#/$defs/handshake"}, + "descriptor": {"$ref": "#/$defs/descriptor"}, + "preflight": {"$ref": "#/$defs/preflight"}, + "inventory": {"$ref": "#/$defs/inventory"}, + "requests": {"type": "array", "items": {"$ref": "#/$defs/request"}, "minItems": 10, "maxItems": 10}, + "responses": {"type": "array", "items": {"$ref": "#/$defs/response"}, "minItems": 10, "maxItems": 10} + }, + "required": ["contractFormat", "handshake", "descriptor", "preflight", "inventory", "requests", "responses"] +} diff --git a/contracts/plugin/v1/fixtures/agent-bundle-manifest-v2.json b/contracts/plugin/v1/fixtures/agent-bundle-manifest-v2.json new file mode 100644 index 00000000..ddc9f95e --- /dev/null +++ b/contracts/plugin/v1/fixtures/agent-bundle-manifest-v2.json @@ -0,0 +1,32 @@ +{ + "bundleFormat": "agentkit.bundle/v2", + "agentId": "agent-fixture-01", + "sourceRevision": 4, + "resolvedDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "runtimeType": "harness", + "sourceDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222", + "runtimeContract": "agentkit.runtime/v1", + "pluginLockDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333", + "compositionMode": "composed", + "compositionProfileDigest": "sha256:4444444444444444444444444444444444444444444444444444444444444444", + "hostedKernelRequirementDigest": "sha256:5555555555555555555555555555555555555555555555555555555555555555", + "files": [ + { + "path": "composition-profile.json", + "sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666", + "size": 512 + }, + { + "path": "plugin-lock.json", + "sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777", + "size": 384 + }, + { + "path": "resolved-agent-spec.json", + "sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888", + "size": 2048 + } + ], + "createdAt": "2026-08-27T00:00:00Z", + "bundleDigest": "sha256:c804568e433c4c83a9e51e25970fd05759b74e95d687d979a7afc9ab8c943266" +} diff --git a/contracts/plugin/v1/fixtures/capability-definition.json b/contracts/plugin/v1/fixtures/capability-definition.json new file mode 100644 index 00000000..35079230 --- /dev/null +++ b/contracts/plugin/v1/fixtures/capability-definition.json @@ -0,0 +1,15 @@ +{ + "apiVersion": "capability.ksadk.io/v1", + "kind": "CapabilityDefinition", + "metadata": { + "id": "agent.provider", + "version": "1.0.0" + }, + "spec": { + "definition": "agent.provider/v1", + "slot": "agent.execution", + "multiplicity": "unique", + "ownerRequired": true, + "configSchema": "schemas/agent-provider-config.json" + } +} diff --git a/contracts/plugin/v1/fixtures/composition-profile.json b/contracts/plugin/v1/fixtures/composition-profile.json new file mode 100644 index 00000000..efa4d6b6 --- /dev/null +++ b/contracts/plugin/v1/fixtures/composition-profile.json @@ -0,0 +1,30 @@ +{ + "apiVersion": "composition.ksadk.io/v1", + "agentProvider": { + "ref": "plugin://io.ksadk.codex-provider@1.0.0", + "config": { + "approvalMode": "on-request" + } + }, + "capabilities": [ + { + "ref": "mcp://workspace/git@3", + "required": true + }, + { + "ref": "skill://workspace/release-review@7", + "required": false + } + ], + "nativeExtensions": [ + { + "runtime": "codex", + "ref": "codex-plugin://example/release-review@2" + } + ], + "policies": { + "tool": "policy://strict@4", + "network": "policy://restricted@2" + }, + "uiContributions": [] +} diff --git a/contracts/plugin/v1/fixtures/context-contributor.json b/contracts/plugin/v1/fixtures/context-contributor.json new file mode 100644 index 00000000..f91d6329 --- /dev/null +++ b/contracts/plugin/v1/fixtures/context-contributor.json @@ -0,0 +1,59 @@ +{ + "contractFormat": "ksadk.context-contributor/v1", + "capabilities": { + "contributorId": "workspace_rules", + "trustLevel": "developer", + "maxTokens": 12000, + "timeoutMs": 3000, + "cacheability": "turn", + "failureMode": "skip" + }, + "request": { + "requestFormat": "ksadk.context-request/v1", + "scope": { + "authenticated": true, + "actorId": "user-fixture-01", + "agentId": "agent-fixture-01", + "sessionId": "session-fixture-01", + "turnId": "turn-fixture-01" + }, + "invocationId": "invocation-fixture-01", + "userInput": "Summarize the repository rules.", + "workspaceRoot": "/workspace", + "policyRef": "policy://context/default@1", + "remainingBudget": 4000, + "allowedClassifications": ["internal"], + "metadata": { + "locale": "en-US" + } + }, + "response": { + "responseFormat": "ksadk.context-response/v1", + "fragments": [ + { + "fragmentFormat": "ksadk.context-fragment/v1", + "itemId": "contrib:workspace_rules:resource_manifest", + "kind": "resource_manifest", + "content": "Follow the repository instructions.", + "sourceRefs": ["workspace://AGENTS.md"], + "classification": "internal", + "expiresAt": null, + "tokenEstimate": 8, + "trustLevel": "developer", + "priority": 0, + "required": false, + "droppable": true, + "truncatable": true, + "stable": false, + "groupId": null, + "seqStart": null, + "seqEnd": null, + "score": null, + "contentHash": null, + "metadata": { + "contributorId": "workspace_rules" + } + } + ] + } +} diff --git a/contracts/plugin/v1/fixtures/dsh-agent-provider-host.json b/contracts/plugin/v1/fixtures/dsh-agent-provider-host.json new file mode 100644 index 00000000..28a045f2 --- /dev/null +++ b/contracts/plugin/v1/fixtures/dsh-agent-provider-host.json @@ -0,0 +1,14 @@ +{ + "contractFormat": "ksadk.dsh-agent-provider-host/v1", + "handshake": {"protocolVersion": "ksadk.dsh-agent-provider-host/v1", "methods": ["handshake", "describe", "preflight", "activate", "inventory", "execute", "cancel", "health", "drain", "dispose"], "hostVersion": "0.1.2-alpha.1"}, + "descriptor": {"descriptorFormat": "dsh.agent-provider-descriptor/v1", "ecosystem": "dsh", "providerId": "io.example.dsh-provider", "providerVersion": "1.2.3", "displayName": "Example DSH provider", "pluginName": "@example/dsh-agent-provider", "profile": "studio", "profileDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111", "definition": "agent.provider/v1", "slot": "agent.execution", "runtimeProtocols": ["agentkit.runtime/v1"]}, + "preflight": {"ready": true, "descriptorDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222", "profileDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111"}, + "inventory": {"providerId": "io.example.dsh-provider", "providerVersion": "1.2.3", "profile": "studio", "profileDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111", "descriptorDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222", "state": "ready", "activationCount": 1}, + "requests": [ + {"id": "dsh-1", "method": "handshake", "params": {"profile": {}}}, {"id": "dsh-2", "method": "describe", "params": {"profile": {}}}, {"id": "dsh-3", "method": "preflight", "params": {"profileDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111", "descriptorDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222"}}, {"id": "dsh-4", "method": "activate", "params": {"descriptorDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222", "bundle": {}, "capabilities": {}}}, {"id": "dsh-5", "method": "inventory", "params": {"descriptorDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222"}}, + {"id": "dsh-6", "method": "execute", "params": {"activationId": "activation-01", "request": {"input": "hello"}}}, {"id": "dsh-7", "method": "cancel", "params": {"activationId": "activation-01"}}, {"id": "dsh-8", "method": "health", "params": {"scope": "activation", "activationId": "activation-01"}}, {"id": "dsh-9", "method": "drain", "params": {"scope": "activation", "activationId": "activation-01"}}, {"id": "dsh-10", "method": "dispose", "params": {"scope": "host"}} + ], + "responses": [ + {"id": "dsh-1", "result": {}}, {"id": "dsh-2", "result": {}}, {"id": "dsh-3", "result": {}}, {"id": "dsh-4", "result": {"activationId": "activation-01"}}, {"id": "dsh-5", "result": {}}, {"id": "dsh-6", "result": {"output": "hello"}}, {"id": "dsh-7", "result": {"ok": true}}, {"id": "dsh-8", "result": {"healthy": true}}, {"id": "dsh-9", "result": {"ok": true}}, {"id": "dsh-10", "result": {"ok": true}} + ] +} diff --git a/contracts/plugin/v1/fixtures/plugin-ecosystem-bridge-codex.json b/contracts/plugin/v1/fixtures/plugin-ecosystem-bridge-codex.json new file mode 100644 index 00000000..74e477ae --- /dev/null +++ b/contracts/plugin/v1/fixtures/plugin-ecosystem-bridge-codex.json @@ -0,0 +1,339 @@ +{ + "fixtureKind": "lifecycle", + "contractFormat": "ksadk.plugin-ecosystem-bridge/v1", + "describeRequest": { + "requestFormat": "ksadk.bridge-describe/v1", + "ecosystem": "codex" + }, + "describeResult": { + "resultFormat": "ksadk.bridge-describe-result/v1", + "descriptor": { + "descriptorFormat": "ksadk.plugin-ecosystem-bridge-descriptor/v1", + "bridgeId": "io.ksadk.codex-bridge", + "bridgeVersion": "1.0.0", + "bridgeDigest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", + "ecosystem": "codex", + "integrationMode": "bridged", + "maturity": "bridged-ready", + "hostRequirement": { + "hostId": "codex-app-server", + "versionConstraint": ">=1.0.0,<2.0.0", + "protocol": "codex.app-server/v1", + "protocolConstraint": ">=1.0.0,<2.0.0" + }, + "supportedActions": [ + "describe", + "probe", + "inspect", + "plan", + "stage", + "commit", + "reconcile", + "rollback", + "dispose" + ] + } + }, + "probe": { + "fixtureKind": "probe", + "request": { + "requestFormat": "ksadk.bridge-probe/v1", + "sourceRef": "file://fixtures/codex-plugin", + "sourceDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "selectedManifestRef": "file://fixtures/codex-plugin/.codex-plugin/plugin.json" + }, + "result": { + "resultFormat": "ksadk.bridge-probe-result/v1", + "candidates": [ + { + "ecosystem": "codex", + "integrationMode": "bridged", + "maturity": "bridged-ready", + "manifestKind": "codex-plugin", + "manifestRef": "file://fixtures/codex-plugin/.codex-plugin/plugin.json", + "manifestDigest": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" + } + ], + "selectionRequired": false, + "selectedManifestRef": "file://fixtures/codex-plugin/.codex-plugin/plugin.json", + "rejection": null + } + }, + "inspectRequest": { + "requestFormat": "ksadk.bridge-inspect/v1", + "bridgeId": "io.ksadk.codex-bridge", + "sourceRef": "file://fixtures/codex-plugin", + "sourceDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "candidate": { + "ecosystem": "codex", + "integrationMode": "bridged", + "maturity": "bridged-ready", + "manifestKind": "codex-plugin", + "manifestRef": "file://fixtures/codex-plugin/.codex-plugin/plugin.json", + "manifestDigest": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" + } + }, + "inspectResult": { + "resultFormat": "ksadk.bridge-inspect-result/v1", + "status": "accepted", + "descriptor": { + "descriptorFormat": "ksadk.ecosystem-plugin-descriptor/v1", + "ecosystem": "codex", + "pluginId": "io.openai.example-plugin", + "pluginVersion": "1.2.3", + "integrationMode": "bridged", + "maturity": "bridged-ready", + "sourceRef": "file://fixtures/codex-plugin", + "artifactDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "manifestRef": "file://fixtures/codex-plugin/.codex-plugin/plugin.json", + "manifestDigest": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", + "hostRequirement": { + "hostId": "codex-app-server", + "versionConstraint": ">=1.0.0,<2.0.0", + "protocol": "codex.app-server/v1", + "protocolConstraint": ">=1.0.0,<2.0.0" + }, + "permissionsDeclared": true, + "installPermissions": ["package:local-read"], + "runtimePermissions": ["process:host-user"], + "authScopes": ["codex.plugin:manage"], + "secretRefs": ["credential://codex/session"], + "components": ["skill:review", "mcp:repository"] + }, + "rejection": null + }, + "planRequest": { + "requestFormat": "ksadk.bridge-plan/v1", + "descriptor": { + "descriptorFormat": "ksadk.ecosystem-plugin-descriptor/v1", + "ecosystem": "codex", + "pluginId": "io.openai.example-plugin", + "pluginVersion": "1.2.3", + "integrationMode": "bridged", + "maturity": "bridged-ready", + "sourceRef": "file://fixtures/codex-plugin", + "artifactDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "manifestRef": "file://fixtures/codex-plugin/.codex-plugin/plugin.json", + "manifestDigest": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", + "hostRequirement": { + "hostId": "codex-app-server", + "versionConstraint": ">=1.0.0,<2.0.0", + "protocol": "codex.app-server/v1", + "protocolConstraint": ">=1.0.0,<2.0.0" + }, + "permissionsDeclared": true, + "installPermissions": ["package:local-read"], + "runtimePermissions": ["process:host-user"], + "authScopes": ["codex.plugin:manage"], + "secretRefs": ["credential://codex/session"], + "components": ["skill:review", "mcp:repository"] + }, + "operation": "install", + "desiredState": "enabled", + "boundReferences": ["agent://fixture-agent"], + "authorizationRef": "policy://plugin/install-approved", + "acceptUndeclaredPermissions": false + }, + "planResult": { + "resultFormat": "ksadk.bridge-plan-result/v1", + "plan": { + "planFormat": "ksadk.bridge-transition-plan/v1", + "planId": "plan-codex-01", + "bridgeId": "io.ksadk.codex-bridge", + "bridgeVersion": "1.0.0", + "bridgeDigest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", + "ecosystem": "codex", + "pluginId": "io.openai.example-plugin", + "pluginVersion": "1.2.3", + "integrationMode": "bridged", + "operation": "install", + "desiredState": "enabled", + "descriptorDigest": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd", + "artifactDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "manifestDigest": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", + "installPermissions": ["package:local-read"], + "runtimePermissions": ["process:host-user"], + "authScopes": ["codex.plugin:manage"], + "authorizationRef": "policy://plugin/install-approved", + "permissionsDeclared": true, + "undeclaredPermissionsAccepted": false, + "boundReferences": ["agent://fixture-agent"], + "hostRequirement": { + "hostId": "codex-app-server", + "versionConstraint": ">=1.0.0,<2.0.0", + "protocol": "codex.app-server/v1", + "protocolConstraint": ">=1.0.0,<2.0.0" + }, + "rollbackPointRef": "host-snapshot://codex/plugin-state-before-install", + "rollbackPointDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333", + "planDigest": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", + "createdAt": "2026-08-28T00:00:00Z" + } + }, + "stageRequest": { + "requestFormat": "ksadk.bridge-stage/v1", + "plan": { + "planFormat": "ksadk.bridge-transition-plan/v1", + "planId": "plan-codex-01", + "bridgeId": "io.ksadk.codex-bridge", + "bridgeVersion": "1.0.0", + "bridgeDigest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", + "ecosystem": "codex", + "pluginId": "io.openai.example-plugin", + "pluginVersion": "1.2.3", + "integrationMode": "bridged", + "operation": "install", + "desiredState": "enabled", + "descriptorDigest": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd", + "artifactDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "manifestDigest": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", + "installPermissions": ["package:local-read"], + "runtimePermissions": ["process:host-user"], + "authScopes": ["codex.plugin:manage"], + "authorizationRef": "policy://plugin/install-approved", + "permissionsDeclared": true, + "undeclaredPermissionsAccepted": false, + "boundReferences": ["agent://fixture-agent"], + "hostRequirement": { + "hostId": "codex-app-server", + "versionConstraint": ">=1.0.0,<2.0.0", + "protocol": "codex.app-server/v1", + "protocolConstraint": ">=1.0.0,<2.0.0" + }, + "rollbackPointRef": "host-snapshot://codex/plugin-state-before-install", + "rollbackPointDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333", + "planDigest": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", + "createdAt": "2026-08-28T00:00:00Z" + }, + "expectedPlanDigest": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" + }, + "stageResult": { + "resultFormat": "ksadk.bridge-stage-result/v1", + "stageId": "stage-codex-01", + "planId": "plan-codex-01", + "planDigest": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", + "bridgeVersion": "1.0.0", + "bridgeDigest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", + "host": { + "hostId": "codex-app-server", + "available": true, + "version": "1.4.0", + "protocol": "codex.app-server/v1", + "protocolVersion": "1.1.0", + "digest": "sha256:1111111111111111111111111111111111111111111111111111111111111111" + }, + "artifactDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "manifestDigest": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", + "nativeStageRef": "codex-stage://plugin/stage-codex-01", + "nativeStageDigest": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "stagedAt": "2026-08-28T00:00:01Z" + }, + "commitRequest": { + "requestFormat": "ksadk.bridge-commit/v1", + "stageId": "stage-codex-01", + "planId": "plan-codex-01", + "planDigest": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", + "nativeStageRef": "codex-stage://plugin/stage-codex-01", + "nativeStageDigest": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "idempotencyKey": "commit-codex-01" + }, + "commitResult": { + "resultFormat": "ksadk.bridge-commit-result/v1", + "receipt": { + "receiptFormat": "ksadk.ecosystem-install-receipt/v1", + "receiptId": "receipt-codex-01", + "planId": "plan-codex-01", + "planDigest": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", + "stageId": "stage-codex-01", + "ecosystem": "codex", + "pluginId": "io.openai.example-plugin", + "pluginVersion": "1.2.3", + "integrationMode": "bridged", + "desiredState": "enabled", + "bridgeId": "io.ksadk.codex-bridge", + "bridgeVersion": "1.0.0", + "bridgeDigest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", + "host": { + "hostId": "codex-app-server", + "available": true, + "version": "1.4.0", + "protocol": "codex.app-server/v1", + "protocolVersion": "1.1.0", + "digest": "sha256:1111111111111111111111111111111111111111111111111111111111111111" + }, + "artifactDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "manifestDigest": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", + "nativeReceiptRef": "codex-receipt://plugin/io.openai.example-plugin/1.2.3", + "nativeReceiptDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222", + "boundReferences": ["agent://fixture-agent"], + "committedAt": "2026-08-28T00:00:02Z" + } + }, + "reconcileRequest": { + "requestFormat": "ksadk.bridge-reconcile/v1", + "receiptId": "receipt-codex-01", + "nativeReceiptRef": "codex-receipt://plugin/io.openai.example-plugin/1.2.3", + "nativeReceiptDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "reconcileResult": { + "resultFormat": "ksadk.bridge-reconcile-result/v1", + "inventory": { + "inventoryFormat": "ksadk.ecosystem-inventory/v1", + "receiptId": "receipt-codex-01", + "ecosystem": "codex", + "pluginId": "io.openai.example-plugin", + "pluginVersion": "1.2.3", + "integrationMode": "bridged", + "desiredState": "enabled", + "observedState": "ready", + "maturity": "bridged-ready", + "bridgeId": "io.ksadk.codex-bridge", + "bridgeVersion": "1.0.0", + "bridgeDigest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", + "host": { + "hostId": "codex-app-server", + "available": true, + "version": "1.4.0", + "protocol": "codex.app-server/v1", + "protocolVersion": "1.1.0", + "digest": "sha256:1111111111111111111111111111111111111111111111111111111111111111" + }, + "artifactDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "manifestDigest": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", + "nativeReceiptRef": "codex-receipt://plugin/io.openai.example-plugin/1.2.3", + "nativeReceiptDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222", + "boundReferences": ["agent://fixture-agent"], + "reasonCode": null, + "reconciledAt": "2026-08-28T00:00:03Z" + } + }, + "rollbackRequest": { + "requestFormat": "ksadk.bridge-rollback/v1", + "receiptId": "receipt-codex-01", + "rollbackPointRef": "host-snapshot://codex/plugin-state-before-install", + "rollbackPointDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333", + "expectedNativeReceiptDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "rollbackResult": { + "resultFormat": "ksadk.bridge-rollback-result/v1", + "receiptId": "receipt-codex-01", + "state": "rolled-back", + "nativeReceiptRef": "codex-receipt://plugin/io.openai.example-plugin/rolled-back", + "nativeReceiptDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333", + "rolledBackAt": "2026-08-28T00:00:04Z" + }, + "disposeRequest": { + "requestFormat": "ksadk.bridge-dispose/v1", + "receiptId": "receipt-codex-01", + "nativeReceiptRef": "codex-receipt://plugin/io.openai.example-plugin/rolled-back", + "nativeReceiptDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333" + }, + "disposeResult": { + "resultFormat": "ksadk.bridge-dispose-result/v1", + "receiptId": "receipt-codex-01", + "state": "disposed", + "nativeReceiptRef": "codex-receipt://plugin/io.openai.example-plugin/rolled-back", + "nativeReceiptDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333", + "disposedAt": "2026-08-28T00:00:05Z" + } +} diff --git a/contracts/plugin/v1/fixtures/plugin-ecosystem-bridge-dual-manifest.json b/contracts/plugin/v1/fixtures/plugin-ecosystem-bridge-dual-manifest.json new file mode 100644 index 00000000..c62f4b99 --- /dev/null +++ b/contracts/plugin/v1/fixtures/plugin-ecosystem-bridge-dual-manifest.json @@ -0,0 +1,33 @@ +{ + "fixtureKind": "probe", + "request": { + "requestFormat": "ksadk.bridge-probe/v1", + "sourceRef": "file://fixtures/multi-ecosystem-plugin", + "sourceDigest": "sha256:4444444444444444444444444444444444444444444444444444444444444444", + "selectedManifestRef": null + }, + "result": { + "resultFormat": "ksadk.bridge-probe-result/v1", + "candidates": [ + { + "ecosystem": "dsh", + "integrationMode": "linked", + "maturity": "experimental", + "manifestKind": "dsh-bundle", + "manifestRef": "file://fixtures/multi-ecosystem-plugin/package.json", + "manifestDigest": "sha256:5555555555555555555555555555555555555555555555555555555555555555" + }, + { + "ecosystem": "codex", + "integrationMode": "bridged", + "maturity": "experimental", + "manifestKind": "codex-plugin", + "manifestRef": "file://fixtures/multi-ecosystem-plugin/.codex-plugin/plugin.json", + "manifestDigest": "sha256:6666666666666666666666666666666666666666666666666666666666666666" + } + ], + "selectionRequired": true, + "selectedManifestRef": null, + "rejection": null + } +} diff --git a/contracts/plugin/v1/fixtures/plugin-ecosystem-bridge-host-missing.json b/contracts/plugin/v1/fixtures/plugin-ecosystem-bridge-host-missing.json new file mode 100644 index 00000000..66748175 --- /dev/null +++ b/contracts/plugin/v1/fixtures/plugin-ecosystem-bridge-host-missing.json @@ -0,0 +1,37 @@ +{ + "fixtureKind": "rejection", + "request": { + "requestFormat": "ksadk.bridge-inspect/v1", + "bridgeId": "io.ksadk.codex-bridge", + "sourceRef": "file://fixtures/codex-plugin", + "sourceDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "candidate": { + "ecosystem": "codex", + "integrationMode": "bridged", + "maturity": "bridged-ready", + "manifestKind": "codex-plugin", + "manifestRef": "file://fixtures/codex-plugin/.codex-plugin/plugin.json", + "manifestDigest": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" + } + }, + "result": { + "resultFormat": "ksadk.bridge-inspect-result/v1", + "status": "rejected", + "descriptor": null, + "rejection": { + "rejectionFormat": "ksadk.bridge-rejection/v1", + "action": "inspect", + "code": "host_unavailable", + "retryable": true, + "message": "Required native host is unavailable.", + "host": { + "hostId": "codex-app-server", + "available": false, + "version": null, + "protocol": null, + "protocolVersion": null, + "digest": null + } + } + } +} diff --git a/contracts/plugin/v1/fixtures/plugin-inventory.json b/contracts/plugin/v1/fixtures/plugin-inventory.json new file mode 100644 index 00000000..d3500ddb --- /dev/null +++ b/contracts/plugin/v1/fixtures/plugin-inventory.json @@ -0,0 +1,15 @@ +{ + "apiVersion": "plugin.ksadk.io/v1", + "kind": "PluginInventory", + "profileDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "pluginLockDigest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", + "plugins": [ + { + "id": "io.ksadk.codex-provider", + "version": "1.0.0", + "digest": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "state": "ready", + "health": "healthy" + } + ] +} diff --git a/contracts/plugin/v1/fixtures/plugin-lock.json b/contracts/plugin/v1/fixtures/plugin-lock.json new file mode 100644 index 00000000..553151e7 --- /dev/null +++ b/contracts/plugin/v1/fixtures/plugin-lock.json @@ -0,0 +1,40 @@ +{ + "lockFormat": "agentkit.plugin-lock/v1", + "plugins": [ + { + "id": "io.ksadk.event-store", + "version": "1.0.0", + "digest": "sha256:2222222222222222222222222222222222222222222222222222222222222222", + "source": "builtin", + "provides": [ + { + "definition": "session.event-store/v1", + "slot": "session.events", + "owner": "io.ksadk.event-store" + } + ] + }, + { + "id": "io.ksadk.codex-provider", + "version": "1.0.0", + "digest": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "source": "builtin", + "signatureRef": "signature://io.ksadk.codex-provider/1.0.0", + "license": "Apache-2.0", + "provides": [ + { + "definition": "agent.provider/v1", + "slot": "agent.execution", + "owner": "io.ksadk.codex-provider" + } + ], + "dependencies": [ + { + "id": "io.ksadk.event-store", + "version": "1.0.0", + "digest": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + } + ] + } + ] +} diff --git a/contracts/plugin/v1/fixtures/subagent-provider.json b/contracts/plugin/v1/fixtures/subagent-provider.json new file mode 100644 index 00000000..46e04ae7 --- /dev/null +++ b/contracts/plugin/v1/fixtures/subagent-provider.json @@ -0,0 +1,74 @@ +{ + "contractFormat": "ksadk.subagent-provider/v1", + "request": { + "requestFormat": "ksadk.subagent-spawn/v1", + "providerRef": "plugin://io.example.codex-child@1.0.0", + "parentSessionId": "session-parent-01", + "parentRunId": "run-parent-01", + "task": "Review the repository without modifying it.", + "depth": 1, + "policy": { + "maxDepth": 2, + "timeoutSeconds": 120, + "maxSteps": 8, + "background": false, + "allowedTools": ["repo.read"], + "allowedPermissions": ["filesystem:workspace-read"] + }, + "metadata": { + "traceId": "trace-fixture-01" + } + }, + "handle": { + "handleFormat": "ksadk.child-handle/v1", + "handleId": "child-01", + "providerRef": "plugin://io.example.codex-child@1.0.0", + "parentSessionId": "session-parent-01", + "parentRunId": "run-parent-01", + "childSessionId": "session-child-01", + "childRunId": "run-child-01", + "depth": 1, + "capabilities": ["cancel", "streaming"], + "capabilityDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "createdAt": "2026-08-27T00:00:00Z", + "resumable": false, + "resumeDescriptor": null + }, + "status": { + "statusFormat": "ksadk.subagent-status/v1", + "handleId": "child-01", + "state": "succeeded", + "lastSeq": 2, + "updatedAt": "2026-08-27T00:00:02Z", + "reason": null + }, + "events": [ + { + "eventFormat": "ksadk.subagent-event/v1", + "handleId": "child-01", + "eventId": "child-event-01", + "seq": 1, + "kind": "progress", + "payload": {"message": "reviewing"}, + "nativeRef": {"threadId": "thread-native-01", "turnId": "turn-native-01"} + }, + { + "eventFormat": "ksadk.subagent-event/v1", + "handleId": "child-01", + "eventId": "child-event-02", + "seq": 2, + "kind": "terminal", + "payload": {"state": "succeeded"}, + "nativeRef": {"threadId": "thread-native-01", "turnId": "turn-native-01"} + } + ], + "result": { + "resultFormat": "ksadk.subagent-result/v1", + "handleId": "child-01", + "state": "succeeded", + "output": {"summary": "No blocking findings."}, + "outputRefs": ["artifact://review/report-01"], + "errorCode": null, + "errorMessage": null + } +} diff --git a/contracts/plugin/v1/manifest.json b/contracts/plugin/v1/manifest.json new file mode 100644 index 00000000..ecac37d3 --- /dev/null +++ b/contracts/plugin/v1/manifest.json @@ -0,0 +1,108 @@ +{ + "contract_set": "plugin/v1", + "digest_algorithm": "sha256", + "canonicalization": "utf-8; json key sort; no whitespace; lf; path-sorted", + "aggregate_digest": "a7ae3fb4ef3186f8244b94575225214240c9bb63a20618057b45f0bea294981d", + "files": [ + { + "path": "agent-bundle-manifest-v2.schema.json", + "sha256": "eae48cc944d6284868c3c18dc4b7d8bf1298d4901bd9e0dddd3a835dccbe45cf", + "bytes": 1912 + }, + { + "path": "capability-definition.schema.json", + "sha256": "6a8de04c3c70e3a4508bfce9c8a1375d501d291c52347982f748040e41812b41", + "bytes": 998 + }, + { + "path": "composition-profile.schema.json", + "sha256": "4500d651b8e103b46cb896acd4f37a517d44b83248ec8df83f998926ac228fa5", + "bytes": 1304 + }, + { + "path": "context-contributor.schema.json", + "sha256": "fa101d2ed37eea9f65b82d092f964b84ec4e07bed1324eb94e98498d34ded9ea", + "bytes": 6217 + }, + { + "path": "dsh-agent-provider-host.schema.json", + "sha256": "c096e991f90b0040d89881f4b2029c2dbf2a44c7f7e30885a3c12afc8372d6b2", + "bytes": 3660 + }, + { + "path": "fixtures/agent-bundle-manifest-v2.json", + "sha256": "065b5a8df2185b2b23072cd08e7dc2a679137777bfc84de7dd3cb5524629f124", + "bytes": 1175 + }, + { + "path": "fixtures/capability-definition.json", + "sha256": "caea56c231ebb680f1aac3103a33d0b4aaa38f87028942eced04f805ed44e15c", + "bytes": 286 + }, + { + "path": "fixtures/composition-profile.json", + "sha256": "2fe714638081a27956b9c9330d374fca6a6ae9657df5fbf364f46ebbbf8565a4", + "bytes": 455 + }, + { + "path": "fixtures/context-contributor.json", + "sha256": "b446b30ce3a863c8d716c5fcdc0a73af11d3a04bb8b2f642a39e653d5dd9acfd", + "bytes": 1231 + }, + { + "path": "fixtures/dsh-agent-provider-host.json", + "sha256": "3ed0ca5baaff9d1bb56a37f866a7f95621787521e1ab896fcf6b6497d0900e97", + "bytes": 2709 + }, + { + "path": "fixtures/plugin-ecosystem-bridge-codex.json", + "sha256": "0ba3b692c9e0bc7d1024de7a200ac9e5a9a6957a4aaf975ee0dd70b89009fe28", + "bytes": 12444 + }, + { + "path": "fixtures/plugin-ecosystem-bridge-dual-manifest.json", + "sha256": "537a544ff779cbb5e537c1efa9fdbd30f1baf01aae9a925be3cf458b27c301e8", + "bytes": 923 + }, + { + "path": "fixtures/plugin-ecosystem-bridge-host-missing.json", + "sha256": "55554a4cd0051f3c9502861ff64fa19805fef0a3c89e664010aa8840eb0a186d", + "bytes": 920 + }, + { + "path": "fixtures/plugin-inventory.json", + "sha256": "cc15f9e0691fdb729ab10d0b51509077e755358dbee1191dc8ea96a8b28044f4", + "bytes": 424 + }, + { + "path": "fixtures/plugin-lock.json", + "sha256": "5b539b90da5a57270d862129c1fccadf14fe9429d50aedab80ac468092e71fb0", + "bytes": 800 + }, + { + "path": "fixtures/subagent-provider.json", + "sha256": "69f1c98aa75773cde7bf74d640484cf710a534670cf7f68c660f5ef5150a642d", + "bytes": 1790 + }, + { + "path": "plugin-ecosystem-bridge.schema.json", + "sha256": "c605653ea65445bcf278a65b3f2d9cfc76de6ed0b1f69e652a9fd12a54da3e0c", + "bytes": 25804 + }, + { + "path": "plugin-inventory.schema.json", + "sha256": "1f6610627f62164a853a3618fc24d264878821ed415072642707735e97d9880d", + "bytes": 1170 + }, + { + "path": "plugin-lock.schema.json", + "sha256": "05ab0b941b97ed148b2b8444e853b74457ee9b71a56b80cbddbb603a03f78fd9", + "bytes": 1618 + }, + { + "path": "subagent-provider.schema.json", + "sha256": "09b5de1bcde8e61a2e284430778d2bc6aaa6de04b89184d0e9c73c1b289da00e", + "bytes": 5139 + } + ] +} diff --git a/contracts/plugin/v1/plugin-ecosystem-bridge.schema.json b/contracts/plugin/v1/plugin-ecosystem-bridge.schema.json new file mode 100644 index 00000000..14afa2ac --- /dev/null +++ b/contracts/plugin/v1/plugin-ecosystem-bridge.schema.json @@ -0,0 +1,1830 @@ +{ + "$defs": { + "BridgeCommitRequest": { + "additionalProperties": false, + "properties": { + "requestFormat": { + "const": "ksadk.bridge-commit/v1", + "default": "ksadk.bridge-commit/v1", + "title": "Requestformat", + "type": "string" + }, + "stageId": { + "maxLength": 256, + "minLength": 1, + "title": "Stageid", + "type": "string" + }, + "planId": { + "maxLength": 256, + "minLength": 1, + "title": "Planid", + "type": "string" + }, + "planDigest": { + "title": "Plandigest", + "type": "string" + }, + "nativeStageRef": { + "maxLength": 2048, + "minLength": 4, + "title": "Nativestageref", + "type": "string" + }, + "nativeStageDigest": { + "title": "Nativestagedigest", + "type": "string" + }, + "idempotencyKey": { + "maxLength": 256, + "minLength": 8, + "title": "Idempotencykey", + "type": "string" + } + }, + "required": [ + "stageId", + "planId", + "planDigest", + "nativeStageRef", + "nativeStageDigest", + "idempotencyKey" + ], + "title": "BridgeCommitRequest", + "type": "object" + }, + "BridgeCommitResult": { + "additionalProperties": false, + "properties": { + "resultFormat": { + "const": "ksadk.bridge-commit-result/v1", + "default": "ksadk.bridge-commit-result/v1", + "title": "Resultformat", + "type": "string" + }, + "receipt": { + "$ref": "#/$defs/EcosystemInstallReceipt" + } + }, + "required": [ + "receipt" + ], + "title": "BridgeCommitResult", + "type": "object" + }, + "BridgeDescribeRequest": { + "additionalProperties": false, + "properties": { + "requestFormat": { + "const": "ksadk.bridge-describe/v1", + "default": "ksadk.bridge-describe/v1", + "title": "Requestformat", + "type": "string" + }, + "ecosystem": { + "enum": [ + "codex", + "dsh" + ], + "title": "Ecosystem", + "type": "string" + } + }, + "required": [ + "ecosystem" + ], + "title": "BridgeDescribeRequest", + "type": "object" + }, + "BridgeDescribeResult": { + "additionalProperties": false, + "properties": { + "resultFormat": { + "const": "ksadk.bridge-describe-result/v1", + "default": "ksadk.bridge-describe-result/v1", + "title": "Resultformat", + "type": "string" + }, + "descriptor": { + "$ref": "#/$defs/BridgeDescriptor" + } + }, + "required": [ + "descriptor" + ], + "title": "BridgeDescribeResult", + "type": "object" + }, + "BridgeDescriptor": { + "additionalProperties": false, + "properties": { + "descriptorFormat": { + "const": "ksadk.plugin-ecosystem-bridge-descriptor/v1", + "default": "ksadk.plugin-ecosystem-bridge-descriptor/v1", + "title": "Descriptorformat", + "type": "string" + }, + "bridgeId": { + "maxLength": 128, + "minLength": 3, + "title": "Bridgeid", + "type": "string" + }, + "bridgeVersion": { + "title": "Bridgeversion", + "type": "string" + }, + "bridgeDigest": { + "title": "Bridgedigest", + "type": "string" + }, + "ecosystem": { + "enum": [ + "codex", + "dsh" + ], + "title": "Ecosystem", + "type": "string" + }, + "integrationMode": { + "enum": [ + "bridged", + "linked" + ], + "title": "Integrationmode", + "type": "string" + }, + "maturity": { + "enum": [ + "detected", + "linked-ready", + "bridged-ready", + "unsupported", + "experimental" + ], + "title": "Maturity", + "type": "string" + }, + "hostRequirement": { + "anyOf": [ + { + "$ref": "#/$defs/BridgeHostRequirement" + }, + { + "type": "null" + } + ] + }, + "supportedActions": { + "items": { + "enum": [ + "describe", + "probe", + "inspect", + "plan", + "stage", + "commit", + "reconcile", + "rollback", + "dispose" + ], + "type": "string" + }, + "title": "Supportedactions", + "type": "array" + } + }, + "required": [ + "bridgeId", + "bridgeVersion", + "bridgeDigest", + "ecosystem", + "integrationMode", + "maturity", + "hostRequirement", + "supportedActions" + ], + "title": "BridgeDescriptor", + "type": "object" + }, + "BridgeDisposeRequest": { + "additionalProperties": false, + "properties": { + "requestFormat": { + "const": "ksadk.bridge-dispose/v1", + "default": "ksadk.bridge-dispose/v1", + "title": "Requestformat", + "type": "string" + }, + "receiptId": { + "maxLength": 256, + "minLength": 1, + "title": "Receiptid", + "type": "string" + }, + "nativeReceiptRef": { + "maxLength": 2048, + "minLength": 4, + "title": "Nativereceiptref", + "type": "string" + }, + "nativeReceiptDigest": { + "title": "Nativereceiptdigest", + "type": "string" + } + }, + "required": [ + "receiptId", + "nativeReceiptRef", + "nativeReceiptDigest" + ], + "title": "BridgeDisposeRequest", + "type": "object" + }, + "BridgeDisposeResult": { + "additionalProperties": false, + "properties": { + "resultFormat": { + "const": "ksadk.bridge-dispose-result/v1", + "default": "ksadk.bridge-dispose-result/v1", + "title": "Resultformat", + "type": "string" + }, + "receiptId": { + "maxLength": 256, + "minLength": 1, + "title": "Receiptid", + "type": "string" + }, + "state": { + "const": "disposed", + "title": "State", + "type": "string" + }, + "nativeReceiptRef": { + "maxLength": 2048, + "minLength": 4, + "title": "Nativereceiptref", + "type": "string" + }, + "nativeReceiptDigest": { + "title": "Nativereceiptdigest", + "type": "string" + }, + "disposedAt": { + "format": "date-time", + "title": "Disposedat", + "type": "string" + } + }, + "required": [ + "receiptId", + "state", + "nativeReceiptRef", + "nativeReceiptDigest", + "disposedAt" + ], + "title": "BridgeDisposeResult", + "type": "object" + }, + "BridgeHostObservation": { + "additionalProperties": false, + "properties": { + "hostId": { + "maxLength": 128, + "minLength": 2, + "title": "Hostid", + "type": "string" + }, + "available": { + "title": "Available", + "type": "boolean" + }, + "version": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Version" + }, + "protocol": { + "anyOf": [ + { + "maxLength": 128, + "minLength": 3, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Protocol" + }, + "protocolVersion": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Protocolversion" + }, + "digest": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Digest" + } + }, + "required": [ + "hostId", + "available" + ], + "title": "BridgeHostObservation", + "type": "object" + }, + "BridgeHostRequirement": { + "additionalProperties": false, + "properties": { + "hostId": { + "maxLength": 128, + "minLength": 2, + "title": "Hostid", + "type": "string" + }, + "versionConstraint": { + "maxLength": 128, + "minLength": 1, + "title": "Versionconstraint", + "type": "string" + }, + "protocol": { + "maxLength": 128, + "minLength": 3, + "title": "Protocol", + "type": "string" + }, + "protocolConstraint": { + "maxLength": 128, + "minLength": 1, + "title": "Protocolconstraint", + "type": "string" + } + }, + "required": [ + "hostId", + "versionConstraint", + "protocol", + "protocolConstraint" + ], + "title": "BridgeHostRequirement", + "type": "object" + }, + "BridgeInspectExchange": { + "additionalProperties": false, + "properties": { + "fixtureKind": { + "const": "rejection", + "default": "rejection", + "title": "Fixturekind", + "type": "string" + }, + "request": { + "$ref": "#/$defs/BridgeInspectRequest" + }, + "result": { + "$ref": "#/$defs/BridgeInspectResult" + } + }, + "required": [ + "request", + "result" + ], + "title": "BridgeInspectExchange", + "type": "object" + }, + "BridgeInspectRequest": { + "additionalProperties": false, + "properties": { + "requestFormat": { + "const": "ksadk.bridge-inspect/v1", + "default": "ksadk.bridge-inspect/v1", + "title": "Requestformat", + "type": "string" + }, + "bridgeId": { + "maxLength": 128, + "minLength": 3, + "title": "Bridgeid", + "type": "string" + }, + "sourceRef": { + "maxLength": 4096, + "minLength": 4, + "title": "Sourceref", + "type": "string" + }, + "sourceDigest": { + "title": "Sourcedigest", + "type": "string" + }, + "candidate": { + "$ref": "#/$defs/PluginManifestCandidate" + } + }, + "required": [ + "bridgeId", + "sourceRef", + "sourceDigest", + "candidate" + ], + "title": "BridgeInspectRequest", + "type": "object" + }, + "BridgeInspectResult": { + "additionalProperties": false, + "properties": { + "resultFormat": { + "const": "ksadk.bridge-inspect-result/v1", + "default": "ksadk.bridge-inspect-result/v1", + "title": "Resultformat", + "type": "string" + }, + "status": { + "enum": [ + "accepted", + "rejected" + ], + "title": "Status", + "type": "string" + }, + "descriptor": { + "anyOf": [ + { + "$ref": "#/$defs/EcosystemPluginDescriptor" + }, + { + "type": "null" + } + ], + "default": null + }, + "rejection": { + "anyOf": [ + { + "$ref": "#/$defs/BridgeRejection" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "status" + ], + "title": "BridgeInspectResult", + "type": "object" + }, + "BridgePlanRequest": { + "additionalProperties": false, + "properties": { + "requestFormat": { + "const": "ksadk.bridge-plan/v1", + "default": "ksadk.bridge-plan/v1", + "title": "Requestformat", + "type": "string" + }, + "descriptor": { + "$ref": "#/$defs/EcosystemPluginDescriptor" + }, + "operation": { + "enum": [ + "install", + "update", + "enable", + "disable", + "uninstall" + ], + "title": "Operation", + "type": "string" + }, + "desiredState": { + "enum": [ + "disabled", + "enabled" + ], + "title": "Desiredstate", + "type": "string" + }, + "boundReferences": { + "default": [], + "items": { + "type": "string" + }, + "title": "Boundreferences", + "type": "array" + }, + "authorizationRef": { + "maxLength": 2048, + "minLength": 4, + "title": "Authorizationref", + "type": "string" + }, + "acceptUndeclaredPermissions": { + "default": false, + "title": "Acceptundeclaredpermissions", + "type": "boolean" + } + }, + "required": [ + "descriptor", + "operation", + "desiredState", + "authorizationRef" + ], + "title": "BridgePlanRequest", + "type": "object" + }, + "BridgePlanResult": { + "additionalProperties": false, + "properties": { + "resultFormat": { + "const": "ksadk.bridge-plan-result/v1", + "default": "ksadk.bridge-plan-result/v1", + "title": "Resultformat", + "type": "string" + }, + "plan": { + "$ref": "#/$defs/BridgeTransitionPlan" + } + }, + "required": [ + "plan" + ], + "title": "BridgePlanResult", + "type": "object" + }, + "BridgeProbeExchange": { + "additionalProperties": false, + "properties": { + "fixtureKind": { + "const": "probe", + "default": "probe", + "title": "Fixturekind", + "type": "string" + }, + "request": { + "$ref": "#/$defs/BridgeProbeRequest" + }, + "result": { + "$ref": "#/$defs/BridgeProbeResult" + } + }, + "required": [ + "request", + "result" + ], + "title": "BridgeProbeExchange", + "type": "object" + }, + "BridgeProbeRequest": { + "additionalProperties": false, + "properties": { + "requestFormat": { + "const": "ksadk.bridge-probe/v1", + "default": "ksadk.bridge-probe/v1", + "title": "Requestformat", + "type": "string" + }, + "sourceRef": { + "maxLength": 4096, + "minLength": 4, + "title": "Sourceref", + "type": "string" + }, + "sourceDigest": { + "title": "Sourcedigest", + "type": "string" + }, + "selectedManifestRef": { + "anyOf": [ + { + "maxLength": 4096, + "minLength": 4, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Selectedmanifestref" + } + }, + "required": [ + "sourceRef", + "sourceDigest" + ], + "title": "BridgeProbeRequest", + "type": "object" + }, + "BridgeProbeResult": { + "additionalProperties": false, + "properties": { + "resultFormat": { + "const": "ksadk.bridge-probe-result/v1", + "default": "ksadk.bridge-probe-result/v1", + "title": "Resultformat", + "type": "string" + }, + "candidates": { + "default": [], + "items": { + "$ref": "#/$defs/PluginManifestCandidate" + }, + "title": "Candidates", + "type": "array" + }, + "selectionRequired": { + "title": "Selectionrequired", + "type": "boolean" + }, + "selectedManifestRef": { + "anyOf": [ + { + "maxLength": 4096, + "minLength": 4, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Selectedmanifestref" + }, + "rejection": { + "anyOf": [ + { + "$ref": "#/$defs/BridgeRejection" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "selectionRequired" + ], + "title": "BridgeProbeResult", + "type": "object" + }, + "BridgeReconcileRequest": { + "additionalProperties": false, + "properties": { + "requestFormat": { + "const": "ksadk.bridge-reconcile/v1", + "default": "ksadk.bridge-reconcile/v1", + "title": "Requestformat", + "type": "string" + }, + "receiptId": { + "maxLength": 256, + "minLength": 1, + "title": "Receiptid", + "type": "string" + }, + "nativeReceiptRef": { + "maxLength": 2048, + "minLength": 4, + "title": "Nativereceiptref", + "type": "string" + }, + "nativeReceiptDigest": { + "title": "Nativereceiptdigest", + "type": "string" + } + }, + "required": [ + "receiptId", + "nativeReceiptRef", + "nativeReceiptDigest" + ], + "title": "BridgeReconcileRequest", + "type": "object" + }, + "BridgeReconcileResult": { + "additionalProperties": false, + "properties": { + "resultFormat": { + "const": "ksadk.bridge-reconcile-result/v1", + "default": "ksadk.bridge-reconcile-result/v1", + "title": "Resultformat", + "type": "string" + }, + "inventory": { + "$ref": "#/$defs/EcosystemPluginInventory" + } + }, + "required": [ + "inventory" + ], + "title": "BridgeReconcileResult", + "type": "object" + }, + "BridgeRejection": { + "additionalProperties": false, + "properties": { + "rejectionFormat": { + "const": "ksadk.bridge-rejection/v1", + "default": "ksadk.bridge-rejection/v1", + "title": "Rejectionformat", + "type": "string" + }, + "action": { + "enum": [ + "describe", + "probe", + "inspect", + "plan", + "stage", + "commit", + "reconcile", + "rollback", + "dispose" + ], + "title": "Action", + "type": "string" + }, + "code": { + "enum": [ + "ambiguous_manifest", + "permissions_undeclared", + "host_unavailable", + "host_incompatible", + "digest_mismatch", + "unsupported" + ], + "title": "Code", + "type": "string" + }, + "retryable": { + "title": "Retryable", + "type": "boolean" + }, + "message": { + "maxLength": 1024, + "minLength": 1, + "title": "Message", + "type": "string" + }, + "host": { + "anyOf": [ + { + "$ref": "#/$defs/BridgeHostObservation" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "action", + "code", + "retryable", + "message" + ], + "title": "BridgeRejection", + "type": "object" + }, + "BridgeRollbackRequest": { + "additionalProperties": false, + "properties": { + "requestFormat": { + "const": "ksadk.bridge-rollback/v1", + "default": "ksadk.bridge-rollback/v1", + "title": "Requestformat", + "type": "string" + }, + "receiptId": { + "maxLength": 256, + "minLength": 1, + "title": "Receiptid", + "type": "string" + }, + "rollbackPointRef": { + "maxLength": 2048, + "minLength": 4, + "title": "Rollbackpointref", + "type": "string" + }, + "rollbackPointDigest": { + "title": "Rollbackpointdigest", + "type": "string" + }, + "expectedNativeReceiptDigest": { + "title": "Expectednativereceiptdigest", + "type": "string" + } + }, + "required": [ + "receiptId", + "rollbackPointRef", + "rollbackPointDigest", + "expectedNativeReceiptDigest" + ], + "title": "BridgeRollbackRequest", + "type": "object" + }, + "BridgeRollbackResult": { + "additionalProperties": false, + "properties": { + "resultFormat": { + "const": "ksadk.bridge-rollback-result/v1", + "default": "ksadk.bridge-rollback-result/v1", + "title": "Resultformat", + "type": "string" + }, + "receiptId": { + "maxLength": 256, + "minLength": 1, + "title": "Receiptid", + "type": "string" + }, + "state": { + "const": "rolled-back", + "title": "State", + "type": "string" + }, + "nativeReceiptRef": { + "maxLength": 2048, + "minLength": 4, + "title": "Nativereceiptref", + "type": "string" + }, + "nativeReceiptDigest": { + "title": "Nativereceiptdigest", + "type": "string" + }, + "rolledBackAt": { + "format": "date-time", + "title": "Rolledbackat", + "type": "string" + } + }, + "required": [ + "receiptId", + "state", + "nativeReceiptRef", + "nativeReceiptDigest", + "rolledBackAt" + ], + "title": "BridgeRollbackResult", + "type": "object" + }, + "BridgeStageRequest": { + "additionalProperties": false, + "properties": { + "requestFormat": { + "const": "ksadk.bridge-stage/v1", + "default": "ksadk.bridge-stage/v1", + "title": "Requestformat", + "type": "string" + }, + "plan": { + "$ref": "#/$defs/BridgeTransitionPlan" + }, + "expectedPlanDigest": { + "title": "Expectedplandigest", + "type": "string" + } + }, + "required": [ + "plan", + "expectedPlanDigest" + ], + "title": "BridgeStageRequest", + "type": "object" + }, + "BridgeStageResult": { + "additionalProperties": false, + "properties": { + "resultFormat": { + "const": "ksadk.bridge-stage-result/v1", + "default": "ksadk.bridge-stage-result/v1", + "title": "Resultformat", + "type": "string" + }, + "stageId": { + "maxLength": 256, + "minLength": 1, + "title": "Stageid", + "type": "string" + }, + "planId": { + "maxLength": 256, + "minLength": 1, + "title": "Planid", + "type": "string" + }, + "planDigest": { + "title": "Plandigest", + "type": "string" + }, + "bridgeVersion": { + "title": "Bridgeversion", + "type": "string" + }, + "bridgeDigest": { + "title": "Bridgedigest", + "type": "string" + }, + "host": { + "$ref": "#/$defs/BridgeHostObservation" + }, + "artifactDigest": { + "title": "Artifactdigest", + "type": "string" + }, + "manifestDigest": { + "title": "Manifestdigest", + "type": "string" + }, + "nativeStageRef": { + "maxLength": 2048, + "minLength": 4, + "title": "Nativestageref", + "type": "string" + }, + "nativeStageDigest": { + "title": "Nativestagedigest", + "type": "string" + }, + "stagedAt": { + "format": "date-time", + "title": "Stagedat", + "type": "string" + } + }, + "required": [ + "stageId", + "planId", + "planDigest", + "bridgeVersion", + "bridgeDigest", + "host", + "artifactDigest", + "manifestDigest", + "nativeStageRef", + "nativeStageDigest", + "stagedAt" + ], + "title": "BridgeStageResult", + "type": "object" + }, + "BridgeTransitionPlan": { + "additionalProperties": false, + "properties": { + "planFormat": { + "const": "ksadk.bridge-transition-plan/v1", + "default": "ksadk.bridge-transition-plan/v1", + "title": "Planformat", + "type": "string" + }, + "planId": { + "maxLength": 256, + "minLength": 1, + "title": "Planid", + "type": "string" + }, + "bridgeId": { + "maxLength": 128, + "minLength": 3, + "title": "Bridgeid", + "type": "string" + }, + "bridgeVersion": { + "title": "Bridgeversion", + "type": "string" + }, + "bridgeDigest": { + "title": "Bridgedigest", + "type": "string" + }, + "ecosystem": { + "enum": [ + "codex", + "dsh" + ], + "title": "Ecosystem", + "type": "string" + }, + "pluginId": { + "maxLength": 256, + "minLength": 2, + "title": "Pluginid", + "type": "string" + }, + "pluginVersion": { + "title": "Pluginversion", + "type": "string" + }, + "integrationMode": { + "enum": [ + "bridged", + "linked" + ], + "title": "Integrationmode", + "type": "string" + }, + "operation": { + "enum": [ + "install", + "update", + "enable", + "disable", + "uninstall" + ], + "title": "Operation", + "type": "string" + }, + "desiredState": { + "enum": [ + "disabled", + "enabled" + ], + "title": "Desiredstate", + "type": "string" + }, + "descriptorDigest": { + "title": "Descriptordigest", + "type": "string" + }, + "artifactDigest": { + "title": "Artifactdigest", + "type": "string" + }, + "manifestDigest": { + "title": "Manifestdigest", + "type": "string" + }, + "installPermissions": { + "default": [], + "items": { + "type": "string" + }, + "title": "Installpermissions", + "type": "array" + }, + "runtimePermissions": { + "default": [], + "items": { + "type": "string" + }, + "title": "Runtimepermissions", + "type": "array" + }, + "authScopes": { + "default": [], + "items": { + "type": "string" + }, + "title": "Authscopes", + "type": "array" + }, + "authorizationRef": { + "maxLength": 2048, + "minLength": 4, + "title": "Authorizationref", + "type": "string" + }, + "permissionsDeclared": { + "title": "Permissionsdeclared", + "type": "boolean" + }, + "undeclaredPermissionsAccepted": { + "default": false, + "title": "Undeclaredpermissionsaccepted", + "type": "boolean" + }, + "boundReferences": { + "default": [], + "items": { + "type": "string" + }, + "title": "Boundreferences", + "type": "array" + }, + "hostRequirement": { + "anyOf": [ + { + "$ref": "#/$defs/BridgeHostRequirement" + }, + { + "type": "null" + } + ] + }, + "rollbackPointRef": { + "anyOf": [ + { + "maxLength": 2048, + "minLength": 4, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Rollbackpointref" + }, + "rollbackPointDigest": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Rollbackpointdigest" + }, + "planDigest": { + "title": "Plandigest", + "type": "string" + }, + "createdAt": { + "format": "date-time", + "title": "Createdat", + "type": "string" + } + }, + "required": [ + "planId", + "bridgeId", + "bridgeVersion", + "bridgeDigest", + "ecosystem", + "pluginId", + "pluginVersion", + "integrationMode", + "operation", + "desiredState", + "descriptorDigest", + "artifactDigest", + "manifestDigest", + "authorizationRef", + "permissionsDeclared", + "hostRequirement", + "planDigest", + "createdAt" + ], + "title": "BridgeTransitionPlan", + "type": "object" + }, + "EcosystemInstallReceipt": { + "additionalProperties": false, + "properties": { + "receiptFormat": { + "const": "ksadk.ecosystem-install-receipt/v1", + "default": "ksadk.ecosystem-install-receipt/v1", + "title": "Receiptformat", + "type": "string" + }, + "receiptId": { + "maxLength": 256, + "minLength": 1, + "title": "Receiptid", + "type": "string" + }, + "planId": { + "maxLength": 256, + "minLength": 1, + "title": "Planid", + "type": "string" + }, + "planDigest": { + "title": "Plandigest", + "type": "string" + }, + "stageId": { + "maxLength": 256, + "minLength": 1, + "title": "Stageid", + "type": "string" + }, + "ecosystem": { + "enum": [ + "codex", + "dsh" + ], + "title": "Ecosystem", + "type": "string" + }, + "pluginId": { + "maxLength": 256, + "minLength": 2, + "title": "Pluginid", + "type": "string" + }, + "pluginVersion": { + "title": "Pluginversion", + "type": "string" + }, + "integrationMode": { + "enum": [ + "bridged", + "linked" + ], + "title": "Integrationmode", + "type": "string" + }, + "desiredState": { + "enum": [ + "disabled", + "enabled" + ], + "title": "Desiredstate", + "type": "string" + }, + "bridgeId": { + "maxLength": 128, + "minLength": 3, + "title": "Bridgeid", + "type": "string" + }, + "bridgeVersion": { + "title": "Bridgeversion", + "type": "string" + }, + "bridgeDigest": { + "title": "Bridgedigest", + "type": "string" + }, + "host": { + "$ref": "#/$defs/BridgeHostObservation" + }, + "artifactDigest": { + "title": "Artifactdigest", + "type": "string" + }, + "manifestDigest": { + "title": "Manifestdigest", + "type": "string" + }, + "nativeReceiptRef": { + "maxLength": 2048, + "minLength": 4, + "title": "Nativereceiptref", + "type": "string" + }, + "nativeReceiptDigest": { + "title": "Nativereceiptdigest", + "type": "string" + }, + "boundReferences": { + "default": [], + "items": { + "type": "string" + }, + "title": "Boundreferences", + "type": "array" + }, + "committedAt": { + "format": "date-time", + "title": "Committedat", + "type": "string" + } + }, + "required": [ + "receiptId", + "planId", + "planDigest", + "stageId", + "ecosystem", + "pluginId", + "pluginVersion", + "integrationMode", + "desiredState", + "bridgeId", + "bridgeVersion", + "bridgeDigest", + "host", + "artifactDigest", + "manifestDigest", + "nativeReceiptRef", + "nativeReceiptDigest", + "committedAt" + ], + "title": "EcosystemInstallReceipt", + "type": "object" + }, + "EcosystemPluginDescriptor": { + "additionalProperties": false, + "properties": { + "descriptorFormat": { + "const": "ksadk.ecosystem-plugin-descriptor/v1", + "default": "ksadk.ecosystem-plugin-descriptor/v1", + "title": "Descriptorformat", + "type": "string" + }, + "ecosystem": { + "enum": [ + "codex", + "dsh" + ], + "title": "Ecosystem", + "type": "string" + }, + "pluginId": { + "maxLength": 256, + "minLength": 2, + "title": "Pluginid", + "type": "string" + }, + "pluginVersion": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Pluginversion" + }, + "integrationMode": { + "enum": [ + "bridged", + "linked" + ], + "title": "Integrationmode", + "type": "string" + }, + "maturity": { + "enum": [ + "detected", + "linked-ready", + "bridged-ready", + "unsupported", + "experimental" + ], + "title": "Maturity", + "type": "string" + }, + "sourceRef": { + "maxLength": 4096, + "minLength": 4, + "title": "Sourceref", + "type": "string" + }, + "artifactDigest": { + "title": "Artifactdigest", + "type": "string" + }, + "manifestRef": { + "maxLength": 4096, + "minLength": 4, + "title": "Manifestref", + "type": "string" + }, + "manifestDigest": { + "title": "Manifestdigest", + "type": "string" + }, + "hostRequirement": { + "anyOf": [ + { + "$ref": "#/$defs/BridgeHostRequirement" + }, + { + "type": "null" + } + ] + }, + "permissionsDeclared": { + "title": "Permissionsdeclared", + "type": "boolean" + }, + "installPermissions": { + "default": [], + "items": { + "type": "string" + }, + "title": "Installpermissions", + "type": "array" + }, + "runtimePermissions": { + "default": [], + "items": { + "type": "string" + }, + "title": "Runtimepermissions", + "type": "array" + }, + "authScopes": { + "default": [], + "items": { + "type": "string" + }, + "title": "Authscopes", + "type": "array" + }, + "secretRefs": { + "default": [], + "items": { + "type": "string" + }, + "title": "Secretrefs", + "type": "array" + }, + "components": { + "default": [], + "items": { + "type": "string" + }, + "title": "Components", + "type": "array" + } + }, + "required": [ + "ecosystem", + "pluginId", + "integrationMode", + "maturity", + "sourceRef", + "artifactDigest", + "manifestRef", + "manifestDigest", + "hostRequirement", + "permissionsDeclared" + ], + "title": "EcosystemPluginDescriptor", + "type": "object" + }, + "EcosystemPluginInventory": { + "additionalProperties": false, + "properties": { + "inventoryFormat": { + "const": "ksadk.ecosystem-inventory/v1", + "default": "ksadk.ecosystem-inventory/v1", + "title": "Inventoryformat", + "type": "string" + }, + "receiptId": { + "maxLength": 256, + "minLength": 1, + "title": "Receiptid", + "type": "string" + }, + "ecosystem": { + "enum": [ + "codex", + "dsh" + ], + "title": "Ecosystem", + "type": "string" + }, + "pluginId": { + "maxLength": 256, + "minLength": 2, + "title": "Pluginid", + "type": "string" + }, + "pluginVersion": { + "title": "Pluginversion", + "type": "string" + }, + "integrationMode": { + "enum": [ + "bridged", + "linked" + ], + "title": "Integrationmode", + "type": "string" + }, + "desiredState": { + "enum": [ + "disabled", + "enabled" + ], + "title": "Desiredstate", + "type": "string" + }, + "observedState": { + "enum": [ + "resolved", + "admitted", + "staged", + "starting", + "ready", + "degraded", + "failed", + "draining", + "stopped", + "disposed", + "rejected" + ], + "title": "Observedstate", + "type": "string" + }, + "maturity": { + "enum": [ + "detected", + "linked-ready", + "bridged-ready", + "unsupported", + "experimental" + ], + "title": "Maturity", + "type": "string" + }, + "bridgeId": { + "maxLength": 128, + "minLength": 3, + "title": "Bridgeid", + "type": "string" + }, + "bridgeVersion": { + "title": "Bridgeversion", + "type": "string" + }, + "bridgeDigest": { + "title": "Bridgedigest", + "type": "string" + }, + "host": { + "anyOf": [ + { + "$ref": "#/$defs/BridgeHostObservation" + }, + { + "type": "null" + } + ] + }, + "artifactDigest": { + "title": "Artifactdigest", + "type": "string" + }, + "manifestDigest": { + "title": "Manifestdigest", + "type": "string" + }, + "nativeReceiptRef": { + "maxLength": 2048, + "minLength": 4, + "title": "Nativereceiptref", + "type": "string" + }, + "nativeReceiptDigest": { + "title": "Nativereceiptdigest", + "type": "string" + }, + "boundReferences": { + "default": [], + "items": { + "type": "string" + }, + "title": "Boundreferences", + "type": "array" + }, + "reasonCode": { + "anyOf": [ + { + "maxLength": 128, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Reasoncode" + }, + "reconciledAt": { + "format": "date-time", + "title": "Reconciledat", + "type": "string" + } + }, + "required": [ + "receiptId", + "ecosystem", + "pluginId", + "pluginVersion", + "integrationMode", + "desiredState", + "observedState", + "maturity", + "bridgeId", + "bridgeVersion", + "bridgeDigest", + "host", + "artifactDigest", + "manifestDigest", + "nativeReceiptRef", + "nativeReceiptDigest", + "reconciledAt" + ], + "title": "EcosystemPluginInventory", + "type": "object" + }, + "PluginEcosystemBridgeTranscript": { + "additionalProperties": false, + "properties": { + "fixtureKind": { + "const": "lifecycle", + "default": "lifecycle", + "title": "Fixturekind", + "type": "string" + }, + "contractFormat": { + "const": "ksadk.plugin-ecosystem-bridge/v1", + "default": "ksadk.plugin-ecosystem-bridge/v1", + "title": "Contractformat", + "type": "string" + }, + "describeRequest": { + "$ref": "#/$defs/BridgeDescribeRequest" + }, + "describeResult": { + "$ref": "#/$defs/BridgeDescribeResult" + }, + "probe": { + "$ref": "#/$defs/BridgeProbeExchange" + }, + "inspectRequest": { + "$ref": "#/$defs/BridgeInspectRequest" + }, + "inspectResult": { + "$ref": "#/$defs/BridgeInspectResult" + }, + "planRequest": { + "$ref": "#/$defs/BridgePlanRequest" + }, + "planResult": { + "$ref": "#/$defs/BridgePlanResult" + }, + "stageRequest": { + "$ref": "#/$defs/BridgeStageRequest" + }, + "stageResult": { + "$ref": "#/$defs/BridgeStageResult" + }, + "commitRequest": { + "$ref": "#/$defs/BridgeCommitRequest" + }, + "commitResult": { + "$ref": "#/$defs/BridgeCommitResult" + }, + "reconcileRequest": { + "$ref": "#/$defs/BridgeReconcileRequest" + }, + "reconcileResult": { + "$ref": "#/$defs/BridgeReconcileResult" + }, + "rollbackRequest": { + "$ref": "#/$defs/BridgeRollbackRequest" + }, + "rollbackResult": { + "$ref": "#/$defs/BridgeRollbackResult" + }, + "disposeRequest": { + "$ref": "#/$defs/BridgeDisposeRequest" + }, + "disposeResult": { + "$ref": "#/$defs/BridgeDisposeResult" + } + }, + "required": [ + "describeRequest", + "describeResult", + "probe", + "inspectRequest", + "inspectResult", + "planRequest", + "planResult", + "stageRequest", + "stageResult", + "commitRequest", + "commitResult", + "reconcileRequest", + "reconcileResult", + "rollbackRequest", + "rollbackResult", + "disposeRequest", + "disposeResult" + ], + "title": "PluginEcosystemBridgeTranscript", + "type": "object" + }, + "PluginManifestCandidate": { + "additionalProperties": false, + "properties": { + "ecosystem": { + "enum": [ + "codex", + "dsh" + ], + "title": "Ecosystem", + "type": "string" + }, + "integrationMode": { + "enum": [ + "bridged", + "linked" + ], + "title": "Integrationmode", + "type": "string" + }, + "maturity": { + "enum": [ + "detected", + "linked-ready", + "bridged-ready", + "unsupported", + "experimental" + ], + "title": "Maturity", + "type": "string" + }, + "manifestKind": { + "enum": [ + "codex-plugin", + "dsh-bundle" + ], + "title": "Manifestkind", + "type": "string" + }, + "manifestRef": { + "maxLength": 4096, + "minLength": 4, + "title": "Manifestref", + "type": "string" + }, + "manifestDigest": { + "title": "Manifestdigest", + "type": "string" + } + }, + "required": [ + "ecosystem", + "integrationMode", + "maturity", + "manifestKind", + "manifestRef", + "manifestDigest" + ], + "title": "PluginManifestCandidate", + "type": "object" + } + }, + "description": "Schema root shared by lifecycle, ambiguous-manifest and rejection goldens.", + "discriminator": { + "mapping": { + "lifecycle": "#/$defs/PluginEcosystemBridgeTranscript", + "probe": "#/$defs/BridgeProbeExchange", + "rejection": "#/$defs/BridgeInspectExchange" + }, + "propertyName": "fixtureKind" + }, + "oneOf": [ + { + "$ref": "#/$defs/PluginEcosystemBridgeTranscript" + }, + { + "$ref": "#/$defs/BridgeProbeExchange" + }, + { + "$ref": "#/$defs/BridgeInspectExchange" + } + ], + "title": "PluginEcosystemBridge/v1 conformance fixtures", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ksadk.local/contracts/plugin/v1/plugin-ecosystem-bridge.schema.json" +} diff --git a/contracts/plugin/v1/plugin-inventory.schema.json b/contracts/plugin/v1/plugin-inventory.schema.json new file mode 100644 index 00000000..8960727c --- /dev/null +++ b/contracts/plugin/v1/plugin-inventory.schema.json @@ -0,0 +1,30 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ksadk.local/contracts/plugin/v1/plugin-inventory.schema.json", + "title": "PluginInventory/v1", + "type": "object", + "additionalProperties": false, + "$defs": { + "item": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": {"type": "string", "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"}, + "version": {"type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$"}, + "digest": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"}, + "state": {"enum": ["resolved", "admitted", "staged", "starting", "ready", "degraded", "failed", "draining", "stopped", "disposed", "rejected"]}, + "health": {"enum": ["unknown", "healthy", "unhealthy"]}, + "reason": {"type": ["string", "null"], "maxLength": 1024} + }, + "required": ["id", "version", "digest", "state"] + } + }, + "properties": { + "apiVersion": {"const": "plugin.ksadk.io/v1"}, + "kind": {"const": "PluginInventory"}, + "profileDigest": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"}, + "pluginLockDigest": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"}, + "plugins": {"type": "array", "items": {"$ref": "#/$defs/item"}} + }, + "required": ["apiVersion", "kind", "profileDigest", "pluginLockDigest", "plugins"] +} diff --git a/contracts/plugin/v1/plugin-lock.schema.json b/contracts/plugin/v1/plugin-lock.schema.json new file mode 100644 index 00000000..aea55bfd --- /dev/null +++ b/contracts/plugin/v1/plugin-lock.schema.json @@ -0,0 +1,49 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ksadk.local/contracts/plugin/v1/plugin-lock.schema.json", + "title": "PluginLock/v1", + "type": "object", + "additionalProperties": false, + "$defs": { + "capability": { + "type": "object", + "additionalProperties": false, + "properties": { + "definition": {"type": "string", "pattern": "^[a-z][a-z0-9._-]*/v[1-9][0-9]*$"}, + "slot": {"type": "string", "minLength": 3}, + "owner": {"type": "string", "minLength": 3} + }, + "required": ["definition", "slot", "owner"] + }, + "dependency": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": {"type": "string", "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"}, + "version": {"type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$"}, + "digest": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"} + }, + "required": ["id", "version", "digest"] + }, + "entry": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": {"type": "string", "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"}, + "version": {"type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$"}, + "digest": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"}, + "source": {"enum": ["builtin", "registry", "local", "market", "runtime-native"]}, + "signatureRef": {"type": ["string", "null"]}, + "license": {"type": ["string", "null"]}, + "provides": {"type": "array", "items": {"$ref": "#/$defs/capability"}}, + "dependencies": {"type": "array", "items": {"$ref": "#/$defs/dependency"}} + }, + "required": ["id", "version", "digest", "source"] + } + }, + "properties": { + "lockFormat": {"const": "agentkit.plugin-lock/v1"}, + "plugins": {"type": "array", "items": {"$ref": "#/$defs/entry"}} + }, + "required": ["lockFormat", "plugins"] +} diff --git a/contracts/plugin/v1/subagent-provider.schema.json b/contracts/plugin/v1/subagent-provider.schema.json new file mode 100644 index 00000000..95977357 --- /dev/null +++ b/contracts/plugin/v1/subagent-provider.schema.json @@ -0,0 +1,222 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ksadk.local/contracts/plugin/v1/subagent-provider.schema.json", + "title": "SubagentProvider/v1 conformance transcript", + "type": "object", + "additionalProperties": false, + "$defs": { + "pluginReference": { + "type": "string", + "pattern": "^plugin://[a-z0-9]+(?:[._-][a-z0-9]+)*@\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$" + }, + "digest": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "timestamp": { + "type": "string", + "format": "date-time", + "pattern": "(?:Z|[+-][0-9]{2}:[0-9]{2})$" + }, + "policy": { + "type": "object", + "additionalProperties": false, + "properties": { + "maxDepth": {"type": "integer", "minimum": 1, "maximum": 16}, + "timeoutSeconds": {"type": "integer", "minimum": 1, "maximum": 86400}, + "maxSteps": {"type": "integer", "minimum": 1, "maximum": 10000}, + "background": {"type": "boolean"}, + "allowedTools": { + "type": "array", + "items": {"type": "string", "minLength": 1}, + "uniqueItems": true + }, + "allowedPermissions": { + "type": "array", + "items": {"type": "string", "minLength": 1}, + "uniqueItems": true + } + }, + "required": [ + "maxDepth", + "timeoutSeconds", + "maxSteps", + "background", + "allowedTools", + "allowedPermissions" + ] + }, + "spawnRequest": { + "type": "object", + "additionalProperties": false, + "properties": { + "requestFormat": {"const": "ksadk.subagent-spawn/v1"}, + "providerRef": {"$ref": "#/$defs/pluginReference"}, + "parentSessionId": {"type": "string", "minLength": 1, "maxLength": 256}, + "parentRunId": {"type": "string", "minLength": 1, "maxLength": 256}, + "task": {"type": "string", "minLength": 1, "maxLength": 131072}, + "depth": {"type": "integer", "minimum": 1, "maximum": 16}, + "policy": {"$ref": "#/$defs/policy"}, + "metadata": {"type": "object"} + }, + "required": [ + "requestFormat", + "providerRef", + "parentSessionId", + "parentRunId", + "task", + "depth", + "policy", + "metadata" + ] + }, + "childHandle": { + "type": "object", + "additionalProperties": false, + "properties": { + "handleFormat": {"const": "ksadk.child-handle/v1"}, + "handleId": {"type": "string", "minLength": 1, "maxLength": 256}, + "providerRef": {"$ref": "#/$defs/pluginReference"}, + "parentSessionId": {"type": "string", "minLength": 1, "maxLength": 256}, + "parentRunId": {"type": "string", "minLength": 1, "maxLength": 256}, + "childSessionId": { + "type": ["string", "null"], + "minLength": 1, + "maxLength": 256 + }, + "childRunId": { + "type": ["string", "null"], + "minLength": 1, + "maxLength": 256 + }, + "depth": {"type": "integer", "minimum": 1, "maximum": 16}, + "capabilities": { + "type": "array", + "items": {"type": "string", "minLength": 1}, + "uniqueItems": true + }, + "capabilityDigest": {"$ref": "#/$defs/digest"}, + "createdAt": {"$ref": "#/$defs/timestamp"}, + "resumable": {"type": "boolean"}, + "resumeDescriptor": {"type": ["object", "null"]} + }, + "required": [ + "handleFormat", + "handleId", + "providerRef", + "parentSessionId", + "parentRunId", + "childSessionId", + "childRunId", + "depth", + "capabilities", + "capabilityDigest", + "createdAt", + "resumable", + "resumeDescriptor" + ], + "allOf": [ + { + "if": {"properties": {"resumable": {"const": true}}}, + "then": {"properties": {"resumeDescriptor": {"type": "object", "minProperties": 1}}}, + "else": {"properties": {"resumeDescriptor": {"type": "null"}}} + } + ] + }, + "status": { + "type": "object", + "additionalProperties": false, + "properties": { + "statusFormat": {"const": "ksadk.subagent-status/v1"}, + "handleId": {"type": "string", "minLength": 1, "maxLength": 256}, + "state": { + "enum": [ + "accepted", + "running", + "waiting_input", + "succeeded", + "failed", + "cancelled", + "interrupted", + "disposed" + ] + }, + "lastSeq": {"type": "integer", "minimum": 0}, + "updatedAt": {"$ref": "#/$defs/timestamp"}, + "reason": {"type": ["string", "null"], "maxLength": 2048} + }, + "required": ["statusFormat", "handleId", "state", "lastSeq", "updatedAt", "reason"] + }, + "event": { + "type": "object", + "additionalProperties": false, + "properties": { + "eventFormat": {"const": "ksadk.subagent-event/v1"}, + "handleId": {"type": "string", "minLength": 1, "maxLength": 256}, + "eventId": {"type": "string", "minLength": 1, "maxLength": 256}, + "seq": {"type": "integer", "minimum": 1}, + "kind": {"enum": ["progress", "item", "interaction", "terminal"]}, + "payload": {"type": "object"}, + "nativeRef": { + "type": "object", + "additionalProperties": {"type": "string"} + } + }, + "required": ["eventFormat", "handleId", "eventId", "seq", "kind", "payload", "nativeRef"] + }, + "result": { + "type": "object", + "additionalProperties": false, + "properties": { + "resultFormat": {"const": "ksadk.subagent-result/v1"}, + "handleId": {"type": "string", "minLength": 1, "maxLength": 256}, + "state": {"enum": ["succeeded", "failed", "cancelled", "interrupted"]}, + "output": true, + "outputRefs": { + "type": "array", + "items": {"type": "string", "minLength": 1}, + "uniqueItems": true + }, + "errorCode": {"type": ["string", "null"], "maxLength": 256}, + "errorMessage": {"type": ["string", "null"], "maxLength": 2048} + }, + "required": [ + "resultFormat", + "handleId", + "state", + "output", + "outputRefs", + "errorCode", + "errorMessage" + ], + "allOf": [ + { + "if": {"properties": {"state": {"const": "failed"}}}, + "then": {"properties": {"errorCode": {"type": "string", "minLength": 1}}} + }, + { + "if": {"properties": {"state": {"const": "succeeded"}}}, + "then": { + "properties": { + "errorCode": {"type": "null"}, + "errorMessage": {"type": "null"} + } + } + } + ] + } + }, + "properties": { + "contractFormat": {"const": "ksadk.subagent-provider/v1"}, + "request": {"$ref": "#/$defs/spawnRequest"}, + "handle": {"$ref": "#/$defs/childHandle"}, + "status": {"$ref": "#/$defs/status"}, + "events": { + "type": "array", + "minItems": 1, + "items": {"$ref": "#/$defs/event"} + }, + "result": {"$ref": "#/$defs/result"} + }, + "required": ["contractFormat", "request", "handle", "status", "events", "result"] +} diff --git a/contracts/scheduler/v1/fixtures/schedule-occurrence.json b/contracts/scheduler/v1/fixtures/schedule-occurrence.json new file mode 100644 index 00000000..2569fc83 --- /dev/null +++ b/contracts/scheduler/v1/fixtures/schedule-occurrence.json @@ -0,0 +1,26 @@ +{ + "apiVersion": "schedule.ksadk.io/v1", + "kind": "ScheduleOccurrence", + "schemaVersion": 1, + "occurrenceId": "occ_28c3c25c58816431", + "taskId": "daily-report", + "target": { + "agentId": "sales-report-agent", + "tenantId": "local", + "agentInstanceId": "agent-local", + "agentVersionRef": "build_123", + "authorizationRef": "credential://scheduler-local" + }, + "scheduledFor": "2026-08-28T01:00:00Z", + "sessionId": "sched-occ_28c3c25c58816431", + "trigger": "schedule", + "state": "accepted", + "attempt": 1, + "commandId": "d2b1ad80-7ba8-45e1-91c0-aa94f87b309f", + "claimedAt": "2026-08-28T01:00:00Z", + "acceptedAt": "2026-08-28T01:00:01Z", + "transitions": [ + {"state": "claimed", "at": "2026-08-28T01:00:00Z"}, + {"state": "accepted", "at": "2026-08-28T01:00:01Z"} + ] +} diff --git a/contracts/scheduler/v1/fixtures/scheduled-task.json b/contracts/scheduler/v1/fixtures/scheduled-task.json new file mode 100644 index 00000000..e8e0c9e0 --- /dev/null +++ b/contracts/scheduler/v1/fixtures/scheduled-task.json @@ -0,0 +1,30 @@ +{ + "apiVersion": "schedule.ksadk.io/v1", + "kind": "ScheduledTask", + "schemaVersion": 1, + "taskId": "daily-report", + "displayName": "工作日销售日报", + "target": { + "agentId": "sales-report-agent", + "tenantId": "local", + "agentInstanceId": "agent-local", + "agentVersionRef": "build_123", + "authorizationRef": "credential://scheduler-local" + }, + "schedule": { + "kind": "cron", + "timezone": "Asia/Shanghai", + "expression": "0 9 * * 1-5", + "misfirePolicy": "run_once" + }, + "command": { + "commandType": "enqueue", + "payload": {"content": "生成昨日运行摘要"} + }, + "enabled": true, + "continuity": "new_session", + "concurrencyPolicy": "forbid", + "nextRunAt": "2026-08-28T01:00:00Z", + "createdAt": "2026-08-27T00:00:00Z", + "updatedAt": "2026-08-27T00:00:00Z" +} diff --git a/contracts/scheduler/v1/manifest.json b/contracts/scheduler/v1/manifest.json new file mode 100644 index 00000000..0cf6e233 --- /dev/null +++ b/contracts/scheduler/v1/manifest.json @@ -0,0 +1,28 @@ +{ + "contract_set": "scheduler/v1", + "digest_algorithm": "sha256", + "canonicalization": "utf-8; json key sort; no whitespace; lf; path-sorted", + "aggregate_digest": "c2f0bd1f3618d46b736770f51c735dbea18191c53745d96b8ad7de39845acaa7", + "files": [ + { + "path": "fixtures/schedule-occurrence.json", + "sha256": "d3154a883e3f36e2e04a390c905b48719e2482078979b900bcda4de210de100e", + "bytes": 684 + }, + { + "path": "fixtures/scheduled-task.json", + "sha256": "49aa0861f15b8ed05c1a874d74ddcbad78477999da32bcc39f1a2f41cf09d2a1", + "bytes": 682 + }, + { + "path": "schedule-occurrence.schema.json", + "sha256": "c7e0c9771bdcee29c7d113f6accbe9c0ec39cbe3d8df2ecbe017cac8299f1ec0", + "bytes": 2536 + }, + { + "path": "scheduled-task.schema.json", + "sha256": "8395d4d9519831b278ca0c7181c9c64bc923fac98d00a58a4d55843a47e696b9", + "bytes": 2153 + } + ] +} diff --git a/contracts/scheduler/v1/schedule-occurrence.schema.json b/contracts/scheduler/v1/schedule-occurrence.schema.json new file mode 100644 index 00000000..9c961c29 --- /dev/null +++ b/contracts/scheduler/v1/schedule-occurrence.schema.json @@ -0,0 +1,59 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ksadk.local/contracts/scheduler/v1/schedule-occurrence.schema.json", + "title": "ScheduleOccurrence/v1", + "type": "object", + "additionalProperties": false, + "$defs": { + "timestamp": {"type": "string", "format": "date-time"}, + "target": { + "type": "object", + "additionalProperties": false, + "properties": { + "agentId": {"type": ["string", "null"], "minLength": 1, "maxLength": 256}, + "tenantId": {"type": "string", "minLength": 1, "maxLength": 256}, + "agentInstanceId": {"type": "string", "minLength": 1, "maxLength": 256}, + "agentVersionRef": {"type": ["string", "null"], "minLength": 1, "maxLength": 256}, + "sessionId": {"type": ["string", "null"], "minLength": 1, "maxLength": 256}, + "authorizationRef": {"type": "string", "minLength": 1, "maxLength": 512} + }, + "required": ["tenantId", "agentInstanceId", "authorizationRef"] + }, + "transition": { + "type": "object", + "additionalProperties": false, + "properties": { + "state": {"enum": ["claimed", "accepted", "running", "succeeded", "failed", "skipped", "cancelled"]}, + "at": {"$ref": "#/$defs/timestamp"}, + "detail": {"type": ["string", "null"], "maxLength": 1024}, + "errorCode": {"type": ["string", "null"], "maxLength": 128} + }, + "required": ["state", "at"] + } + }, + "properties": { + "apiVersion": {"const": "schedule.ksadk.io/v1"}, + "kind": {"const": "ScheduleOccurrence"}, + "schemaVersion": {"const": 1}, + "occurrenceId": {"type": "string", "minLength": 8, "maxLength": 256}, + "taskId": {"type": "string", "pattern": "^[a-z][a-z0-9-]{2,62}$"}, + "target": {"anyOf": [{"$ref": "#/$defs/target"}, {"type": "null"}]}, + "scheduledFor": {"type": "string", "format": "date-time"}, + "sessionId": {"type": "string", "minLength": 1, "maxLength": 256}, + "trigger": {"enum": ["schedule", "manual"]}, + "state": {"enum": ["claimed", "accepted", "running", "succeeded", "failed", "skipped", "cancelled"]}, + "attempt": {"type": "integer", "minimum": 1, "maximum": 100}, + "commandId": {"type": ["string", "null"]}, + "acceptedSeq": {"type": ["integer", "null"], "minimum": 0}, + "lastEventSeq": {"type": ["integer", "null"], "minimum": 0}, + "runId": {"type": ["string", "null"], "minLength": 1, "maxLength": 256}, + "claimedAt": {"anyOf": [{"$ref": "#/$defs/timestamp"}, {"type": "null"}]}, + "acceptedAt": {"anyOf": [{"$ref": "#/$defs/timestamp"}, {"type": "null"}]}, + "startedAt": {"anyOf": [{"$ref": "#/$defs/timestamp"}, {"type": "null"}]}, + "errorCode": {"type": ["string", "null"], "maxLength": 128}, + "detail": {"type": ["string", "null"], "maxLength": 1024}, + "completedAt": {"type": ["string", "null"], "format": "date-time"}, + "transitions": {"type": "array", "items": {"$ref": "#/$defs/transition"}} + }, + "required": ["apiVersion", "kind", "schemaVersion", "occurrenceId", "taskId", "scheduledFor", "sessionId", "state"] +} diff --git a/contracts/scheduler/v1/scheduled-task.schema.json b/contracts/scheduler/v1/scheduled-task.schema.json new file mode 100644 index 00000000..0868956e --- /dev/null +++ b/contracts/scheduler/v1/scheduled-task.schema.json @@ -0,0 +1,63 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://ksadk.local/contracts/scheduler/v1/scheduled-task.schema.json", + "title": "ScheduledTask/v1", + "type": "object", + "additionalProperties": false, + "$defs": { + "timestamp": {"type": "string", "format": "date-time"}, + "target": { + "type": "object", + "additionalProperties": false, + "properties": { + "agentId": {"type": ["string", "null"], "minLength": 1, "maxLength": 256}, + "tenantId": {"type": "string", "minLength": 1, "maxLength": 256}, + "agentInstanceId": {"type": "string", "minLength": 1, "maxLength": 256}, + "agentVersionRef": {"type": ["string", "null"], "minLength": 1, "maxLength": 256}, + "sessionId": {"type": ["string", "null"], "minLength": 1, "maxLength": 256}, + "authorizationRef": {"type": "string", "minLength": 1, "maxLength": 512} + }, + "required": ["tenantId", "agentInstanceId", "authorizationRef"] + }, + "schedule": { + "type": "object", + "additionalProperties": false, + "properties": { + "kind": {"enum": ["once", "interval", "cron"]}, + "timezone": {"type": "string", "minLength": 1}, + "at": {"$ref": "#/$defs/timestamp"}, + "everySeconds": {"type": "integer", "minimum": 60, "maximum": 31536000}, + "anchorAt": {"$ref": "#/$defs/timestamp"}, + "expression": {"type": "string", "minLength": 9, "maxLength": 128}, + "misfirePolicy": {"enum": ["skip", "run_once"]} + }, + "required": ["kind"] + }, + "command": { + "type": "object", + "additionalProperties": false, + "properties": { + "commandType": {"const": "enqueue"}, + "payload": {"type": "object", "required": ["content"]} + }, + "required": ["commandType", "payload"] + } + }, + "properties": { + "apiVersion": {"const": "schedule.ksadk.io/v1"}, + "kind": {"const": "ScheduledTask"}, + "schemaVersion": {"const": 1}, + "taskId": {"type": "string", "pattern": "^[a-z][a-z0-9-]{2,62}$"}, + "displayName": {"type": ["string", "null"], "minLength": 1, "maxLength": 128}, + "target": {"$ref": "#/$defs/target"}, + "schedule": {"$ref": "#/$defs/schedule"}, + "command": {"$ref": "#/$defs/command"}, + "enabled": {"type": "boolean"}, + "continuity": {"enum": ["new_session", "continue_session"]}, + "concurrencyPolicy": {"const": "forbid"}, + "nextRunAt": {"anyOf": [{"$ref": "#/$defs/timestamp"}, {"type": "null"}]}, + "createdAt": {"$ref": "#/$defs/timestamp"}, + "updatedAt": {"$ref": "#/$defs/timestamp"} + }, + "required": ["apiVersion", "kind", "schemaVersion", "taskId", "target", "schedule", "command"] +} diff --git a/docs-site/content/docs/framework/guides/meta.json b/docs-site/content/docs/framework/guides/meta.json index 65b3e5fc..3589d3b7 100644 --- a/docs-site/content/docs/framework/guides/meta.json +++ b/docs-site/content/docs/framework/guides/meta.json @@ -7,6 +7,7 @@ "agentkit-local-studio", "evaluation-observability", "hosted-ui-events", + "plugins-and-automations", "agent-context", "attachments-multimodal", "workspace-files", diff --git a/docs-site/content/docs/framework/guides/plugins-and-automations.en.mdx b/docs-site/content/docs/framework/guides/plugins-and-automations.en.mdx new file mode 100644 index 00000000..c2abe85a --- /dev/null +++ b/docs-site/content/docs/framework/guides/plugins-and-automations.en.mdx @@ -0,0 +1,132 @@ +--- +title: Plugins and automations +status: experimental +--- + +Phase 2 adds local-first plugin lifecycle operations, ecosystem host bridges, Scheduler Lite, and a shared conversation surface. These features are still behind unreleased gates. Released Agents and precisely identified historical Bundles remain on their original paths and do not require a Runtime rebuild or upgrade. + +Studio and Hosted UI pin the versioned Conversation v1 headless module from +`@kingsoftcloud/ksadk-web@0.3.3`. Candidate source, independent browser, and +deployed two-turn checks for both a new and a historical Agent are green; +the stable release still requires a rebuild from the public npm artifact and +the final artifact audit. + + + This page is not a stable-release announcement. Cloud PluginHost, cloud 24x7 scheduling, the P2-06 DSH Codex Bundle/child Provider, Claude Code, and game-plugin execution are outside the current support claim. One passing reference DSH AgentProvider E2E does not make arbitrary third-party Providers supported. + + +## Choose an integration mode + +| Mode | Owner | Current use | +| --- | --- | --- | +| `dsh` | DeepSeek Harness / Cordis | Default plugin format; Bundles may contribute AgentProviders, tools, renderers, and Studio slots | +| `codex` | Codex App Server | Preserve the native host and permission semantics of official Codex plugins | +| `linked` | External host | Discovery or navigation only; it must not appear installed and executable | + +KsADK does not define a third private package, manifest, or ABI. Plugins do not change Kernel contracts: a new Runtime is a coarse-grained AgentProvider in a standard DSH Bundle, while Codex plugins stay under App Server ownership. + +## Develop a DSH Bundle + +Developers do not need a DeepSeek Harness source checkout or local build. Install the pinned, managed DSH CLI from public npm, then create, validate, test, and pack a standard DSH Bundle: + +```bash title="shell" +agentengine plugin toolchain status +agentengine plugin toolchain install +agentengine plugin create ./my-provider --name @example/my-provider +agentengine plugin validate ./my-provider +agentengine plugin test ./my-provider +agentengine plugin pack ./my-provider --output-dir ./artifacts +``` + +The generated project is an ordinary npm package using DSH `dsh.bundle.patch` and Cordis composition; it does not contain `ksadk-plugin.yaml`. `validate` and `test` exercise install, projection, disable, enable, and uninstall in a temporary Profile. `pack` uses the pinned pnpm toolchain and npm `files` semantics to produce a `.tgz`. + +Install the packed Bundle into an isolated Profile and use the same DSH lifecycle commands: + +```bash title="shell" +agentengine plugin install ./artifacts/example-my-provider-0.1.0.tgz \ + --accept-host-permissions +agentengine plugin disable @example/my-provider +agentengine plugin enable @example/my-provider +agentengine plugin uninstall @example/my-provider +``` + +The release gate installs the pinned DSH toolchain from public npm and validates a generated Bundle, its `.tgz`, and the package-format and installation boundary of the official Codex subagent package: + +```bash title="shell" +KSADK_DSH_TOOLCHAIN_E2E=1 \ +uv run --extra all pytest -q tests/e2e/test_dsh_managed_toolchain_e2e.py +``` + +This check does not claim that the P2-06 DSH Codex Bundle/child Provider execution path is complete. A separate real external Node AgentProvider runs install, two stateful turns, disable, a broken update with rollback, re-enable of the old executable package, and uninstall in one managed Profile. + +A local DSH source build may differ when it contains unreleased changes. Normal plugin development, CI, and publishing always use the pinned npm version as the compatibility baseline. Only DSH core contributors validating the next release should set `KSADK_DSH_BIN` explicitly; a version mismatch fails closed. KsADK wraps the official commands and does not copy the DSH compiler. + +## Manage Codex plugins + +Codex App Server owns plugin discovery, installation state, and uninstall operations. KsADK calls the host protocol and does not interpret or execute plugin code: + +```bash title="shell" +agentengine plugin codex list +agentengine plugin codex info +agentengine plugin codex install --accept-host-permissions +agentengine plugin codex uninstall +``` + +The bridge returns a typed unavailable error when Codex App Server is missing. Installation confirms that the plugin runs with the current system user's host permissions; plugin authentication remains in Codex. + +## Manage a DSH Profile + +An isolated DeepSeek Harness Profile owns DSH plugins. Install, enable/disable, update, and uninstall operations call managed native `dsh plugin`; each mutation runs host configuration preflight. A directory or `.tgz` is frozen into a SHA-256-addressed immutable source. Digest drift fails closed before enable, update, or projection, and a failed update restores the old manifest, lock, state, and executable package: + +```bash title="shell" +export KSADK_DSH_HOME=/path/to/isolated/dsh-home +export KSADK_DSH_PROFILE=studio + +agentengine plugin list +agentengine plugin install --accept-host-permissions +agentengine plugin disable +agentengine plugin enable +agentengine plugin profile +agentengine plugin uninstall +``` + +`agentengine plugin dsh ...` remains only as a compatibility alias for early scripts. + +A DSH bundle may run install scripts, so host permissions require explicit confirmation. An AgentProvider appears in the Runtime selector only after handshake, permission, conversation-projection, and execution conformance pass. + +## Create a local scheduled task + +Studio's **Automations** page supports once, interval, and cron schedules with IANA timezones. A task can be enabled, disabled, edited, deleted, or run immediately; its detail view shows the next run and occurrence history. The **Automations** tab on an Agent detail page scopes both listing and creation to that Agent. + +| Capability | Current behavior | +| --- | --- | +| Storage | Workspace-local SQLite | +| Trigger | Scheduler Lite inside the local Studio process | +| Continuity | New session, or continuation after explicitly binding an existing session | +| Concurrency | Overlapping executions of one task are forbidden | +| Misfire | `skip` or `run_once` | +| History | Accepted state, run identity, terminal state, and errors are retained | + + + Stopping Studio stops 24x7 wakeups. A cloud ScheduleStore, independent scheduler workers, and cross-Pod claims belong to a later cloud-projection phase. + + +## Integrate the conversation surface + +`ConversationSurface` advertises accepted inputs, `ConversationInput` submits only allowed fields, and `ConversationItem` represents text, reasoning, tools, approvals, A2UI, and unknown output. Studio, Hosted UI, and custom clients merge live and replayed data with the same item identity. + +The core renderer provides a generic fallback. Provider-specific UI uses a controlled Renderer or A2UI surface. Unknown items remain visible and non-interactive: clients must not drop them or turn unrecognized data into an action. An approval item is writable only when it carries a durable revision; clients keep an item read-only when revision is missing. + +The surface becomes stable and writable only after the shared Web package, Studio, Hosted UI, and independent-client browser E2E gates pass. + +## Compatibility and release gates + +| Area | Current boundary | +| --- | --- | +| Existing Agents | The real 0.8.2 LangGraph Bundle v2 and older framework Bundles stay on the old Runtime path. A historical Harness enters the legacy adapter only when its exact source digest is explicitly registered; unknown v1 Bundles fail closed | +| New Harness v2 | A ready DSH registration is mandatory; missing registration fails closed and never falls back to the legacy adapter | +| Local storage | SQLite or memory remains available without PostgreSQL; high availability is not implied | +| Third-party ecosystems | Claude Code, games, and arbitrary capabilities must use a standard DSH Bundle or native Codex App Server ownership and pass conformance | +| Stable release | DSH, conversation browser, existing-Agent, clean-provenance, and public artifact audits in `make phase2-release-preflight` must all pass | + +A game extension can use one DSH Bundle to combine Tool, Store, Renderer/A2UI, and Studio slots, or contribute a dedicated AgentProvider for a complete game loop. It does not change the Kernel protocol and is not marked supported before permission, lifecycle, conversation-projection, and rollback tests pass. diff --git a/docs-site/content/docs/framework/guides/plugins-and-automations.mdx b/docs-site/content/docs/framework/guides/plugins-and-automations.mdx new file mode 100644 index 00000000..fb0bf31b --- /dev/null +++ b/docs-site/content/docs/framework/guides/plugins-and-automations.mdx @@ -0,0 +1,130 @@ +--- +title: 插件与自动化 +status: experimental +--- + +Phase 2 提供本地优先的插件生命周期、生态宿主桥接、Scheduler Lite 和统一会话表面。当前能力仍处于未发布门禁阶段;已发布 Agent 和精确识别的历史 Bundle 继续使用原路径,不要求重建或升级 Runtime。 + +Studio 与 Hosted UI 固定使用 `@kingsoftcloud/ksadk-web@0.3.3` 的版本化 +Conversation v1 headless 模块。候选源码、独立浏览器及真实部署的新/历史 Agent +两轮会话已经验证;正式发布仍要求从公开 npm 制品重建并通过最终制品审计。 + + + 本页不代表稳定版已经发布。云端 PluginHost、云端 24×7 调度、P2-06 DSH Codex Bundle/child Provider、Claude Code 和游戏插件执行均不在当前支持声明中。一个参考 DSH AgentProvider 的 E2E 通过不等于任意第三方 Provider 自动受支持。 + + +## 选择接入方式 + +| 方式 | 所有者 | 当前用途 | +| --- | --- | --- | +| `dsh` | DeepSeek Harness / Cordis | 默认插件格式;Bundle 可贡献 AgentProvider、Tool、Renderer 和 Studio slot | +| `codex` | Codex App Server | 兼容 Codex 官方插件,并保留 Codex 的原生宿主与权限语义 | +| `linked` | 外部宿主 | 只发现或跳转,不能显示为已安装可执行 | + +KsADK 不定义第三种私有插件包、manifest 或 ABI。插件不会修改 Kernel 合同;新增 Runtime 由标准 DSH Bundle 贡献粗粒度 AgentProvider,Codex 插件继续由 App Server 管理。 + +## 开发 DSH Bundle + +开发者不需要检出或编译 DeepSeek Harness 源码。先从公网 npm 安装 KsADK 固定版本的受管理 DSH CLI,再创建、校验、测试和打包标准 DSH Bundle: + +```bash title="shell" +agentengine plugin toolchain status +agentengine plugin toolchain install +agentengine plugin create ./my-provider --name @example/my-provider +agentengine plugin validate ./my-provider +agentengine plugin test ./my-provider +agentengine plugin pack ./my-provider --output-dir ./artifacts +``` + +生成目录是普通 npm 包,使用 DSH 的 `dsh.bundle.patch` / Cordis 组合格式,不包含 `ksadk-plugin.yaml`。`validate` 和 `test` 会在临时 Profile 中验证安装、投射、停用、启用和卸载;`pack` 使用固定 pnpm 按 npm `files` 语义生成 `.tgz`。 + +把 Bundle 安装到隔离 Profile 后,可以通过同一套 DSH 生命周期命令管理: + +```bash title="shell" +agentengine plugin install ./artifacts/example-my-provider-0.1.0.tgz \ + --accept-host-permissions +agentengine plugin disable @example/my-provider +agentengine plugin enable @example/my-provider +agentengine plugin uninstall @example/my-provider +``` + +发布门禁会从公网 npm 安装固定 DSH 工具链,并验证生成 Bundle、`.tgz`,以及官方 Codex subagent 包的格式和安装边界: + +```bash title="shell" +KSADK_DSH_TOOLCHAIN_E2E=1 \ +uv run --extra all pytest -q tests/e2e/test_dsh_managed_toolchain_e2e.py +``` + +这项校验不代表 P2-06 的 DSH Codex Bundle/child Provider 执行链已经完成。另一个真实仓外 Node AgentProvider 会在受管 Profile 中完成安装、连续两轮、停用、损坏升级失败回滚、重新启用旧包继续执行和卸载。 + +本地 DSH 源码若包含尚未发布的改动,编译结果可能与 npm 包不同。普通插件开发、CI 与发布始终以固定 npm 版本为兼容基线;只有 DSH 核心开发者验证下一版时才显式设置 `KSADK_DSH_BIN`,且版本不匹配会 fail closed。KsADK 只是包装官方命令,不复制 DSH 编译器。 + +## 管理 Codex 插件 + +Codex 插件的目录、安装状态和卸载由 Codex App Server 管理。KsADK 只调用宿主协议,不解释执行插件代码,也不会把 `.codex-plugin/plugin.json` 转换成 `ksadk-plugin.yaml`: + +```bash title="shell" +agentengine plugin codex list +agentengine plugin codex info +agentengine plugin codex install --accept-host-permissions +agentengine plugin codex uninstall +``` + +缺少 Codex App Server 时返回明确的 unavailable 错误。安装确认表示插件按当前系统用户的宿主权限运行;插件自己的认证仍在 Codex 中完成。 + +## 管理 DSH Profile + +DSH 插件由隔离的 DeepSeek Harness Profile 管理。安装、启停、升级和卸载均调用受管理的原生 `dsh plugin`,修改后通过宿主配置预检。目录或 `.tgz` 会按 SHA-256 固化为不可变安装源;启用、更新或投影前发现摘要漂移会 fail closed,失败升级会恢复旧 manifest、lock、状态与可执行旧包: + +```bash title="shell" +export KSADK_DSH_HOME=/path/to/isolated/dsh-home +export KSADK_DSH_PROFILE=studio + +agentengine plugin list +agentengine plugin install --accept-host-permissions +agentengine plugin disable +agentengine plugin enable +agentengine plugin profile +agentengine plugin uninstall +``` + +`agentengine plugin dsh ...` 只保留为早期脚本兼容别名。 + +DSH bundle 可能运行安装脚本,必须显式确认宿主权限。只有通过握手、权限、会话投影与执行 conformance 的 AgentProvider 才能出现在 Runtime 选择器中。 + +## 创建本地定时任务 + +Studio 的 **自动化** 页面支持 once、interval 和 cron,并使用 IANA 时区。任务可以启停、编辑、删除、立即运行;详情页显示下次运行时间和 occurrence 状态历史。Agent 详情页的 **自动化** Tab 只展示并创建当前 Agent 的任务。 + +| 能力 | 当前行为 | +| --- | --- | +| 存储 | 工作区本地 SQLite | +| 触发 | Studio 本地进程中的 Scheduler Lite | +| 连续性 | 新会话,或显式绑定已有 session 后续接 | +| 并发 | 同一任务禁止重叠执行 | +| 误点补偿 | `skip` 或 `run_once` | +| 历史 | 保留 accepted、run identity、terminal 状态和错误信息 | + + + Studio 进程停止后不会提供 24×7 唤醒。云端持久 ScheduleStore、独立 scheduler worker 和跨 Pod claim 属于后续端云阶段。 + + +## 接入会话表面 + +`ConversationSurface` 声明输入能力,`ConversationInput` 只提交已允许的字段,`ConversationItem` 表示文本、reasoning、工具、审批、A2UI 和未知输出。Studio、Hosted UI 和自定义前端使用相同的 item identity 进行增量归并与重放。 + +核心 Renderer 提供通用降级;Provider 特有的 UI 应通过受控 Renderer 或 A2UI surface 扩展。未知 item 必须保持可见和不可执行,不能丢弃,也不能把未经识别的数据变成可点击操作。审批 item 只有在携带持久 revision 时才允许提交;缺少 revision 的客户端保持只读。 + +共享 Web 包、Studio、Hosted UI 与独立前端的浏览器 E2E 全部通过后,才会把这一表面标记为稳定可写。 + +## 兼容与发布门禁 + +| 项目 | 当前边界 | +| --- | --- | +| 历史 Agent | 真实 0.8.2 LangGraph Bundle v2 和更早 framework Bundle 继续走旧 Runtime;历史 Harness 只有命中显式登记的精确来源摘要才进入 legacy adapter,未知 v1 fail closed | +| 新 Harness v2 | 必须解析到就绪的 DSH registration;缺失时 fail closed,不回退 legacy adapter | +| 本地存储 | 无 PostgreSQL 时继续使用 SQLite 或 memory;高可用能力不被伪造 | +| 第三方生态 | Claude Code、游戏和任意能力必须由标准 DSH Bundle 承载,或由 Codex App Server 原生管理,并通过 conformance | +| 稳定发布 | `make phase2-release-preflight` 中的 DSH、会话浏览器、历史 Agent、clean provenance 和公开制品审计必须全部通过 | + +游戏类扩展可以由一个 DSH Bundle 组合 Tool、Store、Renderer/A2UI 和 Studio slot;完整游戏循环可以贡献独立 AgentProvider。它们都不需要修改 Kernel 协议,但在通过权限、生命周期、会话投影和回滚测试前,不会显示为已支持插件。 diff --git a/docs-site/content/docs/framework/meta.json b/docs-site/content/docs/framework/meta.json index 9f595346..9d7c1a45 100644 --- a/docs-site/content/docs/framework/meta.json +++ b/docs-site/content/docs/framework/meta.json @@ -20,6 +20,7 @@ "guides/agentkit-local-studio", "guides/evaluation-observability", "guides/hosted-ui-events", + "guides/plugins-and-automations", "---[Blocks]运行时能力---", "guides/agent-context", "guides/attachments-multimodal", diff --git a/docs-site/content/docs/references/environment-variables.en.mdx b/docs-site/content/docs/references/environment-variables.en.mdx index e2c0eb4d..75bf6fa6 100644 --- a/docs-site/content/docs/references/environment-variables.en.mdx +++ b/docs-site/content/docs/references/environment-variables.en.mdx @@ -351,6 +351,14 @@ KSADK_MCP_SERVERS='[{"name":"docs","url":"http://127.0.0.1:9000/mcp"}]' `make build` / `make build-wheel` automatically run `sync-ksadk-web-static`; no manual sync needed. +## DSH Plugin Bridge + +| Variable | Purpose | +| --- | --- | +| `KSADK_DSH_HOME` | Isolated managed DSH Profile directory; defaults to `.agentkit/dsh-home` in the workspace. Studio never mutates an explicitly configured directory. | +| `KSADK_DSH_PROFILE` | DSH Profile name to use; defaults to `studio`. | +| `KSADK_DSH_BIN` | Optional absolute DSH command path for fixed-toolchain core development or CI verification; version mismatches fail closed. | + ## Observability | Variable | Purpose | diff --git a/docs-site/content/docs/references/environment-variables.mdx b/docs-site/content/docs/references/environment-variables.mdx index c5edd281..fb1ea107 100644 --- a/docs-site/content/docs/references/environment-variables.mdx +++ b/docs-site/content/docs/references/environment-variables.mdx @@ -348,6 +348,14 @@ KSADK_MCP_SERVERS='[{"name":"docs","url":"http://127.0.0.1:9000/mcp"}]' `make build` / `make build-wheel` 会自动执行 `sync-ksadk-web-static`,无需手动同步。 +## DSH 插件桥接 + +| 变量 | 用途 | +| --- | --- | +| `KSADK_DSH_HOME` | 受管理 DSH Profile 的隔离目录;默认是工作区中的 `.agentkit/dsh-home`。显式设置后 Studio 不会改写该目录。 | +| `KSADK_DSH_PROFILE` | 要使用的 DSH Profile 名称,默认 `studio`。 | +| `KSADK_DSH_BIN` | 可选的 DSH 命令绝对路径,仅用于固定版本工具链的核心开发或 CI 验证;不匹配时拒绝执行。 | + ## 可观测 | 变量 | 用途 | diff --git a/docs/maintainer-approval-record.md b/docs/maintainer-approval-record.md index 7798d48c..461072a1 100644 --- a/docs/maintainer-approval-record.md +++ b/docs/maintainer-approval-record.md @@ -1,7 +1,7 @@ # KsADK Public Release Approval Record -This record approves the public `0.8.2` release from the reviewed internal -candidate and Web sources below. It is the evidence consumed by the release +This record tracks the public `0.8.3` release candidate and remains unapproved +until the final Python and Web artifacts below are fixed. It is the evidence consumed by the release gate before GitHub tags, GitHub Releases, PyPI publication, or GitHub Pages deployment. @@ -12,7 +12,7 @@ deployment. | License | Apache-2.0 | | Python repository | kingsoftcloud/ksadk-python | | Web UI repository | kingsoftcloud/ksadk-web | -| Python package version | 0.8.2 | +| Python package version | 0.8.3 | | Public docs URL | https://kingsoftcloud.github.io/ksadk-python/ | | Package metadata repository URL | https://github.com/kingsoftcloud/ksadk-python | | Package metadata documentation URL | https://kingsoftcloud.github.io/ksadk-python/ | @@ -31,34 +31,36 @@ Record exactly one approved source publication strategy. The approved strategy must name the reviewed commit, tag, pull request, or export archive used for: -- `ksadk-python`: clean public export from reviewed internal candidate `40060a6560bfeec2f45bca92b589bca8c799073f`. -- `ksadk-web`: trusted npm package `@kingsoftcloud/ksadk-web@0.3.2`, source commit `2136448e038b4d8c475fa20e4722252b1ddb2ebc`, GitHub merge `4854be4fcb5584a799538536372d38b80447f81e`, integrity `sha512-Ytjd3pIgy6LfHCmguXUDQr/wy9ClqKjbv+J+NAzH/+UIJjhVl3y1SA2eR7WwsWSn42zxBFme/xniUZMNBV53Aw==`; approval is bound to Python source commit `40060a6560bfeec2f45bca92b589bca8c799073f`. +- `ksadk-python`: Pending final reviewed internal source commit and clean public export. +- `ksadk-web`: Pending Trusted Publishing of `@kingsoftcloud/ksadk-web@0.3.3`, registry integrity, and final Python source binding. Both approved source references include the reviewed Python source commit SHA. This prevents a stale approval record from passing after candidate changes. ## Recorded Evidence for Approval -- `@kingsoftcloud/ksadk-web@0.3.2` is published from the source and integrity - recorded above; the Python build gate verified all 265 embedded static files. -- The complete Python suite passed 4418 tests, with 73 optional live-service or - PostgreSQL tests skipped, two expected failures, and one expected-pass marker. -- The Studio release gate passed 62 contract tests, 190 component tests, 22 - style checks, TypeScript validation, the production build, and browser smoke. -- The docs static build rendered 201 routes. Wheel/sdist metadata, twine, and - artifact audits passed with 0 violations across 778 wheel and 862 sdist entries. -- `make public-publish-check PUBLIC_PUBLISH_PHASE=pre-publish V=0.8.2` must pass - again on the exported public candidate before external publication; neither - public Python package contains version `0.8.2` at approval time. +- The reviewed `@kingsoftcloud/ksadk-web@0.3.3` source candidate passed its + source tests and browser E2E; the Python candidate verified all 265 embedded + static files from the explicit reviewed tarball. This does not substitute for + the registry-backed rebuild required after Trusted Publishing. +- The Phase 2 compatibility, Codex native host, DSH lifecycle, browser, clean + wheel install and clean sdist rebuild gates passed on the interim Python + candidate. Wheel/sdist path and content audits reported zero violations. +- The docs static build rendered 205 routes. Public source export and secret + audits must pass again after the final registry-backed rebuild. +- `make public-publish-check PUBLIC_PUBLISH_PHASE=pre-publish V=0.8.3` must pass + on the exported public candidate before external publication; neither public + Python package may already contain version `0.8.3` at approval time. - Branch protection and publish environment are configured according to `.github/BRANCH_PROTECTION.md`. -- Web 0.3.2 tests, lint, build, npm pack, audit, interaction E2E, AG-UI E2E, - reconnect E2E, npm publication, GitHub Release, and Pages deployment are green. -- Real browser E2E covered an existing CLI high-code Agent and the Kernel Agent - path: foreground SSE, multi-turn chat, system-role preservation, MCP invocation, - final-message de-duplication, refresh replay, and cleanup of test sessions. +- Web 0.3.3 source tests, lint, build, npm pack, audit and browser E2E are green; + npm publication, registry verification and the final registry-backed consumer + rebuild are still pending approval. +- Real browser E2E on the reviewed candidate covered a Studio-created Codex + Agent and a historical 0.8.2 Agent: streaming text, reasoning/tool cards, + multi-turn context and final-message de-duplication. - Release notes, `CHANGELOG.md`, public README and docs were reviewed for the - complete 0.8.2 summary, sensitive environment names, internal endpoints, + complete 0.8.3 summary, sensitive environment names, internal endpoints, tokens, customer data and inaccurate claims. - PyPI/TestPyPI credentials stay outside the repository. @@ -66,6 +68,6 @@ This prevents a stale approval record from passing after candidate changes. | Role | Name | Decision | Date | | --- | --- | --- | --- | -| Maintainer | @AgentArcLab | Approved | 2026-08-26 | -| Security reviewer | @AgentArcLab | Approved after source, artifact and secret gates | 2026-08-26 | -| Release owner | @AgentArcLab | Approved for clean export and Trusted Publishing | 2026-08-26 | +| Maintainer | Pending | Pending | Pending | +| Security reviewer | Pending | Pending | Pending | +| Release owner | Pending | Pending | Pending | diff --git a/docs/public-release-workflow.md b/docs/public-release-workflow.md index 5d0b2291..7c290746 100644 --- a/docs/public-release-workflow.md +++ b/docs/public-release-workflow.md @@ -66,6 +66,19 @@ git diff --check 如果本次需要绑定新的 UI 版本,确认 `KSADK_WEB_VERSION` 默认值、README、docs-site、approval record 都引用同一个 npm 版本。 +Phase 2 发布还必须在最终内部 `master` 提交上重新生成本地制品证据,并在 npm 包发布、Hosted UI 以 digest 部署、发布候选环境浏览器矩阵完成后运行: + +```bash +make phase2-release-candidate-gate \ + PHASE2_FINAL_COMMIT= \ + PHASE2_LOCAL_EVIDENCE= \ + PHASE2_WEB_REGISTRY_EVIDENCE= \ + PHASE2_DEPLOYMENT_EVIDENCE= \ + PHASE2_PREPROD_EVIDENCE= +``` + +该门禁要求 npm integrity、Hosted UI 镜像 digest、Helm revision、wheel/sdist digest 和最终源码提交互相一致;Studio 新建 Agent 与历史 0.8.2 Agent 都必须通过 Studio/Hosted UI 两个入口的多轮流式验证。测试新建的 Agent 必须删除,历史 Agent 必须保留。缺少 registry 正式版本、使用可变镜像 tag、单轮响应或仅本地 mock 时,报告不会变绿。 + RuntimeEvent schema v2 发布的额外约束:当 Python 发布把运行事件主路径切到 canonical `schema_version=2`(能力描述 `RuntimeEventVersions=[1,2]`、`RuntimeEventDefault=2`、`RuntimeEventV1ProjectionModes=["snapshot_only","identity_replace"]`、`RuntimeEventV1ProjectionDefault="snapshot_only"`)时,配套的 `ksadk-web`、Studio react-ui 与 `agentengine-hosted-ui` 必须是与本次发布一致的 identity-aware 版本,才能按 run/scope/item/part identity 正确归并流式与回放输出。候选报告必须记录 Python 与三个 UI 仓库各自的 commit 和包版本,作为同一发布单元评审。 更新审批记录: diff --git "a/docs/reference/ksadk\347\216\257\345\242\203\345\217\230\351\207\217\345\217\202\350\200\203.md" "b/docs/reference/ksadk\347\216\257\345\242\203\345\217\230\351\207\217\345\217\202\350\200\203.md" index 66aca9d0..6ef5d349 100644 --- "a/docs/reference/ksadk\347\216\257\345\242\203\345\217\230\351\207\217\345\217\202\350\200\203.md" +++ "b/docs/reference/ksadk\347\216\257\345\242\203\345\217\230\351\207\217\345\217\202\350\200\203.md" @@ -367,7 +367,7 @@ | `KSADK_UI_PATH` | 本地 Web UI / Runtime bootstrap | 否 | `/` | 无 | 否 | 开发者 / 平台 | 否 | 自定义 UI 挂载路径,例如 `/research`。 | | `KSADK_UI_URL` | Runtime bootstrap | 否 | 未设置 | 无 | 否 | 平台 / 开发者 | 否 | 外部自定义 UI URL。 | | `KSADK_UI_BUNDLE_PATH` | Runtime bootstrap | 否 | 自动探测 `research-ui/dist` | 无 | 否 | 开发者 / 平台 | 否 | 自定义 UI 静态 bundle 相对项目路径。 | -| `KSADK_WEB_VERSION` | Hosted Web UI static sync | 否 | `0.3.2` | 可显式设置已发布版本 | 否 | 构建环境 / 发版负责人 | 否 | `make sync-ksadk-web-static` 使用的 `@kingsoftcloud/ksadk-web` npm 版本。wheel 构建必须固定一个已发布版本;升级此值前先发布并验证对应的 npm 包。 | +| `KSADK_WEB_VERSION` | Hosted Web UI static sync | 否 | `0.3.3` | 可显式设置已发布版本 | 否 | 构建环境 / 发版负责人 | 否 | `make sync-ksadk-web-static` 使用的 `@kingsoftcloud/ksadk-web` npm 版本。wheel 构建必须固定一个已发布版本;升级此值前先发布并验证对应的 npm 包。 | | `KSADK_WEB_PACKAGE` | Hosted Web UI static sync | 否 | `@kingsoftcloud/ksadk-web` | 无 | 否 | 构建环境 / 开发者 | 否 | 本地 UI static 同步使用的 npm 包名。 | | `KSADK_WEB_TARBALL_NAME` | Hosted Web UI static sync | 否 | 根据 `KSADK_WEB_VERSION` 派生 | 无 | 否 | 构建环境 | 否 | 仅在设置 `KSADK_WEB_RELEASE_URL` 时作为下载保存文件名;npm pack 模式会使用 npm 返回的真实 tarball 文件名。 | | `KSADK_WEB_RELEASE_URL` | Hosted Web UI static sync | 否 | 未设置 | 无 | 否 | 构建环境 / 开发者 | 否 | 可选兼容兜底。设置后跳过 npm pack,改从该 tarball URL 下载。 | @@ -377,6 +377,9 @@ | `KSADK_CODEX_ISOLATE_HOME` | Codex runtime | 否 | `1` | 无 | 否 | 开发者 / 测试 | 否 | 默认隔离 Codex 状态;仅调试时可设为 `0` 复用进程 HOME。 | | `KSADK_CODEX_SANDBOX` | Codex runtime | 否 | `read_only` | 无 | 否 | 开发者 / Studio | 否 | Codex 沙箱模式:`read_only`、`workspace_write` 或 `full_access`。 | | `KSADK_CODEX_USE_PROXY` | Codex runtime | 否 | 自动探测 | 无 | 否 | 开发者 / 平台 | 否 | `1` 强制启用本地 Responses-to-Chat proxy,`0` 强制直连;未设置时仅对自定义上游进行保守探测。 | +| `KSADK_DSH_HOME` | Studio 插件桥接 | 否 | `/.agentkit/dsh-home` | 无 | 否 | 开发者 / Studio | 否 | 受管理 DSH Profile 的隔离目录。显式设置后 Studio 不会改写该目录。 | +| `KSADK_DSH_PROFILE` | Studio 插件桥接 | 否 | `studio` | 无 | 否 | 开发者 / Studio | 否 | 选择 DSH Profile 名称;与 `KSADK_DSH_HOME` 一起用于发现已安装插件。 | +| `KSADK_DSH_BIN` | Studio 插件桥接 | 否 | 受管理固定工具链 | 无 | 否 | DSH 核心开发 / CI | 否 | 显式指定 DSH 命令路径,仅用于验证固定版本工具链;版本不匹配会拒绝执行。 | | `KSADK_STUDIO_NO_SECURITY` | AgentKit Studio | 否 | `0` | 无 | 否 | 测试环境 | 否 | 仅受控自动化测试可设为 `1`;正常启动必须保留 loopback session 与 CSRF 校验。 | | `KSADK_STUDIO_SESSION_TOKEN` | AgentKit Studio | 否 | 随机生成 | 无 | 是 | CLI / 测试 Secret | 否 | 显式指定本地浏览器 session token;正常启动由 CLI 随机生成并写入启动 URL。 | | `KSADK_STUDIO_TRACE_CONTENT` | AgentKit Studio | 否 | `1` | 无 | 否 | 开发者 / Studio 设置 | 否 | 是否保存 Trace 事件正文;设为 `0` 时只保留排障所需元数据。 | diff --git a/export-manifest.json b/export-manifest.json index 4214bda9..78b69394 100644 --- a/export-manifest.json +++ b/export-manifest.json @@ -1,845 +1,14 @@ { - "generatedAt": "2026-08-26T10:09:38.713417+00:00", + "schemaVersion": 1, + "generatedAt": "2026-08-31T06:50:20.097859+00:00", + "sourceCommit": "c18c8c81fa0ced5ae8393340f41e6ac1934218d8", + "sourceTree": "clean", "targetRepository": "https://github.com/kingsoftcloud/ksadk-python", "documentation": "https://kingsoftcloud.github.io/ksadk-python/", - "exportPathCount": 1124, - "excludedPathCount": 751, - "excludedPaths": [ - "contracts/agent-kernel/v1/activation-lease.schema.json", - "contracts/agent-kernel/v1/agent-control.schema.json", - "contracts/agent-kernel/v1/fixtures/activation-lease.json", - "contracts/agent-kernel/v1/fixtures/agent-control-enqueue.json", - "contracts/agent-kernel/v1/fixtures/agent-control-inject.json", - "contracts/agent-kernel/v1/fixtures/agent-control-interrupt.json", - "contracts/agent-kernel/v1/fixtures/agent-control-pause.json", - "contracts/agent-kernel/v1/fixtures/agent-control-permit.json", - "contracts/agent-kernel/v1/fixtures/agent-control-receipts.json", - "contracts/agent-kernel/v1/fixtures/agent-control-resume.json", - "contracts/agent-kernel/v1/fixtures/agent-control-steer.json", - "contracts/agent-kernel/v1/fixtures/agent-control-submit_interaction.json", - "contracts/agent-kernel/v1/fixtures/agent-control.json", - "contracts/agent-kernel/v1/fixtures/agent-status-snapshot.json", - "contracts/agent-kernel/v1/fixtures/interaction-requested.json", - "contracts/agent-kernel/v1/fixtures/interaction-resolved.json", - "contracts/agent-kernel/v1/fixtures/interaction-submit.json", - "contracts/agent-kernel/v1/fixtures/runtime-capability.json", - "contracts/agent-kernel/v1/fixtures/session-event-control.json", - "contracts/agent-kernel/v1/fixtures/session-event-runtime.json", - "contracts/agent-kernel/v1/interaction.schema.json", - "contracts/agent-kernel/v1/manifest.json", - "contracts/agent-kernel/v1/runtime-capability.schema.json", - "contracts/agent-kernel/v1/session-event.schema.json", - "docs/A2UI-agent驱动UI技术方案.md", - "docs/Agent 开发者上下文接入指南.md", - "docs/DeepAgents说明.md", - "docs/a2ui-v1-alignment-proposal.md", - "docs/adk-multi-version-compat.md", - "docs/adk-resume-integration-design.md", - "docs/agent-loop-convergence-design.md", - "docs/agentkit-local-studio-phase1-delivery-design.md", - "docs/agentkit-studio-frontend-design-system-v1.md", - "docs/archive/kb-memory/knowledge_base_integration_plan.md", - "docs/archive/kb-memory/knowledge_base_test_report.md", - "docs/archive/kb-memory/memory_adk_test_practice.md", - "docs/archive/kb-memory/memory_sdk_integration_plan.md", - "docs/archive/kb-memory/memory_test_report.md", - "docs/archive/versions/hermes-agent-v2026.4.16_本地安装配置与ksadk接入流程.md", - "docs/archive/workspace/agentengine-runtime-common-设计方案.md", - "docs/archive/workspace/openclaw_通用_memory_backend_bootstrap_设计.md", - "docs/archive/workspace/workspace_files_v1_实施说明.md", - "docs/archive/workspace/workspace_files_去重改造方案比较稿.md", - "docs/evaluation/phase1-smoke-evalset.yaml", - "docs/evaluation/端云评测一期开发记录.md", - "docs/evaluation/端云评测方案.md", - "docs/frameworks/LangGraph开发最佳实践.md", - "docs/frameworks/人机交互跨框架接入指南.md", - "docs/guides/Agent 开发者上下文接入指南.md", - "docs/guides/DeepAgents说明.md", - "docs/guides/LangGraph开发最佳实践.md", - "docs/guides/ksadk使用文档.md", - "docs/guides/知识库与记忆示例.md", - "docs/guides/记忆使用指南.md", - "docs/hosted-ui-refactor-plan.md", - "docs/internal/Runner_Approval_Architecture.md", - "docs/internal/coding-agent-p0-tooling.md", - "docs/internal/dry_run_refactor.md", - "docs/internal/ksadk-skills-analysis-and-design.md", - "docs/internal/sandbox-runtime-design.md", - "docs/internal/skill-runtime-e2e.md", - "docs/ksadk-iteration-plan-condensed.md", - "docs/ksadk使用文档.md", - "docs/ksadk开源准备计划.md", - "docs/ksadk技术设计.md", - "docs/ksadk环境变量参考.md", - "docs/ksadk端上Agent观测与评测技术评审方案.md", - "docs/ksadk端上Agent观测与评测落地技术方案.md", - "docs/openclaw_client_one_click_deploy.html", - "docs/openclaw_gateway_channel_flow.svg", - "docs/openclaw_gateway_channel_flow_hd.png", - "docs/openclaw_gateway_technical.html", - "docs/openclaw一键部署指南.md", - "docs/preview/cli-demo/cli_real_terminal_demo.png", - "docs/preview/cli-demo/cli_screenshot_demo.sh", - "docs/preview/images/claw_logo.png", - "docs/preview/images/claw_robot.png", - "docs/preview/images/wps_support_group.jpg", - "docs/prompt-context-memory-implementation.md", - "docs/prompt-driven-agent-creation-draft.md", - "docs/qoder-cloud-agent-benchmark-and-phase1-redesign.md", - "docs/reference/ksadk技术设计.md", - "docs/reference/远程Agent运行时接口说明.md", - "docs/runtime-event-v2-cold-recovery-design.md", - "docs/runtime-foundation-freeze-v1.md", - "docs/superpowers/evidence/phase0/manifest.json", - "docs/superpowers/evidence/phase1/REVIEW-HANDOFF.md", - "docs/superpowers/evidence/phase1/baseline.json", - "docs/superpowers/evidence/phase1/canary-hosted/deployment.yaml", - "docs/superpowers/evidence/phase1/canary-hosted/runtime.Dockerfile", - "docs/superpowers/evidence/phase1/canary/canary.audit.Dockerfile", - "docs/superpowers/evidence/phase1/canary/canary.e2e.Dockerfile", - "docs/superpowers/evidence/phase1/local-closure-report.json", - "docs/superpowers/evidence/phase1/preprod-report.json", - "docs/superpowers/evidence/phase1/preprod/audit-closure.json", - "docs/superpowers/evidence/phase1/preprod/contract-mismatch-drill.json", - "docs/superpowers/evidence/phase1/preprod/cross-repo-versions.json", - "docs/superpowers/evidence/phase1/preprod/current-main-versions-d4a66a72.json", - "docs/superpowers/evidence/phase1/preprod/interaction-v1-e2e.json", - "docs/superpowers/evidence/phase1/preprod/main-flow-audit-d4a66a72.json", - "docs/superpowers/evidence/phase1/preprod/managed-pg-matrix-d4a66a72.json", - "docs/superpowers/evidence/phase1/preprod/readiness-fix.json", - "docs/superpowers/evidence/phase1/preprod/real-codex-closure.json", - "docs/superpowers/evidence/phase1/preprod/real-codex-deployment.yaml", - "docs/superpowers/evidence/phase1/preprod/real-interaction-closure.json", - "docs/superpowers/evidence/phase1/preprod/step456-checks.json", - "docs/superpowers/evidence/phase1/preprod/step456-e2e.json", - "docs/superpowers/evidence/phase1/preprod/step789-drill.json", - "docs/superpowers/evidence/phase1/preprod/studio-main-flow-closure.json", - "docs/superpowers/evidence/phase1/preprod/v2-audit.json", - "docs/superpowers/evidence/phase1/preprod/v2-drill.json", - "docs/superpowers/evidence/phase1/preprod/v2-e2e.json", - "docs/superpowers/evidence/phase1/preprod/v2-versions.json", - "docs/superpowers/evidence/phase1/rollback-report.json", - "docs/superpowers/plans/2026-04-16-hosted-hermes-gateway.md", - "docs/superpowers/plans/2026-04-20-workspace-files-pvc-implementation.md", - "docs/superpowers/plans/2026-05-07-thinking-user-control-and-e2e-plan.md", - "docs/superpowers/plans/2026-06-04-ksadk-0.6.2-public-candidate-audit.md", - "docs/superpowers/plans/2026-06-04-otel-first-observability-release.md", - "docs/superpowers/plans/2026-08-04-agentkit-studio-otel-trace-explorer-rewrite.md", - "docs/superpowers/plans/2026-08-04-runtime-adapter-web-unification.md", - "docs/superpowers/plans/2026-08-11-runtime-event-schema-v2-release.md", - "docs/superpowers/plans/2026-08-14-cloud-evaluation-closed-loop-plan.md", - "docs/superpowers/plans/2026-08-14-edge-cloud-evalset-phase1.md", - "docs/superpowers/plans/2026-08-14-local-agent-observability.md", - "docs/superpowers/plans/2026-08-17-agent-runtime-v2-phase1-agent-kernel.md", - "docs/superpowers/plans/2026-08-18-studio-evaluation-list-detail.md", - "docs/superpowers/plans/2026-08-18-studio-evaluation-target-controls.md", - "docs/superpowers/plans/2026-08-18-studio-trajectory-semantic-records.md", - "docs/superpowers/plans/2026-08-19-cloud-monitor-span-compatibility.md", - "docs/superpowers/plans/2026-08-20-studio-bundle-deploy-v1.md", - "docs/superpowers/plans/2026-08-20-studio-cloud-lifecycle-ui.md", - "docs/superpowers/specs/2026-04-18-ksadk-support-model-design.md", - "docs/superpowers/specs/2026-04-19-agent-workspace-file-service-design.md", - "docs/superpowers/specs/2026-08-04-agentkit-studio-unified-runtime-design.md", - "docs/superpowers/specs/2026-08-11-runtime-event-v2-v1-compatibility-design.md", - "docs/superpowers/specs/2026-08-14-cloud-evaluation-closed-loop-design.md", - "docs/superpowers/specs/2026-08-17-agent-eval-endpoint-resolution-design.md", - "docs/superpowers/specs/2026-08-17-agent-runtime-v2-plugin-architecture-design.md", - "docs/superpowers/specs/2026-08-18-studio-evaluation-target-controls-design.md", - "docs/superpowers/specs/2026-08-19-cloud-monitor-span-compatibility-design.md", - "docs/superpowers/specs/2026-08-20-studio-cloud-lifecycle-workbench-design.md", - "docs/veadk-benchmark-and-iteration-plan.md", - "docs/工作区文件技术设计.md", - "docs/平台可观测与用户反馈设计方案.md", - "docs/本地Agent构造与评测验证记录-20260819.md", - "docs/本地Agent评测全流程测试记录.md", - "docs/知识库与记忆示例.md", - "docs/自定义请求数据透传方案.md", - "docs/记忆使用指南.md", - "docs/远程Agent运行时接口说明.md", - "ksadk/studio/react-ui/components.json", - "ksadk/studio/react-ui/index.html", - "ksadk/studio/react-ui/package-lock.json", - "ksadk/studio/react-ui/package.json", - "ksadk/studio/react-ui/postcss.config.js", - "ksadk/studio/react-ui/src/App.chat-entry.test.tsx", - "ksadk/studio/react-ui/src/App.routes.test.ts", - "ksadk/studio/react-ui/src/App.tsx", - "ksadk/studio/react-ui/src/api.test.mjs", - "ksadk/studio/react-ui/src/api.ts", - "ksadk/studio/react-ui/src/approvalModes.test.mjs", - "ksadk/studio/react-ui/src/approvalModes.ts", - "ksadk/studio/react-ui/src/authoringStages.test.mjs", - "ksadk/studio/react-ui/src/authoringStages.ts", - "ksadk/studio/react-ui/src/chatProtocol.test.mjs", - "ksadk/studio/react-ui/src/chatProtocol.ts", - "ksadk/studio/react-ui/src/chatWorkspaceApprovalPlacement.test.mjs", - "ksadk/studio/react-ui/src/cloudChatWorkspace.test.mjs", - "ksadk/studio/react-ui/src/cloudDeployments.test.ts", - "ksadk/studio/react-ui/src/cloudDeployments.ts", - "ksadk/studio/react-ui/src/components/A2UIRenderer.test.tsx", - "ksadk/studio/react-ui/src/components/A2UIRenderer.tsx", - "ksadk/studio/react-ui/src/components/AgentAppearanceEditor.tsx", - "ksadk/studio/react-ui/src/components/AgentAvatar.tsx", - "ksadk/studio/react-ui/src/components/ChatComposer.test.tsx", - "ksadk/studio/react-ui/src/components/ChatComposer.tsx", - "ksadk/studio/react-ui/src/components/ChatRunPanel.test.ts", - "ksadk/studio/react-ui/src/components/ChatRunPanel.tsx", - "ksadk/studio/react-ui/src/components/ChatWorkspace.tsx", - "ksadk/studio/react-ui/src/components/CloudChatWorkspace.behavior.test.tsx", - "ksadk/studio/react-ui/src/components/CloudChatWorkspace.tsx", - "ksadk/studio/react-ui/src/components/ComposerActionMenu.test.tsx", - "ksadk/studio/react-ui/src/components/ComposerActionMenu.tsx", - "ksadk/studio/react-ui/src/components/ConfirmDialog.tsx", - "ksadk/studio/react-ui/src/components/Drawer.tsx", - "ksadk/studio/react-ui/src/components/MoreActionsMenu.tsx", - "ksadk/studio/react-ui/src/components/NavigationRail.test.tsx", - "ksadk/studio/react-ui/src/components/NavigationRail.tsx", - "ksadk/studio/react-ui/src/components/PageHeaderPortal.tsx", - "ksadk/studio/react-ui/src/components/PythonToolExample.test.tsx", - "ksadk/studio/react-ui/src/components/PythonToolExample.tsx", - "ksadk/studio/react-ui/src/components/RuntimeModeBar.test.tsx", - "ksadk/studio/react-ui/src/components/RuntimeModeBar.tsx", - "ksadk/studio/react-ui/src/components/SettingsOverlay.test.ts", - "ksadk/studio/react-ui/src/components/SettingsOverlay.tsx", - "ksadk/studio/react-ui/src/components/SkillFileBrowser.test.tsx", - "ksadk/studio/react-ui/src/components/SkillFileBrowser.tsx", - "ksadk/studio/react-ui/src/components/Toast.tsx", - "ksadk/studio/react-ui/src/components/ui/CodeViewer.test.tsx", - "ksadk/studio/react-ui/src/components/ui/CodeViewer.tsx", - "ksadk/studio/react-ui/src/components/ui/FileDropzone.test.tsx", - "ksadk/studio/react-ui/src/components/ui/FileDropzone.tsx", - "ksadk/studio/react-ui/src/components/ui/FormField.test.tsx", - "ksadk/studio/react-ui/src/components/ui/FormField.tsx", - "ksadk/studio/react-ui/src/components/ui/GeneratedIdField.test.tsx", - "ksadk/studio/react-ui/src/components/ui/GeneratedIdField.tsx", - "ksadk/studio/react-ui/src/components/ui/MarkdownPreview.tsx", - "ksadk/studio/react-ui/src/components/ui/PrismRenderer.tsx", - "ksadk/studio/react-ui/src/components/ui/StudioDataTable.test.tsx", - "ksadk/studio/react-ui/src/components/ui/StudioDataTable.tsx", - "ksadk/studio/react-ui/src/components/ui/StudioDialog.test.tsx", - "ksadk/studio/react-ui/src/components/ui/StudioDialog.tsx", - "ksadk/studio/react-ui/src/components/ui/StudioMultiSelect.test.tsx", - "ksadk/studio/react-ui/src/components/ui/StudioMultiSelect.tsx", - "ksadk/studio/react-ui/src/components/ui/StudioScrollArea.tsx", - "ksadk/studio/react-ui/src/components/ui/StudioSelect.test.tsx", - "ksadk/studio/react-ui/src/components/ui/StudioSelect.tsx", - "ksadk/studio/react-ui/src/components/ui/TextShimmer.test.tsx", - "ksadk/studio/react-ui/src/components/ui/TextShimmer.tsx", - "ksadk/studio/react-ui/src/components/ui/badge.tsx", - "ksadk/studio/react-ui/src/components/ui/button.tsx", - "ksadk/studio/react-ui/src/components/ui/card.tsx", - "ksadk/studio/react-ui/src/components/ui/input.tsx", - "ksadk/studio/react-ui/src/components/ui/separator.tsx", - "ksadk/studio/react-ui/src/components/ui/tabs.tsx", - "ksadk/studio/react-ui/src/composerActions.test.ts", - "ksadk/studio/react-ui/src/composerActions.ts", - "ksadk/studio/react-ui/src/createPage.component-contract.test.mjs", - "ksadk/studio/react-ui/src/evaluationRoute.contract.test.mjs", - "ksadk/studio/react-ui/src/index.css", - "ksadk/studio/react-ui/src/kingdesign.contract.test.mjs", - "ksadk/studio/react-ui/src/kingdesign.css", - "ksadk/studio/react-ui/src/lib/formErrors.test.ts", - "ksadk/studio/react-ui/src/lib/formErrors.ts", - "ksadk/studio/react-ui/src/lib/generatedId.test.ts", - "ksadk/studio/react-ui/src/lib/generatedId.ts", - "ksadk/studio/react-ui/src/lib/utils.test.ts", - "ksadk/studio/react-ui/src/lib/utils.ts", - "ksadk/studio/react-ui/src/main.tsx", - "ksadk/studio/react-ui/src/pages/AgentDetailPage.test.tsx", - "ksadk/studio/react-ui/src/pages/AgentDetailPage.tsx", - "ksadk/studio/react-ui/src/pages/AgentEditor.test.tsx", - "ksadk/studio/react-ui/src/pages/AgentEditor.tsx", - "ksadk/studio/react-ui/src/pages/AgentsPage.test.tsx", - "ksadk/studio/react-ui/src/pages/AgentsPage.tsx", - "ksadk/studio/react-ui/src/pages/BuildsPage.test.tsx", - "ksadk/studio/react-ui/src/pages/BuildsPage.tsx", - "ksadk/studio/react-ui/src/pages/CreatePage.test.tsx", - "ksadk/studio/react-ui/src/pages/CreatePage.tsx", - "ksadk/studio/react-ui/src/pages/DeploymentsPage.test.tsx", - "ksadk/studio/react-ui/src/pages/DeploymentsPage.tsx", - "ksadk/studio/react-ui/src/pages/EvaluationDetailPage.test.tsx", - "ksadk/studio/react-ui/src/pages/EvaluationDetailPage.tsx", - "ksadk/studio/react-ui/src/pages/EvaluationsPage.test.tsx", - "ksadk/studio/react-ui/src/pages/EvaluationsPage.tsx", - "ksadk/studio/react-ui/src/pages/ObservabilityPage.test.tsx", - "ksadk/studio/react-ui/src/pages/ObservabilityPage.tsx", - "ksadk/studio/react-ui/src/pages/OrchestrationPage.test.tsx", - "ksadk/studio/react-ui/src/pages/OrchestrationPage.tsx", - "ksadk/studio/react-ui/src/pages/ResourcesPage.tsx", - "ksadk/studio/react-ui/src/pages/RuntimeResourcesPage.test.tsx", - "ksadk/studio/react-ui/src/pages/RuntimeResourcesPage.tsx", - "ksadk/studio/react-ui/src/pages/TrajectoryView.test.tsx", - "ksadk/studio/react-ui/src/pages/TrajectoryView.tsx", - "ksadk/studio/react-ui/src/pages/evaluationTypes.ts", - "ksadk/studio/react-ui/src/pages/evaluations.css", - "ksadk/studio/react-ui/src/pages/trajectory.test.ts", - "ksadk/studio/react-ui/src/pages/trajectory.ts", - "ksadk/studio/react-ui/src/responsive.css", - "ksadk/studio/react-ui/src/responsiveViewport.test.mjs", - "ksadk/studio/react-ui/src/responsiveViewport.ts", - "ksadk/studio/react-ui/src/schemas/agentForms.test.ts", - "ksadk/studio/react-ui/src/schemas/agentForms.ts", - "ksadk/studio/react-ui/src/schemas/resourceForms.test.ts", - "ksadk/studio/react-ui/src/schemas/resourceForms.ts", - "ksadk/studio/react-ui/src/settingsOverlay.cloudAccount.test.mjs", - "ksadk/studio/react-ui/src/skillBatchImport.test.mjs", - "ksadk/studio/react-ui/src/skillBatchImport.ts", - "ksadk/studio/react-ui/src/soft-block.css", - "ksadk/studio/react-ui/src/studio.css", - "ksadk/studio/react-ui/src/studioRoutes.test.ts", - "ksadk/studio/react-ui/src/studioRoutes.ts", - "ksadk/studio/react-ui/src/studioTheme.test.mjs", - "ksadk/studio/react-ui/src/studioTheme.ts", - "ksadk/studio/react-ui/src/test/setup.ts", - "ksadk/studio/react-ui/src/theme.css", - "ksadk/studio/react-ui/src/useStudioTheme.ts", - "ksadk/studio/react-ui/src/useStudioViewportMode.ts", - "ksadk/studio/react-ui/src/utils/chatErrors.test.ts", - "ksadk/studio/react-ui/src/utils/chatErrors.ts", - "ksadk/studio/react-ui/tsconfig.json", - "ksadk/studio/react-ui/vite.config.ts", - "ksadk/studio/react-ui/vitest.config.ts", - "scripts/__init__.py", - "scripts/build_phase1_baseline.py", - "scripts/ci-frontend-check.sh", - "scripts/collect_context_baseline.py", - "scripts/collect_phase1_live_deployment.py", - "scripts/collect_real_model_baseline.py", - "scripts/debug_aicp_memory.py", - "scripts/export_agent_kernel_contracts.py", - "scripts/phase1_preprod_gate.py", - "scripts/run_phase1_managed_pg_matrix.py", - "scripts/test_ks3_upload.py", - "scripts/validate_checkpoint_resume_e2e.py", - "scripts/validate_codex_interaction_e2e.py", - "scripts/validate_hosted_long_task_e2e.py", - "scripts/validate_long_task_pilot.py", - "scripts/validate_session_failopen_e2e.py", - "scripts/verify_phase1_baseline.py", - "skills/agentengine-cli-ops/SKILL.md", - "skills/agentengine-cli-ops/agents/openai.yaml", - "skills/agentengine-cli-ops/references/prerequisites.md", - "skills/agentengine-cli-ops/references/routing.md", - "skills/agentengine-cli-ops/references/shared-defaults.md", - "skills/agentengine-cluster-debug/SKILL.md", - "skills/agentengine-cluster-debug/references/commands.md", - "skills/agentengine-hermes-lifecycle/SKILL.md", - "skills/agentengine-hermes-lifecycle/agents/openai.yaml", - "skills/agentengine-hermes-lifecycle/references/dashboard-links.md", - "skills/agentengine-hermes-lifecycle/references/hermes-lifecycle.md", - "skills/agentengine-hermes-lifecycle/references/troubleshooting.md", - "skills/agentengine-openclaw-oneclick-deploy/SKILL.md", - "skills/agentengine-openclaw-oneclick-deploy/agents/openai.yaml", - "skills/agentengine-openclaw-oneclick-deploy/references/channel-connect.md", - "skills/agentengine-openclaw-oneclick-deploy/references/dashboard-links.md", - "skills/agentengine-openclaw-oneclick-deploy/references/openclaw-lifecycle.md", - "skills/agentengine-openclaw-oneclick-deploy/references/troubleshooting.md", - "tests/__init__.py", - "tests/a2a/compose.yaml", - "tests/a2a/pg_process_worker.py", - "tests/a2a/process_server.py", - "tests/a2a/test_a2a_dependency_contract.py", - "tests/a2a/test_a2a_discovery.py", - "tests/a2a/test_a2a_protocol_e2e.py", - "tests/a2a/test_card.py", - "tests/a2a/test_context_adapter.py", - "tests/a2a/test_context_store.py", - "tests/a2a/test_control_plane.py", - "tests/a2a/test_credential_and_outbound.py", - "tests/a2a/test_executor_cancel_honesty.py", - "tests/a2a/test_executor_resume_runtime_adapter.py", - "tests/a2a/test_external_transport.py", - "tests/a2a/test_managed_a2a_card.py", - "tests/a2a/test_managed_bootstrap.py", - "tests/a2a/test_owner_resolver.py", - "tests/a2a/test_pg_process_recovery.py", - "tests/a2a/test_process_interop.py", - "tests/a2a/test_reasoning_streaming.py", - "tests/a2a/test_resume_store.py", - "tests/a2a/test_task_event_dispatcher.py", - "tests/a2a/test_trusted_identity.py", - "tests/a2ui/test_a2ui_core.py", - "tests/a2ui/test_a2ui_renderer.py", - "tests/agui/__init__.py", - "tests/agui/test_copilotkit_a2ui_compat.py", - "tests/agui/test_langgraph_interrupt_e2e.py", - "tests/agui/test_protocol_contract.py", - "tests/agui/test_runtime_adapter.py", - "tests/agui/test_runtime_preprocessing.py", - "tests/architecture/test_python_module_size.py", - "tests/architecture/test_runtime_boundaries.py", - "tests/builders/test_runtime_entrypoint_templates.py", - "tests/cli/test_cli_alignment.py", - "tests/cli/test_cmd_a2a_runtime_adapter.py", - "tests/cli/test_cmd_managed_runtime.py", - "tests/cli/test_cmd_observe.py", - "tests/cli/test_cmd_run_runtime_adapter.py", - "tests/cli/test_cmd_web_runtime_adapter.py", - "tests/cli/test_run_chain_e2e.py", - "tests/codex/fake_app_server.py", - "tests/codex/test_input_parts.py", - "tests/codex/test_proxy_injection.py", - "tests/codex/test_real_proxy_tool_surface.py", - "tests/codex/test_sdk_transport.py", - "tests/context_engine/test_adapter_context_capability.py", - "tests/context_engine/test_baseline_collector.py", - "tests/context_engine/test_baseline_collector_wiring.py", - "tests/context_engine/test_baseline_runtime_wiring.py", - "tests/context_engine/test_cache_observability.py", - "tests/context_engine/test_capabilities.py", - "tests/context_engine/test_contributors.py", - "tests/context_engine/test_deployment_mode.py", - "tests/context_engine/test_orphan_history.py", - "tests/context_engine/test_phase01_finishing.py", - "tests/context_engine/test_planner.py", - "tests/context_engine/test_prompt_source_trace.py", - "tests/context_engine/test_runner_conformance.py", - "tests/context_engine/test_shadow_baseline_acceptance.py", - "tests/context_engine/test_shadow_plan.py", - "tests/context_engine/test_shadow_plan_integration.py", - "tests/context_engine/test_shadow_plan_no_plaintext.py", - "tests/context_engine/test_token_counter.py", - "tests/context_engine/test_trace_planned_projected_actual.py", - "tests/contracts/__init__.py", - "tests/contracts/test_agent_kernel_schema_compatibility.py", - "tests/contracts/test_interaction_v1_contract.py", - "tests/conversations/test_ambient_error_guard.py", - "tests/conversations/test_dual_threshold_compaction.py", - "tests/conversations/test_extractive_fallback_corrections.py", - "tests/conversations/test_history_placeholder_boundaries.py", - "tests/conversations/test_phase3_memory_flush_summary.py", - "tests/conversations/test_ptl_retry.py", - "tests/conversations/test_runtime_input_prompt_compiler.py", - "tests/conversations/test_session_lock.py", - "tests/conversations/test_tool_result_budget.py", - "tests/conversations/test_working_state.py", - "tests/conversations/test_working_state_acceptance.py", - "tests/conversations/test_working_state_fix.py", - "tests/conversations/test_working_state_full_chain.py", - "tests/conversations/test_working_state_strict.py", - "tests/e2e/test_codex_sdk_process_e2e.py", - "tests/events/adapters/test_a2a.py", - "tests/events/adapters/test_adk.py", - "tests/events/adapters/test_codex.py", - "tests/events/adapters/test_langgraph.py", - "tests/events/fixtures/runtime_event_v1.json", - "tests/events/fixtures/runtime_event_v2.json", - "tests/events/test_canonical_runtime_event.py", - "tests/events/test_cold_recovery.py", - "tests/events/test_lenient_parsing.py", - "tests/events/test_mixed_schema_replay.py", - "tests/events/test_runtime_event.py", - "tests/events/test_runtime_event_deserialization.py", - "tests/events/test_runtime_event_recovery.py", - "tests/events/test_runtime_event_store.py", - "tests/events/test_runtime_identity.py", - "tests/events/test_session_event_store.py", - "tests/events/test_stream_reducer.py", - "tests/events/test_v1_compat.py", - "tests/harness/__init__.py", - "tests/harness/conftest.py", - "tests/harness/fixtures/__init__.py", - "tests/harness/fixtures/mcp_server.py", - "tests/harness/test_harness_app.py", - "tests/harness/test_harness_codex.py", - "tests/harness/test_harness_isolation.py", - "tests/harness/test_harness_mcp_e2e.py", - "tests/harness/test_harness_reasoner.py", - "tests/harness/test_harness_sandbox_policy.py", - "tests/integration/__init__.py", - "tests/integration/test_cloud_managed_e2e.py", - "tests/integration/test_codex_adk_conformance.py", - "tests/integration/test_context_e2e.py", - "tests/integration/test_hosted_chain_e2e.py", - "tests/integration/test_main_chain_integration.py", - "tests/integration/test_pcm_dual_runner_e2e.py", - "tests/integration/test_pcm_permanent.py", - "tests/integration/test_three_fixes.py", - "tests/interaction/__init__.py", - "tests/interaction/fake_approval_app_server.py", - "tests/interaction/test_codex_live_approval.py", - "tests/interaction/test_codex_transport_approval_loop.py", - "tests/interaction/test_langgraph_checkpoint_resume.py", - "tests/interaction/test_ledger_conformance.py", - "tests/interaction/test_postgres_interaction_atomicity.py", - "tests/interaction/test_provider_dispatch.py", - "tests/interaction/test_validate_codex_interaction_e2e.py", - "tests/kernel/__init__.py", - "tests/kernel/control_harness.py", - "tests/kernel/store_conformance.py", - "tests/kernel/test_authorization.py", - "tests/kernel/test_contract_fingerprints.py", - "tests/kernel/test_contracts.py", - "tests/kernel/test_control.py", - "tests/kernel/test_control_audit.py", - "tests/kernel/test_degradation_diagnostics.py", - "tests/kernel/test_ingress_convergence.py", - "tests/kernel/test_kernel_http_ingress.py", - "tests/kernel/test_memory_store.py", - "tests/kernel/test_postgres_store.py", - "tests/kernel/test_production_bootstrap.py", - "tests/kernel/test_recovery.py", - "tests/kernel/test_recovery_settlement.py", - "tests/kernel/test_runtime_identity.py", - "tests/kernel/test_session_quarantine.py", - "tests/kernel/test_sqlite_store.py", - "tests/kernel/test_worker.py", - "tests/long_task/__init__.py", - "tests/long_task/test_checkpoint_resume.py", - "tests/long_task/test_runtime_cancel.py", - "tests/long_task/test_tool_idempotency.py", - "tests/memory/__init__.py", - "tests/memory/test_memory_v2_contract.py", - "tests/memory/test_resolved_memory_policy.py", - "tests/mock_responses_server.py", - "tests/model_proxy/__init__.py", - "tests/model_proxy/test_bootstrap.py", - "tests/model_proxy/test_cache.py", - "tests/model_proxy/test_detect.py", - "tests/model_proxy/test_gate.py", - "tests/model_proxy/test_namespace.py", - "tests/model_proxy/test_server.py", - "tests/model_proxy/test_streamer.py", - "tests/model_proxy/test_transform.py", - "tests/observability/test_session_log.py", - "tests/observability/test_trajectory.py", - "tests/phase1/__init__.py", - "tests/phase1/canary_app.py", - "tests/phase1/canary_hosted_app.py", - "tests/phase1/conftest.py", - "tests/phase1/test_agent_kernel_preprod_e2e.py", - "tests/phase1/test_agent_kernel_split_brain.py", - "tests/phase1/test_canary_app_contract.py", - "tests/phase1/test_collect_phase1_live_deployment.py", - "tests/phase1/test_contract_digest_preprod.py", - "tests/phase1/test_local_closure.py", - "tests/phase1/test_managed_pg_matrix.py", - "tests/phase1/test_phase1_gate.py", - "tests/phase1/test_preprod_config.py", - "tests/prompts/test_prompt_compiler.py", - "tests/prompts/test_prompt_models.py", - "tests/prompts/test_prompt_sources.py", - "tests/prompts/test_resolved_prompt_projection.py", - "tests/prompts/test_resolved_prompt_sources.py", - "tests/protocol/__init__.py", - "tests/protocol/test_cross_projection_golden.py", - "tests/release/test_phase1_baseline.py", - "tests/release/test_runtime_event_v2_release_gate.py", - "tests/runners/test_adapter_interface.py", - "tests/runners/test_adk_approval_surface.py", - "tests/runners/test_adk_runner.py", - "tests/runners/test_checkpoint_capability_honesty.py", - "tests/runners/test_codex_runtime_adapter.py", - "tests/runners/test_codex_sdk_surface.py", - "tests/runners/test_langchain_hitl_langgraph.py", - "tests/runners/test_langgraph_observability.py", - "tests/runners/test_langgraph_runner_projection.py", - "tests/runners/test_runtime_resume_cancel_e2e.py", - "tests/runtime/test_capability_matrix.py", - "tests/runtime/test_conversation_execution.py", - "tests/runtime/test_default_factory.py", - "tests/runtime/test_executor.py", - "tests/runtime/test_hosted_finalizer.py", - "tests/runtime/test_kernel_start_request_defaults.py", - "tests/runtime/test_preprocessing.py", - "tests/runtime/test_registry.py", - "tests/runtime/test_responses_streaming.py", - "tests/runtime/test_trajectory_events.py", - "tests/server/test_app_factory.py", - "tests/server/test_app_factory_a2a.py", - "tests/server/test_app_factory_agui.py", - "tests/server/test_app_factory_isolation.py", - "tests/server/test_route_manifest_parity.py", - "tests/server/test_runtime_executor_routes.py", - "tests/server/test_server_exports_runtime_adapter.py", - "tests/server/test_ui_bootstrap_agui.py", - "tests/skills/__init__.py", - "tests/skills/test_adk_runner_skill_runtime.py", - "tests/skills/test_loader_and_tools.py", - "tests/skills/test_package_store.py", - "tests/skills/test_runtime.py", - "tests/skills/test_runtime_agent.py", - "tests/skills/test_service_client_http.py", - "tests/skills/test_skill_service_client.py", - "tests/skills/test_skill_space_routing.py", - "tests/skills/test_web_artifacts_fixture.py", - "tests/snapshots/error_hint_snapshots.txt", - "tests/snapshots/help_snapshots.txt", - "tests/snapshots/resource_output_snapshots.txt", - "tests/snapshots/workflow_help_snapshots.txt", - "tests/studio/__init__.py", - "tests/studio/e2e/fake_studio_server.py", - "tests/studio/e2e/fixtures/review_workspace/src/demo.py", - "tests/studio/e2e/pcm_browser_smoke.py", - "tests/studio/e2e/test_codex_xingliu_demo.py", - "tests/studio/runtime_adapter_fixtures.py", - "tests/studio/test_agent_budget_chain.py", - "tests/studio/test_api.py", - "tests/studio/test_authoring.py", - "tests/studio/test_builder.py", - "tests/studio/test_cli_studio.py", - "tests/studio/test_cloud_chat_api.py", - "tests/studio/test_codex_api.py", - "tests/studio/test_codex_authoring.py", - "tests/studio/test_codex_authoring_integration.py", - "tests/studio/test_codex_builder.py", - "tests/studio/test_codex_manifest.py", - "tests/studio/test_codex_run_spec.py", - "tests/studio/test_codex_static.py", - "tests/studio/test_contracts.py", - "tests/studio/test_direct_cloud_deployment.py", - "tests/studio/test_env_alias_unification.py", - "tests/studio/test_evaluation_build_target.py", - "tests/studio/test_evaluation_cloud.py", - "tests/studio/test_evaluation_shell.py", - "tests/studio/test_event_store.py", - "tests/studio/test_four_fixes.py", - "tests/studio/test_framework_bundle_integrity.py", - "tests/studio/test_framework_import.py", - "tests/studio/test_framework_run_prompt_ownership.py", - "tests/studio/test_hosted_kernel_bundle_preflight.py", - "tests/studio/test_manifest_resolver.py", - "tests/studio/test_model_client.py", - "tests/studio/test_multi_runtime_agents.py", - "tests/studio/test_observability_api.py", - "tests/studio/test_operations.py", - "tests/studio/test_otel_trace.py", - "tests/studio/test_pcm_contracts.py", - "tests/studio/test_pcm_e2e.py", - "tests/studio/test_pcm_evidence_api.py", - "tests/studio/test_pcm_preview_api.py", - "tests/studio/test_real_model_e2e.py", - "tests/studio/test_resource_catalog.py", - "tests/studio/test_run_service.py", - "tests/studio/test_settings.py", - "tests/studio/test_shared_web.py", - "tests/studio/test_skill_discovery.py", - "tests/studio/test_studio_mcp_runtime.py", - "tests/studio/test_templates.py", - "tests/studio/test_validator_compiler.py", - "tests/studio/test_workspace_repository.py", - "tests/test_a2a_agent_card.py", - "tests/test_a2a_cli.py", - "tests/test_a2a_integration.py", - "tests/test_a2a_toolset.py", - "tests/test_adk_resilient_session_service.py", - "tests/test_agent.py", - "tests/test_agent_access.py", - "tests/test_agentengine_client_sessions.py", - "tests/test_agentengine_toolsets.py", - "tests/test_aicp_env.py", - "tests/test_attachment_pipeline.py", - "tests/test_attachment_storage.py", - "tests/test_background_run.py", - "tests/test_build_run_input_prompt_sources.py", - "tests/test_builder_requirements_merge.py", - "tests/test_builder_runtime_requirements.py", - "tests/test_cli_dry_run.py", - "tests/test_cli_global_options.py", - "tests/test_cli_platform_refactor.py", - "tests/test_cli_root_entrypoint.py", - "tests/test_client_framework_passthrough.py", - "tests/test_client_get_agent_name.py", - "tests/test_client_http_error_logging.py", - "tests/test_client_mcp_payloads.py", - "tests/test_client_permission_precheck.py", - "tests/test_client_user_uuid_header.py", - "tests/test_client_workspace_files.py", - "tests/test_cmd_build_upload_urls.py", - "tests/test_cmd_completion.py", - "tests/test_cmd_config_wizard.py", - "tests/test_cmd_create_from_agent.py", - "tests/test_cmd_dashboard_fallback.py", - "tests/test_cmd_deploy_no_cache.py", - "tests/test_cmd_eval.py", - "tests/test_cmd_evalset.py", - "tests/test_cmd_files.py", - "tests/test_cmd_hermes.py", - "tests/test_cmd_invoke.py", - "tests/test_cmd_launch_no_cache.py", - "tests/test_cmd_mcp_no_cache.py", - "tests/test_cmd_model.py", - "tests/test_code_builder_binary_compat.py", - "tests/test_code_builder_build_info.py", - "tests/test_code_builder_pip_indexes.py", - "tests/test_code_builder_rebuild_fingerprint.py", - "tests/test_code_builder_static_assets.py", - "tests/test_compaction_pipeline.py", - "tests/test_config_root_visibility.py", - "tests/test_container_registry_credentials.py", - "tests/test_conversation_runtime.py", - "tests/test_conversation_runtime_structure.py", - "tests/test_deepagents_integration.py", - "tests/test_deepagents_runner_skill_runtime.py", - "tests/test_deploy_env_forward.py", - "tests/test_deploy_integration.py", - "tests/test_detector_accuracy.py", - "tests/test_error_utils_hints.py", - "tests/test_evaluation_a2a_adapter.py", - "tests/test_evaluation_agent_eval_client.py", - "tests/test_evaluation_auto_evaluators.py", - "tests/test_evaluation_cloud_binding.py", - "tests/test_evaluation_cloud_converter.py", - "tests/test_evaluation_cloud_service.py", - "tests/test_evaluation_contracts.py", - "tests/test_evaluation_evalset.py", - "tests/test_evaluation_evaluators.py", - "tests/test_evaluation_evidence.py", - "tests/test_evaluation_executor.py", - "tests/test_evaluation_global_config.py", - "tests/test_evaluation_local_adapter.py", - "tests/test_evaluation_storage.py", - "tests/test_evaluation_target.py", - "tests/test_events_for_agent.py", - "tests/test_help_snapshots.py", - "tests/test_hermes_container_builder.py", - "tests/test_hermes_terminal.py", - "tests/test_hermes_terminal_e2e.py", - "tests/test_identity_resolver.py", - "tests/test_json_contracts.py", - "tests/test_kop_client.py", - "tests/test_ks3_uploader_urls.py", - "tests/test_langgraph_runner_resume.py", - "tests/test_langgraph_runner_skill_runtime.py", - "tests/test_local_runtime_reexec.py", - "tests/test_long_task_pilot_validation.py", - "tests/test_mcp_regressions.py", - "tests/test_mcp_runtime.py", - "tests/test_message_projection.py", - "tests/test_model_context.py", - "tests/test_model_policy.py", - "tests/test_openai_protocol_e2e.py", - "tests/test_openclaw_env_vars.py", - "tests/test_openclaw_gateway.py", - "tests/test_orchestration_agents.py", - "tests/test_patch_langchain.py", - "tests/test_platform_memory_tools.py", - "tests/test_postgres_session_service.py", - "tests/test_prepare_ksadk_python_export.py", - "tests/test_public_secret_audit.py", - "tests/test_remote_runner.py", - "tests/test_resource_output_snapshots.py", - "tests/test_runner.py", - "tests/test_runtime_common_memory_backend.py", - "tests/test_sandbox_backend.py", - "tests/test_security_boundaries.py", - "tests/test_semantic_circuit_breaker.py", - "tests/test_server_app_fastapi_compat.py", - "tests/test_server_file_upload_parsing.py", - "tests/test_server_session_app.py", - "tests/test_server_terminal_sessions.py", - "tests/test_server_workspace_preview_security.py", - "tests/test_session_continuity.py", - "tests/test_session_title.py", - "tests/test_sessions_service.py", - "tests/test_settings_otlp_contract.py", - "tests/test_setup_environment.py", - "tests/test_stm_config.py", - "tests/test_storage_defaults.py", - "tests/test_tool_gateway.py", - "tests/test_tool_result_budget.py", - "tests/test_tracing_cloud_monitor_e2e.py", - "tests/test_tui_app.py", - "tests/test_tui_loop.py", - "tests/test_tui_stream.py", - "tests/test_ui_config_resolution.py", - "tests/test_unified_agent_ui_local.py", - "tests/test_usage_accumulator.py", - "tests/test_validate_hosted_long_task_e2e.py", - "tests/test_validate_session_failopen_e2e.py", - "tests/test_web_toolset.py", - "tests/test_workflow_common.py", - "tests/test_workflow_help_snapshots.py", - "tests/unit/conversations/test_ambient_recall_failure_guard.py", - "tests/unit/knowledge_base/test_client_env.py", - "tests/unit/knowledge_base/test_kb_recall_failure.py", - "tests/unit/memory/test_adk_memory_comprehensive.py", - "tests/unit/memory/test_long_term_memory_structured.py", - "tests/unit/memory/test_recall_failure_semantics.py" - ], - "includePolicy": { - "rootFiles": [ - ".dockerignore", - ".gitattributes", - ".github/BRANCH_PROTECTION.md", - ".github/ISSUE_TEMPLATE/bug_report.md", - ".github/ISSUE_TEMPLATE/feature_request.md", - ".github/dependabot.yml", - ".github/pull_request_template.md", - ".github/workflows/ci.yml", - ".github/workflows/codeql.yml", - ".github/workflows/pages.yml", - ".github/workflows/publish-pypi.yml", - ".github/workflows/release-check.yml", - ".github/workflows/secret-patterns.yml", - ".gitignore", - ".gitleaks.toml", - "AGENTS.md", - "CHANGELOG.md", - "CLAUDE.md", - "CONTRIBUTING.md", - "LICENSE", - "MANIFEST.in", - "Makefile", - "README.en.md", - "README.md", - "README.zh-CN.md", - "SECURITY.md", - "pyproject.toml", - "uv.lock" - ], - "prefixes": [ - "docs-site/", - "ksadk/", - "ksadk_runtime_common/" - ], - "curatedDocs": [ - "docs/maintainer-approval-record.md", - "docs/public-release-workflow.md" - ], - "curatedReferenceDocs": [ - "docs/reference/ksadk环境变量参考.md" - ], - "scripts": [ - "scripts/audit_release_artifacts.py", - "scripts/build_alias_distribution.py", - "scripts/check_approval_record.py", - "scripts/check_publication_state.py", - "scripts/check_release_version.py", - "scripts/generate_public_assets.py", - "scripts/open_source_audit.py", - "scripts/prepare_ksadk_python_export.py", - "scripts/prepare_ksadk_web_export.py", - "scripts/public_secret_audit.py", - "scripts/verify_ksadk_web_static.py" - ], - "tests": [ - "tests/cli/test_cmd_create_codex.py", - "tests/conftest.py", - "tests/events/fixtures/runtime_projection_golden.json", - "tests/runners/test_adapter_contract.py", - "tests/runners/test_codex_runner.py", - "tests/studio/e2e/studio_browser_smoke.py", - "tests/studio/e2e/studio_e2e_support.py", - "tests/studio/e2e/studio_responsive_smoke.py", - "tests/studio/test_style_system.py", - "tests/test_check_approval_record.py", - "tests/test_check_publication_state.py", - "tests/test_config_env_registry.py", - "tests/test_managed_runtime_builder.py", - "tests/test_managed_runtime_native_smoke.py", - "tests/test_managed_runtime_resolution.py", - "tests/test_markdown_repair.py", - "tests/test_open_source_audit.py", - "tests/test_public_release_positioning.py", - "tests/test_runtime_common_packaging.py", - "tests/test_tracing_setup_otlp.py" - ] - }, - "notes": [ - "Local-only clean export candidate.", - "Clean export uses an allowlist policy for the first public GitHub snapshot.", - "Run public-repo audit before importing to GitHub.", - "Do not include PyPI/TestPyPI credentials, .pypirc files, or CI secrets." - ] + "exportPathCount": 1279, + "exportPolicy": { + "mode": "allowlist", + "schemaVersion": 1, + "sha256": "e9437447d631e549e5146277a47da6081201087fbd7e4449786c5007448d62dc" + } } diff --git a/ksadk/builders/managed_runtime_builder.py b/ksadk/builders/managed_runtime_builder.py index 087df2ad..c38d6a25 100644 --- a/ksadk/builders/managed_runtime_builder.py +++ b/ksadk/builders/managed_runtime_builder.py @@ -22,6 +22,9 @@ "models", "prompt", "task_prompt", + "soul", + "soul_source", + "soul_digest", "skills", "mcp_servers", "sandbox", diff --git a/ksadk/cli/__init__.py b/ksadk/cli/__init__.py index 80535994..e5f57eb9 100644 --- a/ksadk/cli/__init__.py +++ b/ksadk/cli/__init__.py @@ -77,6 +77,7 @@ def _gradient_line(text: str, colors: list) -> str: "mcp", "observe", "openclaw", + "plugin", "run", "studio", "version", @@ -102,6 +103,7 @@ def _gradient_line(text: str, colors: list) -> str: "mcp": "MCP 资源管理", "observe": "导出本地 Agent 观测数据", "openclaw": "OpenClaw 资源管理", + "plugin": "插件验证、安装与启停管理", "run": "运行 Agent", "studio": "启动本地 Agent 构建控制台", "version": "Agent 版本管理", @@ -210,6 +212,7 @@ def format_help(self, ctx, formatter): # 配置与工具 formatter.write(click.style(" 🧰 配置:\n\n", fg="yellow", bold=True)) _write_colored_help_row(formatter, "agentengine config", "项目配置向导与模型配置") + _write_colored_help_row(formatter, "agentengine plugin", "插件验证、安装与启停管理") _write_colored_help_row(formatter, "agentengine completion", "Shell 补全管理") # 自定义 Options 格式化 @@ -372,6 +375,9 @@ def _register_commands(): # MCP 命令组 _register_optional_command(cli, "ksadk.cli.cmd_mcp", "mcp") + # Plugin 命令组 + _register_optional_command(cli, "ksadk.cli.cmd_plugin", "plugin") + # Completion 命令组 _register_optional_command(cli, "ksadk.cli.cmd_completion", "completion") diff --git a/ksadk/cli/cmd_plugin.py b/ksadk/cli/cmd_plugin.py new file mode 100644 index 00000000..6c7a658e --- /dev/null +++ b/ksadk/cli/cmd_plugin.py @@ -0,0 +1,657 @@ +"""``agentengine plugin`` - DSH-native and Codex-compatible plugin management. + +The stable CLI deliberately exposes only two ecosystems. Top-level lifecycle +commands manage the active DeepSeek Harness Profile; ``plugin dsh`` remains a +compatibility alias for scripts that adopted the earlier explicit namespace. +Codex plugins stay under ``plugin codex`` because their lifecycle is owned by +Codex App Server. +""" + +from __future__ import annotations + +import asyncio +import os +from pathlib import Path +from typing import Any + +import click + +from ksadk.cli.error_utils import ( + EXIT_CODE_RESOLUTION, + EXIT_CODE_VALIDATION, + CLIError, + abort_with_cli_error, +) +from ksadk.cli.resource_common import CONTEXT_SETTINGS +from ksadk.cli.ui import emit_json, is_json_output, print_info, print_kv, print_success + +CODEX_HOME_ENV = "KSADK_CODEX_HOME" +DSH_HOME_ENV = "KSADK_DSH_HOME" +DSH_BIN_ENV = "KSADK_DSH_BIN" +DSH_PROFILE_ENV = "KSADK_DSH_PROFILE" + + +def _codex_home() -> Path: + """Use the same workspace-isolated Codex home as the local Runtime.""" + + configured = os.environ.get(CODEX_HOME_ENV, "").strip() + if configured: + return Path(configured).expanduser() + return Path.cwd() / ".agentkit" / "codex-home" + + +def _dsh_home() -> Path: + configured = os.environ.get(DSH_HOME_ENV, "").strip() + if configured: + return Path(configured).expanduser() + return Path.cwd() / ".agentkit" / "dsh-home" + + +def _dsh_command() -> tuple[str, ...] | None: + configured = os.environ.get(DSH_BIN_ENV, "").strip() + from ksadk.plugins.dsh_toolchain import DshToolchainManager + + return DshToolchainManager().require_command(configured or None) + + +def _dsh_profile() -> str: + return os.environ.get(DSH_PROFILE_ENV, "").strip() or "ksadk" + + +def _codex_inventory_payload(value: Any) -> dict[str, Any]: + """Project Codex host inventory without leaking marketplace filesystem paths.""" + + raw = value.model_dump(mode="json", by_alias=True, exclude_none=True) + return { + "ecosystem": "codex", + "integrationMode": "bridged", + "pluginId": raw["pluginId"], + "name": raw["name"], + "marketplaceName": raw["marketplaceName"], + "version": raw.get("version"), + "installed": raw["installed"], + "enabled": raw["enabled"], + "availability": raw["availability"], + "permissionsDeclared": False, + "riskDisclosures": raw.get("riskDisclosures", []), + } + + +def _dsh_inventory_payload(value: Any) -> dict[str, Any]: + return value.model_dump(mode="json", by_alias=True, exclude_none=True) + + +async def _with_codex_bridge(operation): + from ksadk.plugins.bridges.codex import CodexAppServerPluginBridge + + async with CodexAppServerPluginBridge(codex_home=_codex_home()) as bridge: + return bridge.host, await operation(bridge) + + +def _call_codex(operation): + """Run one bounded App Server lifecycle request from the synchronous CLI.""" + + try: + return asyncio.run(_with_codex_bridge(operation)) + except (KeyboardInterrupt, SystemExit): + raise + except Exception as err: + code = ( + "codex_plugin_not_found" + if type(err).__name__ == "CodexPluginNotFoundError" + else ( + "codex_plugin_permission_confirmation_required" + if type(err).__name__ == "CodexPluginApprovalRequired" + else "codex_plugin_host_unavailable" + ) + ) + abort_with_cli_error( + CLIError( + code=code, + message=( + "Codex 插件不存在或来源不唯一" + if code == "codex_plugin_not_found" + else "安装前必须确认 Codex App Server 宿主权限风险" + if code == "codex_plugin_permission_confirmation_required" + else "Codex 插件宿主当前不可用" + ), + exit_code=( + EXIT_CODE_RESOLUTION + if code == "codex_plugin_not_found" + else EXIT_CODE_VALIDATION + ), + ), + context="Plugin", + ) + + +def _call_dsh(operation): + """Run one bounded DSH Profile lifecycle request from the synchronous CLI.""" + + from ksadk.plugins.bridges.dsh import DshProfilePluginBridge + + try: + with DshProfilePluginBridge( + dsh_home=_dsh_home(), + profile=_dsh_profile(), + dsh_command=_dsh_command(), + ) as bridge: + return bridge.host, operation(bridge) + except (KeyboardInterrupt, SystemExit): + raise + except Exception as err: + name = type(err).__name__ + code = ( + "dsh_plugin_not_found" + if name == "DshPluginNotFoundError" + else "dsh_plugin_permission_confirmation_required" + if name == "DshPluginApprovalRequired" + else "dsh_plugin_operation_failed" + if name in {"DshPluginMutationError", "ValueError"} + else "dsh_plugin_host_unavailable" + ) + messages = { + "dsh_plugin_not_found": "DSH 插件未安装", + "dsh_plugin_permission_confirmation_required": ( + "安装或升级前必须确认 DSH 宿主权限风险" + ), + "dsh_plugin_operation_failed": "DSH 插件操作失败,原 Profile 已保留", + "dsh_plugin_host_unavailable": "DSH 插件宿主当前不可用", + } + abort_with_cli_error( + CLIError( + code=code, + message=messages[code], + exit_code=( + EXIT_CODE_RESOLUTION if code == "dsh_plugin_not_found" else EXIT_CODE_VALIDATION + ), + ), + context="Plugin", + ) + + +def _call_dsh_developer(operation): + """Run one bounded standard DSH bundle development operation.""" + + from ksadk.plugins.dsh_toolchain import ( + DshPluginPackError, + DshPluginSourceError, + DshPluginValidationError, + DshToolchainInstallError, + DshToolchainUnavailableError, + DshToolchainVersionMismatchError, + ) + + try: + return operation() + except (KeyboardInterrupt, SystemExit): + raise + except Exception as err: + if isinstance(err, DshToolchainVersionMismatchError): + code = "dsh_toolchain_version_mismatch" + message = "DSH 或 pnpm 版本与受支持工具链不一致" + elif isinstance(err, DshToolchainUnavailableError): + code = "dsh_toolchain_unavailable" + message = "DSH 插件开发工具链不可用" + elif isinstance(err, DshToolchainInstallError): + code = "dsh_toolchain_install_failed" + message = "DSH 插件开发工具链安装失败" + elif isinstance(err, DshPluginSourceError): + code = "dsh_plugin_source_invalid" + message = "DSH 插件源码不是有效的标准 Bundle" + elif isinstance(err, DshPluginValidationError): + code = "dsh_plugin_validation_failed" + message = "DSH 插件生命周期校验失败" + elif isinstance(err, DshPluginPackError): + code = "dsh_plugin_pack_failed" + message = "DSH 插件 npm 打包失败" + else: + raise + details = {} + stage = getattr(err, "stage", None) + if isinstance(stage, str) and stage: + details["stage"] = stage + abort_with_cli_error( + CLIError( + code=code, + message=message, + exit_code=EXIT_CODE_VALIDATION, + details=details, + ), + context="Plugin", + ) + + +@click.group("plugin", context_settings=CONTEXT_SETTINGS) +def plugin() -> None: + """管理 DSH 插件,并兼容 Codex App Server 插件。""" + + +@plugin.group("toolchain", context_settings=CONTEXT_SETTINGS) +def plugin_toolchain() -> None: + """管理固定版本、隔离安装的 DSH 插件开发工具链。""" + + +@plugin_toolchain.command("status", context_settings=CONTEXT_SETTINGS) +def plugin_toolchain_status() -> None: + """检查受管理 DSH CLI、实际版本、pnpm 和锁文件。""" + + from ksadk.plugins.dsh_toolchain import DshToolchainManager + + state = DshToolchainManager().status() + payload = state.model_dump(mode="json", by_alias=True, exclude_none=True) + if is_json_output(): + emit_json(payload) + return + print_kv("DSH", state.actual_version or state.expected_version) + print_kv("状态", "可用" if state.usable else "未安装或不完整") + print_kv("目录", state.root) + if state.problem: + print_kv("问题", state.problem) + + +@plugin_toolchain.command("install", context_settings=CONTEXT_SETTINGS) +def install_plugin_toolchain() -> None: + """从 npm 安装受支持的 DSH CLI;不需要 DSH 源码仓。""" + + from ksadk.plugins.dsh_toolchain import DshToolchainManager + + state = _call_dsh_developer(lambda: DshToolchainManager().install()) + payload = state.model_dump(mode="json", by_alias=True, exclude_none=True) + if is_json_output(): + emit_json(payload) + else: + print_success(f"DSH 插件开发工具链已就绪: {state.actual_version}") + print_kv("目录", state.root) + + +@plugin.command("create", context_settings=CONTEXT_SETTINGS) +@click.argument("target", type=click.Path(path_type=Path)) +@click.option("--name", "package_name", default=None, help="标准 npm 包名。") +def create_dsh_plugin(target: Path, package_name: str | None) -> None: + """创建标准 DSH Bundle;不会生成 KsADK 私有 manifest。""" + + from ksadk.plugins.dsh_toolchain import DshPluginDeveloper + + result = _call_dsh_developer( + lambda: DshPluginDeveloper().create(target, package_name=package_name) + ) + payload = result.model_dump(mode="json", by_alias=True) + if is_json_output(): + emit_json(payload) + else: + print_success(f"DSH 插件已创建: {result.package_name}") + print_kv("目录", result.target) + + +@plugin.command("validate", context_settings=CONTEXT_SETTINGS) +@click.argument("source") +def validate_dsh_plugin(source: str) -> None: + """在临时 Profile 验证安装、投射、启停与卸载生命周期。""" + + from ksadk.plugins.dsh_toolchain import DshPluginDeveloper + + configured = os.environ.get(DSH_BIN_ENV, "").strip() or None + result = _call_dsh_developer( + lambda: DshPluginDeveloper(explicit_dsh=configured).validate(source) + ) + payload = result.model_dump(mode="json", by_alias=True) + if is_json_output(): + emit_json(payload) + else: + print_success(f"DSH 插件生命周期已通过: {result.package_name}") + print_kv("DSH", result.host_version) + print_kv("Profile 摘要", result.profile_digest) + + +@plugin.command("test", context_settings=CONTEXT_SETTINGS) +@click.argument("source") +def test_dsh_plugin(source: str) -> None: + """运行真实 DSH 生命周期 smoke;不冒充 Provider conformance。""" + + validate_dsh_plugin.callback(source) # type: ignore[attr-defined] + + +@plugin.command("pack", context_settings=CONTEXT_SETTINGS) +@click.argument("source", type=click.Path(path_type=Path)) +@click.option( + "--output-dir", + type=click.Path(path_type=Path), + default=None, + help="npm tarball 输出目录,默认 SOURCE/dist。", +) +def pack_dsh_plugin(source: Path, output_dir: Path | None) -> None: + """委托固定 pnpm 将标准 DSH Bundle 打包成 npm tgz。""" + + from ksadk.plugins.dsh_toolchain import DshPluginDeveloper + + result = _call_dsh_developer( + lambda: DshPluginDeveloper().pack(source, output_dir=output_dir) + ) + payload = result.model_dump(mode="json", by_alias=True) + if is_json_output(): + emit_json(payload) + else: + print_success(f"DSH 插件已打包: {result.package_name}@{result.package_version}") + print_kv("产物", result.artifact) + + +@plugin.group("codex", context_settings=CONTEXT_SETTINGS) +def codex_plugins() -> None: + """通过 Codex App Server 管理 Codex 官方插件。""" + + +@codex_plugins.command("list", context_settings=CONTEXT_SETTINGS) +@click.option("--installed-only", is_flag=True, help="只显示已安装插件。") +@click.option("--force-refetch", is_flag=True, help="请求宿主刷新插件目录。") +def list_codex_plugins(installed_only: bool, force_refetch: bool) -> None: + """列出 Codex 宿主可见的官方插件。""" + + async def operation(bridge): + return await bridge.list_plugins(force_refetch=force_refetch) + + host, items = _call_codex(operation) + visible = [item for item in items if item.installed or not installed_only] + payload = { + "ecosystem": "codex", + "integrationMode": "bridged", + "host": {"id": "codex-app-server", "version": host.version, "available": True}, + "items": [_codex_inventory_payload(item) for item in visible], + } + if is_json_output(): + emit_json(payload) + return + print_info(f"Codex App Server {host.version} · {len(visible)} 个插件") + for item in payload["items"]: + state = "已安装" if item["installed"] else "可安装" + click.echo(f"{item['pluginId']} {item.get('version') or '-'} {state}") + + +@codex_plugins.command("info", context_settings=CONTEXT_SETTINGS) +@click.argument("plugin_id") +@click.option("--marketplace", "marketplace_name", default=None) +def codex_plugin_info(plugin_id: str, marketplace_name: str | None) -> None: + """显示一个 Codex 插件的宿主 inventory 和能力。""" + + async def operation(bridge): + return await bridge.read_plugin(plugin_id, marketplace_name=marketplace_name) + + host, detail = _call_codex(operation) + payload = { + "item": _codex_inventory_payload(detail.inventory), + "host": {"id": "codex-app-server", "version": host.version, "available": True}, + "description": detail.description, + "capabilities": { + "skills": list(detail.skills), + "mcpServers": list(detail.mcp_servers), + "hooks": list(detail.hooks), + "apps": list(detail.apps), + "scheduledTasks": list(detail.scheduled_tasks), + }, + } + if is_json_output(): + emit_json(payload) + else: + print_success(f"Codex 插件: {plugin_id}") + print_kv("宿主", f"Codex App Server {host.version}") + print_kv("状态", "已安装" if detail.inventory.installed else "可安装") + + +@codex_plugins.command("install", context_settings=CONTEXT_SETTINGS) +@click.argument("plugin_id") +@click.option("--marketplace", "marketplace_name", default=None) +@click.option( + "--accept-host-permissions", + is_flag=True, + help="确认插件权限由 Codex 宿主管理并以当前系统用户权限运行。", +) +def install_codex_plugin( + plugin_id: str, + marketplace_name: str | None, + accept_host_permissions: bool, +) -> None: + """安装一个 Codex 官方插件;必须显式确认宿主权限风险。""" + + if not accept_host_permissions: + abort_with_cli_error( + CLIError( + code="codex_plugin_permission_confirmation_required", + message="安装前必须传入 --accept-host-permissions 确认宿主权限风险", + exit_code=EXIT_CODE_VALIDATION, + ), + context="Plugin", + ) + + async def operation(bridge): + return await bridge.install_plugin( + plugin_id, + marketplace_name=marketplace_name, + accept_undeclared_permissions=True, + ) + + host, result = _call_codex(operation) + payload = { + "item": _codex_inventory_payload(result.inventory), + "host": {"id": "codex-app-server", "version": host.version, "available": True}, + "authPolicy": result.auth_policy, + "appsNeedingAuth": list(result.apps_needing_auth), + } + if is_json_output(): + emit_json(payload) + else: + print_success(f"Codex 插件已安装: {result.inventory.plugin_id}") + + +@codex_plugins.command("uninstall", context_settings=CONTEXT_SETTINGS) +@click.argument("plugin_id") +def uninstall_codex_plugin(plugin_id: str) -> None: + """请求 Codex App Server 卸载插件。""" + + async def operation(bridge): + return await bridge.uninstall_plugin(plugin_id) + + host, result = _call_codex(operation) + payload = { + "ecosystem": "codex", + "integrationMode": "bridged", + "pluginId": result.plugin_id, + "installed": False, + "enabled": False, + "host": {"id": "codex-app-server", "version": host.version, "available": True}, + } + if is_json_output(): + emit_json(payload) + else: + print_success(f"Codex 插件已卸载: {plugin_id}") + + +@plugin.group("dsh", context_settings=CONTEXT_SETTINGS) +def dsh_plugins() -> None: + """通过原生 DeepSeek Harness Profile 管理 DSH 插件。""" + + +@dsh_plugins.command("list", context_settings=CONTEXT_SETTINGS) +def list_dsh_plugins() -> None: + """列出当前隔离 Profile 中的 DSH bundle。""" + + host, items = _call_dsh(lambda bridge: bridge.list_plugins()) + payload = { + "ecosystem": "dsh", + "integrationMode": "bridged", + "profile": _dsh_profile(), + "host": {"id": host.host_id, "version": host.version, "available": True}, + "items": [_dsh_inventory_payload(item) for item in items], + } + if is_json_output(): + emit_json(payload) + return + print_info(f"DeepSeek Harness {host.version} · {len(items)} 个 Profile 插件") + for item in payload["items"]: + state = "已启用" if item["enabled"] else "已停用" + click.echo(f"{item['name']} {item.get('version') or '-'} {state}") + + +@dsh_plugins.command("info", context_settings=CONTEXT_SETTINGS) +@click.argument("plugin_name") +def dsh_plugin_info(plugin_name: str) -> None: + """显示一个 DSH 插件的原生 Profile inventory。""" + + host, item = _call_dsh(lambda bridge: bridge.get_plugin(plugin_name)) + payload = { + "item": _dsh_inventory_payload(item), + "host": {"id": host.host_id, "version": host.version, "available": True}, + } + if is_json_output(): + emit_json(payload) + else: + print_success(f"DSH 插件: {plugin_name}") + print_kv("状态", "已启用" if item.enabled else "已停用") + + +@dsh_plugins.command("install", context_settings=CONTEXT_SETTINGS) +@click.argument("source") +@click.option( + "--accept-host-permissions", + is_flag=True, + help="确认 DSH 包与安装脚本会以当前宿主用户权限运行。", +) +def install_dsh_plugin(source: str, accept_host_permissions: bool) -> None: + """把一个 DSH bundle 安装到隔离 Profile;安装后默认停用。""" + + if not accept_host_permissions: + abort_with_cli_error( + CLIError( + code="dsh_plugin_permission_confirmation_required", + message="安装前必须传入 --accept-host-permissions 确认宿主权限风险", + exit_code=EXIT_CODE_VALIDATION, + ), + context="Plugin", + ) + host, item = _call_dsh( + lambda bridge: bridge.install_plugin(source, accept_host_permissions=True) + ) + payload = { + "item": _dsh_inventory_payload(item), + "host": {"id": host.host_id, "version": host.version, "available": True}, + } + if is_json_output(): + emit_json(payload) + else: + print_success(f"DSH 插件已安装并保持停用: {item.name};请显式执行 enable") + + +@dsh_plugins.command("enable", context_settings=CONTEXT_SETTINGS) +@click.argument("plugin_name") +def enable_dsh_plugin(plugin_name: str) -> None: + """在 DSH Profile 中启用已安装的 bundle。""" + + host, item = _call_dsh(lambda bridge: bridge.set_enabled(plugin_name, enabled=True)) + payload = { + "item": _dsh_inventory_payload(item), + "host": {"id": host.host_id, "version": host.version, "available": True}, + } + if is_json_output(): + emit_json(payload) + else: + print_success(f"DSH 插件已启用: {plugin_name}") + + +@dsh_plugins.command("disable", context_settings=CONTEXT_SETTINGS) +@click.argument("plugin_name") +def disable_dsh_plugin(plugin_name: str) -> None: + """从 DSH Profile 组合中停用 bundle,但保留已安装包。""" + + host, item = _call_dsh(lambda bridge: bridge.set_enabled(plugin_name, enabled=False)) + payload = { + "item": _dsh_inventory_payload(item), + "host": {"id": host.host_id, "version": host.version, "available": True}, + } + if is_json_output(): + emit_json(payload) + else: + print_success(f"DSH 插件已停用: {plugin_name}") + + +@dsh_plugins.command("update", context_settings=CONTEXT_SETTINGS) +@click.argument("plugin_name") +@click.option( + "--accept-host-permissions", + is_flag=True, + help="确认升级后的包与安装脚本会以当前宿主用户权限运行。", +) +def update_dsh_plugin(plugin_name: str, accept_host_permissions: bool) -> None: + """由 DSH/pnpm 更新一个插件;失败时恢复旧 Profile。""" + + if not accept_host_permissions: + abort_with_cli_error( + CLIError( + code="dsh_plugin_permission_confirmation_required", + message="升级前必须传入 --accept-host-permissions 确认宿主权限风险", + exit_code=EXIT_CODE_VALIDATION, + ), + context="Plugin", + ) + host, item = _call_dsh( + lambda bridge: bridge.update_plugin(plugin_name, accept_host_permissions=True) + ) + payload = { + "item": _dsh_inventory_payload(item), + "host": {"id": host.host_id, "version": host.version, "available": True}, + } + if is_json_output(): + emit_json(payload) + else: + print_success(f"DSH 插件已更新: {plugin_name}") + + +@dsh_plugins.command("uninstall", context_settings=CONTEXT_SETTINGS) +@click.argument("plugin_name") +def uninstall_dsh_plugin(plugin_name: str) -> None: + """从 DSH Profile 卸载一个 bundle。""" + + host, _ = _call_dsh(lambda bridge: bridge.uninstall_plugin(plugin_name)) + payload = { + "ecosystem": "dsh", + "integrationMode": "bridged", + "profile": _dsh_profile(), + "name": plugin_name, + "installed": False, + "enabled": False, + "host": {"id": host.host_id, "version": host.version, "available": True}, + } + if is_json_output(): + emit_json(payload) + else: + print_success(f"DSH 插件已卸载: {plugin_name}") + + +@dsh_plugins.command("profile", context_settings=CONTEXT_SETTINGS) +def dsh_profile_info() -> None: + """预检并显示当前 DSH Profile 的无 Secret 配置摘要。""" + + host, projection = _call_dsh(lambda bridge: bridge.project_profile()) + payload = { + "profile": projection.model_dump(mode="json", by_alias=True), + "host": {"id": host.host_id, "version": host.version, "available": True}, + } + if is_json_output(): + emit_json(payload) + else: + print_success(f"DSH Profile 已通过预检: {projection.profile}") + print_kv("配置摘要", projection.config_digest) + + +# DSH is the canonical plugin ecosystem. Reuse the exact same Click command +# objects at the top level so output, validation and typed errors cannot drift +# between ``plugin list`` and the compatibility alias ``plugin dsh list``. +for _dsh_command_alias in ( + list_dsh_plugins, + dsh_plugin_info, + install_dsh_plugin, + enable_dsh_plugin, + disable_dsh_plugin, + update_dsh_plugin, + uninstall_dsh_plugin, + dsh_profile_info, +): + plugin.add_command(_dsh_command_alias) diff --git a/ksadk/codex/runtime.py b/ksadk/codex/runtime.py index 8f0fb447..ac7c9905 100644 --- a/ksadk/codex/runtime.py +++ b/ksadk/codex/runtime.py @@ -107,11 +107,13 @@ def __init__( *, sandbox_read_only: bool = True, turn_timeout_seconds: Optional[float] = None, + bound_skill_paths: Mapping[str, str] | None = None, ) -> None: super().__init__(_CodexAsBaseRuntime(client)) self._client = client self._sandbox_read_only = sandbox_read_only self._turn_timeout_seconds = turn_timeout_seconds + self._bound_skill_paths = dict(bound_skill_paths or {}) self._threads: dict[str, _CodexThread] = {} self._requests: dict[str, StartRequest] = {} self._known_threads: set[str] = set() @@ -147,6 +149,7 @@ def _unavailable(reason: str) -> RuntimeCapability: goal=RuntimeCapability(supported=True, mode="native"), loop=_unavailable("codex_loop_requires_run_control_spec"), plan=RuntimeCapability(supported=True, mode="native"), + interaction_mode="live_submit", ) # ---- 六动词 ---- @@ -154,6 +157,25 @@ def _unavailable(reason: str) -> RuntimeCapability: async def start(self, request: StartRequest) -> RunHandle: # 新 thread 由后端分配真实 thread_id(thread_start);metadata 携带的 thread_id # 表示接入既有 thread(resume 语义,run_turn 时按 resume 接入)。 + if self._bound_skill_paths: + skills = request.config.get("skills") if request.config else None + if isinstance(skills, list): + projected_skills = [] + for item in skills: + if not isinstance(item, dict): + continue + name = str(item.get("name") or "").strip() + projected_skills.append( + { + **item, + "path": self._bound_skill_paths.get( + name, str(item.get("path") or "") + ), + } + ) + request = request.model_copy( + update={"config": {**request.config, "skills": projected_skills}} + ) provided = request.metadata.get("thread_id") if provided: thread_id = str(provided) @@ -353,23 +375,43 @@ async def checkpoint(self, handle: RunHandle) -> CheckpointDescriptor: ) async def close(self, handle: RunHandle) -> None: + self._do_not_persist.add(handle.run_id) + await self.close_all() + + async def close_all(self) -> None: + """Dispose every thread and the activation-owned App Server process. + + One ``CodexRuntimeAdapter`` owns one client transport. Closing any + attached Kernel handle therefore closes the transport as a unit; this + additive helper also lets a draining AgentProvider clean up a runtime + that has been created but not started yet. + """ + if self._closed: return self._closed = True - thread = self._threads.pop(handle.run_id, None) - self._requests.pop(handle.run_id, None) - active = thread is not None and thread.streaming and not thread.done - if active: + threads = tuple(self._threads.values()) + active_threads = tuple( + thread for thread in threads if thread.streaming and not thread.done + ) + for thread in active_threads: thread.interrupt_event.set() try: - if active: + for thread in active_threads: await self._client.interrupt_active_turn(thread.thread_id) finally: # AsyncCodex.close owns terminate/wait/kill for the app-server child. await self._client.close() - self._do_not_persist.add(handle.run_id) - self._known_threads.discard(handle.run_id) - self._pending_cancels.discard(handle.run_id) + thread_ids = { + *self._known_threads, + *self._threads, + *self._requests, + } + self._do_not_persist.update(thread_ids) + self._threads.clear() + self._requests.clear() + self._known_threads.clear() + self._pending_cancels.clear() # ---- stream → RuntimeEvent(phase 翻译 + 中断竞速) ---- diff --git a/ksadk/configs/env_registry.py b/ksadk/configs/env_registry.py index 3dc5fb1a..508e69d3 100644 --- a/ksadk/configs/env_registry.py +++ b/ksadk/configs/env_registry.py @@ -232,6 +232,28 @@ "Isolate native Codex state under the project workspace; set to 0 for debugging only.", "1", ), + EnvVarSpec( + "KSADK_DSH_BIN", + "plugins", + ( + "Optional absolute path to the managed DSH command; must match the pinned " + "toolchain version." + ), + ), + EnvVarSpec( + "KSADK_DSH_HOME", + "plugins", + ( + "Directory containing the isolated DSH Profile; defaults to .agentkit/dsh-home " + "in the workspace." + ), + ), + EnvVarSpec( + "KSADK_DSH_PROFILE", + "plugins", + "DSH Profile name used by Studio and the plugin bridge.", + "studio", + ), EnvVarSpec( "KSADK_STUDIO_NO_SECURITY", "studio", @@ -356,7 +378,10 @@ EnvVarSpec( "KSADK_LANGGRAPH_AUTO_CHECKPOINT", "sessions", - "Allow a hosted LangGraph runner to rebuild a factory-exported graph with the managed PostgreSQL saver.", + ( + "Allow a hosted LangGraph runner to rebuild a factory-exported graph with the " + "managed PostgreSQL saver." + ), "false", ), EnvVarSpec( @@ -640,7 +665,10 @@ EnvVarSpec( "KSADK_AGENT_KERNEL", "kernel", - "Opt in to Agent Kernel ingress locally; managed deployment may use AGENT_KERNEL_ENABLED instead.", + ( + "Opt in to Agent Kernel ingress locally; managed deployment may use " + "AGENT_KERNEL_ENABLED instead." + ), "false", ), EnvVarSpec("KSADK_SESSION_PATH", "sessions", "Conversation local SQLite database path."), @@ -810,7 +838,7 @@ "KSADK_WEB_VERSION", "web", "Published KsADK Web npm version used for a reproducible wheel build.", - "0.3.2", + "0.3.3", ), EnvVarSpec( "KSADK_WORKING_SET_MAX_FILES", diff --git a/ksadk/context_engine/contributors.py b/ksadk/context_engine/contributors.py index 671e84c0..4a5ffa0b 100644 --- a/ksadk/context_engine/contributors.py +++ b/ksadk/context_engine/contributors.py @@ -24,6 +24,14 @@ ContributorFailureMode = Literal["skip", "warn", "fail"] ContributorCacheability = Literal["stable", "turn", "none"] +_TRUST_RANK: dict[ContextTrustLevel, int] = { + "untrusted": 0, + "user": 1, + "resource": 2, + "developer": 3, + "platform": 4, +} + @dataclass(frozen=True) class ContributorCapabilities: @@ -131,13 +139,15 @@ async def contribute(self, request: ContextContributionRequest) -> list[ContextI return [] items: list[ContextItem] = [] for index, section in enumerate(sections): + raw_tokens = section.metadata.get("tokens", 0) + tokens = int(raw_tokens) if isinstance(raw_tokens, (int, str)) else 0 items.append( _make_item( contributor_id=self.capabilities.contributor_id, trust_level=self.capabilities.trust_level, kind="resource_manifest", content=section.content, - tokens=int(section.metadata.get("tokens", 0)) or 1, + tokens=tokens or 1, source=section.source, metadata={"path": section.metadata.get("path"), "kind": "rule_file"}, ) @@ -267,6 +277,60 @@ class ContributionResult: warnings: tuple[str, ...] +def _admit_contribution_items( + contributor: ContextContributor, + items: object, +) -> tuple[list[ContextItem], str | None]: + """Validate one Contributor result and enforce its declared token ceiling. + + A Contributor is an untrusted capability boundary. It cannot promote an + item above the trust level granted at registration, mark context as + required, return duplicate identities, or make the Host confuse token + counts with list indexes. Items that do not fit the declared budget are + deterministically omitted while later, smaller items may still fit. + """ + + if not isinstance(items, list) or not all(isinstance(item, ContextItem) for item in items): + raise TypeError("ContextContributor must return a list of ContextItem values") + + capabilities = contributor.capabilities + if capabilities.max_tokens < 0: + raise ValueError("ContextContributor max_tokens cannot be negative") + if capabilities.timeout_ms <= 0: + raise ValueError("ContextContributor timeout_ms must be positive") + + admitted: list[ContextItem] = [] + seen_ids: set[str] = set() + used_tokens = 0 + omitted = 0 + maximum_trust = _TRUST_RANK[capabilities.trust_level] + for item in items: + if not item.item_id or item.item_id in seen_ids: + raise ValueError("ContextContributor item ids must be non-empty and unique") + seen_ids.add(item.item_id) + if item.required: + raise ValueError("ContextContributor cannot mark context as required") + if _TRUST_RANK[item.trust_level] > maximum_trust: + raise ValueError( + "ContextContributor cannot elevate item trust above its registered level" + ) + if item.estimated_tokens < 0: + raise ValueError("ContextContributor estimated_tokens cannot be negative") + if used_tokens + item.estimated_tokens > capabilities.max_tokens: + omitted += 1 + continue + admitted.append(item) + used_tokens += item.estimated_tokens + + warning = None + if omitted: + warning = ( + f"{contributor.id()}: omitted {omitted} context item(s) that exceeded " + f"the {capabilities.max_tokens}-token contributor budget" + ) + return admitted, warning + + async def run_contributors( contributors: Sequence[ContextContributor], request: ContextContributionRequest, @@ -284,24 +348,25 @@ async def run_contributors( async def _run_one(c: ContextContributor) -> tuple[str, list[ContextItem], str, str | None]: timeout = max(c.capabilities.timeout_ms, 1) / 1000.0 try: - items = await asyncio.wait_for(c.contribute(request), timeout=timeout) + raw_items = await asyncio.wait_for(c.contribute(request), timeout=timeout) + items, budget_warning = _admit_contribution_items(c, raw_items) except asyncio.TimeoutError: return c.id(), [], "timeout", f"{c.id()}: timeout" except Exception as exc: # noqa: BLE001 if c.capabilities.failure_mode == "fail": raise - return c.id(), [], "error", f"{c.id()}: {exc}" - # 单 Contributor 总 token 约束 - if items and sum(i.estimated_tokens for i in items) > c.capabilities.max_tokens: - items = items[: c.capabilities.max_tokens] # best-effort 限条数 - return c.id(), items, "ok", None + warning = f"{c.id()}: {exc}" if c.capabilities.failure_mode == "warn" else None + return c.id(), [], "error", warning + return c.id(), items, "ok", budget_warning results = await asyncio.gather(*[_run_one(c) for c in contributors], return_exceptions=True) all_items: list[ContextItem] = [] status: dict[str, str] = {} warnings: list[str] = [] for contributor, r in zip(contributors, results): - if isinstance(r, Exception): + if isinstance(r, BaseException): + if isinstance(r, asyncio.CancelledError): + raise r if contributor.capabilities.failure_mode == "fail": raise r warnings.append(f"{contributor.id()}: {r}") diff --git a/ksadk/conversations/__init__.py b/ksadk/conversations/__init__.py index 9b34e68b..0fef0ec5 100644 --- a/ksadk/conversations/__init__.py +++ b/ksadk/conversations/__init__.py @@ -11,6 +11,25 @@ def _exports(module: str, *names: str) -> dict[str, tuple[str, str]]: _EXPORTS = { + **_exports( + "ksadk.conversations.contracts", + "ConversationCapability", + "ConversationInput", + "ConversationAttachmentPart", + "ConversationItem", + "ConversationSurface", + "ConversationTextPart", + "validate_conversation_input", + "validate_surface_input", + ), + **_exports( + "ksadk.conversations.projector", + "project_conversation_item", + ), + **_exports( + "ksadk.conversations.reducer", + "ConversationItemReducer", + ), **_exports( "ksadk.conversations.attachments", "decode_inline_data", diff --git a/ksadk/conversations/context.py b/ksadk/conversations/context.py index 58c70d12..2043d805 100644 --- a/ksadk/conversations/context.py +++ b/ksadk/conversations/context.py @@ -5,6 +5,8 @@ from collections.abc import Mapping, Sequence from typing import Any, Dict, Iterable, List +from ksadk.events.canonical import ItemCompleted, parse_runtime_event +from ksadk.events.content import TextContent from ksadk.sessions.base import SessionEvent from ksadk.tools.result_budget import ( ToolResultBudget, @@ -99,6 +101,60 @@ def extract_event_text(event: SessionEvent) -> str: ) +def _canonical_completed_message( + event: SessionEvent, +) -> tuple[str, str, tuple[str, str]] | None: + """Return one canonical assistant message without flattening its identity. + + Canonical RuntimeEvents are persisted inside the existing ``SessionEvent`` + carrier. Legacy transcript projection only inspects carrier-level fields, + so an ``item.completed`` message otherwise disappears from the next turn's + history. The canonical event id and ``(scope_id, item_id)`` are both kept: + replays are idempotent, while equal text from different items remains + distinct. + """ + + raw = (event.content or {}).get("runtime_event") + if not isinstance(raw, Mapping): + return None + try: + canonical = parse_runtime_event(dict(raw)) + except (TypeError, ValueError): + return None + if ( + not isinstance(canonical, ItemCompleted) + or canonical.item_kind != "message" + or event.event_type != canonical.event_type + ): + return None + text = sanitize_event_text_for_context( + "".join( + part.text for part in canonical.snapshot.parts if isinstance(part, TextContent) + ) + ) + if not text: + return None + return canonical.event_id, text, (canonical.scope_id, canonical.item_id) + + +def _transcript_event_projection( + event: SessionEvent, +) -> tuple[str, str, tuple[str, tuple[str, str]] | None]: + canonical_message = _canonical_completed_message(event) + if canonical_message is not None: + event_id, text, item_identity = canonical_message + return "assistant_message", text, (event_id, item_identity) + return ( + canonical_event_type( + event.event_type, + author=event.author, + role=str((event.content or {}).get("role") or ""), + ), + extract_event_text(event), + None, + ) + + def canonical_event_type( event_type: str | None, *, @@ -276,6 +332,8 @@ def summarize_event_groups( 因此跨消息提取修正,并在预算上限内保留最新长指令首尾(方案 §9.4)。 """ lines: List[str] = [] + seen_canonical_event_ids: set[str] = set() + seen_canonical_items: set[tuple[str, str]] = set() if previous_summary: lines.append(previous_summary) lines.append("Earlier conversation summary:") @@ -284,14 +342,18 @@ def summarize_event_groups( for group in groups: snippets: List[str] = [] for event in group: - event_type = canonical_event_type( - event.event_type, - author=event.author, - role=str((event.content or {}).get("role") or ""), - ) + event_type, text, canonical_identity = _transcript_event_projection(event) + if canonical_identity is not None: + event_id, item_identity = canonical_identity + if ( + event_id in seen_canonical_event_ids + or item_identity in seen_canonical_items + ): + continue + seen_canonical_event_ids.add(event_id) + seen_canonical_items.add(item_identity) if event_type not in TRANSCRIPT_EVENT_TYPES or event_type == "context_checkpoint": continue - text = extract_event_text(event) if not text: continue if event_type in {"assistant_message", "tool_call"}: @@ -343,6 +405,9 @@ def project_model_messages( """ projected: List[Dict[str, str]] = [] placeholder_flags: list[bool] = [] + identity_boundary_flags: list[bool] = [] + seen_canonical_event_ids: set[str] = set() + seen_canonical_items: set[tuple[str, str]] = set() compacted_until = compacted_until_seq_id(events) checkpoint = next( ( @@ -362,21 +427,26 @@ def project_model_messages( } ) placeholder_flags.append(False) + identity_boundary_flags.append(False) for event in events: - event_type = canonical_event_type( - event.event_type, - author=event.author, - role=str((event.content or {}).get("role") or ""), - ) + event_type, text, canonical_identity = _transcript_event_projection(event) if event.seq_id <= compacted_until and event_type != "context_checkpoint": continue if event_type not in TRANSCRIPT_EVENT_TYPES: continue if event_type in {"context_checkpoint", "compaction_boundary"}: continue + if canonical_identity is not None: + event_id, item_identity = canonical_identity + if ( + event_id in seen_canonical_event_ids + or item_identity in seen_canonical_items + ): + continue + seen_canonical_event_ids.add(event_id) + seen_canonical_items.add(item_identity) - text = extract_event_text(event) if not text: continue @@ -405,12 +475,15 @@ def project_model_messages( projected and projected[-1]["role"] == role and not placeholder_flags[-1] + and not identity_boundary_flags[-1] and not is_placeholder + and canonical_identity is None ): projected[-1]["content"] = f"{projected[-1]['content']}\n{text}".strip() else: projected.append({"role": role, "content": text}) placeholder_flags.append(is_placeholder) + identity_boundary_flags.append(canonical_identity is not None) return projected @@ -553,6 +626,8 @@ def project_responses_history(events: List[SessionEvent]) -> List[dict[str, Any] """ projected: List[dict[str, Any]] = [] projected_call_ids: set[str] = set() + seen_canonical_event_ids: set[str] = set() + seen_canonical_items: set[tuple[str, str]] = set() compacted_until = compacted_until_seq_id(events) checkpoint = next( ( @@ -568,17 +643,22 @@ def project_responses_history(events: List[SessionEvent]) -> List[dict[str, Any] projected.append(summary_message) for event in events: - event_type = canonical_event_type( - event.event_type, - author=event.author, - role=str((event.content or {}).get("role") or ""), - ) + event_type, text, canonical_identity = _transcript_event_projection(event) if event.seq_id <= compacted_until and event_type != "context_checkpoint": continue if event_type not in TRANSCRIPT_EVENT_TYPES: continue if event_type in {"context_checkpoint", "compaction_boundary"}: continue + if canonical_identity is not None: + event_id, item_identity = canonical_identity + if ( + event_id in seen_canonical_event_ids + or item_identity in seen_canonical_items + ): + continue + seen_canonical_event_ids.add(event_id) + seen_canonical_items.add(item_identity) if event_type == "tool_call": item = _response_tool_call_item(event) @@ -586,25 +666,25 @@ def project_responses_history(events: List[SessionEvent]) -> List[dict[str, Any] projected.append(item) projected_call_ids.add(str(item["call_id"])) continue - message = _responses_message("assistant", f"[tool_call] {extract_event_text(event)}") + message = _responses_message("assistant", f"[tool_call] {text}") elif event_type == "tool_result": item = _response_tool_output_item(event) if item and str(item["call_id"]) in projected_call_ids: projected.append(item) continue - message = _responses_message("user", f"[tool_result] {extract_event_text(event)}") + message = _responses_message("user", f"[tool_result] {text}") elif event_type == "assistant_message": - message = _responses_message("assistant", extract_event_text(event)) + message = _responses_message("assistant", text) elif event_type == "approval_request": message = _responses_message( - "assistant", f"[approval_request] {extract_event_text(event)}" + "assistant", f"[approval_request] {text}" ) elif event_type == "approval_response": - message = _responses_message("user", f"[approval_response] {extract_event_text(event)}") + message = _responses_message("user", f"[approval_response] {text}") elif event_type == "attachment_ref": - message = _responses_message("user", f"[attachment] {extract_event_text(event)}") + message = _responses_message("user", f"[attachment] {text}") else: - message = _responses_message("user", extract_event_text(event)) + message = _responses_message("user", text) if message: projected.append(message) diff --git a/ksadk/conversations/contracts.py b/ksadk/conversations/contracts.py new file mode 100644 index 00000000..4134a80f --- /dev/null +++ b/ksadk/conversations/contracts.py @@ -0,0 +1,266 @@ +"""Additive, provider-neutral conversation presentation contracts (v1).""" + +from __future__ import annotations + +import re +from typing import Any, Literal + +from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator + + +def _to_camel(value: str) -> str: + head, *tail = value.split("_") + return head + "".join(part.capitalize() for part in tail) + + +class ConversationContractModel(BaseModel): + model_config = ConfigDict( + alias_generator=_to_camel, + populate_by_name=True, + extra="forbid", + frozen=True, + ) + + +_CAPABILITY = re.compile(r"^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$") + +# Provider-neutral wire extensions. These keys are deliberately namespaced: +# the stable ConversationInput/v1 envelope must not grow a top-level field for +# every control exposed by Codex, DSH, or a future AgentProvider. +APPROVAL_MODE_EXTENSION = "ksadk.approval" +COLLABORATION_MODE_EXTENSION = "ksadk.collaboration" +GOAL_OBJECTIVE_EXTENSION = "ksadk.goal" + + +class ConversationCapability(ConversationContractModel): + name: str = Field(min_length=1, max_length=128) + mode: Literal["native", "translated", "degraded", "unavailable"] + reason: str | None = Field(default=None, max_length=512) + + @field_validator("name") + @classmethod + def validate_name(cls, value: str) -> str: + if not _CAPABILITY.fullmatch(value): + raise ValueError("capability name must be a namespaced identifier") + return value + + @model_validator(mode="after") + def validate_reason(self) -> "ConversationCapability": + if self.mode in {"degraded", "unavailable"} and not self.reason: + raise ValueError("degraded or unavailable capability requires a reason") + return self + + +class ConversationSurface(ConversationContractModel): + api_version: Literal["conversation.ksadk.io/v1"] = "conversation.ksadk.io/v1" + kind: Literal["ConversationSurface"] = "ConversationSurface" + surface_id: str = Field(min_length=1, max_length=256) + session_id: str = Field(min_length=1, max_length=256) + provider_ref: str = Field(min_length=1, max_length=256) + inputs: tuple[ConversationCapability, ...] = () + outputs: tuple[ConversationCapability, ...] = () + + @model_validator(mode="after") + def validate_unique_capabilities(self) -> "ConversationSurface": + for capabilities, direction in ((self.inputs, "input"), (self.outputs, "output")): + names = [capability.name for capability in capabilities] + if len(names) != len(set(names)): + raise ValueError( + f"conversation surface must not repeat an {direction} capability" + ) + return self + + def permits_input(self, field: str) -> bool: + return any( + capability.name == field and capability.mode in {"native", "translated"} + for capability in self.inputs + ) + + +class ConversationTextPart(ConversationContractModel): + kind: Literal["text"] = "text" + text: str = Field(min_length=1, max_length=131072) + + +class ConversationAttachmentPart(ConversationContractModel): + kind: Literal["attachment"] = "attachment" + attachment_ref: str = Field(min_length=1, max_length=2048) + media_type: str = Field(min_length=1, max_length=256) + name: str | None = Field(default=None, max_length=1024) + + +ConversationInputPart = ConversationTextPart | ConversationAttachmentPart + + +class ConversationInput(ConversationContractModel): + """A provider-neutral foreground turn submitted by a conversation client. + + It deliberately carries only user intent. A Server/Runtime adapter maps + that intent to a provider-specific request after checking the active + ConversationSurface; browser clients never forward arbitrary provider + parameters. + """ + + api_version: Literal["conversation.ksadk.io/v1"] = "conversation.ksadk.io/v1" + kind: Literal["ConversationInput"] = "ConversationInput" + input_id: str = Field(min_length=1, max_length=256) + session_id: str = Field(min_length=1, max_length=256) + idempotency_key: str = Field(min_length=1, max_length=512) + parts: tuple[ConversationInputPart, ...] = Field(min_length=1) + model_ref: str | None = Field(default=None, min_length=1, max_length=256) + reasoning: str | None = Field(default=None, min_length=1, max_length=64) + extensions: dict[str, Any] = Field(default_factory=dict) + + @field_validator("extensions") + @classmethod + def validate_extensions(cls, value: dict[str, Any]) -> dict[str, Any]: + if any(not _CAPABILITY.fullmatch(key) or "." not in key for key in value): + raise ValueError("extensions must use namespaced capability keys") + approval = value.get(APPROVAL_MODE_EXTENSION) + if approval is not None and approval not in {"ask", "risk", "full"}: + raise ValueError("ksadk.approval must be ask, risk, or full") + collaboration = value.get(COLLABORATION_MODE_EXTENSION) + if collaboration is not None and collaboration not in {"default", "plan"}: + raise ValueError("ksadk.collaboration must be default or plan") + goal = value.get(GOAL_OBJECTIVE_EXTENSION) + if goal is not None and ( + not isinstance(goal, str) or not goal.strip() or len(goal) > 4096 + ): + raise ValueError("ksadk.goal must be a non-empty string up to 4096 characters") + return value + + @property + def approval_mode(self) -> Literal["ask", "risk", "full"] | None: + value = self.extensions.get(APPROVAL_MODE_EXTENSION) + return value if value in {"ask", "risk", "full"} else None + + @property + def collaboration_mode(self) -> Literal["default", "plan"] | None: + value = self.extensions.get(COLLABORATION_MODE_EXTENSION) + return value if value in {"default", "plan"} else None + + @property + def goal_objective(self) -> str | None: + value = self.extensions.get(GOAL_OBJECTIVE_EXTENSION) + return value if isinstance(value, str) and value else None + + def required_capabilities(self) -> tuple[str, ...]: + required: list[str] = [] + if any(isinstance(part, ConversationTextPart) for part in self.parts): + required.append("text") + for part in self.parts: + if not isinstance(part, ConversationAttachmentPart): + continue + required.append( + "attachment.image" + if part.media_type.lower().startswith("image/") + else "attachment.file" + ) + if self.model_ref: + required.append("model.select") + if self.reasoning: + required.append("reasoning.effort") + if self.approval_mode: + required.append("approval") + if self.collaboration_mode == "plan": + required.append("plan") + if self.goal_objective: + required.append("goal") + extension_capabilities = { + APPROVAL_MODE_EXTENSION: "approval", + COLLABORATION_MODE_EXTENSION: "plan" + if self.collaboration_mode == "plan" + else None, + GOAL_OBJECTIVE_EXTENSION: "goal", + } + required.extend( + extension_capabilities.get(key, key) + for key in self.extensions + if extension_capabilities.get(key, key) is not None + ) + return tuple(dict.fromkeys(required)) + + +class ConversationItem(ConversationContractModel): + api_version: Literal["conversation.ksadk.io/v1"] = "conversation.ksadk.io/v1" + kind_version: Literal[1] = 1 + item_id: str = Field(min_length=1, max_length=512) + parent_item_id: str | None = Field(default=None, min_length=1, max_length=512) + source_event_ids: tuple[str, ...] = Field(min_length=1) + session_id: str = Field(min_length=1, max_length=256) + run_id: str = Field(min_length=1, max_length=256) + kind: Literal[ + "user_message", + "assistant_text", + "reasoning", + "tool_call", + "approval", + "progress", + "plan", + "goal", + "artifact", + "a2ui", + "error", + "unknown", + ] + operation: Literal["append", "replace", "completed"] + lifecycle: Literal["pending", "streaming", "completed", "failed"] + visibility: Literal["public", "internal", "hidden"] = "public" + payload_schema_ref: str = Field(min_length=1, max_length=256) + payload: dict[str, Any] = Field(default_factory=dict) + capability_ref: str | None = Field(default=None, max_length=256) + native_ref: dict[str, Any] = Field(default_factory=dict) + + @field_validator("source_event_ids") + @classmethod + def validate_source_event_ids(cls, value: tuple[str, ...]) -> tuple[str, ...]: + if any(not item for item in value) or len(value) != len(set(value)): + raise ValueError("sourceEventIds must be non-empty and unique") + return value + + @model_validator(mode="after") + def validate_lifecycle(self) -> "ConversationItem": + if self.operation == "completed" and self.lifecycle not in {"completed", "failed"}: + raise ValueError("completed operation requires a terminal lifecycle") + return self + + +def validate_surface_input(surface: ConversationSurface, payload: dict[str, Any]) -> None: + """Reject UI input fields not declared by the active ConversationSurface.""" + + extensions = payload.get("extensions", {}) + if extensions is not None and not isinstance(extensions, dict): + raise ValueError("extensions must be an object") + for field in payload: + if field == "extensions": + continue + if not surface.permits_input(field): + raise ValueError(f"conversation input is not declared by surface: {field}") + + +def validate_conversation_input( + surface: ConversationSurface, + conversation_input: ConversationInput, +) -> None: + """Apply the same capability allowlist before and after the network hop.""" + + if surface.session_id != conversation_input.session_id: + raise ValueError("conversation input session does not match active surface") + for capability in conversation_input.required_capabilities(): + if not surface.permits_input(capability): + raise ValueError(f"conversation input is not declared by surface: {capability}") + + +__all__ = [ + "APPROVAL_MODE_EXTENSION", + "COLLABORATION_MODE_EXTENSION", + "ConversationCapability", + "ConversationInput", + "ConversationAttachmentPart", + "ConversationItem", + "ConversationSurface", + "ConversationTextPart", + "GOAL_OBJECTIVE_EXTENSION", + "validate_conversation_input", + "validate_surface_input", +] diff --git a/ksadk/conversations/projector.py b/ksadk/conversations/projector.py new file mode 100644 index 00000000..bf87748f --- /dev/null +++ b/ksadk/conversations/projector.py @@ -0,0 +1,574 @@ +"""One identity-aware RuntimeEvent -> ConversationItem projection.""" + +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any + +from ksadk.conversations.contracts import ConversationItem +from ksadk.events.canonical import ( + ContextCompactionCompleted, + ContextCompactionStarted, + ContinuationCreated, + ContinuationResumed, + InteractionRequested, + InteractionResolved, + ItemCompleted, + ItemFailed, + ItemSnapshotReplaced, + ItemStarted, + ItemUpdated, + RunCanceled, + RunCompleted, + RunFailed, + RunInterrupted, + RunProgress, + RunStarted, + RuntimeEvent, + UsageReported, +) +from ksadk.events.content import ( + ArtifactContent, + ContentSnapshot, + DataContent, + TextContent, + ToolCallContent, + ToolResultContent, +) +from ksadk.kernel.contracts import SessionEventEnvelope + +_INTERACTION_EVENT_TYPES = frozenset( + { + "interaction.requested", + "interaction.resolved", + "interaction.cancelled", + "interaction.expired", + } +) +_INTERACTION_KINDS = frozenset({"approval", "structured_input", "plan_review", "custom"}) + + +def project_conversation_item( + event: RuntimeEvent, + *, + session_id: str | None = None, + run_id: str | None = None, +) -> ConversationItem: + """Create a stable item projection without changing RuntimeEvent truth.""" + + item_id = _item_id(event) + kind = "unknown" + operation = "append" + lifecycle = "streaming" + # Known conversation kinds render in the UI. Only truly unhandled + # events (kind stays "unknown" after the branch chain) are hidden so + # they stay observable via the raw event log without spamming cards. + visibility = "public" + schema = "conversation.item.unknown/v1" + payload: dict[str, Any] = {} + capability_ref: str | None = None + if isinstance(event, ItemStarted) and event.item_kind in {"message", "reasoning"}: + kind = "reasoning" if event.item_kind == "reasoning" else "assistant_text" + lifecycle = "pending" + schema = f"conversation.item.{kind}/v1" + payload = {"text": _text_from_snapshot(event.initial)} + elif isinstance(event, ItemUpdated) and event.item_kind in {"message", "reasoning"}: + kind = "reasoning" if event.item_kind == "reasoning" else "assistant_text" + operation = event.op + schema = f"conversation.item.{kind}/v1" + payload = {"text": _text_from_update(event)} + elif isinstance(event, ItemSnapshotReplaced) and event.item_kind in {"message", "reasoning"}: + kind = "reasoning" if event.item_kind == "reasoning" else "assistant_text" + operation = "replace" + schema = f"conversation.item.{kind}/v1" + payload = {"text": _text_from_snapshot(event.snapshot)} + elif isinstance(event, ItemCompleted) and event.item_kind in {"message", "reasoning"}: + kind = "reasoning" if event.item_kind == "reasoning" else "assistant_text" + operation = "completed" + lifecycle = "completed" + schema = f"conversation.item.{kind}/v1" + payload = {"text": _text_from_snapshot(event.snapshot)} + elif isinstance(event, ItemStarted) and event.item_kind == "tool_call": + kind = "tool_call" + schema = "conversation.item.tool-call/v1" + payload = _tool_payload(event.initial) + capability_ref = "tool.inspect" + elif isinstance(event, ItemCompleted) and event.item_kind == "tool_call": + kind = "tool_call" + operation = "completed" + lifecycle = "completed" + schema = "conversation.item.tool-call/v1" + payload = _tool_payload(event.snapshot) + capability_ref = "tool.inspect" + elif ( + isinstance(event, (ItemStarted, ItemUpdated, ItemSnapshotReplaced, ItemCompleted)) + and event.item_kind == "tool_result" + ): + # Codex emits a separate tool_result item carrying the ToolResultContent. + # Project it as a completed tool_call so the UI renders the output instead + # of degrading it to an unknown fallback card. + kind = "tool_call" + schema = "conversation.item.tool-call/v1" + capability_ref = "tool.inspect" + if isinstance(event, ItemStarted): + payload = _tool_payload(event.initial) + else: + payload = _tool_payload(_item_snapshot(event)) + if isinstance(event, ItemCompleted): + operation = "completed" + lifecycle = "completed" + elif isinstance(event, ItemSnapshotReplaced): + operation = "replace" + elif _is_codex_plan_item(event): + kind = "plan" + schema = "conversation.item.plan/v1" + payload = {"text": _text_from_item_event(event)} + capability_ref = "plan" + if isinstance(event, ItemSnapshotReplaced): + operation = "replace" + if isinstance(event, ItemCompleted): + operation = "completed" + lifecycle = "completed" + elif _is_codex_goal_item(event): + kind = "goal" + schema = "conversation.item.goal/v1" + payload = _goal_payload(_item_snapshot(event)) + capability_ref = "goal" + if isinstance(event, ItemSnapshotReplaced): + operation = "replace" + if isinstance(event, ItemCompleted): + operation = "completed" + lifecycle = "completed" + elif ( + isinstance(event, (ItemStarted, ItemUpdated, ItemSnapshotReplaced, ItemCompleted)) + and event.item_kind == "artifact" + ): + kind = "artifact" + schema = "conversation.item.artifact/v1" + payload = _artifact_payload(_item_snapshot(event)) + if isinstance(event, ItemSnapshotReplaced): + operation = "replace" + if isinstance(event, ItemCompleted): + operation = "completed" + lifecycle = "completed" + elif ( + isinstance(event, (ItemStarted, ItemUpdated, ItemSnapshotReplaced, ItemCompleted)) + and event.item_kind == "data" + and event.source.protocol == "a2ui" + ): + kind = "a2ui" + schema = "conversation.item.a2ui/v1" + payload = _data_payload(_item_snapshot(event)) + if isinstance(event, ItemSnapshotReplaced): + operation = "replace" + if isinstance(event, ItemCompleted): + operation = "completed" + lifecycle = "completed" + elif ( + isinstance(event, (ItemStarted, ItemUpdated, ItemSnapshotReplaced, ItemCompleted)) + and event.item_kind == "status" + ): + # LangGraph subgraph lifecycle and similar status items. Project as + # progress so the UI shows a subtle indicator instead of an unknown card. + kind = "progress" + schema = "conversation.item.progress/v1" + payload = _data_payload(_item_snapshot(event)) + if isinstance(event, ItemCompleted): + operation = "completed" + lifecycle = "completed" + elif isinstance(event, ItemFailed): + kind = "error" + operation = "completed" + lifecycle = "failed" + schema = "conversation.item.error/v1" + payload = {"error": event.error.message or event.error.code} + elif isinstance(event, InteractionRequested): + kind = "approval" if event.interaction_kind == "approval" else "progress" + lifecycle = "pending" + schema = ( + "conversation.item.approval/v1" + if kind == "approval" + else "conversation.item.structured-input/v1" + ) + payload = { + "interactionId": event.interaction_id, + "kind": getattr(event.request, "kind", event.interaction_kind), + "detail": getattr(event.request, "detail", None), + "prompt": getattr(event.request, "prompt", None), + "inputSchema": getattr(event.request, "schema_", None), + "surfaceId": event.source.metadata.get("surface_id"), + } + capability_ref = "approval" if kind == "approval" else "structured_input" + elif isinstance(event, InteractionResolved): + kind = "approval" if event.interaction_kind == "approval" else "progress" + operation = "completed" + lifecycle = "completed" + schema = ( + "conversation.item.approval/v1" + if kind == "approval" + else "conversation.item.structured-input/v1" + ) + payload = { + "interactionId": event.interaction_id, + "surfaceId": event.source.metadata.get("surface_id"), + } + capability_ref = "approval" if kind == "approval" else "structured_input" + elif isinstance(event, (RunStarted, RunProgress, RunCompleted, RunInterrupted)): + kind = "progress" + schema = "conversation.item.progress/v1" + if isinstance(event, RunProgress): + payload = {"progress": event.progress, "message": event.message} + elif isinstance(event, RunInterrupted): + payload = {"reason": event.reason or ""} + operation = "completed" + lifecycle = "completed" + elif isinstance(event, RunCompleted): + operation = "completed" + lifecycle = "completed" + else: + payload = {"status": "started"} + elif isinstance(event, (RunFailed, RunCanceled)): + kind = "error" + operation = "completed" + lifecycle = "failed" + schema = "conversation.item.error/v1" + payload = { + "error": event.error.message if isinstance(event, RunFailed) else event.reason or "" + } + elif isinstance(event, (ContinuationCreated, ContinuationResumed)): + kind = "progress" + schema = "conversation.item.checkpoint/v1" + payload = {"continuationId": event.continuation_id} + elif isinstance(event, UsageReported): + # Token usage is carried in the top-level SSE envelope; no need to + # render a conversation card for it. Project as hidden progress. + kind = "progress" + schema = "conversation.item.progress/v1" + visibility = "hidden" + payload = { + "message": "usage", + "inputTokens": event.input_tokens, + "outputTokens": event.output_tokens, + "totalTokens": event.total_tokens, + "cachedTokens": event.cached_tokens, + "reasoningTokens": event.reasoning_tokens, + } + operation = "completed" + lifecycle = "completed" + elif isinstance(event, (ContextCompactionStarted, ContextCompactionCompleted)): + kind = "progress" + schema = "conversation.item.progress/v1" + payload = {"message": "context_compaction"} + if isinstance(event, ContextCompactionCompleted): + operation = "completed" + lifecycle = "completed" + elif ( + isinstance(event, (ItemStarted, ItemUpdated, ItemSnapshotReplaced, ItemCompleted)) + and event.item_kind == "data" + ): + # Catch-all for Codex data items that are not plan/goal/a2ui + # (fileChange, userMessage, hookPrompt, contextCompaction, etc.). + # Project as progress so the UI shows a subtle indicator instead of + # rendering an ugly "unsupported content" card for every turn. + kind = "progress" + schema = "conversation.item.progress/v1" + native_kind = event.source.metadata.get("native_item_kind", "") + payload = {"message": native_kind or "data", **_data_payload(_item_snapshot(event))} + if isinstance(event, ItemCompleted): + operation = "completed" + lifecycle = "completed" + # Unhandled event types fall through with kind == "unknown". They are + # hidden unless a trusted projector explicitly marks the event as a public + # conversation surface. Public future kinds receive the fixed safe + # fallback card; internal provider chatter remains trace/replay-only. + if kind == "unknown": + visibility = ( + "public" + if event.source.metadata.get("conversation_visibility") == "public" + else "hidden" + ) + if visibility == "public": + payload = { + "eventType": event.event_type, + "summary": "This content requires a newer renderer.", + } + return ConversationItem( + item_id=item_id, + source_event_ids=(event.event_id,), + session_id=session_id or event.scope_id, + # A host may own a public/durable Run identity that differs from the + # provider-native handle. Conversation clients need the public id for + # replay and control; the untouched RuntimeEvent remains the native + # source of truth and is carried separately by the host projection. + run_id=run_id or event.run_id, + kind=kind, + operation=operation, + lifecycle=lifecycle, + visibility=visibility, + payload_schema_ref=schema, + payload=payload, + capability_ref=capability_ref, + native_ref=_native_ref(event), + ) + + +def project_interaction_conversation_item( + envelope: SessionEventEnvelope, +) -> ConversationItem | None: + """Project one authoritative Interaction/v1 fact for a conversation surface. + + Interaction revision is the CAS token for ``SubmitInteraction``. It is + therefore read only from the durable Interaction/v1 payload and never + synthesized from cursor order, lifecycle, or a provider-native event. + Malformed legacy rows remain observable through their existing Studio + projection, but cannot become a writable ConversationItem. + """ + + if envelope.family != "interaction" or envelope.family_version != 1: + return None + payload = envelope.payload + event_type = envelope.event_type + if event_type not in _INTERACTION_EVENT_TYPES: + return None + if payload.get("event_type") != event_type: + return None + + interaction_id = _nonempty_string(payload.get("interaction_id")) + session_id = _nonempty_string(payload.get("session_id")) + run_id = _nonempty_string(payload.get("run_id")) + interaction_kind = _nonempty_string(payload.get("kind")) + revision = _positive_revision(payload.get("revision")) + if ( + interaction_id is None + or session_id != envelope.session_id + or run_id is None + or interaction_kind not in _INTERACTION_KINDS + or revision is None + ): + return None + if envelope.run_id is not None and run_id != envelope.run_id: + return None + + is_requested = event_type == "interaction.requested" + request = payload.get("request") + if is_requested and not isinstance(request, Mapping): + return None + request_payload = request if isinstance(request, Mapping) else {} + presentation = request_payload.get("presentation") + presentation_payload = presentation if isinstance(presentation, Mapping) else {} + + item_payload: dict[str, Any] = { + "interactionId": interaction_id, + "interactionKind": interaction_kind, + "kind": interaction_kind, + "revision": revision, + } + if is_requested: + item_payload.update( + { + "kind": _nonempty_string(presentation_payload.get("title")) or interaction_kind, + "inputSchema": ( + dict(request_payload.get("request_schema")) + if isinstance(request_payload.get("request_schema"), Mapping) + else {} + ), + "createdAt": str(payload.get("timestamp") or envelope.timestamp), + } + ) + title = _nonempty_string(presentation_payload.get("title")) + detail = _nonempty_string(presentation_payload.get("description")) + expires_at = _nonempty_string(request_payload.get("expires_at")) + if title is not None: + item_payload["title"] = title + if detail is not None: + item_payload["detail"] = detail + item_payload["prompt"] = detail + if expires_at is not None: + item_payload["expiresAt"] = expires_at + if presentation_payload: + item_payload["presentation"] = dict(presentation_payload) + else: + item_payload["resolvedAt"] = str(payload.get("timestamp") or envelope.timestamp) + outcome = _nonempty_string(payload.get("outcome")) + actor_ref = _nonempty_string(payload.get("actor_ref")) + reason = _nonempty_string(payload.get("reason")) + if outcome is not None: + item_payload["outcome"] = outcome + if "response" in payload: + item_payload["response"] = payload["response"] + if actor_ref is not None: + item_payload["actor"] = actor_ref + if reason is not None: + item_payload["reason"] = reason + + is_approval = interaction_kind == "approval" + return ConversationItem( + item_id=interaction_id, + source_event_ids=(str(envelope.event_id),), + session_id=session_id, + run_id=run_id, + kind="approval" if is_approval else "progress", + operation="append" if is_requested else "completed", + lifecycle="pending" if is_requested else "completed", + payload_schema_ref=( + "conversation.item.approval/v1" + if is_approval + else "conversation.item.structured-input/v1" + ), + payload=item_payload, + capability_ref="approval" if is_approval else "structured_input", + native_ref={ + "protocol": "agent-kernel/interaction-v1", + "eventId": str(envelope.event_id), + "cursor": envelope.seq, + }, + ) + + +def _positive_revision(value: Any) -> int | None: + if isinstance(value, bool) or not isinstance(value, int) or value < 1: + return None + return value + + +def _nonempty_string(value: Any) -> str | None: + if not isinstance(value, str) or not value.strip(): + return None + return value + + +def _item_id(event: RuntimeEvent) -> str: + if isinstance( + event, + (ItemStarted, ItemUpdated, ItemSnapshotReplaced, ItemCompleted, ItemFailed), + ): + return event.item_id + if isinstance(event, (InteractionRequested, InteractionResolved)): + return event.interaction_id + if isinstance(event, (ContinuationCreated, ContinuationResumed)): + return event.continuation_id + return event.event_id + + +def _text_from_update(event: ItemUpdated) -> str: + return event.update.text if isinstance(event.update, TextContent) else "" + + +def _text_from_item_event( + event: ItemStarted | ItemUpdated | ItemSnapshotReplaced | ItemCompleted, +) -> str: + if isinstance(event, ItemUpdated): + return _text_from_update(event) + return _text_from_snapshot(_item_snapshot(event)) + + +def _text_from_snapshot(snapshot: ContentSnapshot | None) -> str: + if snapshot is None: + return "" + for part in snapshot.parts: + if isinstance(part, TextContent): + return part.text + return "" + + +def _tool_payload(snapshot: ContentSnapshot | None) -> dict[str, Any]: + if snapshot is None: + return {} + call = next((item for item in snapshot.parts if isinstance(item, ToolCallContent)), None) + result = next((item for item in snapshot.parts if isinstance(item, ToolResultContent)), None) + payload: dict[str, Any] = {} + if call is not None: + payload.update({"callId": call.call_id, "tool": call.name, "args": call.arguments}) + if result is not None: + # A Codex tool_result can arrive as a separate native item from the + # corresponding tool_call. Keep the provider call identity in both + # projections so a renderer can enrich the original card in place + # rather than appending a duplicate result card. + payload.update( + { + "callId": result.call_id, + "output": result.result, + "isError": result.is_error, + } + ) + return payload + + +def _item_snapshot( + event: ItemStarted | ItemUpdated | ItemSnapshotReplaced | ItemCompleted, +) -> ContentSnapshot | None: + if isinstance(event, ItemStarted): + return event.initial + if isinstance(event, ItemUpdated): + return ContentSnapshot(parts=(event.update,)) + return event.snapshot + + +def _artifact_payload(snapshot: ContentSnapshot | None) -> dict[str, Any]: + if snapshot is None: + return {} + artifact = next( + (part for part in snapshot.parts if isinstance(part, ArtifactContent)), None + ) + if artifact is None: + return {} + return { + "artifactId": artifact.artifact_id, + "name": artifact.name, + "mimeType": artifact.mime_type, + "uri": artifact.uri, + } + + +def _data_payload(snapshot: ContentSnapshot | None) -> dict[str, Any]: + if snapshot is None: + return {} + data = next((part for part in snapshot.parts if isinstance(part, DataContent)), None) + return {"data": data.data} if data is not None else {} + + +def _goal_payload(snapshot: ContentSnapshot | None) -> dict[str, Any]: + wrapped = _data_payload(snapshot) + value = wrapped.get("data") + return dict(value) if isinstance(value, Mapping) else wrapped + + +def _is_codex_plan_item(event: RuntimeEvent) -> bool: + return ( + isinstance(event, (ItemStarted, ItemUpdated, ItemSnapshotReplaced, ItemCompleted)) + and event.item_kind == "data" + and event.source.framework == "codex" + and ( + event.source.metadata.get("native_item_kind") == "plan" + or event.source.metadata.get("method") == "turn/plan/updated" + ) + ) + + +def _is_codex_goal_item(event: RuntimeEvent) -> bool: + return ( + isinstance(event, (ItemStarted, ItemUpdated, ItemSnapshotReplaced, ItemCompleted)) + and event.item_kind == "data" + and event.source.framework == "codex" + and event.source.metadata.get("method") + in {"thread/goal/updated", "thread/goal/cleared"} + ) + + +def _native_ref(event: RuntimeEvent) -> dict[str, Any]: + source = event.source + return { + key: value + for key, value in { + "framework": source.framework, + "protocol": source.protocol, + "eventId": source.native_event_id, + "cursor": source.native_cursor, + "runId": source.native_run_id, + "itemId": source.native_item_id, + }.items() + if value is not None + } + + +__all__ = ["project_conversation_item", "project_interaction_conversation_item"] diff --git a/ksadk/conversations/reducer.py b/ksadk/conversations/reducer.py new file mode 100644 index 00000000..6b15dad7 --- /dev/null +++ b/ksadk/conversations/reducer.py @@ -0,0 +1,98 @@ +"""Identity-aware reducer for a ConversationItem surface. + +This reducer deliberately does not deduplicate by author or text. Providers +may emit the same content in two different items, and both are user-visible +truth. Reconnect de-duplication is limited to a previously applied source +event for the same item. +""" + +from __future__ import annotations + +from collections import OrderedDict + +from ksadk.conversations.contracts import ConversationItem + + +class ConversationItemReducer: + """Apply append/replace/completed operations while preserving item identity.""" + + def __init__(self) -> None: + self._items: OrderedDict[str, ConversationItem] = OrderedDict() + self._source_events: set[tuple[str, str]] = set() + + def apply(self, item: ConversationItem) -> bool: + """Apply one item operation and return whether this changed the view.""" + + keys = {(item.item_id, source_id) for source_id in item.source_event_ids} + if keys and keys.issubset(self._source_events): + return False + + existing = self._items.get(item.item_id) + if existing is not None and _terminal(existing) and not _terminal(item): + # A reconnect may replay an older delta after the terminal snapshot + # has already arrived on the live connection. Remember its event + # identity, but never regress a completed item back to streaming or + # append the stale delta a second time. + self._source_events.update(keys) + return False + if existing is None: + merged = item + elif item.operation == "append": + merged = item.model_copy( + update={ + "payload": _append_payload(existing.payload, item.payload), + "source_event_ids": _merge_sources( + existing.source_event_ids, + item.source_event_ids, + ), + } + ) + else: + merged = item.model_copy( + update={ + "source_event_ids": _merge_sources( + existing.source_event_ids, + item.source_event_ids, + ) + } + ) + self._items[item.item_id] = merged + self._source_events.update(keys) + return True + + def items(self) -> tuple[ConversationItem, ...]: + """Return presentation items in first-seen order.""" + + return tuple(self._items.values()) + + +def _append_payload( + existing: dict[str, object], + update: dict[str, object], +) -> dict[str, object]: + merged = dict(existing) + for key, value in update.items(): + previous = merged.get(key) + if key == "text" and isinstance(previous, str) and isinstance(value, str): + merged[key] = previous + value + elif key in {"data", "operations"} and isinstance(previous, list) and isinstance( + value, list + ): + merged[key] = [*previous, *value] + else: + merged[key] = value + return merged + + +def _merge_sources( + current: tuple[str, ...], + incoming: tuple[str, ...], +) -> tuple[str, ...]: + return tuple(dict.fromkeys((*current, *incoming))) + + +def _terminal(item: ConversationItem) -> bool: + return item.lifecycle in {"completed", "failed"} + + +__all__ = ["ConversationItemReducer"] diff --git a/ksadk/harness/__init__.py b/ksadk/harness/__init__.py index 1c6ae028..e8dedd59 100644 --- a/ksadk/harness/__init__.py +++ b/ksadk/harness/__init__.py @@ -1,35 +1,45 @@ -"""HarnessApp — 统一 Runtime 的可部署交付物 / composition root (goal-08)。""" - -from ksadk.harness.app import HarnessApp, HarnessCapabilities, HarnessPlugin -from ksadk.harness.config import ( - HarnessConfig, - HarnessConfigError, - McpToolSpec, - SandboxPolicy, -) -from ksadk.harness.reasoner import ( - HarnessReasoner, - HarnessReasoningTurn, - HarnessToolCall, - LiteLLMHarnessReasoner, -) -from ksadk.harness.runtime import HarnessRuntime, HarnessRuntimeAdapter -from ksadk.harness.sandbox import HarnessSandboxExecutor, SandboxPolicyDenied - -__all__ = [ - "HarnessApp", - "HarnessCapabilities", - "HarnessConfig", - "HarnessConfigError", - "HarnessPlugin", - "HarnessReasoner", - "HarnessRuntime", - "HarnessRuntimeAdapter", - "HarnessReasoningTurn", - "HarnessSandboxExecutor", - "HarnessToolCall", - "LiteLLMHarnessReasoner", - "McpToolSpec", - "SandboxPolicy", - "SandboxPolicyDenied", -] +"""Public Harness surface without eagerly requiring an ADK runtime. + +Studio must be usable for Codex and DSH Providers from a base ``ksadk`` +installation. Harness keeps ADK as an optional execution dependency, so +importing its configuration types cannot import the full Harness runtime. +""" + +from __future__ import annotations + +from importlib import import_module +from typing import Any + +_EXPORTS = { + "HarnessApp": ("ksadk.harness.app", "HarnessApp"), + "HarnessCapabilities": ("ksadk.harness.app", "HarnessCapabilities"), + "HarnessPlugin": ("ksadk.harness.app", "HarnessPlugin"), + "HarnessConfig": ("ksadk.harness.config", "HarnessConfig"), + "HarnessConfigError": ("ksadk.harness.config", "HarnessConfigError"), + "McpToolSpec": ("ksadk.harness.config", "McpToolSpec"), + "SandboxPolicy": ("ksadk.harness.config", "SandboxPolicy"), + "HarnessReasoner": ("ksadk.harness.reasoner", "HarnessReasoner"), + "HarnessReasoningTurn": ("ksadk.harness.reasoner", "HarnessReasoningTurn"), + "HarnessToolCall": ("ksadk.harness.reasoner", "HarnessToolCall"), + "LiteLLMHarnessReasoner": ("ksadk.harness.reasoner", "LiteLLMHarnessReasoner"), + "HarnessRuntime": ("ksadk.harness.runtime", "HarnessRuntime"), + "HarnessRuntimeAdapter": ("ksadk.harness.runtime", "HarnessRuntimeAdapter"), + "HarnessSandboxExecutor": ("ksadk.harness.sandbox", "HarnessSandboxExecutor"), + "SandboxPolicyDenied": ("ksadk.harness.sandbox", "SandboxPolicyDenied"), +} + +__all__ = list(_EXPORTS) + + +def __getattr__(name: str) -> Any: + try: + module_name, attribute = _EXPORTS[name] + except KeyError: + raise AttributeError(f"module {__name__!r} has no attribute {name!r}") from None + value = getattr(import_module(module_name), attribute) + globals()[name] = value + return value + + +def __dir__() -> list[str]: + return sorted({*globals(), *__all__}) diff --git a/ksadk/harness/runtime.py b/ksadk/harness/runtime.py index 1234ead3..40c8d036 100644 --- a/ksadk/harness/runtime.py +++ b/ksadk/harness/runtime.py @@ -72,6 +72,19 @@ class _HarnessRun: done: bool = False +@dataclass +class _HarnessSession: + """Process-local transcript and serialization boundary for one Session. + + The public capability matrix deliberately advertises process-scoped, + non-durable continuity. Keeping this state on the adapter makes that + declaration true without pretending that a restart can recover it. + """ + + messages: list[dict[str, Any]] + lock: asyncio.Lock + + class HarnessRuntimeAdapter(RuntimeAdapter): """Execute a YAML Harness config directly as RuntimeEvent streams.""" @@ -95,6 +108,7 @@ def __init__( self._tools: tuple[HarnessTool, ...] | None = None self._tool_lock = asyncio.Lock() self._mcp_toolsets: list[Any] = [] + self._sessions: dict[tuple[str, str, str], _HarnessSession] = {} @property def harness_config(self) -> HarnessConfig: @@ -167,16 +181,43 @@ async def close(self, handle: RunHandle) -> None: if not self._runs: await self._close_tools() + async def close_all(self) -> None: + """Dispose every process-local run owned by this adapter instance.""" + + for run_id, run in list(self._runs.items()): + await self.close( + RunHandle( + run_id=run_id, + session_id=run.request.session_id, + runtime_type="harness", + native_ref={ + "user_id": run.request.user_id, + "agent_id": run.request.agent_id, + }, + ) + ) + def is_handle_attached(self, handle: RunHandle) -> bool: return handle.run_id in self._runs async def execute_request(self, request: StartRequest) -> dict[str, Any]: + session = self._session_for(request) + async with session.lock: + return await self._execute_session_request(request, session) + + async def _execute_session_request( + self, + request: StartRequest, + session: _HarnessSession, + ) -> dict[str, Any]: tools = await self._ensure_tools() model, prompt = self._effective(request) messages: list[dict[str, Any]] = [ {"role": "system", "content": prompt}, - {"role": "user", "content": str(request.input or "")}, + *[dict(message) for message in session.messages], ] + user_message = {"role": "user", "content": str(request.input or "")} + messages.append(user_message) execution_log: list[dict[str, Any]] = [] for _turn_number in range(_MAX_REASONING_TURNS): @@ -235,6 +276,12 @@ async def execute_request(self, request: StartRequest) -> dict[str, Any]: raise RuntimeError( "Harness reasoner returned neither a final response nor a tool call" ) + final_message = {"role": "assistant", "content": turn.final_text} + messages.append(final_message) + # Failed or cancelled turns never commit a partial transcript. + # A successful turn atomically replaces the process-local history + # while the per-session lock is still held. + session.messages[:] = [dict(message) for message in messages[1:]] return { "output": turn.final_text, "model": model, @@ -244,6 +291,18 @@ async def execute_request(self, request: StartRequest) -> dict[str, Any]: } raise RuntimeError(f"Harness reasoning exceeded {_MAX_REASONING_TURNS} turns") + def _session_for(self, request: StartRequest) -> _HarnessSession: + key = ( + str(request.agent_id or self._agent_name), + str(request.user_id), + str(request.session_id), + ) + session = self._sessions.get(key) + if session is None: + session = _HarnessSession(messages=[], lock=asyncio.Lock()) + self._sessions[key] = session + return session + def _effective(self, request: StartRequest) -> tuple[str, str]: metadata = request.metadata or {} model = str( diff --git a/ksadk/kernel/contract_fingerprints.py b/ksadk/kernel/contract_fingerprints.py index 6e2db12e..f7e9172b 100644 --- a/ksadk/kernel/contract_fingerprints.py +++ b/ksadk/kernel/contract_fingerprints.py @@ -15,7 +15,7 @@ AGENT_KERNEL_V1_CONTRACT_SET = "agent-kernel/v1" AGENT_KERNEL_V1_AGGREGATE_DIGEST = ( - "47e1003e03d97abeba232cc3e03a14b9cbcf78b1109870ccd2ce371f073b6211" + "b610a25aae957306b9f84a2cc2c948b30d1ce6218585cfd2a91f96736b92d102" ) @@ -23,12 +23,13 @@ def runtime_capability_matrix_wire_value(matrix: Any) -> dict[str, Any]: """Serialize the additive matrix without materializing absent v2 modes. Pydantic includes optional ``None`` defaults in ``model_dump``. Omitting - those three top-level keys preserves the exact pre-extension wire value and - capability digest for runtimes that do not publish goal/loop/plan. + those additive top-level keys preserves the exact pre-extension wire value + and capability digest for runtimes that do not publish execution controls + or an interaction delivery mode. """ dump = matrix.model_dump(mode="json") - for key in ("goal", "loop", "plan"): + for key in ("interaction_mode", "goal", "loop", "plan"): if dump.get(key) is None: dump.pop(key, None) return dump diff --git a/ksadk/kernel/contracts.py b/ksadk/kernel/contracts.py index 9e4701de..eaed2997 100644 --- a/ksadk/kernel/contracts.py +++ b/ksadk/kernel/contracts.py @@ -309,6 +309,14 @@ class RuntimeCapabilityMatrix(WireModel): inject: RuntimeCapability checkpoint: RuntimeCapability durable_restore: RuntimeCapability + # Interaction delivery is deliberately separate from the verb matrix: + # ``submit_interaction`` alone does not tell a caller whether the reply + # reaches a live process, resumes a checkpoint, or has no native route. + # It remains optional so a v1 consumer can read records emitted before + # this additive declaration without inventing support. + interaction_mode: Literal[ + "live_submit", "durable_resume", "unavailable" + ] | None = None # Runtime v2 execution controls are additive optional capabilities. Older # runtimes omit them; a runtime must never infer support from UI presence. # ``loop`` specifically means an externally bounded, eval-driven diff --git a/ksadk/kernel/control.py b/ksadk/kernel/control.py index 2be80212..35cc3e03 100644 --- a/ksadk/kernel/control.py +++ b/ksadk/kernel/control.py @@ -57,6 +57,7 @@ def default_capability_matrix() -> RuntimeCapabilityMatrix: inject=_unavailable("runtime_no_native_inject"), checkpoint=_unavailable(), durable_restore=_unavailable(), + interaction_mode="unavailable", ) diff --git a/ksadk/kernel/ingress.py b/ksadk/kernel/ingress.py index 6294937e..84bdc2e1 100644 --- a/ksadk/kernel/ingress.py +++ b/ksadk/kernel/ingress.py @@ -421,6 +421,26 @@ def map_studio_request( ) +def map_scheduler_request( + *, + session_id: str, + idempotency_key: str, + content: Any, + occurrence_id: str, + trusted: TrustedRuntimeContext, +) -> AgentControlCommand: + """Scheduler occurrence -> enqueue with durable source and correlation IDs.""" + + return _command( + trusted=trusted, + command_type="enqueue", + session_id=session_id, + idempotency_key=idempotency_key, + payload={"content": content}, + correlation_id=occurrence_id, + ) + + def map_control_request( *, command_type: str, @@ -1091,6 +1111,7 @@ def agent_kernel_router() -> Any: "map_control_request", "map_responses_request", "map_run_request", + "map_scheduler_request", "map_studio_request", "receipt_error_payload", "receipt_http_status", diff --git a/ksadk/kernel/memory_store.py b/ksadk/kernel/memory_store.py index b9ff81f2..5b80a46f 100644 --- a/ksadk/kernel/memory_store.py +++ b/ksadk/kernel/memory_store.py @@ -1124,6 +1124,7 @@ async def save_run_transition( "fencing_token": int(expected_fence), }, run_id=run.run_id, + causation_id=str(run.metadata.get("command_id") or "") or None, ), activation_row=activation, ) diff --git a/ksadk/kernel/postgres_store.py b/ksadk/kernel/postgres_store.py index 5d1a1660..6249c9a4 100644 --- a/ksadk/kernel/postgres_store.py +++ b/ksadk/kernel/postgres_store.py @@ -1647,6 +1647,7 @@ async def save_run_transition( "fencing_token": int(expected_fence), }, run_id=run.run_id, + causation_id=str(run.metadata.get("command_id") or "") or None, ), activation, expected_fence, diff --git a/ksadk/kernel/sqlite_store.py b/ksadk/kernel/sqlite_store.py index f9e896b8..be5d9781 100644 --- a/ksadk/kernel/sqlite_store.py +++ b/ksadk/kernel/sqlite_store.py @@ -1400,6 +1400,7 @@ async def save_run_transition( "fencing_token": int(expected_fence), }, run_id=run.run_id, + causation_id=str(run.metadata.get("command_id") or "") or None, ), activation, expected_fence, diff --git a/ksadk/kernel/worker.py b/ksadk/kernel/worker.py index c9845022..f70b6af8 100644 --- a/ksadk/kernel/worker.py +++ b/ksadk/kernel/worker.py @@ -356,6 +356,17 @@ async def _start_run(self, command: AgentControlCommand, activation: ActivationL agent_instance_id=command.agent_instance_id, session_id=command.session_id, state=RunState.PENDING, + # Keep the admitted control identity on the durable run. This is + # not user-supplied metadata: it is copied from the trusted + # command that the worker actually claimed. Consumers such as the + # local Scheduler can therefore reconcile a runtime terminal fact + # back to one occurrence without matching text or wall-clock time. + metadata={ + "command_id": str(command.command_id), + "source_kind": command.source.kind, + "source_ref": command.source.ref, + "correlation_id": command.correlation_id, + }, ) created = await self._store.save_run_transition(pending, expected_fence=fence) continuation_metadata = await self._session_continuation_metadata(command.session_id) diff --git a/ksadk/memory/providers/local_sqlite.py b/ksadk/memory/providers/local_sqlite.py index 00347068..9672b7a5 100644 --- a/ksadk/memory/providers/local_sqlite.py +++ b/ksadk/memory/providers/local_sqlite.py @@ -141,6 +141,13 @@ def __init__( workspace_id: str = "local", ) -> None: self._db_path = str(db_path) + if self._db_path != ":memory:": + # A fresh local Studio has not created its session directory yet. + # SQLite creates the database file, but not missing parents. + Path(self._db_path).expanduser().resolve().parent.mkdir( + parents=True, + exist_ok=True, + ) self._tenant_id = tenant_id self._workspace_id = workspace_id self._lock = threading.Lock() diff --git a/ksadk/plugins/__init__.py b/ksadk/plugins/__init__.py new file mode 100644 index 00000000..823043be --- /dev/null +++ b/ksadk/plugins/__init__.py @@ -0,0 +1,167 @@ +"""Versioned contracts for the Phase 2 plugin composition boundary. + +This package models discovery, deterministic locking, and the controlled +PluginHost lifecycle. It does not create a second runtime/event store; +providers keep their native execution authority behind these contracts. +""" + +from ksadk.plugins.bundle import ( + PluginBundleError, + PluginBundleResolver, + ResolvedPluginBundle, +) +from ksadk.plugins.context_contributor import ( + AuthenticatedContextScope, + ContextClassification, + ContextContributorCacheability, + ContextContributorCapabilities, + ContextContributorExchange, + ContextContributorFailureMode, + ContextContributorRequest, + ContextContributorResponse, + ContextFragment, + ContextSourceReference, + ProjectedContextContribution, + context_contributor_json_schema, +) +from ksadk.plugins.contracts import ( + CapabilityDefinition, + CompositionProfile, + PluginInventory, + PluginLock, + canonical_plugin_lock, + plugin_lock_digest, +) +from ksadk.plugins.ecosystem_bridge import ( + BridgeAction, + BridgeCommitRequest, + BridgeCommitResult, + BridgeDescribeRequest, + BridgeDescribeResult, + BridgeDescriptor, + BridgeDisposeRequest, + BridgeDisposeResult, + BridgeHostObservation, + BridgeHostRequirement, + BridgeInspectExchange, + BridgeInspectRequest, + BridgeInspectResult, + BridgePlanRequest, + BridgePlanResult, + BridgeProbeExchange, + BridgeProbeRequest, + BridgeProbeResult, + BridgeReconcileRequest, + BridgeReconcileResult, + BridgeRejection, + BridgeRollbackRequest, + BridgeRollbackResult, + BridgeStageRequest, + BridgeStageResult, + BridgeTransitionPlan, + EcosystemInstallReceipt, + EcosystemPluginDescriptor, + EcosystemPluginInventory, + PluginDesiredState, + PluginEcosystem, + PluginEcosystemBridge, + PluginEcosystemBridgeFixture, + PluginEcosystemBridgeTranscript, + PluginIntegrationMode, + PluginManifestCandidate, + PluginObservedState, + PluginSupportMaturity, + ecosystem_bridge_json_schema, +) +from ksadk.plugins.ecosystem_probe import EcosystemProbeError, probe_ecosystem_manifests +from ksadk.plugins.host import ( + ExecutableAgentProvider, + PluginActivationSession, + PluginCapabilityBinding, + PluginExecutionContext, + PluginHost, + PluginHostError, + PreparedAgent, +) +from ksadk.plugins.resolver import ( + PluginRegistry, + PluginResolutionError, + ResolvedComposition, + composition_profile_digest, +) + +__all__ = [ + "AuthenticatedContextScope", + "BridgeAction", + "BridgeCommitRequest", + "BridgeCommitResult", + "BridgeDescribeRequest", + "BridgeDescribeResult", + "BridgeDescriptor", + "BridgeDisposeRequest", + "BridgeDisposeResult", + "BridgeHostObservation", + "BridgeHostRequirement", + "BridgeInspectExchange", + "BridgeInspectRequest", + "BridgeInspectResult", + "BridgePlanRequest", + "BridgePlanResult", + "BridgeProbeExchange", + "BridgeProbeRequest", + "BridgeProbeResult", + "BridgeReconcileRequest", + "BridgeReconcileResult", + "BridgeRejection", + "BridgeRollbackRequest", + "BridgeRollbackResult", + "BridgeStageRequest", + "BridgeStageResult", + "BridgeTransitionPlan", + "CapabilityDefinition", + "CompositionProfile", + "ContextClassification", + "ContextContributorCacheability", + "ContextContributorCapabilities", + "ContextContributorExchange", + "ContextContributorFailureMode", + "ContextContributorRequest", + "ContextContributorResponse", + "ContextFragment", + "ContextSourceReference", + "EcosystemInstallReceipt", + "EcosystemProbeError", + "EcosystemPluginDescriptor", + "EcosystemPluginInventory", + "PluginInventory", + "PluginLock", + "PluginDesiredState", + "PluginEcosystem", + "PluginEcosystemBridge", + "PluginEcosystemBridgeFixture", + "PluginEcosystemBridgeTranscript", + "PluginIntegrationMode", + "PluginManifestCandidate", + "PluginObservedState", + "PluginSupportMaturity", + "PluginBundleError", + "PluginBundleResolver", + "ResolvedPluginBundle", + "ExecutableAgentProvider", + "PluginActivationSession", + "PluginCapabilityBinding", + "PluginExecutionContext", + "PluginHost", + "PluginHostError", + "PreparedAgent", + "PluginRegistry", + "PluginResolutionError", + "ProjectedContextContribution", + "ResolvedComposition", + "composition_profile_digest", + "context_contributor_json_schema", + "ecosystem_bridge_json_schema", + "canonical_plugin_lock", + "plugin_lock_digest", + "probe_ecosystem_manifests", +] diff --git a/ksadk/plugins/bridges/__init__.py b/ksadk/plugins/bridges/__init__.py new file mode 100644 index 00000000..0c8c01d1 --- /dev/null +++ b/ksadk/plugins/bridges/__init__.py @@ -0,0 +1,45 @@ +"""Native-host ecosystem bridges. + +Bridges keep each ecosystem's executable ABI inside its native host. They do +not add a generic plugin execution API to KsADK. +""" + +from ksadk.plugins.bridges.codex import ( + CodexAppServerPluginBridge, + CodexBridgeError, + CodexPluginApprovalRequired, + CodexPluginDetail, + CodexPluginInventory, + CodexPluginNotFoundError, +) +from ksadk.plugins.bridges.dsh import ( + DshBridgeError, + DshBridgeHost, + DshClientBundle, + DshHostUnavailableError, + DshPluginApprovalRequired, + DshPluginInventory, + DshPluginMutationError, + DshPluginNotFoundError, + DshProfilePluginBridge, + DshProfileProjection, +) + +__all__ = [ + "CodexAppServerPluginBridge", + "CodexBridgeError", + "CodexPluginApprovalRequired", + "CodexPluginDetail", + "CodexPluginInventory", + "CodexPluginNotFoundError", + "DshBridgeError", + "DshBridgeHost", + "DshClientBundle", + "DshHostUnavailableError", + "DshPluginApprovalRequired", + "DshPluginInventory", + "DshPluginMutationError", + "DshPluginNotFoundError", + "DshProfilePluginBridge", + "DshProfileProjection", +] diff --git a/ksadk/plugins/bridges/codex.py b/ksadk/plugins/bridges/codex.py new file mode 100644 index 00000000..a448c7f6 --- /dev/null +++ b/ksadk/plugins/bridges/codex.py @@ -0,0 +1,547 @@ +"""Restricted Codex App Server plugin lifecycle bridge. + +Codex remains the native owner of Codex plugins. KsADK only calls the +allowlisted App Server lifecycle methods and projects their inventory into +strict local models. There is intentionally no arbitrary JSON-RPC escape +hatch and no attempt to execute a Codex plugin inside PluginHost. +""" + +from __future__ import annotations + +import asyncio +import re +from pathlib import Path +from typing import Any, Literal, Protocol, TypeVar, cast + +from pydantic import BaseModel, ConfigDict, Field + + +def _to_camel(value: str) -> str: + head, *tail = value.split("_") + return head + "".join(part.capitalize() for part in tail) + + +class _CodexWireModel(BaseModel): + model_config = ConfigDict( + alias_generator=_to_camel, + populate_by_name=True, + extra="forbid", + frozen=True, + ) + + +class _LocalSource(_CodexWireModel): + type: Literal["local"] + path: str + + +class _GitSource(_CodexWireModel): + type: Literal["git"] + url: str + ref_name: str | None = None + sha: str | None = None + path: str | None = None + + +class _NpmSource(_CodexWireModel): + type: Literal["npm"] + package: str + version: str | None = None + registry: str | None = None + + +class _RemoteSource(_CodexWireModel): + type: Literal["remote"] + + +CodexPluginSource = _LocalSource | _GitSource | _NpmSource | _RemoteSource + + +class _PluginSummary(_CodexWireModel): + id: str + name: str + source: CodexPluginSource = Field(discriminator="type") + installed: bool + enabled: bool + install_policy: Literal["NOT_AVAILABLE", "AVAILABLE", "INSTALLED_BY_DEFAULT"] + auth_policy: Literal["ON_INSTALL", "ON_USE"] + remote_plugin_id: str | None = None + version: str | None = None + local_version: str | None = None + installed_at: int | None = None + install_policy_source: str | None = None + must_show_installation_interstitial: bool | None = None + availability: str = "AVAILABLE" + disabled_reason: str | None = None + eligible_plan_types: tuple[str, ...] | None = None + share_context: dict[str, Any] | None = None + interface: dict[str, Any] | None = None + keywords: tuple[str, ...] = () + + +class _Marketplace(_CodexWireModel): + name: str + path: str | None = None + interface: dict[str, Any] | None = None + plugins: tuple[_PluginSummary, ...] + + +class _MarketplaceLoadError(_CodexWireModel): + marketplace_path: str + message: str + + +class _PluginListResponse(_CodexWireModel): + marketplaces: tuple[_Marketplace, ...] + marketplace_load_errors: tuple[_MarketplaceLoadError, ...] = () + featured_plugin_ids: tuple[str, ...] = () + + +class _PluginDetailWire(_CodexWireModel): + marketplace_name: str + marketplace_path: str | None + summary: _PluginSummary + description: str | None = None + share_url: str | None = None + skills: tuple[dict[str, Any], ...] + hooks: tuple[dict[str, Any], ...] + apps: tuple[dict[str, Any], ...] + app_templates: tuple[dict[str, Any], ...] + mcp_servers: tuple[str, ...] + scheduled_tasks: tuple[dict[str, Any], ...] | None = None + + +class _PluginReadResponse(_CodexWireModel): + plugin: _PluginDetailWire + + +class _MarketplaceAddResponse(_CodexWireModel): + marketplace_name: str + installed_root: str + already_added: bool + + +class _PluginInstallResponse(_CodexWireModel): + auth_policy: Literal["ON_INSTALL", "ON_USE"] + apps_needing_auth: tuple[dict[str, Any], ...] + + +class _PluginUninstallResponse(_CodexWireModel): + pass + + +class CodexPluginInventory(_CodexWireModel): + """Normalized observed state; install receipt never implies these fields.""" + + plugin_id: str + name: str + marketplace_name: str + marketplace_path: str | None + version: str | None + installed: bool + enabled: bool + availability: str + source: CodexPluginSource = Field(discriminator="type") + permissions_declared: Literal[False] = False + risk_disclosures: tuple[str, ...] = ( + "Codex plugin permissions are host-managed and not declared in the plugin manifest.", + "The Codex App Server and installed plugin run with the current host user privileges.", + ) + + +class CodexPluginDetail(_CodexWireModel): + inventory: CodexPluginInventory + description: str | None = None + skills: tuple[str, ...] = () + mcp_servers: tuple[str, ...] = () + hooks: tuple[str, ...] = () + apps: tuple[str, ...] = () + scheduled_tasks: tuple[str, ...] = () + + +class CodexPluginInstallResult(_CodexWireModel): + inventory: CodexPluginInventory + auth_policy: Literal["ON_INSTALL", "ON_USE"] + apps_needing_auth: tuple[str, ...] = () + + +class CodexPluginUninstallResult(_CodexWireModel): + plugin_id: str + installed: Literal[False] = False + enabled: Literal[False] = False + + +class CodexBridgeHost(_CodexWireModel): + host_id: Literal["codex-app-server"] = "codex-app-server" + version: str + protocol: Literal["codex.app-server/v1"] = "codex.app-server/v1" + available: Literal[True] = True + + +class CodexBridgeError(RuntimeError): + """Base error for a bounded Codex plugin lifecycle operation.""" + + +class CodexPluginNotFoundError(CodexBridgeError): + pass + + +class CodexPluginApprovalRequired(CodexBridgeError): + pass + + +ResponseT = TypeVar("ResponseT", bound=BaseModel) + + +class _CodexTransport(Protocol): + async def start(self) -> None: ... + + async def close(self) -> None: ... + + async def initialize(self) -> Any: ... + + async def request( + self, + method: str, + params: dict[str, Any] | None, + *, + response_model: type[ResponseT], + ) -> ResponseT: ... + + +_HOST_VERSION = re.compile(r"(?:Codex(?: Desktop)?/)(\d+\.\d+\.\d+)") + + +class CodexAppServerPluginBridge: + """Allowlisted Codex plugin manager backed by one App Server process.""" + + def __init__( + self, + *, + codex_home: Path | None = None, + codex_bin: str | None = None, + transport: _CodexTransport | None = None, + ) -> None: + if transport is not None and (codex_home is not None or codex_bin is not None): + raise ValueError("an injected transport cannot be combined with Codex launch options") + self._codex_home = codex_home + self._codex_bin = codex_bin + self._transport = transport + self._owns_transport = transport is None + self._started = False + self._host: CodexBridgeHost | None = None + self._lock = asyncio.Lock() + + async def __aenter__(self) -> "CodexAppServerPluginBridge": + await self.start() + return self + + async def __aexit__(self, _exc_type: object, _exc: object, _tb: object) -> None: + await self.close() + + @property + def host(self) -> CodexBridgeHost: + if self._host is None: + raise CodexBridgeError("Codex App Server bridge is not started") + return self._host + + async def start(self) -> CodexBridgeHost: + if self._started: + return self.host + if self._codex_home is not None: + self._codex_home.mkdir(parents=True, exist_ok=True) + if self._transport is None: + self._transport = self._create_transport() + try: + await self._transport.start() + metadata = await self._transport.initialize() + raw = getattr(metadata, "user_agent", None) or getattr(metadata, "userAgent", None) + if raw is None and isinstance(metadata, dict): + raw = metadata.get("userAgent") + if raw is None and isinstance(metadata, BaseModel): + raw = metadata.model_dump(by_alias=True).get("userAgent") + match = _HOST_VERSION.search(str(raw or "")) + if match is None: + raise CodexBridgeError("Codex App Server did not report a parseable host version") + self._host = CodexBridgeHost(version=match.group(1)) + self._started = True + return self._host + except BaseException: + await self.close() + raise + + async def close(self) -> None: + transport = self._transport + self._transport = None if self._owns_transport else transport + self._started = False + self._host = None + if transport is not None: + await transport.close() + + async def add_marketplace(self, source: str, *, ref_name: str | None = None) -> str: + response = await self._request( + "marketplace/add", + {"source": source, "refName": ref_name, "sparsePaths": None}, + _MarketplaceAddResponse, + ) + return response.marketplace_name + + async def list_plugins( + self, *, force_refetch: bool = False + ) -> tuple[CodexPluginInventory, ...]: + response = await self._list_wire(force_refetch=force_refetch) + return tuple( + self._inventory(marketplace, summary) + for marketplace in response.marketplaces + for summary in marketplace.plugins + ) + + async def read_plugin( + self, + plugin_name_or_id: str, + *, + marketplace_name: str | None = None, + ) -> CodexPluginDetail: + marketplace, summary = await self._resolve(plugin_name_or_id, marketplace_name) + response = await self._request( + "plugin/read", + { + "pluginName": summary.name, + "marketplacePath": marketplace.path, + "remoteMarketplaceName": None if marketplace.path else marketplace.name, + }, + _PluginReadResponse, + ) + plugin = response.plugin + return CodexPluginDetail( + inventory=self._inventory(marketplace, plugin.summary), + description=plugin.description, + skills=tuple(str(item.get("name", "")) for item in plugin.skills if item.get("name")), + mcp_servers=plugin.mcp_servers, + hooks=tuple(str(item.get("key", "")) for item in plugin.hooks if item.get("key")), + apps=tuple(str(item.get("id", "")) for item in plugin.apps if item.get("id")), + scheduled_tasks=tuple( + str(item.get("key", "")) + for item in (plugin.scheduled_tasks or ()) + if item.get("key") + ), + ) + + async def install_plugin( + self, + plugin_name_or_id: str, + *, + marketplace_name: str | None = None, + accept_undeclared_permissions: bool = False, + install_attempt_id: str | None = None, + ) -> CodexPluginInstallResult: + if not accept_undeclared_permissions: + raise CodexPluginApprovalRequired( + "Codex plugins do not expose complete install/runtime permissions; " + "explicit accept_undeclared_permissions=True is required" + ) + async with self._lock: + marketplace, summary = await self._resolve(plugin_name_or_id, marketplace_name) + before = self._inventory(marketplace, summary) + try: + response = await self._request( + "plugin/install", + { + "pluginName": summary.name, + "marketplacePath": marketplace.path, + "remoteMarketplaceName": None if marketplace.path else marketplace.name, + "installAttemptId": install_attempt_id, + }, + _PluginInstallResponse, + ) + observed = await self._resolve_inventory( + summary.id, + marketplace.name, + force_refetch=True, + ) + if not observed.installed or not observed.enabled: + raise CodexBridgeError( + "Codex host did not reconcile the installed plugin as enabled" + ) + except BaseException as install_error: + try: + restored = await asyncio.shield( + self._restore_failed_install(before) + ) + except BaseException as rollback_error: + raise CodexBridgeError( + "Codex plugin install failed and its previous inventory " + "could not be restored" + ) from rollback_error + raise CodexBridgeError( + "Codex plugin install failed; previous inventory was restored " + f"(installed={restored.installed}, enabled={restored.enabled})" + ) from install_error + return CodexPluginInstallResult( + inventory=observed, + auth_policy=response.auth_policy, + apps_needing_auth=tuple( + str(item.get("id", "")) + for item in response.apps_needing_auth + if item.get("id") + ), + ) + + async def uninstall_plugin(self, plugin_id: str) -> CodexPluginUninstallResult: + async with self._lock: + marketplace, summary = await self._resolve(plugin_id, None) + await self._request( + "plugin/uninstall", + {"pluginId": summary.id}, + _PluginUninstallResponse, + ) + observed = await self._resolve_inventory(summary.id, marketplace.name) + if observed.installed or observed.enabled: + raise CodexBridgeError("Codex host still reports the uninstalled plugin as active") + return CodexPluginUninstallResult(plugin_id=summary.id) + + def _create_transport(self) -> _CodexTransport: + try: + from openai_codex.async_client import AsyncCodexClient + from openai_codex.client import CodexConfig + except ImportError as exc: # pragma: no cover - depends on optional extra + raise CodexBridgeError("Codex plugin bridge requires the ksadk[codex] extra") from exc + env = None + if self._codex_home is not None: + env = {"CODEX_HOME": str(self._codex_home.resolve())} + return cast( + _CodexTransport, + AsyncCodexClient(CodexConfig(codex_bin=self._codex_bin, env=env)), + ) + + async def _request( + self, + method: Literal[ + "marketplace/add", + "plugin/list", + "plugin/read", + "plugin/install", + "plugin/uninstall", + ], + params: dict[str, Any] | None, + response_model: type[ResponseT], + ) -> ResponseT: + if not self._started or self._transport is None: + raise CodexBridgeError("Codex App Server bridge is not started") + return await self._transport.request(method, params, response_model=response_model) + + async def _list_wire(self, *, force_refetch: bool = False) -> _PluginListResponse: + return await self._request( + "plugin/list", + {"forceRefetch": force_refetch, "cwds": None, "marketplaceKinds": None}, + _PluginListResponse, + ) + + async def _resolve( + self, + plugin_name_or_id: str, + marketplace_name: str | None, + *, + force_refetch: bool = False, + ) -> tuple[_Marketplace, _PluginSummary]: + response = await self._list_wire(force_refetch=force_refetch) + matches = [ + (marketplace, summary) + for marketplace in response.marketplaces + if marketplace_name is None or marketplace.name == marketplace_name + for summary in marketplace.plugins + if summary.id == plugin_name_or_id or summary.name == plugin_name_or_id + ] + if len(matches) != 1: + qualifier = f" in marketplace {marketplace_name!r}" if marketplace_name else "" + if not matches: + raise CodexPluginNotFoundError( + f"Codex plugin {plugin_name_or_id!r}{qualifier} was not found" + ) + raise CodexBridgeError( + f"Codex plugin name {plugin_name_or_id!r} is ambiguous; use its full plugin id" + ) + return matches[0] + + async def _resolve_inventory( + self, + plugin_id: str, + marketplace_name: str, + *, + force_refetch: bool = False, + ) -> CodexPluginInventory: + marketplace, summary = await self._resolve( + plugin_id, + marketplace_name, + force_refetch=force_refetch, + ) + return self._inventory(marketplace, summary) + + async def _restore_failed_install( + self, + before: CodexPluginInventory, + ) -> CodexPluginInventory: + """Compensate an install whose receipt/reconciliation failed. + + App Server may have committed files before its response is lost. For + the only state transition exposed by ``install_plugin`` (available -> + installed), uninstall is the native compensating action. An already + installed plugin is never silently reinstalled because the App Server + API cannot pin its previous local bytes; any observed drift therefore + fails closed rather than claiming rollback. + """ + + observed = await self._resolve_inventory( + before.plugin_id, + before.marketplace_name, + force_refetch=True, + ) + if not before.installed and observed.installed: + await self._request( + "plugin/uninstall", + {"pluginId": before.plugin_id}, + _PluginUninstallResponse, + ) + observed = await self._resolve_inventory( + before.plugin_id, + before.marketplace_name, + force_refetch=True, + ) + if (observed.installed, observed.enabled) != ( + before.installed, + before.enabled, + ): + raise CodexBridgeError( + "Codex host inventory differs from the pre-install snapshot" + ) + return observed + + @staticmethod + def _inventory( + marketplace: _Marketplace, + summary: _PluginSummary, + ) -> CodexPluginInventory: + return CodexPluginInventory( + plugin_id=summary.id, + name=summary.name, + marketplace_name=marketplace.name, + marketplace_path=marketplace.path, + version=summary.local_version or summary.version, + installed=summary.installed, + enabled=summary.enabled, + availability=summary.availability, + source=summary.source, + ) + + +__all__ = [ + "CodexAppServerPluginBridge", + "CodexBridgeError", + "CodexBridgeHost", + "CodexPluginApprovalRequired", + "CodexPluginDetail", + "CodexPluginInstallResult", + "CodexPluginInventory", + "CodexPluginNotFoundError", + "CodexPluginUninstallResult", +] diff --git a/ksadk/plugins/bridges/dsh.py b/ksadk/plugins/bridges/dsh.py new file mode 100644 index 00000000..d7257306 --- /dev/null +++ b/ksadk/plugins/bridges/dsh.py @@ -0,0 +1,1116 @@ +"""Transactional DeepSeek Harness profile plugin bridge. + +DSH remains the native owner of its plugin packages and composed runtime. This +module only manages one isolated Profile through the public ``dsh plugin`` and +``--dump-config`` commands, then projects non-secret inventory into KsADK. +It deliberately does not import Cordis or execute DSH plugin code in PluginHost. +""" + +from __future__ import annotations + +import hashlib +import json +import os +import re +import shutil +import stat +import subprocess +import tempfile +import threading +from collections.abc import Callable, Mapping, Sequence +from contextlib import contextmanager +from dataclasses import dataclass +from pathlib import Path +from typing import Iterator, Literal, TypedDict + +try: + import fcntl +except ImportError: # pragma: no cover - DSH production hosts are Unix + fcntl = None # type: ignore[assignment] + +from pydantic import BaseModel, ConfigDict + + +def _to_camel(value: str) -> str: + head, *tail = value.split("_") + return head + "".join(part.capitalize() for part in tail) + + +class _DshModel(BaseModel): + model_config = ConfigDict( + alias_generator=_to_camel, + populate_by_name=True, + extra="forbid", + frozen=True, + ) + + +class DshBridgeHost(_DshModel): + host_id: Literal["deepseek-harness"] = "deepseek-harness" + version: str + protocol: Literal["dsh.profile/v1"] = "dsh.profile/v1" + available: Literal[True] = True + + +class DshClientBundle(_DshModel): + """One validated browser half from an installed DSH package.""" + + platform: Literal["web"] = "web" + digest: str + content_bytes: int + external: tuple[str, ...] = () + inject: tuple[str, ...] = () + compatible: bool + incompatibility_reason: str = "" + + +class DshPluginInventory(_DshModel): + ecosystem: Literal["dsh"] = "dsh" + integration_mode: Literal["bridged"] = "bridged" + profile: str + name: str + display_name: str + description: str = "" + version: str + requested_spec: str + source_digest: str | None = None + source_kind: Literal["directory", "tgz"] | None = None + installed: Literal[True] = True + enabled: bool + permissions_declared: Literal[False] = False + client_bundle: DshClientBundle | None = None + risk_disclosures: tuple[str, ...] = ( + "DSH packages and install scripts run with the native host user privileges.", + "DSH bundle manifests do not declare a complete runtime permission set.", + ) + + +class DshProfileProjection(_DshModel): + profile: str + bundles: tuple[str, ...] + config_digest: str + config_bytes: int + host_version: str + + +class DshBridgeError(RuntimeError): + """Base failure for one bounded DSH profile operation.""" + + +class DshHostUnavailableError(DshBridgeError): + pass + + +class DshPluginNotFoundError(DshBridgeError): + pass + + +class DshPluginApprovalRequired(DshBridgeError): + pass + + +class DshPluginMutationError(DshBridgeError): + pass + + +class _CommandResult(_DshModel): + stdout: str = "" + stderr: str = "" + + +CommandRunner = Callable[[Sequence[str], Path, Mapping[str, str]], _CommandResult] + +_PROFILE_NAME = re.compile(r"^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$") +_PACKAGE_NAME = re.compile(r"^(?:@[A-Za-z0-9._-]+/)?[A-Za-z0-9._-]+$") +_HOST_VERSION = re.compile(r"\b(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?)\b") +_STATE_FILE = ".ksadk-dsh-plugins.json" +_IMMUTABLE_SOURCE_DIR = "immutable-plugin-sources" +_SNAPSHOT_FILES = ("package.json", "pnpm-lock.yaml", "pnpm-workspace.yaml", _STATE_FILE) +_MAX_JSON_BYTES = 2 * 1024 * 1024 +_MAX_CLIENT_BUNDLE_BYTES = 8 * 1024 * 1024 +_STUDIO_CLIENT_EXTERNALS = frozenset({"react"}) +_PROFILE_LOCK_DIR = "profile-locks" +_DSH_SUBPROCESS_ENV_KEYS = ( + "PATH", + "HOME", + "USER", + "LOGNAME", + "SHELL", + "TMPDIR", + "TMP", + "TEMP", + "LANG", + "LANGUAGE", + "LC_ALL", + "LC_CTYPE", + "HTTP_PROXY", + "HTTPS_PROXY", + "ALL_PROXY", + "NO_PROXY", + "http_proxy", + "https_proxy", + "all_proxy", + "no_proxy", + "SSL_CERT_FILE", + "SSL_CERT_DIR", + "NODE_EXTRA_CA_CERTS", + "REQUESTS_CA_BUNDLE", + "CURL_CA_BUNDLE", + "NPM_CONFIG_REGISTRY", + "npm_config_registry", + "SYSTEMROOT", + "WINDIR", + "COMSPEC", + "PATHEXT", +) + + +def dsh_subprocess_environment(*, dsh_home: Path | None = None) -> dict[str, str]: + """Build the explicit environment inherited by DSH and pnpm children. + + DSH bundles may execute package lifecycle scripts. They need process + discovery, a home/temp directory, locale, proxies and CA configuration, + but never receive arbitrary model, cloud, npm, SSH or host application + credentials from the parent process. + """ + + environment = { + name: os.environ[name] for name in _DSH_SUBPROCESS_ENV_KEYS if os.environ.get(name) + } + if "PATH" not in environment: + environment["PATH"] = os.defpath + if dsh_home is not None: + environment["DSH_HOME"] = str(dsh_home) + return environment + + +class _SourceReceipt(TypedDict): + digest: str + kind: Literal["directory", "tgz"] + artifact: str + dependency_spec: str + + +class _ProfileState(TypedDict): + order: list[str] + disabled: list[str] + sources: dict[str, _SourceReceipt] + + +@dataclass(frozen=True) +class _PreparedSource: + command_source: str + digest: str + kind: Literal["directory", "tgz"] + artifact: str + + +class DshProfilePluginBridge: + """Manage DSH bundles in one isolated Profile with rollback and preflight.""" + + def __init__( + self, + *, + dsh_home: Path, + profile: str = "ksadk", + dsh_command: Sequence[str] | None = None, + command_runner: CommandRunner | None = None, + cwd: Path | None = None, + ) -> None: + if not _PROFILE_NAME.fullmatch(profile): + raise ValueError("DSH profile must be a simple name without path separators") + if dsh_command is not None and not dsh_command: + raise ValueError("DSH command cannot be empty") + self._dsh_home = dsh_home.expanduser().resolve() + self._profile = profile + self._profile_root = self._dsh_home / "profiles" / profile + self._command = tuple(dsh_command) if dsh_command is not None else None + self._runner = command_runner or self._run_command + self._cwd = (cwd or Path.cwd()).resolve() + self._host: DshBridgeHost | None = None + self._lock = threading.RLock() + self._transaction_local = threading.local() + + @property + def host(self) -> DshBridgeHost: + if self._host is None: + raise DshHostUnavailableError("DSH bridge is not started") + return self._host + + def start(self) -> DshBridgeHost: + if self._host is not None: + return self._host + command = self._resolve_command() + result = self._invoke((*command, "--version"), cwd=self._cwd) + match = _HOST_VERSION.search(result.stdout or result.stderr) + if match is None: + raise DshHostUnavailableError("DSH host did not report a parseable version") + self._command = command + self._host = DshBridgeHost(version=match.group(1)) + return self._host + + def close(self) -> None: + self._host = None + + def __enter__(self) -> "DshProfilePluginBridge": + self.start() + return self + + def __exit__(self, _exc_type: object, _exc: object, _tb: object) -> None: + self.close() + + def list_plugins(self) -> tuple[DshPluginInventory, ...]: + with self._profile_transaction(exclusive=False): + return self._list_plugins_locked() + + def _list_plugins_locked(self) -> tuple[DshPluginInventory, ...]: + self._ensure_started() + if not self._manifest_path().is_file(): + return () + manifest = self._read_manifest() + state = self._read_state(manifest) + self._verify_source_receipts(manifest, state) + active = set(self._bundles(manifest)) + items: list[DshPluginInventory] = [] + for name, requested_spec in self._dependencies(manifest).items(): + package = self._read_package(name) + if package is None or self._bundle_patch(package) is None: + continue + receipt = state["sources"].get(name) + items.append( + DshPluginInventory( + profile=self._profile, + name=name, + display_name=self._string(package.get("displayName")) + or self._string(package.get("name")) + or name, + description=self._string(package.get("description")), + version=self._string(package.get("version")), + requested_spec=requested_spec, + source_digest=receipt["digest"] if receipt is not None else None, + source_kind=receipt["kind"] if receipt is not None else None, + enabled=name in active and name not in set(state["disabled"]), + client_bundle=self._client_bundle_metadata(name, package), + ) + ) + return tuple(sorted(items, key=lambda item: (item.display_name.casefold(), item.name))) + + def get_plugin(self, name: str) -> DshPluginInventory: + self._validate_package_name(name) + matches = [item for item in self.list_plugins() if item.name == name] + if not matches: + raise DshPluginNotFoundError(f"DSH plugin {name!r} is not installed") + return matches[0] + + def install_plugin( + self, + source: str, + *, + accept_host_permissions: bool = False, + ) -> DshPluginInventory: + if not accept_host_permissions: + raise DshPluginApprovalRequired( + "DSH packages can run install scripts and runtime code with host privileges; " + "explicit approval is required" + ) + self._validate_source(source) + with self._profile_transaction(exclusive=True): + self._require_package_mutation_rollback(new_profile_allowed=True) + snapshot = self._snapshot() + before = ( + self._dependencies(self._read_manifest()) if self._manifest_path().is_file() else {} + ) + try: + if self._manifest_path().is_file(): + existing_manifest = self._read_manifest() + self._verify_source_receipts( + existing_manifest, self._read_state(existing_manifest) + ) + prepared = self._prepare_source(source) + self._plugin_command("add", prepared.command_source) + manifest = self._read_manifest() + added = [name for name in self._dependencies(manifest) if name not in before] + if len(added) != 1: + raise DshPluginMutationError( + "installing one DSH plugin must add exactly one direct dependency" + ) + name = added[0] + self._require_bundle(name) + state = self._read_state(manifest) + state["order"] = [item for item in state["order"] if item != name] + [name] + if name not in state["disabled"]: + state["disabled"].append(name) + if prepared.digest: + state["sources"][name] = { + "digest": prepared.digest, + "kind": prepared.kind, + "artifact": prepared.artifact, + "dependency_spec": self._dependencies(manifest)[name], + } + self._write_state(state) + self._write_active_bundles(manifest, state) + self._preflight() + return self.get_plugin(name) + except BaseException as error: + self._rollback(snapshot, error) + raise + + def set_enabled(self, name: str, *, enabled: bool) -> DshPluginInventory: + self._validate_package_name(name) + with self._profile_transaction(exclusive=True): + snapshot = self._snapshot() + try: + manifest = self._read_manifest() + if name not in self._dependencies(manifest): + raise DshPluginNotFoundError(f"DSH plugin {name!r} is not installed") + self._require_bundle(name) + state = self._read_state(manifest) + self._verify_source_receipts(manifest, state, names=(name,)) + if name not in state["order"]: + state["order"].append(name) + if enabled: + state["disabled"] = [item for item in state["disabled"] if item != name] + elif name not in state["disabled"]: + state["disabled"].append(name) + self._write_state(state) + self._write_active_bundles(manifest, state) + self._preflight() + return self.get_plugin(name) + except BaseException as error: + self._rollback(snapshot, error) + raise + + def update_plugin( + self, + name: str, + *, + source: str | None = None, + accept_host_permissions: bool = False, + ) -> DshPluginInventory: + self._validate_package_name(name) + if not accept_host_permissions: + raise DshPluginApprovalRequired( + "updating a DSH package requires host permission approval" + ) + with self._profile_transaction(exclusive=True): + self._require_package_mutation_rollback(new_profile_allowed=False) + snapshot = self._snapshot() + try: + self.get_plugin(name) + before_manifest = self._read_manifest() + before_state = self._read_state(before_manifest) + self._verify_source_receipts(before_manifest, before_state, names=(name,)) + existing_source = before_state["sources"].get(name) + if existing_source is not None and source is None: + raise DshPluginMutationError( + "updating an immutable local DSH plugin requires an explicit source" + ) + prepared = None + if source is not None: + self._validate_source(source) + prepared = self._prepare_source(source) + if not prepared.digest: + raise DshPluginMutationError( + "an explicit update source must be a local directory or tgz" + ) + self._plugin_command("add", prepared.command_source) + else: + self._plugin_command("update", name) + manifest = self._read_manifest() + if prepared is not None: + changed = { + dependency + for dependency in ( + set(self._dependencies(before_manifest)) + | set(self._dependencies(manifest)) + ) + if self._dependencies(before_manifest).get(dependency) + != self._dependencies(manifest).get(dependency) + } + if changed != {name}: + raise DshPluginMutationError( + "updated local source must replace exactly the selected plugin" + ) + self._require_bundle(name) + state = self._read_state(manifest) + if prepared is not None: + if name not in self._dependencies(manifest): + raise DshPluginMutationError( + "updated local source did not preserve the plugin package name" + ) + state["sources"][name] = { + "digest": prepared.digest, + "kind": prepared.kind, + "artifact": prepared.artifact, + "dependency_spec": self._dependencies(manifest)[name], + } + self._write_state(state) + self._write_active_bundles(manifest, state) + self._verify_source_receipts(manifest, state, names=(name,)) + self._preflight() + return self.get_plugin(name) + except BaseException as error: + self._rollback(snapshot, error) + raise + + def uninstall_plugin(self, name: str) -> None: + self._validate_package_name(name) + with self._profile_transaction(exclusive=True): + self._require_package_mutation_rollback(new_profile_allowed=False) + snapshot = self._snapshot() + try: + self.get_plugin(name) + self._plugin_command("remove", name) + manifest = self._read_manifest() + state = self._read_state(manifest) + state["order"] = [item for item in state["order"] if item != name] + state["disabled"] = [item for item in state["disabled"] if item != name] + state["sources"].pop(name, None) + self._write_state(state) + self._write_active_bundles(manifest, state) + self._preflight() + if any(item.name == name for item in self.list_plugins()): + raise DshPluginMutationError("DSH host still reports the removed plugin") + except BaseException as error: + self._rollback(snapshot, error) + raise + + def project_profile(self) -> DshProfileProjection: + """Validate the native profile and expose only its digest, never raw config.""" + + with self._profile_transaction(exclusive=False): + self._ensure_started() + manifest = self._read_manifest() + self._verify_source_receipts(manifest, self._read_state(manifest)) + result = self._preflight() + payload = result.stdout.encode("utf-8") + return DshProfileProjection( + profile=self._profile, + bundles=tuple(self._bundles(manifest)), + config_digest=f"sha256:{hashlib.sha256(payload).hexdigest()}", + config_bytes=len(payload), + host_version=self.host.version, + ) + + def read_client_bundle(self, name: str, *, expected_digest: str) -> bytes: + """Read one immutable browser artifact after revalidating Profile inventory.""" + + with self._profile_transaction(exclusive=False): + return self._read_client_bundle_locked(name, expected_digest=expected_digest) + + def _read_client_bundle_locked(self, name: str, *, expected_digest: str) -> bytes: + item = self.get_plugin(name) + if not item.enabled: + raise DshPluginNotFoundError(f"DSH plugin {name!r} is disabled") + client = item.client_bundle + if client is None or not client.compatible: + raise DshPluginNotFoundError( + f"DSH plugin {name!r} has no Studio-compatible client bundle" + ) + if client.digest != expected_digest: + raise DshPluginMutationError("DSH client bundle digest fence does not match") + package = self._read_package(name) + assert package is not None + path = self._client_bundle_path(name, package) + if path is None: + raise DshPluginNotFoundError(f"DSH plugin {name!r} client bundle is unavailable") + try: + content = path.read_bytes() + except OSError as error: + raise DshPluginMutationError("DSH client bundle became unreadable") from error + actual_digest = f"sha256:{hashlib.sha256(content).hexdigest()}" + if actual_digest != expected_digest: + raise DshPluginMutationError("DSH client bundle changed after inventory projection") + return content + + def _resolve_command(self) -> tuple[str, ...]: + if self._command is not None: + return self._command + executable = shutil.which("dsh") + if executable is None: + raise DshHostUnavailableError( + "DSH host is not installed; configure an exact DSH executable " + "before using the bridge" + ) + return (executable,) + + def _ensure_started(self) -> None: + if self._host is None or self._command is None: + raise DshHostUnavailableError("DSH bridge is not started") + + @contextmanager + def _profile_transaction(self, *, exclusive: bool) -> Iterator[None]: + """Serialize one Profile snapshot across bridge objects and processes.""" + + with self._lock: + depth = int(getattr(self._transaction_local, "depth", 0)) + held_exclusive = bool(getattr(self._transaction_local, "exclusive", False)) + if depth: + if exclusive and not held_exclusive: + raise DshPluginMutationError( + "cannot upgrade a DSH profile read transaction to a mutation" + ) + self._transaction_local.depth = depth + 1 + try: + yield + finally: + self._transaction_local.depth = depth + return + + if fcntl is None: + raise DshHostUnavailableError("DSH profile transactions require Unix file locking") + lock_root = self._dsh_home / _PROFILE_LOCK_DIR + lock_root.mkdir(parents=True, exist_ok=True, mode=0o700) + if lock_root.resolve() != lock_root: + raise DshPluginMutationError("DSH profile lock directory is not trusted") + lock_path = lock_root / f"{self._profile}.lock" + flags = os.O_CREAT | os.O_RDWR + if hasattr(os, "O_NOFOLLOW"): + flags |= os.O_NOFOLLOW + try: + descriptor = os.open(lock_path, flags, 0o600) + except OSError as error: + raise DshPluginMutationError( + "DSH profile transaction lock is unavailable" + ) from error + try: + metadata = os.fstat(descriptor) + if not stat.S_ISREG(metadata.st_mode): + raise DshPluginMutationError( + "DSH profile transaction lock is not a regular file" + ) + os.fchmod(descriptor, 0o600) + fcntl.flock( + descriptor, + fcntl.LOCK_EX if exclusive else fcntl.LOCK_SH, + ) + self._transaction_local.depth = 1 + self._transaction_local.exclusive = exclusive + try: + yield + finally: + self._transaction_local.depth = 0 + self._transaction_local.exclusive = False + fcntl.flock(descriptor, fcntl.LOCK_UN) + finally: + os.close(descriptor) + + def _invoke(self, command: Sequence[str], *, cwd: Path) -> _CommandResult: + environment = dsh_subprocess_environment(dsh_home=self._dsh_home) + try: + return self._runner(tuple(command), cwd, environment) + except DshBridgeError: + raise + except Exception as error: + raise DshHostUnavailableError("DSH host command could not be executed") from error + + def _plugin_command(self, verb: str, value: str) -> _CommandResult: + self._ensure_started() + assert self._command is not None + return self._invoke( + (*self._command, "plugin", "--profile", self._profile, verb, value), + cwd=self._cwd, + ) + + def _preflight(self) -> _CommandResult: + self._ensure_started() + assert self._command is not None + return self._invoke( + (*self._command, "--profile", self._profile, "--dump-config"), + cwd=self._cwd, + ) + + def _manifest_path(self) -> Path: + return self._profile_root / "package.json" + + def _read_manifest(self) -> dict[str, object]: + return self._read_json(self._manifest_path(), required=True) + + def _read_package(self, name: str) -> dict[str, object] | None: + return self._read_json( + self._profile_root / "node_modules" / Path(*name.split("/")) / "package.json", + required=False, + ) + + @staticmethod + def _read_json(path: Path, *, required: bool) -> dict[str, object] | None: + try: + if path.stat().st_size > _MAX_JSON_BYTES: + raise DshBridgeError("DSH manifest exceeds the supported size limit") + payload = json.loads(path.read_text(encoding="utf-8")) + except FileNotFoundError: + if required: + raise DshBridgeError("required DSH profile manifest is unavailable") from None + return None + except (OSError, UnicodeError, json.JSONDecodeError) as error: + raise DshBridgeError("DSH profile contains an unreadable JSON manifest") from error + if not isinstance(payload, dict): + raise DshBridgeError("DSH JSON manifest must be an object") + return payload + + @staticmethod + def _dependencies(manifest: Mapping[str, object]) -> dict[str, str]: + raw = manifest.get("dependencies") + if raw is None: + return {} + if not isinstance(raw, dict) or any( + not isinstance(name, str) or not isinstance(value, str) for name, value in raw.items() + ): + raise DshBridgeError("DSH profile dependencies are invalid") + return dict(raw) + + @staticmethod + def _bundles(manifest: Mapping[str, object]) -> list[str]: + dsh = manifest.get("dsh") + profile = dsh.get("profile") if isinstance(dsh, dict) else None + bundles = profile.get("bundles") if isinstance(profile, dict) else None + if bundles is None: + return [] + if not isinstance(bundles, list) or any(not isinstance(item, str) for item in bundles): + raise DshBridgeError("DSH profile bundle order is invalid") + return list(bundles) + + @staticmethod + def _bundle_patch(package: Mapping[str, object]) -> str | None: + dsh = package.get("dsh") + bundle = dsh.get("bundle") if isinstance(dsh, dict) else None + patch = bundle.get("patch") if isinstance(bundle, dict) else None + return patch.strip() if isinstance(patch, str) and patch.strip() else None + + @staticmethod + def _client_declaration(package: Mapping[str, object]) -> Mapping[str, object] | None: + dsh = package.get("dsh") + client = dsh.get("client") if isinstance(dsh, dict) else None + return client if isinstance(client, dict) else None + + @staticmethod + def _string_tuple(value: object) -> tuple[str, ...] | None: + if value is None: + return () + if not isinstance(value, list) or any(not isinstance(item, str) for item in value): + return None + return tuple(value) + + @staticmethod + def _client_export(package: Mapping[str, object]) -> str | None: + exports = package.get("exports") + client = exports.get("./client") if isinstance(exports, dict) else None + if isinstance(client, str): + return client + default = client.get("default") if isinstance(client, dict) else None + return default if isinstance(default, str) else None + + def _client_bundle_path( + self, name: str, package: Mapping[str, object] + ) -> Path | None: + declared = self._client_export(package) + if not declared: + return None + relative = Path(declared) + if relative.is_absolute() or ".." in relative.parts: + return None + root = (self._profile_root / "node_modules" / Path(*name.split("/"))).resolve() + target = (root / relative).resolve() + if not target.is_relative_to(root) or not target.is_file(): + return None + return target + + def _client_bundle_metadata( + self, name: str, package: Mapping[str, object] + ) -> DshClientBundle | None: + declaration = self._client_declaration(package) + if declaration is None or declaration.get("platform") != "web": + return None + inject = self._string_tuple(declaration.get("inject")) + external = self._string_tuple(declaration.get("external")) + target = self._client_bundle_path(name, package) + reason = "" + if inject is None or external is None: + reason = "dsh.client inject/external must be string arrays" + elif target is None: + reason = "exports[./client] does not resolve to a built bundle" + elif inject: + reason = "client bundle dependencies are not present in the Studio graph" + elif any(item not in _STUDIO_CLIENT_EXTERNALS for item in external): + reason = "client bundle requests unsupported external modules" + if target is None: + return DshClientBundle( + digest="", + content_bytes=0, + inject=inject or (), + external=external or (), + compatible=False, + incompatibility_reason=reason, + ) + try: + size = target.stat().st_size + if size > _MAX_CLIENT_BUNDLE_BYTES: + reason = "client bundle exceeds the supported size limit" + content = b"" + else: + content = target.read_bytes() + except OSError: + size = 0 + content = b"" + reason = "client bundle is unreadable" + return DshClientBundle( + digest=f"sha256:{hashlib.sha256(content).hexdigest()}" if content else "", + content_bytes=size, + inject=inject or (), + external=external or (), + compatible=not reason, + incompatibility_reason=reason, + ) + + def _require_bundle(self, name: str) -> None: + package = self._read_package(name) + patch = self._bundle_patch(package or {}) + if package is None or patch is None: + raise DshPluginMutationError(f"{name} does not declare dsh.bundle.patch") + relative = Path(patch) + if relative.is_absolute() or ".." in relative.parts: + raise DshPluginMutationError(f"{name} declares an unsafe bundle patch path") + root = (self._profile_root / "node_modules" / Path(*name.split("/"))).resolve() + target = (root / relative).resolve() + if not target.is_relative_to(root) or not target.is_file(): + raise DshPluginMutationError(f"{name} bundle patch is unavailable") + + def _read_state(self, manifest: Mapping[str, object]) -> _ProfileState: + dependencies = set(self._dependencies(manifest)) + bundle_dependencies = [ + name + for name in dependencies + if self._bundle_patch(self._read_package(name) or {}) is not None + ] + active = [name for name in self._bundles(manifest) if name in dependencies] + stored = self._read_json(self._profile_root / _STATE_FILE, required=False) or {} + order_raw = stored.get("order") + disabled_raw = stored.get("disabled") + sources_raw = stored.get("sources") + order = ( + [item for item in order_raw if isinstance(item, str) and item in bundle_dependencies] + if isinstance(order_raw, list) + else [] + ) + for name in [*active, *bundle_dependencies]: + if name not in order: + order.append(name) + disabled = ( + [item for item in disabled_raw if isinstance(item, str) and item in bundle_dependencies] + if isinstance(disabled_raw, list) + else [name for name in bundle_dependencies if name not in active] + ) + sources: dict[str, _SourceReceipt] = {} + if isinstance(sources_raw, dict): + for name, raw in sources_raw.items(): + if name not in bundle_dependencies: + continue + if not isinstance(raw, dict): + raise DshPluginMutationError("DSH local source receipt is invalid") + digest = raw.get("digest") + kind = raw.get("kind") + artifact = raw.get("artifact") + dependency_spec = raw.get("dependencySpec") or raw.get("dependency_spec") + if ( + isinstance(digest, str) + and re.fullmatch(r"sha256:[0-9a-f]{64}", digest) + and kind in {"directory", "tgz"} + and isinstance(artifact, str) + and isinstance(dependency_spec, str) + ): + sources[name] = { + "digest": digest, + "kind": kind, + "artifact": artifact, + "dependency_spec": dependency_spec, + } + else: + raise DshPluginMutationError("DSH local source receipt is invalid") + return {"order": order, "disabled": disabled, "sources": sources} + + def _write_state(self, state: _ProfileState) -> None: + self._write_json( + self._profile_root / _STATE_FILE, + { + "version": 2, + "order": list(state["order"]), + "disabled": list(state["disabled"]), + "sources": { + name: { + "digest": receipt["digest"], + "kind": receipt["kind"], + "artifact": receipt["artifact"], + "dependencySpec": receipt["dependency_spec"], + } + for name, receipt in sorted(state["sources"].items()) + }, + }, + ) + + def _write_active_bundles( + self, + manifest: dict[str, object], + state: _ProfileState, + ) -> None: + dependencies = set(self._dependencies(manifest)) + existing = self._bundles(manifest) + builtins = [name for name in existing if name not in dependencies] + disabled = set(state["disabled"]) + enabled = [name for name in state["order"] if name in dependencies and name not in disabled] + dsh = manifest.get("dsh") if isinstance(manifest.get("dsh"), dict) else {} + assert isinstance(dsh, dict) + profile = dsh.get("profile") if isinstance(dsh.get("profile"), dict) else {} + assert isinstance(profile, dict) + profile["bundles"] = [*builtins, *enabled] + dsh["profile"] = profile + manifest["dsh"] = dsh + self._write_json(self._manifest_path(), manifest) + + def _prepare_source(self, source: str) -> _PreparedSource: + value = source.strip() + candidate = Path(value).expanduser() + if not candidate.is_absolute() or not candidate.exists(): + return _PreparedSource(value, "", "tgz", "") + local = candidate.resolve() + with tempfile.TemporaryDirectory(prefix="agentengine-dsh-source-") as directory: + if local.is_dir(): + # Import lazily: dsh_toolchain owns the pinned pnpm workflow and + # imports this bridge for validation. + from ksadk.plugins.dsh_toolchain import ( # noqa: PLC0415 + DshPluginDeveloper, + DshToolchainManager, + ) + + output = Path(directory) + packed = DshPluginDeveloper(toolchain=DshToolchainManager()).pack( + local, output_dir=output + ) + archive = Path(packed.artifact) + kind: Literal["directory", "tgz"] = "directory" + elif local.is_file() and local.name.endswith(".tgz"): + archive = local + kind = "tgz" + else: + raise DshPluginMutationError( + "local DSH plugin source must be a directory or .tgz archive" + ) + try: + content = archive.read_bytes() + except OSError as error: + raise DshPluginMutationError("local DSH plugin source is unreadable") from error + digest_hex = hashlib.sha256(content).hexdigest() + digest = f"sha256:{digest_hex}" + root = (self._dsh_home / _IMMUTABLE_SOURCE_DIR / digest_hex).resolve() + expected_parent = (self._dsh_home / _IMMUTABLE_SOURCE_DIR).resolve() + if root.parent != expected_parent: + raise DshPluginMutationError("immutable DSH source path escaped its store") + target = root / "package.tgz" + root.mkdir(parents=True, exist_ok=True, mode=0o700) + if target.exists(): + if hashlib.sha256(target.read_bytes()).hexdigest() != digest_hex: + raise DshPluginMutationError( + "immutable DSH source store contains a digest collision" + ) + else: + temporary = root / f".package.{os.getpid()}.tmp" + try: + temporary.write_bytes(content) + temporary.chmod(0o400) + os.replace(temporary, target) + finally: + temporary.unlink(missing_ok=True) + target.chmod(0o400) + relative = target.relative_to(self._dsh_home).as_posix() + return _PreparedSource(str(target), digest, kind, relative) + + def _verify_source_receipts( + self, + manifest: Mapping[str, object], + state: _ProfileState, + *, + names: Sequence[str] | None = None, + ) -> None: + dependencies = self._dependencies(manifest) + for name, spec in dependencies.items(): + if _IMMUTABLE_SOURCE_DIR in spec and name not in state["sources"]: + raise DshPluginMutationError( + f"DSH plugin {name!r} is missing its immutable source receipt" + ) + selected = names if names is not None else tuple(state["sources"]) + store = (self._dsh_home / _IMMUTABLE_SOURCE_DIR).resolve() + for name in selected: + receipt = state["sources"].get(name) + if receipt is None: + continue + if dependencies.get(name) != receipt["dependency_spec"]: + raise DshPluginMutationError( + f"DSH plugin {name!r} dependency no longer matches its source receipt" + ) + artifact = (self._dsh_home / receipt["artifact"]).resolve() + if not artifact.is_relative_to(store) or not artifact.is_file(): + raise DshPluginMutationError( + f"DSH plugin {name!r} immutable source is unavailable" + ) + try: + actual = f"sha256:{hashlib.sha256(artifact.read_bytes()).hexdigest()}" + except OSError as error: + raise DshPluginMutationError( + f"DSH plugin {name!r} immutable source is unreadable" + ) from error + if actual != receipt["digest"]: + raise DshPluginMutationError( + f"DSH plugin {name!r} immutable source digest changed" + ) + + @staticmethod + def _write_json(path: Path, payload: object) -> None: + path.parent.mkdir(parents=True, exist_ok=True, mode=0o700) + descriptor, temporary = tempfile.mkstemp(prefix=f".{path.name}.", dir=path.parent) + try: + with os.fdopen(descriptor, "w", encoding="utf-8") as handle: + json.dump(payload, handle, ensure_ascii=False, indent=2) + handle.write("\n") + handle.flush() + os.fsync(handle.fileno()) + os.chmod(temporary, 0o600) + os.replace(temporary, path) + finally: + try: + os.unlink(temporary) + except FileNotFoundError: + pass + + def _snapshot(self) -> dict[str, bytes | None]: + snapshot: dict[str, bytes | None] = {} + for name in _SNAPSHOT_FILES: + path = self._profile_root / name + try: + snapshot[name] = path.read_bytes() + except FileNotFoundError: + snapshot[name] = None + return snapshot + + def _require_package_mutation_rollback(self, *, new_profile_allowed: bool) -> None: + """Reject package mutations unless their filesystem effects are reversible.""" + + if not self._profile_root.exists(): + if new_profile_allowed: + return + raise DshPluginNotFoundError(f"DSH profile {self._profile!r} is not initialized") + if not self._manifest_path().is_file(): + raise DshPluginMutationError( + "existing DSH profile directory has no package manifest; refusing to mutate it" + ) + if not (self._profile_root / "pnpm-lock.yaml").is_file(): + raise DshPluginMutationError( + "existing DSH profile has no pnpm lockfile, so package rollback is unavailable" + ) + + def _rollback(self, snapshot: Mapping[str, bytes | None], original: BaseException) -> None: + try: + if all(content is None for content in snapshot.values()): + profiles_root = (self._dsh_home / "profiles").resolve() + profile_root = self._profile_root.resolve() + if profile_root.parent != profiles_root: + raise DshPluginMutationError("refusing to clean an untrusted DSH profile path") + if profile_root.exists(): + shutil.rmtree(profile_root, ignore_errors=False) + return + self._profile_root.mkdir(parents=True, exist_ok=True, mode=0o700) + for name, content in snapshot.items(): + path = self._profile_root / name + if content is None: + path.unlink(missing_ok=True) + else: + path.write_bytes(content) + path.chmod(0o600) + if snapshot.get("pnpm-lock.yaml") is not None and self._manifest_path().is_file(): + self._plugin_command("install", "--frozen-lockfile") + for name in ("package.json", _STATE_FILE): + content = snapshot.get(name) + path = self._profile_root / name + if content is None: + path.unlink(missing_ok=True) + else: + path.write_bytes(content) + path.chmod(0o600) + except BaseException as rollback_error: + raise DshPluginMutationError( + "DSH plugin mutation failed and profile rollback also failed" + ) from rollback_error + if isinstance(original, DshBridgeError): + return + + @staticmethod + def _validate_source(source: str) -> None: + value = source.strip() + if ( + not value + or len(value) > 2048 + or value.startswith("-") + or any(character in source for character in ("\r", "\n", "\0")) + or value in {".", ".."} + or value.startswith(("file:", "link:")) + or value.startswith(("./", "../", "file:./", "file:../", "link:./", "link:../")) + ): + raise ValueError("DSH plugin source must be a package, Git URL, or absolute local path") + + @staticmethod + def _validate_package_name(name: str) -> None: + if not _PACKAGE_NAME.fullmatch(name): + raise ValueError("invalid DSH plugin package name") + + @staticmethod + def _string(value: object) -> str: + return value if isinstance(value, str) else "" + + @staticmethod + def _run_command( + command: Sequence[str], + cwd: Path, + environment: Mapping[str, str], + ) -> _CommandResult: + try: + completed = subprocess.run( + list(command), + cwd=cwd, + env=dict(environment), + check=False, + capture_output=True, + text=True, + timeout=120, + ) + except (OSError, subprocess.TimeoutExpired) as error: + raise DshHostUnavailableError("DSH host command did not complete") from error + if completed.returncode != 0: + diagnostic = _redact_diagnostic(completed.stderr or completed.stdout) + raise DshPluginMutationError( + f"DSH host command failed with exit code {completed.returncode}" + + (f": {diagnostic[-2000:]}" if diagnostic else "") + ) + return _CommandResult(stdout=completed.stdout, stderr=completed.stderr) + + +def _redact_diagnostic(value: str) -> str: + value = re.sub(r"(https?://)[^/\s:@]+:[^/\s@]+@", r"\1[redacted]@", value, flags=re.I) + return re.sub( + r"((?:token|password|authorization|_authToken)\s*[:=]\s*)[^\s]+", + r"\1[redacted]", + value, + flags=re.I, + ).strip() + + +__all__ = [ + "DshBridgeError", + "DshBridgeHost", + "DshClientBundle", + "DshHostUnavailableError", + "DshPluginApprovalRequired", + "DshPluginInventory", + "DshPluginMutationError", + "DshPluginNotFoundError", + "DshProfilePluginBridge", + "DshProfileProjection", + "dsh_subprocess_environment", +] diff --git a/ksadk/plugins/builtins.py b/ksadk/plugins/builtins.py new file mode 100644 index 00000000..9618dbc2 --- /dev/null +++ b/ksadk/plugins/builtins.py @@ -0,0 +1,747 @@ +"""Built-in capability runtimes for immutable AgentBundle execution. + +These plugins deliberately consume only the already validated +``ResolvedPluginBundle`` plus explicit process services supplied at host +construction. They never reach back into Studio's mutable catalogs. The +module also keeps rendering as a projection of the canonical ConversationItem +contract; it does not introduce another event or transcript pipeline. +""" + +from __future__ import annotations + +import hashlib +import json +from collections.abc import Callable, Mapping, Sequence +from pathlib import Path, PurePosixPath +from typing import Any, cast + +from ksadk.conversations.contracts import ConversationItem +from ksadk.events.session_event import SessionServiceEventStore +from ksadk.harness.config import McpToolSpec +from ksadk.plugins.bundle import ResolvedPluginBundle +from ksadk.plugins.contracts import ( + CompositionProfile, + PluginManifest, + plugin_lock_digest, +) +from ksadk.plugins.host import PluginHostError +from ksadk.plugins.providers.harness import HarnessSkillContribution, HarnessTurnRequest +from ksadk.plugins.resolver import composition_profile_digest +from ksadk.sessions.base import BaseSessionService +from ksadk.sessions.local_service import LocalSessionService + +BUILTIN_PLUGIN_VERSION = "1.0.0" + +SQLITE_SESSION_STORE_PLUGIN_ID = "io.ksadk.session-store.sqlite" +WORKSPACE_MCP_PLUGIN_ID = "io.ksadk.mcp.workspace" +WORKSPACE_SKILL_PLUGIN_ID = "io.ksadk.skill.workspace" +READ_ONLY_CONTEXT_PLUGIN_ID = "io.ksadk.context.bundle-readonly" +CORE_RENDERER_PLUGIN_ID = "io.ksadk.renderer.conversation-core" + +SecretResolver = Callable[[str], str | None] + + +def _manifest_digest(plugin_id: str) -> str: + payload = f"{plugin_id}@{BUILTIN_PLUGIN_VERSION}:builtin-runtime-v1".encode() + return f"sha256:{hashlib.sha256(payload).hexdigest()}" + + +def _manifest( + plugin_id: str, + *, + definition: str, + slot: str, + mode: str, + permissions: Sequence[str] = (), + secret_fields: Sequence[str] = (), +) -> PluginManifest: + return cast( + PluginManifest, + PluginManifest.model_validate( + { + "metadata": {"id": plugin_id, "version": BUILTIN_PLUGIN_VERSION}, + "spec": { + "domain": "ksadk-platform", + "runtime": "python", + "entrypoint": "ksadk.plugins.builtins:builtin_capability_factories", + "provides": [ + {"definition": definition, "slot": slot, "mode": mode} + ], + "secretFields": list(secret_fields), + "permissions": list(permissions), + "isolation": "in-process", + "compatibility": { + "kernelApi": ">=1,<2", + "runtimeProtocols": ["agentkit.runtime/v1"], + "python": ">=3.10,<3.15", + }, + "healthContract": "plugin.health/v1", + "provenance": { + "source": "builtin", + "digest": _manifest_digest(plugin_id), + "license": "Apache-2.0", + }, + }, + }, + ), + ) + + +def builtin_capability_manifests() -> tuple[PluginManifest, ...]: + """Return the exact, deterministic Phase 2 built-in capability catalog.""" + + return ( + _manifest( + SQLITE_SESSION_STORE_PLUGIN_ID, + definition="session.event-store/v1", + slot="session.events", + mode="unique", + permissions=("filesystem:session-store",), + ), + _manifest( + WORKSPACE_MCP_PLUGIN_ID, + definition="mcp.connector/v1", + slot="mcp.workspace", + mode="multiple", + permissions=("network:mcp",), + secret_fields=("apiKeyRef",), + ), + _manifest( + WORKSPACE_SKILL_PLUGIN_ID, + definition="skill.source/v1", + slot="skill.workspace", + mode="multiple", + permissions=("filesystem:bundle-read",), + ), + _manifest( + READ_ONLY_CONTEXT_PLUGIN_ID, + definition="context.contributor/v1", + slot="context.bundle", + mode="multiple", + permissions=("filesystem:bundle-read",), + ), + _manifest( + CORE_RENDERER_PLUGIN_ID, + definition="session.item.renderer/v1", + slot="renderer.core", + mode="multiple", + ), + ) + + +class _BuiltinRuntime: + def __init__(self, plugin_id: str, version: str) -> None: + self.plugin_id = plugin_id + self.version = version + self._ready = False + self._disposed = False + + async def start(self) -> None: + if self._disposed: + raise PluginHostError( + "builtin_capability_disposed", + f"built-in capability {self.plugin_id}@{self.version} is disposed", + ) + self._ready = True + + async def health(self) -> bool: + return self._ready and not self._disposed + + async def drain(self) -> None: + self._ready = False + + async def dispose(self) -> None: + self._ready = False + self._disposed = True + + def _require_ready(self) -> None: + if not self._ready or self._disposed: + raise PluginHostError( + "builtin_capability_unavailable", + f"built-in capability {self.plugin_id}@{self.version} is not ready", + ) + + def _config(self, bundle: ResolvedPluginBundle) -> Mapping[str, Any]: + self._require_ready() + return _bound_capability_config(bundle, self.plugin_id, self.version) + + +class SQLiteSessionStoreRuntime(_BuiltinRuntime): + """Own one durable SQLite session service for an active profile.""" + + def __init__(self, plugin_id: str, version: str, *, db_path: Path) -> None: + super().__init__(plugin_id, version) + self.db_path = db_path.resolve() + self._service: LocalSessionService | None = None + self._event_store: SessionServiceEventStore | None = None + + async def start(self) -> None: + if self._disposed: + await super().start() + try: + self._service = LocalSessionService(self.db_path) + self._event_store = SessionServiceEventStore(self._service) + except Exception as error: # noqa: BLE001 - durable backend boundary + self._service = None + self._event_store = None + raise PluginHostError( + "builtin_session_store_start_failed", + "SQLite session store could not be initialized", + ) from error + self._ready = True + + def session_service_for(self, bundle: ResolvedPluginBundle) -> BaseSessionService: + self._config(bundle) + if self._service is None: # pragma: no cover - protected by lifecycle + raise PluginHostError( + "builtin_capability_unavailable", "SQLite session service is unavailable" + ) + return self._service + + def event_store_for(self, bundle: ResolvedPluginBundle) -> SessionServiceEventStore: + self._config(bundle) + if self._event_store is None: # pragma: no cover - protected by lifecycle + raise PluginHostError( + "builtin_capability_unavailable", "SQLite event store is unavailable" + ) + return self._event_store + + async def dispose(self) -> None: + service = self._service + self._ready = False + self._disposed = True + if service is not None: + await service.aclose() + + +class WorkspaceMCPRuntime(_BuiltinRuntime): + """Materialize locked workspace MCP resources for the Harness provider.""" + + def __init__( + self, + plugin_id: str, + version: str, + *, + secret_resolver: SecretResolver | None, + ) -> None: + super().__init__(plugin_id, version) + self._secret_resolver = secret_resolver + + def inventory(self, bundle: ResolvedPluginBundle) -> tuple[dict[str, Any], ...]: + resources = self._resources(bundle) + inventory: list[dict[str, Any]] = [] + for materializer, resolved in resources: + inventory.append( + { + "name": resolved["name"], + "version": resolved["version"], + "transport": resolved["transport"], + "endpointUrl": resolved.get("endpointUrl"), + "toolFilter": tuple(_string_list(materializer.get("toolFilter"))), + } + ) + return tuple(inventory) + + def harness_mcp_specs( + self, bundle: ResolvedPluginBundle + ) -> tuple[McpToolSpec, ...]: + specs: list[McpToolSpec] = [] + for materializer, resolved in self._resources(bundle): + transport = _required_string(resolved, "transport", code="builtin_mcp_invalid") + if transport not in {"http", "sse"}: + raise PluginHostError( + "builtin_mcp_transport_unsupported", + f"workspace MCP {resolved['name']!r} uses unsupported transport", + ) + endpoint = _required_string( + resolved, "endpointUrl", code="builtin_mcp_endpoint_missing" + ) + secret_ref = _optional_string(materializer.get("apiKeyRef")) + api_key: str | None = None + if secret_ref is not None: + if not _is_secret_reference(secret_ref): + raise PluginHostError( + "builtin_mcp_secret_ref_invalid", + "workspace MCP apiKeyRef must be an external secret reference", + ) + if self._secret_resolver is None: + raise PluginHostError( + "builtin_mcp_secret_unavailable", + "workspace MCP credential resolver is unavailable", + ) + try: + api_key = self._secret_resolver(secret_ref) + except Exception as error: # noqa: BLE001 - secret-provider boundary + raise PluginHostError( + "builtin_mcp_secret_unavailable", + "workspace MCP credential could not be resolved", + ) from error + if not api_key: + raise PluginHostError( + "builtin_mcp_secret_unavailable", + "workspace MCP credential could not be resolved", + ) + specs.append( + McpToolSpec( + name=_required_string(resolved, "name", code="builtin_mcp_invalid"), + url=endpoint, + api_key=api_key, + tool_filter=tuple(_string_list(materializer.get("toolFilter"))), + tool_name_prefix=_optional_string( + materializer.get("toolNamePrefix") + ), + ) + ) + return tuple(specs) + + def _resources( + self, bundle: ResolvedPluginBundle + ) -> tuple[tuple[Mapping[str, Any], Mapping[str, Any]], ...]: + config = self._config(bundle) + declared = _resource_entries(config, expected_kind="mcp") + resolved = _resolved_resources(bundle, "mcpServers") + return tuple( + ( + _mapping(entry.get("materializer"), code="builtin_mcp_invalid"), + _match_resource(entry, resolved, code="builtin_mcp_resource_mismatch"), + ) + for entry in declared + ) + + +class WorkspaceSkillRuntime(_BuiltinRuntime): + """Expose integrity-checked Skill instructions copied into the Bundle.""" + + def harness_skill(self, bundle: ResolvedPluginBundle) -> HarnessSkillContribution: + config = self._config(bundle) + declared = _resource_entries(config, expected_kind="skill") + resolved = _resolved_resources(bundle, "skills") + contributions: list[HarnessSkillContribution] = [] + for entry in declared: + item = _match_resource( + entry, resolved, code="builtin_skill_resource_mismatch" + ) + name = _required_string(item, "name", code="builtin_skill_invalid") + bundle_path = _required_string( + item, "bundlePath", code="builtin_skill_path_invalid" + ) + directory = _safe_bundle_path( + bundle, + bundle_path, + code="builtin_skill_path_invalid", + require_declared=False, + ) + if not directory.is_dir() or directory.is_symlink(): + raise PluginHostError( + "builtin_skill_path_invalid", f"Skill {name!r} is not a Bundle directory" + ) + expected_digest = _required_string( + item, "digest", code="builtin_skill_invalid" + ) + if _directory_digest(directory) != expected_digest: + raise PluginHostError( + "builtin_skill_digest_mismatch", + f"Skill {name!r} does not match its locked Bundle digest", + ) + instructions = _required_string( + item, "instructions", code="builtin_skill_instructions_missing" + ) + contributions.append( + HarnessSkillContribution(name=name, instructions=instructions) + ) + if not contributions: + raise PluginHostError( + "builtin_skill_resource_missing", "workspace Skill has no locked resource" + ) + if len(contributions) == 1: + return contributions[0] + return HarnessSkillContribution( + name="workspace-skills", + instructions="\n\n".join( + f"Skill {item.name}:\n{item.instructions}" for item in contributions + ), + ) + + +class ReadOnlyBundleContextRuntime(_BuiltinRuntime): + """Read declared UTF-8 context files from the immutable Bundle only.""" + + async def harness_context( + self, bundle: ResolvedPluginBundle, request: HarnessTurnRequest + ) -> str: + del request + config = self._config(bundle) + paths = _string_list(config.get("paths")) + max_chars = config.get("maxChars", 32_000) + if not isinstance(max_chars, int) or isinstance(max_chars, bool) or max_chars < 1: + raise PluginHostError( + "builtin_context_config_invalid", "maxChars must be a positive integer" + ) + chunks: list[str] = [] + remaining = max_chars + for relative in paths: + path = _safe_bundle_path( + bundle, + relative, + code="builtin_context_path_invalid", + require_declared=True, + ) + if not path.is_file() or path.is_symlink(): + raise PluginHostError( + "builtin_context_path_invalid", + f"Bundle context path is not a regular file: {relative}", + ) + try: + text = path.read_text(encoding="utf-8").strip() + except (OSError, UnicodeError) as error: + raise PluginHostError( + "builtin_context_read_failed", + f"Bundle context file could not be read: {relative}", + ) from error + if not text or remaining == 0: + continue + chunk = text[:remaining] + chunks.append(chunk) + remaining -= len(chunk) + return "\n\n".join(chunks) + + +class CoreConversationRendererRuntime(_BuiltinRuntime): + """Project canonical items into a safe core renderer view model.""" + + _COMPONENTS = { + "user_message": "markdown", + "assistant_text": "markdown", + "reasoning": "reasoning", + "tool_call": "tool", + "approval": "approval", + "progress": "progress", + "plan": "plan", + "goal": "goal", + "artifact": "artifact", + "a2ui": "a2ui", + "error": "error", + } + + def render(self, item: ConversationItem) -> dict[str, Any]: + base: dict[str, Any] = { + "component": self._COMPONENTS.get(item.kind, "unknown"), + "itemId": item.item_id, + "lifecycle": item.lifecycle, + } + if item.kind in {"user_message", "assistant_text"}: + text = item.payload.get("text", "") + base["text"] = text if isinstance(text, str) else str(text) + return base + if item.kind == "unknown": + base["schemaRef"] = item.payload_schema_ref + base["summary"] = json.dumps( + item.payload, + ensure_ascii=False, + sort_keys=True, + separators=(",", ":"), + default=str, + )[:4096] + return base + # Structured payload stays data. Consumers choose trusted local UI + # components; no Bundle-provided HTML or JavaScript is executed here. + base["payload"] = dict(item.payload) + base["schemaRef"] = item.payload_schema_ref + return base + + +class SQLiteSessionStoreFactory: + def __init__(self, state_root: Path) -> None: + self._state_root = state_root.resolve() + self.runtime: SQLiteSessionStoreRuntime | None = None + + async def stage( + self, + manifest: PluginManifest, + *, + profile: CompositionProfile, + services: Mapping[str, Any], + ) -> SQLiteSessionStoreRuntime: + del services + _require_manifest(manifest, SQLITE_SESSION_STORE_PLUGIN_ID) + profile_key = composition_profile_digest(profile).removeprefix("sha256:") + runtime = SQLiteSessionStoreRuntime( + manifest.metadata.id, + manifest.metadata.version, + db_path=self._state_root / profile_key / "sessions.sqlite", + ) + self.runtime = runtime + return runtime + + +class _WorkspaceMCPFactory: + def __init__(self, secret_resolver: SecretResolver | None) -> None: + self._secret_resolver = secret_resolver + + async def stage( + self, + manifest: PluginManifest, + *, + profile: CompositionProfile, + services: Mapping[str, Any], + ) -> WorkspaceMCPRuntime: + del profile + _require_manifest(manifest, WORKSPACE_MCP_PLUGIN_ID) + resolver = self._secret_resolver + service_resolver = services.get("secret_resolver") + if resolver is None and callable(service_resolver): + resolver = service_resolver + return WorkspaceMCPRuntime( + manifest.metadata.id, + manifest.metadata.version, + secret_resolver=resolver, + ) + + +class _SimpleFactory: + def __init__(self, plugin_id: str, runtime_type: type[_BuiltinRuntime]) -> None: + self._plugin_id = plugin_id + self._runtime_type = runtime_type + + async def stage( + self, + manifest: PluginManifest, + *, + profile: CompositionProfile, + services: Mapping[str, Any], + ) -> _BuiltinRuntime: + del profile, services + _require_manifest(manifest, self._plugin_id) + return self._runtime_type(manifest.metadata.id, manifest.metadata.version) + + +def builtin_capability_factories( + *, + state_root: Path, + secret_resolver: SecretResolver | None = None, +) -> dict[str, Any]: + """Create factories with explicit state and secret-provider boundaries.""" + + return { + SQLITE_SESSION_STORE_PLUGIN_ID: SQLiteSessionStoreFactory(state_root), + WORKSPACE_MCP_PLUGIN_ID: _WorkspaceMCPFactory(secret_resolver), + WORKSPACE_SKILL_PLUGIN_ID: _SimpleFactory( + WORKSPACE_SKILL_PLUGIN_ID, WorkspaceSkillRuntime + ), + READ_ONLY_CONTEXT_PLUGIN_ID: _SimpleFactory( + READ_ONLY_CONTEXT_PLUGIN_ID, ReadOnlyBundleContextRuntime + ), + CORE_RENDERER_PLUGIN_ID: _SimpleFactory( + CORE_RENDERER_PLUGIN_ID, CoreConversationRendererRuntime + ), + } + + +def _require_manifest(manifest: PluginManifest, plugin_id: str) -> None: + if ( + manifest.metadata.id != plugin_id + or manifest.metadata.version != BUILTIN_PLUGIN_VERSION + ): + raise PluginHostError( + "builtin_manifest_mismatch", + f"factory cannot stage {manifest.metadata.id}@{manifest.metadata.version}", + ) + + +def _bound_capability_config( + bundle: ResolvedPluginBundle, plugin_id: str, version: str +) -> Mapping[str, Any]: + composition = bundle.composition + if composition_profile_digest(composition.profile) != composition.profile_digest: + raise PluginHostError( + "plugin_bundle_profile_mutated", + "resolved Bundle composition profile changed after validation", + ) + if plugin_lock_digest(composition.plugin_lock) != composition.plugin_lock_digest: + raise PluginHostError( + "plugin_bundle_lock_mutated", + "resolved Bundle plugin lock changed after validation", + ) + ref = f"plugin://{plugin_id}@{version}" + matches = [item for item in composition.profile.capabilities if item.ref == ref] + if len(matches) != 1: + raise PluginHostError( + "builtin_capability_binding_missing", + f"resolved Bundle does not bind built-in capability {plugin_id}@{version}", + ) + if not any( + item.id == plugin_id and item.version == version + for item in composition.plugin_lock.plugins + ): + raise PluginHostError( + "builtin_capability_lock_missing", + f"resolved Bundle does not lock built-in capability {plugin_id}@{version}", + ) + return cast(Mapping[str, Any], matches[0].config) + + +def _resource_entries( + config: Mapping[str, Any], *, expected_kind: str +) -> tuple[Mapping[str, Any], ...]: + raw = config.get("resources") + if not isinstance(raw, Sequence) or isinstance(raw, (str, bytes)): + raise PluginHostError( + f"builtin_{expected_kind}_config_invalid", "resources must be an array" + ) + entries: list[Mapping[str, Any]] = [] + for item in raw: + entry = _mapping(item, code=f"builtin_{expected_kind}_config_invalid") + if entry.get("kind") != expected_kind: + raise PluginHostError( + f"builtin_{expected_kind}_resource_mismatch", + f"resource kind must be {expected_kind!r}", + ) + for field in ("resourceId", "name", "version", "digest"): + _required_string(entry, field, code=f"builtin_{expected_kind}_invalid") + entries.append(entry) + return tuple(entries) + + +def _resolved_resources( + bundle: ResolvedPluginBundle, field: str +) -> tuple[Mapping[str, Any], ...]: + capabilities = _mapping( + bundle.resolved_agent_spec.get("capabilities"), + code="builtin_bundle_capabilities_missing", + ) + raw = capabilities.get(field) + if not isinstance(raw, Sequence) or isinstance(raw, (str, bytes)): + raise PluginHostError( + "builtin_bundle_capabilities_missing", f"Bundle capabilities.{field} is missing" + ) + return tuple( + _mapping(item, code="builtin_bundle_capabilities_invalid") for item in raw + ) + + +def _match_resource( + declared: Mapping[str, Any], + resolved: Sequence[Mapping[str, Any]], + *, + code: str, +) -> Mapping[str, Any]: + name = _required_string(declared, "name", code=code) + version = _required_string(declared, "version", code=code) + digest = _required_string(declared, "digest", code=code) + matches = [ + item + for item in resolved + if item.get("name") == name + and item.get("version") == version + and item.get("digest") == digest + ] + if len(matches) != 1: + raise PluginHostError( + code, + f"locked resource {name!r}@{version} is missing from resolved Agent spec", + ) + return matches[0] + + +def _safe_bundle_path( + bundle: ResolvedPluginBundle, + relative_text: str, + *, + code: str, + require_declared: bool, +) -> Path: + relative = PurePosixPath(relative_text) + if relative.is_absolute() or not relative.parts or ".." in relative.parts: + raise PluginHostError(code, f"unsafe Bundle path: {relative_text}") + path = bundle.root.joinpath(*relative.parts) + cursor = bundle.root + for part in relative.parts: + cursor = cursor / part + if cursor.is_symlink(): + raise PluginHostError(code, f"Bundle path cannot use symlinks: {relative_text}") + try: + resolved = path.resolve(strict=True) + resolved.relative_to(bundle.root) + except (OSError, ValueError) as error: + raise PluginHostError(code, f"Bundle path is unavailable: {relative_text}") from error + if require_declared and relative.as_posix() not in { + item.path for item in bundle.manifest.files + }: + raise PluginHostError(code, f"Bundle path is not declared: {relative_text}") + return cast(Path, resolved) + + +def _directory_digest(directory: Path) -> str: + digest = hashlib.sha256() + for path in sorted(item for item in directory.rglob("*") if item.is_file()): + if path.is_symlink(): + raise PluginHostError( + "builtin_skill_path_invalid", "Skill Bundle cannot contain symlinks" + ) + relative = path.relative_to(directory).as_posix().encode("utf-8") + content = path.read_bytes() + digest.update(len(relative).to_bytes(4, "big")) + digest.update(relative) + digest.update(len(content).to_bytes(8, "big")) + digest.update(content) + return f"sha256:{digest.hexdigest()}" + + +def _mapping(value: Any, *, code: str) -> Mapping[str, Any]: + if not isinstance(value, Mapping): + raise PluginHostError(code, "expected an object") + return value + + +def _required_string(value: Mapping[str, Any], field: str, *, code: str) -> str: + text = value.get(field) + if not isinstance(text, str) or not text.strip(): + raise PluginHostError(code, f"{field} must be a non-empty string") + return text.strip() + + +def _optional_string(value: Any) -> str | None: + if value is None: + return None + if not isinstance(value, str): + raise PluginHostError( + "builtin_config_invalid", "optional configuration value must be a string" + ) + return value.strip() or None + + +def _string_list(value: Any) -> tuple[str, ...]: + if value is None: + return () + if not isinstance(value, Sequence) or isinstance(value, (str, bytes)): + raise PluginHostError("builtin_config_invalid", "configuration value must be an array") + result: list[str] = [] + for item in value: + if not isinstance(item, str) or not item.strip(): + raise PluginHostError( + "builtin_config_invalid", "array entries must be non-empty strings" + ) + result.append(item.strip()) + return tuple(result) + + +def _is_secret_reference(value: str) -> bool: + return value.startswith(("secret://", "env://", "credential://", "vault://")) + + +__all__ = [ + "BUILTIN_PLUGIN_VERSION", + "CORE_RENDERER_PLUGIN_ID", + "READ_ONLY_CONTEXT_PLUGIN_ID", + "SQLITE_SESSION_STORE_PLUGIN_ID", + "WORKSPACE_MCP_PLUGIN_ID", + "WORKSPACE_SKILL_PLUGIN_ID", + "CoreConversationRendererRuntime", + "ReadOnlyBundleContextRuntime", + "SQLiteSessionStoreFactory", + "SQLiteSessionStoreRuntime", + "WorkspaceMCPRuntime", + "WorkspaceSkillRuntime", + "builtin_capability_factories", + "builtin_capability_manifests", +] diff --git a/ksadk/plugins/bundle.py b/ksadk/plugins/bundle.py new file mode 100644 index 00000000..ab7f8d95 --- /dev/null +++ b/ksadk/plugins/bundle.py @@ -0,0 +1,246 @@ +"""Resolve the plugin composition embedded in an AgentBundle v2 directory. + +``BundleManifest`` remains the single wire contract owned by Studio. This +module only creates a runtime view after the existing manifest, file digests, +composition profile, and plugin lock have been checked against one another and +against the selected :class:`PluginRegistry`. +""" + +from __future__ import annotations + +import hashlib +import json +from dataclasses import dataclass +from pathlib import Path, PurePosixPath +from types import MappingProxyType +from typing import Any, Mapping + +from pydantic import ValidationError + +from ksadk.plugins.bundle_security import BundleSecurityError, assert_bundle_security +from ksadk.plugins.contracts import CompositionProfile, PluginLock +from ksadk.plugins.resolver import PluginRegistry, PluginResolutionError, ResolvedComposition +from ksadk.studio.contracts import BundleManifest + + +class PluginBundleError(ValueError): + """Stable rejection while loading the plugin portion of a Bundle v2.""" + + def __init__(self, code: str, message: str) -> None: + super().__init__(message) + self.code = code + + +@dataclass(frozen=True) +class ResolvedPluginBundle: + """Validated runtime view of existing AgentBundle v2 artifacts. + + This deliberately is not another serializable bundle contract. Providers + receive the already-resolved composition and the immutable resolved Agent + spec; they do not re-read mutable Studio state. + """ + + root: Path + manifest: BundleManifest + resolved_agent_spec: Mapping[str, Any] + composition: ResolvedComposition + + @property + def bundle_digest(self) -> str: + return str(self.manifest.bundle_digest) + + +class PluginBundleResolver: + """Load and cross-check the composition artifacts of an AgentBundle v2.""" + + def __init__(self, registry: PluginRegistry) -> None: + self._registry = registry + + def resolve(self, root: str | Path) -> ResolvedPluginBundle: + bundle_root = Path(root).resolve() + if not bundle_root.is_dir(): + raise PluginBundleError( + "plugin_bundle_unavailable", + f"AgentBundle directory does not exist: {bundle_root}", + ) + + manifest_payload = self._read_json(bundle_root, "manifest.json") + try: + manifest = BundleManifest.model_validate(manifest_payload) + except ValidationError as error: + raise PluginBundleError("plugin_bundle_manifest_invalid", str(error)) from error + if manifest.bundle_format != "agentkit.bundle/v2": + raise PluginBundleError( + "plugin_bundle_version_unsupported", + "PluginHost execution requires agentkit.bundle/v2", + ) + if manifest.execution_profile != "composed": + raise PluginBundleError( + "plugin_bundle_legacy_execution", + "Bundle v2 selects legacy execution and cannot enter PluginHost", + ) + + self._verify_manifest_digest(manifest) + self._verify_declared_files(bundle_root, manifest) + try: + assert_bundle_security(bundle_root) + except BundleSecurityError as error: + raise PluginBundleError( + error.code, + "Plugin Bundle contains literal secret material", + ) from error + + profile_payload = self._read_json(bundle_root, "composition-profile.json") + lock_payload = self._read_json(bundle_root, "plugin-lock.json") + agent_spec = self._read_json(bundle_root, "resolved-agent-spec.json") + try: + profile = CompositionProfile.model_validate(profile_payload) + embedded_lock = PluginLock.model_validate(lock_payload) + except ValidationError as error: + raise PluginBundleError("plugin_bundle_composition_invalid", str(error)) from error + + try: + composition = self._registry.resolve(profile) + except PluginResolutionError as error: + raise PluginBundleError(error.code, str(error)) from error + if composition.profile_digest != manifest.composition_profile_digest: + raise PluginBundleError( + "plugin_bundle_profile_digest_mismatch", + "composition-profile.json does not match manifest compositionProfileDigest", + ) + if embedded_lock != composition.plugin_lock: + raise PluginBundleError( + "plugin_bundle_lock_mismatch", + "plugin-lock.json does not match deterministic profile resolution", + ) + if composition.plugin_lock_digest != manifest.plugin_lock_digest: + raise PluginBundleError( + "plugin_bundle_lock_digest_mismatch", + "plugin-lock.json does not match manifest pluginLockDigest", + ) + + return ResolvedPluginBundle( + root=bundle_root, + manifest=manifest, + resolved_agent_spec=_deep_freeze(agent_spec), + composition=composition, + ) + + @staticmethod + def _read_json(root: Path, relative: str) -> dict[str, Any]: + path = root / relative + try: + payload = json.loads(path.read_text(encoding="utf-8")) + except FileNotFoundError as error: + raise PluginBundleError( + "plugin_bundle_file_missing", f"Bundle file is missing: {relative}" + ) from error + except (OSError, UnicodeError, json.JSONDecodeError) as error: + raise PluginBundleError( + "plugin_bundle_file_invalid", f"Bundle file is invalid: {relative}" + ) from error + if not isinstance(payload, dict): + raise PluginBundleError( + "plugin_bundle_file_invalid", f"Bundle file must be an object: {relative}" + ) + return payload + + @staticmethod + def _verify_manifest_digest(manifest: BundleManifest) -> None: + payload = manifest.model_dump( + by_alias=True, + exclude={"bundle_digest"}, + exclude_none=True, + mode="json", + ) + actual = _sha256(_canonical_json(payload)) + if manifest.bundle_digest != actual: + raise PluginBundleError( + "plugin_bundle_digest_mismatch", + "manifest.json does not match its declared bundleDigest", + ) + + @staticmethod + def _verify_declared_files(root: Path, manifest: BundleManifest) -> None: + declared: set[str] = set() + for entry in manifest.files: + relative = PurePosixPath(entry.path) + if relative.is_absolute() or ".." in relative.parts: + raise PluginBundleError( + "plugin_bundle_path_invalid", + f"Bundle manifest contains an unsafe path: {entry.path}", + ) + path = (root / Path(*relative.parts)).resolve() + try: + path.relative_to(root) + except ValueError as error: + raise PluginBundleError( + "plugin_bundle_path_invalid", + f"Bundle manifest path escapes its root: {entry.path}", + ) from error + try: + content = path.read_bytes() + except OSError as error: + raise PluginBundleError( + "plugin_bundle_file_missing", + f"Declared Bundle file is missing: {entry.path}", + ) from error + if len(content) != entry.size or _sha256(content) != entry.sha256: + raise PluginBundleError( + "plugin_bundle_file_digest_mismatch", + f"Declared Bundle file failed integrity check: {entry.path}", + ) + declared.add(entry.path) + + required = { + "composition-profile.json", + "plugin-lock.json", + "resolved-agent-spec.json", + } + missing = sorted(required - declared) + if missing: + raise PluginBundleError( + "plugin_bundle_file_missing", + "Bundle manifest does not declare required plugin artifacts: " + ", ".join(missing), + ) + actual = { + path.relative_to(root).as_posix() + for path in root.rglob("*") + if path.is_file() and path.name != "manifest.json" + } + undeclared = sorted(actual - declared) + if undeclared: + raise PluginBundleError( + "plugin_bundle_file_undeclared", + "Bundle contains files outside its integrity manifest: " + ", ".join(undeclared), + ) + + +def _canonical_json(payload: Any) -> bytes: + return json.dumps( + payload, + ensure_ascii=False, + sort_keys=True, + separators=(",", ":"), + ).encode("utf-8") + + +def _sha256(payload: bytes) -> str: + return f"sha256:{hashlib.sha256(payload).hexdigest()}" + + +def _deep_freeze(value: Any) -> Any: + """Prevent a Provider from mutating any nested resolved-spec value.""" + + if isinstance(value, dict): + return MappingProxyType({key: _deep_freeze(child) for key, child in value.items()}) + if isinstance(value, list): + return tuple(_deep_freeze(child) for child in value) + return value + + +__all__ = [ + "PluginBundleError", + "PluginBundleResolver", + "ResolvedPluginBundle", +] diff --git a/ksadk/plugins/bundle_security.py b/ksadk/plugins/bundle_security.py new file mode 100644 index 00000000..5fff2120 --- /dev/null +++ b/ksadk/plugins/bundle_security.py @@ -0,0 +1,167 @@ +"""Secret and local-path admission for immutable Agent Bundles. + +This is deliberately narrower than a generic source-code linter. A Bundle +may legitimately contain documentation and examples, so we inspect all +structured deployment inputs and only use high-confidence token signatures in +runtime source files. The result is suitable for a build/deployment boundary: +it prevents a resolved Bundle from becoming a durable copy of a credential +without treating every mention of the word ``token`` as a secret. +""" + +from __future__ import annotations + +import json +import re +from dataclasses import dataclass +from pathlib import Path +from typing import Any +from urllib.parse import urlsplit + +_SENSITIVE_KEY = re.compile( + r"(?:^|[_-])(?:password|passwd|api[_-]?key|access[_-]?key|secret[_-]?key|" + r"access[_-]?token|refresh[_-]?token|credential|private[_-]?key)(?:[_-]?ref)?$", + re.IGNORECASE, +) +_REFERENCE_PREFIXES = ("env://", "secret://", "keyring://", "vault://") +_HIGH_CONFIDENCE_TOKENS: tuple[tuple[str, re.Pattern[str]], ...] = ( + ("private-key", re.compile(r"-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----")), + ("aws-access-key", re.compile(r"\b(?:AKIA|ASIA)[A-Z0-9]{16}\b")), + ("openai-style-key", re.compile(r"\bsk-[A-Za-z0-9_-]{20,}\b")), + ("bearer-token", re.compile(r"\bBearer\s+[A-Za-z0-9._~+/=-]{24,}")), +) +_STRUCTURED_SUFFIXES = frozenset({".json", ".yaml", ".yml"}) +_RUNTIME_SOURCE_SUFFIXES = frozenset({".py", ".js", ".mjs", ".cjs", ".ts", ".tsx"}) + + +@dataclass(frozen=True) +class BundleSecurityFinding: + """One deterministic admission finding without leaking the matched value.""" + + path: str + kind: str + field: str | None = None + + +class BundleSecurityError(ValueError): + """Raised when a Bundle would persist a literal credential or host path.""" + + code = "bundle_secret_detected" + + def __init__(self, findings: tuple[BundleSecurityFinding, ...]) -> None: + self.findings = findings + locations = ", ".join( + f"{finding.path}{f' ({finding.field})' if finding.field else ''}" + for finding in findings[:3] + ) + suffix = " …" if len(findings) > 3 else "" + super().__init__(f"Agent Bundle contains literal secret material: {locations}{suffix}") + + +def scan_bundle_security(root: str | Path) -> tuple[BundleSecurityFinding, ...]: + """Return high-confidence security findings for an already materialized Bundle. + + Structured files receive semantic key/value inspection. Runtime source is + only searched for credential signatures; user Markdown and arbitrary + package assets are intentionally outside this detector to avoid false + positive build failures. + """ + + bundle_root = Path(root).resolve() + findings: list[BundleSecurityFinding] = [] + for path in sorted( + (candidate for candidate in bundle_root.rglob("*") if candidate.is_file()), + key=lambda candidate: candidate.relative_to(bundle_root).as_posix(), + ): + relative = path.relative_to(bundle_root).as_posix() + suffix = path.suffix.lower() + if suffix not in _STRUCTURED_SUFFIXES and not ( + relative.startswith("runtime/") and suffix in _RUNTIME_SOURCE_SUFFIXES + ): + continue + try: + text = path.read_text(encoding="utf-8") + except (OSError, UnicodeDecodeError): + continue + if suffix == ".json": + try: + payload = json.loads(text) + except json.JSONDecodeError: + findings.append(BundleSecurityFinding(relative, "invalid-structured-input")) + continue + _scan_value(payload, relative, "$", findings) + elif suffix in {".yaml", ".yml"}: + # Bundle-owned YAML is a narrow runtime launch declaration. It + # has no credential-bearing fields today, but token patterns still + # catch accidental inline credentials without introducing a second + # YAML parser/security grammar. + _scan_text(text, relative, findings) + else: + _scan_text(text, relative, findings) + return tuple(findings) + + +def assert_bundle_security(root: str | Path) -> None: + findings = scan_bundle_security(root) + if findings: + raise BundleSecurityError(findings) + + +def _scan_value( + value: Any, + relative: str, + field: str, + findings: list[BundleSecurityFinding], +) -> None: + if isinstance(value, dict): + for key, child in value.items(): + key_text = str(key) + child_field = f"{field}.{key_text}" + normalized = key_text.replace("_", "").replace("-", "").lower() + # Metadata that *names* secret fields is not a secret value. + if normalized in {"secretfields", "credentialfields"}: + continue + if _SENSITIVE_KEY.search(key_text) and _has_literal_secret(child): + findings.append( + BundleSecurityFinding(relative, "literal-secret-field", child_field) + ) + _scan_value(child, relative, child_field, findings) + return + if isinstance(value, list): + for index, child in enumerate(value): + _scan_value(child, relative, f"{field}[{index}]", findings) + return + if isinstance(value, str): + _scan_text(value, relative, findings, field=field) + split = urlsplit(value) + # ``plugin://name@version`` is a pinned package reference, not URL + # userinfo. Only network endpoint schemes can carry credentials here. + if split.scheme in {"http", "https"} and ( + split.username is not None or split.password is not None + ): + findings.append(BundleSecurityFinding(relative, "url-credentials", field)) + if value.startswith(("/Users/", "/home/", "C:\\Users\\")): + findings.append(BundleSecurityFinding(relative, "local-home-path", field)) + + +def _has_literal_secret(value: Any) -> bool: + return isinstance(value, str) and bool(value) and not value.startswith(_REFERENCE_PREFIXES) + + +def _scan_text( + text: str, + relative: str, + findings: list[BundleSecurityFinding], + *, + field: str | None = None, +) -> None: + for kind, pattern in _HIGH_CONFIDENCE_TOKENS: + if pattern.search(text): + findings.append(BundleSecurityFinding(relative, kind, field)) + + +__all__ = [ + "BundleSecurityError", + "BundleSecurityFinding", + "assert_bundle_security", + "scan_bundle_security", +] diff --git a/ksadk/plugins/composition.py b/ksadk/plugins/composition.py new file mode 100644 index 00000000..a92601af --- /dev/null +++ b/ksadk/plugins/composition.py @@ -0,0 +1,529 @@ +"""Compile an Agent revision into one resolvable plugin composition. + +This module is the build-time boundary between Studio's editable bindings and +the immutable plugin graph. It deliberately does not install or execute +plugins. Every selected capability must already have an exact ``plugin://`` +materialization whose manifest provides the expected Definition; the existing +``PluginRegistry`` then produces the authoritative lock. + +In particular, ``mcp://`` and ``skill://`` are catalog identities, not active +PluginHost owners. Accepting them in a profile without a materializer would +make a Studio binding look enabled while the resolver silently omitted it. +This compiler therefore rejects that state before a Bundle is built. +""" + +from __future__ import annotations + +from collections.abc import Mapping +from copy import deepcopy +from dataclasses import dataclass, field +from typing import Literal, Protocol + +from pydantic import ValidationError + +from ksadk.plugins.contracts import ( + CompositionCapability, + CompositionProfile, + PluginReference, +) +from ksadk.plugins.resolver import ( + PluginRegistry, + PluginResolutionError, + ResolvedComposition, +) +from ksadk.studio.contracts import AgentDraft, CapabilityBinding, ResourceDescriptor +from ksadk.studio.errors import StudioError + + +class CompositionCompileError(ValueError): + """Stable, typed failure while normalizing one Agent revision.""" + + def __init__(self, code: str, message: str, *, field: str | None = None) -> None: + super().__init__(message) + self.code = code + self.field = field + + +class StudioResourceCatalog(Protocol): + """Narrow catalog seam implemented by ``LocalResourceCatalog``.""" + + def get(self, resource: str) -> ResourceDescriptor: ... + + +@dataclass(frozen=True) +class PluginCapabilitySelection: + """One exact platform capability selected by build/deployment policy.""" + + ref: str + definition: str + slot: str | None = None + required: bool = True + config: Mapping[str, object] = field(default_factory=dict) + + +@dataclass(frozen=True) +class RuntimePluginSelection: + """One coarse-grained AgentProvider selected by trusted product policy. + + Execution semantics remain inside the provider. ``supported_strategies`` + is admission metadata, not another executable plugin slot. + """ + + provider_ref: str + provider_config: Mapping[str, object] = field(default_factory=dict) + supported_strategies: frozenset[str] = frozenset({"direct"}) + + +@dataclass(frozen=True) +class ResourcePluginMaterialization: + """Proof that one Studio MCP/Skill resource has an executable plugin owner.""" + + kind: Literal["mcp", "skill"] + plugin_ref: str + config: Mapping[str, object] = field(default_factory=dict) + required: bool = True + + +@dataclass(frozen=True) +class CompositionPolicy: + """Trusted build policy used to normalize an Agent revision. + + The policy is supplied by the product/runtime distribution, not generated + by an LLM and not stored as a second editable Agent specification. + """ + + runtimes: Mapping[str, RuntimePluginSelection] + session_store: PluginCapabilitySelection + providers: Mapping[str, RuntimePluginSelection] = field(default_factory=dict) + resource_materializations: Mapping[str, ResourcePluginMaterialization] = field( + default_factory=dict + ) + memory_providers: Mapping[str, PluginCapabilitySelection] = field(default_factory=dict) + context_contributors: Mapping[str, PluginCapabilitySelection] = field( + default_factory=dict + ) + renderers: tuple[PluginCapabilitySelection, ...] = () + default_runtime: str = "codex" + + +class CompositionCompiler: + """Normalize Studio bindings and resolve the resulting immutable graph.""" + + def __init__( + self, + registry: PluginRegistry, + catalog: StudioResourceCatalog, + policy: CompositionPolicy, + ) -> None: + self._registry = registry + self._catalog = catalog + self._policy = policy + + def compile(self, revision: AgentDraft) -> ResolvedComposition: + runtime_type = ( + revision.spec.runtime.type + if revision.spec.runtime is not None + else self._policy.default_runtime + ) + provider_ref = ( + revision.spec.runtime.provider_ref + if revision.spec.runtime is not None + and revision.spec.runtime.type == "plugin" + else None + ) + runtime = ( + self._policy.providers.get(provider_ref) + if provider_ref is not None + else self._policy.runtimes.get(runtime_type) + ) + if runtime is None: + raise CompositionCompileError( + "agent_provider_unavailable", + ( + f"provider {provider_ref!r} is not installed and enabled" + if provider_ref is not None + else f"runtime {runtime_type!r} has no materialized AgentProvider" + ), + field=( + "spec.runtime.providerRef" + if provider_ref is not None + else "spec.runtime.type" + ), + ) + if provider_ref is not None and runtime.provider_ref != provider_ref: + raise CompositionCompileError( + "agent_provider_reference_mismatch", + "installed AgentProvider selection does not match runtime providerRef", + field="spec.runtime.providerRef", + ) + + provider_config = deepcopy(dict(runtime.provider_config)) + if revision.spec.runtime is not None: + for key, value in revision.spec.runtime.provider_config.items(): + if key in provider_config and provider_config[key] != value: + raise CompositionCompileError( + "agent_provider_config_conflict", + f"AgentProvider config {key!r} conflicts with installation policy", + field=f"spec.runtime.providerConfig.{key}", + ) + provider_config[key] = deepcopy(value) + provider_config["runtimeType"] = runtime_type + if revision.spec.runtime is not None and revision.spec.runtime.version: + provider_config["runtimeVersion"] = revision.spec.runtime.version + + capabilities: list[CompositionCapability] = [] + self._validate_plugin_owner( + runtime.provider_ref, + definition="agent.provider/v1", + slot="agent.execution", + field="spec.runtime.type", + ) + self._validate_provider_strategy(revision, runtime) + self._append_selection( + capabilities, + self._policy.session_store, + field="policy.sessionStore", + ) + + if revision.spec.memory.enabled: + memory = self._policy.memory_providers.get(revision.spec.memory.provider_ref) + if memory is None: + raise CompositionCompileError( + "memory_provider_unmaterialized", + "enabled memory provider has no materialized plugin owner", + field="spec.memory.providerRef", + ) + self._append_selection( + capabilities, + memory, + field="spec.memory.providerRef", + extra_config={ + "providerRef": revision.spec.memory.provider_ref, + "scopes": sorted(revision.spec.memory.scopes), + }, + ) + + if revision.spec.context.rollout.context_engine != "off": + contributor_flags = revision.spec.context.contributors.model_dump( + mode="python" + ) + for contributor, selection in sorted(self._policy.context_contributors.items()): + # ``None`` means policy-owned default. Supplying the selection + # in this trusted policy makes it active unless the revision + # explicitly disables it. + if contributor_flags.get(contributor) is False: + continue + self._append_selection( + capabilities, + selection, + field=f"spec.context.contributors.{contributor}", + extra_config={"contributor": contributor}, + ) + + for selection in self._policy.renderers: + self._append_selection( + capabilities, + selection, + field="policy.renderers", + ) + + resource_entries: dict[str, list[dict[str, object]]] = {} + resource_required: dict[str, bool] = {} + resource_definitions: dict[str, set[str]] = {} + resource_groups: tuple[ + tuple[Literal["mcp", "skill"], list[CapabilityBinding]], ... + ] = ( + ("mcp", revision.spec.bindings.mcp_servers), + ("skill", revision.spec.bindings.skills), + ) + for kind, bindings in resource_groups: + for binding in bindings: + if not binding.enabled: + continue + materialization = self._materialization(binding, expected_kind=kind) + definition = ( + "mcp.connector/v1" if kind == "mcp" else "skill.source/v1" + ) + self._validate_plugin_owner( + materialization.plugin_ref, + definition=definition, + field=f"spec.bindings.{kind}", + ) + descriptor = self._catalog_resource( + binding.resource_id, + field=f"spec.bindings.{kind}", + ) + if descriptor.kind != kind: + raise CompositionCompileError( + "resource_kind_mismatch", + f"resource {binding.resource_id!r} is not a {kind} resource", + field=f"spec.bindings.{kind}", + ) + if descriptor.status != "ready": + raise CompositionCompileError( + "resource_not_ready", + f"resource {binding.resource_id!r} is {descriptor.status!r}", + field=f"spec.bindings.{kind}", + ) + entry: dict[str, object] = { + "resourceId": descriptor.resource_id, + "kind": kind, + "name": descriptor.name, + "version": descriptor.version, + "digest": descriptor.digest, + "binding": deepcopy(binding.config), + "materializer": deepcopy(dict(materialization.config)), + } + resource_entries.setdefault(materialization.plugin_ref, []).append(entry) + resource_required[materialization.plugin_ref] = ( + resource_required.get(materialization.plugin_ref, False) + or materialization.required + ) + resource_definitions.setdefault(materialization.plugin_ref, set()).add( + definition + ) + + for plugin_ref, resources in sorted(resource_entries.items()): + definitions = resource_definitions[plugin_ref] + if len(definitions) > 1: + raise CompositionCompileError( + "resource_materializer_ambiguous", + f"plugin {plugin_ref!r} cannot materialize MCP and Skill resources " + "in one capability entry", + field="spec.bindings", + ) + resources.sort(key=lambda item: (str(item["kind"]), str(item["resourceId"]))) + capabilities.append( + self._capability( + plugin_ref, + required=resource_required[plugin_ref], + config={"resources": resources}, + field="spec.bindings", + ) + ) + + capabilities = self._merge_capabilities(capabilities) + policies = { + "network": f"policy://{revision.spec.security.network.mode}@1", + "tool": f"policy://{revision.spec.bindings.policy_template}@1", + } + try: + profile = CompositionProfile( + agent_provider=PluginReference( + ref=runtime.provider_ref, + config=provider_config, + ), + capabilities=capabilities, + policies=policies, + ui_contributions=sorted(selection.ref for selection in self._policy.renderers), + ) + except ValidationError as exc: + raise CompositionCompileError( + "composition_profile_invalid", + f"normalized composition profile is invalid: {exc}", + ) from exc + + dangling = [ + item.ref + for item in profile.capabilities + if item.ref.startswith(("mcp://", "skill://")) + ] + if dangling: + raise CompositionCompileError( + "resource_capability_unmaterialized", + f"catalog references are not active plugin owners: {', '.join(dangling)}", + ) + try: + return self._registry.resolve(profile) + except PluginResolutionError as exc: + raise CompositionCompileError(exc.code, str(exc)) from exc + + def _validate_provider_strategy( + self, + revision: AgentDraft, + runtime: RuntimePluginSelection, + ) -> None: + strategy_name = revision.spec.execution.strategy + if strategy_name not in runtime.supported_strategies: + raise CompositionCompileError( + "execution_strategy_unavailable", + f"AgentProvider does not support execution strategy {strategy_name!r}", + field="spec.execution.strategy", + ) + + def _materialization( + self, + binding: CapabilityBinding, + *, + expected_kind: Literal["mcp", "skill"], + ) -> ResourcePluginMaterialization: + materialization = self._policy.resource_materializations.get(binding.resource_id) + if materialization is None: + raise CompositionCompileError( + "resource_capability_unmaterialized", + f"resource {binding.resource_id!r} has no active plugin materialization", + field=f"spec.bindings.{expected_kind}", + ) + if materialization.kind != expected_kind: + raise CompositionCompileError( + "resource_materializer_kind_mismatch", + f"resource {binding.resource_id!r} is mapped as {materialization.kind!r}", + field=f"spec.bindings.{expected_kind}", + ) + if materialization.plugin_ref.startswith(("mcp://", "skill://")): + raise CompositionCompileError( + "resource_capability_unmaterialized", + f"resource {binding.resource_id!r} still points at catalog identity " + f"{materialization.plugin_ref!r}", + field=f"spec.bindings.{expected_kind}", + ) + return materialization + + def _catalog_resource(self, resource_id: str, *, field: str) -> ResourceDescriptor: + try: + return self._catalog.get(resource_id) + except (KeyError, StudioError) as exc: + raise CompositionCompileError( + "resource_not_found", + f"materialized resource {resource_id!r} is absent from the revision catalog", + field=field, + ) from exc + + def _append_selection( + self, + capabilities: list[CompositionCapability], + selection: PluginCapabilitySelection, + *, + field: str, + extra_config: Mapping[str, object] | None = None, + ) -> None: + self._validate_plugin_owner( + selection.ref, + definition=selection.definition, + slot=selection.slot, + field=field, + ) + config = deepcopy(dict(selection.config)) + if extra_config: + overlap = set(config).intersection(extra_config) + if overlap: + raise CompositionCompileError( + "composition_config_conflict", + f"compiler-owned config keys cannot be overridden: {sorted(overlap)}", + field=field, + ) + config.update(deepcopy(dict(extra_config))) + capabilities.append( + self._capability( + selection.ref, + required=selection.required, + config=config, + field=field, + ) + ) + + @staticmethod + def _merge_capabilities( + capabilities: list[CompositionCapability], + ) -> list[CompositionCapability]: + """Collapse multiple Definition selections owned by one plugin. + + A single plugin can legitimately provide Store, Context, and renderer + Definitions. ``CompositionProfile`` pins that plugin once, so the + compiler merges disjoint (or identical) config keys before validation + rather than rejecting a valid multi-capability owner as a duplicate. + Conflicting values remain a typed build error instead of last-write + wins behavior. + """ + + merged: dict[str, tuple[bool, dict[str, object]]] = {} + for capability in capabilities: + required, config = merged.get(capability.ref, (False, {})) + for key, value in capability.config.items(): + if key in config and config[key] != value: + raise CompositionCompileError( + "composition_config_conflict", + f"plugin {capability.ref!r} received conflicting config for {key!r}", + ) + config[key] = deepcopy(value) + merged[capability.ref] = (required or capability.required, config) + return [ + CompositionCapability(ref=ref, required=required, config=config) + for ref, (required, config) in sorted(merged.items()) + ] + + @staticmethod + def _capability( + ref: str, + *, + required: bool, + config: Mapping[str, object], + field: str, + ) -> CompositionCapability: + if ref.startswith(("mcp://", "skill://")): + raise CompositionCompileError( + "resource_capability_unmaterialized", + f"catalog identity {ref!r} has no active plugin owner", + field=field, + ) + try: + return CompositionCapability( + ref=ref, + required=required, + config=deepcopy(dict(config)), + ) + except ValidationError as exc: + raise CompositionCompileError( + "plugin_reference_invalid", + f"invalid materialized plugin reference {ref!r}: {exc}", + field=field, + ) from exc + + def _validate_plugin_owner( + self, + ref: str, + *, + definition: str, + slot: str | None = None, + field: str, + ) -> None: + if ref.startswith(("mcp://", "skill://")): + raise CompositionCompileError( + "resource_capability_unmaterialized", + f"catalog identity {ref!r} has no active plugin owner", + field=field, + ) + try: + parsed = PluginReference(ref=ref) + except ValidationError as exc: + raise CompositionCompileError( + "plugin_reference_invalid", + f"invalid plugin reference {ref!r}", + field=field, + ) from exc + plugin_id, version = parsed.ref.removeprefix("plugin://").rsplit("@", 1) + try: + manifest = self._registry.manifest_for(plugin_id, version) + except PluginResolutionError as exc: + raise CompositionCompileError(exc.code, str(exc), field=field) from exc + if any( + offer.definition == definition and (slot is None or offer.slot == slot) + for offer in manifest.spec.provides + ): + return + slot_suffix = f" at slot {slot!r}" if slot is not None else "" + raise CompositionCompileError( + "plugin_capability_mismatch", + f"plugin {ref!r} does not provide {definition!r}{slot_suffix}", + field=field, + ) + + +__all__ = [ + "CompositionCompileError", + "CompositionCompiler", + "CompositionPolicy", + "PluginCapabilitySelection", + "ResourcePluginMaterialization", + "RuntimePluginSelection", +] diff --git a/ksadk/plugins/context_contributor.py b/ksadk/plugins/context_contributor.py new file mode 100644 index 00000000..e452b23a --- /dev/null +++ b/ksadk/plugins/context_contributor.py @@ -0,0 +1,437 @@ +"""Frozen ContextContributor/v1 wire contract and source projections. + +The wire contract is deliberately read-only. A plugin receives an already +authenticated scope and a bounded request, then returns provenance-bearing +fragments. This module validates that exchange before projecting it into the +existing Context Engine dataclasses; it does not grant filesystem access, +write memory, mutate prompts, or append SessionEvents. +""" + +from __future__ import annotations + +import re +from dataclasses import dataclass +from datetime import datetime, timezone +from typing import Annotated, Any, Literal, cast + +from pydantic import AwareDatetime, Field, WithJsonSchema, field_validator, model_validator + +from ksadk.context_engine.contributors import ( + ContextContributionRequest, + ContributorCapabilities, +) +from ksadk.context_engine.models import ContextItem, ContextKind, ContextTrustLevel +from ksadk.plugins.contracts import PluginContractModel + +ContextClassification = Annotated[ + str, + WithJsonSchema( + { + "type": "string", + "minLength": 1, + "maxLength": 64, + "pattern": "^[a-z][a-z0-9._-]*$", + "not": {"enum": ["credential", "secret"]}, + } + ), +] +ContextSourceReference = Annotated[ + str, + WithJsonSchema( + { + "type": "string", + "minLength": 4, + "maxLength": 2048, + "pattern": "^[a-z][a-z0-9+.-]*://\\S+$", + "not": {"pattern": "^(?:credential|env|secret|vault)://"}, + } + ), +] +ContextExpiry = Annotated[ + AwareDatetime, + WithJsonSchema( + { + "type": "string", + "format": "date-time", + "pattern": "(?:Z|[+-][0-9]{2}:[0-9]{2})$", + } + ), +] +ContextContributorCacheability = Literal["stable", "turn", "none"] +ContextContributorFailureMode = Literal["skip", "warn", "fail"] + +_CLASSIFICATION = re.compile(r"^[a-z][a-z0-9._-]{0,63}$") +_CONTRIBUTOR_ID = re.compile(r"^[a-z][a-z0-9._-]{0,127}$") +_POLICY_REF = re.compile(r"^policy://[^\s@]+@[^\s@]+$") +_SOURCE_REF = re.compile(r"^[a-z][a-z0-9+.-]*://\S+$") +_DIGEST = re.compile(r"^sha256:[0-9a-f]{64}$") +_FORBIDDEN_CLASSIFICATIONS = {"credential", "secret"} +_FORBIDDEN_SOURCE_SCHEMES = {"credential", "env", "secret", "vault"} +_SENSITIVE_KEY = re.compile(r"(?:secret|password|token|api[_-]?key)", re.IGNORECASE) +_SECRET_REF_PREFIXES = ("secret://", "env://", "credential://", "vault://") +_TRUST_RANK: dict[ContextTrustLevel, int] = { + "untrusted": 0, + "user": 1, + "resource": 2, + "developer": 3, + "platform": 4, +} + + +def _validate_classification(value: str) -> str: + if not _CLASSIFICATION.fullmatch(value) or value in _FORBIDDEN_CLASSIFICATIONS: + raise ValueError("classification must be a non-secret qualified name") + return value + + +def _validate_secret_references(value: Any, *, path: str) -> None: + """Permit secret references in metadata, but never clear secret values.""" + + if isinstance(value, dict): + for key, child in value.items(): + key_text = str(key) + child_path = f"{path}.{key_text}" + if _SENSITIVE_KEY.search(key_text) and child is not None: + if not isinstance(child, str) or not child.startswith( + _SECRET_REF_PREFIXES + ): + raise ValueError(f"{child_path} must contain a secret reference") + _validate_secret_references(child, path=child_path) + elif isinstance(value, (list, tuple)): + for index, child in enumerate(value): + _validate_secret_references(child, path=f"{path}[{index}]") + + +class AuthenticatedContextScope(PluginContractModel): + """Identity established by the Host before a Contributor is invoked.""" + + authenticated: Literal[True] + actor_id: str = Field(min_length=1, max_length=256) + agent_id: str = Field(min_length=1, max_length=256) + session_id: str = Field(min_length=1, max_length=256) + turn_id: str = Field(min_length=1, max_length=256) + + +class ContextContributorCapabilities(PluginContractModel): + """Maximum authority and resource envelope granted to one Contributor.""" + + contributor_id: str = Field( + min_length=1, + max_length=128, + pattern=r"^[a-z][a-z0-9._-]*$", + ) + trust_level: ContextTrustLevel + max_tokens: int = Field(ge=0) + timeout_ms: int = Field(ge=1) + cacheability: ContextContributorCacheability + failure_mode: ContextContributorFailureMode + + @field_validator("contributor_id") + @classmethod + def validate_contributor_id(cls, value: str) -> str: + if not _CONTRIBUTOR_ID.fullmatch(value): + raise ValueError("contributorId must be a lowercase qualified name") + return value + + def to_context_engine(self) -> ContributorCapabilities: + """Project the frozen wire shape into the installed Context Engine type.""" + + return ContributorCapabilities( + contributor_id=self.contributor_id, + trust_level=self.trust_level, + max_tokens=self.max_tokens, + timeout_ms=self.timeout_ms, + cacheability=self.cacheability, + failure_mode=self.failure_mode, + ) + + +class ContextContributorRequest(PluginContractModel): + """One authenticated, policy-bound and token-bounded read request.""" + + request_format: Literal["ksadk.context-request/v1"] + scope: AuthenticatedContextScope + invocation_id: str = Field(min_length=1, max_length=256) + user_input: str = Field(max_length=131_072) + workspace_root: str = Field(max_length=4096) + policy_ref: str = Field( + min_length=1, + max_length=512, + pattern=r"^policy://[^\s@]+@[^\s@]+$", + ) + remaining_budget: int = Field(ge=0) + allowed_classifications: tuple[ContextClassification, ...] = Field( + json_schema_extra={"uniqueItems": True} + ) + metadata: dict[str, Any] + + @field_validator("policy_ref") + @classmethod + def validate_policy_ref(cls, value: str) -> str: + if not _POLICY_REF.fullmatch(value): + raise ValueError("policyRef must be a pinned policy:// reference") + return value + + @field_validator("allowed_classifications") + @classmethod + def validate_allowed_classifications( + cls, value: tuple[str, ...] + ) -> tuple[str, ...]: + normalized = tuple(_validate_classification(item) for item in value) + if len(normalized) != len(set(normalized)): + raise ValueError("allowedClassifications must be unique") + return tuple(sorted(normalized)) + + @field_validator("metadata") + @classmethod + def validate_metadata(cls, value: dict[str, Any]) -> dict[str, Any]: + _validate_secret_references(value, path="request.metadata") + return value + + def to_context_engine(self) -> ContextContributionRequest: + """Project scope and policy facts without losing their wire identity.""" + + return ContextContributionRequest( + user_input=self.user_input, + session_id=self.scope.session_id, + invocation_id=self.invocation_id, + workspace_root=self.workspace_root, + user_id=self.scope.actor_id, + agent_id=self.scope.agent_id, + metadata={ + **self.metadata, + "authenticated_scope": self.scope.model_dump( + by_alias=True, mode="json" + ), + "turn_id": self.scope.turn_id, + "policy_ref": self.policy_ref, + "remaining_budget": self.remaining_budget, + "allowed_classifications": list(self.allowed_classifications), + }, + ) + + +class ContextFragment(PluginContractModel): + """One read-only, attributed Context candidate returned by a plugin.""" + + fragment_format: Literal["ksadk.context-fragment/v1"] + item_id: str = Field(min_length=1, max_length=256) + kind: ContextKind + content: Any + source_refs: tuple[ContextSourceReference, ...] = Field( + min_length=1, + json_schema_extra={"uniqueItems": True}, + ) + classification: ContextClassification + expires_at: ContextExpiry | None + token_estimate: int = Field(ge=0) + trust_level: ContextTrustLevel + priority: int + required: Literal[False] + droppable: bool + truncatable: bool + stable: bool + group_id: str | None = Field(max_length=256) + seq_start: int | None = Field(ge=0) + seq_end: int | None = Field(ge=0) + score: float | None + content_hash: Annotated[ + str, + Field(pattern=r"^sha256:[0-9a-f]{64}$", max_length=71), + ] | None + metadata: dict[str, Any] + + @field_validator("content") + @classmethod + def validate_content(cls, value: Any) -> Any: + # Structured context is subject to the same secret-reference rule as + # metadata. A Contributor cannot bypass admission by moving a clear + # credential from ``metadata`` into a JSON-shaped ``content`` value. + _validate_secret_references(value, path="fragment.content") + return value + + @field_validator("source_refs") + @classmethod + def validate_source_refs(cls, value: tuple[str, ...]) -> tuple[str, ...]: + if len(value) != len(set(value)): + raise ValueError("sourceRefs must be unique") + for source_ref in value: + if not _SOURCE_REF.fullmatch(source_ref): + raise ValueError("sourceRefs must be absolute URI-like references") + scheme, location = source_ref.split("://", 1) + if scheme in _FORBIDDEN_SOURCE_SCHEMES: + raise ValueError("sourceRefs cannot point at secret material") + authority = location.split("/", 1)[0] + if "@" in authority: + raise ValueError("sourceRefs cannot contain embedded credentials") + return tuple(sorted(value)) + + @field_validator("classification") + @classmethod + def validate_classification(cls, value: str) -> str: + return _validate_classification(value) + + @field_validator("expires_at") + @classmethod + def validate_expires_at(cls, value: datetime | None) -> datetime | None: + if value is not None and (value.tzinfo is None or value.utcoffset() is None): + raise ValueError("expiresAt must include a timezone") + return value + + @field_validator("content_hash") + @classmethod + def validate_content_hash(cls, value: str | None) -> str | None: + if value is not None and not _DIGEST.fullmatch(value): + raise ValueError("contentHash must be a lowercase sha256: digest") + return value + + @field_validator("metadata") + @classmethod + def validate_metadata(cls, value: dict[str, Any]) -> dict[str, Any]: + _validate_secret_references(value, path="fragment.metadata") + return value + + @model_validator(mode="after") + def validate_sequence_range(self) -> "ContextFragment": + if (self.seq_start is None) != (self.seq_end is None): + raise ValueError("seqStart and seqEnd must be supplied together") + if ( + self.seq_start is not None + and self.seq_end is not None + and self.seq_end < self.seq_start + ): + raise ValueError("seqEnd cannot precede seqStart") + return self + + def to_context_engine(self) -> ContextItem: + """Project one already-admitted fragment into a Context Engine item.""" + + expires_at = ( + self.model_dump(by_alias=True, mode="json")["expiresAt"] + if self.expires_at is not None + else None + ) + return ContextItem( + item_id=self.item_id, + kind=self.kind, + content=self.content, + source=self.source_refs[0], + trust_level=self.trust_level, + priority=self.priority, + estimated_tokens=self.token_estimate, + required=False, + droppable=self.droppable, + truncatable=self.truncatable, + stable=self.stable, + group_id=self.group_id, + seq_start=self.seq_start, + seq_end=self.seq_end, + score=self.score, + content_hash=self.content_hash, + provenance={ + "source_refs": list(self.source_refs), + "classification": self.classification, + "expires_at": expires_at, + }, + metadata=dict(self.metadata), + ) + + +class ContextContributorResponse(PluginContractModel): + """Ordered fragments returned for one request.""" + + response_format: Literal["ksadk.context-response/v1"] + fragments: tuple[ContextFragment, ...] + + @model_validator(mode="after") + def validate_unique_item_ids(self) -> "ContextContributorResponse": + item_ids = [fragment.item_id for fragment in self.fragments] + if len(item_ids) != len(set(item_ids)): + raise ValueError("ContextFragment item identity must be unique") + return self + + +@dataclass(frozen=True) +class ProjectedContextContribution: + """Typed bridge into the pre-existing Context Engine source contracts.""" + + capabilities: ContributorCapabilities + request: ContextContributionRequest + items: tuple[ContextItem, ...] + + +class ContextContributorExchange(PluginContractModel): + """Complete golden exchange used by hosts and cross-language conformance.""" + + contract_format: Literal["ksadk.context-contributor/v1"] + capabilities: ContextContributorCapabilities + request: ContextContributorRequest + response: ContextContributorResponse + + @model_validator(mode="after") + def validate_admission_bounds(self) -> "ContextContributorExchange": + allowed = set(self.request.allowed_classifications) + maximum_trust = _TRUST_RANK[self.capabilities.trust_level] + token_ceiling = min( + self.capabilities.max_tokens, + self.request.remaining_budget, + ) + used_tokens = 0 + for fragment in self.response.fragments: + if fragment.classification not in allowed: + raise ValueError("ContextFragment classification is not allowed") + if _TRUST_RANK[fragment.trust_level] > maximum_trust: + raise ValueError("ContextFragment cannot elevate contributor trust") + used_tokens += fragment.token_estimate + if used_tokens > token_ceiling: + raise ValueError( + "ContextFragment token estimate exceeds the effective remaining budget" + ) + return self + + def project( + self, + *, + now: datetime | None = None, + ) -> ProjectedContextContribution: + """Validate expiry and project the admitted response into engine types.""" + + current = now or datetime.now(timezone.utc) + if current.tzinfo is None or current.utcoffset() is None: + raise ValueError("projection time must include a timezone") + for fragment in self.response.fragments: + if fragment.expires_at is not None and fragment.expires_at <= current: + raise ValueError(f"ContextFragment {fragment.item_id} has expired") + return ProjectedContextContribution( + capabilities=self.capabilities.to_context_engine(), + request=self.request.to_context_engine(), + items=tuple(fragment.to_context_engine() for fragment in self.response.fragments), + ) + + +def context_contributor_json_schema() -> dict[str, Any]: + """Return the canonical Draft 2020-12 source projection for export gates.""" + + schema = ContextContributorExchange.model_json_schema(by_alias=True) + schema["$schema"] = "https://json-schema.org/draft/2020-12/schema" + schema["$id"] = ( + "https://ksadk.local/contracts/plugin/v1/context-contributor.schema.json" + ) + schema["title"] = "ContextContributor/v1 exchange" + return cast(dict[str, Any], schema) + + +__all__ = [ + "AuthenticatedContextScope", + "ContextClassification", + "ContextContributorCacheability", + "ContextContributorCapabilities", + "ContextContributorExchange", + "ContextContributorFailureMode", + "ContextContributorRequest", + "ContextContributorResponse", + "ContextFragment", + "ContextSourceReference", + "ProjectedContextContribution", + "context_contributor_json_schema", +] diff --git a/ksadk/plugins/contracts.py b/ksadk/plugins/contracts.py new file mode 100644 index 00000000..ef4fd53d --- /dev/null +++ b/ksadk/plugins/contracts.py @@ -0,0 +1,451 @@ +"""Frozen source contracts and internal records for plugin composition. + +Only the models exported through ``__all__`` are public Phase 2 contracts. +``PluginManifest`` and its supporting models are internal admission records: +they project DSH/Codex host inventory into the Python composition engine and +are not a third installable package format or a stable public contract. +""" +from __future__ import annotations + +import hashlib +import json +import re +from collections.abc import Mapping +from typing import Any, Literal + +from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator + + +def _to_camel(value: str) -> str: + head, *tail = value.split("_") + return head + "".join(part.capitalize() for part in tail) + + +class PluginContractModel(BaseModel): + model_config = ConfigDict( + alias_generator=_to_camel, + populate_by_name=True, + extra="forbid", + frozen=True, + ) + + +_SEMVER = re.compile(r"^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$") +_PLUGIN_ID = re.compile(r"^[a-z0-9]+(?:[._-][a-z0-9]+)*$") +_DIGEST = re.compile(r"^sha256:[0-9a-f]{64}$") +_DEFINITION = re.compile(r"^[a-z][a-z0-9._-]*/v[1-9][0-9]*$") +_SENSITIVE_KEY = re.compile(r"(?:secret|password|token|api[_-]?key)", re.IGNORECASE) +_SECRET_REF_PREFIXES = ("secret://", "env://", "credential://", "vault://") + + +def _validate_semver(value: str, *, field: str) -> str: + if not _SEMVER.fullmatch(value): + raise ValueError(f"{field} must use an exact semantic version") + return value + + +def _validate_digest(value: str) -> str: + if not _DIGEST.fullmatch(value): + raise ValueError("digest must be a lowercase sha256: digest") + return value + + +def _validate_secret_references(value: Any, *, path: str = "config") -> None: + """Configuration may carry references but never clear secret material.""" + + if isinstance(value, Mapping): + for key, child in value.items(): + key_text = str(key) + child_path = f"{path}.{key_text}" + if _SENSITIVE_KEY.search(key_text) and child is not None: + if not isinstance(child, str) or not child.startswith(_SECRET_REF_PREFIXES): + raise ValueError(f"{child_path} must contain a secret reference, not a value") + _validate_secret_references(child, path=child_path) + elif isinstance(value, list): + for index, child in enumerate(value): + _validate_secret_references(child, path=f"{path}[{index}]") + + +class PluginMetadata(PluginContractModel): + id: str = Field(min_length=3, max_length=128) + version: str + + @field_validator("id") + @classmethod + def validate_plugin_id(cls, value: str) -> str: + if not _PLUGIN_ID.fullmatch(value): + raise ValueError("plugin id must be lowercase dot/dash/underscore qualified") + return value + + @field_validator("version") + @classmethod + def validate_version(cls, value: str) -> str: + return _validate_semver(value, field="plugin version") + + +class CapabilityOffer(PluginContractModel): + definition: str + slot: str = Field(min_length=3, max_length=128) + mode: Literal["unique", "multiple"] + + @field_validator("definition") + @classmethod + def validate_definition(cls, value: str) -> str: + if not _DEFINITION.fullmatch(value): + raise ValueError( + "definition must be a versioned capability name such as agent.provider/v1" + ) + return value + + +class CapabilityRequirement(PluginContractModel): + definition: str + version: str = Field(min_length=1, max_length=128) + + @field_validator("definition") + @classmethod + def validate_definition(cls, value: str) -> str: + if not _DEFINITION.fullmatch(value): + raise ValueError("definition must be a versioned capability name") + return value + + +class PluginCompatibility(PluginContractModel): + kernel_api: str = Field(min_length=1, max_length=128) + runtime_protocols: list[str] = Field(default_factory=list) + python: str | None = Field(default=None, max_length=128) + platforms: list[str] = Field(default_factory=list) + + +class PluginProvenance(PluginContractModel): + source: Literal["builtin", "registry", "local", "market", "runtime-native"] + digest: str + signature_ref: str | None = Field(default=None, max_length=512) + license: str | None = Field(default=None, max_length=128) + + @field_validator("digest") + @classmethod + def validate_digest(cls, value: str) -> str: + return _validate_digest(value) + + +class PluginSpec(PluginContractModel): + domain: Literal["ksadk-platform", "runtime-native"] + runtime: Literal["python", "node", "process", "remote", "native"] + entrypoint: str | None = Field(default=None, max_length=512) + provides: list[CapabilityOffer] = Field(min_length=1) + requires: list[CapabilityRequirement] = Field(default_factory=list) + optional: list[CapabilityRequirement] = Field(default_factory=list) + config_schema: str | None = Field(default=None, max_length=512) + secret_fields: list[str] = Field(default_factory=list) + permissions: list[str] = Field(default_factory=list) + isolation: Literal["in-process", "process", "sidecar", "remote", "native"] + compatibility: PluginCompatibility + health_contract: str = Field(min_length=1, max_length=128) + provenance: PluginProvenance + + @model_validator(mode="after") + def validate_shape(self) -> "PluginSpec": + if self.runtime == "native" and self.domain != "runtime-native": + raise ValueError("native runtime plugins must use runtime-native domain") + if self.runtime != "native" and not self.entrypoint: + raise ValueError("non-native plugins require an entrypoint") + offers = [(item.definition, item.slot) for item in self.provides] + if len(offers) != len(set(offers)): + raise ValueError("plugin provides duplicate capability/slot offers") + if len(self.secret_fields) != len(set(self.secret_fields)): + raise ValueError("plugin secretFields must be unique") + if len(self.permissions) != len(set(self.permissions)): + raise ValueError("plugin permissions must be unique") + return self + + +class PluginManifest(PluginContractModel): + """Internal host projection; never a developer-authored plugin package.""" + + api_version: Literal["plugin.ksadk.io/v1"] = "plugin.ksadk.io/v1" + kind: Literal["Plugin"] = "Plugin" + metadata: PluginMetadata + spec: PluginSpec + + +class CapabilityDefinitionSpec(PluginContractModel): + definition: str + slot: str = Field(min_length=3, max_length=128) + multiplicity: Literal["unique", "multiple"] + owner_required: bool = True + config_schema: str | None = Field(default=None, max_length=512) + + @field_validator("definition") + @classmethod + def validate_definition(cls, value: str) -> str: + if not _DEFINITION.fullmatch(value): + raise ValueError("definition must be a versioned capability name") + return value + + +class CapabilityDefinition(PluginContractModel): + api_version: Literal["capability.ksadk.io/v1"] = "capability.ksadk.io/v1" + kind: Literal["CapabilityDefinition"] = "CapabilityDefinition" + metadata: PluginMetadata + spec: CapabilityDefinitionSpec + + +class PluginReference(PluginContractModel): + ref: str = Field(min_length=12, max_length=256) + config: dict[str, Any] = Field(default_factory=dict) + + @field_validator("ref") + @classmethod + def validate_reference(cls, value: str) -> str: + if not value.startswith("plugin://") or "@" not in value: + raise ValueError("plugin reference must be plugin://@") + plugin_id, version = value.removeprefix("plugin://").rsplit("@", 1) + if not _PLUGIN_ID.fullmatch(plugin_id): + raise ValueError("plugin reference id is invalid") + _validate_semver(version, field="plugin reference version") + return value + + @field_validator("config") + @classmethod + def validate_config(cls, value: dict[str, Any]) -> dict[str, Any]: + _validate_secret_references(value) + return value + + +class CompositionCapability(PluginContractModel): + ref: str = Field(min_length=8, max_length=512) + required: bool = True + config: dict[str, Any] = Field(default_factory=dict) + + @field_validator("ref") + @classmethod + def validate_reference(cls, value: str) -> str: + if not value.startswith(("plugin://", "mcp://", "skill://")) or "@" not in value: + raise ValueError( + "capability ref must be a pinned plugin://, mcp://, or skill:// reference" + ) + return value + + @field_validator("config") + @classmethod + def validate_config(cls, value: dict[str, Any]) -> dict[str, Any]: + _validate_secret_references(value) + return value + + +class NativeExtension(PluginContractModel): + runtime: str = Field(min_length=1, max_length=64) + ref: str = Field(min_length=8, max_length=512) + + +class CompositionProfile(PluginContractModel): + api_version: Literal["composition.ksadk.io/v1"] = "composition.ksadk.io/v1" + agent_provider: PluginReference + capabilities: list[CompositionCapability] = Field(default_factory=list) + native_extensions: list[NativeExtension] = Field(default_factory=list) + policies: dict[str, str] = Field(default_factory=dict) + ui_contributions: list[str] = Field(default_factory=list) + + @model_validator(mode="after") + def validate_profile(self) -> "CompositionProfile": + refs = [item.ref for item in self.capabilities] + if len(refs) != len(set(refs)): + raise ValueError("composition capabilities must not repeat a reference") + extensions = [(item.runtime, item.ref) for item in self.native_extensions] + if len(extensions) != len(set(extensions)): + raise ValueError("native extensions must not repeat a runtime/reference pair") + return self + + +class LockedCapability(PluginContractModel): + definition: str + slot: str = Field(min_length=3, max_length=128) + owner: str = Field(min_length=3, max_length=128) + + @field_validator("definition") + @classmethod + def validate_definition(cls, value: str) -> str: + if not _DEFINITION.fullmatch(value): + raise ValueError("definition must be a versioned capability name") + return value + + +class PluginDependency(PluginContractModel): + id: str = Field(min_length=3, max_length=128) + version: str + digest: str + + @field_validator("id") + @classmethod + def validate_id(cls, value: str) -> str: + if not _PLUGIN_ID.fullmatch(value): + raise ValueError("dependency id is invalid") + return value + + @field_validator("version") + @classmethod + def validate_version(cls, value: str) -> str: + return _validate_semver(value, field="dependency version") + + @field_validator("digest") + @classmethod + def validate_digest(cls, value: str) -> str: + return _validate_digest(value) + + +class PluginLockEntry(PluginContractModel): + id: str = Field(min_length=3, max_length=128) + version: str + digest: str + source: Literal["builtin", "registry", "local", "market", "runtime-native"] + signature_ref: str | None = Field(default=None, max_length=512) + license: str | None = Field(default=None, max_length=128) + provides: list[LockedCapability] = Field(default_factory=list) + dependencies: list[PluginDependency] = Field(default_factory=list) + + @field_validator("id") + @classmethod + def validate_id(cls, value: str) -> str: + if not _PLUGIN_ID.fullmatch(value): + raise ValueError("plugin lock id is invalid") + return value + + @field_validator("version") + @classmethod + def validate_version(cls, value: str) -> str: + return _validate_semver(value, field="plugin lock version") + + @field_validator("digest") + @classmethod + def validate_digest(cls, value: str) -> str: + return _validate_digest(value) + + +class PluginLock(PluginContractModel): + """The current Bundle v2 lock shape, now with an exact typed entry form.""" + + lock_format: Literal["agentkit.plugin-lock/v1"] = "agentkit.plugin-lock/v1" + plugins: list[PluginLockEntry] = Field(default_factory=list) + + @field_validator("plugins") + @classmethod + def sort_plugins(cls, value: list[PluginLockEntry]) -> list[PluginLockEntry]: + return sorted(value, key=lambda item: (item.id, item.version, item.digest)) + + @model_validator(mode="after") + def validate_graph(self) -> "PluginLock": + by_id = {item.id: item for item in self.plugins} + if len(by_id) != len(self.plugins): + raise ValueError("plugin lock must pin exactly one version for each plugin id") + for item in self.plugins: + for dependency in item.dependencies: + target = by_id.get(dependency.id) + if target is None: + raise ValueError(f"plugin dependency {dependency.id!r} is not pinned") + if (target.version, target.digest) != (dependency.version, dependency.digest): + raise ValueError( + f"plugin dependency {dependency.id!r} does not match its lock entry" + ) + if dependency.id == item.id: + raise ValueError("plugin lock cannot depend on itself") + visiting: set[str] = set() + visited: set[str] = set() + + def visit(plugin_id: str) -> None: + if plugin_id in visiting: + raise ValueError("plugin lock dependency cycle") + if plugin_id in visited: + return + visiting.add(plugin_id) + for dependency in by_id[plugin_id].dependencies: + visit(dependency.id) + visiting.remove(plugin_id) + visited.add(plugin_id) + + for plugin_id in by_id: + visit(plugin_id) + return self + + +class PluginInventoryItem(PluginContractModel): + id: str = Field(min_length=3, max_length=128) + version: str + digest: str + state: Literal[ + "resolved", + "admitted", + "staged", + "starting", + "ready", + "degraded", + "failed", + "draining", + "stopped", + "disposed", + "rejected", + ] + health: Literal["unknown", "healthy", "unhealthy"] = "unknown" + reason: str | None = Field(default=None, max_length=1024) + + @field_validator("id") + @classmethod + def validate_id(cls, value: str) -> str: + if not _PLUGIN_ID.fullmatch(value): + raise ValueError("plugin inventory id is invalid") + return value + + @field_validator("version") + @classmethod + def validate_version(cls, value: str) -> str: + return _validate_semver(value, field="plugin inventory version") + + @field_validator("digest") + @classmethod + def validate_digest(cls, value: str) -> str: + return _validate_digest(value) + + +class PluginInventory(PluginContractModel): + api_version: Literal["plugin.ksadk.io/v1"] = "plugin.ksadk.io/v1" + kind: Literal["PluginInventory"] = "PluginInventory" + profile_digest: str = Field(min_length=8, max_length=80) + plugin_lock_digest: str = Field(min_length=8, max_length=80) + plugins: list[PluginInventoryItem] = Field(default_factory=list) + + @field_validator("profile_digest", "plugin_lock_digest") + @classmethod + def validate_optional_digest(cls, value: str) -> str: + return _validate_digest(value) + + @field_validator("plugins") + @classmethod + def sort_plugins(cls, value: list[PluginInventoryItem]) -> list[PluginInventoryItem]: + return sorted(value, key=lambda item: item.id) + + +def canonical_plugin_lock(lock: PluginLock) -> bytes: + """Canonical JSON bytes used by Bundle v2 and admission fingerprinting.""" + + return json.dumps( + lock.model_dump(by_alias=True, exclude_none=True, mode="json"), + ensure_ascii=False, + sort_keys=True, + separators=(",", ":"), + ).encode("utf-8") + + +def plugin_lock_digest(lock: PluginLock) -> str: + return f"sha256:{hashlib.sha256(canonical_plugin_lock(lock)).hexdigest()}" + + +__all__ = [ + "CapabilityDefinition", + "CompositionProfile", + "PluginLock", + "PluginLockEntry", + "PluginInventory", + "PluginInventoryItem", + "canonical_plugin_lock", + "plugin_lock_digest", +] diff --git a/ksadk/plugins/dsh_toolchain.py b/ksadk/plugins/dsh_toolchain.py new file mode 100644 index 00000000..25ea78a5 --- /dev/null +++ b/ksadk/plugins/dsh_toolchain.py @@ -0,0 +1,935 @@ +"""Managed DeepSeek Harness toolchain and standard bundle developer workflow. + +KsADK does not copy, fork, or rebuild DeepSeek Harness. It installs one +published CLI package into an isolated AgentEngine configuration directory and +delegates bundle composition to that exact executable. Plugin source remains +an ordinary npm package that follows DSH's public ``dsh.bundle.patch`` format. +""" + +from __future__ import annotations + +import json +import os +import re +import shutil +import subprocess +import tempfile +import time +import uuid +from collections.abc import Callable, Mapping, Sequence +from contextlib import contextmanager +from dataclasses import dataclass +from pathlib import Path +from typing import Any, Iterator, Literal + +from pydantic import BaseModel, ConfigDict + +from ksadk.configs.global_config import get_global_config_dir +from ksadk.plugins.bridges.dsh import ( + DshBridgeError, + DshProfilePluginBridge, + dsh_subprocess_environment, +) + +DSH_PACKAGE = "@deepseek-ai/dsh" +DSH_VERSION = "0.1.1-rc.2" +DSH_PACKAGE_SPEC = f"{DSH_PACKAGE}@{DSH_VERSION}" +CORDIS_VERSION_RANGE = "^4.0.1" +PNPM_VERSION = "11.7.0" + +TOOLCHAIN_HOME_ENV = "AGENTENGINE_PLUGIN_TOOLCHAIN_HOME" +PNPM_BIN_ENV = "AGENTENGINE_PNPM_BIN" + +_VERSION = re.compile(r"\b(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?)\b") +_PACKAGE_NAME = re.compile( + r"^(?:@[a-z0-9][a-z0-9._-]*/)?[a-z0-9][a-z0-9._-]*$" +) +_LOCK_TIMEOUT_SECONDS = 30.0 +_STALE_LOCK_SECONDS = 10 * 60 +_MAX_MANIFEST_BYTES = 2 * 1024 * 1024 + + +def _to_camel(value: str) -> str: + head, *tail = value.split("_") + return head + "".join(part.capitalize() for part in tail) + + +class _ToolchainModel(BaseModel): + model_config = ConfigDict( + alias_generator=_to_camel, + populate_by_name=True, + extra="forbid", + frozen=True, + ) + + +class DshToolchainStatus(_ToolchainModel): + package: Literal["@deepseek-ai/dsh"] = DSH_PACKAGE + expected_version: Literal["0.1.1-rc.2"] = DSH_VERSION + installed: bool + usable: bool + root: str + executable: str | None = None + actual_version: str | None = None + lockfile_present: bool = False + pnpm_available: bool = False + pnpm_version: str | None = None + problem: str | None = None + + +class DshPluginCreateResult(_ToolchainModel): + ecosystem: Literal["dsh"] = "dsh" + package_name: str + target: str + entrypoint: str + bundle_patch: str + + +class DshPluginValidationResult(_ToolchainModel): + ecosystem: Literal["dsh"] = "dsh" + package_name: str + package_version: str + host_version: str + profile_digest: str + lifecycle: tuple[str, ...] = ( + "install", + "project", + "disable", + "enable", + "uninstall", + ) + + +class DshPluginPackResult(_ToolchainModel): + ecosystem: Literal["dsh"] = "dsh" + package_name: str + package_version: str + artifact: str + + +class DshToolchainError(RuntimeError): + """Base error for the managed DSH development toolchain.""" + + +class DshToolchainUnavailableError(DshToolchainError): + pass + + +class DshToolchainVersionMismatchError(DshToolchainError): + pass + + +class DshToolchainInstallError(DshToolchainError): + pass + + +class DshPluginSourceError(DshToolchainError): + pass + + +class DshPluginValidationError(DshToolchainError): + def __init__(self, stage: str, message: str = "DSH plugin validation failed") -> None: + super().__init__(message) + self.stage = stage + + +class DshPluginPackError(DshToolchainError): + pass + + +@dataclass(frozen=True) +class CommandResult: + stdout: str = "" + stderr: str = "" + + +CommandRunner = Callable[[Sequence[str], Path, Mapping[str, str]], CommandResult] + + +class DshToolchainManager: + """Install and resolve the one supported published DSH CLI version.""" + + def __init__( + self, + *, + base_dir: Path | None = None, + pnpm_command: Sequence[str] | None = None, + command_runner: CommandRunner | None = None, + lock_timeout_seconds: float = _LOCK_TIMEOUT_SECONDS, + ) -> None: + configured = os.environ.get(TOOLCHAIN_HOME_ENV, "").strip() + base = ( + base_dir + or (Path(configured).expanduser() if configured else None) + or get_global_config_dir() / "plugin-toolchains" + ) + self._base_dir = base.expanduser().resolve() + self._root = self._base_dir / "dsh" / DSH_VERSION + self._pnpm_command = tuple(pnpm_command) if pnpm_command is not None else None + if self._pnpm_command is not None and not self._pnpm_command: + raise ValueError("pnpm command cannot be empty") + self._runner = command_runner or self._run_command + self._lock_timeout_seconds = lock_timeout_seconds + self._assert_safe_managed_root(self._root) + + @property + def root(self) -> Path: + return self._root + + @property + def executable(self) -> Path: + return self._root / "node_modules" / ".bin" / "dsh" + + def status(self) -> DshToolchainStatus: + """Inspect the managed installation without mutating it.""" + + pnpm_path, pnpm_version = self._inspect_pnpm() + manifest_valid = self._manifest_is_pinned() + lock_valid = self._lockfile_is_pinned() + executable = self.executable + if not manifest_valid: + problem = "not_installed" if not self._root.exists() else "manifest_mismatch" + return self._status( + installed=False, + usable=False, + pnpm_path=pnpm_path, + pnpm_version=pnpm_version, + problem=problem, + ) + if not lock_valid: + return self._status( + installed=True, + usable=False, + pnpm_path=pnpm_path, + pnpm_version=pnpm_version, + problem="lockfile_missing_or_mismatched", + ) + try: + resolved = executable.resolve(strict=True) + except (FileNotFoundError, OSError): + return self._status( + installed=True, + usable=False, + pnpm_path=pnpm_path, + pnpm_version=pnpm_version, + problem="executable_missing", + ) + if not resolved.is_relative_to(self._root.resolve()): + return self._status( + installed=True, + usable=False, + pnpm_path=pnpm_path, + pnpm_version=pnpm_version, + executable=str(resolved), + problem="executable_outside_managed_root", + ) + try: + actual = self._command_version((str(executable),), cwd=self._root) + except DshToolchainUnavailableError: + return self._status( + installed=True, + usable=False, + pnpm_path=pnpm_path, + pnpm_version=pnpm_version, + executable=str(executable), + problem="executable_unavailable", + ) + if actual != DSH_VERSION: + return self._status( + installed=True, + usable=False, + pnpm_path=pnpm_path, + pnpm_version=pnpm_version, + executable=str(executable), + actual_version=actual, + problem="version_mismatch", + ) + return self._status( + installed=True, + usable=True, + pnpm_path=pnpm_path, + pnpm_version=pnpm_version, + executable=str(executable), + actual_version=actual, + ) + + def install(self) -> DshToolchainStatus: + """Atomically install the pinned official npm package with a pnpm lock.""" + + pnpm = self.require_pnpm() + with self._install_lock(): + current = self.status() + if current.usable: + return current + parent = self._root.parent + parent.mkdir(parents=True, exist_ok=True, mode=0o700) + self._clean_abandoned_staging(parent) + staging = Path(tempfile.mkdtemp(prefix=f".{DSH_VERSION}.install-", dir=parent)) + backup: Path | None = None + try: + self._write_install_manifest(staging) + environment = self._installation_environment() + self._runner( + ( + *pnpm, + "install", + "--lockfile-only", + "--ignore-scripts", + "--config.auto-install-peers=true", + ), + staging, + environment, + ) + lockfile = staging / "pnpm-lock.yaml" + if not self._lockfile_is_pinned(lockfile): + raise DshToolchainInstallError( + "pnpm did not create a lockfile pinned to the supported DSH package" + ) + self._runner( + ( + *pnpm, + "install", + "--frozen-lockfile", + "--ignore-scripts", + "--config.auto-install-peers=true", + ), + staging, + environment, + ) + staged_executable = staging / "node_modules" / ".bin" / "dsh" + resolved = staged_executable.resolve(strict=True) + if not resolved.is_relative_to(staging.resolve()): + raise DshToolchainInstallError( + "installed DSH executable escapes the managed toolchain directory" + ) + actual = self._command_version((str(staged_executable),), cwd=staging) + if actual != DSH_VERSION: + raise DshToolchainVersionMismatchError( + f"expected DSH {DSH_VERSION}, got {actual}" + ) + self._write_receipt(staging, actual) + if self._root.exists(): + backup = parent / f".{DSH_VERSION}.backup-{uuid.uuid4().hex}" + os.replace(self._root, backup) + try: + os.replace(staging, self._root) + installed = self.status() + if not installed.usable: + raise DshToolchainInstallError( + f"installed DSH toolchain failed verification: {installed.problem}" + ) + except BaseException: + if self._root.exists(): + shutil.rmtree(self._root) + if backup is not None and backup.exists(): + os.replace(backup, self._root) + raise + if backup is not None and backup.exists(): + shutil.rmtree(backup) + return installed + except DshToolchainError: + raise + except Exception as error: + raise DshToolchainInstallError("could not install the DSH toolchain") from error + finally: + if staging.exists(): + shutil.rmtree(staging) + if backup is not None and backup.exists() and self._root.exists(): + shutil.rmtree(backup) + + def require_command(self, explicit: str | Path | None = None) -> tuple[str, ...]: + """Return an exact-version DSH executable, managed unless explicitly set.""" + + if explicit is not None and str(explicit).strip(): + executable = self._resolve_program(str(explicit)) + actual = self._command_version((executable,), cwd=self._root) + if actual != DSH_VERSION: + raise DshToolchainVersionMismatchError( + f"expected DSH {DSH_VERSION}, got {actual}" + ) + return (executable,) + state = self.status() + if state.problem == "version_mismatch": + raise DshToolchainVersionMismatchError( + f"expected DSH {DSH_VERSION}, got {state.actual_version or 'unknown'}" + ) + if not state.usable or state.executable is None: + raise DshToolchainUnavailableError( + "managed DSH toolchain is not installed; run " + "`agentengine plugin toolchain install`" + ) + return (state.executable,) + + def resolve_module_entry(self, package_name: str) -> Path: + """Resolve one dependency from the pinned DSH installation. + + Provider sidecars may need the exact Cordis implementation owned by + their DSH host. Resolution is anchored at the installed DSH package, + never at a source checkout or the caller's ambient ``node_modules``. + The result is fenced to the managed toolchain root. + """ + + self._validate_package_name(package_name) + self.require_command() + dsh_manifest = self._root / "node_modules" / DSH_PACKAGE / "package.json" + try: + dsh_manifest = dsh_manifest.resolve(strict=True) + except (FileNotFoundError, OSError) as error: + raise DshToolchainUnavailableError( + "managed DSH package manifest is unavailable" + ) from error + node = self._resolve_program("node") + script = ( + "const {createRequire}=require('node:module');" + f"const resolve=createRequire({json.dumps(str(dsh_manifest))}).resolve;" + f"process.stdout.write(resolve({json.dumps(package_name)}));" + ) + try: + result = self._invoke((node, "-e", script), cwd=self._root) + except DshToolchainError as error: + raise DshToolchainUnavailableError( + f"managed DSH dependency is unavailable: {package_name}" + ) from error + raw = result.stdout.strip() + try: + resolved = Path(raw).resolve(strict=True) + except (FileNotFoundError, OSError) as error: + raise DshToolchainUnavailableError( + f"managed DSH dependency is unavailable: {package_name}" + ) from error + if not resolved.is_relative_to(self._root): + raise DshToolchainUnavailableError( + f"managed DSH dependency escapes the toolchain root: {package_name}" + ) + return resolved + + def require_pnpm(self) -> tuple[str, ...]: + command = self._resolve_pnpm_command() + result = self._runner( + (*command, "--version"), + self._pnpm_probe_cwd(), + self._pnpm_environment(), + ) + match = _VERSION.search(result.stdout or result.stderr) + if match is None: + raise DshToolchainUnavailableError("pnpm did not report a parseable version") + if match.group(1) != PNPM_VERSION: + raise DshToolchainVersionMismatchError( + f"expected pnpm {PNPM_VERSION}, got {match.group(1)}" + ) + return command + + def _status( + self, + *, + installed: bool, + usable: bool, + pnpm_path: str | None, + pnpm_version: str | None, + problem: str | None = None, + executable: str | None = None, + actual_version: str | None = None, + ) -> DshToolchainStatus: + return DshToolchainStatus( + installed=installed, + usable=usable, + root=str(self._root), + executable=executable, + actual_version=actual_version, + lockfile_present=(self._root / "pnpm-lock.yaml").is_file(), + pnpm_available=pnpm_path is not None, + pnpm_version=pnpm_version, + problem=problem, + ) + + def _inspect_pnpm(self) -> tuple[str | None, str | None]: + try: + command = self.require_pnpm() + result = self._runner( + (*command, "--version"), + self._root, + self._pnpm_environment(), + ) + except DshToolchainError: + return None, None + match = _VERSION.search(result.stdout or result.stderr) + return " ".join(command), match.group(1) if match else None + + def _resolve_pnpm_command(self) -> tuple[str, ...]: + if self._pnpm_command is not None: + command = self._pnpm_command + else: + configured = os.environ.get(PNPM_BIN_ENV, "").strip() + if configured: + command = (configured,) + else: + corepack = shutil.which("corepack") + command = ( + (corepack, f"pnpm@{PNPM_VERSION}") + if corepack is not None + else ("pnpm",) + ) + executable = self._resolve_program(command[0]) + return (executable, *command[1:]) + + def _pnpm_probe_cwd(self) -> Path: + # require_pnpm() must also work before the managed toolchain root + # exists (first install), so the version probe cannot unconditionally + # use self._root as cwd. + if self._root.exists(): + return self._root + self._base_dir.mkdir(parents=True, exist_ok=True, mode=0o700) + return self._base_dir + + def _manifest_is_pinned(self, path: Path | None = None) -> bool: + manifest_path = path or self._root / "package.json" + try: + payload = json.loads(manifest_path.read_text(encoding="utf-8")) + except (FileNotFoundError, OSError, UnicodeError, json.JSONDecodeError): + return False + return ( + isinstance(payload, dict) + and payload.get("private") is True + and payload.get("packageManager") == f"pnpm@{PNPM_VERSION}" + and isinstance(payload.get("dependencies"), dict) + and payload["dependencies"].get(DSH_PACKAGE) == DSH_VERSION + ) + + def _lockfile_is_pinned(self, path: Path | None = None) -> bool: + lockfile = path or self._root / "pnpm-lock.yaml" + try: + if lockfile.stat().st_size > _MAX_MANIFEST_BYTES: + return False + value = lockfile.read_text(encoding="utf-8") + except (FileNotFoundError, OSError, UnicodeError): + return False + return DSH_PACKAGE in value and DSH_VERSION in value + + def _command_version(self, command: Sequence[str], *, cwd: Path) -> str: + result = self._invoke((*command, "--version"), cwd=cwd) + match = _VERSION.search(result.stdout or result.stderr) + if match is None: + raise DshToolchainUnavailableError("DSH did not report a parseable version") + return match.group(1) + + def _invoke(self, command: Sequence[str], *, cwd: Path) -> CommandResult: + try: + return self._runner(tuple(command), cwd, dsh_subprocess_environment()) + except DshToolchainError: + raise + except Exception as error: + raise DshToolchainUnavailableError("toolchain command could not be executed") from error + + @staticmethod + def _resolve_program(value: str) -> str: + candidate = Path(value).expanduser() + if candidate.is_absolute() or len(candidate.parts) > 1: + if not candidate.is_file(): + raise DshToolchainUnavailableError(f"required executable is unavailable: {value}") + return str(candidate.resolve()) + resolved = shutil.which(value) + if resolved is None: + raise DshToolchainUnavailableError(f"required executable is unavailable: {value}") + return resolved + + @staticmethod + def _validate_package_name(name: str) -> None: + if len(name) > 214 or not _PACKAGE_NAME.fullmatch(name): + raise DshToolchainUnavailableError("invalid managed DSH package name") + + def _write_install_manifest(self, root: Path) -> None: + self._write_json( + root / "package.json", + { + "name": "agentengine-managed-dsh-toolchain", + "private": True, + "packageManager": f"pnpm@{PNPM_VERSION}", + "dependencies": {DSH_PACKAGE: DSH_VERSION}, + }, + ) + + def _write_receipt(self, root: Path, actual: str) -> None: + self._write_json( + root / "toolchain.json", + { + "schemaVersion": 1, + "package": DSH_PACKAGE, + "requestedVersion": DSH_VERSION, + "actualVersion": actual, + "packageManager": f"pnpm@{PNPM_VERSION}", + }, + ) + + @staticmethod + def _write_json(path: Path, value: object) -> None: + path.parent.mkdir(parents=True, exist_ok=True, mode=0o700) + temporary = path.with_name(f".{path.name}.{uuid.uuid4().hex}.tmp") + try: + temporary.write_text( + json.dumps(value, ensure_ascii=False, indent=2) + "\n", + encoding="utf-8", + ) + temporary.chmod(0o600) + os.replace(temporary, path) + finally: + temporary.unlink(missing_ok=True) + + @staticmethod + def _installation_environment() -> dict[str, str]: + environment = dsh_subprocess_environment() + environment.update( + { + "CI": "1", + "COREPACK_ENABLE_PROJECT_SPEC": "0", + "NPM_CONFIG_AUDIT": "false", + "NPM_CONFIG_FUND": "false", + } + ) + return environment + + @staticmethod + def _pnpm_environment() -> dict[str, str]: + environment = dsh_subprocess_environment() + environment["COREPACK_ENABLE_PROJECT_SPEC"] = "0" + return environment + + @contextmanager + def _install_lock(self) -> Iterator[None]: + parent = self._root.parent + parent.mkdir(parents=True, exist_ok=True, mode=0o700) + lock = parent / f".{DSH_VERSION}.install.lock" + deadline = time.monotonic() + self._lock_timeout_seconds + while True: + try: + lock.mkdir(mode=0o700) + self._write_json(lock / "owner.json", {"pid": os.getpid()}) + break + except FileExistsError: + if self._lock_is_stale(lock): + try: + shutil.rmtree(lock) + except FileNotFoundError: + pass + continue + if time.monotonic() >= deadline: + raise DshToolchainInstallError( + "another DSH toolchain installation is still in progress" + ) + time.sleep(0.05) + try: + yield + finally: + shutil.rmtree(lock, ignore_errors=True) + + @staticmethod + def _lock_is_stale(lock: Path) -> bool: + try: + age = time.time() - lock.stat().st_mtime + except FileNotFoundError: + return False + if age <= _STALE_LOCK_SECONDS: + return False + try: + payload = json.loads((lock / "owner.json").read_text(encoding="utf-8")) + pid = int(payload.get("pid", -1)) + except (OSError, ValueError, TypeError, json.JSONDecodeError): + return True + if pid <= 0: + return True + try: + os.kill(pid, 0) + except ProcessLookupError: + return True + except (PermissionError, OSError): + return False + return False + + @staticmethod + def _clean_abandoned_staging(parent: Path) -> None: + for candidate in parent.glob(f".{DSH_VERSION}.install-*"): + if candidate.is_dir() and candidate.parent == parent: + shutil.rmtree(candidate) + + def _assert_safe_managed_root(self, root: Path) -> None: + if root.name != DSH_VERSION or root.parent.name != "dsh": + raise ValueError("managed DSH root must end in dsh/") + if root in {Path(root.anchor), Path.home().resolve(), self._base_dir}: + raise ValueError("managed DSH root is too broad") + + @staticmethod + def _run_command( + command: Sequence[str], + cwd: Path, + environment: Mapping[str, str], + ) -> CommandResult: + try: + completed = subprocess.run( + list(command), + cwd=cwd, + env=dict(environment), + check=False, + capture_output=True, + text=True, + timeout=180, + ) + except (OSError, subprocess.TimeoutExpired) as error: + raise DshToolchainUnavailableError("toolchain command did not complete") from error + if completed.returncode != 0: + diagnostic = _redact_diagnostic(completed.stderr or completed.stdout) + raise DshToolchainInstallError( + f"toolchain command failed with exit code {completed.returncode}" + + (f": {diagnostic[-2000:]}" if diagnostic else "") + ) + return CommandResult(stdout=completed.stdout, stderr=completed.stderr) + + +class DshPluginDeveloper: + """Create, validate, and pack standard DSH npm bundle projects.""" + + def __init__( + self, + *, + toolchain: DshToolchainManager | None = None, + explicit_dsh: str | Path | None = None, + bridge_factory: Callable[..., DshProfilePluginBridge] = DshProfilePluginBridge, + command_runner: CommandRunner | None = None, + ) -> None: + self._toolchain = toolchain or DshToolchainManager(command_runner=command_runner) + self._explicit_dsh = explicit_dsh + self._bridge_factory = bridge_factory + self._runner = command_runner or DshToolchainManager._run_command + + def create(self, target: Path, *, package_name: str | None = None) -> DshPluginCreateResult: + target = target.expanduser().resolve() + if target.exists(): + raise DshPluginSourceError("plugin target already exists") + name = package_name or self._default_package_name(target.name) + self._validate_package_name(name) + target.parent.mkdir(parents=True, exist_ok=True) + target.mkdir(mode=0o755) + try: + package = { + "name": name, + "version": "0.1.0", + "description": "A DeepSeek Harness Cordis plugin bundle.", + "type": "module", + "main": "index.js", + "types": "index.d.ts", + "files": ["index.js", "index.d.ts", "cordis.patch.yml"], + "engines": {"node": ">=22.19.0"}, + "peerDependencies": {"@deepseek-ai/cordis": CORDIS_VERSION_RANGE}, + "dsh": {"bundle": {"patch": "./cordis.patch.yml"}}, + } + (target / "package.json").write_text( + json.dumps(package, ensure_ascii=False, indent=2) + "\n", + encoding="utf-8", + ) + (target / "cordis.patch.yml").write_text( + "- insert:\n" + " - id: plugin-main\n" + f" name: {json.dumps(name)}\n", + encoding="utf-8", + ) + symbol = re.sub(r"[^A-Za-z0-9]+", "-", name).strip("-") or "plugin" + (target / "index.js").write_text( + f"export const name = {json.dumps(symbol)}\n\n" + "/** @param {import('@deepseek-ai/cordis').Context} ctx */\n" + "export function apply(ctx) {\n" + " // Register resources through Cordis effects so unload is reversible.\n" + " ctx.effect(() => () => {})\n" + "}\n", + encoding="utf-8", + ) + (target / "index.d.ts").write_text( + "import type { Context } from '@deepseek-ai/cordis'\n\n" + "export declare const name: string\n" + "export declare function apply(ctx: Context): void\n", + encoding="utf-8", + ) + except BaseException: + shutil.rmtree(target, ignore_errors=True) + raise + return DshPluginCreateResult( + package_name=name, + target=str(target), + entrypoint="index.js", + bundle_patch="cordis.patch.yml", + ) + + def validate(self, source: str | Path) -> DshPluginValidationResult: + local_source, _package = self._resolve_local_bundle(source) + source_value = str(local_source) if local_source is not None else str(source).strip() + command = self._toolchain.require_command(self._explicit_dsh) + stage = "start" + with tempfile.TemporaryDirectory(prefix="agentengine-dsh-validate-") as directory: + root = Path(directory) + try: + with self._bridge_factory( + dsh_home=root / "home", + profile="validate", + dsh_command=command, + cwd=(local_source.parent if local_source is not None else Path.cwd()), + ) as bridge: + stage = "install" + installed = bridge.install_plugin( + source_value, + accept_host_permissions=True, + ) + stage = "project" + projection = bridge.project_profile() + stage = "disable" + bridge.set_enabled(installed.name, enabled=False) + stage = "enable" + bridge.set_enabled(installed.name, enabled=True) + stage = "uninstall" + bridge.uninstall_plugin(installed.name) + return DshPluginValidationResult( + package_name=installed.name, + package_version=installed.version, + host_version=projection.host_version, + profile_digest=projection.config_digest, + ) + except DshToolchainError: + raise + except DshBridgeError as error: + raise DshPluginValidationError(stage) from error + except Exception as error: + raise DshPluginValidationError(stage) from error + + def pack( + self, + source: Path, + *, + output_dir: Path | None = None, + ) -> DshPluginPackResult: + local_source, package = self._resolve_local_bundle(source) + assert local_source is not None + if not local_source.is_dir(): + raise DshPluginSourceError("only a DSH bundle source directory can be packed") + output = (output_dir or local_source / "dist").expanduser().resolve() + output.mkdir(parents=True, exist_ok=True) + before = {item.resolve() for item in output.glob("*.tgz") if item.is_file()} + pnpm = self._toolchain.require_pnpm() + environment = dsh_subprocess_environment() + # Keep the pinned pnpm selected above even when an ancestor workspace + # declares another package manager through Corepack. + environment["COREPACK_ENABLE_PROJECT_SPEC"] = "0" + try: + self._runner( + (*pnpm, "pack", "--pack-destination", str(output)), + local_source, + environment, + ) + except DshToolchainError as error: + raise DshPluginPackError("pnpm could not pack the DSH bundle") from error + except Exception as error: + raise DshPluginPackError("pnpm could not pack the DSH bundle") from error + created = [ + item.resolve() + for item in output.glob("*.tgz") + if item.is_file() and item.resolve() not in before + ] + if len(created) != 1 or not created[0].is_relative_to(output): + raise DshPluginPackError("pnpm pack did not produce exactly one bounded npm tarball") + return DshPluginPackResult( + package_name=str(package["name"]), + package_version=str(package["version"]), + artifact=str(created[0]), + ) + + @classmethod + def _resolve_local_bundle( + cls, + source: str | Path, + ) -> tuple[Path | None, dict[str, Any]]: + raw = str(source).strip() + candidate = Path(raw).expanduser() + looks_local = isinstance(source, Path) or candidate.is_absolute() or raw.startswith(".") + if not candidate.exists(): + if looks_local: + raise DshPluginSourceError("local DSH plugin source does not exist") + if not raw or raw.startswith("-") or any(char in raw for char in "\r\n\0"): + raise DshPluginSourceError("invalid DSH plugin source") + return None, {} + root = candidate.resolve() + if root.is_file() and root.name.endswith(".tgz"): + return root, {} + if root.is_file() and root.name == "package.json": + root = root.parent + if not root.is_dir(): + raise DshPluginSourceError("local DSH plugin source must be a directory") + manifest_path = root / "package.json" + try: + if manifest_path.stat().st_size > _MAX_MANIFEST_BYTES: + raise DshPluginSourceError("DSH plugin package.json is too large") + package = json.loads(manifest_path.read_text(encoding="utf-8")) + except FileNotFoundError: + raise DshPluginSourceError("DSH plugin package.json is missing") from None + except (OSError, UnicodeError, json.JSONDecodeError) as error: + raise DshPluginSourceError("DSH plugin package.json is invalid") from error + if not isinstance(package, dict): + raise DshPluginSourceError("DSH plugin package.json must be an object") + name = package.get("name") + version = package.get("version") + if not isinstance(name, str) or not isinstance(version, str) or not version.strip(): + raise DshPluginSourceError("DSH plugin package name/version is invalid") + cls._validate_package_name(name) + dsh = package.get("dsh") + bundle = dsh.get("bundle") if isinstance(dsh, dict) else None + patch = bundle.get("patch") if isinstance(bundle, dict) else None + if not isinstance(patch, str) or not patch.strip(): + raise DshPluginSourceError("package.json must declare dsh.bundle.patch") + relative = Path(patch) + target = (root / relative).resolve() + if relative.is_absolute() or ".." in relative.parts or not target.is_relative_to(root): + raise DshPluginSourceError("dsh.bundle.patch must stay inside the package") + if not target.is_file(): + raise DshPluginSourceError("declared DSH bundle patch does not exist") + return root, package + + @staticmethod + def _default_package_name(target_name: str) -> str: + value = re.sub(r"[^a-z0-9._-]+", "-", target_name.casefold()).strip("-._") + if not value: + value = "plugin" + return value if value.startswith("dsh-") else f"dsh-{value}" + + @staticmethod + def _validate_package_name(name: str) -> None: + if len(name) > 214 or not _PACKAGE_NAME.fullmatch(name): + raise DshPluginSourceError("plugin name must be a valid lowercase npm package name") + + +__all__ = [ + "CORDIS_VERSION_RANGE", + "DSH_PACKAGE", + "DSH_PACKAGE_SPEC", + "DSH_VERSION", + "PNPM_BIN_ENV", + "PNPM_VERSION", + "TOOLCHAIN_HOME_ENV", + "CommandResult", + "DshPluginCreateResult", + "DshPluginDeveloper", + "DshPluginPackError", + "DshPluginPackResult", + "DshPluginSourceError", + "DshPluginValidationError", + "DshPluginValidationResult", + "DshToolchainError", + "DshToolchainInstallError", + "DshToolchainManager", + "DshToolchainStatus", + "DshToolchainUnavailableError", + "DshToolchainVersionMismatchError", +] + + +def _redact_diagnostic(value: str) -> str: + value = re.sub(r"(https?://)[^/\s:@]+:[^/\s@]+@", r"\1[redacted]@", value, flags=re.I) + return re.sub( + r"((?:token|password|authorization|_authToken)\s*[:=]\s*)[^\s]+", + r"\1[redacted]", + value, + flags=re.I, + ).strip() diff --git a/ksadk/plugins/ecosystem_bridge.py b/ksadk/plugins/ecosystem_bridge.py new file mode 100644 index 00000000..36feb2db --- /dev/null +++ b/ksadk/plugins/ecosystem_bridge.py @@ -0,0 +1,1105 @@ +"""Frozen ``PluginEcosystemBridge/v1`` source contract. + +An ecosystem bridge gives KsADK one lifecycle vocabulary while leaving Codex +and DeepSeek Harness in charge of their native +plugin ABI. The contract is deliberately declarative: it does not import +third-party plugin code, run install scripts, translate Agent loops, or grant +permissions. Inspection may report unknown versions and undeclared +permissions, but planning such an external transition fails closed. + +The lifecycle is split into read-only discovery (``describe``/``probe``/ +``inspect``), an immutable transition (``plan``/``stage``/``commit``), and +truthful observed state (``reconcile``/``rollback``/``dispose``). External +plugins without an explicit permission declaration are rejected fail-closed. +Secrets may only cross the boundary as references. +""" + +from __future__ import annotations + +import re +from typing import Annotated, Literal, Protocol, cast, runtime_checkable +from urllib.parse import parse_qsl, urlsplit + +from pydantic import AwareDatetime, ConfigDict, Field, RootModel, field_validator, model_validator + +from ksadk.plugins.contracts import PluginContractModel + +PluginEcosystem = Literal["codex", "dsh"] +PluginIntegrationMode = Literal["bridged", "linked"] +PluginSupportMaturity = Literal[ + "detected", + "linked-ready", + "bridged-ready", + "unsupported", + "experimental", +] +PluginDesiredState = Literal["disabled", "enabled"] +PluginObservedState = Literal[ + "resolved", + "admitted", + "staged", + "starting", + "ready", + "degraded", + "failed", + "draining", + "stopped", + "disposed", + "rejected", +] +BridgeAction = Literal[ + "describe", + "probe", + "inspect", + "plan", + "stage", + "commit", + "reconcile", + "rollback", + "dispose", +] + +_ID = re.compile(r"^[a-z0-9]+(?:[._-][a-z0-9]+)*$") +_SEMVER = re.compile(r"^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$") +_DIGEST = re.compile(r"^sha256:[0-9a-f]{64}$") +_REF = re.compile(r"^[a-z][a-z0-9+.-]*://\S+$") +_SECRET_REF = re.compile(r"^(?:secret|env|credential|vault)://\S+$") +_PROTOCOL = re.compile(r"^[a-z][a-z0-9._-]*/v[1-9][0-9]*$") +_SENSITIVE_QUERY_KEY = re.compile(r"(?:secret|password|token|api[_-]?key)", re.IGNORECASE) + + +def _validate_id(value: str, *, field: str) -> str: + if not _ID.fullmatch(value): + raise ValueError(f"{field} must be a lowercase qualified id") + return value + + +def _validate_semver(value: str, *, field: str) -> str: + if not _SEMVER.fullmatch(value): + raise ValueError(f"{field} must use an exact semantic version") + return value + + +def _validate_digest(value: str) -> str: + if not _DIGEST.fullmatch(value): + raise ValueError("digest must be a lowercase sha256: digest") + return value + + +def _validate_ref(value: str, *, field: str) -> str: + if not _REF.fullmatch(value): + raise ValueError(f"{field} must be an absolute typed reference") + parsed = urlsplit(value) + if parsed.username is not None or parsed.password is not None: + raise ValueError(f"{field} must not embed credentials") + if any(_SENSITIVE_QUERY_KEY.search(key) for key, _ in parse_qsl(parsed.query)): + raise ValueError(f"{field} must not embed secret query parameters") + return value + + +def _unique(value: tuple[str, ...], *, field: str) -> tuple[str, ...]: + if any(not item for item in value): + raise ValueError(f"{field} entries must not be empty") + if len(value) != len(set(value)): + raise ValueError(f"{field} entries must be unique") + return value + + +class BridgeHostRequirement(PluginContractModel): + host_id: str = Field(min_length=2, max_length=128) + version_constraint: str = Field(min_length=1, max_length=128) + protocol: str = Field(min_length=3, max_length=128) + protocol_constraint: str = Field(min_length=1, max_length=128) + + @field_validator("host_id") + @classmethod + def validate_host_id(cls, value: str) -> str: + return _validate_id(value, field="hostId") + + @field_validator("protocol") + @classmethod + def validate_protocol(cls, value: str) -> str: + if not _PROTOCOL.fullmatch(value): + raise ValueError("protocol must be a versioned protocol id") + return value + + +class BridgeHostObservation(PluginContractModel): + host_id: str = Field(min_length=2, max_length=128) + available: bool + version: str | None = None + protocol: str | None = Field(default=None, min_length=3, max_length=128) + protocol_version: str | None = None + digest: str | None = None + + @field_validator("host_id") + @classmethod + def validate_host_id(cls, value: str) -> str: + return _validate_id(value, field="hostId") + + @field_validator("version", "protocol_version") + @classmethod + def validate_optional_version(cls, value: str | None) -> str | None: + if value is not None: + return _validate_semver(value, field="host version") + return value + + @field_validator("protocol") + @classmethod + def validate_optional_protocol(cls, value: str | None) -> str | None: + if value is not None and not _PROTOCOL.fullmatch(value): + raise ValueError("host protocol must be a versioned protocol id") + return value + + @field_validator("digest") + @classmethod + def validate_optional_digest(cls, value: str | None) -> str | None: + if value is not None: + return _validate_digest(value) + return value + + @model_validator(mode="after") + def validate_observation(self) -> "BridgeHostObservation": + trace = (self.version, self.protocol, self.protocol_version, self.digest) + if self.available and any(item is None for item in trace): + raise ValueError("available host observations require version, protocol, and digest") + if not self.available and any(item is not None for item in trace): + raise ValueError("unavailable host observations cannot claim host identity facts") + return self + + +class BridgeDescriptor(PluginContractModel): + descriptor_format: Literal["ksadk.plugin-ecosystem-bridge-descriptor/v1"] = ( + "ksadk.plugin-ecosystem-bridge-descriptor/v1" + ) + bridge_id: str = Field(min_length=3, max_length=128) + bridge_version: str + bridge_digest: str + ecosystem: PluginEcosystem + integration_mode: PluginIntegrationMode + maturity: PluginSupportMaturity + host_requirement: BridgeHostRequirement | None + supported_actions: tuple[BridgeAction, ...] + + @field_validator("bridge_id") + @classmethod + def validate_bridge_id(cls, value: str) -> str: + return _validate_id(value, field="bridgeId") + + @field_validator("bridge_version") + @classmethod + def validate_bridge_version(cls, value: str) -> str: + return _validate_semver(value, field="bridge version") + + @field_validator("bridge_digest") + @classmethod + def validate_bridge_digest(cls, value: str) -> str: + return _validate_digest(value) + + @field_validator("supported_actions") + @classmethod + def validate_actions(cls, value: tuple[BridgeAction, ...]) -> tuple[BridgeAction, ...]: + if not value or len(value) != len(set(value)): + raise ValueError("supportedActions must be non-empty and unique") + return value + + @model_validator(mode="after") + def validate_mode(self) -> "BridgeDescriptor": + if self.host_requirement is None: + raise ValueError("bridged and linked bridges require an external host") + if self.maturity == "bridged-ready" and self.integration_mode != "bridged": + raise ValueError("bridged-ready maturity requires bridged integration") + if self.maturity == "linked-ready" and self.integration_mode != "linked": + raise ValueError("linked-ready maturity requires linked integration") + return self + + +class BridgeDescribeRequest(PluginContractModel): + request_format: Literal["ksadk.bridge-describe/v1"] = "ksadk.bridge-describe/v1" + ecosystem: PluginEcosystem + + +class BridgeDescribeResult(PluginContractModel): + result_format: Literal["ksadk.bridge-describe-result/v1"] = "ksadk.bridge-describe-result/v1" + descriptor: BridgeDescriptor + + +class PluginManifestCandidate(PluginContractModel): + ecosystem: PluginEcosystem + integration_mode: PluginIntegrationMode + maturity: PluginSupportMaturity + manifest_kind: Literal["codex-plugin", "dsh-bundle"] + manifest_ref: str = Field(min_length=4, max_length=4096) + manifest_digest: str + + @field_validator("manifest_ref") + @classmethod + def validate_manifest_ref(cls, value: str) -> str: + return _validate_ref(value, field="manifestRef") + + @field_validator("manifest_digest") + @classmethod + def validate_manifest_digest(cls, value: str) -> str: + return _validate_digest(value) + + @model_validator(mode="after") + def validate_candidate_mode(self) -> "PluginManifestCandidate": + expected_kind = {"codex": "codex-plugin", "dsh": "dsh-bundle"}[ + self.ecosystem + ] + if self.manifest_kind != expected_kind: + raise ValueError("manifestKind does not match the detected ecosystem") + return self + + +class BridgeProbeRequest(PluginContractModel): + request_format: Literal["ksadk.bridge-probe/v1"] = "ksadk.bridge-probe/v1" + source_ref: str = Field(min_length=4, max_length=4096) + source_digest: str + selected_manifest_ref: str | None = Field(default=None, min_length=4, max_length=4096) + + @field_validator("source_ref", "selected_manifest_ref") + @classmethod + def validate_source_ref(cls, value: str | None) -> str | None: + if value is not None: + return _validate_ref(value, field="source reference") + return value + + @field_validator("source_digest") + @classmethod + def validate_source_digest(cls, value: str) -> str: + return _validate_digest(value) + + +class BridgeRejection(PluginContractModel): + rejection_format: Literal["ksadk.bridge-rejection/v1"] = "ksadk.bridge-rejection/v1" + action: BridgeAction + code: Literal[ + "ambiguous_manifest", + "permissions_undeclared", + "host_unavailable", + "host_incompatible", + "digest_mismatch", + "unsupported", + ] + retryable: bool + message: str = Field(min_length=1, max_length=1024) + host: BridgeHostObservation | None = None + + @model_validator(mode="after") + def validate_host_rejection(self) -> "BridgeRejection": + if self.code in {"host_unavailable", "host_incompatible"} and self.host is None: + raise ValueError("host rejection requires a typed host observation") + if self.code == "host_unavailable" and self.host is not None and self.host.available: + raise ValueError("host_unavailable cannot claim that the host is available") + return self + + +class BridgeProbeResult(PluginContractModel): + result_format: Literal["ksadk.bridge-probe-result/v1"] = "ksadk.bridge-probe-result/v1" + candidates: tuple[PluginManifestCandidate, ...] = () + selection_required: bool + selected_manifest_ref: str | None = Field(default=None, min_length=4, max_length=4096) + rejection: BridgeRejection | None = None + + @field_validator("selected_manifest_ref") + @classmethod + def validate_selected_manifest_ref(cls, value: str | None) -> str | None: + if value is not None: + return _validate_ref(value, field="selectedManifestRef") + return value + + @model_validator(mode="after") + def validate_candidates(self) -> "BridgeProbeResult": + refs = [item.manifest_ref for item in self.candidates] + if len(refs) != len(set(refs)): + raise ValueError("probe candidates must have unique manifestRef values") + if not refs: + if self.rejection is None or self.rejection.action != "probe": + raise ValueError("empty probe requires a typed probe rejection") + if self.selection_required or self.selected_manifest_ref is not None: + raise ValueError("rejected probe cannot claim a manifest selection") + return self + if self.rejection is not None: + raise ValueError("successful probe candidates cannot carry a rejection") + if self.selection_required and self.selected_manifest_ref is not None: + raise ValueError("selectionRequired cannot also claim a selected manifest") + if not self.selection_required: + if self.selected_manifest_ref is None: + raise ValueError("a completed probe requires selectedManifestRef") + if self.selected_manifest_ref not in refs: + raise ValueError("selectedManifestRef must identify a probe candidate") + return self + + +class BridgeProbeExchange(PluginContractModel): + fixture_kind: Literal["probe"] = "probe" + request: BridgeProbeRequest + result: BridgeProbeResult + + @model_validator(mode="after") + def validate_explicit_selection(self) -> "BridgeProbeExchange": + candidate_refs = {item.manifest_ref for item in self.result.candidates} + if not candidate_refs: + return self + selected = self.request.selected_manifest_ref + if len(candidate_refs) > 1 and selected is None: + if not self.result.selection_required or self.result.selected_manifest_ref is not None: + raise ValueError("multiple manifests require explicit selection") + else: + if selected is None: + selected = next(iter(candidate_refs)) + if selected not in candidate_refs: + raise ValueError("requested manifest selection was not detected") + if self.result.selection_required or self.result.selected_manifest_ref != selected: + raise ValueError("probe result must preserve the explicit manifest selection") + return self + + +class EcosystemPluginDescriptor(PluginContractModel): + descriptor_format: Literal["ksadk.ecosystem-plugin-descriptor/v1"] = ( + "ksadk.ecosystem-plugin-descriptor/v1" + ) + ecosystem: PluginEcosystem + plugin_id: str = Field(min_length=2, max_length=256) + plugin_version: str | None = None + integration_mode: PluginIntegrationMode + maturity: PluginSupportMaturity + source_ref: str = Field(min_length=4, max_length=4096) + artifact_digest: str + manifest_ref: str = Field(min_length=4, max_length=4096) + manifest_digest: str + host_requirement: BridgeHostRequirement | None + permissions_declared: bool + install_permissions: tuple[str, ...] = () + runtime_permissions: tuple[str, ...] = () + auth_scopes: tuple[str, ...] = () + secret_refs: tuple[str, ...] = () + components: tuple[str, ...] = () + + @field_validator("plugin_id") + @classmethod + def validate_plugin_id(cls, value: str) -> str: + return _validate_id(value, field="pluginId") + + @field_validator("plugin_version") + @classmethod + def validate_plugin_version(cls, value: str | None) -> str | None: + if value is not None: + return _validate_semver(value, field="plugin version") + return value + + @field_validator("source_ref", "manifest_ref") + @classmethod + def validate_descriptor_ref(cls, value: str) -> str: + return _validate_ref(value, field="descriptor reference") + + @field_validator("artifact_digest", "manifest_digest") + @classmethod + def validate_descriptor_digest(cls, value: str) -> str: + return _validate_digest(value) + + @field_validator("install_permissions", "runtime_permissions", "auth_scopes", "components") + @classmethod + def validate_unique_values(cls, value: tuple[str, ...]) -> tuple[str, ...]: + return _unique(value, field="descriptor list") + + @field_validator("secret_refs") + @classmethod + def validate_secret_refs(cls, value: tuple[str, ...]) -> tuple[str, ...]: + _unique(value, field="secretRefs") + if any(not _SECRET_REF.fullmatch(item) for item in value): + raise ValueError("secretRefs may contain references only") + return value + + @model_validator(mode="after") + def validate_external_shape(self) -> "EcosystemPluginDescriptor": + if self.integration_mode != "native" and self.host_requirement is None: + raise ValueError("bridged and linked plugins require an external host") + if self.integration_mode == "native" and self.host_requirement is not None: + raise ValueError("native plugins cannot require an external host") + return self + + +class BridgeInspectRequest(PluginContractModel): + request_format: Literal["ksadk.bridge-inspect/v1"] = "ksadk.bridge-inspect/v1" + bridge_id: str = Field(min_length=3, max_length=128) + source_ref: str = Field(min_length=4, max_length=4096) + source_digest: str + candidate: PluginManifestCandidate + + @field_validator("bridge_id") + @classmethod + def validate_bridge_id(cls, value: str) -> str: + return _validate_id(value, field="bridgeId") + + @field_validator("source_ref") + @classmethod + def validate_source_ref(cls, value: str) -> str: + return _validate_ref(value, field="sourceRef") + + @field_validator("source_digest") + @classmethod + def validate_source_digest(cls, value: str) -> str: + return _validate_digest(value) + + +class BridgeInspectResult(PluginContractModel): + result_format: Literal["ksadk.bridge-inspect-result/v1"] = "ksadk.bridge-inspect-result/v1" + status: Literal["accepted", "rejected"] + descriptor: EcosystemPluginDescriptor | None = None + rejection: BridgeRejection | None = None + + @model_validator(mode="after") + def validate_outcome(self) -> "BridgeInspectResult": + if self.status == "accepted" and (self.descriptor is None or self.rejection is not None): + raise ValueError("accepted inspection requires descriptor only") + if self.status == "rejected" and (self.rejection is None or self.descriptor is not None): + raise ValueError("rejected inspection requires rejection only") + return self + + +class BridgeInspectExchange(PluginContractModel): + fixture_kind: Literal["rejection"] = "rejection" + request: BridgeInspectRequest + result: BridgeInspectResult + + +class BridgePlanRequest(PluginContractModel): + request_format: Literal["ksadk.bridge-plan/v1"] = "ksadk.bridge-plan/v1" + descriptor: EcosystemPluginDescriptor + operation: Literal["install", "update", "enable", "disable", "uninstall"] + desired_state: PluginDesiredState + bound_references: tuple[str, ...] = () + authorization_ref: str = Field(min_length=4, max_length=2048) + accept_undeclared_permissions: bool = False + + @field_validator("bound_references") + @classmethod + def validate_bound_references(cls, value: tuple[str, ...]) -> tuple[str, ...]: + return _unique(value, field="boundReferences") + + @field_validator("authorization_ref") + @classmethod + def validate_authorization_ref(cls, value: str) -> str: + return _validate_ref(value, field="authorizationRef") + + @model_validator(mode="after") + def validate_admission(self) -> "BridgePlanRequest": + if self.descriptor.plugin_version is None: + raise ValueError("planning requires an exact inspected plugin version") + permissions_undeclared = ( + self.descriptor.integration_mode != "native" + and not self.descriptor.permissions_declared + ) + if permissions_undeclared and not self.accept_undeclared_permissions: + raise ValueError( + "external plugin permissions are undeclared; explicit risk acceptance is required" + ) + if permissions_undeclared and ( + not self.descriptor.install_permissions + or "process:host-user" not in self.descriptor.runtime_permissions + ): + raise ValueError( + "undeclared external permissions require conservative install permissions " + "and process:host-user runtime disclosure" + ) + return self + + +class BridgeTransitionPlan(PluginContractModel): + plan_format: Literal["ksadk.bridge-transition-plan/v1"] = "ksadk.bridge-transition-plan/v1" + plan_id: str = Field(min_length=1, max_length=256) + bridge_id: str = Field(min_length=3, max_length=128) + bridge_version: str + bridge_digest: str + ecosystem: PluginEcosystem + plugin_id: str = Field(min_length=2, max_length=256) + plugin_version: str + integration_mode: PluginIntegrationMode + operation: Literal["install", "update", "enable", "disable", "uninstall"] + desired_state: PluginDesiredState + descriptor_digest: str + artifact_digest: str + manifest_digest: str + install_permissions: tuple[str, ...] = () + runtime_permissions: tuple[str, ...] = () + auth_scopes: tuple[str, ...] = () + authorization_ref: str = Field(min_length=4, max_length=2048) + permissions_declared: bool + undeclared_permissions_accepted: bool = False + bound_references: tuple[str, ...] = () + host_requirement: BridgeHostRequirement | None + rollback_point_ref: str | None = Field(default=None, min_length=4, max_length=2048) + rollback_point_digest: str | None = None + plan_digest: str + created_at: AwareDatetime + + @field_validator("bridge_id", "plugin_id") + @classmethod + def validate_ids(cls, value: str) -> str: + return _validate_id(value, field="plan id") + + @field_validator("bridge_version", "plugin_version") + @classmethod + def validate_versions(cls, value: str) -> str: + return _validate_semver(value, field="plan version") + + @field_validator( + "bridge_digest", + "descriptor_digest", + "artifact_digest", + "manifest_digest", + "rollback_point_digest", + "plan_digest", + ) + @classmethod + def validate_digests(cls, value: str | None) -> str | None: + if value is not None: + return _validate_digest(value) + return value + + @field_validator("authorization_ref", "rollback_point_ref") + @classmethod + def validate_plan_refs(cls, value: str | None) -> str | None: + if value is not None: + return _validate_ref(value, field="plan reference") + return value + + @field_validator( + "install_permissions", "runtime_permissions", "auth_scopes", "bound_references" + ) + @classmethod + def validate_plan_lists(cls, value: tuple[str, ...]) -> tuple[str, ...]: + return _unique(value, field="plan list") + + @model_validator(mode="after") + def validate_rollback_pair(self) -> "BridgeTransitionPlan": + if (self.rollback_point_ref is None) != (self.rollback_point_digest is None): + raise ValueError("rollback point reference and digest must appear together") + if self.integration_mode != "native" and self.host_requirement is None: + raise ValueError("external transition plans require a host") + if self.permissions_declared and self.undeclared_permissions_accepted: + raise ValueError( + "undeclaredPermissionsAccepted must be false when permissions are declared" + ) + if ( + self.integration_mode != "native" + and not self.permissions_declared + and not self.undeclared_permissions_accepted + ): + raise ValueError("external undeclared permissions require recorded risk acceptance") + return self + + +class BridgePlanResult(PluginContractModel): + result_format: Literal["ksadk.bridge-plan-result/v1"] = "ksadk.bridge-plan-result/v1" + plan: BridgeTransitionPlan + + +class BridgeStageRequest(PluginContractModel): + request_format: Literal["ksadk.bridge-stage/v1"] = "ksadk.bridge-stage/v1" + plan: BridgeTransitionPlan + expected_plan_digest: str + + @field_validator("expected_plan_digest") + @classmethod + def validate_expected_plan_digest(cls, value: str) -> str: + return _validate_digest(value) + + @model_validator(mode="after") + def validate_plan_digest(self) -> "BridgeStageRequest": + if self.expected_plan_digest != self.plan.plan_digest: + raise ValueError("expectedPlanDigest does not match the immutable plan") + return self + + +class BridgeStageResult(PluginContractModel): + result_format: Literal["ksadk.bridge-stage-result/v1"] = "ksadk.bridge-stage-result/v1" + stage_id: str = Field(min_length=1, max_length=256) + plan_id: str = Field(min_length=1, max_length=256) + plan_digest: str + bridge_version: str + bridge_digest: str + host: BridgeHostObservation + artifact_digest: str + manifest_digest: str + native_stage_ref: str = Field(min_length=4, max_length=2048) + native_stage_digest: str + staged_at: AwareDatetime + + @field_validator( + "plan_digest", "bridge_digest", "artifact_digest", "manifest_digest", "native_stage_digest" + ) + @classmethod + def validate_stage_digest(cls, value: str) -> str: + return _validate_digest(value) + + @field_validator("bridge_version") + @classmethod + def validate_bridge_version(cls, value: str) -> str: + return _validate_semver(value, field="bridge version") + + @field_validator("native_stage_ref") + @classmethod + def validate_native_stage_ref(cls, value: str) -> str: + return _validate_ref(value, field="nativeStageRef") + + @model_validator(mode="after") + def validate_host_available(self) -> "BridgeStageResult": + if not self.host.available: + raise ValueError("successful stage result requires an available host") + return self + + +class BridgeCommitRequest(PluginContractModel): + request_format: Literal["ksadk.bridge-commit/v1"] = "ksadk.bridge-commit/v1" + stage_id: str = Field(min_length=1, max_length=256) + plan_id: str = Field(min_length=1, max_length=256) + plan_digest: str + native_stage_ref: str = Field(min_length=4, max_length=2048) + native_stage_digest: str + idempotency_key: str = Field(min_length=8, max_length=256) + + @field_validator("plan_digest", "native_stage_digest") + @classmethod + def validate_commit_digest(cls, value: str) -> str: + return _validate_digest(value) + + @field_validator("native_stage_ref") + @classmethod + def validate_native_stage_ref(cls, value: str) -> str: + return _validate_ref(value, field="nativeStageRef") + + +class EcosystemInstallReceipt(PluginContractModel): + receipt_format: Literal["ksadk.ecosystem-install-receipt/v1"] = ( + "ksadk.ecosystem-install-receipt/v1" + ) + receipt_id: str = Field(min_length=1, max_length=256) + plan_id: str = Field(min_length=1, max_length=256) + plan_digest: str + stage_id: str = Field(min_length=1, max_length=256) + ecosystem: PluginEcosystem + plugin_id: str = Field(min_length=2, max_length=256) + plugin_version: str + integration_mode: PluginIntegrationMode + desired_state: PluginDesiredState + bridge_id: str = Field(min_length=3, max_length=128) + bridge_version: str + bridge_digest: str + host: BridgeHostObservation + artifact_digest: str + manifest_digest: str + native_receipt_ref: str = Field(min_length=4, max_length=2048) + native_receipt_digest: str + bound_references: tuple[str, ...] = () + committed_at: AwareDatetime + + @field_validator("plugin_id", "bridge_id") + @classmethod + def validate_receipt_ids(cls, value: str) -> str: + return _validate_id(value, field="receipt id") + + @field_validator("plugin_version", "bridge_version") + @classmethod + def validate_receipt_versions(cls, value: str) -> str: + return _validate_semver(value, field="receipt version") + + @field_validator( + "plan_digest", + "bridge_digest", + "artifact_digest", + "manifest_digest", + "native_receipt_digest", + ) + @classmethod + def validate_receipt_digests(cls, value: str) -> str: + return _validate_digest(value) + + @field_validator("native_receipt_ref") + @classmethod + def validate_native_receipt_ref(cls, value: str) -> str: + return _validate_ref(value, field="nativeReceiptRef") + + @field_validator("bound_references") + @classmethod + def validate_bound_references(cls, value: tuple[str, ...]) -> tuple[str, ...]: + return _unique(value, field="boundReferences") + + @model_validator(mode="after") + def validate_host_available(self) -> "EcosystemInstallReceipt": + if self.integration_mode != "native" and not self.host.available: + raise ValueError("external install receipt requires an available native host") + return self + + +class BridgeCommitResult(PluginContractModel): + result_format: Literal["ksadk.bridge-commit-result/v1"] = "ksadk.bridge-commit-result/v1" + receipt: EcosystemInstallReceipt + + +class BridgeReconcileRequest(PluginContractModel): + request_format: Literal["ksadk.bridge-reconcile/v1"] = "ksadk.bridge-reconcile/v1" + receipt_id: str = Field(min_length=1, max_length=256) + native_receipt_ref: str = Field(min_length=4, max_length=2048) + native_receipt_digest: str + + @field_validator("native_receipt_ref") + @classmethod + def validate_native_receipt_ref(cls, value: str) -> str: + return _validate_ref(value, field="nativeReceiptRef") + + @field_validator("native_receipt_digest") + @classmethod + def validate_native_receipt_digest(cls, value: str) -> str: + return _validate_digest(value) + + +class EcosystemPluginInventory(PluginContractModel): + inventory_format: Literal["ksadk.ecosystem-inventory/v1"] = "ksadk.ecosystem-inventory/v1" + receipt_id: str = Field(min_length=1, max_length=256) + ecosystem: PluginEcosystem + plugin_id: str = Field(min_length=2, max_length=256) + plugin_version: str + integration_mode: PluginIntegrationMode + desired_state: PluginDesiredState + observed_state: PluginObservedState + maturity: PluginSupportMaturity + bridge_id: str = Field(min_length=3, max_length=128) + bridge_version: str + bridge_digest: str + host: BridgeHostObservation | None + artifact_digest: str + manifest_digest: str + native_receipt_ref: str = Field(min_length=4, max_length=2048) + native_receipt_digest: str + bound_references: tuple[str, ...] = () + reason_code: str | None = Field(default=None, max_length=128) + reconciled_at: AwareDatetime + + @field_validator("plugin_id", "bridge_id") + @classmethod + def validate_inventory_ids(cls, value: str) -> str: + return _validate_id(value, field="inventory id") + + @field_validator("plugin_version", "bridge_version") + @classmethod + def validate_inventory_versions(cls, value: str) -> str: + return _validate_semver(value, field="inventory version") + + @field_validator("bridge_digest", "artifact_digest", "manifest_digest", "native_receipt_digest") + @classmethod + def validate_inventory_digest(cls, value: str) -> str: + return _validate_digest(value) + + @field_validator("native_receipt_ref") + @classmethod + def validate_native_receipt_ref(cls, value: str) -> str: + return _validate_ref(value, field="nativeReceiptRef") + + @field_validator("bound_references") + @classmethod + def validate_bound_references(cls, value: tuple[str, ...]) -> tuple[str, ...]: + return _unique(value, field="boundReferences") + + @model_validator(mode="after") + def validate_observed_truth(self) -> "EcosystemPluginInventory": + if self.integration_mode != "native" and self.host is None: + raise ValueError("external inventory requires a host observation") + if self.host is not None and not self.host.available and self.observed_state == "ready": + raise ValueError("unavailable host cannot be reconciled as ready") + if self.observed_state in {"degraded", "failed", "rejected"} and not self.reason_code: + raise ValueError("unhealthy inventory requires reasonCode") + return self + + +class BridgeReconcileResult(PluginContractModel): + result_format: Literal["ksadk.bridge-reconcile-result/v1"] = "ksadk.bridge-reconcile-result/v1" + inventory: EcosystemPluginInventory + + +class BridgeRollbackRequest(PluginContractModel): + request_format: Literal["ksadk.bridge-rollback/v1"] = "ksadk.bridge-rollback/v1" + receipt_id: str = Field(min_length=1, max_length=256) + rollback_point_ref: str = Field(min_length=4, max_length=2048) + rollback_point_digest: str + expected_native_receipt_digest: str + + @field_validator("rollback_point_ref") + @classmethod + def validate_rollback_point_ref(cls, value: str) -> str: + return _validate_ref(value, field="rollbackPointRef") + + @field_validator("rollback_point_digest", "expected_native_receipt_digest") + @classmethod + def validate_rollback_digest(cls, value: str) -> str: + return _validate_digest(value) + + +class BridgeRollbackResult(PluginContractModel): + result_format: Literal["ksadk.bridge-rollback-result/v1"] = "ksadk.bridge-rollback-result/v1" + receipt_id: str = Field(min_length=1, max_length=256) + state: Literal["rolled-back"] + native_receipt_ref: str = Field(min_length=4, max_length=2048) + native_receipt_digest: str + rolled_back_at: AwareDatetime + + @field_validator("native_receipt_ref") + @classmethod + def validate_native_receipt_ref(cls, value: str) -> str: + return _validate_ref(value, field="nativeReceiptRef") + + @field_validator("native_receipt_digest") + @classmethod + def validate_native_receipt_digest(cls, value: str) -> str: + return _validate_digest(value) + + +class BridgeDisposeRequest(PluginContractModel): + request_format: Literal["ksadk.bridge-dispose/v1"] = "ksadk.bridge-dispose/v1" + receipt_id: str = Field(min_length=1, max_length=256) + native_receipt_ref: str = Field(min_length=4, max_length=2048) + native_receipt_digest: str + + @field_validator("native_receipt_ref") + @classmethod + def validate_native_receipt_ref(cls, value: str) -> str: + return _validate_ref(value, field="nativeReceiptRef") + + @field_validator("native_receipt_digest") + @classmethod + def validate_native_receipt_digest(cls, value: str) -> str: + return _validate_digest(value) + + +class BridgeDisposeResult(PluginContractModel): + result_format: Literal["ksadk.bridge-dispose-result/v1"] = "ksadk.bridge-dispose-result/v1" + receipt_id: str = Field(min_length=1, max_length=256) + state: Literal["disposed"] + native_receipt_ref: str = Field(min_length=4, max_length=2048) + native_receipt_digest: str + disposed_at: AwareDatetime + + @field_validator("native_receipt_ref") + @classmethod + def validate_native_receipt_ref(cls, value: str) -> str: + return _validate_ref(value, field="nativeReceiptRef") + + @field_validator("native_receipt_digest") + @classmethod + def validate_native_receipt_digest(cls, value: str) -> str: + return _validate_digest(value) + + +class PluginEcosystemBridgeTranscript(PluginContractModel): + fixture_kind: Literal["lifecycle"] = "lifecycle" + contract_format: Literal["ksadk.plugin-ecosystem-bridge/v1"] = ( + "ksadk.plugin-ecosystem-bridge/v1" + ) + describe_request: BridgeDescribeRequest + describe_result: BridgeDescribeResult + probe: BridgeProbeExchange + inspect_request: BridgeInspectRequest + inspect_result: BridgeInspectResult + plan_request: BridgePlanRequest + plan_result: BridgePlanResult + stage_request: BridgeStageRequest + stage_result: BridgeStageResult + commit_request: BridgeCommitRequest + commit_result: BridgeCommitResult + reconcile_request: BridgeReconcileRequest + reconcile_result: BridgeReconcileResult + rollback_request: BridgeRollbackRequest + rollback_result: BridgeRollbackResult + dispose_request: BridgeDisposeRequest + dispose_result: BridgeDisposeResult + + @model_validator(mode="after") + def validate_traceability(self) -> "PluginEcosystemBridgeTranscript": + bridge = self.describe_result.descriptor + descriptor = self.inspect_result.descriptor + if descriptor is None: + raise ValueError("lifecycle transcript requires an accepted inspection") + plan = self.plan_result.plan + receipt = self.commit_result.receipt + inventory = self.reconcile_result.inventory + if self.describe_request.ecosystem != bridge.ecosystem: + raise ValueError("describe result ecosystem does not match request") + if descriptor.ecosystem != bridge.ecosystem or plan.ecosystem != bridge.ecosystem: + raise ValueError("ecosystem identity must be preserved through planning") + if self.plan_request.descriptor != descriptor: + raise ValueError("plan request must preserve the inspected plugin descriptor") + if (plan.bridge_id, plan.bridge_version, plan.bridge_digest) != ( + bridge.bridge_id, + bridge.bridge_version, + bridge.bridge_digest, + ): + raise ValueError("transition plan must pin the described bridge identity") + if descriptor.host_requirement != bridge.host_requirement: + raise ValueError("plugin descriptor must preserve the bridge host requirement") + if plan.host_requirement != bridge.host_requirement: + raise ValueError("transition plan must preserve the bridge host requirement") + if ( + plan.permissions_declared != descriptor.permissions_declared + or plan.undeclared_permissions_accepted + != self.plan_request.accept_undeclared_permissions + ): + raise ValueError("transition plan must preserve permission disclosure and acceptance") + if ( + plan.plugin_id, + plan.plugin_version, + plan.integration_mode, + plan.desired_state, + plan.bound_references, + ) != ( + descriptor.plugin_id, + descriptor.plugin_version, + descriptor.integration_mode, + self.plan_request.desired_state, + self.plan_request.bound_references, + ): + raise ValueError("transition plan must preserve plugin identity and desired state") + expected_digests = ( + descriptor.artifact_digest, + descriptor.manifest_digest, + ) + observed_digest_pairs = ( + (plan.artifact_digest, plan.manifest_digest), + (self.stage_result.artifact_digest, self.stage_result.manifest_digest), + (receipt.artifact_digest, receipt.manifest_digest), + (inventory.artifact_digest, inventory.manifest_digest), + ) + if any(pair != expected_digests for pair in observed_digest_pairs): + raise ValueError("artifact and manifest digests must remain traceable") + if ( + self.stage_result.plan_id != plan.plan_id + or self.stage_result.plan_digest != plan.plan_digest + ): + raise ValueError("stage result must trace to the immutable transition plan") + if self.commit_request.stage_id != self.stage_result.stage_id: + raise ValueError("commit request must trace to the staged transition") + if receipt.plan_id != plan.plan_id or receipt.stage_id != self.stage_result.stage_id: + raise ValueError("install receipt must trace to plan and stage") + if self.reconcile_request.receipt_id != receipt.receipt_id: + raise ValueError("reconcile request must trace to the install receipt") + if inventory.receipt_id != receipt.receipt_id: + raise ValueError("inventory must trace to the install receipt") + host_observations = (self.stage_result.host, receipt.host, inventory.host) + if inventory.host is None or any( + item != self.stage_result.host for item in host_observations + ): + raise ValueError("native host version, protocol, and digest must remain traceable") + if self.rollback_request.receipt_id != receipt.receipt_id: + raise ValueError("rollback request must trace to the install receipt") + if self.dispose_request.receipt_id != receipt.receipt_id: + raise ValueError("dispose request must trace to the install receipt") + native_digests = { + receipt.native_receipt_digest, + self.reconcile_request.native_receipt_digest, + inventory.native_receipt_digest, + self.rollback_request.expected_native_receipt_digest, + } + if len(native_digests) != 1: + raise ValueError("native host receipt digest must remain traceable") + if ( + self.dispose_request.native_receipt_ref != self.rollback_result.native_receipt_ref + or self.dispose_request.native_receipt_digest + != self.rollback_result.native_receipt_digest + ): + raise ValueError("dispose request must consume the rollback receipt") + if ( + self.dispose_result.native_receipt_ref != self.dispose_request.native_receipt_ref + or self.dispose_result.native_receipt_digest + != self.dispose_request.native_receipt_digest + ): + raise ValueError("dispose result must preserve the disposed native receipt") + return self + + +BridgeFixturePayload = Annotated[ + PluginEcosystemBridgeTranscript | BridgeProbeExchange | BridgeInspectExchange, + Field(discriminator="fixture_kind"), +] + + +class PluginEcosystemBridgeFixture(RootModel[BridgeFixturePayload]): + """Schema root shared by lifecycle, ambiguous-manifest and rejection goldens.""" + + model_config = ConfigDict(frozen=True) + + +def ecosystem_bridge_json_schema() -> dict[str, object]: + """Return the canonical JSON Schema for all v1 bridge conformance fixtures.""" + + schema = cast(dict[str, object], PluginEcosystemBridgeFixture.model_json_schema(by_alias=True)) + schema["$schema"] = "https://json-schema.org/draft/2020-12/schema" + schema["$id"] = "https://ksadk.local/contracts/plugin/v1/plugin-ecosystem-bridge.schema.json" + schema["title"] = "PluginEcosystemBridge/v1 conformance fixtures" + return schema + + +@runtime_checkable +class PluginEcosystemBridge(Protocol): + """Execution-neutral bridge SPI; implementations live outside this contract.""" + + async def describe(self, request: BridgeDescribeRequest) -> BridgeDescribeResult: ... + + async def probe(self, request: BridgeProbeRequest) -> BridgeProbeResult: ... + + async def inspect(self, request: BridgeInspectRequest) -> BridgeInspectResult: ... + + async def plan(self, request: BridgePlanRequest) -> BridgePlanResult: ... + + async def stage(self, request: BridgeStageRequest) -> BridgeStageResult: ... + + async def commit(self, request: BridgeCommitRequest) -> BridgeCommitResult: ... + + async def reconcile(self, request: BridgeReconcileRequest) -> BridgeReconcileResult: ... + + async def rollback(self, request: BridgeRollbackRequest) -> BridgeRollbackResult: ... + + async def dispose(self, request: BridgeDisposeRequest) -> BridgeDisposeResult: ... + + +__all__ = [ + "BridgeAction", + "BridgeCommitRequest", + "BridgeCommitResult", + "BridgeDescribeRequest", + "BridgeDescribeResult", + "BridgeDescriptor", + "BridgeDisposeRequest", + "BridgeDisposeResult", + "BridgeHostObservation", + "BridgeHostRequirement", + "BridgeInspectExchange", + "BridgeInspectRequest", + "BridgeInspectResult", + "BridgePlanRequest", + "BridgePlanResult", + "BridgeProbeExchange", + "BridgeProbeRequest", + "BridgeProbeResult", + "BridgeReconcileRequest", + "BridgeReconcileResult", + "BridgeRejection", + "BridgeRollbackRequest", + "BridgeRollbackResult", + "BridgeStageRequest", + "BridgeStageResult", + "BridgeTransitionPlan", + "EcosystemInstallReceipt", + "EcosystemPluginDescriptor", + "EcosystemPluginInventory", + "PluginDesiredState", + "PluginEcosystem", + "PluginEcosystemBridge", + "PluginEcosystemBridgeFixture", + "PluginEcosystemBridgeTranscript", + "PluginIntegrationMode", + "PluginManifestCandidate", + "PluginObservedState", + "PluginSupportMaturity", + "ecosystem_bridge_json_schema", +] diff --git a/ksadk/plugins/ecosystem_probe.py b/ksadk/plugins/ecosystem_probe.py new file mode 100644 index 00000000..58dc403d --- /dev/null +++ b/ksadk/plugins/ecosystem_probe.py @@ -0,0 +1,191 @@ +"""Read-only detection for supported plugin ecosystem manifests. + +Detection examines only fixed manifest paths. It never walks or imports a +package, executes install scripts, or parses DSH Cordis YAML (which may contain +JavaScript tags). A directory with more than one ecosystem manifest remains +ambiguous until the caller selects an exact manifest reference. +""" + +from __future__ import annotations + +import hashlib +import json +from pathlib import Path +from typing import Any + +from ksadk.plugins.ecosystem_bridge import ( + BridgeProbeExchange, + BridgeProbeRequest, + BridgeProbeResult, + BridgeRejection, + PluginManifestCandidate, +) + +_MAX_MANIFEST_BYTES = 1024 * 1024 + + +class EcosystemProbeError(ValueError): + """A fixed manifest exists but cannot be inspected safely.""" + + +def _read_manifest(path: Path, *, root: Path) -> bytes: + try: + relative = path.relative_to(root) + except ValueError as exc: + raise EcosystemProbeError("plugin manifest escaped the source root") from exc + cursor = root + for part in relative.parts: + cursor /= part + if cursor.is_symlink(): + raise EcosystemProbeError( + f"plugin manifest path must not contain symlinks: {relative.as_posix()}" + ) + if path.is_symlink(): + raise EcosystemProbeError(f"plugin manifest must not be a symlink: {path.name}") + try: + stat = path.stat() + except OSError as exc: + raise EcosystemProbeError(f"plugin manifest cannot be inspected: {path.name}") from exc + if not path.is_file(): + raise EcosystemProbeError(f"plugin manifest is not a regular file: {path.name}") + if stat.st_size > _MAX_MANIFEST_BYTES: + raise EcosystemProbeError( + f"plugin manifest exceeds {_MAX_MANIFEST_BYTES} bytes: {path.name}" + ) + try: + return path.read_bytes() + except OSError as exc: + raise EcosystemProbeError(f"plugin manifest cannot be read: {path.name}") from exc + + +def _json_object(raw: bytes, *, name: str) -> dict[str, Any]: + try: + value = json.loads(raw) + except (UnicodeDecodeError, json.JSONDecodeError) as exc: + raise EcosystemProbeError(f"{name} must contain valid UTF-8 JSON") from exc + if not isinstance(value, dict): + raise EcosystemProbeError(f"{name} must contain one JSON object") + return value + + +def _digest(raw: bytes) -> str: + return "sha256:" + hashlib.sha256(raw).hexdigest() + + +def _candidate( + *, + ecosystem: str, + integration_mode: str, + maturity: str, + manifest_kind: str, + path: Path, + raw: bytes, +) -> PluginManifestCandidate: + return PluginManifestCandidate.model_validate( + { + "ecosystem": ecosystem, + "integrationMode": integration_mode, + "maturity": maturity, + "manifestKind": manifest_kind, + "manifestRef": path.resolve().as_uri(), + "manifestDigest": _digest(raw), + } + ) + + +def probe_ecosystem_manifests( + root: Path, + *, + selected_manifest_ref: str | None = None, +) -> BridgeProbeExchange: + """Detect the two supported Codex/DSH manifest formats without executing them.""" + + if root.is_symlink(): + raise EcosystemProbeError("plugin source root must not be a symlink") + if not root.is_dir(): + raise EcosystemProbeError("plugin source root must be an existing directory") + root = root.resolve() + candidates: list[PluginManifestCandidate] = [] + source_parts: list[tuple[str, bytes]] = [] + + codex_path = root / ".codex-plugin" / "plugin.json" + if codex_path.exists(): + raw = _read_manifest(codex_path, root=root) + payload = _json_object(raw, name=".codex-plugin/plugin.json") + if not isinstance(payload.get("name"), str) or not payload["name"]: + raise EcosystemProbeError("Codex plugin manifest requires a non-empty name") + candidates.append( + _candidate( + ecosystem="codex", + integration_mode="bridged", + maturity="detected", + manifest_kind="codex-plugin", + path=codex_path, + raw=raw, + ) + ) + source_parts.append((".codex-plugin/plugin.json", raw)) + + package_path = root / "package.json" + if package_path.exists(): + raw = _read_manifest(package_path, root=root) + payload = _json_object(raw, name="package.json") + dsh = payload.get("dsh") + bundle = dsh.get("bundle") if isinstance(dsh, dict) else None + patch = bundle.get("patch") if isinstance(bundle, dict) else None + if isinstance(patch, str) and patch.strip(): + candidates.append( + _candidate( + ecosystem="dsh", + integration_mode="linked", + maturity="experimental", + manifest_kind="dsh-bundle", + path=package_path, + raw=raw, + ) + ) + source_parts.append(("package.json", raw)) + + source_hash = hashlib.sha256() + for relative_path, raw in sorted(source_parts): + source_hash.update(relative_path.encode("utf-8")) + source_hash.update(b"\0") + source_hash.update(raw) + source_hash.update(b"\0") + source_digest = "sha256:" + source_hash.hexdigest() + request = BridgeProbeRequest( + source_ref=root.as_uri(), + source_digest=source_digest, + selected_manifest_ref=selected_manifest_ref, + ) + + if not candidates: + result = BridgeProbeResult( + candidates=(), + selection_required=False, + rejection=BridgeRejection( + action="probe", + code="unsupported", + retryable=False, + message="No supported plugin ecosystem manifest was detected.", + ), + ) + else: + refs = {candidate.manifest_ref for candidate in candidates} + if selected_manifest_ref is not None and selected_manifest_ref not in refs: + raise EcosystemProbeError("selected manifest was not detected in the source directory") + selection_required = len(candidates) > 1 and selected_manifest_ref is None + selected = ( + None + if selection_required + else selected_manifest_ref or candidates[0].manifest_ref + ) + result = BridgeProbeResult( + candidates=tuple(candidates), + selection_required=selection_required, + selected_manifest_ref=selected, + ) + return BridgeProbeExchange(request=request, result=result) + + +__all__ = ["EcosystemProbeError", "probe_ecosystem_manifests"] diff --git a/ksadk/plugins/host.py b/ksadk/plugins/host.py new file mode 100644 index 00000000..33dcdeac --- /dev/null +++ b/ksadk/plugins/host.py @@ -0,0 +1,724 @@ +"""Transactional, side-effect-owning PluginHost foundation (P2-03A). + +The host has no knowledge of AgentControl, SessionEvent sequencing, or cloud +deployment. It only stages a fully resolved profile, atomically swaps it once +healthy, and disposes owned effects in reverse dependency order. +""" +from __future__ import annotations + +import asyncio +from collections.abc import Coroutine, Mapping +from dataclasses import dataclass +from typing import Any, Protocol, runtime_checkable +from uuid import uuid4 + +from ksadk.plugins.bundle import ResolvedPluginBundle +from ksadk.plugins.contracts import ( + CompositionProfile, + PluginInventory, + PluginInventoryItem, + PluginLockEntry, + PluginManifest, +) +from ksadk.plugins.resolver import ( + PluginRegistry, + PluginResolutionError, + ResolvedComposition, +) + + +class PluginHostError(RuntimeError): + """Stable reject/failure from PluginHost profile transactions.""" + + def __init__(self, code: str, message: str) -> None: + super().__init__(message) + self.code = code + + +@runtime_checkable +class ManagedPlugin(Protocol): + """Effects owned by one staged plugin instance.""" + + async def start(self) -> None: ... + + async def health(self) -> bool: ... + + async def drain(self) -> None: ... + + async def dispose(self) -> None: ... + + +@runtime_checkable +class PluginFactory(Protocol): + """Factory seam; `stage` must not expose partially started effects.""" + + async def stage( + self, + manifest: PluginManifest, + *, + profile: CompositionProfile, + services: Mapping[str, Any], + ) -> ManagedPlugin: ... + + +@dataclass(frozen=True) +class PluginCapabilityBinding: + """One locked capability and the active runtime that owns it.""" + + plugin_id: str + plugin_version: str + definition: str + slot: str + runtime: ManagedPlugin + + +@dataclass(frozen=True) +class PluginExecutionContext: + """Read-only capability view passed to the active AgentProvider.""" + + profile_digest: str + plugin_lock_digest: str + bindings: tuple[PluginCapabilityBinding, ...] + + def all( + self, + definition: str, + *, + slot: str | None = None, + ) -> tuple[PluginCapabilityBinding, ...]: + return tuple( + binding + for binding in self.bindings + if binding.definition == definition + and (slot is None or binding.slot == slot) + ) + + def require( + self, + definition: str, + *, + slot: str | None = None, + ) -> PluginCapabilityBinding: + matches = self.all(definition, slot=slot) + if not matches: + suffix = f" in slot {slot!r}" if slot is not None else "" + raise PluginHostError( + "plugin_capability_unavailable", + f"active profile does not provide {definition!r}{suffix}", + ) + if len(matches) != 1: + raise PluginHostError( + "plugin_capability_ambiguous", + f"active profile provides more than one {definition!r}; select a slot", + ) + return matches[0] + + +@runtime_checkable +class PreparedAgent(ManagedPlugin, Protocol): + """One provider-owned activation prepared from an immutable Bundle.""" + + async def execute(self, request: Any) -> Any: ... + + +@runtime_checkable +class ExecutableAgentProvider(ManagedPlugin, Protocol): + """AgentProvider execution seam used by the first PluginHost vertical. + + ``prepare`` must either return an unstarted activation or clean up all of + its own partial effects before raising. PluginHost owns start, health, + drain, and dispose for every returned activation. + """ + + async def prepare( + self, + bundle: ResolvedPluginBundle, + *, + capabilities: PluginExecutionContext, + ) -> PreparedAgent: ... + + +@dataclass(frozen=True) +class _ActivePlugin: + entry: PluginLockEntry + runtime: ManagedPlugin + + +@dataclass(frozen=True) +class _ActiveGraph: + resolved: ResolvedComposition + plugins: tuple[_ActivePlugin, ...] + + +@dataclass +class _ActiveActivation: + key: str + graph: _ActiveGraph + bundle_digest: str + runtime: PreparedAgent + operation_lock: asyncio.Lock + closed: bool = False + + +class PluginActivationSession: + """Provider-owned activation retained across turns for one session. + + The handle is deliberately small: PluginHost still owns lifecycle and + profile fencing, while the provider owns any native thread/checkpoint state + inside ``PreparedAgent``. Calls are serialized per activation because a + conversational session is an ordered command stream. + """ + + def __init__(self, host: "PluginHost", active: _ActiveActivation) -> None: + self._host = host + self._active = active + + @property + def key(self) -> str: + return self._active.key + + @property + def bundle_digest(self) -> str: + return self._active.bundle_digest + + @property + def closed(self) -> bool: + return self._active.closed + + async def execute(self, request: Any) -> Any: + return await self._host._execute_activation(self._active, request) + + async def runtime_adapter(self) -> Any: + """Return an optional provider-owned RuntimeAdapter for AgentKernel. + + ``execute`` remains the minimum cross-provider ABI. Providers that + need durable AgentControl/SessionEvent ownership (for example local + Scheduler Lite) may expose this additive seam. PluginHost retains the + activation/profile fence; unsupported providers fail explicitly. + """ + + return await self._host._runtime_adapter_activation(self._active) + + async def close(self) -> None: + await self._host.close_activation(self._active.key, expected=self._active) + + +class PluginHost: + """Apply resolved profiles without tearing down a healthy old graph first.""" + + def __init__( + self, + registry: PluginRegistry, + factories: Mapping[str, PluginFactory], + *, + allowed_permissions: frozenset[str] = frozenset(), + services: Mapping[str, Any] | None = None, + ) -> None: + self._registry = registry + self._factories = dict(factories) + self._allowed_permissions = frozenset(allowed_permissions) + self._services = dict(services or {}) + self._transaction_lock = asyncio.Lock() + self._active: _ActiveGraph | None = None + # A profile switch moves default admission atomically, while already + # prepared conversations may hold provider-native thread/checkpoint + # state. Retired graphs are reclaimed only after their last session + # activation closes. + self._retired: list[_ActiveGraph] = [] + self._activations: dict[str, _ActiveActivation] = {} + self._last_failure: PluginHostError | None = None + + async def apply(self, profile: CompositionProfile) -> PluginInventory: + """Resolve, admit, stage, health-check, then atomically switch profile. + + Any resolve/admission/stage/health error leaves the current graph + untouched. Staged effects from the failed candidate are drained and + disposed before the error is returned. + """ + + async with self._transaction_lock: + resolved = self.preflight(profile) + if self._active and ( + self._active.resolved.profile_digest == resolved.profile_digest + and self._active.resolved.plugin_lock_digest == resolved.plugin_lock_digest + ): + return self._inventory_for(self._active) + + ordered_entries = _dependency_order(resolved.plugin_lock.plugins) + staged: list[_ActivePlugin] = [] + try: + for entry in ordered_entries: + manifest = self._registry.manifest_for(entry.id, entry.version) + factory = self._factories[entry.id] + runtime = await factory.stage( + manifest, + profile=resolved.profile, + services=self._services, + ) + staged.append(_ActivePlugin(entry=entry, runtime=runtime)) + for plugin in staged: + await plugin.runtime.start() + if not await plugin.runtime.health(): + raise PluginHostError( + "plugin_health_failed", + f"plugin {plugin.entry.id}@{plugin.entry.version} failed health check", + ) + except asyncio.CancelledError: + await self._finish_cleanup(self._dispose_staged(staged)) + raise + except PluginHostError as error: + await self._finish_cleanup(self._dispose_staged(staged)) + self._last_failure = error + raise + except Exception as error: # noqa: BLE001 - boundary adapts plugins + await self._finish_cleanup(self._dispose_staged(staged)) + failure = PluginHostError("plugin_stage_failed", str(error)) + self._last_failure = failure + raise failure from error + + candidate = _ActiveGraph(resolved=resolved, plugins=tuple(staged)) + previous = self._active + # This single assignment is the profile switch. It only happens + # after every staged effect has passed health, preserving the old + # graph on all earlier failures. + self._active = candidate + self._last_failure = None + if previous is not None: + self._retired.append(previous) + await self._finish_cleanup(self._dispose_unpinned_retired_graphs()) + return self._inventory_for(candidate) + + def preflight(self, profile: CompositionProfile) -> ResolvedComposition: + """Resolve and admit a profile without importing or starting a plugin.""" + + try: + resolved = self._registry.resolve(profile) + except PluginResolutionError as error: + failure = PluginHostError(error.code, str(error)) + self._last_failure = failure + raise failure from error + entries = _dependency_order(resolved.plugin_lock.plugins) + self._admit(entries) + for entry in entries: + if entry.id not in self._factories: + failure = PluginHostError( + "plugin_factory_unavailable", + f"no factory is registered for {entry.id}@{entry.version}", + ) + self._last_failure = failure + raise failure + return resolved + + def inventory(self) -> PluginInventory | None: + """Return only the currently active profile inventory, if any.""" + + if self._active is None: + return None + return self._inventory_for(self._active) + + @property + def activation_count(self) -> int: + """Number of live provider-owned activations (diagnostic only).""" + + return sum(not active.closed for active in self._activations.values()) + + async def execute(self, bundle: ResolvedPluginBundle, request: Any) -> Any: + """Execute one disposable activation (compatibility convenience API).""" + + session = await self.open_activation( + bundle, + activation_key=f"one-shot:{uuid4().hex}", + ) + try: + return await session.execute(request) + finally: + await session.close() + + async def open_activation( + self, + bundle: ResolvedPluginBundle, + *, + activation_key: str, + ) -> PluginActivationSession: + """Open or reuse one profile-fenced, provider-owned activation. + + Reuse is permitted for the exact graph and immutable Bundle digest. A + profile switch retires its old graph for new sessions, but an existing + session key remains pinned to that graph until it closes. + """ + + key = str(activation_key).strip() + if not key or len(key) > 512: + raise PluginHostError( + "agent_activation_key_invalid", + "activation_key must be a non-empty value of at most 512 characters", + ) + async with self._transaction_lock: + existing = self._activations.get(key) + if existing is not None: + if ( + not existing.closed + and existing.bundle_digest == bundle.bundle_digest + and self._bundle_matches_graph(bundle, existing.graph) + ): + # This activation may belong to a retired graph: it was + # pinned before a newer profile became active. + return PluginActivationSession(self, existing) + await self._close_activation_record(existing) + if self._activations.get(key) is existing: + self._activations.pop(key, None) + await self._finish_cleanup(self._dispose_unpinned_retired_graphs()) + + graph = self._require_bundle_graph(bundle) + runtime = await self._prepare_activation(graph, bundle) + active = _ActiveActivation( + key=key, + graph=graph, + bundle_digest=bundle.bundle_digest, + runtime=runtime, + operation_lock=asyncio.Lock(), + ) + self._activations[key] = active + return PluginActivationSession(self, active) + + async def close_activation( + self, + activation_key: str, + *, + expected: _ActiveActivation | None = None, + ) -> None: + """Drain and dispose a retained activation if it is still current.""" + + async with self._transaction_lock: + active = self._activations.get(activation_key) + if active is None or (expected is not None and active is not expected): + return + await self._close_activation_record(active) + if self._activations.get(activation_key) is active: + self._activations.pop(activation_key, None) + await self._finish_cleanup(self._dispose_unpinned_retired_graphs()) + + @property + def last_failure(self) -> PluginHostError | None: + return self._last_failure + + async def dispose(self) -> None: + """Drain and dispose active plus retired graphs; there is no implicit restart.""" + + async with self._transaction_lock: + graphs = [ + graph + for graph in [self._active, *self._retired] + if graph is not None + ] + self._active = None + self._retired = [] + if graphs: + await self._finish_cleanup(self._dispose_all_graphs(graphs)) + + @staticmethod + async def _finish_cleanup(cleanup: Coroutine[Any, Any, None]) -> None: + """Defer caller cancellation until an owned-effect cleanup finishes.""" + + cleanup_task = asyncio.create_task(cleanup) + interrupted = False + while not cleanup_task.done(): + try: + await asyncio.shield(cleanup_task) + except asyncio.CancelledError: + interrupted = True + cleanup_task.result() + if interrupted: + raise asyncio.CancelledError + + async def _dispose_graph(self, graph: _ActiveGraph) -> None: + await self._close_graph_activations(graph) + await self._dispose_staged(list(graph.plugins)) + + async def _dispose_all_graphs(self, graphs: list[_ActiveGraph]) -> None: + await self._close_all_activations() + for graph in graphs: + await self._dispose_staged(list(graph.plugins)) + + async def _dispose_unpinned_retired_graphs(self) -> None: + for graph in tuple(self._retired): + if any( + not activation.closed and activation.graph is graph + for activation in self._activations.values() + ): + continue + await self._dispose_staged(list(graph.plugins)) + self._retired.remove(graph) + + def _admit(self, entries: list[PluginLockEntry]) -> None: + for entry in entries: + manifest = self._registry.manifest_for(entry.id, entry.version) + missing = sorted(set(manifest.spec.permissions) - self._allowed_permissions) + if missing: + raise PluginHostError( + "plugin_permission_denied", + f"plugin {entry.id}@{entry.version} requests unapproved permissions: " + + ", ".join(missing), + ) + + @staticmethod + async def _dispose_staged(staged: list[_ActivePlugin]) -> None: + """Best-effort cleanup preserves the primary failure while draining all effects.""" + + for plugin in reversed(staged): + try: + await plugin.runtime.drain() + except Exception: # noqa: BLE001 - disposal must continue + pass + try: + await plugin.runtime.dispose() + except Exception: # noqa: BLE001 - disposal must continue + pass + + @staticmethod + async def _dispose_activation(activation: PreparedAgent) -> None: + """Best-effort cleanup for a prepared one-shot activation.""" + + try: + await activation.drain() + except Exception: # noqa: BLE001 - disposal must continue + pass + try: + await activation.dispose() + except Exception: # noqa: BLE001 - disposal must continue + pass + + def _require_bundle_graph(self, bundle: ResolvedPluginBundle) -> _ActiveGraph: + graph = self._active + if graph is None: + raise PluginHostError( + "plugin_profile_inactive", "no plugin profile is active" + ) + if not self._bundle_matches_graph(bundle, graph): + raise PluginHostError( + "plugin_bundle_profile_mismatch", + "Bundle composition does not match the active plugin graph", + ) + return graph + + @staticmethod + def _bundle_matches_graph(bundle: ResolvedPluginBundle, graph: _ActiveGraph) -> bool: + return ( + bundle.composition.profile_digest == graph.resolved.profile_digest + and bundle.composition.plugin_lock_digest == graph.resolved.plugin_lock_digest + ) + + async def _prepare_activation( + self, + graph: _ActiveGraph, + bundle: ResolvedPluginBundle, + ) -> PreparedAgent: + capabilities = self._execution_context(graph) + provider_binding = capabilities.require( + "agent.provider/v1", slot="agent.execution" + ) + provider = provider_binding.runtime + if not isinstance(provider, ExecutableAgentProvider): + raise PluginHostError( + "agent_provider_not_executable", + f"plugin {provider_binding.plugin_id}@" + f"{provider_binding.plugin_version} does not implement prepare", + ) + + activation: PreparedAgent | None = None + try: + try: + activation = await provider.prepare(bundle, capabilities=capabilities) + except PluginHostError: + raise + except Exception as error: # noqa: BLE001 - provider boundary + raise PluginHostError("agent_prepare_failed", str(error)) from error + if not isinstance(activation, PreparedAgent): + raise PluginHostError( + "agent_activation_invalid", + "AgentProvider.prepare returned an invalid activation", + ) + try: + await activation.start() + except Exception as error: # noqa: BLE001 - activation boundary + raise PluginHostError( + "agent_activation_start_failed", str(error) + ) from error + try: + healthy = await activation.health() + except Exception as error: # noqa: BLE001 - activation boundary + raise PluginHostError( + "agent_activation_health_failed", str(error) + ) from error + if not healthy: + raise PluginHostError( + "agent_activation_health_failed", + "prepared Agent activation failed health check", + ) + return activation + except asyncio.CancelledError: + if activation is not None: + await self._dispose_activation(activation) + raise + except PluginHostError as error: + self._last_failure = error + if activation is not None: + await self._dispose_activation(activation) + raise + + async def _execute_activation( + self, + active: _ActiveActivation, + request: Any, + ) -> Any: + async with active.operation_lock: + if active.closed: + raise PluginHostError( + "agent_activation_closed", + f"Agent activation {active.key!r} is closed", + ) + try: + result = await active.runtime.execute(request) + except asyncio.CancelledError: + await self._dispose_activation(active.runtime) + active.closed = True + raise + except PluginHostError as error: + self._last_failure = error + await self._dispose_activation(active.runtime) + active.closed = True + raise + except Exception as error: # noqa: BLE001 - provider boundary + failure = PluginHostError("agent_execution_failed", str(error)) + self._last_failure = failure + await self._dispose_activation(active.runtime) + active.closed = True + raise failure from error + self._last_failure = None + return result + + async def _runtime_adapter_activation(self, active: _ActiveActivation) -> Any: + async with active.operation_lock: + if active.closed: + raise PluginHostError( + "agent_activation_closed", + f"Agent activation {active.key!r} is closed", + ) + provide = getattr(active.runtime, "runtime_adapter", None) + if not callable(provide): + raise PluginHostError( + "agent_provider_runtime_adapter_unavailable", + "AgentProvider does not expose a Kernel RuntimeAdapter", + ) + try: + adapter = provide() + if asyncio.iscoroutine(adapter): + adapter = await adapter + except PluginHostError: + raise + except Exception as error: # noqa: BLE001 - provider boundary + raise PluginHostError( + "agent_provider_runtime_adapter_failed", str(error) + ) from error + return adapter + + async def _close_activation_record(self, active: _ActiveActivation) -> None: + async with active.operation_lock: + if active.closed: + return + await self._dispose_activation(active.runtime) + active.closed = True + + async def _close_graph_activations(self, graph: _ActiveGraph) -> None: + for key, active in tuple(self._activations.items()): + if active.graph is not graph: + continue + await self._close_activation_record(active) + if self._activations.get(key) is active: + self._activations.pop(key, None) + + async def _close_all_activations(self) -> None: + for key, active in tuple(self._activations.items()): + await self._close_activation_record(active) + if self._activations.get(key) is active: + self._activations.pop(key, None) + + @staticmethod + def _execution_context(graph: _ActiveGraph) -> PluginExecutionContext: + bindings = tuple( + PluginCapabilityBinding( + plugin_id=plugin.entry.id, + plugin_version=plugin.entry.version, + definition=capability.definition, + slot=capability.slot, + runtime=plugin.runtime, + ) + for plugin in graph.plugins + for capability in plugin.entry.provides + ) + return PluginExecutionContext( + profile_digest=graph.resolved.profile_digest, + plugin_lock_digest=graph.resolved.plugin_lock_digest, + bindings=bindings, + ) + + @staticmethod + def _inventory_for(graph: _ActiveGraph) -> PluginInventory: + return PluginInventory( + profile_digest=graph.resolved.profile_digest, + plugin_lock_digest=graph.resolved.plugin_lock_digest, + plugins=[ + PluginInventoryItem( + id=plugin.entry.id, + version=plugin.entry.version, + digest=plugin.entry.digest, + state="ready", + health="healthy", + ) + for plugin in graph.plugins + ], + ) + + +def _dependency_order(entries: list[PluginLockEntry]) -> list[PluginLockEntry]: + """Dependency-first deterministic topological order from the locked graph.""" + + by_id = {entry.id: entry for entry in entries} + visiting: set[str] = set() + visited: set[str] = set() + ordered: list[PluginLockEntry] = [] + + def visit(plugin_id: str) -> None: + if plugin_id in visiting: + raise PluginHostError("plugin_dependency_cycle", "plugin lock dependency cycle") + if plugin_id in visited: + return + entry = by_id.get(plugin_id) + if entry is None: + raise PluginHostError( + "plugin_dependency_unresolved", + f"plugin dependency {plugin_id!r} is missing from the lock", + ) + visiting.add(plugin_id) + for dependency in sorted(entry.dependencies, key=lambda item: item.id): + visit(dependency.id) + visiting.remove(plugin_id) + visited.add(plugin_id) + ordered.append(entry) + + for entry in sorted(entries, key=lambda item: item.id): + visit(entry.id) + return ordered + + +__all__ = [ + "ExecutableAgentProvider", + "ManagedPlugin", + "PluginCapabilityBinding", + "PluginActivationSession", + "PluginExecutionContext", + "PluginFactory", + "PluginHost", + "PluginHostError", + "PreparedAgent", +] diff --git a/ksadk/plugins/providers/__init__.py b/ksadk/plugins/providers/__init__.py new file mode 100644 index 00000000..7416b710 --- /dev/null +++ b/ksadk/plugins/providers/__init__.py @@ -0,0 +1,85 @@ +"""Public Provider index without eagerly starting optional runtimes. + +The catalog must remain usable in a base install. ADK-backed Harness code is +loaded only when a caller actually asks for a Harness-specific symbol. +""" + +from __future__ import annotations + +from importlib import import_module +from typing import Any + +_EXPORTS = { + "BUILTIN_PROVIDER_VERSION": ("legacy_catalog", "BUILTIN_PROVIDER_VERSION"), + "CODEX_AGENT_PROVIDER_PLUGIN_ID": ("legacy_catalog", "CODEX_AGENT_PROVIDER_PLUGIN_ID"), + "KSADK_HARNESS_AGENT_PROVIDER_PLUGIN_ID": ( + "legacy_catalog", + "KSADK_HARNESS_AGENT_PROVIDER_PLUGIN_ID", + ), + "builtin_agent_provider_manifests": ("legacy_catalog", "builtin_agent_provider_manifests"), + "legacy_harness_agent_provider_manifest": ( + "legacy_catalog", + "legacy_harness_agent_provider_manifest", + ), + "CodexAgentProviderFactory": ("codex", "CodexAgentProviderFactory"), + "CodexAgentProviderRuntime": ("codex", "CodexAgentProviderRuntime"), + "CodexProviderInventory": ("codex", "CodexProviderInventory"), + "CodexTurnRequest": ("codex", "CodexTurnRequest"), + "CodexTurnResult": ("codex", "CodexTurnResult"), + "SHIPPED_CODEX_DSH_PACKAGE": ("codex_dsh", "SHIPPED_CODEX_DSH_PACKAGE"), + "SHIPPED_CODEX_PROVIDER_ID": ("codex_dsh", "SHIPPED_CODEX_PROVIDER_ID"), + "SHIPPED_CODEX_PROVIDER_VERSION": ("codex_dsh", "SHIPPED_CODEX_PROVIDER_VERSION"), + "KsADKCodexDshBridgeFactory": ("codex_dsh", "KsADKCodexDshBridgeFactory"), + "KsADKCodexDshBridgeRuntime": ("codex_dsh", "KsADKCodexDshBridgeRuntime"), + "ShippedCodexDshBundle": ("codex_dsh", "ShippedCodexDshBundle"), + "shipped_codex_dsh_bundle": ("codex_dsh", "shipped_codex_dsh_bundle"), + "shipped_codex_dsh_host_command": ("codex_dsh", "shipped_codex_dsh_host_command"), + "DSH_AGENT_PROVIDER_HOST_METHODS": ("dsh", "DSH_AGENT_PROVIDER_HOST_METHODS"), + "DSH_AGENT_PROVIDER_HOST_PROTOCOL": ("dsh", "DSH_AGENT_PROVIDER_HOST_PROTOCOL"), + "DSH_HOST_USER_PERMISSION": ("dsh", "DSH_HOST_USER_PERMISSION"), + "DshAgentProviderDescriptor": ("dsh", "DshAgentProviderDescriptor"), + "DshAgentProviderFactory": ("dsh", "DshAgentProviderFactory"), + "DshAgentProviderHost": ("dsh", "DshAgentProviderHost"), + "DshAgentProviderInventory": ("dsh", "DshAgentProviderInventory"), + "DshAgentProviderPreflight": ("dsh", "DshAgentProviderPreflight"), + "DshAgentProviderRegistration": ("dsh", "DshAgentProviderRegistration"), + "DshAgentProviderRuntime": ("dsh", "DshAgentProviderRuntime"), + "DshPreparedAgent": ("dsh", "DshPreparedAgent"), + "dsh_agent_provider_manifest": ("dsh", "dsh_agent_provider_manifest"), + "HarnessContextSource": ("harness", "HarnessContextSource"), + "HarnessMCPSource": ("harness", "HarnessMCPSource"), + "HarnessProviderInventory": ("harness", "HarnessProviderInventory"), + "HarnessSkillContribution": ("harness", "HarnessSkillContribution"), + "HarnessSkillSource": ("harness", "HarnessSkillSource"), + "HarnessTurnRequest": ("harness", "HarnessTurnRequest"), + "HarnessTurnResult": ("harness", "HarnessTurnResult"), + "KsADKHarnessProviderFactory": ("harness", "KsADKHarnessProviderFactory"), + "KsADKHarnessProviderRuntime": ("harness", "KsADKHarnessProviderRuntime"), + "SHIPPED_HARNESS_DSH_PACKAGE": ("harness_dsh", "SHIPPED_HARNESS_DSH_PACKAGE"), + "KsADKHarnessDshBridgeFactory": ("harness_dsh", "KsADKHarnessDshBridgeFactory"), + "KsADKHarnessDshBridgeRuntime": ("harness_dsh", "KsADKHarnessDshBridgeRuntime"), + "ShippedHarnessDshBundle": ("harness_dsh", "ShippedHarnessDshBundle"), + "shipped_harness_dsh_bundle": ("harness_dsh", "shipped_harness_dsh_bundle"), + "shipped_harness_dsh_host_command": ("harness_dsh", "shipped_harness_dsh_host_command"), + "HarnessProviderSelection": ("legacy", "HarnessProviderSelection"), + "LegacyBundleAdapter": ("legacy", "LegacyBundleAdapter"), + "LegacyBundleCompatibilityError": ("legacy", "LegacyBundleCompatibilityError"), + "LegacyHarnessSource": ("legacy", "LegacyHarnessSource"), +} + +__all__ = list(_EXPORTS) + + +def __getattr__(name: str) -> Any: + try: + relative_module, attribute = _EXPORTS[name] + except KeyError: + raise AttributeError(f"module {__name__!r} has no attribute {name!r}") from None + module = import_module(f"{__name__}.{relative_module}") + value = getattr(module, attribute) + globals()[name] = value + return value + + +def __dir__() -> list[str]: + return sorted({*globals(), *__all__}) diff --git a/ksadk/plugins/providers/bundles/ksadk-codex/cordis.patch.yml b/ksadk/plugins/providers/bundles/ksadk-codex/cordis.patch.yml new file mode 100644 index 00000000..b24e9d05 --- /dev/null +++ b/ksadk/plugins/providers/bundles/ksadk-codex/cordis.patch.yml @@ -0,0 +1,3 @@ +- insert: + - id: ksadk-codex-provider + name: '@kingsoftcloud/ksadk-codex-provider' diff --git a/ksadk/plugins/providers/bundles/ksadk-codex/index.mjs b/ksadk/plugins/providers/bundles/ksadk-codex/index.mjs new file mode 100644 index 00000000..596839b8 --- /dev/null +++ b/ksadk/plugins/providers/bundles/ksadk-codex/index.mjs @@ -0,0 +1,18 @@ +const contribution = Object.freeze({ + ecosystem: 'dsh', + definition: 'agent.provider/v1', + slot: 'agent.execution', + providerId: 'io.ksadk.codex-provider', + providerVersion: '1.0.0', + displayName: 'Codex', + runtimeProtocols: Object.freeze(['agentkit.runtime/v1']), +}) + +export const name = 'ksadk-codex-provider' + +export function apply(ctx) { + // DSH owns package/Profile lifecycle. The fixed KsADK bridge retains the + // existing Codex App Server backend and never executes package supplied argv. + ctx.provide('ksadkAgentProvider', contribution) + ctx.effect(() => () => {}) +} diff --git a/ksadk/plugins/providers/bundles/ksadk-codex/package.json b/ksadk/plugins/providers/bundles/ksadk-codex/package.json new file mode 100644 index 00000000..1e365b8b --- /dev/null +++ b/ksadk/plugins/providers/bundles/ksadk-codex/package.json @@ -0,0 +1,19 @@ +{ + "name": "@kingsoftcloud/ksadk-codex-provider", + "version": "1.0.0", + "description": "Official Codex AgentProvider for DeepSeek Harness profiles", + "type": "module", + "exports": { + ".": "./index.mjs", + "./cordis.patch.yml": "./cordis.patch.yml" + }, + "files": [ + "index.mjs", + "cordis.patch.yml" + ], + "dsh": { + "bundle": { + "patch": "./cordis.patch.yml" + } + } +} diff --git a/ksadk/plugins/providers/bundles/ksadk-harness/cordis.patch.yml b/ksadk/plugins/providers/bundles/ksadk-harness/cordis.patch.yml new file mode 100644 index 00000000..6e97feff --- /dev/null +++ b/ksadk/plugins/providers/bundles/ksadk-harness/cordis.patch.yml @@ -0,0 +1,3 @@ +- insert: + - id: ksadk-harness-provider + name: '@kingsoftcloud/ksadk-harness-provider' diff --git a/ksadk/plugins/providers/bundles/ksadk-harness/index.mjs b/ksadk/plugins/providers/bundles/ksadk-harness/index.mjs new file mode 100644 index 00000000..592fdb66 --- /dev/null +++ b/ksadk/plugins/providers/bundles/ksadk-harness/index.mjs @@ -0,0 +1,19 @@ +const contribution = Object.freeze({ + ecosystem: 'dsh', + definition: 'agent.provider/v1', + slot: 'agent.execution', + providerId: 'io.ksadk.harness-provider', + providerVersion: '1.0.0', + displayName: 'KsADK Harness', + runtimeProtocols: Object.freeze(['agentkit.runtime/v1']), +}) + +export const name = 'ksadk-harness-provider' + +export function apply(ctx) { + // The DSH Profile owns discovery and lifecycle. KsADK consumes this + // contribution through its frozen provider-host bridge; the existing + // RuntimeAdapter remains the execution backend during migration. + ctx.provide('ksadkAgentProvider', contribution) + ctx.effect(() => () => {}) +} diff --git a/ksadk/plugins/providers/bundles/ksadk-harness/package.json b/ksadk/plugins/providers/bundles/ksadk-harness/package.json new file mode 100644 index 00000000..d05bba7e --- /dev/null +++ b/ksadk/plugins/providers/bundles/ksadk-harness/package.json @@ -0,0 +1,19 @@ +{ + "name": "@kingsoftcloud/ksadk-harness-provider", + "version": "1.0.0", + "description": "KsADK Harness AgentProvider for DeepSeek Harness profiles", + "type": "module", + "exports": { + ".": "./index.mjs", + "./cordis.patch.yml": "./cordis.patch.yml" + }, + "files": [ + "index.mjs", + "cordis.patch.yml" + ], + "dsh": { + "bundle": { + "patch": "./cordis.patch.yml" + } + } +} diff --git a/ksadk/plugins/providers/codex.py b/ksadk/plugins/providers/codex.py new file mode 100644 index 00000000..c692cfa1 --- /dev/null +++ b/ksadk/plugins/providers/codex.py @@ -0,0 +1,722 @@ +"""Runtime-native Codex AgentProvider for the controlled PluginHost. + +The provider only projects an immutable AgentBundle into the existing Codex +RuntimeAdapter/RuntimeExecutor conversation path. Canonical SessionEvents and +native thread continuation remain owned by that path; no provider-local event +stream or transcript is created here. +""" + +from __future__ import annotations + +import json +from collections.abc import Callable, Mapping, Sequence +from dataclasses import dataclass +from pathlib import Path, PurePosixPath +from typing import Any + +from ksadk.plugins.bundle import ResolvedPluginBundle +from ksadk.plugins.contracts import CompositionProfile, PluginManifest +from ksadk.plugins.host import PluginExecutionContext, PluginHostError +from ksadk.runtime import ( + RuntimeExecutor, + RuntimeLaunchContext, + RuntimeServices, + build_default_runtime_registry, +) +from ksadk.runtime.conversation_execution import invoke_runtime_conversation_once +from ksadk.sessions import create_session_service +from ksadk.sessions.base import BaseSessionService + + +@dataclass(frozen=True) +class CodexProviderInventory: + provider: str + model: str + mcp_servers: tuple[str, ...] + skills: tuple[str, ...] + + +@dataclass(frozen=True) +class CodexTurnRequest: + user_id: str + session_id: str | None + messages: tuple[Mapping[str, Any], ...] + request_metadata: Mapping[str, Any] | None = None + invocation_id: str | None = None + model: str | None = None + collaboration_mode: str | None = None + goal_objective: str | None = None + + @classmethod + def parse(cls, value: Any) -> "CodexTurnRequest": + if isinstance(value, cls): + return value + if not isinstance(value, Mapping): + raise PluginHostError("codex_input_invalid", "Codex input must be an object") + allowed_fields = { + "user_id", + "userId", + "session_id", + "sessionId", + "messages", + "input", + "request_metadata", + "requestMetadata", + "invocation_id", + "invocationId", + "model", + "collaboration_mode", + "collaborationMode", + "goal_objective", + "goalObjective", + } + unsupported = sorted(str(field) for field in value if field not in allowed_fields) + if unsupported: + raise PluginHostError( + "codex_input_unsupported", + "Codex input contains undeclared fields: " + ", ".join(unsupported), + ) + _reject_aliased_duplicates( + value, + ("user_id", "userId"), + ("session_id", "sessionId"), + ("request_metadata", "requestMetadata"), + ("invocation_id", "invocationId"), + ("collaboration_mode", "collaborationMode"), + ("goal_objective", "goalObjective"), + ) + if "messages" in value and "input" in value: + raise PluginHostError( + "codex_input_invalid", + "Codex input must use exactly one of messages or input", + ) + user_id = str(value.get("user_id") or value.get("userId") or "").strip() + if not user_id: + raise PluginHostError("codex_input_invalid", "Codex input requires user_id") + raw_messages = value.get("messages") + if raw_messages is None and value.get("input") is not None: + raw_messages = ({"role": "user", "content": value.get("input")},) + if not isinstance(raw_messages, Sequence) or isinstance( + raw_messages, (str, bytes) + ): + raise PluginHostError("codex_input_invalid", "Codex input requires messages") + messages: list[Mapping[str, Any]] = [] + for index, message in enumerate(raw_messages): + if not isinstance(message, Mapping): + raise PluginHostError( + "codex_input_invalid", f"Codex messages[{index}] must be an object" + ) + role = str(message.get("role") or "").strip() + if role not in {"system", "user", "assistant", "tool"}: + raise PluginHostError( + "codex_input_invalid", + f"Codex messages[{index}] has unsupported role {role!r}", + ) + messages.append(dict(message)) + if not messages or messages[-1].get("role") != "user": + raise PluginHostError( + "codex_input_invalid", "Codex turn must end with a user message" + ) + metadata = value.get("request_metadata") or value.get("requestMetadata") + if metadata is not None and not isinstance(metadata, Mapping): + raise PluginHostError( + "codex_input_invalid", "request_metadata must be an object" + ) + session_id = str( + value.get("session_id") or value.get("sessionId") or "" + ).strip() + invocation_id = str( + value.get("invocation_id") or value.get("invocationId") or "" + ).strip() + if len(invocation_id) > 256: + raise PluginHostError( + "codex_input_invalid", "Codex invocation_id exceeds 256 characters" + ) + model = str(value.get("model") or "").strip() + if len(model) > 256: + raise PluginHostError( + "codex_input_invalid", "Codex model exceeds 256 characters" + ) + collaboration_mode = ( + str(value.get("collaboration_mode") or value.get("collaborationMode") or "") + .strip() + .lower() + ) + if collaboration_mode and collaboration_mode not in {"default", "plan"}: + raise PluginHostError( + "codex_input_unsupported", + "Codex collaboration_mode must be default or plan", + ) + goal_objective = str( + value.get("goal_objective") or value.get("goalObjective") or "" + ).strip() + if len(goal_objective) > 4096: + raise PluginHostError( + "codex_input_invalid", "Codex goal_objective exceeds 4096 characters" + ) + return cls( + user_id=user_id, + session_id=session_id or None, + messages=tuple(messages), + request_metadata=dict(metadata) if metadata is not None else None, + invocation_id=invocation_id or None, + model=model or None, + collaboration_mode=collaboration_mode or None, + goal_objective=goal_objective or None, + ) + + +@dataclass(frozen=True) +class CodexTurnResult: + session_id: str + output_text: str + usage: Mapping[str, Any] + metadata: Mapping[str, Any] + inventory: CodexProviderInventory + + +@dataclass(frozen=True) +class _CodexBundleConfig: + model: str + allowed_models: tuple[str, ...] + prompt: str + project_dir: Path + launch_config: Mapping[str, Any] + inventory: CodexProviderInventory + + +class CodexAgentProviderRuntime: + """ExecutableAgentProvider that preserves Codex native loop ownership.""" + + def __init__( + self, + *, + plugin_id: str, + session_service: BaseSessionService, + codex_client_factory: Callable[..., Any] | None, + credential_resolver: Any = None, + ) -> None: + self._plugin_id = plugin_id + self._session_service = session_service + self._client_factory = codex_client_factory + self._credentials = credential_resolver + self._ready = False + self._disposed = False + self._last_activation: CodexAgentActivation | None = None + + @property + def disposed(self) -> bool: + return self._disposed + + @property + def last_activation(self) -> "CodexAgentActivation | None": + return self._last_activation + + async def start(self) -> None: + if self._disposed: + raise RuntimeError("Codex provider is disposed") + self._ready = True + + async def health(self) -> bool: + return self._ready and not self._disposed + + async def drain(self) -> None: + self._ready = False + + async def dispose(self) -> None: + self._ready = False + self._disposed = True + + async def prepare( + self, + bundle: ResolvedPluginBundle, + *, + capabilities: PluginExecutionContext, + ) -> "CodexAgentActivation": + if not self._ready or self._disposed: + raise PluginHostError( + "codex_provider_unavailable", "Codex provider is not ready" + ) + _reject_external_execution(bundle, capabilities) + config = _resolve_bundle_config( + bundle, + plugin_id=self._plugin_id, + credential_resolver=self._credentials, + ) + activation = CodexAgentActivation( + bundle=bundle, + config=config, + session_service=self._session_service, + codex_client_factory=self._client_factory, + ) + self._last_activation = activation + return activation + + +class CodexAgentProviderFactory: + def __init__( + self, + *, + session_service: BaseSessionService | None = None, + codex_client_factory: Callable[..., Any] | None = None, + credential_resolver: Any = None, + ) -> None: + self._session_service = session_service + self._client_factory = codex_client_factory + self._credentials = credential_resolver + self.runtime: CodexAgentProviderRuntime | None = None + + async def stage( + self, + manifest: PluginManifest, + *, + profile: CompositionProfile, + services: Mapping[str, Any], + ) -> CodexAgentProviderRuntime: + del profile + service = self._session_service or services.get("session_service") + if service is None: + service = create_session_service(backend="memory") + if not isinstance(service, BaseSessionService): + raise PluginHostError( + "codex_session_service_invalid", + "Codex provider requires a BaseSessionService", + ) + client_factory = self._client_factory or services.get("codex_client_factory") + credentials = self._credentials or services.get("credential_resolver") + self.runtime = CodexAgentProviderRuntime( + plugin_id=manifest.metadata.id, + session_service=service, + codex_client_factory=client_factory, + credential_resolver=credentials, + ) + return self.runtime + + +class CodexAgentActivation: + def __init__( + self, + *, + bundle: ResolvedPluginBundle, + config: _CodexBundleConfig, + session_service: BaseSessionService, + codex_client_factory: Callable[..., Any] | None, + ) -> None: + self._bundle = bundle + self._config = config + self._session_service = session_service + self._executor = RuntimeExecutor(build_default_runtime_registry()) + self._launch_context = RuntimeLaunchContext( + runtime_type="codex", + project_dir=config.project_dir, + config=config.launch_config, + services=RuntimeServices(codex_client_factory=codex_client_factory), + ) + self._ready = False + self._disposed = False + self._kernel_adapters: list[Any] = [] + + @property + def disposed(self) -> bool: + return self._disposed + + async def start(self) -> None: + if self._disposed: + raise RuntimeError("Codex activation is disposed") + self._ready = True + + async def health(self) -> bool: + return self._ready and not self._disposed + + async def execute(self, request: Any) -> CodexTurnResult: + if not self._ready or self._disposed: + raise PluginHostError( + "codex_activation_unavailable", "Codex activation is not ready" + ) + turn = CodexTurnRequest.parse(request) + selected_model = turn.model or self._config.model + if selected_model not in self._config.allowed_models: + raise PluginHostError( + "codex_model_unsupported", + f"Codex model {selected_model!r} is not declared by the immutable Bundle", + ) + launch_context = self._turn_launch_context(turn) + preparation = await self._executor.prepare_start(launch_context) + session_id, result = await invoke_runtime_conversation_once( + executor=self._executor, + launch_context=launch_context, + agent_id=self._bundle.manifest.agent_id, + user_id=turn.user_id, + messages=[dict(item) for item in turn.messages], + session_id=turn.session_id, + model=selected_model, + instructions=self._config.prompt, + request_metadata=turn.request_metadata, + invocation_id=turn.invocation_id, + session_service_provider=lambda: self._session_service, + runtime_preparation=preparation, + ) + return CodexTurnResult( + session_id=session_id, + output_text=str(result.get("output_text") or ""), + usage=dict(result.get("usage") or {}), + metadata=dict(result.get("metadata") or {}), + inventory=CodexProviderInventory( + provider=self._config.inventory.provider, + model=selected_model, + mcp_servers=self._config.inventory.mcp_servers, + skills=self._config.inventory.skills, + ), + ) + + def runtime_adapter(self) -> Any: + """Create one activation-owned native adapter for AgentKernel. + + Each Kernel command receives a fresh App Server transport. Durable + SessionEvent metadata reconnects the next command to the same Codex + Thread, while retaining adapters here lets activation disposal close a + command that is still active during Profile drain. + """ + + if not self._ready or self._disposed: + raise PluginHostError( + "codex_activation_unavailable", "Codex activation is not ready" + ) + adapter = self._executor.create_adapter(self._launch_context) + self._kernel_adapters.append(adapter) + return adapter + + def _turn_launch_context(self, turn: CodexTurnRequest) -> RuntimeLaunchContext: + config = dict(self._config.launch_config) + if turn.model: + config["model"] = turn.model + if turn.collaboration_mode: + config["collaboration_mode"] = turn.collaboration_mode + if turn.goal_objective: + config["goal_objective"] = turn.goal_objective + return RuntimeLaunchContext( + runtime_type=self._launch_context.runtime_type, + project_dir=self._launch_context.project_dir, + config=config, + services=self._launch_context.services, + deployment_mode=self._launch_context.deployment_mode, + ) + + async def drain(self) -> None: + self._ready = False + + async def dispose(self) -> None: + self._ready = False + first_error: BaseException | None = None + for adapter in reversed(self._kernel_adapters): + close_all = getattr(adapter, "close_all", None) + if not callable(close_all): + continue + try: + await close_all() + except BaseException as error: # cleanup must continue + if first_error is None: + first_error = error + self._kernel_adapters.clear() + try: + await self._executor.close_all() + except BaseException as error: # cleanup must continue + if first_error is None: + first_error = error + self._disposed = True + if first_error is not None: + raise first_error + + +def _reject_aliased_duplicates( + value: Mapping[str, Any], + *aliases: tuple[str, str], +) -> None: + for snake_case, camel_case in aliases: + if snake_case in value and camel_case in value: + raise PluginHostError( + "codex_input_invalid", + f"Codex input cannot contain both {snake_case} and {camel_case}", + ) + + +def _reject_external_execution( + bundle: ResolvedPluginBundle, + capabilities: PluginExecutionContext, +) -> None: + del capabilities + profile_config = bundle.composition.profile.agent_provider.config + allowed_config = {"runtimeType", "runtimeVersion"} + unsupported_config = sorted(set(profile_config) - allowed_config) + execution = bundle.resolved_agent_spec.get("execution") + strategy = ( + str(execution.get("strategy") or "direct").strip() + if isinstance(execution, Mapping) + else "direct" + ) + if unsupported_config: + raise PluginHostError( + "codex_provider_config_unsupported", + "Codex AgentProvider received unsupported configuration: " + + ", ".join(unsupported_config), + ) + if strategy != "direct": + raise PluginHostError( + "codex_external_execution_unsupported", + f"Codex AgentProvider owns its execution semantics and does not support {strategy!r}", + ) + + +def _resolve_bundle_config( + bundle: ResolvedPluginBundle, + *, + plugin_id: str, + credential_resolver: Any, +) -> _CodexBundleConfig: + spec = bundle.resolved_agent_spec + raw_model = spec.get("model") + if not isinstance(raw_model, Mapping): + raise PluginHostError( + "codex_bundle_model_invalid", "Bundle resolved model must be an object" + ) + model = str(raw_model.get("model") or "").strip() + if not model: + raise PluginHostError( + "codex_bundle_model_missing", "Bundle resolved Agent spec has no model" + ) + allowed_models = _resolve_allowed_models(bundle, default_model=model) + instructions = spec.get("instructions") + if not isinstance(instructions, Mapping): + raise PluginHostError( + "codex_bundle_prompt_invalid", "Bundle instructions must be an object" + ) + prompt = "\n\n".join( + part + for part in ( + str(instructions.get("system") or "").strip(), + str(instructions.get("task") or "").strip(), + ) + if part + ) + if not prompt: + raise PluginHostError( + "codex_bundle_prompt_missing", "Bundle resolved Agent spec has no instructions" + ) + capabilities = spec.get("capabilities") + if not isinstance(capabilities, Mapping): + raise PluginHostError( + "codex_bundle_capabilities_invalid", "Bundle capabilities must be an object" + ) + if capabilities.get("tools"): + raise PluginHostError( + "codex_tools_unsupported", "Codex only accepts its native tools, MCP, and Skills" + ) + skills = _resolve_skills(bundle.root, capabilities.get("skills")) + mcp_servers, env = _resolve_mcp( + capabilities.get("mcpServers") or capabilities.get("mcp_servers"), + credential_resolver=credential_resolver, + ) + execution = spec.get("execution") + execution = execution if isinstance(execution, Mapping) else {} + project_dir = bundle.root / "runtime" + if not project_dir.is_dir(): + project_dir = bundle.root + launch_config: dict[str, Any] = { + "model": model, + "models": list(allowed_models), + "prompt": str(instructions.get("system") or "").strip(), + "task_prompt": str(instructions.get("task") or "").strip(), + "sandbox": str(execution.get("sandbox") or "read_only"), + "approval_mode": str(execution.get("approvalMode") or execution.get("approval_mode") or ""), + "turn_timeout_seconds": int( + execution.get("timeoutSeconds") or execution.get("timeout_seconds") or 120 + ), + "mcp_servers": mcp_servers, + "skills": skills, + "env": env, + } + return _CodexBundleConfig( + model=model, + allowed_models=allowed_models, + prompt=prompt, + project_dir=project_dir, + launch_config=launch_config, + inventory=CodexProviderInventory( + provider=plugin_id, + model=model, + mcp_servers=tuple(item["name"] for item in mcp_servers), + skills=tuple(item["name"] for item in skills), + ), + ) + + +def _resolve_allowed_models( + bundle: ResolvedPluginBundle, + *, + default_model: str, +) -> tuple[str, ...]: + """Read the immutable model allowlist produced by the Bundle compiler. + + Older Bundle fixtures without ``runtime-lock.json`` remain pinned to their + resolved default. A declared lock is already digest-verified by + ``PluginBundleResolver``; malformed model inventory must fail activation + instead of silently widening run-level model selection. + """ + + if not any( + entry.path == "runtime-lock.json" for entry in bundle.manifest.files + ): + return (default_model,) + try: + payload = json.loads( + (bundle.root / "runtime-lock.json").read_text(encoding="utf-8") + ) + except (OSError, UnicodeError, json.JSONDecodeError) as error: + raise PluginHostError( + "codex_bundle_model_inventory_invalid", + "Bundle runtime-lock.json is not a valid model inventory", + ) from error + if not isinstance(payload, Mapping): + raise PluginHostError( + "codex_bundle_model_inventory_invalid", + "Bundle runtime-lock.json must be an object", + ) + raw_models = payload.get("models") + if not isinstance(raw_models, Sequence) or isinstance(raw_models, (str, bytes)): + raise PluginHostError( + "codex_bundle_model_inventory_invalid", + "Bundle runtime-lock.json must declare models as a list", + ) + models = tuple( + dict.fromkeys(str(item).strip() for item in raw_models if str(item).strip()) + ) + if not models or default_model not in models: + raise PluginHostError( + "codex_bundle_model_inventory_invalid", + "Bundle model inventory must include its resolved default model", + ) + return models + + +def _resolve_skills(root: Path, value: Any) -> list[dict[str, str]]: + if value is None: + return [] + if not isinstance(value, Sequence) or isinstance(value, (str, bytes)): + raise PluginHostError("codex_skill_invalid", "Bundle Skills must be a list") + resolved: list[dict[str, str]] = [] + seen: set[str] = set() + for index, item in enumerate(value): + if not isinstance(item, Mapping): + raise PluginHostError( + "codex_skill_invalid", f"Bundle Skills[{index}] must be an object" + ) + name = str(item.get("name") or "").strip() + relative = PurePosixPath(str(item.get("bundlePath") or item.get("bundle_path") or "")) + if not name or not relative.parts or relative.is_absolute() or ".." in relative.parts: + raise PluginHostError( + "codex_skill_invalid", f"Bundle Skills[{index}] has an invalid native path" + ) + path = (root / Path(*relative.parts)).resolve() + try: + path.relative_to(root) + except ValueError as error: + raise PluginHostError( + "codex_skill_invalid", f"Bundle Skill {name!r} escapes the Bundle root" + ) from error + if not (path / "SKILL.md").is_file(): + raise PluginHostError( + "codex_skill_missing", f"Bundle Skill {name!r} has no SKILL.md" + ) + if name in seen: + raise PluginHostError("codex_skill_invalid", f"duplicate Bundle Skill {name!r}") + seen.add(name) + # Codex's native SkillInput expects the concrete SKILL.md source, not + # its containing directory. A directory is accepted by the Python + # model but silently omitted by the real App Server turn projection. + resolved.append({"name": name, "path": str(path / "SKILL.md")}) + return resolved + + +def _resolve_mcp( + value: Any, + *, + credential_resolver: Any, +) -> tuple[list[dict[str, str]], dict[str, str]]: + if value is None: + return [], {} + if not isinstance(value, Sequence) or isinstance(value, (str, bytes)): + raise PluginHostError("codex_mcp_invalid", "Bundle MCP servers must be a list") + servers: list[dict[str, str]] = [] + env: dict[str, str] = {} + seen: set[str] = set() + for index, item in enumerate(value): + if not isinstance(item, Mapping): + raise PluginHostError( + "codex_mcp_invalid", f"Bundle MCP servers[{index}] must be an object" + ) + name = str(item.get("name") or "").strip() + transport = str(item.get("transport") or "").strip().lower() + url = str(item.get("endpointUrl") or item.get("endpoint_url") or "").strip() + if not name or name in seen: + raise PluginHostError("codex_mcp_invalid", "Bundle MCP names must be unique") + if transport not in {"http", "sse"} or not url: + raise PluginHostError( + "codex_mcp_transport_unsupported", + f"Codex Bundle MCP {name!r} requires an http/sse endpoint", + ) + env_refs = item.get("envRefs") or item.get("env_refs") or {} + if not isinstance(env_refs, Mapping): + raise PluginHostError( + "codex_mcp_invalid", f"Bundle MCP {name!r} envRefs must be an object" + ) + if len(env_refs) > 1: + raise PluginHostError( + "codex_mcp_credentials_unsupported", + f"Codex HTTP MCP {name!r} accepts at most one bearer credential", + ) + server = {"name": name, "url": url} + for env_name, reference in env_refs.items(): + env_key = str(env_name).strip() + ref = str(reference).strip() + if not env_key or not ref.startswith( + ("env://", "secret://", "credential://", "vault://") + ): + raise PluginHostError( + "codex_mcp_credential_invalid", + f"Bundle MCP {name!r} contains an invalid credential reference", + ) + if credential_resolver is None: + raise PluginHostError( + "codex_mcp_credential_unavailable", + f"Bundle MCP {name!r} requires a credential resolver", + ) + try: + value = ( + credential_resolver.resolve(ref) + if hasattr(credential_resolver, "resolve") + else credential_resolver(ref) + ) + except Exception as error: + raise PluginHostError( + "codex_mcp_credential_unavailable", + f"Bundle MCP {name!r} credential could not be resolved", + ) from error + if not str(value): + raise PluginHostError( + "codex_mcp_credential_unavailable", + f"Bundle MCP {name!r} credential is empty", + ) + env[env_key] = str(value) + server["env_key"] = env_key + servers.append(server) + seen.add(name) + return servers, env + + +__all__ = [ + "CodexAgentProviderFactory", + "CodexAgentProviderRuntime", + "CodexProviderInventory", + "CodexTurnRequest", + "CodexTurnResult", +] diff --git a/ksadk/plugins/providers/codex_dsh.py b/ksadk/plugins/providers/codex_dsh.py new file mode 100644 index 00000000..c2ee7b19 --- /dev/null +++ b/ksadk/plugins/providers/codex_dsh.py @@ -0,0 +1,83 @@ +"""Official Codex AgentProvider packaged as a standard DSH Bundle. + +DSH owns installation and discovery. The shared DSH bridge validates that +registration, then delegates execution to the existing Codex RuntimeAdapter; +this module contains no second Codex loop. +""" + +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any + +from ksadk.plugins.contracts import CompositionProfile, PluginManifest +from ksadk.plugins.providers.codex import CodexAgentProviderFactory +from ksadk.plugins.providers.dsh import DshAgentProviderHost, DshAgentProviderRegistration +from ksadk.plugins.providers.shipped_dsh import ( + CODEX_DSH_SPEC, + ShippedDshBridgeFactory, + ShippedDshBridgeRuntime, + ShippedDshBundle, + load_shipped_dsh_bundle, + shipped_dsh_host_command, +) + +SHIPPED_CODEX_DSH_PACKAGE = CODEX_DSH_SPEC.package_name +SHIPPED_CODEX_PROVIDER_ID = CODEX_DSH_SPEC.provider_id +SHIPPED_CODEX_PROVIDER_VERSION = CODEX_DSH_SPEC.version +ShippedCodexDshBundle = ShippedDshBundle + + +def shipped_codex_dsh_bundle() -> ShippedCodexDshBundle: + return load_shipped_dsh_bundle(CODEX_DSH_SPEC) + + +def shipped_codex_dsh_host_command(*, python_executable: str | None = None) -> tuple[str, ...]: + return shipped_dsh_host_command(CODEX_DSH_SPEC, python_executable=python_executable) + + +class KsADKCodexDshBridgeRuntime(ShippedDshBridgeRuntime): + """Named Codex bridge type retained for inventory and public typing.""" + + +class KsADKCodexDshBridgeFactory(ShippedDshBridgeFactory): + runtime_class = KsADKCodexDshBridgeRuntime + + def __init__( + self, + host: DshAgentProviderHost, + registration: DshAgentProviderRegistration, + *, + execution_factory: CodexAgentProviderFactory | None = None, + owns_host: bool = True, + ) -> None: + super().__init__( + spec=CODEX_DSH_SPEC, + host=host, + registration=registration, + execution_factory=execution_factory or CodexAgentProviderFactory(), + owns_host=owns_host, + ) + + async def stage( + self, + manifest: PluginManifest, + *, + profile: CompositionProfile, + services: Mapping[str, Any], + ) -> KsADKCodexDshBridgeRuntime: + runtime = await super().stage(manifest, profile=profile, services=services) + assert isinstance(runtime, KsADKCodexDshBridgeRuntime) + return runtime + + +__all__ = [ + "KsADKCodexDshBridgeFactory", + "KsADKCodexDshBridgeRuntime", + "SHIPPED_CODEX_DSH_PACKAGE", + "SHIPPED_CODEX_PROVIDER_ID", + "SHIPPED_CODEX_PROVIDER_VERSION", + "ShippedCodexDshBundle", + "shipped_codex_dsh_bundle", + "shipped_codex_dsh_host_command", +] diff --git a/ksadk/plugins/providers/dsh.py b/ksadk/plugins/providers/dsh.py new file mode 100644 index 00000000..efe030a6 --- /dev/null +++ b/ksadk/plugins/providers/dsh.py @@ -0,0 +1,951 @@ +"""DeepSeek Harness Profile -> AgentProvider sidecar vertical. + +DSH owns its Bundle/Profile ABI and executes all Cordis plugin code. KsADK +only starts a trusted, fixed host command and consumes the host's typed +``agent.provider/v1`` descriptor over a bounded JSONL RPC protocol. The +descriptor is projected into an internal :class:`PluginManifest` solely so the +existing PluginHost can keep ownership of admission, activation fencing, and +cleanup; DSH package authors do not need to publish a KsADK manifest. + +The sidecar is language-neutral: any executable that implements the frozen +JSONL protocol can host the Cordis composition. Python is not part of the ABI. +""" + +from __future__ import annotations + +import asyncio +import hashlib +import json +import os +import re +import time +from collections import deque +from collections.abc import Callable, Mapping, Sequence +from dataclasses import dataclass +from pathlib import Path +from typing import Any, Literal + +from pydantic import ConfigDict, Field, field_validator + +from ksadk.plugins.bridges.dsh import DshProfileProjection +from ksadk.plugins.bundle import ResolvedPluginBundle +from ksadk.plugins.contracts import PluginContractModel, PluginManifest +from ksadk.plugins.host import PluginExecutionContext, PluginHostError + +DSH_AGENT_PROVIDER_HOST_PROTOCOL = "ksadk.dsh-agent-provider-host/v1" +DSH_AGENT_PROVIDER_HOST_METHODS = frozenset( + { + "handshake", + "describe", + "preflight", + "activate", + "inventory", + "execute", + "cancel", + "health", + "drain", + "dispose", + } +) +DSH_HOST_USER_PERMISSION = "process:host-user" + +_MAX_LINE_BYTES = 1024 * 1024 +_ID = re.compile(r"^[a-z0-9]+(?:[._-][a-z0-9]+)*$") +_SEMVER = re.compile(r"^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$") +_DIGEST = re.compile(r"^sha256:[0-9a-f]{64}$") +_PACKAGE = re.compile(r"^(?:@[A-Za-z0-9._-]+/)?[A-Za-z0-9._-]+$") +_ENV_NAME = re.compile(r"^[A-Za-z_][A-Za-z0-9_]*$") +_SECRET_ENV = re.compile( + r"(?:^|_)(?:API_?KEY|ACCESS_?KEY|AUTH|BEARER|CREDENTIAL|PASSWORD|" + r"PRIVATE_?KEY|SECRET|TOKEN)(?:_|$)", + re.IGNORECASE, +) +_DIAGNOSTIC_SECRET = re.compile( + r"(?ix)(?:\bsk-[a-z0-9_-]{12,}\b|\bBearer\s+[a-z0-9._~+/=-]{8,}|" + r"\b(?:api[_-]?key|access[_-]?token|auth[_-]?token|password|secret)" + r"\s*(?:=|:)\s*[^\s,;]+)" +) +_SAFE_INHERITED_ENV = frozenset( + {"LANG", "LC_ALL", "PATH", "SYSTEMROOT", "TEMP", "TMP", "TMPDIR", "TZ", "WINDIR"} +) +_BLOCKED_ENV = frozenset({"PYTHONHOME", "PYTHONPATH", "LD_PRELOAD"}) + + +@dataclass(frozen=True) +class DshCircuitSnapshot: + """Observable host health state; it contains no command or credential data.""" + + state: Literal["closed", "open", "half-open"] + consecutive_failures: int + retry_after_seconds: float + + +class DshCircuitBreaker: + """Single-probe circuit breaker for DSH host transport and protocol faults. + + It deliberately does not retry RPC calls. An ``execute`` frame can create + external side effects, so replay remains the responsibility of the + caller's idempotent run/session protocol. + """ + + def __init__( + self, + *, + failure_threshold: int = 3, + recovery_timeout: float = 5.0, + clock: Callable[[], float] = time.monotonic, + ) -> None: + if failure_threshold < 1: + raise ValueError("failure_threshold must be positive") + if recovery_timeout < 0: + raise ValueError("recovery_timeout cannot be negative") + self._failure_threshold = failure_threshold + self._recovery_timeout = recovery_timeout + self._clock = clock + self._failures = 0 + self._opened_at: float | None = None + self._half_open_claimed = False + + def acquire(self) -> bool: + if self._opened_at is None: + return True + if self._clock() - self._opened_at < self._recovery_timeout: + return False + if self._half_open_claimed: + return False + self._half_open_claimed = True + return True + + def succeed(self) -> None: + self._failures = 0 + self._opened_at = None + self._half_open_claimed = False + + def fail(self) -> None: + self._failures += 1 + self._half_open_claimed = False + if self._failures >= self._failure_threshold: + self._opened_at = self._clock() + + def snapshot(self) -> DshCircuitSnapshot: + if self._opened_at is None: + return DshCircuitSnapshot("closed", self._failures, 0.0) + retry_after = max(0.0, self._recovery_timeout - (self._clock() - self._opened_at)) + return DshCircuitSnapshot( + "half-open" if retry_after == 0 else "open", + self._failures, + retry_after, + ) + + +class _DshProviderModel(PluginContractModel): + model_config = ConfigDict( + alias_generator=lambda value: ( + value.split("_")[0] + "".join(part.capitalize() for part in value.split("_")[1:]) + ), + populate_by_name=True, + extra="forbid", + frozen=True, + ) + + +class DshAgentProviderDescriptor(_DshProviderModel): + """One AgentProvider contribution exposed by the composed DSH host.""" + + descriptor_format: Literal["dsh.agent-provider-descriptor/v1"] = ( + "dsh.agent-provider-descriptor/v1" + ) + ecosystem: Literal["dsh"] = "dsh" + provider_id: str = Field(min_length=3, max_length=128) + provider_version: str + display_name: str = Field(min_length=1, max_length=256) + plugin_name: str = Field(min_length=1, max_length=256) + profile: str = Field(min_length=1, max_length=64) + profile_digest: str + definition: Literal["agent.provider/v1"] = "agent.provider/v1" + slot: Literal["agent.execution"] = "agent.execution" + runtime_protocols: tuple[str, ...] = () + + @field_validator("provider_id") + @classmethod + def validate_provider_id(cls, value: str) -> str: + if not _ID.fullmatch(value): + raise ValueError("providerId must be a lowercase qualified id") + return value + + @field_validator("provider_version") + @classmethod + def validate_provider_version(cls, value: str) -> str: + if not _SEMVER.fullmatch(value): + raise ValueError("providerVersion must use exact semantic versioning") + return value + + @field_validator("plugin_name") + @classmethod + def validate_plugin_name(cls, value: str) -> str: + if not _PACKAGE.fullmatch(value): + raise ValueError("pluginName must be a valid DSH package name") + return value + + @field_validator("profile_digest") + @classmethod + def validate_profile_digest(cls, value: str) -> str: + if not _DIGEST.fullmatch(value): + raise ValueError("profileDigest must be a lowercase sha256 digest") + return value + + @field_validator("runtime_protocols") + @classmethod + def validate_runtime_protocols(cls, value: tuple[str, ...]) -> tuple[str, ...]: + if any(not item or len(item) > 128 for item in value): + raise ValueError("runtimeProtocols entries must be non-empty and bounded") + if len(value) != len(set(value)): + raise ValueError("runtimeProtocols entries must be unique") + return value + + @property + def descriptor_digest(self) -> str: + payload = json.dumps( + self.model_dump(by_alias=True, exclude_none=True, mode="json"), + ensure_ascii=False, + sort_keys=True, + separators=(",", ":"), + ).encode("utf-8") + return f"sha256:{hashlib.sha256(payload).hexdigest()}" + + +class DshAgentProviderPreflight(_DshProviderModel): + ready: bool + descriptor_digest: str + profile_digest: str + + @field_validator("descriptor_digest", "profile_digest") + @classmethod + def validate_digest(cls, value: str) -> str: + if not _DIGEST.fullmatch(value): + raise ValueError("preflight digests must be lowercase sha256 values") + return value + + +class DshAgentProviderInventory(_DshProviderModel): + provider_id: str = Field(min_length=3, max_length=128) + provider_version: str + profile: str = Field(min_length=1, max_length=64) + profile_digest: str + descriptor_digest: str + state: Literal["ready", "draining", "disposed", "failed"] + activation_count: int = Field(ge=0) + + @field_validator("profile_digest", "descriptor_digest") + @classmethod + def validate_digest(cls, value: str) -> str: + if not _DIGEST.fullmatch(value): + raise ValueError("inventory digests must be lowercase sha256 values") + return value + + +@dataclass(frozen=True) +class DshAgentProviderRegistration: + """Selector-safe registration emitted only after successful preflight.""" + + descriptor: DshAgentProviderDescriptor + preflight: DshAgentProviderPreflight + manifest: PluginManifest + + +class DshAgentProviderHost: + """Supervise one fixed DSH provider host for an immutable Profile projection.""" + + def __init__( + self, + command: Sequence[str], + *, + projection: DshProfileProjection, + cwd: str | Path | None = None, + environment: Mapping[str, str] | None = None, + startup_timeout: float = 5.0, + request_timeout: float = 30.0, + shutdown_timeout: float = 2.0, + circuit_failure_threshold: int = 3, + circuit_recovery_timeout: float = 5.0, + ) -> None: + self._command = _validate_command(command) + self._projection = projection + self._cwd = Path(cwd).resolve() if cwd is not None else None + self._environment = _minimal_environment(environment or {}) + self._startup_timeout = _positive_timeout(startup_timeout, "startup_timeout") + self._request_timeout = _positive_timeout(request_timeout, "request_timeout") + self._shutdown_timeout = _positive_timeout(shutdown_timeout, "shutdown_timeout") + self._circuit = DshCircuitBreaker( + failure_threshold=circuit_failure_threshold, + recovery_timeout=circuit_recovery_timeout, + ) + self._process: asyncio.subprocess.Process | None = None + self._request_lock = asyncio.Lock() + self._lifecycle_lock = asyncio.Lock() + self._stderr_task: asyncio.Task[None] | None = None + self._stderr_tail: deque[str] = deque(maxlen=64) + self._next_request_id = 0 + self._descriptor: DshAgentProviderDescriptor | None = None + self._preflight: DshAgentProviderPreflight | None = None + self._disposed = False + + @property + def pid(self) -> int | None: + process = self._process + return process.pid if process is not None and process.returncode is None else None + + @property + def stderr_tail(self) -> tuple[str, ...]: + return tuple(self._stderr_tail) + + @property + def circuit_snapshot(self) -> DshCircuitSnapshot: + return self._circuit.snapshot() + + async def start(self) -> None: + async with self._lifecycle_lock: + if self.pid is not None: + return + if self._disposed: + raise PluginHostError("dsh_provider_host_disposed", "DSH provider host is disposed") + self._require_circuit_probe() + try: + process = await asyncio.create_subprocess_exec( + *self._command, + cwd=str(self._cwd) if self._cwd is not None else None, + env=self._environment, + stdin=asyncio.subprocess.PIPE, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + limit=_MAX_LINE_BYTES + 1, + start_new_session=os.name == "posix", + ) + except (OSError, ValueError) as error: + self._circuit.fail() + raise PluginHostError( + "dsh_provider_host_start_failed", + f"cannot start fixed DSH provider host: {type(error).__name__}", + ) from error + self._process = process + self._stderr_task = asyncio.create_task(self._capture_stderr(process)) + try: + handshake = await self._request( + "handshake", + {"profile": self._projection_payload()}, + timeout=self._startup_timeout, + circuit_probe_acquired=True, + ) + try: + self._validate_handshake(handshake) + except PluginHostError: + self._circuit.fail() + raise + except BaseException: + await self._terminate() + raise + + async def describe(self) -> DshAgentProviderDescriptor: + await self.start() + if self._descriptor is not None: + return self._descriptor + payload = await self._request("describe", {"profile": self._projection_payload()}) + try: + descriptor = DshAgentProviderDescriptor.model_validate(payload) + except Exception as error: # noqa: BLE001 - external protocol boundary + raise PluginHostError( + "dsh_provider_descriptor_invalid", + "DSH host returned an invalid provider descriptor", + ) from error + if descriptor.profile != self._projection.profile: + raise PluginHostError( + "dsh_provider_descriptor_mismatch", "DSH provider descriptor profile does not match" + ) + if descriptor.profile_digest != self._projection.config_digest: + raise PluginHostError( + "dsh_provider_descriptor_mismatch", + "DSH provider descriptor is not fenced to the selected Profile digest", + ) + if descriptor.plugin_name not in self._projection.bundles: + raise PluginHostError( + "dsh_provider_descriptor_mismatch", + "DSH provider descriptor does not belong to an active Profile bundle", + ) + self._descriptor = descriptor + return descriptor + + async def preflight(self) -> DshAgentProviderPreflight: + descriptor = await self.describe() + payload = await self._request( + "preflight", + { + "profileDigest": self._projection.config_digest, + "descriptorDigest": descriptor.descriptor_digest, + }, + ) + try: + result = DshAgentProviderPreflight.model_validate(payload) + except Exception as error: # noqa: BLE001 - external protocol boundary + raise PluginHostError( + "dsh_provider_preflight_invalid", "DSH host returned an invalid preflight result" + ) from error + if ( + result.descriptor_digest != descriptor.descriptor_digest + or result.profile_digest != self._projection.config_digest + ): + raise PluginHostError( + "dsh_provider_preflight_mismatch", "DSH preflight result crossed a Profile fence" + ) + if not result.ready: + raise PluginHostError( + "dsh_provider_preflight_failed", "DSH AgentProvider is not ready for activation" + ) + self._preflight = result + return result + + async def registration(self) -> DshAgentProviderRegistration: + """Return a selector-visible projection only after the provider is ready.""" + + descriptor = await self.describe() + preflight = await self.preflight() + return DshAgentProviderRegistration( + descriptor=descriptor, + preflight=preflight, + manifest=dsh_agent_provider_manifest(descriptor, preflight=preflight), + ) + + async def activate( + self, + bundle: ResolvedPluginBundle, + capabilities: PluginExecutionContext, + ) -> str: + descriptor = await self.describe() + await self.preflight() + payload = await self._request( + "activate", + { + "descriptorDigest": descriptor.descriptor_digest, + "bundle": _bundle_payload(bundle), + "capabilities": _capability_payload(capabilities), + }, + ) + if not isinstance(payload, dict): + raise PluginHostError( + "dsh_provider_activation_invalid", "DSH host activation result must be an object" + ) + activation_id = str(payload.get("activationId") or "").strip() + if not activation_id or len(activation_id) > 256: + raise PluginHostError( + "dsh_provider_activation_invalid", "DSH host returned no valid activationId" + ) + return activation_id + + async def inventory(self) -> DshAgentProviderInventory: + descriptor = await self.describe() + payload = await self._request( + "inventory", {"descriptorDigest": descriptor.descriptor_digest} + ) + try: + result = DshAgentProviderInventory.model_validate(payload) + except Exception as error: # noqa: BLE001 - external protocol boundary + raise PluginHostError( + "dsh_provider_inventory_invalid", "DSH host returned invalid provider inventory" + ) from error + if ( + result.provider_id != descriptor.provider_id + or result.provider_version != descriptor.provider_version + or result.profile != descriptor.profile + or result.profile_digest != descriptor.profile_digest + or result.descriptor_digest != descriptor.descriptor_digest + ): + raise PluginHostError( + "dsh_provider_inventory_mismatch", + "DSH provider inventory crossed a descriptor fence", + ) + return result + + async def health(self, *, activation_id: str | None = None) -> bool: + params: dict[str, Any] = {"scope": "activation" if activation_id else "provider"} + if activation_id: + params["activationId"] = activation_id + payload = await self._request("health", params) + if not isinstance(payload, dict) or not isinstance(payload.get("healthy"), bool): + raise PluginHostError( + "dsh_provider_health_invalid", "DSH provider health must contain boolean healthy" + ) + return bool(payload["healthy"]) + + async def execute(self, activation_id: str, request: Any) -> Any: + return await self._request( + "execute", {"activationId": activation_id, "request": _json_value(request)} + ) + + async def cancel_activation(self, activation_id: str) -> None: + await self._request("cancel", {"activationId": activation_id}) + + async def drain(self, *, activation_id: str | None = None) -> None: + params: dict[str, Any] = {"scope": "activation" if activation_id else "provider"} + if activation_id: + params["activationId"] = activation_id + await self._request("drain", params) + + async def dispose_activation(self, activation_id: str) -> None: + await self._request("dispose", {"scope": "activation", "activationId": activation_id}) + + async def dispose(self) -> None: + async with self._lifecycle_lock: + if self._disposed: + return + self._disposed = True + failure: Exception | None = None + if self.pid is not None: + try: + await self._request("dispose", {"scope": "host"}) + except Exception as error: # cleanup must still terminate the sidecar + failure = error + await self._terminate() + if failure is not None: + raise failure + + async def _request( + self, + method: str, + params: Mapping[str, Any], + *, + timeout: float | None = None, + circuit_probe_acquired: bool = False, + ) -> Any: + if method not in DSH_AGENT_PROVIDER_HOST_METHODS: + raise PluginHostError( + "dsh_provider_method_denied", f"DSH provider host method {method!r} is denied" + ) + if not circuit_probe_acquired: + self._require_circuit_probe() + self._next_request_id += 1 + request_id = f"dsh-{self._next_request_id}" + try: + encoded = json.dumps( + {"id": request_id, "method": method, "params": dict(params)}, + ensure_ascii=False, + allow_nan=False, + separators=(",", ":"), + ).encode("utf-8") + except (TypeError, ValueError) as error: + raise PluginHostError( + "dsh_provider_request_invalid", "DSH provider request is not strict JSON" + ) from error + if len(encoded) > _MAX_LINE_BYTES: + raise PluginHostError( + "dsh_provider_request_too_large", "DSH provider request exceeds the protocol limit" + ) + async with self._request_lock: + process = self._process + if ( + process is None + or process.returncode is not None + or process.stdin is None + or process.stdout is None + ): + self._circuit.fail() + raise PluginHostError( + "dsh_provider_host_unavailable", "DSH provider host is not running" + ) + try: + process.stdin.write(encoded + b"\n") + await process.stdin.drain() + line = await asyncio.wait_for( + process.stdout.readline(), + timeout=timeout if timeout is not None else self._request_timeout, + ) + except asyncio.TimeoutError as error: + await self._terminate() + self._circuit.fail() + raise PluginHostError( + "dsh_provider_request_timeout", f"DSH provider host timed out during {method}" + ) from error + except (BrokenPipeError, ConnectionError, OSError, ValueError) as error: + await self._terminate() + self._circuit.fail() + raise PluginHostError( + "dsh_provider_transport_failed", f"DSH provider host failed during {method}" + ) from error + if not line or len(line) > _MAX_LINE_BYTES: + await self._terminate() + self._circuit.fail() + raise PluginHostError( + "dsh_provider_protocol_invalid", "DSH provider host emitted no bounded response" + ) + try: + response = json.loads(line) + except (UnicodeDecodeError, ValueError) as error: + await self._terminate() + self._circuit.fail() + raise PluginHostError( + "dsh_provider_protocol_invalid", "DSH provider host emitted invalid JSONL" + ) from error + if not isinstance(response, dict) or response.get("id") != request_id: + await self._terminate() + self._circuit.fail() + raise PluginHostError( + "dsh_provider_response_mismatch", "DSH provider response id does not match" + ) + if response.get("error") is not None: + raise PluginHostError( + "dsh_provider_remote_error", "DSH provider host rejected the request" + ) + if "result" not in response: + self._circuit.fail() + raise PluginHostError( + "dsh_provider_protocol_invalid", "DSH provider response has no result" + ) + self._circuit.succeed() + return response["result"] + + def _require_circuit_probe(self) -> None: + if self._circuit.acquire(): + return + snapshot = self._circuit.snapshot() + raise PluginHostError( + "dsh_provider_circuit_open", + "DSH provider host circuit is open; wait " + f"{snapshot.retry_after_seconds:.1f}s before another probe", + ) + + def _validate_handshake(self, payload: Any) -> None: + if not isinstance(payload, dict): + raise PluginHostError( + "dsh_provider_handshake_invalid", "DSH provider handshake must be an object" + ) + methods = payload.get("methods") + host_version = payload.get("hostVersion") + if ( + payload.get("protocolVersion") != DSH_AGENT_PROVIDER_HOST_PROTOCOL + or not isinstance(methods, list) + or set(methods) != DSH_AGENT_PROVIDER_HOST_METHODS + or len(methods) != len(DSH_AGENT_PROVIDER_HOST_METHODS) + or not isinstance(host_version, str) + or not _SEMVER.fullmatch(host_version) + ): + raise PluginHostError( + "dsh_provider_handshake_invalid", + "DSH provider host protocol, methods, or version is incompatible", + ) + + def _projection_payload(self) -> dict[str, Any]: + return self._projection.model_dump(by_alias=True, mode="json") + + async def _capture_stderr(self, process: asyncio.subprocess.Process) -> None: + if process.stderr is None: + return + while True: + line = await process.stderr.readline() + if not line: + return + diagnostic = line.decode("utf-8", errors="replace").rstrip()[:4096] + self._stderr_tail.append(_DIAGNOSTIC_SECRET.sub("[REDACTED]", diagnostic)) + + async def _terminate(self) -> None: + process = self._process + self._process = None + if process is not None and process.returncode is None: + process.terminate() + try: + await asyncio.wait_for(process.wait(), timeout=self._shutdown_timeout) + except asyncio.TimeoutError: + process.kill() + await process.wait() + task = self._stderr_task + self._stderr_task = None + if task is not None and task is not asyncio.current_task(): + try: + await asyncio.wait_for(task, timeout=self._shutdown_timeout) + except asyncio.TimeoutError: + task.cancel() + await asyncio.gather(task, return_exceptions=True) + + +class DshAgentProviderRuntime: + """Existing PluginHost AgentProvider SPI backed by one DSH host.""" + + def __init__(self, host: DshAgentProviderHost) -> None: + self._host = host + self._ready = False + self._disposed = False + + async def start(self) -> None: + if self._disposed: + raise PluginHostError("dsh_provider_disposed", "DSH AgentProvider is disposed") + await self._host.preflight() + self._ready = True + + async def health(self) -> bool: + return ( + self._ready + and not self._disposed + and self._host.pid is not None + and await self._host.health() + ) + + async def prepare( + self, + bundle: ResolvedPluginBundle, + *, + capabilities: PluginExecutionContext, + ) -> "DshPreparedAgent": + if not await self.health(): + raise PluginHostError("dsh_provider_unavailable", "DSH AgentProvider is not healthy") + activation_id = await self._host.activate(bundle, capabilities) + return DshPreparedAgent(self._host, activation_id) + + async def inventory(self) -> DshAgentProviderInventory: + return await self._host.inventory() + + async def drain(self) -> None: + if self._ready and not self._disposed and self._host.pid is not None: + await self._host.drain() + self._ready = False + + async def dispose(self) -> None: + if self._disposed: + return + self._disposed = True + self._ready = False + await self._host.dispose() + + +class DshPreparedAgent: + def __init__(self, host: DshAgentProviderHost, activation_id: str) -> None: + self._host = host + self._activation_id = activation_id + self._started = False + self._drained = False + self._disposed = False + + async def start(self) -> None: + if self._disposed: + raise PluginHostError("dsh_activation_disposed", "DSH activation is disposed") + self._started = True + + async def health(self) -> bool: + return ( + self._started + and not self._drained + and not self._disposed + and await self._host.health(activation_id=self._activation_id) + ) + + async def execute(self, request: Any) -> Any: + if not await self.health(): + raise PluginHostError("dsh_activation_unavailable", "DSH activation is not healthy") + return await self._host.execute(self._activation_id, request) + + async def cancel(self) -> None: + """Request bounded cancellation without losing the disposable handle.""" + + if self._disposed: + return + await self._host.cancel_activation(self._activation_id) + + async def drain(self) -> None: + if self._disposed or self._drained: + return + await self._host.drain(activation_id=self._activation_id) + self._drained = True + + async def dispose(self) -> None: + if self._disposed: + return + self._disposed = True + if self._host.pid is not None: + await self._host.dispose_activation(self._activation_id) + + +class DshAgentProviderFactory: + """Project one discovered DSH provider into the internal PluginFactory seam.""" + + def __init__( + self, + host: DshAgentProviderHost, + registration: DshAgentProviderRegistration, + ) -> None: + self._host = host + self._registration = registration + self.runtime: DshAgentProviderRuntime | None = None + + async def stage( + self, + manifest: PluginManifest, + *, + profile: Any, + services: Mapping[str, Any], + ) -> DshAgentProviderRuntime: + del profile, services + expected = dsh_agent_provider_manifest( + self._registration.descriptor, + preflight=self._registration.preflight, + ) + if manifest != expected: + raise PluginHostError( + "dsh_provider_manifest_mismatch", + "internal DSH provider projection does not match the discovered descriptor", + ) + self.runtime = DshAgentProviderRuntime(self._host) + return self.runtime + + +def dsh_agent_provider_manifest( + descriptor: DshAgentProviderDescriptor, + *, + preflight: DshAgentProviderPreflight, +) -> PluginManifest: + """Create an internal admission projection; this is not a DSH package format.""" + + if ( + not preflight.ready + or preflight.descriptor_digest != descriptor.descriptor_digest + or preflight.profile_digest != descriptor.profile_digest + ): + raise PluginHostError( + "dsh_provider_not_ready", + "DSH AgentProvider cannot enter the selector before matching preflight", + ) + + return PluginManifest.model_validate( + { + "metadata": { + "id": descriptor.provider_id, + "version": descriptor.provider_version, + }, + "spec": { + "domain": "runtime-native", + "runtime": "process", + "entrypoint": "deepseek-harness:profile-agent-provider", + "provides": [ + { + "definition": descriptor.definition, + "slot": descriptor.slot, + "mode": "unique", + } + ], + "permissions": [DSH_HOST_USER_PERMISSION], + "isolation": "sidecar", + "compatibility": { + "kernelApi": ">=1,<2", + "runtimeProtocols": list(descriptor.runtime_protocols), + }, + "healthContract": "plugin.health/v1", + "provenance": { + "source": "runtime-native", + "digest": descriptor.descriptor_digest, + }, + }, + } + ) + + +def _validate_command(command: Sequence[str]) -> tuple[str, ...]: + if isinstance(command, (str, bytes)): + raise PluginHostError( + "dsh_provider_command_invalid", "DSH host command must be an argv sequence" + ) + normalized = tuple(str(item) for item in command) + if not normalized or any(not item or "\x00" in item for item in normalized): + raise PluginHostError( + "dsh_provider_command_invalid", "DSH host command contains an invalid argv item" + ) + return normalized + + +def _minimal_environment(explicit: Mapping[str, str]) -> dict[str, str]: + environment = { + key: value + for key, value in os.environ.items() + if key in _SAFE_INHERITED_ENV and not _SECRET_ENV.search(key) + } + for key, value in explicit.items(): + if ( + not _ENV_NAME.fullmatch(key) + or key in _BLOCKED_ENV + or key.startswith("DYLD_") + or _SECRET_ENV.search(key) + ): + raise PluginHostError( + "dsh_provider_environment_denied", + f"DSH host environment key {key!r} is not allowed", + ) + environment[key] = str(value) + return environment + + +def _positive_timeout(value: float, field: str) -> float: + normalized = float(value) + if normalized <= 0: + raise PluginHostError("dsh_provider_timeout_invalid", f"{field} must be positive") + return normalized + + +def _bundle_payload(bundle: ResolvedPluginBundle) -> dict[str, Any]: + return { + "root": str(bundle.root), + "manifest": bundle.manifest.model_dump(by_alias=True, exclude_none=True, mode="json"), + "resolvedAgentSpec": _json_value(bundle.resolved_agent_spec), + "composition": { + "profileDigest": bundle.composition.profile_digest, + "pluginLockDigest": bundle.composition.plugin_lock_digest, + }, + } + + +def _capability_payload(context: PluginExecutionContext) -> dict[str, Any]: + return { + "profileDigest": context.profile_digest, + "pluginLockDigest": context.plugin_lock_digest, + "bindings": [ + { + "pluginId": binding.plugin_id, + "pluginVersion": binding.plugin_version, + "definition": binding.definition, + "slot": binding.slot, + } + for binding in context.bindings + ], + } + + +def _json_value(value: Any) -> Any: + if isinstance(value, Mapping): + normalized: Any = {str(key): _json_value(child) for key, child in value.items()} + elif isinstance(value, (list, tuple)): + normalized = [_json_value(child) for child in value] + elif value is None or isinstance(value, (str, int, float, bool)): + normalized = value + else: + raise PluginHostError( + "dsh_provider_request_invalid", + f"DSH provider value {type(value).__name__} is not JSON compatible", + ) + try: + json.dumps(normalized, ensure_ascii=False, allow_nan=False) + except (TypeError, ValueError) as error: + raise PluginHostError( + "dsh_provider_request_invalid", "DSH provider value is not strict JSON" + ) from error + return normalized + + +__all__ = [ + "DSH_AGENT_PROVIDER_HOST_METHODS", + "DSH_AGENT_PROVIDER_HOST_PROTOCOL", + "DSH_HOST_USER_PERMISSION", + "DshAgentProviderDescriptor", + "DshAgentProviderFactory", + "DshAgentProviderHost", + "DshAgentProviderInventory", + "DshAgentProviderPreflight", + "DshAgentProviderRegistration", + "DshAgentProviderRuntime", + "DshCircuitBreaker", + "DshCircuitSnapshot", + "DshPreparedAgent", + "dsh_agent_provider_manifest", +] diff --git a/ksadk/plugins/providers/dsh_descriptor_host.py b/ksadk/plugins/providers/dsh_descriptor_host.py new file mode 100644 index 00000000..20aa7fb4 --- /dev/null +++ b/ksadk/plugins/providers/dsh_descriptor_host.py @@ -0,0 +1,226 @@ +"""Single frozen descriptor host for wheel-owned DSH AgentProviders. + +The provider key is a fixed command argument selected by KsADK. The host +owns discovery and lifecycle only; model credentials and execution services +remain in the parent RuntimeAdapter bridge. +""" + +from __future__ import annotations + +import json +import sys +from dataclasses import dataclass +from typing import Any, Sequence + +from ksadk.plugins.providers.dsh import ( + DSH_AGENT_PROVIDER_HOST_METHODS, + DSH_AGENT_PROVIDER_HOST_PROTOCOL, + DshAgentProviderDescriptor, +) +from ksadk.plugins.providers.shipped_dsh import ( + SHIPPED_DSH_PROVIDER_SPECS, + ShippedDshProviderSpec, +) + + +class HostRequestError(RuntimeError): + def __init__(self, code: str, message: str) -> None: + super().__init__(message) + self.code = code + + +@dataclass +class DescriptorHostState: + spec: ShippedDshProviderSpec + profile: dict[str, Any] | None = None + descriptor: DshAgentProviderDescriptor | None = None + state: str = "ready" + + def handshake(self, params: dict[str, Any]) -> dict[str, Any]: + projection = self._profile(params) + bundles = projection.get("bundles") + if not isinstance(bundles, list) or self.spec.package_name not in bundles: + raise HostRequestError( + self.spec.error_code("bundle_inactive"), + f"{self.spec.display_name} Bundle is not active in the selected DSH Profile", + ) + if self.profile is not None and ( + projection.get("configDigest") != self.profile.get("configDigest") + ): + raise HostRequestError( + self.spec.error_code("profile_changed"), + "host cannot cross a DSH Profile fence", + ) + self.profile = projection + self.descriptor = DshAgentProviderDescriptor.model_validate( + { + "providerId": self.spec.provider_id, + "providerVersion": self.spec.version, + "displayName": self.spec.display_name, + "pluginName": self.spec.package_name, + "profile": projection.get("profile"), + "profileDigest": projection.get("configDigest"), + "runtimeProtocols": ["agentkit.runtime/v1"], + } + ) + return { + "protocolVersion": DSH_AGENT_PROVIDER_HOST_PROTOCOL, + "methods": sorted(DSH_AGENT_PROVIDER_HOST_METHODS), + "hostVersion": self.spec.version, + } + + def describe(self, params: dict[str, Any]) -> dict[str, Any]: + descriptor = self._require_ready_descriptor() + if self._profile(params).get("configDigest") != descriptor.profile_digest: + raise HostRequestError( + self.spec.error_code("profile_mismatch"), + "descriptor crossed a DSH Profile fence", + ) + return descriptor.model_dump(by_alias=True, mode="json") + + def preflight(self, params: dict[str, Any]) -> dict[str, Any]: + descriptor = self._require_ready_descriptor() + self._check_fences(params) + return { + "ready": self.state == "ready", + "descriptorDigest": descriptor.descriptor_digest, + "profileDigest": descriptor.profile_digest, + } + + def inventory(self, params: dict[str, Any]) -> dict[str, Any]: + descriptor = self._require_descriptor() + self._check_fences(params, profile_optional=True) + return { + "providerId": descriptor.provider_id, + "providerVersion": descriptor.provider_version, + "profile": descriptor.profile, + "profileDigest": descriptor.profile_digest, + "descriptorDigest": descriptor.descriptor_digest, + "state": self.state, + "activationCount": 0, + } + + def health(self, params: dict[str, Any]) -> dict[str, Any]: + if params.get("activationId"): + return {"healthy": False} + return {"healthy": self.state == "ready"} + + def drain(self, params: dict[str, Any]) -> dict[str, Any]: + if params.get("scope") != "provider": + raise self._execution_bridge_required() + self.state = "draining" + return {"ok": True} + + def dispose(self, params: dict[str, Any]) -> dict[str, Any]: + if params.get("scope") != "host": + raise self._execution_bridge_required() + self.state = "disposed" + return {"ok": True} + + def dispatch(self, method: str, params: dict[str, Any]) -> dict[str, Any]: + handler = getattr(self, method, None) + if method in { + "handshake", + "describe", + "preflight", + "inventory", + "health", + "drain", + "dispose", + } and callable(handler): + return handler(params) + raise self._execution_bridge_required() + + def _profile(self, params: dict[str, Any]) -> dict[str, Any]: + value = params.get("profile") + if not isinstance(value, dict): + raise HostRequestError( + self.spec.error_code("profile_invalid"), + "request requires a DSH Profile projection", + ) + return value + + def _require_descriptor(self) -> DshAgentProviderDescriptor: + if self.descriptor is None: + raise HostRequestError( + self.spec.error_code("handshake_required"), + "DSH Profile handshake is incomplete", + ) + return self.descriptor + + def _require_ready_descriptor(self) -> DshAgentProviderDescriptor: + descriptor = self._require_descriptor() + if self.state != "ready": + raise HostRequestError( + self.spec.error_code("provider_unavailable"), + f"{self.spec.display_name} DSH provider is not ready", + ) + return descriptor + + def _check_fences(self, params: dict[str, Any], *, profile_optional: bool = False) -> None: + descriptor = self._require_descriptor() + if not profile_optional and params.get("profileDigest") != descriptor.profile_digest: + raise HostRequestError( + self.spec.error_code("profile_mismatch"), + "request crossed a DSH Profile fence", + ) + if params.get("descriptorDigest") != descriptor.descriptor_digest: + raise HostRequestError( + self.spec.error_code("descriptor_mismatch"), + "request crossed a descriptor fence", + ) + + def _execution_bridge_required(self) -> HostRequestError: + return HostRequestError( + self.spec.bridge_required_code, + self.spec.bridge_required_message, + ) + + +def main(argv: Sequence[str] | None = None) -> int: + arguments = list(sys.argv[1:] if argv is None else argv) + if len(arguments) != 1 or arguments[0] not in SHIPPED_DSH_PROVIDER_SPECS: + return 2 + spec = SHIPPED_DSH_PROVIDER_SPECS[arguments[0]] + state = DescriptorHostState(spec) + for line in sys.stdin: + request: dict[str, Any] | None = None + try: + value = json.loads(line) + if not isinstance(value, dict): + raise HostRequestError( + spec.error_code("request_invalid"), "request must be an object" + ) + request = value + request_id = request.get("id") + method = request.get("method") + params = request.get("params") or {} + if ( + not isinstance(request_id, str) + or method not in DSH_AGENT_PROVIDER_HOST_METHODS + or not isinstance(params, dict) + ): + raise HostRequestError( + spec.error_code("request_invalid"), "request envelope is invalid" + ) + response = {"id": request_id, "result": state.dispatch(str(method), params)} + except Exception as error: # protocol boundary must always answer + response = { + "id": request.get("id") if isinstance(request, dict) else "unknown", + "error": { + "code": getattr(error, "code", spec.error_code("internal_error")), + "message": str(error), + }, + } + sys.stdout.write(json.dumps(response, separators=(",", ":")) + "\n") + sys.stdout.flush() + if state.state == "disposed": + break + return 0 + + +if __name__ == "__main__": # pragma: no cover - subprocess entrypoint + raise SystemExit(main()) + + +__all__ = ["DescriptorHostState", "HostRequestError", "main"] diff --git a/ksadk/plugins/providers/harness.py b/ksadk/plugins/providers/harness.py new file mode 100644 index 00000000..92d93e2a --- /dev/null +++ b/ksadk/plugins/providers/harness.py @@ -0,0 +1,627 @@ +"""KsADK Harness AgentProvider backed by the canonical RuntimeExecutor. + +The provider composes locked MCP, Skill, and Context capabilities, then +delegates every turn to ``HarnessRuntimeAdapter`` through +``invoke_runtime_conversation_once``. RuntimeEvent persistence and Session +history therefore stay on the existing conversation pipeline; this module does +not create another event stream or transcript store. +""" +from __future__ import annotations + +import json +from collections.abc import Mapping, Sequence +from dataclasses import dataclass, replace +from pathlib import Path +from typing import Any, Protocol, cast, runtime_checkable + +from ksadk.harness.config import HarnessConfig, McpToolSpec, SandboxPolicy +from ksadk.harness.reasoner import HarnessReasoner, LiteLLMHarnessReasoner +from ksadk.harness.runtime import HarnessRuntimeAdapter +from ksadk.plugins.bundle import ResolvedPluginBundle +from ksadk.plugins.contracts import CompositionProfile, PluginManifest +from ksadk.plugins.host import PluginExecutionContext, PluginHostError +from ksadk.runtime import RuntimeExecutor, RuntimeLaunchContext, RuntimeRegistry, StartRequest +from ksadk.runtime.conversation_execution import invoke_runtime_conversation_once +from ksadk.sessions import create_session_service +from ksadk.sessions.base import BaseSessionService + +_HISTORY_ENVELOPE_PREFIX = "agentkit.conversation-history/v1:" + + +@dataclass(frozen=True) +class HarnessSkillContribution: + name: str + instructions: str + + +@dataclass(frozen=True) +class HarnessProviderInventory: + provider: str + execution_strategy: str + model: str + history_owner: str + mcp_servers: tuple[str, ...] + skills: tuple[str, ...] + context_contributors: tuple[str, ...] + + +@dataclass(frozen=True) +class HarnessTurnRequest: + user_id: str + session_id: str | None + messages: tuple[Mapping[str, Any], ...] + model: str | None = None + request_metadata: Mapping[str, Any] | None = None + invocation_id: str | None = None + + @classmethod + def parse(cls, value: Any) -> "HarnessTurnRequest": + if isinstance(value, cls): + return value + if not isinstance(value, Mapping): + raise PluginHostError( + "harness_input_invalid", "Harness input must be an object" + ) + user_id = str(value.get("user_id") or value.get("userId") or "").strip() + if not user_id: + raise PluginHostError( + "harness_input_invalid", "Harness input requires user_id" + ) + raw_messages = value.get("messages") + if raw_messages is None and value.get("input") is not None: + raw_messages = [{"role": "user", "content": value.get("input")}] + if not isinstance(raw_messages, Sequence) or isinstance( + raw_messages, (str, bytes) + ): + raise PluginHostError( + "harness_input_invalid", "Harness input requires messages" + ) + messages: list[Mapping[str, Any]] = [] + for index, message in enumerate(raw_messages): + if not isinstance(message, Mapping): + raise PluginHostError( + "harness_input_invalid", + f"Harness messages[{index}] must be an object", + ) + role = str(message.get("role") or "").strip() + if role not in {"system", "user", "assistant", "tool"}: + raise PluginHostError( + "harness_input_invalid", + f"Harness messages[{index}] has unsupported role {role!r}", + ) + messages.append(dict(message)) + if not messages or messages[-1].get("role") != "user": + raise PluginHostError( + "harness_input_invalid", "Harness turn must end with a user message" + ) + session_id = str( + value.get("session_id") or value.get("sessionId") or "" + ).strip() + model = str(value.get("model") or "").strip() + metadata = value.get("request_metadata") or value.get("requestMetadata") + if metadata is not None and not isinstance(metadata, Mapping): + raise PluginHostError( + "harness_input_invalid", "request_metadata must be an object" + ) + return cls( + user_id=user_id, + session_id=session_id or None, + messages=tuple(messages), + model=model or None, + request_metadata=dict(metadata) if metadata is not None else None, + invocation_id=str( + value.get("invocation_id") or value.get("invocationId") or "" + ).strip() + or None, + ) + + +@dataclass(frozen=True) +class HarnessTurnResult: + session_id: str + output_text: str + usage: Mapping[str, Any] + metadata: Mapping[str, Any] + inventory: HarnessProviderInventory + + +@runtime_checkable +class HarnessMCPSource(Protocol): + def harness_mcp_specs( + self, bundle: ResolvedPluginBundle + ) -> Sequence[McpToolSpec]: ... + + +@runtime_checkable +class HarnessSkillSource(Protocol): + def harness_skill( + self, bundle: ResolvedPluginBundle + ) -> HarnessSkillContribution: ... + + +@runtime_checkable +class HarnessContextSource(Protocol): + async def harness_context( + self, bundle: ResolvedPluginBundle, request: HarnessTurnRequest + ) -> str: ... + + +class _ConversationHistoryReasoner: + """Restore canonical message roles before calling the Harness reasoner. + + HarnessRuntimeAdapter currently builds ``system + current user`` itself. + The provider encodes the canonical conversation input into that user slot; + this wrapper expands it back into structured roles without reimplementing + the Harness reasoning/tool loop. + """ + + def __init__(self, delegate: HarnessReasoner) -> None: + self._delegate = delegate + + async def complete( + self, + *, + model: str, + prompt: str, + messages: Sequence[dict[str, Any]], + tools: Sequence[Any], + ) -> Any: + expanded = list(messages) + if len(expanded) >= 2: + content = expanded[1].get("content") + if isinstance(content, str) and content.startswith(_HISTORY_ENVELOPE_PREFIX): + raw = content.removeprefix(_HISTORY_ENVELOPE_PREFIX) + try: + history = json.loads(raw) + except json.JSONDecodeError as error: + raise RuntimeError("invalid canonical Harness history envelope") from error + if not isinstance(history, list) or not all( + isinstance(item, dict) for item in history + ): + raise RuntimeError("invalid canonical Harness history payload") + expanded = [expanded[0], *_chat_history(history), *expanded[2:]] + return await self._delegate.complete( + model=model, + prompt=prompt, + messages=expanded, + tools=tools, + ) + + +class _ConversationHistoryHarnessAdapter(HarnessRuntimeAdapter): + """Compatibility adapter with SessionService as the only history owner.""" + + async def start(self, request: StartRequest): # type: ignore[no-untyped-def] + preprocessing = request.conversation_preprocessing() + if preprocessing is not None and preprocessing.messages: + request = request.model_copy( + update={ + "input": _HISTORY_ENVELOPE_PREFIX + + json.dumps( + preprocessing.messages, + ensure_ascii=False, + sort_keys=True, + separators=(",", ":"), + ) + } + ) + return await super().start(request) + + async def execute_request(self, request: StartRequest) -> dict[str, Any]: + # The standalone Harness adapter intentionally offers process-local + # continuity. PluginHost already prepares the complete canonical + # SessionService history, so retaining that same turn again inside the + # adapter would create two history owners and duplicate future turns. + session = self._session_for(request) + async with session.lock: + session.messages.clear() + try: + result = await self._execute_session_request(request, session) + return cast(dict[str, Any], result) + finally: + session.messages.clear() + + +class KsADKHarnessProviderRuntime: + """PluginHost AgentProvider that owns Harness activation assembly.""" + + def __init__( + self, + *, + plugin_id: str, + session_service: BaseSessionService, + reasoner: HarnessReasoner, + ) -> None: + self._plugin_id = plugin_id + self._session_service = session_service + self._reasoner = reasoner + self._ready = False + self._disposed = False + self._last_inventory: HarnessProviderInventory | None = None + + @property + def last_inventory(self) -> HarnessProviderInventory | None: + return self._last_inventory + + @property + def disposed(self) -> bool: + return self._disposed + + async def start(self) -> None: + if self._disposed: + raise RuntimeError("Harness provider is disposed") + self._ready = True + + async def health(self) -> bool: + return self._ready and not self._disposed + + async def drain(self) -> None: + self._ready = False + + async def dispose(self) -> None: + self._ready = False + self._disposed = True + + async def prepare( + self, + bundle: ResolvedPluginBundle, + *, + capabilities: PluginExecutionContext, + ) -> "KsADKHarnessActivation": + if not self._ready or self._disposed: + raise PluginHostError( + "harness_provider_unavailable", "Harness provider is not ready" + ) + + mcp_specs: list[McpToolSpec] = [] + mcp_owners: list[str] = [] + for binding in capabilities.all("mcp.connector/v1"): + if not isinstance(binding.runtime, HarnessMCPSource): + raise PluginHostError( + "harness_mcp_incompatible", + f"plugin {binding.plugin_id} cannot project Harness MCP config", + ) + mcp_specs.extend(binding.runtime.harness_mcp_specs(bundle)) + mcp_owners.append(binding.plugin_id) + + skills: list[HarnessSkillContribution] = [] + skill_owners: list[str] = [] + for binding in capabilities.all("skill.source/v1"): + if not isinstance(binding.runtime, HarnessSkillSource): + raise PluginHostError( + "harness_skill_incompatible", + f"plugin {binding.plugin_id} cannot project Harness instructions", + ) + contribution = binding.runtime.harness_skill(bundle) + if not contribution.name.strip() or not contribution.instructions.strip(): + raise PluginHostError( + "harness_skill_invalid", + f"plugin {binding.plugin_id} returned an empty Skill contribution", + ) + skills.append(contribution) + skill_owners.append(binding.plugin_id) + + context_sources: list[HarnessContextSource] = [] + context_owners: list[str] = [] + for binding in capabilities.all("context.contributor/v1"): + if not isinstance(binding.runtime, HarnessContextSource): + raise PluginHostError( + "harness_context_incompatible", + f"plugin {binding.plugin_id} cannot contribute Harness context", + ) + context_sources.append(binding.runtime) + context_owners.append(binding.plugin_id) + + execution = bundle.resolved_agent_spec.get("execution") + strategy = ( + str(execution.get("strategy") or "direct").strip() + if isinstance(execution, Mapping) + else "direct" + ) + if strategy != "direct": + raise PluginHostError( + "harness_execution_strategy_unsupported", + f"KsADK Harness Provider does not support {strategy!r}", + ) + + model, prompt = _bundle_model_and_prompt(bundle) + if skills: + prompt = _append_prompt_sections( + prompt, + [f"Skill {item.name}:\n{item.instructions}" for item in skills], + ) + config = HarnessConfig( + model=model, + prompt=prompt, + mcp_tools=tuple(mcp_specs), + sandbox=SandboxPolicy(read_only=True), + runtime="yaml", + ) + inventory = HarnessProviderInventory( + provider=self._plugin_id, + execution_strategy=strategy, + model=model, + history_owner="canonical_session_service", + mcp_servers=tuple(mcp_owners), + skills=tuple(item.name for item in skills), + context_contributors=tuple(context_owners), + ) + self._last_inventory = inventory + workspace_root = bundle.root / "runtime" + if not workspace_root.is_dir(): + workspace_root = bundle.root + return KsADKHarnessActivation( + bundle=bundle, + config=config, + agent_name=bundle.manifest.agent_id, + workspace_root=workspace_root, + reasoner=self._reasoner, + context_sources=tuple(context_sources), + session_service=self._session_service, + inventory=inventory, + ) + + +class KsADKHarnessProviderFactory: + def __init__( + self, + *, + session_service: BaseSessionService | None = None, + reasoner: HarnessReasoner | None = None, + ) -> None: + self._session_service = session_service + self._reasoner = reasoner + self.runtime: KsADKHarnessProviderRuntime | None = None + + async def stage( + self, + manifest: PluginManifest, + *, + profile: CompositionProfile, + services: Mapping[str, Any], + ) -> KsADKHarnessProviderRuntime: + del profile + service = self._session_service or services.get("session_service") + if service is None: + service = create_session_service(backend="memory") + if not isinstance(service, BaseSessionService): + raise PluginHostError( + "harness_session_service_invalid", + "Harness provider requires a BaseSessionService", + ) + reasoner = self._reasoner or services.get("harness_reasoner") + if reasoner is None: + reasoner = LiteLLMHarnessReasoner() + self.runtime = KsADKHarnessProviderRuntime( + plugin_id=manifest.metadata.id, + session_service=service, + reasoner=reasoner, + ) + return self.runtime + + +class KsADKHarnessActivation: + def __init__( + self, + *, + bundle: ResolvedPluginBundle, + config: HarnessConfig, + agent_name: str, + workspace_root: Path, + reasoner: HarnessReasoner, + context_sources: tuple[HarnessContextSource, ...], + session_service: BaseSessionService, + inventory: HarnessProviderInventory, + ) -> None: + self._bundle = bundle + self._config = config + self._agent_name = agent_name + self._workspace_root = workspace_root + self._reasoner = reasoner + self._context_sources = context_sources + self._session_service = session_service + self._inventory = inventory + self._ready = False + self._disposed = False + self._executors: list[RuntimeExecutor] = [] + self._kernel_adapter: HarnessRuntimeAdapter | None = None + + async def start(self) -> None: + if self._disposed: + raise RuntimeError("Harness activation is disposed") + self._ready = True + + async def health(self) -> bool: + return self._ready and not self._disposed + + async def execute(self, request: Any) -> HarnessTurnResult: + if not self._ready or self._disposed: + raise PluginHostError( + "harness_activation_unavailable", "Harness activation is not ready" + ) + turn = HarnessTurnRequest.parse(request) + context_sections = [ + text.strip() + for source in self._context_sources + if (text := await source.harness_context(self._bundle, turn)).strip() + ] + config = replace( + self._config, + prompt=_append_prompt_sections(self._config.prompt, context_sections), + ) + executor, launch_context = _build_direct_backend( + config, + agent_name=self._agent_name, + workspace_root=self._workspace_root, + reasoner=self._reasoner, + ) + self._executors.append(executor) + preparation = await executor.prepare_start(launch_context) + session_id, result = await invoke_runtime_conversation_once( + executor=executor, + launch_context=launch_context, + agent_id=self._agent_name, + user_id=turn.user_id, + messages=[dict(item) for item in turn.messages], + session_id=turn.session_id, + model=turn.model or config.model, + instructions=config.prompt, + request_metadata=turn.request_metadata, + invocation_id=turn.invocation_id, + session_service_provider=lambda: self._session_service, + runtime_preparation=preparation, + ) + return HarnessTurnResult( + session_id=session_id, + output_text=str(result.get("output_text") or ""), + usage=dict(result.get("usage") or {}), + metadata=dict(result.get("metadata") or {}), + inventory=self._inventory, + ) + + def runtime_adapter(self) -> HarnessRuntimeAdapter: + """Return the activation-owned adapter used by AgentKernel Scheduler. + + The immutable profile has already assembled model instructions, MCP, + Skills, sandbox and permissions into ``self._config``. Reusing one + adapter per session activation preserves Harness' honest process-local + continuity while AgentKernel remains the only event persistence owner. + """ + + if not self._ready or self._disposed: + raise PluginHostError( + "harness_activation_unavailable", "Harness activation is not ready" + ) + if self._kernel_adapter is None: + self._kernel_adapter = HarnessRuntimeAdapter( + self._config, + agent_name=self._agent_name, + reasoner=self._reasoner, + workspace_root=self._workspace_root, + ) + return self._kernel_adapter + + async def drain(self) -> None: + self._ready = False + + async def dispose(self) -> None: + self._ready = False + first_error: BaseException | None = None + if self._kernel_adapter is not None: + try: + await self._kernel_adapter.close_all() + except BaseException as error: # cleanup must continue + first_error = error + self._kernel_adapter = None + for executor in reversed(self._executors): + try: + await executor.close_all() + except BaseException as error: # cleanup must continue + if first_error is None: + first_error = error + self._executors.clear() + self._disposed = True + if first_error is not None: + raise first_error + + +def _build_direct_backend( + config: HarnessConfig, + *, + agent_name: str, + workspace_root: Path, + reasoner: HarnessReasoner, +) -> tuple[RuntimeExecutor, RuntimeLaunchContext]: + """Internal execution seam; Phase 2 does not expose strategy as a plugin.""" + + history_reasoner = _ConversationHistoryReasoner(reasoner) + registry = RuntimeRegistry() + registry.register( + "harness", + lambda _context: _ConversationHistoryHarnessAdapter( + config, + agent_name=agent_name, + reasoner=history_reasoner, + workspace_root=workspace_root, + ), + ) + return RuntimeExecutor(registry), RuntimeLaunchContext( + runtime_type="harness", + project_dir=workspace_root, + config={ + "model": config.model, + "base_instructions": config.prompt, + "sandbox_read_only": config.sandbox.read_only, + }, + ) + + +def _bundle_model_and_prompt(bundle: ResolvedPluginBundle) -> tuple[str, str]: + spec = bundle.resolved_agent_spec + raw_model = spec.get("model") + model = ( + str(raw_model.get("model") or "").strip() + if isinstance(raw_model, Mapping) + else str(raw_model or "").strip() + ) + instructions = spec.get("instructions") + if not isinstance(instructions, Mapping): + instructions = {} + system = str(instructions.get("system") or "").strip() + task = str(instructions.get("task") or "").strip() + prompt = _append_prompt_sections(system, [task]) + if not model: + raise PluginHostError( + "harness_bundle_model_missing", "Bundle resolved Agent spec has no model" + ) + if not prompt: + raise PluginHostError( + "harness_bundle_prompt_missing", "Bundle resolved Agent spec has no instructions" + ) + return model, prompt + + +def _append_prompt_sections(base: str, sections: Sequence[str]) -> str: + values = [base.strip(), *(section.strip() for section in sections)] + return "\n\n".join(value for value in values if value) + + +def _chat_history(history: Sequence[Mapping[str, Any]]) -> list[dict[str, Any]]: + """Translate Responses message content into the Harness chat shape.""" + + normalized: list[dict[str, Any]] = [] + for item in history: + role = str(item.get("role") or "").strip().lower() + if role == "model": + role = "assistant" + if role not in {"user", "assistant", "tool"}: + continue + content = item.get("content") + if isinstance(content, Sequence) and not isinstance( + content, (str, bytes, bytearray) + ): + segments = [ + str(part.get("text") or "") + for part in content + if isinstance(part, Mapping) and part.get("text") is not None + ] + content = "\n".join(segment for segment in segments if segment) + message = {"role": role, "content": str(content or "")} + for key in ("tool_call_id", "name", "tool_calls"): + if key in item: + message[key] = item[key] + normalized.append(message) + return normalized + + +__all__ = [ + "HarnessContextSource", + "HarnessMCPSource", + "HarnessProviderInventory", + "HarnessSkillContribution", + "HarnessSkillSource", + "HarnessTurnRequest", + "HarnessTurnResult", + "KsADKHarnessProviderFactory", + "KsADKHarnessProviderRuntime", +] diff --git a/ksadk/plugins/providers/harness_dsh.py b/ksadk/plugins/providers/harness_dsh.py new file mode 100644 index 00000000..d9b1c459 --- /dev/null +++ b/ksadk/plugins/providers/harness_dsh.py @@ -0,0 +1,91 @@ +"""KsADK Harness AgentProvider packaged as a standard DSH Bundle. + +DSH owns installation and discovery. The shared bridge validates the exact +registration, then delegates execution to the optional in-process KsADK +Harness implementation so credentials and runtime services stay in KsADK. +""" + +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any + +from ksadk.plugins.contracts import CompositionProfile, PluginManifest +from ksadk.plugins.providers.dsh import DshAgentProviderHost, DshAgentProviderRegistration +from ksadk.plugins.providers.shipped_dsh import ( + HARNESS_DSH_SPEC, + ShippedDshBridgeFactory, + ShippedDshBridgeRuntime, + ShippedDshBundle, + load_shipped_dsh_bundle, + shipped_dsh_host_command, +) + +if TYPE_CHECKING: + from ksadk.plugins.providers.harness import KsADKHarnessProviderFactory + +SHIPPED_HARNESS_DSH_PACKAGE = HARNESS_DSH_SPEC.package_name +SHIPPED_HARNESS_PROVIDER_ID = HARNESS_DSH_SPEC.provider_id +SHIPPED_HARNESS_PROVIDER_VERSION = HARNESS_DSH_SPEC.version +ShippedHarnessDshBundle = ShippedDshBundle + + +def shipped_harness_dsh_bundle() -> ShippedHarnessDshBundle: + return load_shipped_dsh_bundle(HARNESS_DSH_SPEC) + + +def shipped_harness_dsh_host_command(*, python_executable: str | None = None) -> tuple[str, ...]: + return shipped_dsh_host_command(HARNESS_DSH_SPEC, python_executable=python_executable) + + +class KsADKHarnessDshBridgeRuntime(ShippedDshBridgeRuntime): + """Named Harness bridge type retained for inventory and public typing.""" + + +class KsADKHarnessDshBridgeFactory(ShippedDshBridgeFactory): + runtime_class = KsADKHarnessDshBridgeRuntime + + def __init__( + self, + host: DshAgentProviderHost, + registration: DshAgentProviderRegistration, + *, + execution_factory: KsADKHarnessProviderFactory | None = None, + owns_host: bool = True, + ) -> None: + if execution_factory is None: + # Keep the Harness/ADK dependency optional until this provider is + # selected; listing Codex or DSH plugins must stay cheap. + from ksadk.plugins.providers.harness import KsADKHarnessProviderFactory + + execution_factory = KsADKHarnessProviderFactory() + super().__init__( + spec=HARNESS_DSH_SPEC, + host=host, + registration=registration, + execution_factory=execution_factory, + owns_host=owns_host, + ) + + async def stage( + self, + manifest: PluginManifest, + *, + profile: CompositionProfile, + services: Mapping[str, Any], + ) -> KsADKHarnessDshBridgeRuntime: + runtime = await super().stage(manifest, profile=profile, services=services) + assert isinstance(runtime, KsADKHarnessDshBridgeRuntime) + return runtime + + +__all__ = [ + "KsADKHarnessDshBridgeFactory", + "KsADKHarnessDshBridgeRuntime", + "SHIPPED_HARNESS_DSH_PACKAGE", + "SHIPPED_HARNESS_PROVIDER_ID", + "SHIPPED_HARNESS_PROVIDER_VERSION", + "ShippedHarnessDshBundle", + "shipped_harness_dsh_bundle", + "shipped_harness_dsh_host_command", +] diff --git a/ksadk/plugins/providers/legacy.py b/ksadk/plugins/providers/legacy.py new file mode 100644 index 00000000..b0013e12 --- /dev/null +++ b/ksadk/plugins/providers/legacy.py @@ -0,0 +1,215 @@ +"""Central compatibility boundary for pre-DSH Harness AgentBundles. + +Reading an old Bundle and selecting the in-process Harness provider are two +different decisions. Existing ADK, LangGraph and Codex artifacts continue to +use their established adapters. The Harness compatibility adapter is only +available for an immutable Bundle v1 digest that a release/migration owner has +explicitly registered as a historical Harness artifact. + +Bundle v2 is never eligible for this bridge. It must resolve the Harness +provider from the active DSH registration and its deterministic PluginLock. +""" + +from __future__ import annotations + +import hashlib +import json +from dataclasses import dataclass +from pathlib import Path, PurePosixPath +from typing import Iterable, Literal + +from pydantic import ValidationError + +from ksadk.plugins.contracts import PluginManifest +from ksadk.plugins.providers.legacy_catalog import ( + KSADK_HARNESS_AGENT_PROVIDER_PLUGIN_ID, + legacy_harness_agent_provider_manifest, +) +from ksadk.studio.capabilities import compute_bundle_digest +from ksadk.studio.contracts import BundleManifest + + +class LegacyBundleCompatibilityError(ValueError): + """Stable fail-closed result from the legacy Bundle normalizer.""" + + def __init__(self, code: str, message: str) -> None: + super().__init__(message) + self.code = code + + +@dataclass(frozen=True) +class LegacyHarnessSource: + """Immutable identity approved by a release or migration process.""" + + bundle_digest: str + resolved_digest: str + source_revision: int + + @classmethod + def from_verified_manifest(cls, manifest: BundleManifest) -> "LegacyHarnessSource": + """Capture an already-verified historical Bundle v1 identity.""" + + if manifest.bundle_format != "agentkit.bundle/v1": + raise LegacyBundleCompatibilityError( + "legacy_harness_bundle_version_unsupported", + "Only an AgentBundle v1 can be registered as a legacy Harness source", + ) + _require_self_consistent_digest(manifest) + return cls( + bundle_digest=manifest.bundle_digest, + resolved_digest=manifest.resolved_digest, + source_revision=manifest.source_revision, + ) + + +@dataclass(frozen=True) +class HarnessProviderSelection: + """Normalized provider choice; execution stays with the owning runtime.""" + + route: Literal["dsh", "legacy"] + manifest: PluginManifest | None = None + + +class LegacyBundleAdapter: + """Select Harness compatibility without broad version-based fallback.""" + + def __init__(self, sources: Iterable[LegacyHarnessSource] = ()) -> None: + source_by_digest: dict[str, LegacyHarnessSource] = {} + for source in sources: + previous = source_by_digest.setdefault(source.bundle_digest, source) + if previous != source: + raise ValueError("conflicting legacy Harness identities use the same bundle digest") + self._sources = source_by_digest + + def select_from_bundle( + self, + root: str | Path, + *, + registered_provider_ids: Iterable[str] = (), + ) -> tuple[BundleManifest, HarnessProviderSelection | None]: + """Verify one immutable Bundle before applying the compatibility rule.""" + + bundle_root = Path(root).resolve() + try: + payload = json.loads((bundle_root / "manifest.json").read_text(encoding="utf-8")) + manifest = BundleManifest.model_validate(payload) + except (OSError, UnicodeError, json.JSONDecodeError, ValidationError) as error: + raise LegacyBundleCompatibilityError( + "bundle_manifest_invalid", "AgentBundle manifest is invalid" + ) from error + _require_self_consistent_digest(manifest) + declared: set[str] = set() + for entry in manifest.files: + relative = PurePosixPath(entry.path) + if relative.is_absolute() or ".." in relative.parts: + raise LegacyBundleCompatibilityError( + "bundle_path_invalid", "AgentBundle contains an unsafe file path" + ) + path = (bundle_root / Path(*relative.parts)).resolve() + if not path.is_relative_to(bundle_root): + raise LegacyBundleCompatibilityError( + "bundle_path_invalid", "AgentBundle file path escapes its root" + ) + try: + content = path.read_bytes() + except OSError as error: + raise LegacyBundleCompatibilityError( + "bundle_file_missing", f"AgentBundle file is missing: {entry.path}" + ) from error + digest = f"sha256:{hashlib.sha256(content).hexdigest()}" + if len(content) != entry.size or digest != entry.sha256: + raise LegacyBundleCompatibilityError( + "bundle_file_digest_mismatch", + f"AgentBundle file failed integrity verification: {entry.path}", + ) + declared.add(entry.path) + actual = { + path.relative_to(bundle_root).as_posix() + for path in bundle_root.rglob("*") + if path.is_file() and path.name != "manifest.json" + } + if actual != declared: + raise LegacyBundleCompatibilityError( + "bundle_membership_mismatch", + "AgentBundle contains missing or undeclared files", + ) + return manifest, self.select_harness_provider( + manifest, + registered_provider_ids=registered_provider_ids, + ) + + def select_harness_provider( + self, + manifest: BundleManifest, + *, + registered_provider_ids: Iterable[str] = (), + ) -> HarnessProviderSelection | None: + """Return the exact Harness route, or ``None`` for non-Harness Bundles. + + For Bundle v1, a matching approved digest is the Harness discriminator; + this also supports historical manifests that predate ``runtimeType``. + For Bundle v2, ``runtimeType=harness`` always requires a ready DSH + provider registration. No v1 allowlist entry can change that rule. + """ + + runtime_type = manifest.runtime_type.strip().lower() + registered = frozenset(registered_provider_ids) + + if manifest.bundle_format == "agentkit.bundle/v2": + if runtime_type != "harness": + return None + if KSADK_HARNESS_AGENT_PROVIDER_PLUGIN_ID not in registered: + raise LegacyBundleCompatibilityError( + "agent_provider_not_registered", + "Harness Bundle v2 requires a ready DSH provider registration", + ) + return HarnessProviderSelection(route="dsh") + + source = self._sources.get(manifest.bundle_digest) + if source is None: + if runtime_type == "harness": + raise LegacyBundleCompatibilityError( + "legacy_harness_source_unrecognized", + "Bundle v1 is not an explicitly registered historical Harness artifact", + ) + return None + + _require_self_consistent_digest(manifest) + if ( + manifest.resolved_digest != source.resolved_digest + or manifest.source_revision != source.source_revision + ): + raise LegacyBundleCompatibilityError( + "legacy_harness_source_mismatch", + "Bundle v1 metadata does not match its registered historical identity", + ) + if runtime_type not in {"", "harness"}: + raise LegacyBundleCompatibilityError( + "legacy_harness_runtime_mismatch", + "Registered historical Harness Bundle declares another runtime type", + ) + if manifest.plugin_lock_digest or manifest.composition_profile_digest: + raise LegacyBundleCompatibilityError( + "legacy_harness_composition_forbidden", + "A legacy Harness Bundle cannot carry partial Bundle v2 composition state", + ) + return HarnessProviderSelection( + route="legacy", + manifest=legacy_harness_agent_provider_manifest(), + ) + + +def _require_self_consistent_digest(manifest: BundleManifest) -> None: + if not manifest.bundle_digest or manifest.bundle_digest != compute_bundle_digest(manifest): + raise LegacyBundleCompatibilityError( + "legacy_harness_bundle_digest_mismatch", + "Historical Harness manifest does not match its declared bundle digest", + ) + + +__all__ = [ + "HarnessProviderSelection", + "LegacyBundleAdapter", + "LegacyBundleCompatibilityError", + "LegacyHarnessSource", +] diff --git a/ksadk/plugins/providers/legacy_catalog.py b/ksadk/plugins/providers/legacy_catalog.py new file mode 100644 index 00000000..c655dad6 --- /dev/null +++ b/ksadk/plugins/providers/legacy_catalog.py @@ -0,0 +1,100 @@ +"""Explicit compatibility catalog for pre-DSH AgentProvider manifests. + +All new AgentProviders, including the official Codex and KsADK Harness +Bundles, enter Bundle v2 composition only through a ready DSH registration. +The old in-process Harness manifest remains an explicit compatibility artifact +for already-built Agents; callers must never add it to new resolution silently. +""" + +from __future__ import annotations + +import hashlib + +from ksadk.plugins.contracts import PluginManifest + +BUILTIN_PROVIDER_VERSION = "1.0.0" +CODEX_AGENT_PROVIDER_PLUGIN_ID = "io.ksadk.codex-provider" +KSADK_HARNESS_AGENT_PROVIDER_PLUGIN_ID = "io.ksadk.harness-provider" + + +def _digest(plugin_id: str) -> str: + payload = f"{plugin_id}@{BUILTIN_PROVIDER_VERSION}:builtin-provider-v1".encode() + return f"sha256:{hashlib.sha256(payload).hexdigest()}" + + +def _provider_manifest( + plugin_id: str, + *, + domain: str, + runtime: str, + isolation: str, + source: str, + entrypoint: str | None = None, +) -> PluginManifest: + spec: dict[str, object] = { + "domain": domain, + "runtime": runtime, + "provides": [ + { + "definition": "agent.provider/v1", + "slot": "agent.execution", + "mode": "unique", + } + ], + "permissions": [], + "isolation": isolation, + "compatibility": { + "kernelApi": ">=1,<2", + "runtimeProtocols": ["agentkit.runtime/v1"], + "python": ">=3.10,<3.15" if runtime == "python" else None, + }, + "healthContract": "plugin.health/v1", + "provenance": { + "source": source, + "digest": _digest(plugin_id), + "license": "Apache-2.0", + }, + } + if entrypoint is not None: + spec["entrypoint"] = entrypoint + compatibility = spec["compatibility"] + assert isinstance(compatibility, dict) + if compatibility["python"] is None: + del compatibility["python"] + manifest = PluginManifest.model_validate( + { + "metadata": {"id": plugin_id, "version": BUILTIN_PROVIDER_VERSION}, + "spec": spec, + } + ) + if not isinstance(manifest, PluginManifest): # pragma: no cover - Pydantic invariant + raise TypeError("built-in provider manifest validation returned an invalid type") + return manifest + + +def builtin_agent_provider_manifests() -> tuple[PluginManifest, ...]: + """Return no Bundle v2 providers; DSH registration is authoritative.""" + + return () + + +def legacy_harness_agent_provider_manifest() -> PluginManifest: + """Return the old manifest only for an explicitly detected legacy Agent.""" + + return _provider_manifest( + KSADK_HARNESS_AGENT_PROVIDER_PLUGIN_ID, + domain="ksadk-platform", + runtime="python", + isolation="in-process", + source="builtin", + entrypoint="ksadk.plugins.providers.harness:KsADKHarnessProviderFactory", + ) + + +__all__ = [ + "BUILTIN_PROVIDER_VERSION", + "CODEX_AGENT_PROVIDER_PLUGIN_ID", + "KSADK_HARNESS_AGENT_PROVIDER_PLUGIN_ID", + "builtin_agent_provider_manifests", + "legacy_harness_agent_provider_manifest", +] diff --git a/ksadk/plugins/providers/shipped_dsh.py b/ksadk/plugins/providers/shipped_dsh.py new file mode 100644 index 00000000..455f447d --- /dev/null +++ b/ksadk/plugins/providers/shipped_dsh.py @@ -0,0 +1,370 @@ +"""Shared implementation for wheel-owned DSH AgentProvider bundles. + +Provider-specific modules declare identity and select an execution factory. +This module owns the repeated package validation, fixed host command, +registration fences, and bridge lifecycle. It does not own an agent loop. +""" + +from __future__ import annotations + +import json +import sys +from collections.abc import Mapping +from dataclasses import dataclass +from pathlib import Path +from typing import Any, Protocol + +from ksadk.plugins.bundle import ResolvedPluginBundle +from ksadk.plugins.contracts import CompositionProfile, PluginManifest +from ksadk.plugins.host import PluginExecutionContext, PluginHostError +from ksadk.plugins.providers.dsh import ( + DshAgentProviderHost, + DshAgentProviderRegistration, + dsh_agent_provider_manifest, +) + + +@dataclass(frozen=True) +class ShippedDshProviderSpec: + key: str + display_name: str + package_name: str + provider_id: str + version: str + bundle_directory: str + bridge_required_code: str + bridge_required_message: str + + @property + def provider_ref(self) -> str: + return f"plugin://{self.provider_id}@{self.version}" + + def error_code(self, suffix: str) -> str: + return f"{self.key}_dsh_{suffix}" + + +CODEX_DSH_SPEC = ShippedDshProviderSpec( + key="codex", + display_name="Codex", + package_name="@kingsoftcloud/ksadk-codex-provider", + provider_id="io.ksadk.codex-provider", + version="1.0.0", + bundle_directory="ksadk-codex", + bridge_required_code="codex_provider_bridge_required", + bridge_required_message=( + "Codex execution requires the registration-gated RuntimeAdapter bridge" + ), +) + +HARNESS_DSH_SPEC = ShippedDshProviderSpec( + key="harness", + display_name="KsADK Harness", + package_name="@kingsoftcloud/ksadk-harness-provider", + provider_id="io.ksadk.harness-provider", + version="1.0.0", + bundle_directory="ksadk-harness", + bridge_required_code="harness_legacy_bridge_required", + bridge_required_message=( + "Harness execution requires the registration-gated RuntimeAdapter bridge" + ), +) + +SHIPPED_DSH_PROVIDER_SPECS = { + CODEX_DSH_SPEC.key: CODEX_DSH_SPEC, + HARNESS_DSH_SPEC.key: HARNESS_DSH_SPEC, +} + + +@dataclass(frozen=True) +class ShippedDshBundle: + package_name: str + version: str + root: Path + patch: Path + + +def load_shipped_dsh_bundle(spec: ShippedDshProviderSpec) -> ShippedDshBundle: + """Locate and validate one immutable DSH bundle shipped in the wheel.""" + + root = Path(__file__).with_name("bundles") / spec.bundle_directory + package_path = root / "package.json" + try: + payload = json.loads(package_path.read_text(encoding="utf-8")) + except (OSError, UnicodeError, json.JSONDecodeError) as error: + raise PluginHostError( + spec.error_code("bundle_invalid"), + f"shipped {spec.display_name} DSH Bundle package.json is unavailable", + ) from error + if not isinstance(payload, dict): + raise PluginHostError( + spec.error_code("bundle_invalid"), + f"shipped {spec.display_name} DSH Bundle package.json must be an object", + ) + dsh = payload.get("dsh") + bundle = dsh.get("bundle") if isinstance(dsh, dict) else None + patch_value = bundle.get("patch") if isinstance(bundle, dict) else None + if ( + payload.get("name") != spec.package_name + or payload.get("version") != spec.version + or patch_value != "./cordis.patch.yml" + or "ksadk" in payload + ): + raise PluginHostError( + spec.error_code("bundle_invalid"), + f"shipped {spec.display_name} provider is not a standard pinned DSH Bundle", + ) + patch = (root / str(patch_value)).resolve() + try: + patch.relative_to(root.resolve()) + except ValueError as error: + raise PluginHostError( + spec.error_code("bundle_invalid"), + "DSH Bundle patch escapes its package root", + ) from error + if not patch.is_file() or not (root / "index.mjs").is_file(): + raise PluginHostError( + spec.error_code("bundle_invalid"), + "DSH Bundle contribution files are missing", + ) + return ShippedDshBundle( + package_name=spec.package_name, + version=spec.version, + root=root.resolve(), + patch=patch, + ) + + +def shipped_dsh_host_command( + spec: ShippedDshProviderSpec, + *, + python_executable: str | None = None, +) -> tuple[str, ...]: + """Return fixed argv; bundle content never controls the executable.""" + + load_shipped_dsh_bundle(spec) + executable = str(python_executable or sys.executable).strip() + if not executable or "\x00" in executable: + raise PluginHostError(spec.error_code("host_invalid"), "Python host executable is invalid") + return executable, "-m", "ksadk.plugins.providers.dsh_descriptor_host", spec.key + + +class _ExecutionRuntime(Protocol): + async def start(self) -> None: ... + + async def health(self) -> bool: ... + + async def prepare( + self, + bundle: ResolvedPluginBundle, + *, + capabilities: PluginExecutionContext, + ) -> Any: ... + + async def drain(self) -> None: ... + + async def dispose(self) -> None: ... + + +class _ExecutionFactory(Protocol): + async def stage( + self, + manifest: PluginManifest, + *, + profile: CompositionProfile, + services: Mapping[str, Any], + ) -> _ExecutionRuntime: ... + + +class ShippedDshBridgeRuntime: + """DSH registration lifecycle delegating execution to the owning runtime.""" + + def __init__( + self, + *, + spec: ShippedDshProviderSpec, + host: DshAgentProviderHost, + registration: DshAgentProviderRegistration, + execution_runtime: _ExecutionRuntime, + owns_host: bool, + ) -> None: + self._spec = spec + self._host = host + self._registration = registration + self._execution_runtime = execution_runtime + self._owns_host = owns_host + self._started = False + self._disposed = False + + async def start(self) -> None: + if self._disposed: + raise PluginHostError( + self._spec.error_code("bridge_disposed"), + f"{self._spec.display_name} DSH bridge is disposed", + ) + current = await self._host.registration() + require_same_registration(self._spec, current, self._registration) + await self._execution_runtime.start() + self._started = True + + async def health(self) -> bool: + if not self._started or self._disposed: + return False + return await self._host.health() and await self._execution_runtime.health() + + async def prepare( + self, + bundle: ResolvedPluginBundle, + *, + capabilities: PluginExecutionContext, + ) -> Any: + if not await self.health(): + raise PluginHostError( + self._spec.error_code("bridge_unavailable"), + f"{self._spec.display_name} DSH provider is not ready", + ) + if bundle.composition.profile.agent_provider.ref != self._spec.provider_ref: + raise PluginHostError( + self._spec.error_code("profile_mismatch"), + "Agent Bundle does not select the registered " + f"{self._spec.display_name} DSH provider", + ) + return await self._execution_runtime.prepare(bundle, capabilities=capabilities) + + async def drain(self) -> None: + if self._disposed: + return + await self._execution_runtime.drain() + if self._owns_host and self._host.pid is not None: + await self._host.drain() + self._started = False + + async def dispose(self) -> None: + if self._disposed: + return + self._disposed = True + self._started = False + first_error: BaseException | None = None + try: + await self._execution_runtime.dispose() + except BaseException as error: # cleanup must continue + first_error = error + if self._owns_host: + try: + await self._host.dispose() + except BaseException as error: # cleanup must continue + if first_error is None: + first_error = error + if first_error is not None: + raise first_error + + +class ShippedDshBridgeFactory: + """Admit one exact DSH registration and create its execution bridge.""" + + runtime_class = ShippedDshBridgeRuntime + + def __init__( + self, + *, + spec: ShippedDshProviderSpec, + host: DshAgentProviderHost, + registration: DshAgentProviderRegistration, + execution_factory: _ExecutionFactory, + owns_host: bool = True, + ) -> None: + validate_registration(spec, registration) + self._spec = spec + self._host = host + self._registration = registration + self._execution_factory = execution_factory + self._owns_host = owns_host + self.runtime: ShippedDshBridgeRuntime | None = None + + async def stage( + self, + manifest: PluginManifest, + *, + profile: CompositionProfile, + services: Mapping[str, Any], + ) -> ShippedDshBridgeRuntime: + expected_manifest = dsh_agent_provider_manifest( + self._registration.descriptor, + preflight=self._registration.preflight, + ) + if manifest != expected_manifest: + raise PluginHostError( + self._spec.error_code("manifest_mismatch"), + f"{self._spec.display_name} provider manifest did not come from " + "the ready DSH registration", + ) + if profile.agent_provider.ref != self._spec.provider_ref: + raise PluginHostError( + self._spec.error_code("profile_mismatch"), + "composition profile does not select the shipped " + f"{self._spec.display_name} DSH provider", + ) + current = await self._host.registration() + require_same_registration(self._spec, current, self._registration) + execution_runtime = await self._execution_factory.stage( + manifest, profile=profile, services=services + ) + self.runtime = self.runtime_class( + spec=self._spec, + host=self._host, + registration=self._registration, + execution_runtime=execution_runtime, + owns_host=self._owns_host, + ) + return self.runtime + + +def validate_registration( + spec: ShippedDshProviderSpec, + registration: DshAgentProviderRegistration, +) -> None: + descriptor = registration.descriptor + preflight = registration.preflight + if ( + descriptor.provider_id != spec.provider_id + or descriptor.provider_version != spec.version + or descriptor.plugin_name != spec.package_name + or not preflight.ready + or preflight.profile_digest != descriptor.profile_digest + or preflight.descriptor_digest != descriptor.descriptor_digest + ): + raise PluginHostError( + spec.error_code("registration_invalid"), + f"{spec.display_name} DSH registration does not match the shipped provider fences", + ) + + +def require_same_registration( + spec: ShippedDshProviderSpec, + current: DshAgentProviderRegistration, + expected: DshAgentProviderRegistration, +) -> None: + validate_registration(spec, current) + if ( + current.descriptor != expected.descriptor + or current.preflight != expected.preflight + or current.manifest != expected.manifest + ): + raise PluginHostError( + spec.error_code("registration_changed"), + f"{spec.display_name} DSH provider changed after admission", + ) + + +__all__ = [ + "CODEX_DSH_SPEC", + "HARNESS_DSH_SPEC", + "SHIPPED_DSH_PROVIDER_SPECS", + "ShippedDshBridgeFactory", + "ShippedDshBridgeRuntime", + "ShippedDshBundle", + "ShippedDshProviderSpec", + "load_shipped_dsh_bundle", + "require_same_registration", + "shipped_dsh_host_command", + "validate_registration", +] diff --git a/ksadk/plugins/resolver.py b/ksadk/plugins/resolver.py new file mode 100644 index 00000000..91093977 --- /dev/null +++ b/ksadk/plugins/resolver.py @@ -0,0 +1,331 @@ +"""Pure, deterministic Profile -> PluginLock resolver. + +This module is intentionally side-effect free: it resolves only supplied +manifests and never imports their entrypoints. PluginHost will later own +admission, staging, start, health, and disposal. +""" + +from __future__ import annotations + +import hashlib +import json +import re +from dataclasses import dataclass +from typing import Iterable + +from ksadk.plugins.contracts import ( + CompositionProfile, + LockedCapability, + PluginDependency, + PluginLock, + PluginLockEntry, + PluginManifest, + PluginReference, + plugin_lock_digest, +) + + +class PluginResolutionError(ValueError): + """Stable, typed rejection from the pure composition resolver.""" + + def __init__(self, code: str, message: str) -> None: + super().__init__(message) + self.code = code + + +@dataclass(frozen=True) +class ResolvedComposition: + profile: CompositionProfile + profile_digest: str + plugin_lock: PluginLock + plugin_lock_digest: str + # Build-time audit facts from the exact manifests that produced the lock. + # This is an internal immutable projection, not another wire manifest: the + # public Bundle continues to bind only CompositionProfile and PluginLock. + manifests: tuple[PluginManifest, ...] = () + + +def canonical_composition_profile(profile: CompositionProfile) -> bytes: + return json.dumps( + profile.model_dump(by_alias=True, exclude_none=True, mode="json"), + ensure_ascii=False, + sort_keys=True, + separators=(",", ":"), + ).encode("utf-8") + + +def composition_profile_digest(profile: CompositionProfile) -> str: + return f"sha256:{hashlib.sha256(canonical_composition_profile(profile)).hexdigest()}" + + +class PluginRegistry: + """Immutable in-memory manifest catalog used by build-time resolution.""" + + def __init__(self, manifests: Iterable[PluginManifest]) -> None: + indexed: dict[tuple[str, str], PluginManifest] = {} + for manifest in manifests: + key = (manifest.metadata.id, manifest.metadata.version) + if key in indexed: + raise PluginResolutionError( + "plugin_manifest_duplicate", + f"duplicate plugin manifest {manifest.metadata.id}@{manifest.metadata.version}", + ) + indexed[key] = manifest + self._manifests = indexed + + def resolve(self, profile: CompositionProfile) -> ResolvedComposition: + """Resolve the requested graph without running any plugin code.""" + + selected: dict[str, PluginManifest] = {} + dependencies: dict[str, set[str]] = {} + + def select_reference(reference: PluginReference) -> PluginManifest: + plugin_id, version = _parse_plugin_reference(reference.ref) + manifest = self._manifests.get((plugin_id, version)) + if manifest is None: + raise PluginResolutionError( + "plugin_manifest_unresolved", + f"plugin {plugin_id}@{version} is not in the selected catalog", + ) + select_manifest(manifest) + return manifest + + def select_manifest(manifest: PluginManifest) -> None: + plugin_id = manifest.metadata.id + if plugin_id in selected: + if selected[plugin_id].metadata.version != manifest.metadata.version: + raise PluginResolutionError( + "plugin_version_conflict", + f"profile requires conflicting versions of plugin {plugin_id}", + ) + return + selected[plugin_id] = manifest + dependencies.setdefault(plugin_id, set()) + for requirement in manifest.spec.requires: + provider = self._resolve_requirement(requirement.definition, requirement.version) + if provider.metadata.id == plugin_id: + raise PluginResolutionError( + "plugin_dependency_cycle", + f"plugin {plugin_id} cannot provide its own required capability", + ) + dependencies[plugin_id].add(provider.metadata.id) + select_manifest(provider) + + provider = select_reference(profile.agent_provider) + self._require_agent_provider(provider) + for capability in profile.capabilities: + if capability.ref.startswith("plugin://"): + # A capability entry uses the same pinning grammar as the + # agent provider, but it has no special agent-provider role. + plugin_id, version = _parse_plugin_reference(capability.ref) + manifest = self._manifests.get((plugin_id, version)) + if manifest is None: + raise PluginResolutionError( + "plugin_manifest_unresolved", + f"plugin {plugin_id}@{version} is not in the selected catalog", + ) + select_manifest(manifest) + + self._validate_unique_slots(selected.values()) + lock = self._build_lock(selected, dependencies) + return ResolvedComposition( + profile=profile, + profile_digest=composition_profile_digest(profile), + plugin_lock=lock, + plugin_lock_digest=plugin_lock_digest(lock), + manifests=tuple( + sorted( + selected.values(), + key=lambda item: (item.metadata.id, item.metadata.version), + ) + ), + ) + + def manifest_for(self, plugin_id: str, version: str) -> PluginManifest: + """Return an exact manifest already admitted to this local catalog.""" + + manifest = self._manifests.get((plugin_id, version)) + if manifest is None: + raise PluginResolutionError( + "plugin_manifest_unresolved", + f"plugin {plugin_id}@{version} is not in the selected catalog", + ) + return manifest + + def _resolve_requirement(self, definition: str, constraint: str) -> PluginManifest: + candidates = [ + manifest + for manifest in self._manifests.values() + if any(offer.definition == definition for offer in manifest.spec.provides) + and _version_satisfies(manifest.metadata.version, constraint) + ] + if not candidates: + raise PluginResolutionError( + "plugin_requirement_unresolved", + f"no plugin provides {definition!r} matching {constraint!r}", + ) + if len(candidates) > 1: + names = ", ".join( + f"{item.metadata.id}@{item.metadata.version}" + for item in sorted( + candidates, + key=lambda item: (item.metadata.id, item.metadata.version), + ) + ) + raise PluginResolutionError( + "plugin_requirement_ambiguous", + f"multiple plugins provide {definition!r}: {names}", + ) + return candidates[0] + + @staticmethod + def _require_agent_provider(manifest: PluginManifest) -> None: + if any( + offer.definition == "agent.provider/v1" + and offer.slot == "agent.execution" + and offer.mode == "unique" + for offer in manifest.spec.provides + ): + return + raise PluginResolutionError( + "agent_provider_invalid", + f"plugin {manifest.metadata.id}@{manifest.metadata.version} " + "does not own agent.execution", + ) + + @staticmethod + def _validate_unique_slots(manifests: Iterable[PluginManifest]) -> None: + owners: dict[str, str] = {} + for manifest in manifests: + for offer in manifest.spec.provides: + if offer.mode != "unique": + continue + existing = owners.get(offer.slot) + if existing and existing != manifest.metadata.id: + raise PluginResolutionError( + "plugin_slot_conflict", + f"unique slot {offer.slot!r} is owned by both {existing} " + f"and {manifest.metadata.id}", + ) + owners[offer.slot] = manifest.metadata.id + + @staticmethod + def _build_lock( + selected: dict[str, PluginManifest], dependencies: dict[str, set[str]] + ) -> PluginLock: + entries: list[PluginLockEntry] = [] + for plugin_id, manifest in selected.items(): + entries.append( + PluginLockEntry( + id=plugin_id, + version=manifest.metadata.version, + digest=manifest.spec.provenance.digest, + source=manifest.spec.provenance.source, + signature_ref=manifest.spec.provenance.signature_ref, + license=manifest.spec.provenance.license, + provides=[ + LockedCapability( + definition=offer.definition, + slot=offer.slot, + owner=plugin_id, + ) + for offer in manifest.spec.provides + ], + dependencies=[ + PluginDependency( + id=dependency_id, + version=selected[dependency_id].metadata.version, + digest=selected[dependency_id].spec.provenance.digest, + ) + for dependency_id in sorted(dependencies.get(plugin_id, set())) + ], + ) + ) + return PluginLock(plugins=entries) + + +def _parse_plugin_reference(value: str) -> tuple[str, str]: + # The Pydantic type validates this at the public boundary. Keeping the + # parser defensive makes this pure resolver safe for values reconstructed + # by other language consumers. + if not value.startswith("plugin://") or "@" not in value: + raise PluginResolutionError( + "plugin_reference_invalid", f"invalid plugin reference {value!r}" + ) + plugin_id, version = value.removeprefix("plugin://").rsplit("@", 1) + return plugin_id, version + + +_COMPARATOR = re.compile(r"^(>=|<=|>|<|=)?(\d+)\.(\d+)\.(\d+)$") + + +def _version_satisfies(version: str, constraint: str) -> bool: + """Small exact-range evaluator for manifest capability requirements. + + The manifest accepts a SemVer range string rather than an unbounded + dependency resolver. P2-00A supports the explicit comparator form used + by the contract examples (for example ``>=1,<2``); unsupported forms are + rejected instead of silently accepting a possibly incompatible plugin. + """ + + parsed_version = _parse_release(version, field="plugin version") + comparators = [part.strip() for part in constraint.split(",") if part.strip()] + if not comparators: + raise PluginResolutionError("plugin_constraint_invalid", "empty plugin requirement version") + for comparator in comparators: + match = _COMPARATOR.fullmatch(comparator) + if match is None: + # ``>=1,<2`` is a concise allowed major range in the published + # manifest. Expand it deterministically rather than treating it + # as a lax string comparison. + major_range = re.fullmatch(r"(>=|>|<=|<)(\d+)", comparator) + if major_range is None: + raise PluginResolutionError( + "plugin_constraint_invalid", + f"unsupported plugin requirement version {constraint!r}", + ) + operator, major = major_range.groups() + target = (int(major), 0, 0) + else: + operator = match.group(1) or "=" + target = ( + int(match.group(2)), + int(match.group(3)), + int(match.group(4)), + ) + if not _compare(parsed_version, target, operator): + return False + return True + + +def version_satisfies(version: str, constraint: str) -> bool: + """Evaluate the exact compatibility-range grammar used by plugin manifests.""" + + return _version_satisfies(version, constraint) + + +def _parse_release(value: str, *, field: str) -> tuple[int, int, int]: + match = re.match(r"^(\d+)\.(\d+)\.(\d+)", value) + if match is None: + raise PluginResolutionError("plugin_constraint_invalid", f"invalid {field} {value!r}") + return int(match.group(1)), int(match.group(2)), int(match.group(3)) + + +def _compare(left: tuple[int, int, int], right: tuple[int, int, int], operator: str) -> bool: + return { + ">": left > right, + ">=": left >= right, + "<": left < right, + "<=": left <= right, + "=": left == right, + }[operator] + + +__all__ = [ + "PluginRegistry", + "PluginResolutionError", + "ResolvedComposition", + "canonical_composition_profile", + "composition_profile_digest", + "version_satisfies", +] diff --git a/ksadk/plugins/subagent_providers/__init__.py b/ksadk/plugins/subagent_providers/__init__.py new file mode 100644 index 00000000..e0a9bb0c --- /dev/null +++ b/ksadk/plugins/subagent_providers/__init__.py @@ -0,0 +1,12 @@ +"""Optional SubagentProvider implementations. + +Subagents are child executions selected by a parent agent. They are not +top-level AgentProviders and therefore live outside ``plugins.providers``. +""" + +from ksadk.plugins.subagent_providers.codex import ( + DEFAULT_CODEX_CHILD_PROVIDER_REF, + CodexOneShotSubagentProvider, +) + +__all__ = ["CodexOneShotSubagentProvider", "DEFAULT_CODEX_CHILD_PROVIDER_REF"] diff --git a/ksadk/plugins/subagent_providers/codex.py b/ksadk/plugins/subagent_providers/codex.py new file mode 100644 index 00000000..e65b14e4 --- /dev/null +++ b/ksadk/plugins/subagent_providers/codex.py @@ -0,0 +1,443 @@ +"""Isolated one-shot Codex implementation of ``SubagentProvider/v1``. + +Each child owns one App Server client, one native thread, and one temporary +``CODEX_HOME``. The provider deliberately exposes no follow-up or resume +surface: a parent may stream, cancel, interrupt, inspect, and dispose exactly +one bounded read-only turn. +""" + +from __future__ import annotations + +import asyncio +import hashlib +import json +import shutil +import tempfile +import uuid +from collections.abc import AsyncIterator, Callable, Mapping +from dataclasses import dataclass, field +from datetime import datetime, timezone +from pathlib import Path +from typing import Any + +from ksadk.plugins.subagents import ( + ChildHandle, + SpawnSubagentRequest, + SubagentEvent, + SubagentProviderError, + SubagentResult, + SubagentStatus, +) + +DEFAULT_CODEX_CHILD_PROVIDER_REF = "plugin://io.ksadk.codex-child@1.0.0" +_CAPABILITIES = ("cancel", "interrupt", "streaming") +_TERMINAL_STATES = frozenset({"succeeded", "failed", "cancelled", "interrupted"}) + + +def _now() -> datetime: + return datetime.now(timezone.utc) + + +@dataclass +class _ChildState: + handle: ChildHandle + client: Any + native_thread_id: str + home: Path + timeout_seconds: int + task_text: str + thread_config: dict[str, Any] + events: list[SubagentEvent] = field(default_factory=list) + condition: asyncio.Condition = field(default_factory=asyncio.Condition) + task: asyncio.Task[None] | None = None + state: str = "accepted" + reason: str | None = None + updated_at: datetime = field(default_factory=_now) + requested_terminal: str | None = None + result_value: SubagentResult | None = None + final_text: str = "" + closed: bool = False + + +class CodexOneShotSubagentProvider: + """Run bounded Codex children without sharing process or conversation state.""" + + def __init__( + self, + *, + project_dir: str | Path, + provider_ref: str = DEFAULT_CODEX_CHILD_PROVIDER_REF, + model: str | None = None, + base_instructions: str | None = None, + client_factory: Callable[[Path], Any] | None = None, + ) -> None: + self._project_dir = Path(project_dir).resolve() + self._provider_ref = provider_ref + self._model = model + self._base_instructions = base_instructions + self._client_factory = client_factory + self._states: dict[str, _ChildState] = {} + + async def describe(self) -> Mapping[str, Any]: + return { + "providerRef": self._provider_ref, + "mode": "one-shot", + "capabilities": list(_CAPABILITIES), + "sandbox": "read-only", + "resumable": False, + } + + async def available(self) -> bool: + if self._client_factory is not None: + return True + try: + import openai_codex # noqa: F401 + except ImportError: + return False + return True + + async def spawn(self, request: SpawnSubagentRequest) -> ChildHandle: + if request.provider_ref != self._provider_ref: + raise SubagentProviderError( + "subagent_provider_mismatch", + "Codex child request does not target this exact provider version", + ) + if request.policy.background: + raise SubagentProviderError( + "codex_child_policy_unsupported", + "One-shot Codex children do not support detached background execution", + ) + if request.policy.allowed_tools or request.policy.allowed_permissions: + raise SubagentProviderError( + "codex_child_policy_unsupported", + "Codex child tool and permission allowlists require an enforceable native mapping", + ) + + home = Path(tempfile.mkdtemp(prefix="ksadk-codex-child-")) + client: Any = None + try: + client = self._new_client(home) + thread_config = self._thread_config() + native_thread_id = str(await client.start_thread(thread_config)) + except Exception: + if client is not None: + await client.close() + shutil.rmtree(home, ignore_errors=True) + raise + + handle_id = f"codex-child-{uuid.uuid4().hex}" + digest = hashlib.sha256( + json.dumps( + { + "providerRef": self._provider_ref, + "mode": "one-shot", + "capabilities": _CAPABILITIES, + "sandbox": "read-only", + }, + sort_keys=True, + separators=(",", ":"), + ).encode("utf-8") + ).hexdigest() + handle = ChildHandle( + handle_id=handle_id, + provider_ref=self._provider_ref, + parent_session_id=request.parent_session_id, + parent_run_id=request.parent_run_id, + child_session_id=native_thread_id, + child_run_id=f"codex-turn-{uuid.uuid4().hex}", + depth=request.depth, + capabilities=_CAPABILITIES, + capability_digest=f"sha256:{digest}", + created_at=_now(), + resumable=False, + ) + state = _ChildState( + handle=handle, + client=client, + native_thread_id=native_thread_id, + home=home, + timeout_seconds=request.policy.timeout_seconds, + task_text=request.task, + thread_config=thread_config, + ) + self._states[handle_id] = state + await self._append_event( + state, + "progress", + {"state": "accepted"}, + {"threadId": native_thread_id}, + ) + state.task = asyncio.create_task(self._drive(state), name=f"ksadk-{handle_id}") + return handle + + async def followup(self, handle: ChildHandle, input: Any) -> None: + del input + self._state(handle) + raise SubagentProviderError( + "codex_child_one_shot", + "Codex one-shot children do not accept follow-up input", + ) + + async def status(self, handle: ChildHandle) -> SubagentStatus: + state = self._state(handle) + return SubagentStatus( + handle_id=handle.handle_id, + state=state.state, + last_seq=len(state.events), + updated_at=state.updated_at, + reason=state.reason, + ) + + async def interrupt(self, handle: ChildHandle) -> None: + await self._stop(self._state(handle), "interrupted") + + async def cancel(self, handle: ChildHandle) -> None: + await self._stop(self._state(handle), "cancelled") + + def subscribe(self, handle: ChildHandle, *, after_seq: int = 0) -> AsyncIterator[SubagentEvent]: + if after_seq < 0: + raise SubagentProviderError( + "subagent_cursor_invalid", "subagent after_seq cannot be negative" + ) + state = self._state(handle) + return self._subscribe(state, after_seq) + + async def result(self, handle: ChildHandle) -> SubagentResult: + state = self._state(handle) + if state.task is not None and not state.task.done(): + await asyncio.shield(state.task) + if state.result_value is None: + raise SubagentProviderError( + "codex_child_result_unavailable", "Codex child has no terminal result" + ) + return state.result_value + + async def dispose(self, handle: ChildHandle) -> None: + state = self._state(handle) + if state.state not in _TERMINAL_STATES and state.state != "disposed": + await self._stop(state, "cancelled") + if not state.closed: + state.closed = True + try: + await state.client.close() + finally: + shutil.rmtree(state.home, ignore_errors=True) + state.state = "disposed" + state.updated_at = _now() + async with state.condition: + state.condition.notify_all() + + def _new_client(self, home: Path) -> Any: + if self._client_factory is not None: + return self._client_factory(home) + import openai_codex + + from ksadk.codex.client import AsyncCodexClient + + return AsyncCodexClient(openai_codex.CodexConfig(env={"CODEX_HOME": str(home)})) + + def _thread_config(self) -> dict[str, Any]: + config: dict[str, Any] = { + "cwd": str(self._project_dir), + "sandbox_read_only": True, + "approval_mode": "deny_all", + "ephemeral": True, + } + if self._model: + config["model"] = self._model + if self._base_instructions: + config["base_instructions"] = self._base_instructions + return config + + def _state(self, handle: ChildHandle) -> _ChildState: + state = self._states.get(handle.handle_id) + if state is None or state.handle != handle: + raise SubagentProviderError( + "subagent_handle_unknown", "Codex child handle is unknown or was modified" + ) + return state + + async def _drive(self, state: _ChildState) -> None: + try: + await asyncio.wait_for(self._consume_turn(state), timeout=state.timeout_seconds) + except asyncio.CancelledError: + terminal = state.requested_terminal or "cancelled" + await self._finish(state, terminal) + except asyncio.TimeoutError: + try: + await state.client.interrupt_active_turn(state.native_thread_id) + finally: + await self._finish( + state, + "failed", + error_code="codex_child_timeout", + error_message="Codex child exceeded its parent-owned timeout", + ) + except Exception as error: + await self._finish( + state, + "failed", + error_code="codex_child_failed", + error_message=str(error)[:2048], + ) + + async def _consume_turn(self, state: _ChildState) -> None: + state.state = "running" + state.updated_at = _now() + await self._append_event( + state, + "progress", + {"state": "running"}, + {"threadId": state.native_thread_id}, + ) + async for raw in state.client.run_turn( + state.native_thread_id, + state.task_text, + config=state.thread_config, + ): + await self._project_native_event(state, raw) + await self._finish(state, "succeeded", output=state.final_text) + + async def _project_native_event(self, state: _ChildState, raw: Mapping[str, Any]) -> None: + method = str(raw.get("method") or "") + params = raw.get("params") + if not isinstance(params, Mapping): + params = {} + native_ref = { + key: str(value) + for key, value in { + "method": method, + "threadId": params.get("threadId") or state.native_thread_id, + "turnId": params.get("turnId") or _mapping_value(params.get("turn"), "id"), + "itemId": params.get("itemId") or _mapping_value(params.get("item"), "id"), + }.items() + if value + } + if method in {"turn/started", "thread/tokenUsage/updated"}: + await self._append_event(state, "progress", {"method": method}, native_ref) + return + if method == "item/agentMessage/delta": + delta = str(params.get("delta") or "") + state.final_text += delta + if delta: + await self._append_event( + state, "item", {"type": "agent_message_delta", "text": delta}, native_ref + ) + return + if method == "item/completed": + item = params.get("item") + item_type = _mapping_value(item, "type") or "item" + text = _item_text(item) + if item_type in {"agentMessage", "message"} and text: + state.final_text = text + await self._append_event( + state, + "item", + {"type": str(item_type), **({"text": text} if text else {})}, + native_ref, + ) + return + if method == "error": + message = str(params.get("message") or params.get("error") or "Codex error") + raise RuntimeError(message) + + async def _stop(self, state: _ChildState, terminal: str) -> None: + if state.state in _TERMINAL_STATES or state.state == "disposed": + return + state.requested_terminal = terminal + try: + await state.client.interrupt_active_turn(state.native_thread_id) + except Exception as error: + # A dead or already-finished native process must not prevent local + # cancellation and, critically, must not prevent ``dispose`` from + # closing the client and deleting its isolated CODEX_HOME. + state.reason = f"native interrupt failed: {error}"[:2048] + finally: + if state.task is not None and not state.task.done(): + state.task.cancel() + await asyncio.gather(state.task, return_exceptions=True) + if state.result_value is None: + await self._finish(state, terminal) + + async def _finish( + self, + state: _ChildState, + terminal: str, + *, + output: Any = None, + error_code: str | None = None, + error_message: str | None = None, + ) -> None: + if state.result_value is not None: + return + state.state = terminal + if error_message is not None: + state.reason = error_message + state.updated_at = _now() + state.result_value = SubagentResult( + handle_id=state.handle.handle_id, + state=terminal, + output=output, + error_code=error_code, + error_message=error_message, + ) + await self._append_event( + state, + "terminal", + {"state": terminal, **({"errorCode": error_code} if error_code else {})}, + {"threadId": state.native_thread_id}, + ) + + async def _append_event( + self, + state: _ChildState, + kind: str, + payload: dict[str, Any], + native_ref: dict[str, str], + ) -> None: + seq = len(state.events) + 1 + state.events.append( + SubagentEvent( + handle_id=state.handle.handle_id, + event_id=f"{state.handle.handle_id}:{seq}", + seq=seq, + kind=kind, + payload=payload, + native_ref=native_ref, + ) + ) + state.updated_at = _now() + async with state.condition: + state.condition.notify_all() + + async def _subscribe(self, state: _ChildState, after_seq: int) -> AsyncIterator[SubagentEvent]: + cursor = after_seq + while True: + while cursor < len(state.events): + event = state.events[cursor] + cursor = event.seq + yield event + if state.result_value is not None or state.state == "disposed": + return + async with state.condition: + if cursor >= len(state.events) and state.result_value is None: + await state.condition.wait() + + +def _mapping_value(value: Any, key: str) -> Any: + return value.get(key) if isinstance(value, Mapping) else None + + +def _item_text(item: Any) -> str: + if not isinstance(item, Mapping): + return "" + direct = item.get("text") + if isinstance(direct, str): + return direct + content = item.get("content") + if not isinstance(content, list): + return "" + return "".join(str(part.get("text") or "") for part in content if isinstance(part, Mapping)) + + +__all__ = ["CodexOneShotSubagentProvider", "DEFAULT_CODEX_CHILD_PROVIDER_REF"] diff --git a/ksadk/plugins/subagents.py b/ksadk/plugins/subagents.py new file mode 100644 index 00000000..6864e8a6 --- /dev/null +++ b/ksadk/plugins/subagents.py @@ -0,0 +1,333 @@ +"""Frozen SubagentProvider/v1 seam with explicit lineage and policy bounds. + +The Kernel does not know whether a child is implemented by Codex, DSH, +Claude, another KsADK AgentProvider, or a remote service. It only routes a +bounded request to a named provider and retains the returned child identity. +Provider-private state and event logs remain with that provider; projected +child events keep their own ids and sequence numbers. +""" + +from __future__ import annotations + +from collections.abc import AsyncIterator, Mapping, Sequence +from datetime import datetime +from typing import Any, Literal, Protocol, cast, runtime_checkable + +from pydantic import Field, field_validator, model_validator + +from ksadk.plugins.contracts import PluginContractModel, PluginReference + + +class SubagentPolicy(PluginContractModel): + """Parent-owned limits that a child provider may only narrow.""" + + max_depth: int = Field(default=1, ge=1, le=16) + timeout_seconds: int = Field(default=120, ge=1, le=86_400) + max_steps: int = Field(default=12, ge=1, le=10_000) + background: bool = False + allowed_tools: tuple[str, ...] = () + allowed_permissions: tuple[str, ...] = () + + @field_validator("allowed_tools", "allowed_permissions") + @classmethod + def validate_unique_values(cls, value: tuple[str, ...]) -> tuple[str, ...]: + if any(not item.strip() for item in value): + raise ValueError("subagent policy entries must be non-empty") + if len(value) != len(set(value)): + raise ValueError("subagent policy entries must be unique") + return tuple(sorted(value)) + + +class SpawnSubagentRequest(PluginContractModel): + """One bounded child task requested by an authenticated parent Run.""" + + request_format: Literal["ksadk.subagent-spawn/v1"] = "ksadk.subagent-spawn/v1" + provider_ref: str + parent_session_id: str = Field(min_length=1, max_length=256) + parent_run_id: str = Field(min_length=1, max_length=256) + task: str = Field(min_length=1, max_length=131_072) + depth: int = Field(default=1, ge=1, le=16) + policy: SubagentPolicy = Field(default_factory=SubagentPolicy) + metadata: dict[str, Any] = Field(default_factory=dict) + + @field_validator("provider_ref") + @classmethod + def validate_provider_ref(cls, value: str) -> str: + return cast(str, PluginReference(ref=value).ref) + + @field_validator("metadata") + @classmethod + def validate_metadata(cls, value: dict[str, Any]) -> dict[str, Any]: + _reject_secret_values(value) + return value + + @model_validator(mode="after") + def validate_depth(self) -> "SpawnSubagentRequest": + if self.depth > self.policy.max_depth: + raise ValueError("subagent depth exceeds the parent policy maxDepth") + return self + + +class ChildHandle(PluginContractModel): + """Stable lineage and recovery descriptor for one provider-owned child.""" + + handle_format: Literal["ksadk.child-handle/v1"] = "ksadk.child-handle/v1" + handle_id: str = Field(min_length=1, max_length=256) + provider_ref: str + parent_session_id: str = Field(min_length=1, max_length=256) + parent_run_id: str = Field(min_length=1, max_length=256) + child_session_id: str | None = Field(default=None, max_length=256) + child_run_id: str | None = Field(default=None, max_length=256) + depth: int = Field(ge=1, le=16) + capabilities: tuple[str, ...] = () + capability_digest: str = Field(pattern=r"^sha256:[0-9a-f]{64}$") + created_at: datetime + resumable: bool = False + resume_descriptor: dict[str, Any] | None = None + + @field_validator("provider_ref") + @classmethod + def validate_provider_ref(cls, value: str) -> str: + return cast(str, PluginReference(ref=value).ref) + + @field_validator("capabilities") + @classmethod + def validate_capabilities(cls, value: tuple[str, ...]) -> tuple[str, ...]: + if any(not item.strip() for item in value): + raise ValueError("child capabilities must be non-empty") + if len(value) != len(set(value)): + raise ValueError("child capabilities must be unique") + return tuple(sorted(value)) + + @field_validator("created_at") + @classmethod + def validate_created_at(cls, value: datetime) -> datetime: + if value.tzinfo is None or value.utcoffset() is None: + raise ValueError("child handle createdAt must include a timezone") + return value + + @field_validator("resume_descriptor") + @classmethod + def validate_resume_descriptor( + cls, value: dict[str, Any] | None + ) -> dict[str, Any] | None: + if value is not None: + _reject_secret_values(value) + return value + + @model_validator(mode="after") + def validate_recovery_shape(self) -> "ChildHandle": + if self.resumable and not self.resume_descriptor: + raise ValueError("resumable child handle requires a resumeDescriptor") + if not self.resumable and self.resume_descriptor is not None: + raise ValueError("non-resumable child handle cannot carry a resumeDescriptor") + return self + + +class SubagentStatus(PluginContractModel): + status_format: Literal["ksadk.subagent-status/v1"] = "ksadk.subagent-status/v1" + handle_id: str = Field(min_length=1, max_length=256) + state: Literal[ + "accepted", + "running", + "waiting_input", + "succeeded", + "failed", + "cancelled", + "interrupted", + "disposed", + ] + last_seq: int = Field(default=0, ge=0) + updated_at: datetime + reason: str | None = Field(default=None, max_length=2048) + + @field_validator("updated_at") + @classmethod + def validate_updated_at(cls, value: datetime) -> datetime: + if value.tzinfo is None or value.utcoffset() is None: + raise ValueError("subagent status updatedAt must include a timezone") + return value + + +class SubagentEvent(PluginContractModel): + """Identity-preserving child event; parent projection must not merge by text.""" + + event_format: Literal["ksadk.subagent-event/v1"] = "ksadk.subagent-event/v1" + handle_id: str = Field(min_length=1, max_length=256) + event_id: str = Field(min_length=1, max_length=256) + seq: int = Field(ge=1) + kind: Literal["progress", "item", "interaction", "terminal"] + payload: dict[str, Any] = Field(default_factory=dict) + native_ref: dict[str, str] = Field(default_factory=dict) + + @field_validator("payload") + @classmethod + def validate_payload(cls, value: dict[str, Any]) -> dict[str, Any]: + _reject_secret_values(value) + return value + + +class SubagentResult(PluginContractModel): + result_format: Literal["ksadk.subagent-result/v1"] = "ksadk.subagent-result/v1" + handle_id: str = Field(min_length=1, max_length=256) + state: Literal["succeeded", "failed", "cancelled", "interrupted"] + output: Any = None + output_refs: tuple[str, ...] = () + error_code: str | None = Field(default=None, max_length=256) + error_message: str | None = Field(default=None, max_length=2048) + + @field_validator("output_refs") + @classmethod + def validate_output_refs(cls, value: tuple[str, ...]) -> tuple[str, ...]: + if any(not item.strip() for item in value): + raise ValueError("subagent output references must be non-empty") + if len(value) != len(set(value)): + raise ValueError("subagent output references must be unique") + return tuple(sorted(value)) + + @model_validator(mode="after") + def validate_terminal_shape(self) -> "SubagentResult": + if self.state == "succeeded" and (self.error_code or self.error_message): + raise ValueError("successful subagent result cannot carry an error") + if self.state == "failed" and not self.error_code: + raise ValueError("failed subagent result requires errorCode") + return self + + +@runtime_checkable +class SubagentProvider(Protocol): + """Named child execution provider; every method is provider-owned.""" + + async def describe(self) -> Mapping[str, Any]: ... + + async def available(self) -> bool: ... + + async def spawn(self, request: SpawnSubagentRequest) -> ChildHandle: ... + + async def followup(self, handle: ChildHandle, input: Any) -> None: ... + + async def status(self, handle: ChildHandle) -> SubagentStatus: ... + + async def interrupt(self, handle: ChildHandle) -> None: ... + + async def cancel(self, handle: ChildHandle) -> None: ... + + def subscribe( + self, handle: ChildHandle, *, after_seq: int = 0 + ) -> AsyncIterator[SubagentEvent]: ... + + async def result(self, handle: ChildHandle) -> SubagentResult: ... + + async def dispose(self, handle: ChildHandle) -> None: ... + + +class SubagentProviderError(RuntimeError): + """Stable typed failure at the provider routing boundary.""" + + def __init__(self, code: str, message: str) -> None: + super().__init__(message) + self.code = code + + +class SubagentProviderRouter: + """Route child handles to exact providers without interpreting their state.""" + + def __init__(self, providers: Mapping[str, SubagentProvider]) -> None: + self._providers = dict(providers) + + async def spawn(self, request: SpawnSubagentRequest) -> ChildHandle: + provider = self._provider(request.provider_ref) + if not await provider.available(): + raise SubagentProviderError( + "subagent_provider_unavailable", + f"SubagentProvider {request.provider_ref} is unavailable", + ) + handle = await provider.spawn(request) + self._validate_handle(request, handle) + return handle + + async def status(self, handle: ChildHandle) -> SubagentStatus: + return await self._provider_for_handle(handle).status(handle) + + async def followup(self, handle: ChildHandle, input: Any) -> None: + await self._provider_for_handle(handle).followup(handle, input) + + async def interrupt(self, handle: ChildHandle) -> None: + await self._provider_for_handle(handle).interrupt(handle) + + async def cancel(self, handle: ChildHandle) -> None: + await self._provider_for_handle(handle).cancel(handle) + + def subscribe( + self, handle: ChildHandle, *, after_seq: int = 0 + ) -> AsyncIterator[SubagentEvent]: + if after_seq < 0: + raise SubagentProviderError( + "subagent_cursor_invalid", "subagent after_seq cannot be negative" + ) + return self._provider_for_handle(handle).subscribe(handle, after_seq=after_seq) + + async def result(self, handle: ChildHandle) -> SubagentResult: + return await self._provider_for_handle(handle).result(handle) + + async def dispose(self, handle: ChildHandle) -> None: + await self._provider_for_handle(handle).dispose(handle) + + def _provider_for_handle(self, handle: ChildHandle) -> SubagentProvider: + return self._provider(handle.provider_ref) + + def _provider(self, provider_ref: str) -> SubagentProvider: + provider = self._providers.get(provider_ref) + if provider is None: + raise SubagentProviderError( + "subagent_provider_not_found", + f"SubagentProvider {provider_ref} is not registered", + ) + return provider + + @staticmethod + def _validate_handle( + request: SpawnSubagentRequest, + handle: ChildHandle, + ) -> None: + if ( + handle.provider_ref != request.provider_ref + or handle.parent_session_id != request.parent_session_id + or handle.parent_run_id != request.parent_run_id + or handle.depth != request.depth + ): + raise SubagentProviderError( + "subagent_handle_mismatch", + "SubagentProvider returned a child handle outside the requested lineage", + ) + + +_SECRET_KEY_PARTS = ("secret", "password", "token", "apikey", "api_key") +_SECRET_REF_PREFIXES = ("secret://", "env://", "credential://", "vault://") + + +def _reject_secret_values(value: Any, *, path: str = "payload") -> None: + if isinstance(value, Mapping): + for key, child in value.items(): + key_text = str(key) + normalized = key_text.replace("-", "").lower() + if any(part in normalized for part in _SECRET_KEY_PARTS) and child is not None: + if not isinstance(child, str) or not child.startswith(_SECRET_REF_PREFIXES): + raise ValueError(f"{path}.{key_text} must contain a secret reference") + _reject_secret_values(child, path=f"{path}.{key_text}") + elif isinstance(value, Sequence) and not isinstance(value, (str, bytes, bytearray)): + for index, child in enumerate(value): + _reject_secret_values(child, path=f"{path}[{index}]") + + +__all__ = [ + "ChildHandle", + "SpawnSubagentRequest", + "SubagentEvent", + "SubagentPolicy", + "SubagentProvider", + "SubagentProviderError", + "SubagentProviderRouter", + "SubagentResult", + "SubagentStatus", +] diff --git a/ksadk/runtime/adapter.py b/ksadk/runtime/adapter.py index 9a14e8a5..b510cac6 100644 --- a/ksadk/runtime/adapter.py +++ b/ksadk/runtime/adapter.py @@ -417,6 +417,7 @@ def _unavailable(reason: str = "not_implemented") -> RuntimeCapability: inject=_unavailable("runtime_no_native_inject"), checkpoint=_unavailable(), durable_restore=_unavailable(), + interaction_mode="unavailable", ) def native_capabilities(self) -> dict[str, object]: diff --git a/ksadk/runtime/factory.py b/ksadk/runtime/factory.py index 53c06f9c..380a8475 100644 --- a/ksadk/runtime/factory.py +++ b/ksadk/runtime/factory.py @@ -3,7 +3,10 @@ from __future__ import annotations import dataclasses +import hashlib import os +import re +import shutil import tempfile from pathlib import Path from typing import Any @@ -11,8 +14,7 @@ from ksadk.codex.client import AsyncCodexClient from ksadk.codex.runtime import CodexRuntimeAdapter from ksadk.runners.base_runner import BaseRunner -from ksadk.runtime.adapter import StartRequest -from ksadk.runtime.adapter import RuntimeAdapter, RuntimeRegistry +from ksadk.runtime.adapter import RuntimeAdapter, RuntimeRegistry, StartRequest from ksadk.runtime.framework_adapters import ADKRuntimeAdapter, LangGraphRuntimeAdapter from ksadk.runtime.launch import RuntimeLaunchContext @@ -88,6 +90,19 @@ def kernel_start_request_defaults(context: RuntimeLaunchContext) -> dict[str, An } if base_instructions: request_config["base_instructions"] = base_instructions + collaboration_mode = str(config.get("collaboration_mode") or "").strip().lower() + if collaboration_mode: + if collaboration_mode not in {"default", "plan"}: + raise ValueError("Codex collaboration_mode must be default or plan") + request_config["collaboration_mode"] = collaboration_mode + goal_objective = str(config.get("goal_objective") or "").strip() + if goal_objective: + request_config["goal_objective"] = goal_objective + raw_skills = config.get("skills") + if isinstance(raw_skills, (list, tuple)): + request_config["skills"] = [ + dict(item) for item in raw_skills if isinstance(item, dict) + ] defaults["config"] = request_config return defaults @@ -158,6 +173,7 @@ def _manifest_mcp_overrides(config: dict[str, Any]) -> list[str]: def _create_codex(context: RuntimeLaunchContext) -> RuntimeAdapter: client_factory = context.services.codex_client_factory or AsyncCodexClient config = dict(context.config) + bound_skill_paths: dict[str, str] = {} overrides = list(config.get("codex_overrides") or []) manifest_mcp_overrides = _manifest_mcp_overrides(config) overrides.extend(item for item in manifest_mcp_overrides if item not in overrides) @@ -185,6 +201,9 @@ def _create_codex(context: RuntimeLaunchContext) -> RuntimeAdapter: ) env = dict(getattr(base_cfg, "env", None) or {}) isolated_home = _isolated_codex_home(context.project_dir) + bound_skill_paths = _materialize_bound_codex_skills( + isolated_home, config.get("skills") + ) env.setdefault("CODEX_HOME", str(isolated_home)) # HOME 级隔离:codex app-server 还会按约定扫 ~/.agents/skills、 # ~/.claude/skills 等宿主目录,仅设 CODEX_HOME 挡不住。隔离 HOME 后这些 @@ -219,6 +238,7 @@ def _create_codex(context: RuntimeLaunchContext) -> RuntimeAdapter: client, sandbox_read_only=sandbox_read_only, turn_timeout_seconds=float(timeout) if timeout is not None else None, + bound_skill_paths=bound_skill_paths, ) @@ -263,6 +283,60 @@ def _isolated_codex_home(project_dir: Any) -> Path: return fallback_home +def _materialize_bound_codex_skills( + codex_home: Path, value: Any +) -> dict[str, str]: + """Expose immutable Bundle Skills through Codex's native skill catalog. + + Passing an arbitrary ``SkillInput`` path is accepted by the Python SDK but + ignored by the real App Server unless the Skill is discoverable by the + native host. Copy each content-addressed Bundle Skill into the isolated + CODEX_HOME so the host owns discovery while the Bundle remains read-only. + Content-addressed directory names avoid overwriting user-managed Skills + when an explicit KSADK_CODEX_HOME is used. + """ + + if not isinstance(value, (list, tuple)): + return {} + skills_root = codex_home / "skills" + skills_root.mkdir(parents=True, exist_ok=True) + installed: dict[str, str] = {} + for item in value: + if not isinstance(item, dict): + continue + name = str(item.get("name") or "").strip() + raw_path = str(item.get("path") or "").strip() + if not name or not raw_path: + continue + skill_file = Path(raw_path).resolve() + if skill_file.name != "SKILL.md" or not skill_file.is_file(): + continue + source_dir = skill_file.parent + digest = hashlib.sha256() + for source in sorted(path for path in source_dir.rglob("*") if path.is_file()): + digest.update(source.relative_to(source_dir).as_posix().encode("utf-8")) + digest.update(b"\0") + digest.update(source.read_bytes()) + digest.update(b"\0") + safe_name = re.sub(r"[^A-Za-z0-9._-]+", "-", name).strip(".-") or "skill" + target = skills_root / f"ksadk-{digest.hexdigest()[:16]}-{safe_name}" + if target.is_dir(): + installed[name] = str(target / "SKILL.md") + continue + staging = Path(tempfile.mkdtemp(prefix=".ksadk-skill-", dir=skills_root)) + try: + shutil.copytree(source_dir, staging, dirs_exist_ok=True) + try: + staging.replace(target) + except FileExistsError: + pass + finally: + if staging.exists(): + shutil.rmtree(staging) + installed[name] = str(target / "SKILL.md") + return installed + + def _apply_codex_overrides(client: Any, overrides: Any) -> None: """Append MCP server --config overrides to the client's CodexConfig.""" try: diff --git a/ksadk/runtime/framework_adapters.py b/ksadk/runtime/framework_adapters.py index f6775b2c..37cc38f4 100644 --- a/ksadk/runtime/framework_adapters.py +++ b/ksadk/runtime/framework_adapters.py @@ -63,6 +63,24 @@ class LangGraphRuntimeAdapter(RunnerRuntimeAdapter): def __init__(self, runner: BaseRunner) -> None: super().__init__(runner, runtime_type="langgraph") + def capabilities(self): # noqa: ANN201 + """Advertise checkpoint interaction only when LangGraph can resume it. + + ``RunnerRuntimeAdapter`` is intentionally conservative because a + generic checkpoint is not proof of original-interrupt delivery. The + LangGraph adapter owns that mapping, so it is the only runner-family + adapter that may publish ``durable_resume``. + """ + + matrix = super().capabilities() + return matrix.model_copy( + update={ + "interaction_mode": ( + "durable_resume" if matrix.resume.supported else "unavailable" + ) + } + ) + async def _resume_native( self, handle: RunHandle, diff --git a/ksadk/runtime/runner_adapter.py b/ksadk/runtime/runner_adapter.py index 96676f45..2238609a 100644 --- a/ksadk/runtime/runner_adapter.py +++ b/ksadk/runtime/runner_adapter.py @@ -185,6 +185,11 @@ def _unavailable(reason: str) -> RuntimeCapability: if durable_supported else _unavailable("durable_restore_requires_cross_process_checkpoint") ), + # A generic Runner cannot claim interaction delivery merely from a + # checkpoint capability. ADK is forward-only and only the + # LangGraph specialization below binds a checkpoint to the + # original interrupt identity. + interaction_mode="unavailable", ) async def durable_restore(self, handle: RunHandle) -> RunHandle: diff --git a/ksadk/scheduler/__init__.py b/ksadk/scheduler/__init__.py new file mode 100644 index 00000000..2ec7e908 --- /dev/null +++ b/ksadk/scheduler/__init__.py @@ -0,0 +1,18 @@ +"""Local Scheduler Lite contracts and deterministic calendar calculations.""" + +from ksadk.scheduler.calendar import next_schedule_time +from ksadk.scheduler.contracts import ScheduledTask, ScheduleOccurrence, ScheduleSpec +from ksadk.scheduler.dispatcher import AgentControlSchedulerDispatcher +from ksadk.scheduler.engine import SchedulerDispatchError, SchedulerEngine +from ksadk.scheduler.sqlite_store import SchedulerSQLiteStore + +__all__ = [ + "ScheduleOccurrence", + "ScheduledTask", + "ScheduleSpec", + "AgentControlSchedulerDispatcher", + "SchedulerDispatchError", + "SchedulerEngine", + "SchedulerSQLiteStore", + "next_schedule_time", +] diff --git a/ksadk/scheduler/calendar.py b/ksadk/scheduler/calendar.py new file mode 100644 index 00000000..22e140e5 --- /dev/null +++ b/ksadk/scheduler/calendar.py @@ -0,0 +1,102 @@ +"""Deterministic, dependency-free calendar calculations for Scheduler Lite. + +The supported cron dialect intentionally stays small and explicit: five fields, +numeric values, comma lists, ranges and ``*/step``. It is sufficient for the +Studio scheduler and avoids inheriting an accidental transitive dependency. +All matching happens after UTC -> IANA timezone conversion. That means a +nonexistent DST local minute is skipped and the repeated fall-back minute runs +once (the first ``fold`` only). +""" + +from __future__ import annotations + +from datetime import datetime, timedelta, timezone +from zoneinfo import ZoneInfo + +from ksadk.scheduler.contracts import ScheduleSpec, _parse_cron + + +def next_schedule_time( + schedule: ScheduleSpec, + *, + after: datetime, + anchor_at: datetime | None = None, +) -> datetime | None: + """Return the first scheduled UTC timestamp strictly after ``after``.""" + + if after.tzinfo is None: + raise ValueError("after must include a timezone") + after = after.astimezone(timezone.utc) + if schedule.kind == "once": + assert schedule.at is not None + return schedule.at if schedule.at > after else None + if schedule.kind == "interval": + assert schedule.every_seconds is not None + anchor = (schedule.anchor_at or anchor_at or after).astimezone(timezone.utc) + if anchor > after: + return anchor + elapsed = (after - anchor).total_seconds() + step = schedule.every_seconds + return anchor + timedelta(seconds=(int(elapsed // step) + 1) * step) + assert schedule.expression is not None + return _next_cron(schedule.expression, schedule.timezone, after) + + +def _next_cron(expression: str, timezone_name: str, after: datetime) -> datetime: + minute, hour, day, month, weekday = _parse_cron(expression) + fields = ( + _expand_field(minute, 0, 59), + _expand_field(hour, 0, 23), + _expand_field(day, 1, 31), + _expand_field(month, 1, 12), + _expand_field(weekday, 0, 6), + ) + zone = ZoneInfo(timezone_name) + candidate = after.replace(second=0, microsecond=0) + timedelta(minutes=1) + # Five years is a deliberate guard against impossible expressions such as + # 31 February. The caller receives a typed validation error rather than a + # scheduler loop that runs forever. + deadline = candidate + timedelta(days=366 * 5) + while candidate <= deadline: + local = candidate.astimezone(zone) + # datetime.weekday uses Monday=0. Cron uses Sunday=0. + cron_weekday = (local.weekday() + 1) % 7 + if ( + local.fold == 0 + and local.minute in fields[0] + and local.hour in fields[1] + and local.day in fields[2] + and local.month in fields[3] + and cron_weekday in fields[4] + ): + return candidate + candidate += timedelta(minutes=1) + raise ValueError("cron expression has no matching time within five years") + + +def _expand_field(value: str, minimum: int, maximum: int) -> set[int]: + result: set[int] = set() + for item in value.split(","): + if "/" in item: + base, step_text = item.split("/", 1) + else: + base, step_text = item, None + step = int(step_text) if step_text is not None else 1 + if step <= 0: + raise ValueError("cron step must be positive") + if base == "*": + start, end = minimum, maximum + elif "-" in base: + start_text, end_text = base.split("-", 1) + start, end = int(start_text), int(end_text) + else: + start = end = int(base) + if start < minimum or end > maximum or start > end: + raise ValueError("cron field is outside its valid range") + result.update(range(start, end + 1, step)) + if not result: + raise ValueError("cron field must not be empty") + return result + + +__all__ = ["next_schedule_time"] diff --git a/ksadk/scheduler/contracts.py b/ksadk/scheduler/contracts.py new file mode 100644 index 00000000..fb98f485 --- /dev/null +++ b/ksadk/scheduler/contracts.py @@ -0,0 +1,254 @@ +"""Versioned Scheduler Lite source contracts (P2-06 foundation).""" + +from __future__ import annotations + +import re +from datetime import datetime, timezone +from typing import Any, Literal +from zoneinfo import ZoneInfo, ZoneInfoNotFoundError + +from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator + + +def _to_camel(value: str) -> str: + head, *tail = value.split("_") + return head + "".join(part.capitalize() for part in tail) + + +class ScheduleModel(BaseModel): + model_config = ConfigDict( + alias_generator=_to_camel, + populate_by_name=True, + extra="forbid", + frozen=True, + ) + + +_TASK_ID = re.compile(r"^[a-z][a-z0-9-]{2,62}$") +ScheduleOccurrenceState = Literal[ + "claimed", + "accepted", + "running", + "succeeded", + "failed", + "skipped", + "cancelled", +] + + +class ScheduleSpec(ScheduleModel): + kind: Literal["once", "interval", "cron"] + timezone: str = "UTC" + at: datetime | None = None + every_seconds: int | None = Field(default=None, ge=60, le=31_536_000) + anchor_at: datetime | None = None + expression: str | None = Field(default=None, min_length=9, max_length=128) + misfire_policy: Literal["skip", "run_once"] = "skip" + + @field_validator("timezone") + @classmethod + def validate_timezone(cls, value: str) -> str: + try: + ZoneInfo(value) + except ZoneInfoNotFoundError as error: + raise ValueError("timezone must be an IANA timezone") from error + return value + + @field_validator("at", "anchor_at") + @classmethod + def normalize_timestamp(cls, value: datetime | None) -> datetime | None: + if value is None: + return None + if value.tzinfo is None: + raise ValueError("schedule timestamps must include a timezone") + return value.astimezone(timezone.utc) + + @model_validator(mode="after") + def validate_kind_shape(self) -> "ScheduleSpec": + if self.kind == "once": + if self.at is None or self.every_seconds is not None or self.expression is not None: + raise ValueError("once schedule requires only at") + elif self.kind == "interval": + if self.every_seconds is None or self.at is not None or self.expression is not None: + raise ValueError("interval schedule requires everySeconds and no expression") + elif self.kind == "cron": + if self.expression is None or self.at is not None or self.every_seconds is not None: + raise ValueError("cron schedule requires only expression") + _parse_cron(self.expression) + return self + + +class ScheduledTaskTarget(ScheduleModel): + # ``agent_instance_id`` identifies the concrete Kernel owner which will + # consume an Inbox command. ``agent_id`` is the Studio-facing stable + # logical Agent identity used to retain a task on its detail page even when + # the task is pinned to an older immutable Build. It is optional only so + # existing v1 SQLite rows remain readable; all Studio-authored tasks set it. + agent_id: str | None = Field(default=None, min_length=1, max_length=256) + tenant_id: str = Field(min_length=1, max_length=256) + agent_instance_id: str = Field(min_length=1, max_length=256) + agent_version_ref: str | None = Field(default=None, min_length=1, max_length=256) + session_id: str | None = Field(default=None, min_length=1, max_length=256) + authorization_ref: str = Field(min_length=1, max_length=512) + + +class ScheduleCommandTemplate(ScheduleModel): + """The sole supported Scheduler Lite action: durable enqueue via AgentControl.""" + + command_type: Literal["enqueue"] = "enqueue" + payload: dict[str, Any] + + @model_validator(mode="after") + def validate_payload(self) -> "ScheduleCommandTemplate": + if "content" not in self.payload: + raise ValueError("scheduled enqueue payload requires content") + _reject_clear_secrets(self.payload) + return self + + +class ScheduledTask(ScheduleModel): + api_version: Literal["schedule.ksadk.io/v1"] = "schedule.ksadk.io/v1" + kind: Literal["ScheduledTask"] = "ScheduledTask" + schema_version: Literal[1] = 1 + task_id: str = Field(min_length=3, max_length=63) + # A human-facing task label belongs to the durable schedule intent, not a + # transient Studio card. Optional keeps the previously frozen v1 rows + # and third-party producers readable during this additive transition. + display_name: str | None = Field(default=None, min_length=1, max_length=128) + target: ScheduledTaskTarget + schedule: ScheduleSpec + command: ScheduleCommandTemplate + enabled: bool = True + continuity: Literal["new_session", "continue_session"] = "new_session" + concurrency_policy: Literal["forbid"] = "forbid" + next_run_at: datetime | None = None + created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) + updated_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) + + @field_validator("task_id") + @classmethod + def validate_task_id(cls, value: str) -> str: + if not _TASK_ID.fullmatch(value): + raise ValueError("taskId must be a lowercase stable identifier") + return value + + @model_validator(mode="after") + def validate_continuity_target(self) -> "ScheduledTask": + if self.continuity == "continue_session" and not self.target.session_id: + raise ValueError("continue_session schedule requires target.sessionId") + return self + + @field_validator("next_run_at", "created_at", "updated_at") + @classmethod + def normalize_timestamp(cls, value: datetime | None) -> datetime | None: + if value is None: + return None + if value.tzinfo is None: + raise ValueError("scheduler timestamps must include a timezone") + return value.astimezone(timezone.utc) + + +class ScheduleOccurrenceTransition(ScheduleModel): + """One durable state change displayed by Studio's execution history.""" + + state: ScheduleOccurrenceState + at: datetime + detail: str | None = Field(default=None, max_length=1024) + error_code: str | None = Field(default=None, max_length=128) + + @field_validator("at") + @classmethod + def normalize_timestamp(cls, value: datetime) -> datetime: + if value.tzinfo is None: + raise ValueError("occurrence transition timestamps must include a timezone") + return value.astimezone(timezone.utc) + + +class ScheduleOccurrence(ScheduleModel): + api_version: Literal["schedule.ksadk.io/v1"] = "schedule.ksadk.io/v1" + kind: Literal["ScheduleOccurrence"] = "ScheduleOccurrence" + schema_version: Literal[1] = 1 + occurrence_id: str = Field(min_length=8, max_length=256) + task_id: str = Field(min_length=3, max_length=63) + # Keep the execution target as an immutable occurrence snapshot. Tasks can + # later be edited or deleted, but history/reconciliation must still know + # exactly which Agent revision accepted this occurrence. + target: ScheduledTaskTarget | None = None + scheduled_for: datetime + session_id: str = Field(min_length=1, max_length=256) + trigger: Literal["schedule", "manual"] = "schedule" + state: ScheduleOccurrenceState + attempt: int = Field(default=1, ge=1, le=100) + command_id: str | None = None + accepted_seq: int | None = Field(default=None, ge=0) + last_event_seq: int | None = Field(default=None, ge=0) + run_id: str | None = Field(default=None, min_length=1, max_length=256) + claimed_at: datetime | None = None + accepted_at: datetime | None = None + started_at: datetime | None = None + error_code: str | None = Field(default=None, max_length=128) + detail: str | None = Field(default=None, max_length=1024) + completed_at: datetime | None = None + transitions: tuple[ScheduleOccurrenceTransition, ...] = () + + @field_validator("scheduled_for", "claimed_at", "accepted_at", "started_at", "completed_at") + @classmethod + def normalize_timestamp(cls, value: datetime | None) -> datetime | None: + if value is None: + return None + if value.tzinfo is None: + raise ValueError("occurrence timestamps must include a timezone") + return value.astimezone(timezone.utc) + + @model_validator(mode="after") + def validate_terminal_fields(self) -> "ScheduleOccurrence": + terminal = {"succeeded", "failed", "skipped", "cancelled"} + if self.state in terminal and self.completed_at is None: + raise ValueError("terminal occurrence requires completedAt") + if self.state == "failed" and not self.error_code: + raise ValueError("failed occurrence requires errorCode") + if self.state == "running" and (not self.run_id or self.started_at is None): + raise ValueError("running occurrence requires runId and startedAt") + if self.transitions: + timestamps = [transition.at for transition in self.transitions] + if timestamps != sorted(timestamps): + raise ValueError("occurrence transitions must be chronological") + if self.transitions[-1].state != self.state: + raise ValueError("last occurrence transition must match state") + return self + + +def _reject_clear_secrets(value: Any, *, key: str = "payload") -> None: + if isinstance(value, dict): + for name, item in value.items(): + lowered = str(name).lower() + if any(term in lowered for term in ("secret", "password", "token", "api_key")): + if not isinstance(item, str) or not item.startswith( + ("env://", "secret://", "credential://", "vault://") + ): + raise ValueError(f"{key}.{name} must be a secret reference, not a value") + _reject_clear_secrets(item, key=f"{key}.{name}") + elif isinstance(value, list): + for index, item in enumerate(value): + _reject_clear_secrets(item, key=f"{key}[{index}]") + + +def _parse_cron(expression: str) -> tuple[str, str, str, str, str]: + fields = tuple(part for part in expression.split() if part) + if len(fields) != 5: + raise ValueError("cron expression must use exactly five fields") + for value in fields: + if not re.fullmatch(r"[0-9*/,-]+", value): + raise ValueError("cron fields only support numbers, ranges, lists and steps") + return fields # detailed field grammar is shared with calendar.py + + +__all__ = [ + "ScheduleCommandTemplate", + "ScheduleOccurrence", + "ScheduleOccurrenceState", + "ScheduleOccurrenceTransition", + "ScheduleSpec", + "ScheduledTask", + "ScheduledTaskTarget", +] diff --git a/ksadk/scheduler/dispatcher.py b/ksadk/scheduler/dispatcher.py new file mode 100644 index 00000000..5b3e33d0 --- /dev/null +++ b/ksadk/scheduler/dispatcher.py @@ -0,0 +1,129 @@ +"""Local Scheduler Lite's explicit AgentControl dispatcher.""" + +from __future__ import annotations + +import asyncio +from collections.abc import Awaitable, Callable, Sequence + +from ksadk.kernel.contracts import ( + AgentControlCommand, + AgentControlPermit, + AgentControlReceipt, +) +from ksadk.kernel.ingress import ( + map_scheduler_request, + submit_command, + subscribe_projected, + trusted_context, +) +from ksadk.scheduler.contracts import ScheduledTask, ScheduledTaskTarget, ScheduleOccurrence +from ksadk.scheduler.engine import SchedulerDispatchError, SchedulerDispatchReceipt + +SubmitCommand = Callable[[AgentControlCommand, AgentControlPermit], Awaitable[AgentControlReceipt]] +ReadOccurrenceEvents = Callable[ + [ScheduleOccurrence], Awaitable[Sequence[tuple[int, object]]] +] +PrepareTarget = Callable[[ScheduledTaskTarget], Awaitable[object]] + + +class AgentControlSchedulerDispatcher: + """Translate one occurrence into a single durable AgentControl enqueue. + + This dispatcher is intentionally local-runtime only. A hosted scheduler + must obtain a Server-issued permit at its admission boundary in Phase 3; + this class never makes local permits look valid against hosted JWKS. + """ + + def __init__( + self, + submitter: SubmitCommand | None = None, + *, + event_reader: ReadOccurrenceEvents | None = None, + target_preparer: PrepareTarget | None = None, + ) -> None: + self._submitter = submitter or _submit_via_ingress + self._event_reader = event_reader + self._target_preparer = target_preparer + + async def dispatch( + self, task: ScheduledTask, occurrence: ScheduleOccurrence + ) -> SchedulerDispatchReceipt: + target = task.target + if self._target_preparer is not None: + await self._target_preparer(target) + trusted = trusted_context( + source_kind="scheduler", + source_ref=occurrence.occurrence_id, + tenant_id=target.tenant_id, + agent_instance_id=target.agent_instance_id, + session_id=occurrence.session_id, + operations=("enqueue",), + ) + command = map_scheduler_request( + session_id=occurrence.session_id, + idempotency_key=occurrence.occurrence_id, + content=task.command.payload["content"], + occurrence_id=occurrence.occurrence_id, + trusted=trusted, + ) + receipt = await self._submitter(command, trusted.permit) + if receipt.status not in {"accepted", "duplicate"}: + error = receipt.error + raise SchedulerDispatchError( + error.code if error else f"KERNEL_{receipt.status.upper()}", + error.message if error else f"kernel rejected occurrence: {receipt.status}", + ) + return SchedulerDispatchReceipt(str(receipt.command_id), accepted_seq=receipt.accepted_seq) + + async def read_events(self, occurrence: ScheduleOccurrence) -> tuple[tuple[int, object], ...]: + """Read currently available canonical facts without holding an SSE open. + + The local scheduler wakes frequently; each read resumes from the + durable session cursor persisted on the occurrence. This avoids a + hidden second event log and lets a Studio restart continue settling an + already-accepted run. + """ + + if self._event_reader is not None: + return tuple(await self._event_reader(occurrence)) + + target = occurrence.target + if target is None: + return () + trusted = trusted_context( + source_kind="scheduler", + source_ref=occurrence.occurrence_id, + tenant_id=target.tenant_id, + agent_instance_id=target.agent_instance_id, + session_id=occurrence.session_id, + operations=("subscribe_events",), + ) + cursor = occurrence.last_event_seq + if cursor is None: + cursor = occurrence.accepted_seq or 0 + stream = subscribe_projected( + occurrence.session_id, + trusted=trusted, + after_seq=cursor, + projector=lambda event: event, + ) + events: list[tuple[int, object]] = [] + try: + while len(events) < 100: + try: + value = await asyncio.wait_for(anext(stream), timeout=0.05) + except TimeoutError: + break + events.append(value) + finally: + await stream.aclose() + return tuple(events) + + +async def _submit_via_ingress( + command: AgentControlCommand, permit: AgentControlPermit +) -> AgentControlReceipt: + return await submit_command(command, permit=permit) + + +__all__ = ["AgentControlSchedulerDispatcher"] diff --git a/ksadk/scheduler/engine.py b/ksadk/scheduler/engine.py new file mode 100644 index 00000000..192c456b --- /dev/null +++ b/ksadk/scheduler/engine.py @@ -0,0 +1,416 @@ +"""Explicitly started local Scheduler Lite engine. + +There is intentionally no import-time loop and no Studio lifespan hook here. +Local schedules run only while a caller starts this engine; deployment-wide +always-on scheduling belongs to the Server/Operator phase, not this component. +""" + +from __future__ import annotations + +import asyncio +from collections.abc import Callable, Sequence +from datetime import datetime, timedelta, timezone +from typing import Protocol +from uuid import uuid4 + +from ksadk.scheduler.calendar import next_schedule_time +from ksadk.scheduler.contracts import ScheduledTask, ScheduleOccurrence +from ksadk.scheduler.sqlite_store import SchedulerSQLiteStore + + +class SchedulerEventReader(Protocol): + """Read canonical SessionEvents for one accepted occurrence.""" + + async def read_events(self, occurrence: ScheduleOccurrence) -> Sequence[tuple[int, object]]: ... + + +class SchedulerDispatchReceipt(str): + """A backward-compatible dispatcher result with an event-log cursor. + + It remains a ``str`` so existing local dispatcher implementations keep + working. The new ``accepted_seq`` lets the scheduler resume from exactly + the AgentControl admission fact rather than guessing from wall-clock time. + """ + + accepted_seq: int | None + + def __new__(cls, command_id: str, *, accepted_seq: int | None = None): + value = super().__new__(cls, command_id) + value.accepted_seq = accepted_seq + return value + + +class SchedulerDispatchError(RuntimeError): + """A typed dispatcher failure safe to persist in occurrence history.""" + + def __init__(self, code: str, detail: str) -> None: + super().__init__(detail) + self.code = code + self.detail = detail + + +class SchedulerDispatcher(Protocol): + """The one execution seam. Implementations must submit AgentControl only.""" + + async def dispatch(self, task: ScheduledTask, occurrence: ScheduleOccurrence) -> str: + """Return AgentControl's accepted command ID, or raise a typed error.""" + + +Clock = Callable[[], datetime] +TickGuard = Callable[[], bool] + + +class SchedulerEngine: + def __init__( + self, + store: SchedulerSQLiteStore, + dispatcher: SchedulerDispatcher, + *, + owner_id: str | None = None, + clock: Clock | None = None, + tick_guard: TickGuard | None = None, + lease_seconds: int = 30, + ) -> None: + self.store = store + self.dispatcher = dispatcher + self.owner_id = owner_id or f"studio-{uuid4().hex}" + self.clock = clock or (lambda: datetime.now(timezone.utc)) + self.tick_guard = tick_guard + self.lease_seconds = lease_seconds + self._task: asyncio.Task[None] | None = None + self._stop = asyncio.Event() + self._poll_seconds: float | None = None + self._last_scan_at: datetime | None = None + self._last_scan_result: str | None = None + self._last_scan_detail: str | None = None + self._next_scan_at: datetime | None = None + + @property + def running(self) -> bool: + return self._task is not None and not self._task.done() + + def status(self) -> dict[str, object]: + """Return a UI-safe snapshot of the local trigger process. + + This is operational state, not a claim that every configured task is + executable. ``waiting_runtime`` deliberately means the monitor is + alive but will not claim due work until its trusted Kernel route is + available again. + """ + + return { + "running": self.running, + "ownerId": self.owner_id, + "pollSeconds": self._poll_seconds, + "lastScanAt": self._last_scan_at, + "lastScanResult": self._last_scan_result, + "lastScanDetail": self._last_scan_detail, + "nextScanAt": self._next_scan_at, + } + + async def tick(self) -> list[ScheduleOccurrence]: + """Claim every due occurrence once and submit it through AgentControl.""" + + now = self.clock().astimezone(timezone.utc) + self._last_scan_at = now + if self.tick_guard is not None and not self.tick_guard(): + self._last_scan_result = "waiting_runtime" + self._last_scan_detail = "agent_kernel_route_inactive" + return [] + owns_lease = await asyncio.to_thread( + self.store.acquire_lease, + owner_id=self.owner_id, + now=now, + ttl_seconds=self.lease_seconds, + ) + if not owns_lease: + self._last_scan_result = "lease_not_owned" + self._last_scan_detail = "another_local_scheduler_owns_the_lease" + return [] + await self.reconcile() + due = await asyncio.to_thread(self.store.list_due, now) + result: list[ScheduleOccurrence] = [] + for task, generation in due: + occurrence = await self._claim_scheduled(task, generation, now) + if occurrence is None: + continue + result.append(occurrence) + if occurrence.state == "skipped": + continue + try: + dispatch = await self.dispatcher.dispatch(task, occurrence) + except SchedulerDispatchError as exc: + result[-1] = await asyncio.to_thread( + self.store.finish, + occurrence.occurrence_id, + succeeded=False, + error_code=exc.code, + detail=exc.detail, + ) + except Exception as exc: # noqa: BLE001 - normalize boundary errors + result[-1] = await asyncio.to_thread( + self.store.finish, + occurrence.occurrence_id, + succeeded=False, + error_code="DISPATCH_FAILED", + detail=str(exc)[:1024], + ) + else: + result[-1] = await asyncio.to_thread( + self.store.mark_accepted, + occurrence.occurrence_id, + str(dispatch), + accepted_seq=getattr(dispatch, "accepted_seq", None), + ) + self._last_scan_result = "ok" + self._last_scan_detail = f"claimed={len(result)}" + return result + + async def _claim_scheduled( + self, + task: ScheduledTask, + generation: int, + now: datetime, + ) -> ScheduleOccurrence | None: + assert task.next_run_at is not None + missed = task.next_run_at < now + next_run_at = next_schedule_time( + task.schedule, + after=now if missed else task.next_run_at, + anchor_at=task.created_at, + ) + if missed and task.schedule.misfire_policy == "skip": + return await asyncio.to_thread( + self.store.claim_and_advance, + task, + generation=generation, + next_run_at=next_run_at, + state="skipped", + detail="misfire_skipped", + claimed_at=now, + ) + if task.concurrency_policy == "forbid" and await asyncio.to_thread( + self.store.has_active_occurrence, task.task_id + ): + return await asyncio.to_thread( + self.store.claim_and_advance, + task, + generation=generation, + next_run_at=next_run_at, + state="skipped", + detail="concurrency_forbid_active_occurrence", + claimed_at=now, + ) + return await asyncio.to_thread( + self.store.claim_and_advance, + task, + generation=generation, + next_run_at=next_run_at, + claimed_at=now, + ) + + async def run_now(self, task_id: str) -> ScheduleOccurrence: + """Explicit user action; it still uses the dispatcher and durable log.""" + + value = await asyncio.to_thread(self.store.get_task, task_id) + if value is None: + raise KeyError(task_id) + task, generation = value + if not task.enabled: + raise SchedulerDispatchError("TASK_DISABLED", "scheduled task is disabled") + if task.concurrency_policy == "forbid" and await asyncio.to_thread( + self.store.has_active_occurrence, task.task_id + ): + raise SchedulerDispatchError( + "CONCURRENCY_FORBID", "an earlier occurrence is still active" + ) + # Run-now has a separate manual occurrence identity. It is intentionally + # not an implicit reschedule and does not advance the natural next time. + now = self.clock().astimezone(timezone.utc) + occurrence = await asyncio.to_thread( + self.store.claim_manual, + task, + generation=generation, + now=now, + ) + if occurrence is None: + raise SchedulerDispatchError("TASK_CHANGED", "task changed while starting manually") + try: + dispatch = await self.dispatcher.dispatch(task, occurrence) + except SchedulerDispatchError as exc: + return await asyncio.to_thread( + self.store.finish, + occurrence.occurrence_id, + succeeded=False, + error_code=exc.code, + detail=exc.detail, + ) + except Exception as exc: # noqa: BLE001 + return await asyncio.to_thread( + self.store.finish, + occurrence.occurrence_id, + succeeded=False, + error_code="DISPATCH_FAILED", + detail=str(exc)[:1024], + ) + return await asyncio.to_thread( + self.store.mark_accepted, + occurrence.occurrence_id, + str(dispatch), + accepted_seq=getattr(dispatch, "accepted_seq", None), + ) + + async def reconcile(self) -> list[ScheduleOccurrence]: + """Settle accepted work only from correlated canonical runtime facts. + + ``AgentControlReceipt.accepted`` means the command entered Inbox; it + is deliberately not a success signal. The control run-transition + event carries the originating command id, then the matching runtime + terminal event decides the immutable occurrence outcome. + """ + + reader = getattr(self.dispatcher, "read_events", None) + if not callable(reader): + return [] + changed: list[ScheduleOccurrence] = [] + for occurrence in await asyncio.to_thread(self.store.list_active_occurrences): + if not occurrence.command_id or occurrence.target is None: + # Legacy local records lack the new immutable target snapshot. + # Preserve their accepted status rather than guessing a target. + continue + try: + events = await reader(occurrence) + except Exception: # noqa: BLE001 - retain accepted state for a later poll + continue + current = occurrence + for seq, envelope in events: + current = await self._reconcile_event(current, seq=seq, envelope=envelope) + if current.state in {"succeeded", "failed", "skipped", "cancelled"}: + break + if current != occurrence: + changed.append(current) + return changed + + async def _reconcile_event( + self, occurrence: ScheduleOccurrence, *, seq: int, envelope: object + ) -> ScheduleOccurrence: + event_type = str(getattr(envelope, "event_type", "")) + event_run_id = str(getattr(envelope, "run_id", "") or "") + causation_id = str(getattr(envelope, "causation_id", "") or "") + payload = getattr(envelope, "payload", {}) or {} + if not isinstance(payload, dict): + payload = {} + + if event_type == "control.run_transition" and causation_id == occurrence.command_id: + run_id = event_run_id or str(payload.get("run_id") or "") + if run_id: + run_state = str(payload.get("state") or "") + if run_state not in {"running", "paused", "waiting"}: + return await asyncio.to_thread( + self.store.bind_run, + occurrence.occurrence_id, + run_id=run_id, + last_event_seq=seq, + ) + return await asyncio.to_thread( + self.store.mark_running, + occurrence.occurrence_id, + run_id=run_id, + last_event_seq=seq, + ) + if occurrence.run_id and event_run_id == occurrence.run_id: + if event_type == "run.completed": + return await asyncio.to_thread( + self.store.finish, + occurrence.occurrence_id, + succeeded=True, + detail="runtime_completed", + ) + if event_type in {"run.failed", "run.canceled", "run.interrupted"}: + error = payload.get("error") + code = ( + str(error.get("code") or "RUNTIME_FAILED") + if isinstance(error, dict) + else event_type.upper().replace(".", "_") + ) + detail = ( + str(error.get("message") or event_type) + if isinstance(error, dict) + else event_type + ) + return await asyncio.to_thread( + self.store.finish, + occurrence.occurrence_id, + succeeded=False, + error_code=code[:128], + detail=detail[:1024], + ) + return await asyncio.to_thread( + self.store.advance_reconciliation_cursor, + occurrence.occurrence_id, + last_event_seq=seq, + ) + + async def settle( + self, + occurrence_id: str, + *, + succeeded: bool, + error_code: str | None = None, + detail: str | None = None, + ) -> ScheduleOccurrence: + """Called by the runtime-event reconciler, never by receipt handling.""" + + return await asyncio.to_thread( + self.store.finish, + occurrence_id, + succeeded=succeeded, + error_code=error_code, + detail=detail, + ) + + async def start(self, *, poll_seconds: float = 5.0) -> None: + if poll_seconds <= 0: + raise ValueError("poll_seconds must be positive") + if self._task is not None and not self._task.done(): + return + # asyncio primitives bind to the loop that first waits on them. Studio + # tests and embedded hosts may start/stop the same service through a + # fresh event loop, so never reuse the previous loop's Event. + self._stop = asyncio.Event() + self._poll_seconds = poll_seconds + + async def loop() -> None: + while not self._stop.is_set(): + try: + await self.tick() + except Exception as exc: # noqa: BLE001 - keep the monitor alive + self._last_scan_at = self.clock().astimezone(timezone.utc) + self._last_scan_result = "error" + self._last_scan_detail = f"{type(exc).__name__}: {exc}"[:512] + self._next_scan_at = self.clock().astimezone(timezone.utc) + timedelta( + seconds=poll_seconds + ) + try: + await asyncio.wait_for(self._stop.wait(), timeout=poll_seconds) + except TimeoutError: + pass + + self._task = asyncio.create_task(loop(), name="ksadk-local-scheduler") + + async def stop(self) -> None: + self._stop.set() + if self._task is None: + return + await self._task + self._task = None + self._next_scan_at = None + + +__all__ = [ + "SchedulerDispatchError", + "SchedulerDispatchReceipt", + "SchedulerDispatcher", + "SchedulerEngine", + "SchedulerEventReader", +] diff --git a/ksadk/scheduler/sqlite_store.py b/ksadk/scheduler/sqlite_store.py new file mode 100644 index 00000000..c7a4249a --- /dev/null +++ b/ksadk/scheduler/sqlite_store.py @@ -0,0 +1,563 @@ +"""Durable local persistence for Scheduler Lite. + +This store is deliberately independent from AgentKernel's Inbox tables. It +owns scheduling decisions, occurrence identity and its *single process* +lease; AgentControl remains the only execution ingress. +""" + +from __future__ import annotations + +import hashlib +import json +import sqlite3 +from datetime import datetime, timezone +from pathlib import Path +from typing import Literal + +from ksadk.scheduler.contracts import ( + ScheduledTask, + ScheduleOccurrence, + ScheduleOccurrenceTransition, +) + +_SCHEMA_VERSION = 2 +_ACTIVE_STATES = ("claimed", "accepted", "running") +_SCHEMA = """ +CREATE TABLE IF NOT EXISTS scheduler_tasks ( + task_id TEXT PRIMARY KEY, + generation INTEGER NOT NULL, + body_json TEXT NOT NULL, + enabled INTEGER NOT NULL, + next_run_at TEXT, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL +); +CREATE INDEX IF NOT EXISTS idx_scheduler_tasks_due + ON scheduler_tasks (enabled, next_run_at); +CREATE TABLE IF NOT EXISTS scheduler_occurrences ( + occurrence_id TEXT PRIMARY KEY, + task_id TEXT NOT NULL, + generation INTEGER NOT NULL, + scheduled_for TEXT NOT NULL, + trigger_kind TEXT NOT NULL, + body_json TEXT NOT NULL, + state TEXT NOT NULL, + command_id TEXT, + completed_at TEXT, + UNIQUE(task_id, generation, scheduled_for, trigger_kind) +); +CREATE INDEX IF NOT EXISTS idx_scheduler_occurrences_task_state + ON scheduler_occurrences (task_id, state, scheduled_for DESC); +CREATE TABLE IF NOT EXISTS scheduler_leases ( + lease_name TEXT PRIMARY KEY, + owner_id TEXT NOT NULL, + expires_at TEXT NOT NULL +); +""" + + +def _iso(value: datetime) -> str: + if value.tzinfo is None: + raise ValueError("timestamp must include a timezone") + return value.astimezone(timezone.utc).isoformat().replace("+00:00", "Z") + + +def _parse(value: str) -> datetime: + return datetime.fromisoformat(value.replace("Z", "+00:00")).astimezone(timezone.utc) + + +def occurrence_id( + task_id: str, + generation: int, + scheduled_for: datetime, + trigger: Literal["schedule", "manual"] = "schedule", +) -> str: + raw = f"{task_id}\x00{generation}\x00{_iso(scheduled_for)}\x00{trigger}".encode() + return f"occ_{hashlib.sha256(raw).hexdigest()[:32]}" + + +def _session_id(task: ScheduledTask, *, occurrence_id_value: str) -> str: + if task.continuity == "continue_session": + assert task.target.session_id is not None + return task.target.session_id + # A new scheduled start has an independent durable Session namespace. It + # is derived from the immutable occurrence id so a retry cannot create a + # second conversation. + return f"sched-{occurrence_id_value}" + + +class SchedulerSQLiteStore: + """Synchronous SQLite store; callers may use it through ``to_thread``. + + Every mutation uses its own connection and ``BEGIN IMMEDIATE``. That is + intentional: this component has no undeclared aiosqlite dependency and + remains correct when multiple local Studio processes contend for its DB. + """ + + def __init__(self, path: str | Path) -> None: + self.path = Path(path).expanduser().resolve() + self.path.parent.mkdir(parents=True, exist_ok=True) + self.ensure_schema() + + def _connect(self) -> sqlite3.Connection: + connection = sqlite3.connect(self.path, timeout=5, isolation_level=None) + connection.row_factory = sqlite3.Row + connection.execute("PRAGMA journal_mode=WAL") + connection.execute("PRAGMA synchronous=FULL") + return connection + + def ensure_schema(self) -> None: + with self._connect() as connection: + connection.executescript(_SCHEMA) + connection.execute(f"PRAGMA user_version={_SCHEMA_VERSION}") + + def put_task(self, task: ScheduledTask, *, generation: int | None = None) -> int: + now = _iso(datetime.now(timezone.utc)) + encoded = task.model_dump_json(by_alias=True, exclude_none=True) + with self._connect() as connection: + connection.execute("BEGIN IMMEDIATE") + existing = connection.execute( + "SELECT generation, created_at FROM scheduler_tasks WHERE task_id=?", + (task.task_id,), + ).fetchone() + actual_generation = generation + if actual_generation is None: + actual_generation = int(existing["generation"]) + 1 if existing else 1 + created_at = existing["created_at"] if existing else _iso(task.created_at) + connection.execute( + """INSERT INTO scheduler_tasks( + task_id,generation,body_json,enabled,next_run_at,created_at,updated_at + ) + VALUES(?,?,?,?,?,?,?) + ON CONFLICT(task_id) DO UPDATE SET generation=excluded.generation, + body_json=excluded.body_json,enabled=excluded.enabled,next_run_at=excluded.next_run_at, + updated_at=excluded.updated_at""", + ( + task.task_id, + actual_generation, + encoded, + int(task.enabled), + _iso(task.next_run_at) if task.next_run_at else None, + created_at, + now, + ), + ) + connection.commit() + return actual_generation + + def get_task(self, task_id: str) -> tuple[ScheduledTask, int] | None: + with self._connect() as connection: + row = connection.execute( + "SELECT body_json,generation,next_run_at,enabled " + "FROM scheduler_tasks WHERE task_id=?", + (task_id,), + ).fetchone() + if row is None: + return None + body = json.loads(row["body_json"]) + body["nextRunAt"] = row["next_run_at"] + body["enabled"] = bool(row["enabled"]) + return ScheduledTask.model_validate(body), int(row["generation"]) + + def list_due(self, now: datetime) -> list[tuple[ScheduledTask, int]]: + with self._connect() as connection: + rows = connection.execute( + """SELECT body_json,generation,next_run_at FROM scheduler_tasks + WHERE enabled=1 AND next_run_at IS NOT NULL AND next_run_at<=? + ORDER BY next_run_at,task_id""", + (_iso(now),), + ).fetchall() + result: list[tuple[ScheduledTask, int]] = [] + for row in rows: + body = json.loads(row["body_json"]) + body["nextRunAt"] = row["next_run_at"] + result.append((ScheduledTask.model_validate(body), int(row["generation"]))) + return result + + def list_tasks(self) -> list[tuple[ScheduledTask, int]]: + with self._connect() as connection: + rows = connection.execute( + "SELECT body_json,generation,next_run_at,enabled FROM scheduler_tasks " + "ORDER BY updated_at DESC,task_id" + ).fetchall() + result: list[tuple[ScheduledTask, int]] = [] + for row in rows: + body = json.loads(row["body_json"]) + body["nextRunAt"] = row["next_run_at"] + body["enabled"] = bool(row["enabled"]) + result.append((ScheduledTask.model_validate(body), int(row["generation"]))) + return result + + def delete_task(self, task_id: str) -> bool: + """Remove the scheduling intent but retain immutable occurrence history.""" + + with self._connect() as connection: + connection.execute("BEGIN IMMEDIATE") + removed = connection.execute( + "DELETE FROM scheduler_tasks WHERE task_id=?", (task_id,) + ).rowcount + connection.commit() + return removed == 1 + + def list_occurrences(self, task_id: str, *, limit: int = 50) -> list[ScheduleOccurrence]: + if limit < 1 or limit > 200: + raise ValueError("occurrence limit must be between 1 and 200") + with self._connect() as connection: + rows = connection.execute( + """SELECT body_json FROM scheduler_occurrences WHERE task_id=? + ORDER BY scheduled_for DESC,occurrence_id DESC LIMIT ?""", + (task_id, limit), + ).fetchall() + return [ScheduleOccurrence.model_validate_json(row["body_json"]) for row in rows] + + def list_all_occurrences(self, *, limit: int = 200) -> list[ScheduleOccurrence]: + """Return cross-task history, including records whose task was deleted.""" + + if limit < 1 or limit > 500: + raise ValueError("occurrence limit must be between 1 and 500") + with self._connect() as connection: + rows = connection.execute( + "SELECT body_json FROM scheduler_occurrences " + "ORDER BY scheduled_for DESC,occurrence_id DESC LIMIT ?", + (limit,), + ).fetchall() + return [ScheduleOccurrence.model_validate_json(row["body_json"]) for row in rows] + + def list_active_occurrences(self, *, limit: int = 200) -> list[ScheduleOccurrence]: + """Return only non-terminal occurrences for event reconciliation. + + The target snapshot is stored on the occurrence itself, so deleting a + task deliberately does not orphan a previously accepted execution. + """ + + if limit < 1 or limit > 200: + raise ValueError("active occurrence limit must be between 1 and 200") + placeholders = ",".join("?" for _ in _ACTIVE_STATES) + with self._connect() as connection: + rows = connection.execute( + "SELECT body_json FROM scheduler_occurrences " + f"WHERE state IN ({placeholders}) " + "ORDER BY scheduled_for,occurrence_id LIMIT ?", + (*_ACTIVE_STATES, limit), + ).fetchall() + return [ScheduleOccurrence.model_validate_json(row["body_json"]) for row in rows] + + def has_active_occurrence(self, task_id: str) -> bool: + placeholders = ",".join("?" for _ in _ACTIVE_STATES) + with self._connect() as connection: + row = connection.execute( + "SELECT 1 FROM scheduler_occurrences " + f"WHERE task_id=? AND state IN ({placeholders}) LIMIT 1", + (task_id, *_ACTIVE_STATES), + ).fetchone() + return row is not None + + def claim_and_advance( + self, + task: ScheduledTask, + *, + generation: int, + next_run_at: datetime | None, + state: Literal["claimed", "skipped"] = "claimed", + detail: str | None = None, + trigger: Literal["schedule", "manual"] = "schedule", + claimed_at: datetime | None = None, + ) -> ScheduleOccurrence | None: + if task.next_run_at is None: + raise ValueError("task must have next_run_at before it can be claimed") + scheduled_for = task.next_run_at + now = claimed_at or datetime.now(timezone.utc) + completed_at = now if state == "skipped" else None + transitions = [ScheduleOccurrenceTransition(state="claimed", at=now)] + if state == "skipped": + transitions.append(ScheduleOccurrenceTransition(state="skipped", at=now, detail=detail)) + occurrence = ScheduleOccurrence( + occurrence_id=occurrence_id(task.task_id, generation, scheduled_for, trigger), + task_id=task.task_id, + target=task.target, + scheduled_for=scheduled_for, + session_id=_session_id( + task, + occurrence_id_value=occurrence_id(task.task_id, generation, scheduled_for, trigger), + ), + trigger=trigger, + state=state, + claimed_at=now, + detail=detail, + completed_at=completed_at, + transitions=tuple(transitions), + ) + with self._connect() as connection: + connection.execute("BEGIN IMMEDIATE") + updated = connection.execute( + """UPDATE scheduler_tasks SET next_run_at=?,updated_at=? + WHERE task_id=? AND generation=? AND next_run_at=? AND enabled=1""", + ( + _iso(next_run_at) if next_run_at else None, + _iso(now), + task.task_id, + generation, + _iso(scheduled_for), + ), + ).rowcount + if updated != 1: + connection.rollback() + return None + connection.execute( + """INSERT OR IGNORE INTO scheduler_occurrences( + occurrence_id,task_id,generation,scheduled_for,trigger_kind,body_json,state,command_id,completed_at) + VALUES(?,?,?,?,?,?,?,?,?)""", + ( + occurrence.occurrence_id, + task.task_id, + generation, + _iso(scheduled_for), + trigger, + occurrence.model_dump_json(by_alias=True, exclude_none=True), + state, + None, + _iso(completed_at) if completed_at else None, + ), + ) + connection.commit() + return occurrence + + def mark_accepted( + self, + occurrence_id_value: str, + command_id: str, + *, + accepted_seq: int | None = None, + ) -> ScheduleOccurrence: + return self._transition( + occurrence_id_value, + state="accepted", + command_id=command_id, + accepted_seq=accepted_seq, + last_event_seq=accepted_seq, + accepted_at=datetime.now(timezone.utc), + ) + + def claim_manual( + self, + task: ScheduledTask, + *, + generation: int, + now: datetime, + ) -> ScheduleOccurrence | None: + """Create a durable manual occurrence without changing the timetable.""" + + occurrence = ScheduleOccurrence( + occurrence_id=occurrence_id(task.task_id, generation, now, "manual"), + task_id=task.task_id, + target=task.target, + scheduled_for=now, + session_id=_session_id( + task, + occurrence_id_value=occurrence_id(task.task_id, generation, now, "manual"), + ), + trigger="manual", + state="claimed", + claimed_at=now, + transitions=(ScheduleOccurrenceTransition(state="claimed", at=now),), + ) + with self._connect() as connection: + connection.execute("BEGIN IMMEDIATE") + current = connection.execute( + "SELECT generation,enabled FROM scheduler_tasks WHERE task_id=?", + (task.task_id,), + ).fetchone() + if ( + current is None + or int(current["generation"]) != generation + or not current["enabled"] + ): + connection.rollback() + return None + inserted = connection.execute( + """INSERT OR IGNORE INTO scheduler_occurrences( + occurrence_id,task_id,generation,scheduled_for,trigger_kind, + body_json,state,command_id,completed_at + ) VALUES(?,?,?,?,?,?,?,?,?)""", + ( + occurrence.occurrence_id, + task.task_id, + generation, + _iso(now), + "manual", + occurrence.model_dump_json(by_alias=True, exclude_none=True), + occurrence.state, + None, + None, + ), + ).rowcount + if inserted != 1: + connection.rollback() + return None + connection.commit() + return occurrence + + def finish( + self, + occurrence_id_value: str, + *, + succeeded: bool, + error_code: str | None = None, + detail: str | None = None, + ) -> ScheduleOccurrence: + if not succeeded and not error_code: + raise ValueError("failed scheduler occurrence requires error_code") + return self._transition( + occurrence_id_value, + state="succeeded" if succeeded else "failed", + error_code=error_code, + detail=detail, + completed_at=datetime.now(timezone.utc), + ) + + def mark_running( + self, + occurrence_id_value: str, + *, + run_id: str, + last_event_seq: int, + ) -> ScheduleOccurrence: + return self._transition( + occurrence_id_value, + state="running", + run_id=run_id, + started_at=datetime.now(timezone.utc), + last_event_seq=last_event_seq, + ) + + def bind_run( + self, + occurrence_id_value: str, + *, + run_id: str, + last_event_seq: int, + ) -> ScheduleOccurrence: + """Record a durable run identity before that run becomes runnable.""" + + return self._transition( + occurrence_id_value, + run_id=run_id, + last_event_seq=last_event_seq, + ) + + def advance_reconciliation_cursor( + self, occurrence_id_value: str, *, last_event_seq: int + ) -> ScheduleOccurrence: + return self._transition( + occurrence_id_value, + last_event_seq=last_event_seq, + ) + + def _transition(self, occurrence_id_value: str, **updates: object) -> ScheduleOccurrence: + with self._connect() as connection: + connection.execute("BEGIN IMMEDIATE") + row = connection.execute( + "SELECT body_json,state FROM scheduler_occurrences WHERE occurrence_id=?", + (occurrence_id_value,), + ).fetchone() + if row is None: + connection.rollback() + raise KeyError(occurrence_id_value) + body = json.loads(row["body_json"]) + current = ScheduleOccurrence.model_validate(body) + terminal = {"succeeded", "failed", "skipped", "cancelled"} + # Terminal facts are first-wins. A replayed SSE frame or a later + # contradictory event must never rewrite auditable scheduler + # history after it has reached a conclusion. + if current.state in terminal: + connection.rollback() + return current + current_seq = current.last_event_seq + requested_seq = updates.get("last_event_seq") + if ( + isinstance(requested_seq, int) + and current_seq is not None + and requested_seq < current_seq + ): + connection.rollback() + return current + # Stored JSON uses the public camelCase aliases. Updating with a + # Python field name while an older alias is present would create + # two values for one field and Pydantic correctly rejects it as an + # ambiguous/extra input. Normalize every mutation at this one + # persistence boundary instead. + for key, value in updates.items(): + if value is None: + continue + field = ScheduleOccurrence.model_fields.get(key) + encoded_key = field.alias if field and field.alias else key + body[encoded_key] = _iso(value) if isinstance(value, datetime) else value + requested_state = updates.get("state") + if isinstance(requested_state, str) and requested_state != current.state: + transition_at = next( + ( + value + for name in ("completed_at", "started_at", "accepted_at") + if isinstance((value := updates.get(name)), datetime) + ), + datetime.now(timezone.utc), + ) + transitions = list(current.transitions) + if transitions and transition_at < transitions[-1].at: + # Custom/test clocks and small host clock corrections must + # not make a durable audit timeline go backwards. + transition_at = transitions[-1].at + transitions.append( + ScheduleOccurrenceTransition( + state=requested_state, # type: ignore[arg-type] + at=transition_at, + detail=(str(updates["detail"]) if updates.get("detail") else None), + error_code=( + str(updates["error_code"]) if updates.get("error_code") else None + ), + ) + ) + body["transitions"] = [ + item.model_dump(mode="json", by_alias=True, exclude_none=True) + for item in transitions + ] + occurrence = ScheduleOccurrence.model_validate(body) + connection.execute( + """UPDATE scheduler_occurrences SET body_json=?,state=?,command_id=?,completed_at=? + WHERE occurrence_id=?""", + ( + occurrence.model_dump_json(by_alias=True, exclude_none=True), + occurrence.state, + occurrence.command_id, + _iso(occurrence.completed_at) if occurrence.completed_at else None, + occurrence_id_value, + ), + ) + connection.commit() + return occurrence + + def acquire_lease(self, *, owner_id: str, now: datetime, ttl_seconds: int = 30) -> bool: + expiry = now.astimezone(timezone.utc).timestamp() + ttl_seconds + expires_at = datetime.fromtimestamp(expiry, tz=timezone.utc) + with self._connect() as connection: + connection.execute("BEGIN IMMEDIATE") + row = connection.execute( + "SELECT owner_id,expires_at FROM scheduler_leases " + "WHERE lease_name='local-scheduler'" + ).fetchone() + allowed = row is None or _parse(row["expires_at"]) <= now or row["owner_id"] == owner_id + if allowed: + connection.execute( + """INSERT INTO scheduler_leases(lease_name,owner_id,expires_at) + VALUES('local-scheduler',?,?) + ON CONFLICT(lease_name) DO UPDATE SET + owner_id=excluded.owner_id,expires_at=excluded.expires_at""", + (owner_id, _iso(expires_at)), + ) + connection.commit() + return True + connection.rollback() + return False + + +__all__ = ["SchedulerSQLiteStore", "occurrence_id"] diff --git a/ksadk/server/static/assets/ArtifactsPanel-DSU1sWD_.js b/ksadk/server/static/assets/ArtifactsPanel-CytJCLMc.js similarity index 96% rename from ksadk/server/static/assets/ArtifactsPanel-DSU1sWD_.js rename to ksadk/server/static/assets/ArtifactsPanel-CytJCLMc.js index 63c973a1..8a87db55 100644 --- a/ksadk/server/static/assets/ArtifactsPanel-DSU1sWD_.js +++ b/ksadk/server/static/assets/ArtifactsPanel-CytJCLMc.js @@ -1 +1 @@ -import{St as e,Tt as t,bt as n,gt as r,lt as i,n as a,t as o,ut as s,xt as c}from"./index-8ipRcQ-M.js";var l=t(e(),1),u=n();function d(){let e=c(e=>e.visible),t=c(e=>e.content),n=c(e=>e.type),d=c(e=>e.hide),f=(0,l.useRef)(null);if(a(f),!e||!t)return null;let p=o(t);return(0,u.jsxs)(`aside`,{className:i(`flex h-full flex-shrink-0 flex-col border-l border-slate-200/30 bg-white dark:border-slate-800/40 dark:bg-slate-950`,`w-[min(42rem,50vw)]`),children:[(0,u.jsxs)(`div`,{className:`flex h-14 flex-shrink-0 items-center justify-between border-b border-slate-200/30 px-4 dark:border-slate-800/40`,children:[(0,u.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,u.jsx)(`span`,{className:`text-sm font-semibold text-slate-900 dark:text-slate-100`,children:`Artifact`}),(0,u.jsx)(`span`,{className:`rounded-md bg-slate-100 px-1.5 py-0.5 font-mono text-[11px] text-slate-500 dark:bg-slate-900 dark:text-slate-400`,children:n})]}),(0,u.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,u.jsxs)(`button`,{type:`button`,onClick:()=>{let e=new Blob([t],{type:`text/html;charset=utf-8`}),r=URL.createObjectURL(e),i=document.createElement(`a`);i.href=r,i.download=`artifact.${n===`svg`?`svg`:`html`}`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)},className:`inline-flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-xs font-medium text-slate-600 transition hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-slate-900`,title:`Download`,children:[(0,u.jsx)(r,{className:`h-3.5 w-3.5`}),`Download`]}),(0,u.jsx)(`button`,{type:`button`,onClick:d,className:`rounded-lg p-1.5 text-slate-500 transition hover:bg-slate-100 hover:text-slate-900 dark:text-slate-400 dark:hover:bg-slate-900 dark:hover:text-slate-100`,"aria-label":`Close Artifact`,title:`Close`,children:(0,u.jsx)(s,{className:`h-4 w-4`})})]})]}),(0,u.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,u.jsx)(`iframe`,{ref:f,srcDoc:p,sandbox:`allow-scripts allow-downloads`,title:`Artifact Preview`,className:`h-full w-full border-0 bg-white`})})]})}export{d as ArtifactsPanel}; \ No newline at end of file +import{St as e,Tt as t,bt as n,gt as r,lt as i,n as a,t as o,ut as s,xt as c}from"./index-BkDx9KsG.js";var l=t(e(),1),u=n();function d(){let e=c(e=>e.visible),t=c(e=>e.content),n=c(e=>e.type),d=c(e=>e.hide),f=(0,l.useRef)(null);if(a(f),!e||!t)return null;let p=o(t);return(0,u.jsxs)(`aside`,{className:i(`flex h-full flex-shrink-0 flex-col border-l border-slate-200/30 bg-white dark:border-slate-800/40 dark:bg-slate-950`,`w-[min(42rem,50vw)]`),children:[(0,u.jsxs)(`div`,{className:`flex h-14 flex-shrink-0 items-center justify-between border-b border-slate-200/30 px-4 dark:border-slate-800/40`,children:[(0,u.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,u.jsx)(`span`,{className:`text-sm font-semibold text-slate-900 dark:text-slate-100`,children:`Artifact`}),(0,u.jsx)(`span`,{className:`rounded-md bg-slate-100 px-1.5 py-0.5 font-mono text-[11px] text-slate-500 dark:bg-slate-900 dark:text-slate-400`,children:n})]}),(0,u.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,u.jsxs)(`button`,{type:`button`,onClick:()=>{let e=new Blob([t],{type:`text/html;charset=utf-8`}),r=URL.createObjectURL(e),i=document.createElement(`a`);i.href=r,i.download=`artifact.${n===`svg`?`svg`:`html`}`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)},className:`inline-flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-xs font-medium text-slate-600 transition hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-slate-900`,title:`Download`,children:[(0,u.jsx)(r,{className:`h-3.5 w-3.5`}),`Download`]}),(0,u.jsx)(`button`,{type:`button`,onClick:d,className:`rounded-lg p-1.5 text-slate-500 transition hover:bg-slate-100 hover:text-slate-900 dark:text-slate-400 dark:hover:bg-slate-900 dark:hover:text-slate-100`,"aria-label":`Close Artifact`,title:`Close`,children:(0,u.jsx)(s,{className:`h-4 w-4`})})]})]}),(0,u.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,u.jsx)(`iframe`,{ref:f,srcDoc:p,sandbox:`allow-scripts allow-downloads`,title:`Artifact Preview`,className:`h-full w-full border-0 bg-white`})})]})}export{d as ArtifactsPanel}; \ No newline at end of file diff --git a/ksadk/server/static/assets/CodeBlock-DOH6MVcn.js b/ksadk/server/static/assets/CodeBlock-D6tEbvd9.js similarity index 99% rename from ksadk/server/static/assets/CodeBlock-DOH6MVcn.js rename to ksadk/server/static/assets/CodeBlock-D6tEbvd9.js index 722fac1e..88fa9799 100644 --- a/ksadk/server/static/assets/CodeBlock-DOH6MVcn.js +++ b/ksadk/server/static/assets/CodeBlock-D6tEbvd9.js @@ -1,4 +1,4 @@ -import{St as e,Tt as t,U as n,_t as r,at as i,bt as a,ht as o,it as s,lt as c,n as l,nt as u,ot as d,rt as f,st as p,t as m,tt as h,ut as g,vt as _,yt as v}from"./index-8ipRcQ-M.js";var y=v(`text-wrap`,[[`path`,{d:`m16 16-3 3 3 3`,key:`117b85`}],[`path`,{d:`M3 12h14.5a1 1 0 0 1 0 7H13`,key:`18xa6z`}],[`path`,{d:`M3 19h6`,key:`1ygdsz`}],[`path`,{d:`M3 5h18`,key:`1u36vt`}]]);b.displayName=`abap`,b.aliases=[];function b(e){e.languages.abap={comment:/^\*.*/m,string:/(`|')(?:\\.|(?!\1)[^\\\r\n])*\1/,"string-template":{pattern:/([|}])(?:\\.|[^\\|{\r\n])*(?=[|{])/,lookbehind:!0,alias:`string`},"eol-comment":{pattern:/(^|\s)".*/m,lookbehind:!0,alias:`comment`},keyword:{pattern:/(\s|\.|^)(?:\*-INPUT|\?TO|ABAP-SOURCE|ABBREVIATED|ABS|ABSTRACT|ACCEPT|ACCEPTING|ACCESSPOLICY|ACCORDING|ACOS|ACTIVATION|ACTUAL|ADD|ADD-CORRESPONDING|ADJACENT|AFTER|ALIAS|ALIASES|ALIGN|ALL|ALLOCATE|ALPHA|ANALYSIS|ANALYZER|AND|ANY|APPEND|APPENDAGE|APPENDING|APPLICATION|ARCHIVE|AREA|ARITHMETIC|AS|ASCENDING|ASIN|ASPECT|ASSERT|ASSIGN|ASSIGNED|ASSIGNING|ASSOCIATION|ASYNCHRONOUS|AT|ATAN|ATTRIBUTES|AUTHORITY|AUTHORITY-CHECK|AVG|BACK|BACKGROUND|BACKUP|BACKWARD|BADI|BASE|BEFORE|BEGIN|BETWEEN|BIG|BINARY|BINDING|BIT|BIT-AND|BIT-NOT|BIT-OR|BIT-XOR|BLACK|BLANK|BLANKS|BLOB|BLOCK|BLOCKS|BLUE|BOUND|BOUNDARIES|BOUNDS|BOXED|BREAK-POINT|BT|BUFFER|BY|BYPASSING|BYTE|BYTE-CA|BYTE-CN|BYTE-CO|BYTE-CS|BYTE-NA|BYTE-NS|BYTE-ORDER|C|CA|CALL|CALLING|CASE|CAST|CASTING|CATCH|CEIL|CENTER|CENTERED|CHAIN|CHAIN-INPUT|CHAIN-REQUEST|CHANGE|CHANGING|CHANNELS|CHAR-TO-HEX|CHARACTER|CHARLEN|CHECK|CHECKBOX|CIRCULAR|CI_|CLASS|CLASS-CODING|CLASS-DATA|CLASS-EVENTS|CLASS-METHODS|CLASS-POOL|CLEANUP|CLEAR|CLIENT|CLOB|CLOCK|CLOSE|CN|CNT|CO|COALESCE|CODE|CODING|COLLECT|COLOR|COLUMN|COLUMNS|COL_BACKGROUND|COL_GROUP|COL_HEADING|COL_KEY|COL_NEGATIVE|COL_NORMAL|COL_POSITIVE|COL_TOTAL|COMMENT|COMMENTS|COMMIT|COMMON|COMMUNICATION|COMPARING|COMPONENT|COMPONENTS|COMPRESSION|COMPUTE|CONCAT|CONCATENATE|COND|CONDENSE|CONDITION|CONNECT|CONNECTION|CONSTANTS|CONTEXT|CONTEXTS|CONTINUE|CONTROL|CONTROLS|CONV|CONVERSION|CONVERT|COPIES|COPY|CORRESPONDING|COS|COSH|COUNT|COUNTRY|COVER|CP|CPI|CREATE|CREATING|CRITICAL|CS|CURRENCY|CURRENCY_CONVERSION|CURRENT|CURSOR|CURSOR-SELECTION|CUSTOMER|CUSTOMER-FUNCTION|DANGEROUS|DATA|DATABASE|DATAINFO|DATASET|DATE|DAYLIGHT|DBMAXLEN|DD\/MM\/YY|DD\/MM\/YYYY|DDMMYY|DEALLOCATE|DECIMALS|DECIMAL_SHIFT|DECLARATIONS|DEEP|DEFAULT|DEFERRED|DEFINE|DEFINING|DEFINITION|DELETE|DELETING|DEMAND|DEPARTMENT|DESCENDING|DESCRIBE|DESTINATION|DETAIL|DIALOG|DIRECTORY|DISCONNECT|DISPLAY|DISPLAY-MODE|DISTANCE|DISTINCT|DIV|DIVIDE|DIVIDE-CORRESPONDING|DIVISION|DO|DUMMY|DUPLICATE|DUPLICATES|DURATION|DURING|DYNAMIC|DYNPRO|E|EACH|EDIT|EDITOR-CALL|ELSE|ELSEIF|EMPTY|ENABLED|ENABLING|ENCODING|END|END-ENHANCEMENT-SECTION|END-LINES|END-OF-DEFINITION|END-OF-FILE|END-OF-PAGE|END-OF-SELECTION|ENDAT|ENDCASE|ENDCATCH|ENDCHAIN|ENDCLASS|ENDDO|ENDENHANCEMENT|ENDEXEC|ENDFOR|ENDFORM|ENDFUNCTION|ENDIAN|ENDIF|ENDING|ENDINTERFACE|ENDLOOP|ENDMETHOD|ENDMODULE|ENDON|ENDPROVIDE|ENDSELECT|ENDTRY|ENDWHILE|ENGINEERING|ENHANCEMENT|ENHANCEMENT-POINT|ENHANCEMENT-SECTION|ENHANCEMENTS|ENTRIES|ENTRY|ENVIRONMENT|EQ|EQUAL|EQUIV|ERRORMESSAGE|ERRORS|ESCAPE|ESCAPING|EVENT|EVENTS|EXACT|EXCEPT|EXCEPTION|EXCEPTION-TABLE|EXCEPTIONS|EXCLUDE|EXCLUDING|EXEC|EXECUTE|EXISTS|EXIT|EXIT-COMMAND|EXP|EXPAND|EXPANDING|EXPIRATION|EXPLICIT|EXPONENT|EXPORT|EXPORTING|EXTEND|EXTENDED|EXTENSION|EXTRACT|FAIL|FETCH|FIELD|FIELD-GROUPS|FIELD-SYMBOL|FIELD-SYMBOLS|FIELDS|FILE|FILTER|FILTER-TABLE|FILTERS|FINAL|FIND|FIRST|FIRST-LINE|FIXED-POINT|FKEQ|FKGE|FLOOR|FLUSH|FONT|FOR|FORM|FORMAT|FORWARD|FOUND|FRAC|FRAME|FRAMES|FREE|FRIENDS|FROM|FUNCTION|FUNCTION-POOL|FUNCTIONALITY|FURTHER|GAPS|GE|GENERATE|GET|GIVING|GKEQ|GKGE|GLOBAL|GRANT|GREATER|GREEN|GROUP|GROUPS|GT|HANDLE|HANDLER|HARMLESS|HASHED|HAVING|HDB|HEAD-LINES|HEADER|HEADERS|HEADING|HELP-ID|HELP-REQUEST|HIDE|HIGH|HINT|HOLD|HOTSPOT|I|ICON|ID|IDENTIFICATION|IDENTIFIER|IDS|IF|IGNORE|IGNORING|IMMEDIATELY|IMPLEMENTATION|IMPLEMENTATIONS|IMPLEMENTED|IMPLICIT|IMPORT|IMPORTING|IN|INACTIVE|INCL|INCLUDE|INCLUDES|INCLUDING|INCREMENT|INDEX|INDEX-LINE|INFOTYPES|INHERITING|INIT|INITIAL|INITIALIZATION|INNER|INOUT|INPUT|INSERT|INSTANCES|INTENSIFIED|INTERFACE|INTERFACE-POOL|INTERFACES|INTERNAL|INTERVALS|INTO|INVERSE|INVERTED-DATE|IS|ISO|ITERATOR|ITNO|JOB|JOIN|KEEP|KEEPING|KERNEL|KEY|KEYS|KEYWORDS|KIND|LANGUAGE|LAST|LATE|LAYOUT|LE|LEADING|LEAVE|LEFT|LEFT-JUSTIFIED|LEFTPLUS|LEFTSPACE|LEGACY|LENGTH|LESS|LET|LEVEL|LEVELS|LIKE|LINE|LINE-COUNT|LINE-SELECTION|LINE-SIZE|LINEFEED|LINES|LIST|LIST-PROCESSING|LISTBOX|LITTLE|LLANG|LOAD|LOAD-OF-PROGRAM|LOB|LOCAL|LOCALE|LOCATOR|LOG|LOG-POINT|LOG10|LOGFILE|LOGICAL|LONG|LOOP|LOW|LOWER|LPAD|LPI|LT|M|MAIL|MAIN|MAJOR-ID|MAPPING|MARGIN|MARK|MASK|MATCH|MATCHCODE|MAX|MAXIMUM|MEDIUM|MEMBERS|MEMORY|MESH|MESSAGE|MESSAGE-ID|MESSAGES|MESSAGING|METHOD|METHODS|MIN|MINIMUM|MINOR-ID|MM\/DD\/YY|MM\/DD\/YYYY|MMDDYY|MOD|MODE|MODIF|MODIFIER|MODIFY|MODULE|MOVE|MOVE-CORRESPONDING|MULTIPLY|MULTIPLY-CORRESPONDING|NA|NAME|NAMETAB|NATIVE|NB|NE|NESTED|NESTING|NEW|NEW-LINE|NEW-PAGE|NEW-SECTION|NEXT|NO|NO-DISPLAY|NO-EXTENSION|NO-GAP|NO-GAPS|NO-GROUPING|NO-HEADING|NO-SCROLLING|NO-SIGN|NO-TITLE|NO-TOPOFPAGE|NO-ZERO|NODE|NODES|NON-UNICODE|NON-UNIQUE|NOT|NP|NS|NULL|NUMBER|NUMOFCHAR|O|OBJECT|OBJECTS|OBLIGATORY|OCCURRENCE|OCCURRENCES|OCCURS|OF|OFF|OFFSET|OLE|ON|ONLY|OPEN|OPTION|OPTIONAL|OPTIONS|OR|ORDER|OTHER|OTHERS|OUT|OUTER|OUTPUT|OUTPUT-LENGTH|OVERFLOW|OVERLAY|PACK|PACKAGE|PAD|PADDING|PAGE|PAGES|PARAMETER|PARAMETER-TABLE|PARAMETERS|PART|PARTIALLY|PATTERN|PERCENTAGE|PERFORM|PERFORMING|PERSON|PF|PF-STATUS|PINK|PLACES|POOL|POSITION|POS_HIGH|POS_LOW|PRAGMAS|PRECOMPILED|PREFERRED|PRESERVING|PRIMARY|PRINT|PRINT-CONTROL|PRIORITY|PRIVATE|PROCEDURE|PROCESS|PROGRAM|PROPERTY|PROTECTED|PROVIDE|PUBLIC|PUSHBUTTON|PUT|QUEUE-ONLY|QUICKINFO|RADIOBUTTON|RAISE|RAISING|RANGE|RANGES|RAW|READ|READ-ONLY|READER|RECEIVE|RECEIVED|RECEIVER|RECEIVING|RED|REDEFINITION|REDUCE|REDUCED|REF|REFERENCE|REFRESH|REGEX|REJECT|REMOTE|RENAMING|REPLACE|REPLACEMENT|REPLACING|REPORT|REQUEST|REQUESTED|RESERVE|RESET|RESOLUTION|RESPECTING|RESPONSIBLE|RESULT|RESULTS|RESUMABLE|RESUME|RETRY|RETURN|RETURNCODE|RETURNING|RIGHT|RIGHT-JUSTIFIED|RIGHTPLUS|RIGHTSPACE|RISK|RMC_COMMUNICATION_FAILURE|RMC_INVALID_STATUS|RMC_SYSTEM_FAILURE|ROLE|ROLLBACK|ROUND|ROWS|RTTI|RUN|SAP|SAP-SPOOL|SAVING|SCALE_PRESERVING|SCALE_PRESERVING_SCIENTIFIC|SCAN|SCIENTIFIC|SCIENTIFIC_WITH_LEADING_ZERO|SCREEN|SCROLL|SCROLL-BOUNDARY|SCROLLING|SEARCH|SECONDARY|SECONDS|SECTION|SELECT|SELECT-OPTIONS|SELECTION|SELECTION-SCREEN|SELECTION-SET|SELECTION-SETS|SELECTION-TABLE|SELECTIONS|SELECTOR|SEND|SEPARATE|SEPARATED|SET|SHARED|SHIFT|SHORT|SHORTDUMP-ID|SIGN|SIGN_AS_POSTFIX|SIMPLE|SIN|SINGLE|SINH|SIZE|SKIP|SKIPPING|SMART|SOME|SORT|SORTABLE|SORTED|SOURCE|SPACE|SPECIFIED|SPLIT|SPOOL|SPOTS|SQL|SQLSCRIPT|SQRT|STABLE|STAMP|STANDARD|START-OF-SELECTION|STARTING|STATE|STATEMENT|STATEMENTS|STATIC|STATICS|STATUSINFO|STEP-LOOP|STOP|STRLEN|STRUCTURE|STRUCTURES|STYLE|SUBKEY|SUBMATCHES|SUBMIT|SUBROUTINE|SUBSCREEN|SUBSTRING|SUBTRACT|SUBTRACT-CORRESPONDING|SUFFIX|SUM|SUMMARY|SUMMING|SUPPLIED|SUPPLY|SUPPRESS|SWITCH|SWITCHSTATES|SYMBOL|SYNCPOINTS|SYNTAX|SYNTAX-CHECK|SYNTAX-TRACE|SYSTEM-CALL|SYSTEM-EXCEPTIONS|SYSTEM-EXIT|TAB|TABBED|TABLE|TABLES|TABLEVIEW|TABSTRIP|TAN|TANH|TARGET|TASK|TASKS|TEST|TESTING|TEXT|TEXTPOOL|THEN|THROW|TIME|TIMES|TIMESTAMP|TIMEZONE|TITLE|TITLE-LINES|TITLEBAR|TO|TOKENIZATION|TOKENS|TOP-LINES|TOP-OF-PAGE|TRACE-FILE|TRACE-TABLE|TRAILING|TRANSACTION|TRANSFER|TRANSFORMATION|TRANSLATE|TRANSPORTING|TRMAC|TRUNC|TRUNCATE|TRUNCATION|TRY|TYPE|TYPE-POOL|TYPE-POOLS|TYPES|ULINE|UNASSIGN|UNDER|UNICODE|UNION|UNIQUE|UNIT|UNIT_CONVERSION|UNIX|UNPACK|UNTIL|UNWIND|UP|UPDATE|UPPER|USER|USER-COMMAND|USING|UTF-8|VALID|VALUE|VALUE-REQUEST|VALUES|VARY|VARYING|VERIFICATION-MESSAGE|VERSION|VIA|VIEW|VISIBLE|WAIT|WARNING|WHEN|WHENEVER|WHERE|WHILE|WIDTH|WINDOW|WINDOWS|WITH|WITH-HEADING|WITH-TITLE|WITHOUT|WORD|WORK|WRITE|WRITER|X|XML|XOR|XSD|XSTRLEN|YELLOW|YES|YYMMDD|Z|ZERO|ZONE)(?![\w-])/i,lookbehind:!0},number:/\b\d+\b/,operator:{pattern:/(\s)(?:\*\*?|<[=>]?|>=?|\?=|[-+\/=])(?=\s)/,lookbehind:!0},"string-operator":{pattern:/(\s)&&?(?=\s)/,lookbehind:!0,alias:`keyword`},"token-operator":[{pattern:/(\w)(?:->?|=>|[~|{}])(?=\w)/,lookbehind:!0,alias:`punctuation`},{pattern:/[|{}]/,alias:`punctuation`}],punctuation:/[,.:()]/}}x.displayName=`abnf`,x.aliases=[];function x(e){(function(e){var t=`(?:ALPHA|BIT|CHAR|CR|CRLF|CTL|DIGIT|DQUOTE|HEXDIG|HTAB|LF|LWSP|OCTET|SP|VCHAR|WSP)`;e.languages.abnf={comment:/;.*/,string:{pattern:/(?:%[is])?"[^"\n\r]*"/,greedy:!0,inside:{punctuation:/^%[is]/}},range:{pattern:/%(?:b[01]+-[01]+|d\d+-\d+|x[A-F\d]+-[A-F\d]+)/i,alias:`number`},terminal:{pattern:/%(?:b[01]+(?:\.[01]+)*|d\d+(?:\.\d+)*|x[A-F\d]+(?:\.[A-F\d]+)*)/i,alias:`number`},repetition:{pattern:/(^|[^\w-])(?:\d*\*\d*|\d+)/,lookbehind:!0,alias:`operator`},definition:{pattern:/(^[ \t]*)(?:[a-z][\w-]*|<[^<>\r\n]*>)(?=\s*=)/m,lookbehind:!0,alias:`keyword`,inside:{punctuation:/<|>/}},"core-rule":{pattern:RegExp(`(?:(^|[^<\\w-])`+t+`|<`+t+`>)(?![\\w-])`,`i`),lookbehind:!0,alias:[`rule`,`constant`],inside:{punctuation:/<|>/}},rule:{pattern:/(^|[^<\w-])[a-z][\w-]*|<[^<>\r\n]*>/i,lookbehind:!0,inside:{punctuation:/<|>/}},operator:/=\/?|\//,punctuation:/[()\[\]]/}})(e)}S.displayName=`clike`,S.aliases=[];function S(e){e.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}}C.displayName=`javascript`,C.aliases=[`js`];function C(e){e.register(S),e.languages.javascript=e.languages.extend(`clike`,{"class-name":[e.languages.clike[`class-name`],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(`(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])`),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),e.languages.javascript[`class-name`][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,e.languages.insertBefore(`javascript`,`keyword`,{regex:{pattern:RegExp(`((?:^|[^$\\w\\xA0-\\uFFFF."'\\])\\s]|\\b(?:return|yield))\\s*)\\/(?:(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))`),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:`language-regex`,inside:e.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:`function`},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:e.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:e.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:e.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:e.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),e.languages.insertBefore(`javascript`,`string`,{hashbang:{pattern:/^#!.*/,greedy:!0,alias:`comment`},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:`string`},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:`punctuation`},rest:e.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:`property`}}),e.languages.insertBefore(`javascript`,`operator`,{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:`property`}}),e.languages.markup&&(e.languages.markup.tag.addInlined(`script`,`javascript`),e.languages.markup.tag.addAttribute(`on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)`,`javascript`)),e.languages.js=e.languages.javascript}w.displayName=`actionscript`,w.aliases=[];function w(e){e.register(C),e.languages.actionscript=e.languages.extend(`javascript`,{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),e.languages.actionscript[`class-name`].alias=`function`,delete e.languages.actionscript.parameter,delete e.languages.actionscript[`literal-property`],e.languages.markup&&e.languages.insertBefore(`actionscript`,`string`,{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:e.languages.markup}})}T.displayName=`ada`,T.aliases=[];function T(e){e.languages.ada={comment:/--.*/,string:/"(?:""|[^"\r\f\n])*"/,number:[{pattern:/\b\d(?:_?\d)*#[\dA-F](?:_?[\dA-F])*(?:\.[\dA-F](?:_?[\dA-F])*)?#(?:E[+-]?\d(?:_?\d)*)?/i},{pattern:/\b\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:E[+-]?\d(?:_?\d)*)?\b/i}],attribute:{pattern:/\b'\w+/,alias:`attr-name`},keyword:/\b(?:abort|abs|abstract|accept|access|aliased|all|and|array|at|begin|body|case|constant|declare|delay|delta|digits|do|else|elsif|end|entry|exception|exit|for|function|generic|goto|if|in|interface|is|limited|loop|mod|new|not|null|of|or|others|out|overriding|package|pragma|private|procedure|protected|raise|range|record|rem|renames|requeue|return|reverse|select|separate|some|subtype|synchronized|tagged|task|terminate|then|type|until|use|when|while|with|xor)\b/i,boolean:/\b(?:false|true)\b/i,operator:/<[=>]?|>=?|=>?|:=|\/=?|\*\*?|[&+-]/,punctuation:/\.\.?|[,;():]/,char:/'.'/,variable:/\b[a-z](?:\w)*\b/i}}E.displayName=`agda`,E.aliases=[];function E(e){(function(e){e.languages.agda={comment:/\{-[\s\S]*?(?:-\}|$)|--.*/,string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},punctuation:/[(){}⦃⦄.;@]/,"class-name":{pattern:/((?:data|record) +)\S+/,lookbehind:!0},function:{pattern:/(^[ \t]*)(?!\s)[^:\r\n]+(?=:)/m,lookbehind:!0},operator:{pattern:/(^\s*|\s)(?:[=|:∀→λ\\?_]|->)(?=\s)/,lookbehind:!0},keyword:/\b(?:Set|abstract|constructor|data|eta-equality|field|forall|hiding|import|in|inductive|infix|infixl|infixr|instance|let|macro|module|mutual|no-eta-equality|open|overlap|pattern|postulate|primitive|private|public|quote|quoteContext|quoteGoal|quoteTerm|record|renaming|rewrite|syntax|tactic|unquote|unquoteDecl|unquoteDef|using|variable|where|with)\b/}})(e)}D.displayName=`al`,D.aliases=[];function D(e){e.languages.al={comment:/\/\/.*|\/\*[\s\S]*?\*\//,string:{pattern:/'(?:''|[^'\r\n])*'(?!')|"(?:""|[^"\r\n])*"(?!")/,greedy:!0},function:{pattern:/(\b(?:event|procedure|trigger)\s+|(?:^|[^.])\.\s*)[a-z_]\w*(?=\s*\()/i,lookbehind:!0},keyword:[/\b(?:array|asserterror|begin|break|case|do|downto|else|end|event|exit|for|foreach|function|if|implements|in|indataset|interface|internal|local|of|procedure|program|protected|repeat|runonclient|securityfiltering|suppressdispose|temporary|then|to|trigger|until|var|while|with|withevents)\b/i,/\b(?:action|actions|addafter|addbefore|addfirst|addlast|area|assembly|chartpart|codeunit|column|controladdin|cuegroup|customizes|dataitem|dataset|dotnet|elements|enum|enumextension|extends|field|fieldattribute|fieldelement|fieldgroup|fieldgroups|fields|filter|fixed|grid|group|key|keys|label|labels|layout|modify|moveafter|movebefore|movefirst|movelast|page|pagecustomization|pageextension|part|profile|query|repeater|report|requestpage|schema|separator|systempart|table|tableelement|tableextension|textattribute|textelement|type|usercontrol|value|xmlport)\b/i],number:/\b(?:0x[\da-f]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)(?:F|LL?|U(?:LL?)?)?\b/i,boolean:/\b(?:false|true)\b/i,variable:/\b(?:Curr(?:FieldNo|Page|Report)|x?Rec|RequestOptionsPage)\b/,"class-name":/\b(?:automation|biginteger|bigtext|blob|boolean|byte|char|clienttype|code|completiontriggererrorlevel|connectiontype|database|dataclassification|datascope|date|dateformula|datetime|decimal|defaultlayout|dialog|dictionary|dotnetassembly|dotnettypedeclaration|duration|errorinfo|errortype|executioncontext|executionmode|fieldclass|fieldref|fieldtype|file|filterpagebuilder|guid|httpclient|httpcontent|httpheaders|httprequestmessage|httpresponsemessage|instream|integer|joker|jsonarray|jsonobject|jsontoken|jsonvalue|keyref|list|moduledependencyinfo|moduleinfo|none|notification|notificationscope|objecttype|option|outstream|pageresult|record|recordid|recordref|reportformat|securityfilter|sessionsettings|tableconnectiontype|tablefilter|testaction|testfield|testfilterfield|testpage|testpermissions|testrequestpage|text|textbuilder|textconst|textencoding|time|transactionmodel|transactiontype|variant|verbosity|version|view|views|webserviceactioncontext|webserviceactionresultcode|xmlattribute|xmlattributecollection|xmlcdata|xmlcomment|xmldeclaration|xmldocument|xmldocumenttype|xmlelement|xmlnamespacemanager|xmlnametable|xmlnode|xmlnodelist|xmlprocessinginstruction|xmlreadoptions|xmltext|xmlwriteoptions)\b/i,operator:/\.\.|:[=:]|[-+*/]=?|<>|[<>]=?|=|\b(?:and|div|mod|not|or|xor)\b/i,punctuation:/[()\[\]{}:.;,]/}}O.displayName=`antlr4`,O.aliases=[`g4`];function O(e){e.languages.antlr4={comment:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,string:{pattern:/'(?:\\.|[^\\'\r\n])*'/,greedy:!0},"character-class":{pattern:/\[(?:\\.|[^\\\]\r\n])*\]/,greedy:!0,alias:`regex`,inside:{range:{pattern:/([^[]|(?:^|[^\\])(?:\\\\)*\\\[)-(?!\])/,lookbehind:!0,alias:`punctuation`},escape:/\\(?:u(?:[a-fA-F\d]{4}|\{[a-fA-F\d]+\})|[pP]\{[=\w-]+\}|[^\r\nupP])/,punctuation:/[\[\]]/}},action:{pattern:/\{(?:[^{}]|\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*\}/,greedy:!0,inside:{content:{pattern:/(\{)[\s\S]+(?=\})/,lookbehind:!0},punctuation:/[{}]/}},command:{pattern:/(->\s*(?!\s))(?:\s*(?:,\s*)?\b[a-z]\w*(?:\s*\([^()\r\n]*\))?)+(?=\s*;)/i,lookbehind:!0,inside:{function:/\b\w+(?=\s*(?:[,(]|$))/,punctuation:/[,()]/}},annotation:{pattern:/@\w+(?:::\w+)*/,alias:`keyword`},label:{pattern:/#[ \t]*\w+/,alias:`punctuation`},keyword:/\b(?:catch|channels|finally|fragment|grammar|import|lexer|locals|mode|options|parser|returns|throws|tokens)\b/,definition:[{pattern:/\b[a-z]\w*(?=\s*:)/,alias:[`rule`,`class-name`]},{pattern:/\b[A-Z]\w*(?=\s*:)/,alias:[`token`,`constant`]}],constant:/\b[A-Z][A-Z_]*\b/,operator:/\.\.|->|[|~]|[*+?]\??/,punctuation:/[;:()=]/},e.languages.g4=e.languages.antlr4}k.displayName=`apacheconf`,k.aliases=[];function k(e){e.languages.apacheconf={comment:/#.*/,"directive-inline":{pattern:/(^[\t ]*)\b(?:AcceptFilter|AcceptPathInfo|AccessFileName|Action|Add(?:Alt|AltByEncoding|AltByType|Charset|DefaultCharset|Description|Encoding|Handler|Icon|IconByEncoding|IconByType|InputFilter|Language|ModuleInfo|OutputFilter|OutputFilterByType|Type)|Alias|AliasMatch|Allow(?:CONNECT|EncodedSlashes|Methods|Override|OverrideList)?|Anonymous(?:_LogEmail|_MustGiveEmail|_NoUserID|_VerifyEmail)?|AsyncRequestWorkerFactor|Auth(?:BasicAuthoritative|BasicFake|BasicProvider|BasicUseDigestAlgorithm|DBDUserPWQuery|DBDUserRealmQuery|DBMGroupFile|DBMType|DBMUserFile|Digest(?:Algorithm|Domain|NonceLifetime|Provider|Qop|ShmemSize)|Form(?:Authoritative|Body|DisableNoStore|FakeBasicAuth|Location|LoginRequiredLocation|LoginSuccessLocation|LogoutLocation|Method|Mimetype|Password|Provider|SitePassphrase|Size|Username)|GroupFile|LDAP(?:AuthorizePrefix|BindAuthoritative|BindDN|BindPassword|CharsetConfig|CompareAsUser|CompareDNOnServer|DereferenceAliases|GroupAttribute|GroupAttributeIsDN|InitialBindAsUser|InitialBindPattern|MaxSubGroupDepth|RemoteUserAttribute|RemoteUserIsDN|SearchAsUser|SubGroupAttribute|SubGroupClass|Url)|Merging|Name|nCache(?:Context|Enable|ProvideFor|SOCache|Timeout)|nzFcgiCheckAuthnProvider|nzFcgiDefineProvider|Type|UserFile|zDBDLoginToReferer|zDBDQuery|zDBDRedirectQuery|zDBMType|zSendForbiddenOnFailure)|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferedLogs|BufferSize|Cache(?:DefaultExpire|DetailHeader|DirLength|DirLevels|Disable|Enable|File|Header|IgnoreCacheControl|IgnoreHeaders|IgnoreNoLastMod|IgnoreQueryString|IgnoreURLSessionIdentifiers|KeyBaseURL|LastModifiedFactor|Lock|LockMaxAge|LockPath|MaxExpire|MaxFileSize|MinExpire|MinFileSize|NegotiatedDocs|QuickHandler|ReadSize|ReadTime|Root|Socache(?:MaxSize|MaxTime|MinTime|ReadSize|ReadTime)?|StaleOnError|StoreExpired|StoreNoStore|StorePrivate)|CGIDScriptTimeout|CGIMapExtension|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|Deflate(?:BufferSize|CompressionLevel|FilterNote|InflateLimitRequestBody|InflateRatio(?:Burst|Limit)|MemLevel|WindowSize)|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DTracePrivileges|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtendedStatus|ExtFilterDefine|ExtFilterOptions|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|Heartbeat(?:Address|Listen|MaxServers|Storage)|HostnameLookups|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|Index(?:HeadInsert|Ignore|IgnoreReset|Options|OrderDefault|StyleSheet)|InputSed|ISAPI(?:AppendLogToErrors|AppendLogToQuery|CacheFile|FakeAsync|LogNotSupported|ReadAheadBuffer)|KeepAlive|KeepAliveTimeout|KeptBodySize|LanguagePriority|LDAP(?:CacheEntries|CacheTTL|ConnectionPoolTTL|ConnectionTimeout|LibraryDebug|OpCacheEntries|OpCacheTTL|ReferralHopLimit|Referrals|Retries|RetryDelay|SharedCacheFile|SharedCacheSize|Timeout|TrustedClientCert|TrustedGlobalCert|TrustedMode|VerifyServerCert)|Limit(?:InternalRecursion|Request(?:Body|Fields|FieldSize|Line)|XMLRequestBody)|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|Lua(?:Hook(?:AccessChecker|AuthChecker|CheckUserID|Fixups|InsertFilter|Log|MapToStorage|TranslateName|TypeChecker)|Inherit|InputFilter|MapHandler|OutputFilter|PackageCPath|PackagePath|QuickHandler|Root|Scope)|Max(?:ConnectionsPerChild|KeepAliveRequests|MemFree|RangeOverlaps|RangeReversals|Ranges|RequestWorkers|SpareServers|SpareThreads|Threads)|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|MMapFile|ModemStandard|ModMimeUsePathInfo|MultiviewsMatch|Mutex|NameVirtualHost|NoProxy|NWSSLTrustedCerts|NWSSLUpgradeable|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|Proxy(?:AddHeaders|BadHeader|Block|Domain|ErrorOverride|ExpressDBMFile|ExpressDBMType|ExpressEnable|FtpDirCharset|FtpEscapeWildcards|FtpListOnWildcard|HTML(?:BufSize|CharsetOut|DocType|Enable|Events|Extended|Fixups|Interp|Links|Meta|StripComments|URLMap)|IOBufferSize|MaxForwards|Pass(?:Inherit|InterpolateEnv|Match|Reverse|ReverseCookieDomain|ReverseCookiePath)?|PreserveHost|ReceiveBufferSize|Remote|RemoteMatch|Requests|SCGIInternalRedirect|SCGISendfile|Set|SourceAddress|Status|Timeout|Via)|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIP(?:Header|InternalProxy|InternalProxyList|ProxiesHeader|TrustedProxy|TrustedProxyList)|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|Rewrite(?:Base|Cond|Engine|Map|Options|Rule)|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScoreBoardFile|Script(?:Alias|AliasMatch|InterpreterSource|Log|LogBuffer|LogLength|Sock)?|SecureListen|SeeRequestTail|SendBufferSize|Server(?:Admin|Alias|Limit|Name|Path|Root|Signature|Tokens)|Session(?:Cookie(?:Name|Name2|Remove)|Crypto(?:Cipher|Driver|Passphrase|PassphraseFile)|DBD(?:CookieName|CookieName2|CookieRemove|DeleteLabel|InsertLabel|PerUser|SelectLabel|UpdateLabel)|Env|Exclude|Header|Include|MaxAge)?|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|SSIEndTag|SSIErrorMsg|SSIETag|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSL(?:CACertificateFile|CACertificatePath|CADNRequestFile|CADNRequestPath|CARevocationCheck|CARevocationFile|CARevocationPath|CertificateChainFile|CertificateFile|CertificateKeyFile|CipherSuite|Compression|CryptoDevice|Engine|FIPS|HonorCipherOrder|InsecureRenegotiation|OCSP(?:DefaultResponder|Enable|OverrideResponder|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|UseRequestNonce)|OpenSSLConfCmd|Options|PassPhraseDialog|Protocol|Proxy(?:CACertificateFile|CACertificatePath|CARevocation(?:Check|File|Path)|CheckPeer(?:CN|Expire|Name)|CipherSuite|Engine|MachineCertificate(?:ChainFile|File|Path)|Protocol|Verify|VerifyDepth)|RandomSeed|RenegBufferSize|Require|RequireSSL|Session(?:Cache|CacheTimeout|TicketKeyFile|Tickets)|SRPUnknownUserSeed|SRPVerifierFile|Stapling(?:Cache|ErrorCacheTimeout|FakeTryLater|ForceURL|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|ReturnResponderErrors|StandardCacheTimeout)|StrictSNIVHostCheck|UserName|UseStapling|VerifyClient|VerifyDepth)|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadsPerChild|ThreadStackSize|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|Virtual(?:DocumentRoot|ScriptAlias)(?:IP)?|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\b/im,lookbehind:!0,alias:`property`},"directive-block":{pattern:/<\/?\b(?:Auth[nz]ProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|Require(?:All|Any|None)|VirtualHost)\b.*>/i,inside:{"directive-block":{pattern:/^<\/?\w+/,inside:{punctuation:/^<\/?/},alias:`tag`},"directive-block-parameter":{pattern:/.*[^>]/,inside:{punctuation:/:/,string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}}},alias:`attr-value`},punctuation:/>/},alias:`tag`},"directive-flags":{pattern:/\[(?:[\w=],?)+\]/,alias:`keyword`},string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}},variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/,regex:/\^?.*\$|\^.*\$?/}}A.displayName=`sql`,A.aliases=[];function A(e){e.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/}}j.displayName=`apex`,j.aliases=[];function j(e){e.register(S),e.register(A),(function(e){var t=/\b(?:(?:after|before)(?=\s+[a-z])|abstract|activate|and|any|array|as|asc|autonomous|begin|bigdecimal|blob|boolean|break|bulk|by|byte|case|cast|catch|char|class|collect|commit|const|continue|currency|date|datetime|decimal|default|delete|desc|do|double|else|end|enum|exception|exit|export|extends|final|finally|float|for|from|get(?=\s*[{};])|global|goto|group|having|hint|if|implements|import|in|inner|insert|instanceof|int|integer|interface|into|join|like|limit|list|long|loop|map|merge|new|not|null|nulls|number|object|of|on|or|outer|override|package|parallel|pragma|private|protected|public|retrieve|return|rollback|select|set|short|sObject|sort|static|string|super|switch|synchronized|system|testmethod|then|this|throw|time|transaction|transient|trigger|try|undelete|update|upsert|using|virtual|void|webservice|when|where|while|(?:inherited|with|without)\s+sharing)\b/i,n=`\\b(?:(?=[a-z_]\\w*\\s*[<\\[])|(?!))[A-Z_]\\w*(?:\\s*\\.\\s*[A-Z_]\\w*)*\\b(?:\\s*(?:\\[\\s*\\]|<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>))*`.replace(//g,function(){return t.source});function r(e){return RegExp(e.replace(//g,function(){return n}),`i`)}var i={keyword:t,punctuation:/[()\[\]{};,:.<>]/};e.languages.apex={comment:e.languages.clike.comment,string:e.languages.clike.string,sql:{pattern:/((?:[=,({:]|\breturn)\s*)\[[^\[\]]*\]/i,lookbehind:!0,greedy:!0,alias:`language-sql`,inside:e.languages.sql},annotation:{pattern:/@\w+\b/,alias:`punctuation`},"class-name":[{pattern:r(`(\\b(?:class|enum|extends|implements|instanceof|interface|new|trigger\\s+\\w+\\s+on)\\s+)`),lookbehind:!0,inside:i},{pattern:r(`(\\(\\s*)(?=\\s*\\)\\s*[\\w(])`),lookbehind:!0,inside:i},{pattern:r(`(?=\\s*\\w+\\s*[;=,(){:])`),inside:i}],trigger:{pattern:/(\btrigger\s+)\w+\b/i,lookbehind:!0,alias:`class-name`},keyword:t,function:/\b[a-z_]\w*(?=\s*\()/i,boolean:/\b(?:false|true)\b/i,number:/(?:\B\.\d+|\b\d+(?:\.\d+|L)?)\b/i,operator:/[!=](?:==?)?|\?\.?|&&|\|\||--|\+\+|[-+*/^&|]=?|:|<{1,3}=?/,punctuation:/[()\[\]{};,.]/}})(e)}M.displayName=`apl`,M.aliases=[];function M(e){e.languages.apl={comment:/(?:⍝|#[! ]).*$/m,string:{pattern:/'(?:[^'\r\n]|'')*'/,greedy:!0},number:/¯?(?:\d*\.?\b\d+(?:e[+¯]?\d+)?|¯|∞)(?:j¯?(?:(?:\d+(?:\.\d+)?|\.\d+)(?:e[+¯]?\d+)?|¯|∞))?/i,statement:/:[A-Z][a-z][A-Za-z]*\b/,"system-function":{pattern:/⎕[A-Z]+/i,alias:`function`},constant:/[⍬⌾#⎕⍞]/,function:/[-+×÷⌈⌊∣|⍳⍸?*⍟○!⌹<≤=>≥≠≡≢∊⍷∪∩~∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⊆⊇⌷⍋⍒⊤⊥⍕⍎⊣⊢⍁⍂≈⍯↗¤→]/,"monadic-operator":{pattern:/[\\\/⌿⍀¨⍨⌶&∥]/,alias:`operator`},"dyadic-operator":{pattern:/[.⍣⍠⍤∘⌸@⌺⍥]/,alias:`operator`},assignment:{pattern:/←/,alias:`keyword`},punctuation:/[\[;\]()◇⋄]/,dfn:{pattern:/[{}⍺⍵⍶⍹∇⍫:]/,alias:`builtin`}}}N.displayName=`applescript`,N.aliases=[];function N(e){e.languages.applescript={comment:[/\(\*(?:\(\*(?:[^*]|\*(?!\)))*\*\)|(?!\(\*)[\s\S])*?\*\)/,/--.+/,/#.+/],string:/"(?:\\.|[^"\\\r\n])*"/,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e-?\d+)?\b/i,operator:[/[&=≠≤≥*+\-\/÷^]|[<>]=?/,/\b(?:(?:begin|end|start)s? with|(?:contains?|(?:does not|doesn't) contain)|(?:is|isn't|is not) (?:contained by|in)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:comes|(?:does not|doesn't) come) (?:after|before)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equal to|equals|is not|isn't)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|as|div|mod|not|or))\b/],keyword:/\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/,"class-name":/\b(?:POSIX file|RGB color|alias|application|boolean|centimeters|centimetres|class|constant|cubic centimeters|cubic centimetres|cubic feet|cubic inches|cubic meters|cubic metres|cubic yards|date|degrees Celsius|degrees Fahrenheit|degrees Kelvin|feet|file|gallons|grams|inches|integer|kilograms|kilometers|kilometres|list|liters|litres|meters|metres|miles|number|ounces|pounds|quarts|real|record|reference|script|square feet|square kilometers|square kilometres|square meters|square metres|square miles|square yards|text|yards)\b/,punctuation:/[{}():,¬«»《》]/}}P.displayName=`aql`,P.aliases=[];function P(e){e.languages.aql={comment:/\/\/.*|\/\*[\s\S]*?\*\//,property:{pattern:/([{,]\s*)(?:(?!\d)\w+|(["'´`])(?:(?!\2)[^\\\r\n]|\\.)*\2)(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(["'])(?:(?!\1)[^\\\r\n]|\\.)*\1/,greedy:!0},identifier:{pattern:/([´`])(?:(?!\1)[^\\\r\n]|\\.)*\1/,greedy:!0},variable:/@@?\w+/,keyword:[{pattern:/(\bWITH\s+)COUNT(?=\s+INTO\b)/i,lookbehind:!0},/\b(?:AGGREGATE|ALL|AND|ANY|ASC|COLLECT|DESC|DISTINCT|FILTER|FOR|GRAPH|IN|INBOUND|INSERT|INTO|K_PATHS|K_SHORTEST_PATHS|LET|LIKE|LIMIT|NONE|NOT|NULL|OR|OUTBOUND|REMOVE|REPLACE|RETURN|SHORTEST_PATH|SORT|UPDATE|UPSERT|WINDOW|WITH)\b/i,{pattern:/(^|[^\w.[])(?:KEEP|PRUNE|SEARCH|TO)\b/i,lookbehind:!0},{pattern:/(^|[^\w.[])(?:CURRENT|NEW|OLD)\b/,lookbehind:!0},{pattern:/\bOPTIONS(?=\s*\{)/i}],function:/\b(?!\d)\w+(?=\s*\()/,boolean:/\b(?:false|true)\b/i,range:{pattern:/\.\./,alias:`operator`},number:[/\b0b[01]+/i,/\b0x[0-9a-f]+/i,/(?:\B\.\d+|\b(?:0|[1-9]\d*)(?:\.\d+)?)(?:e[+-]?\d+)?/i],operator:/\*{2,}|[=!]~|[!=<>]=?|&&|\|\||[-+*/%]/,punctuation:/::|[?.:,;()[\]{}]/}}F.displayName=`c`,F.aliases=[];function F(e){e.register(S),e.languages.c=e.languages.extend(`clike`,{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),e.languages.insertBefore(`c`,`string`,{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),e.languages.insertBefore(`c`,`string`,{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:`property`,inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},e.languages.c.string],char:e.languages.c.char,comment:e.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:`function`}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:`keyword`},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:e.languages.c}}}}),e.languages.insertBefore(`c`,`function`,{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete e.languages.c.boolean}I.displayName=`cpp`,I.aliases=[];function I(e){e.register(F),(function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=`\\b(?!)\\w+(?:\\s*\\.\\s*\\w+)*\\b`.replace(//g,function(){return t.source});e.languages.cpp=e.languages.extend(`c`,{"class-name":[{pattern:RegExp(`(\\b(?:class|concept|enum|struct|typename)\\s+)(?!)\\w+`.replace(//g,function(){return t.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore(`cpp`,`string`,{module:{pattern:RegExp(`(\\b(?:import|module)\\s+)(?:"(?:\\\\(?:\\r\\n|[\\s\\S])|[^"\\\\\\r\\n])*"|<[^<>\\r\\n]*>|`+`(?:\\s*:\\s*)?|:\\s*`.replace(//g,function(){return n})+`)`),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:`string`,greedy:!0}}),e.languages.insertBefore(`cpp`,`keyword`,{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:`class-name`,inside:e.languages.cpp}}}}),e.languages.insertBefore(`cpp`,`operator`,{"double-colon":{pattern:/::/,alias:`punctuation`}}),e.languages.insertBefore(`cpp`,`class-name`,{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend(`cpp`,{})}}),e.languages.insertBefore(`inside`,`double-colon`,{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp[`base-clause`])})(e)}ee.displayName=`arduino`,ee.aliases=[`ino`];function ee(e){e.register(I),e.languages.arduino=e.languages.extend(`cpp`,{keyword:/\b(?:String|array|bool|boolean|break|byte|case|catch|continue|default|do|double|else|finally|for|function|goto|if|in|instanceof|int|integer|long|loop|new|null|return|setup|string|switch|throw|try|void|while|word)\b/,constant:/\b(?:ANALOG_MESSAGE|DEFAULT|DIGITAL_MESSAGE|EXTERNAL|FIRMATA_STRING|HIGH|INPUT|INPUT_PULLUP|INTERNAL|INTERNAL1V1|INTERNAL2V56|LED_BUILTIN|LOW|OUTPUT|REPORT_ANALOG|REPORT_DIGITAL|SET_PIN_MODE|SYSEX_START|SYSTEM_RESET)\b/,builtin:/\b(?:Audio|BSSID|Bridge|Client|Console|EEPROM|Esplora|EsploraTFT|Ethernet|EthernetClient|EthernetServer|EthernetUDP|File|FileIO|FileSystem|Firmata|GPRS|GSM|GSMBand|GSMClient|GSMModem|GSMPIN|GSMScanner|GSMServer|GSMVoiceCall|GSM_SMS|HttpClient|IPAddress|IRread|Keyboard|KeyboardController|LiquidCrystal|LiquidCrystal_I2C|Mailbox|Mouse|MouseController|PImage|Process|RSSI|RobotControl|RobotMotor|SD|SPI|SSID|Scheduler|Serial|Server|Servo|SoftwareSerial|Stepper|Stream|TFT|Task|USBHost|WiFi|WiFiClient|WiFiServer|WiFiUDP|Wire|YunClient|YunServer|abs|addParameter|analogRead|analogReadResolution|analogReference|analogWrite|analogWriteResolution|answerCall|attach|attachGPRS|attachInterrupt|attached|autoscroll|available|background|beep|begin|beginPacket|beginSD|beginSMS|beginSpeaker|beginTFT|beginTransmission|beginWrite|bit|bitClear|bitRead|bitSet|bitWrite|blink|blinkVersion|buffer|changePIN|checkPIN|checkPUK|checkReg|circle|cityNameRead|cityNameWrite|clear|clearScreen|click|close|compassRead|config|connect|connected|constrain|cos|countryNameRead|countryNameWrite|createChar|cursor|debugPrint|delay|delayMicroseconds|detach|detachInterrupt|digitalRead|digitalWrite|disconnect|display|displayLogos|drawBMP|drawCompass|encryptionType|end|endPacket|endSMS|endTransmission|endWrite|exists|exitValue|fill|find|findUntil|flush|gatewayIP|get|getAsynchronously|getBand|getButton|getCurrentCarrier|getIMEI|getKey|getModifiers|getOemKey|getPINUsed|getResult|getSignalStrength|getSocket|getVoiceCallStatus|getXChange|getYChange|hangCall|height|highByte|home|image|interrupts|isActionDone|isDirectory|isListening|isPIN|isPressed|isValid|keyPressed|keyReleased|keyboardRead|knobRead|leftToRight|line|lineFollowConfig|listen|listenOnLocalhost|loadImage|localIP|lowByte|macAddress|maintain|map|max|messageAvailable|micros|millis|min|mkdir|motorsStop|motorsWrite|mouseDragged|mouseMoved|mousePressed|mouseReleased|move|noAutoscroll|noBlink|noBuffer|noCursor|noDisplay|noFill|noInterrupts|noListenOnLocalhost|noStroke|noTone|onReceive|onRequest|open|openNextFile|overflow|parseCommand|parseFloat|parseInt|parsePacket|pauseMode|peek|pinMode|playFile|playMelody|point|pointTo|position|pow|prepare|press|print|printFirmwareVersion|printVersion|println|process|processInput|pulseIn|put|random|randomSeed|read|readAccelerometer|readBlue|readButton|readBytes|readBytesUntil|readGreen|readJoystickButton|readJoystickSwitch|readJoystickX|readJoystickY|readLightSensor|readMessage|readMicrophone|readNetworks|readRed|readSlider|readString|readStringUntil|readTemperature|ready|rect|release|releaseAll|remoteIP|remoteNumber|remotePort|remove|requestFrom|retrieveCallingNumber|rewindDirectory|rightToLeft|rmdir|robotNameRead|robotNameWrite|run|runAsynchronously|runShellCommand|runShellCommandAsynchronously|running|scanNetworks|scrollDisplayLeft|scrollDisplayRight|seek|sendAnalog|sendDigitalPortPair|sendDigitalPorts|sendString|sendSysex|serialEvent|setBand|setBitOrder|setClockDivider|setCursor|setDNS|setDataMode|setFirmwareVersion|setMode|setPINUsed|setSpeed|setTextSize|setTimeout|shiftIn|shiftOut|shutdown|sin|size|sqrt|startLoop|step|stop|stroke|subnetMask|switchPIN|tan|tempoWrite|text|tone|transfer|tuneWrite|turn|updateIR|userNameRead|userNameWrite|voiceCall|waitContinue|width|write|writeBlue|writeGreen|writeJSON|writeMessage|writeMicroseconds|writeRGB|writeRed|yield)\b/}),e.languages.ino=e.languages.arduino}L.displayName=`arff`,L.aliases=[];function L(e){e.languages.arff={comment:/%.*/,string:{pattern:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/@(?:attribute|data|end|relation)\b/i,number:/\b\d+(?:\.\d+)?\b/,punctuation:/[{},]/}}te.displayName=`armasm`,te.aliases=[`arm-asm`];function te(e){e.languages.armasm={comment:{pattern:/;.*/,greedy:!0},string:{pattern:/"(?:[^"\r\n]|"")*"/,greedy:!0,inside:{variable:{pattern:/((?:^|[^$])(?:\${2})*)\$\w+/,lookbehind:!0}}},char:{pattern:/'(?:[^'\r\n]{0,4}|'')'/,greedy:!0},"version-symbol":{pattern:/\|[\w@]+\|/,greedy:!0,alias:`property`},boolean:/\b(?:FALSE|TRUE)\b/,directive:{pattern:/\b(?:ALIAS|ALIGN|AREA|ARM|ASSERT|ATTR|CN|CODE|CODE16|CODE32|COMMON|CP|DATA|DCB|DCD|DCDO|DCDU|DCFD|DCFDU|DCI|DCQ|DCQU|DCW|DCWU|DN|ELIF|ELSE|END|ENDFUNC|ENDIF|ENDP|ENTRY|EQU|EXPORT|EXPORTAS|EXTERN|FIELD|FILL|FN|FUNCTION|GBLA|GBLL|GBLS|GET|GLOBAL|IF|IMPORT|INCBIN|INCLUDE|INFO|KEEP|LCLA|LCLL|LCLS|LTORG|MACRO|MAP|MEND|MEXIT|NOFP|OPT|PRESERVE8|PROC|QN|READONLY|RELOC|REQUIRE|REQUIRE8|RLIST|ROUT|SETA|SETL|SETS|SN|SPACE|SUBT|THUMB|THUMBX|TTL|WEND|WHILE)\b/,alias:`property`},instruction:{pattern:/((?:^|(?:^|[^\\])(?:\r\n?|\n))[ \t]*(?:(?:[A-Z][A-Z0-9_]*[a-z]\w*|[a-z]\w*|\d+)[ \t]+)?)\b[A-Z.]+\b/,lookbehind:!0,alias:`keyword`},variable:/\$\w+/,number:/(?:\b[2-9]_\d+|(?:\b\d+(?:\.\d+)?|\B\.\d+)(?:e-?\d+)?|\b0(?:[fd]_|x)[0-9a-f]+|&[0-9a-f]+)\b/i,register:{pattern:/\b(?:r\d|lr)\b/,alias:`symbol`},operator:/<>|<<|>>|&&|\|\||[=!<>/]=?|[+\-*%#?&|^]|:[A-Z]+:/,punctuation:/[()[\],]/},e.languages[`arm-asm`]=e.languages.armasm}ne.displayName=`arturo`,ne.aliases=[`art`];function ne(e){(function(e){var t=function(t,n){return{pattern:RegExp(`\\{!(?:`+(n||t)+`)$[\\s\\S]*\\}`,`m`),greedy:!0,inside:{embedded:{pattern:/(^\{!\w+\b)[\s\S]+(?=\}$)/,lookbehind:!0,alias:`language-`+t,inside:e.languages[t]},string:/[\s\S]+/}}};e.languages.arturo={comment:{pattern:/;.*/,greedy:!0},character:{pattern:/`.`/,alias:`char`,greedy:!0},number:{pattern:/\b\d+(?:\.\d+(?:\.\d+(?:-[\w+-]+)?)?)?\b/},string:{pattern:/"(?:[^"\\\r\n]|\\.)*"/,greedy:!0},regex:{pattern:/\{\/.*?\/\}/,greedy:!0},"html-string":t(`html`),"css-string":t(`css`),"js-string":t(`js`),"md-string":t(`md`),"sql-string":t(`sql`),"sh-string":t(`shell`,`sh`),multistring:{pattern:/».*|\{:[\s\S]*?:\}|\{[\s\S]*?\}|^-{6}$[\s\S]*/m,alias:`string`,greedy:!0},label:{pattern:/\w+\b\??:/,alias:`property`},literal:{pattern:/'(?:\w+\b\??:?)/,alias:`constant`},type:{pattern:/:(?:\w+\b\??:?)/,alias:`class-name`},color:/#\w+/,predicate:{pattern:/\b(?:all|and|any|ascii|attr|attribute|attributeLabel|binary|block|char|contains|database|date|dictionary|empty|equal|even|every|exists|false|floating|function|greater|greaterOrEqual|if|in|inline|integer|is|key|label|leap|less|lessOrEqual|literal|logical|lower|nand|negative|nor|not|notEqual|null|numeric|odd|or|path|pathLabel|positive|prefix|prime|regex|same|set|some|sorted|standalone|string|subset|suffix|superset|symbol|symbolLiteral|true|try|type|unless|upper|when|whitespace|word|xnor|xor|zero)\?/,alias:`keyword`},"builtin-function":{pattern:/\b(?:abs|acos|acosh|acsec|acsech|actan|actanh|add|after|alert|alias|and|angle|append|arg|args|arity|array|as|asec|asech|asin|asinh|atan|atan2|atanh|attr|attrs|average|before|benchmark|blend|break|call|capitalize|case|ceil|chop|clear|clip|close|color|combine|conj|continue|copy|cos|cosh|crc|csec|csech|ctan|ctanh|cursor|darken|dec|decode|define|delete|desaturate|deviation|dialog|dictionary|difference|digest|digits|div|do|download|drop|dup|e|else|empty|encode|ensure|env|escape|execute|exit|exp|extend|extract|factors|fdiv|filter|first|flatten|floor|fold|from|function|gamma|gcd|get|goto|hash|hypot|if|inc|indent|index|infinity|info|input|insert|inspect|intersection|invert|jaro|join|keys|kurtosis|last|let|levenshtein|lighten|list|ln|log|loop|lower|mail|map|match|max|median|min|mod|module|mul|nand|neg|new|nor|normalize|not|now|null|open|or|outdent|pad|palette|panic|path|pause|permissions|permutate|pi|pop|popup|pow|powerset|powmod|prefix|print|prints|process|product|query|random|range|read|relative|remove|rename|render|repeat|replace|request|return|reverse|round|sample|saturate|script|sec|sech|select|serve|set|shl|shr|shuffle|sin|sinh|size|skewness|slice|sort|spin|split|sqrt|squeeze|stack|strip|sub|suffix|sum|switch|symbols|symlink|sys|take|tan|tanh|terminal|terminate|to|truncate|try|type|unclip|union|unique|unless|until|unzip|upper|values|var|variance|volume|webview|while|with|wordwrap|write|xnor|xor|zip)\b/,alias:`keyword`},sugar:{pattern:/->|=>|\||::/,alias:`operator`},punctuation:/[()[\],]/,symbol:{pattern:/<:|-:|ø|@|#|\+|\||\*|\$|---|-|%|\/|\.\.|\^|~|=|<|>|\\/},boolean:{pattern:/\b(?:false|maybe|true)\b/}},e.languages.art=e.languages.arturo})(e)}R.displayName=`asciidoc`,R.aliases=[`adoc`];function R(e){(function(e){var t={pattern:/(^[ \t]*)\[(?!\[)(?:(["'$`])(?:(?!\2)[^\\]|\\.)*\2|\[(?:[^\[\]\\]|\\.)*\]|[^\[\]\\"'$`]|\\.)*\]/m,lookbehind:!0,inside:{quoted:{pattern:/([$`])(?:(?!\1)[^\\]|\\.)*\1/,inside:{punctuation:/^[$`]|[$`]$/}},interpreted:{pattern:/'(?:[^'\\]|\\.)*'/,inside:{punctuation:/^'|'$/}},string:/"(?:[^"\\]|\\.)*"/,variable:/\w+(?==)/,punctuation:/^\[|\]$|,/,operator:/=/,"attr-value":/(?!^\s+$).+/}},n=e.languages.asciidoc={"comment-block":{pattern:/^(\/{4,})$[\s\S]*?^\1/m,alias:`comment`},table:{pattern:/^\|={3,}(?:(?:\r?\n|\r(?!\n)).*)*?(?:\r?\n|\r)\|={3,}$/m,inside:{specifiers:{pattern:/(?:(?:(?:\d+(?:\.\d+)?|\.\d+)[+*](?:[<^>](?:\.[<^>])?|\.[<^>])?|[<^>](?:\.[<^>])?|\.[<^>])[a-z]*|[a-z]+)(?=\|)/,alias:`attr-value`},punctuation:{pattern:/(^|[^\\])[|!]=*/,lookbehind:!0}}},"passthrough-block":{pattern:/^(\+{4,})$[\s\S]*?^\1$/m,inside:{punctuation:/^\++|\++$/}},"literal-block":{pattern:/^(-{4,}|\.{4,})$[\s\S]*?^\1$/m,inside:{punctuation:/^(?:-+|\.+)|(?:-+|\.+)$/}},"other-block":{pattern:/^(--|\*{4,}|_{4,}|={4,})$[\s\S]*?^\1$/m,inside:{punctuation:/^(?:-+|\*+|_+|=+)|(?:-+|\*+|_+|=+)$/}},"list-punctuation":{pattern:/(^[ \t]*)(?:-|\*{1,5}|\.{1,5}|(?:[a-z]|\d+)\.|[xvi]+\))(?= )/im,lookbehind:!0,alias:`punctuation`},"list-label":{pattern:/(^[ \t]*)[a-z\d].+(?::{2,4}|;;)(?=\s)/im,lookbehind:!0,alias:`symbol`},"indented-block":{pattern:/((\r?\n|\r)\2)([ \t]+)\S.*(?:(?:\r?\n|\r)\3.+)*(?=\2{2}|$)/,lookbehind:!0},comment:/^\/\/.*/m,title:{pattern:/^.+(?:\r?\n|\r)(?:={3,}|-{3,}|~{3,}|\^{3,}|\+{3,})$|^={1,5} .+|^\.(?![\s.]).*/m,alias:`important`,inside:{punctuation:/^(?:\.|=+)|(?:=+|-+|~+|\^+|\++)$/}},"attribute-entry":{pattern:/^:[^:\r\n]+:(?: .*?(?: \+(?:\r?\n|\r).*?)*)?$/m,alias:`tag`},attributes:t,hr:{pattern:/^'{3,}$/m,alias:`punctuation`},"page-break":{pattern:/^<{3,}$/m,alias:`punctuation`},admonition:{pattern:/^(?:CAUTION|IMPORTANT|NOTE|TIP|WARNING):/m,alias:`keyword`},callout:[{pattern:/(^[ \t]*)/m,lookbehind:!0,alias:`symbol`},{pattern:/<\d+>/,alias:`symbol`}],macro:{pattern:/\b[a-z\d][a-z\d-]*::?(?:[^\s\[\]]*\[(?:[^\]\\"']|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/,inside:{function:/^[a-z\d-]+(?=:)/,punctuation:/^::?/,attributes:{pattern:/(?:\[(?:[^\]\\"']|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/,inside:t.inside}}},inline:{pattern:/(^|[^\\])(?:(?:\B\[(?:[^\]\\"']|(["'])(?:(?!\2)[^\\]|\\.)*\2|\\.)*\])?(?:\b_(?!\s)(?: _|[^_\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: _|[^_\\\r\n]|\\.)+)*_\b|\B``(?!\s).+?(?:(?:\r?\n|\r).+?)*''\B|\B`(?!\s)(?:[^`'\s]|\s+\S)+['`]\B|\B(['*+#])(?!\s)(?: \3|(?!\3)[^\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: \3|(?!\3)[^\\\r\n]|\\.)+)*\3\B)|(?:\[(?:[^\]\\"']|(["'])(?:(?!\4)[^\\]|\\.)*\4|\\.)*\])?(?:(__|\*\*|\+\+\+?|##|\$\$|[~^]).+?(?:(?:\r?\n|\r).+?)*\5|\{[^}\r\n]+\}|\[\[\[?.+?(?:(?:\r?\n|\r).+?)*\]?\]\]|<<.+?(?:(?:\r?\n|\r).+?)*>>|\(\(\(?.+?(?:(?:\r?\n|\r).+?)*\)?\)\)))/m,lookbehind:!0,inside:{attributes:t,url:{pattern:/^(?:\[\[\[?.+?\]?\]\]|<<.+?>>)$/,inside:{punctuation:/^(?:\[\[\[?|<<)|(?:\]\]\]?|>>)$/}},"attribute-ref":{pattern:/^\{.+\}$/,inside:{variable:{pattern:/(^\{)[a-z\d,+_-]+/,lookbehind:!0},operator:/^[=?!#%@$]|!(?=[:}])/,punctuation:/^\{|\}$|::?/}},italic:{pattern:/^(['_])[\s\S]+\1$/,inside:{punctuation:/^(?:''?|__?)|(?:''?|__?)$/}},bold:{pattern:/^\*[\s\S]+\*$/,inside:{punctuation:/^\*\*?|\*\*?$/}},punctuation:/^(?:``?|\+{1,3}|##?|\$\$|[~^]|\(\(\(?)|(?:''?|\+{1,3}|##?|\$\$|[~^`]|\)?\)\))$/}},replacement:{pattern:/\((?:C|R|TM)\)/,alias:`builtin`},entity:/&#?[\da-z]{1,8};/i,"line-continuation":{pattern:/(^| )\+$/m,lookbehind:!0,alias:`punctuation`}};function r(e){e=e.split(` `);for(var t={},r=0,i=e.length;r>=?|<<=?|&[&=]?|\|[\|=]?|[-+*/%^!=<>?]=?/,punctuation:/[(),:]/}}z.displayName=`csharp`,z.aliases=[`cs`,`dotnet`];function z(e){e.register(S),(function(e){function t(e,t){return e.replace(/<<(\d+)>>/g,function(e,n){return`(?:`+t[+n]+`)`})}function n(e,n,r){return RegExp(t(e,n),r||``)}function r(e,t){for(var n=0;n>/g,function(){return`(?:`+e+`)`});return e.replace(/<>/g,`[^\\s\\S]`)}var i={type:`bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void`,typeDeclaration:`class enum interface record struct`,contextual:`add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)`,other:`abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield`};function a(e){return`\\b(?:`+e.trim().replace(/ /g,`|`)+`)\\b`}var o=a(i.typeDeclaration),s=RegExp(a(i.type+` `+i.typeDeclaration+` `+i.contextual+` `+i.other)),c=a(i.typeDeclaration+` `+i.contextual+` `+i.other),l=a(i.type+` `+i.typeDeclaration+` `+i.other),u=r(`<(?:[^<>;=+\\-*/%&|^]|<>)*>`,2),d=r(`\\((?:[^()]|<>)*\\)`,2),f=`@?\\b[A-Za-z_]\\w*\\b`,p=t(`<<0>>(?:\\s*<<1>>)?`,[f,u]),m=t(`(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*`,[c,p]),h=`\\[\\s*(?:,\\s*)*\\]`,g=t(`<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?`,[m,h]),_=t(`(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?`,[t(`\\(<<0>>+(?:,<<0>>+)+\\)`,[t(`[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>`,[u,d,h])]),m,h]),v={keyword:s,punctuation:/[<>()?,.:[\]]/},y=`'(?:[^\\r\\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'`,b=`"(?:\\\\.|[^\\\\"\\r\\n])*"`,x=`@"(?:""|\\\\[\\s\\S]|[^\\\\"])*"(?!")`;e.languages.csharp=e.languages.extend(`clike`,{string:[{pattern:n(`(^|[^$\\\\])<<0>>`,[x]),lookbehind:!0,greedy:!0},{pattern:n(`(^|[^@$\\\\])<<0>>`,[b]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:n(`(\\busing\\s+static\\s+)<<0>>(?=\\s*;)`,[m]),lookbehind:!0,inside:v},{pattern:n(`(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)`,[f,_]),lookbehind:!0,inside:v},{pattern:n(`(\\busing\\s+)<<0>>(?=\\s*=)`,[f]),lookbehind:!0},{pattern:n(`(\\b<<0>>\\s+)<<1>>`,[o,p]),lookbehind:!0,inside:v},{pattern:n(`(\\bcatch\\s*\\(\\s*)<<0>>`,[m]),lookbehind:!0,inside:v},{pattern:n(`(\\bwhere\\s+)<<0>>`,[f]),lookbehind:!0},{pattern:n(`(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>`,[g]),lookbehind:!0,inside:v},{pattern:n(`\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))`,[_,l,f]),inside:v}],keyword:s,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),e.languages.insertBefore(`csharp`,`number`,{range:{pattern:/\.\./,alias:`operator`}}),e.languages.insertBefore(`csharp`,`punctuation`,{"named-parameter":{pattern:n(`([(,]\\s*)<<0>>(?=\\s*:)`,[f]),lookbehind:!0,alias:`punctuation`}}),e.languages.insertBefore(`csharp`,`class-name`,{namespace:{pattern:n(`(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])`,[f]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:n(`(\\b(?:default|sizeof|typeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))`,[d]),lookbehind:!0,alias:`class-name`,inside:v},"return-type":{pattern:n(`<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))`,[_,m]),inside:v,alias:`class-name`},"constructor-invocation":{pattern:n(`(\\bnew\\s+)<<0>>(?=\\s*[[({])`,[_]),lookbehind:!0,inside:v,alias:`class-name`},"generic-method":{pattern:n(`<<0>>\\s*<<1>>(?=\\s*\\()`,[f,u]),inside:{function:n(`^<<0>>`,[f]),generic:{pattern:RegExp(u),alias:`class-name`,inside:v}}},"type-list":{pattern:n(`\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))`,[o,p,f,_,s.source,d,`\\bnew\\s*\\(\\s*\\)`]),lookbehind:!0,inside:{"record-arguments":{pattern:n(`(^(?!new\\s*\\()<<0>>\\s*)<<1>>`,[p,d]),lookbehind:!0,greedy:!0,inside:e.languages.csharp},keyword:s,"class-name":{pattern:RegExp(_),greedy:!0,inside:v},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:`property`,inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:`keyword`}}}});var S=b+`|`+y,C=t(`\\/(?![*/])|\\/\\/[^\\r\\n]*[\\r\\n]|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|<<0>>`,[S]),w=r(t(`[^"'/()]|<<0>>|\\(<>*\\)`,[C]),2),T=`\\b(?:assembly|event|field|method|module|param|property|return|type)\\b`,E=t(`<<0>>(?:\\s*\\(<<1>>*\\))?`,[m,w]);e.languages.insertBefore(`csharp`,`class-name`,{attribute:{pattern:n(`((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])`,[T,E]),lookbehind:!0,greedy:!0,inside:{target:{pattern:n(`^<<0>>(?=\\s*:)`,[T]),alias:`keyword`},"attribute-arguments":{pattern:n(`\\(<<0>>*\\)`,[w]),inside:e.languages.csharp},"class-name":{pattern:RegExp(m),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var D=`:[^}\\r\\n]+`,O=r(t(`[^"'/()]|<<0>>|\\(<>*\\)`,[C]),2),k=t(`\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}`,[O,D]),A=r(t(`[^"'/()]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|<<0>>|\\(<>*\\)`,[S]),2),j=t(`\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}`,[A,D]);function M(t,r){return{interpolation:{pattern:n(`((?:^|[^{])(?:\\{\\{)*)<<0>>`,[t]),lookbehind:!0,inside:{"format-string":{pattern:n(`(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)`,[r,D]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:`language-csharp`,inside:e.languages.csharp}}},string:/[\s\S]+/}}e.languages.insertBefore(`csharp`,`string`,{"interpolation-string":[{pattern:n(`(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[\\s\\S]|\\{\\{|<<0>>|[^\\\\{"])*"`,[k]),lookbehind:!0,greedy:!0,inside:M(k,O)},{pattern:n(`(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"`,[j]),lookbehind:!0,greedy:!0,inside:M(j,A)}],char:{pattern:RegExp(y),greedy:!0}}),e.languages.dotnet=e.languages.cs=e.languages.csharp})(e)}B.displayName=`markup`,B.aliases=[`atom`,`html`,`mathml`,`rss`,`ssml`,`svg`,`xml`];function B(e){e.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:`attr-equals`},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:`named-entity`},/&#x?[\da-f]{1,8};/i]},e.languages.markup.tag.inside[`attr-value`].inside.entity=e.languages.markup.entity,e.languages.markup.doctype.inside[`internal-subset`].inside=e.languages.markup,e.hooks.add(`wrap`,function(e){e.type===`entity`&&(e.attributes.title=e.content.value.replace(/&/,`&`))}),Object.defineProperty(e.languages.markup.tag,"addInlined",{value:function(t,n){var r={};r[`language-`+n]={pattern:/(^$)/i,lookbehind:!0,inside:e.languages[n]},r.cdata=/^$/i;var i={"included-cdata":{pattern://i,inside:r}};i[`language-`+n]={pattern:/[\s\S]+/,inside:e.languages[n]};var a={};a[t]={pattern:RegExp(`(<__[^>]*>)(?:))*\\]\\]>|(?!)`.replace(/__/g,function(){return t}),`i`),lookbehind:!0,greedy:!0,inside:i},e.languages.insertBefore(`markup`,`cdata`,a)}}),Object.defineProperty(e.languages.markup.tag,"addAttribute",{value:function(t,n){e.languages.markup.tag.inside[`special-attr`].push({pattern:RegExp(`(^|["'\\s])(?:`+t+`)\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s'">=]+(?=[\\s>]))`,`i`),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,`language-`+n],inside:e.languages[n]},punctuation:[{pattern:/^=/,alias:`attr-equals`},/"|'/]}}}})}}),e.languages.html=e.languages.markup,e.languages.mathml=e.languages.markup,e.languages.svg=e.languages.markup,e.languages.xml=e.languages.extend(`markup`,{}),e.languages.ssml=e.languages.xml,e.languages.atom=e.languages.xml,e.languages.rss=e.languages.xml}ae.displayName=`aspnet`,ae.aliases=[];function ae(e){e.register(z),e.register(B),e.languages.aspnet=e.languages.extend(`markup`,{"page-directive":{pattern:/<%\s*@.*%>/,alias:`tag`,inside:{"page-directive":{pattern:/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,alias:`tag`},rest:e.languages.markup.tag.inside}},directive:{pattern:/<%.*%>/,alias:`tag`,inside:{directive:{pattern:/<%\s*?[$=%#:]{0,2}|%>/,alias:`tag`},rest:e.languages.csharp}}}),e.languages.aspnet.tag.pattern=/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/,e.languages.insertBefore(`inside`,`punctuation`,{directive:e.languages.aspnet.directive},e.languages.aspnet.tag.inside[`attr-value`]),e.languages.insertBefore(`aspnet`,`comment`,{"asp-comment":{pattern:/<%--[\s\S]*?--%>/,alias:[`asp`,`comment`]}}),e.languages.insertBefore(`aspnet`,e.languages.javascript?`script`:`tag`,{"asp-script":{pattern:/(]*>)[\s\S]*?(?=<\/script>)/i,lookbehind:!0,alias:[`asp`,`script`],inside:e.languages.csharp||{}}})}oe.displayName=`autohotkey`,oe.aliases=[];function oe(e){e.languages.autohotkey={comment:[{pattern:/(^|\s);.*/,lookbehind:!0},{pattern:/(^[\t ]*)\/\*(?:[\r\n](?![ \t]*\*\/)|[^\r\n])*(?:[\r\n][ \t]*\*\/)?/m,lookbehind:!0,greedy:!0}],tag:{pattern:/^([ \t]*)[^\s,`":]+(?=:[ \t]*$)/m,lookbehind:!0},string:/"(?:[^"\n\r]|"")*"/,variable:/%\w+%/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/\?|\/\/?=?|:=|\|[=|]?|&[=&]?|\+[=+]?|-[=-]?|\*[=*]?|<(?:<=?|>|=)?|>>?=?|[.^!=~]=?|\b(?:AND|NOT|OR)\b/,boolean:/\b(?:false|true)\b/,command:{pattern:/\b(?:AutoTrim|BlockInput|Break|Click|ClipWait|Continue|Control|ControlClick|ControlFocus|ControlGet|ControlGetFocus|ControlGetPos|ControlGetText|ControlMove|ControlSend|ControlSendRaw|ControlSetText|CoordMode|Critical|DetectHiddenText|DetectHiddenWindows|Drive|DriveGet|DriveSpaceFree|EnvAdd|EnvDiv|EnvGet|EnvMult|EnvSet|EnvSub|EnvUpdate|Exit|ExitApp|FileAppend|FileCopy|FileCopyDir|FileCreateDir|FileCreateShortcut|FileDelete|FileEncoding|FileGetAttrib|FileGetShortcut|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileMoveDir|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileRemoveDir|FileSelectFile|FileSelectFolder|FileSetAttrib|FileSetTime|FormatTime|GetKeyState|Gosub|Goto|GroupActivate|GroupAdd|GroupClose|GroupDeactivate|Gui|GuiControl|GuiControlGet|Hotkey|ImageSearch|IniDelete|IniRead|IniWrite|Input|InputBox|KeyWait|ListHotkeys|ListLines|ListVars|Loop|Menu|MouseClick|MouseClickDrag|MouseGetPos|MouseMove|MsgBox|OnExit|OutputDebug|Pause|PixelGetColor|PixelSearch|PostMessage|Process|Progress|Random|RegDelete|RegRead|RegWrite|Reload|Repeat|Return|Run|RunAs|RunWait|Send|SendEvent|SendInput|SendMessage|SendMode|SendPlay|SendRaw|SetBatchLines|SetCapslockState|SetControlDelay|SetDefaultMouseSpeed|SetEnv|SetFormat|SetKeyDelay|SetMouseDelay|SetNumlockState|SetRegView|SetScrollLockState|SetStoreCapslockMode|SetTimer|SetTitleMatchMode|SetWinDelay|SetWorkingDir|Shutdown|Sleep|Sort|SoundBeep|SoundGet|SoundGetWaveVolume|SoundPlay|SoundSet|SoundSetWaveVolume|SplashImage|SplashTextOff|SplashTextOn|SplitPath|StatusBarGetText|StatusBarWait|StringCaseSense|StringGetPos|StringLeft|StringLen|StringLower|StringMid|StringReplace|StringRight|StringSplit|StringTrimLeft|StringTrimRight|StringUpper|Suspend|SysGet|Thread|ToolTip|Transform|TrayTip|URLDownloadToFile|WinActivate|WinActivateBottom|WinClose|WinGet|WinGetActiveStats|WinGetActiveTitle|WinGetClass|WinGetPos|WinGetText|WinGetTitle|WinHide|WinKill|WinMaximize|WinMenuSelectItem|WinMinimize|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinRestore|WinSet|WinSetTitle|WinShow|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive)\b/i,alias:`selector`},constant:/\b(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_fileencoding|a_formatfloat|a_formatinteger|a_gui|a_guicontrol|a_guicontrolevent|a_guievent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_is64bitos|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_isunicode|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|a_priorkey|a_programfiles|a_programs|a_programscommon|a_ptrsize|a_regview|a_screendpi|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scripthwnd|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel|programfiles)\b/i,builtin:/\b(?:abs|acos|asc|asin|atan|ceil|chr|class|comobjactive|comobjarray|comobjconnect|comobjcreate|comobjerror|comobjflags|comobjget|comobjquery|comobjtype|comobjvalue|cos|dllcall|exp|fileexist|Fileopen|floor|format|il_add|il_create|il_destroy|instr|isfunc|islabel|IsObject|ln|log|ltrim|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|numget|numput|onmessage|regexmatch|regexreplace|registercallback|round|rtrim|sb_seticon|sb_setparts|sb_settext|sin|sqrt|strlen|strreplace|strsplit|substr|tan|tv_add|tv_delete|tv_get|tv_getchild|tv_getcount|tv_getnext|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist|__Call|__Get|__New|__Set)\b/i,symbol:/\b(?:alt|altdown|altup|appskey|backspace|browser_back|browser_favorites|browser_forward|browser_home|browser_refresh|browser_search|browser_stop|bs|capslock|ctrl|ctrlbreak|ctrldown|ctrlup|del|delete|down|end|enter|esc|escape|f1|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f2|f20|f21|f22|f23|f24|f3|f4|f5|f6|f7|f8|f9|home|ins|insert|joy1|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy2|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy3|joy30|joy31|joy32|joy4|joy5|joy6|joy7|joy8|joy9|joyaxes|joybuttons|joyinfo|joyname|joypov|joyr|joyu|joyv|joyx|joyy|joyz|lalt|launch_app1|launch_app2|launch_mail|launch_media|lbutton|lcontrol|lctrl|left|lshift|lwin|lwindown|lwinup|mbutton|media_next|media_play_pause|media_prev|media_stop|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadadd|numpadclear|numpaddel|numpaddiv|numpaddot|numpaddown|numpadend|numpadenter|numpadhome|numpadins|numpadleft|numpadmult|numpadpgdn|numpadpgup|numpadright|numpadsub|numpadup|pgdn|pgup|printscreen|ralt|rbutton|rcontrol|rctrl|right|rshift|rwin|rwindown|rwinup|scrolllock|shift|shiftdown|shiftup|space|tab|up|volume_down|volume_mute|volume_up|wheeldown|wheelleft|wheelright|wheelup|xbutton1|xbutton2)\b/i,directive:{pattern:/#[a-z]+\b/i,alias:`important`},keyword:/\b(?:Abort|AboveNormal|Add|ahk_class|ahk_exe|ahk_group|ahk_id|ahk_pid|All|Alnum|Alpha|AltSubmit|AltTab|AltTabAndMenu|AltTabMenu|AltTabMenuDismiss|AlwaysOnTop|AutoSize|Background|BackgroundTrans|BelowNormal|between|BitAnd|BitNot|BitOr|BitShiftLeft|BitShiftRight|BitXOr|Bold|Border|Button|ByRef|Catch|Checkbox|Checked|CheckedGray|Choose|ChooseString|Close|Color|ComboBox|Contains|ControlList|Count|Date|DateTime|Days|DDL|Default|DeleteAll|Delimiter|Deref|Destroy|Digit|Disable|Disabled|DropDownList|Edit|Eject|Else|Enable|Enabled|Error|Exist|Expand|ExStyle|FileSystem|Finally|First|Flash|Float|FloatFast|Focus|Font|for|global|Grid|Group|GroupBox|GuiClose|GuiContextMenu|GuiDropFiles|GuiEscape|GuiSize|Hdr|Hidden|Hide|High|HKCC|HKCR|HKCU|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_LOCAL_MACHINE|HKEY_USERS|HKLM|HKU|Hours|HScroll|Icon|IconSmall|ID|IDLast|If|IfEqual|IfExist|IfGreater|IfGreaterOrEqual|IfInString|IfLess|IfLessOrEqual|IfMsgBox|IfNotEqual|IfNotExist|IfNotInString|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Ignore|ImageList|in|Integer|IntegerFast|Interrupt|is|italic|Join|Label|LastFound|LastFoundExist|Limit|Lines|List|ListBox|ListView|local|Lock|Logoff|Low|Lower|Lowercase|MainWindow|Margin|Maximize|MaximizeBox|MaxSize|Minimize|MinimizeBox|MinMax|MinSize|Minutes|MonthCal|Mouse|Move|Multi|NA|No|NoActivate|NoDefault|NoHide|NoIcon|NoMainWindow|norm|Normal|NoSort|NoSortHdr|NoStandard|Not|NoTab|NoTimers|Number|Off|Ok|On|OwnDialogs|Owner|Parse|Password|Picture|Pixel|Pos|Pow|Priority|ProcessName|Radio|Range|Read|ReadOnly|Realtime|Redraw|Region|REG_BINARY|REG_DWORD|REG_EXPAND_SZ|REG_MULTI_SZ|REG_SZ|Relative|Rename|Report|Resize|Restore|Retry|RGB|Screen|Seconds|Section|Serial|SetLabel|ShiftAltTab|Show|Single|Slider|SortDesc|Standard|static|Status|StatusBar|StatusCD|strike|Style|Submit|SysMenu|Tab2|TabStop|Text|Theme|Throw|Tile|ToggleCheck|ToggleEnable|ToolWindow|Top|Topmost|TransColor|Transparent|Tray|TreeView|Try|TryAgain|Type|UnCheck|underline|Unicode|Unlock|Until|UpDown|Upper|Uppercase|UseErrorLevel|Vis|VisFirst|Visible|VScroll|Wait|WaitClose|WantCtrlA|WantF2|WantReturn|While|Wrap|Xdigit|xm|xp|xs|Yes|ym|yp|ys)\b/i,function:/[^(); \t,\n+*\-=?>:\\\/<&%\[\]]+(?=\()/,punctuation:/[{}[\]():,]/}}se.displayName=`autoit`,se.aliases=[];function se(e){e.languages.autoit={comment:[/;.*/,{pattern:/(^[\t ]*)#(?:comments-start|cs)[\s\S]*?^[ \t]*#(?:ce|comments-end)/m,lookbehind:!0}],url:{pattern:/(^[\t ]*#include\s+)(?:<[^\r\n>]+>|"[^\r\n"]+")/m,lookbehind:!0},string:{pattern:/(["'])(?:\1\1|(?!\1)[^\r\n])*\1/,greedy:!0,inside:{variable:/([%$@])\w+\1/}},directive:{pattern:/(^[\t ]*)#[\w-]+/m,lookbehind:!0,alias:`keyword`},function:/\b\w+(?=\()/,variable:/[$@]\w+/,keyword:/\b(?:Case|Const|Continue(?:Case|Loop)|Default|Dim|Do|Else(?:If)?|End(?:Func|If|Select|Switch|With)|Enum|Exit(?:Loop)?|For|Func|Global|If|In|Local|Next|Null|ReDim|Select|Static|Step|Switch|Then|To|Until|Volatile|WEnd|While|With)\b/i,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/i,boolean:/\b(?:False|True)\b/i,operator:/<[=>]?|[-+*\/=&>]=?|[?^]|\b(?:And|Not|Or)\b/i,punctuation:/[\[\]().,:]/}}ce.displayName=`avisynth`,ce.aliases=[`avs`];function ce(e){(function(e){function t(e,t){return e.replace(/<<(\d+)>>/g,function(e,n){return t[+n]})}function n(e,n,r){return RegExp(t(e,n),r||``)}var r=`bool|clip|float|int|string|val`,i=[[`is(?:bool|clip|float|int|string)|defined|(?:(?:internal)?function|var)?exists?`,`apply|assert|default|eval|import|nop|select|undefined`,`opt_(?:allowfloataudio|avipadscanlines|dwchannelmask|enable_(?:b64a|planartopackedrgb|v210|y3_10_10|y3_10_16)|usewaveextensible|vdubplanarhack)|set(?:cachemode|maxcpu|memorymax|planarlegacyalignment|workingdir)`,`hex(?:value)?|value`,`abs|ceil|continued(?:denominator|numerator)?|exp|floor|fmod|frac|log(?:10)?|max|min|muldiv|pi|pow|rand|round|sign|spline|sqrt`,`a?sinh?|a?cosh?|a?tan[2h]?`,`(?:bit(?:and|not|x?or|[lr]?shift[aslu]?|sh[lr]|sa[lr]|[lr]rotatel?|ro[rl]|te?st|set(?:count)?|cl(?:ea)?r|ch(?:an)?ge?))`,`average(?:[bgr]|chroma[uv]|luma)|(?:[rgb]|chroma[uv]|luma|rgb|[yuv](?=difference(?:fromprevious|tonext)))difference(?:fromprevious|tonext)?|[yuvrgb]plane(?:median|min|max|minmaxdifference)`,`getprocessinfo|logmsg|script(?:dir(?:utf8)?|file(?:utf8)?|name(?:utf8)?)|setlogparams`,`chr|(?:fill|find|left|mid|replace|rev|right)str|format|[lu]case|ord|str(?:cmpi?|fromutf8|len|toutf8)|time|trim(?:all|left|right)`,`isversionorgreater|version(?:number|string)`,`buildpixeltype|colorspacenametopixeltype`,`addautoloaddir|on(?:cpu|cuda)|prefetch|setfiltermtmode`].join(`|`),[`has(?:audio|video)`,`height|width`,`frame(?:count|rate)|framerate(?:denominator|numerator)`,`getparity|is(?:field|frame)based`,`bitspercomponent|componentsize|hasalpha|is(?:planar(?:rgba?)?|interleaved|rgb(?:24|32|48|64)?|y(?:8|u(?:va?|y2))?|yv(?:12|16|24|411)|420|422|444|packedrgb)|numcomponents|pixeltype`,`audio(?:bits|channels|duration|length(?:[fs]|hi|lo)?|rate)|isaudio(?:float|int)`].join(`|`),[`avi(?:file)?source|directshowsource|image(?:reader|source|sourceanim)|opendmlsource|segmented(?:avisource|directshowsource)|wavsource`,`coloryuv|convertbacktoyuy2|convertto(?:RGB(?:24|32|48|64)|(?:planar)?RGBA?|Y8?|YV(?:12|16|24|411)|YUVA?(?:411|420|422|444)|YUY2)|fixluminance|gr[ae]yscale|invert|levels|limiter|mergea?rgb|merge(?:chroma|luma)|rgbadjust|show(?:alpha|blue|green|red)|swapuv|tweak|[uv]toy8?|ytouv`,`(?:colorkey|reset)mask|layer|mask(?:hs)?|merge|overlay|subtract`,`addborders|(?:bicubic|bilinear|blackman|gauss|lanczos4|lanczos|point|sinc|spline(?:16|36|64))resize|crop(?:bottom)?|flip(?:horizontal|vertical)|(?:horizontal|vertical)?reduceby2|letterbox|skewrows|turn(?:180|left|right)`,`blur|fixbrokenchromaupsampling|generalconvolution|(?:spatial|temporal)soften|sharpen`,`trim|(?:un)?alignedsplice|(?:assume|assumescaled|change|convert)FPS|(?:delete|duplicate)frame|dissolve|fade(?:in|io|out)[02]?|freezeframe|interleave|loop|reverse|select(?:even|odd|(?:range)?every)`,`assume[bt]ff|assume(?:field|frame)based|bob|complementparity|doubleweave|peculiarblend|pulldown|separate(?:columns|fields|rows)|swapfields|weave(?:columns|rows)?`,`amplify(?:db)?|assumesamplerate|audiodub(?:ex)?|audiotrim|convertaudioto(?:(?:8|16|24|32)bit|float)|converttomono|delayaudio|ensurevbrmp3sync|get(?:left|right)?channel|kill(?:audio|video)|mergechannels|mixaudio|monotostereo|normalize|resampleaudio|ssrc|supereq|timestretch`,`animate|applyrange|conditional(?:filter|reader|select)|frameevaluate|scriptclip|tcp(?:server|source)|writefile(?:end|if|start)?`,`imagewriter`,`blackness|blankclip|colorbars(?:hd)?|compare|dumpfiltergraph|echo|histogram|info|messageclip|preroll|setgraphanalysis|show(?:framenumber|smpte|time)|showfiveversions|stack(?:horizontal|vertical)|subtitle|tone|version`].join(`|`)].join(`|`);e.languages.avisynth={comment:[{pattern:/(^|[^\\])\[\*(?:[^\[*]|\[(?!\*)|\*(?!\])|\[\*(?:[^\[*]|\[(?!\*)|\*(?!\]))*\*\])*\*\]/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\$])#.*/,lookbehind:!0,greedy:!0}],argument:{pattern:n(`\\b(?:<<0>>)\\s+("?)\\w+\\1`,[r],`i`),inside:{keyword:/^\w+/}},"argument-label":{pattern:/([,(][\s\\]*)\w+\s*=(?!=)/,lookbehind:!0,inside:{"argument-name":{pattern:/^\w+/,alias:`punctuation`},punctuation:/=$/}},string:[{pattern:/"""[\s\S]*?"""/,greedy:!0},{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0,inside:{constant:{pattern:/\b(?:DEFAULT_MT_MODE|(?:MAINSCRIPT|PROGRAM|SCRIPT)DIR|(?:MACHINE|USER)_(?:CLASSIC|PLUS)_PLUGINS)\b/}}}],variable:/\b(?:last)\b/i,boolean:/\b(?:false|no|true|yes)\b/i,keyword:/\b(?:catch|else|for|function|global|if|return|try|while|__END__)\b/i,constant:/\bMT_(?:MULTI_INSTANCE|NICE_FILTER|SERIALIZED|SPECIAL_MT)\b/,"builtin-function":{pattern:n(`\\b(?:<<0>>)\\b`,[i],`i`),alias:`function`},"type-cast":{pattern:n(`\\b(?:<<0>>)(?=\\s*\\()`,[r],`i`),alias:`keyword`},function:{pattern:/\b[a-z_]\w*(?=\s*\()|(\.)[a-z_]\w*\b/i,lookbehind:!0},"line-continuation":{pattern:/(^[ \t]*)\\|\\(?=[ \t]*$)/m,lookbehind:!0,alias:`punctuation`},number:/\B\$(?:[\da-f]{6}|[\da-f]{8})\b|(?:(?:\b|\B-)\d+(?:\.\d*)?\b|\B\.\d+\b)/i,operator:/\+\+?|[!=<>]=?|&&|\|\||[?:*/%-]/,punctuation:/[{}\[\]();,.]/},e.languages.avs=e.languages.avisynth})(e)}le.displayName=`avro-idl`,le.aliases=[`avdl`];function le(e){e.languages[`avro-idl`]={comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\//,greedy:!0},string:{pattern:/(^|[^\\])"(?:[^\r\n"\\]|\\.)*"/,lookbehind:!0,greedy:!0},annotation:{pattern:/@(?:[$\w.-]|`[^\r\n`]+`)+/,greedy:!0,alias:`function`},"function-identifier":{pattern:/`[^\r\n`]+`(?=\s*\()/,greedy:!0,alias:`function`},identifier:{pattern:/`[^\r\n`]+`/,greedy:!0},"class-name":{pattern:/(\b(?:enum|error|protocol|record|throws)\b\s+)[$\w]+/,lookbehind:!0,greedy:!0},keyword:/\b(?:array|boolean|bytes|date|decimal|double|enum|error|false|fixed|float|idl|import|int|local_timestamp_ms|long|map|null|oneway|protocol|record|schema|string|throws|time_ms|timestamp_ms|true|union|uuid|void)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:[{pattern:/(^|[^\w.])-?(?:(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|0x(?:[a-f0-9]+(?:\.[a-f0-9]*)?|\.[a-f0-9]+)(?:p[+-]?\d+)?)[dfl]?(?![\w.])/i,lookbehind:!0},/-?\b(?:Infinity|NaN)\b/],operator:/=/,punctuation:/[()\[\]{}<>.:,;-]/},e.languages.avdl=e.languages[`avro-idl`]}ue.displayName=`awk`,ue.aliases=[`gawk`];function ue(e){e.languages.awk={hashbang:{pattern:/^#!.*/,greedy:!0,alias:`comment`},comment:{pattern:/#.*/,greedy:!0},string:{pattern:/(^|[^\\])"(?:[^\\"\r\n]|\\.)*"/,lookbehind:!0,greedy:!0},regex:{pattern:/((?:^|[^\w\s)])\s*)\/(?:[^\/\\\r\n]|\\.)*\//,lookbehind:!0,greedy:!0},variable:/\$\w+/,keyword:/\b(?:BEGIN|BEGINFILE|END|ENDFILE|break|case|continue|default|delete|do|else|exit|for|function|getline|if|in|next|nextfile|printf?|return|switch|while)\b|@(?:include|load)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0x[a-fA-F0-9]+)\b/,operator:/--|\+\+|!?~|>&|>>|<<|(?:\*\*|[<>!=+\-*/%^])=?|&&|\|[|&]|[?:]/,punctuation:/[()[\]{},;]/},e.languages.gawk=e.languages.awk}de.displayName=`bash`,de.aliases=[`sh`,`shell`];function de(e){(function(e){var t=`\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b`,n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:`punctuation`,inside:null},r={bash:n,environment:{pattern:RegExp(`\\$`+t),alias:`constant`},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp(`(\\{)`+t),lookbehind:!0,alias:`constant`}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:`important`},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:`function`},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:`function`}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:`variable`,lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp(`(^|[\\s;|&]|[<>]\\()`+t),lookbehind:!0,alias:`constant`}},alias:`variable`,lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:`variable`,lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp(`\\$?`+t),alias:`constant`},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:`class-name`},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:`important`},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:`important`}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var i=[`comment`,`function-name`,`for-or-select`,`assign-left`,`parameter`,`string`,`environment`,`function`,`keyword`,`builtin`,`boolean`,`file-descriptor`,`operator`,`punctuation`,`number`],a=r.variable[1].inside,o=0;o?^\w +\-.])*"/,greedy:!0},number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SELECT CASE|SHARED|SHELL|SINGLE|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\$|\b)/i,function:/\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\$|\b)/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:AND|EQV|IMP|NOT|OR|XOR)\b/i,punctuation:/[,;:()]/}}pe.displayName=`batch`,pe.aliases=[];function pe(e){(function(e){var t=/%%?[~:\w]+%?|!\S+!/,n={pattern:/\/[a-z?]+(?=[ :]|$):?|-[a-z]\b|--[a-z-]+\b/im,alias:`attr-name`,inside:{punctuation:/:/}},r=/"(?:[\\"]"|[^"])*"(?!")/,i=/(?:\b|-)\d+\b/;e.languages.batch={comment:[/^::.*/m,{pattern:/((?:^|[&(])[ \t]*)rem\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0}],label:{pattern:/^:.*/m,alias:`property`},command:[{pattern:/((?:^|[&(])[ \t]*)for(?: \/[a-z?](?:[ :](?:"[^"]*"|[^\s"/]\S*))?)* \S+ in \([^)]+\) do/im,lookbehind:!0,inside:{keyword:/\b(?:do|in)\b|^for\b/i,string:r,parameter:n,variable:t,number:i,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*)if(?: \/[a-z?](?:[ :](?:"[^"]*"|[^\s"/]\S*))?)* (?:not )?(?:cmdextversion \d+|defined \w+|errorlevel \d+|exist \S+|(?:"[^"]*"|(?!")(?:(?!==)\S)+)?(?:==| (?:equ|geq|gtr|leq|lss|neq) )(?:"[^"]*"|[^\s"]\S*))/im,lookbehind:!0,inside:{keyword:/\b(?:cmdextversion|defined|errorlevel|exist|not)\b|^if\b/i,string:r,parameter:n,variable:t,number:i,operator:/\^|==|\b(?:equ|geq|gtr|leq|lss|neq)\b/i}},{pattern:/((?:^|[&()])[ \t]*)else\b/im,lookbehind:!0,inside:{keyword:/^else\b/i}},{pattern:/((?:^|[&(])[ \t]*)set(?: \/[a-z](?:[ :](?:"[^"]*"|[^\s"/]\S*))?)* (?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0,inside:{keyword:/^set\b/i,string:r,parameter:n,variable:[t,/\w+(?=(?:[*\/%+\-&^|]|<<|>>)?=)/],number:i,operator:/[*\/%+\-&^|]=?|<<=?|>>=?|[!~_=]/,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*@?)\w+\b(?:"(?:[\\"]"|[^"])*"(?!")|[^"^&)\r\n]|\^(?:\r\n|[\s\S]))*/m,lookbehind:!0,inside:{keyword:/^\w+\b/,string:r,parameter:n,label:{pattern:/(^\s*):\S+/m,lookbehind:!0,alias:`property`},variable:t,number:i,operator:/\^/}}],operator:/[&@]/,punctuation:/[()']/}})(e)}me.displayName=`bbcode`,me.aliases=[`shortcode`];function me(e){e.languages.bbcode={tag:{pattern:/\[\/?[^\s=\]]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+))?(?:\s+[^\s=\]]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+))*\s*\]/,inside:{tag:{pattern:/^\[\/?[^\s=\]]+/,inside:{punctuation:/^\[\/?/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+)/,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\]/,"attr-name":/[^\s=\]]+/}}},e.languages.shortcode=e.languages.bbcode}he.displayName=`bbj`,he.aliases=[];function he(e){(function(e){e.languages.bbj={comment:{pattern:/(^|[^\\:])rem\s+.*/i,lookbehind:!0,greedy:!0},string:{pattern:/(['"])(?:(?!\1|\\).|\\.)*\1/,greedy:!0},number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:abstract|all|argc|begin|bye|callback|case|chn|class|classend|ctl|day|declare|delete|dim|dom|dread|dsz|else|end|endif|err|exitto|extends|fi|field|for|from|gosub|goto|if|implements|interface|interfaceend|iol|iolist|let|list|load|method|methodend|methodret|on|opts|pfx|print|private|process_events|protected|psz|public|read|read_resource|release|remove_callback|repeat|restore|return|rev|seterr|setesc|sqlchn|sqlunt|ssn|start|static|swend|switch|sys|then|tim|unt|until|use|void|wend|where|while)\b/i,function:/\b\w+(?=\()/,boolean:/\b(?:BBjAPI\.TRUE|BBjAPI\.FALSE)\b/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:and|not|or|xor)\b/i,punctuation:/[.,;:()]/}})(e)}ge.displayName=`bicep`,ge.aliases=[];function ge(e){e.languages.bicep={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],property:[{pattern:/([\r\n][ \t]*)[a-z_]\w*(?=[ \t]*:)/i,lookbehind:!0},{pattern:/([\r\n][ \t]*)'(?:\\.|\$(?!\{)|[^'\\\r\n$])*'(?=[ \t]*:)/,lookbehind:!0,greedy:!0}],string:[{pattern:/'''[^'][\s\S]*?'''/,greedy:!0},{pattern:/(^|[^\\'])'(?:\\.|\$(?!\{)|[^'\\\r\n$])*'/,lookbehind:!0,greedy:!0}],"interpolated-string":{pattern:/(^|[^\\'])'(?:\\.|\$(?:(?!\{)|\{[^{}\r\n]*\})|[^'\\\r\n$])*'/,lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/\$\{[^{}\r\n]*\}/,inside:{expression:{pattern:/(^\$\{)[\s\S]+(?=\}$)/,lookbehind:!0},punctuation:/^\$\{|\}$/}},string:/[\s\S]+/}},datatype:{pattern:/(\b(?:output|param)\b[ \t]+\w+[ \t]+)\w+\b/,lookbehind:!0,alias:`class-name`},boolean:/\b(?:false|true)\b/,keyword:/\b(?:existing|for|if|in|module|null|output|param|resource|targetScope|var)\b/,decorator:/@\w+\b/,function:/\b[a-z_]\w*(?=[ \t]*\()/i,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/,punctuation:/[{}[\];(),.:]/},e.languages.bicep[`interpolated-string`].inside.interpolation.inside.expression.inside=e.languages.bicep}_e.displayName=`birb`,_e.aliases=[];function _e(e){e.register(S),e.languages.birb=e.languages.extend(`clike`,{string:{pattern:/r?("|')(?:\\.|(?!\1)[^\\])*\1/,greedy:!0},"class-name":[/\b[A-Z](?:[\d_]*[a-zA-Z]\w*)?\b/,/\b(?:[A-Z]\w*|(?!(?:var|void)\b)[a-z]\w*)(?=\s+\w+\s*[;,=()])/],keyword:/\b(?:assert|break|case|class|const|default|else|enum|final|follows|for|grab|if|nest|new|next|noSeeb|return|static|switch|throw|var|void|while)\b/,operator:/\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?|:/,variable:/\b[a-z_]\w*\b/}),e.languages.insertBefore(`birb`,`function`,{metadata:{pattern:/<\w+>/,greedy:!0,alias:`symbol`}})}ve.displayName=`bison`,ve.aliases=[];function ve(e){e.register(F),e.languages.bison=e.languages.extend(`c`,{}),e.languages.insertBefore(`bison`,`comment`,{bison:{pattern:/^(?:[^%]|%(?!%))*%%[\s\S]*?%%/,inside:{c:{pattern:/%\{[\s\S]*?%\}|\{(?:\{[^}]*\}|[^{}])*\}/,inside:{delimiter:{pattern:/^%?\{|%?\}$/,alias:`punctuation`},"bison-variable":{pattern:/[$@](?:<[^\s>]+>)?[\w$]+/,alias:`variable`,inside:{punctuation:/<|>/}},rest:e.languages.c}},comment:e.languages.c.comment,string:e.languages.c.string,property:/\S+(?=:)/,keyword:/%\w+/,number:{pattern:/(^|[^@])\b(?:0x[\da-f]+|\d+)/i,lookbehind:!0},punctuation:/%[%?]|[|:;\[\]<>]/}}})}ye.displayName=`bnf`,ye.aliases=[`rbnf`];function ye(e){e.languages.bnf={string:{pattern:/"[^\r\n"]*"|'[^\r\n']*'/},definition:{pattern:/<[^<>\r\n\t]+>(?=\s*::=)/,alias:[`rule`,`keyword`],inside:{punctuation:/^<|>$/}},rule:{pattern:/<[^<>\r\n\t]+>/,inside:{punctuation:/^<|>$/}},operator:/::=|[|()[\]{}*+?]|\.{3}/},e.languages.rbnf=e.languages.bnf}be.displayName=`bqn`,be.aliases=[];function be(e){e.languages.bqn={shebang:{pattern:/^#![ \t]*\/.*/,alias:`important`,greedy:!0},comment:{pattern:/#.*/,greedy:!0},"string-literal":{pattern:/"(?:[^"]|"")*"/,greedy:!0,alias:`string`},"character-literal":{pattern:/'(?:[\s\S]|[\uD800-\uDBFF][\uDC00-\uDFFF])'/,greedy:!0,alias:`char`},function:/•[\w¯.∞π]+[\w¯.∞π]*/,"dot-notation-on-brackets":{pattern:/\{(?=.*\}\.)|\}\./,alias:`namespace`},"special-name":{pattern:/(?:𝕨|𝕩|𝕗|𝕘|𝕤|𝕣|𝕎|𝕏|𝔽|𝔾|𝕊|_𝕣_|_𝕣)/,alias:`keyword`},"dot-notation-on-name":{pattern:/[A-Za-z_][\w¯∞π]*\./,alias:`namespace`},"word-number-scientific":{pattern:/\d+(?:\.\d+)?[eE]¯?\d+/,alias:`number`},"word-name":{pattern:/[A-Za-z_][\w¯∞π]*/,alias:`symbol`},"word-number":{pattern:/[¯∞π]?(?:\d*\.?\b\d+(?:e[+¯]?\d+|E[+¯]?\d+)?|¯|∞|π)(?:j¯?(?:(?:\d+(?:\.\d+)?|\.\d+)(?:e[+¯]?\d+|E[+¯]?\d+)?|¯|∞|π))?/,alias:`number`},"null-literal":{pattern:/@/,alias:`char`},"primitive-functions":{pattern:/[-+×÷⋆√⌊⌈|¬∧∨<>≠=≤≥≡≢⊣⊢⥊∾≍⋈↑↓↕«»⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔!]/,alias:`operator`},"primitive-1-operators":{pattern:/[`˜˘¨⁼⌜´˝˙]/,alias:`operator`},"primitive-2-operators":{pattern:/[∘⊸⟜○⌾⎉⚇⍟⊘◶⎊]/,alias:`operator`},punctuation:/[←⇐↩(){}⟨⟩[\]‿·⋄,.;:?]/}}xe.displayName=`brainfuck`,xe.aliases=[];function xe(e){e.languages.brainfuck={pointer:{pattern:/<|>/,alias:`keyword`},increment:{pattern:/\+/,alias:`inserted`},decrement:{pattern:/-/,alias:`deleted`},branching:{pattern:/\[|\]/,alias:`important`},operator:/[.,]/,comment:/\S+/}}Se.displayName=`brightscript`,Se.aliases=[];function Se(e){e.languages.brightscript={comment:/(?:\brem|').*/i,"directive-statement":{pattern:/(^[\t ]*)#(?:const|else(?:[\t ]+if)?|end[\t ]+if|error|if).*/im,lookbehind:!0,alias:`property`,inside:{"error-message":{pattern:/(^#error).+/,lookbehind:!0},directive:{pattern:/^#(?:const|else(?:[\t ]+if)?|end[\t ]+if|error|if)/,alias:`keyword`},expression:{pattern:/[\s\S]+/,inside:null}}},property:{pattern:/([\r\n{,][\t ]*)(?:(?!\d)\w+|"(?:[^"\r\n]|"")*"(?!"))(?=[ \t]*:)/,lookbehind:!0,greedy:!0},string:{pattern:/"(?:[^"\r\n]|"")*"(?!")/,greedy:!0},"class-name":{pattern:/(\bAs[\t ]+)\w+/i,lookbehind:!0},keyword:/\b(?:As|Dim|Each|Else|Elseif|End|Exit|For|Function|Goto|If|In|Print|Return|Step|Stop|Sub|Then|To|While)\b/i,boolean:/\b(?:false|true)\b/i,function:/\b(?!\d)\w+(?=[\t ]*\()/,number:/(?:\b\d+(?:\.\d+)?(?:[ed][+-]\d+)?|&h[a-f\d]+)\b[%&!#]?/i,operator:/--|\+\+|>>=?|<<=?|<>|[-+*/\\<>]=?|[:^=?]|\b(?:and|mod|not|or)\b/i,punctuation:/[.,;()[\]{}]/,constant:/\b(?:LINE_NUM)\b/i},e.languages.brightscript[`directive-statement`].inside.expression.inside=e.languages.brightscript}Ce.displayName=`bro`,Ce.aliases=[];function Ce(e){e.languages.bro={comment:{pattern:/(^|[^\\$])#.*/,lookbehind:!0,inside:{italic:/\b(?:FIXME|TODO|XXX)\b/}},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},boolean:/\b[TF]\b/,function:{pattern:/(\b(?:event|function|hook)[ \t]+)\w+(?:::\w+)?/,lookbehind:!0},builtin:/(?:@(?:load(?:-(?:plugin|sigs))?|unload|prefixes|ifn?def|else|(?:end)?if|DIR|FILENAME))|(?:&?(?:add_func|create_expire|default|delete_func|encrypt|error_handler|expire_func|group|log|mergeable|optional|persistent|priority|raw_output|read_expire|redef|rotate_interval|rotate_size|synchronized|type_column|write_expire))/,constant:{pattern:/(\bconst[ \t]+)\w+/i,lookbehind:!0},keyword:/\b(?:add|addr|alarm|any|bool|break|const|continue|count|delete|double|else|enum|event|export|file|for|function|global|hook|if|in|int|interval|local|module|next|of|opaque|pattern|port|print|record|return|schedule|set|string|subnet|table|time|timeout|using|vector|when)\b/,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&|\|\|?|\?|\*|\/|~|\^|%/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,punctuation:/[{}[\];(),.:]/}}we.displayName=`bsl`,we.aliases=[`oscript`];function we(e){e.languages.bsl={comment:/\/\/.*/,string:[{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},{pattern:/'(?:[^'\r\n\\]|\\.)*'/}],keyword:[{pattern:/(^|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:пока|для|новый|прервать|попытка|исключение|вызватьисключение|иначе|конецпопытки|неопределено|функция|перем|возврат|конецфункции|если|иначеесли|процедура|конецпроцедуры|тогда|знач|экспорт|конецесли|из|каждого|истина|ложь|по|цикл|конеццикла|выполнить)(?![\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])/i,lookbehind:!0},{pattern:/\b(?:break|do|each|else|elseif|enddo|endfunction|endif|endprocedure|endtry|except|execute|export|false|for|function|if|in|new|null|procedure|raise|return|then|to|true|try|undefined|val|var|while)\b/i}],number:{pattern:/(^(?=\d)|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:\d+(?:\.\d*)?|\.\d+)(?:E[+-]?\d+)?/i,lookbehind:!0},operator:[/[<>+\-*/]=?|[%=]/,{pattern:/(^|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:и|или|не)(?![\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])/i,lookbehind:!0},{pattern:/\b(?:and|not|or)\b/i}],punctuation:/\(\.|\.\)|[()\[\]:;,.]/,directive:[{pattern:/^([ \t]*)&.*/m,lookbehind:!0,greedy:!0,alias:`important`},{pattern:/^([ \t]*)#.*/gm,lookbehind:!0,greedy:!0,alias:`important`}]},e.languages.oscript=e.languages.bsl}Te.displayName=`cfscript`,Te.aliases=[`cfc`];function Te(e){e.register(S),e.languages.cfscript=e.languages.extend(`clike`,{comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,inside:{annotation:{pattern:/(?:^|[^.])@[\w\.]+/,alias:`punctuation`}}},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],keyword:/\b(?:abstract|break|catch|component|continue|default|do|else|extends|final|finally|for|function|if|in|include|package|private|property|public|remote|required|rethrow|return|static|switch|throw|try|var|while|xml)\b(?!\s*=)/,operator:[/\+\+|--|&&|\|\||::|=>|[!=]==|[-+*/%&|^!=<>]=?|\?(?:\.|:)?|:/,/\b(?:and|contains|eq|equal|eqv|gt|gte|imp|is|lt|lte|mod|not|or|xor)\b/],scope:{pattern:/\b(?:application|arguments|cgi|client|cookie|local|session|super|this|variables)\b/,alias:`global`},type:{pattern:/\b(?:any|array|binary|boolean|date|guid|numeric|query|string|struct|uuid|void|xml)\b/,alias:`builtin`}}),e.languages.insertBefore(`cfscript`,`keyword`,{"function-variable":{pattern:/[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:`function`}}),delete e.languages.cfscript[`class-name`],e.languages.cfc=e.languages.cfscript}Ee.displayName=`chaiscript`,Ee.aliases=[];function Ee(e){e.register(S),e.register(I),e.languages.chaiscript=e.languages.extend(`clike`,{string:{pattern:/(^|[^\\])'(?:[^'\\]|\\[\s\S])*'/,lookbehind:!0,greedy:!0},"class-name":[{pattern:/(\bclass\s+)\w+/,lookbehind:!0},{pattern:/(\b(?:attr|def)\s+)\w+(?=\s*::)/,lookbehind:!0}],keyword:/\b(?:attr|auto|break|case|catch|class|continue|def|default|else|finally|for|fun|global|if|return|switch|this|try|var|while)\b/,number:[e.languages.cpp.number,/\b(?:Infinity|NaN)\b/],operator:/>>=?|<<=?|\|\||&&|:[:=]?|--|\+\+|[=!<>+\-*/%|&^]=?|[?~]|`[^`\r\n]{1,4}`/}),e.languages.insertBefore(`chaiscript`,`operator`,{"parameter-type":{pattern:/([,(]\s*)\w+(?=\s+\w)/,lookbehind:!0,alias:`class-name`}}),e.languages.insertBefore(`chaiscript`,`string`,{"string-interpolation":{pattern:/(^|[^\\])"(?:[^"$\\]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*"/,lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\}/,lookbehind:!0,inside:{"interpolation-expression":{pattern:/(^\$\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:e.languages.chaiscript},"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:`punctuation`}}},string:/[\s\S]+/}}})}De.displayName=`cil`,De.aliases=[];function De(e){e.languages.cil={comment:/\/\/.*/,string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},directive:{pattern:/(^|\W)\.[a-z]+(?=\s)/,lookbehind:!0,alias:`class-name`},variable:/\[[\w\.]+\]/,keyword:/\b(?:abstract|ansi|assembly|auto|autochar|beforefieldinit|bool|bstr|byvalstr|catch|char|cil|class|currency|date|decimal|default|enum|error|explicit|extends|extern|famandassem|family|famorassem|final(?:ly)?|float32|float64|hidebysig|u?int(?:8|16|32|64)?|iant|idispatch|implements|import|initonly|instance|interface|iunknown|literal|lpstr|lpstruct|lptstr|lpwstr|managed|method|native(?:Type)?|nested|newslot|object(?:ref)?|pinvokeimpl|private|privatescope|public|reqsecobj|rtspecialname|runtime|sealed|sequential|serializable|specialname|static|string|struct|syschar|tbstr|unicode|unmanagedexp|unsigned|value(?:type)?|variant|virtual|void)\b/,function:/\b(?:(?:constrained|no|readonly|tail|unaligned|volatile)\.)?(?:conv\.(?:[iu][1248]?|ovf\.[iu][1248]?(?:\.un)?|r\.un|r4|r8)|ldc\.(?:i4(?:\.\d+|\.[mM]1|\.s)?|i8|r4|r8)|ldelem(?:\.[iu][1248]?|\.r[48]|\.ref|a)?|ldind\.(?:[iu][1248]?|r[48]|ref)|stelem\.?(?:i[1248]?|r[48]|ref)?|stind\.(?:i[1248]?|r[48]|ref)?|end(?:fault|filter|finally)|ldarg(?:\.[0-3s]|a(?:\.s)?)?|ldloc(?:\.\d+|\.s)?|sub(?:\.ovf(?:\.un)?)?|mul(?:\.ovf(?:\.un)?)?|add(?:\.ovf(?:\.un)?)?|stloc(?:\.[0-3s])?|refany(?:type|val)|blt(?:\.un)?(?:\.s)?|ble(?:\.un)?(?:\.s)?|bgt(?:\.un)?(?:\.s)?|bge(?:\.un)?(?:\.s)?|unbox(?:\.any)?|init(?:blk|obj)|call(?:i|virt)?|brfalse(?:\.s)?|bne\.un(?:\.s)?|ldloca(?:\.s)?|brzero(?:\.s)?|brtrue(?:\.s)?|brnull(?:\.s)?|brinst(?:\.s)?|starg(?:\.s)?|leave(?:\.s)?|shr(?:\.un)?|rem(?:\.un)?|div(?:\.un)?|clt(?:\.un)?|alignment|castclass|ldvirtftn|beq(?:\.s)?|ckfinite|ldsflda|ldtoken|localloc|mkrefany|rethrow|cgt\.un|arglist|switch|stsfld|sizeof|newobj|newarr|ldsfld|ldnull|ldflda|isinst|throw|stobj|stfld|ldstr|ldobj|ldlen|ldftn|ldfld|cpobj|cpblk|break|br\.s|xor|shl|ret|pop|not|nop|neg|jmp|dup|cgt|ceq|box|and|or|br)\b/,boolean:/\b(?:false|true)\b/,number:/\b-?(?:0x[0-9a-f]+|\d+)(?:\.[0-9a-f]+)?\b/i,punctuation:/[{}[\];(),:=]|IL_[0-9A-Za-z]+/}}Oe.displayName=`cilkc`,Oe.aliases=[`cilk-c`];function Oe(e){e.register(F),e.languages.cilkc=e.languages.insertBefore(`c`,`function`,{"parallel-keyword":{pattern:/\bcilk_(?:for|reducer|s(?:cope|pawn|ync))\b/,alias:`keyword`}}),e.languages[`cilk-c`]=e.languages.cilkc}ke.displayName=`cilkcpp`,ke.aliases=[`cilk`,`cilk-cpp`];function ke(e){e.register(I),e.languages.cilkcpp=e.languages.insertBefore(`cpp`,`function`,{"parallel-keyword":{pattern:/\bcilk_(?:for|reducer|s(?:cope|pawn|ync))\b/,alias:`keyword`}}),e.languages[`cilk-cpp`]=e.languages.cilkcpp,e.languages.cilk=e.languages.cilkcpp}Ae.displayName=`clojure`,Ae.aliases=[];function Ae(e){e.languages.clojure={comment:{pattern:/;.*/,greedy:!0},string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0},char:/\\\w+/,symbol:{pattern:/(^|[\s()\[\]{},])::?[\w*+!?'<>=/.-]+/,lookbehind:!0},keyword:{pattern:/(\()(?:-|->|->>|\.|\.\.|\*|\/|\+|<|<=|=|==|>|>=|accessor|agent|agent-errors|aget|alength|all-ns|alter|and|append-child|apply|array-map|aset|aset-boolean|aset-byte|aset-char|aset-double|aset-float|aset-int|aset-long|aset-short|assert|assoc|await|await-for|bean|binding|bit-and|bit-not|bit-or|bit-shift-left|bit-shift-right|bit-xor|boolean|branch\?|butlast|byte|cast|char|children|class|clear-agent-errors|comment|commute|comp|comparator|complement|concat|cond|conj|cons|constantly|construct-proxy|contains\?|count|create-ns|create-struct|cycle|dec|declare|def|def-|definline|definterface|defmacro|defmethod|defmulti|defn|defn-|defonce|defproject|defprotocol|defrecord|defstruct|deftype|deref|difference|disj|dissoc|distinct|do|doall|doc|dorun|doseq|dosync|dotimes|doto|double|down|drop|drop-while|edit|end\?|ensure|eval|every\?|false\?|ffirst|file-seq|filter|find|find-doc|find-ns|find-var|first|float|flush|fn|fnseq|for|frest|gensym|get|get-proxy-class|hash-map|hash-set|identical\?|identity|if|if-let|if-not|import|in-ns|inc|index|insert-child|insert-left|insert-right|inspect-table|inspect-tree|instance\?|int|interleave|intersection|into|into-array|iterate|join|key|keys|keyword|keyword\?|last|lazy-cat|lazy-cons|left|lefts|let|line-seq|list|list\*|load|load-file|locking|long|loop|macroexpand|macroexpand-1|make-array|make-node|map|map-invert|map\?|mapcat|max|max-key|memfn|merge|merge-with|meta|min|min-key|monitor-enter|name|namespace|neg\?|new|newline|next|nil\?|node|not|not-any\?|not-every\?|not=|ns|ns-imports|ns-interns|ns-map|ns-name|ns-publics|ns-refers|ns-resolve|ns-unmap|nth|nthrest|or|parse|partial|path|peek|pop|pos\?|pr|pr-str|print|print-str|println|println-str|prn|prn-str|project|proxy|proxy-mappings|quot|quote|rand|rand-int|range|re-find|re-groups|re-matcher|re-matches|re-pattern|re-seq|read|read-line|recur|reduce|ref|ref-set|refer|rem|remove|remove-method|remove-ns|rename|rename-keys|repeat|replace|replicate|resolve|rest|resultset-seq|reverse|rfirst|right|rights|root|rrest|rseq|second|select|select-keys|send|send-off|seq|seq-zip|seq\?|set|set!|short|slurp|some|sort|sort-by|sorted-map|sorted-map-by|sorted-set|special-symbol\?|split-at|split-with|str|string\?|struct|struct-map|subs|subvec|symbol|symbol\?|sync|take|take-nth|take-while|test|throw|time|to-array|to-array-2d|tree-seq|true\?|try|union|up|update-proxy|val|vals|var|var-get|var-set|var\?|vector|vector-zip|vector\?|when|when-first|when-let|when-not|with-local-vars|with-meta|with-open|with-out-str|xml-seq|xml-zip|zero\?|zipmap|zipper)(?=[\s)]|$)/,lookbehind:!0},boolean:/\b(?:false|nil|true)\b/,number:{pattern:/(^|[^\w$@])(?:\d+(?:[/.]\d+)?(?:e[+-]?\d+)?|0x[a-f0-9]+|[1-9]\d?r[a-z0-9]+)[lmn]?(?![\w$@])/i,lookbehind:!0},function:{pattern:/((?:^|[^'])\()[\w*+!?'<>=/.-]+(?=[\s)]|$)/,lookbehind:!0},operator:/[#@^`~]/,punctuation:/[{}\[\](),]/}}je.displayName=`cmake`,je.aliases=[];function je(e){e.languages.cmake={comment:/#.*/,string:{pattern:/"(?:[^\\"]|\\.)*"/,greedy:!0,inside:{interpolation:{pattern:/\$\{(?:[^{}$]|\$\{[^{}$]*\})*\}/,inside:{punctuation:/\$\{|\}/,variable:/\w+/}}}},variable:/\b(?:CMAKE_\w+|\w+_(?:(?:BINARY|SOURCE)_DIR|DESCRIPTION|HOMEPAGE_URL|ROOT|VERSION(?:_MAJOR|_MINOR|_PATCH|_TWEAK)?)|(?:ANDROID|APPLE|BORLAND|BUILD_SHARED_LIBS|CACHE|CPACK_(?:ABSOLUTE_DESTINATION_FILES|COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY|ERROR_ON_ABSOLUTE_INSTALL_DESTINATION|INCLUDE_TOPLEVEL_DIRECTORY|INSTALL_DEFAULT_DIRECTORY_PERMISSIONS|INSTALL_SCRIPT|PACKAGING_INSTALL_PREFIX|SET_DESTDIR|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|CTEST_(?:BINARY_DIRECTORY|BUILD_COMMAND|BUILD_NAME|BZR_COMMAND|BZR_UPDATE_OPTIONS|CHANGE_ID|CHECKOUT_COMMAND|CONFIGURATION_TYPE|CONFIGURE_COMMAND|COVERAGE_COMMAND|COVERAGE_EXTRA_FLAGS|CURL_OPTIONS|CUSTOM_(?:COVERAGE_EXCLUDE|ERROR_EXCEPTION|ERROR_MATCH|ERROR_POST_CONTEXT|ERROR_PRE_CONTEXT|MAXIMUM_FAILED_TEST_OUTPUT_SIZE|MAXIMUM_NUMBER_OF_(?:ERRORS|WARNINGS)|MAXIMUM_PASSED_TEST_OUTPUT_SIZE|MEMCHECK_IGNORE|POST_MEMCHECK|POST_TEST|PRE_MEMCHECK|PRE_TEST|TESTS_IGNORE|WARNING_EXCEPTION|WARNING_MATCH)|CVS_CHECKOUT|CVS_COMMAND|CVS_UPDATE_OPTIONS|DROP_LOCATION|DROP_METHOD|DROP_SITE|DROP_SITE_CDASH|DROP_SITE_PASSWORD|DROP_SITE_USER|EXTRA_COVERAGE_GLOB|GIT_COMMAND|GIT_INIT_SUBMODULES|GIT_UPDATE_CUSTOM|GIT_UPDATE_OPTIONS|HG_COMMAND|HG_UPDATE_OPTIONS|LABELS_FOR_SUBPROJECTS|MEMORYCHECK_(?:COMMAND|COMMAND_OPTIONS|SANITIZER_OPTIONS|SUPPRESSIONS_FILE|TYPE)|NIGHTLY_START_TIME|P4_CLIENT|P4_COMMAND|P4_OPTIONS|P4_UPDATE_OPTIONS|RUN_CURRENT_SCRIPT|SCP_COMMAND|SITE|SOURCE_DIRECTORY|SUBMIT_URL|SVN_COMMAND|SVN_OPTIONS|SVN_UPDATE_OPTIONS|TEST_LOAD|TEST_TIMEOUT|TRIGGER_SITE|UPDATE_COMMAND|UPDATE_OPTIONS|UPDATE_VERSION_ONLY|USE_LAUNCHERS)|CYGWIN|ENV|EXECUTABLE_OUTPUT_PATH|GHS-MULTI|IOS|LIBRARY_OUTPUT_PATH|MINGW|MSVC(?:10|11|12|14|60|70|71|80|90|_IDE|_TOOLSET_VERSION|_VERSION)?|MSYS|PROJECT_NAME|UNIX|WIN32|WINCE|WINDOWS_PHONE|WINDOWS_STORE|XCODE))\b/,property:/\b(?:cxx_\w+|(?:ARCHIVE_OUTPUT_(?:DIRECTORY|NAME)|COMPILE_DEFINITIONS|COMPILE_PDB_NAME|COMPILE_PDB_OUTPUT_DIRECTORY|EXCLUDE_FROM_DEFAULT_BUILD|IMPORTED_(?:IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_LANGUAGES|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|NO_SONAME|OBJECTS|SONAME)|INTERPROCEDURAL_OPTIMIZATION|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_OUTPUT_NAME|LINK_FLAGS|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_NAME|PDB_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_NAME|STATIC_LIBRARY_FLAGS|VS_CSHARP|VS_DOTNET_REFERENCEPROP|VS_DOTNET_REFERENCE|VS_GLOBAL_SECTION_POST|VS_GLOBAL_SECTION_PRE|VS_GLOBAL|XCODE_ATTRIBUTE)_\w+|\w+_(?:CLANG_TIDY|COMPILER_LAUNCHER|CPPCHECK|CPPLINT|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|VISIBILITY_PRESET)|ABSTRACT|ADDITIONAL_MAKE_CLEAN_FILES|ADVANCED|ALIASED_TARGET|ALLOW_DUPLICATE_CUSTOM_TARGETS|ANDROID_(?:ANT_ADDITIONAL_OPTIONS|API|API_MIN|ARCH|ASSETS_DIRECTORIES|GUI|JAR_DEPENDENCIES|NATIVE_LIB_DEPENDENCIES|NATIVE_LIB_DIRECTORIES|PROCESS_MAX|PROGUARD|PROGUARD_CONFIG_PATH|SECURE_PROPS_PATH|SKIP_ANT_STEP|STL_TYPE)|ARCHIVE_OUTPUT_DIRECTORY|ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|AUTOGEN_(?:BUILD_DIR|ORIGIN_DEPENDS|PARALLEL|SOURCE_GROUP|TARGETS_FOLDER|TARGET_DEPENDS)|AUTOMOC|AUTOMOC_(?:COMPILER_PREDEFINES|DEPEND_FILTERS|EXECUTABLE|MACRO_NAMES|MOC_OPTIONS|SOURCE_GROUP|TARGETS_FOLDER)|AUTORCC|AUTORCC_EXECUTABLE|AUTORCC_OPTIONS|AUTORCC_SOURCE_GROUP|AUTOUIC|AUTOUIC_EXECUTABLE|AUTOUIC_OPTIONS|AUTOUIC_SEARCH_PATHS|BINARY_DIR|BUILDSYSTEM_TARGETS|BUILD_RPATH|BUILD_RPATH_USE_ORIGIN|BUILD_WITH_INSTALL_NAME_DIR|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE_EXTENSION|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMMON_LANGUAGE_RUNTIME|COMPATIBLE_INTERFACE_(?:BOOL|NUMBER_MAX|NUMBER_MIN|STRING)|COMPILE_(?:DEFINITIONS|FEATURES|FLAGS|OPTIONS|PDB_NAME|PDB_OUTPUT_DIRECTORY)|COST|CPACK_DESKTOP_SHORTCUTS|CPACK_NEVER_OVERWRITE|CPACK_PERMANENT|CPACK_STARTUP_SHORTCUTS|CPACK_START_MENU_SHORTCUTS|CPACK_WIX_ACL|CROSSCOMPILING_EMULATOR|CUDA_EXTENSIONS|CUDA_PTX_COMPILATION|CUDA_RESOLVE_DEVICE_SYMBOLS|CUDA_SEPARABLE_COMPILATION|CUDA_STANDARD|CUDA_STANDARD_REQUIRED|CXX_EXTENSIONS|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_EXTENSIONS|C_STANDARD|C_STANDARD_REQUIRED|DEBUG_CONFIGURATIONS|DEFINE_SYMBOL|DEFINITIONS|DEPENDS|DEPLOYMENT_ADDITIONAL_FILES|DEPLOYMENT_REMOTE_DIRECTORY|DISABLED|DISABLED_FEATURES|ECLIPSE_EXTRA_CPROJECT_CONTENTS|ECLIPSE_EXTRA_NATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|ENABLE_EXPORTS|ENVIRONMENT|EXCLUDE_FROM_ALL|EXCLUDE_FROM_DEFAULT_BUILD|EXPORT_NAME|EXPORT_PROPERTIES|EXTERNAL_OBJECT|EchoString|FAIL_REGULAR_EXPRESSION|FIND_LIBRARY_USE_LIB32_PATHS|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_LIBX32_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|FIXTURES_CLEANUP|FIXTURES_REQUIRED|FIXTURES_SETUP|FOLDER|FRAMEWORK|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GENERATED|GENERATOR_FILE_NAME|GENERATOR_IS_MULTI_CONFIG|GHS_INTEGRITY_APP|GHS_NO_SOURCE_GROUP_FILE|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|GNUtoMS|HAS_CXX|HEADER_FILE_ONLY|HELPSTRING|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(?:COMMON_LANGUAGE_RUNTIME|CONFIGURATIONS|GLOBAL|IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_(?:LANGUAGES|LIBRARIES|MULTIPLICITY)|LOCATION|NO_SONAME|OBJECTS|SONAME)|IMPORT_PREFIX|IMPORT_SUFFIX|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE_(?:AUTOUIC_OPTIONS|COMPILE_DEFINITIONS|COMPILE_FEATURES|COMPILE_OPTIONS|INCLUDE_DIRECTORIES|LINK_DEPENDS|LINK_DIRECTORIES|LINK_LIBRARIES|LINK_OPTIONS|POSITION_INDEPENDENT_CODE|SOURCES|SYSTEM_INCLUDE_DIRECTORIES)|INTERPROCEDURAL_OPTIMIZATION|IN_TRY_COMPILE|IOS_INSTALL_COMBINED|JOB_POOLS|JOB_POOL_COMPILE|JOB_POOL_LINK|KEEP_EXTENSION|LABELS|LANGUAGE|LIBRARY_OUTPUT_DIRECTORY|LINKER_LANGUAGE|LINK_(?:DEPENDS|DEPENDS_NO_SHARED|DIRECTORIES|FLAGS|INTERFACE_LIBRARIES|INTERFACE_MULTIPLICITY|LIBRARIES|OPTIONS|SEARCH_END_STATIC|SEARCH_START_STATIC|WHAT_YOU_USE)|LISTFILE_STACK|LOCATION|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MACOSX_PACKAGE_LOCATION|MACOSX_RPATH|MACROS|MANUALLY_ADDED_DEPENDENCIES|MEASUREMENT|MODIFIED|NAME|NO_SONAME|NO_SYSTEM_FROM_IMPORTED|OBJECT_DEPENDS|OBJECT_OUTPUTS|OSX_ARCHITECTURES|OUTPUT_NAME|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PARENT_DIRECTORY|PASS_REGULAR_EXPRESSION|PDB_NAME|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|POST_INSTALL_SCRIPT|PREDEFINED_TARGETS_FOLDER|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE_HEADER|PROCESSORS|PROCESSOR_AFFINITY|PROJECT_LABEL|PUBLIC_HEADER|REPORT_UNDEFINED_PROPERTIES|REQUIRED_FILES|RESOURCE|RESOURCE_LOCK|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|RUNTIME_OUTPUT_DIRECTORY|RUN_SERIAL|SKIP_AUTOGEN|SKIP_AUTOMOC|SKIP_AUTORCC|SKIP_AUTOUIC|SKIP_BUILD_RPATH|SKIP_RETURN_CODE|SOURCES|SOURCE_DIR|SOVERSION|STATIC_LIBRARY_FLAGS|STATIC_LIBRARY_OPTIONS|STRINGS|SUBDIRECTORIES|SUFFIX|SYMBOLIC|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_MESSAGES|TARGET_SUPPORTS_SHARED_LIBS|TESTS|TEST_INCLUDE_FILE|TEST_INCLUDE_FILES|TIMEOUT|TIMEOUT_AFTER_MATCH|TYPE|USE_FOLDERS|VALUE|VARIABLES|VERSION|VISIBILITY_INLINES_HIDDEN|VS_(?:CONFIGURATION_TYPE|COPY_TO_OUT_DIR|DEBUGGER_(?:COMMAND|COMMAND_ARGUMENTS|ENVIRONMENT|WORKING_DIRECTORY)|DEPLOYMENT_CONTENT|DEPLOYMENT_LOCATION|DOTNET_REFERENCES|DOTNET_REFERENCES_COPY_LOCAL|INCLUDE_IN_VSIX|IOT_STARTUP_TASK|KEYWORD|RESOURCE_GENERATOR|SCC_AUXPATH|SCC_LOCALPATH|SCC_PROJECTNAME|SCC_PROVIDER|SDK_REFERENCES|SHADER_(?:DISABLE_OPTIMIZATIONS|ENABLE_DEBUG|ENTRYPOINT|FLAGS|MODEL|OBJECT_FILE_NAME|OUTPUT_HEADER_FILE|TYPE|VARIABLE_NAME)|STARTUP_PROJECT|TOOL_OVERRIDE|USER_PROPS|WINRT_COMPONENT|WINRT_EXTENSIONS|WINRT_REFERENCES|XAML_TYPE)|WILL_FAIL|WIN32_EXECUTABLE|WINDOWS_EXPORT_ALL_SYMBOLS|WORKING_DIRECTORY|WRAP_EXCLUDE|XCODE_(?:EMIT_EFFECTIVE_PLATFORM_NAME|EXPLICIT_FILE_TYPE|FILE_ATTRIBUTES|LAST_KNOWN_FILE_TYPE|PRODUCT_TYPE|SCHEME_(?:ADDRESS_SANITIZER|ADDRESS_SANITIZER_USE_AFTER_RETURN|ARGUMENTS|DISABLE_MAIN_THREAD_CHECKER|DYNAMIC_LIBRARY_LOADS|DYNAMIC_LINKER_API_USAGE|ENVIRONMENT|EXECUTABLE|GUARD_MALLOC|MAIN_THREAD_CHECKER_STOP|MALLOC_GUARD_EDGES|MALLOC_SCRIBBLE|MALLOC_STACK|THREAD_SANITIZER(?:_STOP)?|UNDEFINED_BEHAVIOUR_SANITIZER(?:_STOP)?|ZOMBIE_OBJECTS))|XCTEST)\b/,keyword:/\b(?:add_compile_definitions|add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_link_options|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_parse_arguments|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_guard|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_directories|target_link_libraries|target_link_options|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)(?=\s*\()\b/,boolean:/\b(?:FALSE|OFF|ON|TRUE)\b/,namespace:/\b(?:INTERFACE|PRIVATE|PROPERTIES|PUBLIC|SHARED|STATIC|TARGET_OBJECTS)\b/,operator:/\b(?:AND|DEFINED|EQUAL|GREATER|LESS|MATCHES|NOT|OR|STREQUAL|STRGREATER|STRLESS|VERSION_EQUAL|VERSION_GREATER|VERSION_LESS)\b/,inserted:{pattern:/\b\w+::\w+\b/,alias:`class-name`},number:/\b\d+(?:\.\d+)*\b/,function:/\b[a-z_]\w*(?=\s*\()\b/i,punctuation:/[()>}]|\$[<{]/}}Me.displayName=`cobol`,Me.aliases=[];function Me(e){e.languages.cobol={comment:{pattern:/\*>.*|(^[ \t]*)\*.*/m,lookbehind:!0,greedy:!0},string:{pattern:/[xzgn]?(?:"(?:[^\r\n"]|"")*"(?!")|'(?:[^\r\n']|'')*'(?!'))/i,greedy:!0},level:{pattern:/(^[ \t]*)\d+\b/m,lookbehind:!0,greedy:!0,alias:`number`},"class-name":{pattern:/(\bpic(?:ture)?\s+)(?:(?:[-\w$/,:*+<>]|\.(?!\s|$))(?:\(\d+\))?)+/i,lookbehind:!0,inside:{number:{pattern:/(\()\d+/,lookbehind:!0},punctuation:/[()]/}},keyword:{pattern:/(^|[^\w-])(?:ABORT|ACCEPT|ACCESS|ADD|ADDRESS|ADVANCING|AFTER|ALIGNED|ALL|ALPHABET|ALPHABETIC|ALPHABETIC-LOWER|ALPHABETIC-UPPER|ALPHANUMERIC|ALPHANUMERIC-EDITED|ALSO|ALTER|ALTERNATE|ANY|ARE|AREA|AREAS|AS|ASCENDING|ASCII|ASSIGN|ASSOCIATED-DATA|ASSOCIATED-DATA-LENGTH|AT|ATTRIBUTE|AUTHOR|AUTO|AUTO-SKIP|BACKGROUND-COLOR|BACKGROUND-COLOUR|BASIS|BEEP|BEFORE|BEGINNING|BELL|BINARY|BIT|BLANK|BLINK|BLOCK|BOTTOM|BOUNDS|BY|BYFUNCTION|BYTITLE|CALL|CANCEL|CAPABLE|CCSVERSION|CD|CF|CH|CHAINING|CHANGED|CHANNEL|CHARACTER|CHARACTERS|CLASS|CLASS-ID|CLOCK-UNITS|CLOSE|CLOSE-DISPOSITION|COBOL|CODE|CODE-SET|COL|COLLATING|COLUMN|COM-REG|COMMA|COMMITMENT|COMMON|COMMUNICATION|COMP|COMP-1|COMP-2|COMP-3|COMP-4|COMP-5|COMPUTATIONAL|COMPUTATIONAL-1|COMPUTATIONAL-2|COMPUTATIONAL-3|COMPUTATIONAL-4|COMPUTATIONAL-5|COMPUTE|CONFIGURATION|CONTAINS|CONTENT|CONTINUE|CONTROL|CONTROL-POINT|CONTROLS|CONVENTION|CONVERTING|COPY|CORR|CORRESPONDING|COUNT|CRUNCH|CURRENCY|CURSOR|DATA|DATA-BASE|DATE|DATE-COMPILED|DATE-WRITTEN|DAY|DAY-OF-WEEK|DBCS|DE|DEBUG-CONTENTS|DEBUG-ITEM|DEBUG-LINE|DEBUG-NAME|DEBUG-SUB-1|DEBUG-SUB-2|DEBUG-SUB-3|DEBUGGING|DECIMAL-POINT|DECLARATIVES|DEFAULT|DEFAULT-DISPLAY|DEFINITION|DELETE|DELIMITED|DELIMITER|DEPENDING|DESCENDING|DESTINATION|DETAIL|DFHRESP|DFHVALUE|DISABLE|DISK|DISPLAY|DISPLAY-1|DIVIDE|DIVISION|DONTCARE|DOUBLE|DOWN|DUPLICATES|DYNAMIC|EBCDIC|EGCS|EGI|ELSE|EMI|EMPTY-CHECK|ENABLE|END|END-ACCEPT|END-ADD|END-CALL|END-COMPUTE|END-DELETE|END-DIVIDE|END-EVALUATE|END-IF|END-MULTIPLY|END-OF-PAGE|END-PERFORM|END-READ|END-RECEIVE|END-RETURN|END-REWRITE|END-SEARCH|END-START|END-STRING|END-SUBTRACT|END-UNSTRING|END-WRITE|ENDING|ENTER|ENTRY|ENTRY-PROCEDURE|ENVIRONMENT|EOL|EOP|EOS|ERASE|ERROR|ESCAPE|ESI|EVALUATE|EVENT|EVERY|EXCEPTION|EXCLUSIVE|EXHIBIT|EXIT|EXPORT|EXTEND|EXTENDED|EXTERNAL|FD|FILE|FILE-CONTROL|FILLER|FINAL|FIRST|FOOTING|FOR|FOREGROUND-COLOR|FOREGROUND-COLOUR|FROM|FULL|FUNCTION|FUNCTION-POINTER|FUNCTIONNAME|GENERATE|GIVING|GLOBAL|GO|GOBACK|GRID|GROUP|HEADING|HIGH-VALUE|HIGH-VALUES|HIGHLIGHT|I-O|I-O-CONTROL|ID|IDENTIFICATION|IF|IMPLICIT|IMPORT|IN|INDEX|INDEXED|INDICATE|INITIAL|INITIALIZE|INITIATE|INPUT|INPUT-OUTPUT|INSPECT|INSTALLATION|INTEGER|INTO|INVALID|INVOKE|IS|JUST|JUSTIFIED|KANJI|KEPT|KEY|KEYBOARD|LABEL|LANGUAGE|LAST|LB|LD|LEADING|LEFT|LEFTLINE|LENGTH|LENGTH-CHECK|LIBACCESS|LIBPARAMETER|LIBRARY|LIMIT|LIMITS|LINAGE|LINAGE-COUNTER|LINE|LINE-COUNTER|LINES|LINKAGE|LIST|LOCAL|LOCAL-STORAGE|LOCK|LONG-DATE|LONG-TIME|LOW-VALUE|LOW-VALUES|LOWER|LOWLIGHT|MEMORY|MERGE|MESSAGE|MMDDYYYY|MODE|MODULES|MORE-LABELS|MOVE|MULTIPLE|MULTIPLY|NAMED|NATIONAL|NATIONAL-EDITED|NATIVE|NEGATIVE|NETWORK|NEXT|NO|NO-ECHO|NULL|NULLS|NUMBER|NUMERIC|NUMERIC-DATE|NUMERIC-EDITED|NUMERIC-TIME|OBJECT-COMPUTER|OCCURS|ODT|OF|OFF|OMITTED|ON|OPEN|OPTIONAL|ORDER|ORDERLY|ORGANIZATION|OTHER|OUTPUT|OVERFLOW|OVERLINE|OWN|PACKED-DECIMAL|PADDING|PAGE|PAGE-COUNTER|PASSWORD|PERFORM|PF|PH|PIC|PICTURE|PLUS|POINTER|PORT|POSITION|POSITIVE|PRINTER|PRINTING|PRIVATE|PROCEDURE|PROCEDURE-POINTER|PROCEDURES|PROCEED|PROCESS|PROGRAM|PROGRAM-ID|PROGRAM-LIBRARY|PROMPT|PURGE|QUEUE|QUOTE|QUOTES|RANDOM|RD|READ|READER|REAL|RECEIVE|RECEIVED|RECORD|RECORDING|RECORDS|RECURSIVE|REDEFINES|REEL|REF|REFERENCE|REFERENCES|RELATIVE|RELEASE|REMAINDER|REMARKS|REMOTE|REMOVAL|REMOVE|RENAMES|REPLACE|REPLACING|REPORT|REPORTING|REPORTS|REQUIRED|RERUN|RESERVE|RESET|RETURN|RETURN-CODE|RETURNING|REVERSE-VIDEO|REVERSED|REWIND|REWRITE|RF|RH|RIGHT|ROUNDED|RUN|SAME|SAVE|SCREEN|SD|SEARCH|SECTION|SECURE|SECURITY|SEGMENT|SEGMENT-LIMIT|SELECT|SEND|SENTENCE|SEPARATE|SEQUENCE|SEQUENTIAL|SET|SHARED|SHAREDBYALL|SHAREDBYRUNUNIT|SHARING|SHIFT-IN|SHIFT-OUT|SHORT-DATE|SIGN|SIZE|SORT|SORT-CONTROL|SORT-CORE-SIZE|SORT-FILE-SIZE|SORT-MERGE|SORT-MESSAGE|SORT-MODE-SIZE|SORT-RETURN|SOURCE|SOURCE-COMPUTER|SPACE|SPACES|SPECIAL-NAMES|STANDARD|STANDARD-1|STANDARD-2|START|STATUS|STOP|STRING|SUB-QUEUE-1|SUB-QUEUE-2|SUB-QUEUE-3|SUBTRACT|SUM|SUPPRESS|SYMBOL|SYMBOLIC|SYNC|SYNCHRONIZED|TABLE|TALLY|TALLYING|TAPE|TASK|TERMINAL|TERMINATE|TEST|TEXT|THEN|THREAD|THREAD-LOCAL|THROUGH|THRU|TIME|TIMER|TIMES|TITLE|TO|TODAYS-DATE|TODAYS-NAME|TOP|TRAILING|TRUNCATED|TYPE|TYPEDEF|UNDERLINE|UNIT|UNSTRING|UNTIL|UP|UPON|USAGE|USE|USING|VALUE|VALUES|VARYING|VIRTUAL|WAIT|WHEN|WHEN-COMPILED|WITH|WORDS|WORKING-STORAGE|WRITE|YEAR|YYYYDDD|YYYYMMDD|ZERO-FILL|ZEROES|ZEROS)(?![\w-])/i,lookbehind:!0},boolean:{pattern:/(^|[^\w-])(?:false|true)(?![\w-])/i,lookbehind:!0},number:{pattern:/(^|[^\w-])(?:[+-]?(?:(?:\d+(?:[.,]\d+)?|[.,]\d+)(?:e[+-]?\d+)?|zero))(?![\w-])/i,lookbehind:!0},operator:[/<>|[<>]=?|[=+*/&]/,{pattern:/(^|[^\w-])(?:-|and|equal|greater|less|not|or|than)(?![\w-])/i,lookbehind:!0}],punctuation:/[.:,()]/}}Ne.displayName=`coffeescript`,Ne.aliases=[`coffee`];function Ne(e){e.register(C),(function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:`variable`};e.languages.coffeescript=e.languages.extend(`javascript`,{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:`variable`}}),e.languages.insertBefore(`coffeescript`,`comment`,{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:`comment`},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:`regex`,inside:{comment:t,interpolation:n}}}),e.languages.insertBefore(`coffeescript`,`string`,{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:`punctuation`},script:{pattern:/[\s\S]+/,alias:`language-javascript`,inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:`string`},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:`string`,inside:{interpolation:n}}]}),e.languages.insertBefore(`coffeescript`,`keyword`,{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript[`template-string`],e.languages.coffee=e.languages.coffeescript})(e)}Pe.displayName=`concurnas`,Pe.aliases=[`conc`];function Pe(e){e.languages.concurnas={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?(?:\*\/|$)|\/\/.*)/,lookbehind:!0,greedy:!0},langext:{pattern:/\b\w+\s*\|\|[\s\S]+?\|\|/,greedy:!0,inside:{"class-name":/^\w+/,string:{pattern:/(^\s*\|\|)[\s\S]+(?=\|\|$)/,lookbehind:!0},punctuation:/\|\|/}},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/,lookbehind:!0},keyword:/\b(?:abstract|actor|also|annotation|assert|async|await|bool|boolean|break|byte|case|catch|changed|char|class|closed|constant|continue|def|default|del|double|elif|else|enum|every|extends|false|finally|float|for|from|global|gpudef|gpukernel|if|import|in|init|inject|int|lambda|local|long|loop|match|new|nodefault|null|of|onchange|open|out|override|package|parfor|parforsync|post|pre|private|protected|provide|provider|public|return|shared|short|single|size_t|sizeof|super|sync|this|throw|trait|trans|transient|true|try|typedef|unchecked|using|val|var|void|while|with)\b/,boolean:/\b(?:false|true)\b/,number:/\b0b[01][01_]*L?\b|\b0x(?:[\da-f_]*\.)?[\da-f_p+-]+\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfls]?/i,punctuation:/[{}[\];(),.:]/,operator:/<==|>==|=>|->|<-|<>|&==|&<>|\?:?|\.\?|\+\+|--|[-+*/=<>]=?|[!^~]|\b(?:and|as|band|bor|bxor|comp|is|isnot|mod|or)\b=?/,annotation:{pattern:/@(?:\w+:)?(?:\w+|\[[^\]]+\])?/,alias:`builtin`}},e.languages.insertBefore(`concurnas`,`langext`,{"regex-literal":{pattern:/\br("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:e.languages.concurnas},regex:/[\s\S]+/}},"string-literal":{pattern:/(?:\B|\bs)("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:e.languages.concurnas},string:/[\s\S]+/}}}),e.languages.conc=e.languages.concurnas}Fe.displayName=`cooklang`,Fe.aliases=[];function Fe(e){(function(e){var t=`(?:(?!\\s)[\\d$+<=a-zA-Z\\x80-\\uFFFF])+`,n=`[^{}@#]+`,r=n+`\\{[^}#@]*\\}`,i=`(?:h|hours|hrs|m|min|minutes)`,a={pattern:/\{[^{}]*\}/,inside:{amount:{pattern:/([\{|])[^{}|*%]+/,lookbehind:!0,alias:`number`},unit:{pattern:/(%)[^}]+/,lookbehind:!0,alias:`symbol`},"servings-scaler":{pattern:/\*/,alias:`operator`},"servings-alternative-separator":{pattern:/\|/,alias:`operator`},"unit-separator":{pattern:/(?:%|(\*)%)/,lookbehind:!0,alias:`operator`},punctuation:/[{}]/}};e.languages.cooklang={comment:{pattern:/\[-[\s\S]*?-\]|--.*/,greedy:!0},meta:{pattern:/>>.*:.*/,inside:{property:{pattern:/(>>\s*)[^\s:](?:[^:]*[^\s:])?/,lookbehind:!0}}},"cookware-group":{pattern:RegExp(`#(?:`+r+`|`+t+`)`),inside:{cookware:{pattern:RegExp(`(^#)(?:`+n+`)`),lookbehind:!0,alias:`variable`},"cookware-keyword":{pattern:/^#/,alias:`keyword`},"quantity-group":{pattern:new RegExp(/\{[^{}@#]*\}/),inside:{quantity:{pattern:RegExp(`(^\\{)`+n),lookbehind:!0,alias:`number`},punctuation:/[{}]/}}}},"ingredient-group":{pattern:RegExp(`@(?:`+r+`|`+t+`)`),inside:{ingredient:{pattern:RegExp(`(^@)(?:`+n+`)`),lookbehind:!0,alias:`variable`},"ingredient-keyword":{pattern:/^@/,alias:`keyword`},"amount-group":a}},"timer-group":{pattern:/~(?!\s)[^@#~{}]*\{[^{}]*\}/,inside:{timer:{pattern:/(^~)[^{]+/,lookbehind:!0,alias:`variable`},"duration-group":{pattern:/\{[^{}]*\}/,inside:{punctuation:/[{}]/,unit:{pattern:RegExp(`(%\\s*)`+i+`\\b`),lookbehind:!0,alias:`symbol`},operator:/%/,duration:{pattern:/\d+/,alias:`number`}}},"timer-keyword":{pattern:/^~/,alias:`keyword`}}}}})(e)}Ie.displayName=`coq`,Ie.aliases=[];function Ie(e){(function(e){for(var t=`\\(\\*(?:[^(*]|\\((?!\\*)|\\*(?!\\))|)*\\*\\)`,n=0;n<2;n++)t=t.replace(//g,function(){return t});t=t.replace(//g,`[]`),e.languages.coq={comment:RegExp(t),string:{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},attribute:[{pattern:RegExp(`#\\[(?:[^\\[\\]("]|"(?:[^"]|"")*"(?!")|\\((?!\\*)|)*\\]`.replace(//g,function(){return t})),greedy:!0,alias:`attr-name`,inside:{comment:RegExp(t),string:{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},operator:/=/,punctuation:/^#\[|\]$|[,()]/}},{pattern:/\b(?:Cumulative|Global|Local|Monomorphic|NonCumulative|Polymorphic|Private|Program)\b/,alias:`attr-name`}],keyword:/\b(?:Abort|About|Add|Admit|Admitted|All|Arguments|As|Assumptions|Axiom|Axioms|Back|BackTo|Backtrace|BinOp|BinOpSpec|BinRel|Bind|Blacklist|Canonical|Case|Cd|Check|Class|Classes|Close|CoFixpoint|CoInductive|Coercion|Coercions|Collection|Combined|Compute|Conjecture|Conjectures|Constant|Constants|Constraint|Constructors|Context|Corollary|Create|CstOp|Custom|Cut|Debug|Declare|Defined|Definition|Delimit|Dependencies|Dependent|Derive|Diffs|Drop|Elimination|End|Entry|Equality|Eval|Example|Existential|Existentials|Existing|Export|Extern|Extraction|Fact|Fail|Field|File|Firstorder|Fixpoint|Flags|Focus|From|Funclass|Function|Functional|GC|Generalizable|Goal|Grab|Grammar|Graph|Guarded|Haskell|Heap|Hide|Hint|HintDb|Hints|Hypotheses|Hypothesis|IF|Identity|Immediate|Implicit|Implicits|Import|Include|Induction|Inductive|Infix|Info|Initial|InjTyp|Inline|Inspect|Instance|Instances|Intro|Intros|Inversion|Inversion_clear|JSON|Language|Left|Lemma|Let|Lia|Libraries|Library|Load|LoadPath|Locate|Ltac|Ltac2|ML|Match|Method|Minimality|Module|Modules|Morphism|Next|NoInline|Notation|Number|OCaml|Obligation|Obligations|Opaque|Open|Optimize|Parameter|Parameters|Parametric|Path|Paths|Prenex|Preterm|Primitive|Print|Profile|Projections|Proof|Prop|PropBinOp|PropOp|PropUOp|Property|Proposition|Pwd|Qed|Quit|Rec|Record|Recursive|Redirect|Reduction|Register|Relation|Remark|Remove|Require|Reserved|Reset|Resolve|Restart|Rewrite|Right|Ring|Rings|SProp|Saturate|Save|Scheme|Scope|Scopes|Search|SearchHead|SearchPattern|SearchRewrite|Section|Separate|Set|Setoid|Show|Signatures|Solve|Solver|Sort|Sortclass|Sorted|Spec|Step|Strategies|Strategy|String|Structure|SubClass|Subgraph|SuchThat|Tactic|Term|TestCompile|Theorem|Time|Timeout|To|Transparent|Type|Typeclasses|Types|Typing|UnOp|UnOpSpec|Undelimit|Undo|Unfocus|Unfocused|Unfold|Universe|Universes|Unshelve|Variable|Variables|Variant|Verbose|View|Visibility|Zify|_|apply|as|at|by|cofix|else|end|exists|exists2|fix|for|forall|fun|if|in|let|match|measure|move|removed|return|struct|then|using|wf|where|with)\b/,number:/\b(?:0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]+)?(?:p[+-]?\d[\d_]*)?|\d[\d_]*(?:\.[\d_]+)?(?:e[+-]?\d[\d_]*)?)\b/i,punct:{pattern:/@\{|\{\||\[=|:>/,alias:`punctuation`},operator:/\/\\|\\\/|\.{2,3}|:{1,2}=|\*\*|[-=]>|<(?:->?|[+:=>]|<:)|>(?:=|->)|\|[-|]?|[-!%&*+/<=>?@^~']/,punctuation:/\.\(|`\(|@\{|`\{|\{\||\[=|:>|[:.,;(){}\[\]]/}})(e)}V.displayName=`ruby`,V.aliases=[`rb`];function V(e){e.register(S),(function(e){e.languages.ruby=e.languages.extend(`clike`,{comment:{pattern:/#.*|^=begin\s[\s\S]*?^=end/m,greedy:!0},"class-name":{pattern:/(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,operator:/\.{2,3}|&\.|===||[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,punctuation:/[(){}[\].,;]/}),e.languages.insertBefore(`ruby`,`operator`,{"double-colon":{pattern:/::/,alias:`punctuation`}});var t={pattern:/((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,lookbehind:!0,inside:{content:{pattern:/^(#\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:e.languages.ruby},delimiter:{pattern:/^#\{|\}$/,alias:`punctuation`}}};delete e.languages.ruby.function;var n=`(?:`+[`([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1`,`\\((?:[^()\\\\]|\\\\[\\s\\S]|\\((?:[^()\\\\]|\\\\[\\s\\S])*\\))*\\)`,`\\{(?:[^{}\\\\]|\\\\[\\s\\S]|\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\})*\\}`,`\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S]|\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\])*\\]`,`<(?:[^<>\\\\]|\\\\[\\s\\S]|<(?:[^<>\\\\]|\\\\[\\s\\S])*>)*>`].join(`|`)+`)`,r=`(?:"(?:\\\\.|[^"\\\\\\r\\n])*"|(?:\\b[a-zA-Z_]\\w*|[^\\s\\0-\\x7F]+)[?!]?|\\$.)`;e.languages.insertBefore(`ruby`,`keyword`,{"regex-literal":[{pattern:RegExp(`%r`+n+`[egimnosux]{0,6}`),greedy:!0,inside:{interpolation:t,regex:/[\s\S]+/}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:t,regex:/[\s\S]+/}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:[{pattern:RegExp(`(^|[^:]):`+r),lookbehind:!0,greedy:!0},{pattern:RegExp(`([\\r\\n{(,][ \\t]*)`+r+`(?=:(?!:))`),lookbehind:!0,greedy:!0}],"method-definition":{pattern:/(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,lookbehind:!0,inside:{function:/\b\w+$/,keyword:/^self\b/,"class-name":/^\w+/,punctuation:/\./}}}),e.languages.insertBefore(`ruby`,`string`,{"string-literal":[{pattern:RegExp(`%[qQiIwWs]?`+n),greedy:!0,inside:{interpolation:t,string:/[\s\S]+/}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:t,string:/[\s\S]+/}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:`heredoc-string`,greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?/}},interpolation:t,string:/[\s\S]+/}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:`heredoc-string`,greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?'|'$/}},string:/[\s\S]+/}}],"command-literal":[{pattern:RegExp(`%x`+n),greedy:!0,inside:{interpolation:t,command:{pattern:/[\s\S]+/,alias:`string`}}},{pattern:/`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,greedy:!0,inside:{interpolation:t,command:{pattern:/[\s\S]+/,alias:`string`}}}]}),delete e.languages.ruby.string,e.languages.insertBefore(`ruby`,`number`,{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,constant:/\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/}),e.languages.rb=e.languages.ruby})(e)}Le.displayName=`crystal`,Le.aliases=[];function Le(e){e.register(V),(function(e){e.languages.crystal=e.languages.extend(`ruby`,{keyword:[/\b(?:__DIR__|__END_LINE__|__FILE__|__LINE__|abstract|alias|annotation|as|asm|begin|break|case|class|def|do|else|elsif|end|ensure|enum|extend|for|fun|if|ifdef|include|instance_sizeof|lib|macro|module|next|of|out|pointerof|private|protected|ptr|require|rescue|return|select|self|sizeof|struct|super|then|type|typeof|undef|uninitialized|union|unless|until|when|while|with|yield)\b/,{pattern:/(\.\s*)(?:is_a|responds_to)\?/,lookbehind:!0}],number:/\b(?:0b[01_]*[01]|0o[0-7_]*[0-7]|0x[\da-fA-F_]*[\da-fA-F]|(?:\d(?:[\d_]*\d)?)(?:\.[\d_]*\d)?(?:[eE][+-]?[\d_]*\d)?)(?:_(?:[uif](?:8|16|32|64))?)?\b/,operator:[/->/,e.languages.ruby.operator],punctuation:/[(){}[\].,;\\]/}),e.languages.insertBefore(`crystal`,`string-literal`,{attribute:{pattern:/@\[.*?\]/,inside:{delimiter:{pattern:/^@\[|\]$/,alias:`punctuation`},attribute:{pattern:/^(\s*)\w+/,lookbehind:!0,alias:`class-name`},args:{pattern:/\S(?:[\s\S]*\S)?/,inside:e.languages.crystal}}},expansion:{pattern:/\{(?:\{.*?\}|%.*?%)\}/,inside:{content:{pattern:/^(\{.)[\s\S]+(?=.\}$)/,lookbehind:!0,inside:e.languages.crystal},delimiter:{pattern:/^\{[\{%]|[\}%]\}$/,alias:`operator`}}},char:{pattern:/'(?:[^\\\r\n]{1,2}|\\(?:.|u(?:[A-Fa-f0-9]{1,4}|\{[A-Fa-f0-9]{1,6}\})))'/,greedy:!0}})})(e)}Re.displayName=`cshtml`,Re.aliases=[`razor`];function Re(e){e.register(z),e.register(B),(function(e){var t=`\\/(?![/*])|\\/\\/.*[\\r\\n]|\\/\\*[^*]*(?:\\*(?!\\/)[^*]*)*\\*\\/`,n=`@(?!")|"(?:[^\\r\\n\\\\"]|\\\\.)*"|@"(?:[^\\\\"]|""|\\\\[\\s\\S])*"(?!")|'(?:(?:[^\\r\\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'|(?=[^\\\\](?!')))`;function r(e,r){for(var i=0;i/g,function(){return`(?:`+e+`)`});return e.replace(//g,`[^\\s\\S]`).replace(//g,`(?:`+n+`)`).replace(//g,`(?:`+t+`)`)}var i=r(`\\((?:[^()'"@/]|||)*\\)`,2),a=r(`\\[(?:[^\\[\\]'"@/]|||)*\\]`,1),o=r(`\\{(?:[^{}'"@/]|||)*\\}`,2),s=r(`<(?:[^<>'"@/]||)*>`,1),c=`@(?:await\\b\\s*)?(?:(?!await\\b)\\w+\\b|`+i+`)(?:[?!]?\\.\\w+\\b|(?:`+s+`)?`+i+`|`+a+`)*(?![?!\\.(\\[]|<(?!\\/))`,l=`(?:"[^"@]*"|'[^'@]*'|[^\\s'"@>=]+(?=[\\s>])|["'][^"'@]*(?:(?:`+(`@(?![\\w()])|`+c)+`)[^"'@]*)+["'])`,u=`(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*|(?=[\\s/>])))+)?`.replace(//,l),d=`(?!\\d)[^\\s>\\/=$<%]+`+u+`\\s*\\/?>`,f=`\\B@?(?:<([a-zA-Z][\\w:]*)`+u+`\\s*>(?:`+(`[^<]|<\\/?(?!\\1\\b)`+d+`|`+r(`<\\1`+u+`\\s*>(?:`+(`[^<]|<\\/?(?!\\1\\b)`+d+`|`)+`)*<\\/\\1\\s*>`,2))+`)*<\\/\\1\\s*>|<`+d+`)`;e.languages.cshtml=e.languages.extend(`markup`,{});var p={pattern:/\S[\s\S]*/,alias:`language-csharp`,inside:e.languages.insertBefore(`csharp`,`string`,{html:{pattern:RegExp(f),greedy:!0,inside:e.languages.cshtml}},{csharp:e.languages.extend(`csharp`,{})})},m={pattern:RegExp(`(^|[^@])`+c),lookbehind:!0,greedy:!0,alias:`variable`,inside:{keyword:/^@/,csharp:p}};e.languages.cshtml.tag.pattern=RegExp(`<\\/?`+d),e.languages.cshtml.tag.inside[`attr-value`].pattern=RegExp(`=\\s*`+l),e.languages.insertBefore(`inside`,`punctuation`,{value:m},e.languages.cshtml.tag.inside[`attr-value`]),e.languages.insertBefore(`cshtml`,`prolog`,{"razor-comment":{pattern:/@\*[\s\S]*?\*@/,greedy:!0,alias:`comment`},block:{pattern:RegExp(`(^|[^@])@(?:`+[o,`(?:code|functions)\\s*`+o,`(?:for|foreach|lock|switch|using|while)\\s*`+i+`\\s*`+o,`do\\s*`+o+`\\s*while\\s*`+i+`(?:\\s*;)?`,`try\\s*`+o+`\\s*catch\\s*`+i+`\\s*`+o+`\\s*finally\\s*`+o,`if\\s*`+i+`\\s*`+o+`(?:\\s*else(?:\\s+if\\s*`+i+`)?\\s*`+o+`)*`,`helper\\s+\\w+\\s*`+i+`\\s*`+o].join(`|`)+`)`),lookbehind:!0,greedy:!0,inside:{keyword:/^@\w*/,csharp:p}},directive:{pattern:/^([ \t]*)@(?:addTagHelper|attribute|implements|inherits|inject|layout|model|namespace|page|preservewhitespace|removeTagHelper|section|tagHelperPrefix|using)(?=\s).*/m,lookbehind:!0,greedy:!0,inside:{keyword:/^@\w+/,csharp:p}},value:m,"delegate-operator":{pattern:/(^|[^@])@(?=<)/,lookbehind:!0,alias:`operator`}}),e.languages.razor=e.languages.cshtml})(e)}ze.displayName=`csp`,ze.aliases=[];function ze(e){(function(e){function t(e){return RegExp(`([ \\t])(?:`+e+`)(?=[\\s;]|$)`,`i`)}e.languages.csp={directive:{pattern:/(^|[\s;])(?:base-uri|block-all-mixed-content|(?:child|connect|default|font|frame|img|manifest|media|object|prefetch|script|style|worker)-src|disown-opener|form-action|frame-(?:ancestors|options)|input-protection(?:-(?:clip|selectors))?|navigate-to|plugin-types|policy-uri|referrer|reflected-xss|report-(?:to|uri)|require-sri-for|sandbox|(?:script|style)-src-(?:attr|elem)|upgrade-insecure-requests)(?=[\s;]|$)/i,lookbehind:!0,alias:`property`},scheme:{pattern:t(`[a-z][a-z0-9.+-]*:`),lookbehind:!0},none:{pattern:t(`'none'`),lookbehind:!0,alias:`keyword`},nonce:{pattern:t(`'nonce-[-+/\\w=]+'`),lookbehind:!0,alias:`number`},hash:{pattern:t(`'sha(?:256|384|512)-[-+/\\w=]+'`),lookbehind:!0,alias:`number`},host:{pattern:t(`[a-z][a-z0-9.+-]*:\\/\\/[^\\s;,']*|\\*[^\\s;,']*|[a-z0-9-]+(?:\\.[a-z0-9-]+)+(?::[\\d*]+)?(?:\\/[^\\s;,']*)?`),lookbehind:!0,alias:`url`,inside:{important:/\*/}},keyword:[{pattern:t(`'unsafe-[a-z-]+'`),lookbehind:!0,alias:`unsafe`},{pattern:t(`'[a-z-]+'`),lookbehind:!0,alias:`safe`}],punctuation:/;/}})(e)}H.displayName=`css`,H.aliases=[];function H(e){(function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp(`@[\\w-](?:[^;{\\s"']|\\s+(?!\\s)|`+t.source+`)*?(?:;|(?=\\s*\\{))`),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:`selector`},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp(`\\burl\\((?:`+t.source+`|(?:[^\\\\\\r\\n()"']|\\\\[\\s\\S])*)\\)`,`i`),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp(`^`+t.source+`$`),alias:`url`}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+t.source+`)*(?=\\s*\\{)`),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined(`style`,`css`),n.tag.addAttribute(`style`,`css`))})(e)}Be.displayName=`css-extras`,Be.aliases=[];function Be(e){e.register(H),(function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,n;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:n={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp(`\\[(?:[^[\\]"']|`+t.source+`)*\\]`),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:`keyword`},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[t,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside[`selector-function-argument`].inside=n,e.languages.insertBefore(`css`,`property`,{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},i={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore(`css`,`function`,{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:`color`},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:i,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:i})})(e)}Ve.displayName=`csv`,Ve.aliases=[];function Ve(e){e.languages.csv={value:/[^\r\n,"]+|"(?:[^"]|"")*"(?!")/,punctuation:/,/}}He.displayName=`cue`,He.aliases=[];function He(e){(function(e){var t=`(?:`+`"""(?:[^\\\\"]|"(?!""\\2)|)*"""|'''(?:[^\\\\']|'(?!''\\2)|)*'''|"(?:[^\\\\\\r\\n"]|"(?!\\2)|)*"|'(?:[^\\\\\\r\\n']|'(?!\\2)|)*'`.replace(//g,`\\\\(?:(?!\\2)|\\2(?:[^()\\r\\n]|\\([^()]*\\)))`)+`)`;e.languages.cue={comment:{pattern:/\/\/.*/,greedy:!0},"string-literal":{pattern:RegExp(`(^|[^#"'\\\\])(#*)`+t+`(?!["'])\\2`),lookbehind:!0,greedy:!0,inside:{escape:{pattern:/(?=[\s\S]*["'](#*)$)\\\1(?:U[a-fA-F0-9]{1,8}|u[a-fA-F0-9]{1,4}|x[a-fA-F0-9]{1,2}|\d{2,3}|[^(])/,greedy:!0,alias:`string`},interpolation:{pattern:/(?=[\s\S]*["'](#*)$)\\\1\([^()]*\)/,greedy:!0,inside:{punctuation:/^\\#*\(|\)$/,expression:{pattern:/[\s\S]+/,inside:null}}},string:/[\s\S]+/}},keyword:{pattern:/(^|[^\w$])(?:for|if|import|in|let|null|package)(?![\w$])/,lookbehind:!0},boolean:{pattern:/(^|[^\w$])(?:false|true)(?![\w$])/,lookbehind:!0},builtin:{pattern:/(^|[^\w$])(?:bool|bytes|float|float(?:32|64)|u?int(?:8|16|32|64|128)?|number|rune|string)(?![\w$])/,lookbehind:!0},attribute:{pattern:/@[\w$]+(?=\s*\()/,alias:`function`},function:{pattern:/(^|[^\w$])[a-z_$][\w$]*(?=\s*\()/i,lookbehind:!0},number:{pattern:/(^|[^\w$.])(?:0b[01]+(?:_[01]+)*|0o[0-7]+(?:_[0-7]+)*|0[xX][0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*|(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[eE][+-]?\d+(?:_\d+)*)?(?:[KMGTP]i?)?)(?![\w$])/,lookbehind:!0},operator:/\.{3}|_\|_|&&?|\|\|?|[=!]~|[<>=!]=?|[+\-*/?]/,punctuation:/[()[\]{},.:]/},e.languages.cue[`string-literal`].inside.interpolation.inside.expression.inside=e.languages.cue})(e)}Ue.displayName=`cypher`,Ue.aliases=[];function Ue(e){e.languages.cypher={comment:/\/\/.*/,string:{pattern:/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/,greedy:!0},"class-name":{pattern:/(:\s*)(?:\w+|`(?:[^`\\\r\n])*`)(?=\s*[{):])/,lookbehind:!0,greedy:!0},relationship:{pattern:/(-\[\s*(?:\w+\s*|`(?:[^`\\\r\n])*`\s*)?:\s*|\|\s*:\s*)(?:\w+|`(?:[^`\\\r\n])*`)/,lookbehind:!0,greedy:!0,alias:`property`},identifier:{pattern:/`(?:[^`\\\r\n])*`/,greedy:!0},variable:/\$\w+/,keyword:/\b(?:ADD|ALL|AND|AS|ASC|ASCENDING|ASSERT|BY|CALL|CASE|COMMIT|CONSTRAINT|CONTAINS|CREATE|CSV|DELETE|DESC|DESCENDING|DETACH|DISTINCT|DO|DROP|ELSE|END|ENDS|EXISTS|FOR|FOREACH|IN|INDEX|IS|JOIN|KEY|LIMIT|LOAD|MANDATORY|MATCH|MERGE|NODE|NOT|OF|ON|OPTIONAL|OR|ORDER(?=\s+BY)|PERIODIC|REMOVE|REQUIRE|RETURN|SCALAR|SCAN|SET|SKIP|START|STARTS|THEN|UNION|UNIQUE|UNWIND|USING|WHEN|WHERE|WITH|XOR|YIELD)\b/i,function:/\b\w+\b(?=\s*\()/,boolean:/\b(?:false|null|true)\b/i,number:/\b(?:0x[\da-fA-F]+|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)\b/,operator:/:|<--?|--?>?|<>|=~?|[<>]=?|[+*/%^|]|\.\.\.?/,punctuation:/[()[\]{},;.]/}}We.displayName=`d`,We.aliases=[];function We(e){e.register(S),e.languages.d=e.languages.extend(`clike`,{comment:[{pattern:/^\s*#!.+/,greedy:!0},{pattern:RegExp(`(^|[^\\\\])(?:`+[`\\/\\+(?:\\/\\+(?:[^+]|\\+(?!\\/))*\\+\\/|(?!\\/\\+)[\\s\\S])*?\\+\\/`,`\\/\\/.*`,`\\/\\*[\\s\\S]*?\\*\\/`].join(`|`)+`)`),lookbehind:!0,greedy:!0}],string:[{pattern:RegExp([`\\b[rx]"(?:\\\\[\\s\\S]|[^\\\\"])*"[cwd]?`,`\\bq"(?:\\[[\\s\\S]*?\\]|\\([\\s\\S]*?\\)|<[\\s\\S]*?>|\\{[\\s\\S]*?\\})"`,`\\bq"((?!\\d)\\w+)$[\\s\\S]*?^\\1"`,`\\bq"(.)[\\s\\S]*?\\2"`,'(["`])(?:\\\\[\\s\\S]|(?!\\3)[^\\\\])*\\3[cwd]?'].join(`|`),`m`),greedy:!0},{pattern:/\bq\{(?:\{[^{}]*\}|[^{}])*\}/,greedy:!0,alias:`token-string`}],keyword:/\$|\b(?:__(?:(?:DATE|EOF|FILE|FUNCTION|LINE|MODULE|PRETTY_FUNCTION|TIMESTAMP|TIME|VENDOR|VERSION)__|gshared|parameters|traits|vector)|abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|dstring|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|inout|int|interface|invariant|ireal|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|ptrdiff_t|public|pure|real|ref|return|scope|shared|short|size_t|static|string|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|wstring)\b/,number:[/\b0x\.?[a-f\d_]+(?:(?!\.\.)\.[a-f\d_]*)?(?:p[+-]?[a-f\d_]+)?[ulfi]{0,4}/i,{pattern:/((?:\.\.)?)(?:\b0b\.?|\b|\.)\d[\d_]*(?:(?!\.\.)\.[\d_]*)?(?:e[+-]?\d[\d_]*)?[ulfi]{0,4}/i,lookbehind:!0}],operator:/\|[|=]?|&[&=]?|\+[+=]?|-[-=]?|\.?\.\.|=[>=]?|!(?:i[ns]\b|<>?=?|>=?|=)?|\bi[ns]\b|(?:<[<>]?|>>?>?|\^\^|[*\/%^~])=?/}),e.languages.insertBefore(`d`,`string`,{char:/'(?:\\(?:\W|\w+)|[^\\])'/}),e.languages.insertBefore(`d`,`keyword`,{property:/\B@\w*/}),e.languages.insertBefore(`d`,`function`,{register:{pattern:/\b(?:[ABCD][LHX]|E?(?:BP|DI|SI|SP)|[BS]PL|[ECSDGF]S|CR[0234]|[DS]IL|DR[012367]|E[ABCD]X|X?MM[0-7]|R(?:1[0-5]|[89])[BWD]?|R[ABCD]X|R[BS]P|R[DS]I|TR[3-7]|XMM(?:1[0-5]|[89])|YMM(?:1[0-5]|\d))\b|\bST(?:\([0-7]\)|\b)/,alias:`variable`}})}Ge.displayName=`dart`,Ge.aliases=[];function Ge(e){e.register(S),(function(e){var t=[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extends|extension|external|factory|final|finally|for|get|hide|if|implements|import|in|interface|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\b/],n=`(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*`,r={pattern:RegExp(n+`[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b`),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}}}};e.languages.dart=e.languages.extend(`clike`,{"class-name":[r,{pattern:RegExp(n+`[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])`),lookbehind:!0,inside:r.inside}],keyword:t,operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),e.languages.insertBefore(`dart`,`string`,{"string-literal":{pattern:/r?(?:("""|''')[\s\S]*?\1|(["'])(?:\\.|(?!\2)[^\\\r\n])*\2(?!\2))/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,lookbehind:!0,inside:{punctuation:/^\$\{?|\}$/,expression:{pattern:/[\s\S]+/,inside:e.languages.dart}}},string:/[\s\S]+/}},string:void 0}),e.languages.insertBefore(`dart`,`class-name`,{metadata:{pattern:/@\w+/,alias:`function`}}),e.languages.insertBefore(`dart`,`class-name`,{generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":r,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})})(e)}Ke.displayName=`dataweave`,Ke.aliases=[];function Ke(e){(function(e){e.languages.dataweave={url:/\b[A-Za-z]+:\/\/[\w/:.?=&-]+|\burn:[\w:.?=&-]+/,property:{pattern:/(?:\b\w+#)?(?:"(?:\\.|[^\\"\r\n])*"|\b\w+)(?=\s*[:@])/,greedy:!0},string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},"mime-type":/\b(?:application|audio|image|multipart|text|video)\/[\w+-]+/,date:{pattern:/\|[\w:+-]+\|/,greedy:!0},comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],regex:{pattern:/\/(?:[^\\\/\r\n]|\\[^\r\n])+\//,greedy:!0},keyword:/\b(?:and|as|at|case|do|else|fun|if|input|is|match|not|ns|null|or|output|type|unless|update|using|var)\b/,function:/\b[A-Z_]\w*(?=\s*\()/i,number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\];(),.:@]/,operator:/<<|>>|->|[<>~=]=?|!=|--?-?|\+\+?|!|\?/,boolean:/\b(?:false|true)\b/}})(e)}qe.displayName=`dax`,qe.aliases=[];function qe(e){e.languages.dax={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/).*)/,lookbehind:!0},"data-field":{pattern:/'(?:[^']|'')*'(?!')(?:\[[ \w\xA0-\uFFFF]+\])?|\w+\[[ \w\xA0-\uFFFF]+\]/,alias:`symbol`},measure:{pattern:/\[[ \w\xA0-\uFFFF]+\]/,alias:`constant`},string:{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},function:/\b(?:ABS|ACOS|ACOSH|ACOT|ACOTH|ADDCOLUMNS|ADDMISSINGITEMS|ALL|ALLCROSSFILTERED|ALLEXCEPT|ALLNOBLANKROW|ALLSELECTED|AND|APPROXIMATEDISTINCTCOUNT|ASIN|ASINH|ATAN|ATANH|AVERAGE|AVERAGEA|AVERAGEX|BETA\.DIST|BETA\.INV|BLANK|CALCULATE|CALCULATETABLE|CALENDAR|CALENDARAUTO|CEILING|CHISQ\.DIST|CHISQ\.DIST\.RT|CHISQ\.INV|CHISQ\.INV\.RT|CLOSINGBALANCEMONTH|CLOSINGBALANCEQUARTER|CLOSINGBALANCEYEAR|COALESCE|COMBIN|COMBINA|COMBINEVALUES|CONCATENATE|CONCATENATEX|CONFIDENCE\.NORM|CONFIDENCE\.T|CONTAINS|CONTAINSROW|CONTAINSSTRING|CONTAINSSTRINGEXACT|CONVERT|COS|COSH|COT|COTH|COUNT|COUNTA|COUNTAX|COUNTBLANK|COUNTROWS|COUNTX|CROSSFILTER|CROSSJOIN|CURRENCY|CURRENTGROUP|CUSTOMDATA|DATATABLE|DATE|DATEADD|DATEDIFF|DATESBETWEEN|DATESINPERIOD|DATESMTD|DATESQTD|DATESYTD|DATEVALUE|DAY|DEGREES|DETAILROWS|DISTINCT|DISTINCTCOUNT|DISTINCTCOUNTNOBLANK|DIVIDE|EARLIER|EARLIEST|EDATE|ENDOFMONTH|ENDOFQUARTER|ENDOFYEAR|EOMONTH|ERROR|EVEN|EXACT|EXCEPT|EXP|EXPON\.DIST|FACT|FALSE|FILTER|FILTERS|FIND|FIRSTDATE|FIRSTNONBLANK|FIRSTNONBLANKVALUE|FIXED|FLOOR|FORMAT|GCD|GENERATE|GENERATEALL|GENERATESERIES|GEOMEAN|GEOMEANX|GROUPBY|HASONEFILTER|HASONEVALUE|HOUR|IF|IF\.EAGER|IFERROR|IGNORE|INT|INTERSECT|ISBLANK|ISCROSSFILTERED|ISEMPTY|ISERROR|ISEVEN|ISFILTERED|ISINSCOPE|ISLOGICAL|ISNONTEXT|ISNUMBER|ISO\.CEILING|ISODD|ISONORAFTER|ISSELECTEDMEASURE|ISSUBTOTAL|ISTEXT|KEEPFILTERS|KEYWORDMATCH|LASTDATE|LASTNONBLANK|LASTNONBLANKVALUE|LCM|LEFT|LEN|LN|LOG|LOG10|LOOKUPVALUE|LOWER|MAX|MAXA|MAXX|MEDIAN|MEDIANX|MID|MIN|MINA|MINUTE|MINX|MOD|MONTH|MROUND|NATURALINNERJOIN|NATURALLEFTOUTERJOIN|NEXTDAY|NEXTMONTH|NEXTQUARTER|NEXTYEAR|NONVISUAL|NORM\.DIST|NORM\.INV|NORM\.S\.DIST|NORM\.S\.INV|NOT|NOW|ODD|OPENINGBALANCEMONTH|OPENINGBALANCEQUARTER|OPENINGBALANCEYEAR|OR|PARALLELPERIOD|PATH|PATHCONTAINS|PATHITEM|PATHITEMREVERSE|PATHLENGTH|PERCENTILE\.EXC|PERCENTILE\.INC|PERCENTILEX\.EXC|PERCENTILEX\.INC|PERMUT|PI|POISSON\.DIST|POWER|PREVIOUSDAY|PREVIOUSMONTH|PREVIOUSQUARTER|PREVIOUSYEAR|PRODUCT|PRODUCTX|QUARTER|QUOTIENT|RADIANS|RAND|RANDBETWEEN|RANK\.EQ|RANKX|RELATED|RELATEDTABLE|REMOVEFILTERS|REPLACE|REPT|RIGHT|ROLLUP|ROLLUPADDISSUBTOTAL|ROLLUPGROUP|ROLLUPISSUBTOTAL|ROUND|ROUNDDOWN|ROUNDUP|ROW|SAMEPERIODLASTYEAR|SAMPLE|SEARCH|SECOND|SELECTCOLUMNS|SELECTEDMEASURE|SELECTEDMEASUREFORMATSTRING|SELECTEDMEASURENAME|SELECTEDVALUE|SIGN|SIN|SINH|SQRT|SQRTPI|STARTOFMONTH|STARTOFQUARTER|STARTOFYEAR|STDEV\.P|STDEV\.S|STDEVX\.P|STDEVX\.S|SUBSTITUTE|SUBSTITUTEWITHINDEX|SUM|SUMMARIZE|SUMMARIZECOLUMNS|SUMX|SWITCH|T\.DIST|T\.DIST\.2T|T\.DIST\.RT|T\.INV|T\.INV\.2T|TAN|TANH|TIME|TIMEVALUE|TODAY|TOPN|TOPNPERLEVEL|TOPNSKIP|TOTALMTD|TOTALQTD|TOTALYTD|TREATAS|TRIM|TRUE|TRUNC|UNICHAR|UNICODE|UNION|UPPER|USERELATIONSHIP|USERNAME|USEROBJECTID|USERPRINCIPALNAME|UTCNOW|UTCTODAY|VALUE|VALUES|VAR\.P|VAR\.S|VARX\.P|VARX\.S|WEEKDAY|WEEKNUM|XIRR|XNPV|YEAR|YEARFRAC)(?=\s*\()/i,keyword:/\b(?:DEFINE|EVALUATE|MEASURE|ORDER\s+BY|RETURN|VAR|START\s+AT|ASC|DESC)\b/i,boolean:{pattern:/\b(?:FALSE|NULL|TRUE)\b/i,alias:`constant`},number:/\b\d+(?:\.\d*)?|\B\.\d+\b/,operator:/:=|[-+*\/=^]|&&?|\|\||<(?:=>?|<|>)?|>[>=]?|\b(?:IN|NOT)\b/i,punctuation:/[;\[\](){}`,.]/}}Je.displayName=`dhall`,Je.aliases=[];function Je(e){e.languages.dhall={comment:/--.*|\{-(?:[^-{]|-(?!\})|\{(?!-)|\{-(?:[^-{]|-(?!\})|\{(?!-))*-\})*-\}/,string:{pattern:/"(?:[^"\\]|\\.)*"|''(?:[^']|'(?!')|'''|''\$\{)*''(?!'|\$)/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^{}]*\}/,inside:{expression:{pattern:/(^\$\{)[\s\S]+(?=\}$)/,lookbehind:!0,alias:`language-dhall`,inside:null},punctuation:/\$\{|\}/}}}},label:{pattern:/`[^`]*`/,greedy:!0},url:{pattern:/\bhttps?:\/\/[\w.:%!$&'*+;=@~-]+(?:\/[\w.:%!$&'*+;=@~-]*)*(?:\?[/?\w.:%!$&'*+;=@~-]*)?/,greedy:!0},env:{pattern:/\benv:(?:(?!\d)\w+|"(?:[^"\\=]|\\.)*")/,greedy:!0,inside:{function:/^env/,operator:/^:/,variable:/[\s\S]+/}},hash:{pattern:/\bsha256:[\da-fA-F]{64}\b/,inside:{function:/sha256/,operator:/:/,number:/[\da-fA-F]{64}/}},keyword:/\b(?:as|assert|else|forall|if|in|let|merge|missing|then|toMap|using|with)\b|\u2200/,builtin:/\b(?:None|Some)\b/,boolean:/\b(?:False|True)\b/,number:/\bNaN\b|-?\bInfinity\b|[+-]?\b(?:0x[\da-fA-F]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/,operator:/\/\\|\/\/\\\\|&&|\|\||===|[!=]=|\/\/|->|\+\+|::|[+*#@=:?<>|\\\u2227\u2a53\u2261\u2afd\u03bb\u2192]/,punctuation:/\.\.|[{}\[\](),./]/,"class-name":/\b[A-Z]\w*\b/},e.languages.dhall.string.inside.interpolation.inside.expression.inside=e.languages.dhall}Ye.displayName=`diff`,Ye.aliases=[];function Ye(e){(function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":`-`,"deleted-arrow":`<`,"inserted-sign":`+`,"inserted-arrow":`>`,unchanged:` `,diff:`!`};Object.keys(t).forEach(function(n){var r=t[n],i=[];/^\w+$/.test(n)||i.push(/\w+/.exec(n)[0]),n===`diff`&&i.push(`bold`),e.languages.diff[n]={pattern:RegExp(`^(?:[`+r+`].*(?:\r +import{St as e,Tt as t,U as n,_t as r,at as i,bt as a,ht as o,it as s,lt as c,n as l,nt as u,ot as d,rt as f,st as p,t as m,tt as h,ut as g,vt as _,yt as v}from"./index-BkDx9KsG.js";var y=v(`text-wrap`,[[`path`,{d:`m16 16-3 3 3 3`,key:`117b85`}],[`path`,{d:`M3 12h14.5a1 1 0 0 1 0 7H13`,key:`18xa6z`}],[`path`,{d:`M3 19h6`,key:`1ygdsz`}],[`path`,{d:`M3 5h18`,key:`1u36vt`}]]);b.displayName=`abap`,b.aliases=[];function b(e){e.languages.abap={comment:/^\*.*/m,string:/(`|')(?:\\.|(?!\1)[^\\\r\n])*\1/,"string-template":{pattern:/([|}])(?:\\.|[^\\|{\r\n])*(?=[|{])/,lookbehind:!0,alias:`string`},"eol-comment":{pattern:/(^|\s)".*/m,lookbehind:!0,alias:`comment`},keyword:{pattern:/(\s|\.|^)(?:\*-INPUT|\?TO|ABAP-SOURCE|ABBREVIATED|ABS|ABSTRACT|ACCEPT|ACCEPTING|ACCESSPOLICY|ACCORDING|ACOS|ACTIVATION|ACTUAL|ADD|ADD-CORRESPONDING|ADJACENT|AFTER|ALIAS|ALIASES|ALIGN|ALL|ALLOCATE|ALPHA|ANALYSIS|ANALYZER|AND|ANY|APPEND|APPENDAGE|APPENDING|APPLICATION|ARCHIVE|AREA|ARITHMETIC|AS|ASCENDING|ASIN|ASPECT|ASSERT|ASSIGN|ASSIGNED|ASSIGNING|ASSOCIATION|ASYNCHRONOUS|AT|ATAN|ATTRIBUTES|AUTHORITY|AUTHORITY-CHECK|AVG|BACK|BACKGROUND|BACKUP|BACKWARD|BADI|BASE|BEFORE|BEGIN|BETWEEN|BIG|BINARY|BINDING|BIT|BIT-AND|BIT-NOT|BIT-OR|BIT-XOR|BLACK|BLANK|BLANKS|BLOB|BLOCK|BLOCKS|BLUE|BOUND|BOUNDARIES|BOUNDS|BOXED|BREAK-POINT|BT|BUFFER|BY|BYPASSING|BYTE|BYTE-CA|BYTE-CN|BYTE-CO|BYTE-CS|BYTE-NA|BYTE-NS|BYTE-ORDER|C|CA|CALL|CALLING|CASE|CAST|CASTING|CATCH|CEIL|CENTER|CENTERED|CHAIN|CHAIN-INPUT|CHAIN-REQUEST|CHANGE|CHANGING|CHANNELS|CHAR-TO-HEX|CHARACTER|CHARLEN|CHECK|CHECKBOX|CIRCULAR|CI_|CLASS|CLASS-CODING|CLASS-DATA|CLASS-EVENTS|CLASS-METHODS|CLASS-POOL|CLEANUP|CLEAR|CLIENT|CLOB|CLOCK|CLOSE|CN|CNT|CO|COALESCE|CODE|CODING|COLLECT|COLOR|COLUMN|COLUMNS|COL_BACKGROUND|COL_GROUP|COL_HEADING|COL_KEY|COL_NEGATIVE|COL_NORMAL|COL_POSITIVE|COL_TOTAL|COMMENT|COMMENTS|COMMIT|COMMON|COMMUNICATION|COMPARING|COMPONENT|COMPONENTS|COMPRESSION|COMPUTE|CONCAT|CONCATENATE|COND|CONDENSE|CONDITION|CONNECT|CONNECTION|CONSTANTS|CONTEXT|CONTEXTS|CONTINUE|CONTROL|CONTROLS|CONV|CONVERSION|CONVERT|COPIES|COPY|CORRESPONDING|COS|COSH|COUNT|COUNTRY|COVER|CP|CPI|CREATE|CREATING|CRITICAL|CS|CURRENCY|CURRENCY_CONVERSION|CURRENT|CURSOR|CURSOR-SELECTION|CUSTOMER|CUSTOMER-FUNCTION|DANGEROUS|DATA|DATABASE|DATAINFO|DATASET|DATE|DAYLIGHT|DBMAXLEN|DD\/MM\/YY|DD\/MM\/YYYY|DDMMYY|DEALLOCATE|DECIMALS|DECIMAL_SHIFT|DECLARATIONS|DEEP|DEFAULT|DEFERRED|DEFINE|DEFINING|DEFINITION|DELETE|DELETING|DEMAND|DEPARTMENT|DESCENDING|DESCRIBE|DESTINATION|DETAIL|DIALOG|DIRECTORY|DISCONNECT|DISPLAY|DISPLAY-MODE|DISTANCE|DISTINCT|DIV|DIVIDE|DIVIDE-CORRESPONDING|DIVISION|DO|DUMMY|DUPLICATE|DUPLICATES|DURATION|DURING|DYNAMIC|DYNPRO|E|EACH|EDIT|EDITOR-CALL|ELSE|ELSEIF|EMPTY|ENABLED|ENABLING|ENCODING|END|END-ENHANCEMENT-SECTION|END-LINES|END-OF-DEFINITION|END-OF-FILE|END-OF-PAGE|END-OF-SELECTION|ENDAT|ENDCASE|ENDCATCH|ENDCHAIN|ENDCLASS|ENDDO|ENDENHANCEMENT|ENDEXEC|ENDFOR|ENDFORM|ENDFUNCTION|ENDIAN|ENDIF|ENDING|ENDINTERFACE|ENDLOOP|ENDMETHOD|ENDMODULE|ENDON|ENDPROVIDE|ENDSELECT|ENDTRY|ENDWHILE|ENGINEERING|ENHANCEMENT|ENHANCEMENT-POINT|ENHANCEMENT-SECTION|ENHANCEMENTS|ENTRIES|ENTRY|ENVIRONMENT|EQ|EQUAL|EQUIV|ERRORMESSAGE|ERRORS|ESCAPE|ESCAPING|EVENT|EVENTS|EXACT|EXCEPT|EXCEPTION|EXCEPTION-TABLE|EXCEPTIONS|EXCLUDE|EXCLUDING|EXEC|EXECUTE|EXISTS|EXIT|EXIT-COMMAND|EXP|EXPAND|EXPANDING|EXPIRATION|EXPLICIT|EXPONENT|EXPORT|EXPORTING|EXTEND|EXTENDED|EXTENSION|EXTRACT|FAIL|FETCH|FIELD|FIELD-GROUPS|FIELD-SYMBOL|FIELD-SYMBOLS|FIELDS|FILE|FILTER|FILTER-TABLE|FILTERS|FINAL|FIND|FIRST|FIRST-LINE|FIXED-POINT|FKEQ|FKGE|FLOOR|FLUSH|FONT|FOR|FORM|FORMAT|FORWARD|FOUND|FRAC|FRAME|FRAMES|FREE|FRIENDS|FROM|FUNCTION|FUNCTION-POOL|FUNCTIONALITY|FURTHER|GAPS|GE|GENERATE|GET|GIVING|GKEQ|GKGE|GLOBAL|GRANT|GREATER|GREEN|GROUP|GROUPS|GT|HANDLE|HANDLER|HARMLESS|HASHED|HAVING|HDB|HEAD-LINES|HEADER|HEADERS|HEADING|HELP-ID|HELP-REQUEST|HIDE|HIGH|HINT|HOLD|HOTSPOT|I|ICON|ID|IDENTIFICATION|IDENTIFIER|IDS|IF|IGNORE|IGNORING|IMMEDIATELY|IMPLEMENTATION|IMPLEMENTATIONS|IMPLEMENTED|IMPLICIT|IMPORT|IMPORTING|IN|INACTIVE|INCL|INCLUDE|INCLUDES|INCLUDING|INCREMENT|INDEX|INDEX-LINE|INFOTYPES|INHERITING|INIT|INITIAL|INITIALIZATION|INNER|INOUT|INPUT|INSERT|INSTANCES|INTENSIFIED|INTERFACE|INTERFACE-POOL|INTERFACES|INTERNAL|INTERVALS|INTO|INVERSE|INVERTED-DATE|IS|ISO|ITERATOR|ITNO|JOB|JOIN|KEEP|KEEPING|KERNEL|KEY|KEYS|KEYWORDS|KIND|LANGUAGE|LAST|LATE|LAYOUT|LE|LEADING|LEAVE|LEFT|LEFT-JUSTIFIED|LEFTPLUS|LEFTSPACE|LEGACY|LENGTH|LESS|LET|LEVEL|LEVELS|LIKE|LINE|LINE-COUNT|LINE-SELECTION|LINE-SIZE|LINEFEED|LINES|LIST|LIST-PROCESSING|LISTBOX|LITTLE|LLANG|LOAD|LOAD-OF-PROGRAM|LOB|LOCAL|LOCALE|LOCATOR|LOG|LOG-POINT|LOG10|LOGFILE|LOGICAL|LONG|LOOP|LOW|LOWER|LPAD|LPI|LT|M|MAIL|MAIN|MAJOR-ID|MAPPING|MARGIN|MARK|MASK|MATCH|MATCHCODE|MAX|MAXIMUM|MEDIUM|MEMBERS|MEMORY|MESH|MESSAGE|MESSAGE-ID|MESSAGES|MESSAGING|METHOD|METHODS|MIN|MINIMUM|MINOR-ID|MM\/DD\/YY|MM\/DD\/YYYY|MMDDYY|MOD|MODE|MODIF|MODIFIER|MODIFY|MODULE|MOVE|MOVE-CORRESPONDING|MULTIPLY|MULTIPLY-CORRESPONDING|NA|NAME|NAMETAB|NATIVE|NB|NE|NESTED|NESTING|NEW|NEW-LINE|NEW-PAGE|NEW-SECTION|NEXT|NO|NO-DISPLAY|NO-EXTENSION|NO-GAP|NO-GAPS|NO-GROUPING|NO-HEADING|NO-SCROLLING|NO-SIGN|NO-TITLE|NO-TOPOFPAGE|NO-ZERO|NODE|NODES|NON-UNICODE|NON-UNIQUE|NOT|NP|NS|NULL|NUMBER|NUMOFCHAR|O|OBJECT|OBJECTS|OBLIGATORY|OCCURRENCE|OCCURRENCES|OCCURS|OF|OFF|OFFSET|OLE|ON|ONLY|OPEN|OPTION|OPTIONAL|OPTIONS|OR|ORDER|OTHER|OTHERS|OUT|OUTER|OUTPUT|OUTPUT-LENGTH|OVERFLOW|OVERLAY|PACK|PACKAGE|PAD|PADDING|PAGE|PAGES|PARAMETER|PARAMETER-TABLE|PARAMETERS|PART|PARTIALLY|PATTERN|PERCENTAGE|PERFORM|PERFORMING|PERSON|PF|PF-STATUS|PINK|PLACES|POOL|POSITION|POS_HIGH|POS_LOW|PRAGMAS|PRECOMPILED|PREFERRED|PRESERVING|PRIMARY|PRINT|PRINT-CONTROL|PRIORITY|PRIVATE|PROCEDURE|PROCESS|PROGRAM|PROPERTY|PROTECTED|PROVIDE|PUBLIC|PUSHBUTTON|PUT|QUEUE-ONLY|QUICKINFO|RADIOBUTTON|RAISE|RAISING|RANGE|RANGES|RAW|READ|READ-ONLY|READER|RECEIVE|RECEIVED|RECEIVER|RECEIVING|RED|REDEFINITION|REDUCE|REDUCED|REF|REFERENCE|REFRESH|REGEX|REJECT|REMOTE|RENAMING|REPLACE|REPLACEMENT|REPLACING|REPORT|REQUEST|REQUESTED|RESERVE|RESET|RESOLUTION|RESPECTING|RESPONSIBLE|RESULT|RESULTS|RESUMABLE|RESUME|RETRY|RETURN|RETURNCODE|RETURNING|RIGHT|RIGHT-JUSTIFIED|RIGHTPLUS|RIGHTSPACE|RISK|RMC_COMMUNICATION_FAILURE|RMC_INVALID_STATUS|RMC_SYSTEM_FAILURE|ROLE|ROLLBACK|ROUND|ROWS|RTTI|RUN|SAP|SAP-SPOOL|SAVING|SCALE_PRESERVING|SCALE_PRESERVING_SCIENTIFIC|SCAN|SCIENTIFIC|SCIENTIFIC_WITH_LEADING_ZERO|SCREEN|SCROLL|SCROLL-BOUNDARY|SCROLLING|SEARCH|SECONDARY|SECONDS|SECTION|SELECT|SELECT-OPTIONS|SELECTION|SELECTION-SCREEN|SELECTION-SET|SELECTION-SETS|SELECTION-TABLE|SELECTIONS|SELECTOR|SEND|SEPARATE|SEPARATED|SET|SHARED|SHIFT|SHORT|SHORTDUMP-ID|SIGN|SIGN_AS_POSTFIX|SIMPLE|SIN|SINGLE|SINH|SIZE|SKIP|SKIPPING|SMART|SOME|SORT|SORTABLE|SORTED|SOURCE|SPACE|SPECIFIED|SPLIT|SPOOL|SPOTS|SQL|SQLSCRIPT|SQRT|STABLE|STAMP|STANDARD|START-OF-SELECTION|STARTING|STATE|STATEMENT|STATEMENTS|STATIC|STATICS|STATUSINFO|STEP-LOOP|STOP|STRLEN|STRUCTURE|STRUCTURES|STYLE|SUBKEY|SUBMATCHES|SUBMIT|SUBROUTINE|SUBSCREEN|SUBSTRING|SUBTRACT|SUBTRACT-CORRESPONDING|SUFFIX|SUM|SUMMARY|SUMMING|SUPPLIED|SUPPLY|SUPPRESS|SWITCH|SWITCHSTATES|SYMBOL|SYNCPOINTS|SYNTAX|SYNTAX-CHECK|SYNTAX-TRACE|SYSTEM-CALL|SYSTEM-EXCEPTIONS|SYSTEM-EXIT|TAB|TABBED|TABLE|TABLES|TABLEVIEW|TABSTRIP|TAN|TANH|TARGET|TASK|TASKS|TEST|TESTING|TEXT|TEXTPOOL|THEN|THROW|TIME|TIMES|TIMESTAMP|TIMEZONE|TITLE|TITLE-LINES|TITLEBAR|TO|TOKENIZATION|TOKENS|TOP-LINES|TOP-OF-PAGE|TRACE-FILE|TRACE-TABLE|TRAILING|TRANSACTION|TRANSFER|TRANSFORMATION|TRANSLATE|TRANSPORTING|TRMAC|TRUNC|TRUNCATE|TRUNCATION|TRY|TYPE|TYPE-POOL|TYPE-POOLS|TYPES|ULINE|UNASSIGN|UNDER|UNICODE|UNION|UNIQUE|UNIT|UNIT_CONVERSION|UNIX|UNPACK|UNTIL|UNWIND|UP|UPDATE|UPPER|USER|USER-COMMAND|USING|UTF-8|VALID|VALUE|VALUE-REQUEST|VALUES|VARY|VARYING|VERIFICATION-MESSAGE|VERSION|VIA|VIEW|VISIBLE|WAIT|WARNING|WHEN|WHENEVER|WHERE|WHILE|WIDTH|WINDOW|WINDOWS|WITH|WITH-HEADING|WITH-TITLE|WITHOUT|WORD|WORK|WRITE|WRITER|X|XML|XOR|XSD|XSTRLEN|YELLOW|YES|YYMMDD|Z|ZERO|ZONE)(?![\w-])/i,lookbehind:!0},number:/\b\d+\b/,operator:{pattern:/(\s)(?:\*\*?|<[=>]?|>=?|\?=|[-+\/=])(?=\s)/,lookbehind:!0},"string-operator":{pattern:/(\s)&&?(?=\s)/,lookbehind:!0,alias:`keyword`},"token-operator":[{pattern:/(\w)(?:->?|=>|[~|{}])(?=\w)/,lookbehind:!0,alias:`punctuation`},{pattern:/[|{}]/,alias:`punctuation`}],punctuation:/[,.:()]/}}x.displayName=`abnf`,x.aliases=[];function x(e){(function(e){var t=`(?:ALPHA|BIT|CHAR|CR|CRLF|CTL|DIGIT|DQUOTE|HEXDIG|HTAB|LF|LWSP|OCTET|SP|VCHAR|WSP)`;e.languages.abnf={comment:/;.*/,string:{pattern:/(?:%[is])?"[^"\n\r]*"/,greedy:!0,inside:{punctuation:/^%[is]/}},range:{pattern:/%(?:b[01]+-[01]+|d\d+-\d+|x[A-F\d]+-[A-F\d]+)/i,alias:`number`},terminal:{pattern:/%(?:b[01]+(?:\.[01]+)*|d\d+(?:\.\d+)*|x[A-F\d]+(?:\.[A-F\d]+)*)/i,alias:`number`},repetition:{pattern:/(^|[^\w-])(?:\d*\*\d*|\d+)/,lookbehind:!0,alias:`operator`},definition:{pattern:/(^[ \t]*)(?:[a-z][\w-]*|<[^<>\r\n]*>)(?=\s*=)/m,lookbehind:!0,alias:`keyword`,inside:{punctuation:/<|>/}},"core-rule":{pattern:RegExp(`(?:(^|[^<\\w-])`+t+`|<`+t+`>)(?![\\w-])`,`i`),lookbehind:!0,alias:[`rule`,`constant`],inside:{punctuation:/<|>/}},rule:{pattern:/(^|[^<\w-])[a-z][\w-]*|<[^<>\r\n]*>/i,lookbehind:!0,inside:{punctuation:/<|>/}},operator:/=\/?|\//,punctuation:/[()\[\]]/}})(e)}S.displayName=`clike`,S.aliases=[];function S(e){e.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}}C.displayName=`javascript`,C.aliases=[`js`];function C(e){e.register(S),e.languages.javascript=e.languages.extend(`clike`,{"class-name":[e.languages.clike[`class-name`],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(`(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])`),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),e.languages.javascript[`class-name`][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,e.languages.insertBefore(`javascript`,`keyword`,{regex:{pattern:RegExp(`((?:^|[^$\\w\\xA0-\\uFFFF."'\\])\\s]|\\b(?:return|yield))\\s*)\\/(?:(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))`),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:`language-regex`,inside:e.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:`function`},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:e.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:e.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:e.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:e.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),e.languages.insertBefore(`javascript`,`string`,{hashbang:{pattern:/^#!.*/,greedy:!0,alias:`comment`},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:`string`},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:`punctuation`},rest:e.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:`property`}}),e.languages.insertBefore(`javascript`,`operator`,{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:`property`}}),e.languages.markup&&(e.languages.markup.tag.addInlined(`script`,`javascript`),e.languages.markup.tag.addAttribute(`on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)`,`javascript`)),e.languages.js=e.languages.javascript}w.displayName=`actionscript`,w.aliases=[];function w(e){e.register(C),e.languages.actionscript=e.languages.extend(`javascript`,{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),e.languages.actionscript[`class-name`].alias=`function`,delete e.languages.actionscript.parameter,delete e.languages.actionscript[`literal-property`],e.languages.markup&&e.languages.insertBefore(`actionscript`,`string`,{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:e.languages.markup}})}T.displayName=`ada`,T.aliases=[];function T(e){e.languages.ada={comment:/--.*/,string:/"(?:""|[^"\r\f\n])*"/,number:[{pattern:/\b\d(?:_?\d)*#[\dA-F](?:_?[\dA-F])*(?:\.[\dA-F](?:_?[\dA-F])*)?#(?:E[+-]?\d(?:_?\d)*)?/i},{pattern:/\b\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:E[+-]?\d(?:_?\d)*)?\b/i}],attribute:{pattern:/\b'\w+/,alias:`attr-name`},keyword:/\b(?:abort|abs|abstract|accept|access|aliased|all|and|array|at|begin|body|case|constant|declare|delay|delta|digits|do|else|elsif|end|entry|exception|exit|for|function|generic|goto|if|in|interface|is|limited|loop|mod|new|not|null|of|or|others|out|overriding|package|pragma|private|procedure|protected|raise|range|record|rem|renames|requeue|return|reverse|select|separate|some|subtype|synchronized|tagged|task|terminate|then|type|until|use|when|while|with|xor)\b/i,boolean:/\b(?:false|true)\b/i,operator:/<[=>]?|>=?|=>?|:=|\/=?|\*\*?|[&+-]/,punctuation:/\.\.?|[,;():]/,char:/'.'/,variable:/\b[a-z](?:\w)*\b/i}}E.displayName=`agda`,E.aliases=[];function E(e){(function(e){e.languages.agda={comment:/\{-[\s\S]*?(?:-\}|$)|--.*/,string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},punctuation:/[(){}⦃⦄.;@]/,"class-name":{pattern:/((?:data|record) +)\S+/,lookbehind:!0},function:{pattern:/(^[ \t]*)(?!\s)[^:\r\n]+(?=:)/m,lookbehind:!0},operator:{pattern:/(^\s*|\s)(?:[=|:∀→λ\\?_]|->)(?=\s)/,lookbehind:!0},keyword:/\b(?:Set|abstract|constructor|data|eta-equality|field|forall|hiding|import|in|inductive|infix|infixl|infixr|instance|let|macro|module|mutual|no-eta-equality|open|overlap|pattern|postulate|primitive|private|public|quote|quoteContext|quoteGoal|quoteTerm|record|renaming|rewrite|syntax|tactic|unquote|unquoteDecl|unquoteDef|using|variable|where|with)\b/}})(e)}D.displayName=`al`,D.aliases=[];function D(e){e.languages.al={comment:/\/\/.*|\/\*[\s\S]*?\*\//,string:{pattern:/'(?:''|[^'\r\n])*'(?!')|"(?:""|[^"\r\n])*"(?!")/,greedy:!0},function:{pattern:/(\b(?:event|procedure|trigger)\s+|(?:^|[^.])\.\s*)[a-z_]\w*(?=\s*\()/i,lookbehind:!0},keyword:[/\b(?:array|asserterror|begin|break|case|do|downto|else|end|event|exit|for|foreach|function|if|implements|in|indataset|interface|internal|local|of|procedure|program|protected|repeat|runonclient|securityfiltering|suppressdispose|temporary|then|to|trigger|until|var|while|with|withevents)\b/i,/\b(?:action|actions|addafter|addbefore|addfirst|addlast|area|assembly|chartpart|codeunit|column|controladdin|cuegroup|customizes|dataitem|dataset|dotnet|elements|enum|enumextension|extends|field|fieldattribute|fieldelement|fieldgroup|fieldgroups|fields|filter|fixed|grid|group|key|keys|label|labels|layout|modify|moveafter|movebefore|movefirst|movelast|page|pagecustomization|pageextension|part|profile|query|repeater|report|requestpage|schema|separator|systempart|table|tableelement|tableextension|textattribute|textelement|type|usercontrol|value|xmlport)\b/i],number:/\b(?:0x[\da-f]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)(?:F|LL?|U(?:LL?)?)?\b/i,boolean:/\b(?:false|true)\b/i,variable:/\b(?:Curr(?:FieldNo|Page|Report)|x?Rec|RequestOptionsPage)\b/,"class-name":/\b(?:automation|biginteger|bigtext|blob|boolean|byte|char|clienttype|code|completiontriggererrorlevel|connectiontype|database|dataclassification|datascope|date|dateformula|datetime|decimal|defaultlayout|dialog|dictionary|dotnetassembly|dotnettypedeclaration|duration|errorinfo|errortype|executioncontext|executionmode|fieldclass|fieldref|fieldtype|file|filterpagebuilder|guid|httpclient|httpcontent|httpheaders|httprequestmessage|httpresponsemessage|instream|integer|joker|jsonarray|jsonobject|jsontoken|jsonvalue|keyref|list|moduledependencyinfo|moduleinfo|none|notification|notificationscope|objecttype|option|outstream|pageresult|record|recordid|recordref|reportformat|securityfilter|sessionsettings|tableconnectiontype|tablefilter|testaction|testfield|testfilterfield|testpage|testpermissions|testrequestpage|text|textbuilder|textconst|textencoding|time|transactionmodel|transactiontype|variant|verbosity|version|view|views|webserviceactioncontext|webserviceactionresultcode|xmlattribute|xmlattributecollection|xmlcdata|xmlcomment|xmldeclaration|xmldocument|xmldocumenttype|xmlelement|xmlnamespacemanager|xmlnametable|xmlnode|xmlnodelist|xmlprocessinginstruction|xmlreadoptions|xmltext|xmlwriteoptions)\b/i,operator:/\.\.|:[=:]|[-+*/]=?|<>|[<>]=?|=|\b(?:and|div|mod|not|or|xor)\b/i,punctuation:/[()\[\]{}:.;,]/}}O.displayName=`antlr4`,O.aliases=[`g4`];function O(e){e.languages.antlr4={comment:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,string:{pattern:/'(?:\\.|[^\\'\r\n])*'/,greedy:!0},"character-class":{pattern:/\[(?:\\.|[^\\\]\r\n])*\]/,greedy:!0,alias:`regex`,inside:{range:{pattern:/([^[]|(?:^|[^\\])(?:\\\\)*\\\[)-(?!\])/,lookbehind:!0,alias:`punctuation`},escape:/\\(?:u(?:[a-fA-F\d]{4}|\{[a-fA-F\d]+\})|[pP]\{[=\w-]+\}|[^\r\nupP])/,punctuation:/[\[\]]/}},action:{pattern:/\{(?:[^{}]|\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*\}/,greedy:!0,inside:{content:{pattern:/(\{)[\s\S]+(?=\})/,lookbehind:!0},punctuation:/[{}]/}},command:{pattern:/(->\s*(?!\s))(?:\s*(?:,\s*)?\b[a-z]\w*(?:\s*\([^()\r\n]*\))?)+(?=\s*;)/i,lookbehind:!0,inside:{function:/\b\w+(?=\s*(?:[,(]|$))/,punctuation:/[,()]/}},annotation:{pattern:/@\w+(?:::\w+)*/,alias:`keyword`},label:{pattern:/#[ \t]*\w+/,alias:`punctuation`},keyword:/\b(?:catch|channels|finally|fragment|grammar|import|lexer|locals|mode|options|parser|returns|throws|tokens)\b/,definition:[{pattern:/\b[a-z]\w*(?=\s*:)/,alias:[`rule`,`class-name`]},{pattern:/\b[A-Z]\w*(?=\s*:)/,alias:[`token`,`constant`]}],constant:/\b[A-Z][A-Z_]*\b/,operator:/\.\.|->|[|~]|[*+?]\??/,punctuation:/[;:()=]/},e.languages.g4=e.languages.antlr4}k.displayName=`apacheconf`,k.aliases=[];function k(e){e.languages.apacheconf={comment:/#.*/,"directive-inline":{pattern:/(^[\t ]*)\b(?:AcceptFilter|AcceptPathInfo|AccessFileName|Action|Add(?:Alt|AltByEncoding|AltByType|Charset|DefaultCharset|Description|Encoding|Handler|Icon|IconByEncoding|IconByType|InputFilter|Language|ModuleInfo|OutputFilter|OutputFilterByType|Type)|Alias|AliasMatch|Allow(?:CONNECT|EncodedSlashes|Methods|Override|OverrideList)?|Anonymous(?:_LogEmail|_MustGiveEmail|_NoUserID|_VerifyEmail)?|AsyncRequestWorkerFactor|Auth(?:BasicAuthoritative|BasicFake|BasicProvider|BasicUseDigestAlgorithm|DBDUserPWQuery|DBDUserRealmQuery|DBMGroupFile|DBMType|DBMUserFile|Digest(?:Algorithm|Domain|NonceLifetime|Provider|Qop|ShmemSize)|Form(?:Authoritative|Body|DisableNoStore|FakeBasicAuth|Location|LoginRequiredLocation|LoginSuccessLocation|LogoutLocation|Method|Mimetype|Password|Provider|SitePassphrase|Size|Username)|GroupFile|LDAP(?:AuthorizePrefix|BindAuthoritative|BindDN|BindPassword|CharsetConfig|CompareAsUser|CompareDNOnServer|DereferenceAliases|GroupAttribute|GroupAttributeIsDN|InitialBindAsUser|InitialBindPattern|MaxSubGroupDepth|RemoteUserAttribute|RemoteUserIsDN|SearchAsUser|SubGroupAttribute|SubGroupClass|Url)|Merging|Name|nCache(?:Context|Enable|ProvideFor|SOCache|Timeout)|nzFcgiCheckAuthnProvider|nzFcgiDefineProvider|Type|UserFile|zDBDLoginToReferer|zDBDQuery|zDBDRedirectQuery|zDBMType|zSendForbiddenOnFailure)|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferedLogs|BufferSize|Cache(?:DefaultExpire|DetailHeader|DirLength|DirLevels|Disable|Enable|File|Header|IgnoreCacheControl|IgnoreHeaders|IgnoreNoLastMod|IgnoreQueryString|IgnoreURLSessionIdentifiers|KeyBaseURL|LastModifiedFactor|Lock|LockMaxAge|LockPath|MaxExpire|MaxFileSize|MinExpire|MinFileSize|NegotiatedDocs|QuickHandler|ReadSize|ReadTime|Root|Socache(?:MaxSize|MaxTime|MinTime|ReadSize|ReadTime)?|StaleOnError|StoreExpired|StoreNoStore|StorePrivate)|CGIDScriptTimeout|CGIMapExtension|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|Deflate(?:BufferSize|CompressionLevel|FilterNote|InflateLimitRequestBody|InflateRatio(?:Burst|Limit)|MemLevel|WindowSize)|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DTracePrivileges|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtendedStatus|ExtFilterDefine|ExtFilterOptions|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|Heartbeat(?:Address|Listen|MaxServers|Storage)|HostnameLookups|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|Index(?:HeadInsert|Ignore|IgnoreReset|Options|OrderDefault|StyleSheet)|InputSed|ISAPI(?:AppendLogToErrors|AppendLogToQuery|CacheFile|FakeAsync|LogNotSupported|ReadAheadBuffer)|KeepAlive|KeepAliveTimeout|KeptBodySize|LanguagePriority|LDAP(?:CacheEntries|CacheTTL|ConnectionPoolTTL|ConnectionTimeout|LibraryDebug|OpCacheEntries|OpCacheTTL|ReferralHopLimit|Referrals|Retries|RetryDelay|SharedCacheFile|SharedCacheSize|Timeout|TrustedClientCert|TrustedGlobalCert|TrustedMode|VerifyServerCert)|Limit(?:InternalRecursion|Request(?:Body|Fields|FieldSize|Line)|XMLRequestBody)|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|Lua(?:Hook(?:AccessChecker|AuthChecker|CheckUserID|Fixups|InsertFilter|Log|MapToStorage|TranslateName|TypeChecker)|Inherit|InputFilter|MapHandler|OutputFilter|PackageCPath|PackagePath|QuickHandler|Root|Scope)|Max(?:ConnectionsPerChild|KeepAliveRequests|MemFree|RangeOverlaps|RangeReversals|Ranges|RequestWorkers|SpareServers|SpareThreads|Threads)|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|MMapFile|ModemStandard|ModMimeUsePathInfo|MultiviewsMatch|Mutex|NameVirtualHost|NoProxy|NWSSLTrustedCerts|NWSSLUpgradeable|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|Proxy(?:AddHeaders|BadHeader|Block|Domain|ErrorOverride|ExpressDBMFile|ExpressDBMType|ExpressEnable|FtpDirCharset|FtpEscapeWildcards|FtpListOnWildcard|HTML(?:BufSize|CharsetOut|DocType|Enable|Events|Extended|Fixups|Interp|Links|Meta|StripComments|URLMap)|IOBufferSize|MaxForwards|Pass(?:Inherit|InterpolateEnv|Match|Reverse|ReverseCookieDomain|ReverseCookiePath)?|PreserveHost|ReceiveBufferSize|Remote|RemoteMatch|Requests|SCGIInternalRedirect|SCGISendfile|Set|SourceAddress|Status|Timeout|Via)|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIP(?:Header|InternalProxy|InternalProxyList|ProxiesHeader|TrustedProxy|TrustedProxyList)|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|Rewrite(?:Base|Cond|Engine|Map|Options|Rule)|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScoreBoardFile|Script(?:Alias|AliasMatch|InterpreterSource|Log|LogBuffer|LogLength|Sock)?|SecureListen|SeeRequestTail|SendBufferSize|Server(?:Admin|Alias|Limit|Name|Path|Root|Signature|Tokens)|Session(?:Cookie(?:Name|Name2|Remove)|Crypto(?:Cipher|Driver|Passphrase|PassphraseFile)|DBD(?:CookieName|CookieName2|CookieRemove|DeleteLabel|InsertLabel|PerUser|SelectLabel|UpdateLabel)|Env|Exclude|Header|Include|MaxAge)?|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|SSIEndTag|SSIErrorMsg|SSIETag|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSL(?:CACertificateFile|CACertificatePath|CADNRequestFile|CADNRequestPath|CARevocationCheck|CARevocationFile|CARevocationPath|CertificateChainFile|CertificateFile|CertificateKeyFile|CipherSuite|Compression|CryptoDevice|Engine|FIPS|HonorCipherOrder|InsecureRenegotiation|OCSP(?:DefaultResponder|Enable|OverrideResponder|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|UseRequestNonce)|OpenSSLConfCmd|Options|PassPhraseDialog|Protocol|Proxy(?:CACertificateFile|CACertificatePath|CARevocation(?:Check|File|Path)|CheckPeer(?:CN|Expire|Name)|CipherSuite|Engine|MachineCertificate(?:ChainFile|File|Path)|Protocol|Verify|VerifyDepth)|RandomSeed|RenegBufferSize|Require|RequireSSL|Session(?:Cache|CacheTimeout|TicketKeyFile|Tickets)|SRPUnknownUserSeed|SRPVerifierFile|Stapling(?:Cache|ErrorCacheTimeout|FakeTryLater|ForceURL|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|ReturnResponderErrors|StandardCacheTimeout)|StrictSNIVHostCheck|UserName|UseStapling|VerifyClient|VerifyDepth)|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadsPerChild|ThreadStackSize|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|Virtual(?:DocumentRoot|ScriptAlias)(?:IP)?|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\b/im,lookbehind:!0,alias:`property`},"directive-block":{pattern:/<\/?\b(?:Auth[nz]ProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|Require(?:All|Any|None)|VirtualHost)\b.*>/i,inside:{"directive-block":{pattern:/^<\/?\w+/,inside:{punctuation:/^<\/?/},alias:`tag`},"directive-block-parameter":{pattern:/.*[^>]/,inside:{punctuation:/:/,string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}}},alias:`attr-value`},punctuation:/>/},alias:`tag`},"directive-flags":{pattern:/\[(?:[\w=],?)+\]/,alias:`keyword`},string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}},variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/,regex:/\^?.*\$|\^.*\$?/}}A.displayName=`sql`,A.aliases=[];function A(e){e.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/}}j.displayName=`apex`,j.aliases=[];function j(e){e.register(S),e.register(A),(function(e){var t=/\b(?:(?:after|before)(?=\s+[a-z])|abstract|activate|and|any|array|as|asc|autonomous|begin|bigdecimal|blob|boolean|break|bulk|by|byte|case|cast|catch|char|class|collect|commit|const|continue|currency|date|datetime|decimal|default|delete|desc|do|double|else|end|enum|exception|exit|export|extends|final|finally|float|for|from|get(?=\s*[{};])|global|goto|group|having|hint|if|implements|import|in|inner|insert|instanceof|int|integer|interface|into|join|like|limit|list|long|loop|map|merge|new|not|null|nulls|number|object|of|on|or|outer|override|package|parallel|pragma|private|protected|public|retrieve|return|rollback|select|set|short|sObject|sort|static|string|super|switch|synchronized|system|testmethod|then|this|throw|time|transaction|transient|trigger|try|undelete|update|upsert|using|virtual|void|webservice|when|where|while|(?:inherited|with|without)\s+sharing)\b/i,n=`\\b(?:(?=[a-z_]\\w*\\s*[<\\[])|(?!))[A-Z_]\\w*(?:\\s*\\.\\s*[A-Z_]\\w*)*\\b(?:\\s*(?:\\[\\s*\\]|<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>))*`.replace(//g,function(){return t.source});function r(e){return RegExp(e.replace(//g,function(){return n}),`i`)}var i={keyword:t,punctuation:/[()\[\]{};,:.<>]/};e.languages.apex={comment:e.languages.clike.comment,string:e.languages.clike.string,sql:{pattern:/((?:[=,({:]|\breturn)\s*)\[[^\[\]]*\]/i,lookbehind:!0,greedy:!0,alias:`language-sql`,inside:e.languages.sql},annotation:{pattern:/@\w+\b/,alias:`punctuation`},"class-name":[{pattern:r(`(\\b(?:class|enum|extends|implements|instanceof|interface|new|trigger\\s+\\w+\\s+on)\\s+)`),lookbehind:!0,inside:i},{pattern:r(`(\\(\\s*)(?=\\s*\\)\\s*[\\w(])`),lookbehind:!0,inside:i},{pattern:r(`(?=\\s*\\w+\\s*[;=,(){:])`),inside:i}],trigger:{pattern:/(\btrigger\s+)\w+\b/i,lookbehind:!0,alias:`class-name`},keyword:t,function:/\b[a-z_]\w*(?=\s*\()/i,boolean:/\b(?:false|true)\b/i,number:/(?:\B\.\d+|\b\d+(?:\.\d+|L)?)\b/i,operator:/[!=](?:==?)?|\?\.?|&&|\|\||--|\+\+|[-+*/^&|]=?|:|<{1,3}=?/,punctuation:/[()\[\]{};,.]/}})(e)}M.displayName=`apl`,M.aliases=[];function M(e){e.languages.apl={comment:/(?:⍝|#[! ]).*$/m,string:{pattern:/'(?:[^'\r\n]|'')*'/,greedy:!0},number:/¯?(?:\d*\.?\b\d+(?:e[+¯]?\d+)?|¯|∞)(?:j¯?(?:(?:\d+(?:\.\d+)?|\.\d+)(?:e[+¯]?\d+)?|¯|∞))?/i,statement:/:[A-Z][a-z][A-Za-z]*\b/,"system-function":{pattern:/⎕[A-Z]+/i,alias:`function`},constant:/[⍬⌾#⎕⍞]/,function:/[-+×÷⌈⌊∣|⍳⍸?*⍟○!⌹<≤=>≥≠≡≢∊⍷∪∩~∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⊆⊇⌷⍋⍒⊤⊥⍕⍎⊣⊢⍁⍂≈⍯↗¤→]/,"monadic-operator":{pattern:/[\\\/⌿⍀¨⍨⌶&∥]/,alias:`operator`},"dyadic-operator":{pattern:/[.⍣⍠⍤∘⌸@⌺⍥]/,alias:`operator`},assignment:{pattern:/←/,alias:`keyword`},punctuation:/[\[;\]()◇⋄]/,dfn:{pattern:/[{}⍺⍵⍶⍹∇⍫:]/,alias:`builtin`}}}N.displayName=`applescript`,N.aliases=[];function N(e){e.languages.applescript={comment:[/\(\*(?:\(\*(?:[^*]|\*(?!\)))*\*\)|(?!\(\*)[\s\S])*?\*\)/,/--.+/,/#.+/],string:/"(?:\\.|[^"\\\r\n])*"/,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e-?\d+)?\b/i,operator:[/[&=≠≤≥*+\-\/÷^]|[<>]=?/,/\b(?:(?:begin|end|start)s? with|(?:contains?|(?:does not|doesn't) contain)|(?:is|isn't|is not) (?:contained by|in)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:comes|(?:does not|doesn't) come) (?:after|before)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equal to|equals|is not|isn't)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|as|div|mod|not|or))\b/],keyword:/\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/,"class-name":/\b(?:POSIX file|RGB color|alias|application|boolean|centimeters|centimetres|class|constant|cubic centimeters|cubic centimetres|cubic feet|cubic inches|cubic meters|cubic metres|cubic yards|date|degrees Celsius|degrees Fahrenheit|degrees Kelvin|feet|file|gallons|grams|inches|integer|kilograms|kilometers|kilometres|list|liters|litres|meters|metres|miles|number|ounces|pounds|quarts|real|record|reference|script|square feet|square kilometers|square kilometres|square meters|square metres|square miles|square yards|text|yards)\b/,punctuation:/[{}():,¬«»《》]/}}P.displayName=`aql`,P.aliases=[];function P(e){e.languages.aql={comment:/\/\/.*|\/\*[\s\S]*?\*\//,property:{pattern:/([{,]\s*)(?:(?!\d)\w+|(["'´`])(?:(?!\2)[^\\\r\n]|\\.)*\2)(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(["'])(?:(?!\1)[^\\\r\n]|\\.)*\1/,greedy:!0},identifier:{pattern:/([´`])(?:(?!\1)[^\\\r\n]|\\.)*\1/,greedy:!0},variable:/@@?\w+/,keyword:[{pattern:/(\bWITH\s+)COUNT(?=\s+INTO\b)/i,lookbehind:!0},/\b(?:AGGREGATE|ALL|AND|ANY|ASC|COLLECT|DESC|DISTINCT|FILTER|FOR|GRAPH|IN|INBOUND|INSERT|INTO|K_PATHS|K_SHORTEST_PATHS|LET|LIKE|LIMIT|NONE|NOT|NULL|OR|OUTBOUND|REMOVE|REPLACE|RETURN|SHORTEST_PATH|SORT|UPDATE|UPSERT|WINDOW|WITH)\b/i,{pattern:/(^|[^\w.[])(?:KEEP|PRUNE|SEARCH|TO)\b/i,lookbehind:!0},{pattern:/(^|[^\w.[])(?:CURRENT|NEW|OLD)\b/,lookbehind:!0},{pattern:/\bOPTIONS(?=\s*\{)/i}],function:/\b(?!\d)\w+(?=\s*\()/,boolean:/\b(?:false|true)\b/i,range:{pattern:/\.\./,alias:`operator`},number:[/\b0b[01]+/i,/\b0x[0-9a-f]+/i,/(?:\B\.\d+|\b(?:0|[1-9]\d*)(?:\.\d+)?)(?:e[+-]?\d+)?/i],operator:/\*{2,}|[=!]~|[!=<>]=?|&&|\|\||[-+*/%]/,punctuation:/::|[?.:,;()[\]{}]/}}F.displayName=`c`,F.aliases=[];function F(e){e.register(S),e.languages.c=e.languages.extend(`clike`,{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),e.languages.insertBefore(`c`,`string`,{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),e.languages.insertBefore(`c`,`string`,{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:`property`,inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},e.languages.c.string],char:e.languages.c.char,comment:e.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:`function`}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:`keyword`},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:e.languages.c}}}}),e.languages.insertBefore(`c`,`function`,{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete e.languages.c.boolean}I.displayName=`cpp`,I.aliases=[];function I(e){e.register(F),(function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=`\\b(?!)\\w+(?:\\s*\\.\\s*\\w+)*\\b`.replace(//g,function(){return t.source});e.languages.cpp=e.languages.extend(`c`,{"class-name":[{pattern:RegExp(`(\\b(?:class|concept|enum|struct|typename)\\s+)(?!)\\w+`.replace(//g,function(){return t.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore(`cpp`,`string`,{module:{pattern:RegExp(`(\\b(?:import|module)\\s+)(?:"(?:\\\\(?:\\r\\n|[\\s\\S])|[^"\\\\\\r\\n])*"|<[^<>\\r\\n]*>|`+`(?:\\s*:\\s*)?|:\\s*`.replace(//g,function(){return n})+`)`),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:`string`,greedy:!0}}),e.languages.insertBefore(`cpp`,`keyword`,{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:`class-name`,inside:e.languages.cpp}}}}),e.languages.insertBefore(`cpp`,`operator`,{"double-colon":{pattern:/::/,alias:`punctuation`}}),e.languages.insertBefore(`cpp`,`class-name`,{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend(`cpp`,{})}}),e.languages.insertBefore(`inside`,`double-colon`,{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp[`base-clause`])})(e)}ee.displayName=`arduino`,ee.aliases=[`ino`];function ee(e){e.register(I),e.languages.arduino=e.languages.extend(`cpp`,{keyword:/\b(?:String|array|bool|boolean|break|byte|case|catch|continue|default|do|double|else|finally|for|function|goto|if|in|instanceof|int|integer|long|loop|new|null|return|setup|string|switch|throw|try|void|while|word)\b/,constant:/\b(?:ANALOG_MESSAGE|DEFAULT|DIGITAL_MESSAGE|EXTERNAL|FIRMATA_STRING|HIGH|INPUT|INPUT_PULLUP|INTERNAL|INTERNAL1V1|INTERNAL2V56|LED_BUILTIN|LOW|OUTPUT|REPORT_ANALOG|REPORT_DIGITAL|SET_PIN_MODE|SYSEX_START|SYSTEM_RESET)\b/,builtin:/\b(?:Audio|BSSID|Bridge|Client|Console|EEPROM|Esplora|EsploraTFT|Ethernet|EthernetClient|EthernetServer|EthernetUDP|File|FileIO|FileSystem|Firmata|GPRS|GSM|GSMBand|GSMClient|GSMModem|GSMPIN|GSMScanner|GSMServer|GSMVoiceCall|GSM_SMS|HttpClient|IPAddress|IRread|Keyboard|KeyboardController|LiquidCrystal|LiquidCrystal_I2C|Mailbox|Mouse|MouseController|PImage|Process|RSSI|RobotControl|RobotMotor|SD|SPI|SSID|Scheduler|Serial|Server|Servo|SoftwareSerial|Stepper|Stream|TFT|Task|USBHost|WiFi|WiFiClient|WiFiServer|WiFiUDP|Wire|YunClient|YunServer|abs|addParameter|analogRead|analogReadResolution|analogReference|analogWrite|analogWriteResolution|answerCall|attach|attachGPRS|attachInterrupt|attached|autoscroll|available|background|beep|begin|beginPacket|beginSD|beginSMS|beginSpeaker|beginTFT|beginTransmission|beginWrite|bit|bitClear|bitRead|bitSet|bitWrite|blink|blinkVersion|buffer|changePIN|checkPIN|checkPUK|checkReg|circle|cityNameRead|cityNameWrite|clear|clearScreen|click|close|compassRead|config|connect|connected|constrain|cos|countryNameRead|countryNameWrite|createChar|cursor|debugPrint|delay|delayMicroseconds|detach|detachInterrupt|digitalRead|digitalWrite|disconnect|display|displayLogos|drawBMP|drawCompass|encryptionType|end|endPacket|endSMS|endTransmission|endWrite|exists|exitValue|fill|find|findUntil|flush|gatewayIP|get|getAsynchronously|getBand|getButton|getCurrentCarrier|getIMEI|getKey|getModifiers|getOemKey|getPINUsed|getResult|getSignalStrength|getSocket|getVoiceCallStatus|getXChange|getYChange|hangCall|height|highByte|home|image|interrupts|isActionDone|isDirectory|isListening|isPIN|isPressed|isValid|keyPressed|keyReleased|keyboardRead|knobRead|leftToRight|line|lineFollowConfig|listen|listenOnLocalhost|loadImage|localIP|lowByte|macAddress|maintain|map|max|messageAvailable|micros|millis|min|mkdir|motorsStop|motorsWrite|mouseDragged|mouseMoved|mousePressed|mouseReleased|move|noAutoscroll|noBlink|noBuffer|noCursor|noDisplay|noFill|noInterrupts|noListenOnLocalhost|noStroke|noTone|onReceive|onRequest|open|openNextFile|overflow|parseCommand|parseFloat|parseInt|parsePacket|pauseMode|peek|pinMode|playFile|playMelody|point|pointTo|position|pow|prepare|press|print|printFirmwareVersion|printVersion|println|process|processInput|pulseIn|put|random|randomSeed|read|readAccelerometer|readBlue|readButton|readBytes|readBytesUntil|readGreen|readJoystickButton|readJoystickSwitch|readJoystickX|readJoystickY|readLightSensor|readMessage|readMicrophone|readNetworks|readRed|readSlider|readString|readStringUntil|readTemperature|ready|rect|release|releaseAll|remoteIP|remoteNumber|remotePort|remove|requestFrom|retrieveCallingNumber|rewindDirectory|rightToLeft|rmdir|robotNameRead|robotNameWrite|run|runAsynchronously|runShellCommand|runShellCommandAsynchronously|running|scanNetworks|scrollDisplayLeft|scrollDisplayRight|seek|sendAnalog|sendDigitalPortPair|sendDigitalPorts|sendString|sendSysex|serialEvent|setBand|setBitOrder|setClockDivider|setCursor|setDNS|setDataMode|setFirmwareVersion|setMode|setPINUsed|setSpeed|setTextSize|setTimeout|shiftIn|shiftOut|shutdown|sin|size|sqrt|startLoop|step|stop|stroke|subnetMask|switchPIN|tan|tempoWrite|text|tone|transfer|tuneWrite|turn|updateIR|userNameRead|userNameWrite|voiceCall|waitContinue|width|write|writeBlue|writeGreen|writeJSON|writeMessage|writeMicroseconds|writeRGB|writeRed|yield)\b/}),e.languages.ino=e.languages.arduino}L.displayName=`arff`,L.aliases=[];function L(e){e.languages.arff={comment:/%.*/,string:{pattern:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/@(?:attribute|data|end|relation)\b/i,number:/\b\d+(?:\.\d+)?\b/,punctuation:/[{},]/}}te.displayName=`armasm`,te.aliases=[`arm-asm`];function te(e){e.languages.armasm={comment:{pattern:/;.*/,greedy:!0},string:{pattern:/"(?:[^"\r\n]|"")*"/,greedy:!0,inside:{variable:{pattern:/((?:^|[^$])(?:\${2})*)\$\w+/,lookbehind:!0}}},char:{pattern:/'(?:[^'\r\n]{0,4}|'')'/,greedy:!0},"version-symbol":{pattern:/\|[\w@]+\|/,greedy:!0,alias:`property`},boolean:/\b(?:FALSE|TRUE)\b/,directive:{pattern:/\b(?:ALIAS|ALIGN|AREA|ARM|ASSERT|ATTR|CN|CODE|CODE16|CODE32|COMMON|CP|DATA|DCB|DCD|DCDO|DCDU|DCFD|DCFDU|DCI|DCQ|DCQU|DCW|DCWU|DN|ELIF|ELSE|END|ENDFUNC|ENDIF|ENDP|ENTRY|EQU|EXPORT|EXPORTAS|EXTERN|FIELD|FILL|FN|FUNCTION|GBLA|GBLL|GBLS|GET|GLOBAL|IF|IMPORT|INCBIN|INCLUDE|INFO|KEEP|LCLA|LCLL|LCLS|LTORG|MACRO|MAP|MEND|MEXIT|NOFP|OPT|PRESERVE8|PROC|QN|READONLY|RELOC|REQUIRE|REQUIRE8|RLIST|ROUT|SETA|SETL|SETS|SN|SPACE|SUBT|THUMB|THUMBX|TTL|WEND|WHILE)\b/,alias:`property`},instruction:{pattern:/((?:^|(?:^|[^\\])(?:\r\n?|\n))[ \t]*(?:(?:[A-Z][A-Z0-9_]*[a-z]\w*|[a-z]\w*|\d+)[ \t]+)?)\b[A-Z.]+\b/,lookbehind:!0,alias:`keyword`},variable:/\$\w+/,number:/(?:\b[2-9]_\d+|(?:\b\d+(?:\.\d+)?|\B\.\d+)(?:e-?\d+)?|\b0(?:[fd]_|x)[0-9a-f]+|&[0-9a-f]+)\b/i,register:{pattern:/\b(?:r\d|lr)\b/,alias:`symbol`},operator:/<>|<<|>>|&&|\|\||[=!<>/]=?|[+\-*%#?&|^]|:[A-Z]+:/,punctuation:/[()[\],]/},e.languages[`arm-asm`]=e.languages.armasm}ne.displayName=`arturo`,ne.aliases=[`art`];function ne(e){(function(e){var t=function(t,n){return{pattern:RegExp(`\\{!(?:`+(n||t)+`)$[\\s\\S]*\\}`,`m`),greedy:!0,inside:{embedded:{pattern:/(^\{!\w+\b)[\s\S]+(?=\}$)/,lookbehind:!0,alias:`language-`+t,inside:e.languages[t]},string:/[\s\S]+/}}};e.languages.arturo={comment:{pattern:/;.*/,greedy:!0},character:{pattern:/`.`/,alias:`char`,greedy:!0},number:{pattern:/\b\d+(?:\.\d+(?:\.\d+(?:-[\w+-]+)?)?)?\b/},string:{pattern:/"(?:[^"\\\r\n]|\\.)*"/,greedy:!0},regex:{pattern:/\{\/.*?\/\}/,greedy:!0},"html-string":t(`html`),"css-string":t(`css`),"js-string":t(`js`),"md-string":t(`md`),"sql-string":t(`sql`),"sh-string":t(`shell`,`sh`),multistring:{pattern:/».*|\{:[\s\S]*?:\}|\{[\s\S]*?\}|^-{6}$[\s\S]*/m,alias:`string`,greedy:!0},label:{pattern:/\w+\b\??:/,alias:`property`},literal:{pattern:/'(?:\w+\b\??:?)/,alias:`constant`},type:{pattern:/:(?:\w+\b\??:?)/,alias:`class-name`},color:/#\w+/,predicate:{pattern:/\b(?:all|and|any|ascii|attr|attribute|attributeLabel|binary|block|char|contains|database|date|dictionary|empty|equal|even|every|exists|false|floating|function|greater|greaterOrEqual|if|in|inline|integer|is|key|label|leap|less|lessOrEqual|literal|logical|lower|nand|negative|nor|not|notEqual|null|numeric|odd|or|path|pathLabel|positive|prefix|prime|regex|same|set|some|sorted|standalone|string|subset|suffix|superset|symbol|symbolLiteral|true|try|type|unless|upper|when|whitespace|word|xnor|xor|zero)\?/,alias:`keyword`},"builtin-function":{pattern:/\b(?:abs|acos|acosh|acsec|acsech|actan|actanh|add|after|alert|alias|and|angle|append|arg|args|arity|array|as|asec|asech|asin|asinh|atan|atan2|atanh|attr|attrs|average|before|benchmark|blend|break|call|capitalize|case|ceil|chop|clear|clip|close|color|combine|conj|continue|copy|cos|cosh|crc|csec|csech|ctan|ctanh|cursor|darken|dec|decode|define|delete|desaturate|deviation|dialog|dictionary|difference|digest|digits|div|do|download|drop|dup|e|else|empty|encode|ensure|env|escape|execute|exit|exp|extend|extract|factors|fdiv|filter|first|flatten|floor|fold|from|function|gamma|gcd|get|goto|hash|hypot|if|inc|indent|index|infinity|info|input|insert|inspect|intersection|invert|jaro|join|keys|kurtosis|last|let|levenshtein|lighten|list|ln|log|loop|lower|mail|map|match|max|median|min|mod|module|mul|nand|neg|new|nor|normalize|not|now|null|open|or|outdent|pad|palette|panic|path|pause|permissions|permutate|pi|pop|popup|pow|powerset|powmod|prefix|print|prints|process|product|query|random|range|read|relative|remove|rename|render|repeat|replace|request|return|reverse|round|sample|saturate|script|sec|sech|select|serve|set|shl|shr|shuffle|sin|sinh|size|skewness|slice|sort|spin|split|sqrt|squeeze|stack|strip|sub|suffix|sum|switch|symbols|symlink|sys|take|tan|tanh|terminal|terminate|to|truncate|try|type|unclip|union|unique|unless|until|unzip|upper|values|var|variance|volume|webview|while|with|wordwrap|write|xnor|xor|zip)\b/,alias:`keyword`},sugar:{pattern:/->|=>|\||::/,alias:`operator`},punctuation:/[()[\],]/,symbol:{pattern:/<:|-:|ø|@|#|\+|\||\*|\$|---|-|%|\/|\.\.|\^|~|=|<|>|\\/},boolean:{pattern:/\b(?:false|maybe|true)\b/}},e.languages.art=e.languages.arturo})(e)}R.displayName=`asciidoc`,R.aliases=[`adoc`];function R(e){(function(e){var t={pattern:/(^[ \t]*)\[(?!\[)(?:(["'$`])(?:(?!\2)[^\\]|\\.)*\2|\[(?:[^\[\]\\]|\\.)*\]|[^\[\]\\"'$`]|\\.)*\]/m,lookbehind:!0,inside:{quoted:{pattern:/([$`])(?:(?!\1)[^\\]|\\.)*\1/,inside:{punctuation:/^[$`]|[$`]$/}},interpreted:{pattern:/'(?:[^'\\]|\\.)*'/,inside:{punctuation:/^'|'$/}},string:/"(?:[^"\\]|\\.)*"/,variable:/\w+(?==)/,punctuation:/^\[|\]$|,/,operator:/=/,"attr-value":/(?!^\s+$).+/}},n=e.languages.asciidoc={"comment-block":{pattern:/^(\/{4,})$[\s\S]*?^\1/m,alias:`comment`},table:{pattern:/^\|={3,}(?:(?:\r?\n|\r(?!\n)).*)*?(?:\r?\n|\r)\|={3,}$/m,inside:{specifiers:{pattern:/(?:(?:(?:\d+(?:\.\d+)?|\.\d+)[+*](?:[<^>](?:\.[<^>])?|\.[<^>])?|[<^>](?:\.[<^>])?|\.[<^>])[a-z]*|[a-z]+)(?=\|)/,alias:`attr-value`},punctuation:{pattern:/(^|[^\\])[|!]=*/,lookbehind:!0}}},"passthrough-block":{pattern:/^(\+{4,})$[\s\S]*?^\1$/m,inside:{punctuation:/^\++|\++$/}},"literal-block":{pattern:/^(-{4,}|\.{4,})$[\s\S]*?^\1$/m,inside:{punctuation:/^(?:-+|\.+)|(?:-+|\.+)$/}},"other-block":{pattern:/^(--|\*{4,}|_{4,}|={4,})$[\s\S]*?^\1$/m,inside:{punctuation:/^(?:-+|\*+|_+|=+)|(?:-+|\*+|_+|=+)$/}},"list-punctuation":{pattern:/(^[ \t]*)(?:-|\*{1,5}|\.{1,5}|(?:[a-z]|\d+)\.|[xvi]+\))(?= )/im,lookbehind:!0,alias:`punctuation`},"list-label":{pattern:/(^[ \t]*)[a-z\d].+(?::{2,4}|;;)(?=\s)/im,lookbehind:!0,alias:`symbol`},"indented-block":{pattern:/((\r?\n|\r)\2)([ \t]+)\S.*(?:(?:\r?\n|\r)\3.+)*(?=\2{2}|$)/,lookbehind:!0},comment:/^\/\/.*/m,title:{pattern:/^.+(?:\r?\n|\r)(?:={3,}|-{3,}|~{3,}|\^{3,}|\+{3,})$|^={1,5} .+|^\.(?![\s.]).*/m,alias:`important`,inside:{punctuation:/^(?:\.|=+)|(?:=+|-+|~+|\^+|\++)$/}},"attribute-entry":{pattern:/^:[^:\r\n]+:(?: .*?(?: \+(?:\r?\n|\r).*?)*)?$/m,alias:`tag`},attributes:t,hr:{pattern:/^'{3,}$/m,alias:`punctuation`},"page-break":{pattern:/^<{3,}$/m,alias:`punctuation`},admonition:{pattern:/^(?:CAUTION|IMPORTANT|NOTE|TIP|WARNING):/m,alias:`keyword`},callout:[{pattern:/(^[ \t]*)/m,lookbehind:!0,alias:`symbol`},{pattern:/<\d+>/,alias:`symbol`}],macro:{pattern:/\b[a-z\d][a-z\d-]*::?(?:[^\s\[\]]*\[(?:[^\]\\"']|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/,inside:{function:/^[a-z\d-]+(?=:)/,punctuation:/^::?/,attributes:{pattern:/(?:\[(?:[^\]\\"']|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/,inside:t.inside}}},inline:{pattern:/(^|[^\\])(?:(?:\B\[(?:[^\]\\"']|(["'])(?:(?!\2)[^\\]|\\.)*\2|\\.)*\])?(?:\b_(?!\s)(?: _|[^_\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: _|[^_\\\r\n]|\\.)+)*_\b|\B``(?!\s).+?(?:(?:\r?\n|\r).+?)*''\B|\B`(?!\s)(?:[^`'\s]|\s+\S)+['`]\B|\B(['*+#])(?!\s)(?: \3|(?!\3)[^\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: \3|(?!\3)[^\\\r\n]|\\.)+)*\3\B)|(?:\[(?:[^\]\\"']|(["'])(?:(?!\4)[^\\]|\\.)*\4|\\.)*\])?(?:(__|\*\*|\+\+\+?|##|\$\$|[~^]).+?(?:(?:\r?\n|\r).+?)*\5|\{[^}\r\n]+\}|\[\[\[?.+?(?:(?:\r?\n|\r).+?)*\]?\]\]|<<.+?(?:(?:\r?\n|\r).+?)*>>|\(\(\(?.+?(?:(?:\r?\n|\r).+?)*\)?\)\)))/m,lookbehind:!0,inside:{attributes:t,url:{pattern:/^(?:\[\[\[?.+?\]?\]\]|<<.+?>>)$/,inside:{punctuation:/^(?:\[\[\[?|<<)|(?:\]\]\]?|>>)$/}},"attribute-ref":{pattern:/^\{.+\}$/,inside:{variable:{pattern:/(^\{)[a-z\d,+_-]+/,lookbehind:!0},operator:/^[=?!#%@$]|!(?=[:}])/,punctuation:/^\{|\}$|::?/}},italic:{pattern:/^(['_])[\s\S]+\1$/,inside:{punctuation:/^(?:''?|__?)|(?:''?|__?)$/}},bold:{pattern:/^\*[\s\S]+\*$/,inside:{punctuation:/^\*\*?|\*\*?$/}},punctuation:/^(?:``?|\+{1,3}|##?|\$\$|[~^]|\(\(\(?)|(?:''?|\+{1,3}|##?|\$\$|[~^`]|\)?\)\))$/}},replacement:{pattern:/\((?:C|R|TM)\)/,alias:`builtin`},entity:/&#?[\da-z]{1,8};/i,"line-continuation":{pattern:/(^| )\+$/m,lookbehind:!0,alias:`punctuation`}};function r(e){e=e.split(` `);for(var t={},r=0,i=e.length;r>=?|<<=?|&[&=]?|\|[\|=]?|[-+*/%^!=<>?]=?/,punctuation:/[(),:]/}}z.displayName=`csharp`,z.aliases=[`cs`,`dotnet`];function z(e){e.register(S),(function(e){function t(e,t){return e.replace(/<<(\d+)>>/g,function(e,n){return`(?:`+t[+n]+`)`})}function n(e,n,r){return RegExp(t(e,n),r||``)}function r(e,t){for(var n=0;n>/g,function(){return`(?:`+e+`)`});return e.replace(/<>/g,`[^\\s\\S]`)}var i={type:`bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void`,typeDeclaration:`class enum interface record struct`,contextual:`add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)`,other:`abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield`};function a(e){return`\\b(?:`+e.trim().replace(/ /g,`|`)+`)\\b`}var o=a(i.typeDeclaration),s=RegExp(a(i.type+` `+i.typeDeclaration+` `+i.contextual+` `+i.other)),c=a(i.typeDeclaration+` `+i.contextual+` `+i.other),l=a(i.type+` `+i.typeDeclaration+` `+i.other),u=r(`<(?:[^<>;=+\\-*/%&|^]|<>)*>`,2),d=r(`\\((?:[^()]|<>)*\\)`,2),f=`@?\\b[A-Za-z_]\\w*\\b`,p=t(`<<0>>(?:\\s*<<1>>)?`,[f,u]),m=t(`(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*`,[c,p]),h=`\\[\\s*(?:,\\s*)*\\]`,g=t(`<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?`,[m,h]),_=t(`(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?`,[t(`\\(<<0>>+(?:,<<0>>+)+\\)`,[t(`[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>`,[u,d,h])]),m,h]),v={keyword:s,punctuation:/[<>()?,.:[\]]/},y=`'(?:[^\\r\\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'`,b=`"(?:\\\\.|[^\\\\"\\r\\n])*"`,x=`@"(?:""|\\\\[\\s\\S]|[^\\\\"])*"(?!")`;e.languages.csharp=e.languages.extend(`clike`,{string:[{pattern:n(`(^|[^$\\\\])<<0>>`,[x]),lookbehind:!0,greedy:!0},{pattern:n(`(^|[^@$\\\\])<<0>>`,[b]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:n(`(\\busing\\s+static\\s+)<<0>>(?=\\s*;)`,[m]),lookbehind:!0,inside:v},{pattern:n(`(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)`,[f,_]),lookbehind:!0,inside:v},{pattern:n(`(\\busing\\s+)<<0>>(?=\\s*=)`,[f]),lookbehind:!0},{pattern:n(`(\\b<<0>>\\s+)<<1>>`,[o,p]),lookbehind:!0,inside:v},{pattern:n(`(\\bcatch\\s*\\(\\s*)<<0>>`,[m]),lookbehind:!0,inside:v},{pattern:n(`(\\bwhere\\s+)<<0>>`,[f]),lookbehind:!0},{pattern:n(`(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>`,[g]),lookbehind:!0,inside:v},{pattern:n(`\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))`,[_,l,f]),inside:v}],keyword:s,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),e.languages.insertBefore(`csharp`,`number`,{range:{pattern:/\.\./,alias:`operator`}}),e.languages.insertBefore(`csharp`,`punctuation`,{"named-parameter":{pattern:n(`([(,]\\s*)<<0>>(?=\\s*:)`,[f]),lookbehind:!0,alias:`punctuation`}}),e.languages.insertBefore(`csharp`,`class-name`,{namespace:{pattern:n(`(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])`,[f]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:n(`(\\b(?:default|sizeof|typeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))`,[d]),lookbehind:!0,alias:`class-name`,inside:v},"return-type":{pattern:n(`<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))`,[_,m]),inside:v,alias:`class-name`},"constructor-invocation":{pattern:n(`(\\bnew\\s+)<<0>>(?=\\s*[[({])`,[_]),lookbehind:!0,inside:v,alias:`class-name`},"generic-method":{pattern:n(`<<0>>\\s*<<1>>(?=\\s*\\()`,[f,u]),inside:{function:n(`^<<0>>`,[f]),generic:{pattern:RegExp(u),alias:`class-name`,inside:v}}},"type-list":{pattern:n(`\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))`,[o,p,f,_,s.source,d,`\\bnew\\s*\\(\\s*\\)`]),lookbehind:!0,inside:{"record-arguments":{pattern:n(`(^(?!new\\s*\\()<<0>>\\s*)<<1>>`,[p,d]),lookbehind:!0,greedy:!0,inside:e.languages.csharp},keyword:s,"class-name":{pattern:RegExp(_),greedy:!0,inside:v},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:`property`,inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:`keyword`}}}});var S=b+`|`+y,C=t(`\\/(?![*/])|\\/\\/[^\\r\\n]*[\\r\\n]|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|<<0>>`,[S]),w=r(t(`[^"'/()]|<<0>>|\\(<>*\\)`,[C]),2),T=`\\b(?:assembly|event|field|method|module|param|property|return|type)\\b`,E=t(`<<0>>(?:\\s*\\(<<1>>*\\))?`,[m,w]);e.languages.insertBefore(`csharp`,`class-name`,{attribute:{pattern:n(`((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])`,[T,E]),lookbehind:!0,greedy:!0,inside:{target:{pattern:n(`^<<0>>(?=\\s*:)`,[T]),alias:`keyword`},"attribute-arguments":{pattern:n(`\\(<<0>>*\\)`,[w]),inside:e.languages.csharp},"class-name":{pattern:RegExp(m),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var D=`:[^}\\r\\n]+`,O=r(t(`[^"'/()]|<<0>>|\\(<>*\\)`,[C]),2),k=t(`\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}`,[O,D]),A=r(t(`[^"'/()]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|<<0>>|\\(<>*\\)`,[S]),2),j=t(`\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}`,[A,D]);function M(t,r){return{interpolation:{pattern:n(`((?:^|[^{])(?:\\{\\{)*)<<0>>`,[t]),lookbehind:!0,inside:{"format-string":{pattern:n(`(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)`,[r,D]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:`language-csharp`,inside:e.languages.csharp}}},string:/[\s\S]+/}}e.languages.insertBefore(`csharp`,`string`,{"interpolation-string":[{pattern:n(`(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[\\s\\S]|\\{\\{|<<0>>|[^\\\\{"])*"`,[k]),lookbehind:!0,greedy:!0,inside:M(k,O)},{pattern:n(`(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"`,[j]),lookbehind:!0,greedy:!0,inside:M(j,A)}],char:{pattern:RegExp(y),greedy:!0}}),e.languages.dotnet=e.languages.cs=e.languages.csharp})(e)}B.displayName=`markup`,B.aliases=[`atom`,`html`,`mathml`,`rss`,`ssml`,`svg`,`xml`];function B(e){e.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:`attr-equals`},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:`named-entity`},/&#x?[\da-f]{1,8};/i]},e.languages.markup.tag.inside[`attr-value`].inside.entity=e.languages.markup.entity,e.languages.markup.doctype.inside[`internal-subset`].inside=e.languages.markup,e.hooks.add(`wrap`,function(e){e.type===`entity`&&(e.attributes.title=e.content.value.replace(/&/,`&`))}),Object.defineProperty(e.languages.markup.tag,"addInlined",{value:function(t,n){var r={};r[`language-`+n]={pattern:/(^$)/i,lookbehind:!0,inside:e.languages[n]},r.cdata=/^$/i;var i={"included-cdata":{pattern://i,inside:r}};i[`language-`+n]={pattern:/[\s\S]+/,inside:e.languages[n]};var a={};a[t]={pattern:RegExp(`(<__[^>]*>)(?:))*\\]\\]>|(?!)`.replace(/__/g,function(){return t}),`i`),lookbehind:!0,greedy:!0,inside:i},e.languages.insertBefore(`markup`,`cdata`,a)}}),Object.defineProperty(e.languages.markup.tag,"addAttribute",{value:function(t,n){e.languages.markup.tag.inside[`special-attr`].push({pattern:RegExp(`(^|["'\\s])(?:`+t+`)\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s'">=]+(?=[\\s>]))`,`i`),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,`language-`+n],inside:e.languages[n]},punctuation:[{pattern:/^=/,alias:`attr-equals`},/"|'/]}}}})}}),e.languages.html=e.languages.markup,e.languages.mathml=e.languages.markup,e.languages.svg=e.languages.markup,e.languages.xml=e.languages.extend(`markup`,{}),e.languages.ssml=e.languages.xml,e.languages.atom=e.languages.xml,e.languages.rss=e.languages.xml}ae.displayName=`aspnet`,ae.aliases=[];function ae(e){e.register(z),e.register(B),e.languages.aspnet=e.languages.extend(`markup`,{"page-directive":{pattern:/<%\s*@.*%>/,alias:`tag`,inside:{"page-directive":{pattern:/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,alias:`tag`},rest:e.languages.markup.tag.inside}},directive:{pattern:/<%.*%>/,alias:`tag`,inside:{directive:{pattern:/<%\s*?[$=%#:]{0,2}|%>/,alias:`tag`},rest:e.languages.csharp}}}),e.languages.aspnet.tag.pattern=/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/,e.languages.insertBefore(`inside`,`punctuation`,{directive:e.languages.aspnet.directive},e.languages.aspnet.tag.inside[`attr-value`]),e.languages.insertBefore(`aspnet`,`comment`,{"asp-comment":{pattern:/<%--[\s\S]*?--%>/,alias:[`asp`,`comment`]}}),e.languages.insertBefore(`aspnet`,e.languages.javascript?`script`:`tag`,{"asp-script":{pattern:/(]*>)[\s\S]*?(?=<\/script>)/i,lookbehind:!0,alias:[`asp`,`script`],inside:e.languages.csharp||{}}})}oe.displayName=`autohotkey`,oe.aliases=[];function oe(e){e.languages.autohotkey={comment:[{pattern:/(^|\s);.*/,lookbehind:!0},{pattern:/(^[\t ]*)\/\*(?:[\r\n](?![ \t]*\*\/)|[^\r\n])*(?:[\r\n][ \t]*\*\/)?/m,lookbehind:!0,greedy:!0}],tag:{pattern:/^([ \t]*)[^\s,`":]+(?=:[ \t]*$)/m,lookbehind:!0},string:/"(?:[^"\n\r]|"")*"/,variable:/%\w+%/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/\?|\/\/?=?|:=|\|[=|]?|&[=&]?|\+[=+]?|-[=-]?|\*[=*]?|<(?:<=?|>|=)?|>>?=?|[.^!=~]=?|\b(?:AND|NOT|OR)\b/,boolean:/\b(?:false|true)\b/,command:{pattern:/\b(?:AutoTrim|BlockInput|Break|Click|ClipWait|Continue|Control|ControlClick|ControlFocus|ControlGet|ControlGetFocus|ControlGetPos|ControlGetText|ControlMove|ControlSend|ControlSendRaw|ControlSetText|CoordMode|Critical|DetectHiddenText|DetectHiddenWindows|Drive|DriveGet|DriveSpaceFree|EnvAdd|EnvDiv|EnvGet|EnvMult|EnvSet|EnvSub|EnvUpdate|Exit|ExitApp|FileAppend|FileCopy|FileCopyDir|FileCreateDir|FileCreateShortcut|FileDelete|FileEncoding|FileGetAttrib|FileGetShortcut|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileMoveDir|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileRemoveDir|FileSelectFile|FileSelectFolder|FileSetAttrib|FileSetTime|FormatTime|GetKeyState|Gosub|Goto|GroupActivate|GroupAdd|GroupClose|GroupDeactivate|Gui|GuiControl|GuiControlGet|Hotkey|ImageSearch|IniDelete|IniRead|IniWrite|Input|InputBox|KeyWait|ListHotkeys|ListLines|ListVars|Loop|Menu|MouseClick|MouseClickDrag|MouseGetPos|MouseMove|MsgBox|OnExit|OutputDebug|Pause|PixelGetColor|PixelSearch|PostMessage|Process|Progress|Random|RegDelete|RegRead|RegWrite|Reload|Repeat|Return|Run|RunAs|RunWait|Send|SendEvent|SendInput|SendMessage|SendMode|SendPlay|SendRaw|SetBatchLines|SetCapslockState|SetControlDelay|SetDefaultMouseSpeed|SetEnv|SetFormat|SetKeyDelay|SetMouseDelay|SetNumlockState|SetRegView|SetScrollLockState|SetStoreCapslockMode|SetTimer|SetTitleMatchMode|SetWinDelay|SetWorkingDir|Shutdown|Sleep|Sort|SoundBeep|SoundGet|SoundGetWaveVolume|SoundPlay|SoundSet|SoundSetWaveVolume|SplashImage|SplashTextOff|SplashTextOn|SplitPath|StatusBarGetText|StatusBarWait|StringCaseSense|StringGetPos|StringLeft|StringLen|StringLower|StringMid|StringReplace|StringRight|StringSplit|StringTrimLeft|StringTrimRight|StringUpper|Suspend|SysGet|Thread|ToolTip|Transform|TrayTip|URLDownloadToFile|WinActivate|WinActivateBottom|WinClose|WinGet|WinGetActiveStats|WinGetActiveTitle|WinGetClass|WinGetPos|WinGetText|WinGetTitle|WinHide|WinKill|WinMaximize|WinMenuSelectItem|WinMinimize|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinRestore|WinSet|WinSetTitle|WinShow|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive)\b/i,alias:`selector`},constant:/\b(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_fileencoding|a_formatfloat|a_formatinteger|a_gui|a_guicontrol|a_guicontrolevent|a_guievent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_is64bitos|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_isunicode|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|a_priorkey|a_programfiles|a_programs|a_programscommon|a_ptrsize|a_regview|a_screendpi|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scripthwnd|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel|programfiles)\b/i,builtin:/\b(?:abs|acos|asc|asin|atan|ceil|chr|class|comobjactive|comobjarray|comobjconnect|comobjcreate|comobjerror|comobjflags|comobjget|comobjquery|comobjtype|comobjvalue|cos|dllcall|exp|fileexist|Fileopen|floor|format|il_add|il_create|il_destroy|instr|isfunc|islabel|IsObject|ln|log|ltrim|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|numget|numput|onmessage|regexmatch|regexreplace|registercallback|round|rtrim|sb_seticon|sb_setparts|sb_settext|sin|sqrt|strlen|strreplace|strsplit|substr|tan|tv_add|tv_delete|tv_get|tv_getchild|tv_getcount|tv_getnext|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist|__Call|__Get|__New|__Set)\b/i,symbol:/\b(?:alt|altdown|altup|appskey|backspace|browser_back|browser_favorites|browser_forward|browser_home|browser_refresh|browser_search|browser_stop|bs|capslock|ctrl|ctrlbreak|ctrldown|ctrlup|del|delete|down|end|enter|esc|escape|f1|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f2|f20|f21|f22|f23|f24|f3|f4|f5|f6|f7|f8|f9|home|ins|insert|joy1|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy2|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy3|joy30|joy31|joy32|joy4|joy5|joy6|joy7|joy8|joy9|joyaxes|joybuttons|joyinfo|joyname|joypov|joyr|joyu|joyv|joyx|joyy|joyz|lalt|launch_app1|launch_app2|launch_mail|launch_media|lbutton|lcontrol|lctrl|left|lshift|lwin|lwindown|lwinup|mbutton|media_next|media_play_pause|media_prev|media_stop|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadadd|numpadclear|numpaddel|numpaddiv|numpaddot|numpaddown|numpadend|numpadenter|numpadhome|numpadins|numpadleft|numpadmult|numpadpgdn|numpadpgup|numpadright|numpadsub|numpadup|pgdn|pgup|printscreen|ralt|rbutton|rcontrol|rctrl|right|rshift|rwin|rwindown|rwinup|scrolllock|shift|shiftdown|shiftup|space|tab|up|volume_down|volume_mute|volume_up|wheeldown|wheelleft|wheelright|wheelup|xbutton1|xbutton2)\b/i,directive:{pattern:/#[a-z]+\b/i,alias:`important`},keyword:/\b(?:Abort|AboveNormal|Add|ahk_class|ahk_exe|ahk_group|ahk_id|ahk_pid|All|Alnum|Alpha|AltSubmit|AltTab|AltTabAndMenu|AltTabMenu|AltTabMenuDismiss|AlwaysOnTop|AutoSize|Background|BackgroundTrans|BelowNormal|between|BitAnd|BitNot|BitOr|BitShiftLeft|BitShiftRight|BitXOr|Bold|Border|Button|ByRef|Catch|Checkbox|Checked|CheckedGray|Choose|ChooseString|Close|Color|ComboBox|Contains|ControlList|Count|Date|DateTime|Days|DDL|Default|DeleteAll|Delimiter|Deref|Destroy|Digit|Disable|Disabled|DropDownList|Edit|Eject|Else|Enable|Enabled|Error|Exist|Expand|ExStyle|FileSystem|Finally|First|Flash|Float|FloatFast|Focus|Font|for|global|Grid|Group|GroupBox|GuiClose|GuiContextMenu|GuiDropFiles|GuiEscape|GuiSize|Hdr|Hidden|Hide|High|HKCC|HKCR|HKCU|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_LOCAL_MACHINE|HKEY_USERS|HKLM|HKU|Hours|HScroll|Icon|IconSmall|ID|IDLast|If|IfEqual|IfExist|IfGreater|IfGreaterOrEqual|IfInString|IfLess|IfLessOrEqual|IfMsgBox|IfNotEqual|IfNotExist|IfNotInString|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Ignore|ImageList|in|Integer|IntegerFast|Interrupt|is|italic|Join|Label|LastFound|LastFoundExist|Limit|Lines|List|ListBox|ListView|local|Lock|Logoff|Low|Lower|Lowercase|MainWindow|Margin|Maximize|MaximizeBox|MaxSize|Minimize|MinimizeBox|MinMax|MinSize|Minutes|MonthCal|Mouse|Move|Multi|NA|No|NoActivate|NoDefault|NoHide|NoIcon|NoMainWindow|norm|Normal|NoSort|NoSortHdr|NoStandard|Not|NoTab|NoTimers|Number|Off|Ok|On|OwnDialogs|Owner|Parse|Password|Picture|Pixel|Pos|Pow|Priority|ProcessName|Radio|Range|Read|ReadOnly|Realtime|Redraw|Region|REG_BINARY|REG_DWORD|REG_EXPAND_SZ|REG_MULTI_SZ|REG_SZ|Relative|Rename|Report|Resize|Restore|Retry|RGB|Screen|Seconds|Section|Serial|SetLabel|ShiftAltTab|Show|Single|Slider|SortDesc|Standard|static|Status|StatusBar|StatusCD|strike|Style|Submit|SysMenu|Tab2|TabStop|Text|Theme|Throw|Tile|ToggleCheck|ToggleEnable|ToolWindow|Top|Topmost|TransColor|Transparent|Tray|TreeView|Try|TryAgain|Type|UnCheck|underline|Unicode|Unlock|Until|UpDown|Upper|Uppercase|UseErrorLevel|Vis|VisFirst|Visible|VScroll|Wait|WaitClose|WantCtrlA|WantF2|WantReturn|While|Wrap|Xdigit|xm|xp|xs|Yes|ym|yp|ys)\b/i,function:/[^(); \t,\n+*\-=?>:\\\/<&%\[\]]+(?=\()/,punctuation:/[{}[\]():,]/}}se.displayName=`autoit`,se.aliases=[];function se(e){e.languages.autoit={comment:[/;.*/,{pattern:/(^[\t ]*)#(?:comments-start|cs)[\s\S]*?^[ \t]*#(?:ce|comments-end)/m,lookbehind:!0}],url:{pattern:/(^[\t ]*#include\s+)(?:<[^\r\n>]+>|"[^\r\n"]+")/m,lookbehind:!0},string:{pattern:/(["'])(?:\1\1|(?!\1)[^\r\n])*\1/,greedy:!0,inside:{variable:/([%$@])\w+\1/}},directive:{pattern:/(^[\t ]*)#[\w-]+/m,lookbehind:!0,alias:`keyword`},function:/\b\w+(?=\()/,variable:/[$@]\w+/,keyword:/\b(?:Case|Const|Continue(?:Case|Loop)|Default|Dim|Do|Else(?:If)?|End(?:Func|If|Select|Switch|With)|Enum|Exit(?:Loop)?|For|Func|Global|If|In|Local|Next|Null|ReDim|Select|Static|Step|Switch|Then|To|Until|Volatile|WEnd|While|With)\b/i,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/i,boolean:/\b(?:False|True)\b/i,operator:/<[=>]?|[-+*\/=&>]=?|[?^]|\b(?:And|Not|Or)\b/i,punctuation:/[\[\]().,:]/}}ce.displayName=`avisynth`,ce.aliases=[`avs`];function ce(e){(function(e){function t(e,t){return e.replace(/<<(\d+)>>/g,function(e,n){return t[+n]})}function n(e,n,r){return RegExp(t(e,n),r||``)}var r=`bool|clip|float|int|string|val`,i=[[`is(?:bool|clip|float|int|string)|defined|(?:(?:internal)?function|var)?exists?`,`apply|assert|default|eval|import|nop|select|undefined`,`opt_(?:allowfloataudio|avipadscanlines|dwchannelmask|enable_(?:b64a|planartopackedrgb|v210|y3_10_10|y3_10_16)|usewaveextensible|vdubplanarhack)|set(?:cachemode|maxcpu|memorymax|planarlegacyalignment|workingdir)`,`hex(?:value)?|value`,`abs|ceil|continued(?:denominator|numerator)?|exp|floor|fmod|frac|log(?:10)?|max|min|muldiv|pi|pow|rand|round|sign|spline|sqrt`,`a?sinh?|a?cosh?|a?tan[2h]?`,`(?:bit(?:and|not|x?or|[lr]?shift[aslu]?|sh[lr]|sa[lr]|[lr]rotatel?|ro[rl]|te?st|set(?:count)?|cl(?:ea)?r|ch(?:an)?ge?))`,`average(?:[bgr]|chroma[uv]|luma)|(?:[rgb]|chroma[uv]|luma|rgb|[yuv](?=difference(?:fromprevious|tonext)))difference(?:fromprevious|tonext)?|[yuvrgb]plane(?:median|min|max|minmaxdifference)`,`getprocessinfo|logmsg|script(?:dir(?:utf8)?|file(?:utf8)?|name(?:utf8)?)|setlogparams`,`chr|(?:fill|find|left|mid|replace|rev|right)str|format|[lu]case|ord|str(?:cmpi?|fromutf8|len|toutf8)|time|trim(?:all|left|right)`,`isversionorgreater|version(?:number|string)`,`buildpixeltype|colorspacenametopixeltype`,`addautoloaddir|on(?:cpu|cuda)|prefetch|setfiltermtmode`].join(`|`),[`has(?:audio|video)`,`height|width`,`frame(?:count|rate)|framerate(?:denominator|numerator)`,`getparity|is(?:field|frame)based`,`bitspercomponent|componentsize|hasalpha|is(?:planar(?:rgba?)?|interleaved|rgb(?:24|32|48|64)?|y(?:8|u(?:va?|y2))?|yv(?:12|16|24|411)|420|422|444|packedrgb)|numcomponents|pixeltype`,`audio(?:bits|channels|duration|length(?:[fs]|hi|lo)?|rate)|isaudio(?:float|int)`].join(`|`),[`avi(?:file)?source|directshowsource|image(?:reader|source|sourceanim)|opendmlsource|segmented(?:avisource|directshowsource)|wavsource`,`coloryuv|convertbacktoyuy2|convertto(?:RGB(?:24|32|48|64)|(?:planar)?RGBA?|Y8?|YV(?:12|16|24|411)|YUVA?(?:411|420|422|444)|YUY2)|fixluminance|gr[ae]yscale|invert|levels|limiter|mergea?rgb|merge(?:chroma|luma)|rgbadjust|show(?:alpha|blue|green|red)|swapuv|tweak|[uv]toy8?|ytouv`,`(?:colorkey|reset)mask|layer|mask(?:hs)?|merge|overlay|subtract`,`addborders|(?:bicubic|bilinear|blackman|gauss|lanczos4|lanczos|point|sinc|spline(?:16|36|64))resize|crop(?:bottom)?|flip(?:horizontal|vertical)|(?:horizontal|vertical)?reduceby2|letterbox|skewrows|turn(?:180|left|right)`,`blur|fixbrokenchromaupsampling|generalconvolution|(?:spatial|temporal)soften|sharpen`,`trim|(?:un)?alignedsplice|(?:assume|assumescaled|change|convert)FPS|(?:delete|duplicate)frame|dissolve|fade(?:in|io|out)[02]?|freezeframe|interleave|loop|reverse|select(?:even|odd|(?:range)?every)`,`assume[bt]ff|assume(?:field|frame)based|bob|complementparity|doubleweave|peculiarblend|pulldown|separate(?:columns|fields|rows)|swapfields|weave(?:columns|rows)?`,`amplify(?:db)?|assumesamplerate|audiodub(?:ex)?|audiotrim|convertaudioto(?:(?:8|16|24|32)bit|float)|converttomono|delayaudio|ensurevbrmp3sync|get(?:left|right)?channel|kill(?:audio|video)|mergechannels|mixaudio|monotostereo|normalize|resampleaudio|ssrc|supereq|timestretch`,`animate|applyrange|conditional(?:filter|reader|select)|frameevaluate|scriptclip|tcp(?:server|source)|writefile(?:end|if|start)?`,`imagewriter`,`blackness|blankclip|colorbars(?:hd)?|compare|dumpfiltergraph|echo|histogram|info|messageclip|preroll|setgraphanalysis|show(?:framenumber|smpte|time)|showfiveversions|stack(?:horizontal|vertical)|subtitle|tone|version`].join(`|`)].join(`|`);e.languages.avisynth={comment:[{pattern:/(^|[^\\])\[\*(?:[^\[*]|\[(?!\*)|\*(?!\])|\[\*(?:[^\[*]|\[(?!\*)|\*(?!\]))*\*\])*\*\]/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\$])#.*/,lookbehind:!0,greedy:!0}],argument:{pattern:n(`\\b(?:<<0>>)\\s+("?)\\w+\\1`,[r],`i`),inside:{keyword:/^\w+/}},"argument-label":{pattern:/([,(][\s\\]*)\w+\s*=(?!=)/,lookbehind:!0,inside:{"argument-name":{pattern:/^\w+/,alias:`punctuation`},punctuation:/=$/}},string:[{pattern:/"""[\s\S]*?"""/,greedy:!0},{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0,inside:{constant:{pattern:/\b(?:DEFAULT_MT_MODE|(?:MAINSCRIPT|PROGRAM|SCRIPT)DIR|(?:MACHINE|USER)_(?:CLASSIC|PLUS)_PLUGINS)\b/}}}],variable:/\b(?:last)\b/i,boolean:/\b(?:false|no|true|yes)\b/i,keyword:/\b(?:catch|else|for|function|global|if|return|try|while|__END__)\b/i,constant:/\bMT_(?:MULTI_INSTANCE|NICE_FILTER|SERIALIZED|SPECIAL_MT)\b/,"builtin-function":{pattern:n(`\\b(?:<<0>>)\\b`,[i],`i`),alias:`function`},"type-cast":{pattern:n(`\\b(?:<<0>>)(?=\\s*\\()`,[r],`i`),alias:`keyword`},function:{pattern:/\b[a-z_]\w*(?=\s*\()|(\.)[a-z_]\w*\b/i,lookbehind:!0},"line-continuation":{pattern:/(^[ \t]*)\\|\\(?=[ \t]*$)/m,lookbehind:!0,alias:`punctuation`},number:/\B\$(?:[\da-f]{6}|[\da-f]{8})\b|(?:(?:\b|\B-)\d+(?:\.\d*)?\b|\B\.\d+\b)/i,operator:/\+\+?|[!=<>]=?|&&|\|\||[?:*/%-]/,punctuation:/[{}\[\]();,.]/},e.languages.avs=e.languages.avisynth})(e)}le.displayName=`avro-idl`,le.aliases=[`avdl`];function le(e){e.languages[`avro-idl`]={comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\//,greedy:!0},string:{pattern:/(^|[^\\])"(?:[^\r\n"\\]|\\.)*"/,lookbehind:!0,greedy:!0},annotation:{pattern:/@(?:[$\w.-]|`[^\r\n`]+`)+/,greedy:!0,alias:`function`},"function-identifier":{pattern:/`[^\r\n`]+`(?=\s*\()/,greedy:!0,alias:`function`},identifier:{pattern:/`[^\r\n`]+`/,greedy:!0},"class-name":{pattern:/(\b(?:enum|error|protocol|record|throws)\b\s+)[$\w]+/,lookbehind:!0,greedy:!0},keyword:/\b(?:array|boolean|bytes|date|decimal|double|enum|error|false|fixed|float|idl|import|int|local_timestamp_ms|long|map|null|oneway|protocol|record|schema|string|throws|time_ms|timestamp_ms|true|union|uuid|void)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:[{pattern:/(^|[^\w.])-?(?:(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|0x(?:[a-f0-9]+(?:\.[a-f0-9]*)?|\.[a-f0-9]+)(?:p[+-]?\d+)?)[dfl]?(?![\w.])/i,lookbehind:!0},/-?\b(?:Infinity|NaN)\b/],operator:/=/,punctuation:/[()\[\]{}<>.:,;-]/},e.languages.avdl=e.languages[`avro-idl`]}ue.displayName=`awk`,ue.aliases=[`gawk`];function ue(e){e.languages.awk={hashbang:{pattern:/^#!.*/,greedy:!0,alias:`comment`},comment:{pattern:/#.*/,greedy:!0},string:{pattern:/(^|[^\\])"(?:[^\\"\r\n]|\\.)*"/,lookbehind:!0,greedy:!0},regex:{pattern:/((?:^|[^\w\s)])\s*)\/(?:[^\/\\\r\n]|\\.)*\//,lookbehind:!0,greedy:!0},variable:/\$\w+/,keyword:/\b(?:BEGIN|BEGINFILE|END|ENDFILE|break|case|continue|default|delete|do|else|exit|for|function|getline|if|in|next|nextfile|printf?|return|switch|while)\b|@(?:include|load)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0x[a-fA-F0-9]+)\b/,operator:/--|\+\+|!?~|>&|>>|<<|(?:\*\*|[<>!=+\-*/%^])=?|&&|\|[|&]|[?:]/,punctuation:/[()[\]{},;]/},e.languages.gawk=e.languages.awk}de.displayName=`bash`,de.aliases=[`sh`,`shell`];function de(e){(function(e){var t=`\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b`,n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:`punctuation`,inside:null},r={bash:n,environment:{pattern:RegExp(`\\$`+t),alias:`constant`},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp(`(\\{)`+t),lookbehind:!0,alias:`constant`}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:`important`},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:`function`},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:`function`}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:`variable`,lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp(`(^|[\\s;|&]|[<>]\\()`+t),lookbehind:!0,alias:`constant`}},alias:`variable`,lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:`variable`,lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp(`\\$?`+t),alias:`constant`},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:`class-name`},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:`important`},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:`important`}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var i=[`comment`,`function-name`,`for-or-select`,`assign-left`,`parameter`,`string`,`environment`,`function`,`keyword`,`builtin`,`boolean`,`file-descriptor`,`operator`,`punctuation`,`number`],a=r.variable[1].inside,o=0;o?^\w +\-.])*"/,greedy:!0},number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SELECT CASE|SHARED|SHELL|SINGLE|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\$|\b)/i,function:/\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\$|\b)/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:AND|EQV|IMP|NOT|OR|XOR)\b/i,punctuation:/[,;:()]/}}pe.displayName=`batch`,pe.aliases=[];function pe(e){(function(e){var t=/%%?[~:\w]+%?|!\S+!/,n={pattern:/\/[a-z?]+(?=[ :]|$):?|-[a-z]\b|--[a-z-]+\b/im,alias:`attr-name`,inside:{punctuation:/:/}},r=/"(?:[\\"]"|[^"])*"(?!")/,i=/(?:\b|-)\d+\b/;e.languages.batch={comment:[/^::.*/m,{pattern:/((?:^|[&(])[ \t]*)rem\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0}],label:{pattern:/^:.*/m,alias:`property`},command:[{pattern:/((?:^|[&(])[ \t]*)for(?: \/[a-z?](?:[ :](?:"[^"]*"|[^\s"/]\S*))?)* \S+ in \([^)]+\) do/im,lookbehind:!0,inside:{keyword:/\b(?:do|in)\b|^for\b/i,string:r,parameter:n,variable:t,number:i,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*)if(?: \/[a-z?](?:[ :](?:"[^"]*"|[^\s"/]\S*))?)* (?:not )?(?:cmdextversion \d+|defined \w+|errorlevel \d+|exist \S+|(?:"[^"]*"|(?!")(?:(?!==)\S)+)?(?:==| (?:equ|geq|gtr|leq|lss|neq) )(?:"[^"]*"|[^\s"]\S*))/im,lookbehind:!0,inside:{keyword:/\b(?:cmdextversion|defined|errorlevel|exist|not)\b|^if\b/i,string:r,parameter:n,variable:t,number:i,operator:/\^|==|\b(?:equ|geq|gtr|leq|lss|neq)\b/i}},{pattern:/((?:^|[&()])[ \t]*)else\b/im,lookbehind:!0,inside:{keyword:/^else\b/i}},{pattern:/((?:^|[&(])[ \t]*)set(?: \/[a-z](?:[ :](?:"[^"]*"|[^\s"/]\S*))?)* (?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0,inside:{keyword:/^set\b/i,string:r,parameter:n,variable:[t,/\w+(?=(?:[*\/%+\-&^|]|<<|>>)?=)/],number:i,operator:/[*\/%+\-&^|]=?|<<=?|>>=?|[!~_=]/,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*@?)\w+\b(?:"(?:[\\"]"|[^"])*"(?!")|[^"^&)\r\n]|\^(?:\r\n|[\s\S]))*/m,lookbehind:!0,inside:{keyword:/^\w+\b/,string:r,parameter:n,label:{pattern:/(^\s*):\S+/m,lookbehind:!0,alias:`property`},variable:t,number:i,operator:/\^/}}],operator:/[&@]/,punctuation:/[()']/}})(e)}me.displayName=`bbcode`,me.aliases=[`shortcode`];function me(e){e.languages.bbcode={tag:{pattern:/\[\/?[^\s=\]]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+))?(?:\s+[^\s=\]]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+))*\s*\]/,inside:{tag:{pattern:/^\[\/?[^\s=\]]+/,inside:{punctuation:/^\[\/?/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+)/,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\]/,"attr-name":/[^\s=\]]+/}}},e.languages.shortcode=e.languages.bbcode}he.displayName=`bbj`,he.aliases=[];function he(e){(function(e){e.languages.bbj={comment:{pattern:/(^|[^\\:])rem\s+.*/i,lookbehind:!0,greedy:!0},string:{pattern:/(['"])(?:(?!\1|\\).|\\.)*\1/,greedy:!0},number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:abstract|all|argc|begin|bye|callback|case|chn|class|classend|ctl|day|declare|delete|dim|dom|dread|dsz|else|end|endif|err|exitto|extends|fi|field|for|from|gosub|goto|if|implements|interface|interfaceend|iol|iolist|let|list|load|method|methodend|methodret|on|opts|pfx|print|private|process_events|protected|psz|public|read|read_resource|release|remove_callback|repeat|restore|return|rev|seterr|setesc|sqlchn|sqlunt|ssn|start|static|swend|switch|sys|then|tim|unt|until|use|void|wend|where|while)\b/i,function:/\b\w+(?=\()/,boolean:/\b(?:BBjAPI\.TRUE|BBjAPI\.FALSE)\b/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:and|not|or|xor)\b/i,punctuation:/[.,;:()]/}})(e)}ge.displayName=`bicep`,ge.aliases=[];function ge(e){e.languages.bicep={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],property:[{pattern:/([\r\n][ \t]*)[a-z_]\w*(?=[ \t]*:)/i,lookbehind:!0},{pattern:/([\r\n][ \t]*)'(?:\\.|\$(?!\{)|[^'\\\r\n$])*'(?=[ \t]*:)/,lookbehind:!0,greedy:!0}],string:[{pattern:/'''[^'][\s\S]*?'''/,greedy:!0},{pattern:/(^|[^\\'])'(?:\\.|\$(?!\{)|[^'\\\r\n$])*'/,lookbehind:!0,greedy:!0}],"interpolated-string":{pattern:/(^|[^\\'])'(?:\\.|\$(?:(?!\{)|\{[^{}\r\n]*\})|[^'\\\r\n$])*'/,lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/\$\{[^{}\r\n]*\}/,inside:{expression:{pattern:/(^\$\{)[\s\S]+(?=\}$)/,lookbehind:!0},punctuation:/^\$\{|\}$/}},string:/[\s\S]+/}},datatype:{pattern:/(\b(?:output|param)\b[ \t]+\w+[ \t]+)\w+\b/,lookbehind:!0,alias:`class-name`},boolean:/\b(?:false|true)\b/,keyword:/\b(?:existing|for|if|in|module|null|output|param|resource|targetScope|var)\b/,decorator:/@\w+\b/,function:/\b[a-z_]\w*(?=[ \t]*\()/i,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/,punctuation:/[{}[\];(),.:]/},e.languages.bicep[`interpolated-string`].inside.interpolation.inside.expression.inside=e.languages.bicep}_e.displayName=`birb`,_e.aliases=[];function _e(e){e.register(S),e.languages.birb=e.languages.extend(`clike`,{string:{pattern:/r?("|')(?:\\.|(?!\1)[^\\])*\1/,greedy:!0},"class-name":[/\b[A-Z](?:[\d_]*[a-zA-Z]\w*)?\b/,/\b(?:[A-Z]\w*|(?!(?:var|void)\b)[a-z]\w*)(?=\s+\w+\s*[;,=()])/],keyword:/\b(?:assert|break|case|class|const|default|else|enum|final|follows|for|grab|if|nest|new|next|noSeeb|return|static|switch|throw|var|void|while)\b/,operator:/\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?|:/,variable:/\b[a-z_]\w*\b/}),e.languages.insertBefore(`birb`,`function`,{metadata:{pattern:/<\w+>/,greedy:!0,alias:`symbol`}})}ve.displayName=`bison`,ve.aliases=[];function ve(e){e.register(F),e.languages.bison=e.languages.extend(`c`,{}),e.languages.insertBefore(`bison`,`comment`,{bison:{pattern:/^(?:[^%]|%(?!%))*%%[\s\S]*?%%/,inside:{c:{pattern:/%\{[\s\S]*?%\}|\{(?:\{[^}]*\}|[^{}])*\}/,inside:{delimiter:{pattern:/^%?\{|%?\}$/,alias:`punctuation`},"bison-variable":{pattern:/[$@](?:<[^\s>]+>)?[\w$]+/,alias:`variable`,inside:{punctuation:/<|>/}},rest:e.languages.c}},comment:e.languages.c.comment,string:e.languages.c.string,property:/\S+(?=:)/,keyword:/%\w+/,number:{pattern:/(^|[^@])\b(?:0x[\da-f]+|\d+)/i,lookbehind:!0},punctuation:/%[%?]|[|:;\[\]<>]/}}})}ye.displayName=`bnf`,ye.aliases=[`rbnf`];function ye(e){e.languages.bnf={string:{pattern:/"[^\r\n"]*"|'[^\r\n']*'/},definition:{pattern:/<[^<>\r\n\t]+>(?=\s*::=)/,alias:[`rule`,`keyword`],inside:{punctuation:/^<|>$/}},rule:{pattern:/<[^<>\r\n\t]+>/,inside:{punctuation:/^<|>$/}},operator:/::=|[|()[\]{}*+?]|\.{3}/},e.languages.rbnf=e.languages.bnf}be.displayName=`bqn`,be.aliases=[];function be(e){e.languages.bqn={shebang:{pattern:/^#![ \t]*\/.*/,alias:`important`,greedy:!0},comment:{pattern:/#.*/,greedy:!0},"string-literal":{pattern:/"(?:[^"]|"")*"/,greedy:!0,alias:`string`},"character-literal":{pattern:/'(?:[\s\S]|[\uD800-\uDBFF][\uDC00-\uDFFF])'/,greedy:!0,alias:`char`},function:/•[\w¯.∞π]+[\w¯.∞π]*/,"dot-notation-on-brackets":{pattern:/\{(?=.*\}\.)|\}\./,alias:`namespace`},"special-name":{pattern:/(?:𝕨|𝕩|𝕗|𝕘|𝕤|𝕣|𝕎|𝕏|𝔽|𝔾|𝕊|_𝕣_|_𝕣)/,alias:`keyword`},"dot-notation-on-name":{pattern:/[A-Za-z_][\w¯∞π]*\./,alias:`namespace`},"word-number-scientific":{pattern:/\d+(?:\.\d+)?[eE]¯?\d+/,alias:`number`},"word-name":{pattern:/[A-Za-z_][\w¯∞π]*/,alias:`symbol`},"word-number":{pattern:/[¯∞π]?(?:\d*\.?\b\d+(?:e[+¯]?\d+|E[+¯]?\d+)?|¯|∞|π)(?:j¯?(?:(?:\d+(?:\.\d+)?|\.\d+)(?:e[+¯]?\d+|E[+¯]?\d+)?|¯|∞|π))?/,alias:`number`},"null-literal":{pattern:/@/,alias:`char`},"primitive-functions":{pattern:/[-+×÷⋆√⌊⌈|¬∧∨<>≠=≤≥≡≢⊣⊢⥊∾≍⋈↑↓↕«»⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔!]/,alias:`operator`},"primitive-1-operators":{pattern:/[`˜˘¨⁼⌜´˝˙]/,alias:`operator`},"primitive-2-operators":{pattern:/[∘⊸⟜○⌾⎉⚇⍟⊘◶⎊]/,alias:`operator`},punctuation:/[←⇐↩(){}⟨⟩[\]‿·⋄,.;:?]/}}xe.displayName=`brainfuck`,xe.aliases=[];function xe(e){e.languages.brainfuck={pointer:{pattern:/<|>/,alias:`keyword`},increment:{pattern:/\+/,alias:`inserted`},decrement:{pattern:/-/,alias:`deleted`},branching:{pattern:/\[|\]/,alias:`important`},operator:/[.,]/,comment:/\S+/}}Se.displayName=`brightscript`,Se.aliases=[];function Se(e){e.languages.brightscript={comment:/(?:\brem|').*/i,"directive-statement":{pattern:/(^[\t ]*)#(?:const|else(?:[\t ]+if)?|end[\t ]+if|error|if).*/im,lookbehind:!0,alias:`property`,inside:{"error-message":{pattern:/(^#error).+/,lookbehind:!0},directive:{pattern:/^#(?:const|else(?:[\t ]+if)?|end[\t ]+if|error|if)/,alias:`keyword`},expression:{pattern:/[\s\S]+/,inside:null}}},property:{pattern:/([\r\n{,][\t ]*)(?:(?!\d)\w+|"(?:[^"\r\n]|"")*"(?!"))(?=[ \t]*:)/,lookbehind:!0,greedy:!0},string:{pattern:/"(?:[^"\r\n]|"")*"(?!")/,greedy:!0},"class-name":{pattern:/(\bAs[\t ]+)\w+/i,lookbehind:!0},keyword:/\b(?:As|Dim|Each|Else|Elseif|End|Exit|For|Function|Goto|If|In|Print|Return|Step|Stop|Sub|Then|To|While)\b/i,boolean:/\b(?:false|true)\b/i,function:/\b(?!\d)\w+(?=[\t ]*\()/,number:/(?:\b\d+(?:\.\d+)?(?:[ed][+-]\d+)?|&h[a-f\d]+)\b[%&!#]?/i,operator:/--|\+\+|>>=?|<<=?|<>|[-+*/\\<>]=?|[:^=?]|\b(?:and|mod|not|or)\b/i,punctuation:/[.,;()[\]{}]/,constant:/\b(?:LINE_NUM)\b/i},e.languages.brightscript[`directive-statement`].inside.expression.inside=e.languages.brightscript}Ce.displayName=`bro`,Ce.aliases=[];function Ce(e){e.languages.bro={comment:{pattern:/(^|[^\\$])#.*/,lookbehind:!0,inside:{italic:/\b(?:FIXME|TODO|XXX)\b/}},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},boolean:/\b[TF]\b/,function:{pattern:/(\b(?:event|function|hook)[ \t]+)\w+(?:::\w+)?/,lookbehind:!0},builtin:/(?:@(?:load(?:-(?:plugin|sigs))?|unload|prefixes|ifn?def|else|(?:end)?if|DIR|FILENAME))|(?:&?(?:add_func|create_expire|default|delete_func|encrypt|error_handler|expire_func|group|log|mergeable|optional|persistent|priority|raw_output|read_expire|redef|rotate_interval|rotate_size|synchronized|type_column|write_expire))/,constant:{pattern:/(\bconst[ \t]+)\w+/i,lookbehind:!0},keyword:/\b(?:add|addr|alarm|any|bool|break|const|continue|count|delete|double|else|enum|event|export|file|for|function|global|hook|if|in|int|interval|local|module|next|of|opaque|pattern|port|print|record|return|schedule|set|string|subnet|table|time|timeout|using|vector|when)\b/,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&|\|\|?|\?|\*|\/|~|\^|%/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,punctuation:/[{}[\];(),.:]/}}we.displayName=`bsl`,we.aliases=[`oscript`];function we(e){e.languages.bsl={comment:/\/\/.*/,string:[{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},{pattern:/'(?:[^'\r\n\\]|\\.)*'/}],keyword:[{pattern:/(^|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:пока|для|новый|прервать|попытка|исключение|вызватьисключение|иначе|конецпопытки|неопределено|функция|перем|возврат|конецфункции|если|иначеесли|процедура|конецпроцедуры|тогда|знач|экспорт|конецесли|из|каждого|истина|ложь|по|цикл|конеццикла|выполнить)(?![\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])/i,lookbehind:!0},{pattern:/\b(?:break|do|each|else|elseif|enddo|endfunction|endif|endprocedure|endtry|except|execute|export|false|for|function|if|in|new|null|procedure|raise|return|then|to|true|try|undefined|val|var|while)\b/i}],number:{pattern:/(^(?=\d)|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:\d+(?:\.\d*)?|\.\d+)(?:E[+-]?\d+)?/i,lookbehind:!0},operator:[/[<>+\-*/]=?|[%=]/,{pattern:/(^|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:и|или|не)(?![\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])/i,lookbehind:!0},{pattern:/\b(?:and|not|or)\b/i}],punctuation:/\(\.|\.\)|[()\[\]:;,.]/,directive:[{pattern:/^([ \t]*)&.*/m,lookbehind:!0,greedy:!0,alias:`important`},{pattern:/^([ \t]*)#.*/gm,lookbehind:!0,greedy:!0,alias:`important`}]},e.languages.oscript=e.languages.bsl}Te.displayName=`cfscript`,Te.aliases=[`cfc`];function Te(e){e.register(S),e.languages.cfscript=e.languages.extend(`clike`,{comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,inside:{annotation:{pattern:/(?:^|[^.])@[\w\.]+/,alias:`punctuation`}}},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],keyword:/\b(?:abstract|break|catch|component|continue|default|do|else|extends|final|finally|for|function|if|in|include|package|private|property|public|remote|required|rethrow|return|static|switch|throw|try|var|while|xml)\b(?!\s*=)/,operator:[/\+\+|--|&&|\|\||::|=>|[!=]==|[-+*/%&|^!=<>]=?|\?(?:\.|:)?|:/,/\b(?:and|contains|eq|equal|eqv|gt|gte|imp|is|lt|lte|mod|not|or|xor)\b/],scope:{pattern:/\b(?:application|arguments|cgi|client|cookie|local|session|super|this|variables)\b/,alias:`global`},type:{pattern:/\b(?:any|array|binary|boolean|date|guid|numeric|query|string|struct|uuid|void|xml)\b/,alias:`builtin`}}),e.languages.insertBefore(`cfscript`,`keyword`,{"function-variable":{pattern:/[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:`function`}}),delete e.languages.cfscript[`class-name`],e.languages.cfc=e.languages.cfscript}Ee.displayName=`chaiscript`,Ee.aliases=[];function Ee(e){e.register(S),e.register(I),e.languages.chaiscript=e.languages.extend(`clike`,{string:{pattern:/(^|[^\\])'(?:[^'\\]|\\[\s\S])*'/,lookbehind:!0,greedy:!0},"class-name":[{pattern:/(\bclass\s+)\w+/,lookbehind:!0},{pattern:/(\b(?:attr|def)\s+)\w+(?=\s*::)/,lookbehind:!0}],keyword:/\b(?:attr|auto|break|case|catch|class|continue|def|default|else|finally|for|fun|global|if|return|switch|this|try|var|while)\b/,number:[e.languages.cpp.number,/\b(?:Infinity|NaN)\b/],operator:/>>=?|<<=?|\|\||&&|:[:=]?|--|\+\+|[=!<>+\-*/%|&^]=?|[?~]|`[^`\r\n]{1,4}`/}),e.languages.insertBefore(`chaiscript`,`operator`,{"parameter-type":{pattern:/([,(]\s*)\w+(?=\s+\w)/,lookbehind:!0,alias:`class-name`}}),e.languages.insertBefore(`chaiscript`,`string`,{"string-interpolation":{pattern:/(^|[^\\])"(?:[^"$\\]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*"/,lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\}/,lookbehind:!0,inside:{"interpolation-expression":{pattern:/(^\$\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:e.languages.chaiscript},"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:`punctuation`}}},string:/[\s\S]+/}}})}De.displayName=`cil`,De.aliases=[];function De(e){e.languages.cil={comment:/\/\/.*/,string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},directive:{pattern:/(^|\W)\.[a-z]+(?=\s)/,lookbehind:!0,alias:`class-name`},variable:/\[[\w\.]+\]/,keyword:/\b(?:abstract|ansi|assembly|auto|autochar|beforefieldinit|bool|bstr|byvalstr|catch|char|cil|class|currency|date|decimal|default|enum|error|explicit|extends|extern|famandassem|family|famorassem|final(?:ly)?|float32|float64|hidebysig|u?int(?:8|16|32|64)?|iant|idispatch|implements|import|initonly|instance|interface|iunknown|literal|lpstr|lpstruct|lptstr|lpwstr|managed|method|native(?:Type)?|nested|newslot|object(?:ref)?|pinvokeimpl|private|privatescope|public|reqsecobj|rtspecialname|runtime|sealed|sequential|serializable|specialname|static|string|struct|syschar|tbstr|unicode|unmanagedexp|unsigned|value(?:type)?|variant|virtual|void)\b/,function:/\b(?:(?:constrained|no|readonly|tail|unaligned|volatile)\.)?(?:conv\.(?:[iu][1248]?|ovf\.[iu][1248]?(?:\.un)?|r\.un|r4|r8)|ldc\.(?:i4(?:\.\d+|\.[mM]1|\.s)?|i8|r4|r8)|ldelem(?:\.[iu][1248]?|\.r[48]|\.ref|a)?|ldind\.(?:[iu][1248]?|r[48]|ref)|stelem\.?(?:i[1248]?|r[48]|ref)?|stind\.(?:i[1248]?|r[48]|ref)?|end(?:fault|filter|finally)|ldarg(?:\.[0-3s]|a(?:\.s)?)?|ldloc(?:\.\d+|\.s)?|sub(?:\.ovf(?:\.un)?)?|mul(?:\.ovf(?:\.un)?)?|add(?:\.ovf(?:\.un)?)?|stloc(?:\.[0-3s])?|refany(?:type|val)|blt(?:\.un)?(?:\.s)?|ble(?:\.un)?(?:\.s)?|bgt(?:\.un)?(?:\.s)?|bge(?:\.un)?(?:\.s)?|unbox(?:\.any)?|init(?:blk|obj)|call(?:i|virt)?|brfalse(?:\.s)?|bne\.un(?:\.s)?|ldloca(?:\.s)?|brzero(?:\.s)?|brtrue(?:\.s)?|brnull(?:\.s)?|brinst(?:\.s)?|starg(?:\.s)?|leave(?:\.s)?|shr(?:\.un)?|rem(?:\.un)?|div(?:\.un)?|clt(?:\.un)?|alignment|castclass|ldvirtftn|beq(?:\.s)?|ckfinite|ldsflda|ldtoken|localloc|mkrefany|rethrow|cgt\.un|arglist|switch|stsfld|sizeof|newobj|newarr|ldsfld|ldnull|ldflda|isinst|throw|stobj|stfld|ldstr|ldobj|ldlen|ldftn|ldfld|cpobj|cpblk|break|br\.s|xor|shl|ret|pop|not|nop|neg|jmp|dup|cgt|ceq|box|and|or|br)\b/,boolean:/\b(?:false|true)\b/,number:/\b-?(?:0x[0-9a-f]+|\d+)(?:\.[0-9a-f]+)?\b/i,punctuation:/[{}[\];(),:=]|IL_[0-9A-Za-z]+/}}Oe.displayName=`cilkc`,Oe.aliases=[`cilk-c`];function Oe(e){e.register(F),e.languages.cilkc=e.languages.insertBefore(`c`,`function`,{"parallel-keyword":{pattern:/\bcilk_(?:for|reducer|s(?:cope|pawn|ync))\b/,alias:`keyword`}}),e.languages[`cilk-c`]=e.languages.cilkc}ke.displayName=`cilkcpp`,ke.aliases=[`cilk`,`cilk-cpp`];function ke(e){e.register(I),e.languages.cilkcpp=e.languages.insertBefore(`cpp`,`function`,{"parallel-keyword":{pattern:/\bcilk_(?:for|reducer|s(?:cope|pawn|ync))\b/,alias:`keyword`}}),e.languages[`cilk-cpp`]=e.languages.cilkcpp,e.languages.cilk=e.languages.cilkcpp}Ae.displayName=`clojure`,Ae.aliases=[];function Ae(e){e.languages.clojure={comment:{pattern:/;.*/,greedy:!0},string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0},char:/\\\w+/,symbol:{pattern:/(^|[\s()\[\]{},])::?[\w*+!?'<>=/.-]+/,lookbehind:!0},keyword:{pattern:/(\()(?:-|->|->>|\.|\.\.|\*|\/|\+|<|<=|=|==|>|>=|accessor|agent|agent-errors|aget|alength|all-ns|alter|and|append-child|apply|array-map|aset|aset-boolean|aset-byte|aset-char|aset-double|aset-float|aset-int|aset-long|aset-short|assert|assoc|await|await-for|bean|binding|bit-and|bit-not|bit-or|bit-shift-left|bit-shift-right|bit-xor|boolean|branch\?|butlast|byte|cast|char|children|class|clear-agent-errors|comment|commute|comp|comparator|complement|concat|cond|conj|cons|constantly|construct-proxy|contains\?|count|create-ns|create-struct|cycle|dec|declare|def|def-|definline|definterface|defmacro|defmethod|defmulti|defn|defn-|defonce|defproject|defprotocol|defrecord|defstruct|deftype|deref|difference|disj|dissoc|distinct|do|doall|doc|dorun|doseq|dosync|dotimes|doto|double|down|drop|drop-while|edit|end\?|ensure|eval|every\?|false\?|ffirst|file-seq|filter|find|find-doc|find-ns|find-var|first|float|flush|fn|fnseq|for|frest|gensym|get|get-proxy-class|hash-map|hash-set|identical\?|identity|if|if-let|if-not|import|in-ns|inc|index|insert-child|insert-left|insert-right|inspect-table|inspect-tree|instance\?|int|interleave|intersection|into|into-array|iterate|join|key|keys|keyword|keyword\?|last|lazy-cat|lazy-cons|left|lefts|let|line-seq|list|list\*|load|load-file|locking|long|loop|macroexpand|macroexpand-1|make-array|make-node|map|map-invert|map\?|mapcat|max|max-key|memfn|merge|merge-with|meta|min|min-key|monitor-enter|name|namespace|neg\?|new|newline|next|nil\?|node|not|not-any\?|not-every\?|not=|ns|ns-imports|ns-interns|ns-map|ns-name|ns-publics|ns-refers|ns-resolve|ns-unmap|nth|nthrest|or|parse|partial|path|peek|pop|pos\?|pr|pr-str|print|print-str|println|println-str|prn|prn-str|project|proxy|proxy-mappings|quot|quote|rand|rand-int|range|re-find|re-groups|re-matcher|re-matches|re-pattern|re-seq|read|read-line|recur|reduce|ref|ref-set|refer|rem|remove|remove-method|remove-ns|rename|rename-keys|repeat|replace|replicate|resolve|rest|resultset-seq|reverse|rfirst|right|rights|root|rrest|rseq|second|select|select-keys|send|send-off|seq|seq-zip|seq\?|set|set!|short|slurp|some|sort|sort-by|sorted-map|sorted-map-by|sorted-set|special-symbol\?|split-at|split-with|str|string\?|struct|struct-map|subs|subvec|symbol|symbol\?|sync|take|take-nth|take-while|test|throw|time|to-array|to-array-2d|tree-seq|true\?|try|union|up|update-proxy|val|vals|var|var-get|var-set|var\?|vector|vector-zip|vector\?|when|when-first|when-let|when-not|with-local-vars|with-meta|with-open|with-out-str|xml-seq|xml-zip|zero\?|zipmap|zipper)(?=[\s)]|$)/,lookbehind:!0},boolean:/\b(?:false|nil|true)\b/,number:{pattern:/(^|[^\w$@])(?:\d+(?:[/.]\d+)?(?:e[+-]?\d+)?|0x[a-f0-9]+|[1-9]\d?r[a-z0-9]+)[lmn]?(?![\w$@])/i,lookbehind:!0},function:{pattern:/((?:^|[^'])\()[\w*+!?'<>=/.-]+(?=[\s)]|$)/,lookbehind:!0},operator:/[#@^`~]/,punctuation:/[{}\[\](),]/}}je.displayName=`cmake`,je.aliases=[];function je(e){e.languages.cmake={comment:/#.*/,string:{pattern:/"(?:[^\\"]|\\.)*"/,greedy:!0,inside:{interpolation:{pattern:/\$\{(?:[^{}$]|\$\{[^{}$]*\})*\}/,inside:{punctuation:/\$\{|\}/,variable:/\w+/}}}},variable:/\b(?:CMAKE_\w+|\w+_(?:(?:BINARY|SOURCE)_DIR|DESCRIPTION|HOMEPAGE_URL|ROOT|VERSION(?:_MAJOR|_MINOR|_PATCH|_TWEAK)?)|(?:ANDROID|APPLE|BORLAND|BUILD_SHARED_LIBS|CACHE|CPACK_(?:ABSOLUTE_DESTINATION_FILES|COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY|ERROR_ON_ABSOLUTE_INSTALL_DESTINATION|INCLUDE_TOPLEVEL_DIRECTORY|INSTALL_DEFAULT_DIRECTORY_PERMISSIONS|INSTALL_SCRIPT|PACKAGING_INSTALL_PREFIX|SET_DESTDIR|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|CTEST_(?:BINARY_DIRECTORY|BUILD_COMMAND|BUILD_NAME|BZR_COMMAND|BZR_UPDATE_OPTIONS|CHANGE_ID|CHECKOUT_COMMAND|CONFIGURATION_TYPE|CONFIGURE_COMMAND|COVERAGE_COMMAND|COVERAGE_EXTRA_FLAGS|CURL_OPTIONS|CUSTOM_(?:COVERAGE_EXCLUDE|ERROR_EXCEPTION|ERROR_MATCH|ERROR_POST_CONTEXT|ERROR_PRE_CONTEXT|MAXIMUM_FAILED_TEST_OUTPUT_SIZE|MAXIMUM_NUMBER_OF_(?:ERRORS|WARNINGS)|MAXIMUM_PASSED_TEST_OUTPUT_SIZE|MEMCHECK_IGNORE|POST_MEMCHECK|POST_TEST|PRE_MEMCHECK|PRE_TEST|TESTS_IGNORE|WARNING_EXCEPTION|WARNING_MATCH)|CVS_CHECKOUT|CVS_COMMAND|CVS_UPDATE_OPTIONS|DROP_LOCATION|DROP_METHOD|DROP_SITE|DROP_SITE_CDASH|DROP_SITE_PASSWORD|DROP_SITE_USER|EXTRA_COVERAGE_GLOB|GIT_COMMAND|GIT_INIT_SUBMODULES|GIT_UPDATE_CUSTOM|GIT_UPDATE_OPTIONS|HG_COMMAND|HG_UPDATE_OPTIONS|LABELS_FOR_SUBPROJECTS|MEMORYCHECK_(?:COMMAND|COMMAND_OPTIONS|SANITIZER_OPTIONS|SUPPRESSIONS_FILE|TYPE)|NIGHTLY_START_TIME|P4_CLIENT|P4_COMMAND|P4_OPTIONS|P4_UPDATE_OPTIONS|RUN_CURRENT_SCRIPT|SCP_COMMAND|SITE|SOURCE_DIRECTORY|SUBMIT_URL|SVN_COMMAND|SVN_OPTIONS|SVN_UPDATE_OPTIONS|TEST_LOAD|TEST_TIMEOUT|TRIGGER_SITE|UPDATE_COMMAND|UPDATE_OPTIONS|UPDATE_VERSION_ONLY|USE_LAUNCHERS)|CYGWIN|ENV|EXECUTABLE_OUTPUT_PATH|GHS-MULTI|IOS|LIBRARY_OUTPUT_PATH|MINGW|MSVC(?:10|11|12|14|60|70|71|80|90|_IDE|_TOOLSET_VERSION|_VERSION)?|MSYS|PROJECT_NAME|UNIX|WIN32|WINCE|WINDOWS_PHONE|WINDOWS_STORE|XCODE))\b/,property:/\b(?:cxx_\w+|(?:ARCHIVE_OUTPUT_(?:DIRECTORY|NAME)|COMPILE_DEFINITIONS|COMPILE_PDB_NAME|COMPILE_PDB_OUTPUT_DIRECTORY|EXCLUDE_FROM_DEFAULT_BUILD|IMPORTED_(?:IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_LANGUAGES|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|NO_SONAME|OBJECTS|SONAME)|INTERPROCEDURAL_OPTIMIZATION|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_OUTPUT_NAME|LINK_FLAGS|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_NAME|PDB_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_NAME|STATIC_LIBRARY_FLAGS|VS_CSHARP|VS_DOTNET_REFERENCEPROP|VS_DOTNET_REFERENCE|VS_GLOBAL_SECTION_POST|VS_GLOBAL_SECTION_PRE|VS_GLOBAL|XCODE_ATTRIBUTE)_\w+|\w+_(?:CLANG_TIDY|COMPILER_LAUNCHER|CPPCHECK|CPPLINT|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|VISIBILITY_PRESET)|ABSTRACT|ADDITIONAL_MAKE_CLEAN_FILES|ADVANCED|ALIASED_TARGET|ALLOW_DUPLICATE_CUSTOM_TARGETS|ANDROID_(?:ANT_ADDITIONAL_OPTIONS|API|API_MIN|ARCH|ASSETS_DIRECTORIES|GUI|JAR_DEPENDENCIES|NATIVE_LIB_DEPENDENCIES|NATIVE_LIB_DIRECTORIES|PROCESS_MAX|PROGUARD|PROGUARD_CONFIG_PATH|SECURE_PROPS_PATH|SKIP_ANT_STEP|STL_TYPE)|ARCHIVE_OUTPUT_DIRECTORY|ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|AUTOGEN_(?:BUILD_DIR|ORIGIN_DEPENDS|PARALLEL|SOURCE_GROUP|TARGETS_FOLDER|TARGET_DEPENDS)|AUTOMOC|AUTOMOC_(?:COMPILER_PREDEFINES|DEPEND_FILTERS|EXECUTABLE|MACRO_NAMES|MOC_OPTIONS|SOURCE_GROUP|TARGETS_FOLDER)|AUTORCC|AUTORCC_EXECUTABLE|AUTORCC_OPTIONS|AUTORCC_SOURCE_GROUP|AUTOUIC|AUTOUIC_EXECUTABLE|AUTOUIC_OPTIONS|AUTOUIC_SEARCH_PATHS|BINARY_DIR|BUILDSYSTEM_TARGETS|BUILD_RPATH|BUILD_RPATH_USE_ORIGIN|BUILD_WITH_INSTALL_NAME_DIR|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE_EXTENSION|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMMON_LANGUAGE_RUNTIME|COMPATIBLE_INTERFACE_(?:BOOL|NUMBER_MAX|NUMBER_MIN|STRING)|COMPILE_(?:DEFINITIONS|FEATURES|FLAGS|OPTIONS|PDB_NAME|PDB_OUTPUT_DIRECTORY)|COST|CPACK_DESKTOP_SHORTCUTS|CPACK_NEVER_OVERWRITE|CPACK_PERMANENT|CPACK_STARTUP_SHORTCUTS|CPACK_START_MENU_SHORTCUTS|CPACK_WIX_ACL|CROSSCOMPILING_EMULATOR|CUDA_EXTENSIONS|CUDA_PTX_COMPILATION|CUDA_RESOLVE_DEVICE_SYMBOLS|CUDA_SEPARABLE_COMPILATION|CUDA_STANDARD|CUDA_STANDARD_REQUIRED|CXX_EXTENSIONS|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_EXTENSIONS|C_STANDARD|C_STANDARD_REQUIRED|DEBUG_CONFIGURATIONS|DEFINE_SYMBOL|DEFINITIONS|DEPENDS|DEPLOYMENT_ADDITIONAL_FILES|DEPLOYMENT_REMOTE_DIRECTORY|DISABLED|DISABLED_FEATURES|ECLIPSE_EXTRA_CPROJECT_CONTENTS|ECLIPSE_EXTRA_NATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|ENABLE_EXPORTS|ENVIRONMENT|EXCLUDE_FROM_ALL|EXCLUDE_FROM_DEFAULT_BUILD|EXPORT_NAME|EXPORT_PROPERTIES|EXTERNAL_OBJECT|EchoString|FAIL_REGULAR_EXPRESSION|FIND_LIBRARY_USE_LIB32_PATHS|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_LIBX32_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|FIXTURES_CLEANUP|FIXTURES_REQUIRED|FIXTURES_SETUP|FOLDER|FRAMEWORK|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GENERATED|GENERATOR_FILE_NAME|GENERATOR_IS_MULTI_CONFIG|GHS_INTEGRITY_APP|GHS_NO_SOURCE_GROUP_FILE|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|GNUtoMS|HAS_CXX|HEADER_FILE_ONLY|HELPSTRING|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(?:COMMON_LANGUAGE_RUNTIME|CONFIGURATIONS|GLOBAL|IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_(?:LANGUAGES|LIBRARIES|MULTIPLICITY)|LOCATION|NO_SONAME|OBJECTS|SONAME)|IMPORT_PREFIX|IMPORT_SUFFIX|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE_(?:AUTOUIC_OPTIONS|COMPILE_DEFINITIONS|COMPILE_FEATURES|COMPILE_OPTIONS|INCLUDE_DIRECTORIES|LINK_DEPENDS|LINK_DIRECTORIES|LINK_LIBRARIES|LINK_OPTIONS|POSITION_INDEPENDENT_CODE|SOURCES|SYSTEM_INCLUDE_DIRECTORIES)|INTERPROCEDURAL_OPTIMIZATION|IN_TRY_COMPILE|IOS_INSTALL_COMBINED|JOB_POOLS|JOB_POOL_COMPILE|JOB_POOL_LINK|KEEP_EXTENSION|LABELS|LANGUAGE|LIBRARY_OUTPUT_DIRECTORY|LINKER_LANGUAGE|LINK_(?:DEPENDS|DEPENDS_NO_SHARED|DIRECTORIES|FLAGS|INTERFACE_LIBRARIES|INTERFACE_MULTIPLICITY|LIBRARIES|OPTIONS|SEARCH_END_STATIC|SEARCH_START_STATIC|WHAT_YOU_USE)|LISTFILE_STACK|LOCATION|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MACOSX_PACKAGE_LOCATION|MACOSX_RPATH|MACROS|MANUALLY_ADDED_DEPENDENCIES|MEASUREMENT|MODIFIED|NAME|NO_SONAME|NO_SYSTEM_FROM_IMPORTED|OBJECT_DEPENDS|OBJECT_OUTPUTS|OSX_ARCHITECTURES|OUTPUT_NAME|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PARENT_DIRECTORY|PASS_REGULAR_EXPRESSION|PDB_NAME|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|POST_INSTALL_SCRIPT|PREDEFINED_TARGETS_FOLDER|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE_HEADER|PROCESSORS|PROCESSOR_AFFINITY|PROJECT_LABEL|PUBLIC_HEADER|REPORT_UNDEFINED_PROPERTIES|REQUIRED_FILES|RESOURCE|RESOURCE_LOCK|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|RUNTIME_OUTPUT_DIRECTORY|RUN_SERIAL|SKIP_AUTOGEN|SKIP_AUTOMOC|SKIP_AUTORCC|SKIP_AUTOUIC|SKIP_BUILD_RPATH|SKIP_RETURN_CODE|SOURCES|SOURCE_DIR|SOVERSION|STATIC_LIBRARY_FLAGS|STATIC_LIBRARY_OPTIONS|STRINGS|SUBDIRECTORIES|SUFFIX|SYMBOLIC|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_MESSAGES|TARGET_SUPPORTS_SHARED_LIBS|TESTS|TEST_INCLUDE_FILE|TEST_INCLUDE_FILES|TIMEOUT|TIMEOUT_AFTER_MATCH|TYPE|USE_FOLDERS|VALUE|VARIABLES|VERSION|VISIBILITY_INLINES_HIDDEN|VS_(?:CONFIGURATION_TYPE|COPY_TO_OUT_DIR|DEBUGGER_(?:COMMAND|COMMAND_ARGUMENTS|ENVIRONMENT|WORKING_DIRECTORY)|DEPLOYMENT_CONTENT|DEPLOYMENT_LOCATION|DOTNET_REFERENCES|DOTNET_REFERENCES_COPY_LOCAL|INCLUDE_IN_VSIX|IOT_STARTUP_TASK|KEYWORD|RESOURCE_GENERATOR|SCC_AUXPATH|SCC_LOCALPATH|SCC_PROJECTNAME|SCC_PROVIDER|SDK_REFERENCES|SHADER_(?:DISABLE_OPTIMIZATIONS|ENABLE_DEBUG|ENTRYPOINT|FLAGS|MODEL|OBJECT_FILE_NAME|OUTPUT_HEADER_FILE|TYPE|VARIABLE_NAME)|STARTUP_PROJECT|TOOL_OVERRIDE|USER_PROPS|WINRT_COMPONENT|WINRT_EXTENSIONS|WINRT_REFERENCES|XAML_TYPE)|WILL_FAIL|WIN32_EXECUTABLE|WINDOWS_EXPORT_ALL_SYMBOLS|WORKING_DIRECTORY|WRAP_EXCLUDE|XCODE_(?:EMIT_EFFECTIVE_PLATFORM_NAME|EXPLICIT_FILE_TYPE|FILE_ATTRIBUTES|LAST_KNOWN_FILE_TYPE|PRODUCT_TYPE|SCHEME_(?:ADDRESS_SANITIZER|ADDRESS_SANITIZER_USE_AFTER_RETURN|ARGUMENTS|DISABLE_MAIN_THREAD_CHECKER|DYNAMIC_LIBRARY_LOADS|DYNAMIC_LINKER_API_USAGE|ENVIRONMENT|EXECUTABLE|GUARD_MALLOC|MAIN_THREAD_CHECKER_STOP|MALLOC_GUARD_EDGES|MALLOC_SCRIBBLE|MALLOC_STACK|THREAD_SANITIZER(?:_STOP)?|UNDEFINED_BEHAVIOUR_SANITIZER(?:_STOP)?|ZOMBIE_OBJECTS))|XCTEST)\b/,keyword:/\b(?:add_compile_definitions|add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_link_options|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_parse_arguments|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_guard|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_directories|target_link_libraries|target_link_options|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)(?=\s*\()\b/,boolean:/\b(?:FALSE|OFF|ON|TRUE)\b/,namespace:/\b(?:INTERFACE|PRIVATE|PROPERTIES|PUBLIC|SHARED|STATIC|TARGET_OBJECTS)\b/,operator:/\b(?:AND|DEFINED|EQUAL|GREATER|LESS|MATCHES|NOT|OR|STREQUAL|STRGREATER|STRLESS|VERSION_EQUAL|VERSION_GREATER|VERSION_LESS)\b/,inserted:{pattern:/\b\w+::\w+\b/,alias:`class-name`},number:/\b\d+(?:\.\d+)*\b/,function:/\b[a-z_]\w*(?=\s*\()\b/i,punctuation:/[()>}]|\$[<{]/}}Me.displayName=`cobol`,Me.aliases=[];function Me(e){e.languages.cobol={comment:{pattern:/\*>.*|(^[ \t]*)\*.*/m,lookbehind:!0,greedy:!0},string:{pattern:/[xzgn]?(?:"(?:[^\r\n"]|"")*"(?!")|'(?:[^\r\n']|'')*'(?!'))/i,greedy:!0},level:{pattern:/(^[ \t]*)\d+\b/m,lookbehind:!0,greedy:!0,alias:`number`},"class-name":{pattern:/(\bpic(?:ture)?\s+)(?:(?:[-\w$/,:*+<>]|\.(?!\s|$))(?:\(\d+\))?)+/i,lookbehind:!0,inside:{number:{pattern:/(\()\d+/,lookbehind:!0},punctuation:/[()]/}},keyword:{pattern:/(^|[^\w-])(?:ABORT|ACCEPT|ACCESS|ADD|ADDRESS|ADVANCING|AFTER|ALIGNED|ALL|ALPHABET|ALPHABETIC|ALPHABETIC-LOWER|ALPHABETIC-UPPER|ALPHANUMERIC|ALPHANUMERIC-EDITED|ALSO|ALTER|ALTERNATE|ANY|ARE|AREA|AREAS|AS|ASCENDING|ASCII|ASSIGN|ASSOCIATED-DATA|ASSOCIATED-DATA-LENGTH|AT|ATTRIBUTE|AUTHOR|AUTO|AUTO-SKIP|BACKGROUND-COLOR|BACKGROUND-COLOUR|BASIS|BEEP|BEFORE|BEGINNING|BELL|BINARY|BIT|BLANK|BLINK|BLOCK|BOTTOM|BOUNDS|BY|BYFUNCTION|BYTITLE|CALL|CANCEL|CAPABLE|CCSVERSION|CD|CF|CH|CHAINING|CHANGED|CHANNEL|CHARACTER|CHARACTERS|CLASS|CLASS-ID|CLOCK-UNITS|CLOSE|CLOSE-DISPOSITION|COBOL|CODE|CODE-SET|COL|COLLATING|COLUMN|COM-REG|COMMA|COMMITMENT|COMMON|COMMUNICATION|COMP|COMP-1|COMP-2|COMP-3|COMP-4|COMP-5|COMPUTATIONAL|COMPUTATIONAL-1|COMPUTATIONAL-2|COMPUTATIONAL-3|COMPUTATIONAL-4|COMPUTATIONAL-5|COMPUTE|CONFIGURATION|CONTAINS|CONTENT|CONTINUE|CONTROL|CONTROL-POINT|CONTROLS|CONVENTION|CONVERTING|COPY|CORR|CORRESPONDING|COUNT|CRUNCH|CURRENCY|CURSOR|DATA|DATA-BASE|DATE|DATE-COMPILED|DATE-WRITTEN|DAY|DAY-OF-WEEK|DBCS|DE|DEBUG-CONTENTS|DEBUG-ITEM|DEBUG-LINE|DEBUG-NAME|DEBUG-SUB-1|DEBUG-SUB-2|DEBUG-SUB-3|DEBUGGING|DECIMAL-POINT|DECLARATIVES|DEFAULT|DEFAULT-DISPLAY|DEFINITION|DELETE|DELIMITED|DELIMITER|DEPENDING|DESCENDING|DESTINATION|DETAIL|DFHRESP|DFHVALUE|DISABLE|DISK|DISPLAY|DISPLAY-1|DIVIDE|DIVISION|DONTCARE|DOUBLE|DOWN|DUPLICATES|DYNAMIC|EBCDIC|EGCS|EGI|ELSE|EMI|EMPTY-CHECK|ENABLE|END|END-ACCEPT|END-ADD|END-CALL|END-COMPUTE|END-DELETE|END-DIVIDE|END-EVALUATE|END-IF|END-MULTIPLY|END-OF-PAGE|END-PERFORM|END-READ|END-RECEIVE|END-RETURN|END-REWRITE|END-SEARCH|END-START|END-STRING|END-SUBTRACT|END-UNSTRING|END-WRITE|ENDING|ENTER|ENTRY|ENTRY-PROCEDURE|ENVIRONMENT|EOL|EOP|EOS|ERASE|ERROR|ESCAPE|ESI|EVALUATE|EVENT|EVERY|EXCEPTION|EXCLUSIVE|EXHIBIT|EXIT|EXPORT|EXTEND|EXTENDED|EXTERNAL|FD|FILE|FILE-CONTROL|FILLER|FINAL|FIRST|FOOTING|FOR|FOREGROUND-COLOR|FOREGROUND-COLOUR|FROM|FULL|FUNCTION|FUNCTION-POINTER|FUNCTIONNAME|GENERATE|GIVING|GLOBAL|GO|GOBACK|GRID|GROUP|HEADING|HIGH-VALUE|HIGH-VALUES|HIGHLIGHT|I-O|I-O-CONTROL|ID|IDENTIFICATION|IF|IMPLICIT|IMPORT|IN|INDEX|INDEXED|INDICATE|INITIAL|INITIALIZE|INITIATE|INPUT|INPUT-OUTPUT|INSPECT|INSTALLATION|INTEGER|INTO|INVALID|INVOKE|IS|JUST|JUSTIFIED|KANJI|KEPT|KEY|KEYBOARD|LABEL|LANGUAGE|LAST|LB|LD|LEADING|LEFT|LEFTLINE|LENGTH|LENGTH-CHECK|LIBACCESS|LIBPARAMETER|LIBRARY|LIMIT|LIMITS|LINAGE|LINAGE-COUNTER|LINE|LINE-COUNTER|LINES|LINKAGE|LIST|LOCAL|LOCAL-STORAGE|LOCK|LONG-DATE|LONG-TIME|LOW-VALUE|LOW-VALUES|LOWER|LOWLIGHT|MEMORY|MERGE|MESSAGE|MMDDYYYY|MODE|MODULES|MORE-LABELS|MOVE|MULTIPLE|MULTIPLY|NAMED|NATIONAL|NATIONAL-EDITED|NATIVE|NEGATIVE|NETWORK|NEXT|NO|NO-ECHO|NULL|NULLS|NUMBER|NUMERIC|NUMERIC-DATE|NUMERIC-EDITED|NUMERIC-TIME|OBJECT-COMPUTER|OCCURS|ODT|OF|OFF|OMITTED|ON|OPEN|OPTIONAL|ORDER|ORDERLY|ORGANIZATION|OTHER|OUTPUT|OVERFLOW|OVERLINE|OWN|PACKED-DECIMAL|PADDING|PAGE|PAGE-COUNTER|PASSWORD|PERFORM|PF|PH|PIC|PICTURE|PLUS|POINTER|PORT|POSITION|POSITIVE|PRINTER|PRINTING|PRIVATE|PROCEDURE|PROCEDURE-POINTER|PROCEDURES|PROCEED|PROCESS|PROGRAM|PROGRAM-ID|PROGRAM-LIBRARY|PROMPT|PURGE|QUEUE|QUOTE|QUOTES|RANDOM|RD|READ|READER|REAL|RECEIVE|RECEIVED|RECORD|RECORDING|RECORDS|RECURSIVE|REDEFINES|REEL|REF|REFERENCE|REFERENCES|RELATIVE|RELEASE|REMAINDER|REMARKS|REMOTE|REMOVAL|REMOVE|RENAMES|REPLACE|REPLACING|REPORT|REPORTING|REPORTS|REQUIRED|RERUN|RESERVE|RESET|RETURN|RETURN-CODE|RETURNING|REVERSE-VIDEO|REVERSED|REWIND|REWRITE|RF|RH|RIGHT|ROUNDED|RUN|SAME|SAVE|SCREEN|SD|SEARCH|SECTION|SECURE|SECURITY|SEGMENT|SEGMENT-LIMIT|SELECT|SEND|SENTENCE|SEPARATE|SEQUENCE|SEQUENTIAL|SET|SHARED|SHAREDBYALL|SHAREDBYRUNUNIT|SHARING|SHIFT-IN|SHIFT-OUT|SHORT-DATE|SIGN|SIZE|SORT|SORT-CONTROL|SORT-CORE-SIZE|SORT-FILE-SIZE|SORT-MERGE|SORT-MESSAGE|SORT-MODE-SIZE|SORT-RETURN|SOURCE|SOURCE-COMPUTER|SPACE|SPACES|SPECIAL-NAMES|STANDARD|STANDARD-1|STANDARD-2|START|STATUS|STOP|STRING|SUB-QUEUE-1|SUB-QUEUE-2|SUB-QUEUE-3|SUBTRACT|SUM|SUPPRESS|SYMBOL|SYMBOLIC|SYNC|SYNCHRONIZED|TABLE|TALLY|TALLYING|TAPE|TASK|TERMINAL|TERMINATE|TEST|TEXT|THEN|THREAD|THREAD-LOCAL|THROUGH|THRU|TIME|TIMER|TIMES|TITLE|TO|TODAYS-DATE|TODAYS-NAME|TOP|TRAILING|TRUNCATED|TYPE|TYPEDEF|UNDERLINE|UNIT|UNSTRING|UNTIL|UP|UPON|USAGE|USE|USING|VALUE|VALUES|VARYING|VIRTUAL|WAIT|WHEN|WHEN-COMPILED|WITH|WORDS|WORKING-STORAGE|WRITE|YEAR|YYYYDDD|YYYYMMDD|ZERO-FILL|ZEROES|ZEROS)(?![\w-])/i,lookbehind:!0},boolean:{pattern:/(^|[^\w-])(?:false|true)(?![\w-])/i,lookbehind:!0},number:{pattern:/(^|[^\w-])(?:[+-]?(?:(?:\d+(?:[.,]\d+)?|[.,]\d+)(?:e[+-]?\d+)?|zero))(?![\w-])/i,lookbehind:!0},operator:[/<>|[<>]=?|[=+*/&]/,{pattern:/(^|[^\w-])(?:-|and|equal|greater|less|not|or|than)(?![\w-])/i,lookbehind:!0}],punctuation:/[.:,()]/}}Ne.displayName=`coffeescript`,Ne.aliases=[`coffee`];function Ne(e){e.register(C),(function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:`variable`};e.languages.coffeescript=e.languages.extend(`javascript`,{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:`variable`}}),e.languages.insertBefore(`coffeescript`,`comment`,{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:`comment`},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:`regex`,inside:{comment:t,interpolation:n}}}),e.languages.insertBefore(`coffeescript`,`string`,{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:`punctuation`},script:{pattern:/[\s\S]+/,alias:`language-javascript`,inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:`string`},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:`string`,inside:{interpolation:n}}]}),e.languages.insertBefore(`coffeescript`,`keyword`,{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript[`template-string`],e.languages.coffee=e.languages.coffeescript})(e)}Pe.displayName=`concurnas`,Pe.aliases=[`conc`];function Pe(e){e.languages.concurnas={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?(?:\*\/|$)|\/\/.*)/,lookbehind:!0,greedy:!0},langext:{pattern:/\b\w+\s*\|\|[\s\S]+?\|\|/,greedy:!0,inside:{"class-name":/^\w+/,string:{pattern:/(^\s*\|\|)[\s\S]+(?=\|\|$)/,lookbehind:!0},punctuation:/\|\|/}},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/,lookbehind:!0},keyword:/\b(?:abstract|actor|also|annotation|assert|async|await|bool|boolean|break|byte|case|catch|changed|char|class|closed|constant|continue|def|default|del|double|elif|else|enum|every|extends|false|finally|float|for|from|global|gpudef|gpukernel|if|import|in|init|inject|int|lambda|local|long|loop|match|new|nodefault|null|of|onchange|open|out|override|package|parfor|parforsync|post|pre|private|protected|provide|provider|public|return|shared|short|single|size_t|sizeof|super|sync|this|throw|trait|trans|transient|true|try|typedef|unchecked|using|val|var|void|while|with)\b/,boolean:/\b(?:false|true)\b/,number:/\b0b[01][01_]*L?\b|\b0x(?:[\da-f_]*\.)?[\da-f_p+-]+\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfls]?/i,punctuation:/[{}[\];(),.:]/,operator:/<==|>==|=>|->|<-|<>|&==|&<>|\?:?|\.\?|\+\+|--|[-+*/=<>]=?|[!^~]|\b(?:and|as|band|bor|bxor|comp|is|isnot|mod|or)\b=?/,annotation:{pattern:/@(?:\w+:)?(?:\w+|\[[^\]]+\])?/,alias:`builtin`}},e.languages.insertBefore(`concurnas`,`langext`,{"regex-literal":{pattern:/\br("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:e.languages.concurnas},regex:/[\s\S]+/}},"string-literal":{pattern:/(?:\B|\bs)("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:e.languages.concurnas},string:/[\s\S]+/}}}),e.languages.conc=e.languages.concurnas}Fe.displayName=`cooklang`,Fe.aliases=[];function Fe(e){(function(e){var t=`(?:(?!\\s)[\\d$+<=a-zA-Z\\x80-\\uFFFF])+`,n=`[^{}@#]+`,r=n+`\\{[^}#@]*\\}`,i=`(?:h|hours|hrs|m|min|minutes)`,a={pattern:/\{[^{}]*\}/,inside:{amount:{pattern:/([\{|])[^{}|*%]+/,lookbehind:!0,alias:`number`},unit:{pattern:/(%)[^}]+/,lookbehind:!0,alias:`symbol`},"servings-scaler":{pattern:/\*/,alias:`operator`},"servings-alternative-separator":{pattern:/\|/,alias:`operator`},"unit-separator":{pattern:/(?:%|(\*)%)/,lookbehind:!0,alias:`operator`},punctuation:/[{}]/}};e.languages.cooklang={comment:{pattern:/\[-[\s\S]*?-\]|--.*/,greedy:!0},meta:{pattern:/>>.*:.*/,inside:{property:{pattern:/(>>\s*)[^\s:](?:[^:]*[^\s:])?/,lookbehind:!0}}},"cookware-group":{pattern:RegExp(`#(?:`+r+`|`+t+`)`),inside:{cookware:{pattern:RegExp(`(^#)(?:`+n+`)`),lookbehind:!0,alias:`variable`},"cookware-keyword":{pattern:/^#/,alias:`keyword`},"quantity-group":{pattern:new RegExp(/\{[^{}@#]*\}/),inside:{quantity:{pattern:RegExp(`(^\\{)`+n),lookbehind:!0,alias:`number`},punctuation:/[{}]/}}}},"ingredient-group":{pattern:RegExp(`@(?:`+r+`|`+t+`)`),inside:{ingredient:{pattern:RegExp(`(^@)(?:`+n+`)`),lookbehind:!0,alias:`variable`},"ingredient-keyword":{pattern:/^@/,alias:`keyword`},"amount-group":a}},"timer-group":{pattern:/~(?!\s)[^@#~{}]*\{[^{}]*\}/,inside:{timer:{pattern:/(^~)[^{]+/,lookbehind:!0,alias:`variable`},"duration-group":{pattern:/\{[^{}]*\}/,inside:{punctuation:/[{}]/,unit:{pattern:RegExp(`(%\\s*)`+i+`\\b`),lookbehind:!0,alias:`symbol`},operator:/%/,duration:{pattern:/\d+/,alias:`number`}}},"timer-keyword":{pattern:/^~/,alias:`keyword`}}}}})(e)}Ie.displayName=`coq`,Ie.aliases=[];function Ie(e){(function(e){for(var t=`\\(\\*(?:[^(*]|\\((?!\\*)|\\*(?!\\))|)*\\*\\)`,n=0;n<2;n++)t=t.replace(//g,function(){return t});t=t.replace(//g,`[]`),e.languages.coq={comment:RegExp(t),string:{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},attribute:[{pattern:RegExp(`#\\[(?:[^\\[\\]("]|"(?:[^"]|"")*"(?!")|\\((?!\\*)|)*\\]`.replace(//g,function(){return t})),greedy:!0,alias:`attr-name`,inside:{comment:RegExp(t),string:{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},operator:/=/,punctuation:/^#\[|\]$|[,()]/}},{pattern:/\b(?:Cumulative|Global|Local|Monomorphic|NonCumulative|Polymorphic|Private|Program)\b/,alias:`attr-name`}],keyword:/\b(?:Abort|About|Add|Admit|Admitted|All|Arguments|As|Assumptions|Axiom|Axioms|Back|BackTo|Backtrace|BinOp|BinOpSpec|BinRel|Bind|Blacklist|Canonical|Case|Cd|Check|Class|Classes|Close|CoFixpoint|CoInductive|Coercion|Coercions|Collection|Combined|Compute|Conjecture|Conjectures|Constant|Constants|Constraint|Constructors|Context|Corollary|Create|CstOp|Custom|Cut|Debug|Declare|Defined|Definition|Delimit|Dependencies|Dependent|Derive|Diffs|Drop|Elimination|End|Entry|Equality|Eval|Example|Existential|Existentials|Existing|Export|Extern|Extraction|Fact|Fail|Field|File|Firstorder|Fixpoint|Flags|Focus|From|Funclass|Function|Functional|GC|Generalizable|Goal|Grab|Grammar|Graph|Guarded|Haskell|Heap|Hide|Hint|HintDb|Hints|Hypotheses|Hypothesis|IF|Identity|Immediate|Implicit|Implicits|Import|Include|Induction|Inductive|Infix|Info|Initial|InjTyp|Inline|Inspect|Instance|Instances|Intro|Intros|Inversion|Inversion_clear|JSON|Language|Left|Lemma|Let|Lia|Libraries|Library|Load|LoadPath|Locate|Ltac|Ltac2|ML|Match|Method|Minimality|Module|Modules|Morphism|Next|NoInline|Notation|Number|OCaml|Obligation|Obligations|Opaque|Open|Optimize|Parameter|Parameters|Parametric|Path|Paths|Prenex|Preterm|Primitive|Print|Profile|Projections|Proof|Prop|PropBinOp|PropOp|PropUOp|Property|Proposition|Pwd|Qed|Quit|Rec|Record|Recursive|Redirect|Reduction|Register|Relation|Remark|Remove|Require|Reserved|Reset|Resolve|Restart|Rewrite|Right|Ring|Rings|SProp|Saturate|Save|Scheme|Scope|Scopes|Search|SearchHead|SearchPattern|SearchRewrite|Section|Separate|Set|Setoid|Show|Signatures|Solve|Solver|Sort|Sortclass|Sorted|Spec|Step|Strategies|Strategy|String|Structure|SubClass|Subgraph|SuchThat|Tactic|Term|TestCompile|Theorem|Time|Timeout|To|Transparent|Type|Typeclasses|Types|Typing|UnOp|UnOpSpec|Undelimit|Undo|Unfocus|Unfocused|Unfold|Universe|Universes|Unshelve|Variable|Variables|Variant|Verbose|View|Visibility|Zify|_|apply|as|at|by|cofix|else|end|exists|exists2|fix|for|forall|fun|if|in|let|match|measure|move|removed|return|struct|then|using|wf|where|with)\b/,number:/\b(?:0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]+)?(?:p[+-]?\d[\d_]*)?|\d[\d_]*(?:\.[\d_]+)?(?:e[+-]?\d[\d_]*)?)\b/i,punct:{pattern:/@\{|\{\||\[=|:>/,alias:`punctuation`},operator:/\/\\|\\\/|\.{2,3}|:{1,2}=|\*\*|[-=]>|<(?:->?|[+:=>]|<:)|>(?:=|->)|\|[-|]?|[-!%&*+/<=>?@^~']/,punctuation:/\.\(|`\(|@\{|`\{|\{\||\[=|:>|[:.,;(){}\[\]]/}})(e)}V.displayName=`ruby`,V.aliases=[`rb`];function V(e){e.register(S),(function(e){e.languages.ruby=e.languages.extend(`clike`,{comment:{pattern:/#.*|^=begin\s[\s\S]*?^=end/m,greedy:!0},"class-name":{pattern:/(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,operator:/\.{2,3}|&\.|===||[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,punctuation:/[(){}[\].,;]/}),e.languages.insertBefore(`ruby`,`operator`,{"double-colon":{pattern:/::/,alias:`punctuation`}});var t={pattern:/((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,lookbehind:!0,inside:{content:{pattern:/^(#\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:e.languages.ruby},delimiter:{pattern:/^#\{|\}$/,alias:`punctuation`}}};delete e.languages.ruby.function;var n=`(?:`+[`([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1`,`\\((?:[^()\\\\]|\\\\[\\s\\S]|\\((?:[^()\\\\]|\\\\[\\s\\S])*\\))*\\)`,`\\{(?:[^{}\\\\]|\\\\[\\s\\S]|\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\})*\\}`,`\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S]|\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\])*\\]`,`<(?:[^<>\\\\]|\\\\[\\s\\S]|<(?:[^<>\\\\]|\\\\[\\s\\S])*>)*>`].join(`|`)+`)`,r=`(?:"(?:\\\\.|[^"\\\\\\r\\n])*"|(?:\\b[a-zA-Z_]\\w*|[^\\s\\0-\\x7F]+)[?!]?|\\$.)`;e.languages.insertBefore(`ruby`,`keyword`,{"regex-literal":[{pattern:RegExp(`%r`+n+`[egimnosux]{0,6}`),greedy:!0,inside:{interpolation:t,regex:/[\s\S]+/}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:t,regex:/[\s\S]+/}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:[{pattern:RegExp(`(^|[^:]):`+r),lookbehind:!0,greedy:!0},{pattern:RegExp(`([\\r\\n{(,][ \\t]*)`+r+`(?=:(?!:))`),lookbehind:!0,greedy:!0}],"method-definition":{pattern:/(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,lookbehind:!0,inside:{function:/\b\w+$/,keyword:/^self\b/,"class-name":/^\w+/,punctuation:/\./}}}),e.languages.insertBefore(`ruby`,`string`,{"string-literal":[{pattern:RegExp(`%[qQiIwWs]?`+n),greedy:!0,inside:{interpolation:t,string:/[\s\S]+/}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:t,string:/[\s\S]+/}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:`heredoc-string`,greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?/}},interpolation:t,string:/[\s\S]+/}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:`heredoc-string`,greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?'|'$/}},string:/[\s\S]+/}}],"command-literal":[{pattern:RegExp(`%x`+n),greedy:!0,inside:{interpolation:t,command:{pattern:/[\s\S]+/,alias:`string`}}},{pattern:/`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,greedy:!0,inside:{interpolation:t,command:{pattern:/[\s\S]+/,alias:`string`}}}]}),delete e.languages.ruby.string,e.languages.insertBefore(`ruby`,`number`,{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,constant:/\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/}),e.languages.rb=e.languages.ruby})(e)}Le.displayName=`crystal`,Le.aliases=[];function Le(e){e.register(V),(function(e){e.languages.crystal=e.languages.extend(`ruby`,{keyword:[/\b(?:__DIR__|__END_LINE__|__FILE__|__LINE__|abstract|alias|annotation|as|asm|begin|break|case|class|def|do|else|elsif|end|ensure|enum|extend|for|fun|if|ifdef|include|instance_sizeof|lib|macro|module|next|of|out|pointerof|private|protected|ptr|require|rescue|return|select|self|sizeof|struct|super|then|type|typeof|undef|uninitialized|union|unless|until|when|while|with|yield)\b/,{pattern:/(\.\s*)(?:is_a|responds_to)\?/,lookbehind:!0}],number:/\b(?:0b[01_]*[01]|0o[0-7_]*[0-7]|0x[\da-fA-F_]*[\da-fA-F]|(?:\d(?:[\d_]*\d)?)(?:\.[\d_]*\d)?(?:[eE][+-]?[\d_]*\d)?)(?:_(?:[uif](?:8|16|32|64))?)?\b/,operator:[/->/,e.languages.ruby.operator],punctuation:/[(){}[\].,;\\]/}),e.languages.insertBefore(`crystal`,`string-literal`,{attribute:{pattern:/@\[.*?\]/,inside:{delimiter:{pattern:/^@\[|\]$/,alias:`punctuation`},attribute:{pattern:/^(\s*)\w+/,lookbehind:!0,alias:`class-name`},args:{pattern:/\S(?:[\s\S]*\S)?/,inside:e.languages.crystal}}},expansion:{pattern:/\{(?:\{.*?\}|%.*?%)\}/,inside:{content:{pattern:/^(\{.)[\s\S]+(?=.\}$)/,lookbehind:!0,inside:e.languages.crystal},delimiter:{pattern:/^\{[\{%]|[\}%]\}$/,alias:`operator`}}},char:{pattern:/'(?:[^\\\r\n]{1,2}|\\(?:.|u(?:[A-Fa-f0-9]{1,4}|\{[A-Fa-f0-9]{1,6}\})))'/,greedy:!0}})})(e)}Re.displayName=`cshtml`,Re.aliases=[`razor`];function Re(e){e.register(z),e.register(B),(function(e){var t=`\\/(?![/*])|\\/\\/.*[\\r\\n]|\\/\\*[^*]*(?:\\*(?!\\/)[^*]*)*\\*\\/`,n=`@(?!")|"(?:[^\\r\\n\\\\"]|\\\\.)*"|@"(?:[^\\\\"]|""|\\\\[\\s\\S])*"(?!")|'(?:(?:[^\\r\\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'|(?=[^\\\\](?!')))`;function r(e,r){for(var i=0;i/g,function(){return`(?:`+e+`)`});return e.replace(//g,`[^\\s\\S]`).replace(//g,`(?:`+n+`)`).replace(//g,`(?:`+t+`)`)}var i=r(`\\((?:[^()'"@/]|||)*\\)`,2),a=r(`\\[(?:[^\\[\\]'"@/]|||)*\\]`,1),o=r(`\\{(?:[^{}'"@/]|||)*\\}`,2),s=r(`<(?:[^<>'"@/]||)*>`,1),c=`@(?:await\\b\\s*)?(?:(?!await\\b)\\w+\\b|`+i+`)(?:[?!]?\\.\\w+\\b|(?:`+s+`)?`+i+`|`+a+`)*(?![?!\\.(\\[]|<(?!\\/))`,l=`(?:"[^"@]*"|'[^'@]*'|[^\\s'"@>=]+(?=[\\s>])|["'][^"'@]*(?:(?:`+(`@(?![\\w()])|`+c)+`)[^"'@]*)+["'])`,u=`(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*|(?=[\\s/>])))+)?`.replace(//,l),d=`(?!\\d)[^\\s>\\/=$<%]+`+u+`\\s*\\/?>`,f=`\\B@?(?:<([a-zA-Z][\\w:]*)`+u+`\\s*>(?:`+(`[^<]|<\\/?(?!\\1\\b)`+d+`|`+r(`<\\1`+u+`\\s*>(?:`+(`[^<]|<\\/?(?!\\1\\b)`+d+`|`)+`)*<\\/\\1\\s*>`,2))+`)*<\\/\\1\\s*>|<`+d+`)`;e.languages.cshtml=e.languages.extend(`markup`,{});var p={pattern:/\S[\s\S]*/,alias:`language-csharp`,inside:e.languages.insertBefore(`csharp`,`string`,{html:{pattern:RegExp(f),greedy:!0,inside:e.languages.cshtml}},{csharp:e.languages.extend(`csharp`,{})})},m={pattern:RegExp(`(^|[^@])`+c),lookbehind:!0,greedy:!0,alias:`variable`,inside:{keyword:/^@/,csharp:p}};e.languages.cshtml.tag.pattern=RegExp(`<\\/?`+d),e.languages.cshtml.tag.inside[`attr-value`].pattern=RegExp(`=\\s*`+l),e.languages.insertBefore(`inside`,`punctuation`,{value:m},e.languages.cshtml.tag.inside[`attr-value`]),e.languages.insertBefore(`cshtml`,`prolog`,{"razor-comment":{pattern:/@\*[\s\S]*?\*@/,greedy:!0,alias:`comment`},block:{pattern:RegExp(`(^|[^@])@(?:`+[o,`(?:code|functions)\\s*`+o,`(?:for|foreach|lock|switch|using|while)\\s*`+i+`\\s*`+o,`do\\s*`+o+`\\s*while\\s*`+i+`(?:\\s*;)?`,`try\\s*`+o+`\\s*catch\\s*`+i+`\\s*`+o+`\\s*finally\\s*`+o,`if\\s*`+i+`\\s*`+o+`(?:\\s*else(?:\\s+if\\s*`+i+`)?\\s*`+o+`)*`,`helper\\s+\\w+\\s*`+i+`\\s*`+o].join(`|`)+`)`),lookbehind:!0,greedy:!0,inside:{keyword:/^@\w*/,csharp:p}},directive:{pattern:/^([ \t]*)@(?:addTagHelper|attribute|implements|inherits|inject|layout|model|namespace|page|preservewhitespace|removeTagHelper|section|tagHelperPrefix|using)(?=\s).*/m,lookbehind:!0,greedy:!0,inside:{keyword:/^@\w+/,csharp:p}},value:m,"delegate-operator":{pattern:/(^|[^@])@(?=<)/,lookbehind:!0,alias:`operator`}}),e.languages.razor=e.languages.cshtml})(e)}ze.displayName=`csp`,ze.aliases=[];function ze(e){(function(e){function t(e){return RegExp(`([ \\t])(?:`+e+`)(?=[\\s;]|$)`,`i`)}e.languages.csp={directive:{pattern:/(^|[\s;])(?:base-uri|block-all-mixed-content|(?:child|connect|default|font|frame|img|manifest|media|object|prefetch|script|style|worker)-src|disown-opener|form-action|frame-(?:ancestors|options)|input-protection(?:-(?:clip|selectors))?|navigate-to|plugin-types|policy-uri|referrer|reflected-xss|report-(?:to|uri)|require-sri-for|sandbox|(?:script|style)-src-(?:attr|elem)|upgrade-insecure-requests)(?=[\s;]|$)/i,lookbehind:!0,alias:`property`},scheme:{pattern:t(`[a-z][a-z0-9.+-]*:`),lookbehind:!0},none:{pattern:t(`'none'`),lookbehind:!0,alias:`keyword`},nonce:{pattern:t(`'nonce-[-+/\\w=]+'`),lookbehind:!0,alias:`number`},hash:{pattern:t(`'sha(?:256|384|512)-[-+/\\w=]+'`),lookbehind:!0,alias:`number`},host:{pattern:t(`[a-z][a-z0-9.+-]*:\\/\\/[^\\s;,']*|\\*[^\\s;,']*|[a-z0-9-]+(?:\\.[a-z0-9-]+)+(?::[\\d*]+)?(?:\\/[^\\s;,']*)?`),lookbehind:!0,alias:`url`,inside:{important:/\*/}},keyword:[{pattern:t(`'unsafe-[a-z-]+'`),lookbehind:!0,alias:`unsafe`},{pattern:t(`'[a-z-]+'`),lookbehind:!0,alias:`safe`}],punctuation:/;/}})(e)}H.displayName=`css`,H.aliases=[];function H(e){(function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp(`@[\\w-](?:[^;{\\s"']|\\s+(?!\\s)|`+t.source+`)*?(?:;|(?=\\s*\\{))`),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:`selector`},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp(`\\burl\\((?:`+t.source+`|(?:[^\\\\\\r\\n()"']|\\\\[\\s\\S])*)\\)`,`i`),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp(`^`+t.source+`$`),alias:`url`}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+t.source+`)*(?=\\s*\\{)`),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined(`style`,`css`),n.tag.addAttribute(`style`,`css`))})(e)}Be.displayName=`css-extras`,Be.aliases=[];function Be(e){e.register(H),(function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,n;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:n={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp(`\\[(?:[^[\\]"']|`+t.source+`)*\\]`),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:`keyword`},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[t,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside[`selector-function-argument`].inside=n,e.languages.insertBefore(`css`,`property`,{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},i={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore(`css`,`function`,{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:`color`},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:i,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:i})})(e)}Ve.displayName=`csv`,Ve.aliases=[];function Ve(e){e.languages.csv={value:/[^\r\n,"]+|"(?:[^"]|"")*"(?!")/,punctuation:/,/}}He.displayName=`cue`,He.aliases=[];function He(e){(function(e){var t=`(?:`+`"""(?:[^\\\\"]|"(?!""\\2)|)*"""|'''(?:[^\\\\']|'(?!''\\2)|)*'''|"(?:[^\\\\\\r\\n"]|"(?!\\2)|)*"|'(?:[^\\\\\\r\\n']|'(?!\\2)|)*'`.replace(//g,`\\\\(?:(?!\\2)|\\2(?:[^()\\r\\n]|\\([^()]*\\)))`)+`)`;e.languages.cue={comment:{pattern:/\/\/.*/,greedy:!0},"string-literal":{pattern:RegExp(`(^|[^#"'\\\\])(#*)`+t+`(?!["'])\\2`),lookbehind:!0,greedy:!0,inside:{escape:{pattern:/(?=[\s\S]*["'](#*)$)\\\1(?:U[a-fA-F0-9]{1,8}|u[a-fA-F0-9]{1,4}|x[a-fA-F0-9]{1,2}|\d{2,3}|[^(])/,greedy:!0,alias:`string`},interpolation:{pattern:/(?=[\s\S]*["'](#*)$)\\\1\([^()]*\)/,greedy:!0,inside:{punctuation:/^\\#*\(|\)$/,expression:{pattern:/[\s\S]+/,inside:null}}},string:/[\s\S]+/}},keyword:{pattern:/(^|[^\w$])(?:for|if|import|in|let|null|package)(?![\w$])/,lookbehind:!0},boolean:{pattern:/(^|[^\w$])(?:false|true)(?![\w$])/,lookbehind:!0},builtin:{pattern:/(^|[^\w$])(?:bool|bytes|float|float(?:32|64)|u?int(?:8|16|32|64|128)?|number|rune|string)(?![\w$])/,lookbehind:!0},attribute:{pattern:/@[\w$]+(?=\s*\()/,alias:`function`},function:{pattern:/(^|[^\w$])[a-z_$][\w$]*(?=\s*\()/i,lookbehind:!0},number:{pattern:/(^|[^\w$.])(?:0b[01]+(?:_[01]+)*|0o[0-7]+(?:_[0-7]+)*|0[xX][0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*|(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[eE][+-]?\d+(?:_\d+)*)?(?:[KMGTP]i?)?)(?![\w$])/,lookbehind:!0},operator:/\.{3}|_\|_|&&?|\|\|?|[=!]~|[<>=!]=?|[+\-*/?]/,punctuation:/[()[\]{},.:]/},e.languages.cue[`string-literal`].inside.interpolation.inside.expression.inside=e.languages.cue})(e)}Ue.displayName=`cypher`,Ue.aliases=[];function Ue(e){e.languages.cypher={comment:/\/\/.*/,string:{pattern:/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/,greedy:!0},"class-name":{pattern:/(:\s*)(?:\w+|`(?:[^`\\\r\n])*`)(?=\s*[{):])/,lookbehind:!0,greedy:!0},relationship:{pattern:/(-\[\s*(?:\w+\s*|`(?:[^`\\\r\n])*`\s*)?:\s*|\|\s*:\s*)(?:\w+|`(?:[^`\\\r\n])*`)/,lookbehind:!0,greedy:!0,alias:`property`},identifier:{pattern:/`(?:[^`\\\r\n])*`/,greedy:!0},variable:/\$\w+/,keyword:/\b(?:ADD|ALL|AND|AS|ASC|ASCENDING|ASSERT|BY|CALL|CASE|COMMIT|CONSTRAINT|CONTAINS|CREATE|CSV|DELETE|DESC|DESCENDING|DETACH|DISTINCT|DO|DROP|ELSE|END|ENDS|EXISTS|FOR|FOREACH|IN|INDEX|IS|JOIN|KEY|LIMIT|LOAD|MANDATORY|MATCH|MERGE|NODE|NOT|OF|ON|OPTIONAL|OR|ORDER(?=\s+BY)|PERIODIC|REMOVE|REQUIRE|RETURN|SCALAR|SCAN|SET|SKIP|START|STARTS|THEN|UNION|UNIQUE|UNWIND|USING|WHEN|WHERE|WITH|XOR|YIELD)\b/i,function:/\b\w+\b(?=\s*\()/,boolean:/\b(?:false|null|true)\b/i,number:/\b(?:0x[\da-fA-F]+|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)\b/,operator:/:|<--?|--?>?|<>|=~?|[<>]=?|[+*/%^|]|\.\.\.?/,punctuation:/[()[\]{},;.]/}}We.displayName=`d`,We.aliases=[];function We(e){e.register(S),e.languages.d=e.languages.extend(`clike`,{comment:[{pattern:/^\s*#!.+/,greedy:!0},{pattern:RegExp(`(^|[^\\\\])(?:`+[`\\/\\+(?:\\/\\+(?:[^+]|\\+(?!\\/))*\\+\\/|(?!\\/\\+)[\\s\\S])*?\\+\\/`,`\\/\\/.*`,`\\/\\*[\\s\\S]*?\\*\\/`].join(`|`)+`)`),lookbehind:!0,greedy:!0}],string:[{pattern:RegExp([`\\b[rx]"(?:\\\\[\\s\\S]|[^\\\\"])*"[cwd]?`,`\\bq"(?:\\[[\\s\\S]*?\\]|\\([\\s\\S]*?\\)|<[\\s\\S]*?>|\\{[\\s\\S]*?\\})"`,`\\bq"((?!\\d)\\w+)$[\\s\\S]*?^\\1"`,`\\bq"(.)[\\s\\S]*?\\2"`,'(["`])(?:\\\\[\\s\\S]|(?!\\3)[^\\\\])*\\3[cwd]?'].join(`|`),`m`),greedy:!0},{pattern:/\bq\{(?:\{[^{}]*\}|[^{}])*\}/,greedy:!0,alias:`token-string`}],keyword:/\$|\b(?:__(?:(?:DATE|EOF|FILE|FUNCTION|LINE|MODULE|PRETTY_FUNCTION|TIMESTAMP|TIME|VENDOR|VERSION)__|gshared|parameters|traits|vector)|abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|dstring|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|inout|int|interface|invariant|ireal|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|ptrdiff_t|public|pure|real|ref|return|scope|shared|short|size_t|static|string|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|wstring)\b/,number:[/\b0x\.?[a-f\d_]+(?:(?!\.\.)\.[a-f\d_]*)?(?:p[+-]?[a-f\d_]+)?[ulfi]{0,4}/i,{pattern:/((?:\.\.)?)(?:\b0b\.?|\b|\.)\d[\d_]*(?:(?!\.\.)\.[\d_]*)?(?:e[+-]?\d[\d_]*)?[ulfi]{0,4}/i,lookbehind:!0}],operator:/\|[|=]?|&[&=]?|\+[+=]?|-[-=]?|\.?\.\.|=[>=]?|!(?:i[ns]\b|<>?=?|>=?|=)?|\bi[ns]\b|(?:<[<>]?|>>?>?|\^\^|[*\/%^~])=?/}),e.languages.insertBefore(`d`,`string`,{char:/'(?:\\(?:\W|\w+)|[^\\])'/}),e.languages.insertBefore(`d`,`keyword`,{property:/\B@\w*/}),e.languages.insertBefore(`d`,`function`,{register:{pattern:/\b(?:[ABCD][LHX]|E?(?:BP|DI|SI|SP)|[BS]PL|[ECSDGF]S|CR[0234]|[DS]IL|DR[012367]|E[ABCD]X|X?MM[0-7]|R(?:1[0-5]|[89])[BWD]?|R[ABCD]X|R[BS]P|R[DS]I|TR[3-7]|XMM(?:1[0-5]|[89])|YMM(?:1[0-5]|\d))\b|\bST(?:\([0-7]\)|\b)/,alias:`variable`}})}Ge.displayName=`dart`,Ge.aliases=[];function Ge(e){e.register(S),(function(e){var t=[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extends|extension|external|factory|final|finally|for|get|hide|if|implements|import|in|interface|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\b/],n=`(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*`,r={pattern:RegExp(n+`[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b`),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}}}};e.languages.dart=e.languages.extend(`clike`,{"class-name":[r,{pattern:RegExp(n+`[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])`),lookbehind:!0,inside:r.inside}],keyword:t,operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),e.languages.insertBefore(`dart`,`string`,{"string-literal":{pattern:/r?(?:("""|''')[\s\S]*?\1|(["'])(?:\\.|(?!\2)[^\\\r\n])*\2(?!\2))/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,lookbehind:!0,inside:{punctuation:/^\$\{?|\}$/,expression:{pattern:/[\s\S]+/,inside:e.languages.dart}}},string:/[\s\S]+/}},string:void 0}),e.languages.insertBefore(`dart`,`class-name`,{metadata:{pattern:/@\w+/,alias:`function`}}),e.languages.insertBefore(`dart`,`class-name`,{generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":r,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})})(e)}Ke.displayName=`dataweave`,Ke.aliases=[];function Ke(e){(function(e){e.languages.dataweave={url:/\b[A-Za-z]+:\/\/[\w/:.?=&-]+|\burn:[\w:.?=&-]+/,property:{pattern:/(?:\b\w+#)?(?:"(?:\\.|[^\\"\r\n])*"|\b\w+)(?=\s*[:@])/,greedy:!0},string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},"mime-type":/\b(?:application|audio|image|multipart|text|video)\/[\w+-]+/,date:{pattern:/\|[\w:+-]+\|/,greedy:!0},comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],regex:{pattern:/\/(?:[^\\\/\r\n]|\\[^\r\n])+\//,greedy:!0},keyword:/\b(?:and|as|at|case|do|else|fun|if|input|is|match|not|ns|null|or|output|type|unless|update|using|var)\b/,function:/\b[A-Z_]\w*(?=\s*\()/i,number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\];(),.:@]/,operator:/<<|>>|->|[<>~=]=?|!=|--?-?|\+\+?|!|\?/,boolean:/\b(?:false|true)\b/}})(e)}qe.displayName=`dax`,qe.aliases=[];function qe(e){e.languages.dax={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/).*)/,lookbehind:!0},"data-field":{pattern:/'(?:[^']|'')*'(?!')(?:\[[ \w\xA0-\uFFFF]+\])?|\w+\[[ \w\xA0-\uFFFF]+\]/,alias:`symbol`},measure:{pattern:/\[[ \w\xA0-\uFFFF]+\]/,alias:`constant`},string:{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},function:/\b(?:ABS|ACOS|ACOSH|ACOT|ACOTH|ADDCOLUMNS|ADDMISSINGITEMS|ALL|ALLCROSSFILTERED|ALLEXCEPT|ALLNOBLANKROW|ALLSELECTED|AND|APPROXIMATEDISTINCTCOUNT|ASIN|ASINH|ATAN|ATANH|AVERAGE|AVERAGEA|AVERAGEX|BETA\.DIST|BETA\.INV|BLANK|CALCULATE|CALCULATETABLE|CALENDAR|CALENDARAUTO|CEILING|CHISQ\.DIST|CHISQ\.DIST\.RT|CHISQ\.INV|CHISQ\.INV\.RT|CLOSINGBALANCEMONTH|CLOSINGBALANCEQUARTER|CLOSINGBALANCEYEAR|COALESCE|COMBIN|COMBINA|COMBINEVALUES|CONCATENATE|CONCATENATEX|CONFIDENCE\.NORM|CONFIDENCE\.T|CONTAINS|CONTAINSROW|CONTAINSSTRING|CONTAINSSTRINGEXACT|CONVERT|COS|COSH|COT|COTH|COUNT|COUNTA|COUNTAX|COUNTBLANK|COUNTROWS|COUNTX|CROSSFILTER|CROSSJOIN|CURRENCY|CURRENTGROUP|CUSTOMDATA|DATATABLE|DATE|DATEADD|DATEDIFF|DATESBETWEEN|DATESINPERIOD|DATESMTD|DATESQTD|DATESYTD|DATEVALUE|DAY|DEGREES|DETAILROWS|DISTINCT|DISTINCTCOUNT|DISTINCTCOUNTNOBLANK|DIVIDE|EARLIER|EARLIEST|EDATE|ENDOFMONTH|ENDOFQUARTER|ENDOFYEAR|EOMONTH|ERROR|EVEN|EXACT|EXCEPT|EXP|EXPON\.DIST|FACT|FALSE|FILTER|FILTERS|FIND|FIRSTDATE|FIRSTNONBLANK|FIRSTNONBLANKVALUE|FIXED|FLOOR|FORMAT|GCD|GENERATE|GENERATEALL|GENERATESERIES|GEOMEAN|GEOMEANX|GROUPBY|HASONEFILTER|HASONEVALUE|HOUR|IF|IF\.EAGER|IFERROR|IGNORE|INT|INTERSECT|ISBLANK|ISCROSSFILTERED|ISEMPTY|ISERROR|ISEVEN|ISFILTERED|ISINSCOPE|ISLOGICAL|ISNONTEXT|ISNUMBER|ISO\.CEILING|ISODD|ISONORAFTER|ISSELECTEDMEASURE|ISSUBTOTAL|ISTEXT|KEEPFILTERS|KEYWORDMATCH|LASTDATE|LASTNONBLANK|LASTNONBLANKVALUE|LCM|LEFT|LEN|LN|LOG|LOG10|LOOKUPVALUE|LOWER|MAX|MAXA|MAXX|MEDIAN|MEDIANX|MID|MIN|MINA|MINUTE|MINX|MOD|MONTH|MROUND|NATURALINNERJOIN|NATURALLEFTOUTERJOIN|NEXTDAY|NEXTMONTH|NEXTQUARTER|NEXTYEAR|NONVISUAL|NORM\.DIST|NORM\.INV|NORM\.S\.DIST|NORM\.S\.INV|NOT|NOW|ODD|OPENINGBALANCEMONTH|OPENINGBALANCEQUARTER|OPENINGBALANCEYEAR|OR|PARALLELPERIOD|PATH|PATHCONTAINS|PATHITEM|PATHITEMREVERSE|PATHLENGTH|PERCENTILE\.EXC|PERCENTILE\.INC|PERCENTILEX\.EXC|PERCENTILEX\.INC|PERMUT|PI|POISSON\.DIST|POWER|PREVIOUSDAY|PREVIOUSMONTH|PREVIOUSQUARTER|PREVIOUSYEAR|PRODUCT|PRODUCTX|QUARTER|QUOTIENT|RADIANS|RAND|RANDBETWEEN|RANK\.EQ|RANKX|RELATED|RELATEDTABLE|REMOVEFILTERS|REPLACE|REPT|RIGHT|ROLLUP|ROLLUPADDISSUBTOTAL|ROLLUPGROUP|ROLLUPISSUBTOTAL|ROUND|ROUNDDOWN|ROUNDUP|ROW|SAMEPERIODLASTYEAR|SAMPLE|SEARCH|SECOND|SELECTCOLUMNS|SELECTEDMEASURE|SELECTEDMEASUREFORMATSTRING|SELECTEDMEASURENAME|SELECTEDVALUE|SIGN|SIN|SINH|SQRT|SQRTPI|STARTOFMONTH|STARTOFQUARTER|STARTOFYEAR|STDEV\.P|STDEV\.S|STDEVX\.P|STDEVX\.S|SUBSTITUTE|SUBSTITUTEWITHINDEX|SUM|SUMMARIZE|SUMMARIZECOLUMNS|SUMX|SWITCH|T\.DIST|T\.DIST\.2T|T\.DIST\.RT|T\.INV|T\.INV\.2T|TAN|TANH|TIME|TIMEVALUE|TODAY|TOPN|TOPNPERLEVEL|TOPNSKIP|TOTALMTD|TOTALQTD|TOTALYTD|TREATAS|TRIM|TRUE|TRUNC|UNICHAR|UNICODE|UNION|UPPER|USERELATIONSHIP|USERNAME|USEROBJECTID|USERPRINCIPALNAME|UTCNOW|UTCTODAY|VALUE|VALUES|VAR\.P|VAR\.S|VARX\.P|VARX\.S|WEEKDAY|WEEKNUM|XIRR|XNPV|YEAR|YEARFRAC)(?=\s*\()/i,keyword:/\b(?:DEFINE|EVALUATE|MEASURE|ORDER\s+BY|RETURN|VAR|START\s+AT|ASC|DESC)\b/i,boolean:{pattern:/\b(?:FALSE|NULL|TRUE)\b/i,alias:`constant`},number:/\b\d+(?:\.\d*)?|\B\.\d+\b/,operator:/:=|[-+*\/=^]|&&?|\|\||<(?:=>?|<|>)?|>[>=]?|\b(?:IN|NOT)\b/i,punctuation:/[;\[\](){}`,.]/}}Je.displayName=`dhall`,Je.aliases=[];function Je(e){e.languages.dhall={comment:/--.*|\{-(?:[^-{]|-(?!\})|\{(?!-)|\{-(?:[^-{]|-(?!\})|\{(?!-))*-\})*-\}/,string:{pattern:/"(?:[^"\\]|\\.)*"|''(?:[^']|'(?!')|'''|''\$\{)*''(?!'|\$)/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^{}]*\}/,inside:{expression:{pattern:/(^\$\{)[\s\S]+(?=\}$)/,lookbehind:!0,alias:`language-dhall`,inside:null},punctuation:/\$\{|\}/}}}},label:{pattern:/`[^`]*`/,greedy:!0},url:{pattern:/\bhttps?:\/\/[\w.:%!$&'*+;=@~-]+(?:\/[\w.:%!$&'*+;=@~-]*)*(?:\?[/?\w.:%!$&'*+;=@~-]*)?/,greedy:!0},env:{pattern:/\benv:(?:(?!\d)\w+|"(?:[^"\\=]|\\.)*")/,greedy:!0,inside:{function:/^env/,operator:/^:/,variable:/[\s\S]+/}},hash:{pattern:/\bsha256:[\da-fA-F]{64}\b/,inside:{function:/sha256/,operator:/:/,number:/[\da-fA-F]{64}/}},keyword:/\b(?:as|assert|else|forall|if|in|let|merge|missing|then|toMap|using|with)\b|\u2200/,builtin:/\b(?:None|Some)\b/,boolean:/\b(?:False|True)\b/,number:/\bNaN\b|-?\bInfinity\b|[+-]?\b(?:0x[\da-fA-F]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/,operator:/\/\\|\/\/\\\\|&&|\|\||===|[!=]=|\/\/|->|\+\+|::|[+*#@=:?<>|\\\u2227\u2a53\u2261\u2afd\u03bb\u2192]/,punctuation:/\.\.|[{}\[\](),./]/,"class-name":/\b[A-Z]\w*\b/},e.languages.dhall.string.inside.interpolation.inside.expression.inside=e.languages.dhall}Ye.displayName=`diff`,Ye.aliases=[];function Ye(e){(function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":`-`,"deleted-arrow":`<`,"inserted-sign":`+`,"inserted-arrow":`>`,unchanged:` `,diff:`!`};Object.keys(t).forEach(function(n){var r=t[n],i=[];/^\w+$/.test(n)||i.push(/\w+/.exec(n)[0]),n===`diff`&&i.push(`bold`),e.languages.diff[n]={pattern:RegExp(`^(?:[`+r+`].*(?:\r ?| |(?![\\s\\S])))+`,`m`),alias:i,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}}),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})})(e)}U.displayName=`markup-templating`,U.aliases=[];function U(e){e.register(B),(function(e){function t(e,t){return`___`+e.toUpperCase()+t+`___`}Object.defineProperties(e.languages[`markup-templating`]={},{buildPlaceholders:{value:function(n,r,i,a){if(n.language===r){var o=n.tokenStack=[];n.code=n.code.replace(i,function(e){if(typeof a==`function`&&!a(e))return e;for(var i=o.length,s;n.code.indexOf(s=t(r,i))!==-1;)++i;return o[i]=e,s}),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language!==r||!n.tokenStack)return;n.grammar=e.languages[r];var i=0,a=Object.keys(n.tokenStack);function o(s){for(var c=0;c=a.length);c++){var l=s[c];if(typeof l==`string`||l.content&&typeof l.content==`string`){var u=a[i],d=n.tokenStack[u],f=typeof l==`string`?l:l.content,p=t(r,u),m=f.indexOf(p);if(m>-1){++i;var h=f.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),`language-`+r,d),_=f.substring(m+p.length),v=[];h&&v.push.apply(v,o([h])),v.push(g),_&&v.push.apply(v,o([_])),typeof l==`string`?s.splice.apply(s,[c,1].concat(v)):l.content=v}}else l.content&&o(l.content)}return s}o(n.tokens)}}})})(e)}Xe.displayName=`django`,Xe.aliases=[`jinja2`];function Xe(e){e.register(U),(function(e){e.languages.django={comment:/^\{#[\s\S]*?#\}$/,tag:{pattern:/(^\{%[+-]?\s*)\w+/,lookbehind:!0,alias:`keyword`},delimiter:{pattern:/^\{[{%][+-]?|[+-]?[}%]\}$/,alias:`punctuation`},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},filter:{pattern:/(\|)\w+/,lookbehind:!0,alias:`function`},test:{pattern:/(\bis\s+(?:not\s+)?)(?!not\b)\w+/,lookbehind:!0,alias:`function`},function:/\b[a-z_]\w+(?=\s*\()/i,keyword:/\b(?:and|as|by|else|for|if|import|in|is|loop|not|or|recursive|with|without)\b/,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,number:/\b\d+(?:\.\d+)?\b/,boolean:/[Ff]alse|[Nn]one|[Tt]rue/,variable:/\b\w+\b/,punctuation:/[{}[\](),.:;]/};var t=/\{\{[\s\S]*?\}\}|\{%[\s\S]*?%\}|\{#[\s\S]*?#\}/g,n=e.languages[`markup-templating`];e.hooks.add(`before-tokenize`,function(e){n.buildPlaceholders(e,`django`,t)}),e.hooks.add(`after-tokenize`,function(e){n.tokenizePlaceholders(e,`django`)}),e.languages.jinja2=e.languages.django,e.hooks.add(`before-tokenize`,function(e){n.buildPlaceholders(e,`jinja2`,t)}),e.hooks.add(`after-tokenize`,function(e){n.tokenizePlaceholders(e,`jinja2`)})})(e)}Ze.displayName=`dns-zone-file`,Ze.aliases=[`dns-zone`];function Ze(e){e.languages[`dns-zone-file`]={comment:/;.*/,string:{pattern:/"(?:\\.|[^"\\\r\n])*"/,greedy:!0},variable:[{pattern:/(^\$ORIGIN[ \t]+)\S+/m,lookbehind:!0},{pattern:/(^|\s)@(?=\s|$)/,lookbehind:!0}],keyword:/^\$(?:INCLUDE|ORIGIN|TTL)(?=\s|$)/m,class:{pattern:/(^|\s)(?:CH|CS|HS|IN)(?=\s|$)/,lookbehind:!0,alias:`keyword`},type:{pattern:/(^|\s)(?:A|A6|AAAA|AFSDB|APL|ATMA|CAA|CDNSKEY|CDS|CERT|CNAME|DHCID|DLV|DNAME|DNSKEY|DS|EID|GID|GPOS|HINFO|HIP|IPSECKEY|ISDN|KEY|KX|LOC|MAILA|MAILB|MB|MD|MF|MG|MINFO|MR|MX|NAPTR|NB|NBSTAT|NIMLOC|NINFO|NS|NSAP|NSAP-PTR|NSEC|NSEC3|NSEC3PARAM|NULL|NXT|OPENPGPKEY|PTR|PX|RKEY|RP|RRSIG|RT|SIG|SINK|SMIMEA|SOA|SPF|SRV|SSHFP|TA|TKEY|TLSA|TSIG|TXT|UID|UINFO|UNSPEC|URI|WKS|X25)(?=\s|$)/,lookbehind:!0,alias:`keyword`},punctuation:/[()]/},e.languages[`dns-zone`]=e.languages[`dns-zone-file`]}Qe.displayName=`docker`,Qe.aliases=[`dockerfile`];function Qe(e){(function(e){var t=`\\\\[\\r\\n](?:\\s|\\\\[\\r\\n]|#.*(?!.))*(?![\\s#]|\\\\[\\r\\n])`,n=`(?:[ \\t]+(?![ \\t])(?:)?|)`.replace(//g,function(){return t}),r=`"(?:[^"\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*"|'(?:[^'\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*'`,i=`--[\\w-]+=(?:|(?!["'])(?:[^\\s\\\\]|\\\\.)+)`.replace(//g,function(){return r}),a={pattern:RegExp(r),greedy:!0},o={pattern:/(^[ \t]*)#.*/m,lookbehind:!0,greedy:!0};function s(e,t){return e=e.replace(//g,function(){return i}).replace(//g,function(){return n}),RegExp(e,t)}e.languages.docker={instruction:{pattern:/(^[ \t]*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\s)(?:\\.|[^\r\n\\])*(?:\\$(?:\s|#.*$)*(?![\s#])(?:\\.|[^\r\n\\])*)*/im,lookbehind:!0,greedy:!0,inside:{options:{pattern:s(`(^(?:ONBUILD)?\\w+)(?:)*`,`i`),lookbehind:!0,greedy:!0,inside:{property:{pattern:/(^|\s)--[\w-]+/,lookbehind:!0},string:[a,{pattern:/(=)(?!["'])(?:[^\s\\]|\\.)+/,lookbehind:!0}],operator:/\\$/m,punctuation:/=/}},keyword:[{pattern:s(`(^(?:ONBUILD)?HEALTHCHECK(?:)*)(?:CMD|NONE)\\b`,`i`),lookbehind:!0,greedy:!0},{pattern:s(`(^(?:ONBUILD)?FROM(?:)*(?!--)[^ \\t\\\\]+)AS`,`i`),lookbehind:!0,greedy:!0},{pattern:s(`(^ONBUILD)\\w+`,`i`),lookbehind:!0,greedy:!0},{pattern:/^\w+/,greedy:!0}],comment:o,string:a,variable:/\$(?:\w+|\{[^{}"'\\]*\})/,operator:/\\$/m}},comment:o},e.languages.dockerfile=e.languages.docker})(e)}$e.displayName=`dot`,$e.aliases=[`gv`];function $e(e){(function(e){var t=`(?:`+[`[a-zA-Z_\\x80-\\uFFFF][\\w\\x80-\\uFFFF]*`,`-?(?:\\.\\d+|\\d+(?:\\.\\d*)?)`,`"[^"\\\\]*(?:\\\\[\\s\\S][^"\\\\]*)*"`,`<(?:[^<>]|(?!)*>`].join(`|`)+`)`,n={markup:{pattern:/(^<)[\s\S]+(?=>$)/,lookbehind:!0,alias:[`language-markup`,`language-html`,`language-xml`],inside:e.languages.markup}};function r(e,n){return RegExp(e.replace(//g,function(){return t}),n)}e.languages.dot={comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\/|^#.*/m,greedy:!0},"graph-name":{pattern:r(`(\\b(?:digraph|graph|subgraph)[ \\t\\r\\n]+)`,`i`),lookbehind:!0,greedy:!0,alias:`class-name`,inside:n},"attr-value":{pattern:r(`(=[ \\t\\r\\n]*)`),lookbehind:!0,greedy:!0,inside:n},"attr-name":{pattern:r(`([\\[;, \\t\\r\\n])(?=[ \\t\\r\\n]*=)`),lookbehind:!0,greedy:!0,inside:n},keyword:/\b(?:digraph|edge|graph|node|strict|subgraph)\b/i,"compass-point":{pattern:/(:[ \t\r\n]*)(?:[ewc_]|[ns][ew]?)(?![\w\x80-\uFFFF])/,lookbehind:!0,alias:`builtin`},node:{pattern:r(`(^|[^-.\\w\\x80-\\uFFFF\\\\])`),lookbehind:!0,greedy:!0,inside:n},operator:/[=:]|-[->]/,punctuation:/[\[\]{};,]/},e.languages.gv=e.languages.dot})(e)}et.displayName=`ebnf`,et.aliases=[];function et(e){e.languages.ebnf={comment:/\(\*[\s\S]*?\*\)/,string:{pattern:/"[^"\r\n]*"|'[^'\r\n]*'/,greedy:!0},special:{pattern:/\?[^?\r\n]*\?/,greedy:!0,alias:`class-name`},definition:{pattern:/^([\t ]*)[a-z]\w*(?:[ \t]+[a-z]\w*)*(?=\s*=)/im,lookbehind:!0,alias:[`rule`,`keyword`]},rule:/\b[a-z]\w*(?:[ \t]+[a-z]\w*)*\b/i,punctuation:/\([:/]|[:/]\)|[.,;()[\]{}]/,operator:/[-=|*/!]/}}tt.displayName=`editorconfig`,tt.aliases=[];function tt(e){e.languages.editorconfig={comment:/[;#].*/,section:{pattern:/(^[ \t]*)\[.+\]/m,lookbehind:!0,alias:`selector`,inside:{regex:/\\\\[\[\]{},!?.*]/,operator:/[!?]|\.\.|\*{1,2}/,punctuation:/[\[\]{},]/}},key:{pattern:/(^[ \t]*)[^\s=]+(?=[ \t]*=)/m,lookbehind:!0,alias:`attr-name`},value:{pattern:/=.*/,alias:`attr-value`,inside:{punctuation:/^=/}}}}nt.displayName=`eiffel`,nt.aliases=[];function nt(e){e.languages.eiffel={comment:/--.*/,string:[{pattern:/"([^[]*)\[[\s\S]*?\]\1"/,greedy:!0},{pattern:/"([^{]*)\{[\s\S]*?\}\1"/,greedy:!0},{pattern:/"(?:%(?:(?!\n)\s)*\n\s*%|%\S|[^%"\r\n])*"/,greedy:!0}],char:/'(?:%.|[^%'\r\n])+'/,keyword:/\b(?:across|agent|alias|all|and|as|assign|attached|attribute|check|class|convert|create|Current|debug|deferred|detachable|do|else|elseif|end|ensure|expanded|export|external|feature|from|frozen|if|implies|inherit|inspect|invariant|like|local|loop|not|note|obsolete|old|once|or|Precursor|redefine|rename|require|rescue|Result|retry|select|separate|some|then|undefine|until|variant|Void|when|xor)\b/i,boolean:/\b(?:False|True)\b/i,"class-name":/\b[A-Z][\dA-Z_]*\b/,number:[/\b0[xcb][\da-f](?:_*[\da-f])*\b/i,/(?:\b\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?e[+-]?)?\d(?:_*\d)*\b|\b\d(?:_*\d)*\b\.?/i],punctuation:/:=|<<|>>|\(\||\|\)|->|\.(?=\w)|[{}[\];(),:?]/,operator:/\\\\|\|\.\.\||\.\.|\/[~\/=]?|[><]=?|[-+*^=~]/}}rt.displayName=`ejs`,rt.aliases=[`eta`];function rt(e){e.register(C),e.register(U),(function(e){e.languages.ejs={delimiter:{pattern:/^<%[-_=]?|[-_]?%>$/,alias:`punctuation`},comment:/^#[\s\S]*/,"language-javascript":{pattern:/[\s\S]+/,inside:e.languages.javascript}},e.hooks.add(`before-tokenize`,function(t){e.languages[`markup-templating`].buildPlaceholders(t,`ejs`,/<%(?!%)[\s\S]+?%>/g)}),e.hooks.add(`after-tokenize`,function(t){e.languages[`markup-templating`].tokenizePlaceholders(t,`ejs`)}),e.languages.eta=e.languages.ejs})(e)}it.displayName=`elixir`,it.aliases=[];function it(e){e.languages.elixir={doc:{pattern:/@(?:doc|moduledoc)\s+(?:("""|''')[\s\S]*?\1|("|')(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2)/,inside:{attribute:/^@\w+/,string:/['"][\s\S]+/}},comment:{pattern:/#.*/,greedy:!0},regex:{pattern:/~[rR](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[uismxfr]*/,greedy:!0},string:[{pattern:/~[cCsSwW](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|#\{[^}]+\}|#(?!\{)|[^#\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[csa]?/,greedy:!0,inside:{}},{pattern:/("""|''')[\s\S]*?\1/,greedy:!0,inside:{}},{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{}}],atom:{pattern:/(^|[^:]):\w+/,lookbehind:!0,alias:`symbol`},module:{pattern:/\b[A-Z]\w*\b/,alias:`class-name`},"attr-name":/\b\w+\??:(?!:)/,argument:{pattern:/(^|[^&])&\d+/,lookbehind:!0,alias:`variable`},attribute:{pattern:/@\w+/,alias:`variable`},function:/\b[_a-zA-Z]\w*[?!]?(?:(?=\s*(?:\.\s*)?\()|(?=\/\d))/,number:/\b(?:0[box][a-f\d_]+|\d[\d_]*)(?:\.[\d_]+)?(?:e[+-]?[\d_]+)?\b/i,keyword:/\b(?:after|alias|and|case|catch|cond|def(?:callback|delegate|exception|impl|macro|module|n|np|p|protocol|struct)?|do|else|end|fn|for|if|import|not|or|quote|raise|require|rescue|try|unless|unquote|use|when)\b/,boolean:/\b(?:false|nil|true)\b/,operator:[/\bin\b|&&?|\|[|>]?|\\\\|::|\.\.\.?|\+\+?|-[->]?|<[-=>]|>=|!==?|\B!|=(?:==?|[>~])?|[*\/^]/,{pattern:/([^<])<(?!<)/,lookbehind:!0},{pattern:/([^>])>(?!>)/,lookbehind:!0}],punctuation:/<<|>>|[.,%\[\]{}()]/},e.languages.elixir.string.forEach(function(t){t.inside={interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:`punctuation`},rest:e.languages.elixir}}}})}at.displayName=`elm`,at.aliases=[];function at(e){e.languages.elm={comment:/--.*|\{-[\s\S]*?-\}/,char:{pattern:/'(?:[^\\'\r\n]|\\(?:[abfnrtv\\']|\d+|x[0-9a-fA-F]+|u\{[0-9a-fA-F]+\}))'/,greedy:!0},string:[{pattern:/"""[\s\S]*?"""/,greedy:!0},{pattern:/"(?:[^\\"\r\n]|\\.)*"/,greedy:!0}],"import-statement":{pattern:/(^[\t ]*)import\s+[A-Z]\w*(?:\.[A-Z]\w*)*(?:\s+as\s+(?:[A-Z]\w*)(?:\.[A-Z]\w*)*)?(?:\s+exposing\s+)?/m,lookbehind:!0,inside:{keyword:/\b(?:as|exposing|import)\b/}},keyword:/\b(?:alias|as|case|else|exposing|if|in|infixl|infixr|let|module|of|then|type)\b/,builtin:/\b(?:abs|acos|always|asin|atan|atan2|ceiling|clamp|compare|cos|curry|degrees|e|flip|floor|fromPolar|identity|isInfinite|isNaN|logBase|max|min|negate|never|not|pi|radians|rem|round|sin|sqrt|tan|toFloat|toPolar|toString|truncate|turns|uncurry|xor)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0x[0-9a-f]+)\b/i,operator:/\s\.\s|[+\-/*=.$<>:&|^?%#@~!]{2,}|[+\-/*=$<>:&|^?%#@~!]/,hvariable:/\b(?:[A-Z]\w*\.)*[a-z]\w*\b/,constant:/\b(?:[A-Z]\w*\.)*[A-Z]\w*\b/,punctuation:/[{}[\]|(),.:]/}}ot.displayName=`erb`,ot.aliases=[];function ot(e){e.register(U),e.register(V),(function(e){e.languages.erb={delimiter:{pattern:/^(\s*)<%=?|%>(?=\s*$)/,lookbehind:!0,alias:`punctuation`},ruby:{pattern:/\s*\S[\s\S]*/,alias:`language-ruby`,inside:e.languages.ruby}},e.hooks.add(`before-tokenize`,function(t){e.languages[`markup-templating`].buildPlaceholders(t,`erb`,/<%=?(?:[^\r\n]|[\r\n](?!=begin)|[\r\n]=begin\s(?:[^\r\n]|[\r\n](?!=end))*[\r\n]=end)+?%>/g)}),e.hooks.add(`after-tokenize`,function(t){e.languages[`markup-templating`].tokenizePlaceholders(t,`erb`)})})(e)}st.displayName=`erlang`,st.aliases=[];function st(e){e.languages.erlang={comment:/%.+/,string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},"quoted-function":{pattern:/'(?:\\.|[^\\'\r\n])+'(?=\()/,alias:`function`},"quoted-atom":{pattern:/'(?:\\.|[^\\'\r\n])+'/,alias:`atom`},boolean:/\b(?:false|true)\b/,keyword:/\b(?:after|begin|case|catch|end|fun|if|of|receive|try|when)\b/,number:[/\$\\?./,/\b\d+#[a-z0-9]+/i,/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i],function:/\b[a-z][\w@]*(?=\()/,variable:{pattern:/(^|[^@])(?:\b|\?)[A-Z_][\w@]*/,lookbehind:!0},operator:[/[=\/<>:]=|=[:\/]=|\+\+?|--?|[=*\/!]|\b(?:and|andalso|band|bnot|bor|bsl|bsr|bxor|div|not|or|orelse|rem|xor)\b/,{pattern:/(^|[^<])<(?!<)/,lookbehind:!0},{pattern:/(^|[^>])>(?!>)/,lookbehind:!0}],atom:/\b[a-z][\w@]*/,punctuation:/[()[\]{}:;,.#|]|<<|>>/}}ct.displayName=`lua`,ct.aliases=[];function ct(e){e.languages.lua={comment:/^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m,string:{pattern:/(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[^z]))*\1|\[(=*)\[[\s\S]*?\]\2\]/,greedy:!0},number:/\b0x[a-f\d]+(?:\.[a-f\d]*)?(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|(?:\.\d*)?(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i,keyword:/\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,function:/(?!\d)\w+(?=\s*(?:[({]))/,operator:[/[-+*%^&|#]|\/\/?|<[<=]?|>[>=]?|[=~]=?/,{pattern:/(^|[^.])\.\.(?!\.)/,lookbehind:!0}],punctuation:/[\[\](){},;]|\.+|:+/}}lt.displayName=`etlua`,lt.aliases=[];function lt(e){e.register(ct),e.register(U),(function(e){e.languages.etlua={delimiter:{pattern:/^<%[-=]?|-?%>$/,alias:`punctuation`},"language-lua":{pattern:/[\s\S]+/,inside:e.languages.lua}},e.hooks.add(`before-tokenize`,function(t){e.languages[`markup-templating`].buildPlaceholders(t,`etlua`,/<%[\s\S]+?%>/g)}),e.hooks.add(`after-tokenize`,function(t){e.languages[`markup-templating`].tokenizePlaceholders(t,`etlua`)})})(e)}ut.displayName=`excel-formula`,ut.aliases=[`xls`,`xlsx`];function ut(e){e.languages[`excel-formula`]={comment:{pattern:/(\bN\(\s*)"(?:[^"]|"")*"(?=\s*\))/i,lookbehind:!0,greedy:!0},string:{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},reference:{pattern:/(?:'[^']*'|(?:[^\s()[\]{}<>*?"';,$&]*\[[^^\s()[\]{}<>*?"']+\])?\w+)!/,greedy:!0,alias:`string`,inside:{operator:/!$/,punctuation:/'/,sheet:{pattern:/[^[\]]+$/,alias:`function`},file:{pattern:/\[[^[\]]+\]$/,inside:{punctuation:/[[\]]/}},path:/[\s\S]+/}},"function-name":{pattern:/\b[A-Z]\w*(?=\()/i,alias:`builtin`},range:{pattern:/\$?\b(?:[A-Z]+\$?\d+:\$?[A-Z]+\$?\d+|[A-Z]+:\$?[A-Z]+|\d+:\$?\d+)\b/i,alias:`selector`,inside:{operator:/:/,cell:/\$?[A-Z]+\$?\d+/i,column:/\$?[A-Z]+/i,row:/\$?\d+/}},cell:{pattern:/\b[A-Z]+\d+\b|\$[A-Za-z]+\$?\d+\b|\b[A-Za-z]+\$\d+\b/,alias:`selector`},number:/(?:\b\d+(?:\.\d+)?|\B\.\d+)(?:e[+-]?\d+)?\b/i,boolean:/\b(?:FALSE|TRUE)\b/i,operator:/[-+*/^%=&,]|<[=>]?|>=?/,punctuation:/[[\]();{}|]/},e.languages.xlsx=e.languages.xls=e.languages[`excel-formula`]}dt.displayName=`factor`,dt.aliases=[];function dt(e){(function(e){var t={function:/\b(?:BUGS?|FIX(?:MES?)?|NOTES?|TODOS?|XX+|HACKS?|WARN(?:ING)?|\?{2,}|!{2,})\b/},n={number:/\\[^\s']|%\w/},r={comment:[{pattern:/(^|\s)(?:! .*|!$)/,lookbehind:!0,inside:t},{pattern:/(^|\s)\/\*\s[\s\S]*?\*\/(?=\s|$)/,lookbehind:!0,greedy:!0,inside:t},{pattern:/(^|\s)!\[(={0,6})\[\s[\s\S]*?\]\2\](?=\s|$)/,lookbehind:!0,greedy:!0,inside:t}],number:[{pattern:/(^|\s)[+-]?\d+(?=\s|$)/,lookbehind:!0},{pattern:/(^|\s)[+-]?0(?:b[01]+|o[0-7]+|d\d+|x[\dA-F]+)(?=\s|$)/i,lookbehind:!0},{pattern:/(^|\s)[+-]?\d+\/\d+\.?(?=\s|$)/,lookbehind:!0},{pattern:/(^|\s)\+?\d+\+\d+\/\d+(?=\s|$)/,lookbehind:!0},{pattern:/(^|\s)-\d+-\d+\/\d+(?=\s|$)/,lookbehind:!0},{pattern:/(^|\s)[+-]?(?:\d*\.\d+|\d+\.\d*|\d+)(?:e[+-]?\d+)?(?=\s|$)/i,lookbehind:!0},{pattern:/(^|\s)NAN:\s+[\da-fA-F]+(?=\s|$)/,lookbehind:!0},{pattern:/(^|\s)[+-]?0(?:b1\.[01]*|o1\.[0-7]*|d1\.\d*|x1\.[\dA-F]*)p\d+(?=\s|$)/i,lookbehind:!0}],regexp:{pattern:/(^|\s)R\/\s(?:\\\S|[^\\/])*\/(?:[idmsr]*|[idmsr]+-[idmsr]+)(?=\s|$)/,lookbehind:!0,alias:`number`,inside:{variable:/\\\S/,keyword:/[+?*\[\]^$(){}.|]/,operator:{pattern:/(\/)[idmsr]+(?:-[idmsr]+)?/,lookbehind:!0}}},boolean:{pattern:/(^|\s)[tf](?=\s|$)/,lookbehind:!0},"custom-string":{pattern:/(^|\s)[A-Z0-9\-]+"\s(?:\\\S|[^"\\])*"/,lookbehind:!0,greedy:!0,alias:`string`,inside:{number:/\\\S|%\w|\//}},"multiline-string":[{pattern:/(^|\s)STRING:\s+\S+(?:\n|\r\n).*(?:\n|\r\n)\s*;(?=\s|$)/,lookbehind:!0,greedy:!0,alias:`string`,inside:{number:n.number,"semicolon-or-setlocal":{pattern:/([\r\n][ \t]*);(?=\s|$)/,lookbehind:!0,alias:`function`}}},{pattern:/(^|\s)HEREDOC:\s+\S+(?:\n|\r\n).*(?:\n|\r\n)\s*\S+(?=\s|$)/,lookbehind:!0,greedy:!0,alias:`string`,inside:n},{pattern:/(^|\s)\[(={0,6})\[\s[\s\S]*?\]\2\](?=\s|$)/,lookbehind:!0,greedy:!0,alias:`string`,inside:n}],"special-using":{pattern:/(^|\s)USING:(?:\s\S+)*(?=\s+;(?:\s|$))/,lookbehind:!0,alias:`function`,inside:{string:{pattern:/(\s)[^:\s]+/,lookbehind:!0}}},"stack-effect-delimiter":[{pattern:/(^|\s)(?:call|eval|execute)?\((?=\s)/,lookbehind:!0,alias:`operator`},{pattern:/(\s)--(?=\s)/,lookbehind:!0,alias:`operator`},{pattern:/(\s)\)(?=\s|$)/,lookbehind:!0,alias:`operator`}],combinators:{pattern:null,lookbehind:!0,alias:`keyword`},"kernel-builtin":{pattern:null,lookbehind:!0,alias:`variable`},"sequences-builtin":{pattern:null,lookbehind:!0,alias:`variable`},"math-builtin":{pattern:null,lookbehind:!0,alias:`variable`},"constructor-word":{pattern:/(^|\s)<(?!=+>|-+>)\S+>(?=\s|$)/,lookbehind:!0,alias:`keyword`},"other-builtin-syntax":{pattern:null,lookbehind:!0,alias:`operator`},"conventionally-named-word":{pattern:/(^|\s)(?!")(?:(?:change|new|set|with)-\S+|\$\S+|>[^>\s]+|[^:>\s]+>|[^>\s]+>[^>\s]+|\+[^+\s]+\+|[^?\s]+\?|\?[^?\s]+|[^>\s]+>>|>>[^>\s]+|[^<\s]+<<|\([^()\s]+\)|[^!\s]+!|[^*\s]\S*\*|[^.\s]\S*\.)(?=\s|$)/,lookbehind:!0,alias:`keyword`},"colon-syntax":{pattern:/(^|\s)(?:[A-Z0-9\-]+#?)?:{1,2}\s+(?:;\S+|(?!;)\S+)(?=\s|$)/,lookbehind:!0,greedy:!0,alias:`function`},"semicolon-or-setlocal":{pattern:/(\s)(?:;|:>)(?=\s|$)/,lookbehind:!0,alias:`function`},"curly-brace-literal-delimiter":[{pattern:/(^|\s)[a-z]*\{(?=\s)/i,lookbehind:!0,alias:`operator`},{pattern:/(\s)\}(?=\s|$)/,lookbehind:!0,alias:`operator`}],"quotation-delimiter":[{pattern:/(^|\s)\[(?=\s)/,lookbehind:!0,alias:`operator`},{pattern:/(\s)\](?=\s|$)/,lookbehind:!0,alias:`operator`}],"normal-word":{pattern:/(^|\s)[^"\s]\S*(?=\s|$)/,lookbehind:!0},string:{pattern:/"(?:\\\S|[^"\\])*"/,greedy:!0,inside:n}},i=function(e){return(e+``).replace(/([.?*+\^$\[\]\\(){}|\-])/g,`\\$1`)},a=function(e){return RegExp(`(^|\\s)(?:`+e.map(i).join(`|`)+`)(?=\\s|$)`)},o={"kernel-builtin":`or.2nipd.4drop.tuck.wrapper.nip.wrapper?.callstack>array.die.dupd.callstack.callstack?.3dup.hashcode.pick.4nip.build.>boolean.nipd.clone.5nip.eq?.?.=.swapd.2over.clear.2dup.get-retainstack.not.tuple?.dup.3nipd.call.-rotd.object.drop.assert=.assert?.-rot.execute.boa.get-callstack.curried?.3drop.pickd.overd.over.roll.3nip.swap.and.2nip.rotd.throw.(clone).hashcode*.spin.reach.4dup.equal?.get-datastack.assert.2drop..boolean?.identity-hashcode.identity-tuple?.null.composed?.new.5drop.rot.-roll.xor.identity-tuple.boolean`.split(`.`),"other-builtin-syntax":"=======.recursive.flushable.>>.<<<<<<.M\\.B.PRIVATE>.\\.======.final.inline.delimiter.deprecated.>>>>>.<<<<<<<.parse-complex.malformed-complex.read-only.>>>>>>>.call-next-method.<<.foldable.$.$[.${".split(`.`),"sequences-builtin":`member-eq?.mismatch.append.assert-sequence=.longer.repetition.clone-like.3sequence.assert-sequence?.last-index-from.reversed.index-from.cut*.pad-tail.join-as.remove-eq!.concat-as.but-last.snip.nths.nth.sequence.longest.slice?..remove-nth.tail-slice.empty?.tail*.member?.virtual-sequence?.set-length.drop-prefix.iota.unclip.bounds-error?.unclip-last-slice.non-negative-integer-expected.non-negative-integer-expected?.midpoint@.longer?.?set-nth.?first.rest-slice.prepend-as.prepend.fourth.sift.subseq-start.new-sequence.?last.like.first4.1sequence.reverse.slice.virtual@.repetition?.set-last.index.4sequence.max-length.set-second.immutable-sequence.first2.first3.supremum.unclip-slice.suffix!.insert-nth.tail.3append.short.suffix.concat.flip.immutable?.reverse!.2sequence.sum.delete-all.indices.snip-slice..check-slice.sequence?.head.append-as.halves.sequence=.collapse-slice.?second.slice-error?.product.bounds-check?.bounds-check.immutable.virtual-exemplar.harvest.remove.pad-head.last.set-fourth.cartesian-product.remove-eq.shorten.shorter.reversed?.shorter?.shortest.head-slice.pop*.tail-slice*.but-last-slice.iota?.append!.cut-slice.new-resizable.head-slice*.sequence-hashcode.pop.set-nth.?nth.second.join.immutable-sequence?..3append-as.virtual-sequence.subseq?.remove-nth!.length.last-index.lengthen.assert-sequence.copy.move.third.first.tail?.set-first.prefix.bounds-error..exchange.surround.cut.min-length.set-third.push-all.head?.subseq-start-from.delete-slice.rest.sum-lengths.head*.infimum.remove!.glue.slice-error.subseq.push.replace-slice.subseq-as.unclip-last`.split(`.`),"math-builtin":`number=.next-power-of-2.?1+.fp-special?.imaginary-part.float>bits.number?.fp-infinity?.bignum?.fp-snan?.denominator.gcd.*.+.fp-bitwise=.-.u>=./.>=.bitand.power-of-2?.log2-expects-positive.neg?.<.log2.>.integer?.number.bits>double.2/.zero?.bits>float.float?.shift.ratio?.rect>.even?.ratio.fp-sign.bitnot.>fixnum.complex?./i.integer>fixnum./f.sgn.>bignum.next-float.u<.u>.mod.recip.rational.>float.2^.integer.fixnum?.neg.fixnum.sq.bignum.>rect.bit?.fp-qnan?.simple-gcd.complex..real.>fraction.double>bits.bitor.rem.fp-nan-payload.real-part.log2-expects-positive?.prev-float.align.unordered?.float.fp-nan?.abs.bitxor.integer>fixnum-strict.u<=.odd?.<=./mod.>integer.real?.rational?.numerator`.split(`.`)};Object.keys(o).forEach(function(e){r[e].pattern=a(o[e])});var s=`2bi.while.2tri.bi*.4dip.both?.same?.tri@.curry.prepose.3bi.?if.tri*.2keep.3keep.curried.2keepd.when.2bi*.2tri*.4keep.bi@.keepdd.do.unless*.tri-curry.if*.loop.bi-curry*.when*.2bi@.2tri@.with.2with.either?.bi.until.3dip.3curry.tri-curry*.tri-curry@.bi-curry.keepd.compose.2dip.if.3tri.unless.tuple.keep.2curry.tri.most.while*.dip.composed.bi-curry@.find-last-from.trim-head-slice.map-as.each-from.none?.trim-tail.partition.if-empty.accumulate*.reject!.find-from.accumulate-as.collector-for-as.reject.map.map-sum.accumulate!.2each-from.follow.supremum-by.map!.unless-empty.collector.padding.reduce-index.replicate-as.infimum-by.trim-tail-slice.count.find-index.filter.accumulate*!.reject-as.map-integers.map-find.reduce.selector.interleave.2map.filter-as.binary-reduce.map-index-as.find.produce.filter!.replicate.cartesian-map.cartesian-each.find-index-from.map-find-last.3map-as.3map.find-last.selector-as.2map-as.2map-reduce.accumulate.each.each-index.accumulate*-as.when-empty.all?.collector-as.push-either.new-like.collector-for.2selector.push-if.2all?.map-reduce.3each.any?.trim-slice.2reduce.change-nth.produce-as.2each.trim.trim-head.cartesian-find.map-index.if-zero.each-integer.unless-zero.(find-integer).when-zero.find-last-integer.(all-integers?).times.(each-integer).find-integer.all-integers?.unless-negative.if-positive.when-positive.when-negative.unless-positive.if-negative.case.2cleave.cond>quot.case>quot.3cleave.wrong-values.to-fixed-point.alist>quot.cond.cleave.call-effect.recursive-hashcode.spread.deep-spread>quot.2||.0||.n||.0&&.2&&.3||.1||.1&&.n&&.3&&.smart-unless*.keep-inputs.reduce-outputs.smart-when*.cleave>array.smart-with.smart-apply.smart-if.inputs/outputs.output>sequence-n.map-outputs.map-reduce-outputs.dropping.output>array.smart-map-reduce.smart-2map-reduce.output>array-n.nullary.inputsequence`.split(`.`);r.combinators.pattern=a(s),e.languages.factor=r})(e)}ft.displayName=`false`,ft.aliases=[];function ft(e){(function(e){e.languages.false={comment:{pattern:/\{[^}]*\}/},string:{pattern:/"[^"]*"/,greedy:!0},"character-code":{pattern:/'(?:[^\r]|\r\n?)/,alias:`number`},"assembler-code":{pattern:/\d+`/,alias:`important`},number:/\d+/,operator:/[-!#$%&'*+,./:;=>?@\\^_`|~ßø]/,punctuation:/\[|\]/,variable:/[a-z]/,"non-standard":{pattern:/[()!=]=?|[-+*/%]|\b(?:in|is)\b/}),delete e.languages[`firestore-security-rules`][`class-name`],e.languages.insertBefore(`firestore-security-rules`,`keyword`,{path:{pattern:/(^|[\s(),])(?:\/(?:[\w\xA0-\uFFFF]+|\{[\w\xA0-\uFFFF]+(?:=\*\*)?\}|\$\([\w\xA0-\uFFFF.]+\)))+/,lookbehind:!0,greedy:!0,inside:{variable:{pattern:/\{[\w\xA0-\uFFFF]+(?:=\*\*)?\}|\$\([\w\xA0-\uFFFF.]+\)/,inside:{operator:/=/,keyword:/\*\*/,punctuation:/[.$(){}]/}},punctuation:/\//}},method:{pattern:/(\ballow\s+)[a-z]+(?:\s*,\s*[a-z]+)*(?=\s*[:;])/,lookbehind:!0,alias:`builtin`,inside:{punctuation:/,/}}})}mt.displayName=`flow`,mt.aliases=[];function mt(e){e.register(C),(function(e){e.languages.flow=e.languages.extend(`javascript`,{}),e.languages.insertBefore(`flow`,`keyword`,{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:`class-name`}]}),e.languages.flow[`function-variable`].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore(`flow`,`operator`,{"flow-punctuation":{pattern:/\{\||\|\}/,alias:`punctuation`}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})})(e)}ht.displayName=`fortran`,ht.aliases=[];function ht(e){e.languages.fortran={"quoted-number":{pattern:/[BOZ](['"])[A-F0-9]+\1/i,alias:`number`},string:{pattern:/(?:\b\w+_)?(['"])(?:\1\1|&(?:\r\n?|\n)(?:[ \t]*!.*(?:\r\n?|\n)|(?![ \t]*!))|(?!\1).)*(?:\1|&)/,inside:{comment:{pattern:/(&(?:\r\n?|\n)\s*)!.*/,lookbehind:!0}}},comment:{pattern:/!.*/,greedy:!0},boolean:/\.(?:FALSE|TRUE)\.(?:_\w+)?/i,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[ED][+-]?\d+)?(?:_\w+)?/i,keyword:[/\b(?:CHARACTER|COMPLEX|DOUBLE ?PRECISION|INTEGER|LOGICAL|REAL)\b/i,/\b(?:END ?)?(?:BLOCK ?DATA|DO|FILE|FORALL|FUNCTION|IF|INTERFACE|MODULE(?! PROCEDURE)|PROGRAM|SELECT|SUBROUTINE|TYPE|WHERE)\b/i,/\b(?:ALLOCATABLE|ALLOCATE|BACKSPACE|CALL|CASE|CLOSE|COMMON|CONTAINS|CONTINUE|CYCLE|DATA|DEALLOCATE|DIMENSION|DO|END|EQUIVALENCE|EXIT|EXTERNAL|FORMAT|GO ?TO|IMPLICIT(?: NONE)?|INQUIRE|INTENT|INTRINSIC|MODULE PROCEDURE|NAMELIST|NULLIFY|OPEN|OPTIONAL|PARAMETER|POINTER|PRINT|PRIVATE|PUBLIC|READ|RETURN|REWIND|SAVE|SELECT|STOP|TARGET|WHILE|WRITE)\b/i,/\b(?:ASSIGNMENT|DEFAULT|ELEMENTAL|ELSE|ELSEIF|ELSEWHERE|ENTRY|IN|INCLUDE|INOUT|KIND|NULL|ONLY|OPERATOR|OUT|PURE|RECURSIVE|RESULT|SEQUENCE|STAT|THEN|USE)\b/i],operator:[/\*\*|\/\/|=>|[=\/]=|[<>]=?|::|[+\-*=%]|\.[A-Z]+\./i,{pattern:/(^|(?!\().)\/(?!\))/,lookbehind:!0}],punctuation:/\(\/|\/\)|[(),;:&]/}}gt.displayName=`fsharp`,gt.aliases=[];function gt(e){e.register(S),e.languages.fsharp=e.languages.extend(`clike`,{comment:[{pattern:/(^|[^\\])\(\*(?!\))[\s\S]*?\*\)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(?:"""[\s\S]*?"""|@"(?:""|[^"])*"|"(?:\\[\s\S]|[^\\"])*")B?/,greedy:!0},"class-name":{pattern:/(\b(?:exception|inherit|interface|new|of|type)\s+|\w\s*:\s*|\s:\??>\s*)[.\w]+\b(?:\s*(?:->|\*)\s*[.\w]+\b)*(?!\s*[:.])/,lookbehind:!0,inside:{operator:/->|\*/,punctuation:/\./}},keyword:/\b(?:let|return|use|yield)(?:!\B|\b)|\b(?:abstract|and|as|asr|assert|atomic|base|begin|break|checked|class|component|const|constraint|constructor|continue|default|delegate|do|done|downcast|downto|eager|elif|else|end|event|exception|extern|external|false|finally|fixed|for|fun|function|functor|global|if|in|include|inherit|inline|interface|internal|land|lazy|lor|lsl|lsr|lxor|match|member|method|mixin|mod|module|mutable|namespace|new|not|null|object|of|open|or|override|parallel|private|process|protected|public|pure|rec|sealed|select|sig|static|struct|tailcall|then|to|trait|true|try|type|upcast|val|virtual|void|volatile|when|while|with)\b/,number:[/\b0x[\da-fA-F]+(?:LF|lf|un)?\b/,/\b0b[01]+(?:uy|y)?\b/,/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[fm]|e[+-]?\d+)?\b/i,/\b\d+(?:[IlLsy]|UL|u[lsy]?)?\b/],operator:/([<>~&^])\1\1|([*.:<>&])\2|<-|->|[!=:]=|?|\??(?:<=|>=|<>|[-+*/%=<>])\??|[!?^&]|~[+~-]|:>|:\?>?/}),e.languages.insertBefore(`fsharp`,`keyword`,{preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:`property`,inside:{directive:{pattern:/(^#)\b(?:else|endif|if|light|line|nowarn)\b/,lookbehind:!0,alias:`keyword`}}}}),e.languages.insertBefore(`fsharp`,`punctuation`,{"computation-expression":{pattern:/\b[_a-z]\w*(?=\s*\{)/i,alias:`keyword`}}),e.languages.insertBefore(`fsharp`,`string`,{annotation:{pattern:/\[<.+?>\]/,greedy:!0,inside:{punctuation:/^\[<|>\]$/,"class-name":{pattern:/^\w+$|(^|;\s*)[A-Z]\w*(?=\()/,lookbehind:!0},"annotation-content":{pattern:/[\s\S]+/,inside:e.languages.fsharp}}},char:{pattern:/'(?:[^\\']|\\(?:.|\d{3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}|U[a-fA-F\d]{8}))'B?/,greedy:!0}})}_t.displayName=`ftl`,_t.aliases=[];function _t(e){e.register(U),(function(e){for(var t=`[^<()"']|\\((?:)*\\)|<(?!#--)|<#--(?:[^-]|-(?!->))*-->|"(?:[^\\\\"]|\\\\.)*"|'(?:[^\\\\']|\\\\.)*'`,n=0;n<2;n++)t=t.replace(//g,function(){return t});t=t.replace(//g,`[^\\s\\S]`);var r={comment:/<#--[\s\S]*?-->/,string:[{pattern:/\br("|')(?:(?!\1)[^\\]|\\.)*\1/,greedy:!0},{pattern:RegExp(`("|')(?:(?!\\1|\\$\\{)[^\\\\]|\\\\.|\\$\\{(?:(?!\\})(?:))*\\})*\\1`.replace(//g,function(){return t})),greedy:!0,inside:{interpolation:{pattern:RegExp(`((?:^|[^\\\\])(?:\\\\\\\\)*)\\$\\{(?:(?!\\})(?:))*\\}`.replace(//g,function(){return t})),lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:`punctuation`},rest:null}}}}],keyword:/\b(?:as)\b/,boolean:/\b(?:false|true)\b/,"builtin-function":{pattern:/((?:^|[^?])\?\s*)\w+/,lookbehind:!0,alias:`function`},function:/\b\w+(?=\s*\()/,number:/\b\d+(?:\.\d+)?\b/,operator:/\.\.[<*!]?|->|--|\+\+|&&|\|\||\?{1,2}|[-+*/%!=<>]=?|\b(?:gt|gte|lt|lte)\b/,punctuation:/[,;.:()[\]{}]/};r.string[1].inside.interpolation.inside.rest=r,e.languages.ftl={"ftl-comment":{pattern:/^<#--[\s\S]*/,alias:`comment`},"ftl-directive":{pattern:/^<[\s\S]+>$/,inside:{directive:{pattern:/(^<\/?)[#@][a-z]\w*/i,lookbehind:!0,alias:`keyword`},punctuation:/^<\/?|\/?>$/,content:{pattern:/\s*\S[\s\S]*/,alias:`ftl`,inside:r}}},"ftl-interpolation":{pattern:/^\$\{[\s\S]*\}$/,inside:{punctuation:/^\$\{|\}$/,content:{pattern:/\s*\S[\s\S]*/,alias:`ftl`,inside:r}}}},e.hooks.add(`before-tokenize`,function(n){var r=RegExp(`<#--[\\s\\S]*?-->|<\\/?[#@][a-zA-Z](?:)*?>|\\$\\{(?:)*?\\}`.replace(//g,function(){return t}),`gi`);e.languages[`markup-templating`].buildPlaceholders(n,`ftl`,r)}),e.hooks.add(`after-tokenize`,function(t){e.languages[`markup-templating`].tokenizePlaceholders(t,`ftl`)})})(e)}vt.displayName=`gap`,vt.aliases=[];function vt(e){e.languages.gap={shell:{pattern:/^gap>[\s\S]*?(?=^gap>|$(?![\s\S]))/m,greedy:!0,inside:{gap:{pattern:/^(gap>).+(?:(?:\r(?:\n|(?!\n))|\n)>.*)*/,lookbehind:!0,inside:null},punctuation:/^gap>/}},comment:{pattern:/#.*/,greedy:!0},string:{pattern:/(^|[^\\'"])(?:'(?:[^\r\n\\']|\\.){1,10}'|"(?:[^\r\n\\"]|\\.)*"(?!")|"""[\s\S]*?""")/,lookbehind:!0,greedy:!0,inside:{continuation:{pattern:/([\r\n])>/,lookbehind:!0,alias:`punctuation`}}},keyword:/\b(?:Assert|Info|IsBound|QUIT|TryNextMethod|Unbind|and|atomic|break|continue|do|elif|else|end|fi|for|function|if|in|local|mod|not|od|or|quit|readonly|readwrite|rec|repeat|return|then|until|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:{pattern:/(^|[^\w.]|\.\.)(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?(?:_[a-z]?)?(?=$|[^\w.]|\.\.)/,lookbehind:!0},continuation:{pattern:/([\r\n])>/,lookbehind:!0,alias:`punctuation`},operator:/->|[-+*/^~=!]|<>|[<>]=?|:=|\.\./,punctuation:/[()[\]{},;.:]/},e.languages.gap.shell.inside.gap.inside=e.languages.gap}yt.displayName=`gcode`,yt.aliases=[];function yt(e){e.languages.gcode={comment:/;.*|\B\(.*?\)\B/,string:{pattern:/"(?:""|[^"])*"/,greedy:!0},keyword:/\b[GM]\d+(?:\.\d+)?\b/,property:/\b[A-Z]/,checksum:{pattern:/(\*)\d+/,lookbehind:!0,alias:`number`},punctuation:/[:*]/}}bt.displayName=`gdscript`,bt.aliases=[];function bt(e){e.languages.gdscript={comment:/#.*/,string:{pattern:/@?(?:("|')(?:(?!\1)[^\n\\]|\\[\s\S])*\1(?!"|')|"""(?:[^\\]|\\[\s\S])*?""")/,greedy:!0},"class-name":{pattern:/(^(?:class|class_name|extends)[ \t]+|^export\([ \t]*|\bas[ \t]+|(?:\b(?:const|var)[ \t]|[,(])[ \t]*\w+[ \t]*:[ \t]*|->[ \t]*)[a-zA-Z_]\w*/m,lookbehind:!0},keyword:/\b(?:and|as|assert|break|breakpoint|class|class_name|const|continue|elif|else|enum|export|extends|for|func|if|in|is|master|mastersync|match|not|null|onready|or|pass|preload|puppet|puppetsync|remote|remotesync|return|self|setget|signal|static|tool|var|while|yield)\b/,function:/\b[a-z_]\w*(?=[ \t]*\()/i,variable:/\$\w+/,number:[/\b0b[01_]+\b|\b0x[\da-fA-F_]+\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.[\d_]+)(?:e[+-]?[\d_]+)?\b/,/\b(?:INF|NAN|PI|TAU)\b/],constant:/\b[A-Z][A-Z_\d]*\b/,boolean:/\b(?:false|true)\b/,operator:/->|:=|&&|\|\||<<|>>|[-+*/%&|!<>=]=?|[~^]/,punctuation:/[.:,;()[\]{}]/}}xt.displayName=`gedcom`,xt.aliases=[];function xt(e){e.languages.gedcom={"line-value":{pattern:/(^[\t ]*\d+ +(?:@\w[\w!"$%&'()*+,\-./:;<=>?[\\\]^`{|}~\x80-\xfe #]*@ +)?\w+ ).+/m,lookbehind:!0,inside:{pointer:{pattern:/^@\w[\w!"$%&'()*+,\-./:;<=>?[\\\]^`{|}~\x80-\xfe #]*@$/,alias:`variable`}}},record:{pattern:/(^[\t ]*\d+ +(?:@\w[\w!"$%&'()*+,\-./:;<=>?[\\\]^`{|}~\x80-\xfe #]*@ +)?)\w+/m,lookbehind:!0,alias:`tag`},level:{pattern:/(^[\t ]*)\d+/m,lookbehind:!0,alias:`number`},pointer:{pattern:/@\w[\w!"$%&'()*+,\-./:;<=>?[\\\]^`{|}~\x80-\xfe #]*@/,alias:`variable`}}}St.displayName=`gettext`,St.aliases=[`po`];function St(e){e.languages.gettext={comment:[{pattern:/# .*/,greedy:!0,alias:`translator-comment`},{pattern:/#\..*/,greedy:!0,alias:`extracted-comment`},{pattern:/#:.*/,greedy:!0,alias:`reference-comment`},{pattern:/#,.*/,greedy:!0,alias:`flag-comment`},{pattern:/#\|.*/,greedy:!0,alias:`previously-untranslated-comment`},{pattern:/#.*/,greedy:!0}],string:{pattern:/(^|[^\\])"(?:[^"\\]|\\.)*"/,lookbehind:!0,greedy:!0},keyword:/^msg(?:ctxt|id|id_plural|str)\b/m,number:/\b\d+\b/,punctuation:/[\[\]]/},e.languages.po=e.languages.gettext}Ct.displayName=`gherkin`,Ct.aliases=[];function Ct(e){(function(e){var t=`(?:\\r?\\n|\\r)[ \\t]*\\|.+\\|(?:(?!\\|).)*`;e.languages.gherkin={pystring:{pattern:/("""|''')[\s\S]+?\1/,alias:`string`},comment:{pattern:/(^[ \t]*)#.*/m,lookbehind:!0},tag:{pattern:/(^[ \t]*)@\S*/m,lookbehind:!0},feature:{pattern:/((?:^|\r?\n|\r)[ \t]*)(?:Ability|Ahoy matey!|Arwedd|Aspekt|Besigheid Behoefte|Business Need|Caracteristica|Característica|Egenskab|Egenskap|Eiginleiki|Feature|Fīča|Fitur|Fonctionnalité|Fonksyonalite|Funcionalidade|Funcionalitat|Functionalitate|Funcţionalitate|Funcționalitate|Functionaliteit|Fungsi|Funkcia|Funkcija|Funkcionalitāte|Funkcionalnost|Funkcja|Funksie|Funktionalität|Funktionalitéit|Funzionalità|Hwaet|Hwæt|Jellemző|Karakteristik|Lastnost|Mak|Mogucnost|laH|Mogućnost|Moznosti|Možnosti|OH HAI|Omadus|Ominaisuus|Osobina|Özellik|Potrzeba biznesowa|perbogh|poQbogh malja'|Požadavek|Požiadavka|Pretty much|Qap|Qu'meH 'ut|Savybė|Tính năng|Trajto|Vermoë|Vlastnosť|Właściwość|Značilnost|Δυνατότητα|Λειτουργία|Могућност|Мөмкинлек|Особина|Свойство|Үзенчәлеклелек|Функционал|Функционалност|Функция|Функціонал|תכונה|خاصية|خصوصیت|صلاحیت|کاروبار کی ضرورت|وِیژگی|रूप लेख|ਖਾਸੀਅਤ|ਨਕਸ਼ ਨੁਹਾਰ|ਮੁਹਾਂਦਰਾ|గుణము|ಹೆಚ್ಚಳ|ความต้องการทางธุรกิจ|ความสามารถ|โครงหลัก|기능|フィーチャ|功能|機能):(?:[^:\r\n]+(?:\r?\n|\r|$))*/,lookbehind:!0,inside:{important:{pattern:/(:)[^\r\n]+/,lookbehind:!0},keyword:/[^:\r\n]+:/}},scenario:{pattern:/(^[ \t]*)(?:Abstract Scenario|Abstrakt Scenario|Achtergrond|Aer|Ær|Agtergrond|All y'all|Antecedentes|Antecedents|Atburðarás|Atburðarásir|Awww, look mate|B4|Background|Baggrund|Bakgrund|Bakgrunn|Bakgrunnur|Beispiele|Beispiller|Bối cảnh|Cefndir|Cenario|Cenário|Cenario de Fundo|Cenário de Fundo|Cenarios|Cenários|Contesto|Context|Contexte|Contexto|Conto|Contoh|Contone|Dæmi|Dasar|Dead men tell no tales|Delineacao do Cenario|Delineação do Cenário|Dis is what went down|Dữ liệu|Dyagram Senaryo|Dyagram senaryo|Egzanp|Ejemplos|Eksempler|Ekzemploj|Enghreifftiau|Esbozo do escenario|Escenari|Escenario|Esempi|Esquema de l'escenari|Esquema del escenario|Esquema do Cenario|Esquema do Cenário|EXAMPLZ|Examples|Exempel|Exemple|Exemples|Exemplos|First off|Fono|Forgatókönyv|Forgatókönyv vázlat|Fundo|Geçmiş|Grundlage|Hannergrond|ghantoH|Háttér|Heave to|Istorik|Juhtumid|Keadaan|Khung kịch bản|Khung tình huống|Kịch bản|Koncept|Konsep skenario|Kontèks|Kontekst|Kontekstas|Konteksts|Kontext|Konturo de la scenaro|Latar Belakang|lut chovnatlh|lut|lutmey|Lýsing Atburðarásar|Lýsing Dæma|MISHUN SRSLY|MISHUN|Menggariskan Senario|mo'|Náčrt Scenára|Náčrt Scénáře|Náčrt Scenáru|Oris scenarija|Örnekler|Osnova|Osnova Scenára|Osnova scénáře|Osnutek|Ozadje|Paraugs|Pavyzdžiai|Példák|Piemēri|Plan du scénario|Plan du Scénario|Plan Senaryo|Plan senaryo|Plang vum Szenario|Pozadí|Pozadie|Pozadina|Príklady|Příklady|Primer|Primeri|Primjeri|Przykłady|Raamstsenaarium|Reckon it's like|Rerefons|Scenár|Scénář|Scenarie|Scenarij|Scenarijai|Scenarijaus šablonas|Scenariji|Scenārijs|Scenārijs pēc parauga|Scenarijus|Scenario|Scénario|Scenario Amlinellol|Scenario Outline|Scenario Template|Scenariomal|Scenariomall|Scenarios|Scenariu|Scenariusz|Scenaro|Schema dello scenario|Se ðe|Se the|Se þe|Senario|Senaryo Deskripsyon|Senaryo deskripsyon|Senaryo|Senaryo taslağı|Shiver me timbers|Situācija|Situai|Situasie Uiteensetting|Situasie|Skenario konsep|Skenario|Skica|Structura scenariu|Structură scenariu|Struktura scenarija|Stsenaarium|Swa hwaer swa|Swa|Swa hwær swa|Szablon scenariusza|Szenario|Szenariogrundriss|Tapaukset|Tapaus|Tapausaihio|Taust|Tausta|Template Keadaan|Template Senario|Template Situai|The thing of it is|Tình huống|Variantai|Voorbeelde|Voorbeelden|Wharrimean is|Yo-ho-ho|You'll wanna|Założenia|Παραδείγματα|Περιγραφή Σεναρίου|Σενάρια|Σενάριο|Υπόβαθρο|Кереш|Контекст|Концепт|Мисаллар|Мисоллар|Основа|Передумова|Позадина|Предистория|Предыстория|Приклади|Пример|Примери|Примеры|Рамка на сценарий|Скица|Структура сценарија|Структура сценария|Структура сценарію|Сценарий|Сценарий структураси|Сценарийның төзелеше|Сценарији|Сценарио|Сценарій|Тарих|Үрнәкләр|דוגמאות|רקע|תבנית תרחיש|תרחיש|الخلفية|الگوی سناریو|امثلة|پس منظر|زمینه|سناریو|سيناريو|سيناريو مخطط|مثالیں|منظر نامے کا خاکہ|منظرنامہ|نمونه ها|उदाहरण|परिदृश्य|परिदृश्य रूपरेखा|पृष्ठभूमि|ਉਦਾਹਰਨਾਂ|ਪਟਕਥਾ|ਪਟਕਥਾ ਢਾਂਚਾ|ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ|ਪਿਛੋਕੜ|ఉదాహరణలు|కథనం|నేపథ్యం|సన్నివేశం|ಉದಾಹರಣೆಗಳು|ಕಥಾಸಾರಾಂಶ|ವಿವರಣೆ|ಹಿನ್ನೆಲೆ|โครงสร้างของเหตุการณ์|ชุดของตัวอย่าง|ชุดของเหตุการณ์|แนวคิด|สรุปเหตุการณ์|เหตุการณ์|배경|시나리오|시나리오 개요|예|サンプル|シナリオ|シナリオアウトライン|シナリオテンプレ|シナリオテンプレート|テンプレ|例|例子|剧本|剧本大纲|劇本|劇本大綱|场景|场景大纲|場景|場景大綱|背景):[^:\r\n]*/m,lookbehind:!0,inside:{important:{pattern:/(:)[^\r\n]*/,lookbehind:!0},keyword:/[^:\r\n]+:/}},"table-body":{pattern:RegExp(`(`+t+`)(?:`+t+`)+`),lookbehind:!0,inside:{outline:{pattern:/<[^>]+>/,alias:`variable`},td:{pattern:/\s*[^\s|][^|]*/,alias:`string`},punctuation:/\|/}},"table-head":{pattern:RegExp(t),inside:{th:{pattern:/\s*[^\s|][^|]*/,alias:`variable`},punctuation:/\|/}},atrule:{pattern:/(^[ \t]+)(?:'a|'ach|'ej|7|a|A také|A taktiež|A tiež|A zároveň|Aber|Ac|Adott|Akkor|Ak|Aleshores|Ale|Ali|Allora|Alors|Als|Ama|Amennyiben|Amikor|Ampak|an|AN|Ananging|And y'all|And|Angenommen|Anrhegedig a|An|Apabila|Atès|Atesa|Atunci|Avast!|Aye|A|awer|Bagi|Banjur|Bet|Biết|Blimey!|Buh|But at the end of the day I reckon|But y'all|But|BUT|Cal|Când|Cand|Cando|Ce|Cuando|Če|Ða ðe|Ða|Dadas|Dada|Dados|Dado|DaH ghu' bejlu'|dann|Dann|Dano|Dan|Dar|Dat fiind|Data|Date fiind|Date|Dati fiind|Dati|Daţi fiind|Dați fiind|DEN|Dato|De|Den youse gotta|Dengan|Diberi|Diyelim ki|Donada|Donat|Donitaĵo|Do|Dun|Duota|Ðurh|Eeldades|Ef|Eğer ki|Entao|Então|Entón|E|En|Entonces|Epi|És|Etant donnée|Etant donné|Et|Étant données|Étant donnée|Étant donné|Etant données|Etant donnés|Étant donnés|Fakat|Gangway!|Gdy|Gegeben seien|Gegeben sei|Gegeven|Gegewe|ghu' noblu'|Gitt|Given y'all|Given|Givet|Givun|Ha|Cho|I CAN HAZ|In|Ir|It's just unbelievable|I|Ja|Jeśli|Jeżeli|Kad|Kada|Kadar|Kai|Kaj|Když|Keď|Kemudian|Ketika|Khi|Kiedy|Ko|Kuid|Kui|Kun|Lan|latlh|Le sa a|Let go and haul|Le|Lè sa a|Lè|Logo|Lorsqu'<|Lorsque|mä|Maar|Mais|Mając|Ma|Majd|Maka|Manawa|Mas|Men|Menawa|Mutta|Nalika|Nalikaning|Nanging|Når|När|Nato|Nhưng|Niin|Njuk|O zaman|Och|Og|Oletetaan|Ond|Onda|Oraz|Pak|Pero|Però|Podano|Pokiaľ|Pokud|Potem|Potom|Privzeto|Pryd|Quan|Quand|Quando|qaSDI'|Så|Sed|Se|Siis|Sipoze ke|Sipoze Ke|Sipoze|Si|Şi|Și|Soit|Stel|Tada|Tad|Takrat|Tak|Tapi|Ter|Tetapi|Tha the|Tha|Then y'all|Then|Thì|Thurh|Toda|Too right|Un|Und|ugeholl|Và|vaj|Vendar|Ve|wann|Wanneer|WEN|Wenn|When y'all|When|Wtedy|Wun|Y'know|Yeah nah|Yna|Youse know like when|Youse know when youse got|Y|Za predpokladu|Za předpokladu|Zadan|Zadani|Zadano|Zadate|Zadato|Zakładając|Zaradi|Zatati|Þa þe|Þa|Þá|Þegar|Þurh|Αλλά|Δεδομένου|Και|Όταν|Τότε|А також|Агар|Але|Али|Аммо|А|Әгәр|Әйтик|Әмма|Бирок|Ва|Вә|Дадено|Дано|Допустим|Если|Задате|Задати|Задато|И|І|К тому же|Када|Кад|Когато|Когда|Коли|Ләкин|Лекин|Нәтиҗәдә|Нехай|Но|Онда|Припустимо, що|Припустимо|Пусть|Также|Та|Тогда|Тоді|То|Унда|Һәм|Якщо|אבל|אזי|אז|בהינתן|וגם|כאשר|آنگاه|اذاً|اگر|اما|اور|با فرض|بالفرض|بفرض|پھر|تب|ثم|جب|عندما|فرض کیا|لكن|لیکن|متى|هنگامی|و|अगर|और|कदा|किन्तु|चूंकि|जब|तथा|तदा|तब|परन्तु|पर|यदि|ਅਤੇ|ਜਦੋਂ|ਜਿਵੇਂ ਕਿ|ਜੇਕਰ|ਤਦ|ਪਰ|అప్పుడు|ఈ పరిస్థితిలో|కాని|చెప్పబడినది|మరియు|ಆದರೆ|ನಂತರ|ನೀಡಿದ|ಮತ್ತು|ಸ್ಥಿತಿಯನ್ನು|กำหนดให้|ดังนั้น|แต่|เมื่อ|และ|그러면<|그리고<|단<|만약<|만일<|먼저<|조건<|하지만<|かつ<|しかし<|ただし<|ならば<|もし<|並且<|但し<|但是<|假如<|假定<|假設<|假设<|前提<|同时<|同時<|并且<|当<|當<|而且<|那么<|那麼<)(?=[ \t])/m,lookbehind:!0},string:{pattern:/"(?:\\.|[^"\\\r\n])*"|'(?:\\.|[^'\\\r\n])*'/,inside:{outline:{pattern:/<[^>]+>/,alias:`variable`}}},outline:{pattern:/<[^>]+>/,alias:`variable`}}})(e)}wt.displayName=`git`,wt.aliases=[];function wt(e){e.languages.git={comment:/^#.*/m,deleted:/^[-–].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m}}Tt.displayName=`glsl`,Tt.aliases=[];function Tt(e){e.register(F),e.languages.glsl=e.languages.extend(`c`,{keyword:/\b(?:active|asm|atomic_uint|attribute|[ibdu]?vec[234]|bool|break|buffer|case|cast|centroid|class|coherent|common|const|continue|d?mat[234](?:x[234])?|default|discard|do|double|else|enum|extern|external|false|filter|fixed|flat|float|for|fvec[234]|goto|half|highp|hvec[234]|[iu]?sampler2DMS(?:Array)?|[iu]?sampler2DRect|[iu]?samplerBuffer|[iu]?samplerCube|[iu]?samplerCubeArray|[iu]?sampler[123]D|[iu]?sampler[12]DArray|[iu]?image2DMS(?:Array)?|[iu]?image2DRect|[iu]?imageBuffer|[iu]?imageCube|[iu]?imageCubeArray|[iu]?image[123]D|[iu]?image[12]DArray|if|in|inline|inout|input|int|interface|invariant|layout|long|lowp|mediump|namespace|noinline|noperspective|out|output|partition|patch|precise|precision|public|readonly|resource|restrict|return|sample|sampler[12]DArrayShadow|sampler[12]DShadow|sampler2DRectShadow|sampler3DRect|samplerCubeArrayShadow|samplerCubeShadow|shared|short|sizeof|smooth|static|struct|subroutine|superp|switch|template|this|true|typedef|uint|uniform|union|unsigned|using|varying|void|volatile|while|writeonly)\b/})}Et.displayName=`gml`,Et.aliases=[`gamemakerlanguage`];function Et(e){e.register(S),e.languages.gamemakerlanguage=e.languages.gml=e.languages.extend(`clike`,{keyword:/\b(?:break|case|continue|default|do|else|enum|exit|for|globalvar|if|repeat|return|switch|until|var|while)\b/,number:/(?:\b0x[\da-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ulf]{0,4}/i,operator:/--|\+\+|[-+%/=]=?|!=|\*\*?=?|<[<=>]?|>[=>]?|&&?|\^\^?|\|\|?|~|\b(?:and|at|not|or|with|xor)\b/,constant:/\b(?:GM_build_date|GM_version|action_(?:continue|restart|reverse|stop)|all|gamespeed_(?:fps|microseconds)|global|local|noone|other|pi|pointer_(?:invalid|null)|self|timezone_(?:local|utc)|undefined|ev_(?:create|destroy|step|alarm|keyboard|mouse|collision|other|draw|draw_(?:begin|end|post|pre)|keypress|keyrelease|trigger|(?:left|middle|no|right)_button|(?:left|middle|right)_press|(?:left|middle|right)_release|mouse_(?:enter|leave|wheel_down|wheel_up)|global_(?:left|middle|right)_button|global_(?:left|middle|right)_press|global_(?:left|middle|right)_release|joystick(?:1|2)_(?:button1|button2|button3|button4|button5|button6|button7|button8|down|left|right|up)|outside|boundary|game_start|game_end|room_start|room_end|no_more_lives|animation_end|end_of_path|no_more_health|user\d|gui|gui_begin|gui_end|step_(?:begin|end|normal))|vk_(?:alt|anykey|backspace|control|delete|down|end|enter|escape|home|insert|left|nokey|pagedown|pageup|pause|printscreen|return|right|shift|space|tab|up|f\d|numpad\d|add|decimal|divide|lalt|lcontrol|lshift|multiply|ralt|rcontrol|rshift|subtract)|achievement_(?:filter_(?:all_players|favorites_only|friends_only)|friends_info|info|leaderboard_info|our_info|pic_loaded|show_(?:achievement|bank|friend_picker|leaderboard|profile|purchase_prompt|ui)|type_challenge|type_score_challenge)|asset_(?:font|object|path|room|script|shader|sound|sprite|tiles|timeline|unknown)|audio_(?:3d|falloff_(?:exponent_distance|exponent_distance_clamped|inverse_distance|inverse_distance_clamped|linear_distance|linear_distance_clamped|none)|mono|new_system|old_system|stereo)|bm_(?:add|complex|dest_alpha|dest_color|dest_colour|inv_dest_alpha|inv_dest_color|inv_dest_colour|inv_src_alpha|inv_src_color|inv_src_colour|max|normal|one|src_alpha|src_alpha_sat|src_color|src_colour|subtract|zero)|browser_(?:chrome|firefox|ie|ie_mobile|not_a_browser|opera|safari|safari_mobile|tizen|unknown|windows_store)|buffer_(?:bool|f16|f32|f64|fast|fixed|generalerror|grow|invalidtype|network|outofbounds|outofspace|s16|s32|s8|seek_end|seek_relative|seek_start|string|text|u16|u32|u64|u8|vbuffer|wrap)|c_(?:aqua|black|blue|dkgray|fuchsia|gray|green|lime|ltgray|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)|cmpfunc_(?:always|equal|greater|greaterequal|less|lessequal|never|notequal)|cr_(?:appstart|arrow|beam|cross|default|drag|handpoint|hourglass|none|size_all|size_nesw|size_ns|size_nwse|size_we|uparrow)|cull_(?:clockwise|counterclockwise|noculling)|device_(?:emulator|tablet)|device_ios_(?:ipad|ipad_retina|iphone|iphone5|iphone6|iphone6plus|iphone_retina|unknown)|display_(?:landscape|landscape_flipped|portrait|portrait_flipped)|dll_(?:cdecl|cdel|stdcall)|ds_type_(?:grid|list|map|priority|queue|stack)|ef_(?:cloud|ellipse|explosion|firework|flare|rain|ring|smoke|smokeup|snow|spark|star)|fa_(?:archive|bottom|center|directory|hidden|left|middle|readonly|right|sysfile|top|volumeid)|fb_login_(?:default|fallback_to_webview|forcing_safari|forcing_webview|no_fallback_to_webview|use_system_account)|iap_(?:available|canceled|ev_consume|ev_product|ev_purchase|ev_restore|ev_storeload|failed|purchased|refunded|status_available|status_loading|status_processing|status_restoring|status_unavailable|status_uninitialised|storeload_failed|storeload_ok|unavailable)|leaderboard_type_(?:number|time_mins_secs)|lighttype_(?:dir|point)|matrix_(?:projection|view|world)|mb_(?:any|left|middle|none|right)|network_(?:config_(?:connect_timeout|disable_reliable_udp|enable_reliable_udp|use_non_blocking_socket)|socket_(?:bluetooth|tcp|udp)|type_(?:connect|data|disconnect|non_blocking_connect))|of_challenge_(?:lose|tie|win)|os_(?:android|ios|linux|macosx|ps3|ps4|psvita|unknown|uwp|win32|win8native|windows|winphone|xboxone)|phy_debug_render_(?:aabb|collision_pairs|coms|core_shapes|joints|obb|shapes)|phy_joint_(?:anchor_1_x|anchor_1_y|anchor_2_x|anchor_2_y|angle|angle_limits|damping_ratio|frequency|length_1|length_2|lower_angle_limit|max_force|max_length|max_motor_force|max_motor_torque|max_torque|motor_force|motor_speed|motor_torque|reaction_force_x|reaction_force_y|reaction_torque|speed|translation|upper_angle_limit)|phy_particle_data_flag_(?:category|color|colour|position|typeflags|velocity)|phy_particle_flag_(?:colormixing|colourmixing|elastic|powder|spring|tensile|viscous|wall|water|zombie)|phy_particle_group_flag_(?:rigid|solid)|pr_(?:linelist|linestrip|pointlist|trianglefan|trianglelist|trianglestrip)|ps_(?:distr|shape)_(?:diamond|ellipse|gaussian|invgaussian|line|linear|rectangle)|pt_shape_(?:circle|cloud|disk|explosion|flare|line|pixel|ring|smoke|snow|spark|sphere|square|star)|ty_(?:real|string)|gp_(?:face\d|axislh|axislv|axisrh|axisrv|padd|padl|padr|padu|select|shoulderl|shoulderlb|shoulderr|shoulderrb|start|stickl|stickr)|lb_disp_(?:none|numeric|time_ms|time_sec)|lb_sort_(?:ascending|descending|none)|ov_(?:achievements|community|friends|gamegroup|players|settings)|ugc_(?:filetype_(?:community|microtrans)|list_(?:Favorited|Followed|Published|Subscribed|UsedOrPlayed|VotedDown|VotedOn|VotedUp|WillVoteLater)|match_(?:AllGuides|Artwork|Collections|ControllerBindings|IntegratedGuides|Items|Items_Mtx|Items_ReadyToUse|Screenshots|UsableInGame|Videos|WebGuides)|query_(?:AcceptedForGameRankedByAcceptanceDate|CreatedByFriendsRankedByPublicationDate|FavoritedByFriendsRankedByPublicationDate|NotYetRated)|query_RankedBy(?:NumTimesReported|PublicationDate|TextSearch|TotalVotesAsc|Trend|Vote|VotesUp)|result_success|sortorder_CreationOrder(?:Asc|Desc)|sortorder_(?:ForModeration|LastUpdatedDesc|SubscriptionDateDesc|TitleAsc|VoteScoreDesc)|visibility_(?:friends_only|private|public))|vertex_usage_(?:binormal|blendindices|blendweight|color|colour|depth|fog|normal|position|psize|sample|tangent|texcoord|textcoord)|vertex_type_(?:float\d|color|colour|ubyte4)|input_type|layerelementtype_(?:background|instance|oldtilemap|particlesystem|sprite|tile|tilemap|undefined)|se_(?:chorus|compressor|echo|equalizer|flanger|gargle|none|reverb)|text_type|tile_(?:flip|index_mask|mirror|rotate)|(?:obj|rm|scr|spr)\w+)\b/,variable:/\b(?:alarm|application_surface|async_load|background_(?:alpha|blend|color|colour|foreground|height|hspeed|htiled|index|showcolor|showcolour|visible|vspeed|vtiled|width|x|xscale|y|yscale)|bbox_(?:bottom|left|right|top)|browser_(?:height|width)|caption_(?:health|lives|score)|current_(?:day|hour|minute|month|second|time|weekday|year)|cursor_sprite|debug_mode|delta_time|direction|display_aa|error_(?:last|occurred)|event_(?:action|number|object|type)|fps|fps_real|friction|game_(?:display|project|save)_(?:id|name)|gamemaker_(?:pro|registered|version)|gravity|gravity_direction|(?:h|v)speed|health|iap_data|id|image_(?:alpha|angle|blend|depth|index|number|speed|xscale|yscale)|instance_(?:count|id)|keyboard_(?:key|lastchar|lastkey|string)|layer|lives|mask_index|mouse_(?:button|lastbutton|x|y)|object_index|os_(?:browser|device|type|version)|path_(?:endaction|index|orientation|position|positionprevious|scale|speed)|persistent|phy_(?:rotation|(?:col_normal|collision|com|linear_velocity|position|speed)_(?:x|y)|angular_(?:damping|velocity)|position_(?:x|y)previous|speed|linear_damping|bullet|fixed_rotation|active|mass|inertia|dynamic|kinematic|sleeping|collision_points)|pointer_(?:invalid|null)|room|room_(?:caption|first|height|last|persistent|speed|width)|score|secure_mode|show_(?:health|lives|score)|solid|speed|sprite_(?:height|index|width|xoffset|yoffset)|temp_directory|timeline_(?:index|loop|position|running|speed)|transition_(?:color|kind|steps)|undefined|view_(?:angle|current|enabled|(?:h|v)(?:border|speed)|(?:h|w|x|y)port|(?:h|w|x|y)view|object|surface_id|visible)|visible|webgl_enabled|working_directory|(?:x|y)(?:previous|start)|x|y|argument(?:_relitive|_count|\d)|argument|global|local|other|self)\b/})}Dt.displayName=`gn`,Dt.aliases=[`gni`];function Dt(e){e.languages.gn={comment:{pattern:/#.*/,greedy:!0},"string-literal":{pattern:/(^|[^\\"])"(?:[^\r\n"\\]|\\.)*"/,lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:\{[\s\S]*?\}|[a-zA-Z_]\w*|0x[a-fA-F0-9]{2})/,lookbehind:!0,inside:{number:/^\$0x[\s\S]{2}$/,variable:/^\$\w+$/,"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:`punctuation`},expression:{pattern:/[\s\S]+/,inside:null}}},string:/[\s\S]+/}},keyword:/\b(?:else|if)\b/,boolean:/\b(?:false|true)\b/,"builtin-function":{pattern:/\b(?:assert|defined|foreach|import|pool|print|template|tool|toolchain)(?=\s*\()/i,alias:`keyword`},function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:current_cpu|current_os|current_toolchain|default_toolchain|host_cpu|host_os|root_build_dir|root_gen_dir|root_out_dir|target_cpu|target_gen_dir|target_os|target_out_dir)\b/,number:/-?\b\d+\b/,operator:/[-+!=<>]=?|&&|\|\|/,punctuation:/[(){}[\],.]/},e.languages.gn[`string-literal`].inside.interpolation.inside.expression.inside=e.languages.gn,e.languages.gni=e.languages.gn}Ot.displayName=`go-module`,Ot.aliases=[`go-mod`];function Ot(e){e.languages[`go-mod`]=e.languages[`go-module`]={comment:{pattern:/\/\/.*/,greedy:!0},version:{pattern:/(^|[\s()[\],])v\d+\.\d+\.\d+(?:[+-][-+.\w]*)?(?![^\s()[\],])/,lookbehind:!0,alias:`number`},"go-version":{pattern:/((?:^|\s)go\s+)\d+(?:\.\d+){1,2}/,lookbehind:!0,alias:`number`},keyword:{pattern:/^([ \t]*)(?:exclude|go|module|replace|require|retract)\b/m,lookbehind:!0},operator:/=>/,punctuation:/[()[\],]/}}kt.displayName=`go`,kt.aliases=[];function kt(e){e.register(S),e.languages.go=e.languages.extend(`clike`,{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),e.languages.insertBefore(`go`,`string`,{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete e.languages.go[`class-name`]}At.displayName=`gradle`,At.aliases=[];function At(e){e.register(S),(function(e){var t={pattern:/((?:^|[^\\$])(?:\\{2})*)\$(?:\w+|\{[^{}]*\})/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:`punctuation`},expression:{pattern:/[\s\S]+/,inside:null}}};e.languages.gradle=e.languages.extend(`clike`,{string:{pattern:/'''(?:[^\\]|\\[\s\S])*?'''|'(?:\\.|[^\\'\r\n])*'/,greedy:!0},keyword:/\b(?:apply|def|dependencies|else|if|implementation|import|plugin|plugins|project|repositories|repository|sourceSets|tasks|val)\b/,number:/\b(?:0b[01_]+|0x[\da-f_]+(?:\.[\da-f_p\-]+)?|[\d_]+(?:\.[\d_]+)?(?:e[+-]?\d+)?)[glidf]?\b/i,operator:{pattern:/(^|[^.])(?:~|==?~?|\?[.:]?|\*(?:[.=]|\*=?)?|\.[@&]|\.\.<|\.\.(?!\.)|-[-=>]?|\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\|[|=]?|\/=?|\^=?|%=?)/,lookbehind:!0},punctuation:/\.+|[{}[\];(),:$]/}),e.languages.insertBefore(`gradle`,`string`,{shebang:{pattern:/#!.+/,alias:`comment`,greedy:!0},"interpolation-string":{pattern:/"""(?:[^\\]|\\[\s\S])*?"""|(["/])(?:\\.|(?!\1)[^\\\r\n])*\1|\$\/(?:[^/$]|\$(?:[/$]|(?![/$]))|\/(?!\$))*\/\$/,greedy:!0,inside:{interpolation:t,string:/[\s\S]+/}}}),e.languages.insertBefore(`gradle`,`punctuation`,{"spock-block":/\b(?:and|cleanup|expect|given|setup|then|when|where):/}),e.languages.insertBefore(`gradle`,`function`,{annotation:{pattern:/(^|[^.])@\w+/,lookbehind:!0,alias:`punctuation`}}),t.inside.expression.inside=e.languages.gradle})(e)}jt.displayName=`graphql`,jt.aliases=[];function jt(e){e.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:`string`,inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:e.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:`function`},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:`class-name`},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:`function`},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:`function`},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:`function`},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},e.hooks.add(`after-tokenize`,function(e){if(e.language!==`graphql`)return;var t=e.tokens.filter(function(e){return typeof e!=`string`&&e.type!==`comment`&&e.type!==`scalar`}),n=0;function r(e){return t[n+e]}function i(e,t){t||=0;for(var n=0;n0)){var d=a(/^\{$/,/^\}$/);if(d===-1)continue;for(var f=n;f=0&&o(p,`variable-input`)}}}}})}Mt.displayName=`groovy`,Mt.aliases=[];function Mt(e){e.register(S),(function(e){var t={pattern:/((?:^|[^\\$])(?:\\{2})*)\$(?:\w+|\{[^{}]*\})/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:`punctuation`},expression:{pattern:/[\s\S]+/,inside:null}}};e.languages.groovy=e.languages.extend(`clike`,{string:{pattern:/'''(?:[^\\]|\\[\s\S])*?'''|'(?:\\.|[^\\'\r\n])*'/,greedy:!0},keyword:/\b(?:abstract|as|assert|boolean|break|byte|case|catch|char|class|const|continue|def|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|in|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\b/,number:/\b(?:0b[01_]+|0x[\da-f_]+(?:\.[\da-f_p\-]+)?|[\d_]+(?:\.[\d_]+)?(?:e[+-]?\d+)?)[glidf]?\b/i,operator:{pattern:/(^|[^.])(?:~|==?~?|\?[.:]?|\*(?:[.=]|\*=?)?|\.[@&]|\.\.<|\.\.(?!\.)|-[-=>]?|\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\|[|=]?|\/=?|\^=?|%=?)/,lookbehind:!0},punctuation:/\.+|[{}[\];(),:$]/}),e.languages.insertBefore(`groovy`,`string`,{shebang:{pattern:/#!.+/,alias:`comment`,greedy:!0},"interpolation-string":{pattern:/"""(?:[^\\]|\\[\s\S])*?"""|(["/])(?:\\.|(?!\1)[^\\\r\n])*\1|\$\/(?:[^/$]|\$(?:[/$]|(?![/$]))|\/(?!\$))*\/\$/,greedy:!0,inside:{interpolation:t,string:/[\s\S]+/}}}),e.languages.insertBefore(`groovy`,`punctuation`,{"spock-block":/\b(?:and|cleanup|expect|given|setup|then|when|where):/}),e.languages.insertBefore(`groovy`,`function`,{annotation:{pattern:/(^|[^.])@\w+/,lookbehind:!0,alias:`punctuation`}}),t.inside.expression.inside=e.languages.groovy})(e)}Nt.displayName=`haml`,Nt.aliases=[];function Nt(e){e.register(V),(function(e){e.languages.haml={"multiline-comment":{pattern:/((?:^|\r?\n|\r)([\t ]*))(?:\/|-#).*(?:(?:\r?\n|\r)\2[\t ].+)*/,lookbehind:!0,alias:`comment`},"multiline-code":[{pattern:/((?:^|\r?\n|\r)([\t ]*)(?:[~-]|[&!]?=)).*,[\t ]*(?:(?:\r?\n|\r)\2[\t ].*,[\t ]*)*(?:(?:\r?\n|\r)\2[\t ].+)/,lookbehind:!0,inside:e.languages.ruby},{pattern:/((?:^|\r?\n|\r)([\t ]*)(?:[~-]|[&!]?=)).*\|[\t ]*(?:(?:\r?\n|\r)\2[\t ].*\|[\t ]*)*/,lookbehind:!0,inside:e.languages.ruby}],filter:{pattern:/((?:^|\r?\n|\r)([\t ]*)):[\w-]+(?:(?:\r?\n|\r)(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:`symbol`}}},markup:{pattern:/((?:^|\r?\n|\r)[\t ]*)<.+/,lookbehind:!0,inside:e.languages.markup},doctype:{pattern:/((?:^|\r?\n|\r)[\t ]*)!!!(?: .+)?/,lookbehind:!0},tag:{pattern:/((?:^|\r?\n|\r)[\t ]*)[%.#][\w\-#.]*[\w\-](?:\([^)]+\)|\{(?:\{[^}]+\}|[^{}])+\}|\[[^\]]+\])*[\/<>]*/,lookbehind:!0,inside:{attributes:[{pattern:/(^|[^#])\{(?:\{[^}]+\}|[^{}])+\}/,lookbehind:!0,inside:e.languages.ruby},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*)(?:"(?:\\.|[^\\"\r\n])*"|[^)\s]+)/,lookbehind:!0},"attr-name":/[\w:-]+(?=\s*!?=|\s*[,)])/,punctuation:/[=(),]/}},{pattern:/\[[^\]]+\]/,inside:e.languages.ruby}],punctuation:/[<>]/}},code:{pattern:/((?:^|\r?\n|\r)[\t ]*(?:[~-]|[&!]?=)).+/,lookbehind:!0,inside:e.languages.ruby},interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:`punctuation`},ruby:{pattern:/[\s\S]+/,inside:e.languages.ruby}}},punctuation:{pattern:/((?:^|\r?\n|\r)[\t ]*)[~=\-&!]+/,lookbehind:!0}};for(var t=`((?:^|\\r?\\n|\\r)([\\t ]*)):{{filter_name}}(?:(?:\\r?\\n|\\r)(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+`,n=[`css`,{filter:`coffee`,language:`coffeescript`},`erb`,`javascript`,`less`,`markdown`,`ruby`,`scss`,`textile`],r={},i=0,a=n.length;i@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add(`before-tokenize`,function(t){e.languages[`markup-templating`].buildPlaceholders(t,`handlebars`,/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)}),e.hooks.add(`after-tokenize`,function(t){e.languages[`markup-templating`].tokenizePlaceholders(t,`handlebars`)}),e.languages.hbs=e.languages.handlebars,e.languages.mustache=e.languages.handlebars})(e)}Ft.displayName=`haskell`,Ft.aliases=[`hs`];function Ft(e){e.languages.haskell={comment:{pattern:/(^|[^-!#$%*+=?&@|~.:<>^\\\/])(?:--(?:(?=.)[^-!#$%*+=?&@|~.:<>^\\\/].*|$)|\{-[\s\S]*?-\})/m,lookbehind:!0},char:{pattern:/'(?:[^\\']|\\(?:[abfnrtv\\"'&]|\^[A-Z@[\]^_]|ACK|BEL|BS|CAN|CR|DC1|DC2|DC3|DC4|DEL|DLE|EM|ENQ|EOT|ESC|ETB|ETX|FF|FS|GS|HT|LF|NAK|NUL|RS|SI|SO|SOH|SP|STX|SUB|SYN|US|VT|\d+|o[0-7]+|x[0-9a-fA-F]+))'/,alias:`string`},string:{pattern:/"(?:[^\\"]|\\(?:\S|\s+\\))*"/,greedy:!0},keyword:/\b(?:case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\b/,"import-statement":{pattern:/(^[\t ]*)import\s+(?:qualified\s+)?(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*(?:\s+as\s+(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*)?(?:\s+hiding\b)?/m,lookbehind:!0,inside:{keyword:/\b(?:as|hiding|import|qualified)\b/,punctuation:/\./}},builtin:/\b(?:abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0o[0-7]+|0x[0-9a-f]+)\b/i,operator:[{pattern:/`(?:[A-Z][\w']*\.)*[_a-z][\w']*`/,greedy:!0},{pattern:/(\s)\.(?=\s)/,lookbehind:!0},/[-!#$%*+=?&@|~:<>^\\\/][-!#$%*+=?&@|~.:<>^\\\/]*|\.[-!#$%*+=?&@|~.:<>^\\\/]+/],hvariable:{pattern:/\b(?:[A-Z][\w']*\.)*[_a-z][\w']*/,inside:{punctuation:/\./}},constant:{pattern:/\b(?:[A-Z][\w']*\.)*[A-Z][\w']*/,inside:{punctuation:/\./}},punctuation:/[{}[\];(),.:]/},e.languages.hs=e.languages.haskell}It.displayName=`haxe`,It.aliases=[];function It(e){e.register(S),e.languages.haxe=e.languages.extend(`clike`,{string:{pattern:/"(?:[^"\\]|\\[\s\S])*"/,greedy:!0},"class-name":[{pattern:/(\b(?:abstract|class|enum|extends|implements|interface|new|typedef)\s+)[A-Z_]\w*/,lookbehind:!0},/\b[A-Z]\w*/],keyword:/\bthis\b|\b(?:abstract|as|break|case|cast|catch|class|continue|default|do|dynamic|else|enum|extends|extern|final|for|from|function|if|implements|import|in|inline|interface|macro|new|null|operator|overload|override|package|private|public|return|static|super|switch|throw|to|try|typedef|untyped|using|var|while)(?!\.)\b/,function:{pattern:/\b[a-z_]\w*(?=\s*(?:<[^<>]*>\s*)?\()/i,greedy:!0},operator:/\.{3}|\+\+|--|&&|\|\||->|=>|(?:<{1,3}|[-+*/%!=&|^])=?|[?:~]/}),e.languages.insertBefore(`haxe`,`string`,{"string-interpolation":{pattern:/'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{interpolation:{pattern:/(^|[^\\])\$(?:\w+|\{[^{}]+\})/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:`punctuation`},expression:{pattern:/[\s\S]+/,inside:e.languages.haxe}}},string:/[\s\S]+/}}}),e.languages.insertBefore(`haxe`,`class-name`,{regex:{pattern:/~\/(?:[^\/\\\r\n]|\\.)+\/[a-z]*/,greedy:!0,inside:{"regex-flags":/\b[a-z]+$/,"regex-source":{pattern:/^(~\/)[\s\S]+(?=\/$)/,lookbehind:!0,alias:`language-regex`,inside:e.languages.regex},"regex-delimiter":/^~\/|\/$/}}}),e.languages.insertBefore(`haxe`,`keyword`,{preprocessor:{pattern:/#(?:else|elseif|end|if)\b.*/,alias:`property`},metadata:{pattern:/@:?[\w.]+/,alias:`symbol`},reification:{pattern:/\$(?:\w+|(?=\{))/,alias:`important`}})}Lt.displayName=`hcl`,Lt.aliases=[];function Lt(e){e.languages.hcl={comment:/(?:\/\/|#).*|\/\*[\s\S]*?(?:\*\/|$)/,heredoc:{pattern:/<<-?(\w+\b)[\s\S]*?^[ \t]*\1/m,greedy:!0,alias:`string`},keyword:[{pattern:/(?:data|resource)\s+(?:"(?:\\[\s\S]|[^\\"])*")(?=\s+"[\w-]+"\s+\{)/i,inside:{type:{pattern:/(resource|data|\s+)(?:"(?:\\[\s\S]|[^\\"])*")/i,lookbehind:!0,alias:`variable`}}},{pattern:/(?:backend|module|output|provider|provisioner|variable)\s+(?:[\w-]+|"(?:\\[\s\S]|[^\\"])*")\s+(?=\{)/i,inside:{type:{pattern:/(backend|module|output|provider|provisioner|variable)\s+(?:[\w-]+|"(?:\\[\s\S]|[^\\"])*")\s+/i,lookbehind:!0,alias:`variable`}}},/[\w-]+(?=\s+\{)/],property:[/[-\w\.]+(?=\s*=(?!=))/,/"(?:\\[\s\S]|[^\\"])+"(?=\s*[:=])/],string:{pattern:/"(?:[^\\$"]|\\[\s\S]|\$(?:(?=")|\$+(?!\$)|[^"${])|\$\{(?:[^{}"]|"(?:[^\\"]|\\[\s\S])*")*\})*"/,greedy:!0,inside:{interpolation:{pattern:/(^|[^$])\$\{(?:[^{}"]|"(?:[^\\"]|\\[\s\S])*")*\}/,lookbehind:!0,inside:{type:{pattern:/(\b(?:count|data|local|module|path|self|terraform|var)\b\.)[\w\*]+/i,lookbehind:!0,alias:`variable`},keyword:/\b(?:count|data|local|module|path|self|terraform|var)\b/i,function:/\w+(?=\()/,string:{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0},number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?(?:e[+-]?\d+)?/i,punctuation:/[!\$#%&'()*+,.\/;<=>@\[\\\]^`{|}~?:]/}}}},number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?(?:e[+-]?\d+)?/i,boolean:/\b(?:false|true)\b/i,punctuation:/[=\[\]{}]/}}Rt.displayName=`hlsl`,Rt.aliases=[];function Rt(e){e.register(F),e.languages.hlsl=e.languages.extend(`c`,{"class-name":[e.languages.c[`class-name`],/\b(?:AppendStructuredBuffer|BlendState|Buffer|ByteAddressBuffer|CompileShader|ComputeShader|ConsumeStructuredBuffer|DepthStencilState|DepthStencilView|DomainShader|GeometryShader|Hullshader|InputPatch|LineStream|OutputPatch|PixelShader|PointStream|RWBuffer|RWByteAddressBuffer|RWStructuredBuffer|RWTexture(?:1D|1DArray|2D|2DArray|3D)|RasterizerState|RenderTargetView|SamplerComparisonState|SamplerState|StructuredBuffer|Texture(?:1D|1DArray|2D|2DArray|2DMS|2DMSArray|3D|Cube|CubeArray)|TriangleStream|VertexShader)\b/],keyword:[/\b(?:asm|asm_fragment|auto|break|case|catch|cbuffer|centroid|char|class|column_major|compile|compile_fragment|const|const_cast|continue|default|delete|discard|do|dynamic_cast|else|enum|explicit|export|extern|for|friend|fxgroup|goto|groupshared|if|in|inline|inout|interface|line|lineadj|linear|long|matrix|mutable|namespace|new|nointerpolation|noperspective|operator|out|packoffset|pass|pixelfragment|point|precise|private|protected|public|register|reinterpret_cast|return|row_major|sample|sampler|shared|short|signed|sizeof|snorm|stateblock|stateblock_state|static|static_cast|string|struct|switch|tbuffer|technique|technique10|technique11|template|texture|this|throw|triangle|triangleadj|try|typedef|typename|uniform|union|unorm|unsigned|using|vector|vertexfragment|virtual|void|volatile|while)\b/,/\b(?:bool|double|dword|float|half|int|min(?:10float|12int|16(?:float|int|uint))|uint)(?:[1-4](?:x[1-4])?)?\b/],number:/(?:(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[eE][+-]?\d+)?|\b0x[\da-fA-F]+)[fFhHlLuU]?\b/,boolean:/\b(?:false|true)\b/})}zt.displayName=`hoon`,zt.aliases=[];function zt(e){e.languages.hoon={comment:{pattern:/::.*/,greedy:!0},string:{pattern:/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'/,greedy:!0},constant:/%(?:\.[ny]|[\w-]+)/,"class-name":/@(?:[a-z0-9-]*[a-z0-9])?|\*/i,function:/(?:\+[-+] {2})?(?:[a-z](?:[a-z0-9-]*[a-z0-9])?)/,keyword:/\.[\^\+\*=\?]|![><:\.=\?!]|=[>|:,\.\-\^<+;/~\*\?]|\?[>|:\.\-\^<\+&~=@!]|\|[\$_%:\.\-\^~\*=@\?]|\+[|\$\+\*]|:[_\-\^\+~\*]|%[_:\.\-\^\+~\*=]|\^[|:\.\-\+&~\*=\?]|\$[|_%:<>\-\^&~@=\?]|;[:<\+;\/~\*=]|~[>|\$_%<\+\/&=\?!]|--|==/}}Bt.displayName=`hpkp`,Bt.aliases=[];function Bt(e){e.languages.hpkp={directive:{pattern:/\b(?:includeSubDomains|max-age|pin-sha256|preload|report-to|report-uri|strict)(?=[\s;=]|$)/i,alias:`property`},operator:/=/,punctuation:/;/}}Vt.displayName=`hsts`,Vt.aliases=[];function Vt(e){e.languages.hsts={directive:{pattern:/\b(?:includeSubDomains|max-age|preload)(?=[\s;=]|$)/i,alias:`property`},operator:/=/,punctuation:/;/}}Ht.displayName=`http`,Ht.aliases=[];function Ht(e){(function(e){function t(e){return RegExp(`(^(?:`+e+`):[ ]*(?![ ]))[^]+`,`i`)}e.languages.http={"request-line":{pattern:/^(?:CONNECT|DELETE|GET|HEAD|OPTIONS|PATCH|POST|PRI|PUT|SEARCH|TRACE)\s(?:https?:\/\/|\/)\S*\sHTTP\/[\d.]+/m,inside:{method:{pattern:/^[A-Z]+\b/,alias:`property`},"request-target":{pattern:/^(\s)(?:https?:\/\/|\/)\S*(?=\s)/,lookbehind:!0,alias:`url`,inside:e.languages.uri},"http-version":{pattern:/^(\s)HTTP\/[\d.]+/,lookbehind:!0,alias:`property`}}},"response-status":{pattern:/^HTTP\/[\d.]+ \d+ .+/m,inside:{"http-version":{pattern:/^HTTP\/[\d.]+/,alias:`property`},"status-code":{pattern:/^(\s)\d+(?=\s)/,lookbehind:!0,alias:`number`},"reason-phrase":{pattern:/^(\s).+/,lookbehind:!0,alias:`string`}}},header:{pattern:/^[\w-]+:.+(?:(?:\r\n?|\n)[ \t].+)*/m,inside:{"header-value":[{pattern:t(`Content-Security-Policy`),lookbehind:!0,alias:[`csp`,`languages-csp`],inside:e.languages.csp},{pattern:t(`Public-Key-Pins(?:-Report-Only)?`),lookbehind:!0,alias:[`hpkp`,`languages-hpkp`],inside:e.languages.hpkp},{pattern:t(`Strict-Transport-Security`),lookbehind:!0,alias:[`hsts`,`languages-hsts`],inside:e.languages.hsts},{pattern:t(`[^:]+`),lookbehind:!0}],"header-name":{pattern:/^[^:]+/,alias:`keyword`},punctuation:/^:/}}};var n=e.languages,r={"application/javascript":n.javascript,"application/json":n.json||n.javascript,"application/xml":n.xml,"text/xml":n.xml,"text/html":n.html,"text/css":n.css,"text/plain":n.plain},i={"application/json":!0,"application/xml":!0};function a(e){var t=`\\w+/(?:[\\w.-]+\\+)+`+e.replace(/^[a-z]+\//,``)+`(?![+\\w.-])`;return`(?:`+e+`|`+t+`)`}var o;for(var s in r)if(r[s]){o||={};var c=i[s]?a(s):s;o[s.replace(/\//g,`-`)]={pattern:RegExp(`(content-type:\\s*`+c+`(?:(?:\\r\\n?|\\n)[\\w-].*)*(?:\\r(?:\\n|(?!\\n))|\\n))[^ \\t\\w-][\\s\\S]*`,`i`),lookbehind:!0,inside:r[s]}}o&&e.languages.insertBefore(`http`,`header`,o)})(e)}Ut.displayName=`ichigojam`,Ut.aliases=[];function Ut(e){e.languages.ichigojam={comment:/(?:\B'|REM)(?:[^\n\r]*)/i,string:{pattern:/"(?:""|[!#$%&'()*,\/:;<=>?^\w +\-.])*"/,greedy:!0},number:/\B#[0-9A-F]+|\B`[01]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:BEEP|BPS|CASE|CLEAR|CLK|CLO|CLP|CLS|CLT|CLV|CONT|COPY|ELSE|END|FILE|FILES|FOR|GOSUB|GOTO|GSB|IF|INPUT|KBD|LED|LET|LIST|LOAD|LOCATE|LRUN|NEW|NEXT|OUT|PLAY|POKE|PRINT|PWM|REM|RENUM|RESET|RETURN|RIGHT|RTN|RUN|SAVE|SCROLL|SLEEP|SRND|STEP|STOP|SUB|TEMPO|THEN|TO|UART|VIDEO|WAIT)(?:\$|\b)/i,function:/\b(?:ABS|ANA|ASC|BIN|BTN|DEC|END|FREE|HELP|HEX|I2CR|I2CW|IN|INKEY|LEN|LINE|PEEK|RND|SCR|SOUND|STR|TICK|USR|VER|VPEEK|ZER)(?:\$|\b)/i,label:/(?:\B@\S+)/,operator:/<[=>]?|>=?|\|\||&&|[+\-*\/=|&^~!]|\b(?:AND|NOT|OR)\b/i,punctuation:/[\[,;:()\]]/}}Wt.displayName=`icon`,Wt.aliases=[];function Wt(e){e.languages.icon={comment:/#.*/,string:{pattern:/(["'])(?:(?!\1)[^\\\r\n_]|\\.|_(?!\1)(?:\r\n|[\s\S]))*\1/,greedy:!0},number:/\b(?:\d+r[a-z\d]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b|\.\d+\b/i,"builtin-keyword":{pattern:/&(?:allocated|ascii|clock|collections|cset|current|date|dateline|digits|dump|e|error(?:number|text|value)?|errout|fail|features|file|host|input|lcase|letters|level|line|main|null|output|phi|pi|pos|progname|random|regions|source|storage|subject|time|trace|ucase|version)\b/,alias:`variable`},directive:{pattern:/\$\w+/,alias:`builtin`},keyword:/\b(?:break|by|case|create|default|do|else|end|every|fail|global|if|initial|invocable|link|local|next|not|of|procedure|record|repeat|return|static|suspend|then|to|until|while)\b/,function:/\b(?!\d)\w+(?=\s*[({]|\s*!\s*\[)/,operator:/[+-]:(?!=)|(?:[\/?@^%&]|\+\+?|--?|==?=?|~==?=?|\*\*?|\|\|\|?|<(?:->?|>?=?)(?::=)?|:(?:=:?)?|[!.\\|~]/,punctuation:/[\[\](){},;]/}}Gt.displayName=`icu-message-format`,Gt.aliases=[];function Gt(e){(function(e){function t(e,n){return n<=0?`[]`:e.replace(//g,function(){return t(e,n-1)})}var n=/'[{}:=,](?:[^']|'')*'(?!')/,r={pattern:/''/,greedy:!0,alias:`operator`},i={pattern:n,greedy:!0,inside:{escape:r}},a=t(`\\{(?:[^{}']|'(?![{},'])|''||)*\\}`.replace(//g,function(){return n.source}),8),o={pattern:RegExp(a),inside:{message:{pattern:/^(\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:null},"message-delimiter":{pattern:/./,alias:`punctuation`}}};e.languages[`icu-message-format`]={argument:{pattern:RegExp(a),greedy:!0,inside:{content:{pattern:/^(\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:{"argument-name":{pattern:/^(\s*)[^{}:=,\s]+/,lookbehind:!0},"choice-style":{pattern:/^(\s*,\s*choice\s*,\s*)\S(?:[\s\S]*\S)?/,lookbehind:!0,inside:{punctuation:/\|/,range:{pattern:/^(\s*)[+-]?(?:\d+(?:\.\d*)?|\u221e)\s*[<#\u2264]/,lookbehind:!0,inside:{operator:/[<#\u2264]/,number:/\S+/}},rest:null}},"plural-style":{pattern:/^(\s*,\s*(?:plural|selectordinal)\s*,\s*)\S(?:[\s\S]*\S)?/,lookbehind:!0,inside:{offset:/^offset:\s*\d+/,"nested-message":o,selector:{pattern:/=\d+|[^{}:=,\s]+/,inside:{keyword:/^(?:few|many|one|other|two|zero)$/}}}},"select-style":{pattern:/^(\s*,\s*select\s*,\s*)\S(?:[\s\S]*\S)?/,lookbehind:!0,inside:{"nested-message":o,selector:{pattern:/[^{}:=,\s]+/,inside:{keyword:/^other$/}}}},keyword:/\b(?:choice|plural|select|selectordinal)\b/,"arg-type":{pattern:/\b(?:date|duration|number|ordinal|spellout|time)\b/,alias:`keyword`},"arg-skeleton":{pattern:/(,\s*)::[^{}:=,\s]+/,lookbehind:!0},"arg-style":{pattern:/(,\s*)(?:currency|full|integer|long|medium|percent|short)(?=\s*$)/,lookbehind:!0},"arg-style-text":{pattern:RegExp(`(^\\s*,\\s*(?=\\S))`+t(`(?:[^{}']|'[^']*'|\\{(?:)?\\})+`,8)+`$`),lookbehind:!0,alias:`string`},punctuation:/,/}},"argument-delimiter":{pattern:/./,alias:`operator`}}},escape:r,string:i},o.inside.message.inside=e.languages[`icu-message-format`],e.languages[`icu-message-format`].argument.inside.content.inside[`choice-style`].inside.rest=e.languages[`icu-message-format`]})(e)}Kt.displayName=`idris`,Kt.aliases=[`idr`];function Kt(e){e.register(Ft),e.languages.idris=e.languages.extend(`haskell`,{comment:{pattern:/(?:(?:--|\|\|\|).*$|\{-[\s\S]*?-\})/m},keyword:/\b(?:Type|case|class|codata|constructor|corecord|data|do|dsl|else|export|if|implementation|implicit|import|impossible|in|infix|infixl|infixr|instance|interface|let|module|mutual|namespace|of|parameters|partial|postulate|private|proof|public|quoteGoal|record|rewrite|syntax|then|total|using|where|with)\b/,builtin:void 0}),e.languages.insertBefore(`idris`,`keyword`,{"import-statement":{pattern:/(^\s*import\s+)(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*/m,lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.idr=e.languages.idris}qt.displayName=`iecst`,qt.aliases=[];function qt(e){e.languages.iecst={comment:[{pattern:/(^|[^\\])(?:\/\*[\s\S]*?(?:\*\/|$)|\(\*[\s\S]*?(?:\*\)|$)|\{[\s\S]*?(?:\}|$))/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:[/\b(?:END_)?(?:PROGRAM|CONFIGURATION|INTERFACE|FUNCTION_BLOCK|FUNCTION|ACTION|TRANSITION|TYPE|STRUCT|(?:INITIAL_)?STEP|NAMESPACE|LIBRARY|CHANNEL|FOLDER|RESOURCE|VAR_(?:ACCESS|CONFIG|EXTERNAL|GLOBAL|INPUT|IN_OUT|OUTPUT|TEMP)|VAR|METHOD|PROPERTY)\b/i,/\b(?:AT|BY|(?:END_)?(?:CASE|FOR|IF|REPEAT|WHILE)|CONSTANT|CONTINUE|DO|ELSE|ELSIF|EXIT|EXTENDS|FROM|GET|GOTO|IMPLEMENTS|JMP|NON_RETAIN|OF|PRIVATE|PROTECTED|PUBLIC|RETAIN|RETURN|SET|TASK|THEN|TO|UNTIL|USING|WITH|__CATCH|__ENDTRY|__FINALLY|__TRY)\b/],"class-name":/\b(?:ANY|ARRAY|BOOL|BYTE|U?(?:D|L|S)?INT|(?:D|L)?WORD|DATE(?:_AND_TIME)?|DT|L?REAL|POINTER|STRING|TIME(?:_OF_DAY)?|TOD)\b/,address:{pattern:/%[IQM][XBWDL][\d.]*|%[IQ][\d.]*/,alias:`symbol`},number:/\b(?:16#[\da-f]+|2#[01_]+|0x[\da-f]+)\b|\b(?:D|DT|T|TOD)#[\d_shmd:]*|\b[A-Z]*#[\d.,_]*|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/,operator:/S?R?:?=>?|&&?|\*\*?|<[=>]?|>=?|[-:^/+#]|\b(?:AND|EQ|EXPT|GE|GT|LE|LT|MOD|NE|NOT|OR|XOR)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,punctuation:/[()[\].,;]/}}Jt.displayName=`ignore`,Jt.aliases=[`gitignore`,`hgignore`,`npmignore`];function Jt(e){(function(e){e.languages.ignore={comment:/^#.*/m,entry:{pattern:/\S(?:.*(?:(?:\\ )|\S))?/,alias:`string`,inside:{operator:/^!|\*\*?|\?/,regex:{pattern:/(^|[^\\])\[[^\[\]]*\]/,lookbehind:!0},punctuation:/\//}}},e.languages.gitignore=e.languages.ignore,e.languages.hgignore=e.languages.ignore,e.languages.npmignore=e.languages.ignore})(e)}Yt.displayName=`inform7`,Yt.aliases=[];function Yt(e){e.languages.inform7={string:{pattern:/"[^"]*"/,inside:{substitution:{pattern:/\[[^\[\]]+\]/,inside:{delimiter:{pattern:/\[|\]/,alias:`punctuation`}}}}},comment:{pattern:/\[[^\[\]]+\]/,greedy:!0},title:{pattern:/^[ \t]*(?:book|chapter|part(?! of)|section|table|volume)\b.+/im,alias:`important`},number:{pattern:/(^|[^-])(?:\b\d+(?:\.\d+)?(?:\^\d+)?(?:(?!\d)\w+)?|\b(?:eight|eleven|five|four|nine|one|seven|six|ten|three|twelve|two))\b(?!-)/i,lookbehind:!0},verb:{pattern:/(^|[^-])\b(?:answering|applying to|are|asking|attacking|be(?:ing)?|burning|buying|called|carries|carry(?! out)|carrying|climbing|closing|conceal(?:ing|s)?|consulting|contain(?:ing|s)?|cutting|drinking|dropping|eating|enclos(?:es?|ing)|entering|examining|exiting|getting|giving|going|ha(?:s|ve|ving)|hold(?:ing|s)?|impl(?:ies|y)|incorporat(?:es?|ing)|inserting|is|jumping|kissing|listening|locking|looking|mean(?:ing|s)?|opening|provid(?:es?|ing)|pulling|pushing|putting|relat(?:es?|ing)|removing|searching|see(?:ing|s)?|setting|showing|singing|sleeping|smelling|squeezing|support(?:ing|s)?|swearing|switching|taking|tasting|telling|thinking|throwing|touching|turning|tying|unlock(?:ing|s)?|var(?:ies|y|ying)|waiting|waking|waving|wear(?:ing|s)?)\b(?!-)/i,lookbehind:!0,alias:`operator`},keyword:{pattern:/(^|[^-])\b(?:after|before|carry out|check|continue the action|definition(?= *:)|do nothing|else|end (?:if|the story|unless)|every turn|if|include|instead(?: of)?|let|move|no|now|otherwise|repeat|report|resume the story|rule for|running through|say(?:ing)?|stop the action|test|try(?:ing)?|understand|unless|use|when|while|yes)\b(?!-)/i,lookbehind:!0},property:{pattern:/(^|[^-])\b(?:adjacent(?! to)|carried|closed|concealed|contained|dark|described|edible|empty|enclosed|enterable|even|female|fixed in place|full|handled|held|improper-named|incorporated|inedible|invisible|lighted|lit|lock(?:able|ed)|male|marked for listing|mentioned|negative|neuter|non-(?:empty|full|recurring)|odd|opaque|open(?:able)?|plural-named|portable|positive|privately-named|proper-named|provided|publically-named|pushable between rooms|recurring|related|rubbing|scenery|seen|singular-named|supported|swinging|switch(?:able|ed(?: off| on)?)|touch(?:able|ed)|transparent|unconcealed|undescribed|unlit|unlocked|unmarked for listing|unmentioned|unopenable|untouchable|unvisited|variable|visible|visited|wearable|worn)\b(?!-)/i,lookbehind:!0,alias:`symbol`},position:{pattern:/(^|[^-])\b(?:above|adjacent to|back side of|below|between|down|east|everywhere|front side|here|in|inside(?: from)?|north(?:east|west)?|nowhere|on(?: top of)?|other side|outside(?: from)?|parts? of|regionally in|south(?:east|west)?|through|up|west|within)\b(?!-)/i,lookbehind:!0,alias:`keyword`},type:{pattern:/(^|[^-])\b(?:actions?|activit(?:ies|y)|actors?|animals?|backdrops?|containers?|devices?|directions?|doors?|holders?|kinds?|lists?|m[ae]n|nobody|nothing|nouns?|numbers?|objects?|people|persons?|player(?:'s holdall)?|regions?|relations?|rooms?|rule(?:book)?s?|scenes?|someone|something|supporters?|tables?|texts?|things?|time|vehicles?|wom[ae]n)\b(?!-)/i,lookbehind:!0,alias:`variable`},punctuation:/[.,:;(){}]/},e.languages.inform7.string.inside.substitution.inside.rest=e.languages.inform7,e.languages.inform7.string.inside.substitution.inside.rest.text={pattern:/\S(?:\s*\S)*/,alias:`comment`}}Xt.displayName=`ini`,Xt.aliases=[];function Xt(e){e.languages.ini={comment:{pattern:/(^[ \f\t\v]*)[#;][^\n\r]*/m,lookbehind:!0},section:{pattern:/(^[ \f\t\v]*)\[[^\n\r\]]*\]?/m,lookbehind:!0,inside:{"section-name":{pattern:/(^\[[ \f\t\v]*)[^ \f\t\v\]]+(?:[ \f\t\v]+[^ \f\t\v\]]+)*/,lookbehind:!0,alias:`selector`},punctuation:/\[|\]/}},key:{pattern:/(^[ \f\t\v]*)[^ \f\n\r\t\v=]+(?:[ \f\t\v]+[^ \f\n\r\t\v=]+)*(?=[ \f\t\v]*=)/m,lookbehind:!0,alias:`attr-name`},value:{pattern:/(=[ \f\t\v]*)[^ \f\n\r\t\v]+(?:[ \f\t\v]+[^ \f\n\r\t\v]+)*/,lookbehind:!0,alias:`attr-value`,inside:{"inner-value":{pattern:/^("|').+(?=\1$)/,lookbehind:!0}}},punctuation:/=/}}Zt.displayName=`io`,Zt.aliases=[];function Zt(e){e.languages.io={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?(?:\*\/|$)|\/\/.*|#.*)/,lookbehind:!0,greedy:!0},"triple-quoted-string":{pattern:/"""(?:\\[\s\S]|(?!""")[^\\])*"""/,greedy:!0,alias:`string`},string:{pattern:/"(?:\\.|[^\\\r\n"])*"/,greedy:!0},keyword:/\b(?:activate|activeCoroCount|asString|block|break|call|catch|clone|collectGarbage|compileString|continue|do|doFile|doMessage|doString|else|elseif|exit|for|foreach|forward|getEnvironmentVariable|getSlot|hasSlot|if|ifFalse|ifNil|ifNilEval|ifTrue|isActive|isNil|isResumable|list|message|method|parent|pass|pause|perform|performWithArgList|print|println|proto|raise|raiseResumable|removeSlot|resend|resume|schedulerSleepSeconds|self|sender|setSchedulerSleepSeconds|setSlot|shallowCopy|slotNames|super|system|then|thisBlock|thisContext|try|type|uniqueId|updateSlot|wait|while|write|yield)\b/,builtin:/\b(?:Array|AudioDevice|AudioMixer|BigNum|Block|Box|Buffer|CFunction|CGI|Color|Curses|DBM|DNSResolver|DOConnection|DOProxy|DOServer|Date|Directory|Duration|DynLib|Error|Exception|FFT|File|Fnmatch|Font|Future|GL|GLE|GLScissor|GLU|GLUCylinder|GLUQuadric|GLUSphere|GLUT|Host|Image|Importer|LinkList|List|Lobby|Locals|MD5|MP3Decoder|MP3Encoder|Map|Message|Movie|Notification|Number|Object|OpenGL|Point|Protos|Random|Regex|SGML|SGMLElement|SGMLParser|SQLite|Sequence|Server|ShowMessage|SleepyCat|SleepyCatCursor|Socket|SocketManager|Sound|Soup|Store|String|Tree|UDPSender|UPDReceiver|URL|User|Warning|WeakLink)\b/,boolean:/\b(?:false|nil|true)\b/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e-?\d+)?/i,operator:/[=!*/%+\-^&|]=|>>?=?|<+*\-%$|,#][.:]?|[?^]\.?|[;\[]:?|[~}"i][.:]|[ACeEIjLor]\.|(?:[_\/\\qsux]|_?\d):)/,alias:`keyword`},number:/\b_?(?:(?!\d:)\d+(?:\.\d+)?(?:(?:ad|ar|[ejpx])_?\d+(?:\.\d+)?)*(?:b_?[\da-z]+(?:\.[\da-z]+)?)?|_\b(?!\.))/,adverb:{pattern:/[~}]|[\/\\]\.?|[bfM]\.|t[.:]/,alias:`builtin`},operator:/[=a][.:]|_\./,conjunction:{pattern:/&(?:\.:?|:)?|[.:@][.:]?|[!D][.:]|[;dHT]\.|`:?|[\^LS]:|"/,alias:`variable`},punctuation:/[()]/}}W.displayName=`java`,W.aliases=[];function W(e){e.register(S),(function(e){var t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\s*[(){}[\]<>=%~.:,;?+\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,n=`(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*`,r={pattern:RegExp(`(^|[^\\w.])`+n+`[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b`),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};e.languages.java=e.languages.extend(`clike`,{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"/,lookbehind:!0,greedy:!0},"class-name":[r,{pattern:RegExp(`(^|[^\\w.])`+n+`[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()]|\\s*(?:\\[[\\s,]*\\]\\s*)?::\\s*new\\b)`),lookbehind:!0,inside:r.inside},{pattern:RegExp(`(\\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\\s+)`+n+`[A-Z]\\w*\\b`),lookbehind:!0,inside:r.inside}],keyword:t,function:[e.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0},constant:/\b[A-Z][A-Z_\d]+\b/}),e.languages.insertBefore(`java`,`string`,{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:`string`},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore(`java`,`class-name`,{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:`punctuation`},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":r,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},import:[{pattern:RegExp(`(\\bimport\\s+)`+n+`(?:[A-Z]\\w*|\\*)(?=\\s*;)`),lookbehind:!0,inside:{namespace:r.inside.namespace,punctuation:/\./,operator:/\*/,"class-name":/\w+/}},{pattern:RegExp(`(\\bimport\\s+static\\s+)`+n+`(?:\\w+|\\*)(?=\\s*;)`),lookbehind:!0,alias:`static`,inside:{namespace:r.inside.namespace,static:/\b\w+$/,punctuation:/\./,operator:/\*/,"class-name":/\w+/}}],namespace:{pattern:RegExp(`(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?`.replace(//g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})})(e)}G.displayName=`javadoclike`,G.aliases=[];function G(e){(function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};function n(t,n){var r=`doc-comment`,i=e.languages[t];if(i){var a=i[r];if(!a){var o={};o[r]={pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:`comment`},i=e.languages.insertBefore(t,`comment`,o),a=i[r]}if(a instanceof RegExp&&(a=i[r]={pattern:a}),Array.isArray(a))for(var s=0,c=a.length;s)?|`.replace(//g,function(){return n});e.languages.javadoc=e.languages.extend(`javadoclike`,{}),e.languages.insertBefore(`javadoc`,`keyword`,{reference:{pattern:RegExp(`(@(?:exception|link|linkplain|see|throws|value)\\s+(?:\\*\\s*)?)(?:`+r+`)`),lookbehind:!0,inside:{function:{pattern:/(#\s*)\w+(?=\s*\()/,lookbehind:!0},field:{pattern:/(#\s*)\w+/,lookbehind:!0},namespace:{pattern:/\b(?:[a-z]\w*\s*\.\s*)+/,inside:{punctuation:/\./}},"class-name":/\b[A-Z]\w*/,keyword:e.languages.java.keyword,punctuation:/[#()[\],.]/}},"class-name":{pattern:/(@param\s+)<[A-Z]\w*>/,lookbehind:!0,inside:{punctuation:/[.<>]/}},"code-section":[{pattern:/(\{@code\s+(?!\s))(?:[^\s{}]|\s+(?![\s}])|\{(?:[^{}]|\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*\})+(?=\s*\})/,lookbehind:!0,inside:{code:{pattern:t,lookbehind:!0,inside:e.languages.java,alias:`language-java`}}},{pattern:/(<(code|pre|tt)>(?!)\s*)\S(?:\S|\s+\S)*?(?=\s*<\/\2>)/,lookbehind:!0,inside:{line:{pattern:t,lookbehind:!0,inside:{tag:e.languages.markup.tag,entity:e.languages.markup.entity,code:{pattern:/.+/,inside:e.languages.java,alias:`language-java`}}}}}],tag:e.languages.markup.tag,entity:e.languages.markup.entity}),e.languages.javadoclike.addSupport(`java`,e.languages.javadoc)})(e)}en.displayName=`javastacktrace`,en.aliases=[];function en(e){e.languages.javastacktrace={summary:{pattern:/^([\t ]*)(?:(?:Caused by:|Suppressed:|Exception in thread "[^"]*")[\t ]+)?[\w$.]+(?::.*)?$/m,lookbehind:!0,inside:{keyword:{pattern:/^([\t ]*)(?:(?:Caused by|Suppressed)(?=:)|Exception in thread)/m,lookbehind:!0},string:{pattern:/^(\s*)"[^"]*"/,lookbehind:!0},exceptions:{pattern:/^(:?\s*)[\w$.]+(?=:|$)/,lookbehind:!0,inside:{"class-name":/[\w$]+$/,namespace:/\b[a-z]\w*\b/,punctuation:/\./}},message:{pattern:/(:\s*)\S.*/,lookbehind:!0,alias:`string`},punctuation:/:/}},"stack-frame":{pattern:/^([\t ]*)at (?:[\w$./]|@[\w$.+-]*\/)+(?:)?\([^()]*\)/m,lookbehind:!0,inside:{keyword:{pattern:/^(\s*)at(?= )/,lookbehind:!0},source:[{pattern:/(\()\w+\.\w+:\d+(?=\))/,lookbehind:!0,inside:{file:/^\w+\.\w+/,punctuation:/:/,"line-number":{pattern:/\b\d+\b/,alias:`number`}}},{pattern:/(\()[^()]*(?=\))/,lookbehind:!0,inside:{keyword:/^(?:Native Method|Unknown Source)$/}}],"class-name":/[\w$]+(?=\.(?:|[\w$]+)\()/,function:/(?:|[\w$]+)(?=\()/,"class-loader":{pattern:/(\s)[a-z]\w*(?:\.[a-z]\w*)*(?=\/[\w@$.]*\/)/,lookbehind:!0,alias:`namespace`,inside:{punctuation:/\./}},module:{pattern:/([\s/])[a-z]\w*(?:\.[a-z]\w*)*(?:@[\w$.+-]*)?(?=\/)/,lookbehind:!0,inside:{version:{pattern:/(@)[\s\S]+/,lookbehind:!0,alias:`number`},punctuation:/[@.]/}},namespace:{pattern:/(?:\b[a-z]\w*\.)+/,inside:{punctuation:/\./}},punctuation:/[()/.]/}},more:{pattern:/^([\t ]*)\.{3} \d+ [a-z]+(?: [a-z]+)*/m,lookbehind:!0,inside:{punctuation:/\.{3}/,number:/\d+/,keyword:/\b[a-z]+(?: [a-z]+)*\b/}}}}tn.displayName=`jexl`,tn.aliases=[];function tn(e){e.languages.jexl={string:/(["'])(?:\\[\s\S]|(?!\1)[^\\])*\1/,transform:{pattern:/(\|\s*)[a-zA-Zа-яА-Я_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF$][\wа-яА-Я\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF$]*/,alias:`function`,lookbehind:!0},function:/[a-zA-Zа-яА-Я_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF$][\wа-яА-Я\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF$]*\s*(?=\()/,number:/\b\d+(?:\.\d+)?\b|\B\.\d+\b/,operator:/[<>!]=?|-|\+|&&|==|\|\|?|\/\/?|[?:*^%]/,boolean:/\b(?:false|true)\b/,keyword:/\bin\b/,punctuation:/[{}[\](),.]/}}nn.displayName=`jolie`,nn.aliases=[];function nn(e){e.register(S),e.languages.jolie=e.languages.extend(`clike`,{string:{pattern:/(^|[^\\])"(?:\\[\s\S]|[^"\\])*"/,lookbehind:!0,greedy:!0},"class-name":{pattern:/((?:\b(?:as|courier|embed|in|inputPort|outputPort|service)\b|@)[ \t]*)\w+/,lookbehind:!0},keyword:/\b(?:as|cH|comp|concurrent|constants|courier|cset|csets|default|define|else|embed|embedded|execution|exit|extender|for|foreach|forward|from|global|if|import|in|include|init|inputPort|install|instanceof|interface|is_defined|linkIn|linkOut|main|new|nullProcess|outputPort|over|private|provide|public|scope|sequential|service|single|spawn|synchronized|this|throw|throws|type|undef|until|while|with)\b/,function:/\b[a-z_]\w*(?=[ \t]*[@(])/i,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?l?/i,operator:/-[-=>]?|\+[+=]?|<[<=]?|[>=*!]=?|&&|\|\||[?\/%^@|]/,punctuation:/[()[\]{},;.:]/,builtin:/\b(?:Byte|any|bool|char|double|enum|float|int|length|long|ranges|regex|string|undefined|void)\b/}),e.languages.insertBefore(`jolie`,`keyword`,{aggregates:{pattern:/(\bAggregates\s*:\s*)(?:\w+(?:\s+with\s+\w+)?\s*,\s*)*\w+(?:\s+with\s+\w+)?/,lookbehind:!0,inside:{keyword:/\bwith\b/,"class-name":/\w+/,punctuation:/,/}},redirects:{pattern:/(\bRedirects\s*:\s*)(?:\w+\s*=>\s*\w+\s*,\s*)*(?:\w+\s*=>\s*\w+)/,lookbehind:!0,inside:{punctuation:/,/,"class-name":/\w+/,operator:/=>/}},property:{pattern:/\b(?:Aggregates|[Ii]nterfaces|Java|Javascript|Jolie|[Ll]ocation|OneWay|[Pp]rotocol|Redirects|RequestResponse)\b(?=[ \t]*:)/}})}rn.displayName=`jq`,rn.aliases=[];function rn(e){(function(e){var t=`\\\\\\((?:[^()]|\\([^()]*\\))*\\)`,n=RegExp(`(^|[^\\\\])"(?:[^"\\r\\n\\\\]|\\\\[^\\r\\n(]|__)*"`.replace(/__/g,function(){return t})),r={interpolation:{pattern:RegExp(`((?:^|[^\\\\])(?:\\\\{2})*)`+t),lookbehind:!0,inside:{content:{pattern:/^(\\\()[\s\S]+(?=\)$)/,lookbehind:!0,inside:null},punctuation:/^\\\(|\)$/}}},i=e.languages.jq={comment:/#.*/,property:{pattern:RegExp(n.source+`(?=\\s*:(?!:))`),lookbehind:!0,greedy:!0,inside:r},string:{pattern:n,lookbehind:!0,greedy:!0,inside:r},function:{pattern:/(\bdef\s+)[a-z_]\w+/i,lookbehind:!0},variable:/\B\$\w+/,"property-literal":{pattern:/\b[a-z_]\w*(?=\s*:(?!:))/i,alias:`property`},keyword:/\b(?:as|break|catch|def|elif|else|end|foreach|if|import|include|label|module|modulemeta|null|reduce|then|try|while)\b/,boolean:/\b(?:false|true)\b/,number:/(?:\b\d+\.|\B\.)?\b\d+(?:[eE][+-]?\d+)?\b/,operator:[{pattern:/\|=?/,alias:`pipe`},/\.\.|[!=<>]?=|\?\/\/|\/\/=?|[-+*/%]=?|[<>?]|\b(?:and|not|or)\b/],"c-style-function":{pattern:/\b[a-z_]\w*(?=\s*\()/i,alias:`function`},punctuation:/::|[()\[\]{},:;]|\.(?=\s*[\[\w$])/,dot:{pattern:/\./,alias:`important`}};r.interpolation.inside.content.inside=i})(e)}an.displayName=`js-extras`,an.aliases=[];function an(e){e.register(C),(function(e){e.languages.insertBefore(`javascript`,`function-variable`,{"method-variable":{pattern:RegExp(`(\\.\\s*)`+e.languages.javascript[`function-variable`].pattern.source),lookbehind:!0,alias:[`function-variable`,`method`,`function`,`property-access`]}}),e.languages.insertBefore(`javascript`,`function`,{method:{pattern:RegExp(`(\\.\\s*)`+e.languages.javascript.function.source),lookbehind:!0,alias:[`function`,`property-access`]}}),e.languages.insertBefore(`javascript`,`constant`,{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:`class-name`},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:`class-name`}]});function t(e,t){return RegExp(e.replace(//g,function(){return`(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*`}),t)}e.languages.insertBefore(`javascript`,`keyword`,{imports:{pattern:t(`(\\bimport\\b\\s*)(?:(?:\\s*,\\s*(?:\\*\\s*as\\s+|\\{[^{}]*\\}))?|\\*\\s*as\\s+|\\{[^{}]*\\})(?=\\s*\\bfrom\\b)`),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(`(\\bexport\\b\\s*)(?:\\*(?:\\s*as\\s+)?(?=\\s*\\bfrom\\b)|\\{[^{}]*\\})`),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:`module`},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:`control-flow`},{pattern:/\bnull\b/,alias:[`null`,`nil`]},{pattern:/\bundefined\b/,alias:`nil`}),e.languages.insertBefore(`javascript`,`operator`,{spread:{pattern:/\.{3}/,alias:`operator`},arrow:{pattern:/=>/,alias:`operator`}}),e.languages.insertBefore(`javascript`,`punctuation`,{"property-access":{pattern:t(`(\\.\\s*)#?`),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:`variable`},console:{pattern:/\bconsole(?=\s*\.)/,alias:`class-name`}});for(var n=[`function`,`function-variable`,`method`,`method-variable`,`property-access`],r=0;r=f.length)return;var n=e[t];if(typeof n==`string`||typeof n.content==`string`){var r=f[o],i=typeof n==`string`?n:n.content,a=i.indexOf(r);if(a!==-1){++o;var s=i.substring(0,a),c=l(u[r]),d=i.substring(a+r.length),m=[];if(s&&m.push(s),m.push(c),d){var h=[d];p(h),m.push.apply(m,h)}typeof n==`string`?(e.splice.apply(e,[t,1].concat(m)),t+=m.length-1):n.content=m}}else{var g=n.content;p(Array.isArray(g)?g:[g])}}}return p(d),new e.Token(r,d,`language-`+r,t)}var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};e.hooks.add(`after-tokenize`,function(t){if(!(t.language in d))return;function n(t){for(var r=0,i=t.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript[`literal-property`];var t=e.languages.extend(`typescript`,{});delete t[`class-name`],e.languages.typescript[`class-name`].inside=t,e.languages.insertBefore(`typescript`,`function`,{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:`operator`},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:`class-name`,inside:t}}}}),e.languages.ts=e.languages.typescript})(e)}cn.displayName=`jsdoc`,cn.aliases=[];function cn(e){e.register(G),e.register(C),e.register(sn),(function(e){var t=e.languages.javascript,n=`\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})+\\}`,r=`(@(?:arg|argument|param|property)\\s+(?:`+n+`\\s+)?)`;e.languages.jsdoc=e.languages.extend(`javadoclike`,{parameter:{pattern:RegExp(r+`(?:(?!\\s)[$\\w\\xA0-\\uFFFF.])+(?=\\s|$)`),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore(`jsdoc`,`keyword`,{"optional-parameter":{pattern:RegExp(r+`\\[(?:(?!\\s)[$\\w\\xA0-\\uFFFF.])+(?:=[^[\\]]+)?\\](?=\\s|$)`),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:`language-javascript`},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(`(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\\s+(?:\\s+)?)[A-Z]\\w*(?:\\.[A-Z]\\w*)*`.replace(//g,function(){return n})),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp(`(@[a-z]+\\s+)`+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:`language-javascript`}}}}),e.languages.javadoclike.addSupport(`javascript`,e.languages.jsdoc)})(e)}ln.displayName=`json`,ln.aliases=[`webmanifest`];function ln(e){e.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:`keyword`}},e.languages.webmanifest=e.languages.json}un.displayName=`json5`,un.aliases=[];function un(e){e.register(ln),(function(e){var t=/("|')(?:\\(?:\r\n?|\n|.)|(?!\1)[^\\\r\n])*\1/;e.languages.json5=e.languages.extend(`json`,{property:[{pattern:RegExp(t.source+`(?=\\s*:)`),greedy:!0},{pattern:/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/,alias:`unquoted`}],string:{pattern:t,greedy:!0},number:/[+-]?\b(?:NaN|Infinity|0x[a-fA-F\d]+)\b|[+-]?(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[eE][+-]?\d+\b)?/})})(e)}dn.displayName=`jsonp`,dn.aliases=[];function dn(e){e.register(ln),e.languages.jsonp=e.languages.extend(`json`,{punctuation:/[{}[\]();,.]/}),e.languages.insertBefore(`jsonp`,`punctuation`,{function:/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*\()/})}fn.displayName=`jsstacktrace`,fn.aliases=[];function fn(e){e.languages.jsstacktrace={"error-message":{pattern:/^\S.*/m,alias:`string`},"stack-frame":{pattern:/(^[ \t]+)at[ \t].*/m,lookbehind:!0,inside:{"not-my-code":{pattern:/^at[ \t]+(?!\s)(?:node\.js||.*(?:node_modules|\(\)|\(|$|\(internal\/|\(node\.js)).*/m,alias:`comment`},filename:{pattern:/(\bat\s+(?!\s)|\()(?:[a-zA-Z]:)?[^():]+(?=:)/,lookbehind:!0,alias:`url`},function:{pattern:/(\bat\s+(?:new\s+)?)(?!\s)[_$a-zA-Z\xA0-\uFFFF<][.$\w\xA0-\uFFFF<>]*/,lookbehind:!0,inside:{punctuation:/\./}},punctuation:/[()]/,keyword:/\b(?:at|new)\b/,alias:{pattern:/\[(?:as\s+)?(?!\s)[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\]/,alias:`variable`},"line-number":{pattern:/:\d+(?::\d+)?\b/,alias:`number`,inside:{punctuation:/:/}}}}}}pn.displayName=`jsx`,pn.aliases=[];function pn(e){e.register(C),e.register(B),(function(e){var t=e.util.clone(e.languages.javascript),n=`(?:\\s|\\/\\/.*(?!.)|\\/\\*(?:[^*]|\\*(?!\\/))\\*\\/)`,r=`(?:\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])*\\})`,i=`(?:\\{*\\.{3}(?:[^{}]|)*\\})`;function a(e,t){return e=e.replace(//g,function(){return n}).replace(//g,function(){return r}).replace(//g,function(){return i}),RegExp(e,t)}i=a(i).source,e.languages.jsx=e.languages.extend(`markup`,t),e.languages.jsx.tag.pattern=a(`<\\/?(?:[\\w.:-]+(?:+(?:[\\w.:$-]+(?:=(?:"(?:\\\\[\\s\\S]|[^\\\\"])*"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s{'"/>=]+|))?|))**\\/?)?>`),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside[`attr-value`].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside[`class-name`]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore(`inside`,`attr-name`,{spread:{pattern:a(``),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore(`inside`,`special-attr`,{script:{pattern:a(`=`),alias:`language-javascript`,inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:`punctuation`},rest:e.languages.jsx}}},e.languages.jsx.tag);var o=function(e){return e?typeof e==`string`?e:typeof e.content==`string`?e.content:e.content.map(o).join(``):``},s=function(t){for(var n=[],r=0;r0&&n[n.length-1].tagName===o(i.content[0].content[1])&&n.pop():i.content[i.content.length-1].content===`/>`||n.push({tagName:o(i.content[0].content[1]),openedBraces:0}):n.length>0&&i.type===`punctuation`&&i.content===`{`?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&i.type===`punctuation`&&i.content===`}`?n[n.length-1].openedBraces--:a=!0),(a||typeof i==`string`)&&n.length>0&&n[n.length-1].openedBraces===0){var c=o(i);r0&&(typeof t[r-1]==`string`||t[r-1].type===`plain-text`)&&(c=o(t[r-1])+c,t.splice(r-1,1),r--),t[r]=new e.Token(`plain-text`,c,null,c)}i.content&&typeof i.content!=`string`&&s(i.content)}};e.hooks.add(`after-tokenize`,function(e){e.language!==`jsx`&&e.language!==`tsx`||s(e.tokens)})})(e)}mn.displayName=`julia`,mn.aliases=[];function mn(e){e.languages.julia={comment:{pattern:/(^|[^\\])(?:#=(?:[^#=]|=(?!#)|#(?!=)|#=(?:[^#=]|=(?!#)|#(?!=))*=#)*=#|#.*)/,lookbehind:!0},regex:{pattern:/r"(?:\\.|[^"\\\r\n])*"[imsx]{0,4}/,greedy:!0},string:{pattern:/"""[\s\S]+?"""|(?:\b\w+)?"(?:\\.|[^"\\\r\n])*"|`(?:[^\\`\r\n]|\\.)*`/,greedy:!0},char:{pattern:/(^|[^\w'])'(?:\\[^\r\n][^'\r\n]*|[^\\\r\n])'/,lookbehind:!0,greedy:!0},keyword:/\b(?:abstract|baremodule|begin|bitstype|break|catch|ccall|const|continue|do|else|elseif|end|export|finally|for|function|global|if|immutable|import|importall|in|let|local|macro|module|print|println|quote|return|struct|try|type|typealias|using|while)\b/,boolean:/\b(?:false|true)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[box])?(?:[\da-f]+(?:_[\da-f]+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[efp][+-]?\d+(?:_\d+)*)?j?/i,operator:/&&|\|\||[-+*^%÷⊻&$\\]=?|\/[\/=]?|!=?=?|\|[=>]?|<(?:<=?|[=:|])?|>(?:=|>>?=?)?|==?=?|[~≠≤≥'√∛]/,punctuation:/::?|[{}[\]();,.?]/,constant:/\b(?:(?:Inf|NaN)(?:16|32|64)?|im|pi)\b|[πℯ]/}}hn.displayName=`keepalived`,hn.aliases=[];function hn(e){e.languages.keepalived={comment:{pattern:/[#!].*/,greedy:!0},string:{pattern:/(^|[^\\])(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/,lookbehind:!0,greedy:!0},ip:{pattern:RegExp(`\\b(?:(?:(?:[\\da-f]{1,4}:){7}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){6}:[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){5}:(?:[\\da-f]{1,4}:)?[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){4}:(?:[\\da-f]{1,4}:){0,2}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){3}:(?:[\\da-f]{1,4}:){0,3}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){2}:(?:[\\da-f]{1,4}:){0,4}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){6}|(?:[\\da-f]{1,4}:){0,5}:|::(?:[\\da-f]{1,4}:){0,5}|[\\da-f]{1,4}::(?:[\\da-f]{1,4}:){0,5}[\\da-f]{1,4}|::(?:[\\da-f]{1,4}:){0,6}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,7}:)(?:\\/\\d{1,3})?|(?:\\/\\d{1,2})?)\\b`.replace(//g,function(){return`(?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d))`}),`i`),alias:`number`},path:{pattern:/(\s)\/(?:[^\/\s]+\/)*[^\/\s]*|\b[a-zA-Z]:\\(?:[^\\\s]+\\)*[^\\\s]*/,lookbehind:!0,alias:`string`},variable:/\$\{?\w+\}?/,email:{pattern:/[\w-]+@[\w-]+(?:\.[\w-]{2,3}){1,2}/,alias:`string`},"conditional-configuration":{pattern:/@\^?[\w-]+/,alias:`variable`},operator:/=/,property:/\b(?:BFD_CHECK|DNS_CHECK|FILE_CHECK|HTTP_GET|MISC_CHECK|NAME|PING_CHECK|SCRIPTS|SMTP_CHECK|SSL|SSL_GET|TCP_CHECK|UDP_CHECK|accept|advert_int|alpha|auth_pass|auth_type|authentication|bfd_cpu_affinity|bfd_instance|bfd_no_swap|bfd_priority|bfd_process_name|bfd_rlimit_rttime|bfd_rt_priority|bind_if|bind_port|bindto|ca|certificate|check_unicast_src|checker|checker_cpu_affinity|checker_log_all_failures|checker_no_swap|checker_priority|checker_rlimit_rttime|checker_rt_priority|child_wait_time|connect_ip|connect_port|connect_timeout|dbus_service_name|debug|default_interface|delay|delay_before_retry|delay_loop|digest|dont_track_primary|dynamic|dynamic_interfaces|enable_(?:dbus|script_security|sni|snmp_checker|snmp_rfc|snmp_rfcv2|snmp_rfcv3|snmp_vrrp|traps)|end|fall|fast_recovery|file|flag-[123]|fork_delay|full_command|fwmark|garp_group|garp_interval|garp_lower_prio_delay|garp_lower_prio_repeat|garp_master_delay|garp_master_refresh|garp_master_refresh_repeat|garp_master_repeat|global_defs|global_tracking|gna_interval|group|ha_suspend|hashed|helo_name|higher_prio_send_advert|hoplimit|http_protocol|hysteresis|idle_tx|include|inhibit_on_failure|init_fail|init_file|instance|interface|interfaces|interval|ip_family|ipvs_process_name|keepalived.conf|kernel_rx_buf_size|key|linkbeat_interfaces|linkbeat_use_polling|log_all_failures|log_unknown_vrids|lower_prio_no_advert|lthreshold|lvs_flush|lvs_flush_onstop|lvs_method|lvs_netlink_cmd_rcv_bufs|lvs_netlink_cmd_rcv_bufs_force|lvs_netlink_monitor_rcv_bufs|lvs_netlink_monitor_rcv_bufs_force|lvs_notify_fifo|lvs_notify_fifo_script|lvs_sched|lvs_sync_daemon|max_auto_priority|max_hops|mcast_src_ip|mh-fallback|mh-port|min_auto_priority_delay|min_rx|min_tx|misc_dynamic|misc_path|misc_timeout|multiplier|name|namespace_with_ipsets|native_ipv6|neighbor_ip|net_namespace|net_namespace_ipvs|nftables|nftables_counters|nftables_ifindex|nftables_priority|no_accept|no_checker_emails|no_email_faults|nopreempt|notification_email|notification_email_from|notify|notify_backup|notify_deleted|notify_down|notify_fault|notify_fifo|notify_fifo_script|notify_master|notify_master_rx_lower_pri|notify_priority_changes|notify_stop|notify_up|old_unicast_checksum|omega|ops|param_match|passive|password|path|persistence_engine|persistence_granularity|persistence_timeout|preempt|preempt_delay|priority|process|process_monitor_rcv_bufs|process_monitor_rcv_bufs_force|process_name|process_names|promote_secondaries|protocol|proxy_arp|proxy_arp_pvlan|quorum|quorum_down|quorum_max|quorum_up|random_seed|real_server|regex|regex_max_offset|regex_min_offset|regex_no_match|regex_options|regex_stack|reload_repeat|reload_time_file|require_reply|retry|rise|router_id|rs_init_notifies|script|script_user|sh-fallback|sh-port|shutdown_script|shutdown_script_timeout|skip_check_adv_addr|smtp_alert|smtp_alert_checker|smtp_alert_vrrp|smtp_connect_timeout|smtp_helo_name|smtp_server|snmp_socket|sorry_server|sorry_server_inhibit|sorry_server_lvs_method|source_ip|start|startup_script|startup_script_timeout|state|static_ipaddress|static_routes|static_rules|status_code|step|strict_mode|sync_group_tracking_weight|terminate_delay|timeout|track_bfd|track_file|track_group|track_interface|track_process|track_script|track_src_ip|ttl|type|umask|unicast_peer|unicast_src_ip|unicast_ttl|url|use_ipvlan|use_pid_dir|use_vmac|user|uthreshold|val[123]|version|virtual_ipaddress|virtual_ipaddress_excluded|virtual_router_id|virtual_routes|virtual_rules|virtual_server|virtual_server_group|virtualhost|vmac_xmit_base|vrrp|vrrp_(?:check_unicast_src|cpu_affinity|garp_interval|garp_lower_prio_delay|garp_lower_prio_repeat|garp_master_delay|garp_master_refresh|garp_master_refresh_repeat|garp_master_repeat|gna_interval|higher_prio_send_advert|instance|ipsets|iptables|lower_prio_no_advert|mcast_group4|mcast_group6|min_garp|netlink_cmd_rcv_bufs|netlink_cmd_rcv_bufs_force|netlink_monitor_rcv_bufs|netlink_monitor_rcv_bufs_force|no_swap|notify_fifo|notify_fifo_script|notify_priority_changes|priority|process_name|rlimit_rttime|rt_priority|rx_bufs_multiplier|rx_bufs_policy|script|skip_check_adv_addr|startup_delay|strict|sync_group|track_process|version)|warmup|weight)\b/,constant:/\b(?:A|AAAA|AH|BACKUP|CNAME|DR|MASTER|MX|NAT|NS|PASS|SCTP|SOA|TCP|TUN|TXT|UDP|dh|fo|lblc|lblcr|lc|mh|nq|ovf|rr|sed|sh|wlc|wrr)\b/,number:{pattern:/(^|[^\w.-])-?\d+(?:\.\d+)?/,lookbehind:!0},boolean:/\b(?:false|no|off|on|true|yes)\b/,punctuation:/[\{\}]/}}gn.displayName=`keyman`,gn.aliases=[];function gn(e){e.languages.keyman={comment:{pattern:/\bc .*/i,greedy:!0},string:{pattern:/"[^"\r\n]*"|'[^'\r\n]*'/,greedy:!0},"virtual-key":{pattern:/\[\s*(?:(?:ALT|CAPS|CTRL|LALT|LCTRL|NCAPS|RALT|RCTRL|SHIFT)\s+)*(?:[TKU]_[\w?]+|[A-E]\d\d?|"[^"\r\n]*"|'[^'\r\n]*')\s*\]/i,greedy:!0,alias:`function`},"header-keyword":{pattern:/&\w+/,alias:`bold`},"header-statement":{pattern:/\b(?:bitmap|bitmaps|caps always off|caps on only|copyright|hotkey|language|layout|message|name|shift frees caps|version)\b/i,alias:`bold`},"rule-keyword":{pattern:/\b(?:any|baselayout|beep|call|context|deadkey|dk|if|index|layer|notany|nul|outs|platform|reset|return|save|set|store|use)\b/i,alias:`keyword`},"structural-keyword":{pattern:/\b(?:ansi|begin|group|match|newcontext|nomatch|postkeystroke|readonly|unicode|using keys)\b/i,alias:`keyword`},"compile-target":{pattern:/\$(?:keyman|keymanonly|keymanweb|kmfl|weaver):/i,alias:`property`},number:/\b(?:U\+[\dA-F]+|d\d+|x[\da-f]+|\d+)\b/i,operator:/[+>\\$]|\.\./,punctuation:/[()=,]/}}_n.displayName=`kotlin`,_n.aliases=[`kt`,`kts`];function _n(e){e.register(S),(function(e){e.languages.kotlin=e.languages.extend(`clike`,{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin[`class-name`];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:`punctuation`},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore(`kotlin`,`string`,{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:`multiline`,inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:`singleline`,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore(`kotlin`,`keyword`,{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:`builtin`}}),e.languages.insertBefore(`kotlin`,`function`,{label:{pattern:/\b\w+@|@\w+\b/,alias:`symbol`}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin})(e)}vn.displayName=`kumir`,vn.aliases=[`kum`];function vn(e){(function(e){var t=`\\s\\x00-\\x1f\\x22-\\x2f\\x3a-\\x3f\\x5b-\\x5e\\x60\\x7b-\\x7e`;function n(e,n){return RegExp(e.replace(//g,t),n)}e.languages.kumir={comment:{pattern:/\|.*/},prolog:{pattern:/#.*/,greedy:!0},string:{pattern:/"[^\n\r"]*"|'[^\n\r']*'/,greedy:!0},boolean:{pattern:n(`(^|[])(?:да|нет)(?=[]|$)`),lookbehind:!0},"operator-word":{pattern:n(`(^|[])(?:и|или|не)(?=[]|$)`),lookbehind:!0,alias:`keyword`},"system-variable":{pattern:n(`(^|[])знач(?=[]|$)`),lookbehind:!0,alias:`keyword`},type:[{pattern:n(`(^|[])(?:вещ|лит|лог|сим|цел)(?:\\x20*таб)?(?=[]|$)`),lookbehind:!0,alias:`builtin`},{pattern:n(`(^|[])(?:компл|сканкод|файл|цвет)(?=[]|$)`),lookbehind:!0,alias:`important`}],keyword:{pattern:n(`(^|[])(?:алг|арг(?:\\x20*рез)?|ввод|ВКЛЮЧИТЬ|вс[её]|выбор|вывод|выход|дано|для|до|дс|если|иначе|исп|использовать|кон(?:(?:\\x20+|_)исп)?|кц(?:(?:\\x20+|_)при)?|надо|нач|нс|нц|от|пауза|пока|при|раза?|рез|стоп|таб|то|утв|шаг)(?=[]|$)`),lookbehind:!0},name:{pattern:n(`(^|[])[^\\d][^]*(?:\\x20+[^]+)*(?=[]|$)`),lookbehind:!0},number:{pattern:n(`(^|[])(?:\\B\\$[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)(?=[]|$)`,`i`),lookbehind:!0},punctuation:/:=|[(),:;\[\]]/,"operator-char":{pattern:/\*\*?|<[=>]?|>=?|[-+/=]/,alias:`operator`}},e.languages.kum=e.languages.kumir})(e)}yn.displayName=`kusto`,yn.aliases=[];function yn(e){e.languages.kusto={comment:{pattern:/\/\/.*/,greedy:!0},string:{pattern:/```[\s\S]*?```|[hH]?(?:"(?:[^\r\n\\"]|\\.)*"|'(?:[^\r\n\\']|\\.)*'|@(?:"[^\r\n"]*"|'[^\r\n']*'))/,greedy:!0},verb:{pattern:/(\|\s*)[a-z][\w-]*/i,lookbehind:!0,alias:`keyword`},command:{pattern:/\.[a-z][a-z\d-]*\b/,alias:`keyword`},"class-name":/\b(?:bool|datetime|decimal|dynamic|guid|int|long|real|string|timespan)\b/,keyword:/\b(?:access|alias|and|anti|as|asc|auto|between|by|(?:contains|(?:ends|starts)with|has(?:perfix|suffix)?)(?:_cs)?|database|declare|desc|external|from|fullouter|has_all|in|ingestion|inline|inner|innerunique|into|(?:left|right)(?:anti(?:semi)?|inner|outer|semi)?|let|like|local|not|of|on|or|pattern|print|query_parameters|range|restrict|schema|set|step|table|tables|to|view|where|with|matches\s+regex|nulls\s+(?:first|last))(?![\w-])/,boolean:/\b(?:false|null|true)\b/,function:/\b[a-z_]\w*(?=\s*\()/,datetime:[{pattern:/\b(?:(?:Fri|Friday|Mon|Monday|Sat|Saturday|Sun|Sunday|Thu|Thursday|Tue|Tuesday|Wed|Wednesday)\s*,\s*)?\d{1,2}(?:\s+|-)(?:Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)(?:\s+|-)\d{2}\s+\d{2}:\d{2}(?::\d{2})?(?:\s*(?:\b(?:[A-Z]|(?:[ECMT][DS]|GM|U)T)|[+-]\d{4}))?\b/,alias:`number`},{pattern:/[+-]?\b(?:\d{4}-\d{2}-\d{2}(?:[ T]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?)?|\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?)Z?/,alias:`number`}],number:/\b(?:0x[0-9A-Fa-f]+|\d+(?:\.\d+)?(?:[Ee][+-]?\d+)?)(?:(?:min|sec|[mnµ]s|[dhms]|microsecond|tick)\b)?|[+-]?\binf\b/,operator:/=>|[!=]~|[!=<>]=?|[-+*/%|]|\.\./,punctuation:/[()\[\]{},;.:]/}}bn.displayName=`latex`,bn.aliases=[`context`,`tex`];function bn(e){(function(e){var t=/\\(?:[^a-z()[\]]|[a-z*]+)/i,n={"equation-command":{pattern:t,alias:`regex`}};e.languages.latex={comment:/%.*/,cdata:{pattern:/(\\begin\{((?:lstlisting|verbatim)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0},equation:[{pattern:/\$\$(?:\\[\s\S]|[^\\$])+\$\$|\$(?:\\[\s\S]|[^\\$])+\$|\\\([\s\S]*?\\\)|\\\[[\s\S]*?\\\]/,inside:n,alias:`string`},{pattern:/(\\begin\{((?:align|eqnarray|equation|gather|math|multline)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0,inside:n,alias:`string`}],keyword:{pattern:/(\\(?:begin|cite|documentclass|end|label|ref|usepackage)(?:\[[^\]]+\])?\{)[^}]+(?=\})/,lookbehind:!0},url:{pattern:/(\\url\{)[^}]+(?=\})/,lookbehind:!0},headline:{pattern:/(\\(?:chapter|frametitle|paragraph|part|section|subparagraph|subsection|subsubparagraph|subsubsection|subsubsubparagraph)\*?(?:\[[^\]]+\])?\{)[^}]+(?=\})/,lookbehind:!0,alias:`class-name`},function:{pattern:t,alias:`selector`},punctuation:/[[\]{}&]/},e.languages.tex=e.languages.latex,e.languages.context=e.languages.latex})(e)}K.displayName=`php`,K.aliases=[];function K(e){e.register(U),(function(e){var t=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,n=[{pattern:/\b(?:false|true)\b/i,alias:`boolean`},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],r=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,i=/|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,a=/[{}\[\](),:;]/;e.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:`important`},comment:t,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:`class-name`},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:`function`},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:`type-casting`,greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:`type-hint`,greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|never|object|self|static|string|void)\b/i,alias:`return-type`,greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:`type-declaration`,greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:`type-declaration`,greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:`static-context`,greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s*)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:`class-name-fully-qualified`,greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:`class-name-fully-qualified`,greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:`class-name-fully-qualified`,greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:`type-declaration`,greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:[`class-name-fully-qualified`,`type-declaration`],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:`static-context`,greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:[`class-name-fully-qualified`,`static-context`],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:`type-hint`,greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:[`class-name-fully-qualified`,`type-hint`],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:`return-type`,greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:[`class-name-fully-qualified`,`return-type`],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:n,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:r,operator:i,punctuation:a};var o={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:e.languages.php},s=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:`nowdoc-string`,greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:`symbol`,inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:`heredoc-string`,greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:`symbol`,inside:{punctuation:/^<<<"?|[";]$/}},interpolation:o}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:`backtick-quoted-string`,greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:`single-quoted-string`,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:`double-quoted-string`,greedy:!0,inside:{interpolation:o}}];e.languages.insertBefore(`php`,`variable`,{string:s,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:t,string:s,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:`class-name`,greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:[`class-name`,`class-name-fully-qualified`],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:n,number:r,operator:i,punctuation:a}},delimiter:{pattern:/^#\[|\]$/,alias:`punctuation`}}}}),e.hooks.add(`before-tokenize`,function(t){/<\?/.test(t.code)&&e.languages[`markup-templating`].buildPlaceholders(t,`php`,/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g)}),e.hooks.add(`after-tokenize`,function(t){e.languages[`markup-templating`].tokenizePlaceholders(t,`php`)})})(e)}xn.displayName=`latte`,xn.aliases=[];function xn(e){e.register(S),e.register(U),e.register(K),(function(e){e.languages.latte={comment:/^\{\*[\s\S]*/,"latte-tag":{pattern:/(^\{(?:\/(?=[a-z]))?)(?:[=_]|[a-z]\w*\b(?!\())/i,lookbehind:!0,alias:`important`},delimiter:{pattern:/^\{\/?|\}$/,alias:`punctuation`},php:{pattern:/\S(?:[\s\S]*\S)?/,alias:`language-php`,inside:e.languages.php}};var t=e.languages.extend(`markup`,{});e.languages.insertBefore(`inside`,`attr-value`,{"n-attr":{pattern:/n:[\w-]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+))?/,inside:{"attr-name":{pattern:/^[^\s=]+/,alias:`important`},"attr-value":{pattern:/=[\s\S]+/,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}],php:{pattern:/\S(?:[\s\S]*\S)?/,inside:e.languages.php}}}}}},t.tag),e.hooks.add(`before-tokenize`,function(n){n.language===`latte`&&(e.languages[`markup-templating`].buildPlaceholders(n,`latte`,/\{\*[\s\S]*?\*\}|\{[^'"\s{}*](?:[^"'/{}]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|\/\*(?:[^*]|\*(?!\/))*\*\/)*\}/g),n.grammar=t)}),e.hooks.add(`after-tokenize`,function(t){e.languages[`markup-templating`].tokenizePlaceholders(t,`latte`)})})(e)}Sn.displayName=`less`,Sn.aliases=[];function Sn(e){e.register(H),e.languages.less=e.languages.extend(`css`,{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),e.languages.insertBefore(`less`,`property`,{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:`function`}})}Cn.displayName=`scheme`,Cn.aliases=[];function Cn(e){(function(e){e.languages.scheme={comment:/;.*|#;\s*(?:\((?:[^()]|\([^()]*\))*\)|\[(?:[^\[\]]|\[[^\[\]]*\])*\])|#\|(?:[^#|]|#(?!\|)|\|(?!#)|#\|(?:[^#|]|#(?!\|)|\|(?!#))*\|#)*\|#/,string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0},symbol:{pattern:/'[^()\[\]#'\s]+/,greedy:!0},char:{pattern:/#\\(?:[ux][a-fA-F\d]+\b|[-a-zA-Z]+\b|[\uD800-\uDBFF][\uDC00-\uDFFF]|\S)/,greedy:!0},"lambda-parameter":[{pattern:/((?:^|[^'`#])[(\[]lambda\s+)(?:[^|()\[\]'\s]+|\|(?:[^\\|]|\\.)*\|)/,lookbehind:!0},{pattern:/((?:^|[^'`#])[(\[]lambda\s+[(\[])[^()\[\]']+/,lookbehind:!0}],keyword:{pattern:/((?:^|[^'`#])[(\[])(?:begin|case(?:-lambda)?|cond(?:-expand)?|define(?:-library|-macro|-record-type|-syntax|-values)?|defmacro|delay(?:-force)?|do|else|except|export|guard|if|import|include(?:-ci|-library-declarations)?|lambda|let(?:rec)?(?:-syntax|-values|\*)?|let\*-values|only|parameterize|prefix|(?:quasi-?)?quote|rename|set!|syntax-(?:case|rules)|unless|unquote(?:-splicing)?|when)(?=[()\[\]\s]|$)/,lookbehind:!0},builtin:{pattern:/((?:^|[^'`#])[(\[])(?:abs|and|append|apply|assoc|ass[qv]|binary-port\?|boolean=?\?|bytevector(?:-append|-copy|-copy!|-length|-u8-ref|-u8-set!|\?)?|caar|cadr|call-with-(?:current-continuation|port|values)|call\/cc|car|cdar|cddr|cdr|ceiling|char(?:->integer|-ready\?|\?|<\?|<=\?|=\?|>\?|>=\?)|close-(?:input-port|output-port|port)|complex\?|cons|current-(?:error|input|output)-port|denominator|dynamic-wind|eof-object\??|eq\?|equal\?|eqv\?|error|error-object(?:-irritants|-message|\?)|eval|even\?|exact(?:-integer-sqrt|-integer\?|\?)?|expt|features|file-error\?|floor(?:-quotient|-remainder|\/)?|flush-output-port|for-each|gcd|get-output-(?:bytevector|string)|inexact\??|input-port(?:-open\?|\?)|integer(?:->char|\?)|lcm|length|list(?:->string|->vector|-copy|-ref|-set!|-tail|\?)?|make-(?:bytevector|list|parameter|string|vector)|map|max|member|memq|memv|min|modulo|negative\?|newline|not|null\?|number(?:->string|\?)|numerator|odd\?|open-(?:input|output)-(?:bytevector|string)|or|output-port(?:-open\?|\?)|pair\?|peek-char|peek-u8|port\?|positive\?|procedure\?|quotient|raise|raise-continuable|rational\?|rationalize|read-(?:bytevector|bytevector!|char|error\?|line|string|u8)|real\?|remainder|reverse|round|set-c[ad]r!|square|string(?:->list|->number|->symbol|->utf8|->vector|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\?|<\?|<=\?|=\?|>\?|>=\?)?|substring|symbol(?:->string|\?|=\?)|syntax-error|textual-port\?|truncate(?:-quotient|-remainder|\/)?|u8-ready\?|utf8->string|values|vector(?:->list|->string|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\?)?|with-exception-handler|write-(?:bytevector|char|string|u8)|zero\?)(?=[()\[\]\s]|$)/,lookbehind:!0},operator:{pattern:/((?:^|[^'`#])[(\[])(?:[-+*%/]|[<>]=?|=>?)(?=[()\[\]\s]|$)/,lookbehind:!0},number:{pattern:RegExp(t({"":`\\d+(?:\\/\\d+)|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[esfdl][+-]?\\d+)?`,"":`[+-]?|[+-](?:inf|nan)\\.0`,"":`[+-](?:|(?:inf|nan)\\.0)?i`,"":`(?:@|)?|`,"":`(?:#d(?:#[ei])?|#[ei](?:#d)?)?`,"":`[0-9a-f]+(?:\\/[0-9a-f]+)?`,"":`[+-]?|[+-](?:inf|nan)\\.0`,"":`[+-](?:|(?:inf|nan)\\.0)?i`,"":`(?:@|)?|`,"":`#[box](?:#[ei])?|(?:#[ei])?#[box]`,"":`(^|[()\\[\\]\\s])(?:|)(?=[()\\[\\]\\s]|$)`}),`i`),lookbehind:!0},boolean:{pattern:/(^|[()\[\]\s])#(?:[ft]|false|true)(?=[()\[\]\s]|$)/,lookbehind:!0},function:{pattern:/((?:^|[^'`#])[(\[])(?:[^|()\[\]'\s]+|\|(?:[^\\|]|\\.)*\|)(?=[()\[\]\s]|$)/,lookbehind:!0},identifier:{pattern:/(^|[()\[\]\s])\|(?:[^\\|]|\\.)*\|(?=[()\[\]\s]|$)/,lookbehind:!0,greedy:!0},punctuation:/[()\[\]']/};function t(e){for(var t in e)e[t]=e[t].replace(/<[\w\s]+>/g,function(t){return`(?:`+e[t].trim()+`)`});return e[t]}})(e)}wn.displayName=`lilypond`,wn.aliases=[`ly`];function wn(e){e.register(Cn),(function(e){for(var t=`\\((?:[^();"#\\\\]|\\\\[\\s\\S]|;.*(?!.)|"(?:[^"\\\\]|\\\\.)*"|#(?:\\{(?:(?!#\\})[\\s\\S])*#\\}|[^{])|)*\\)`,n=5,r=0;r/g,function(){return t});t=t.replace(//g,`[^\\s\\S]`);var i=e.languages.lilypond={comment:/%(?:(?!\{).*|\{[\s\S]*?%\})/,"embedded-scheme":{pattern:RegExp(`(^|[=\\s])#(?:"(?:[^"\\\\]|\\\\.)*"|[^\\s()"]*(?:[^\\s()]|))`.replace(//g,function(){return t}),`m`),lookbehind:!0,greedy:!0,inside:{scheme:{pattern:/^(#)[\s\S]+$/,lookbehind:!0,alias:`language-scheme`,inside:{"embedded-lilypond":{pattern:/#\{[\s\S]*?#\}/,greedy:!0,inside:{punctuation:/^#\{|#\}$/,lilypond:{pattern:/[\s\S]+/,alias:`language-lilypond`,inside:null}}},rest:e.languages.scheme}},punctuation:/#/}},string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0},"class-name":{pattern:/(\\new\s+)[\w-]+/,lookbehind:!0},keyword:{pattern:/\\[a-z][-\w]*/i,inside:{punctuation:/^\\/}},operator:/[=|]|<<|>>/,punctuation:{pattern:/(^|[a-z\d])(?:'+|,+|[_^]?-[_^]?(?:[-+^!>._]|(?=\d))|[_^]\.?|[.!])|[{}()[\]<>^~]|\\[()[\]<>\\!]|--|__/,lookbehind:!0},number:/\b\d+(?:\/\d+)?\b/};i[`embedded-scheme`].inside.scheme.inside[`embedded-lilypond`].inside.lilypond.inside=i,e.languages.ly=i})(e)}Tn.displayName=`linker-script`,Tn.aliases=[`ld`];function Tn(e){e.languages[`linker-script`]={comment:{pattern:/(^|\s)\/\*[\s\S]*?(?:$|\*\/)/,lookbehind:!0,greedy:!0},identifier:{pattern:/"[^"\r\n]*"/,greedy:!0},"location-counter":{pattern:/\B\.\B/,alias:`important`},section:{pattern:/(^|[^\w*])\.\w+\b/,lookbehind:!0,alias:`keyword`},function:/\b[A-Z][A-Z_]*(?=\s*\()/,number:/\b(?:0[xX][a-fA-F0-9]+|\d+)[KM]?\b/,operator:/>>=?|<<=?|->|\+\+|--|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?/,punctuation:/[(){},;]/},e.languages.ld=e.languages[`linker-script`]}En.displayName=`liquid`,En.aliases=[];function En(e){e.register(U),e.languages.liquid={comment:{pattern:/(^\{%\s*comment\s*%\})[\s\S]+(?=\{%\s*endcomment\s*%\}$)/,lookbehind:!0},delimiter:{pattern:/^\{(?:\{\{|[%\{])-?|-?(?:\}\}|[%\}])\}$/,alias:`punctuation`},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},keyword:/\b(?:as|assign|break|(?:end)?(?:capture|case|comment|for|form|if|paginate|raw|style|tablerow|unless)|continue|cycle|decrement|echo|else|elsif|in|include|increment|limit|liquid|offset|range|render|reversed|section|when|with)\b/,object:/\b(?:address|all_country_option_tags|article|block|blog|cart|checkout|collection|color|country|country_option_tags|currency|current_page|current_tags|customer|customer_address|date|discount_allocation|discount_application|external_video|filter|filter_value|font|forloop|fulfillment|generic_file|gift_card|group|handle|image|line_item|link|linklist|localization|location|measurement|media|metafield|model|model_source|order|page|page_description|page_image|page_title|part|policy|product|product_option|recommendations|request|robots|routes|rule|script|search|selling_plan|selling_plan_allocation|selling_plan_group|shipping_method|shop|shop_locale|sitemap|store_availability|tax_line|template|theme|transaction|unit_price_measurement|user_agent|variant|video|video_source)\b/,function:[{pattern:/(\|\s*)\w+/,lookbehind:!0,alias:`filter`},{pattern:/(\.\s*)(?:first|last|size)/,lookbehind:!0}],boolean:/\b(?:false|nil|true)\b/,range:{pattern:/\.\./,alias:`operator`},number:/\b\d+(?:\.\d+)?\b/,operator:/[!=]=|<>|[<>]=?|[|?:=-]|\b(?:and|contains(?=\s)|or)\b/,punctuation:/[.,\[\]()]/,empty:{pattern:/\bempty\b/,alias:`keyword`}},e.hooks.add(`before-tokenize`,function(t){var n=/\{%\s*comment\s*%\}[\s\S]*?\{%\s*endcomment\s*%\}|\{(?:%[\s\S]*?%|\{\{[\s\S]*?\}\}|\{[\s\S]*?\})\}/g,r=!1;e.languages[`markup-templating`].buildPlaceholders(t,`liquid`,n,function(e){var t=/^\{%-?\s*(\w+)/.exec(e);if(t){var n=t[1];if(n===`raw`&&!r)return r=!0,!0;if(n===`endraw`)return r=!1,!0}return!r})}),e.hooks.add(`after-tokenize`,function(t){e.languages[`markup-templating`].tokenizePlaceholders(t,`liquid`)})}Dn.displayName=`lisp`,Dn.aliases=[`elisp`,`emacs`,`emacs-lisp`];function Dn(e){(function(e){function t(e){return RegExp(`(\\()(?:`+e+`)(?=[\\s\\)])`)}function n(e){return RegExp(`([\\s([])(?:`+e+`)(?=[\\s)])`)}var r=`(?!\\d)[-+*/~!@$%^=<>{}\\w]+`,i=`&`+r,a=`(\\()`,o=`(?=\\))`,s=`(?=\\s)`,c=`(?:[^()]|\\((?:[^()]|\\((?:[^()]|\\((?:[^()]|\\((?:[^()]|\\([^()]*\\))*\\))*\\))*\\))*\\))*`,l={heading:{pattern:/;;;.*/,alias:[`comment`,`title`]},comment:/;.*/,string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0,inside:{argument:/[-A-Z]+(?=[.,\s])/,symbol:RegExp("`"+r+`'`)}},"quoted-symbol":{pattern:RegExp(`#?'`+r),alias:[`variable`,`symbol`]},"lisp-property":{pattern:RegExp(`:`+r),alias:`property`},splice:{pattern:RegExp(`,@?`+r),alias:[`symbol`,`variable`]},keyword:[{pattern:RegExp(a+`(?:and|(?:cl-)?letf|cl-loop|cond|cons|error|if|(?:lexical-)?let\\*?|message|not|null|or|provide|require|setq|unless|use-package|when|while)`+s),lookbehind:!0},{pattern:RegExp(a+`(?:append|by|collect|concat|do|finally|for|in|return)`+s),lookbehind:!0}],declare:{pattern:t(`declare`),lookbehind:!0,alias:`keyword`},interactive:{pattern:t(`interactive`),lookbehind:!0,alias:`keyword`},boolean:{pattern:n(`nil|t`),lookbehind:!0},number:{pattern:n(`[-+]?\\d+(?:\\.\\d*)?`),lookbehind:!0},defvar:{pattern:RegExp(a+`def(?:const|custom|group|var)\\s+`+r),lookbehind:!0,inside:{keyword:/^def[a-z]+/,variable:RegExp(r)}},defun:{pattern:RegExp(a+`(?:cl-)?(?:defmacro|defun\\*?)\\s+`+r+`\\s+\\(`+c+`\\)`),lookbehind:!0,greedy:!0,inside:{keyword:/^(?:cl-)?def\S+/,arguments:null,function:{pattern:RegExp(`(^\\s)`+r),lookbehind:!0},punctuation:/[()]/}},lambda:{pattern:RegExp(a+`lambda\\s+\\(\\s*(?:&?`+r+`(?:\\s+&?`+r+`)*\\s*)?\\)`),lookbehind:!0,greedy:!0,inside:{keyword:/^lambda/,arguments:null,punctuation:/[()]/}},car:{pattern:RegExp(a+r),lookbehind:!0},punctuation:[/(?:['`,]?\(|[)\[\]])/,{pattern:/(\s)\.(?=\s)/,lookbehind:!0}]},u={"lisp-marker":RegExp(i),varform:{pattern:RegExp(`\\(`+r+`\\s+(?=\\S)`+c+`\\)`),inside:l},argument:{pattern:RegExp(`(^|[\\s(])`+r),lookbehind:!0,alias:`variable`},rest:l},d=`\\S+(?:\\s+\\S+)*`,f={pattern:RegExp(a+c+o),lookbehind:!0,inside:{"rest-vars":{pattern:RegExp(`&(?:body|rest)\\s+`+d),inside:u},"other-marker-vars":{pattern:RegExp(`&(?:aux|optional)\\s+`+d),inside:u},keys:{pattern:RegExp(`&key\\s+`+d+`(?:\\s+&allow-other-keys)?`),inside:u},argument:{pattern:RegExp(r),alias:`variable`},punctuation:/[()]/}};l.lambda.inside.arguments=f,l.defun.inside.arguments=e.util.clone(f),l.defun.inside.arguments.inside.sublist=f,e.languages.lisp=l,e.languages.elisp=l,e.languages.emacs=l,e.languages[`emacs-lisp`]=l})(e)}On.displayName=`livescript`,On.aliases=[];function On(e){e.languages.livescript={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\])#.*/,lookbehind:!0}],"interpolated-string":{pattern:/(^|[^"])("""|")(?:\\[\s\S]|(?!\2)[^\\])*\2(?!")/,lookbehind:!0,greedy:!0,inside:{variable:{pattern:/(^|[^\\])#[a-z_](?:-?[a-z]|[\d_])*/m,lookbehind:!0},interpolation:{pattern:/(^|[^\\])#\{[^}]+\}/m,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^#\{|\}$/,alias:`variable`}}},string:/[\s\S]+/}},string:[{pattern:/('''|')(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},{pattern:/<\[[\s\S]*?\]>/,greedy:!0},/\\[^\s,;\])}]+/],regex:[{pattern:/\/\/(?:\[[^\r\n\]]*\]|\\.|(?!\/\/)[^\\\[])+\/\/[gimyu]{0,5}/,greedy:!0,inside:{comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0}}},{pattern:/\/(?:\[[^\r\n\]]*\]|\\.|[^/\\\r\n\[])+\/[gimyu]{0,5}/,greedy:!0}],keyword:{pattern:/(^|(?!-).)\b(?:break|case|catch|class|const|continue|default|do|else|extends|fallthrough|finally|for(?: ever)?|function|if|implements|it|let|loop|new|null|otherwise|own|return|super|switch|that|then|this|throw|try|unless|until|var|void|when|while|yield)(?!-)\b/m,lookbehind:!0},"keyword-operator":{pattern:/(^|[^-])\b(?:(?:delete|require|typeof)!|(?:and|by|delete|export|from|import(?: all)?|in|instanceof|is(?: not|nt)?|not|of|or|til|to|typeof|with|xor)(?!-)\b)/m,lookbehind:!0,alias:`operator`},boolean:{pattern:/(^|[^-])\b(?:false|no|off|on|true|yes)(?!-)\b/m,lookbehind:!0},argument:{pattern:/(^|(?!\.&\.)[^&])&(?!&)\d*/m,lookbehind:!0,alias:`variable`},number:/\b(?:\d+~[\da-z]+|\d[\d_]*(?:\.\d[\d_]*)?(?:[a-z]\w*)?)/i,identifier:/[a-z_](?:-?[a-z]|[\d_])*/i,operator:[{pattern:/( )\.(?= )/,lookbehind:!0},/\.(?:[=~]|\.\.?)|\.(?:[&|^]|<<|>>>?)\.|:(?:=|:=?)|&&|\|[|>]|<(?:<[>=?]?|-(?:->?|>)?|\+\+?|@@?|%%?|\*\*?|!(?:~?=|--?>|~?~>)?|~(?:~?>|=)?|==?|\^\^?|[\/?]/],punctuation:/[(){}\[\]|.,:;`]/},e.languages.livescript[`interpolated-string`].inside.interpolation.inside.rest=e.languages.livescript}kn.displayName=`llvm`,kn.aliases=[];function kn(e){(function(e){e.languages.llvm={comment:/;.*/,string:{pattern:/"[^"]*"/,greedy:!0},boolean:/\b(?:false|true)\b/,variable:/[%@!#](?:(?!\d)(?:[-$.\w]|\\[a-f\d]{2})+|\d+)/i,label:/(?!\d)(?:[-$.\w]|\\[a-f\d]{2})+:/i,type:{pattern:/\b(?:double|float|fp128|half|i[1-9]\d*|label|metadata|ppc_fp128|token|void|x86_fp80|x86_mmx)\b/,alias:`class-name`},keyword:/\b[a-z_][a-z_0-9]*\b/,number:/[+-]?\b\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b|\b0x[\dA-Fa-f]+\b|\b0xK[\dA-Fa-f]{20}\b|\b0x[ML][\dA-Fa-f]{32}\b|\b0xH[\dA-Fa-f]{4}\b/,punctuation:/[{}[\];(),.!*=<>]/}})(e)}An.displayName=`log`,An.aliases=[];function An(e){e.languages.log={string:{pattern:/"(?:[^"\\\r\n]|\\.)*"|'(?![st] | \w)(?:[^'\\\r\n]|\\.)*'/,greedy:!0},exception:{pattern:/(^|[^\w.])[a-z][\w.]*(?:Error|Exception):.*(?:(?:\r\n?|\n)[ \t]*(?:at[ \t].+|\.{3}.*|Caused by:.*))+(?:(?:\r\n?|\n)[ \t]*\.\.\. .*)?/,lookbehind:!0,greedy:!0,alias:[`javastacktrace`,`language-javastacktrace`],inside:e.languages.javastacktrace||{keyword:/\bat\b/,function:/[a-z_][\w$]*(?=\()/,punctuation:/[.:()]/}},level:[{pattern:/\b(?:ALERT|CRIT|CRITICAL|EMERG|EMERGENCY|ERR|ERROR|FAILURE|FATAL|SEVERE)\b/,alias:[`error`,`important`]},{pattern:/\b(?:WARN|WARNING|WRN)\b/,alias:[`warning`,`important`]},{pattern:/\b(?:DISPLAY|INF|INFO|NOTICE|STATUS)\b/,alias:[`info`,`keyword`]},{pattern:/\b(?:DBG|DEBUG|FINE)\b/,alias:[`debug`,`keyword`]},{pattern:/\b(?:FINER|FINEST|TRACE|TRC|VERBOSE|VRB)\b/,alias:[`trace`,`comment`]}],property:{pattern:/((?:^|[\]|])[ \t]*)[a-z_](?:[\w-]|\b\/\b)*(?:[. ]\(?\w(?:[\w-]|\b\/\b)*\)?)*:(?=\s)/im,lookbehind:!0},separator:{pattern:/(^|[^-+])-{3,}|={3,}|\*{3,}|- - /m,lookbehind:!0,alias:`comment`},url:/\b(?:file|ftp|https?):\/\/[^\s|,;'"]*[^\s|,;'">.]/,email:{pattern:/(^|\s)[-\w+.]+@[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)+(?=\s)/,lookbehind:!0,alias:`url`},"ip-address":{pattern:/\b(?:\d{1,3}(?:\.\d{1,3}){3})\b/,alias:`constant`},"mac-address":{pattern:/\b[a-f0-9]{2}(?::[a-f0-9]{2}){5}\b/i,alias:`constant`},domain:{pattern:/(^|\s)[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)*\.[a-z][a-z0-9-]+(?=\s)/,lookbehind:!0,alias:`constant`},uuid:{pattern:/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/i,alias:`constant`},hash:{pattern:/\b(?:[a-f0-9]{32}){1,2}\b/i,alias:`constant`},"file-path":{pattern:/\b[a-z]:[\\/][^\s|,;:(){}\[\]"']+|(^|[\s:\[\](>|])\.{0,2}\/\w[^\s|,;:(){}\[\]"']*/i,lookbehind:!0,greedy:!0,alias:`string`},date:{pattern:RegExp(`\\b\\d{4}[-/]\\d{2}[-/]\\d{2}(?:T(?=\\d{1,2}:)|(?=\\s\\d{1,2}:))|\\b\\d{1,4}[-/ ](?:\\d{1,2}|Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)[-/ ]\\d{2,4}T?\\b|\\b(?:(?:Fri|Mon|Sat|Sun|Thu|Tue|Wed)(?:\\s{1,2}(?:Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep))?|Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)\\s{1,2}\\d{1,2}\\b`,`i`),alias:`number`},time:{pattern:/\b\d{1,2}:\d{1,2}:\d{1,2}(?:[.,:]\d+)?(?:\s?[+-]\d{2}:?\d{2}|Z)?\b/,alias:`number`},boolean:/\b(?:false|null|true)\b/i,number:{pattern:/(^|[^.\w])(?:0x[a-f0-9]+|0o[0-7]+|0b[01]+|v?\d[\da-f]*(?:\.\d+)*(?:e[+-]?\d+)?[a-z]{0,3}\b)\b(?!\.\w)/i,lookbehind:!0},operator:/[;:?<=>~/@!$%&+\-|^(){}*#]/,punctuation:/[\[\].,]/}}jn.displayName=`lolcode`,jn.aliases=[];function jn(e){e.languages.lolcode={comment:[/\bOBTW\s[\s\S]*?\sTLDR\b/,/\bBTW.+/],string:{pattern:/"(?::.|[^":])*"/,inside:{variable:/:\{[^}]+\}/,symbol:[/:\([a-f\d]+\)/i,/:\[[^\]]+\]/,/:[)>o":]/]},greedy:!0},number:/(?:\B-)?(?:\b\d+(?:\.\d*)?|\B\.\d+)/,symbol:{pattern:/(^|\s)(?:A )?(?:BUKKIT|NOOB|NUMBAR|NUMBR|TROOF|YARN)(?=\s|,|$)/,lookbehind:!0,inside:{keyword:/A(?=\s)/}},label:{pattern:/((?:^|\s)(?:IM IN YR|IM OUTTA YR) )[a-zA-Z]\w*/,lookbehind:!0,alias:`string`},function:{pattern:/((?:^|\s)(?:HOW IZ I|I IZ|IZ) )[a-zA-Z]\w*/,lookbehind:!0},keyword:[{pattern:/(^|\s)(?:AN|FOUND YR|GIMMEH|GTFO|HAI|HAS A|HOW IZ I|I HAS A|I IZ|IF U SAY SO|IM IN YR|IM OUTTA YR|IS NOW(?: A)?|ITZ(?: A)?|IZ|KTHX|KTHXBYE|LIEK(?: A)?|MAEK|MEBBE|MKAY|NERFIN|NO WAI|O HAI IM|O RLY\?|OIC|OMG|OMGWTF|R|SMOOSH|SRS|TIL|UPPIN|VISIBLE|WILE|WTF\?|YA RLY|YR)(?=\s|,|$)/,lookbehind:!0},/'Z(?=\s|,|$)/],boolean:{pattern:/(^|\s)(?:FAIL|WIN)(?=\s|,|$)/,lookbehind:!0},variable:{pattern:/(^|\s)IT(?=\s|,|$)/,lookbehind:!0},operator:{pattern:/(^|\s)(?:NOT|BOTH SAEM|DIFFRINT|(?:ALL|ANY|BIGGR|BOTH|DIFF|EITHER|MOD|PRODUKT|QUOSHUNT|SMALLR|SUM|WON) OF)(?=\s|,|$)/,lookbehind:!0},punctuation:/\.{3}|…|,|!/}}Mn.displayName=`magma`,Mn.aliases=[];function Mn(e){e.languages.magma={output:{pattern:/^(>.*(?:\r(?:\n|(?!\n))|\n))(?!>)(?:.+|(?:\r(?:\n|(?!\n))|\n)(?!>).*)(?:(?:\r(?:\n|(?!\n))|\n)(?!>).*)*/m,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\//,greedy:!0},string:{pattern:/(^|[^\\"])"(?:[^\r\n\\"]|\\.)*"/,lookbehind:!0,greedy:!0},keyword:/\b(?:_|adj|and|assert|assert2|assert3|assigned|break|by|case|cat|catch|clear|cmpeq|cmpne|continue|declare|default|delete|diff|div|do|elif|else|end|eq|error|eval|exists|exit|for|forall|forward|fprintf|freeze|function|ge|gt|if|iload|import|in|intrinsic|is|join|le|load|local|lt|meet|mod|ne|not|notadj|notin|notsubset|or|print|printf|procedure|quit|random|read|readi|repeat|require|requirege|requirerange|restore|return|save|sdiff|select|subset|then|time|to|try|until|vprint|vprintf|vtime|when|where|while|xor)\b/,boolean:/\b(?:false|true)\b/,generator:{pattern:/\b[a-z_]\w*(?=\s*<)/i,alias:`class-name`},function:/\b[a-z_]\w*(?=\s*\()/i,number:{pattern:/(^|[^\w.]|\.\.)(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?(?:_[a-z]?)?(?=$|[^\w.]|\.\.)/,lookbehind:!0},operator:/->|[-+*/^~!|#=]|:=|\.\./,punctuation:/[()[\]{}<>,;.:]/}}Nn.displayName=`makefile`,Nn.aliases=[];function Nn(e){e.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:`builtin`},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:`symbol`,inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/}}Pn.displayName=`markdown`,Pn.aliases=[`md`];function Pn(e){e.register(B),(function(e){var t=`(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))`;function n(e){return e=e.replace(//g,function(){return t}),RegExp(`((?:^|[^\\\\])(?:\\\\{2})*)(?:`+e+`)`)}var r="(?:\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+",i=`\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|(?![\\s\\S]))`.replace(/__/g,function(){return r}),a=`\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)`;e.languages.markdown=e.languages.extend(`markup`,{}),e.languages.insertBefore(`markdown`,`prolog`,{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:[`yaml`,`language-yaml`],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:`punctuation`},table:{pattern:RegExp(`^`+i+a+`(?:`+i+`)*`,`m`),inside:{"table-data-rows":{pattern:RegExp(`^(`+i+a+`)(?:`+i+`)*$`),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp(`^(`+i+`)`+a+`$`),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp(`^`+i+`$`),inside:{"table-header":{pattern:RegExp(r),alias:`important`,inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:`keyword`},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:`important`,inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:`important`,inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:`punctuation`},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:`punctuation`},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:`url`},bold:{pattern:n(`\\b__(?:(?!_)|_(?:(?!_))+_)+__\\b|\\*\\*(?:(?!\\*)|\\*(?:(?!\\*))+\\*)+\\*\\*`),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(`\\b_(?:(?!_)|__(?:(?!_))+__)+_\\b|\\*(?:(?!\\*)|\\*\\*(?:(?!\\*))+\\*\\*)+\\*`),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(`(~~?)(?:(?!~))+\\2`),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:[`code`,`keyword`]},url:{pattern:n(`!?\\[(?:(?!\\]))+\\](?:\\([^\\s)]+(?:[\\t ]+"(?:\\\\.|[^"\\\\])*")?\\)|[ \\t]?\\[(?:(?!\\]))+\\])`),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),[`url`,`bold`,`italic`,`strike`].forEach(function(t){[`url`,`bold`,`italic`,`strike`,`code-snippet`].forEach(function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])})}),e.hooks.add(`after-tokenize`,function(e){if(e.language!==`markdown`&&e.language!==`md`)return;function t(e){if(!(!e||typeof e==`string`))for(var n=0,r=e.length;n|\\b(?:complex|numeric|pointer(?:\\s*\\([^()]*\\))?|real|string|(?:class|struct)\\s+\\w+|transmorphic)(?:\\s*)?`.replace(//g,`\\b(?:(?:col|row)?vector|matrix|scalar)\\b`);e.languages.mata={comment:{pattern:/\/\/.*|\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\//,greedy:!0},string:{pattern:/"[^"\r\n]*"|[‘`']".*?"[’`']/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|struct)\s+)\w+(?=\s*(?:\{|\bextends\b))/,lookbehind:!0},type:{pattern:RegExp(t),alias:`class-name`,inside:{punctuation:/[()]/,keyword:/\b(?:class|function|struct|void)\b/}},keyword:/\b(?:break|class|continue|do|else|end|extends|external|final|for|function|goto|if|pragma|private|protected|public|return|static|struct|unset|unused|version|virtual|while)\b/,constant:/\bNULL\b/,number:{pattern:/(^|[^\w.])(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|\d[a-f0-9]*(?:\.[a-f0-9]+)?x[+-]?\d+)i?(?![\w.])/i,lookbehind:!0},missing:{pattern:/(^|[^\w.])(?:\.[a-z]?)(?![\w.])/,lookbehind:!0,alias:`symbol`},function:/\b[a-z_]\w*(?=\s*\()/i,operator:/\.\.|\+\+|--|&&|\|\||:?(?:[!=<>]=|[+\-*/^<>&|:])|[!?=\\#’`']/,punctuation:/[()[\]{},;.]/}})(e)}In.displayName=`matlab`,In.aliases=[];function In(e){e.languages.matlab={comment:[/%\{[\s\S]*?\}%/,/%.+/],string:{pattern:/\B'(?:''|[^'\r\n])*'/,greedy:!0},number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[eE][+-]?\d+)?(?:[ij])?|\b[ij]\b/,keyword:/\b(?:NaN|break|case|catch|continue|else|elseif|end|for|function|if|inf|otherwise|parfor|pause|pi|return|switch|try|while)\b/,function:/\b(?!\d)\w+(?=\s*\()/,operator:/\.?[*^\/\\']|[+\-:@]|[<>=~]=?|&&?|\|\|?/,punctuation:/\.{3}|[.,;\[\](){}!]/}}Ln.displayName=`maxscript`,Ln.aliases=[];function Ln(e){(function(e){var t=/\b(?:about|and|animate|as|at|attributes|by|case|catch|collect|continue|coordsys|do|else|exit|fn|for|from|function|global|if|in|local|macroscript|mapped|max|not|of|off|on|or|parameters|persistent|plugin|rcmenu|return|rollout|set|struct|then|throw|to|tool|try|undo|utility|when|where|while|with)\b/i;e.languages.maxscript={comment:{pattern:/\/\*[\s\S]*?(?:\*\/|$)|--.*/,greedy:!0},string:{pattern:/(^|[^"\\@])(?:"(?:[^"\\]|\\[\s\S])*"|@"[^"]*")/,lookbehind:!0,greedy:!0},path:{pattern:/\$(?:[\w/\\.*?]|'[^']*')*/,greedy:!0,alias:`string`},"function-call":{pattern:RegExp(`((?:^|[;=<>+\\-*/^({\\[]|\\b(?:and|by|case|catch|collect|do|else|if|in|not|or|return|then|to|try|where|while|with)\\b)[ ]*)(?!`+t.source+`)[a-z_]\\w*\\b(?=[ ]*(?:`+(`(?!`+t.source+`)[a-z_]|\\d|-\\.?\\d|[({'"$@#?]`)+`))`,`im`),lookbehind:!0,greedy:!0,alias:`function`},"function-definition":{pattern:/(\b(?:fn|function)\s+)\w+\b/i,lookbehind:!0,alias:`function`},argument:{pattern:/\b[a-z_]\w*(?=:)/i,alias:`attr-name`},keyword:t,boolean:/\b(?:false|true)\b/,time:{pattern:/(^|[^\w.])(?:(?:(?:\d+(?:\.\d*)?|\.\d+)(?:[eEdD][+-]\d+|[LP])?[msft])+|\d+:\d+(?:\.\d*)?)(?![\w.:])/,lookbehind:!0,alias:`number`},number:[{pattern:/(^|[^\w.])(?:(?:\d+(?:\.\d*)?|\.\d+)(?:[eEdD][+-]\d+|[LP])?|0x[a-fA-F0-9]+)(?![\w.:])/,lookbehind:!0},/\b(?:e|pi)\b/],constant:/\b(?:dontcollect|ok|silentValue|undefined|unsupplied)\b/,color:{pattern:/\b(?:black|blue|brown|gray|green|orange|red|white|yellow)\b/i,alias:`constant`},operator:/[-+*/<>=!]=?|[&^?]|#(?!\()/,punctuation:/[()\[\]{}.:,;]|#(?=\()|\\$/m}})(e)}Rn.displayName=`mel`,Rn.aliases=[];function Rn(e){e.languages.mel={comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\//,greedy:!0},code:{pattern:/`(?:\\.|[^\\`])*`/,greedy:!0,alias:`italic`,inside:{delimiter:{pattern:/^`|`$/,alias:`punctuation`},statement:{pattern:/[\s\S]+/,inside:null}}},string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},variable:/\$\w+/,number:/\b0x[\da-fA-F]+\b|\b\d+(?:\.\d*)?|\B\.\d+/,flag:{pattern:/-[^\d\W]\w*/,alias:`operator`},keyword:/\b(?:break|case|continue|default|do|else|float|for|global|if|in|int|matrix|proc|return|string|switch|vector|while)\b/,function:{pattern:/((?:^|[{;])[ \t]*)[a-z_]\w*\b(?!\s*(?:\.(?!\.)|[[{=]))|\b[a-z_]\w*(?=[ \t]*\()/im,lookbehind:!0,greedy:!0},"tensor-punctuation":{pattern:/<<|>>/,alias:`punctuation`},operator:/\+[+=]?|-[-=]?|&&|\|\||[<>]=?|[*\/!=]=?|[%^]/,punctuation:/[.,:;?\[\](){}]/},e.languages.mel.code.inside.statement.inside=e.languages.mel}zn.displayName=`mermaid`,zn.aliases=[];function zn(e){e.languages.mermaid={comment:{pattern:/%%.*/,greedy:!0},style:{pattern:/^([ \t]*(?:classDef|linkStyle|style)[ \t]+[\w$-]+[ \t]+)\w.*[^\s;]/m,lookbehind:!0,inside:{property:/\b\w[\w-]*(?=[ \t]*:)/,operator:/:/,punctuation:/,/}},"inter-arrow-label":{pattern:/([^<>ox.=-])(?:-[-.]|==)(?![<>ox.=-])[ \t]*(?:"[^"\r\n]*"|[^\s".=-](?:[^\r\n.=-]*[^\s.=-])?)[ \t]*(?:\.+->?|--+[->]|==+[=>])(?![<>ox.=-])/,lookbehind:!0,greedy:!0,inside:{arrow:{pattern:/(?:\.+->?|--+[->]|==+[=>])$/,alias:`operator`},label:{pattern:/^([\s\S]{2}[ \t]*)\S(?:[\s\S]*\S)?/,lookbehind:!0,alias:`property`},"arrow-head":{pattern:/^\S+/,alias:[`arrow`,`operator`]}}},arrow:[{pattern:/(^|[^{}|o.-])[|}][|o](?:--|\.\.)[|o][|{](?![{}|o.-])/,lookbehind:!0,alias:`operator`},{pattern:/(^|[^<>ox.=-])(?:[ox]?|(?:==+|--+|-\.*-)[>ox]|===+|---+|-\.+-)(?![<>ox.=-])/,lookbehind:!0,alias:`operator`},{pattern:/(^|[^<>()x-])(?:--?(?:>>|[x>)])(?![<>()x])|(?:<<|[x<(])--?(?!-))/,lookbehind:!0,alias:`operator`},{pattern:/(^|[^<>|*o.-])(?:[*o]--|--[*o]|<\|?(?:--|\.\.)|(?:--|\.\.)\|?>|--|\.\.)(?![<>|*o.-])/,lookbehind:!0,alias:`operator`}],label:{pattern:/(^|[^|<])\|(?:[^\r\n"|]|"[^"\r\n]*")+\|/,lookbehind:!0,greedy:!0,alias:`property`},text:{pattern:/(?:[(\[{]+|\b>)(?:[^\r\n"()\[\]{}]|"[^"\r\n]*")+(?:[)\]}]+|>)/,alias:`string`},string:{pattern:/"[^"\r\n]*"/,greedy:!0},annotation:{pattern:/<<(?:abstract|choice|enumeration|fork|interface|join|service)>>|\[\[(?:choice|fork|join)\]\]/i,alias:`important`},keyword:[{pattern:/(^[ \t]*)(?:action|callback|class|classDef|classDiagram|click|direction|erDiagram|flowchart|gantt|gitGraph|graph|journey|link|linkStyle|pie|requirementDiagram|sequenceDiagram|stateDiagram|stateDiagram-v2|style|subgraph)(?![\w$-])/m,lookbehind:!0,greedy:!0},{pattern:/(^[ \t]*)(?:activate|alt|and|as|autonumber|deactivate|else|end(?:[ \t]+note)?|loop|opt|par|participant|rect|state|note[ \t]+(?:over|(?:left|right)[ \t]+of))(?![\w$-])/im,lookbehind:!0,greedy:!0}],entity:/#[a-z0-9]+;/,operator:{pattern:/(\w[ \t]*)&(?=[ \t]*\w)|:::|:/,lookbehind:!0},punctuation:/[(){};]/}}Bn.displayName=`metafont`,Bn.aliases=[];function Bn(e){e.languages.metafont={comment:{pattern:/%.*/,greedy:!0},string:{pattern:/"[^\r\n"]*"/,greedy:!0},number:/\d*\.?\d+/,boolean:/\b(?:false|true)\b/,punctuation:[/[,;()]/,{pattern:/(^|[^{}])(?:\{|\})(?![{}])/,lookbehind:!0},{pattern:/(^|[^[])\[(?!\[)/,lookbehind:!0},{pattern:/(^|[^\]])\](?!\])/,lookbehind:!0}],constant:[{pattern:/(^|[^!?])\?\?\?(?![!?])/,lookbehind:!0},{pattern:/(^|[^/*\\])(?:\\|\\\\)(?![/*\\])/,lookbehind:!0},/\b(?:_|blankpicture|bp|cc|cm|dd|ditto|down|eps|epsilon|fullcircle|halfcircle|identity|in|infinity|left|mm|nullpen|nullpicture|origin|pc|penrazor|penspeck|pensquare|penstroke|proof|pt|quartercircle|relax|right|smoke|unitpixel|unitsquare|up)\b/],quantity:{pattern:/\b(?:autorounding|blacker|boundarychar|charcode|chardp|chardx|chardy|charext|charht|charic|charwd|currentwindow|day|designsize|displaying|fillin|fontmaking|granularity|hppp|join_radius|month|o_correction|pausing|pen_(?:bot|lft|rt|top)|pixels_per_inch|proofing|showstopping|smoothing|time|tolerance|tracingcapsules|tracingchoices|tracingcommands|tracingedges|tracingequations|tracingmacros|tracingonline|tracingoutput|tracingpens|tracingrestores|tracingspecs|tracingstats|tracingtitles|turningcheck|vppp|warningcheck|xoffset|year|yoffset)\b/,alias:`keyword`},command:{pattern:/\b(?:addto|batchmode|charlist|cull|display|errhelp|errmessage|errorstopmode|everyjob|extensible|fontdimen|headerbyte|inner|interim|let|ligtable|message|newinternal|nonstopmode|numspecial|openwindow|outer|randomseed|save|scrollmode|shipout|show|showdependencies|showstats|showtoken|showvariable|special)\b/,alias:`builtin`},operator:[{pattern:/(^|[^>=<:|])(?:<|<=|=|=:|\|=:|\|=:>|=:\|>|=:\||\|=:\||\|=:\|>|\|=:\|>>|>|>=|:|:=|<>|::|\|\|:)(?![>=<:|])/,lookbehind:!0},{pattern:/(^|[^+-])(?:\+|\+\+|-{1,3}|\+-\+)(?![+-])/,lookbehind:!0},{pattern:/(^|[^/*\\])(?:\*|\*\*|\/)(?![/*\\])/,lookbehind:!0},{pattern:/(^|[^.])(?:\.{2,3})(?!\.)/,lookbehind:!0},{pattern:/(^|[^@#&$])&(?![@#&$])/,lookbehind:!0},/\b(?:and|not|or)\b/],macro:{pattern:/\b(?:abs|beginchar|bot|byte|capsule_def|ceiling|change_width|clear_pen_memory|clearit|clearpen|clearxy|counterclockwise|cullit|cutdraw|cutoff|decr|define_blacker_pixels|define_corrected_pixels|define_good_x_pixels|define_good_y_pixels|define_horizontal_corrected_pixels|define_pixels|define_whole_blacker_pixels|define_whole_pixels|define_whole_vertical_blacker_pixels|define_whole_vertical_pixels|dir|direction|directionpoint|div|dotprod|downto|draw|drawdot|endchar|erase|fill|filldraw|fix_units|flex|font_coding_scheme|font_extra_space|font_identifier|font_normal_shrink|font_normal_space|font_normal_stretch|font_quad|font_size|font_slant|font_x_height|gfcorners|gobble|gobbled|good\.(?:bot|lft|rt|top|x|y)|grayfont|hide|hround|imagerules|incr|interact|interpath|intersectionpoint|inverse|italcorr|killtext|labelfont|labels|lft|loggingall|lowres_fix|makegrid|makelabel(?:\.(?:bot|lft|rt|top)(?:\.nodot)?)?|max|min|mod|mode_def|mode_setup|nodisplays|notransforms|numtok|openit|penlabels|penpos|pickup|proofoffset|proofrule|proofrulethickness|range|reflectedabout|rotatedabout|rotatedaround|round|rt|savepen|screenchars|screenrule|screenstrokes|shipit|showit|slantfont|softjoin|solve|stop|superellipse|tensepath|thru|titlefont|top|tracingall|tracingnone|undraw|undrawdot|unfill|unfilldraw|upto|vround)\b/,alias:`function`},builtin:/\b(?:ASCII|angle|char|cosd|decimal|directiontime|floor|hex|intersectiontimes|jobname|known|length|makepath|makepen|mexp|mlog|normaldeviate|oct|odd|pencircle|penoffset|point|postcontrol|precontrol|reverse|rotated|sind|sqrt|str|subpath|substring|totalweight|turningnumber|uniformdeviate|unknown|xpart|xxpart|xypart|ypart|yxpart|yypart)\b/,keyword:/\b(?:also|at|atleast|begingroup|charexists|contour|controls|curl|cycle|def|delimiters|doublepath|dropping|dump|else|elseif|end|enddef|endfor|endgroup|endinput|exitif|exitunless|expandafter|fi|for|forever|forsuffixes|from|if|input|inwindow|keeping|kern|of|primarydef|quote|readstring|scaled|scantokens|secondarydef|shifted|skipto|slanted|step|tension|tertiarydef|to|transformed|until|vardef|withpen|withweight|xscaled|yscaled|zscaled)\b/,type:{pattern:/\b(?:boolean|expr|numeric|pair|path|pen|picture|primary|secondary|string|suffix|tertiary|text|transform)\b/,alias:`property`},variable:{pattern:/(^|[^@#&$])(?:@#|#@|#|@)(?![@#&$])|\b(?:aspect_ratio|currentpen|currentpicture|currenttransform|d|extra_beginchar|extra_endchar|extra_setup|h|localfont|mag|mode|screen_cols|screen_rows|w|whatever|x|y|z)\b/,lookbehind:!0}}}Vn.displayName=`mizar`,Vn.aliases=[];function Vn(e){e.languages.mizar={comment:/::.+/,keyword:/@proof\b|\b(?:according|aggregate|all|and|antonym|are|as|associativity|assume|asymmetry|attr|be|begin|being|by|canceled|case|cases|clusters?|coherence|commutativity|compatibility|connectedness|consider|consistency|constructors|contradiction|correctness|def|deffunc|define|definitions?|defpred|do|does|end|environ|equals|ex|exactly|existence|for|from|func|given|hence|hereby|holds|idempotence|identity|iff?|implies|involutiveness|irreflexivity|is|it|let|means|mode|non|not|notations?|now|of|or|otherwise|over|per|pred|prefix|projectivity|proof|provided|qua|reconsider|redefine|reduce|reducibility|reflexivity|registrations?|requirements|reserve|sch|schemes?|section|selector|set|sethood|st|struct|such|suppose|symmetry|synonym|take|that|the|then|theorems?|thesis|thus|to|transitivity|uniqueness|vocabular(?:ies|y)|when|where|with|wrt)\b/,parameter:{pattern:/\$(?:10|\d)/,alias:`variable`},variable:/\b\w+(?=:)/,number:/(?:\b|-)\d+\b/,operator:/\.\.\.|->|&|\.?=/,punctuation:/\(#|#\)|[,:;\[\](){}]/}}Hn.displayName=`mongodb`,Hn.aliases=[];function Hn(e){e.register(C),(function(e){var t=`$eq.$gt.$gte.$in.$lt.$lte.$ne.$nin.$and.$not.$nor.$or.$exists.$type.$expr.$jsonSchema.$mod.$regex.$text.$where.$geoIntersects.$geoWithin.$near.$nearSphere.$all.$elemMatch.$size.$bitsAllClear.$bitsAllSet.$bitsAnyClear.$bitsAnySet.$comment.$elemMatch.$meta.$slice.$currentDate.$inc.$min.$max.$mul.$rename.$set.$setOnInsert.$unset.$addToSet.$pop.$pull.$push.$pullAll.$each.$position.$slice.$sort.$bit.$addFields.$bucket.$bucketAuto.$collStats.$count.$currentOp.$facet.$geoNear.$graphLookup.$group.$indexStats.$limit.$listLocalSessions.$listSessions.$lookup.$match.$merge.$out.$planCacheStats.$project.$redact.$replaceRoot.$replaceWith.$sample.$set.$skip.$sort.$sortByCount.$unionWith.$unset.$unwind.$setWindowFields.$abs.$accumulator.$acos.$acosh.$add.$addToSet.$allElementsTrue.$and.$anyElementTrue.$arrayElemAt.$arrayToObject.$asin.$asinh.$atan.$atan2.$atanh.$avg.$binarySize.$bsonSize.$ceil.$cmp.$concat.$concatArrays.$cond.$convert.$cos.$dateFromParts.$dateToParts.$dateFromString.$dateToString.$dayOfMonth.$dayOfWeek.$dayOfYear.$degreesToRadians.$divide.$eq.$exp.$filter.$first.$floor.$function.$gt.$gte.$hour.$ifNull.$in.$indexOfArray.$indexOfBytes.$indexOfCP.$isArray.$isNumber.$isoDayOfWeek.$isoWeek.$isoWeekYear.$last.$last.$let.$literal.$ln.$log.$log10.$lt.$lte.$ltrim.$map.$max.$mergeObjects.$meta.$min.$millisecond.$minute.$mod.$month.$multiply.$ne.$not.$objectToArray.$or.$pow.$push.$radiansToDegrees.$range.$reduce.$regexFind.$regexFindAll.$regexMatch.$replaceOne.$replaceAll.$reverseArray.$round.$rtrim.$second.$setDifference.$setEquals.$setIntersection.$setIsSubset.$setUnion.$size.$sin.$slice.$split.$sqrt.$stdDevPop.$stdDevSamp.$strcasecmp.$strLenBytes.$strLenCP.$substr.$substrBytes.$substrCP.$subtract.$sum.$switch.$tan.$toBool.$toDate.$toDecimal.$toDouble.$toInt.$toLong.$toObjectId.$toString.$toLower.$toUpper.$trim.$trunc.$type.$week.$year.$zip.$count.$dateAdd.$dateDiff.$dateSubtract.$dateTrunc.$getField.$rand.$sampleRate.$setField.$unsetField.$comment.$explain.$hint.$max.$maxTimeMS.$min.$orderby.$query.$returnKey.$showDiskLoc.$natural`.split(`.`),n=[`ObjectId`,`Code`,`BinData`,`DBRef`,`Timestamp`,`NumberLong`,`NumberDecimal`,`MaxKey`,`MinKey`,`RegExp`,`ISODate`,`UUID`];t=t.map(function(e){return e.replace(`$`,`\\$`)});var r=`(?:`+t.join(`|`)+`)\\b`;e.languages.mongodb=e.languages.extend(`javascript`,{}),e.languages.insertBefore(`mongodb`,`string`,{property:{pattern:/(?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)(?=\s*:)/,greedy:!0,inside:{keyword:RegExp(`^(['"])?`+r+`(?:\\1)?$`)}}}),e.languages.mongodb.string.inside={url:{pattern:/https?:\/\/[-\w@:%.+~#=]{1,256}\.[a-z0-9()]{1,6}\b[-\w()@:%+.~#?&/=]*/i,greedy:!0},entity:{pattern:/\b(?:(?:[01]?\d\d?|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d\d?|2[0-4]\d|25[0-5])\b/,greedy:!0}},e.languages.insertBefore(`mongodb`,`constant`,{builtin:{pattern:RegExp(`\\b(?:`+n.join(`|`)+`)\\b`),alias:`keyword`}})})(e)}Un.displayName=`monkey`,Un.aliases=[];function Un(e){e.languages.monkey={comment:{pattern:/^#Rem\s[\s\S]*?^#End|'.+/im,greedy:!0},string:{pattern:/"[^"\r\n]*"/,greedy:!0},preprocessor:{pattern:/(^[ \t]*)#.+/m,lookbehind:!0,greedy:!0,alias:`property`},function:/\b\w+(?=\()/,"type-char":{pattern:/\b[?%#$]/,alias:`class-name`},number:{pattern:/((?:\.\.)?)(?:(?:\b|\B-\.?|\B\.)\d+(?:(?!\.\.)\.\d*)?|\$[\da-f]+)/i,lookbehind:!0},keyword:/\b(?:Abstract|Array|Bool|Case|Catch|Class|Const|Continue|Default|Eachin|Else|ElseIf|End|EndIf|Exit|Extends|Extern|False|Field|Final|Float|For|Forever|Function|Global|If|Implements|Import|Inline|Int|Interface|Local|Method|Module|New|Next|Null|Object|Private|Property|Public|Repeat|Return|Select|Self|Step|Strict|String|Super|Then|Throw|To|True|Try|Until|Void|Wend|While)\b/i,operator:/\.\.|<[=>]?|>=?|:?=|(?:[+\-*\/&~|]|\b(?:Mod|Shl|Shr)\b)=?|\b(?:And|Not|Or)\b/i,punctuation:/[.,:;()\[\]]/}}Wn.displayName=`moonscript`,Wn.aliases=[`moon`];function Wn(e){e.languages.moonscript={comment:/--.*/,string:[{pattern:/'[^']*'|\[(=*)\[[\s\S]*?\]\1\]/,greedy:!0},{pattern:/"[^"]*"/,greedy:!0,inside:{interpolation:{pattern:/#\{[^{}]*\}/,inside:{moonscript:{pattern:/(^#\{)[\s\S]+(?=\})/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/#\{|\}/,alias:`punctuation`}}}}}],"class-name":[{pattern:/(\b(?:class|extends)[ \t]+)\w+/,lookbehind:!0},/\b[A-Z]\w*/],keyword:/\b(?:class|continue|do|else|elseif|export|extends|for|from|if|import|in|local|nil|return|self|super|switch|then|unless|using|when|while|with)\b/,variable:/@@?\w*/,property:{pattern:/\b(?!\d)\w+(?=:)|(:)(?!\d)\w+/,lookbehind:!0},function:{pattern:/\b(?:_G|_VERSION|assert|collectgarbage|coroutine\.(?:create|resume|running|status|wrap|yield)|debug\.(?:debug|getfenv|gethook|getinfo|getlocal|getmetatable|getregistry|getupvalue|setfenv|sethook|setlocal|setmetatable|setupvalue|traceback)|dofile|error|getfenv|getmetatable|io\.(?:close|flush|input|lines|open|output|popen|read|stderr|stdin|stdout|tmpfile|type|write)|ipairs|load|loadfile|loadstring|math\.(?:abs|acos|asin|atan|atan2|ceil|cos|cosh|deg|exp|floor|fmod|frexp|ldexp|log|log10|max|min|modf|pi|pow|rad|random|randomseed|sin|sinh|sqrt|tan|tanh)|module|next|os\.(?:clock|date|difftime|execute|exit|getenv|remove|rename|setlocale|time|tmpname)|package\.(?:cpath|loaded|loadlib|path|preload|seeall)|pairs|pcall|print|rawequal|rawget|rawset|require|select|setfenv|setmetatable|string\.(?:byte|char|dump|find|format|gmatch|gsub|len|lower|match|rep|reverse|sub|upper)|table\.(?:concat|insert|maxn|remove|sort)|tonumber|tostring|type|unpack|xpcall)\b/,inside:{punctuation:/\./}},boolean:/\b(?:false|true)\b/,number:/(?:\B\.\d+|\b\d+\.\d+|\b\d+(?=[eE]))(?:[eE][-+]?\d+)?\b|\b(?:0x[a-fA-F\d]+|\d+)(?:U?LL)?\b/,operator:/\.{3}|[-=]>|~=|(?:[-+*/%<>!=]|\.\.)=?|[:#^]|\b(?:and|or)\b=?|\b(?:not)\b/,punctuation:/[.,()[\]{}\\]/},e.languages.moonscript.string[1].inside.interpolation.inside.moonscript.inside=e.languages.moonscript,e.languages.moon=e.languages.moonscript}Gn.displayName=`n1ql`,Gn.aliases=[];function Gn(e){e.languages.n1ql={comment:{pattern:/\/\*[\s\S]*?(?:$|\*\/)|--.*/,greedy:!0},string:{pattern:/(["'])(?:\\[\s\S]|(?!\1)[^\\]|\1\1)*\1/,greedy:!0},identifier:{pattern:/`(?:\\[\s\S]|[^\\`]|``)*`/,greedy:!0},parameter:/\$[\w.]+/,keyword:/\b(?:ADVISE|ALL|ALTER|ANALYZE|AS|ASC|AT|BEGIN|BINARY|BOOLEAN|BREAK|BUCKET|BUILD|BY|CALL|CAST|CLUSTER|COLLATE|COLLECTION|COMMIT|COMMITTED|CONNECT|CONTINUE|CORRELATE|CORRELATED|COVER|CREATE|CURRENT|DATABASE|DATASET|DATASTORE|DECLARE|DECREMENT|DELETE|DERIVED|DESC|DESCRIBE|DISTINCT|DO|DROP|EACH|ELEMENT|EXCEPT|EXCLUDE|EXECUTE|EXPLAIN|FETCH|FILTER|FLATTEN|FLUSH|FOLLOWING|FOR|FORCE|FROM|FTS|FUNCTION|GOLANG|GRANT|GROUP|GROUPS|GSI|HASH|HAVING|IF|IGNORE|ILIKE|INCLUDE|INCREMENT|INDEX|INFER|INLINE|INNER|INSERT|INTERSECT|INTO|IS|ISOLATION|JAVASCRIPT|JOIN|KEY|KEYS|KEYSPACE|KNOWN|LANGUAGE|LAST|LEFT|LET|LETTING|LEVEL|LIMIT|LSM|MAP|MAPPING|MATCHED|MATERIALIZED|MERGE|MINUS|MISSING|NAMESPACE|NEST|NL|NO|NTH_VALUE|NULL|NULLS|NUMBER|OBJECT|OFFSET|ON|OPTION|OPTIONS|ORDER|OTHERS|OUTER|OVER|PARSE|PARTITION|PASSWORD|PATH|POOL|PRECEDING|PREPARE|PRIMARY|PRIVATE|PRIVILEGE|PROBE|PROCEDURE|PUBLIC|RANGE|RAW|REALM|REDUCE|RENAME|RESPECT|RETURN|RETURNING|REVOKE|RIGHT|ROLE|ROLLBACK|ROW|ROWS|SATISFIES|SAVEPOINT|SCHEMA|SCOPE|SELECT|SELF|SEMI|SET|SHOW|SOME|START|STATISTICS|STRING|SYSTEM|TIES|TO|TRAN|TRANSACTION|TRIGGER|TRUNCATE|UNBOUNDED|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNSET|UPDATE|UPSERT|USE|USER|USING|VALIDATE|VALUE|VALUES|VIA|VIEW|WHERE|WHILE|WINDOW|WITH|WORK|XOR)\b/i,function:/\b[a-z_]\w*(?=\s*\()/i,boolean:/\b(?:FALSE|TRUE)\b/i,number:/(?:\b\d+\.|\B\.)\d+e[+\-]?\d+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/%]|!=|==?|\|\||<[>=]?|>=?|\b(?:AND|ANY|ARRAY|BETWEEN|CASE|ELSE|END|EVERY|EXISTS|FIRST|IN|LIKE|NOT|OR|THEN|VALUED|WHEN|WITHIN)\b/i,punctuation:/[;[\](),.{}:]/}}Kn.displayName=`n4js`,Kn.aliases=[`n4jsd`];function Kn(e){e.register(C),e.languages.n4js=e.languages.extend(`javascript`,{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),e.languages.insertBefore(`n4js`,`constant`,{annotation:{pattern:/@+\w+/,alias:`operator`}}),e.languages.n4jsd=e.languages.n4js}qn.displayName=`nand2tetris-hdl`,qn.aliases=[];function qn(e){e.languages[`nand2tetris-hdl`]={comment:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,keyword:/\b(?:BUILTIN|CHIP|CLOCKED|IN|OUT|PARTS)\b/,boolean:/\b(?:false|true)\b/,function:/\b[A-Za-z][A-Za-z0-9]*(?=\()/,number:/\b\d+\b/,operator:/=|\.\./,punctuation:/[{}[\];(),:]/}}Jn.displayName=`naniscript`,Jn.aliases=[`nani`];function Jn(e){(function(e){var t=/\{[^\r\n\[\]{}]*\}/,n={"quoted-string":{pattern:/"(?:[^"\\]|\\.)*"/,alias:`operator`},"command-param-id":{pattern:/(\s)\w+:/,lookbehind:!0,alias:`property`},"command-param-value":[{pattern:t,alias:`selector`},{pattern:/([\t ])\S+/,lookbehind:!0,greedy:!0,alias:`operator`},{pattern:/\S(?:.*\S)?/,alias:`operator`}]};e.languages.naniscript={comment:{pattern:/^([\t ]*);.*/m,lookbehind:!0},define:{pattern:/^>.+/m,alias:`tag`,inside:{value:{pattern:/(^>\w+[\t ]+)(?!\s)[^{}\r\n]+/,lookbehind:!0,alias:`operator`},key:{pattern:/(^>)\w+/,lookbehind:!0}}},label:{pattern:/^([\t ]*)#[\t ]*\w+[\t ]*$/m,lookbehind:!0,alias:`regex`},command:{pattern:/^([\t ]*)@\w+(?=[\t ]|$).*/m,lookbehind:!0,alias:`function`,inside:{"command-name":/^@\w+/,expression:{pattern:t,greedy:!0,alias:`selector`},"command-params":{pattern:/\s*\S[\s\S]*/,inside:n}}},"generic-text":{pattern:/(^[ \t]*)[^#@>;\s].*/m,lookbehind:!0,alias:`punctuation`,inside:{"escaped-char":/\\[{}\[\]"]/,expression:{pattern:t,greedy:!0,alias:`selector`},"inline-command":{pattern:/\[[\t ]*\w[^\r\n\[\]]*\]/,greedy:!0,alias:`function`,inside:{"command-params":{pattern:/(^\[[\t ]*\w+\b)[\s\S]+(?=\]$)/,lookbehind:!0,inside:n},"command-param-name":{pattern:/^(\[[\t ]*)\w+/,lookbehind:!0,alias:`name`},"start-stop-char":/[\[\]]/}}}}},e.languages.nani=e.languages.naniscript,e.hooks.add(`after-tokenize`,function(e){e.tokens.forEach(function(e){if(typeof e!=`string`&&e.type===`generic-text`){var t=i(e);r(t)||(e.type=`bad-line`,e.content=t)}})});function r(e){for(var t=`[]{}`,n=[],r=0;r=&|$!]/}}Xn.displayName=`neon`,Xn.aliases=[];function Xn(e){e.languages.neon={comment:{pattern:/#.*/,greedy:!0},datetime:{pattern:/(^|[[{(=:,\s])\d\d\d\d-\d\d?-\d\d?(?:(?:[Tt]| +)\d\d?:\d\d:\d\d(?:\.\d*)? *(?:Z|[-+]\d\d?(?::?\d\d)?)?)?(?=$|[\]}),\s])/,lookbehind:!0,alias:`number`},key:{pattern:/(^|[[{(,\s])[^,:=[\]{}()'"\s]+(?=\s*:(?:$|[\]}),\s])|\s*=)/,lookbehind:!0,alias:`property`},number:{pattern:/(^|[[{(=:,\s])[+-]?(?:0x[\da-fA-F]+|0o[0-7]+|0b[01]+|(?:\d+(?:\.\d*)?|\.?\d+)(?:[eE][+-]?\d+)?)(?=$|[\]}),:=\s])/,lookbehind:!0},boolean:{pattern:/(^|[[{(=:,\s])(?:false|no|true|yes)(?=$|[\]}),:=\s])/i,lookbehind:!0},null:{pattern:/(^|[[{(=:,\s])(?:null)(?=$|[\]}),:=\s])/i,lookbehind:!0,alias:`keyword`},string:{pattern:/(^|[[{(=:,\s])(?:('''|""")\r?\n(?:(?:[^\r\n]|\r?\n(?![\t ]*\2))*\r?\n)?[\t ]*\2|'[^'\r\n]*'|"(?:\\.|[^\\"\r\n])*")/,lookbehind:!0,greedy:!0},literal:{pattern:/(^|[[{(=:,\s])(?:[^#"',:=[\]{}()\s`-]|[:-][^"',=[\]{}()\s])(?:[^,:=\]})(\s]|:(?![\s,\]})]|$)|[ \t]+[^#,:=\]})(\s])*/,lookbehind:!0,alias:`string`},punctuation:/[,:=[\]{}()-]/}}Zn.displayName=`nevod`,Zn.aliases=[];function Zn(e){e.languages.nevod={comment:/\/\/.*|(?:\/\*[\s\S]*?(?:\*\/|$))/,string:{pattern:/(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))!?\*?/,greedy:!0,inside:{"string-attrs":/!$|!\*$|\*$/}},namespace:{pattern:/(@namespace\s+)[a-zA-Z0-9\-.]+(?=\s*\{)/,lookbehind:!0},pattern:{pattern:/(@pattern\s+)?#?[a-zA-Z0-9\-.]+(?:\s*\(\s*(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:~\s*)?[a-zA-Z0-9\-.]*)*\))?(?=\s*=)/,lookbehind:!0,inside:{"pattern-name":{pattern:/^#?[a-zA-Z0-9\-.]+/,alias:`class-name`},fields:{pattern:/\(.*\)/,inside:{"field-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:`variable`},punctuation:/[,()]/,operator:{pattern:/~/,alias:`field-hidden-mark`}}}}},search:{pattern:/(@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?(?=\s*;)/,alias:`function`,lookbehind:!0},keyword:/@(?:having|inside|namespace|outside|pattern|require|search|where)\b/,"standard-pattern":{pattern:/\b(?:Alpha|AlphaNum|Any|Blank|End|LineBreak|Num|NumAlpha|Punct|Space|Start|Symbol|Word|WordBreak)\b(?:\([a-zA-Z0-9\-.,\s+]*\))?/,inside:{"standard-pattern-name":{pattern:/^[a-zA-Z0-9\-.]+/,alias:`builtin`},quantifier:{pattern:/\b\d+(?:\s*\+|\s*-\s*\d+)?(?!\w)/,alias:`number`},"standard-pattern-attr":{pattern:/[a-zA-Z0-9\-.]+/,alias:`builtin`},punctuation:/[,()]/}},quantifier:{pattern:/\b\d+(?:\s*\+|\s*-\s*\d+)?(?!\w)/,alias:`number`},operator:[{pattern:/=/,alias:`pattern-def`},{pattern:/&/,alias:`conjunction`},{pattern:/~/,alias:`exception`},{pattern:/\?/,alias:`optionality`},{pattern:/[[\]]/,alias:`repetition`},{pattern:/[{}]/,alias:`variation`},{pattern:/[+_]/,alias:`sequence`},{pattern:/\.{2,3}/,alias:`span`}],"field-capture":[{pattern:/([a-zA-Z0-9\-.]+\s*\()\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+(?:\s*,\s*[a-zA-Z0-9\-.]+\s*:\s*[a-zA-Z0-9\-.]+)*(?=\s*\))/,lookbehind:!0,inside:{"field-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:`variable`},colon:/:/}},{pattern:/[a-zA-Z0-9\-.]+\s*:/,inside:{"field-name":{pattern:/[a-zA-Z0-9\-.]+/,alias:`variable`},colon:/:/}}],punctuation:/[:;,()]/,name:/[a-zA-Z0-9\-.]+/}}Qn.displayName=`nginx`,Qn.aliases=[];function Qn(e){(function(e){var t=/\$(?:\w[a-z\d]*(?:_[^\x00-\x1F\s"'\\()$]*)?|\{[^}\s"'\\]+\})/i;e.languages.nginx={comment:{pattern:/(^|[\s{};])#.*/,lookbehind:!0,greedy:!0},directive:{pattern:/(^|\s)\w(?:[^;{}"'\\\s]|\\.|"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|\s+(?:#.*(?!.)|(?![#\s])))*?(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:{string:{pattern:/((?:^|[^\\])(?:\\\\)*)(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/,lookbehind:!0,greedy:!0,inside:{escape:{pattern:/\\["'\\nrt]/,alias:`entity`},variable:t}},comment:{pattern:/(\s)#.*/,lookbehind:!0,greedy:!0},keyword:{pattern:/^\S+/,greedy:!0},boolean:{pattern:/(\s)(?:off|on)(?!\S)/,lookbehind:!0},number:{pattern:/(\s)\d+[a-z]*(?!\S)/i,lookbehind:!0},variable:t}},punctuation:/[{};]/}})(e)}$n.displayName=`nim`,$n.aliases=[];function $n(e){e.languages.nim={comment:{pattern:/#.*/,greedy:!0},string:{pattern:/(?:\b(?!\d)(?:\w|\\x[89a-fA-F][0-9a-fA-F])+)?(?:"""[\s\S]*?"""(?!")|"(?:\\[\s\S]|""|[^"\\])*")/,greedy:!0},char:{pattern:/'(?:\\(?:\d+|x[\da-fA-F]{0,2}|.)|[^'])'/,greedy:!0},function:{pattern:/(?:(?!\d)(?:\w|\\x[89a-fA-F][0-9a-fA-F])+|`[^`\r\n]+`)\*?(?:\[[^\]]+\])?(?=\s*\()/,greedy:!0,inside:{operator:/\*$/}},identifier:{pattern:/`[^`\r\n]+`/,greedy:!0,inside:{punctuation:/`/}},number:/\b(?:0[xXoObB][\da-fA-F_]+|\d[\d_]*(?:(?!\.\.)\.[\d_]*)?(?:[eE][+-]?\d[\d_]*)?)(?:'?[iuf]\d*)?/,keyword:/\b(?:addr|as|asm|atomic|bind|block|break|case|cast|concept|const|continue|converter|defer|discard|distinct|do|elif|else|end|enum|except|export|finally|for|from|func|generic|if|import|include|interface|iterator|let|macro|method|mixin|nil|object|out|proc|ptr|raise|ref|return|static|template|try|tuple|type|using|var|when|while|with|without|yield)\b/,operator:{pattern:/(^|[({\[](?=\.\.)|(?![({\[]\.).)(?:(?:[=+\-*\/<>@$~&%|!?^:\\]|\.\.|\.(?![)}\]]))+|\b(?:and|div|in|is|isnot|mod|not|notin|of|or|shl|shr|xor)\b)/m,lookbehind:!0},punctuation:/[({\[]\.|\.[)}\]]|[`(){}\[\],:]/}}er.displayName=`nix`,er.aliases=[];function er(e){e.languages.nix={comment:{pattern:/\/\*[\s\S]*?\*\/|#.*/,greedy:!0},string:{pattern:/"(?:[^"\\]|\\[\s\S])*"|''(?:(?!'')[\s\S]|''(?:'|\\|\$\{))*''/,greedy:!0,inside:{interpolation:{pattern:/(^|(?:^|(?!'').)[^\\])\$\{(?:[^{}]|\{[^}]*\})*\}/,lookbehind:!0,inside:null}}},url:[/\b(?:[a-z]{3,7}:\/\/)[\w\-+%~\/.:#=?&]+/,{pattern:/([^\/])(?:[\w\-+%~.:#=?&]*(?!\/\/)[\w\-+%~\/.:#=?&])?(?!\/\/)\/[\w\-+%~\/.:#=?&]*/,lookbehind:!0}],antiquotation:{pattern:/\$(?=\{)/,alias:`important`},number:/\b\d+\b/,keyword:/\b(?:assert|builtins|else|if|in|inherit|let|null|or|then|with)\b/,function:/\b(?:abort|add|all|any|attrNames|attrValues|baseNameOf|compareVersions|concatLists|currentSystem|deepSeq|derivation|dirOf|div|elem(?:At)?|fetch(?:Tarball|url)|filter(?:Source)?|fromJSON|genList|getAttr|getEnv|hasAttr|hashString|head|import|intersectAttrs|is(?:Attrs|Bool|Function|Int|List|Null|String)|length|lessThan|listToAttrs|map|mul|parseDrvName|pathExists|read(?:Dir|File)|removeAttrs|replaceStrings|seq|sort|stringLength|sub(?:string)?|tail|throw|to(?:File|JSON|Path|String|XML)|trace|typeOf)\b|\bfoldl'\B/,boolean:/\b(?:false|true)\b/,operator:/[=!<>]=?|\+\+?|\|\||&&|\/\/|->?|[?@]/,punctuation:/[{}()[\].,:;]/},e.languages.nix.string.inside.interpolation.inside=e.languages.nix}tr.displayName=`nsis`,tr.aliases=[];function tr(e){e.languages.nsis={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|[#;].*)/,lookbehind:!0,greedy:!0},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:{pattern:/(^[\t ]*)(?:Abort|Add(?:BrandingImage|Size)|AdvSplash|Allow(?:RootDirInstall|SkipFiles)|AutoCloseWindow|BG(?:Font|Gradient|Image)|Banner|BrandingText|BringToFront|CRCCheck|Call(?:InstDLL)?|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|Create(?:Directory|Font|ShortCut)|Delete(?:INISec|INIStr|RegKey|RegValue)?|Detail(?:Print|sButtonText)|Dialer|Dir(?:Text|Var|Verify)|EnableWindow|Enum(?:RegKey|RegValue)|Exch|Exec(?:Shell(?:Wait)?|Wait)?|ExpandEnvStrings|File(?:BufSize|Close|ErrorText|Open|Read|ReadByte|ReadUTF16LE|ReadWord|Seek|Write|WriteByte|WriteUTF16LE|WriteWord)?|Find(?:Close|First|Next|Window)|FlushINI|Get(?:CurInstType|CurrentAddress|DLLVersion(?:Local)?|DlgItem|ErrorLevel|FileTime(?:Local)?|FullPathName|Function(?:Address|End)?|InstDirError|KnownFolderPath|LabelAddress|TempFileName|WinVer)|Goto|HideWindow|Icon|If(?:Abort|Errors|FileExists|RebootFlag|RtlLanguage|ShellVarContextAll|Silent)|InitPluginsDir|InstProgressFlags|Inst(?:Type(?:GetText|SetText)?)|Install(?:ButtonText|Colors|Dir(?:RegKey)?)|Int(?:64|Ptr)?CmpU?|Int(?:64)?Fmt|Int(?:Ptr)?Op|IsWindow|Lang(?:DLL|String)|License(?:BkColor|Data|ForceSelection|LangString|Text)|LoadLanguageFile|LockWindow|Log(?:Set|Text)|Manifest(?:DPIAware|SupportedOS)|Math|MessageBox|MiscButtonText|NSISdl|Name|Nop|OutFile|PE(?:DllCharacteristics|SubsysVer)|Page(?:Callbacks)?|Pop|Push|Quit|RMDir|Read(?:EnvStr|INIStr|RegDWORD|RegStr)|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|SearchPath|Section(?:End|GetFlags|GetInstTypes|GetSize|GetText|Group|In|SetFlags|SetInstTypes|SetSize|SetText)?|SendMessage|Set(?:AutoClose|BrandingImage|Compress|Compressor(?:DictSize)?|CtlColors|CurInstType|DatablockOptimize|DateSave|Details(?:Print|View)|ErrorLevel|Errors|FileAttributes|Font|OutPath|Overwrite|PluginUnload|RebootFlag|RegView|ShellVarContext|Silent)|Show(?:InstDetails|UninstDetails|Window)|Silent(?:Install|UnInstall)|Sleep|SpaceTexts|Splash|StartMenu|Str(?:CmpS?|Cpy|Len)|SubCaption|System|Target|UnRegDLL|Unicode|UninstPage|Uninstall(?:ButtonText|Caption|Icon|SubCaption|Text)|UserInfo|VI(?:AddVersionKey|FileVersion|ProductVersion)|VPatch|Var|WindowIcon|Write(?:INIStr|Reg(?:Bin|DWORD|ExpandStr|MultiStr|None|Str)|Uninstaller)|XPStyle|ns(?:Dialogs|Exec))\b/m,lookbehind:!0},property:/\b(?:ARCHIVE|FILE_(?:ATTRIBUTE_ARCHIVE|ATTRIBUTE_NORMAL|ATTRIBUTE_OFFLINE|ATTRIBUTE_READONLY|ATTRIBUTE_SYSTEM|ATTRIBUTE_TEMPORARY)|HK(?:(?:CR|CU|LM)(?:32|64)?|DD|PD|U)|HKEY_(?:CLASSES_ROOT|CURRENT_CONFIG|CURRENT_USER|DYN_DATA|LOCAL_MACHINE|PERFORMANCE_DATA|USERS)|ID(?:ABORT|CANCEL|IGNORE|NO|OK|RETRY|YES)|MB_(?:ABORTRETRYIGNORE|DEFBUTTON1|DEFBUTTON2|DEFBUTTON3|DEFBUTTON4|ICONEXCLAMATION|ICONINFORMATION|ICONQUESTION|ICONSTOP|OK|OKCANCEL|RETRYCANCEL|RIGHT|RTLREADING|SETFOREGROUND|TOPMOST|USERICON|YESNO)|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY|admin|all|auto|both|colored|false|force|hide|highest|lastused|leave|listonly|none|normal|notset|off|on|open|print|show|silent|silentlog|smooth|textonly|true|user)\b/,constant:/\$\{[!\w\.:\^-]+\}|\$\([!\w\.:\^-]+\)/,variable:/\$\w[\w\.]*/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|\+\+?|<=?|>=?|==?=?|&&?|\|\|?|[?*\/~^%]/,punctuation:/[{}[\];(),.:]/,important:{pattern:/(^[\t ]*)!(?:addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|pragma|searchparse|searchreplace|system|tempfile|undef|verbose|warning)\b/im,lookbehind:!0}}}nr.displayName=`objectivec`,nr.aliases=[`objc`];function nr(e){e.register(F),e.languages.objectivec=e.languages.extend(`c`,{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete e.languages.objectivec[`class-name`],e.languages.objc=e.languages.objectivec}rr.displayName=`ocaml`,rr.aliases=[];function rr(e){e.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:`property`},label:{pattern:/\B~\w+/,alias:`property`},"type-variable":{pattern:/\B'\w+/,alias:`function`},variant:{pattern:/`\w+/,alias:`symbol`},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:`punctuation`},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/}}ir.displayName=`odin`,ir.aliases=[];function ir(e){(function(e){var t=/\\(?:["'\\abefnrtv]|0[0-7]{2}|U[\dA-Fa-f]{6}|u[\dA-Fa-f]{4}|x[\dA-Fa-f]{2})/;e.languages.odin={comment:[{pattern:/\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:\*(?!\/)|[^*])*(?:\*\/|$))*(?:\*\/|$)/,greedy:!0},{pattern:/#![^\n\r]*/,greedy:!0},{pattern:/\/\/[^\n\r]*/,greedy:!0}],char:{pattern:/'(?:\\(?:.|[0Uux][0-9A-Fa-f]{1,6})|[^\n\r'\\])'/,greedy:!0,inside:{symbol:t}},string:[{pattern:/`[^`]*`/,greedy:!0},{pattern:/"(?:\\.|[^\n\r"\\])*"/,greedy:!0,inside:{symbol:t}}],directive:{pattern:/#\w+/,alias:`property`},number:/\b0(?:b[01_]+|d[\d_]+|h_*(?:(?:(?:[\dA-Fa-f]_*){8}){1,2}|(?:[\dA-Fa-f]_*){4})|o[0-7_]+|x[\dA-F_a-f]+|z[\dAB_ab]+)\b|(?:\b\d+(?:\.(?!\.)\d*)?|\B\.\d+)(?:[Ee][+-]?\d*)?[ijk]?(?!\w)/,discard:{pattern:/\b_\b/,alias:`keyword`},"procedure-definition":{pattern:/\b\w+(?=[ \t]*(?::\s*){2}proc\b)/,alias:`function`},keyword:/\b(?:asm|auto_cast|bit_set|break|case|cast|context|continue|defer|distinct|do|dynamic|else|enum|fallthrough|for|foreign|if|import|in|map|matrix|not_in|or_else|or_return|package|proc|return|struct|switch|transmute|typeid|union|using|when|where)\b/,"procedure-name":{pattern:/\b\w+(?=[ \t]*\()/,alias:`function`},boolean:/\b(?:false|nil|true)\b/,"constant-parameter-sign":{pattern:/\$/,alias:`important`},undefined:{pattern:/---/,alias:`operator`},arrow:{pattern:/->/,alias:`punctuation`},operator:/\+\+|--|\.\.[<=]?|(?:&~|[-!*+/=~]|[%&<>|]{1,2})=?|[?^]/,punctuation:/[(),.:;@\[\]{}]/}})(e)}ar.displayName=`opencl`,ar.aliases=[];function ar(e){e.register(F),(function(e){e.languages.opencl=e.languages.extend(`c`,{keyword:/\b(?:(?:__)?(?:constant|global|kernel|local|private|read_only|read_write|write_only)|__attribute__|auto|(?:bool|u?(?:char|int|long|short)|half|quad)(?:2|3|4|8|16)?|break|case|complex|const|continue|(?:double|float)(?:16(?:x(?:1|2|4|8|16))?|1x(?:1|2|4|8|16)|2(?:x(?:1|2|4|8|16))?|3|4(?:x(?:1|2|4|8|16))?|8(?:x(?:1|2|4|8|16))?)?|default|do|else|enum|extern|for|goto|if|imaginary|inline|packed|pipe|register|restrict|return|signed|sizeof|static|struct|switch|typedef|uniform|union|unsigned|void|volatile|while)\b/,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[fuhl]{0,4}/i,boolean:/\b(?:false|true)\b/,"constant-opencl-kernel":{pattern:/\b(?:CHAR_(?:BIT|MAX|MIN)|CLK_(?:ADDRESS_(?:CLAMP(?:_TO_EDGE)?|NONE|REPEAT)|FILTER_(?:LINEAR|NEAREST)|(?:GLOBAL|LOCAL)_MEM_FENCE|NORMALIZED_COORDS_(?:FALSE|TRUE))|CL_(?:BGRA|(?:HALF_)?FLOAT|INTENSITY|LUMINANCE|A?R?G?B?[Ax]?|(?:(?:UN)?SIGNED|[US]NORM)_(?:INT(?:8|16|32))|UNORM_(?:INT_101010|SHORT_(?:555|565)))|(?:DBL|FLT|HALF)_(?:DIG|EPSILON|(?:MAX|MIN)(?:(?:_10)?_EXP)?|MANT_DIG)|FLT_RADIX|HUGE_VALF?|(?:INT|LONG|SCHAR|SHRT)_(?:MAX|MIN)|INFINITY|MAXFLOAT|M_(?:[12]_PI|2_SQRTPI|E|LN(?:2|10)|LOG(?:2|10)E?|PI(?:_[24])?|SQRT(?:1_2|2))(?:_F|_H)?|NAN|(?:UCHAR|UINT|ULONG|USHRT)_MAX)\b/,alias:`constant`}}),e.languages.insertBefore(`opencl`,`class-name`,{"builtin-type":{pattern:/\b(?:_cl_(?:command_queue|context|device_id|event|kernel|mem|platform_id|program|sampler)|cl_(?:image_format|mem_fence_flags)|clk_event_t|event_t|image(?:1d_(?:array_|buffer_)?t|2d_(?:array_(?:depth_|msaa_depth_|msaa_)?|depth_|msaa_depth_|msaa_)?t|3d_t)|intptr_t|ndrange_t|ptrdiff_t|queue_t|reserve_id_t|sampler_t|size_t|uintptr_t)\b/,alias:`keyword`}});var t={"type-opencl-host":{pattern:/\b(?:cl_(?:GLenum|GLint|GLuin|addressing_mode|bitfield|bool|buffer_create_type|build_status|channel_(?:order|type)|(?:u?(?:char|int|long|short)|double|float)(?:2|3|4|8|16)?|command_(?:queue(?:_info|_properties)?|type)|context(?:_info|_properties)?|device_(?:exec_capabilities|fp_config|id|info|local_mem_type|mem_cache_type|type)|(?:event|sampler)(?:_info)?|filter_mode|half|image_info|kernel(?:_info|_work_group_info)?|map_flags|mem(?:_flags|_info|_object_type)?|platform_(?:id|info)|profiling_info|program(?:_build_info|_info)?))\b/,alias:`keyword`},"boolean-opencl-host":{pattern:/\bCL_(?:FALSE|TRUE)\b/,alias:`boolean`},"constant-opencl-host":{pattern:/\bCL_(?:A|ABGR|ADDRESS_(?:CLAMP(?:_TO_EDGE)?|MIRRORED_REPEAT|NONE|REPEAT)|ARGB|BGRA|BLOCKING|BUFFER_CREATE_TYPE_REGION|BUILD_(?:ERROR|IN_PROGRESS|NONE|PROGRAM_FAILURE|SUCCESS)|COMMAND_(?:ACQUIRE_GL_OBJECTS|BARRIER|COPY_(?:BUFFER(?:_RECT|_TO_IMAGE)?|IMAGE(?:_TO_BUFFER)?)|FILL_(?:BUFFER|IMAGE)|MAP(?:_BUFFER|_IMAGE)|MARKER|MIGRATE(?:_SVM)?_MEM_OBJECTS|NATIVE_KERNEL|NDRANGE_KERNEL|READ_(?:BUFFER(?:_RECT)?|IMAGE)|RELEASE_GL_OBJECTS|SVM_(?:FREE|MAP|MEMCPY|MEMFILL|UNMAP)|TASK|UNMAP_MEM_OBJECT|USER|WRITE_(?:BUFFER(?:_RECT)?|IMAGE))|COMPILER_NOT_AVAILABLE|COMPILE_PROGRAM_FAILURE|COMPLETE|CONTEXT_(?:DEVICES|INTEROP_USER_SYNC|NUM_DEVICES|PLATFORM|PROPERTIES|REFERENCE_COUNT)|DEPTH(?:_STENCIL)?|DEVICE_(?:ADDRESS_BITS|AFFINITY_DOMAIN_(?:L[1-4]_CACHE|NEXT_PARTITIONABLE|NUMA)|AVAILABLE|BUILT_IN_KERNELS|COMPILER_AVAILABLE|DOUBLE_FP_CONFIG|ENDIAN_LITTLE|ERROR_CORRECTION_SUPPORT|EXECUTION_CAPABILITIES|EXTENSIONS|GLOBAL_(?:MEM_(?:CACHELINE_SIZE|CACHE_SIZE|CACHE_TYPE|SIZE)|VARIABLE_PREFERRED_TOTAL_SIZE)|HOST_UNIFIED_MEMORY|IL_VERSION|IMAGE(?:2D_MAX_(?:HEIGHT|WIDTH)|3D_MAX_(?:DEPTH|HEIGHT|WIDTH)|_BASE_ADDRESS_ALIGNMENT|_MAX_ARRAY_SIZE|_MAX_BUFFER_SIZE|_PITCH_ALIGNMENT|_SUPPORT)|LINKER_AVAILABLE|LOCAL_MEM_SIZE|LOCAL_MEM_TYPE|MAX_(?:CLOCK_FREQUENCY|COMPUTE_UNITS|CONSTANT_ARGS|CONSTANT_BUFFER_SIZE|GLOBAL_VARIABLE_SIZE|MEM_ALLOC_SIZE|NUM_SUB_GROUPS|ON_DEVICE_(?:EVENTS|QUEUES)|PARAMETER_SIZE|PIPE_ARGS|READ_IMAGE_ARGS|READ_WRITE_IMAGE_ARGS|SAMPLERS|WORK_GROUP_SIZE|WORK_ITEM_DIMENSIONS|WORK_ITEM_SIZES|WRITE_IMAGE_ARGS)|MEM_BASE_ADDR_ALIGN|MIN_DATA_TYPE_ALIGN_SIZE|NAME|NATIVE_VECTOR_WIDTH_(?:CHAR|DOUBLE|FLOAT|HALF|INT|LONG|SHORT)|NOT_(?:AVAILABLE|FOUND)|OPENCL_C_VERSION|PARENT_DEVICE|PARTITION_(?:AFFINITY_DOMAIN|BY_AFFINITY_DOMAIN|BY_COUNTS|BY_COUNTS_LIST_END|EQUALLY|FAILED|MAX_SUB_DEVICES|PROPERTIES|TYPE)|PIPE_MAX_(?:ACTIVE_RESERVATIONS|PACKET_SIZE)|PLATFORM|PREFERRED_(?:GLOBAL_ATOMIC_ALIGNMENT|INTEROP_USER_SYNC|LOCAL_ATOMIC_ALIGNMENT|PLATFORM_ATOMIC_ALIGNMENT|VECTOR_WIDTH_(?:CHAR|DOUBLE|FLOAT|HALF|INT|LONG|SHORT))|PRINTF_BUFFER_SIZE|PROFILE|PROFILING_TIMER_RESOLUTION|QUEUE_(?:ON_(?:DEVICE_(?:MAX_SIZE|PREFERRED_SIZE|PROPERTIES)|HOST_PROPERTIES)|PROPERTIES)|REFERENCE_COUNT|SINGLE_FP_CONFIG|SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS|SVM_(?:ATOMICS|CAPABILITIES|COARSE_GRAIN_BUFFER|FINE_GRAIN_BUFFER|FINE_GRAIN_SYSTEM)|TYPE(?:_ACCELERATOR|_ALL|_CPU|_CUSTOM|_DEFAULT|_GPU)?|VENDOR(?:_ID)?|VERSION)|DRIVER_VERSION|EVENT_(?:COMMAND_(?:EXECUTION_STATUS|QUEUE|TYPE)|CONTEXT|REFERENCE_COUNT)|EXEC_(?:KERNEL|NATIVE_KERNEL|STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST)|FILTER_(?:LINEAR|NEAREST)|FLOAT|FP_(?:CORRECTLY_ROUNDED_DIVIDE_SQRT|DENORM|FMA|INF_NAN|ROUND_TO_INF|ROUND_TO_NEAREST|ROUND_TO_ZERO|SOFT_FLOAT)|GLOBAL|HALF_FLOAT|IMAGE_(?:ARRAY_SIZE|BUFFER|DEPTH|ELEMENT_SIZE|FORMAT|FORMAT_MISMATCH|FORMAT_NOT_SUPPORTED|HEIGHT|NUM_MIP_LEVELS|NUM_SAMPLES|ROW_PITCH|SLICE_PITCH|WIDTH)|INTENSITY|INVALID_(?:ARG_INDEX|ARG_SIZE|ARG_VALUE|BINARY|BUFFER_SIZE|BUILD_OPTIONS|COMMAND_QUEUE|COMPILER_OPTIONS|CONTEXT|DEVICE|DEVICE_PARTITION_COUNT|DEVICE_QUEUE|DEVICE_TYPE|EVENT|EVENT_WAIT_LIST|GLOBAL_OFFSET|GLOBAL_WORK_SIZE|GL_OBJECT|HOST_PTR|IMAGE_DESCRIPTOR|IMAGE_FORMAT_DESCRIPTOR|IMAGE_SIZE|KERNEL|KERNEL_ARGS|KERNEL_DEFINITION|KERNEL_NAME|LINKER_OPTIONS|MEM_OBJECT|MIP_LEVEL|OPERATION|PIPE_SIZE|PLATFORM|PROGRAM|PROGRAM_EXECUTABLE|PROPERTY|QUEUE_PROPERTIES|SAMPLER|VALUE|WORK_DIMENSION|WORK_GROUP_SIZE|WORK_ITEM_SIZE)|KERNEL_(?:ARG_(?:ACCESS_(?:NONE|QUALIFIER|READ_ONLY|READ_WRITE|WRITE_ONLY)|ADDRESS_(?:CONSTANT|GLOBAL|LOCAL|PRIVATE|QUALIFIER)|INFO_NOT_AVAILABLE|NAME|TYPE_(?:CONST|NAME|NONE|PIPE|QUALIFIER|RESTRICT|VOLATILE))|ATTRIBUTES|COMPILE_NUM_SUB_GROUPS|COMPILE_WORK_GROUP_SIZE|CONTEXT|EXEC_INFO_SVM_FINE_GRAIN_SYSTEM|EXEC_INFO_SVM_PTRS|FUNCTION_NAME|GLOBAL_WORK_SIZE|LOCAL_MEM_SIZE|LOCAL_SIZE_FOR_SUB_GROUP_COUNT|MAX_NUM_SUB_GROUPS|MAX_SUB_GROUP_SIZE_FOR_NDRANGE|NUM_ARGS|PREFERRED_WORK_GROUP_SIZE_MULTIPLE|PRIVATE_MEM_SIZE|PROGRAM|REFERENCE_COUNT|SUB_GROUP_COUNT_FOR_NDRANGE|WORK_GROUP_SIZE)|LINKER_NOT_AVAILABLE|LINK_PROGRAM_FAILURE|LOCAL|LUMINANCE|MAP_(?:FAILURE|READ|WRITE|WRITE_INVALIDATE_REGION)|MEM_(?:ALLOC_HOST_PTR|ASSOCIATED_MEMOBJECT|CONTEXT|COPY_HOST_PTR|COPY_OVERLAP|FLAGS|HOST_NO_ACCESS|HOST_PTR|HOST_READ_ONLY|HOST_WRITE_ONLY|KERNEL_READ_AND_WRITE|MAP_COUNT|OBJECT_(?:ALLOCATION_FAILURE|BUFFER|IMAGE1D|IMAGE1D_ARRAY|IMAGE1D_BUFFER|IMAGE2D|IMAGE2D_ARRAY|IMAGE3D|PIPE)|OFFSET|READ_ONLY|READ_WRITE|REFERENCE_COUNT|SIZE|SVM_ATOMICS|SVM_FINE_GRAIN_BUFFER|TYPE|USES_SVM_POINTER|USE_HOST_PTR|WRITE_ONLY)|MIGRATE_MEM_OBJECT_(?:CONTENT_UNDEFINED|HOST)|MISALIGNED_SUB_BUFFER_OFFSET|NONE|NON_BLOCKING|OUT_OF_(?:HOST_MEMORY|RESOURCES)|PIPE_(?:MAX_PACKETS|PACKET_SIZE)|PLATFORM_(?:EXTENSIONS|HOST_TIMER_RESOLUTION|NAME|PROFILE|VENDOR|VERSION)|PROFILING_(?:COMMAND_(?:COMPLETE|END|QUEUED|START|SUBMIT)|INFO_NOT_AVAILABLE)|PROGRAM_(?:BINARIES|BINARY_SIZES|BINARY_TYPE(?:_COMPILED_OBJECT|_EXECUTABLE|_LIBRARY|_NONE)?|BUILD_(?:GLOBAL_VARIABLE_TOTAL_SIZE|LOG|OPTIONS|STATUS)|CONTEXT|DEVICES|IL|KERNEL_NAMES|NUM_DEVICES|NUM_KERNELS|REFERENCE_COUNT|SOURCE)|QUEUED|QUEUE_(?:CONTEXT|DEVICE|DEVICE_DEFAULT|ON_DEVICE|ON_DEVICE_DEFAULT|OUT_OF_ORDER_EXEC_MODE_ENABLE|PROFILING_ENABLE|PROPERTIES|REFERENCE_COUNT|SIZE)|R|RA|READ_(?:ONLY|WRITE)_CACHE|RG|RGB|RGBA|RGBx|RGx|RUNNING|Rx|SAMPLER_(?:ADDRESSING_MODE|CONTEXT|FILTER_MODE|LOD_MAX|LOD_MIN|MIP_FILTER_MODE|NORMALIZED_COORDS|REFERENCE_COUNT)|(?:UN)?SIGNED_INT(?:8|16|32)|SNORM_INT(?:8|16)|SUBMITTED|SUCCESS|UNORM_INT(?:8|16|24|_101010|_101010_2)|UNORM_SHORT_(?:555|565)|VERSION_(?:1_0|1_1|1_2|2_0|2_1)|sBGRA|sRGB|sRGBA|sRGBx)\b/,alias:`constant`},"function-opencl-host":{pattern:/\bcl(?:BuildProgram|CloneKernel|CompileProgram|Create(?:Buffer|CommandQueue(?:WithProperties)?|Context|ContextFromType|Image|Image2D|Image3D|Kernel|KernelsInProgram|Pipe|ProgramWith(?:Binary|BuiltInKernels|IL|Source)|Sampler|SamplerWithProperties|SubBuffer|SubDevices|UserEvent)|Enqueue(?:(?:Barrier|Marker)(?:WithWaitList)?|Copy(?:Buffer(?:Rect|ToImage)?|Image(?:ToBuffer)?)|(?:Fill|Map)(?:Buffer|Image)|MigrateMemObjects|NDRangeKernel|NativeKernel|(?:Read|Write)(?:Buffer(?:Rect)?|Image)|SVM(?:Free|Map|MemFill|Memcpy|MigrateMem|Unmap)|Task|UnmapMemObject|WaitForEvents)|Finish|Flush|Get(?:CommandQueueInfo|ContextInfo|Device(?:AndHostTimer|IDs|Info)|Event(?:Profiling)?Info|ExtensionFunctionAddress(?:ForPlatform)?|HostTimer|ImageInfo|Kernel(?:ArgInfo|Info|SubGroupInfo|WorkGroupInfo)|MemObjectInfo|PipeInfo|Platform(?:IDs|Info)|Program(?:Build)?Info|SamplerInfo|SupportedImageFormats)|LinkProgram|(?:Release|Retain)(?:CommandQueue|Context|Device|Event|Kernel|MemObject|Program|Sampler)|SVM(?:Alloc|Free)|Set(?:CommandQueueProperty|DefaultDeviceCommandQueue|EventCallback|Kernel|Kernel(?:Arg(?:SVMPointer)?|ExecInfo)|MemObjectDestructorCallback|UserEventStatus)|Unload(?:Platform)?Compiler|WaitForEvents)\b/,alias:`function`}};e.languages.insertBefore(`c`,`keyword`,t),e.languages.cpp&&(t[`type-opencl-host-cpp`]={pattern:/\b(?:Buffer|BufferGL|BufferRenderGL|CommandQueue|Context|Device|DeviceCommandQueue|EnqueueArgs|Event|Image|Image1D|Image1DArray|Image1DBuffer|Image2D|Image2DArray|Image2DGL|Image3D|Image3DGL|ImageFormat|ImageGL|Kernel|KernelFunctor|LocalSpaceArg|Memory|NDRange|Pipe|Platform|Program|SVMAllocator|SVMTraitAtomic|SVMTraitCoarse|SVMTraitFine|SVMTraitReadOnly|SVMTraitReadWrite|SVMTraitWriteOnly|Sampler|UserEvent)\b/,alias:`keyword`},e.languages.insertBefore(`cpp`,`keyword`,t))})(e)}or.displayName=`openqasm`,or.aliases=[`qasm`];function or(e){e.languages.openqasm={comment:/\/\*[\s\S]*?\*\/|\/\/.*/,string:{pattern:/"[^"\r\n\t]*"|'[^'\r\n\t]*'/,greedy:!0},keyword:/\b(?:CX|OPENQASM|U|barrier|boxas|boxto|break|const|continue|ctrl|def|defcal|defcalgrammar|delay|else|end|for|gate|gphase|if|in|include|inv|kernel|lengthof|let|measure|pow|reset|return|rotary|stretchinf|while)\b|#pragma\b/,"class-name":/\b(?:angle|bit|bool|creg|fixed|float|int|length|qreg|qubit|stretch|uint)\b/,function:/\b(?:cos|exp|ln|popcount|rotl|rotr|sin|sqrt|tan)\b(?=\s*\()/,constant:/\b(?:euler|pi|tau)\b|π|𝜏|ℇ/,number:{pattern:/(^|[^.\w$])(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?(?:dt|ns|us|µs|ms|s)?/i,lookbehind:!0},operator:/->|>>=?|<<=?|&&|\|\||\+\+|--|[!=<>&|~^+\-*/%]=?|@/,punctuation:/[(){}\[\];,:.]/},e.languages.qasm=e.languages.openqasm}sr.displayName=`oz`,sr.aliases=[];function sr(e){e.languages.oz={comment:{pattern:/\/\*[\s\S]*?\*\/|%.*/,greedy:!0},string:{pattern:/"(?:[^"\\]|\\[\s\S])*"/,greedy:!0},atom:{pattern:/'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,alias:`builtin`},keyword:/\$|\[\]|\b(?:_|at|attr|case|catch|choice|class|cond|declare|define|dis|else(?:case|if)?|end|export|fail|false|feat|finally|from|fun|functor|if|import|in|local|lock|meth|nil|not|of|or|prepare|proc|prop|raise|require|self|skip|then|thread|true|try|unit)\b/,function:[/\b[a-z][A-Za-z\d]*(?=\()/,{pattern:/(\{)[A-Z][A-Za-z\d]*\b/,lookbehind:!0}],number:/\b(?:0[bx][\da-f]+|\d+(?:\.\d*)?(?:e~?\d+)?)\b|&(?:[^\\]|\\(?:\d{3}|.))/i,variable:/`(?:[^`\\]|\\.)+`/,"attr-name":/\b\w+(?=[ \t]*:(?![:=]))/,operator:/:(?:=|::?)|<[-:=]?|=(?:=|=?:?|\\=:?|!!?|[|#+\-*\/,~^@]|\b(?:andthen|div|mod|orelse)\b/,punctuation:/[\[\](){}.:;?]/}}cr.displayName=`parigp`,cr.aliases=[];function cr(e){e.languages.parigp={comment:/\/\*[\s\S]*?\*\/|\\\\.*/,string:{pattern:/"(?:[^"\\\r\n]|\\.)*"/,greedy:!0},keyword:(function(){var e=[`breakpoint`,`break`,`dbg_down`,`dbg_err`,`dbg_up`,`dbg_x`,`forcomposite`,`fordiv`,`forell`,`forpart`,`forprime`,`forstep`,`forsubgroup`,`forvec`,`for`,`iferr`,`if`,`local`,`my`,`next`,`return`,`until`,`while`];return e=e.map(function(e){return e.split(``).join(` *`)}).join(`|`),RegExp(`\\b(?:`+e+`)\\b`)})(),function:/\b\w(?:[\w ]*\w)?(?= *\()/,number:{pattern:/((?:\. *\. *)?)(?:\b\d(?: *\d)*(?: *(?!\. *\.)\.(?: *\d)*)?|\. *\d(?: *\d)*)(?: *e *(?:[+-] *)?\d(?: *\d)*)?/i,lookbehind:!0},operator:/\. *\.|[*\/!](?: *=)?|%(?: *=|(?: *#)?(?: *')*)?|\+(?: *[+=])?|-(?: *[-=>])?|<(?: *>|(?: *<)?(?: *=)?)?|>(?: *>)?(?: *=)?|=(?: *=){0,2}|\\(?: *\/)?(?: *=)?|&(?: *&)?|\| *\||['#~^]/,punctuation:/[\[\]{}().,:;|]/}}lr.displayName=`parser`,lr.aliases=[];function lr(e){e.register(B),(function(e){var t=e.languages.parser=e.languages.extend(`markup`,{keyword:{pattern:/(^|[^^])(?:\^(?:case|eval|for|if|switch|throw)\b|@(?:BASE|CLASS|GET(?:_DEFAULT)?|OPTIONS|SET_DEFAULT|USE)\b)/,lookbehind:!0},variable:{pattern:/(^|[^^])\B\$(?:\w+|(?=[.{]))(?:(?:\.|::?)\w+)*(?:\.|::?)?/,lookbehind:!0,inside:{punctuation:/\.|:+/}},function:{pattern:/(^|[^^])\B[@^]\w+(?:(?:\.|::?)\w+)*(?:\.|::?)?/,lookbehind:!0,inside:{keyword:{pattern:/(^@)(?:GET_|SET_)/,lookbehind:!0},punctuation:/\.|:+/}},escape:{pattern:/\^(?:[$^;@()\[\]{}"':]|#[a-f\d]*)/i,alias:`builtin`},punctuation:/[\[\](){};]/});t=e.languages.insertBefore(`parser`,`keyword`,{"parser-comment":{pattern:/(\s)#.*/,lookbehind:!0,alias:`comment`},expression:{pattern:/(^|[^^])\((?:[^()]|\((?:[^()]|\((?:[^()])*\))*\))*\)/,greedy:!0,lookbehind:!0,inside:{string:{pattern:/(^|[^^])(["'])(?:(?!\2)[^^]|\^[\s\S])*\2/,lookbehind:!0},keyword:t.keyword,variable:t.variable,function:t.function,boolean:/\b(?:false|true)\b/,number:/\b(?:0x[a-f\d]+|\d+(?:\.\d*)?(?:e[+-]?\d+)?)\b/i,escape:t.escape,operator:/[~+*\/\\%]|!(?:\|\|?|=)?|&&?|\|\|?|==|<[<=]?|>[>=]?|-[fd]?|\b(?:def|eq|ge|gt|in|is|le|lt|ne)\b/,punctuation:t.punctuation}}}),e.languages.insertBefore(`inside`,`punctuation`,{expression:t.expression,keyword:t.keyword,variable:t.variable,function:t.function,escape:t.escape,"parser-punctuation":{pattern:t.punctuation,alias:`punctuation`}},t.tag.inside[`attr-value`])})(e)}ur.displayName=`pascal`,ur.aliases=[`objectpascal`];function ur(e){e.languages.pascal={directive:{pattern:/\{\$[\s\S]*?\}/,greedy:!0,alias:[`marco`,`property`]},comment:{pattern:/\(\*[\s\S]*?\*\)|\{[\s\S]*?\}|\/\/.*/,greedy:!0},string:{pattern:/(?:'(?:''|[^'\r\n])*'(?!')|#[&$%]?[a-f\d]+)+|\^[a-z]/i,greedy:!0},asm:{pattern:/(\basm\b)[\s\S]+?(?=\bend\s*[;[])/i,lookbehind:!0,greedy:!0,inside:null},keyword:[{pattern:/(^|[^&])\b(?:absolute|array|asm|begin|case|const|constructor|destructor|do|downto|else|end|file|for|function|goto|if|implementation|inherited|inline|interface|label|nil|object|of|operator|packed|procedure|program|record|reintroduce|repeat|self|set|string|then|to|type|unit|until|uses|var|while|with)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:dispose|exit|false|new|true)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:class|dispinterface|except|exports|finalization|finally|initialization|inline|library|on|out|packed|property|raise|resourcestring|threadvar|try)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:absolute|abstract|alias|assembler|bitpacked|break|cdecl|continue|cppdecl|cvar|default|deprecated|dynamic|enumerator|experimental|export|external|far|far16|forward|generic|helper|implements|index|interrupt|iochecks|local|message|name|near|nodefault|noreturn|nostackframe|oldfpccall|otherwise|overload|override|pascal|platform|private|protected|public|published|read|register|reintroduce|result|safecall|saveregisters|softfloat|specialize|static|stdcall|stored|strict|unaligned|unimplemented|varargs|virtual|write)\b/i,lookbehind:!0}],number:[/(?:[&%]\d+|\$[a-f\d]+)/i,/\b\d+(?:\.\d+)?(?:e[+-]?\d+)?/i],operator:[/\.\.|\*\*|:=|<[<=>]?|>[>=]?|[+\-*\/]=?|[@^=]/,{pattern:/(^|[^&])\b(?:and|as|div|exclude|in|include|is|mod|not|or|shl|shr|xor)\b/,lookbehind:!0}],punctuation:/\(\.|\.\)|[()\[\]:;,.]/},e.languages.pascal.asm.inside=e.languages.extend(`pascal`,{asm:void 0,keyword:void 0,operator:void 0}),e.languages.objectpascal=e.languages.pascal}dr.displayName=`pascaligo`,dr.aliases=[];function dr(e){(function(e){var t=`\\((?:[^()]|\\((?:[^()]|\\([^()]*\\))*\\))*\\)`,n=`(?:\\b\\w+(?:)?|)`.replace(//g,function(){return t}),r=e.languages.pascaligo={comment:/\(\*[\s\S]+?\*\)|\/\/.*/,string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1|\^[a-z]/i,greedy:!0},"class-name":[{pattern:RegExp(`(\\btype\\s+\\w+\\s+is\\s+)`.replace(//g,function(){return n}),`i`),lookbehind:!0,inside:null},{pattern:RegExp(`(?=\\s+is\\b)`.replace(//g,function(){return n}),`i`),inside:null},{pattern:RegExp(`(:\\s*)`.replace(//g,function(){return n})),lookbehind:!0,inside:null}],keyword:{pattern:/(^|[^&])\b(?:begin|block|case|const|else|end|fail|for|from|function|if|is|nil|of|remove|return|skip|then|type|var|while|with)\b/i,lookbehind:!0},boolean:{pattern:/(^|[^&])\b(?:False|True)\b/i,lookbehind:!0},builtin:{pattern:/(^|[^&])\b(?:bool|int|list|map|nat|record|string|unit)\b/i,lookbehind:!0},function:/\b\w+(?=\s*\()/,number:[/%[01]+|&[0-7]+|\$[a-f\d]+/i,/\b\d+(?:\.\d+)?(?:e[+-]?\d+)?(?:mtz|n)?/i],operator:/->|=\/=|\.\.|\*\*|:=|<[<=>]?|>[>=]?|[+\-*\/]=?|[@^=|]|\b(?:and|mod|or)\b/,punctuation:/\(\.|\.\)|[()\[\]:;,.{}]/},i=[`comment`,`keyword`,`builtin`,`operator`,`punctuation`].reduce(function(e,t){return e[t]=r[t],e},{});r[`class-name`].forEach(function(e){e.inside=i})})(e)}fr.displayName=`pcaxis`,fr.aliases=[`px`];function fr(e){e.languages.pcaxis={string:/"[^"]*"/,keyword:{pattern:/((?:^|;)\s*)[-A-Z\d]+(?:\s*\[[-\w]+\])?(?:\s*\("[^"]*"(?:,\s*"[^"]*")*\))?(?=\s*=)/,lookbehind:!0,greedy:!0,inside:{keyword:/^[-A-Z\d]+/,language:{pattern:/^(\s*)\[[-\w]+\]/,lookbehind:!0,inside:{punctuation:/^\[|\]$/,property:/[-\w]+/}},"sub-key":{pattern:/^(\s*)\S[\s\S]*/,lookbehind:!0,inside:{parameter:{pattern:/"[^"]*"/,alias:`property`},punctuation:/^\(|\)$|,/}}}},operator:/=/,tlist:{pattern:/TLIST\s*\(\s*\w+(?:(?:\s*,\s*"[^"]*")+|\s*,\s*"[^"]*"-"[^"]*")?\s*\)/,greedy:!0,inside:{function:/^TLIST/,property:{pattern:/^(\s*\(\s*)\w+/,lookbehind:!0},string:/"[^"]*"/,punctuation:/[(),]/,operator:/-/}},punctuation:/[;,]/,number:{pattern:/(^|\s)\d+(?:\.\d+)?(?!\S)/,lookbehind:!0},boolean:/NO|YES/},e.languages.px=e.languages.pcaxis}pr.displayName=`peoplecode`,pr.aliases=[`pcode`];function pr(e){e.languages.peoplecode={comment:RegExp([`\\/\\*[\\s\\S]*?\\*\\/`,`\\bREM[^;]*;`,`<\\*(?:[^<*]|\\*(?!>)|<(?!\\*)|<\\*(?:(?!\\*>)[\\s\\S])*\\*>)*\\*>`,`\\/\\+[\\s\\S]*?\\+\\/`].join(`|`)),string:{pattern:/'(?:''|[^'\r\n])*'(?!')|"(?:""|[^"\r\n])*"(?!")/,greedy:!0},variable:/%\w+/,"function-definition":{pattern:/((?:^|[^\w-])(?:function|method)\s+)\w+/i,lookbehind:!0,alias:`function`},"class-name":{pattern:/((?:^|[^-\w])(?:as|catch|class|component|create|extends|global|implements|instance|local|of|property|returns)\s+)\w+(?::\w+)*/i,lookbehind:!0,inside:{punctuation:/:/}},keyword:/\b(?:abstract|alias|as|catch|class|component|constant|create|declare|else|end-(?:class|evaluate|for|function|get|if|method|set|try|while)|evaluate|extends|for|function|get|global|if|implements|import|instance|library|local|method|null|of|out|peopleCode|private|program|property|protected|readonly|ref|repeat|returns?|set|step|then|throw|to|try|until|value|when(?:-other)?|while)\b/i,"operator-keyword":{pattern:/\b(?:and|not|or)\b/i,alias:`operator`},function:/[_a-z]\w*(?=\s*\()/i,boolean:/\b(?:false|true)\b/i,number:/\b\d+(?:\.\d+)?\b/,operator:/<>|[<>]=?|!=|\*\*|[-+*/|=@]/,punctuation:/[:.;,()[\]]/},e.languages.pcode=e.languages.peoplecode}mr.displayName=`perl`,mr.aliases=[];function mr(e){(function(e){var t=`(?:\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)|\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}|\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]|<(?:[^<>\\\\]|\\\\[\\s\\S])*>)`;e.languages.perl={comment:[{pattern:/(^\s*)=\w[\s\S]*?=cut.*/m,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\$])#.*/,lookbehind:!0,greedy:!0}],string:[{pattern:RegExp(`\\b(?:q|qq|qw|qx)(?![a-zA-Z0-9])\\s*(?:`+[`([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1`,`([a-zA-Z0-9])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2`,t].join(`|`)+`)`),greedy:!0},{pattern:/("|`)(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/'(?:[^'\\\r\n]|\\.)*'/,greedy:!0}],regex:[{pattern:RegExp(`\\b(?:m|qr)(?![a-zA-Z0-9])\\s*(?:`+[`([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1`,`([a-zA-Z0-9])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2`,t].join(`|`)+`)[msixpodualngc]*`),greedy:!0},{pattern:RegExp(`(^|[^-])\\b(?:s|tr|y)(?![a-zA-Z0-9])\\s*(?:`+[`([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2`,`([a-zA-Z0-9])(?:(?!\\3)[^\\\\]|\\\\[\\s\\S])*\\3(?:(?!\\3)[^\\\\]|\\\\[\\s\\S])*\\3`,t+`\\s*`+t].join(`|`)+`)[msixpodualngcer]*`),lookbehind:!0,greedy:!0},{pattern:/\/(?:[^\/\\\r\n]|\\.)*\/[msixpodualngc]*(?=\s*(?:$|[\r\n,.;})&|\-+*~<>!?^]|(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|x|xor)\b))/,greedy:!0}],variable:[/[&*$@%]\{\^[A-Z]+\}/,/[&*$@%]\^[A-Z_]/,/[&*$@%]#?(?=\{)/,/[&*$@%]#?(?:(?:::)*'?(?!\d)[\w$]+(?![\w$]))+(?:::)*/,/[&*$@%]\d+/,/(?!%=)[$@%][!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~]/],filehandle:{pattern:/<(?![<=])\S*?>|\b_\b/,alias:`symbol`},"v-string":{pattern:/v\d+(?:\.\d+)*|\d+(?:\.\d+){2,}/,alias:`string`},function:{pattern:/(\bsub[ \t]+)\w+/,lookbehind:!0},keyword:/\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|return|say|state|sub|switch|undef|unless|until|use|when|while)\b/,number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)\b/,operator:/-[rwxoRWXOezsfdlpSbctugkTBMAC]\b|\+[+=]?|-[-=>]?|\*\*?=?|\/\/?=?|=[=~>]?|~[~=]?|\|\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\.(?:=|\.\.?)?|[\\?]|\bx(?:=|\b)|\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)\b/,punctuation:/[{}[\];(),:]/}})(e)}hr.displayName=`php-extras`,hr.aliases=[];function hr(e){e.register(K),e.languages.insertBefore(`php`,`variable`,{this:{pattern:/\$this\b/,alias:`keyword`},global:/\$(?:GLOBALS|HTTP_RAW_POST_DATA|_(?:COOKIE|ENV|FILES|GET|POST|REQUEST|SERVER|SESSION)|argc|argv|http_response_header|php_errormsg)\b/,scope:{pattern:/\b[\w\\]+::/,inside:{keyword:/\b(?:parent|self|static)\b/,punctuation:/::|\\/}}})}gr.displayName=`phpdoc`,gr.aliases=[];function gr(e){e.register(G),e.register(K),(function(e){var t=`(?:\\b[a-zA-Z]\\w*|[|\\\\[\\]])+`;e.languages.phpdoc=e.languages.extend(`javadoclike`,{parameter:{pattern:RegExp(`(@(?:global|param|property(?:-read|-write)?|var)\\s+(?:`+t+`\\s+)?)\\$\\w+`),lookbehind:!0}}),e.languages.insertBefore(`phpdoc`,`keyword`,{"class-name":[{pattern:RegExp(`(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\\s+)`+t),lookbehind:!0,inside:{keyword:/\b(?:array|bool|boolean|callback|double|false|float|int|integer|mixed|null|object|resource|self|string|true|void)\b/,punctuation:/[|\\[\]()]/}}]}),e.languages.javadoclike.addSupport(`php`,e.languages.phpdoc)})(e)}_r.displayName=`plant-uml`,_r.aliases=[`plantuml`];function _r(e){(function(e){var t=/\$\w+|%[a-z]+%/,n=`\\[[^[\\]]*\\]`,r=`(?:[drlu]|do|down|le|left|ri|right|up)`,i=`(?:-+`+r+`-+|\\.+`+r+`\\.+|-+(?:`+n+`-*)?|`+n+`-+|\\.+(?:`+n+`\\.*)?|`+n+`\\.+)`,a=`(?:<{1,2}|\\/{1,2}|\\\\{1,2}|<\\||[#*^+}xo])`,o=`(?:>{1,2}|\\/{1,2}|\\\\{1,2}|\\|>|[#*^+{xo])`,s=`[[?]?[ox]?(?:`+i+o+`|`+a+i+`(?:`+o+`)?)[ox]?[\\]?]?`;e.languages[`plant-uml`]={comment:{pattern:/(^[ \t]*)(?:'.*|\/'[\s\S]*?'\/)/m,lookbehind:!0,greedy:!0},preprocessor:{pattern:/(^[ \t]*)!.*/m,lookbehind:!0,greedy:!0,alias:`property`,inside:{variable:t}},delimiter:{pattern:/(^[ \t]*)@(?:end|start)uml\b/m,lookbehind:!0,greedy:!0,alias:`punctuation`},arrow:{pattern:RegExp(`(^|[^-.<>?|\\\\[\\]ox])`+s+`(?![-.<>?|\\\\\\]ox])`),lookbehind:!0,greedy:!0,alias:`operator`,inside:{expression:{pattern:/(\[)[^[\]]+(?=\])/,lookbehind:!0,inside:null},punctuation:/\[(?=$|\])|^\]/}},string:{pattern:/"[^"]*"/,greedy:!0},text:{pattern:/(\[[ \t]*[\r\n]+(?![\r\n]))[^\]]*(?=\])/,lookbehind:!0,greedy:!0,alias:`string`},keyword:[{pattern:/^([ \t]*)(?:abstract\s+class|end\s+(?:box|fork|group|merge|note|ref|split|title)|(?:fork|split)(?:\s+again)?|activate|actor|agent|alt|annotation|artifact|autoactivate|autonumber|backward|binary|boundary|box|break|caption|card|case|circle|class|clock|cloud|collections|component|concise|control|create|critical|database|deactivate|destroy|detach|diamond|else|elseif|end|end[hr]note|endif|endswitch|endwhile|entity|enum|file|folder|footer|frame|group|[hr]?note|header|hexagon|hide|if|interface|label|legend|loop|map|namespace|network|newpage|node|nwdiag|object|opt|package|page|par|participant|person|queue|rectangle|ref|remove|repeat|restore|return|robust|scale|set|show|skinparam|stack|start|state|stop|storage|switch|title|together|usecase|usecase\/|while)(?=\s|$)/m,lookbehind:!0,greedy:!0},/\b(?:elseif|equals|not|while)(?=\s*\()/,/\b(?:as|is|then)\b/],divider:{pattern:/^==.+==$/m,greedy:!0,alias:`important`},time:{pattern:/@(?:\d+(?:[:/]\d+){2}|[+-]?\d+|:[a-z]\w*(?:[+-]\d+)?)\b/i,greedy:!0,alias:`number`},color:{pattern:/#(?:[a-z_]+|[a-fA-F0-9]+)\b/,alias:`symbol`},variable:t,punctuation:/[:,;()[\]{}]|\.{3}/},e.languages[`plant-uml`].arrow.inside.expression.inside=e.languages[`plant-uml`],e.languages.plantuml=e.languages[`plant-uml`]})(e)}vr.displayName=`plsql`,vr.aliases=[];function vr(e){e.register(A),e.languages.plsql=e.languages.extend(`sql`,{comment:{pattern:/\/\*[\s\S]*?\*\/|--.*/,greedy:!0},keyword:/\b(?:A|ACCESSIBLE|ADD|AGENT|AGGREGATE|ALL|ALTER|AND|ANY|ARRAY|AS|ASC|AT|ATTRIBUTE|AUTHID|AVG|BEGIN|BETWEEN|BFILE_BASE|BINARY|BLOB_BASE|BLOCK|BODY|BOTH|BOUND|BULK|BY|BYTE|C|CALL|CALLING|CASCADE|CASE|CHAR|CHARACTER|CHARSET|CHARSETFORM|CHARSETID|CHAR_BASE|CHECK|CLOB_BASE|CLONE|CLOSE|CLUSTER|CLUSTERS|COLAUTH|COLLECT|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPILED|COMPRESS|CONNECT|CONSTANT|CONSTRUCTOR|CONTEXT|CONTINUE|CONVERT|COUNT|CRASH|CREATE|CREDENTIAL|CURRENT|CURSOR|CUSTOMDATUM|DANGLING|DATA|DATE|DATE_BASE|DAY|DECLARE|DEFAULT|DEFINE|DELETE|DESC|DETERMINISTIC|DIRECTORY|DISTINCT|DOUBLE|DROP|DURATION|ELEMENT|ELSE|ELSIF|EMPTY|END|ESCAPE|EXCEPT|EXCEPTION|EXCEPTIONS|EXCLUSIVE|EXECUTE|EXISTS|EXIT|EXTERNAL|FETCH|FINAL|FIRST|FIXED|FLOAT|FOR|FORALL|FORCE|FROM|FUNCTION|GENERAL|GOTO|GRANT|GROUP|HASH|HAVING|HEAP|HIDDEN|HOUR|IDENTIFIED|IF|IMMEDIATE|IMMUTABLE|IN|INCLUDING|INDEX|INDEXES|INDICATOR|INDICES|INFINITE|INSERT|INSTANTIABLE|INT|INTERFACE|INTERSECT|INTERVAL|INTO|INVALIDATE|IS|ISOLATION|JAVA|LANGUAGE|LARGE|LEADING|LENGTH|LEVEL|LIBRARY|LIKE|LIKE2|LIKE4|LIKEC|LIMIT|LIMITED|LOCAL|LOCK|LONG|LOOP|MAP|MAX|MAXLEN|MEMBER|MERGE|MIN|MINUS|MINUTE|MOD|MODE|MODIFY|MONTH|MULTISET|MUTABLE|NAME|NAN|NATIONAL|NATIVE|NCHAR|NEW|NOCOMPRESS|NOCOPY|NOT|NOWAIT|NULL|NUMBER_BASE|OBJECT|OCICOLL|OCIDATE|OCIDATETIME|OCIDURATION|OCIINTERVAL|OCILOBLOCATOR|OCINUMBER|OCIRAW|OCIREF|OCIREFCURSOR|OCIROWID|OCISTRING|OCITYPE|OF|OLD|ON|ONLY|OPAQUE|OPEN|OPERATOR|OPTION|OR|ORACLE|ORADATA|ORDER|ORGANIZATION|ORLANY|ORLVARY|OTHERS|OUT|OVERLAPS|OVERRIDING|PACKAGE|PARALLEL_ENABLE|PARAMETER|PARAMETERS|PARENT|PARTITION|PASCAL|PERSISTABLE|PIPE|PIPELINED|PLUGGABLE|POLYMORPHIC|PRAGMA|PRECISION|PRIOR|PRIVATE|PROCEDURE|PUBLIC|RAISE|RANGE|RAW|READ|RECORD|REF|REFERENCE|RELIES_ON|REM|REMAINDER|RENAME|RESOURCE|RESULT|RESULT_CACHE|RETURN|RETURNING|REVERSE|REVOKE|ROLLBACK|ROW|SAMPLE|SAVE|SAVEPOINT|SB1|SB2|SB4|SECOND|SEGMENT|SELECT|SELF|SEPARATE|SEQUENCE|SERIALIZABLE|SET|SHARE|SHORT|SIZE|SIZE_T|SOME|SPARSE|SQL|SQLCODE|SQLDATA|SQLNAME|SQLSTATE|STANDARD|START|STATIC|STDDEV|STORED|STRING|STRUCT|STYLE|SUBMULTISET|SUBPARTITION|SUBSTITUTABLE|SUBTYPE|SUM|SYNONYM|TABAUTH|TABLE|TDO|THE|THEN|TIME|TIMESTAMP|TIMEZONE_ABBR|TIMEZONE_HOUR|TIMEZONE_MINUTE|TIMEZONE_REGION|TO|TRAILING|TRANSACTION|TRANSACTIONAL|TRUSTED|TYPE|UB1|UB2|UB4|UNDER|UNION|UNIQUE|UNPLUG|UNSIGNED|UNTRUSTED|UPDATE|USE|USING|VALIST|VALUE|VALUES|VARIABLE|VARIANCE|VARRAY|VARYING|VIEW|VIEWS|VOID|WHEN|WHERE|WHILE|WITH|WORK|WRAPPED|WRITE|YEAR|ZONE)\b/i,operator:/:=?|=>|[<>^~!]=|\.\.|\|\||\*\*|[-+*/%<>=@]/}),e.languages.insertBefore(`plsql`,`operator`,{label:{pattern:/<<\s*\w+\s*>>/,alias:`symbol`}})}yr.displayName=`powerquery`,yr.aliases=[`mscript`,`pq`];function yr(e){e.languages.powerquery={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},"quoted-identifier":{pattern:/#"(?:[^"\r\n]|"")*"(?!")/,greedy:!0},string:{pattern:/(?:#!)?"(?:[^"\r\n]|"")*"(?!")/,greedy:!0},constant:[/\bDay\.(?:Friday|Monday|Saturday|Sunday|Thursday|Tuesday|Wednesday)\b/,/\bTraceLevel\.(?:Critical|Error|Information|Verbose|Warning)\b/,/\bOccurrence\.(?:All|First|Last)\b/,/\bOrder\.(?:Ascending|Descending)\b/,/\bRoundingMode\.(?:AwayFromZero|Down|ToEven|TowardZero|Up)\b/,/\bMissingField\.(?:Error|Ignore|UseNull)\b/,/\bQuoteStyle\.(?:Csv|None)\b/,/\bJoinKind\.(?:FullOuter|Inner|LeftAnti|LeftOuter|RightAnti|RightOuter)\b/,/\bGroupKind\.(?:Global|Local)\b/,/\bExtraValues\.(?:Error|Ignore|List)\b/,/\bJoinAlgorithm\.(?:Dynamic|LeftHash|LeftIndex|PairwiseHash|RightHash|RightIndex|SortMerge)\b/,/\bJoinSide\.(?:Left|Right)\b/,/\bPrecision\.(?:Decimal|Double)\b/,/\bRelativePosition\.From(?:End|Start)\b/,/\bTextEncoding\.(?:Ascii|BigEndianUnicode|Unicode|Utf16|Utf8|Windows)\b/,/\b(?:Any|Binary|Date|DateTime|DateTimeZone|Duration|Function|Int16|Int32|Int64|Int8|List|Logical|None|Number|Record|Table|Text|Time)\.Type\b/,/\bnull\b/],boolean:/\b(?:false|true)\b/,keyword:/\b(?:and|as|each|else|error|if|in|is|let|meta|not|nullable|optional|or|otherwise|section|shared|then|try|type)\b|#(?:binary|date|datetime|datetimezone|duration|infinity|nan|sections|shared|table|time)\b/,function:{pattern:/(^|[^#\w.])[a-z_][\w.]*(?=\s*\()/i,lookbehind:!0},"data-type":{pattern:/\b(?:any|anynonnull|binary|date|datetime|datetimezone|duration|function|list|logical|none|number|record|table|text|time)\b/,alias:`class-name`},number:{pattern:/\b0x[\da-f]+\b|(?:[+-]?(?:\b\d+\.)?\b\d+|[+-]\.\d+|(^|[^.])\B\.\d+)(?:e[+-]?\d+)?\b/i,lookbehind:!0},operator:/[-+*\/&?@^]|<(?:=>?|>)?|>=?|=>?|\.\.\.?/,punctuation:/[,;\[\](){}]/},e.languages.pq=e.languages.powerquery,e.languages.mscript=e.languages.powerquery}br.displayName=`powershell`,br.aliases=[];function br(e){(function(e){var t=e.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:null},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^\[\]])*\]|[^\[\]])*\]/i,boolean:/\$(?:false|true)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(^|\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/};t.string[0].inside={function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:t},boolean:t.boolean,variable:t.variable}})(e)}xr.displayName=`processing`,xr.aliases=[];function xr(e){e.register(S),e.languages.processing=e.languages.extend(`clike`,{keyword:/\b(?:break|case|catch|class|continue|default|else|extends|final|for|if|implements|import|new|null|private|public|return|static|super|switch|this|try|void|while)\b/,function:/\b\w+(?=\s*\()/,operator:/<[<=]?|>[>=]?|&&?|\|\|?|[%?]|[!=+\-*\/]=?/}),e.languages.insertBefore(`processing`,`number`,{constant:/\b(?!XML\b)[A-Z][A-Z\d_]+\b/,type:{pattern:/\b(?:boolean|byte|char|color|double|float|int|[A-Z]\w*)\b/,alias:`class-name`}})}Sr.displayName=`prolog`,Sr.aliases=[];function Sr(e){e.languages.prolog={comment:{pattern:/\/\*[\s\S]*?\*\/|%.*/,greedy:!0},string:{pattern:/(["'])(?:\1\1|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1(?!\1)/,greedy:!0},builtin:/\b(?:fx|fy|xf[xy]?|yfx?)\b/,function:/\b[a-z]\w*(?:(?=\()|\/\d+)/,number:/\b\d+(?:\.\d*)?/,operator:/[:\\=><\-?*@\/;+^|!$.]+|\b(?:is|mod|not|xor)\b/,punctuation:/[(){}\[\],]/}}Cr.displayName=`promql`,Cr.aliases=[];function Cr(e){(function(e){var t=[`sum`,`min`,`max`,`avg`,`group`,`stddev`,`stdvar`,`count`,`count_values`,`bottomk`,`topk`,`quantile`],n=[`on`,`ignoring`,`group_right`,`group_left`,`by`,`without`],r=t.concat(n,[`offset`]);e.languages.promql={comment:{pattern:/(^[ \t]*)#.*/m,lookbehind:!0},"vector-match":{pattern:RegExp(`((?:`+n.join(`|`)+`)\\s*)\\([^)]*\\)`),lookbehind:!0,inside:{"label-key":{pattern:/\b[^,]+\b/,alias:`attr-name`},punctuation:/[(),]/}},"context-labels":{pattern:/\{[^{}]*\}/,inside:{"label-key":{pattern:/\b[a-z_]\w*(?=\s*(?:=|![=~]))/,alias:`attr-name`},"label-value":{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0,alias:`attr-value`},punctuation:/\{|\}|=~?|![=~]|,/}},"context-range":[{pattern:/\[[\w\s:]+\]/,inside:{punctuation:/\[|\]|:/,"range-duration":{pattern:/\b(?:\d+(?:[smhdwy]|ms))+\b/i,alias:`number`}}},{pattern:/(\boffset\s+)\w+/,lookbehind:!0,inside:{"range-duration":{pattern:/\b(?:\d+(?:[smhdwy]|ms))+\b/i,alias:`number`}}}],keyword:RegExp(`\\b(?:`+r.join(`|`)+`)\\b`,`i`),function:/\b[a-z_]\w*(?=\s*\()/i,number:/[-+]?(?:(?:\b\d+(?:\.\d+)?|\B\.\d+)(?:e[-+]?\d+)?\b|\b(?:0x[0-9a-f]+|nan|inf)\b)/i,operator:/[\^*/%+-]|==|!=|<=|<|>=|>|\b(?:and|or|unless)\b/i,punctuation:/[{};()`,.[\]]/}})(e)}wr.displayName=`properties`,wr.aliases=[];function wr(e){e.languages.properties={comment:/^[ \t]*[#!].*$/m,value:{pattern:/(^[ \t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+(?: *[=:] *(?! )| ))(?:\\(?:\r\n|[\s\S])|[^\\\r\n])+/m,lookbehind:!0,alias:`attr-value`},key:{pattern:/^[ \t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+(?= *[=:]| )/m,alias:`attr-name`},punctuation:/[=:]/}}Tr.displayName=`protobuf`,Tr.aliases=[];function Tr(e){e.register(S),(function(e){var t=/\b(?:bool|bytes|double|s?fixed(?:32|64)|float|[su]?int(?:32|64)|string)\b/;e.languages.protobuf=e.languages.extend(`clike`,{"class-name":[{pattern:/(\b(?:enum|extend|message|service)\s+)[A-Za-z_]\w*(?=\s*\{)/,lookbehind:!0},{pattern:/(\b(?:rpc\s+\w+|returns)\s*\(\s*(?:stream\s+)?)\.?[A-Za-z_]\w*(?:\.[A-Za-z_]\w*)*(?=\s*\))/,lookbehind:!0}],keyword:/\b(?:enum|extend|extensions|import|message|oneof|option|optional|package|public|repeated|required|reserved|returns|rpc(?=\s+\w)|service|stream|syntax|to)\b(?!\s*=\s*\d)/,function:/\b[a-z_]\w*(?=\s*\()/i}),e.languages.insertBefore(`protobuf`,`operator`,{map:{pattern:/\bmap<\s*[\w.]+\s*,\s*[\w.]+\s*>(?=\s+[a-z_]\w*\s*[=;])/i,alias:`class-name`,inside:{punctuation:/[<>.,]/,builtin:t}},builtin:t,"positional-class-name":{pattern:/(?:\b|\B\.)[a-z_]\w*(?:\.[a-z_]\w*)*(?=\s+[a-z_]\w*\s*[=;])/i,alias:`class-name`,inside:{punctuation:/\./}},annotation:{pattern:/(\[\s*)[a-z_]\w*(?=\s*=)/i,lookbehind:!0}})})(e)}Er.displayName=`psl`,Er.aliases=[];function Er(e){e.languages.psl={comment:{pattern:/#.*/,greedy:!0},string:{pattern:/"(?:\\.|[^\\"])*"/,greedy:!0,inside:{symbol:/\\[ntrbA-Z"\\]/}},"heredoc-string":{pattern:/<<<([a-zA-Z_]\w*)[\r\n](?:.*[\r\n])*?\1\b/,alias:`string`,greedy:!0},keyword:/\b(?:__multi|__single|case|default|do|else|elsif|exit|export|for|foreach|function|if|last|line|local|next|requires|return|switch|until|while|word)\b/,constant:/\b(?:ALARM|CHART_ADD_GRAPH|CHART_DELETE_GRAPH|CHART_DESTROY|CHART_LOAD|CHART_PRINT|EOF|OFFLINE|OK|PSL_PROF_LOG|R_CHECK_HORIZ|R_CHECK_VERT|R_CLICKER|R_COLUMN|R_FRAME|R_ICON|R_LABEL|R_LABEL_CENTER|R_LIST_MULTIPLE|R_LIST_MULTIPLE_ND|R_LIST_SINGLE|R_LIST_SINGLE_ND|R_MENU|R_POPUP|R_POPUP_SCROLLED|R_RADIO_HORIZ|R_RADIO_VERT|R_ROW|R_SCALE_HORIZ|R_SCALE_VERT|R_SEP_HORIZ|R_SEP_VERT|R_SPINNER|R_TEXT_FIELD|R_TEXT_FIELD_LABEL|R_TOGGLE|TRIM_LEADING|TRIM_LEADING_AND_TRAILING|TRIM_REDUNDANT|TRIM_TRAILING|VOID|WARN)\b/,boolean:/\b(?:FALSE|False|NO|No|TRUE|True|YES|Yes|false|no|true|yes)\b/,variable:/\b(?:PslDebug|errno|exit_status)\b/,builtin:{pattern:/\b(?:PslExecute|PslFunctionCall|PslFunctionExists|PslSetOptions|_snmp_debug|acos|add_diary|annotate|annotate_get|ascii_to_ebcdic|asctime|asin|atan|atexit|batch_set|blackout|cat|ceil|chan_exists|change_state|close|code_cvt|cond_signal|cond_wait|console_type|convert_base|convert_date|convert_locale_date|cos|cosh|create|date|dcget_text|destroy|destroy_lock|dget_text|difference|dump_hist|ebcdic_to_ascii|encrypt|event_archive|event_catalog_get|event_check|event_query|event_range_manage|event_range_query|event_report|event_schedule|event_trigger|event_trigger2|execute|exists|exp|fabs|file|floor|fmod|fopen|fseek|ftell|full_discovery|get|get_chan_info|get_ranges|get_text|get_vars|getenv|gethostinfo|getpid|getpname|grep|history|history_get_retention|in_transition|index|int|internal|intersection|is_var|isnumber|join|kill|length|lines|lock|lock_info|log|log10|loge|matchline|msg_check|msg_get_format|msg_get_severity|msg_printf|msg_sprintf|ntharg|nthargf|nthline|nthlinef|num_bytes|num_consoles|pconfig|popen|poplines|pow|print|printf|proc_exists|process|random|read|readln|refresh_parameters|remote_check|remote_close|remote_event_query|remote_event_trigger|remote_file_send|remote_open|remove|replace|rindex|sec_check_priv|sec_store_get|sec_store_set|set|set_alarm_ranges|set_locale|share|sin|sinh|sleep|snmp_agent_config|snmp_agent_start|snmp_agent_stop|snmp_close|snmp_config|snmp_get|snmp_get_next|snmp_h_get|snmp_h_get_next|snmp_h_set|snmp_open|snmp_set|snmp_trap_ignore|snmp_trap_listen|snmp_trap_raise_std_trap|snmp_trap_receive|snmp_trap_register_im|snmp_trap_send|snmp_walk|sopen|sort|splitline|sprintf|sqrt|srandom|str_repeat|strcasecmp|subset|substr|system|tail|tan|tanh|text_domain|time|tmpnam|tolower|toupper|trace_psl_process|trim|union|unique|unlock|unset|va_arg|va_start|write)\b/,alias:`builtin-function`},"foreach-variable":{pattern:/(\bforeach\s+(?:(?:\w+\b|"(?:\\.|[^\\"])*")\s+){0,2})[_a-zA-Z]\w*(?=\s*\()/,lookbehind:!0,greedy:!0},function:/\b[_a-z]\w*\b(?=\s*\()/i,number:/\b(?:0x[0-9a-f]+|\d+(?:\.\d+)?)\b/i,operator:/--|\+\+|&&=?|\|\|=?|<<=?|>>=?|[=!]~|[-+*/%&|^!=<>]=?|\.|[:?]/,punctuation:/[(){}\[\];,]/}}Dr.displayName=`pug`,Dr.aliases=[];function Dr(e){e.register(C),e.register(B),(function(e){e.languages.pug={comment:{pattern:/(^([\t ]*))\/\/.*(?:(?:\r?\n|\r)\2[\t ].+)*/m,lookbehind:!0},"multiline-script":{pattern:/(^([\t ]*)script\b.*\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:e.languages.javascript},filter:{pattern:/(^([\t ]*)):.+(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:`variable`},text:/\S[\s\S]*/}},"multiline-plain-text":{pattern:/(^([\t ]*)[\w\-#.]+\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0},markup:{pattern:/(^[\t ]*)<.+/m,lookbehind:!0,inside:e.languages.markup},doctype:{pattern:/((?:^|\n)[\t ]*)doctype(?: .+)?/,lookbehind:!0},"flow-control":{pattern:/(^[\t ]*)(?:case|default|each|else|if|unless|when|while)\b(?: .+)?/m,lookbehind:!0,inside:{each:{pattern:/^each .+? in\b/,inside:{keyword:/\b(?:each|in)\b/,punctuation:/,/}},branch:{pattern:/^(?:case|default|else|if|unless|when|while)\b/,alias:`keyword`},rest:e.languages.javascript}},keyword:{pattern:/(^[\t ]*)(?:append|block|extends|include|prepend)\b.+/m,lookbehind:!0},mixin:[{pattern:/(^[\t ]*)mixin .+/m,lookbehind:!0,inside:{keyword:/^mixin/,function:/\w+(?=\s*\(|\s*$)/,punctuation:/[(),.]/}},{pattern:/(^[\t ]*)\+.+/m,lookbehind:!0,inside:{name:{pattern:/^\+\w+/,alias:`function`},rest:e.languages.javascript}}],script:{pattern:/(^[\t ]*script(?:(?:&[^(]+)?\([^)]+\))*[\t ]).+/m,lookbehind:!0,inside:e.languages.javascript},"plain-text":{pattern:/(^[\t ]*(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([^)]+\))*\/?[\t ]).+/m,lookbehind:!0},tag:{pattern:/(^[\t ]*)(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([^)]+\))*\/?:?/m,lookbehind:!0,inside:{attributes:[{pattern:/&[^(]+\([^)]+\)/,inside:e.languages.javascript},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*(?!\s))(?:\{[^}]*\}|[^,)\r\n]+)/,lookbehind:!0,inside:e.languages.javascript},"attr-name":/[\w-]+(?=\s*!?=|\s*[,)])/,punctuation:/[!=(),]+/}}],punctuation:/:/,"attr-id":/#[\w\-]+/,"attr-class":/\.[\w\-]+/}},code:[{pattern:/(^[\t ]*(?:-|!?=)).+/m,lookbehind:!0,inside:e.languages.javascript}],punctuation:/[.\-!=|]+/};for(var t=`(^([\\t ]*)):(?:(?:\\r?\\n|\\r(?!\\n))(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+`,n=[{filter:`atpl`,language:`twig`},{filter:`coffee`,language:`coffeescript`},`ejs`,`handlebars`,`less`,`livescript`,`markdown`,{filter:`sass`,language:`scss`},`stylus`],r={},i=0,a=n.length;i`,function(){return o.filter}),`m`),lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:`variable`},text:{pattern:/\S[\s\S]*/,alias:[o.language,`language-`+o.language],inside:e.languages[o.language]}}})}e.languages.insertBefore(`pug`,`filter`,r)})(e)}Or.displayName=`puppet`,Or.aliases=[];function Or(e){(function(e){e.languages.puppet={heredoc:[{pattern:/(@\("([^"\r\n\/):]+)"(?:\/[nrts$uL]*)?\).*(?:\r?\n|\r))(?:.*(?:\r?\n|\r(?!\n)))*?[ \t]*(?:\|[ \t]*)?(?:-[ \t]*)?\2/,lookbehind:!0,alias:`string`,inside:{punctuation:/(?=\S).*\S(?= *$)/}},{pattern:/(@\(([^"\r\n\/):]+)(?:\/[nrts$uL]*)?\).*(?:\r?\n|\r))(?:.*(?:\r?\n|\r(?!\n)))*?[ \t]*(?:\|[ \t]*)?(?:-[ \t]*)?\2/,lookbehind:!0,greedy:!0,alias:`string`,inside:{punctuation:/(?=\S).*\S(?= *$)/}},{pattern:/@\("?(?:[^"\r\n\/):]+)"?(?:\/[nrts$uL]*)?\)/,alias:`string`,inside:{punctuation:{pattern:/(\().+?(?=\))/,lookbehind:!0}}}],"multiline-comment":{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0,greedy:!0,alias:`comment`},regex:{pattern:/((?:\bnode\s+|[~=\(\[\{,]\s*|[=+]>\s*|^\s*))\/(?:[^\/\\]|\\[\s\S])+\/(?:[imx]+\b|\B)/,lookbehind:!0,greedy:!0,inside:{"extended-regex":{pattern:/^\/(?:[^\/\\]|\\[\s\S])+\/[im]*x[im]*$/,inside:{comment:/#.*/}}}},comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},string:{pattern:/(["'])(?:\$\{(?:[^'"}]|(["'])(?:(?!\2)[^\\]|\\[\s\S])*\2)+\}|\$(?!\{)|(?!\1)[^\\$]|\\[\s\S])*\1/,greedy:!0,inside:{"double-quoted":{pattern:/^"[\s\S]*"$/,inside:{}}}},variable:{pattern:/\$(?:::)?\w+(?:::\w+)*/,inside:{punctuation:/::/}},"attr-name":/(?:\b\w+|\*)(?=\s*=>)/,function:[{pattern:/(\.)(?!\d)\w+/,lookbehind:!0},/\b(?:contain|debug|err|fail|include|info|notice|realize|require|tag|warning)\b|\b(?!\d)\w+(?=\()/],number:/\b(?:0x[a-f\d]+|\d+(?:\.\d+)?(?:e-?\d+)?)\b/i,boolean:/\b(?:false|true)\b/,keyword:/\b(?:application|attr|case|class|consumes|default|define|else|elsif|function|if|import|inherits|node|private|produces|type|undef|unless)\b/,datatype:{pattern:/\b(?:Any|Array|Boolean|Callable|Catalogentry|Class|Collection|Data|Default|Enum|Float|Hash|Integer|NotUndef|Numeric|Optional|Pattern|Regexp|Resource|Runtime|Scalar|String|Struct|Tuple|Type|Undef|Variant)\b/,alias:`symbol`},operator:/=[=~>]?|![=~]?|<(?:<\|?|[=~|-])?|>[>=]?|->?|~>|\|>?>?|[*\/%+?]|\b(?:and|in|or)\b/,punctuation:/[\[\]{}().,;]|:+/};var t=[{pattern:/(^|[^\\])\$\{(?:[^'"{}]|\{[^}]*\}|(["'])(?:(?!\2)[^\\]|\\[\s\S])*\2)+\}/,lookbehind:!0,inside:{"short-variable":{pattern:/(^\$\{)(?!\w+\()(?:::)?\w+(?:::\w+)*/,lookbehind:!0,alias:`variable`,inside:{punctuation:/::/}},delimiter:{pattern:/^\$/,alias:`variable`},rest:e.languages.puppet}},{pattern:/(^|[^\\])\$(?:::)?\w+(?:::\w+)*/,lookbehind:!0,alias:`variable`,inside:{punctuation:/::/}}];e.languages.puppet.heredoc[0].inside.interpolation=t,e.languages.puppet.string.inside[`double-quoted`].inside.interpolation=t})(e)}kr.displayName=`pure`,kr.aliases=[];function kr(e){(function(e){e.languages.pure={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0},/#!.+/],"inline-lang":{pattern:/%<[\s\S]+?%>/,greedy:!0,inside:{lang:{pattern:/(^%< *)-\*-.+?-\*-/,lookbehind:!0,alias:`comment`},delimiter:{pattern:/^%<.*|%>$/,alias:`punctuation`}}},string:{pattern:/"(?:\\.|[^"\\\r\n])*"/,greedy:!0},number:{pattern:/((?:\.\.)?)(?:\b(?:inf|nan)\b|\b0x[\da-f]+|(?:\b(?:0b)?\d+(?:\.\d+)?|\B\.\d+)(?:e[+-]?\d+)?L?)/i,lookbehind:!0},keyword:/\b(?:NULL|ans|break|bt|case|catch|cd|clear|const|def|del|dump|else|end|exit|extern|false|force|help|if|infix[lr]?|interface|let|ls|mem|namespace|nonfix|of|otherwise|outfix|override|postfix|prefix|private|public|pwd|quit|run|save|show|stats|then|throw|trace|true|type|underride|using|when|with)\b/,function:/\b(?:abs|add_(?:addr|constdef|(?:fundef|interface|macdef|typedef)(?:_at)?|vardef)|all|any|applp?|arity|bigintp?|blob(?:_crc|_size|p)?|boolp?|byte_c?string(?:_pointer)?|byte_(?:matrix|pointer)|calloc|cat|catmap|ceil|char[ps]?|check_ptrtag|chr|clear_sentry|clearsym|closurep?|cmatrixp?|cols?|colcat(?:map)?|colmap|colrev|colvector(?:p|seq)?|complex(?:_float_(?:matrix|pointer)|_matrix(?:_view)?|_pointer|p)?|conj|cookedp?|cst|cstring(?:_(?:dup|list|vector))?|curry3?|cyclen?|del_(?:constdef|fundef|interface|macdef|typedef|vardef)|delete|diag(?:mat)?|dim|dmatrixp?|do|double(?:_matrix(?:_view)?|_pointer|p)?|dowith3?|drop|dropwhile|eval(?:cmd)?|exactp|filter|fix|fixity|flip|float(?:_matrix|_pointer)|floor|fold[lr]1?|frac|free|funp?|functionp?|gcd|get(?:_(?:byte|constdef|double|float|fundef|int(?:64)?|interface(?:_typedef)?|long|macdef|pointer|ptrtag|sentry|short|string|typedef|vardef))?|globsym|hash|head|id|im|imatrixp?|index|inexactp|infp|init|insert|int(?:_matrix(?:_view)?|_pointer|p)?|int64_(?:matrix|pointer)|integerp?|iteraten?|iterwhile|join|keys?|lambdap?|last(?:err(?:pos)?)?|lcd|list[2p]?|listmap|make_ptrtag|malloc|map|matcat|matrixp?|max|member|min|nanp|nargs|nmatrixp?|null|numberp?|ord|pack(?:ed)?|pointer(?:_cast|_tag|_type|p)?|pow|pred|ptrtag|put(?:_(?:byte|double|float|int(?:64)?|long|pointer|short|string))?|rationalp?|re|realp?|realloc|recordp?|redim|reduce(?:_with)?|refp?|repeatn?|reverse|rlistp?|round|rows?|rowcat(?:map)?|rowmap|rowrev|rowvector(?:p|seq)?|same|scan[lr]1?|sentry|sgn|short_(?:matrix|pointer)|slice|smatrixp?|sort|split|str|strcat|stream|stride|string(?:_(?:dup|list|vector)|p)?|subdiag(?:mat)?|submat|subseq2?|substr|succ|supdiag(?:mat)?|symbolp?|tail|take|takewhile|thunkp?|transpose|trunc|tuplep?|typep|ubyte|uint(?:64)?|ulong|uncurry3?|unref|unzip3?|update|ushort|vals?|varp?|vector(?:p|seq)?|void|zip3?|zipwith3?)\b/,special:{pattern:/\b__[a-z]+__\b/i,alias:`builtin`},operator:/(?:[!"#$%&'*+,\-.\/:<=>?@\\^`|~\u00a1-\u00bf\u00d7-\u00f7\u20d0-\u2bff]|\b_+\b)+|\b(?:and|div|mod|not|or)\b/,punctuation:/[(){}\[\];,|]/};var t=[`c`,{lang:`c++`,alias:`cpp`},`fortran`],n=`%< *-\\*- *\\d* *-\\*-[\\s\\S]+?%>`;t.forEach(function(t){var r=t;if(typeof t!=`string`&&(r=t.alias,t=t.lang),e.languages[r]){var i={};i[`inline-lang-`+r]={pattern:RegExp(n.replace(``,t.replace(/([.+*?\/\\(){}\[\]])/g,`\\$1`)),`i`),inside:e.util.clone(e.languages.pure[`inline-lang`].inside)},i[`inline-lang-`+r].inside.rest=e.util.clone(e.languages[r]),e.languages.insertBefore(`pure`,`inline-lang`,i)}}),e.languages.c&&(e.languages.pure[`inline-lang`].inside.rest=e.util.clone(e.languages.c))})(e)}Ar.displayName=`purebasic`,Ar.aliases=[`pbfasm`];function Ar(e){e.register(S),e.languages.purebasic=e.languages.extend(`clike`,{comment:/;.*/,keyword:/\b(?:align|and|as|break|calldebugger|case|compilercase|compilerdefault|compilerelse|compilerelseif|compilerendif|compilerendselect|compilererror|compilerif|compilerselect|continue|data|datasection|debug|debuglevel|declare|declarec|declarecdll|declaredll|declaremodule|default|define|dim|disableasm|disabledebugger|disableexplicit|else|elseif|enableasm|enabledebugger|enableexplicit|end|enddatasection|enddeclaremodule|endenumeration|endif|endimport|endinterface|endmacro|endmodule|endprocedure|endselect|endstructure|endstructureunion|endwith|enumeration|extends|fakereturn|for|foreach|forever|global|gosub|goto|if|import|importc|includebinary|includefile|includepath|interface|macro|module|newlist|newmap|next|not|or|procedure|procedurec|procedurecdll|proceduredll|procedurereturn|protected|prototype|prototypec|read|redim|repeat|restore|return|runtime|select|shared|static|step|structure|structureunion|swap|threaded|to|until|wend|while|with|xincludefile|xor)\b/i,function:/\b\w+(?:\.\w+)?\s*(?=\()/,number:/(?:\$[\da-f]+|\b-?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)\b/i,operator:/(?:@\*?|\?|\*)\w+\$?|-[>-]?|\+\+?|!=?|<>?=?|==?|&&?|\|?\||[~^%?*/@]/}),e.languages.insertBefore(`purebasic`,`keyword`,{tag:/#\w+\$?/,asm:{pattern:/(^[\t ]*)!.*/m,lookbehind:!0,alias:`tag`,inside:{comment:/;.*/,string:{pattern:/(["'`])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"label-reference-anonymous":{pattern:/(!\s*j[a-z]+\s+)@[fb]/i,lookbehind:!0,alias:`fasm-label`},"label-reference-addressed":{pattern:/(!\s*j[a-z]+\s+)[A-Z._?$@][\w.?$@~#]*/i,lookbehind:!0,alias:`fasm-label`},keyword:[/\b(?:extern|global)\b[^;\r\n]*/i,/\b(?:CPU|DEFAULT|FLOAT)\b.*/],function:{pattern:/^([\t ]*!\s*)[\da-z]+(?=\s|$)/im,lookbehind:!0},"function-inline":{pattern:/(:\s*)[\da-z]+(?=\s)/i,lookbehind:!0,alias:`function`},label:{pattern:/^([\t ]*!\s*)[A-Za-z._?$@][\w.?$@~#]*(?=:)/m,lookbehind:!0,alias:`fasm-label`},register:/\b(?:st\d|[xyz]mm\d\d?|[cdt]r\d|r\d\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(?:bp|di|si|sp)|[cdefgs]s|mm\d+)\b/i,number:/(?:\b|-|(?=\$))(?:0[hx](?:[\da-f]*\.)?[\da-f]+(?:p[+-]?\d+)?|\d[\da-f]+[hx]|\$\d[\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\d+|(?:\d+(?:\.\d+)?|\.\d+)(?:\.?e[+-]?\d+)?[dt]?)\b/i,operator:/[\[\]*+\-/%<>=&|$!,.:]/}}}),delete e.languages.purebasic[`class-name`],delete e.languages.purebasic.boolean,e.languages.pbfasm=e.languages.purebasic}jr.displayName=`purescript`,jr.aliases=[`purs`];function jr(e){e.register(Ft),e.languages.purescript=e.languages.extend(`haskell`,{keyword:/\b(?:ado|case|class|data|derive|do|else|forall|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\b|∀/,"import-statement":{pattern:/(^[\t ]*)import\s+[A-Z][\w']*(?:\.[A-Z][\w']*)*(?:\s+as\s+[A-Z][\w']*(?:\.[A-Z][\w']*)*)?(?:\s+hiding\b)?/m,lookbehind:!0,inside:{keyword:/\b(?:as|hiding|import)\b/,punctuation:/\./}},builtin:/\b(?:absurd|add|ap|append|apply|between|bind|bottom|clamp|compare|comparing|compose|conj|const|degree|discard|disj|div|eq|flap|flip|gcd|identity|ifM|join|lcm|liftA1|liftM1|map|max|mempty|min|mod|mul|negate|not|notEq|one|otherwise|recip|show|sub|top|unit|unless|unlessM|void|when|whenM|zero)\b/,operator:[e.languages.haskell.operator[0],e.languages.haskell.operator[2],/[\xa2-\xa6\xa8\xa9\xac\xae-\xb1\xb4\xb8\xd7\xf7\u02c2-\u02c5\u02d2-\u02df\u02e5-\u02eb\u02ed\u02ef-\u02ff\u0375\u0384\u0385\u03f6\u0482\u058d-\u058f\u0606-\u0608\u060b\u060e\u060f\u06de\u06e9\u06fd\u06fe\u07f6\u07fe\u07ff\u09f2\u09f3\u09fa\u09fb\u0af1\u0b70\u0bf3-\u0bfa\u0c7f\u0d4f\u0d79\u0e3f\u0f01-\u0f03\u0f13\u0f15-\u0f17\u0f1a-\u0f1f\u0f34\u0f36\u0f38\u0fbe-\u0fc5\u0fc7-\u0fcc\u0fce\u0fcf\u0fd5-\u0fd8\u109e\u109f\u1390-\u1399\u166d\u17db\u1940\u19de-\u19ff\u1b61-\u1b6a\u1b74-\u1b7c\u1fbd\u1fbf-\u1fc1\u1fcd-\u1fcf\u1fdd-\u1fdf\u1fed-\u1fef\u1ffd\u1ffe\u2044\u2052\u207a-\u207c\u208a-\u208c\u20a0-\u20bf\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211e-\u2123\u2125\u2127\u2129\u212e\u213a\u213b\u2140-\u2144\u214a-\u214d\u214f\u218a\u218b\u2190-\u2307\u230c-\u2328\u232b-\u2426\u2440-\u244a\u249c-\u24e9\u2500-\u2767\u2794-\u27c4\u27c7-\u27e5\u27f0-\u2982\u2999-\u29d7\u29dc-\u29fb\u29fe-\u2b73\u2b76-\u2b95\u2b97-\u2bff\u2ce5-\u2cea\u2e50\u2e51\u2e80-\u2e99\u2e9b-\u2ef3\u2f00-\u2fd5\u2ff0-\u2ffb\u3004\u3012\u3013\u3020\u3036\u3037\u303e\u303f\u309b\u309c\u3190\u3191\u3196-\u319f\u31c0-\u31e3\u3200-\u321e\u322a-\u3247\u3250\u3260-\u327f\u328a-\u32b0\u32c0-\u33ff\u4dc0-\u4dff\ua490-\ua4c6\ua700-\ua716\ua720\ua721\ua789\ua78a\ua828-\ua82b\ua836-\ua839\uaa77-\uaa79\uab5b\uab6a\uab6b\ufb29\ufbb2-\ufbc1\ufdfc\ufdfd\ufe62\ufe64-\ufe66\ufe69\uff04\uff0b\uff1c-\uff1e\uff3e\uff40\uff5c\uff5e\uffe0-\uffe6\uffe8-\uffee\ufffc\ufffd]/]}),e.languages.purs=e.languages.purescript}Mr.displayName=`python`,Mr.aliases=[`py`];function Mr(e){e.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:`punctuation`},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:`string`},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:[`annotation`,`punctuation`],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},e.languages.python[`string-interpolation`].inside.interpolation.inside.rest=e.languages.python,e.languages.py=e.languages.python}Nr.displayName=`q`,Nr.aliases=[];function Nr(e){e.languages.q={string:/"(?:\\.|[^"\\\r\n])*"/,comment:[{pattern:/([\t )\]}])\/.*/,lookbehind:!0,greedy:!0},{pattern:/(^|\r?\n|\r)\/[\t ]*(?:(?:\r?\n|\r)(?:.*(?:\r?\n|\r(?!\n)))*?(?:\\(?=[\t ]*(?:\r?\n|\r))|$)|\S.*)/,lookbehind:!0,greedy:!0},{pattern:/^\\[\t ]*(?:\r?\n|\r)[\s\S]+/m,greedy:!0},{pattern:/^#!.+/m,greedy:!0}],symbol:/`(?::\S+|[\w.]*)/,datetime:{pattern:/0N[mdzuvt]|0W[dtz]|\d{4}\.\d\d(?:m|\.\d\d(?:T(?:\d\d(?::\d\d(?::\d\d(?:[.:]\d\d\d)?)?)?)?)?[dz]?)|\d\d:\d\d(?::\d\d(?:[.:]\d\d\d)?)?[uvt]?/,alias:`number`},number:/\b(?![01]:)(?:0N[hje]?|0W[hj]?|0[wn]|0x[\da-fA-F]+|\d+(?:\.\d*)?(?:e[+-]?\d+)?[hjfeb]?)/,keyword:/\\\w+\b|\b(?:abs|acos|aj0?|all|and|any|asc|asin|asof|atan|attr|avgs?|binr?|by|ceiling|cols|cor|cos|count|cov|cross|csv|cut|delete|deltas|desc|dev|differ|distinct|div|do|dsave|ej|enlist|eval|except|exec|exit|exp|fby|fills|first|fkeys|flip|floor|from|get|getenv|group|gtime|hclose|hcount|hdel|hopen|hsym|iasc|identity|idesc|if|ij|in|insert|inter|inv|keys?|last|like|list|ljf?|load|log|lower|lsq|ltime|ltrim|mavg|maxs?|mcount|md5|mdev|med|meta|mins?|mmax|mmin|mmu|mod|msum|neg|next|not|null|or|over|parse|peach|pj|plist|prds?|prev|prior|rand|rank|ratios|raze|read0|read1|reciprocal|reval|reverse|rload|rotate|rsave|rtrim|save|scan|scov|sdev|select|set|setenv|show|signum|sin|sqrt|ssr?|string|sublist|sums?|sv|svar|system|tables|tan|til|trim|txf|type|uj|ungroup|union|update|upper|upsert|value|var|views?|vs|wavg|where|while|within|wj1?|wsum|ww|xasc|xbar|xcols?|xdesc|xexp|xgroup|xkey|xlog|xprev|xrank)\b/,adverb:{pattern:/['\/\\]:?|\beach\b/,alias:`function`},verb:{pattern:/(?:\B\.\B|\b[01]:|<[=>]?|>=?|[:+\-*%,!?~=|$&#@^]):?|\b_\b:?/,alias:`operator`},punctuation:/[(){}\[\];.]/}}Pr.displayName=`qml`,Pr.aliases=[];function Pr(e){e.register(C),(function(e){for(var t=`"(?:\\\\.|[^\\\\"\\r\\n])*"|'(?:\\\\.|[^\\\\'\\r\\n])*'`,n=`\\/\\/.*(?!.)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/`,r=`(?:[^\\\\()[\\]{}"'/]||\\/(?![*/])||\\(*\\)|\\[*\\]|\\{*\\}|\\\\[\\s\\S])`.replace(//g,function(){return t}).replace(//g,function(){return n}),i=0;i<2;i++)r=r.replace(//g,function(){return r});r=r.replace(//g,`[^\\s\\S]`),e.languages.qml={comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\//,greedy:!0},"javascript-function":{pattern:RegExp(`((?:^|;)[ \\t]*)function\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*\\(*\\)\\s*\\{*\\}`.replace(//g,function(){return r}),`m`),lookbehind:!0,greedy:!0,alias:`language-javascript`,inside:e.languages.javascript},"class-name":{pattern:/((?:^|[:;])[ \t]*)(?!\d)\w+(?=[ \t]*\{|[ \t]+on\b)/m,lookbehind:!0},property:[{pattern:/((?:^|[;{])[ \t]*)(?!\d)\w+(?:\.\w+)*(?=[ \t]*:)/m,lookbehind:!0},{pattern:/((?:^|[;{])[ \t]*)property[ \t]+(?!\d)\w+(?:\.\w+)*[ \t]+(?!\d)\w+(?:\.\w+)*(?=[ \t]*:)/m,lookbehind:!0,inside:{keyword:/^property/,property:/\w+(?:\.\w+)*/}}],"javascript-expression":{pattern:RegExp(`(:[ \\t]*)(?![\\s;}[])(?:(?!$|[;}]))+`.replace(//g,function(){return r}),`m`),lookbehind:!0,greedy:!0,alias:`language-javascript`,inside:e.languages.javascript},string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},keyword:/\b(?:as|import|on)\b/,punctuation:/[{}[\]:;,]/}})(e)}Fr.displayName=`qore`,Fr.aliases=[];function Fr(e){e.register(S),e.languages.qore=e.languages.extend(`clike`,{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:\/\/|#).*)/,lookbehind:!0},string:{pattern:/("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},keyword:/\b(?:abstract|any|assert|binary|bool|boolean|break|byte|case|catch|char|class|code|const|continue|data|default|do|double|else|enum|extends|final|finally|float|for|goto|hash|if|implements|import|inherits|instanceof|int|interface|long|my|native|new|nothing|null|object|our|own|private|reference|rethrow|return|short|soft(?:bool|date|float|int|list|number|string)|static|strictfp|string|sub|super|switch|synchronized|this|throw|throws|transient|try|void|volatile|while)\b/,boolean:/\b(?:false|true)\b/i,function:/\$?\b(?!\d)\w+(?=\()/,number:/\b(?:0b[01]+|0x(?:[\da-f]*\.)?[\da-fp\-]+|(?:\d+(?:\.\d+)?|\.\d+)(?:e\d+)?[df]|(?:\d+(?:\.\d+)?|\.\d+))\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|[!=](?:==?|~)?|>>?=?|<(?:=>?|<=?)?|&[&=]?|\|[|=]?|[*\/%^]=?|[~?])/,lookbehind:!0},variable:/\$(?!\d)\w+\b/})}Ir.displayName=`qsharp`,Ir.aliases=[`qs`];function Ir(e){e.register(S),(function(e){function t(e,t){return e.replace(/<<(\d+)>>/g,function(e,n){return`(?:`+t[+n]+`)`})}function n(e,n,r){return RegExp(t(e,n),r||``)}function r(e,t){for(var n=0;n>/g,function(){return`(?:`+e+`)`});return e.replace(/<>/g,`[^\\s\\S]`)}var i={type:`Adj BigInt Bool Ctl Double false Int One Pauli PauliI PauliX PauliY PauliZ Qubit Range Result String true Unit Zero`,other:`Adjoint adjoint apply as auto body borrow borrowing Controlled controlled distribute elif else fail fixup for function if in internal intrinsic invert is let mutable namespace new newtype open operation repeat return self set until use using while within`};function a(e){return`\\b(?:`+e.trim().replace(/ /g,`|`)+`)\\b`}var o=RegExp(a(i.type+` `+i.other)),s=t(`<<0>>(?:\\s*\\.\\s*<<0>>)*`,[`\\b[A-Za-z_]\\w*\\b`]),c={keyword:o,punctuation:/[<>()?,.:[\]]/},l=`"(?:\\\\.|[^\\\\"])*"`;e.languages.qsharp=e.languages.extend(`clike`,{comment:/\/\/.*/,string:[{pattern:n(`(^|[^$\\\\])<<0>>`,[l]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:n(`(\\b(?:as|open)\\s+)<<0>>(?=\\s*(?:;|as\\b))`,[s]),lookbehind:!0,inside:c},{pattern:n(`(\\bnamespace\\s+)<<0>>(?=\\s*\\{)`,[s]),lookbehind:!0,inside:c}],keyword:o,number:/(?:\b0(?:x[\da-f]+|b[01]+|o[0-7]+)|(?:\B\.\d+|\b\d+(?:\.\d*)?)(?:e[-+]?\d+)?)l?\b/i,operator:/\band=|\bor=|\band\b|\bnot\b|\bor\b|<[-=]|[-=]>|>>>=?|<<<=?|\^\^\^=?|\|\|\|=?|&&&=?|w\/=?|~~~|[*\/+\-^=!%]=?/,punctuation:/::|[{}[\];(),.:]/}),e.languages.insertBefore(`qsharp`,`number`,{range:{pattern:/\.\./,alias:`operator`}});var u=r(t(`\\{(?:[^"{}]|<<0>>|<>)*\\}`,[l]),2);e.languages.insertBefore(`qsharp`,`string`,{"interpolation-string":{pattern:n(`\\$"(?:\\\\.|<<0>>|[^\\\\"{])*"`,[u]),greedy:!0,inside:{interpolation:{pattern:n(`((?:^|[^\\\\])(?:\\\\\\\\)*)<<0>>`,[u]),lookbehind:!0,inside:{punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:`language-qsharp`,inside:e.languages.qsharp}}},string:/[\s\S]+/}}})})(e),e.languages.qs=e.languages.qsharp}Lr.displayName=`r`,Lr.aliases=[];function Lr(e){e.languages.r={comment:/#.*/,string:{pattern:/(['"])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"percent-operator":{pattern:/%[^%\s]*%/,alias:`operator`},boolean:/\b(?:FALSE|TRUE)\b/,ellipsis:/\.\.(?:\.|\d+)/,number:[/\b(?:Inf|NaN)\b/,/(?:\b0x[\dA-Fa-f]+(?:\.\d*)?|\b\d+(?:\.\d*)?|\B\.\d+)(?:[EePp][+-]?\d+)?[iL]?/],keyword:/\b(?:NA|NA_character_|NA_complex_|NA_integer_|NA_real_|NULL|break|else|for|function|if|in|next|repeat|while)\b/,operator:/->?>?|<(?:=|=!]=?|::?|&&?|\|\|?|[+*\/^$@~]/,punctuation:/[(){}\[\],;]/}}Rr.displayName=`racket`,Rr.aliases=[`rkt`];function Rr(e){e.register(Cn),e.languages.racket=e.languages.extend(`scheme`,{"lambda-parameter":{pattern:/([(\[]lambda\s+[(\[])[^()\[\]'\s]+/,lookbehind:!0}}),e.languages.insertBefore(`racket`,`string`,{lang:{pattern:/^#lang.+/m,greedy:!0,alias:`keyword`}}),e.languages.rkt=e.languages.racket}zr.displayName=`reason`,zr.aliases=[];function zr(e){e.register(S),e.languages.reason=e.languages.extend(`clike`,{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),e.languages.insertBefore(`reason`,`class-name`,{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:`symbol`}}),delete e.languages.reason.function}Br.displayName=`regex`,Br.aliases=[];function Br(e){(function(e){var t={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:`escape`},n=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/,r={pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:`class-name`},i={pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:`class-name`},a=`(?:[^\\\\-]|`+n.source+`)`,o=RegExp(a+`-`+a),s={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:`variable`};e.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:`operator`},"char-class-punctuation":{pattern:/^\[|\]$/,alias:`punctuation`},range:{pattern:o,inside:{escape:n,"range-punctuation":{pattern:/-/,alias:`operator`}}},"special-escape":t,"char-set":i,escape:n}},"special-escape":t,"char-set":r,backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:`keyword`},{pattern:/\\k<[^<>']+>/,alias:`keyword`,inside:{"group-name":s}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:`function`},escape:n,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|:=]=?|!=|\b_\b/,punctuation:/[,;.\[\]{}()]/}}Hr.displayName=`renpy`,Hr.aliases=[`rpy`];function Hr(e){e.languages.renpy={comment:{pattern:/(^|[^\\])#.+/,lookbehind:!0},string:{pattern:/("""|''')[\s\S]+?\1|("|')(?:\\.|(?!\2)[^\\])*\2|(?:^#?(?:(?:[0-9a-fA-F]){3}|[0-9a-fA-F]{6})$)/m,greedy:!0},function:/\b[a-z_]\w*(?=\()/i,property:/\b(?:Update|UpdateVersion|action|activate_sound|adv_nvl_transition|after_load_transition|align|alpha|alt|anchor|antialias|area|auto|background|bar_invert|bar_resizing|bar_vertical|black_color|bold|bottom_bar|bottom_gutter|bottom_margin|bottom_padding|box_reverse|box_wrap|can_update|caret|child|color|crop|default_afm_enable|default_afm_time|default_fullscreen|default_text_cps|developer|directory_name|drag_handle|drag_joined|drag_name|drag_raise|draggable|dragged|drop_shadow|drop_shadow_color|droppable|dropped|easein|easeout|edgescroll|end_game_transition|end_splash_transition|enter_replay_transition|enter_sound|enter_transition|enter_yesno_transition|executable_name|exit_replay_transition|exit_sound|exit_transition|exit_yesno_transition|fadein|fadeout|first_indent|first_spacing|fit_first|focus|focus_mask|font|foreground|game_main_transition|get_installed_packages|google_play_key|google_play_salt|ground|has_music|has_sound|has_voice|height|help|hinting|hover|hover_background|hover_color|hover_sound|hovered|hyperlink_functions|idle|idle_color|image_style|include_update|insensitive|insensitive_background|insensitive_color|inside|intra_transition|italic|justify|kerning|keyboard_focus|language|layer_clipping|layers|layout|left_bar|left_gutter|left_margin|left_padding|length|line_leading|line_overlap_split|line_spacing|linear|main_game_transition|main_menu_music|maximum|min_width|minimum|minwidth|modal|mouse|mousewheel|name|narrator_menu|newline_indent|nvl_adv_transition|offset|order_reverse|outlines|overlay_functions|pos|position|prefix|radius|range|rest_indent|right_bar|right_gutter|right_margin|right_padding|rotate|rotate_pad|ruby_style|sample_sound|save_directory|say_attribute_transition|screen_height|screen_width|scrollbars|selected_hover|selected_hover_color|selected_idle|selected_idle_color|selected_insensitive|show_side_image|show_two_window|side_spacing|side_xpos|side_ypos|size|size_group|slow_cps|slow_cps_multiplier|spacing|strikethrough|subpixel|text_align|text_style|text_xpos|text_y_fudge|text_ypos|thumb|thumb_offset|thumb_shadow|thumbnail_height|thumbnail_width|time|top_bar|top_gutter|top_margin|top_padding|translations|underline|unscrollable|update|value|version|version_name|version_tuple|vertical|width|window_hide_transition|window_icon|window_left_padding|window_show_transition|window_title|windows_icon|xadjustment|xalign|xanchor|xanchoraround|xaround|xcenter|xfill|xinitial|xmargin|xmaximum|xminimum|xoffset|xofsset|xpadding|xpos|xsize|xzoom|yadjustment|yalign|yanchor|yanchoraround|yaround|ycenter|yfill|yinitial|ymargin|ymaximum|yminimum|yoffset|ypadding|ypos|ysize|ysizexysize|yzoom|zoom|zorder)\b/,tag:/\b(?:bar|block|button|buttoscreenn|drag|draggroup|fixed|frame|grid|[hv]box|hotbar|hotspot|image|imagebutton|imagemap|input|key|label|menu|mm_menu_frame|mousearea|nvl|parallel|screen|self|side|tag|text|textbutton|timer|vbar|viewport|window)\b|\$/,keyword:/\b(?:None|add|adjustment|alignaround|allow|angle|animation|around|as|assert|behind|box_layout|break|build|cache|call|center|changed|child_size|choice|circles|class|clear|clicked|clipping|clockwise|config|contains|continue|corner1|corner2|counterclockwise|def|default|define|del|delay|disabled|disabled_text|dissolve|elif|else|event|except|exclude|exec|expression|fade|finally|for|from|function|global|gm_root|has|hide|id|if|import|in|init|is|jump|knot|lambda|left|less_rounded|mm_root|movie|music|null|on|onlayer|pass|pause|persistent|play|print|python|queue|raise|random|renpy|repeat|return|right|rounded_window|scene|scope|set|show|slow|slow_abortable|slow_done|sound|stop|store|style|style_group|substitute|suffix|theme|transform|transform_anchor|transpose|try|ui|unhovered|updater|use|voice|while|widget|widget_hover|widget_selected|widget_text|yield)\b/,boolean:/\b(?:[Ff]alse|[Tt]rue)\b/,number:/(?:\b(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*(?:\.\d*)?)|\B\.\d+)(?:e[+-]?\d+)?j?/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:and|at|not|or|with)\b/,punctuation:/[{}[\];(),.:]/},e.languages.rpy=e.languages.renpy}Ur.displayName=`rescript`,Ur.aliases=[`res`];function Ur(e){e.languages.rescript={comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},char:{pattern:/'(?:[^\r\n\\]|\\(?:.|\w+))'/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*|@[a-z.]*|#[A-Za-z]\w*|#\d/,function:{pattern:/[a-zA-Z]\w*(?=\()|(\.)[a-z]\w*/,lookbehind:!0},number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,boolean:/\b(?:false|true)\b/,"attr-value":/[A-Za-z]\w*(?==)/,constant:{pattern:/(\btype\s+)[a-z]\w*/,lookbehind:!0},tag:{pattern:/(<)[a-z]\w*|(?:<\/)[a-z]\w*/,lookbehind:!0,inside:{operator:/<|>|\//}},keyword:/\b(?:and|as|assert|begin|bool|class|constraint|do|done|downto|else|end|exception|external|float|for|fun|function|if|in|include|inherit|initializer|int|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|string|switch|then|to|try|type|when|while|with)\b/,operator:/\.{3}|:[:=]?|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/,punctuation:/[(){}[\],;.]/},e.languages.insertBefore(`rescript`,`string`,{"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:`string`},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:`tag`},rest:e.languages.rescript}},string:/[\s\S]+/}}}),e.languages.res=e.languages.rescript}Wr.displayName=`rest`,Wr.aliases=[];function Wr(e){e.languages.rest={table:[{pattern:/(^[\t ]*)(?:\+[=-]+)+\+(?:\r?\n|\r)(?:\1[+|].+[+|](?:\r?\n|\r))+\1(?:\+[=-]+)+\+/m,lookbehind:!0,inside:{punctuation:/\||(?:\+[=-]+)+\+/}},{pattern:/(^[\t ]*)=+ [ =]*=(?:(?:\r?\n|\r)\1.+)+(?:\r?\n|\r)\1=+ [ =]*=(?=(?:\r?\n|\r){2}|\s*$)/m,lookbehind:!0,inside:{punctuation:/[=-]+/}}],"substitution-def":{pattern:/(^[\t ]*\.\. )\|(?:[^|\s](?:[^|]*[^|\s])?)\| [^:]+::/m,lookbehind:!0,inside:{substitution:{pattern:/^\|(?:[^|\s]|[^|\s][^|]*[^|\s])\|/,alias:`attr-value`,inside:{punctuation:/^\||\|$/}},directive:{pattern:/( )(?! )[^:]+::/,lookbehind:!0,alias:`function`,inside:{punctuation:/::$/}}}},"link-target":[{pattern:/(^[\t ]*\.\. )\[[^\]]+\]/m,lookbehind:!0,alias:`string`,inside:{punctuation:/^\[|\]$/}},{pattern:/(^[\t ]*\.\. )_(?:`[^`]+`|(?:[^:\\]|\\.)+):/m,lookbehind:!0,alias:`string`,inside:{punctuation:/^_|:$/}}],directive:{pattern:/(^[\t ]*\.\. )[^:]+::/m,lookbehind:!0,alias:`function`,inside:{punctuation:/::$/}},comment:{pattern:/(^[\t ]*\.\.)(?:(?: .+)?(?:(?:\r?\n|\r).+)+| .+)(?=(?:\r?\n|\r){2}|$)/m,lookbehind:!0},title:[{pattern:/^(([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\2+)(?:\r?\n|\r).+(?:\r?\n|\r)\1$/m,inside:{punctuation:/^[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+|[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+$/,important:/.+/}},{pattern:/(^|(?:\r?\n|\r){2}).+(?:\r?\n|\r)([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\2+(?=\r?\n|\r|$)/,lookbehind:!0,inside:{punctuation:/[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+$/,important:/.+/}}],hr:{pattern:/((?:\r?\n|\r){2})([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\2{3,}(?=(?:\r?\n|\r){2})/,lookbehind:!0,alias:`punctuation`},field:{pattern:/(^[\t ]*):[^:\r\n]+:(?= )/m,lookbehind:!0,alias:`attr-name`},"command-line-option":{pattern:/(^[\t ]*)(?:[+-][a-z\d]|(?:--|\/)[a-z\d-]+)(?:[ =](?:[a-z][\w-]*|<[^<>]+>))?(?:, (?:[+-][a-z\d]|(?:--|\/)[a-z\d-]+)(?:[ =](?:[a-z][\w-]*|<[^<>]+>))?)*(?=(?:\r?\n|\r)? {2,}\S)/im,lookbehind:!0,alias:`symbol`},"literal-block":{pattern:/::(?:\r?\n|\r){2}([ \t]+)(?![ \t]).+(?:(?:\r?\n|\r)\1.+)*/,inside:{"literal-block-punctuation":{pattern:/^::/,alias:`punctuation`}}},"quoted-literal-block":{pattern:/::(?:\r?\n|\r){2}([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]).*(?:(?:\r?\n|\r)\1.*)*/,inside:{"literal-block-punctuation":{pattern:/^(?:::|([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\1*)/m,alias:`punctuation`}}},"list-bullet":{pattern:/(^[\t ]*)(?:[*+\-•‣⁃]|\(?(?:\d+|[a-z]|[ivxdclm]+)\)|(?:\d+|[a-z]|[ivxdclm]+)\.)(?= )/im,lookbehind:!0,alias:`punctuation`},"doctest-block":{pattern:/(^[\t ]*)>>> .+(?:(?:\r?\n|\r).+)*/m,lookbehind:!0,inside:{punctuation:/^>>>/}},inline:[{pattern:/(^|[\s\-:\/'"<(\[{])(?::[^:]+:`.*?`|`.*?`:[^:]+:|(\*\*?|``?|\|)(?!\s)(?:(?!\2).)*\S\2(?=[\s\-.,:;!?\\\/'")\]}]|$))/m,lookbehind:!0,inside:{bold:{pattern:/(^\*\*).+(?=\*\*$)/,lookbehind:!0},italic:{pattern:/(^\*).+(?=\*$)/,lookbehind:!0},"inline-literal":{pattern:/(^``).+(?=``$)/,lookbehind:!0,alias:`symbol`},role:{pattern:/^:[^:]+:|:[^:]+:$/,alias:`function`,inside:{punctuation:/^:|:$/}},"interpreted-text":{pattern:/(^`).+(?=`$)/,lookbehind:!0,alias:`attr-value`},substitution:{pattern:/(^\|).+(?=\|$)/,lookbehind:!0,alias:`attr-value`},punctuation:/\*\*?|``?|\|/}}],link:[{pattern:/\[[^\[\]]+\]_(?=[\s\-.,:;!?\\\/'")\]}]|$)/,alias:`string`,inside:{punctuation:/^\[|\]_$/}},{pattern:/(?:\b[a-z\d]+(?:[_.:+][a-z\d]+)*_?_|`[^`]+`_?_|_`[^`]+`)(?=[\s\-.,:;!?\\\/'")\]}]|$)/i,alias:`string`,inside:{punctuation:/^_?`|`$|`?_?_$/}}],punctuation:{pattern:/(^[\t ]*)(?:\|(?= |$)|(?:---?|—|\.\.|__)(?= )|\.\.$)/m,lookbehind:!0}}}Gr.displayName=`rip`,Gr.aliases=[];function Gr(e){e.languages.rip={comment:{pattern:/#.*/,greedy:!0},char:{pattern:/\B`[^\s`'",.:;#\/\\()<>\[\]{}]\b/,greedy:!0},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},regex:{pattern:/(^|[^/])\/(?!\/)(?:\[[^\n\r\]]*\]|\\.|[^/\\\r\n\[])+\/(?=\s*(?:$|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},keyword:/(?:=>|->)|\b(?:case|catch|class|else|exit|finally|if|raise|return|switch|try)\b/,builtin:/@|\bSystem\b/,boolean:/\b(?:false|true)\b/,date:/\b\d{4}-\d{2}-\d{2}\b/,time:/\b\d{2}:\d{2}:\d{2}\b/,datetime:/\b\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\b/,symbol:/:[^\d\s`'",.:;#\/\\()<>\[\]{}][^\s`'",.:;#\/\\()<>\[\]{}]*/,number:/[+-]?\b(?:\d+\.\d+|\d+)\b/,punctuation:/(?:\.{2,3})|[`,.:;=\/\\()<>\[\]{}]/,reference:/[^\d\s`'",.:;#\/\\()<>\[\]{}][^\s`'",.:;#\/\\()<>\[\]{}]*/}}Kr.displayName=`roboconf`,Kr.aliases=[];function Kr(e){e.languages.roboconf={comment:/#.*/,keyword:{pattern:/(^|\s)(?:(?:external|import)\b|(?:facet|instance of)(?=[ \t]+[\w-]+[ \t]*\{))/,lookbehind:!0},component:{pattern:/[\w-]+(?=[ \t]*\{)/,alias:`variable`},property:/[\w.-]+(?=[ \t]*:)/,value:{pattern:/(=[ \t]*(?![ \t]))[^,;]+/,lookbehind:!0,alias:`attr-value`},optional:{pattern:/\(optional\)/,alias:`builtin`},wildcard:{pattern:/(\.)\*/,lookbehind:!0,alias:`operator`},punctuation:/[{},.;:=]/}}qr.displayName=`robotframework`,qr.aliases=[`robot`];function qr(e){(function(e){var t={pattern:/(^[ \t]*| {2}|\t)#.*/m,lookbehind:!0,greedy:!0},n={pattern:/((?:^|[^\\])(?:\\{2})*)[$@&%]\{(?:[^{}\r\n]|\{[^{}\r\n]*\})*\}/,lookbehind:!0,inside:{punctuation:/^[$@&%]\{|\}$/}};function r(e,r){var i={};for(var a in i[`section-header`]={pattern:/^ ?\*{3}.+?\*{3}/,alias:`keyword`},r)i[a]=r[a];return i.tag={pattern:/([\r\n](?: {2}|\t)[ \t]*)\[[-\w]+\]/,lookbehind:!0,inside:{punctuation:/\[|\]/}},i.variable=n,i.comment=t,{pattern:RegExp(`^ ?\\*{3}[ \\t]*[ \\t]*\\*{3}(?:.|[\\r\\n](?!\\*{3}))*`.replace(//g,function(){return e}),`im`),alias:`section`,inside:i}}var i={pattern:/(\[Documentation\](?: {2}|\t)[ \t]*)(?![ \t]|#)(?:.|(?:\r\n?|\n)[ \t]*\.{3})+/,lookbehind:!0,alias:`string`},a={pattern:/([\r\n] ?)(?!#)(?:\S(?:[ \t]\S)*)+/,lookbehind:!0,alias:`function`,inside:{variable:n}},o={pattern:/([\r\n](?: {2}|\t)[ \t]*)(?!\[|\.{3}|#)(?:\S(?:[ \t]\S)*)+/,lookbehind:!0,inside:{variable:n}};e.languages.robotframework={settings:r(`Settings`,{documentation:{pattern:/([\r\n] ?Documentation(?: {2}|\t)[ \t]*)(?![ \t]|#)(?:.|(?:\r\n?|\n)[ \t]*\.{3})+/,lookbehind:!0,alias:`string`},property:{pattern:/([\r\n] ?)(?!\.{3}|#)(?:\S(?:[ \t]\S)*)+/,lookbehind:!0}}),variables:r(`Variables`),"test-cases":r(`Test Cases`,{"test-name":a,documentation:i,property:o}),keywords:r(`Keywords`,{"keyword-name":a,documentation:i,property:o}),tasks:r(`Tasks`,{"task-name":a,documentation:i,property:o}),comment:t},e.languages.robot=e.languages.robotframework})(e)}Jr.displayName=`rust`,Jr.aliases=[];function Jr(e){(function(e){for(var t=`\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|)*\\*\\/`,n=0;n<2;n++)t=t.replace(//g,function(){return t});t=t.replace(//g,function(){return`[^\\s\\S]`}),e.languages.rust={comment:[{pattern:RegExp(`(^|[^\\\\])`+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:`attr-name`,inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:`punctuation`},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:`symbol`},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:`punctuation`},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:`function`},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:`class-name`},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:`namespace`},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:`namespace`,inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:`property`},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},e.languages.rust[`closure-params`].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string})(e)}Yr.displayName=`sas`,Yr.aliases=[];function Yr(e){(function(e){var t=`(?:"(?:""|[^"])*"(?!")|'(?:''|[^'])*'(?!'))`,n=/\b(?:\d[\da-f]*x|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/i,r={pattern:RegExp(t+`[bx]`),alias:`number`},i={pattern:/&[a-z_]\w*/i},a={pattern:/((?:^|\s|=|\())%(?:ABORT|BY|CMS|COPY|DISPLAY|DO|ELSE|END|EVAL|GLOBAL|GO|GOTO|IF|INC|INCLUDE|INDEX|INPUT|KTRIM|LENGTH|LET|LIST|LOCAL|PUT|QKTRIM|QSCAN|QSUBSTR|QSYSFUNC|QUPCASE|RETURN|RUN|SCAN|SUBSTR|SUPERQ|SYMDEL|SYMEXIST|SYMGLOBL|SYMLOCAL|SYSCALL|SYSEVALF|SYSEXEC|SYSFUNC|SYSGET|SYSRPUT|THEN|TO|TSO|UNQUOTE|UNTIL|UPCASE|WHILE|WINDOW)\b/i,lookbehind:!0,alias:`keyword`},o={pattern:/(^|\s)(?:proc\s+\w+|data(?!=)|quit|run)\b/i,alias:`keyword`,lookbehind:!0},s=[/\/\*[\s\S]*?\*\//,{pattern:/(^[ \t]*|;\s*)\*[^;]*;/m,lookbehind:!0}],c={pattern:RegExp(t),greedy:!0},l=/[$%@.(){}\[\];,\\]/,u={pattern:/%?\b\w+(?=\()/,alias:`keyword`},d={function:u,"arg-value":{pattern:/(=\s*)[A-Z\.]+/i,lookbehind:!0},operator:/=/,"macro-variable":i,arg:{pattern:/[A-Z]+/i,alias:`keyword`},number:n,"numeric-constant":r,punctuation:l,string:c},f={pattern:/\b(?:format|put)\b=?[\w'$.]+/i,inside:{keyword:/^(?:format|put)(?==)/i,equals:/=/,format:{pattern:/(?:\w|\$\d)+\.\d?/,alias:`number`}}},p={pattern:/\b(?:format|put)\s+[\w']+(?:\s+[$.\w]+)+(?=;)/i,inside:{keyword:/^(?:format|put)/i,format:{pattern:/[\w$]+\.\d?/,alias:`number`}}},m={pattern:/((?:^|\s)=?)(?:catname|checkpoint execute_always|dm|endsas|filename|footnote|%include|libname|%list|lock|missing|options|page|resetline|%run|sasfile|skip|sysecho|title\d?)\b/i,lookbehind:!0,alias:`keyword`},h={pattern:/(^|\s)(?:submit(?:\s+(?:load|norun|parseonly))?|endsubmit)\b/i,lookbehind:!0,alias:`keyword`},g=`aStore|accessControl|aggregation|audio|autotune|bayesianNetClassifier|bioMedImage|boolRule|builtins|cardinality|cdm|clustering|conditionalRandomFields|configuration|copula|countreg|dataDiscovery|dataPreprocess|dataSciencePilot|dataStep|decisionTree|deduplication|deepLearn|deepNeural|deepRnn|ds2|ecm|entityRes|espCluster|explainModel|factmac|fastKnn|fcmpact|fedSql|freqTab|gVarCluster|gam|gleam|graphSemiSupLearn|hiddenMarkovModel|hyperGroup|ica|image|iml|kernalPca|langModel|ldaTopic|loadStreams|mbc|mixed|mlTools|modelPublishing|network|neuralNet|nmf|nonParametricBayes|nonlinear|optNetwork|optimization|panel|pca|percentile|phreg|pls|qkb|qlim|quantreg|recommend|regression|reinforcementLearn|robustPca|ruleMining|sampling|sandwich|sccasl|search(?:Analytics)?|sentimentAnalysis|sequence|session(?:Prop)?|severity|simSystem|simple|smartData|sparkEmbeddedProcess|sparseML|spatialreg|spc|stabilityMonitoring|svDataDescription|svm|table|text(?:Filters|Frequency|Mining|Parse|Rule(?:Develop|Score)|Topic|Util)|timeData|transpose|tsInfo|tsReconcile|uniTimeSeries|varReduce`,_={pattern:RegExp(`(^|\\s)(?:action\\s+)?(?:)\\.[a-z]+\\b[^;]+`.replace(//g,function(){return g}),`i`),lookbehind:!0,inside:{keyword:RegExp(`(?:)\\.[a-z]+\\b`.replace(//g,function(){return g}),`i`),action:{pattern:/(?:action)/i,alias:`keyword`},comment:s,function:u,"arg-value":d[`arg-value`],operator:d.operator,argument:d.arg,number:n,"numeric-constant":r,punctuation:l,string:c}},v={pattern:/((?:^|\s)=?)(?:after|analysis|and|array|barchart|barwidth|begingraph|by|call|cas|cbarline|cfill|class(?:lev)?|close|column|computed?|contains|continue|data(?==)|define|delete|describe|document|do\s+over|do|dol|drop|dul|else|end(?:comp|source)?|entryTitle|eval(?:uate)?|exec(?:ute)?|exit|file(?:name)?|fill(?:attrs)?|flist|fnc|function(?:list)?|global|goto|group(?:by)?|headline|headskip|histogram|if|infile|keep|keylabel|keyword|label|layout|leave|legendlabel|length|libname|loadactionset|merge|midpoints|_?null_|name|noobs|nowd|ods|options|or|otherwise|out(?:put)?|over(?:lay)?|plot|print|put|raise|ranexp|rannor|rbreak|retain|return|select|session|sessref|set|source|statgraph|sum|summarize|table|temp|terminate|then\s+do|then|title\d?|to|var|when|where|xaxisopts|y2axisopts|yaxisopts)\b/i,lookbehind:!0};e.languages.sas={datalines:{pattern:/^([ \t]*)(?:cards|(?:data)?lines);[\s\S]+?^[ \t]*;/im,lookbehind:!0,alias:`string`,inside:{keyword:{pattern:/^(?:cards|(?:data)?lines)/i},punctuation:/;/}},"proc-sql":{pattern:/(^proc\s+(?:fed)?sql(?:\s+[\w|=]+)?;)[\s\S]+?(?=^(?:proc\s+\w+|data|quit|run);|(?![\s\S]))/im,lookbehind:!0,inside:{sql:{pattern:RegExp(`^[ \\t]*(?:select|alter\\s+table|(?:create|describe|drop)\\s+(?:index|table(?:\\s+constraints)?|view)|create\\s+unique\\s+index|insert\\s+into|update)(?:|[^;"'])+;`.replace(//g,function(){return t}),`im`),alias:`language-sql`,inside:e.languages.sql},"global-statements":m,"sql-statements":{pattern:/(^|\s)(?:disconnect\s+from|begin|commit|exec(?:ute)?|reset|rollback|validate)\b/i,lookbehind:!0,alias:`keyword`},number:n,"numeric-constant":r,punctuation:l,string:c}},"proc-groovy":{pattern:/(^proc\s+groovy(?:\s+[\w|=]+)?;)[\s\S]+?(?=^(?:proc\s+\w+|data|quit|run);|(?![\s\S]))/im,lookbehind:!0,inside:{comment:s,groovy:{pattern:RegExp(`(^[ \\t]*submit(?:\\s+(?:load|norun|parseonly))?)(?:|[^"'])+?(?=endsubmit;)`.replace(//g,function(){return t}),`im`),lookbehind:!0,alias:`language-groovy`,inside:e.languages.groovy},keyword:v,"submit-statement":h,"global-statements":m,number:n,"numeric-constant":r,punctuation:l,string:c}},"proc-lua":{pattern:/(^proc\s+lua(?:\s+[\w|=]+)?;)[\s\S]+?(?=^(?:proc\s+\w+|data|quit|run);|(?![\s\S]))/im,lookbehind:!0,inside:{comment:s,lua:{pattern:RegExp(`(^[ \\t]*submit(?:\\s+(?:load|norun|parseonly))?)(?:|[^"'])+?(?=endsubmit;)`.replace(//g,function(){return t}),`im`),lookbehind:!0,alias:`language-lua`,inside:e.languages.lua},keyword:v,"submit-statement":h,"global-statements":m,number:n,"numeric-constant":r,punctuation:l,string:c}},"proc-cas":{pattern:/(^proc\s+cas(?:\s+[\w|=]+)?;)[\s\S]+?(?=^(?:proc\s+\w+|quit|data);|(?![\s\S]))/im,lookbehind:!0,inside:{comment:s,"statement-var":{pattern:/((?:^|\s)=?)saveresult\s[^;]+/im,lookbehind:!0,inside:{statement:{pattern:/^saveresult\s+\S+/i,inside:{keyword:/^(?:saveresult)/i}},rest:d}},"cas-actions":_,statement:{pattern:/((?:^|\s)=?)(?:default|(?:un)?set|on|output|upload)[^;]+/im,lookbehind:!0,inside:d},step:o,keyword:v,function:u,format:f,altformat:p,"global-statements":m,number:n,"numeric-constant":r,punctuation:l,string:c}},"proc-args":{pattern:RegExp(`(^proc\\s+\\w+\\s+)(?!\\s)(?:[^;"']|)+;`.replace(//g,function(){return t}),`im`),lookbehind:!0,inside:d},"macro-keyword":a,"macro-variable":i,"macro-string-functions":{pattern:/((?:^|\s|=))%(?:BQUOTE|NRBQUOTE|NRQUOTE|NRSTR|QUOTE|STR)\(.*?(?:[^%]\))/i,lookbehind:!0,inside:{function:{pattern:/%(?:BQUOTE|NRBQUOTE|NRQUOTE|NRSTR|QUOTE|STR)/i,alias:`keyword`},"macro-keyword":a,"macro-variable":i,"escaped-char":{pattern:/%['"()<>=¬^~;,#]/},punctuation:l}},"macro-declaration":{pattern:/^%macro[^;]+(?=;)/im,inside:{keyword:/%macro/i}},"macro-end":{pattern:/^%mend[^;]+(?=;)/im,inside:{keyword:/%mend/i}},macro:{pattern:/%_\w+(?=\()/,alias:`keyword`},input:{pattern:/\binput\s[-\w\s/*.$&]+;/i,inside:{input:{alias:`keyword`,pattern:/^input/i},comment:s,number:n,"numeric-constant":r}},"options-args":{pattern:/(^options)[-'"|/\\<>*+=:()\w\s]*(?=;)/im,lookbehind:!0,inside:d},"cas-actions":_,comment:s,function:u,format:f,altformat:p,"numeric-constant":r,datetime:{pattern:RegExp(t+`(?:dt?|t)`),alias:`number`},string:c,step:o,keyword:v,"operator-keyword":{pattern:/\b(?:eq|ge|gt|in|le|lt|ne|not)\b/i,alias:`operator`},number:n,operator:/\*\*?|\|\|?|!!?|¦¦?|<[>=]?|>[<=]?|[-+\/=&]|[~¬^]=?/,punctuation:l}})(e)}Xr.displayName=`sass`,Xr.aliases=[];function Xr(e){e.register(H),(function(e){e.languages.sass=e.languages.extend(`css`,{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore(`sass`,`atrule`,{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore(`sass`,`property`,{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore(`sass`,`punctuation`,{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})})(e)}Zr.displayName=`scala`,Zr.aliases=[];function Zr(e){e.register(W),e.languages.scala=e.languages.extend(`java`,{"triple-quoted-string":{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:`string`},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/<-|=>|\b(?:abstract|case|catch|class|def|derives|do|else|enum|extends|extension|final|finally|for|forSome|given|if|implicit|import|infix|inline|lazy|match|new|null|object|opaque|open|override|package|private|protected|return|sealed|self|super|this|throw|trait|transparent|try|type|using|val|var|while|with|yield)\b/,number:/\b0x(?:[\da-f]*\.)?[\da-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e\d+)?[dfl]?/i,builtin:/\b(?:Any|AnyRef|AnyVal|Boolean|Byte|Char|Double|Float|Int|Long|Nothing|Short|String|Unit)\b/,symbol:/'[^\d\s\\]\w*/}),e.languages.insertBefore(`scala`,`triple-quoted-string`,{"string-interpolation":{pattern:/\b[a-z]\w*(?:"""(?:[^$]|\$(?:[^{]|\{(?:[^{}]|\{[^{}]*\})*\}))*?"""|"(?:[^$"\r\n]|\$(?:[^{]|\{(?:[^{}]|\{[^{}]*\})*\}))*")/i,greedy:!0,inside:{id:{pattern:/^\w+/,greedy:!0,alias:`function`},escape:{pattern:/\\\$"|\$[$"]/,greedy:!0,alias:`symbol`},interpolation:{pattern:/\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,greedy:!0,inside:{punctuation:/^\$\{?|\}$/,expression:{pattern:/[\s\S]+/,inside:e.languages.scala}}},string:/[\s\S]+/}}}),delete e.languages.scala[`class-name`],delete e.languages.scala.function,delete e.languages.scala.constant}Qr.displayName=`scss`,Qr.aliases=[];function Qr(e){e.register(H),e.languages.scss=e.languages.extend(`css`,{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:`important`},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),e.languages.insertBefore(`scss`,`atrule`,{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),e.languages.insertBefore(`scss`,`important`,{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),e.languages.insertBefore(`scss`,`function`,{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:`keyword`},placeholder:{pattern:/%[-\w]+/,alias:`selector`},statement:{pattern:/\B!(?:default|optional)\b/i,alias:`keyword`},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:`keyword`},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),e.languages.scss.atrule.inside.rest=e.languages.scss}$r.displayName=`shell-session`,$r.aliases=[`sh-session`,`shellsession`];function $r(e){e.register(de),(function(e){var t=['"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^"\\\\`$])*"',`'[^']*'`,`\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'`,`<<-?\\s*(["']?)(\\w+)\\1\\s[\\s\\S]*?[\\r\\n]\\2`].join(`|`);e.languages[`shell-session`]={command:{pattern:RegExp(`^(?:[^\\s@:$#%*!/\\\\]+@[^\\r\\n@:$#%*!/\\\\]+(?::[^\\0-\\x1F$#%*?"<>:;|]+)?|[/~.][^\\0-\\x1F$#%*?"<>@:;|]*)?[$#%](?=\\s)`+`(?:[^\\\\\\r\\n \\t'"<$]|[ \\t](?:(?!#)|#.*$)|\\\\(?:[^\\r]|\\r\\n?)|\\$(?!')|<(?!<)|<>)+`.replace(/<>/g,function(){return t}),`m`),greedy:!0,inside:{info:{pattern:/^[^#$%]+/,alias:`punctuation`,inside:{user:/^[^\s@:$#%*!/\\]+@[^\r\n@:$#%*!/\\]+/,punctuation:/:/,path:/[\s\S]+/}},bash:{pattern:/(^[$#%]\s*)\S[\s\S]*/,lookbehind:!0,alias:`language-bash`,inside:e.languages.bash},"shell-symbol":{pattern:/^[$#%]/,alias:`important`}}},output:/.(?:.*(?:[\r\n]|.$))*/},e.languages[`sh-session`]=e.languages.shellsession=e.languages[`shell-session`]})(e)}ei.displayName=`smali`,ei.aliases=[];function ei(e){e.languages.smali={comment:/#.*/,string:{pattern:/"(?:[^\r\n\\"]|\\.)*"|'(?:[^\r\n\\']|\\(?:.|u[\da-fA-F]{4}))'/,greedy:!0},"class-name":{pattern:/(^|[^L])L(?:(?:\w+|`[^`\r\n]*`)\/)*(?:[\w$]+|`[^`\r\n]*`)(?=\s*;)/,lookbehind:!0,inside:{"class-name":{pattern:/(^L|\/)(?:[\w$]+|`[^`\r\n]*`)$/,lookbehind:!0},namespace:{pattern:/^(L)(?:(?:\w+|`[^`\r\n]*`)\/)+/,lookbehind:!0,inside:{punctuation:/\//}},builtin:/^L/}},builtin:[{pattern:/([();\[])[BCDFIJSVZ]+/,lookbehind:!0},{pattern:/([\w$>]:)[BCDFIJSVZ]/,lookbehind:!0}],keyword:[{pattern:/(\.end\s+)[\w-]+/,lookbehind:!0},{pattern:/(^|[^\w.-])\.(?!\d)[\w-]+/,lookbehind:!0},{pattern:/(^|[^\w.-])(?:abstract|annotation|bridge|constructor|enum|final|interface|private|protected|public|runtime|static|synthetic|system|transient)(?![\w.-])/,lookbehind:!0}],function:{pattern:/(^|[^\w.-])(?:\w+|<[\w$-]+>)(?=\()/,lookbehind:!0},field:{pattern:/[\w$]+(?=:)/,alias:`variable`},register:{pattern:/(^|[^\w.-])[vp]\d(?![\w.-])/,lookbehind:!0,alias:`variable`},boolean:{pattern:/(^|[^\w.-])(?:false|true)(?![\w.-])/,lookbehind:!0},number:{pattern:/(^|[^/\w.-])-?(?:NAN|INFINITY|0x(?:[\dA-F]+(?:\.[\dA-F]*)?|\.[\dA-F]+)(?:p[+-]?[\dA-F]+)?|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)[dflst]?(?![\w.-])/i,lookbehind:!0},label:{pattern:/(:)\w+/,lookbehind:!0,alias:`property`},operator:/->|\.\.|[\[=]/,punctuation:/[{}(),;:]/}}ti.displayName=`smalltalk`,ti.aliases=[];function ti(e){e.languages.smalltalk={comment:{pattern:/"(?:""|[^"])*"/,greedy:!0},char:{pattern:/\$./,greedy:!0},string:{pattern:/'(?:''|[^'])*'/,greedy:!0},symbol:/#[\da-z]+|#(?:-|([+\/\\*~<>=@%|&?!])\1?)|#(?=\()/i,"block-arguments":{pattern:/(\[\s*):[^\[|]*\|/,lookbehind:!0,inside:{variable:/:[\da-z]+/i,punctuation:/\|/}},"temporary-variables":{pattern:/\|[^|]+\|/,inside:{variable:/[\da-z]+/i,punctuation:/\|/}},keyword:/\b(?:new|nil|self|super)\b/,boolean:/\b(?:false|true)\b/,number:[/\d+r-?[\dA-Z]+(?:\.[\dA-Z]+)?(?:e-?\d+)?/,/\b\d+(?:\.\d+)?(?:e-?\d+)?/],operator:/[<=]=?|:=|~[~=]|\/\/?|\\\\|>[>=]?|[!^+\-*&|,@]/,punctuation:/[.;:?\[\](){}]/}}ni.displayName=`smarty`,ni.aliases=[];function ni(e){e.register(U),(function(e){e.languages.smarty={comment:{pattern:/^\{\*[\s\S]*?\*\}/,greedy:!0},"embedded-php":{pattern:/^\{php\}[\s\S]*?\{\/php\}/,greedy:!0,inside:{smarty:{pattern:/^\{php\}|\{\/php\}$/,inside:null},php:{pattern:/[\s\S]+/,alias:`language-php`,inside:e.languages.php}}},string:[{pattern:/"(?:\\.|[^"\\\r\n])*"/,greedy:!0,inside:{interpolation:{pattern:/\{[^{}]*\}|`[^`]*`/,inside:{"interpolation-punctuation":{pattern:/^[{`]|[`}]$/,alias:`punctuation`},expression:{pattern:/[\s\S]+/,inside:null}}},variable:/\$\w+/}},{pattern:/'(?:\\.|[^'\\\r\n])*'/,greedy:!0}],keyword:{pattern:/(^\{\/?)[a-z_]\w*\b(?!\()/i,lookbehind:!0,greedy:!0},delimiter:{pattern:/^\{\/?|\}$/,greedy:!0,alias:`punctuation`},number:/\b0x[\dA-Fa-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][-+]?\d+)?/,variable:[/\$(?!\d)\w+/,/#(?!\d)\w+#/,{pattern:/(\.|->|\w\s*=)(?!\d)\w+\b(?!\()/,lookbehind:!0},{pattern:/(\[)(?!\d)\w+(?=\])/,lookbehind:!0}],function:{pattern:/(\|\s*)@?[a-z_]\w*|\b[a-z_]\w*(?=\()/i,lookbehind:!0},"attr-name":/\b[a-z_]\w*(?=\s*=)/i,boolean:/\b(?:false|no|off|on|true|yes)\b/,punctuation:/[\[\](){}.,:`]|->/,operator:[/[+\-*\/%]|==?=?|[!<>]=?|&&|\|\|?/,/\bis\s+(?:not\s+)?(?:div|even|odd)(?:\s+by)?\b/,/\b(?:and|eq|gt?e|gt|lt?e|lt|mod|neq?|not|or)\b/]},e.languages.smarty[`embedded-php`].inside.smarty.inside=e.languages.smarty,e.languages.smarty.string[0].inside.interpolation.inside.expression.inside=e.languages.smarty;var t=/"(?:\\.|[^"\\\r\n])*"|'(?:\\.|[^'\\\r\n])*'/,n=RegExp(`\\{\\*[\\s\\S]*?\\*\\}|\\{php\\}[\\s\\S]*?\\{\\/php\\}|`+`\\{(?:[^{}"']||\\{(?:[^{}"']||\\{(?:[^{}"']|)*\\})*\\})*\\}`.replace(//g,function(){return t.source}),`g`);e.hooks.add(`before-tokenize`,function(t){var r=`{literal}`,i=`{/literal}`,a=!1;e.languages[`markup-templating`].buildPlaceholders(t,`smarty`,n,function(e){return e===i&&(a=!1),a?!1:(e===r&&(a=!0),!0)})}),e.hooks.add(`after-tokenize`,function(t){e.languages[`markup-templating`].tokenizePlaceholders(t,`smarty`)})})(e)}ri.displayName=`sml`,ri.aliases=[`smlnj`];function ri(e){(function(e){var t=/\b(?:abstype|and|andalso|as|case|datatype|do|else|end|eqtype|exception|fn|fun|functor|handle|if|in|include|infix|infixr|let|local|nonfix|of|op|open|orelse|raise|rec|sharing|sig|signature|struct|structure|then|type|val|where|while|with|withtype)\b/i;e.languages.sml={comment:/\(\*(?:[^*(]|\*(?!\))|\((?!\*)|\(\*(?:[^*(]|\*(?!\))|\((?!\*))*\*\))*\*\)/,string:{pattern:/#?"(?:[^"\\]|\\.)*"/,greedy:!0},"class-name":[{pattern:RegExp(`((?:^|[^:]):\\s*)(?:\\s*(?:(?:\\*|->)\\s*|,\\s*(?:(?=)|(?!)\\s+)))*`.replace(//g,function(){return`\\s*(?:[*,]|->)`}).replace(//g,function(){return`(?:'[\\w']*||\\((?:[^()]|\\([^()]*\\))*\\)|\\{(?:[^{}]|\\{[^{}]*\\})*\\})(?:\\s+)*`}).replace(//g,function(){return`(?!)[a-z\\d_][\\w'.]*`}).replace(//g,function(){return t.source}),`i`),lookbehind:!0,greedy:!0,inside:null},{pattern:/((?:^|[^\w'])(?:datatype|exception|functor|signature|structure|type)\s+)[a-z_][\w'.]*/i,lookbehind:!0}],function:{pattern:/((?:^|[^\w'])fun\s+)[a-z_][\w'.]*/i,lookbehind:!0},keyword:t,variable:{pattern:/(^|[^\w'])'[\w']*/,lookbehind:!0},number:/~?\b(?:\d+(?:\.\d+)?(?:e~?\d+)?|0x[\da-f]+)\b/i,word:{pattern:/\b0w(?:\d+|x[\da-f]+)\b/i,alias:`constant`},boolean:/\b(?:false|true)\b/i,operator:/\.\.\.|:[>=:]|=>?|->|[<>]=?|[!+\-*/^#|@~]/,punctuation:/[(){}\[\].:,;]/},e.languages.sml[`class-name`][0].inside=e.languages.sml,e.languages.smlnj=e.languages.sml})(e)}ii.displayName=`solidity`,ii.aliases=[`sol`];function ii(e){e.register(S),e.languages.solidity=e.languages.extend(`clike`,{"class-name":{pattern:/(\b(?:contract|enum|interface|library|new|struct|using)\s+)(?!\d)[\w$]+/,lookbehind:!0},keyword:/\b(?:_|anonymous|as|assembly|assert|break|calldata|case|constant|constructor|continue|contract|default|delete|do|else|emit|enum|event|external|for|from|function|if|import|indexed|inherited|interface|internal|is|let|library|mapping|memory|modifier|new|payable|pragma|private|public|pure|require|returns?|revert|selfdestruct|solidity|storage|struct|suicide|switch|this|throw|using|var|view|while)\b/,operator:/=>|->|:=|=:|\*\*|\+\+|--|\|\||&&|<<=?|>>=?|[-+*/%^&|<>!=]=?|[~?]/}),e.languages.insertBefore(`solidity`,`keyword`,{builtin:/\b(?:address|bool|byte|u?int(?:8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?|string|bytes(?:[1-9]|[12]\d|3[0-2])?)\b/}),e.languages.insertBefore(`solidity`,`number`,{version:{pattern:/([<>]=?|\^)\d+\.\d+\.\d+\b/,lookbehind:!0,alias:`number`}}),e.languages.sol=e.languages.solidity}ai.displayName=`solution-file`,ai.aliases=[`sln`];function ai(e){(function(e){var t={pattern:/\{[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}\}/i,alias:`constant`,inside:{punctuation:/[{}]/}};e.languages[`solution-file`]={comment:{pattern:/#.*/,greedy:!0},string:{pattern:/"[^"\r\n]*"|'[^'\r\n]*'/,greedy:!0,inside:{guid:t}},object:{pattern:/^([ \t]*)(?:([A-Z]\w*)\b(?=.*(?:\r\n?|\n)(?:\1[ \t].*(?:\r\n?|\n))*\1End\2(?=[ \t]*$))|End[A-Z]\w*(?=[ \t]*$))/m,lookbehind:!0,greedy:!0,alias:`keyword`},property:{pattern:/^([ \t]*)(?!\s)[^\r\n"#=()]*[^\s"#=()](?=\s*=)/m,lookbehind:!0,inside:{guid:t}},guid:t,number:/\b\d+(?:\.\d+)*\b/,boolean:/\b(?:FALSE|TRUE)\b/,operator:/=/,punctuation:/[(),]/},e.languages.sln=e.languages[`solution-file`]})(e)}oi.displayName=`soy`,oi.aliases=[];function oi(e){e.register(U),(function(e){var t=/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,n=/\b\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b|\b0x[\dA-F]+\b/;e.languages.soy={comment:[/\/\*[\s\S]*?\*\//,{pattern:/(\s)\/\/.*/,lookbehind:!0,greedy:!0}],"command-arg":{pattern:/(\{+\/?\s*(?:alias|call|delcall|delpackage|deltemplate|namespace|template)\s+)\.?[\w.]+/,lookbehind:!0,alias:`string`,inside:{punctuation:/\./}},parameter:{pattern:/(\{+\/?\s*@?param\??\s+)\.?[\w.]+/,lookbehind:!0,alias:`variable`},keyword:[{pattern:/(\{+\/?[^\S\r\n]*)(?:\\[nrt]|alias|call|case|css|default|delcall|delpackage|deltemplate|else(?:if)?|fallbackmsg|for(?:each)?|if(?:empty)?|lb|let|literal|msg|namespace|nil|@?param\??|rb|sp|switch|template|xid)/,lookbehind:!0},/\b(?:any|as|attributes|bool|css|float|html|in|int|js|list|map|null|number|string|uri)\b/],delimiter:{pattern:/^\{+\/?|\/?\}+$/,alias:`punctuation`},property:/\w+(?==)/,variable:{pattern:/\$[^\W\d]\w*(?:\??(?:\.\w+|\[[^\]]+\]))*/,inside:{string:{pattern:t,greedy:!0},number:n,punctuation:/[\[\].?]/}},string:{pattern:t,greedy:!0},function:[/\w+(?=\()/,{pattern:/(\|[^\S\r\n]*)\w+/,lookbehind:!0}],boolean:/\b(?:false|true)\b/,number:n,operator:/\?:?|<=?|>=?|==?|!=|[+*/%-]|\b(?:and|not|or)\b/,punctuation:/[{}()\[\]|.,:]/},e.hooks.add(`before-tokenize`,function(t){var n=/\{\{.+?\}\}|\{.+?\}|\s\/\/.*|\/\*[\s\S]*?\*\//g,r=`{literal}`,i=`{/literal}`,a=!1;e.languages[`markup-templating`].buildPlaceholders(t,`soy`,n,function(e){return e===i&&(a=!1),a?!1:(e===r&&(a=!0),!0)})}),e.hooks.add(`after-tokenize`,function(t){e.languages[`markup-templating`].tokenizePlaceholders(t,`soy`)})})(e)}si.displayName=`turtle`,si.aliases=[`trig`];function si(e){e.languages.turtle={comment:{pattern:/#.*/,greedy:!0},"multiline-string":{pattern:/"""(?:(?:""?)?(?:[^"\\]|\\.))*"""|'''(?:(?:''?)?(?:[^'\\]|\\.))*'''/,greedy:!0,alias:`string`,inside:{comment:/#.*/}},string:{pattern:/"(?:[^\\"\r\n]|\\.)*"|'(?:[^\\'\r\n]|\\.)*'/,greedy:!0},url:{pattern:/<(?:[^\x00-\x20<>"{}|^`\\]|\\(?:u[\da-fA-F]{4}|U[\da-fA-F]{8}))*>/,greedy:!0,inside:{punctuation:/[<>]/}},function:{pattern:/(?:(?![-.\d\xB7])[-.\w\xB7\xC0-\uFFFD]+)?:(?:(?![-.])(?:[-.:\w\xC0-\uFFFD]|%[\da-f]{2}|\\.)+)?/i,inside:{"local-name":{pattern:/([^:]*:)[\s\S]+/,lookbehind:!0},prefix:{pattern:/[\s\S]+/,inside:{punctuation:/:/}}}},number:/[+-]?\b\d+(?:\.\d*)?(?:e[+-]?\d+)?/i,punctuation:/[{}.,;()[\]]|\^\^/,boolean:/\b(?:false|true)\b/,keyword:[/(?:\ba|@prefix|@base)\b|=/,/\b(?:base|graph|prefix)\b/i],tag:{pattern:/@[a-z]+(?:-[a-z\d]+)*/i,inside:{punctuation:/@/}}},e.languages.trig=e.languages.turtle}ci.displayName=`sparql`,ci.aliases=[`rq`];function ci(e){e.register(si),e.languages.sparql=e.languages.extend(`turtle`,{boolean:/\b(?:false|true)\b/i,variable:{pattern:/[?$]\w+/,greedy:!0}}),e.languages.insertBefore(`sparql`,`punctuation`,{keyword:[/\b(?:A|ADD|ALL|AS|ASC|ASK|BNODE|BY|CLEAR|CONSTRUCT|COPY|CREATE|DATA|DEFAULT|DELETE|DESC|DESCRIBE|DISTINCT|DROP|EXISTS|FILTER|FROM|GROUP|HAVING|INSERT|INTO|LIMIT|LOAD|MINUS|MOVE|NAMED|NOT|NOW|OFFSET|OPTIONAL|ORDER|RAND|REDUCED|SELECT|SEPARATOR|SERVICE|SILENT|STRUUID|UNION|USING|UUID|VALUES|WHERE)\b/i,/\b(?:ABS|AVG|BIND|BOUND|CEIL|COALESCE|CONCAT|CONTAINS|COUNT|DATATYPE|DAY|ENCODE_FOR_URI|FLOOR|GROUP_CONCAT|HOURS|IF|IRI|isBLANK|isIRI|isLITERAL|isNUMERIC|isURI|LANG|LANGMATCHES|LCASE|MAX|MD5|MIN|MINUTES|MONTH|REGEX|REPLACE|ROUND|sameTerm|SAMPLE|SECONDS|SHA1|SHA256|SHA384|SHA512|STR|STRAFTER|STRBEFORE|STRDT|STRENDS|STRLANG|STRLEN|STRSTARTS|SUBSTR|SUM|TIMEZONE|TZ|UCASE|URI|YEAR)\b(?=\s*\()/i,/\b(?:BASE|GRAPH|PREFIX)\b/i]}),e.languages.rq=e.languages.sparql}li.displayName=`splunk-spl`,li.aliases=[];function li(e){e.languages[`splunk-spl`]={comment:/`comment\("(?:\\.|[^\\"])*"\)`/,string:{pattern:/"(?:\\.|[^\\"])*"/,greedy:!0},keyword:/\b(?:abstract|accum|addcoltotals|addinfo|addtotals|analyzefields|anomalies|anomalousvalue|anomalydetection|append|appendcols|appendcsv|appendlookup|appendpipe|arules|associate|audit|autoregress|bin|bucket|bucketdir|chart|cluster|cofilter|collect|concurrency|contingency|convert|correlate|datamodel|dbinspect|dedup|delete|delta|diff|erex|eval|eventcount|eventstats|extract|fieldformat|fields|fieldsummary|filldown|fillnull|findtypes|folderize|foreach|format|from|gauge|gentimes|geom|geomfilter|geostats|head|highlight|history|iconify|input|inputcsv|inputlookup|iplocation|join|kmeans|kv|kvform|loadjob|localize|localop|lookup|makecontinuous|makemv|makeresults|map|mcollect|metadata|metasearch|meventcollect|mstats|multikv|multisearch|mvcombine|mvexpand|nomv|outlier|outputcsv|outputlookup|outputtext|overlap|pivot|predict|rangemap|rare|regex|relevancy|reltime|rename|replace|rest|return|reverse|rex|rtorder|run|savedsearch|script|scrub|search|searchtxn|selfjoin|sendemail|set|setfields|sichart|sirare|sistats|sitimechart|sitop|sort|spath|stats|strcat|streamstats|table|tags|tail|timechart|timewrap|top|transaction|transpose|trendline|tscollect|tstats|typeahead|typelearner|typer|union|uniq|untable|where|x11|xmlkv|xmlunescape|xpath|xyseries)\b/i,"operator-word":{pattern:/\b(?:and|as|by|not|or|xor)\b/i,alias:`operator`},function:/\b\w+(?=\s*\()/,property:/\b\w+(?=\s*=(?!=))/,date:{pattern:/\b\d{1,2}\/\d{1,2}\/\d{1,4}(?:(?::\d{1,2}){3})?\b/,alias:`number`},number:/\b\d+(?:\.\d+)?\b/,boolean:/\b(?:f|false|t|true)\b/i,operator:/[<>=]=?|[-+*/%|]/,punctuation:/[()[\],]/}}ui.displayName=`sqf`,ui.aliases=[];function ui(e){e.register(S),e.languages.sqf=e.languages.extend(`clike`,{string:{pattern:/"(?:(?:"")?[^"])*"(?!")|'(?:[^'])*'/,greedy:!0},keyword:/\b(?:breakOut|breakTo|call|case|catch|default|do|echo|else|execFSM|execVM|exitWith|for|forEach|forEachMember|forEachMemberAgent|forEachMemberTeam|from|goto|if|nil|preprocessFile|preprocessFileLineNumbers|private|scopeName|spawn|step|switch|then|throw|to|try|while|with)\b/i,boolean:/\b(?:false|true)\b/i,function:/\b(?:abs|accTime|acos|action|actionIDs|actionKeys|actionKeysImages|actionKeysNames|actionKeysNamesArray|actionName|actionParams|activateAddons|activatedAddons|activateKey|add3DENConnection|add3DENEventHandler|add3DENLayer|addAction|addBackpack|addBackpackCargo|addBackpackCargoGlobal|addBackpackGlobal|addCamShake|addCuratorAddons|addCuratorCameraArea|addCuratorEditableObjects|addCuratorEditingArea|addCuratorPoints|addEditorObject|addEventHandler|addForce|addForceGeneratorRTD|addGoggles|addGroupIcon|addHandgunItem|addHeadgear|addItem|addItemCargo|addItemCargoGlobal|addItemPool|addItemToBackpack|addItemToUniform|addItemToVest|addLiveStats|addMagazine|addMagazineAmmoCargo|addMagazineCargo|addMagazineCargoGlobal|addMagazineGlobal|addMagazinePool|addMagazines|addMagazineTurret|addMenu|addMenuItem|addMissionEventHandler|addMPEventHandler|addMusicEventHandler|addOwnedMine|addPlayerScores|addPrimaryWeaponItem|addPublicVariableEventHandler|addRating|addResources|addScore|addScoreSide|addSecondaryWeaponItem|addSwitchableUnit|addTeamMember|addToRemainsCollector|addTorque|addUniform|addVehicle|addVest|addWaypoint|addWeapon|addWeaponCargo|addWeaponCargoGlobal|addWeaponGlobal|addWeaponItem|addWeaponPool|addWeaponTurret|admin|agent|agents|AGLToASL|aimedAtTarget|aimPos|airDensityCurveRTD|airDensityRTD|airplaneThrottle|airportSide|AISFinishHeal|alive|all3DENEntities|allAirports|allControls|allCurators|allCutLayers|allDead|allDeadMen|allDisplays|allGroups|allMapMarkers|allMines|allMissionObjects|allow3DMode|allowCrewInImmobile|allowCuratorLogicIgnoreAreas|allowDamage|allowDammage|allowFileOperations|allowFleeing|allowGetIn|allowSprint|allPlayers|allSimpleObjects|allSites|allTurrets|allUnits|allUnitsUAV|allVariables|ammo|ammoOnPylon|animate|animateBay|animateDoor|animatePylon|animateSource|animationNames|animationPhase|animationSourcePhase|animationState|append|apply|armoryPoints|arrayIntersect|asin|ASLToAGL|ASLToATL|assert|assignAsCargo|assignAsCargoIndex|assignAsCommander|assignAsDriver|assignAsGunner|assignAsTurret|assignCurator|assignedCargo|assignedCommander|assignedDriver|assignedGunner|assignedItems|assignedTarget|assignedTeam|assignedVehicle|assignedVehicleRole|assignItem|assignTeam|assignToAirport|atan|atan2|atg|ATLToASL|attachedObject|attachedObjects|attachedTo|attachObject|attachTo|attackEnabled|backpack|backpackCargo|backpackContainer|backpackItems|backpackMagazines|backpackSpaceFor|behaviour|benchmark|binocular|blufor|boundingBox|boundingBoxReal|boundingCenter|briefingName|buildingExit|buildingPos|buldozer_EnableRoadDiag|buldozer_IsEnabledRoadDiag|buldozer_LoadNewRoads|buldozer_reloadOperMap|buttonAction|buttonSetAction|cadetMode|callExtension|camCommand|camCommit|camCommitPrepared|camCommitted|camConstuctionSetParams|camCreate|camDestroy|cameraEffect|cameraEffectEnableHUD|cameraInterest|cameraOn|cameraView|campaignConfigFile|camPreload|camPreloaded|camPrepareBank|camPrepareDir|camPrepareDive|camPrepareFocus|camPrepareFov|camPrepareFovRange|camPreparePos|camPrepareRelPos|camPrepareTarget|camSetBank|camSetDir|camSetDive|camSetFocus|camSetFov|camSetFovRange|camSetPos|camSetRelPos|camSetTarget|camTarget|camUseNVG|canAdd|canAddItemToBackpack|canAddItemToUniform|canAddItemToVest|cancelSimpleTaskDestination|canFire|canMove|canSlingLoad|canStand|canSuspend|canTriggerDynamicSimulation|canUnloadInCombat|canVehicleCargo|captive|captiveNum|cbChecked|cbSetChecked|ceil|channelEnabled|cheatsEnabled|checkAIFeature|checkVisibility|civilian|className|clear3DENAttribute|clear3DENInventory|clearAllItemsFromBackpack|clearBackpackCargo|clearBackpackCargoGlobal|clearForcesRTD|clearGroupIcons|clearItemCargo|clearItemCargoGlobal|clearItemPool|clearMagazineCargo|clearMagazineCargoGlobal|clearMagazinePool|clearOverlay|clearRadio|clearVehicleInit|clearWeaponCargo|clearWeaponCargoGlobal|clearWeaponPool|clientOwner|closeDialog|closeDisplay|closeOverlay|collapseObjectTree|collect3DENHistory|collectiveRTD|combatMode|commandArtilleryFire|commandChat|commander|commandFire|commandFollow|commandFSM|commandGetOut|commandingMenu|commandMove|commandRadio|commandStop|commandSuppressiveFire|commandTarget|commandWatch|comment|commitOverlay|compile|compileFinal|completedFSM|composeText|configClasses|configFile|configHierarchy|configName|configNull|configProperties|configSourceAddonList|configSourceMod|configSourceModList|confirmSensorTarget|connectTerminalToUAV|controlNull|controlsGroupCtrl|copyFromClipboard|copyToClipboard|copyWaypoints|cos|count|countEnemy|countFriendly|countSide|countType|countUnknown|create3DENComposition|create3DENEntity|createAgent|createCenter|createDialog|createDiaryLink|createDiaryRecord|createDiarySubject|createDisplay|createGearDialog|createGroup|createGuardedPoint|createLocation|createMarker|createMarkerLocal|createMenu|createMine|createMissionDisplay|createMPCampaignDisplay|createSimpleObject|createSimpleTask|createSite|createSoundSource|createTask|createTeam|createTrigger|createUnit|createVehicle|createVehicleCrew|createVehicleLocal|crew|ctAddHeader|ctAddRow|ctClear|ctCurSel|ctData|ctFindHeaderRows|ctFindRowHeader|ctHeaderControls|ctHeaderCount|ctRemoveHeaders|ctRemoveRows|ctrlActivate|ctrlAddEventHandler|ctrlAngle|ctrlAutoScrollDelay|ctrlAutoScrollRewind|ctrlAutoScrollSpeed|ctrlChecked|ctrlClassName|ctrlCommit|ctrlCommitted|ctrlCreate|ctrlDelete|ctrlEnable|ctrlEnabled|ctrlFade|ctrlHTMLLoaded|ctrlIDC|ctrlIDD|ctrlMapAnimAdd|ctrlMapAnimClear|ctrlMapAnimCommit|ctrlMapAnimDone|ctrlMapCursor|ctrlMapMouseOver|ctrlMapScale|ctrlMapScreenToWorld|ctrlMapWorldToScreen|ctrlModel|ctrlModelDirAndUp|ctrlModelScale|ctrlParent|ctrlParentControlsGroup|ctrlPosition|ctrlRemoveAllEventHandlers|ctrlRemoveEventHandler|ctrlScale|ctrlSetActiveColor|ctrlSetAngle|ctrlSetAutoScrollDelay|ctrlSetAutoScrollRewind|ctrlSetAutoScrollSpeed|ctrlSetBackgroundColor|ctrlSetChecked|ctrlSetDisabledColor|ctrlSetEventHandler|ctrlSetFade|ctrlSetFocus|ctrlSetFont|ctrlSetFontH1|ctrlSetFontH1B|ctrlSetFontH2|ctrlSetFontH2B|ctrlSetFontH3|ctrlSetFontH3B|ctrlSetFontH4|ctrlSetFontH4B|ctrlSetFontH5|ctrlSetFontH5B|ctrlSetFontH6|ctrlSetFontH6B|ctrlSetFontHeight|ctrlSetFontHeightH1|ctrlSetFontHeightH2|ctrlSetFontHeightH3|ctrlSetFontHeightH4|ctrlSetFontHeightH5|ctrlSetFontHeightH6|ctrlSetFontHeightSecondary|ctrlSetFontP|ctrlSetFontPB|ctrlSetFontSecondary|ctrlSetForegroundColor|ctrlSetModel|ctrlSetModelDirAndUp|ctrlSetModelScale|ctrlSetPixelPrecision|ctrlSetPosition|ctrlSetScale|ctrlSetStructuredText|ctrlSetText|ctrlSetTextColor|ctrlSetTextColorSecondary|ctrlSetTextSecondary|ctrlSetTooltip|ctrlSetTooltipColorBox|ctrlSetTooltipColorShade|ctrlSetTooltipColorText|ctrlShow|ctrlShown|ctrlText|ctrlTextHeight|ctrlTextSecondary|ctrlTextWidth|ctrlType|ctrlVisible|ctRowControls|ctRowCount|ctSetCurSel|ctSetData|ctSetHeaderTemplate|ctSetRowTemplate|ctSetValue|ctValue|curatorAddons|curatorCamera|curatorCameraArea|curatorCameraAreaCeiling|curatorCoef|curatorEditableObjects|curatorEditingArea|curatorEditingAreaType|curatorMouseOver|curatorPoints|curatorRegisteredObjects|curatorSelected|curatorWaypointCost|current3DENOperation|currentChannel|currentCommand|currentMagazine|currentMagazineDetail|currentMagazineDetailTurret|currentMagazineTurret|currentMuzzle|currentNamespace|currentTask|currentTasks|currentThrowable|currentVisionMode|currentWaypoint|currentWeapon|currentWeaponMode|currentWeaponTurret|currentZeroing|cursorObject|cursorTarget|customChat|customRadio|cutFadeOut|cutObj|cutRsc|cutText|damage|date|dateToNumber|daytime|deActivateKey|debriefingText|debugFSM|debugLog|deg|delete3DENEntities|deleteAt|deleteCenter|deleteCollection|deleteEditorObject|deleteGroup|deleteGroupWhenEmpty|deleteIdentity|deleteLocation|deleteMarker|deleteMarkerLocal|deleteRange|deleteResources|deleteSite|deleteStatus|deleteTeam|deleteVehicle|deleteVehicleCrew|deleteWaypoint|detach|detectedMines|diag_activeMissionFSMs|diag_activeScripts|diag_activeSQFScripts|diag_activeSQSScripts|diag_captureFrame|diag_captureFrameToFile|diag_captureSlowFrame|diag_codePerformance|diag_drawMode|diag_dynamicSimulationEnd|diag_enable|diag_enabled|diag_fps|diag_fpsMin|diag_frameNo|diag_lightNewLoad|diag_list|diag_log|diag_logSlowFrame|diag_mergeConfigFile|diag_recordTurretLimits|diag_setLightNew|diag_tickTime|diag_toggle|dialog|diarySubjectExists|didJIP|didJIPOwner|difficulty|difficultyEnabled|difficultyEnabledRTD|difficultyOption|direction|directSay|disableAI|disableCollisionWith|disableConversation|disableDebriefingStats|disableMapIndicators|disableNVGEquipment|disableRemoteSensors|disableSerialization|disableTIEquipment|disableUAVConnectability|disableUserInput|displayAddEventHandler|displayCtrl|displayNull|displayParent|displayRemoveAllEventHandlers|displayRemoveEventHandler|displaySetEventHandler|dissolveTeam|distance|distance2D|distanceSqr|distributionRegion|do3DENAction|doArtilleryFire|doFire|doFollow|doFSM|doGetOut|doMove|doorPhase|doStop|doSuppressiveFire|doTarget|doWatch|drawArrow|drawEllipse|drawIcon|drawIcon3D|drawLine|drawLine3D|drawLink|drawLocation|drawPolygon|drawRectangle|drawTriangle|driver|drop|dynamicSimulationDistance|dynamicSimulationDistanceCoef|dynamicSimulationEnabled|dynamicSimulationSystemEnabled|east|edit3DENMissionAttributes|editObject|editorSetEventHandler|effectiveCommander|emptyPositions|enableAI|enableAIFeature|enableAimPrecision|enableAttack|enableAudioFeature|enableAutoStartUpRTD|enableAutoTrimRTD|enableCamShake|enableCaustics|enableChannel|enableCollisionWith|enableCopilot|enableDebriefingStats|enableDiagLegend|enableDynamicSimulation|enableDynamicSimulationSystem|enableEndDialog|enableEngineArtillery|enableEnvironment|enableFatigue|enableGunLights|enableInfoPanelComponent|enableIRLasers|enableMimics|enablePersonTurret|enableRadio|enableReload|enableRopeAttach|enableSatNormalOnDetail|enableSaving|enableSentences|enableSimulation|enableSimulationGlobal|enableStamina|enableStressDamage|enableTeamSwitch|enableTraffic|enableUAVConnectability|enableUAVWaypoints|enableVehicleCargo|enableVehicleSensor|enableWeaponDisassembly|endl|endLoadingScreen|endMission|engineOn|enginesIsOnRTD|enginesPowerRTD|enginesRpmRTD|enginesTorqueRTD|entities|environmentEnabled|estimatedEndServerTime|estimatedTimeLeft|evalObjectArgument|everyBackpack|everyContainer|exec|execEditorScript|exp|expectedDestination|exportJIPMessages|eyeDirection|eyePos|face|faction|fadeMusic|fadeRadio|fadeSound|fadeSpeech|failMission|fillWeaponsFromPool|find|findCover|findDisplay|findEditorObject|findEmptyPosition|findEmptyPositionReady|findIf|findNearestEnemy|finishMissionInit|finite|fire|fireAtTarget|firstBackpack|flag|flagAnimationPhase|flagOwner|flagSide|flagTexture|fleeing|floor|flyInHeight|flyInHeightASL|fog|fogForecast|fogParams|forceAddUniform|forceAtPositionRTD|forcedMap|forceEnd|forceFlagTexture|forceFollowRoad|forceGeneratorRTD|forceMap|forceRespawn|forceSpeed|forceWalk|forceWeaponFire|forceWeatherChange|forgetTarget|format|formation|formationDirection|formationLeader|formationMembers|formationPosition|formationTask|formatText|formLeader|freeLook|fromEditor|fuel|fullCrew|gearIDCAmmoCount|gearSlotAmmoCount|gearSlotData|get3DENActionState|get3DENAttribute|get3DENCamera|get3DENConnections|get3DENEntity|get3DENEntityID|get3DENGrid|get3DENIconsVisible|get3DENLayerEntities|get3DENLinesVisible|get3DENMissionAttribute|get3DENMouseOver|get3DENSelected|getAimingCoef|getAllEnvSoundControllers|getAllHitPointsDamage|getAllOwnedMines|getAllSoundControllers|getAmmoCargo|getAnimAimPrecision|getAnimSpeedCoef|getArray|getArtilleryAmmo|getArtilleryComputerSettings|getArtilleryETA|getAssignedCuratorLogic|getAssignedCuratorUnit|getBackpackCargo|getBleedingRemaining|getBurningValue|getCameraViewDirection|getCargoIndex|getCenterOfMass|getClientState|getClientStateNumber|getCompatiblePylonMagazines|getConnectedUAV|getContainerMaxLoad|getCursorObjectParams|getCustomAimCoef|getDammage|getDescription|getDir|getDirVisual|getDLCAssetsUsage|getDLCAssetsUsageByName|getDLCs|getDLCUsageTime|getEditorCamera|getEditorMode|getEditorObjectScope|getElevationOffset|getEngineTargetRpmRTD|getEnvSoundController|getFatigue|getFieldManualStartPage|getForcedFlagTexture|getFriend|getFSMVariable|getFuelCargo|getGroupIcon|getGroupIconParams|getGroupIcons|getHideFrom|getHit|getHitIndex|getHitPointDamage|getItemCargo|getMagazineCargo|getMarkerColor|getMarkerPos|getMarkerSize|getMarkerType|getMass|getMissionConfig|getMissionConfigValue|getMissionDLCs|getMissionLayerEntities|getMissionLayers|getModelInfo|getMousePosition|getMusicPlayedTime|getNumber|getObjectArgument|getObjectChildren|getObjectDLC|getObjectMaterials|getObjectProxy|getObjectTextures|getObjectType|getObjectViewDistance|getOxygenRemaining|getPersonUsedDLCs|getPilotCameraDirection|getPilotCameraPosition|getPilotCameraRotation|getPilotCameraTarget|getPlateNumber|getPlayerChannel|getPlayerScores|getPlayerUID|getPlayerUIDOld|getPos|getPosASL|getPosASLVisual|getPosASLW|getPosATL|getPosATLVisual|getPosVisual|getPosWorld|getPylonMagazines|getRelDir|getRelPos|getRemoteSensorsDisabled|getRepairCargo|getResolution|getRotorBrakeRTD|getShadowDistance|getShotParents|getSlingLoad|getSoundController|getSoundControllerResult|getSpeed|getStamina|getStatValue|getSuppression|getTerrainGrid|getTerrainHeightASL|getText|getTotalDLCUsageTime|getTrimOffsetRTD|getUnitLoadout|getUnitTrait|getUserMFDText|getUserMFDValue|getVariable|getVehicleCargo|getWeaponCargo|getWeaponSway|getWingsOrientationRTD|getWingsPositionRTD|getWPPos|glanceAt|globalChat|globalRadio|goggles|group|groupChat|groupFromNetId|groupIconSelectable|groupIconsVisible|groupId|groupOwner|groupRadio|groupSelectedUnits|groupSelectUnit|grpNull|gunner|gusts|halt|handgunItems|handgunMagazine|handgunWeapon|handsHit|hasInterface|hasPilotCamera|hasWeapon|hcAllGroups|hcGroupParams|hcLeader|hcRemoveAllGroups|hcRemoveGroup|hcSelected|hcSelectGroup|hcSetGroup|hcShowBar|hcShownBar|headgear|hideBody|hideObject|hideObjectGlobal|hideSelection|hint|hintC|hintCadet|hintSilent|hmd|hostMission|htmlLoad|HUDMovementLevels|humidity|image|importAllGroups|importance|in|inArea|inAreaArray|incapacitatedState|independent|inflame|inflamed|infoPanel|infoPanelComponentEnabled|infoPanelComponents|infoPanels|inGameUISetEventHandler|inheritsFrom|initAmbientLife|inPolygon|inputAction|inRangeOfArtillery|insertEditorObject|intersect|is3DEN|is3DENMultiplayer|isAbleToBreathe|isAgent|isAimPrecisionEnabled|isArray|isAutoHoverOn|isAutonomous|isAutoStartUpEnabledRTD|isAutotest|isAutoTrimOnRTD|isBleeding|isBurning|isClass|isCollisionLightOn|isCopilotEnabled|isDamageAllowed|isDedicated|isDLCAvailable|isEngineOn|isEqualTo|isEqualType|isEqualTypeAll|isEqualTypeAny|isEqualTypeArray|isEqualTypeParams|isFilePatchingEnabled|isFlashlightOn|isFlatEmpty|isForcedWalk|isFormationLeader|isGroupDeletedWhenEmpty|isHidden|isInRemainsCollector|isInstructorFigureEnabled|isIRLaserOn|isKeyActive|isKindOf|isLaserOn|isLightOn|isLocalized|isManualFire|isMarkedForCollection|isMultiplayer|isMultiplayerSolo|isNil|isNull|isNumber|isObjectHidden|isObjectRTD|isOnRoad|isPipEnabled|isPlayer|isRealTime|isRemoteExecuted|isRemoteExecutedJIP|isServer|isShowing3DIcons|isSimpleObject|isSprintAllowed|isStaminaEnabled|isSteamMission|isStreamFriendlyUIEnabled|isStressDamageEnabled|isText|isTouchingGround|isTurnedOut|isTutHintsEnabled|isUAVConnectable|isUAVConnected|isUIContext|isUniformAllowed|isVehicleCargo|isVehicleRadarOn|isVehicleSensorEnabled|isWalking|isWeaponDeployed|isWeaponRested|itemCargo|items|itemsWithMagazines|join|joinAs|joinAsSilent|joinSilent|joinString|kbAddDatabase|kbAddDatabaseTargets|kbAddTopic|kbHasTopic|kbReact|kbRemoveTopic|kbTell|kbWasSaid|keyImage|keyName|knowsAbout|land|landAt|landResult|language|laserTarget|lbAdd|lbClear|lbColor|lbColorRight|lbCurSel|lbData|lbDelete|lbIsSelected|lbPicture|lbPictureRight|lbSelection|lbSetColor|lbSetColorRight|lbSetCurSel|lbSetData|lbSetPicture|lbSetPictureColor|lbSetPictureColorDisabled|lbSetPictureColorSelected|lbSetPictureRight|lbSetPictureRightColor|lbSetPictureRightColorDisabled|lbSetPictureRightColorSelected|lbSetSelectColor|lbSetSelectColorRight|lbSetSelected|lbSetText|lbSetTextRight|lbSetTooltip|lbSetValue|lbSize|lbSort|lbSortByValue|lbText|lbTextRight|lbValue|leader|leaderboardDeInit|leaderboardGetRows|leaderboardInit|leaderboardRequestRowsFriends|leaderboardRequestRowsGlobal|leaderboardRequestRowsGlobalAroundUser|leaderboardsRequestUploadScore|leaderboardsRequestUploadScoreKeepBest|leaderboardState|leaveVehicle|libraryCredits|libraryDisclaimers|lifeState|lightAttachObject|lightDetachObject|lightIsOn|lightnings|limitSpeed|linearConversion|lineBreak|lineIntersects|lineIntersectsObjs|lineIntersectsSurfaces|lineIntersectsWith|linkItem|list|listObjects|listRemoteTargets|listVehicleSensors|ln|lnbAddArray|lnbAddColumn|lnbAddRow|lnbClear|lnbColor|lnbColorRight|lnbCurSelRow|lnbData|lnbDeleteColumn|lnbDeleteRow|lnbGetColumnsPosition|lnbPicture|lnbPictureRight|lnbSetColor|lnbSetColorRight|lnbSetColumnsPos|lnbSetCurSelRow|lnbSetData|lnbSetPicture|lnbSetPictureColor|lnbSetPictureColorRight|lnbSetPictureColorSelected|lnbSetPictureColorSelectedRight|lnbSetPictureRight|lnbSetText|lnbSetTextRight|lnbSetValue|lnbSize|lnbSort|lnbSortByValue|lnbText|lnbTextRight|lnbValue|load|loadAbs|loadBackpack|loadFile|loadGame|loadIdentity|loadMagazine|loadOverlay|loadStatus|loadUniform|loadVest|local|localize|locationNull|locationPosition|lock|lockCameraTo|lockCargo|lockDriver|locked|lockedCargo|lockedDriver|lockedTurret|lockIdentity|lockTurret|lockWP|log|logEntities|logNetwork|logNetworkTerminate|lookAt|lookAtPos|magazineCargo|magazines|magazinesAllTurrets|magazinesAmmo|magazinesAmmoCargo|magazinesAmmoFull|magazinesDetail|magazinesDetailBackpack|magazinesDetailUniform|magazinesDetailVest|magazinesTurret|magazineTurretAmmo|mapAnimAdd|mapAnimClear|mapAnimCommit|mapAnimDone|mapCenterOnCamera|mapGridPosition|markAsFinishedOnSteam|markerAlpha|markerBrush|markerColor|markerDir|markerPos|markerShape|markerSize|markerText|markerType|max|members|menuAction|menuAdd|menuChecked|menuClear|menuCollapse|menuData|menuDelete|menuEnable|menuEnabled|menuExpand|menuHover|menuPicture|menuSetAction|menuSetCheck|menuSetData|menuSetPicture|menuSetValue|menuShortcut|menuShortcutText|menuSize|menuSort|menuText|menuURL|menuValue|min|mineActive|mineDetectedBy|missionConfigFile|missionDifficulty|missionName|missionNamespace|missionStart|missionVersion|modelToWorld|modelToWorldVisual|modelToWorldVisualWorld|modelToWorldWorld|modParams|moonIntensity|moonPhase|morale|move|move3DENCamera|moveInAny|moveInCargo|moveInCommander|moveInDriver|moveInGunner|moveInTurret|moveObjectToEnd|moveOut|moveTime|moveTo|moveToCompleted|moveToFailed|musicVolume|name|nameSound|nearEntities|nearestBuilding|nearestLocation|nearestLocations|nearestLocationWithDubbing|nearestObject|nearestObjects|nearestTerrainObjects|nearObjects|nearObjectsReady|nearRoads|nearSupplies|nearTargets|needReload|netId|netObjNull|newOverlay|nextMenuItemIndex|nextWeatherChange|nMenuItems|numberOfEnginesRTD|numberToDate|objectCurators|objectFromNetId|objectParent|objNull|objStatus|onBriefingGear|onBriefingGroup|onBriefingNotes|onBriefingPlan|onBriefingTeamSwitch|onCommandModeChanged|onDoubleClick|onEachFrame|onGroupIconClick|onGroupIconOverEnter|onGroupIconOverLeave|onHCGroupSelectionChanged|onMapSingleClick|onPlayerConnected|onPlayerDisconnected|onPreloadFinished|onPreloadStarted|onShowNewObject|onTeamSwitch|openCuratorInterface|openDLCPage|openDSInterface|openMap|openSteamApp|openYoutubeVideo|opfor|orderGetIn|overcast|overcastForecast|owner|param|params|parseNumber|parseSimpleArray|parseText|parsingNamespace|particlesQuality|pi|pickWeaponPool|pitch|pixelGrid|pixelGridBase|pixelGridNoUIScale|pixelH|pixelW|playableSlotsNumber|playableUnits|playAction|playActionNow|player|playerRespawnTime|playerSide|playersNumber|playGesture|playMission|playMove|playMoveNow|playMusic|playScriptedMission|playSound|playSound3D|position|positionCameraToWorld|posScreenToWorld|posWorldToScreen|ppEffectAdjust|ppEffectCommit|ppEffectCommitted|ppEffectCreate|ppEffectDestroy|ppEffectEnable|ppEffectEnabled|ppEffectForceInNVG|precision|preloadCamera|preloadObject|preloadSound|preloadTitleObj|preloadTitleRsc|primaryWeapon|primaryWeaponItems|primaryWeaponMagazine|priority|processDiaryLink|processInitCommands|productVersion|profileName|profileNamespace|profileNameSteam|progressLoadingScreen|progressPosition|progressSetPosition|publicVariable|publicVariableClient|publicVariableServer|pushBack|pushBackUnique|putWeaponPool|queryItemsPool|queryMagazinePool|queryWeaponPool|rad|radioChannelAdd|radioChannelCreate|radioChannelRemove|radioChannelSetCallSign|radioChannelSetLabel|radioVolume|rain|rainbow|random|rank|rankId|rating|rectangular|registeredTasks|registerTask|reload|reloadEnabled|remoteControl|remoteExec|remoteExecCall|remoteExecutedOwner|remove3DENConnection|remove3DENEventHandler|remove3DENLayer|removeAction|removeAll3DENEventHandlers|removeAllActions|removeAllAssignedItems|removeAllContainers|removeAllCuratorAddons|removeAllCuratorCameraAreas|removeAllCuratorEditingAreas|removeAllEventHandlers|removeAllHandgunItems|removeAllItems|removeAllItemsWithMagazines|removeAllMissionEventHandlers|removeAllMPEventHandlers|removeAllMusicEventHandlers|removeAllOwnedMines|removeAllPrimaryWeaponItems|removeAllWeapons|removeBackpack|removeBackpackGlobal|removeCuratorAddons|removeCuratorCameraArea|removeCuratorEditableObjects|removeCuratorEditingArea|removeDrawIcon|removeDrawLinks|removeEventHandler|removeFromRemainsCollector|removeGoggles|removeGroupIcon|removeHandgunItem|removeHeadgear|removeItem|removeItemFromBackpack|removeItemFromUniform|removeItemFromVest|removeItems|removeMagazine|removeMagazineGlobal|removeMagazines|removeMagazinesTurret|removeMagazineTurret|removeMenuItem|removeMissionEventHandler|removeMPEventHandler|removeMusicEventHandler|removeOwnedMine|removePrimaryWeaponItem|removeSecondaryWeaponItem|removeSimpleTask|removeSwitchableUnit|removeTeamMember|removeUniform|removeVest|removeWeapon|removeWeaponAttachmentCargo|removeWeaponCargo|removeWeaponGlobal|removeWeaponTurret|reportRemoteTarget|requiredVersion|resetCamShake|resetSubgroupDirection|resistance|resize|resources|respawnVehicle|restartEditorCamera|reveal|revealMine|reverse|reversedMouseY|roadAt|roadsConnectedTo|roleDescription|ropeAttachedObjects|ropeAttachedTo|ropeAttachEnabled|ropeAttachTo|ropeCreate|ropeCut|ropeDestroy|ropeDetach|ropeEndPosition|ropeLength|ropes|ropeUnwind|ropeUnwound|rotorsForcesRTD|rotorsRpmRTD|round|runInitScript|safeZoneH|safeZoneW|safeZoneWAbs|safeZoneX|safeZoneXAbs|safeZoneY|save3DENInventory|saveGame|saveIdentity|saveJoysticks|saveOverlay|saveProfileNamespace|saveStatus|saveVar|savingEnabled|say|say2D|say3D|score|scoreSide|screenshot|screenToWorld|scriptDone|scriptName|scriptNull|scudState|secondaryWeapon|secondaryWeaponItems|secondaryWeaponMagazine|select|selectBestPlaces|selectDiarySubject|selectedEditorObjects|selectEditorObject|selectionNames|selectionPosition|selectLeader|selectMax|selectMin|selectNoPlayer|selectPlayer|selectRandom|selectRandomWeighted|selectWeapon|selectWeaponTurret|sendAUMessage|sendSimpleCommand|sendTask|sendTaskResult|sendUDPMessage|serverCommand|serverCommandAvailable|serverCommandExecutable|serverName|serverTime|set|set3DENAttribute|set3DENAttributes|set3DENGrid|set3DENIconsVisible|set3DENLayer|set3DENLinesVisible|set3DENLogicType|set3DENMissionAttribute|set3DENMissionAttributes|set3DENModelsVisible|set3DENObjectType|set3DENSelected|setAccTime|setActualCollectiveRTD|setAirplaneThrottle|setAirportSide|setAmmo|setAmmoCargo|setAmmoOnPylon|setAnimSpeedCoef|setAperture|setApertureNew|setArmoryPoints|setAttributes|setAutonomous|setBehaviour|setBleedingRemaining|setBrakesRTD|setCameraInterest|setCamShakeDefParams|setCamShakeParams|setCamUseTI|setCaptive|setCenterOfMass|setCollisionLight|setCombatMode|setCompassOscillation|setConvoySeparation|setCuratorCameraAreaCeiling|setCuratorCoef|setCuratorEditingAreaType|setCuratorWaypointCost|setCurrentChannel|setCurrentTask|setCurrentWaypoint|setCustomAimCoef|setCustomWeightRTD|setDamage|setDammage|setDate|setDebriefingText|setDefaultCamera|setDestination|setDetailMapBlendPars|setDir|setDirection|setDrawIcon|setDriveOnPath|setDropInterval|setDynamicSimulationDistance|setDynamicSimulationDistanceCoef|setEditorMode|setEditorObjectScope|setEffectCondition|setEngineRpmRTD|setFace|setFaceAnimation|setFatigue|setFeatureType|setFlagAnimationPhase|setFlagOwner|setFlagSide|setFlagTexture|setFog|setForceGeneratorRTD|setFormation|setFormationTask|setFormDir|setFriend|setFromEditor|setFSMVariable|setFuel|setFuelCargo|setGroupIcon|setGroupIconParams|setGroupIconsSelectable|setGroupIconsVisible|setGroupId|setGroupIdGlobal|setGroupOwner|setGusts|setHideBehind|setHit|setHitIndex|setHitPointDamage|setHorizonParallaxCoef|setHUDMovementLevels|setIdentity|setImportance|setInfoPanel|setLeader|setLightAmbient|setLightAttenuation|setLightBrightness|setLightColor|setLightDayLight|setLightFlareMaxDistance|setLightFlareSize|setLightIntensity|setLightnings|setLightUseFlare|setLocalWindParams|setMagazineTurretAmmo|setMarkerAlpha|setMarkerAlphaLocal|setMarkerBrush|setMarkerBrushLocal|setMarkerColor|setMarkerColorLocal|setMarkerDir|setMarkerDirLocal|setMarkerPos|setMarkerPosLocal|setMarkerShape|setMarkerShapeLocal|setMarkerSize|setMarkerSizeLocal|setMarkerText|setMarkerTextLocal|setMarkerType|setMarkerTypeLocal|setMass|setMimic|setMousePosition|setMusicEffect|setMusicEventHandler|setName|setNameSound|setObjectArguments|setObjectMaterial|setObjectMaterialGlobal|setObjectProxy|setObjectTexture|setObjectTextureGlobal|setObjectViewDistance|setOvercast|setOwner|setOxygenRemaining|setParticleCircle|setParticleClass|setParticleFire|setParticleParams|setParticleRandom|setPilotCameraDirection|setPilotCameraRotation|setPilotCameraTarget|setPilotLight|setPiPEffect|setPitch|setPlateNumber|setPlayable|setPlayerRespawnTime|setPos|setPosASL|setPosASL2|setPosASLW|setPosATL|setPosition|setPosWorld|setPylonLoadOut|setPylonsPriority|setRadioMsg|setRain|setRainbow|setRandomLip|setRank|setRectangular|setRepairCargo|setRotorBrakeRTD|setShadowDistance|setShotParents|setSide|setSimpleTaskAlwaysVisible|setSimpleTaskCustomData|setSimpleTaskDescription|setSimpleTaskDestination|setSimpleTaskTarget|setSimpleTaskType|setSimulWeatherLayers|setSize|setSkill|setSlingLoad|setSoundEffect|setSpeaker|setSpeech|setSpeedMode|setStamina|setStaminaScheme|setStatValue|setSuppression|setSystemOfUnits|setTargetAge|setTaskMarkerOffset|setTaskResult|setTaskState|setTerrainGrid|setText|setTimeMultiplier|setTitleEffect|setToneMapping|setToneMappingParams|setTrafficDensity|setTrafficDistance|setTrafficGap|setTrafficSpeed|setTriggerActivation|setTriggerArea|setTriggerStatements|setTriggerText|setTriggerTimeout|setTriggerType|setType|setUnconscious|setUnitAbility|setUnitLoadout|setUnitPos|setUnitPosWeak|setUnitRank|setUnitRecoilCoefficient|setUnitTrait|setUnloadInCombat|setUserActionText|setUserMFDText|setUserMFDValue|setVariable|setVectorDir|setVectorDirAndUp|setVectorUp|setVehicleAmmo|setVehicleAmmoDef|setVehicleArmor|setVehicleCargo|setVehicleId|setVehicleInit|setVehicleLock|setVehiclePosition|setVehicleRadar|setVehicleReceiveRemoteTargets|setVehicleReportOwnPosition|setVehicleReportRemoteTargets|setVehicleTIPars|setVehicleVarName|setVelocity|setVelocityModelSpace|setVelocityTransformation|setViewDistance|setVisibleIfTreeCollapsed|setWantedRpmRTD|setWaves|setWaypointBehaviour|setWaypointCombatMode|setWaypointCompletionRadius|setWaypointDescription|setWaypointForceBehaviour|setWaypointFormation|setWaypointHousePosition|setWaypointLoiterRadius|setWaypointLoiterType|setWaypointName|setWaypointPosition|setWaypointScript|setWaypointSpeed|setWaypointStatements|setWaypointTimeout|setWaypointType|setWaypointVisible|setWeaponReloadingTime|setWind|setWindDir|setWindForce|setWindStr|setWingForceScaleRTD|setWPPos|show3DIcons|showChat|showCinemaBorder|showCommandingMenu|showCompass|showCuratorCompass|showGPS|showHUD|showLegend|showMap|shownArtilleryComputer|shownChat|shownCompass|shownCuratorCompass|showNewEditorObject|shownGPS|shownHUD|shownMap|shownPad|shownRadio|shownScoretable|shownUAVFeed|shownWarrant|shownWatch|showPad|showRadio|showScoretable|showSubtitles|showUAVFeed|showWarrant|showWatch|showWaypoint|showWaypoints|side|sideAmbientLife|sideChat|sideEmpty|sideEnemy|sideFriendly|sideLogic|sideRadio|sideUnknown|simpleTasks|simulationEnabled|simulCloudDensity|simulCloudOcclusion|simulInClouds|simulWeatherSync|sin|size|sizeOf|skill|skillFinal|skipTime|sleep|sliderPosition|sliderRange|sliderSetPosition|sliderSetRange|sliderSetSpeed|sliderSpeed|slingLoadAssistantShown|soldierMagazines|someAmmo|sort|soundVolume|speaker|speed|speedMode|splitString|sqrt|squadParams|stance|startLoadingScreen|stop|stopEngineRTD|stopped|str|sunOrMoon|supportInfo|suppressFor|surfaceIsWater|surfaceNormal|surfaceType|swimInDepth|switchableUnits|switchAction|switchCamera|switchGesture|switchLight|switchMove|synchronizedObjects|synchronizedTriggers|synchronizedWaypoints|synchronizeObjectsAdd|synchronizeObjectsRemove|synchronizeTrigger|synchronizeWaypoint|systemChat|systemOfUnits|tan|targetKnowledge|targets|targetsAggregate|targetsQuery|taskAlwaysVisible|taskChildren|taskCompleted|taskCustomData|taskDescription|taskDestination|taskHint|taskMarkerOffset|taskNull|taskParent|taskResult|taskState|taskType|teamMember|teamMemberNull|teamName|teams|teamSwitch|teamSwitchEnabled|teamType|terminate|terrainIntersect|terrainIntersectASL|terrainIntersectAtASL|text|textLog|textLogFormat|tg|time|timeMultiplier|titleCut|titleFadeOut|titleObj|titleRsc|titleText|toArray|toFixed|toLower|toString|toUpper|triggerActivated|triggerActivation|triggerArea|triggerAttachedVehicle|triggerAttachObject|triggerAttachVehicle|triggerDynamicSimulation|triggerStatements|triggerText|triggerTimeout|triggerTimeoutCurrent|triggerType|turretLocal|turretOwner|turretUnit|tvAdd|tvClear|tvCollapse|tvCollapseAll|tvCount|tvCurSel|tvData|tvDelete|tvExpand|tvExpandAll|tvPicture|tvPictureRight|tvSetColor|tvSetCurSel|tvSetData|tvSetPicture|tvSetPictureColor|tvSetPictureColorDisabled|tvSetPictureColorSelected|tvSetPictureRight|tvSetPictureRightColor|tvSetPictureRightColorDisabled|tvSetPictureRightColorSelected|tvSetSelectColor|tvSetText|tvSetTooltip|tvSetValue|tvSort|tvSortByValue|tvText|tvTooltip|tvValue|type|typeName|typeOf|UAVControl|uiNamespace|uiSleep|unassignCurator|unassignItem|unassignTeam|unassignVehicle|underwater|uniform|uniformContainer|uniformItems|uniformMagazines|unitAddons|unitAimPosition|unitAimPositionVisual|unitBackpack|unitIsUAV|unitPos|unitReady|unitRecoilCoefficient|units|unitsBelowHeight|unlinkItem|unlockAchievement|unregisterTask|updateDrawIcon|updateMenuItem|updateObjectTree|useAIOperMapObstructionTest|useAISteeringComponent|useAudioTimeForMoves|userInputDisabled|vectorAdd|vectorCos|vectorCrossProduct|vectorDiff|vectorDir|vectorDirVisual|vectorDistance|vectorDistanceSqr|vectorDotProduct|vectorFromTo|vectorMagnitude|vectorMagnitudeSqr|vectorModelToWorld|vectorModelToWorldVisual|vectorMultiply|vectorNormalized|vectorUp|vectorUpVisual|vectorWorldToModel|vectorWorldToModelVisual|vehicle|vehicleCargoEnabled|vehicleChat|vehicleRadio|vehicleReceiveRemoteTargets|vehicleReportOwnPosition|vehicleReportRemoteTargets|vehicles|vehicleVarName|velocity|velocityModelSpace|verifySignature|vest|vestContainer|vestItems|vestMagazines|viewDistance|visibleCompass|visibleGPS|visibleMap|visiblePosition|visiblePositionASL|visibleScoretable|visibleWatch|waitUntil|waves|waypointAttachedObject|waypointAttachedVehicle|waypointAttachObject|waypointAttachVehicle|waypointBehaviour|waypointCombatMode|waypointCompletionRadius|waypointDescription|waypointForceBehaviour|waypointFormation|waypointHousePosition|waypointLoiterRadius|waypointLoiterType|waypointName|waypointPosition|waypoints|waypointScript|waypointsEnabledUAV|waypointShow|waypointSpeed|waypointStatements|waypointTimeout|waypointTimeoutCurrent|waypointType|waypointVisible|weaponAccessories|weaponAccessoriesCargo|weaponCargo|weaponDirection|weaponInertia|weaponLowered|weapons|weaponsItems|weaponsItemsCargo|weaponState|weaponsTurret|weightRTD|west|WFSideText|wind|windDir|windRTD|windStr|wingsForcesRTD|worldName|worldSize|worldToModel|worldToModelVisual|worldToScreen)\b/i,number:/(?:\$|\b0x)[\da-f]+\b|(?:\B\.\d+|\b\d+(?:\.\d+)?)(?:e[+-]?\d+)?\b/i,operator:/##|>>|&&|\|\||[!=<>]=?|[-+*/%#^]|\b(?:and|mod|not|or)\b/i,"magic-variable":{pattern:/\b(?:this|thisList|thisTrigger|_exception|_fnc_scriptName|_fnc_scriptNameParent|_forEachIndex|_this|_thisEventHandler|_thisFSM|_thisScript|_x)\b/i,alias:`keyword`},constant:/\bDIK(?:_[a-z\d]+)+\b/i}),e.languages.insertBefore(`sqf`,`string`,{macro:{pattern:/(^[ \t]*)#[a-z](?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:`property`,inside:{directive:{pattern:/#[a-z]+\b/i,alias:`keyword`},comment:e.languages.sqf.comment}}}),delete e.languages.sqf[`class-name`]}di.displayName=`squirrel`,di.aliases=[];function di(e){e.register(S),e.languages.squirrel=e.languages.extend(`clike`,{comment:[e.languages.clike.comment[0],{pattern:/(^|[^\\:])(?:\/\/|#).*/,lookbehind:!0,greedy:!0}],string:{pattern:/(^|[^\\"'@])(?:@"(?:[^"]|"")*"(?!")|"(?:[^\\\r\n"]|\\.)*")/,lookbehind:!0,greedy:!0},"class-name":{pattern:/(\b(?:class|enum|extends|instanceof)\s+)\w+(?:\.\w+)*/,lookbehind:!0,inside:{punctuation:/\./}},keyword:/\b(?:__FILE__|__LINE__|base|break|case|catch|class|clone|const|constructor|continue|default|delete|else|enum|extends|for|foreach|function|if|in|instanceof|local|null|resume|return|static|switch|this|throw|try|typeof|while|yield)\b/,number:/\b(?:0x[0-9a-fA-F]+|\d+(?:\.(?:\d+|[eE][+-]?\d+))?)\b/,operator:/\+\+|--|<=>|<[-<]|>>>?|&&?|\|\|?|[-+*/%!=<>]=?|[~^]|::?/,punctuation:/[(){}\[\],;.]/}),e.languages.insertBefore(`squirrel`,`string`,{char:{pattern:/(^|[^\\"'])'(?:[^\\']|\\(?:[xuU][0-9a-fA-F]{0,8}|[\s\S]))'/,lookbehind:!0,greedy:!0}}),e.languages.insertBefore(`squirrel`,`operator`,{"attribute-punctuation":{pattern:/<\/|\/>/,alias:`important`},lambda:{pattern:/@(?=\()/,alias:`operator`}})}fi.displayName=`stan`,fi.aliases=[];function fi(e){(function(e){var t=/\b(?:algebra_solver|algebra_solver_newton|integrate_1d|integrate_ode|integrate_ode_bdf|integrate_ode_rk45|map_rect|ode_(?:adams|bdf|ckrk|rk45)(?:_tol)?|ode_adjoint_tol_ctl|reduce_sum|reduce_sum_static)\b/;e.languages.stan={comment:/\/\/.*|\/\*[\s\S]*?\*\/|#(?!include).*/,string:{pattern:/"[\x20\x21\x23-\x5B\x5D-\x7E]*"/,greedy:!0},directive:{pattern:/^([ \t]*)#include\b.*/m,lookbehind:!0,alias:`property`},"function-arg":{pattern:RegExp(`(`+t.source+`\\s*\\(\\s*)[a-zA-Z]\\w*`),lookbehind:!0,alias:`function`},constraint:{pattern:/(\b(?:int|matrix|real|row_vector|vector)\s*)<[^<>]*>/,lookbehind:!0,inside:{expression:{pattern:/(=\s*)\S(?:\S|\s+(?!\s))*?(?=\s*(?:>$|,\s*\w+\s*=))/,lookbehind:!0,inside:null},property:/\b[a-z]\w*(?=\s*=)/i,operator:/=/,punctuation:/^<|>$|,/}},keyword:[{pattern:/\bdata(?=\s*\{)|\b(?:functions|generated|model|parameters|quantities|transformed)\b/,alias:`program-block`},/\b(?:array|break|cholesky_factor_corr|cholesky_factor_cov|complex|continue|corr_matrix|cov_matrix|data|else|for|if|in|increment_log_prob|int|matrix|ordered|positive_ordered|print|real|reject|return|row_vector|simplex|target|unit_vector|vector|void|while)\b/,t],function:/\b[a-z]\w*(?=\s*\()/i,number:/(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:E[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,boolean:/\b(?:false|true)\b/,operator:/<-|\.[*/]=?|\|\|?|&&|[!=<>+\-*/]=?|['^%~?:]/,punctuation:/[()\[\]{},;]/},e.languages.stan.constraint.inside.expression.inside=e.languages.stan})(e)}pi.displayName=`stata`,pi.aliases=[];function pi(e){e.register(W),e.register(Fn),e.register(Mr),e.languages.stata={comment:[{pattern:/(^[ \t]*)\*.*/m,lookbehind:!0,greedy:!0},{pattern:/(^|\s)\/\/.*|\/\*[\s\S]*?\*\//,lookbehind:!0,greedy:!0}],"string-literal":{pattern:/"[^"\r\n]*"|[‘`']".*?"[’`']/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^{}]*\}|[‘`']\w[^’`'\r\n]*[’`']/,inside:{punctuation:/^\$\{|\}$/,expression:{pattern:/[\s\S]+/,inside:null}}},string:/[\s\S]+/}},mata:{pattern:/(^[ \t]*mata[ \t]*:)[\s\S]+?(?=^end\b)/m,lookbehind:!0,greedy:!0,alias:`language-mata`,inside:e.languages.mata},java:{pattern:/(^[ \t]*java[ \t]*:)[\s\S]+?(?=^end\b)/m,lookbehind:!0,greedy:!0,alias:`language-java`,inside:e.languages.java},python:{pattern:/(^[ \t]*python[ \t]*:)[\s\S]+?(?=^end\b)/m,lookbehind:!0,greedy:!0,alias:`language-python`,inside:e.languages.python},command:{pattern:/(^[ \t]*(?:\.[ \t]+)?(?:(?:bayes|bootstrap|by|bysort|capture|collect|fmm|fp|frame|jackknife|mfp|mi|nestreg|noisily|permute|quietly|rolling|simulate|statsby|stepwise|svy|version|xi)\b[^:\r\n]*:[ \t]*|(?:capture|noisily|quietly|version)[ \t]+)?)[a-zA-Z]\w*/m,lookbehind:!0,greedy:!0,alias:`keyword`},variable:/\$\w+|[‘`']\w[^’`'\r\n]*[’`']/,keyword:/\b(?:bayes|bootstrap|by|bysort|capture|clear|collect|fmm|fp|frame|if|in|jackknife|mi[ \t]+estimate|mfp|nestreg|noisily|of|permute|quietly|rolling|simulate|sort|statsby|stepwise|svy|varlist|version|xi)\b/,boolean:/\b(?:off|on)\b/,number:/\b\d+(?:\.\d+)?\b|\B\.\d+/,function:/\b[a-z_]\w*(?=\()/i,operator:/\+\+|--|##?|[<>!=~]=?|[+\-*^&|/]/,punctuation:/[(){}[\],:]/},e.languages.stata[`string-literal`].inside.interpolation.inside.expression.inside=e.languages.stata}mi.displayName=`stylus`,mi.aliases=[];function mi(e){(function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:`variable`,inside:{delimiter:{pattern:/^\{|\}$/,alias:`punctuation`},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}})(e)}hi.displayName=`supercollider`,hi.aliases=[`sclang`];function hi(e){e.languages.supercollider={comment:{pattern:/\/\/.*|\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\//,greedy:!0},string:{pattern:/(^|[^\\])"(?:[^"\\]|\\[\s\S])*"/,lookbehind:!0,greedy:!0},char:{pattern:/\$(?:[^\\\r\n]|\\.)/,greedy:!0},symbol:{pattern:/(^|[^\\])'(?:[^'\\]|\\[\s\S])*'|\\\w+/,lookbehind:!0,greedy:!0},keyword:/\b(?:_|arg|classvar|const|nil|var|while)\b/,boolean:/\b(?:false|true)\b/,label:{pattern:/\b[a-z_]\w*(?=\s*:)/,alias:`property`},number:/\b(?:inf|pi|0x[0-9a-fA-F]+|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(?:pi)?|\d+r[0-9a-zA-Z]+(?:\.[0-9a-zA-Z]+)?|\d+[sb]{1,4}\d*)\b/,"class-name":/\b[A-Z]\w*\b/,operator:/\.{2,3}|#(?![[{])|&&|[!=]==?|\+>>|\+{1,3}|-[->]|=>|>>|\?\?|@\|?@|\|(?:@|[!=]=)?\||!\?|<[!=>]|\*{1,2}|<{2,3}\*?|[-!%&/<>?@|=`]/,punctuation:/[{}()[\].:,;]|#[[{]/},e.languages.sclang=e.languages.supercollider}gi.displayName=`swift`,gi.aliases=[];function gi(e){e.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(`(^|[^"#])(?:"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^(])|[^\\\\\\r\\n"])*"|"""(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\"]|"(?!""))*""")(?!["#])`),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:`punctuation`},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(`(^|[^"#])(#+)(?:"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^#])|[^\\\\\\r\\n])*?"|"""(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?""")\\2`),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:`punctuation`},string:/[\s\S]+/}}],directive:{pattern:RegExp(`#(?:(?:elseif|if)\\b(?:[ ]*(?:![ \\t]*)?(?:\\b\\w+\\b(?:[ \\t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \\t]*(?:&&|\\|\\|))?)+|(?:else|endif)\\b)`),alias:`property`,inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:`constant`},"other-directive":{pattern:/#\w+\b/,alias:`property`},attribute:{pattern:/@\w+/,alias:`atrule`},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:`function`},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:`important`},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:`constant`},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:`keyword`},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},e.languages.swift[`string-literal`].forEach(function(t){t.inside.interpolation.inside=e.languages.swift})}_i.displayName=`systemd`,_i.aliases=[];function _i(e){(function(e){var t={pattern:/^[;#].*/m,greedy:!0},n=`"(?:[^\\r\\n"\\\\]|\\\\(?:[^\\r]|\\r\\n?))*"(?!\\S)`;e.languages.systemd={comment:t,section:{pattern:/^\[[^\n\r\[\]]*\](?=[ \t]*$)/m,greedy:!0,inside:{punctuation:/^\[|\]$/,"section-name":{pattern:/[\s\S]+/,alias:`selector`}}},key:{pattern:/^[^\s=]+(?=[ \t]*=)/m,greedy:!0,alias:`attr-name`},value:{pattern:RegExp(`(=[ \\t]*(?!\\s))(?:`+n+`|(?=[^"\r ]))(?:`+(`[^\\s\\\\]|[ ]+(?:(?![ "])|`+n+`)|\\\\[\\r\\n]+(?:[#;].*[\\r\\n]+)*(?![#;])`)+`)*`),lookbehind:!0,greedy:!0,alias:`attr-value`,inside:{comment:t,quoted:{pattern:RegExp(`(^|\\s)`+n),lookbehind:!0,greedy:!0},punctuation:/\\$/m,boolean:{pattern:/^(?:false|no|off|on|true|yes)$/,greedy:!0}}},punctuation:/=/}})(e)}vi.displayName=`t4-templating`,vi.aliases=[];function vi(e){(function(e){function t(e,t,n){return{pattern:RegExp(`<#`+e+`[\\s\\S]*?#>`),alias:`block`,inside:{delimiter:{pattern:RegExp(`^<#`+e+`|#>$`),alias:`important`},content:{pattern:/[\s\S]+/,inside:t,alias:n}}}}function n(n){var r=e.languages[n],i=`language-`+n;return{block:{pattern:/<#[\s\S]+?#>/,inside:{directive:t(`@`,{"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/,inside:{punctuation:/^=|^["']|["']$/}},keyword:/\b\w+(?=\s)/,"attr-name":/\b\w+/}),expression:t(`=`,r,i),"class-feature":t(`\\+`,r,i),standard:t(``,r,i)}}}}e.languages[`t4-templating`]=Object.defineProperty({},"createT4",{value:n})})(e)}yi.displayName=`t4-cs`,yi.aliases=[`t4`];function yi(e){e.register(z),e.register(vi),e.languages.t4=e.languages[`t4-cs`]=e.languages[`t4-templating`].createT4(`csharp`)}bi.displayName=`vbnet`,bi.aliases=[];function bi(e){e.register(fe),e.languages.vbnet=e.languages.extend(`basic`,{comment:[{pattern:/(?:!|REM\b).+/i,inside:{keyword:/^REM/i}},{pattern:/(^|[^\\:])'.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(^|[^"])"(?:""|[^"])*"(?!")/,lookbehind:!0,greedy:!0},keyword:/(?:\b(?:ADDHANDLER|ADDRESSOF|ALIAS|AND|ANDALSO|AS|BEEP|BLOAD|BOOLEAN|BSAVE|BYREF|BYTE|BYVAL|CALL(?: ABSOLUTE)?|CASE|CATCH|CBOOL|CBYTE|CCHAR|CDATE|CDBL|CDEC|CHAIN|CHAR|CHDIR|CINT|CLASS|CLEAR|CLNG|CLOSE|CLS|COBJ|COM|COMMON|CONST|CONTINUE|CSBYTE|CSHORT|CSNG|CSTR|CTYPE|CUINT|CULNG|CUSHORT|DATA|DATE|DECIMAL|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DEFAULT|DELEGATE|DIM|DIRECTCAST|DO|DOUBLE|ELSE|ELSEIF|END|ENUM|ENVIRON|ERASE|ERROR|EVENT|EXIT|FALSE|FIELD|FILES|FINALLY|FOR(?: EACH)?|FRIEND|FUNCTION|GET|GETTYPE|GETXMLNAMESPACE|GLOBAL|GOSUB|GOTO|HANDLES|IF|IMPLEMENTS|IMPORTS|IN|INHERITS|INPUT|INTEGER|INTERFACE|IOCTL|IS|ISNOT|KEY|KILL|LET|LIB|LIKE|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|ME|MKDIR|MOD|MODULE|MUSTINHERIT|MUSTOVERRIDE|MYBASE|MYCLASS|NAME|NAMESPACE|NARROWING|NEW|NEXT|NOT|NOTHING|NOTINHERITABLE|NOTOVERRIDABLE|OBJECT|OF|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPERATOR|OPTION(?: BASE)?|OPTIONAL|OR|ORELSE|OUT|OVERLOADS|OVERRIDABLE|OVERRIDES|PARAMARRAY|PARTIAL|POKE|PRIVATE|PROPERTY|PROTECTED|PUBLIC|PUT|RAISEEVENT|READ|READONLY|REDIM|REM|REMOVEHANDLER|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SBYTE|SELECT(?: CASE)?|SET|SHADOWS|SHARED|SHELL|SHORT|SINGLE|SLEEP|STATIC|STEP|STOP|STRING|STRUCTURE|SUB|SWAP|SYNCLOCK|SYSTEM|THEN|THROW|TIMER|TO|TROFF|TRON|TRUE|TRY|TRYCAST|TYPE|TYPEOF|UINTEGER|ULONG|UNLOCK|UNTIL|USHORT|USING|VIEW PRINT|WAIT|WEND|WHEN|WHILE|WIDENING|WITH|WITHEVENTS|WRITE|WRITEONLY|XOR)|\B(?:#CONST|#ELSE|#ELSEIF|#END|#IF))(?:\$|\b)/i,punctuation:/[,;:(){}]/})}xi.displayName=`t4-vb`,xi.aliases=[];function xi(e){e.register(vi),e.register(bi),e.languages[`t4-vb`]=e.languages[`t4-templating`].createT4(`vbnet`)}Si.displayName=`yaml`,Si.aliases=[`yml`];function Si(e){(function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r=`(?:`+n.source+`(?:[ ]+`+t.source+`)?|`+t.source+`(?:[ ]+`+n.source+`)?)`,i=`(?:[^\\s\\x00-\\x08\\x0e-\\x1f!"#%&'*,\\-:>?@[\\]\`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-])(?:[ \\t]*(?:(?![#:])|:))*`.replace(//g,function(){return`[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]`}),a=`"(?:[^"\\\\\\r\\n]|\\\\.)*"|'(?:[^'\\\\\\r\\n]|\\\\.)*'`;function o(e,t){t=(t||``).replace(/m/g,``)+`m`;var n=`([:\\-,[{]\\s*(?:\\s<>[ \\t]+)?)(?:<>)(?=[ \\t]*(?:$|,|\\]|\\}|(?:[\\r\\n]\\s*)?#))`.replace(/<>/g,function(){return r}).replace(/<>/g,function(){return e});return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(`([\\-:]\\s*(?:\\s<>[ \\t]+)?[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)\\S[^\\r\\n]*(?:\\2[^\\r\\n]+)*)`.replace(/<>/g,function(){return r})),lookbehind:!0,alias:`string`},comment:/#.*/,key:{pattern:RegExp(`((?:^|[:\\-,[{\\r\\n?])[ \\t]*(?:<>[ \\t]+)?)<>(?=\\s*:\\s)`.replace(/<>/g,function(){return r}).replace(/<>/g,function(){return`(?:`+i+`|`+a+`)`})),lookbehind:!0,greedy:!0,alias:`atrule`},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:`important`},datetime:{pattern:o(`\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \\t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?`),lookbehind:!0,alias:`number`},boolean:{pattern:o(`false|true`,`i`),lookbehind:!0,alias:`important`},null:{pattern:o(`null|~`,`i`),lookbehind:!0,alias:`important`},string:{pattern:o(a),lookbehind:!0,greedy:!0},number:{pattern:o(`[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)`,`i`),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml})(e)}Ci.displayName=`tap`,Ci.aliases=[];function Ci(e){e.register(Si),e.languages.tap={fail:/not ok[^#{\n\r]*/,pass:/ok[^#{\n\r]*/,pragma:/pragma [+-][a-z]+/,bailout:/bail out!.*/i,version:/TAP version \d+/i,plan:/\b\d+\.\.\d+(?: +#.*)?/,subtest:{pattern:/# Subtest(?:: .*)?/,greedy:!0},punctuation:/[{}]/,directive:/#.*/,yamlish:{pattern:/(^[ \t]*)---[\s\S]*?[\r\n][ \t]*\.\.\.$/m,lookbehind:!0,inside:e.languages.yaml,alias:`language-yaml`}}}wi.displayName=`tcl`,wi.aliases=[];function wi(e){e.languages.tcl={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:{pattern:/"(?:[^"\\\r\n]|\\(?:\r\n|[\s\S]))*"/,greedy:!0},variable:[{pattern:/(\$)(?:::)?(?:[a-zA-Z0-9]+::)*\w+/,lookbehind:!0},{pattern:/(\$)\{[^}]+\}/,lookbehind:!0},{pattern:/(^[\t ]*set[ \t]+)(?:::)?(?:[a-zA-Z0-9]+::)*\w+/m,lookbehind:!0}],function:{pattern:/(^[\t ]*proc[ \t]+)\S+/m,lookbehind:!0},builtin:[{pattern:/(^[\t ]*)(?:break|class|continue|error|eval|exit|for|foreach|if|proc|return|switch|while)\b/m,lookbehind:!0},/\b(?:else|elseif)\b/],scope:{pattern:/(^[\t ]*)(?:global|upvar|variable)\b/m,lookbehind:!0,alias:`constant`},keyword:{pattern:/(^[\t ]*|\[)(?:Safe_Base|Tcl|after|append|apply|array|auto_(?:execok|import|load|mkindex|qualify|reset)|automkindex_old|bgerror|binary|catch|cd|chan|clock|close|concat|dde|dict|encoding|eof|exec|expr|fblocked|fconfigure|fcopy|file(?:event|name)?|flush|gets|glob|history|http|incr|info|interp|join|lappend|lassign|lindex|linsert|list|llength|load|lrange|lrepeat|lreplace|lreverse|lsearch|lset|lsort|math(?:func|op)|memory|msgcat|namespace|open|package|parray|pid|pkg_mkIndex|platform|puts|pwd|re_syntax|read|refchan|regexp|registry|regsub|rename|scan|seek|set|socket|source|split|string|subst|tcl(?:_endOfWord|_findLibrary|startOf(?:Next|Previous)Word|test|vars|wordBreak(?:After|Before))|tell|time|tm|trace|unknown|unload|unset|update|uplevel|vwait)\b/m,lookbehind:!0},operator:/!=?|\*\*?|==|&&?|\|\|?|<[=<]?|>[=>]?|[-+~\/%?^]|\b(?:eq|in|ne|ni)\b/,punctuation:/[{}()\[\]]/}}Ti.displayName=`textile`,Ti.aliases=[];function Ti(e){e.register(B),(function(e){var t=`\\([^|()\\n]+\\)|\\[[^\\]\\n]+\\]|\\{[^}\\n]+\\}`,n=`\\)|\\((?![^|()\\n]+\\))`;function r(e,r){return RegExp(e.replace(//g,function(){return`(?:`+t+`)`}).replace(//g,function(){return`(?:`+n+`)`}),r||``)}var i={css:{pattern:/\{[^{}]+\}/,inside:{rest:e.languages.css}},"class-id":{pattern:/(\()[^()]+(?=\))/,lookbehind:!0,alias:`attr-value`},lang:{pattern:/(\[)[^\[\]]+(?=\])/,lookbehind:!0,alias:`attr-value`},punctuation:/[\\\/]\d+|\S/},a=e.languages.textile=e.languages.extend(`markup`,{phrase:{pattern:/(^|\r|\n)\S[\s\S]*?(?=$|\r?\n\r?\n|\r\r)/,lookbehind:!0,inside:{"block-tag":{pattern:r(`^[a-z]\\w*(?:||[<>=])*\\.`),inside:{modifier:{pattern:r(`(^[a-z]\\w*)(?:||[<>=])+(?=\\.)`),lookbehind:!0,inside:i},tag:/^[a-z]\w*/,punctuation:/\.$/}},list:{pattern:r(`^[*#]+*\\s+\\S.*`,`m`),inside:{modifier:{pattern:r(`(^[*#]+)+`),lookbehind:!0,inside:i},punctuation:/^[*#]+/}},table:{pattern:r(`^(?:(?:||[<>=^~])+\\.\\s*)?(?:\\|(?:(?:||[<>=^~_]|[\\\\/]\\d+)+\\.|(?!(?:||[<>=^~_]|[\\\\/]\\d+)+\\.))[^|]*)+\\|`,`m`),inside:{modifier:{pattern:r(`(^|\\|(?:\\r?\\n|\\r)?)(?:||[<>=^~_]|[\\\\/]\\d+)+(?=\\.)`),lookbehind:!0,inside:i},punctuation:/\||^\./}},inline:{pattern:r(`(^|[^a-zA-Z\\d])(\\*\\*|__|\\?\\?|[*_%@+\\-^~])*.+?\\2(?![a-zA-Z\\d])`),lookbehind:!0,inside:{bold:{pattern:r(`(^(\\*\\*?)*).+?(?=\\2)`),lookbehind:!0},italic:{pattern:r(`(^(__?)*).+?(?=\\2)`),lookbehind:!0},cite:{pattern:r(`(^\\?\\?*).+?(?=\\?\\?)`),lookbehind:!0,alias:`string`},code:{pattern:r(`(^@*).+?(?=@)`),lookbehind:!0,alias:`keyword`},inserted:{pattern:r(`(^\\+*).+?(?=\\+)`),lookbehind:!0},deleted:{pattern:r(`(^-*).+?(?=-)`),lookbehind:!0},span:{pattern:r(`(^%*).+?(?=%)`),lookbehind:!0},modifier:{pattern:r(`(^\\*\\*|__|\\?\\?|[*_%@+\\-^~])+`),lookbehind:!0,inside:i},punctuation:/[*_%?@+\-^~]+/}},"link-ref":{pattern:/^\[[^\]]+\]\S+$/m,inside:{string:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0},url:{pattern:/(^\])\S+$/,lookbehind:!0},punctuation:/[\[\]]/}},link:{pattern:r(`"*[^"]+":.+?(?=[^\\w/]?(?:\\s|$))`),inside:{text:{pattern:r(`(^"*)[^"]+(?=")`),lookbehind:!0},modifier:{pattern:r(`(^")+`),lookbehind:!0,inside:i},url:{pattern:/(:).+/,lookbehind:!0},punctuation:/[":]/}},image:{pattern:r(`!(?:||[<>=])*(?![<>=])[^!\\s()]+(?:\\([^)]+\\))?!(?::.+?(?=[^\\w/]?(?:\\s|$)))?`),inside:{source:{pattern:r(`(^!(?:||[<>=])*)(?![<>=])[^!\\s()]+(?:\\([^)]+\\))?(?=!)`),lookbehind:!0,alias:`url`},modifier:{pattern:r(`(^!)(?:||[<>=])+`),lookbehind:!0,inside:i},url:{pattern:/(:).+/,lookbehind:!0},punctuation:/[!:]/}},footnote:{pattern:/\b\[\d+\]/,alias:`comment`,inside:{punctuation:/\[|\]/}},acronym:{pattern:/\b[A-Z\d]+\([^)]+\)/,inside:{comment:{pattern:/(\()[^()]+(?=\))/,lookbehind:!0},punctuation:/[()]/}},mark:{pattern:/\b\((?:C|R|TM)\)/,alias:`comment`,inside:{punctuation:/[()]/}}}}}),o=a.phrase.inside,s={inline:o.inline,link:o.link,image:o.image,footnote:o.footnote,acronym:o.acronym,mark:o.mark};a.tag.pattern=/<\/?(?!\d)[a-z0-9]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i;var c=o.inline.inside;c.bold.inside=s,c.italic.inside=s,c.inserted.inside=s,c.deleted.inside=s,c.span.inside=s;var l=o.table.inside;l.inline=s.inline,l.link=s.link,l.image=s.image,l.footnote=s.footnote,l.acronym=s.acronym,l.mark=s.mark})(e)}Ei.displayName=`toml`,Ei.aliases=[];function Ei(e){(function(e){var t=`(?:[\\w-]+|'[^'\\n\\r]*'|"(?:\\\\.|[^\\\\"\\r\\n])*")`;function n(e){return e.replace(/__/g,function(){return t})}e.languages.toml={comment:{pattern:/#.*/,greedy:!0},table:{pattern:RegExp(n(`(^[\\t ]*\\[\\s*(?:\\[\\s*)?)__(?:\\s*\\.\\s*__)*(?=\\s*\\])`),`m`),lookbehind:!0,greedy:!0,alias:`class-name`},key:{pattern:RegExp(n(`(^[\\t ]*|[{,]\\s*)__(?:\\s*\\.\\s*__)*(?=\\s*=)`),`m`),lookbehind:!0,greedy:!0,alias:`property`},string:{pattern:/"""(?:\\[\s\S]|[^\\])*?"""|'''[\s\S]*?'''|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},date:[{pattern:/\b\d{4}-\d{2}-\d{2}(?:[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?)?\b/i,alias:`number`},{pattern:/\b\d{2}:\d{2}:\d{2}(?:\.\d+)?\b/,alias:`number`}],number:/(?:\b0(?:x[\da-zA-Z]+(?:_[\da-zA-Z]+)*|o[0-7]+(?:_[0-7]+)*|b[10]+(?:_[10]+)*))\b|[-+]?\b\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?\b|[-+]?\b(?:inf|nan)\b/,boolean:/\b(?:false|true)\b/,punctuation:/[.,=[\]{}]/}})(e)}Di.displayName=`tremor`,Di.aliases=[`trickle`,`troy`];function Di(e){(function(e){e.languages.tremor={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},"interpolated-string":null,extractor:{pattern:/\b[a-z_]\w*\|(?:[^\r\n\\|]|\\(?:\r\n|[\s\S]))*\|/i,greedy:!0,inside:{regex:{pattern:/(^re)\|[\s\S]+/,lookbehind:!0},function:/^\w+/,value:/\|[\s\S]+/}},identifier:{pattern:/`[^`]*`/,greedy:!0},function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())\b/,keyword:/\b(?:args|as|by|case|config|connect|connector|const|copy|create|default|define|deploy|drop|each|emit|end|erase|event|flow|fn|for|from|group|having|insert|into|intrinsic|let|links|match|merge|mod|move|of|operator|patch|pipeline|recur|script|select|set|sliding|state|stream|to|tumbling|update|use|when|where|window|with)\b/,boolean:/\b(?:false|null|true)\b/i,number:/\b(?:0b[01_]*|0x[0-9a-fA-F_]*|\d[\d_]*(?:\.\d[\d_]*)?(?:[Ee][+-]?[\d_]+)?)\b/,"pattern-punctuation":{pattern:/%(?=[({[])/,alias:`punctuation`},operator:/[-+*\/%~!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?>?=?|(?:absent|and|not|or|present|xor)\b/,punctuation:/::|[;\[\]()\{\},.:]/};var t=`#\\{(?:[^"{}]|\\{[^{}]*\\}|"(?:[^"\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*")*\\}`;e.languages.tremor[`interpolated-string`]={pattern:RegExp(`(^|[^\\\\])(?:"""(?:[^"\\\\#]|\\\\[\\s\\S]|"(?!"")|#(?!\\{)|`+t+`)*"""|"(?:[^"\\\\\\r\\n#]|\\\\(?:\\r\\n|[\\s\\S])|#(?!\\{)|`+t+`)*")`),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:RegExp(t),inside:{punctuation:/^#\{|\}$/,expression:{pattern:/[\s\S]+/,inside:e.languages.tremor}}},string:/[\s\S]+/}},e.languages.troy=e.languages.tremor,e.languages.trickle=e.languages.tremor})(e)}Oi.displayName=`tsx`,Oi.aliases=[];function Oi(e){e.register(pn),e.register(sn),(function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend(`jsx`,t),delete e.languages.tsx.parameter,delete e.languages.tsx[`literal-property`];var n=e.languages.tsx.tag;n.pattern=RegExp(`(^|[^\\w$]|(?=<\\/))(?:`+n.pattern.source+`)`,n.pattern.flags),n.lookbehind=!0})(e)}ki.displayName=`tt2`,ki.aliases=[];function ki(e){e.register(S),e.register(U),(function(e){e.languages.tt2=e.languages.extend(`clike`,{comment:/#.*|\[%#[\s\S]*?%\]/,keyword:/\b(?:BLOCK|CALL|CASE|CATCH|CLEAR|DEBUG|DEFAULT|ELSE|ELSIF|END|FILTER|FINAL|FOREACH|GET|IF|IN|INCLUDE|INSERT|LAST|MACRO|META|NEXT|PERL|PROCESS|RAWPERL|RETURN|SET|STOP|SWITCH|TAGS|THROW|TRY|UNLESS|USE|WHILE|WRAPPER)\b/,punctuation:/[[\]{},()]/}),e.languages.insertBefore(`tt2`,`number`,{operator:/=[>=]?|!=?|<=?|>=?|&&|\|\|?|\b(?:and|not|or)\b/,variable:{pattern:/\b[a-z]\w*(?:\s*\.\s*(?:\d+|\$?[a-z]\w*))*\b/i}}),e.languages.insertBefore(`tt2`,`keyword`,{delimiter:{pattern:/^(?:\[%|%%)-?|-?%\]$/,alias:`punctuation`}}),e.languages.insertBefore(`tt2`,`string`,{"single-quoted-string":{pattern:/'[^\\']*(?:\\[\s\S][^\\']*)*'/,greedy:!0,alias:`string`},"double-quoted-string":{pattern:/"[^\\"]*(?:\\[\s\S][^\\"]*)*"/,greedy:!0,alias:`string`,inside:{variable:{pattern:/\$(?:[a-z]\w*(?:\.(?:\d+|\$?[a-z]\w*))*)/i}}}}),delete e.languages.tt2.string,e.hooks.add(`before-tokenize`,function(t){e.languages[`markup-templating`].buildPlaceholders(t,`tt2`,/\[%[\s\S]+?%\]/g)}),e.hooks.add(`after-tokenize`,function(t){e.languages[`markup-templating`].tokenizePlaceholders(t,`tt2`)})})(e)}Ai.displayName=`twig`,Ai.aliases=[];function Ai(e){e.register(U),e.languages.twig={comment:/^\{#[\s\S]*?#\}$/,"tag-name":{pattern:/(^\{%-?\s*)\w+/,lookbehind:!0,alias:`keyword`},delimiter:{pattern:/^\{[{%]-?|-?[%}]\}$/,alias:`punctuation`},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,inside:{punctuation:/^['"]|['"]$/}},keyword:/\b(?:even|if|odd)\b/,boolean:/\b(?:false|null|true)\b/,number:/\b0x[\dA-Fa-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][-+]?\d+)?/,operator:[{pattern:/(\s)(?:and|b-and|b-or|b-xor|ends with|in|is|matches|not|or|same as|starts with)(?=\s)/,lookbehind:!0},/[=<>]=?|!=|\*\*?|\/\/?|\?:?|[-+~%|]/],punctuation:/[()\[\]{}:.,]/},e.hooks.add(`before-tokenize`,function(t){t.language===`twig`&&e.languages[`markup-templating`].buildPlaceholders(t,`twig`,/\{(?:#[\s\S]*?#|%[\s\S]*?%|\{[\s\S]*?\})\}/g)}),e.hooks.add(`after-tokenize`,function(t){e.languages[`markup-templating`].tokenizePlaceholders(t,`twig`)})}ji.displayName=`typoscript`,ji.aliases=[`tsconfig`];function ji(e){(function(e){var t=/\b(?:ACT|ACTIFSUB|CARRAY|CASE|CLEARGIF|COA|COA_INT|CONSTANTS|CONTENT|CUR|EDITPANEL|EFFECT|EXT|FILE|FLUIDTEMPLATE|FORM|FRAME|FRAMESET|GIFBUILDER|GMENU|GMENU_FOLDOUT|GMENU_LAYERS|GP|HMENU|HRULER|HTML|IENV|IFSUB|IMAGE|IMGMENU|IMGMENUITEM|IMGTEXT|IMG_RESOURCE|INCLUDE_TYPOSCRIPT|JSMENU|JSMENUITEM|LLL|LOAD_REGISTER|NO|PAGE|RECORDS|RESTORE_REGISTER|TEMPLATE|TEXT|TMENU|TMENUITEM|TMENU_LAYERS|USER|USER_INT|_GIFBUILDER|global|globalString|globalVar)\b/;e.languages.typoscript={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:= \t]|(?:^|[^= \t])[ \t]+)\/\/.*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^"'])#.*/,lookbehind:!0,greedy:!0}],function:[{pattern://,inside:{string:{pattern:/"[^"\r\n]*"|'[^'\r\n]*'/,inside:{keyword:t}},keyword:{pattern:/INCLUDE_TYPOSCRIPT/}}},{pattern:/@import\s*(?:"[^"\r\n]*"|'[^'\r\n]*')/,inside:{string:/"[^"\r\n]*"|'[^'\r\n]*'/}}],string:{pattern:/^([^=]*=[< ]?)(?:(?!\]\n).)*/,lookbehind:!0,inside:{function:/\{\$.*\}/,keyword:t,number:/^\d+$/,punctuation:/[,|:]/}},keyword:t,number:{pattern:/\b\d+\s*[.{=]/,inside:{operator:/[.{=]/}},tag:{pattern:/\.?[-\w\\]+\.?/,inside:{punctuation:/\./}},punctuation:/[{}[\];(),.:|]/,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/},e.languages.tsconfig=e.languages.typoscript})(e)}Mi.displayName=`unrealscript`,Mi.aliases=[`uc`,`uscript`];function Mi(e){e.languages.unrealscript={comment:/\/\/.*|\/\*[\s\S]*?\*\//,string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},category:{pattern:/(\b(?:(?:autoexpand|hide|show)categories|var)\s*\()[^()]+(?=\))/,lookbehind:!0,greedy:!0,alias:`property`},metadata:{pattern:/(\w\s*)<\s*\w+\s*=[^<>|=\r\n]+(?:\|\s*\w+\s*=[^<>|=\r\n]+)*>/,lookbehind:!0,greedy:!0,inside:{property:/\b\w+(?=\s*=)/,operator:/=/,punctuation:/[<>|]/}},macro:{pattern:/`\w+/,alias:`property`},"class-name":{pattern:/(\b(?:class|enum|extends|interface|state(?:\(\))?|struct|within)\s+)\w+/,lookbehind:!0},keyword:/\b(?:abstract|actor|array|auto|autoexpandcategories|bool|break|byte|case|class|classgroup|client|coerce|collapsecategories|config|const|continue|default|defaultproperties|delegate|dependson|deprecated|do|dontcollapsecategories|editconst|editinlinenew|else|enum|event|exec|export|extends|final|float|for|forcescriptorder|foreach|function|goto|guid|hidecategories|hidedropdown|if|ignores|implements|inherits|input|int|interface|iterator|latent|local|material|name|native|nativereplication|noexport|nontransient|noteditinlinenew|notplaceable|operator|optional|out|pawn|perobjectconfig|perobjectlocalized|placeable|postoperator|preoperator|private|protected|reliable|replication|return|server|showcategories|simulated|singular|state|static|string|struct|structdefault|structdefaultproperties|switch|texture|transient|travel|unreliable|until|var|vector|while|within)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,boolean:/\b(?:false|true)\b/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/>>|<<|--|\+\+|\*\*|[-+*/~!=<>$@]=?|&&?|\|\|?|\^\^?|[?:%]|\b(?:ClockwiseFrom|Cross|Dot)\b/,punctuation:/[()[\]{};,.]/},e.languages.uc=e.languages.uscript=e.languages.unrealscript}Ni.displayName=`uorazor`,Ni.aliases=[];function Ni(e){e.languages.uorazor={"comment-hash":{pattern:/#.*/,alias:`comment`,greedy:!0},"comment-slash":{pattern:/\/\/.*/,alias:`comment`,greedy:!0},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,inside:{punctuation:/^['"]|['"]$/},greedy:!0},"source-layers":{pattern:/\b(?:arms|backpack|blue|bracelet|cancel|clear|cloak|criminal|earrings|enemy|facialhair|friend|friendly|gloves|gray|grey|ground|hair|head|innerlegs|innertorso|innocent|lefthand|middletorso|murderer|neck|nonfriendly|onehandedsecondary|outerlegs|outertorso|pants|red|righthand|ring|self|shirt|shoes|talisman|waist)\b/i,alias:`function`},"source-commands":{pattern:/\b(?:alliance|attack|cast|clearall|clearignore|clearjournal|clearlist|clearsysmsg|createlist|createtimer|dclick|dclicktype|dclickvar|dress|dressconfig|drop|droprelloc|emote|getlabel|guild|gumpclose|gumpresponse|hotkey|ignore|lasttarget|lift|lifttype|menu|menuresponse|msg|org|organize|organizer|overhead|pause|poplist|potion|promptresponse|pushlist|removelist|removetimer|rename|restock|say|scav|scavenger|script|setability|setlasttarget|setskill|settimer|setvar|sysmsg|target|targetloc|targetrelloc|targettype|undress|unignore|unsetvar|useobject|useonce|useskill|usetype|virtue|wait|waitforgump|waitformenu|waitforprompt|waitforstat|waitforsysmsg|waitfortarget|walk|wfsysmsg|wft|whisper|yell)\b/,alias:`function`},"tag-name":{pattern:/(^\{%-?\s*)\w+/,lookbehind:!0,alias:`keyword`},delimiter:{pattern:/^\{[{%]-?|-?[%}]\}$/,alias:`punctuation`},function:/\b(?:atlist|close|closest|count|counter|counttype|dead|dex|diffhits|diffmana|diffstam|diffweight|find|findbuff|finddebuff|findlayer|findtype|findtypelist|followers|gumpexists|hidden|hits|hp|hue|human|humanoid|ingump|inlist|insysmessage|insysmsg|int|invul|lhandempty|list|listexists|mana|maxhits|maxhp|maxmana|maxstam|maxweight|monster|mounted|name|next|noto|paralyzed|poisoned|position|prev|previous|queued|rand|random|rhandempty|skill|stam|str|targetexists|timer|timerexists|varexist|warmode|weight)\b/,keyword:/\b(?:and|as|break|continue|else|elseif|endfor|endif|endwhile|for|if|loop|not|or|replay|stop|while)\b/,boolean:/\b(?:false|null|true)\b/,number:/\b0x[\dA-Fa-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][-+]?\d+)?/,operator:[{pattern:/(\s)(?:and|b-and|b-or|b-xor|ends with|in|is|matches|not|or|same as|starts with)(?=\s)/,lookbehind:!0},/[=<>]=?|!=|\*\*?|\/\/?|\?:?|[-+~%|]/],punctuation:/[()\[\]{}:.,]/}}Pi.displayName=`uri`,Pi.aliases=[`url`];function Pi(e){e.languages.uri={scheme:{pattern:/^[a-z][a-z0-9+.-]*:/im,greedy:!0,inside:{"scheme-delimiter":/:$/}},fragment:{pattern:/#[\w\-.~!$&'()*+,;=%:@/?]*/,inside:{"fragment-delimiter":/^#/}},query:{pattern:/\?[\w\-.~!$&'()*+,;=%:@/?]*/,inside:{"query-delimiter":{pattern:/^\?/,greedy:!0},"pair-delimiter":/[&;]/,pair:{pattern:/^[^=][\s\S]*/,inside:{key:/^[^=]+/,value:{pattern:/(^=)[\s\S]+/,lookbehind:!0}}}}},authority:{pattern:RegExp(`^\\/\\/(?:[\\w\\-.~!$&'()*+,;=%:]*@)?(?:\\[(?:[0-9a-fA-F:.]{2,48}|v[0-9a-fA-F]+\\.[\\w\\-.~!$&'()*+,;=]+)\\]|[\\w\\-.~!$&'()*+,;=%]*)(?::\\d*)?`,`m`),inside:{"authority-delimiter":/^\/\//,"user-info-segment":{pattern:/^[\w\-.~!$&'()*+,;=%:]*@/,inside:{"user-info-delimiter":/@$/,"user-info":/^[\w\-.~!$&'()*+,;=%:]+/}},"port-segment":{pattern:/:\d*$/,inside:{"port-delimiter":/^:/,port:/^\d+/}},host:{pattern:/[\s\S]+/,inside:{"ip-literal":{pattern:/^\[[\s\S]+\]$/,inside:{"ip-literal-delimiter":/^\[|\]$/,"ipv-future":/^v[\s\S]+/,"ipv6-address":/^[\s\S]+/}},"ipv4-address":/^(?:(?:[03-9]\d?|[12]\d{0,2})\.){3}(?:[03-9]\d?|[12]\d{0,2})$/}}}},path:{pattern:/^[\w\-.~!$&'()*+,;=%:@/]+/m,inside:{"path-separator":/\//}}},e.languages.url=e.languages.uri}Fi.displayName=`v`,Fi.aliases=[];function Fi(e){e.register(S),(function(e){var t={pattern:/[\s\S]+/,inside:null};e.languages.v=e.languages.extend(`clike`,{string:{pattern:/r?(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,alias:`quoted-string`,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:\{[^{}]*\}|\w+(?:\.\w+(?:\([^\(\)]*\))?|\[[^\[\]]+\])*)/,lookbehind:!0,inside:{"interpolation-variable":{pattern:/^\$\w[\s\S]*$/,alias:`variable`},"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:`punctuation`},"interpolation-expression":t}}}},"class-name":{pattern:/(\b(?:enum|interface|struct|type)\s+)(?:C\.)?\w+/,lookbehind:!0},keyword:/(?:\b(?:__global|as|asm|assert|atomic|break|chan|const|continue|defer|else|embed|enum|fn|for|go(?:to)?|if|import|in|interface|is|lock|match|module|mut|none|or|pub|return|rlock|select|shared|sizeof|static|struct|type(?:of)?|union|unsafe)|\$(?:else|for|if)|#(?:flag|include))\b/,number:/\b(?:0x[a-f\d]+(?:_[a-f\d]+)*|0b[01]+(?:_[01]+)*|0o[0-7]+(?:_[0-7]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?)\b/i,operator:/~|\?|[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\.?/,builtin:/\b(?:any(?:_float|_int)?|bool|byte(?:ptr)?|charptr|f(?:32|64)|i(?:8|16|64|128|nt)|rune|size_t|string|u(?:16|32|64|128)|voidptr)\b/}),t.inside=e.languages.v,e.languages.insertBefore(`v`,`string`,{char:{pattern:/`(?:\\`|\\?[^`]{1,2})`/,alias:`rune`}}),e.languages.insertBefore(`v`,`operator`,{attribute:{pattern:/(^[\t ]*)\[(?:deprecated|direct_array_access|flag|inline|live|ref_only|typedef|unsafe_fn|windows_stdcall)\]/m,lookbehind:!0,alias:`annotation`,inside:{punctuation:/[\[\]]/,keyword:/\w+/}},generic:{pattern:/<\w+>(?=\s*[\)\{])/,inside:{punctuation:/[<>]/,"class-name":/\w+/}}}),e.languages.insertBefore(`v`,`function`,{"generic-function":{pattern:/\b\w+\s*<\w+>(?=\()/,inside:{function:/^\w+/,generic:{pattern:/<\w+>/,inside:e.languages.v.generic.inside}}}})})(e)}Ii.displayName=`vala`,Ii.aliases=[];function Ii(e){e.register(S),e.languages.vala=e.languages.extend(`clike`,{"class-name":[{pattern:/\b[A-Z]\w*(?:\.\w+)*\b(?=(?:\?\s+|\*?\s+\*?)\w)/,inside:{punctuation:/\./}},{pattern:/(\[)[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/(\b(?:class|interface)\s+[A-Z]\w*(?:\.\w+)*\s*:\s*)[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/((?:\b(?:class|enum|interface|new|struct)\s+)|(?:catch\s+\())[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}}],keyword:/\b(?:abstract|as|assert|async|base|bool|break|case|catch|char|class|const|construct|continue|default|delegate|delete|do|double|dynamic|else|ensures|enum|errordomain|extern|finally|float|for|foreach|get|if|in|inline|int|int16|int32|int64|int8|interface|internal|is|lock|long|namespace|new|null|out|override|owned|params|private|protected|public|ref|requires|return|set|short|signal|sizeof|size_t|ssize_t|static|string|struct|switch|this|throw|throws|try|typeof|uchar|uint|uint16|uint32|uint64|uint8|ulong|unichar|unowned|ushort|using|value|var|virtual|void|volatile|weak|while|yield)\b/i,function:/\b\w+(?=\s*\()/,number:/(?:\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)(?:f|u?l?)?/i,operator:/\+\+|--|&&|\|\||<<=?|>>=?|=>|->|~|[+\-*\/%&^|=!<>]=?|\?\??|\.\.\./,punctuation:/[{}[\];(),.:]/,constant:/\b[A-Z0-9_]+\b/}),e.languages.insertBefore(`vala`,`string`,{"raw-string":{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:`string`},"template-string":{pattern:/@"[\s\S]*?"/,greedy:!0,inside:{interpolation:{pattern:/\$(?:\([^)]*\)|[a-zA-Z]\w*)/,inside:{delimiter:{pattern:/^\$\(?|\)$/,alias:`punctuation`},rest:e.languages.vala}},string:/[\s\S]+/}}}),e.languages.insertBefore(`vala`,`keyword`,{regex:{pattern:/\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[imsx]{0,4}(?=\s*(?:$|[\r\n,.;})\]]))/,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:`language-regex`,inside:e.languages.regex},"regex-delimiter":/^\//,"regex-flags":/^[a-z]+$/}}})}Li.displayName=`velocity`,Li.aliases=[];function Li(e){e.register(B),(function(e){e.languages.velocity=e.languages.extend(`markup`,{});var t={variable:{pattern:/(^|[^\\](?:\\\\)*)\$!?(?:[a-z][\w-]*(?:\([^)]*\))?(?:\.[a-z][\w-]*(?:\([^)]*\))?|\[[^\]]+\])*|\{[^}]+\})/i,lookbehind:!0,inside:{}},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},number:/\b\d+\b/,boolean:/\b(?:false|true)\b/,operator:/[=!<>]=?|[+*/%-]|&&|\|\||\.\.|\b(?:eq|g[et]|l[et]|n(?:e|ot))\b/,punctuation:/[(){}[\]:,.]/};t.variable.inside={string:t.string,function:{pattern:/([^\w-])[a-z][\w-]*(?=\()/,lookbehind:!0},number:t.number,boolean:t.boolean,punctuation:t.punctuation},e.languages.insertBefore(`velocity`,`comment`,{unparsed:{pattern:/(^|[^\\])#\[\[[\s\S]*?\]\]#/,lookbehind:!0,greedy:!0,inside:{punctuation:/^#\[\[|\]\]#$/}},"velocity-comment":[{pattern:/(^|[^\\])#\*[\s\S]*?\*#/,lookbehind:!0,greedy:!0,alias:`comment`},{pattern:/(^|[^\\])##.*/,lookbehind:!0,greedy:!0,alias:`comment`}],directive:{pattern:/(^|[^\\](?:\\\\)*)#@?(?:[a-z][\w-]*|\{[a-z][\w-]*\})(?:\s*\((?:[^()]|\([^()]*\))*\))?/i,lookbehind:!0,inside:{keyword:{pattern:/^#@?(?:[a-z][\w-]*|\{[a-z][\w-]*\})|\bin\b/,inside:{punctuation:/[{}]/}},rest:t}},variable:t.variable}),e.languages.velocity.tag.inside[`attr-value`].inside.rest=e.languages.velocity})(e)}Ri.displayName=`verilog`,Ri.aliases=[];function Ri(e){e.languages.verilog={comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\//,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"kernel-function":{pattern:/\B\$\w+\b/,alias:`property`},constant:/\B`\w+\b/,function:/\b\w+(?=\()/,keyword:/\b(?:alias|and|assert|assign|assume|automatic|before|begin|bind|bins|binsof|bit|break|buf|bufif0|bufif1|byte|case|casex|casez|cell|chandle|class|clocking|cmos|config|const|constraint|context|continue|cover|covergroup|coverpoint|cross|deassign|default|defparam|design|disable|dist|do|edge|else|end|endcase|endclass|endclocking|endconfig|endfunction|endgenerate|endgroup|endinterface|endmodule|endpackage|endprimitive|endprogram|endproperty|endsequence|endspecify|endtable|endtask|enum|event|expect|export|extends|extern|final|first_match|for|force|foreach|forever|fork|forkjoin|function|generate|genvar|highz0|highz1|if|iff|ifnone|ignore_bins|illegal_bins|import|incdir|include|initial|inout|input|inside|instance|int|integer|interface|intersect|join|join_any|join_none|large|liblist|library|local|localparam|logic|longint|macromodule|matches|medium|modport|module|nand|negedge|new|nmos|nor|noshowcancelled|not|notif0|notif1|null|or|output|package|packed|parameter|pmos|posedge|primitive|priority|program|property|protected|pull0|pull1|pulldown|pullup|pulsestyle_ondetect|pulsestyle_onevent|pure|rand|randc|randcase|randsequence|rcmos|real|realtime|ref|reg|release|repeat|return|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|sequence|shortint|shortreal|showcancelled|signed|small|solve|specify|specparam|static|string|strong0|strong1|struct|super|supply0|supply1|table|tagged|task|this|throughout|time|timeprecision|timeunit|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|type|typedef|union|unique|unsigned|use|uwire|var|vectored|virtual|void|wait|wait_order|wand|weak0|weak1|while|wildcard|wire|with|within|wor|xnor|xor)\b/,important:/\b(?:always|always_comb|always_ff|always_latch)\b(?: *@)?/,number:/\B##?\d+|(?:\b\d+)?'[odbh] ?[\da-fzx_?]+|\b(?:\d*[._])?\d+(?:e[-+]?\d+)?/i,operator:/[-+{}^~%*\/?=!<>&|]+/,punctuation:/[[\];(),.:]/}}zi.displayName=`vhdl`,zi.aliases=[];function zi(e){e.languages.vhdl={comment:/--.+/,"vhdl-vectors":{pattern:/\b[oxb]"[\da-f_]+"|"[01uxzwlh-]+"/i,alias:`number`},"quoted-function":{pattern:/"\S+?"(?=\()/,alias:`function`},string:/"(?:[^\\"\r\n]|\\(?:\r\n|[\s\S]))*"/,attribute:{pattern:/\b'\w+/,alias:`attr-name`},keyword:/\b(?:access|after|alias|all|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|new|next|null|of|on|open|others|out|package|port|postponed|private|procedure|process|pure|range|record|register|reject|report|return|select|severity|shared|signal|subtype|then|to|transport|type|unaffected|units|until|use|variable|view|wait|when|while|with)\b/i,boolean:/\b(?:false|true)\b/i,function:/\w+(?=\()/,number:/'[01uxzwlh-]'|\b(?:\d+#[\da-f_.]+#|\d[\d_.]*)(?:e[-+]?\d+)?/i,operator:/[<>]=?|:=|[-+*/&=]|\b(?:abs|and|mod|nand|nor|not|or|rem|rol|ror|sla|sll|sra|srl|xnor|xor)\b/i,punctuation:/[{}[\];(),.:]/}}Bi.displayName=`vim`,Bi.aliases=[];function Bi(e){e.languages.vim={string:/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\r\n]|'')*'/,comment:/".*/,function:/\b\w+(?=\()/,keyword:/\b(?:N|Next|P|Print|X|XMLent|XMLns|ab|abbreviate|abc|abclear|abo|aboveleft|al|all|ar|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|args|argu|argument|as|ascii|b|bN|bNext|ba|bad|badd|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bo|botright|bp|bprevious|br|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|brewind|bro|browse|bufdo|buffer|buffers|bun|bunload|bw|bwipeout|c|cN|cNext|cNfcNfile|ca|cabbrev|cabc|cabclear|cad|caddb|caddbuffer|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cg|cgetb|cgetbuffer|cgete|cgetexpr|cgetfile|change|changes|chd|chdir|che|checkpath|checkt|checktime|cl|cla|clast|clist|clo|close|cmapc|cmapclear|cn|cnew|cnewer|cnext|cnf|cnfile|cnorea|cnoreabbrev|co|col|colder|colo|colorscheme|comc|comclear|comp|compiler|con|conf|confirm|continue|cope|copen|copy|cp|cpf|cpfile|cprevious|cq|cquit|cr|crewind|cu|cuna|cunabbrev|cunmap|cw|cwindow|d|debugg|debuggreedy|delc|delcommand|delete|delf|delfunction|delm|delmarks|di|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|e|earlier|echoe|echoerr|echom|echomsg|echon|edit|el|else|elsei|elseif|em|emenu|en|endf|endfo|endfor|endfun|endfunction|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fin|fina|finally|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|foldd|folddoc|folddoclosed|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|h|ha|hardcopy|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iu|iuna|iunabbrev|iunmap|j|join|ju|jumps|k|kee|keepalt|keepj|keepjumps|keepmarks|l|lN|lNext|lNf|lNfile|la|lad|laddb|laddbuffer|laddexpr|laddf|laddfile|lan|language|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|left|lefta|leftabove|let|lex|lexpr|lf|lfile|lfir|lfirst|lg|lgetb|lgetbuffer|lgete|lgetexpr|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|list|ll|lla|llast|lli|llist|lm|lmak|lmake|lmap|lmapc|lmapclear|ln|lne|lnew|lnewer|lnext|lnf|lnfile|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lp|lpf|lpfile|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|m|ma|mak|make|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkv|mkvie|mkview|mkvimrc|mod|mode|move|mz|mzf|mzfile|mzscheme|n|nbkey|new|next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|o|omapc|omapclear|on|only|open|opt|options|ou|ounmap|p|pc|pclose|pe|ped|pedit|perl|perld|perldo|po|pop|popu|popup|pp|ppop|pre|preserve|prev|previous|print|prof|profd|profdel|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|ptN|ptNext|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|py|pyf|pyfile|python|q|qa|qall|quit|quita|quitall|r|read|rec|recover|red|redi|redir|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|ru|rub|ruby|rubyd|rubydo|rubyf|rubyfile|runtime|rv|rviminfo|sN|sNext|sa|sal|sall|san|sandbox|sargument|sav|saveas|sb|sbN|sbNext|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbp|sbprevious|sbr|sbrewind|sbuffer|scrip|scripte|scriptencoding|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sl|sla|slast|sleep|sm|smagic|smap|smapc|smapclear|sme|smenu|sn|snext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|so|sor|sort|source|sp|spe|spelld|spelldump|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|split|spr|sprevious|sre|srewind|st|sta|stag|star|startg|startgreplace|startinsert|startr|startreplace|stj|stjump|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tN|tNext|ta|tab|tabN|tabNext|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabn|tabnew|tabnext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tmenu|tn|tnext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tunmenu|u|una|unabbreviate|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|ve|verb|verbose|version|vert|vertical|vi|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|w|wN|wNext|wa|wall|wh|while|win|winc|wincmd|windo|winp|winpos|winsize|wn|wnext|wp|wprevious|wq|wqa|wqall|write|ws|wsverb|wv|wviminfo|x|xa|xall|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\b/,builtin:/\b(?:acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autocmd|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|t_AB|t_AF|t_AL|t_CS|t_CV|t_Ce|t_Co|t_Cs|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_IE|t_IS|t_K1|t_K3|t_K4|t_K5|t_K6|t_K7|t_K8|t_K9|t_KA|t_KB|t_KC|t_KD|t_KE|t_KF|t_KG|t_KH|t_KI|t_KJ|t_KK|t_KL|t_RI|t_RV|t_SI|t_Sb|t_Sf|t_WP|t_WS|t_ZH|t_ZR|t_al|t_bc|t_cd|t_ce|t_cl|t_cm|t_cs|t_da|t_db|t_dl|t_fs|t_k1|t_k2|t_k3|t_k4|t_k5|t_k6|t_k7|t_k8|t_k9|t_kB|t_kD|t_kI|t_kN|t_kP|t_kb|t_kd|t_ke|t_kh|t_kl|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_se|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_xs|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww)\b/,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?)\b/i,operator:/\|\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*\/%?]|\b(?:is(?:not)?)\b/,punctuation:/[{}[\](),;:]/}}Vi.displayName=`visual-basic`,Vi.aliases=[`vb`,`vba`];function Vi(e){e.languages[`visual-basic`]={comment:{pattern:/(?:['‘’]|REM\b)(?:[^\r\n_]|_(?:\r\n?|\n)?)*/i,inside:{keyword:/^REM/i}},directive:{pattern:/#(?:Const|Else|ElseIf|End|ExternalChecksum|ExternalSource|If|Region)(?:\b_[ \t]*(?:\r\n?|\n)|.)+/i,alias:`property`,greedy:!0},string:{pattern:/\$?["“”](?:["“”]{2}|[^"“”])*["“”]C?/i,greedy:!0},date:{pattern:/#[ \t]*(?:\d+([/-])\d+\1\d+(?:[ \t]+(?:\d+[ \t]*(?:AM|PM)|\d+:\d+(?::\d+)?(?:[ \t]*(?:AM|PM))?))?|\d+[ \t]*(?:AM|PM)|\d+:\d+(?::\d+)?(?:[ \t]*(?:AM|PM))?)[ \t]*#/i,alias:`number`},number:/(?:(?:\b\d+(?:\.\d+)?|\.\d+)(?:E[+-]?\d+)?|&[HO][\dA-F]+)(?:[FRD]|U?[ILS])?/i,boolean:/\b(?:False|Nothing|True)\b/i,keyword:/\b(?:AddHandler|AddressOf|Alias|And(?:Also)?|As|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|C(?:Bool|Byte|Char|Date|Dbl|Dec|Int|Lng|Obj|SByte|Short|Sng|Str|Type|UInt|ULng|UShort)|Char|Class|Const|Continue|Currency|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else(?:If)?|End(?:If)?|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get(?:Type|XMLNamespace)?|Global|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|IsNot|Let|Lib|Like|Long|Loop|Me|Mod|Module|Must(?:Inherit|Override)|My(?:Base|Class)|Namespace|Narrowing|New|Next|Not(?:Inheritable|Overridable)?|Object|Of|On|Operator|Option(?:al)?|Or(?:Else)?|Out|Overloads|Overridable|Overrides|ParamArray|Partial|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|SByte|Select|Set|Shadows|Shared|short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TryCast|Type|TypeOf|U(?:Integer|Long|Short)|Until|Using|Variant|Wend|When|While|Widening|With(?:Events)?|WriteOnly|Xor)\b/i,operator:/[+\-*/\\^<=>&#@$%!]|\b_(?=[ \t]*[\r\n])/,punctuation:/[{}().,:?]/},e.languages.vb=e.languages[`visual-basic`],e.languages.vba=e.languages[`visual-basic`]}Hi.displayName=`warpscript`,Hi.aliases=[];function Hi(e){e.languages.warpscript={comment:/#.*|\/\/.*|\/\*[\s\S]*?\*\//,string:{pattern:/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'|<'(?:[^\\']|'(?!>)|\\.)*'>/,greedy:!0},variable:/\$\S+/,macro:{pattern:/@\S+/,alias:`property`},keyword:/\b(?:BREAK|CHECKMACRO|CONTINUE|CUDF|DEFINED|DEFINEDMACRO|EVAL|FAIL|FOR|FOREACH|FORSTEP|IFT|IFTE|MSGFAIL|NRETURN|RETHROW|RETURN|SWITCH|TRY|UDF|UNTIL|WHILE)\b/,number:/[+-]?\b(?:NaN|Infinity|\d+(?:\.\d*)?(?:[Ee][+-]?\d+)?|0x[\da-fA-F]+|0b[01]+)\b/,boolean:/\b(?:F|T|false|true)\b/,punctuation:/<%|%>|[{}[\]()]/,operator:/==|&&?|\|\|?|\*\*?|>>>?|<<|[<>!~]=?|[-/%^]|\+!?|\b(?:AND|NOT|OR)\b/}}Ui.displayName=`wasm`,Ui.aliases=[];function Ui(e){e.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/}}Wi.displayName=`web-idl`,Wi.aliases=[`webidl`];function Wi(e){(function(e){var t=`(?:\\B-|\\b_|\\b)[A-Za-z][\\w-]*(?![\\w-])`,n=`(?:\\b(?:unsigned\\s+)?long\\s+long(?![\\w-])|\\b(?:unrestricted|unsigned)\\s+[a-z]+(?![\\w-])|(?!(?:unrestricted|unsigned)\\b)`+t+`(?:\\s*<(?:[^<>]|<[^<>]*>)*>)?)(?:\\s*\\?)?`,r={};for(var i in e.languages[`web-idl`]={comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\//,greedy:!0},string:{pattern:/"[^"]*"/,greedy:!0},namespace:{pattern:RegExp(`(\\bnamespace\\s+)`+t),lookbehind:!0},"class-name":[{pattern:/(^|[^\w-])(?:iterable|maplike|setlike)\s*<(?:[^<>]|<[^<>]*>)*>/,lookbehind:!0,inside:r},{pattern:RegExp(`(\\b(?:attribute|const|deleter|getter|optional|setter)\\s+)`+n),lookbehind:!0,inside:r},{pattern:RegExp(`(\\bcallback\\s+`+t+`\\s*=\\s*)`+n),lookbehind:!0,inside:r},{pattern:RegExp(`(\\btypedef\\b\\s*)`+n),lookbehind:!0,inside:r},{pattern:RegExp(`(\\b(?:callback|dictionary|enum|interface(?:\\s+mixin)?)\\s+)(?!(?:interface|mixin)\\b)`+t),lookbehind:!0},{pattern:RegExp(`(:\\s*)`+t),lookbehind:!0},RegExp(t+`(?=\\s+(?:implements|includes)\\b)`),{pattern:RegExp(`(\\b(?:implements|includes)\\s+)`+t),lookbehind:!0},{pattern:RegExp(n+`(?=\\s*(?:\\.{3}\\s*)?`+t+`\\s*[(),;=])`),inside:r}],builtin:/\b(?:ArrayBuffer|BigInt64Array|BigUint64Array|ByteString|DOMString|DataView|Float32Array|Float64Array|FrozenArray|Int16Array|Int32Array|Int8Array|ObservableArray|Promise|USVString|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray)\b/,keyword:[/\b(?:async|attribute|callback|const|constructor|deleter|dictionary|enum|getter|implements|includes|inherit|interface|mixin|namespace|null|optional|or|partial|readonly|required|setter|static|stringifier|typedef|unrestricted)\b/,/\b(?:any|bigint|boolean|byte|double|float|iterable|long|maplike|object|octet|record|sequence|setlike|short|symbol|undefined|unsigned|void)\b/],boolean:/\b(?:false|true)\b/,number:{pattern:/(^|[^\w-])-?(?:0x[0-9a-f]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|NaN|Infinity)(?![\w-])/i,lookbehind:!0},operator:/\.{3}|[=:?<>-]/,punctuation:/[(){}[\].,;]/},e.languages[`web-idl`])i!==`class-name`&&(r[i]=e.languages[`web-idl`][i]);e.languages.webidl=e.languages[`web-idl`]})(e)}Gi.displayName=`wgsl`,Gi.aliases=[];function Gi(e){e.languages.wgsl={comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},"builtin-attribute":{pattern:/(@)builtin\(.*?\)/,lookbehind:!0,inside:{attribute:{pattern:/^builtin/,alias:`attr-name`},punctuation:/[(),]/,"built-in-values":{pattern:/\b(?:frag_depth|front_facing|global_invocation_id|instance_index|local_invocation_id|local_invocation_index|num_workgroups|position|sample_index|sample_mask|vertex_index|workgroup_id)\b/,alias:`attr-value`}}},attributes:{pattern:/(@)(?:align|binding|compute|const|fragment|group|id|interpolate|invariant|location|size|vertex|workgroup_size)/i,lookbehind:!0,alias:`attr-name`},functions:{pattern:/\b(fn\s+)[_a-zA-Z]\w*(?=[(<])/,lookbehind:!0,alias:`function`},keyword:/\b(?:bitcast|break|case|const|continue|continuing|default|discard|else|enable|fallthrough|fn|for|function|if|let|loop|private|return|storage|struct|switch|type|uniform|var|while|workgroup)\b/,builtin:/\b(?:abs|acos|acosh|all|any|array|asin|asinh|atan|atan2|atanh|atomic|atomicAdd|atomicAnd|atomicCompareExchangeWeak|atomicExchange|atomicLoad|atomicMax|atomicMin|atomicOr|atomicStore|atomicSub|atomicXor|bool|ceil|clamp|cos|cosh|countLeadingZeros|countOneBits|countTrailingZeros|cross|degrees|determinant|distance|dot|dpdx|dpdxCoarse|dpdxFine|dpdy|dpdyCoarse|dpdyFine|exp|exp2|extractBits|f32|f64|faceForward|firstLeadingBit|floor|fma|fract|frexp|fwidth|fwidthCoarse|fwidthFine|i32|i64|insertBits|inverseSqrt|ldexp|length|log|log2|mat[2-4]x[2-4]|max|min|mix|modf|normalize|override|pack2x16float|pack2x16snorm|pack2x16unorm|pack4x8snorm|pack4x8unorm|pow|ptr|quantizeToF16|radians|reflect|refract|reverseBits|round|sampler|sampler_comparison|select|shiftLeft|shiftRight|sign|sin|sinh|smoothstep|sqrt|staticAssert|step|storageBarrier|tan|tanh|textureDimensions|textureGather|textureGatherCompare|textureLoad|textureNumLayers|textureNumLevels|textureNumSamples|textureSample|textureSampleBias|textureSampleCompare|textureSampleCompareLevel|textureSampleGrad|textureSampleLevel|textureStore|texture_1d|texture_2d|texture_2d_array|texture_3d|texture_cube|texture_cube_array|texture_depth_2d|texture_depth_2d_array|texture_depth_cube|texture_depth_cube_array|texture_depth_multisampled_2d|texture_multisampled_2d|texture_storage_1d|texture_storage_2d|texture_storage_2d_array|texture_storage_3d|transpose|trunc|u32|u64|unpack2x16float|unpack2x16snorm|unpack2x16unorm|unpack4x8snorm|unpack4x8unorm|vec[2-4]|workgroupBarrier)\b/,"function-calls":{pattern:/\b[_a-z]\w*(?=\()/i,alias:`function`},"class-name":/\b(?:[A-Z][A-Za-z0-9]*)\b/,"bool-literal":{pattern:/\b(?:false|true)\b/,alias:`boolean`},"hex-int-literal":{pattern:/\b0[xX][0-9a-fA-F]+[iu]?\b(?![.pP])/,alias:`number`},"hex-float-literal":{pattern:/\b0[xX][0-9a-fA-F]*(?:\.[0-9a-fA-F]*)?(?:[pP][+-]?\d+[fh]?)?/,alias:`number`},"decimal-float-literal":[{pattern:/\d*\.\d+(?:[eE](?:\+|-)?\d+)?[fh]?/,alias:`number`},{pattern:/\d+\.\d*(?:[eE](?:\+|-)?\d+)?[fh]?/,alias:`number`},{pattern:/\d+[eE](?:\+|-)?\d+[fh]?/,alias:`number`},{pattern:/\b\d+[fh]\b/,alias:`number`}],"int-literal":{pattern:/\b\d+[iu]?\b/,alias:`number`},operator:[{pattern:/(?:\^|~|\|(?!\|)|\|\||&&|<<|>>|!)(?!=)/},{pattern:/&(?![&=])/},{pattern:/(?:\+=|-=|\*=|\/=|%=|\^=|&=|\|=|<<=|>>=)/},{pattern:/(^|[^<>=!])=(?![=>])/,lookbehind:!0},{pattern:/(?:==|!=|<=|\+\+|--|(^|[^=])>=)/,lookbehind:!0},{pattern:/(?:(?:[+%]|(?:\*(?!\w)))(?!=))|(?:-(?!>))|(?:\/(?!\/))/},{pattern:/->/}],punctuation:/[@(){}[\],;<>:.]/}}Ki.displayName=`wiki`,Ki.aliases=[];function Ki(e){e.register(B),e.languages.wiki=e.languages.extend(`markup`,{"block-comment":{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0,alias:`comment`},heading:{pattern:/^(=+)[^=\r\n].*?\1/m,inside:{punctuation:/^=+|=+$/,important:/.+/}},emphasis:{pattern:/('{2,5}).+?\1/,inside:{"bold-italic":{pattern:/(''''').+?(?=\1)/,lookbehind:!0,alias:[`bold`,`italic`]},bold:{pattern:/(''')[^'](?:.*?[^'])?(?=\1)/,lookbehind:!0},italic:{pattern:/('')[^'](?:.*?[^'])?(?=\1)/,lookbehind:!0},punctuation:/^''+|''+$/}},hr:{pattern:/^-{4,}/m,alias:`punctuation`},url:[/ISBN +(?:97[89][ -]?)?(?:\d[ -]?){9}[\dx]\b|(?:PMID|RFC) +\d+/i,/\[\[.+?\]\]|\[.+?\]/],variable:[/__[A-Z]+__/,/\{{3}.+?\}{3}/,/\{\{.+?\}\}/],symbol:[/^#redirect/im,/~{3,5}/],"table-tag":{pattern:/((?:^|[|!])[|!])[^|\r\n]+\|(?!\|)/m,lookbehind:!0,inside:{"table-bar":{pattern:/\|$/,alias:`punctuation`},rest:e.languages.markup.tag.inside}},punctuation:/^(?:\{\||\|\}|\|-|[*#:;!|])|\|\||!!/m}),e.languages.insertBefore(`wiki`,`tag`,{nowiki:{pattern:/<(nowiki|pre|source)\b[^>]*>[\s\S]*?<\/\1>/i,inside:{tag:{pattern:/<(?:nowiki|pre|source)\b[^>]*>|<\/(?:nowiki|pre|source)>/i,inside:e.languages.markup.tag.inside}}}})}qi.displayName=`wolfram`,qi.aliases=[`mathematica`,`nb`,`wl`];function qi(e){e.languages.wolfram={comment:/\(\*(?:\(\*(?:[^*]|\*(?!\)))*\*\)|(?!\(\*)[\s\S])*?\*\)/,string:{pattern:/"(?:\\.|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:Abs|AbsArg|Accuracy|Block|Do|For|Function|If|Manipulate|Module|Nest|NestList|None|Return|Switch|Table|Which|While)\b/,context:{pattern:/\b\w+`+\w*/,alias:`class-name`},blank:{pattern:/\b\w+_\b/,alias:`regex`},"global-variable":{pattern:/\$\w+/,alias:`variable`},boolean:/\b(?:False|True)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/\/\.|;|=\.|\^=|\^:=|:=|<<|>>|<\||\|>|:>|\|->|->|<-|@@@|@@|@|\/@|=!=|===|==|=|\+|-|\[\/-+%=\]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},e.languages.mathematica=e.languages.wolfram,e.languages.wl=e.languages.wolfram,e.languages.nb=e.languages.wolfram}Ji.displayName=`wren`,Ji.aliases=[];function Ji(e){e.languages.wren={comment:[{pattern:/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|\/\*(?:[^*/]|\*(?!\/)|\/(?!\*))*\*\/)*\*\/)*\*\//,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],"triple-quoted-string":{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:`string`},"string-literal":null,hashbang:{pattern:/^#!\/.+/,greedy:!0,alias:`comment`},attribute:{pattern:/#!?[ \t\u3000]*\w+/,alias:`keyword`},"class-name":[{pattern:/(\bclass\s+)\w+/,lookbehind:!0},/\b[A-Z][a-z\d_]*\b/],constant:/\b[A-Z][A-Z\d_]*\b/,null:{pattern:/\bnull\b/,alias:`keyword`},keyword:/\b(?:as|break|class|construct|continue|else|for|foreign|if|import|in|is|return|static|super|this|var|while)\b/,boolean:/\b(?:false|true)\b/,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/i,function:/\b[a-z_]\w*(?=\s*[({])/i,operator:/<<|>>|[=!<>]=?|&&|\|\||[-+*/%~^&|?:]|\.{2,3}/,punctuation:/[\[\](){}.,;]/},e.languages.wren[`string-literal`]={pattern:/(^|[^\\"])"(?:[^\\"%]|\\[\s\S]|%(?!\()|%\((?:[^()]|\((?:[^()]|\([^)]*\))*\))*\))*"/,lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)%\((?:[^()]|\((?:[^()]|\([^)]*\))*\))*\)/,lookbehind:!0,inside:{expression:{pattern:/^(%\()[\s\S]+(?=\)$)/,lookbehind:!0,inside:e.languages.wren},"interpolation-punctuation":{pattern:/^%\(|\)$/,alias:`punctuation`}}},string:/[\s\S]+/}}}Yi.displayName=`xeora`,Yi.aliases=[`xeoracube`];function Yi(e){e.register(B),(function(e){e.languages.xeora=e.languages.extend(`markup`,{constant:{pattern:/\$(?:DomainContents|PageRenderDuration)\$/,inside:{punctuation:{pattern:/\$/}}},variable:{pattern:/\$@?(?:#+|[-+*~=^])?[\w.]+\$/,inside:{punctuation:{pattern:/[$.]/},operator:{pattern:/#+|[-+*~=^@]/}}},"function-inline":{pattern:/\$F:[-\w.]+\?[-\w.]+(?:,(?:(?:@[-#]*\w+\.[\w+.]\.*)*\|)*(?:(?:[\w+]|[-#*.~^]+[\w+]|=\S)(?:[^$=]|=+[^=])*=*|(?:@[-#]*\w+\.[\w+.]\.*)+(?:(?:[\w+]|[-#*~^][-#*.~^]*[\w+]|=\S)(?:[^$=]|=+[^=])*=*)?)?)?\$/,inside:{variable:{pattern:/(?:[,|])@?(?:#+|[-+*~=^])?[\w.]+/,inside:{punctuation:{pattern:/[,.|]/},operator:{pattern:/#+|[-+*~=^@]/}}},punctuation:{pattern:/\$\w:|[$:?.,|]/}},alias:`function`},"function-block":{pattern:/\$XF:\{[-\w.]+\?[-\w.]+(?:,(?:(?:@[-#]*\w+\.[\w+.]\.*)*\|)*(?:(?:[\w+]|[-#*.~^]+[\w+]|=\S)(?:[^$=]|=+[^=])*=*|(?:@[-#]*\w+\.[\w+.]\.*)+(?:(?:[\w+]|[-#*~^][-#*.~^]*[\w+]|=\S)(?:[^$=]|=+[^=])*=*)?)?)?\}:XF\$/,inside:{punctuation:{pattern:/[$:{}?.,|]/}},alias:`function`},"directive-inline":{pattern:/\$\w(?:#\d+\+?)?(?:\[[-\w.]+\])?:[-\/\w.]+\$/,inside:{punctuation:{pattern:/\$(?:\w:|C(?:\[|#\d))?|[:{[\]]/,inside:{tag:{pattern:/#\d/}}}},alias:`function`},"directive-block-open":{pattern:/\$\w+:\{|\$\w(?:#\d+\+?)?(?:\[[-\w.]+\])?:[-\w.]+:\{(?:![A-Z]+)?/,inside:{punctuation:{pattern:/\$(?:\w:|C(?:\[|#\d))?|[:{[\]]/,inside:{tag:{pattern:/#\d/}}},attribute:{pattern:/![A-Z]+$/,inside:{punctuation:{pattern:/!/}},alias:`keyword`}},alias:`function`},"directive-block-separator":{pattern:/\}:[-\w.]+:\{/,inside:{punctuation:{pattern:/[:{}]/}},alias:`function`},"directive-block-close":{pattern:/\}:[-\w.]+\$/,inside:{punctuation:{pattern:/[:{}$]/}},alias:`function`}}),e.languages.insertBefore(`inside`,`punctuation`,{variable:e.languages.xeora[`function-inline`].inside.variable},e.languages.xeora[`function-block`]),e.languages.xeoracube=e.languages.xeora})(e)}Xi.displayName=`xml-doc`,Xi.aliases=[];function Xi(e){e.register(B),(function(e){function t(t,n){e.languages[t]&&e.languages.insertBefore(t,`comment`,{"doc-comment":n})}var n=e.languages.markup.tag,r={pattern:/\/\/\/.*/,greedy:!0,alias:`comment`,inside:{tag:n}},i={pattern:/'''.*/,greedy:!0,alias:`comment`,inside:{tag:n}};t(`csharp`,r),t(`fsharp`,r),t(`vbnet`,i)})(e)}Zi.displayName=`xojo`,Zi.aliases=[];function Zi(e){e.languages.xojo={comment:{pattern:/(?:'|\/\/|Rem\b).+/i,greedy:!0},string:{pattern:/"(?:""|[^"])*"/,greedy:!0},number:[/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,/&[bchou][a-z\d]+/i],directive:{pattern:/#(?:Else|ElseIf|Endif|If|Pragma)\b/i,alias:`property`},keyword:/\b(?:AddHandler|App|Array|As(?:signs)?|Auto|Boolean|Break|By(?:Ref|Val)|Byte|Call|Case|Catch|CFStringRef|CGFloat|Class|Color|Const|Continue|CString|Currency|CurrentMethodName|Declare|Delegate|Dim|Do(?:uble|wnTo)?|Each|Else(?:If)?|End|Enumeration|Event|Exception|Exit|Extends|False|Finally|For|Function|Get|GetTypeInfo|Global|GOTO|If|Implements|In|Inherits|Int(?:8|16|32|64|eger|erface)?|Lib|Loop|Me|Module|Next|Nil|Object|Optional|OSType|ParamArray|Private|Property|Protected|PString|Ptr|Raise(?:Event)?|ReDim|RemoveHandler|Return|Select(?:or)?|Self|Set|Shared|Short|Single|Soft|Static|Step|String|Sub|Super|Text|Then|To|True|Try|Ubound|UInt(?:8|16|32|64|eger)?|Until|Using|Var(?:iant)?|Wend|While|WindowPtr|WString)\b/i,operator:/<[=>]?|>=?|[+\-*\/\\^=]|\b(?:AddressOf|And|Ctype|IsA?|Mod|New|Not|Or|WeakAddressOf|Xor)\b/i,punctuation:/[.,;:()]/}}Qi.displayName=`xquery`,Qi.aliases=[];function Qi(e){e.register(B),(function(e){e.languages.xquery=e.languages.extend(`markup`,{"xquery-comment":{pattern:/\(:[\s\S]*?:\)/,greedy:!0,alias:`comment`},string:{pattern:/(["'])(?:\1\1|(?!\1)[\s\S])*\1/,greedy:!0},extension:{pattern:/\(#.+?#\)/,alias:`symbol`},variable:/\$[-\w:]+/,axis:{pattern:/(^|[^-])(?:ancestor(?:-or-self)?|attribute|child|descendant(?:-or-self)?|following(?:-sibling)?|parent|preceding(?:-sibling)?|self)(?=::)/,lookbehind:!0,alias:`operator`},"keyword-operator":{pattern:/(^|[^:-])\b(?:and|castable as|div|eq|except|ge|gt|idiv|instance of|intersect|is|le|lt|mod|ne|or|union)\b(?=$|[^:-])/,lookbehind:!0,alias:`operator`},keyword:{pattern:/(^|[^:-])\b(?:as|ascending|at|base-uri|boundary-space|case|cast as|collation|construction|copy-namespaces|declare|default|descending|else|empty (?:greatest|least)|encoding|every|external|for|function|if|import|in|inherit|lax|let|map|module|namespace|no-inherit|no-preserve|option|order(?: by|ed|ing)?|preserve|return|satisfies|schema|some|stable|strict|strip|then|to|treat as|typeswitch|unordered|validate|variable|version|where|xquery)\b(?=$|[^:-])/,lookbehind:!0},function:/[\w-]+(?::[\w-]+)*(?=\s*\()/,"xquery-element":{pattern:/(element\s+)[\w-]+(?::[\w-]+)*/,lookbehind:!0,alias:`tag`},"xquery-attribute":{pattern:/(attribute\s+)[\w-]+(?::[\w-]+)*/,lookbehind:!0,alias:`attr-name`},builtin:{pattern:/(^|[^:-])\b(?:attribute|comment|document|element|processing-instruction|text|xs:(?:ENTITIES|ENTITY|ID|IDREFS?|NCName|NMTOKENS?|NOTATION|Name|QName|anyAtomicType|anyType|anyURI|base64Binary|boolean|byte|date|dateTime|dayTimeDuration|decimal|double|duration|float|gDay|gMonth|gMonthDay|gYear|gYearMonth|hexBinary|int|integer|language|long|negativeInteger|nonNegativeInteger|nonPositiveInteger|normalizedString|positiveInteger|short|string|time|token|unsigned(?:Byte|Int|Long|Short)|untyped(?:Atomic)?|yearMonthDuration))\b(?=$|[^:-])/,lookbehind:!0},number:/\b\d+(?:\.\d+)?(?:E[+-]?\d+)?/,operator:[/[+*=?|@]|\.\.?|:=|!=|<[=<]?|>[=>]?/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}],punctuation:/[[\](){},;:/]/}),e.languages.xquery.tag.pattern=/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|\{(?!\{)(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])+\}|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/,e.languages.xquery.tag.inside[`attr-value`].pattern=/=(?:("|')(?:\\[\s\S]|\{(?!\{)(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])+\}|(?!\1)[^\\])*\1|[^\s'">=]+)/,e.languages.xquery.tag.inside[`attr-value`].inside.punctuation=/^="|"$/,e.languages.xquery.tag.inside[`attr-value`].inside.expression={pattern:/\{(?!\{)(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])+\}/,inside:e.languages.xquery,alias:`language-xquery`};var t=function(e){return typeof e==`string`?e:typeof e.content==`string`?e.content:e.content.map(t).join(``)},n=function(r){for(var i=[],a=0;a0&&i[i.length-1].tagName===t(o.content[0].content[1])&&i.pop():o.content[o.content.length-1].content===`/>`||i.push({tagName:t(o.content[0].content[1]),openedBraces:0}):i.length>0&&o.type===`punctuation`&&o.content===`{`&&(!r[a+1]||r[a+1].type!==`punctuation`||r[a+1].content!==`{`)&&(!r[a-1]||r[a-1].type!==`plain-text`||r[a-1].content!==`{`)?i[i.length-1].openedBraces++:i.length>0&&i[i.length-1].openedBraces>0&&o.type===`punctuation`&&o.content===`}`?i[i.length-1].openedBraces--:o.type!==`comment`&&(s=!0)),(s||typeof o==`string`)&&i.length>0&&i[i.length-1].openedBraces===0){var c=t(o);a0&&(typeof r[a-1]==`string`||r[a-1].type===`plain-text`)&&(c=t(r[a-1])+c,r.splice(a-1,1),a--),/^\s+$/.test(c)?r[a]=c:r[a]=new e.Token(`plain-text`,c,null,c)}o.content&&typeof o.content!=`string`&&n(o.content)}};e.hooks.add(`after-tokenize`,function(e){e.language===`xquery`&&n(e.tokens)})})(e)}$i.displayName=`yang`,$i.aliases=[];function $i(e){e.languages.yang={comment:/\/\*[\s\S]*?\*\/|\/\/.*/,string:{pattern:/"(?:[^\\"]|\\.)*"|'[^']*'/,greedy:!0},keyword:{pattern:/(^|[{};\r\n][ \t]*)[a-z_][\w.-]*/i,lookbehind:!0},namespace:{pattern:/(\s)[a-z_][\w.-]*(?=:)/i,lookbehind:!0},boolean:/\b(?:false|true)\b/,operator:/\+/,punctuation:/[{};:]/}}ea.displayName=`zig`,ea.aliases=[];function ea(e){(function(e){function t(e){return function(){return e}}var n=/\b(?:align|allowzero|and|anyframe|anytype|asm|async|await|break|cancel|catch|comptime|const|continue|defer|else|enum|errdefer|error|export|extern|fn|for|if|inline|linksection|nakedcc|noalias|nosuspend|null|or|orelse|packed|promise|pub|resume|return|stdcallcc|struct|suspend|switch|test|threadlocal|try|undefined|union|unreachable|usingnamespace|var|volatile|while)\b/,r=`\\b(?!`+n.source+`)(?!\\d)\\w+\\b`,i=`align\\s*\\((?:[^()]|\\([^()]*\\))*\\)`,a=`(?:\\?|\\bpromise->|(?:\\[[^[\\]]*\\]|\\*(?!\\*)|\\*\\*)(?:\\s*|\\s*const\\b|\\s*volatile\\b|\\s*allowzero\\b)*)`.replace(//g,t(i)),o=`(?:\\bpromise\\b|(?:\\berror\\.)?(?:\\.)*(?!\\s+))`.replace(//g,t(r)),s=`(?!\\s)(?:!?\\s*(?:`+a+`\\s*)*`+o+`)+`;e.languages.zig={comment:[{pattern:/\/\/[/!].*/,alias:`doc-comment`},/\/{2}.*/],string:[{pattern:/(^|[^\\@])c?"(?:[^"\\\r\n]|\\.)*"/,lookbehind:!0,greedy:!0},{pattern:/([\r\n])([ \t]+c?\\{2}).*(?:(?:\r\n?|\n)\2.*)*/,lookbehind:!0,greedy:!0}],char:{pattern:/(^|[^\\])'(?:[^'\\\r\n]|[\uD800-\uDFFF]{2}|\\(?:.|x[a-fA-F\d]{2}|u\{[a-fA-F\d]{1,6}\}))'/,lookbehind:!0,greedy:!0},builtin:/\B@(?!\d)\w+(?=\s*\()/,label:{pattern:/(\b(?:break|continue)\s*:\s*)\w+\b|\b(?!\d)\w+\b(?=\s*:\s*(?:\{|while\b))/,lookbehind:!0},"class-name":[/\b(?!\d)\w+(?=\s*=\s*(?:(?:extern|packed)\s+)?(?:enum|struct|union)\s*[({])/,{pattern:RegExp(`(:\\s*)(?=\\s*(?:\\s*)?[=;,)])|(?=\\s*(?:\\s*)?\\{)`.replace(//g,t(s)).replace(//g,t(i))),lookbehind:!0,inside:null},{pattern:RegExp(`(\\)\\s*)(?=\\s*(?:\\s*)?;)`.replace(//g,t(s)).replace(//g,t(i))),lookbehind:!0,inside:null}],"builtin-type":{pattern:/\b(?:anyerror|bool|c_u?(?:int|long|longlong|short)|c_longdouble|c_void|comptime_(?:float|int)|f(?:16|32|64|128)|[iu](?:8|16|32|64|128|size)|noreturn|type|void)\b/,alias:`keyword`},keyword:n,function:/\b(?!\d)\w+(?=\s*\()/,number:/\b(?:0b[01]+|0o[0-7]+|0x[a-fA-F\d]+(?:\.[a-fA-F\d]*)?(?:[pP][+-]?[a-fA-F\d]+)?|\d+(?:\.\d*)?(?:[eE][+-]?\d+)?)\b/,boolean:/\b(?:false|true)\b/,operator:/\.[*?]|\.{2,3}|[-=]>|\*\*|\+\+|\|\||(?:<<|>>|[-+*]%|[-+*/%^&|<>!=])=?|[?~]/,punctuation:/[.:,;(){}[\]]/},e.languages.zig[`class-name`].forEach(function(t){t.inside===null&&(t.inside=e.languages.zig)})})(e)}var ta=/[#.]/g;function na(e,t){let n=e||``,r={},i=0,a,o;for(;i=48&&t<=57}function ga(e){let t=typeof e==`string`?e.charCodeAt(0):e;return t>=97&&t<=102||t>=65&&t<=70||t>=48&&t<=57}function _a(e){let t=typeof e==`string`?e.charCodeAt(0):e;return t>=97&&t<=122||t>=65&&t<=90}function va(e){return _a(e)||ha(e)}var ya=[``,`Named character references must be terminated by a semicolon`,`Numeric character references must be terminated by a semicolon`,`Named character references cannot be empty`,`Numeric character references cannot be empty`,`Named character references must be known`,`Numeric character references cannot be disallowed`,`Numeric character references cannot be outside the permissible Unicode range`];function ba(e,t){let n=t||{},r=typeof n.additional==`string`?n.additional.charCodeAt(0):n.additional,i=[],a=0,o=-1,s=``,c,l;n.position&&(`start`in n.position||`indent`in n.position?(l=n.position.indent,c=n.position.start):c=n.position);let u=(c?c.line:0)||1,d=(c?c.column:0)||1,f=m(),p;for(a--;++a<=e.length;)if(p===10&&(d=(l?l[o]:0)||1),p=e.charCodeAt(a),p===38){let t=e.charCodeAt(a+1);if(t===9||t===10||t===12||t===32||t===38||t===60||Number.isNaN(t)||r&&t===r){s+=String.fromCharCode(p),d++;continue}let o=a+1,c=o,l=o,u;if(t===35){l=++c;let t=e.charCodeAt(l);t===88||t===120?(u=`hexadecimal`,l=++c):u=`decimal`}else u=`named`;let v=``,y=``,b=``,x=u===`named`?va:u===`decimal`?ha:ga;for(l--;++l<=e.length;){let t=e.charCodeAt(l);if(!x(t))break;b+=String.fromCharCode(t),u===`named`&&pa.includes(b)&&(v=b,y=h(b))}let S=e.charCodeAt(l)===59;if(S){l++;let e=u===`named`?h(b):!1;e&&(v=b,y=e)}let C=1+l-o,w=``;if(!(!S&&n.nonTerminated===!1))if(!b)u!==`named`&&g(4,C);else if(u===`named`){if(S&&!y)g(5,1);else if(v!==b&&(l=c+v.length,C=1+l-c,S=!1),!S){let t=v?1:3;if(n.attribute){let n=e.charCodeAt(l);n===61?(g(t,C),y=``):va(n)?y=``:g(t,C)}else g(t,C)}w=y}else{S||g(2,C);let e=Number.parseInt(b,u===`hexadecimal`?16:10);if(xa(e))g(7,C),w=`�`;else if(e in ma)g(6,C),w=ma[e];else{let t=``;Sa(e)&&g(6,C),e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10|55296),e=56320|e&1023),w=t+String.fromCharCode(e)}}if(w){_(),f=m(),a=l-1,d+=l-o+1,i.push(w);let t=m();t.offset++,n.reference&&n.reference.call(n.referenceContext||void 0,w,{start:f,end:t},e.slice(o-1,l)),f=t}else b=e.slice(o-1,l),s+=b,d+=b.length,a=l-1}else p===10&&(u++,o++,d=0),Number.isNaN(p)?_():(s+=String.fromCharCode(p),d++);return i.join(``);function m(){return{line:u,column:d,offset:a+((c?c.offset:0)||0)}}function g(e,t){let r;n.warning&&(r=m(),r.column+=t,r.offset+=t,n.warning.call(n.warningContext||void 0,ya[e],r,e))}function _(){s&&=(i.push(s),n.text&&n.text.call(n.textContext||void 0,s,{start:f,end:m()}),``)}}function xa(e){return e>=55296&&e<=57343||e>1114111}function Sa(e){return e>=1&&e<=8||e===11||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||(e&65535)==65535||(e&65535)==65534}var Ca=0,wa={},q={util:{type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++Ca}),e.__id},clone:function e(t,n){n||={};var r,i;switch(q.util.type(t)){case`Object`:if(i=q.util.objId(t),n[i])return n[i];for(var a in r={},n[i]=r,t)t.hasOwnProperty(a)&&(r[a]=e(t[a],n));return r;case`Array`:return i=q.util.objId(t),n[i]?n[i]:(r=[],n[i]=r,t.forEach(function(t,i){r[i]=e(t,n)}),r);default:return t}}},languages:{plain:wa,plaintext:wa,text:wa,txt:wa,extend:function(e,t){var n=q.util.clone(q.languages[e]);for(var r in t)n[r]=t[r];return n},insertBefore:function(e,t,n,r){r||=q.languages;var i=r[e],a={};for(var o in i)if(i.hasOwnProperty(o)){if(o==t)for(var s in n)n.hasOwnProperty(s)&&(a[s]=n[s]);n.hasOwnProperty(o)||(a[o]=i[o])}var c=r[e];return r[e]=a,q.languages.DFS(q.languages,function(t,n){n===c&&t!=e&&(this[t]=a)}),a},DFS:function e(t,n,r,i){i||={};var a=q.util.objId;for(var o in t)if(t.hasOwnProperty(o)){n.call(t,o,t[o],r||o);var s=t[o],c=q.util.type(s);c===`Object`&&!i[a(s)]?(i[a(s)]=!0,e(s,n,null,i)):c===`Array`&&!i[a(s)]&&(i[a(s)]=!0,e(s,n,o,i))}}},plugins:{},highlight:function(e,t,n){var r={code:e,grammar:t,language:n};if(q.hooks.run(`before-tokenize`,r),!r.grammar)throw Error(`The language "`+r.language+`" has no grammar.`);return r.tokens=q.tokenize(r.code,r.grammar),q.hooks.run(`after-tokenize`,r),J.stringify(q.util.encode(r.tokens),r.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var i=new Da;return Oa(i,i.head,e),Ea(e,i,t,i.head,0),Aa(i)},hooks:{all:{},add:function(e,t){var n=q.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=q.hooks.all[e];if(!(!n||!n.length))for(var r=0,i;i=n[r++];)i(t)}},Token:J};function J(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=(r||``).length|0}function Ta(e,t,n,r){e.lastIndex=t;var i=e.exec(n);if(i&&r&&i[1]){var a=i[1].length;i.index+=a,i[0]=i[0].slice(a)}return i}function Ea(e,t,n,r,i,a){for(var o in n)if(!(!n.hasOwnProperty(o)||!n[o])){var s=n[o];s=Array.isArray(s)?s:[s];for(var c=0;c=a.reach);_+=g.value.length,g=g.next){var v=g.value;if(t.length>e.length)return;if(!(v instanceof J)){var y=1,b;if(f){if(b=Ta(h,_,e,d),!b||b.index>=e.length)break;var x=b.index,S=b.index+b[0].length,C=_;for(C+=g.value.length;x>=C;)g=g.next,C+=g.value.length;if(C-=g.value.length,_=C,g.value instanceof J)continue;for(var w=g;w!==t.tail&&(Ca.reach&&(a.reach=O);var k=g.prev;E&&(k=Oa(t,k,E),_+=E.length),ka(t,k,y);var A=new J(o,u?q.tokenize(T,u):T,p,T);if(g=Oa(t,k,A),D&&Oa(t,g,D),y>1){var j={cause:o+`,`+c,reach:O};Ea(e,t,n,g.prev,_,j),a&&j.reach>a.reach&&(a.reach=j.reach)}}}}}}function Da(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function Oa(e,t,n){var r=t.next,i={value:n,prev:t,next:r};return t.next=i,r.prev=i,e.length++,i}function ka(e,t,n){for(var r=t.next,i=0;ie.length)&&(t=e.length);for(var n=0,r=Array(t);ni.map(i=>d[i]); -import{Ct as e,St as t,Tt as n,W as r,bt as i}from"./index-8ipRcQ-M.js";var a=n(t(),1),o=Object.defineProperty,s=(e,t)=>o(e,`name`,{value:t,configurable:!0}),c=(e,t)=>{for(var n in t)o(e,n,{get:t[n],enumerable:!0})},l=e(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs=r()})(e,(function(){var e=1e3,t=6e4,n=36e5,r=`millisecond`,i=`second`,a=`minute`,o=`hour`,s=`day`,c=`week`,l=`month`,u=`quarter`,d=`year`,f=`date`,p=`Invalid Date`,m=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,h=/\[([^\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:`en`,weekdays:`Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday`.split(`_`),months:`January_February_March_April_May_June_July_August_September_October_November_December`.split(`_`),ordinal:function(e){var t=[`th`,`st`,`nd`,`rd`],n=e%100;return`[`+e+(t[(n-20)%10]||t[n]||t[0])+`]`}},_=function(e,t,n){var r=String(e);return!r||r.length>=t?e:``+Array(t+1-r.length).join(n)+e},v={s:_,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?`+`:`-`)+_(r,2,`0`)+`:`+_(i,2,`0`)},m:function e(t,n){if(t.date()1)return e(o[0])}else{var s=t.name;b[s]=t,i=s}return!r&&i&&(y=i),i||!r&&y},w=function(e,t){if(S(e))return e.clone();var n=typeof t==`object`?t:{};return n.date=e,n.args=arguments,new E(n)},T=v;T.l=C,T.i=S,T.w=function(e,t){return w(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var E=function(){function g(e){this.$L=C(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[x]=!0}var _=g.prototype;return _.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(t===null)return new Date(NaN);if(T.u(t))return new Date;if(t instanceof Date)return new Date(t);if(typeof t==`string`&&!/Z$/i.test(t)){var r=t.match(m);if(r){var i=r[2]-1||0,a=(r[7]||`0`).substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)}}return new Date(t)}(e),this.init()},_.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},_.$utils=function(){return T},_.isValid=function(){return this.$d.toString()!==p},_.isSame=function(e,t){var n=w(e);return this.startOf(t)<=n&&n<=this.endOf(t)},_.isAfter=function(e,t){return w(e){},`trace`),debug:s((...e)=>{},`debug`),info:s((...e)=>{},`info`),warn:s((...e)=>{},`warn`),error:s((...e)=>{},`error`),fatal:s((...e)=>{},`fatal`)},p=s(function(e=`fatal`){let t=d.fatal;typeof e==`string`?e.toLowerCase()in d&&(t=d[e]):typeof e==`number`&&(t=e),f.trace=()=>{},f.debug=()=>{},f.info=()=>{},f.warn=()=>{},f.error=()=>{},f.fatal=()=>{},t<=d.fatal&&(f.fatal=console.error?console.error.bind(console,m(`FATAL`),`color: orange`):console.log.bind(console,`\x1B[35m`,m(`FATAL`))),t<=d.error&&(f.error=console.error?console.error.bind(console,m(`ERROR`),`color: orange`):console.log.bind(console,`\x1B[31m`,m(`ERROR`))),t<=d.warn&&(f.warn=console.warn?console.warn.bind(console,m(`WARN`),`color: orange`):console.log.bind(console,`\x1B[33m`,m(`WARN`))),t<=d.info&&(f.info=console.info?console.info.bind(console,m(`INFO`),`color: lightblue`):console.log.bind(console,`\x1B[34m`,m(`INFO`))),t<=d.debug&&(f.debug=console.debug?console.debug.bind(console,m(`DEBUG`),`color: lightgreen`):console.log.bind(console,`\x1B[32m`,m(`DEBUG`))),t<=d.trace&&(f.trace=console.debug?console.debug.bind(console,m(`TRACE`),`color: lightgreen`):console.log.bind(console,`\x1B[32m`,m(`TRACE`)))},`setLogLevel`),m=s(e=>`%c${(0,u.default)().format(`ss.SSS`)} : ${e} : `,`format`),h={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:e=>e>=255?255:e<0?0:e,g:e=>e>=255?255:e<0?0:e,b:e=>e>=255?255:e<0?0:e,h:e=>e%360,s:e=>e>=100?100:e<0?0:e,l:e=>e>=100?100:e<0?0:e,a:e=>e>=1?1:e<0?0:e},toLinear:e=>{let t=e/255;return e>.03928?((t+.055)/1.055)**2.4:t/12.92},hue2rgb:(e,t,n)=>(n<0&&(n+=1),n>1&&--n,n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e),hsl2rgb:({h:e,s:t,l:n},r)=>{if(!t)return n*2.55;e/=360,t/=100,n/=100;let i=n<.5?n*(1+t):n+t-n*t,a=2*n-i;switch(r){case`r`:return h.hue2rgb(a,i,e+1/3)*255;case`g`:return h.hue2rgb(a,i,e)*255;case`b`:return h.hue2rgb(a,i,e-1/3)*255}},rgb2hsl:({r:e,g:t,b:n},r)=>{e/=255,t/=255,n/=255;let i=Math.max(e,t,n),a=Math.min(e,t,n),o=(i+a)/2;if(r===`l`)return o*100;if(i===a)return 0;let s=i-a,c=o>.5?s/(2-i-a):s/(i+a);if(r===`s`)return c*100;switch(i){case e:return((t-n)/s+(tt>n?Math.min(t,Math.max(n,e)):Math.min(n,Math.max(t,e)),round:e=>Math.round(e*1e10)/1e10},unit:{dec2hex:e=>{let t=Math.round(e).toString(16);return t.length>1?t:`0${t}`}}},_={};for(let e=0;e<=255;e++)_[e]=g.unit.dec2hex(e);var v={ALL:0,RGB:1,HSL:2},y=class{constructor(){this.type=v.ALL}get(){return this.type}set(e){if(this.type&&this.type!==e)throw Error(`Cannot change both RGB and HSL channels at the same time`);this.type=e}reset(){this.type=v.ALL}is(e){return this.type===e}},b=new class{constructor(e,t){this.color=t,this.changed=!1,this.data=e,this.type=new y}set(e,t){return this.color=t,this.changed=!1,this.data=e,this.type.type=v.ALL,this}_ensureHSL(){let e=this.data,{h:t,s:n,l:r}=e;t===void 0&&(e.h=g.channel.rgb2hsl(e,`h`)),n===void 0&&(e.s=g.channel.rgb2hsl(e,`s`)),r===void 0&&(e.l=g.channel.rgb2hsl(e,`l`))}_ensureRGB(){let e=this.data,{r:t,g:n,b:r}=e;t===void 0&&(e.r=g.channel.hsl2rgb(e,`r`)),n===void 0&&(e.g=g.channel.hsl2rgb(e,`g`)),r===void 0&&(e.b=g.channel.hsl2rgb(e,`b`))}get r(){let e=this.data,t=e.r;return!this.type.is(v.HSL)&&t!==void 0?t:(this._ensureHSL(),g.channel.hsl2rgb(e,`r`))}get g(){let e=this.data,t=e.g;return!this.type.is(v.HSL)&&t!==void 0?t:(this._ensureHSL(),g.channel.hsl2rgb(e,`g`))}get b(){let e=this.data,t=e.b;return!this.type.is(v.HSL)&&t!==void 0?t:(this._ensureHSL(),g.channel.hsl2rgb(e,`b`))}get h(){let e=this.data,t=e.h;return!this.type.is(v.RGB)&&t!==void 0?t:(this._ensureRGB(),g.channel.rgb2hsl(e,`h`))}get s(){let e=this.data,t=e.s;return!this.type.is(v.RGB)&&t!==void 0?t:(this._ensureRGB(),g.channel.rgb2hsl(e,`s`))}get l(){let e=this.data,t=e.l;return!this.type.is(v.RGB)&&t!==void 0?t:(this._ensureRGB(),g.channel.rgb2hsl(e,`l`))}get a(){return this.data.a}set r(e){this.type.set(v.RGB),this.changed=!0,this.data.r=e}set g(e){this.type.set(v.RGB),this.changed=!0,this.data.g=e}set b(e){this.type.set(v.RGB),this.changed=!0,this.data.b=e}set h(e){this.type.set(v.HSL),this.changed=!0,this.data.h=e}set s(e){this.type.set(v.HSL),this.changed=!0,this.data.s=e}set l(e){this.type.set(v.HSL),this.changed=!0,this.data.l=e}set a(e){this.changed=!0,this.data.a=e}}({r:0,g:0,b:0,a:0},`transparent`),x={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:e=>{if(e.charCodeAt(0)!==35)return;let t=e.match(x.re);if(!t)return;let n=t[1],r=parseInt(n,16),i=n.length,a=i%4==0,o=i>4,s=o?1:17,c=o?8:4,l=a?0:-1,u=o?255:15;return b.set({r:(r>>c*(l+3)&u)*s,g:(r>>c*(l+2)&u)*s,b:(r>>c*(l+1)&u)*s,a:a?(r&u)*s/255:1},e)},stringify:e=>{let{r:t,g:n,b:r,a:i}=e;return i<1?`#${_[Math.round(t)]}${_[Math.round(n)]}${_[Math.round(r)]}${_[Math.round(i*255)]}`:`#${_[Math.round(t)]}${_[Math.round(n)]}${_[Math.round(r)]}`}},S={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:e=>{let t=e.match(S.hueRe);if(t){let[,e,n]=t;switch(n){case`grad`:return g.channel.clamp.h(parseFloat(e)*.9);case`rad`:return g.channel.clamp.h(parseFloat(e)*180/Math.PI);case`turn`:return g.channel.clamp.h(parseFloat(e)*360)}}return g.channel.clamp.h(parseFloat(e))},parse:e=>{let t=e.charCodeAt(0);if(t!==104&&t!==72)return;let n=e.match(S.re);if(!n)return;let[,r,i,a,o,s]=n;return b.set({h:S._hue2deg(r),s:g.channel.clamp.s(parseFloat(i)),l:g.channel.clamp.l(parseFloat(a)),a:o?g.channel.clamp.a(s?parseFloat(o)/100:parseFloat(o)):1},e)},stringify:e=>{let{h:t,s:n,l:r,a:i}=e;return i<1?`hsla(${g.lang.round(t)}, ${g.lang.round(n)}%, ${g.lang.round(r)}%, ${i})`:`hsl(${g.lang.round(t)}, ${g.lang.round(n)}%, ${g.lang.round(r)}%)`}},C={colors:{aliceblue:`#f0f8ff`,antiquewhite:`#faebd7`,aqua:`#00ffff`,aquamarine:`#7fffd4`,azure:`#f0ffff`,beige:`#f5f5dc`,bisque:`#ffe4c4`,black:`#000000`,blanchedalmond:`#ffebcd`,blue:`#0000ff`,blueviolet:`#8a2be2`,brown:`#a52a2a`,burlywood:`#deb887`,cadetblue:`#5f9ea0`,chartreuse:`#7fff00`,chocolate:`#d2691e`,coral:`#ff7f50`,cornflowerblue:`#6495ed`,cornsilk:`#fff8dc`,crimson:`#dc143c`,cyanaqua:`#00ffff`,darkblue:`#00008b`,darkcyan:`#008b8b`,darkgoldenrod:`#b8860b`,darkgray:`#a9a9a9`,darkgreen:`#006400`,darkgrey:`#a9a9a9`,darkkhaki:`#bdb76b`,darkmagenta:`#8b008b`,darkolivegreen:`#556b2f`,darkorange:`#ff8c00`,darkorchid:`#9932cc`,darkred:`#8b0000`,darksalmon:`#e9967a`,darkseagreen:`#8fbc8f`,darkslateblue:`#483d8b`,darkslategray:`#2f4f4f`,darkslategrey:`#2f4f4f`,darkturquoise:`#00ced1`,darkviolet:`#9400d3`,deeppink:`#ff1493`,deepskyblue:`#00bfff`,dimgray:`#696969`,dimgrey:`#696969`,dodgerblue:`#1e90ff`,firebrick:`#b22222`,floralwhite:`#fffaf0`,forestgreen:`#228b22`,fuchsia:`#ff00ff`,gainsboro:`#dcdcdc`,ghostwhite:`#f8f8ff`,gold:`#ffd700`,goldenrod:`#daa520`,gray:`#808080`,green:`#008000`,greenyellow:`#adff2f`,grey:`#808080`,honeydew:`#f0fff0`,hotpink:`#ff69b4`,indianred:`#cd5c5c`,indigo:`#4b0082`,ivory:`#fffff0`,khaki:`#f0e68c`,lavender:`#e6e6fa`,lavenderblush:`#fff0f5`,lawngreen:`#7cfc00`,lemonchiffon:`#fffacd`,lightblue:`#add8e6`,lightcoral:`#f08080`,lightcyan:`#e0ffff`,lightgoldenrodyellow:`#fafad2`,lightgray:`#d3d3d3`,lightgreen:`#90ee90`,lightgrey:`#d3d3d3`,lightpink:`#ffb6c1`,lightsalmon:`#ffa07a`,lightseagreen:`#20b2aa`,lightskyblue:`#87cefa`,lightslategray:`#778899`,lightslategrey:`#778899`,lightsteelblue:`#b0c4de`,lightyellow:`#ffffe0`,lime:`#00ff00`,limegreen:`#32cd32`,linen:`#faf0e6`,magenta:`#ff00ff`,maroon:`#800000`,mediumaquamarine:`#66cdaa`,mediumblue:`#0000cd`,mediumorchid:`#ba55d3`,mediumpurple:`#9370db`,mediumseagreen:`#3cb371`,mediumslateblue:`#7b68ee`,mediumspringgreen:`#00fa9a`,mediumturquoise:`#48d1cc`,mediumvioletred:`#c71585`,midnightblue:`#191970`,mintcream:`#f5fffa`,mistyrose:`#ffe4e1`,moccasin:`#ffe4b5`,navajowhite:`#ffdead`,navy:`#000080`,oldlace:`#fdf5e6`,olive:`#808000`,olivedrab:`#6b8e23`,orange:`#ffa500`,orangered:`#ff4500`,orchid:`#da70d6`,palegoldenrod:`#eee8aa`,palegreen:`#98fb98`,paleturquoise:`#afeeee`,palevioletred:`#db7093`,papayawhip:`#ffefd5`,peachpuff:`#ffdab9`,peru:`#cd853f`,pink:`#ffc0cb`,plum:`#dda0dd`,powderblue:`#b0e0e6`,purple:`#800080`,rebeccapurple:`#663399`,red:`#ff0000`,rosybrown:`#bc8f8f`,royalblue:`#4169e1`,saddlebrown:`#8b4513`,salmon:`#fa8072`,sandybrown:`#f4a460`,seagreen:`#2e8b57`,seashell:`#fff5ee`,sienna:`#a0522d`,silver:`#c0c0c0`,skyblue:`#87ceeb`,slateblue:`#6a5acd`,slategray:`#708090`,slategrey:`#708090`,snow:`#fffafa`,springgreen:`#00ff7f`,tan:`#d2b48c`,teal:`#008080`,thistle:`#d8bfd8`,transparent:`#00000000`,turquoise:`#40e0d0`,violet:`#ee82ee`,wheat:`#f5deb3`,white:`#ffffff`,whitesmoke:`#f5f5f5`,yellow:`#ffff00`,yellowgreen:`#9acd32`},parse:e=>{e=e.toLowerCase();let t=C.colors[e];if(t)return x.parse(t)},stringify:e=>{let t=x.stringify(e);for(let e in C.colors)if(C.colors[e]===t)return e}},w={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:e=>{let t=e.charCodeAt(0);if(t!==114&&t!==82)return;let n=e.match(w.re);if(!n)return;let[,r,i,a,o,s,c,l,u]=n;return b.set({r:g.channel.clamp.r(i?parseFloat(r)*2.55:parseFloat(r)),g:g.channel.clamp.g(o?parseFloat(a)*2.55:parseFloat(a)),b:g.channel.clamp.b(c?parseFloat(s)*2.55:parseFloat(s)),a:l?g.channel.clamp.a(u?parseFloat(l)/100:parseFloat(l)):1},e)},stringify:e=>{let{r:t,g:n,b:r,a:i}=e;return i<1?`rgba(${g.lang.round(t)}, ${g.lang.round(n)}, ${g.lang.round(r)}, ${g.lang.round(i)})`:`rgb(${g.lang.round(t)}, ${g.lang.round(n)}, ${g.lang.round(r)})`}},T={format:{keyword:C,hex:x,rgb:w,rgba:w,hsl:S,hsla:S},parse:e=>{if(typeof e!=`string`)return e;let t=x.parse(e)||w.parse(e)||S.parse(e)||C.parse(e);if(t)return t;throw Error(`Unsupported color format: "${e}"`)},stringify:e=>!e.changed&&e.color?e.color:e.type.is(v.HSL)||e.data.r===void 0?S.stringify(e):e.a<1||!Number.isInteger(e.r)||!Number.isInteger(e.g)||!Number.isInteger(e.b)?w.stringify(e):x.stringify(e)},E=(e,t)=>{let n=T.parse(e);for(let e in t)n[e]=g.channel.clamp[e](t[e]);return T.stringify(n)},D=(e,t,n=0,r=1)=>{if(typeof e!=`number`)return E(e,{a:t});let i=b.set({r:g.channel.clamp.r(e),g:g.channel.clamp.g(t),b:g.channel.clamp.b(n),a:g.channel.clamp.a(r)});return T.stringify(i)},O=e=>{let{r:t,g:n,b:r}=T.parse(e),i=.2126*g.channel.toLinear(t)+.7152*g.channel.toLinear(n)+.0722*g.channel.toLinear(r);return g.lang.round(i)},ee=e=>O(e)>=.5,k=e=>!ee(e),te=(e,t,n)=>{let r=T.parse(e),i=r[t],a=g.channel.clamp[t](i+n);return i!==a&&(r[t]=a),T.stringify(r)},A=(e,t)=>te(e,`l`,t),j=(e,t)=>te(e,`l`,-t),M=(e,t)=>{let n=T.parse(e),r={};for(let e in t)t[e]&&(r[e]=n[e]+t[e]);return E(e,r)},ne=(e,t,n=50)=>{let{r,g:i,b:a,a:o}=T.parse(e),{r:s,g:c,b:l,a:u}=T.parse(t),d=n/100,f=d*2-1,p=o-u,m=((f*p===-1?f:(f+p)/(1+f*p))+1)/2,h=1-m;return D(r*m+s*h,i*m+c*h,a*m+l*h,o*d+u*(1-d))},N=(e,t=100)=>{let n=T.parse(e);return n.r=255-n.r,n.g=255-n.g,n.b=255-n.b,ne(n,e,t)};function re(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ni.map(i=>d[i]); +import{Ct as e,St as t,Tt as n,W as r,bt as i}from"./index-BkDx9KsG.js";var a=n(t(),1),o=Object.defineProperty,s=(e,t)=>o(e,`name`,{value:t,configurable:!0}),c=(e,t)=>{for(var n in t)o(e,n,{get:t[n],enumerable:!0})},l=e(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs=r()})(e,(function(){var e=1e3,t=6e4,n=36e5,r=`millisecond`,i=`second`,a=`minute`,o=`hour`,s=`day`,c=`week`,l=`month`,u=`quarter`,d=`year`,f=`date`,p=`Invalid Date`,m=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,h=/\[([^\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:`en`,weekdays:`Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday`.split(`_`),months:`January_February_March_April_May_June_July_August_September_October_November_December`.split(`_`),ordinal:function(e){var t=[`th`,`st`,`nd`,`rd`],n=e%100;return`[`+e+(t[(n-20)%10]||t[n]||t[0])+`]`}},_=function(e,t,n){var r=String(e);return!r||r.length>=t?e:``+Array(t+1-r.length).join(n)+e},v={s:_,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?`+`:`-`)+_(r,2,`0`)+`:`+_(i,2,`0`)},m:function e(t,n){if(t.date()1)return e(o[0])}else{var s=t.name;b[s]=t,i=s}return!r&&i&&(y=i),i||!r&&y},w=function(e,t){if(S(e))return e.clone();var n=typeof t==`object`?t:{};return n.date=e,n.args=arguments,new E(n)},T=v;T.l=C,T.i=S,T.w=function(e,t){return w(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var E=function(){function g(e){this.$L=C(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[x]=!0}var _=g.prototype;return _.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(t===null)return new Date(NaN);if(T.u(t))return new Date;if(t instanceof Date)return new Date(t);if(typeof t==`string`&&!/Z$/i.test(t)){var r=t.match(m);if(r){var i=r[2]-1||0,a=(r[7]||`0`).substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)}}return new Date(t)}(e),this.init()},_.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},_.$utils=function(){return T},_.isValid=function(){return this.$d.toString()!==p},_.isSame=function(e,t){var n=w(e);return this.startOf(t)<=n&&n<=this.endOf(t)},_.isAfter=function(e,t){return w(e){},`trace`),debug:s((...e)=>{},`debug`),info:s((...e)=>{},`info`),warn:s((...e)=>{},`warn`),error:s((...e)=>{},`error`),fatal:s((...e)=>{},`fatal`)},p=s(function(e=`fatal`){let t=d.fatal;typeof e==`string`?e.toLowerCase()in d&&(t=d[e]):typeof e==`number`&&(t=e),f.trace=()=>{},f.debug=()=>{},f.info=()=>{},f.warn=()=>{},f.error=()=>{},f.fatal=()=>{},t<=d.fatal&&(f.fatal=console.error?console.error.bind(console,m(`FATAL`),`color: orange`):console.log.bind(console,`\x1B[35m`,m(`FATAL`))),t<=d.error&&(f.error=console.error?console.error.bind(console,m(`ERROR`),`color: orange`):console.log.bind(console,`\x1B[31m`,m(`ERROR`))),t<=d.warn&&(f.warn=console.warn?console.warn.bind(console,m(`WARN`),`color: orange`):console.log.bind(console,`\x1B[33m`,m(`WARN`))),t<=d.info&&(f.info=console.info?console.info.bind(console,m(`INFO`),`color: lightblue`):console.log.bind(console,`\x1B[34m`,m(`INFO`))),t<=d.debug&&(f.debug=console.debug?console.debug.bind(console,m(`DEBUG`),`color: lightgreen`):console.log.bind(console,`\x1B[32m`,m(`DEBUG`))),t<=d.trace&&(f.trace=console.debug?console.debug.bind(console,m(`TRACE`),`color: lightgreen`):console.log.bind(console,`\x1B[32m`,m(`TRACE`)))},`setLogLevel`),m=s(e=>`%c${(0,u.default)().format(`ss.SSS`)} : ${e} : `,`format`),h={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:e=>e>=255?255:e<0?0:e,g:e=>e>=255?255:e<0?0:e,b:e=>e>=255?255:e<0?0:e,h:e=>e%360,s:e=>e>=100?100:e<0?0:e,l:e=>e>=100?100:e<0?0:e,a:e=>e>=1?1:e<0?0:e},toLinear:e=>{let t=e/255;return e>.03928?((t+.055)/1.055)**2.4:t/12.92},hue2rgb:(e,t,n)=>(n<0&&(n+=1),n>1&&--n,n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e),hsl2rgb:({h:e,s:t,l:n},r)=>{if(!t)return n*2.55;e/=360,t/=100,n/=100;let i=n<.5?n*(1+t):n+t-n*t,a=2*n-i;switch(r){case`r`:return h.hue2rgb(a,i,e+1/3)*255;case`g`:return h.hue2rgb(a,i,e)*255;case`b`:return h.hue2rgb(a,i,e-1/3)*255}},rgb2hsl:({r:e,g:t,b:n},r)=>{e/=255,t/=255,n/=255;let i=Math.max(e,t,n),a=Math.min(e,t,n),o=(i+a)/2;if(r===`l`)return o*100;if(i===a)return 0;let s=i-a,c=o>.5?s/(2-i-a):s/(i+a);if(r===`s`)return c*100;switch(i){case e:return((t-n)/s+(tt>n?Math.min(t,Math.max(n,e)):Math.min(n,Math.max(t,e)),round:e=>Math.round(e*1e10)/1e10},unit:{dec2hex:e=>{let t=Math.round(e).toString(16);return t.length>1?t:`0${t}`}}},_={};for(let e=0;e<=255;e++)_[e]=g.unit.dec2hex(e);var v={ALL:0,RGB:1,HSL:2},y=class{constructor(){this.type=v.ALL}get(){return this.type}set(e){if(this.type&&this.type!==e)throw Error(`Cannot change both RGB and HSL channels at the same time`);this.type=e}reset(){this.type=v.ALL}is(e){return this.type===e}},b=new class{constructor(e,t){this.color=t,this.changed=!1,this.data=e,this.type=new y}set(e,t){return this.color=t,this.changed=!1,this.data=e,this.type.type=v.ALL,this}_ensureHSL(){let e=this.data,{h:t,s:n,l:r}=e;t===void 0&&(e.h=g.channel.rgb2hsl(e,`h`)),n===void 0&&(e.s=g.channel.rgb2hsl(e,`s`)),r===void 0&&(e.l=g.channel.rgb2hsl(e,`l`))}_ensureRGB(){let e=this.data,{r:t,g:n,b:r}=e;t===void 0&&(e.r=g.channel.hsl2rgb(e,`r`)),n===void 0&&(e.g=g.channel.hsl2rgb(e,`g`)),r===void 0&&(e.b=g.channel.hsl2rgb(e,`b`))}get r(){let e=this.data,t=e.r;return!this.type.is(v.HSL)&&t!==void 0?t:(this._ensureHSL(),g.channel.hsl2rgb(e,`r`))}get g(){let e=this.data,t=e.g;return!this.type.is(v.HSL)&&t!==void 0?t:(this._ensureHSL(),g.channel.hsl2rgb(e,`g`))}get b(){let e=this.data,t=e.b;return!this.type.is(v.HSL)&&t!==void 0?t:(this._ensureHSL(),g.channel.hsl2rgb(e,`b`))}get h(){let e=this.data,t=e.h;return!this.type.is(v.RGB)&&t!==void 0?t:(this._ensureRGB(),g.channel.rgb2hsl(e,`h`))}get s(){let e=this.data,t=e.s;return!this.type.is(v.RGB)&&t!==void 0?t:(this._ensureRGB(),g.channel.rgb2hsl(e,`s`))}get l(){let e=this.data,t=e.l;return!this.type.is(v.RGB)&&t!==void 0?t:(this._ensureRGB(),g.channel.rgb2hsl(e,`l`))}get a(){return this.data.a}set r(e){this.type.set(v.RGB),this.changed=!0,this.data.r=e}set g(e){this.type.set(v.RGB),this.changed=!0,this.data.g=e}set b(e){this.type.set(v.RGB),this.changed=!0,this.data.b=e}set h(e){this.type.set(v.HSL),this.changed=!0,this.data.h=e}set s(e){this.type.set(v.HSL),this.changed=!0,this.data.s=e}set l(e){this.type.set(v.HSL),this.changed=!0,this.data.l=e}set a(e){this.changed=!0,this.data.a=e}}({r:0,g:0,b:0,a:0},`transparent`),x={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:e=>{if(e.charCodeAt(0)!==35)return;let t=e.match(x.re);if(!t)return;let n=t[1],r=parseInt(n,16),i=n.length,a=i%4==0,o=i>4,s=o?1:17,c=o?8:4,l=a?0:-1,u=o?255:15;return b.set({r:(r>>c*(l+3)&u)*s,g:(r>>c*(l+2)&u)*s,b:(r>>c*(l+1)&u)*s,a:a?(r&u)*s/255:1},e)},stringify:e=>{let{r:t,g:n,b:r,a:i}=e;return i<1?`#${_[Math.round(t)]}${_[Math.round(n)]}${_[Math.round(r)]}${_[Math.round(i*255)]}`:`#${_[Math.round(t)]}${_[Math.round(n)]}${_[Math.round(r)]}`}},S={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:e=>{let t=e.match(S.hueRe);if(t){let[,e,n]=t;switch(n){case`grad`:return g.channel.clamp.h(parseFloat(e)*.9);case`rad`:return g.channel.clamp.h(parseFloat(e)*180/Math.PI);case`turn`:return g.channel.clamp.h(parseFloat(e)*360)}}return g.channel.clamp.h(parseFloat(e))},parse:e=>{let t=e.charCodeAt(0);if(t!==104&&t!==72)return;let n=e.match(S.re);if(!n)return;let[,r,i,a,o,s]=n;return b.set({h:S._hue2deg(r),s:g.channel.clamp.s(parseFloat(i)),l:g.channel.clamp.l(parseFloat(a)),a:o?g.channel.clamp.a(s?parseFloat(o)/100:parseFloat(o)):1},e)},stringify:e=>{let{h:t,s:n,l:r,a:i}=e;return i<1?`hsla(${g.lang.round(t)}, ${g.lang.round(n)}%, ${g.lang.round(r)}%, ${i})`:`hsl(${g.lang.round(t)}, ${g.lang.round(n)}%, ${g.lang.round(r)}%)`}},C={colors:{aliceblue:`#f0f8ff`,antiquewhite:`#faebd7`,aqua:`#00ffff`,aquamarine:`#7fffd4`,azure:`#f0ffff`,beige:`#f5f5dc`,bisque:`#ffe4c4`,black:`#000000`,blanchedalmond:`#ffebcd`,blue:`#0000ff`,blueviolet:`#8a2be2`,brown:`#a52a2a`,burlywood:`#deb887`,cadetblue:`#5f9ea0`,chartreuse:`#7fff00`,chocolate:`#d2691e`,coral:`#ff7f50`,cornflowerblue:`#6495ed`,cornsilk:`#fff8dc`,crimson:`#dc143c`,cyanaqua:`#00ffff`,darkblue:`#00008b`,darkcyan:`#008b8b`,darkgoldenrod:`#b8860b`,darkgray:`#a9a9a9`,darkgreen:`#006400`,darkgrey:`#a9a9a9`,darkkhaki:`#bdb76b`,darkmagenta:`#8b008b`,darkolivegreen:`#556b2f`,darkorange:`#ff8c00`,darkorchid:`#9932cc`,darkred:`#8b0000`,darksalmon:`#e9967a`,darkseagreen:`#8fbc8f`,darkslateblue:`#483d8b`,darkslategray:`#2f4f4f`,darkslategrey:`#2f4f4f`,darkturquoise:`#00ced1`,darkviolet:`#9400d3`,deeppink:`#ff1493`,deepskyblue:`#00bfff`,dimgray:`#696969`,dimgrey:`#696969`,dodgerblue:`#1e90ff`,firebrick:`#b22222`,floralwhite:`#fffaf0`,forestgreen:`#228b22`,fuchsia:`#ff00ff`,gainsboro:`#dcdcdc`,ghostwhite:`#f8f8ff`,gold:`#ffd700`,goldenrod:`#daa520`,gray:`#808080`,green:`#008000`,greenyellow:`#adff2f`,grey:`#808080`,honeydew:`#f0fff0`,hotpink:`#ff69b4`,indianred:`#cd5c5c`,indigo:`#4b0082`,ivory:`#fffff0`,khaki:`#f0e68c`,lavender:`#e6e6fa`,lavenderblush:`#fff0f5`,lawngreen:`#7cfc00`,lemonchiffon:`#fffacd`,lightblue:`#add8e6`,lightcoral:`#f08080`,lightcyan:`#e0ffff`,lightgoldenrodyellow:`#fafad2`,lightgray:`#d3d3d3`,lightgreen:`#90ee90`,lightgrey:`#d3d3d3`,lightpink:`#ffb6c1`,lightsalmon:`#ffa07a`,lightseagreen:`#20b2aa`,lightskyblue:`#87cefa`,lightslategray:`#778899`,lightslategrey:`#778899`,lightsteelblue:`#b0c4de`,lightyellow:`#ffffe0`,lime:`#00ff00`,limegreen:`#32cd32`,linen:`#faf0e6`,magenta:`#ff00ff`,maroon:`#800000`,mediumaquamarine:`#66cdaa`,mediumblue:`#0000cd`,mediumorchid:`#ba55d3`,mediumpurple:`#9370db`,mediumseagreen:`#3cb371`,mediumslateblue:`#7b68ee`,mediumspringgreen:`#00fa9a`,mediumturquoise:`#48d1cc`,mediumvioletred:`#c71585`,midnightblue:`#191970`,mintcream:`#f5fffa`,mistyrose:`#ffe4e1`,moccasin:`#ffe4b5`,navajowhite:`#ffdead`,navy:`#000080`,oldlace:`#fdf5e6`,olive:`#808000`,olivedrab:`#6b8e23`,orange:`#ffa500`,orangered:`#ff4500`,orchid:`#da70d6`,palegoldenrod:`#eee8aa`,palegreen:`#98fb98`,paleturquoise:`#afeeee`,palevioletred:`#db7093`,papayawhip:`#ffefd5`,peachpuff:`#ffdab9`,peru:`#cd853f`,pink:`#ffc0cb`,plum:`#dda0dd`,powderblue:`#b0e0e6`,purple:`#800080`,rebeccapurple:`#663399`,red:`#ff0000`,rosybrown:`#bc8f8f`,royalblue:`#4169e1`,saddlebrown:`#8b4513`,salmon:`#fa8072`,sandybrown:`#f4a460`,seagreen:`#2e8b57`,seashell:`#fff5ee`,sienna:`#a0522d`,silver:`#c0c0c0`,skyblue:`#87ceeb`,slateblue:`#6a5acd`,slategray:`#708090`,slategrey:`#708090`,snow:`#fffafa`,springgreen:`#00ff7f`,tan:`#d2b48c`,teal:`#008080`,thistle:`#d8bfd8`,transparent:`#00000000`,turquoise:`#40e0d0`,violet:`#ee82ee`,wheat:`#f5deb3`,white:`#ffffff`,whitesmoke:`#f5f5f5`,yellow:`#ffff00`,yellowgreen:`#9acd32`},parse:e=>{e=e.toLowerCase();let t=C.colors[e];if(t)return x.parse(t)},stringify:e=>{let t=x.stringify(e);for(let e in C.colors)if(C.colors[e]===t)return e}},w={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:e=>{let t=e.charCodeAt(0);if(t!==114&&t!==82)return;let n=e.match(w.re);if(!n)return;let[,r,i,a,o,s,c,l,u]=n;return b.set({r:g.channel.clamp.r(i?parseFloat(r)*2.55:parseFloat(r)),g:g.channel.clamp.g(o?parseFloat(a)*2.55:parseFloat(a)),b:g.channel.clamp.b(c?parseFloat(s)*2.55:parseFloat(s)),a:l?g.channel.clamp.a(u?parseFloat(l)/100:parseFloat(l)):1},e)},stringify:e=>{let{r:t,g:n,b:r,a:i}=e;return i<1?`rgba(${g.lang.round(t)}, ${g.lang.round(n)}, ${g.lang.round(r)}, ${g.lang.round(i)})`:`rgb(${g.lang.round(t)}, ${g.lang.round(n)}, ${g.lang.round(r)})`}},T={format:{keyword:C,hex:x,rgb:w,rgba:w,hsl:S,hsla:S},parse:e=>{if(typeof e!=`string`)return e;let t=x.parse(e)||w.parse(e)||S.parse(e)||C.parse(e);if(t)return t;throw Error(`Unsupported color format: "${e}"`)},stringify:e=>!e.changed&&e.color?e.color:e.type.is(v.HSL)||e.data.r===void 0?S.stringify(e):e.a<1||!Number.isInteger(e.r)||!Number.isInteger(e.g)||!Number.isInteger(e.b)?w.stringify(e):x.stringify(e)},E=(e,t)=>{let n=T.parse(e);for(let e in t)n[e]=g.channel.clamp[e](t[e]);return T.stringify(n)},D=(e,t,n=0,r=1)=>{if(typeof e!=`number`)return E(e,{a:t});let i=b.set({r:g.channel.clamp.r(e),g:g.channel.clamp.g(t),b:g.channel.clamp.b(n),a:g.channel.clamp.a(r)});return T.stringify(i)},O=e=>{let{r:t,g:n,b:r}=T.parse(e),i=.2126*g.channel.toLinear(t)+.7152*g.channel.toLinear(n)+.0722*g.channel.toLinear(r);return g.lang.round(i)},ee=e=>O(e)>=.5,k=e=>!ee(e),te=(e,t,n)=>{let r=T.parse(e),i=r[t],a=g.channel.clamp[t](i+n);return i!==a&&(r[t]=a),T.stringify(r)},A=(e,t)=>te(e,`l`,t),j=(e,t)=>te(e,`l`,-t),M=(e,t)=>{let n=T.parse(e),r={};for(let e in t)t[e]&&(r[e]=n[e]+t[e]);return E(e,r)},ne=(e,t,n=50)=>{let{r,g:i,b:a,a:o}=T.parse(e),{r:s,g:c,b:l,a:u}=T.parse(t),d=n/100,f=d*2-1,p=o-u,m=((f*p===-1?f:(f+p)/(1+f*p))+1)/2,h=1-m;return D(r*m+s*h,i*m+c*h,a*m+l*h,o*d+u*(1-d))},N=(e,t=100)=>{let n=T.parse(e);return n.r=255-n.r,n.g=255-n.g,n.b=255-n.b,ne(n,e,t)};function re(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n`u`?null:Re(BigInt.prototype.toString),Ne=typeof Symbol>`u`?null:Re(Symbol.prototype.toString),Pe=Re(Object.prototype.hasOwnProperty),Fe=Re(Object.prototype.toString),Ie=Re(RegExp.prototype.test),Le=ze(TypeError);function Re(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return _e(e,t,n)}}function ze(e){return function(){return F(e,[...arguments])}}function I(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:we;if(le&&le(e,null),!Ce(t))return e;let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(ue(t)||(t[r]=e),i=e)}e[i]=!0}return e}function Be(e){for(let t=0;t/g),it=me(/\${[\w\W]*/g),at=me(/^data-[\-\w.\u00B7-\uFFFF]+$/),ot=me(/^aria-[\-\w]+$/),st=me(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ct=me(/^(?:\w+script|data):/i),lt=me(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ut=me(/^html$/i),dt=me(/^[a-z][.\w]*(-[.\w]+)+$/i),ft=me(/<[/\w!]/g),pt=me(/<[/\w]/g),mt=me(/<\/no(script|embed|frames)/i),ht=me(/\/>/i),gt={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},_t=[`style`,`script`,`xmp`,`iframe`,`noembed`,`noframes`,`plaintext`,`noscript`],vt=pe(I({},_t)),yt=function(){let e={};return ve(_t,t=>{e[t]=me(RegExp(`])`,`i`))}),pe(e)}(),bt=function(){return typeof window>`u`?null:window},xt=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},St=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},Ct=function(e,t,n,r){return Pe(e,t)&&Ce(e[t])?I(r.base?Ve(r.base):{},e[t],r.transform):n},wt=function(e,t,n){let r=Pe(e,t)?e[t]:void 0;return r&&typeof r==`object`?Ve(r):n()};function Tt(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:bt(),t=e=>Tt(e);if(t.version=`3.4.14`,t.removed=[],!e||!e.document||e.document.nodeType!==gt.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,i=r.currentScript;e.DocumentFragment;let a=e.HTMLTemplateElement,o=e.Node,s=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let l=e.DOMParser,u=e.trustedTypes,d=s.prototype,f=Ue(d,`cloneNode`),p=Ue(d,`remove`),m=Ue(d,`nextSibling`),h=Ue(d,`childNodes`),g=Ue(d,`parentNode`),_=Ue(d,`shadowRoot`),v=Ue(d,`attributes`),y=o&&o.prototype?Ue(o.prototype,`nodeType`):null,b=o&&o.prototype?Ue(o.prototype,`nodeName`):null,x=o&&o.prototype?Ue(o.prototype,`ownerDocument`):null,S=function(e){return y?y(e):e.nodeType},C=function(e){return b?b(e):e.nodeName};if(typeof a==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let w,T=``,E,D=!1,O=0,ee=function(){if(O>0)throw Le(`A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.`)},k=function(e){ee(),O++;try{return w.createHTML(e)}finally{O--}},te=function(e){ee(),O++;try{return w.createScriptURL(e)}finally{O--}},A=function(){return D||=(E=xt(u,i),!0),E},j=n,M=j.implementation,ne=j.createNodeIterator,N=j.createDocumentFragment,re=j.getElementsByTagName,ie=r.importNode,P=St();t.isSupported=typeof ce==`function`&&typeof g==`function`&&M&&M.createHTMLDocument!==void 0;let ae=nt,oe=rt,se=it,le=at,ue=ot,de=ct,fe=lt,ge=dt,_e=st,F=null,Ae=I({},[...Ge,...Ke,...qe,...Ye,...Ze]),je=null,Me=I({},[...Qe,...$e,...et,...tt]),Ne=Object.seal(he(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Fe=null,Re=null,ze=Object.seal(he(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Be=!0,_t=!0,Et=!1,Dt=!0,Ot=!1,kt=!0,At=!1,L=!1,jt=null,Mt=null,Nt=!1,Pt=!1,Ft=!1,It=!1,Lt=!0,Rt=!1,zt=`user-content-`,Bt=!0,Vt=!1,Ht={},Ut=null,Wt=I({},`annotation-xml.audio.colgroup.desc.foreignobject.head.iframe.math.mi.mn.mo.ms.mtext.noembed.noframes.noscript.plaintext.script.selectedcontent.style.svg.template.thead.title.video.xmp`.split(`.`)),Gt=null,Kt=I({},[`audio`,`video`,`img`,`source`,`image`,`track`]),qt=null,Jt=I({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),Yt=`http://www.w3.org/1998/Math/MathML`,Xt=`http://www.w3.org/2000/svg`,Zt=`http://www.w3.org/1999/xhtml`,Qt=Zt,$t=!1,en=null,tn=I({},[Yt,Xt,Zt],Te),nn=pe([`mi`,`mo`,`mn`,`ms`,`mtext`]),rn=I({},nn),an=pe([`annotation-xml`]),on=I({},an),sn=I({},[`title`,`style`,`font`,`a`,`script`]),cn=null,ln=[`application/xhtml+xml`,`text/html`],R=null,un=null,dn=n.createElement(`form`),fn=function(e){return e instanceof RegExp||e instanceof Function},pn=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(un&&un===e)return;(!e||typeof e!=`object`)&&(e={}),e=Ve(e),cn=ln.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,R=cn===`application/xhtml+xml`?Te:we,F=Ct(e,`ALLOWED_TAGS`,Ae,{transform:R}),je=Ct(e,`ALLOWED_ATTR`,Me,{transform:R}),en=Ct(e,`ALLOWED_NAMESPACES`,tn,{transform:Te}),qt=Ct(e,`ADD_URI_SAFE_ATTR`,Jt,{transform:R,base:Jt}),Gt=Ct(e,`ADD_DATA_URI_TAGS`,Kt,{transform:R,base:Kt}),Ut=Ct(e,`FORBID_CONTENTS`,Wt,{transform:R}),Fe=Ct(e,`FORBID_TAGS`,Ve({}),{transform:R}),Re=Ct(e,`FORBID_ATTR`,Ve({}),{transform:R}),Ht=Pe(e,`USE_PROFILES`)?e.USE_PROFILES&&typeof e.USE_PROFILES==`object`?Ve(e.USE_PROFILES):e.USE_PROFILES:!1,Be=e.ALLOW_ARIA_ATTR!==!1,_t=e.ALLOW_DATA_ATTR!==!1,Et=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Dt=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Ot=e.SAFE_FOR_TEMPLATES||!1,kt=e.SAFE_FOR_XML!==!1,At=e.WHOLE_DOCUMENT||!1,Pt=e.RETURN_DOM||!1,Ft=e.RETURN_DOM_FRAGMENT||!1,It=e.RETURN_TRUSTED_TYPE||!1,Nt=e.FORCE_BODY||!1,Lt=e.SANITIZE_DOM!==!1,Rt=e.SANITIZE_NAMED_PROPS||!1,Bt=e.KEEP_CONTENT!==!1,Vt=e.IN_PLACE||!1,_e=We(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:st,Qt=typeof e.NAMESPACE==`string`?e.NAMESPACE:Zt,rn=wt(e,`MATHML_TEXT_INTEGRATION_POINTS`,()=>I({},nn)),on=wt(e,`HTML_INTEGRATION_POINTS`,()=>I({},an));let t=wt(e,`CUSTOM_ELEMENT_HANDLING`,()=>he(null));if(Ne=he(null),Pe(t,`tagNameCheck`)&&fn(t.tagNameCheck)&&(Ne.tagNameCheck=t.tagNameCheck),Pe(t,`attributeNameCheck`)&&fn(t.attributeNameCheck)&&(Ne.attributeNameCheck=t.attributeNameCheck),Pe(t,`allowCustomizedBuiltInElements`)&&typeof t.allowCustomizedBuiltInElements==`boolean`&&(Ne.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),me(Ne),Ot&&(_t=!1),Ft&&(Pt=!0),Ht&&(F=I({},Ze),je=he(null),Ht.html===!0&&(I(F,Ge),I(je,Qe)),Ht.svg===!0&&(I(F,Ke),I(je,$e),I(je,tt)),Ht.svgFilters===!0&&(I(F,qe),I(je,$e),I(je,tt)),Ht.mathMl===!0&&(I(F,Ye),I(je,et),I(je,tt))),ze.tagCheck=null,ze.attributeCheck=null,Pe(e,`ADD_TAGS`)&&(typeof e.ADD_TAGS==`function`?ze.tagCheck=e.ADD_TAGS:Ce(e.ADD_TAGS)&&(F===Ae&&(F=Ve(F)),I(F,e.ADD_TAGS,R))),Pe(e,`ADD_ATTR`)&&(typeof e.ADD_ATTR==`function`?ze.attributeCheck=e.ADD_ATTR:Ce(e.ADD_ATTR)&&(je===Me&&(je=Ve(je)),I(je,e.ADD_ATTR,R))),Pe(e,`ADD_FORBID_CONTENTS`)&&Ce(e.ADD_FORBID_CONTENTS)&&(Ut===Wt&&(Ut=Ve(Ut)),I(Ut,e.ADD_FORBID_CONTENTS,R)),Bt&&(F[`#text`]=!0),At&&I(F,[`html`,`head`,`body`]),F.table&&(I(F,[`tbody`]),delete Fe.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw Le(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw Le(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);let t=w;w=e.TRUSTED_TYPES_POLICY;try{T=k(``)}catch(e){throw w=t,e}}else e.TRUSTED_TYPES_POLICY===null?(w=void 0,T=``):(w===void 0&&(w=A()),w&&typeof T==`string`&&(T=k(``)));pe&&pe(e),un=e},mn=I({},[...Ke,...qe,...Je]),hn=I({},[...Ye,...Xe]),gn=function(e,t,n){return t.namespaceURI===Zt?e===`svg`:t.namespaceURI===Yt?e===`svg`&&(n===`annotation-xml`||rn[n]):!!mn[e]},_n=function(e,t,n){return t.namespaceURI===Zt?e===`math`:t.namespaceURI===Xt?e===`math`&&on[n]:!!hn[e]},vn=function(e,t,n){return t.namespaceURI===Xt&&!on[n]||t.namespaceURI===Yt&&!rn[n]?!1:!hn[e]&&(sn[e]||!mn[e])},yn=function(e){let t=g(e);(!t||!t.tagName)&&(t={namespaceURI:Qt,tagName:`template`});let n=we(e.tagName),r=we(t.tagName);return en[e.namespaceURI]?e.namespaceURI===Xt?gn(n,t,r):e.namespaceURI===Yt?_n(n,t,r):e.namespaceURI===Zt?vn(n,t,r):!!(cn===`application/xhtml+xml`&&en[e.namespaceURI]):!1},z=function(e){xe(t.removed,{element:e});try{g(e).removeChild(e)}catch{if(p(e),!g(e))throw Le(`a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place`)}},bn=function(e,t,n){try{e.removeAttributeNode(t)}catch{try{e.removeAttribute(n)}catch{}}},xn=function(e){wn(e);let t=h(e);if(t){let e=[];ve(t,t=>{xe(e,t)}),ve(e,e=>{try{p(e)}catch{}})}let n=v(e);if(n)for(let t=n.length-1;t>=0;--t){let r=n[t],i=r&&r.name;typeof i==`string`&&bn(e,r,i)}},Sn=function(e,n,r){if(!r)try{r=n.getAttributeNode(e)}catch{r=null}xe(t.removed,{attribute:r||null,from:n});try{r?n.removeAttributeNode(r):n.removeAttribute(e)}catch{try{n.removeAttribute(e)}catch{}}if(e===`is`)if(Pt||Ft)try{z(n)}catch{}else try{n.setAttribute(e,``)}catch{}},Cn=function(e){let t=v(e);if(t)for(let n=t.length-1;n>=0;--n){let r=t[n],i=r&&r.name;typeof i!=`string`||je[R(i)]||bn(e,r,i)}},wn=function(e){let t=[e];for(;t.length>0;){let e=t.pop();S(e)===gt.element&&Cn(e);let n=h(e);if(n)for(let e=n.length-1;e>=0;--e)t.push(n[e])}},Tn=function(e,t){return kt?e===`patchsrc`?!0:e===`for`&&t!==`label`&&t!==`output`:!1},En=function(e){if(!kt)return;let t=[e];for(;t.length>0;){let e=t.pop(),n=S(e);if(n===gt.processingInstruction||n===gt.comment&&Ie(pt,e.data)){try{p(e)}catch{}continue}if(n===gt.element){let t=e,n=R(C(e));try{t.hasAttribute&&t.hasAttribute(`patchsrc`)&&t.removeAttribute(`patchsrc`),t.hasAttribute&&t.hasAttribute(`for`)&&Tn(`for`,n)&&t.removeAttribute(`for`)}catch{}}let r=h(e);if(r)for(let e=r.length-1;e>=0;--e)t.push(r[e])}},Dn=function(e){let t=null,r=null;if(Nt)e=``+e;else{let t=Ee(e,/^[\r\n\t ]+/);r=t&&t[0]}cn===`application/xhtml+xml`&&Qt===Zt&&(e=``+e+``);let i=w?k(e):e;if(Qt===Zt)try{t=new l().parseFromString(i,cn)}catch{}if(!t||!t.documentElement){t=M.createDocument(Qt,`template`,null);try{t.documentElement.innerHTML=$t?T:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),Qt===Zt?re.call(t,At?`html`:`body`)[0]:At?t.documentElement:a},On=function(e){let t=x?x(e):e.ownerDocument;return ne.call(t||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},kn=function(e){return e=De(e,ae,` `),e=De(e,oe,` `),e=De(e,se,` `),e},An=function(e){e.normalize();let t=x?x(e):e.ownerDocument,n=ne.call(t||e,e,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),r=n.nextNode();for(;r;)r.data=kn(r.data),r=n.nextNode();let i=e.querySelectorAll?.call(e,`template`);i&&ve(i,e=>{Mn(e.content)&&An(e.content)})},jn=function(e){let t=b?b(e):null;return typeof t!=`string`||R(t)!==`form`?!1:typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||e.attributes!==v(e)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`||e.nodeType!==y(e)||e.childNodes!==h(e)},Mn=function(e){if(!y||typeof e!=`object`||!e)return!1;try{return y(e)===gt.documentFragment}catch{return!1}},Nn=function(e){if(!y||typeof e!=`object`||!e)return!1;try{return typeof y(e)==`number`}catch{return!1}};function Pn(e,n,r){e.length!==0&&ve(e,e=>{e.call(t,n,r,un)})}let Fn=function(e,t){return!!(kt&&e.hasChildNodes()&&!Nn(e.firstElementChild)&&Ie(ft,e.textContent)&&Ie(ft,e.innerHTML)||kt&&e.namespaceURI===Zt&&vt[t]&&(Nn(e.firstElementChild)||typeof e.textContent==`string`&&Ie(yt[t],e.textContent))||e.nodeType===gt.processingInstruction||kt&&e.nodeType===gt.comment&&Ie(pt,e.data))},In=function(e,t){return e instanceof RegExp?Ie(e,t):e instanceof Function?!!e(t,...[...arguments].slice(2)):!1},Ln=function(e,t,n){if(!Fe[t]&&Un(t)&&In(Ne.tagNameCheck,t))return!1;if(Bt&&!Ut[t]){let t=g(e),r=h(e);if(r&&t){let i=r.length;for(let a=i-1;a>=0;--a){let i=e===n?f(r[a],!0):r[a];t.insertBefore(i,m(e))}}}return z(e),!0},Rn=function(e,t,n,r){return e.length===0?t:t===n||t===r?Ve(t):t},zn=function(e,t){return e===t||g(e)!==null?!1:(Vt&&wn(e),!0)},Bn=function(e,n){if(Pn(P.beforeSanitizeElements,e,null),zn(e,n))return!0;if(jn(e))return z(e),!0;let r=R(C(e));if(F=Rn(P.uponSanitizeElement,F,Ae,jt),Pn(P.uponSanitizeElement,e,{tagName:r,allowedTags:F}),zn(e,n))return!0;if(Fn(e,r))return z(e),!0;if(Fe[r]||!(ze.tagCheck instanceof Function&&ze.tagCheck(r))&&!F[r]){let t=Ln(e,r,n);return t===!1&&Pn(P.afterSanitizeElements,e,null),t}if(S(e)===gt.element&&!yn(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&Ie(mt,e.innerHTML))return z(e),!0;if(Ot&&e.nodeType===gt.text){let n=kn(e.textContent);e.textContent!==n&&(xe(t.removed,{element:e.cloneNode()}),e.textContent=n)}return Pn(P.afterSanitizeElements,e,null),!1},Vn=function(e,t,r){if(Re[t]||Tn(t,e)||Lt&&(t===`id`||t===`name`)&&(r in n||r in dn))return!1;let i=je[t]||ze.attributeCheck instanceof Function&&ze.attributeCheck(t,e);return _t&&Ie(le,t)||Be&&Ie(ue,t)?!0:i?qt[t]||Ie(_e,De(r,fe,``))||(t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&Oe(r,`data:`)===0&&Gt[e]||Et&&!Ie(de,De(r,fe,``))?!0:!r:Un(e)&&In(Ne.tagNameCheck,e)&&In(Ne.attributeNameCheck,t,e)||t===`is`&&Ne.allowCustomizedBuiltInElements&&In(Ne.tagNameCheck,r)},Hn=I({},[`annotation-xml`,`color-profile`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`missing-glyph`]),Un=function(e){return!Hn[we(e)]&&Ie(ge,e)},Wn=function(e,t,n,r){if(w&&typeof u==`object`&&typeof u.getAttributeType==`function`&&!n)switch(u.getAttributeType(e,t)){case`TrustedHTML`:return k(r);case`TrustedScriptURL`:return te(r)}return r},Gn=function(e,n,r,i){try{r?e.setAttributeNS(r,n,i):e.setAttribute(n,i),jn(e)?z(e):be(t.removed)}catch{Sn(n,e)}},Kn=function(e){Pn(P.beforeSanitizeAttributes,e,null);let t=e.attributes;if(!t||jn(e))return;je=Rn(P.uponSanitizeAttribute,je,Me,Mt);let n={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:je,forceKeepAttr:void 0},r=t.length,i=R(e.nodeName);for(;r--;){let a=t[r],o=a.name,s=a.namespaceURI,c=a.value,l=R(o),u=c,d=o===`value`?u:ke(u);if(n.attrName=l,n.attrValue=d,n.keepAttr=!0,n.forceKeepAttr=void 0,Pn(P.uponSanitizeAttribute,e,n),d=n.attrValue,Rt&&(l===`id`||l===`name`)&&Oe(d,zt)!==0&&(Sn(o,e,a),d=zt+d),kt&&Ie(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,d)){Sn(o,e,a);continue}if(l===`attributename`&&Ee(d,`href`)){Sn(o,e,a);continue}if(!n.forceKeepAttr){if(!n.keepAttr){Sn(o,e,a);continue}if(!Dt&&Ie(ht,d)){Sn(o,e,a);continue}if(Ot&&(d=kn(d)),!Vn(i,l,d)){Sn(o,e,a);continue}d=Wn(i,l,s,d),d!==u&&Gn(e,o,s,d)}}Pn(P.afterSanitizeAttributes,e,null)},qn=function(e){let t=null,n=On(e);for(Pn(P.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)if(Pn(P.uponSanitizeShadowNode,t,null),Bn(t,e),Kn(t),Mn(t.content)&&qn(t.content),S(t)===gt.element){let e=_(t);Mn(e)&&(Jn(e),qn(e))}Pn(P.afterSanitizeShadowDOM,e,null)},Jn=function(e){let t=[{node:e,shadow:null}];for(;t.length>0;){let e=t.pop();if(e.shadow){qn(e.shadow);continue}let n=e.node,r=S(n)===gt.element,i=h(n);if(i)for(let e=i.length-1;e>=0;--e)t.push({node:i[e],shadow:null});if(r){let e=b?b(n):null;if(typeof e==`string`&&R(e)===`template`){let e=n.content;Mn(e)&&t.push({node:e,shadow:null})}}if(r){let e=_(n);Mn(e)&&t.push({node:null,shadow:e},{node:e,shadow:null})}}};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,a=null,o=null,s=null;if($t=!e,$t&&(e=``),typeof e!=`string`&&!Nn(e)&&(e=He(e),typeof e!=`string`))throw Le(`dirty is not a string, aborting`);if(!t.isSupported)return e;L?(F=jt,je=Mt):pn(n),(P.uponSanitizeElement.length>0||P.uponSanitizeAttribute.length>0)&&(F=Ve(F)),P.uponSanitizeAttribute.length>0&&(je=Ve(je)),t.removed=[];let c=Vt&&typeof e!=`string`&&Nn(e);if(c){En(e);let t=C(e);if(typeof t==`string`){let n=R(t);if(!F[n]||Fe[n])throw xn(e),Le(`root node is forbidden and cannot be sanitized in-place`)}if(jn(e))throw xn(e),Le(`root node is clobbered and cannot be sanitized in-place`);try{Jn(e)}catch(t){throw xn(e),t}}else if(Nn(e))i=Dn(``),a=i.ownerDocument.importNode(e,!0),a.nodeType===gt.element&&a.nodeName===`BODY`||a.nodeName===`HTML`?i=a:i.appendChild(a),Jn(a);else{if(!Pt&&!Ot&&!At&&e.indexOf(`<`)===-1)return w&&It?k(e):e;if(i=Dn(e),!i)return Pt?null:It?T:``}i&&Nt&&z(i.firstChild);let l=c?e:i;try{let e=On(l);for(;o=e.nextNode();)Bn(o,l),Kn(o),Mn(o.content)&&qn(o.content)}catch(n){throw c&&(xn(e),ve(t.removed,e=>{e.element&&wn(e.element)})),n}if(c)return ve(t.removed,e=>{e.element&&wn(e.element)}),Ot&&An(e),e;if(Pt){if(Ot&&An(i),Ft)for(s=N.call(i.ownerDocument);i.firstChild;)s.appendChild(i.firstChild);else s=i;return(je.shadowroot||je.shadowrootmode)&&(s=ie.call(r,s,!0)),s}let u=At?i.outerHTML:i.innerHTML;return At&&F[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&Ie(ut,i.ownerDocument.doctype.name)&&(u=` `+u),Ot&&(u=kn(u)),w&&It?k(u):u},t.setConfig=function(){pn(arguments.length>0&&arguments[0]!==void 0?arguments[0]:{}),L=!0,jt=F,Mt=je},t.clearConfig=function(){un=null,L=!1,jt=null,Mt=null,w=E,T=``},t.isValidAttribute=function(e,t,n){return un||pn({}),Vn(R(e),R(t),n)},t.addHook=function(e,t){typeof t==`function`&&Pe(P,e)&&xe(P[e],t)},t.removeHook=function(e,t){if(Pe(P,e)){if(t!==void 0){let n=ye(P[e],t);return n===-1?void 0:Se(P[e],n,1)[0]}return be(P[e])}},t.removeHooks=function(e){Pe(P,e)&&(P[e]=[])},t.removeAllHooks=function(){P=St()},t}var Et=Tt(),Dt=s((e,t,{depth:n=2}={})=>{let r={depth:n};if(Array.isArray(t)&&!Array.isArray(e))return t.forEach(t=>Dt(e,t,r)),e;if(Array.isArray(t)&&Array.isArray(e))return t.forEach(t=>{e.includes(t)||e.push(t)}),e;if(e==null||n<=0)return typeof e==`object`&&e&&typeof t==`object`?Object.assign(e,t):t;if(t!=null&&typeof e==`object`&&typeof t==`object`){let r=e;Object.entries(t).forEach(([t,i])=>{if(typeof i==`object`){if(i===null)return;Object.hasOwn(e,t)||Object.defineProperty(e,t,{value:void 0,writable:!0,enumerable:!0,configurable:!0}),r[t]===void 0&&(r[t]=Array.isArray(i)?[]:{}),typeof r[t]==`object`&&(r[t]=Dt(r[t],i,{depth:n-1}))}else typeof r[t]!=`object`&&(Object.hasOwn(e,t)?r[t]=i:Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!0,configurable:!0}))})}return e},`assignWithDepth`),Ot=Dt,kt=`#ffffff`,At=`#f2f2f2`,L=s((e,t)=>t?M(e,{s:-40,l:10}):M(e,{s:-40,l:-10}),`mkBorder`),jt=class{static{s(this,`Theme`)}constructor(){this.background=`#f4f4f4`,this.primaryColor=`#fff4dd`,this.noteBkgColor=`#fff5ad`,this.noteTextColor=`#333`,this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.fontFamily=`"trebuchet ms", verdana, arial, sans-serif`,this.fontSize=`16px`,this.useGradient=!0,this.dropShadow=`drop-shadow( 1px 2px 2px rgba(185,185,185,1))`}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?`#eee`:`#333`),this.secondaryColor=this.secondaryColor||M(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||M(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||L(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||L(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||L(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||L(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||`#fff5ad`,this.noteTextColor=this.noteTextColor||`#333`,this.secondaryTextColor=this.secondaryTextColor||N(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||N(this.tertiaryColor),this.lineColor=this.lineColor||N(this.background),this.arrowheadColor=this.arrowheadColor||N(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?j(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||j(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||N(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||`white`,this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||`#eeeeee`,this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||A(this.primaryColor,23),this.gridColor=this.gridColor||`lightgrey`,this.doneTaskBkgColor=this.doneTaskBkgColor||`lightgrey`,this.doneTaskBorderColor=this.doneTaskBorderColor||`grey`,this.critBorderColor=this.critBorderColor||`#ff8888`,this.critBkgColor=this.critBkgColor||`red`,this.todayLineColor=this.todayLineColor||`red`,this.vertLineColor=this.vertLineColor||`navy`,this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||`#003163`,this.noteFontWeight=this.noteFontWeight||`normal`,this.fontWeight=this.fontWeight||`normal`,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.darkMode?(this.rowOdd=this.rowOdd||j(this.mainBkg,5)||`#ffffff`,this.rowEven=this.rowEven||j(this.mainBkg,10)):(this.rowOdd=this.rowOdd||A(this.mainBkg,75)||`#ffffff`,this.rowEven=this.rowEven||A(this.mainBkg,5)),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||M(this.primaryColor,{h:30}),this.cScale4=this.cScale4||M(this.primaryColor,{h:60}),this.cScale5=this.cScale5||M(this.primaryColor,{h:90}),this.cScale6=this.cScale6||M(this.primaryColor,{h:120}),this.cScale7=this.cScale7||M(this.primaryColor,{h:150}),this.cScale8=this.cScale8||M(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||M(this.primaryColor,{h:270}),this.cScale10=this.cScale10||M(this.primaryColor,{h:300}),this.cScale11=this.cScale11||M(this.primaryColor,{h:330}),this.darkMode)for(let e=0;e{this[t]=e[t]}),this.updateColors(),t.forEach(t=>{this[t]=e[t]})}},Mt=s(e=>{let t=new jt;return t.calculate(e),t},`getThemeVariables`),Nt=class{static{s(this,`Theme`)}constructor(){this.background=`#333`,this.primaryColor=`#1f2020`,this.secondaryColor=A(this.primaryColor,16),this.tertiaryColor=M(this.primaryColor,{h:-160}),this.primaryBorderColor=N(this.background),this.secondaryBorderColor=L(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=L(this.tertiaryColor,this.darkMode),this.primaryTextColor=N(this.primaryColor),this.secondaryTextColor=N(this.secondaryColor),this.tertiaryTextColor=N(this.tertiaryColor),this.lineColor=N(this.background),this.textColor=N(this.background),this.mainBkg=`#1f2020`,this.secondBkg=`calculated`,this.mainContrastColor=`lightgrey`,this.darkTextColor=A(N(`#323D47`),10),this.lineColor=`calculated`,this.border1=`#ccc`,this.border2=D(255,255,255,.25),this.arrowheadColor=`calculated`,this.fontFamily=`"trebuchet ms", verdana, arial, sans-serif`,this.fontSize=`16px`,this.labelBackground=`#181818`,this.textColor=`#ccc`,this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg=`calculated`,this.nodeBorder=`calculated`,this.clusterBkg=`calculated`,this.clusterBorder=`calculated`,this.defaultLinkColor=`calculated`,this.titleColor=`#F9FFFE`,this.edgeLabelBackground=`calculated`,this.actorBorder=`calculated`,this.actorBkg=`calculated`,this.actorTextColor=`calculated`,this.actorLineColor=`calculated`,this.signalColor=`calculated`,this.signalTextColor=`calculated`,this.labelBoxBkgColor=`calculated`,this.labelBoxBorderColor=`calculated`,this.labelTextColor=`calculated`,this.loopTextColor=`calculated`,this.noteBorderColor=`calculated`,this.noteBkgColor=`#fff5ad`,this.noteTextColor=`calculated`,this.activationBorderColor=`calculated`,this.activationBkgColor=`calculated`,this.sequenceNumberColor=`black`,this.clusterBkg=`#302F3D`,this.sectionBkgColor=j(`#EAE8D9`,30),this.altSectionBkgColor=`calculated`,this.sectionBkgColor2=`#EAE8D9`,this.excludeBkgColor=j(this.sectionBkgColor,10),this.taskBorderColor=D(255,255,255,70),this.taskBkgColor=`calculated`,this.taskTextColor=`calculated`,this.taskTextLightColor=`calculated`,this.taskTextOutsideColor=`calculated`,this.taskTextClickableColor=`#003163`,this.activeTaskBorderColor=D(255,255,255,50),this.activeTaskBkgColor=`#81B1DB`,this.gridColor=`calculated`,this.doneTaskBkgColor=`calculated`,this.doneTaskBorderColor=`grey`,this.critBorderColor=`#E83737`,this.critBkgColor=`#E83737`,this.taskTextDarkColor=`calculated`,this.todayLineColor=`#DB5757`,this.vertLineColor=`#00BFFF`,this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor=`calculated`,this.archEdgeArrowColor=`calculated`,this.archEdgeWidth=`3`,this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth=`2px`,this.rowOdd=this.rowOdd||A(this.mainBkg,5)||`#ffffff`,this.rowEven=this.rowEven||j(this.mainBkg,10),this.labelColor=`calculated`,this.errorBkgColor=`#a44141`,this.errorTextColor=`#ddd`,this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow=`drop-shadow( 1px 2px 2px rgba(185,185,185,1))`,this.noteFontWeight=this.noteFontWeight||`normal`,this.fontWeight=this.fontWeight||`normal`}updateColors(){this.secondBkg=A(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=A(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.background,this.taskBkgColor=A(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=N(this.doneTaskBkgColor),this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||`#555`,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor=`#f4f4f4`,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=M(this.primaryColor,{h:64}),this.fillType3=M(this.secondaryColor,{h:64}),this.fillType4=M(this.primaryColor,{h:-64}),this.fillType5=M(this.secondaryColor,{h:-64}),this.fillType6=M(this.primaryColor,{h:128}),this.fillType7=M(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||`#0b0000`,this.cScale2=this.cScale2||`#4d1037`,this.cScale3=this.cScale3||`#3f5258`,this.cScale4=this.cScale4||`#4f2f1b`,this.cScale5=this.cScale5||`#6e0a0a`,this.cScale6=this.cScale6||`#3b0048`,this.cScale7=this.cScale7||`#995a01`,this.cScale8=this.cScale8||`#154706`,this.cScale9=this.cScale9||`#161722`,this.cScale10=this.cScale10||`#00296f`,this.cScale11=this.cScale11||`#01629c`,this.cScale12=this.cScale12||`#010029`,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||M(this.primaryColor,{h:30}),this.cScale4=this.cScale4||M(this.primaryColor,{h:60}),this.cScale5=this.cScale5||M(this.primaryColor,{h:90}),this.cScale6=this.cScale6||M(this.primaryColor,{h:120}),this.cScale7=this.cScale7||M(this.primaryColor,{h:150}),this.cScale8=this.cScale8||M(this.primaryColor,{h:210}),this.cScale9=this.cScale9||M(this.primaryColor,{h:270}),this.cScale10=this.cScale10||M(this.primaryColor,{h:300}),this.cScale11=this.cScale11||M(this.primaryColor,{h:330});for(let e=0;e{this[t]=e[t]}),this.updateColors(),t.forEach(t=>{this[t]=e[t]})}},Pt=s(e=>{let t=new Nt;return t.calculate(e),t},`getThemeVariables`),Ft=class{static{s(this,`Theme`)}constructor(){this.background=`#f4f4f4`,this.primaryColor=`#ECECFF`,this.secondaryColor=M(this.primaryColor,{h:120}),this.secondaryColor=`#ffffde`,this.tertiaryColor=M(this.primaryColor,{h:-160}),this.primaryBorderColor=L(this.primaryColor,this.darkMode),this.secondaryBorderColor=L(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=L(this.tertiaryColor,this.darkMode),this.primaryTextColor=N(this.primaryColor),this.secondaryTextColor=N(this.secondaryColor),this.tertiaryTextColor=N(this.tertiaryColor),this.lineColor=N(this.background),this.textColor=N(this.background),this.background=`white`,this.mainBkg=`#ECECFF`,this.secondBkg=`#ffffde`,this.lineColor=`#333333`,this.border1=`#9370DB`,this.primaryBorderColor=L(this.primaryColor,this.darkMode),this.border2=`#aaaa33`,this.arrowheadColor=`#333333`,this.fontFamily=`"trebuchet ms", verdana, arial, sans-serif`,this.fontSize=`16px`,this.labelBackground=`rgba(232,232,232, 0.8)`,this.textColor=`#333`,this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg=`calculated`,this.nodeBorder=`calculated`,this.clusterBkg=`calculated`,this.clusterBorder=`calculated`,this.defaultLinkColor=`calculated`,this.titleColor=`calculated`,this.edgeLabelBackground=`calculated`,this.actorBorder=`calculated`,this.actorBkg=`calculated`,this.actorTextColor=`black`,this.actorLineColor=`calculated`,this.signalColor=`calculated`,this.signalTextColor=`calculated`,this.labelBoxBkgColor=`calculated`,this.labelBoxBorderColor=`calculated`,this.labelTextColor=`calculated`,this.loopTextColor=`calculated`,this.noteBorderColor=`calculated`,this.noteBkgColor=`#fff5ad`,this.noteTextColor=`calculated`,this.activationBorderColor=`#666`,this.activationBkgColor=`#f4f4f4`,this.sequenceNumberColor=`white`,this.clusterBkg=`#FBFBFF`,this.sectionBkgColor=`calculated`,this.altSectionBkgColor=`calculated`,this.sectionBkgColor2=`calculated`,this.excludeBkgColor=`#eeeeee`,this.taskBorderColor=`calculated`,this.taskBkgColor=`calculated`,this.taskTextLightColor=`calculated`,this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor=`calculated`,this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor=`calculated`,this.activeTaskBorderColor=`calculated`,this.activeTaskBkgColor=`calculated`,this.gridColor=`calculated`,this.doneTaskBkgColor=`calculated`,this.doneTaskBorderColor=`calculated`,this.critBorderColor=`calculated`,this.critBkgColor=`calculated`,this.todayLineColor=`calculated`,this.vertLineColor=`calculated`,this.sectionBkgColor=D(102,102,255,.49),this.altSectionBkgColor=`white`,this.sectionBkgColor2=`#fff400`,this.taskBorderColor=`#534fbc`,this.taskBkgColor=`#8a90dd`,this.taskTextLightColor=`white`,this.taskTextColor=`calculated`,this.taskTextDarkColor=`black`,this.taskTextOutsideColor=`calculated`,this.taskTextClickableColor=`#003163`,this.activeTaskBorderColor=`#534fbc`,this.activeTaskBkgColor=`#bfc7ff`,this.gridColor=`lightgrey`,this.doneTaskBkgColor=`lightgrey`,this.doneTaskBorderColor=`grey`,this.critBorderColor=`#ff8888`,this.critBkgColor=`red`,this.todayLineColor=`red`,this.vertLineColor=`navy`,this.noteFontWeight=this.noteFontWeight||`normal`,this.fontWeight=this.fontWeight||`normal`,this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor=`calculated`,this.archEdgeArrowColor=`calculated`,this.archEdgeWidth=`3`,this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth=`2px`,this.rowOdd=`calculated`,this.rowEven=`calculated`,this.labelColor=`black`,this.errorBkgColor=`#552222`,this.errorTextColor=`#552222`,this.useGradient=!1,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow=`drop-shadow(1px 2px 2px rgba(185, 185, 185, 1))`,this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||M(this.primaryColor,{h:30}),this.cScale4=this.cScale4||M(this.primaryColor,{h:60}),this.cScale5=this.cScale5||M(this.primaryColor,{h:90}),this.cScale6=this.cScale6||M(this.primaryColor,{h:120}),this.cScale7=this.cScale7||M(this.primaryColor,{h:150}),this.cScale8=this.cScale8||M(this.primaryColor,{h:210}),this.cScale9=this.cScale9||M(this.primaryColor,{h:270}),this.cScale10=this.cScale10||M(this.primaryColor,{h:300}),this.cScale11=this.cScale11||M(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||j(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||j(this.tertiaryColor,40);for(let e=0;e{this[e]===`calculated`&&(this[e]=void 0)}),typeof e!=`object`){this.updateColors();return}let t=Object.keys(e);t.forEach(t=>{this[t]=e[t]}),this.updateColors(),t.forEach(t=>{this[t]=e[t]})}},It=s(e=>{let t=new Ft;return t.calculate(e),t},`getThemeVariables`),Lt=class{static{s(this,`Theme`)}constructor(){this.background=`#f4f4f4`,this.primaryColor=`#cde498`,this.secondaryColor=`#cdffb2`,this.background=`white`,this.mainBkg=`#cde498`,this.secondBkg=`#cdffb2`,this.lineColor=`green`,this.border1=`#13540c`,this.border2=`#6eaa49`,this.arrowheadColor=`green`,this.fontFamily=`"trebuchet ms", verdana, arial, sans-serif`,this.fontSize=`16px`,this.tertiaryColor=A(`#cde498`,10),this.primaryBorderColor=L(this.primaryColor,this.darkMode),this.secondaryBorderColor=L(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=L(this.tertiaryColor,this.darkMode),this.primaryTextColor=N(this.primaryColor),this.secondaryTextColor=N(this.secondaryColor),this.tertiaryTextColor=N(this.primaryColor),this.lineColor=N(this.background),this.textColor=N(this.background),this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg=`calculated`,this.nodeBorder=`calculated`,this.clusterBkg=`calculated`,this.clusterBorder=`calculated`,this.defaultLinkColor=`calculated`,this.titleColor=`#333`,this.edgeLabelBackground=`#e8e8e8`,this.actorBorder=`calculated`,this.actorBkg=`calculated`,this.actorTextColor=`black`,this.actorLineColor=`calculated`,this.signalColor=`#333`,this.signalTextColor=`#333`,this.labelBoxBkgColor=`calculated`,this.labelBoxBorderColor=`#326932`,this.labelTextColor=`calculated`,this.loopTextColor=`calculated`,this.noteBorderColor=`calculated`,this.noteBkgColor=`#fff5ad`,this.noteTextColor=`calculated`,this.activationBorderColor=`#666`,this.activationBkgColor=`#f4f4f4`,this.sequenceNumberColor=`white`,this.sectionBkgColor=`#6eaa49`,this.altSectionBkgColor=`white`,this.sectionBkgColor2=`#6eaa49`,this.excludeBkgColor=`#eeeeee`,this.taskBorderColor=`calculated`,this.taskBkgColor=`#487e3a`,this.taskTextLightColor=`white`,this.taskTextColor=`calculated`,this.taskTextDarkColor=`black`,this.taskTextOutsideColor=`calculated`,this.taskTextClickableColor=`#003163`,this.activeTaskBorderColor=`calculated`,this.activeTaskBkgColor=`calculated`,this.gridColor=`lightgrey`,this.doneTaskBkgColor=`lightgrey`,this.doneTaskBorderColor=`grey`,this.critBorderColor=`#ff8888`,this.critBkgColor=`red`,this.todayLineColor=`red`,this.vertLineColor=`#00BFFF`,this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor=`calculated`,this.archEdgeArrowColor=`calculated`,this.archEdgeWidth=`3`,this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth=`2px`,this.noteFontWeight=`normal`,this.fontWeight=`normal`,this.labelColor=`black`,this.errorBkgColor=`#552222`,this.errorTextColor=`#552222`,this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow=`drop-shadow( 1px 2px 2px rgba(185,185,185,0.5))`}updateColors(){this.actorBorder=j(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||M(this.primaryColor,{h:30}),this.cScale4=this.cScale4||M(this.primaryColor,{h:60}),this.cScale5=this.cScale5||M(this.primaryColor,{h:90}),this.cScale6=this.cScale6||M(this.primaryColor,{h:120}),this.cScale7=this.cScale7||M(this.primaryColor,{h:150}),this.cScale8=this.cScale8||M(this.primaryColor,{h:210}),this.cScale9=this.cScale9||M(this.primaryColor,{h:270}),this.cScale10=this.cScale10||M(this.primaryColor,{h:300}),this.cScale11=this.cScale11||M(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||j(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||j(this.tertiaryColor,40);for(let e=0;e{this[t]=e[t]}),this.updateColors(),t.forEach(t=>{this[t]=e[t]})}},Rt=s(e=>{let t=new Lt;return t.calculate(e),t},`getThemeVariables`),zt=class{static{s(this,`Theme`)}constructor(){this.primaryColor=`#eee`,this.contrast=`#707070`,this.secondaryColor=A(this.contrast,55),this.background=`#ffffff`,this.tertiaryColor=M(this.primaryColor,{h:-160}),this.primaryBorderColor=L(this.primaryColor,this.darkMode),this.secondaryBorderColor=L(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=L(this.tertiaryColor,this.darkMode),this.primaryTextColor=N(this.primaryColor),this.secondaryTextColor=N(this.secondaryColor),this.tertiaryTextColor=N(this.tertiaryColor),this.lineColor=N(this.background),this.textColor=N(this.background),this.mainBkg=`#eee`,this.secondBkg=`calculated`,this.lineColor=`#666`,this.border1=`#999`,this.border2=`calculated`,this.note=`#ffa`,this.text=`#333`,this.critical=`#d42`,this.done=`#bbb`,this.arrowheadColor=`#333333`,this.fontFamily=`"trebuchet ms", verdana, arial, sans-serif`,this.fontSize=`16px`,this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg=`calculated`,this.nodeBorder=`calculated`,this.clusterBkg=`calculated`,this.clusterBorder=`calculated`,this.defaultLinkColor=`calculated`,this.titleColor=`calculated`,this.edgeLabelBackground=`white`,this.actorBorder=`calculated`,this.actorBkg=`calculated`,this.actorTextColor=`calculated`,this.actorLineColor=this.actorBorder,this.signalColor=`calculated`,this.signalTextColor=`calculated`,this.labelBoxBkgColor=`calculated`,this.labelBoxBorderColor=`calculated`,this.labelTextColor=`calculated`,this.loopTextColor=`calculated`,this.noteBorderColor=`calculated`,this.noteBkgColor=`calculated`,this.noteTextColor=`calculated`,this.activationBorderColor=`#666`,this.activationBkgColor=`#f4f4f4`,this.sequenceNumberColor=`white`,this.sectionBkgColor=`calculated`,this.altSectionBkgColor=`white`,this.sectionBkgColor2=`calculated`,this.excludeBkgColor=`#eeeeee`,this.taskBorderColor=`calculated`,this.taskBkgColor=`calculated`,this.taskTextLightColor=`white`,this.taskTextColor=`calculated`,this.taskTextDarkColor=`calculated`,this.taskTextOutsideColor=`calculated`,this.taskTextClickableColor=`#003163`,this.activeTaskBorderColor=`calculated`,this.activeTaskBkgColor=`calculated`,this.gridColor=`calculated`,this.doneTaskBkgColor=`calculated`,this.doneTaskBorderColor=`calculated`,this.critBkgColor=`calculated`,this.critBorderColor=`calculated`,this.todayLineColor=`calculated`,this.vertLineColor=`calculated`,this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor=`calculated`,this.archEdgeArrowColor=`calculated`,this.archEdgeWidth=`3`,this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth=`2px`,this.noteFontWeight=`normal`,this.fontWeight=`normal`,this.rowOdd=this.rowOdd||A(this.mainBkg,75)||`#ffffff`,this.rowEven=this.rowEven||`#f4f4f4`,this.labelColor=`black`,this.errorBkgColor=`#552222`,this.errorTextColor=`#552222`,this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow=`drop-shadow( 1px 2px 2px rgba(185,185,185,1))`}updateColors(){this.secondBkg=A(this.contrast,55),this.border2=this.contrast,this.actorBorder=A(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor=`#999`,this.noteBkgColor=`#666`,this.noteTextColor=`#fff`,this.cScale0=this.cScale0||`#555`,this.cScale1=this.cScale1||`#F4F4F4`,this.cScale2=this.cScale2||`#555`,this.cScale3=this.cScale3||`#BBB`,this.cScale4=this.cScale4||`#777`,this.cScale5=this.cScale5||`#999`,this.cScale6=this.cScale6||`#DDD`,this.cScale7=this.cScale7||`#FFF`,this.cScale8=this.cScale8||`#DDD`,this.cScale9=this.cScale9||`#BBB`,this.cScale10=this.cScale10||`#999`,this.cScale11=this.cScale11||`#777`;for(let e=0;e{this[t]=e[t]}),this.updateColors(),t.forEach(t=>{this[t]=e[t]})}},Bt=s(e=>{let t=new zt;return t.calculate(e),t},`getThemeVariables`),Vt=class{static{s(this,`Theme`)}constructor(){this.background=`#ffffff`,this.primaryColor=`#cccccc`,this.mainBkg=`#ffffff`,this.noteBkgColor=`#fff5ad`,this.noteTextColor=`#333`,this.THEME_COLOR_LIMIT=12,this.radius=3,this.strokeWidth=2,this.primaryBorderColor=L(this.primaryColor,this.darkMode),this.fontFamily=`arial, sans-serif`,this.fontSize=`14px`,this.nodeBorder=`#000000`,this.stateBorder=`#000000`,this.useGradient=!0,this.gradientStart=`#0042eb`,this.gradientStop=`#eb0042`,this.dropShadow=`drop-shadow( 0px 1px 2px rgba(0, 0, 0, 0.25));`,this.tertiaryColor=`#ffffff`,this.archEdgeColor=`calculated`,this.archEdgeArrowColor=`calculated`,this.archEdgeWidth=`3`,this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth=`2px`,this.noteFontWeight=`normal`,this.fontWeight=`normal`}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?`#eee`:`#333`),this.secondaryColor=this.secondaryColor||M(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||M(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||L(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||L(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||L(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||L(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||`#fff5ad`,this.noteTextColor=this.noteTextColor||`#333`,this.secondaryTextColor=this.secondaryTextColor||N(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||N(this.tertiaryColor),this.lineColor=this.lineColor||N(this.background),this.arrowheadColor=this.arrowheadColor||N(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?j(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||j(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||N(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor;let e=`#ECECFE`,t=`#E9E9F1`,n=M(e,{h:180,l:5});if(this.sectionBkgColor=this.sectionBkgColor||n,this.altSectionBkgColor=this.altSectionBkgColor||`white`,this.sectionBkgColor=this.sectionBkgColor||t,this.sectionBkgColor2=this.sectionBkgColor2||e,this.excludeBkgColor=this.excludeBkgColor||`#eeeeee`,this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||e,this.activeTaskBorderColor=this.activeTaskBorderColor||e,this.activeTaskBkgColor=this.activeTaskBkgColor||A(e,23),this.gridColor=this.gridColor||`lightgrey`,this.doneTaskBkgColor=this.doneTaskBkgColor||`lightgrey`,this.doneTaskBorderColor=this.doneTaskBorderColor||`grey`,this.critBorderColor=this.critBorderColor||`#ff8888`,this.critBkgColor=this.critBkgColor||`red`,this.todayLineColor=this.todayLineColor||`red`,this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||`#003163`,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||`#f0f0f0`,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||e,this.cScale1=this.cScale1||t,this.cScale2=this.cScale2||n,this.cScale3=this.cScale3||M(e,{h:30}),this.cScale4=this.cScale4||M(e,{h:60}),this.cScale5=this.cScale5||M(e,{h:90}),this.cScale6=this.cScale6||M(e,{h:120}),this.cScale7=this.cScale7||M(e,{h:150}),this.cScale8=this.cScale8||M(e,{h:210,l:150}),this.cScale9=this.cScale9||M(e,{h:270}),this.cScale10=this.cScale10||M(e,{h:300}),this.cScale11=this.cScale11||M(e,{h:330}),this.darkMode)for(let e=0;e{this[t]=e[t]}),this.updateColors(),t.forEach(t=>{this[t]=e[t]})}},Ht=s(e=>{let t=new Vt;return t.calculate(e),t},`getThemeVariables`),Ut=class{static{s(this,`Theme`)}constructor(){this.background=`#333`,this.primaryColor=`#1f2020`,this.secondaryColor=A(this.primaryColor,16),this.tertiaryColor=M(this.primaryColor,{h:-160}),this.primaryBorderColor=N(this.background),this.secondaryBorderColor=L(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=L(this.tertiaryColor,this.darkMode),this.primaryTextColor=N(this.primaryColor),this.secondaryTextColor=N(this.secondaryColor),this.tertiaryTextColor=N(this.tertiaryColor),this.mainBkg=`#2a2020`,this.secondBkg=`calculated`,this.mainContrastColor=`lightgrey`,this.darkTextColor=A(N(`#323D47`),10),this.border1=`#ccc`,this.border2=D(255,255,255,.25),this.arrowheadColor=N(this.background),this.fontFamily=`arial, sans-serif`,this.fontSize=`14px`,this.labelBackground=`#181818`,this.textColor=`#ccc`,this.THEME_COLOR_LIMIT=12,this.radius=3,this.strokeWidth=1,this.noteBkgColor=`#fff5ad`,this.noteTextColor=`#333`,this.THEME_COLOR_LIMIT=12,this.fontFamily=`arial, sans-serif`,this.fontSize=`14px`,this.useGradient=!0,this.gradientStart=`#0042eb`,this.gradientStop=`#eb0042`,this.dropShadow=`drop-shadow( 1px 2px 2px rgba(185,185,185,0.2))`,this.archEdgeColor=`calculated`,this.archEdgeArrowColor=`calculated`,this.archEdgeWidth=`3`,this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth=`2px`,this.noteFontWeight=`normal`,this.fontWeight=`normal`}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?`#eee`:`#333`),this.secondaryColor=this.secondaryColor||M(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||M(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||L(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||L(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||L(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||L(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||`#fff5ad`,this.noteTextColor=this.noteTextColor||`#333`,this.secondaryTextColor=this.secondaryTextColor||N(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||N(this.tertiaryColor),this.lineColor=this.lineColor||N(this.background),this.arrowheadColor=this.arrowheadColor||N(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?j(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||j(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||N(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||`white`,this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||`#eeeeee`,this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||A(this.primaryColor,23),this.gridColor=this.gridColor||`lightgrey`,this.doneTaskBkgColor=this.doneTaskBkgColor||`lightgrey`,this.doneTaskBorderColor=this.doneTaskBorderColor||`grey`,this.critBorderColor=this.critBorderColor||`#ff8888`,this.critBkgColor=this.critBkgColor||`red`,this.todayLineColor=this.todayLineColor||`red`,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||`#003163`,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||`#f0f0f0`,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||M(this.primaryColor,{h:30}),this.cScale4=this.cScale4||M(this.primaryColor,{h:60}),this.cScale5=this.cScale5||M(this.primaryColor,{h:90}),this.cScale6=this.cScale6||M(this.primaryColor,{h:120}),this.cScale7=this.cScale7||M(this.primaryColor,{h:150}),this.cScale8=this.cScale8||M(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||M(this.primaryColor,{h:270}),this.cScale10=this.cScale10||M(this.primaryColor,{h:300}),this.cScale11=this.cScale11||M(this.primaryColor,{h:330}),this.darkMode)for(let e=0;e{this[t]=e[t]}),this.updateColors(),t.forEach(t=>{this[t]=e[t]})}},Wt=s(e=>{let t=new Ut;return t.calculate(e),t},`getThemeVariables`),Gt=class{static{s(this,`Theme`)}constructor(){this.background=`#ffffff`,this.primaryColor=`#cccccc`,this.mainBkg=`#ffffff`,this.noteBkgColor=`#fff5ad`,this.noteTextColor=`#28253D`,this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.primaryBorderColor=L(`#28253D`,this.darkMode),this.fontFamily=`"Recursive Variable", arial, sans-serif`,this.fontSize=`14px`,this.nodeBorder=`#28253D`,this.stateBorder=`#28253D`,this.useGradient=!1,this.gradientStart=`#0042eb`,this.gradientStop=`#eb0042`,this.dropShadow=`url(#drop-shadow)`,this.nodeShadow=!0,this.tertiaryColor=`#ffffff`,this.clusterBkg=`#F9F9FB`,this.clusterBorder=`#BDBCCC`,this.noteBorderColor=`#FACC15`,this.archEdgeColor=`calculated`,this.archEdgeArrowColor=`calculated`,this.archEdgeWidth=`3`,this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth=`2px`,this.actorBorder=`#28253D`,this.filterColor=`#000000`}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?`#eee`:`#28253D`),this.secondaryColor=this.secondaryColor||M(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||M(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||L(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||L(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||L(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||L(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||`#FEF9C3`,this.noteTextColor=this.noteTextColor||`#28253D`,this.secondaryTextColor=this.secondaryTextColor||N(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||N(this.tertiaryColor),this.lineColor=this.lineColor||N(this.background),this.arrowheadColor=this.arrowheadColor||N(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?j(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.noteFontWeight=600,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||j(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||N(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor;let e=`#ECECFE`,t=`#E9E9F1`,n=M(e,{h:180,l:5});this.sectionBkgColor=this.sectionBkgColor||n,this.altSectionBkgColor=this.altSectionBkgColor||`white`,this.sectionBkgColor=this.sectionBkgColor||t,this.sectionBkgColor2=this.sectionBkgColor2||e,this.excludeBkgColor=this.excludeBkgColor||`#eeeeee`,this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||e,this.activeTaskBorderColor=this.activeTaskBorderColor||e,this.activeTaskBkgColor=this.activeTaskBkgColor||A(e,23),this.gridColor=this.gridColor||`lightgrey`,this.doneTaskBkgColor=this.doneTaskBkgColor||`lightgrey`,this.doneTaskBorderColor=this.doneTaskBorderColor||`grey`,this.critBorderColor=this.critBorderColor||`#ff8888`,this.critBkgColor=this.critBkgColor||`red`,this.todayLineColor=this.todayLineColor||`red`,this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||`#003163`,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.compositeTitleBackground=`#F9F9FB`,this.altBackground=`#F9F9FB`,this.stateEdgeLabelBackground=`#FFFFFF`,this.fontWeight=600,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||`#f0f0f0`,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor;for(let e=0;e{this[t]=e[t]}),this.updateColors(),t.forEach(t=>{this[t]=e[t]})}},Kt=s(e=>{let t=new Gt;return t.calculate(e),t},`getThemeVariables`),qt=class{static{s(this,`Theme`)}constructor(){this.background=`#333`,this.primaryColor=`#1f2020`,this.secondaryColor=A(this.primaryColor,16),this.tertiaryColor=M(this.primaryColor,{h:-160}),this.primaryBorderColor=N(this.background),this.secondaryBorderColor=L(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=L(this.tertiaryColor,this.darkMode),this.primaryTextColor=N(this.primaryColor),this.secondaryTextColor=N(this.secondaryColor),this.tertiaryTextColor=N(this.tertiaryColor),this.mainBkg=`#111113`,this.secondBkg=`calculated`,this.mainContrastColor=`lightgrey`,this.darkTextColor=A(N(`#323D47`),10),this.border1=`#ccc`,this.border2=D(255,255,255,.25),this.arrowheadColor=N(this.background),this.fontFamily=`"Recursive Variable", arial, sans-serif`,this.fontSize=`14px`,this.labelBackground=`#111113`,this.textColor=`#ccc`,this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.noteBkgColor=this.noteBkgColor??`#FEF9C3`,this.noteTextColor=this.noteTextColor??`#28253D`,this.THEME_COLOR_LIMIT=12,this.fontFamily=`"Recursive Variable", arial, sans-serif`,this.fontSize=`14px`,this.nodeBorder=`#FFFFFF`,this.stateBorder=`#FFFFFF`,this.useGradient=!1,this.gradientStart=`#0042eb`,this.gradientStop=`#eb0042`,this.dropShadow=`url(#drop-shadow)`,this.nodeShadow=!0,this.archEdgeColor=`calculated`,this.archEdgeArrowColor=`calculated`,this.archEdgeWidth=`3`,this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth=`2px`,this.clusterBkg=`#1E1A2E`,this.clusterBorder=`#BDBCCC`,this.noteBorderColor=`#FACC15`,this.noteFontWeight=600,this.filterColor=`#FFFFFF`}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?`#eee`:`#FFFFFF`),this.secondaryColor=this.secondaryColor||M(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||M(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||L(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||L(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||L(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||L(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||`#fff5ad`,this.noteTextColor=this.noteTextColor||`#FFFFFF`,this.secondaryTextColor=this.secondaryTextColor||N(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||N(this.tertiaryColor),this.lineColor=this.lineColor||N(this.background),this.arrowheadColor=this.arrowheadColor||N(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?j(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=`#FFFFFF`,this.signalColor=`#FFFFFF`,this.labelBoxBorderColor=`#BDBCCC`,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||j(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||N(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||`white`,this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||`#eeeeee`,this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||A(this.primaryColor,23),this.gridColor=this.gridColor||`lightgrey`,this.doneTaskBkgColor=this.doneTaskBkgColor||`lightgrey`,this.doneTaskBorderColor=this.doneTaskBorderColor||`grey`,this.critBorderColor=this.critBorderColor||`#ff8888`,this.critBkgColor=this.critBkgColor||`red`,this.todayLineColor=this.todayLineColor||`red`,this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||`#003163`,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.compositeBackground=`#16141F`,this.altBackground=`#16141F`,this.compositeTitleBackground=`#16141F`,this.stateEdgeLabelBackground=`#16141F`,this.fontWeight=600,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||`#f0f0f0`,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||M(this.primaryColor,{h:30}),this.cScale4=this.cScale4||M(this.primaryColor,{h:60}),this.cScale5=this.cScale5||M(this.primaryColor,{h:90}),this.cScale6=this.cScale6||M(this.primaryColor,{h:120}),this.cScale7=this.cScale7||M(this.primaryColor,{h:150}),this.cScale8=this.cScale8||M(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||M(this.primaryColor,{h:270}),this.cScale10=this.cScale10||M(this.primaryColor,{h:300}),this.cScale11=this.cScale11||M(this.primaryColor,{h:330}),this.darkMode)for(let e=0;e{this[t]=e[t]}),this.updateColors(),t.forEach(t=>{this[t]=e[t]})}},Jt=s(e=>{let t=new qt;return t.calculate(e),t},`getThemeVariables`),Yt=class{static{s(this,`Theme`)}constructor(){this.background=`#ffffff`,this.primaryColor=`#cccccc`,this.mainBkg=`#ffffff`,this.noteBkgColor=`#fff5ad`,this.noteTextColor=`#28253D`,this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.primaryBorderColor=L(this.primaryColor,this.darkMode),this.fontFamily=`"Recursive Variable", arial, sans-serif`,this.fontSize=`14px`,this.nodeBorder=`#28253D`,this.stateBorder=`#28253D`,this.useGradient=!1,this.gradientStart=`#0042eb`,this.gradientStop=`#eb0042`,this.dropShadow=`url(#drop-shadow)`,this.nodeShadow=!0,this.tertiaryColor=`#ffffff`,this.archEdgeColor=`calculated`,this.archEdgeArrowColor=`calculated`,this.archEdgeWidth=`3`,this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth=`2px`,this.actorBorder=`#28253D`,this.noteBorderColor=`#FACC15`,this.noteFontWeight=600,this.borderColorArray=[`#E879F9`,`#2DD4BF`,`#FB923C`,`#22D3EE`,`#4ADE80`,`#A78BFA`,`#F87171`,`#FACC15`,`#818CF8`,`#A3E635 `,`#38BDF8`,`#FB7185`],this.bkgColorArray=[`#FDF4FF`,`#F0FDFA`,`#FFF7ED`,`#ECFEFF`,`#F0FDF4`,`#F5F3FF`,`#FEF2F2`,`#FEFCE8`,`#EEF2FF`,`#F7FEE7`,`#F0F9FF`,`#FFF1F2`],this.filterColor=`#000000`}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?`#eee`:`#28253D`),this.secondaryColor=this.secondaryColor||M(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||M(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||L(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||L(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||L(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||L(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||`#fff5ad`,this.noteTextColor=this.noteTextColor||`#28253D`,this.secondaryTextColor=this.secondaryTextColor||N(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||N(this.tertiaryColor),this.lineColor=this.lineColor||N(this.background),this.arrowheadColor=this.arrowheadColor||N(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?j(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||j(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||N(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor;let e=`#ECECFE`,t=`#E9E9F1`,n=M(e,{h:180,l:5});this.sectionBkgColor=this.sectionBkgColor||n,this.altSectionBkgColor=this.altSectionBkgColor||`white`,this.sectionBkgColor=this.sectionBkgColor||t,this.sectionBkgColor2=this.sectionBkgColor2||e,this.excludeBkgColor=this.excludeBkgColor||`#eeeeee`,this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||e,this.activeTaskBorderColor=this.activeTaskBorderColor||e,this.activeTaskBkgColor=this.activeTaskBkgColor||A(e,23),this.gridColor=this.gridColor||`lightgrey`,this.doneTaskBkgColor=this.doneTaskBkgColor||`lightgrey`,this.doneTaskBorderColor=this.doneTaskBorderColor||`grey`,this.critBorderColor=this.critBorderColor||`#ff8888`,this.critBkgColor=this.critBkgColor||`red`,this.todayLineColor=this.todayLineColor||`red`,this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||`#003163`,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||`#f0f0f0`,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||`#f4a8ff`,this.cScale1=this.cScale1||`#46ecd5`,this.cScale2=this.cScale2||`#ffb86a`,this.cScale3=this.cScale3||`#dab2ff`,this.cScale4=this.cScale4||`#7bf1a8`,this.cScale5=this.cScale5||`#c4b4ff`,this.cScale6=this.cScale6||`#ffa2a2`,this.cScale7=this.cScale7||`#ffdf20`,this.cScale8=this.cScale8||`#a3b3ff`,this.cScale9=this.cScale9||`#bbf451`,this.cScale10=this.cScale10||`#74d4ff`,this.cScale11=this.cScale11||`#ffa1ad`;for(let e=0;e{this[t]=e[t]}),this.updateColors(),t.forEach(t=>{this[t]=e[t]})}},Xt=s(e=>{let t=new Yt;return t.calculate(e),t},`getThemeVariables`),Zt=class{static{s(this,`Theme`)}constructor(){this.background=`#333`,this.primaryColor=`#1f2020`,this.secondaryColor=A(this.primaryColor,16),this.tertiaryColor=M(this.primaryColor,{h:-160}),this.primaryBorderColor=N(this.background),this.secondaryBorderColor=L(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=L(this.tertiaryColor,this.darkMode),this.primaryTextColor=N(this.primaryColor),this.secondaryTextColor=N(this.secondaryColor),this.tertiaryTextColor=N(this.tertiaryColor),this.mainBkg=`#111113`,this.secondBkg=`calculated`,this.mainContrastColor=`lightgrey`,this.darkTextColor=A(N(`#323D47`),10),this.border1=`#ccc`,this.border2=D(255,255,255,.25),this.arrowheadColor=N(this.background),this.fontFamily=`"Recursive Variable", arial, sans-serif`,this.fontSize=`14px`,this.labelBackground=`#111113`,this.textColor=`#ccc`,this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.noteBkgColor=this.noteBkgColor??`#FEF9C3`,this.noteTextColor=this.noteTextColor??`#28253D`,this.THEME_COLOR_LIMIT=12,this.fontFamily=`"Recursive Variable", arial, sans-serif`,this.fontSize=`14px`,this.nodeBorder=`#FFFFFF`,this.stateBorder=`#FFFFFF`,this.useGradient=!1,this.gradientStart=`#0042eb`,this.gradientStop=`#eb0042`,this.dropShadow=`url(#drop-shadow)`,this.nodeShadow=!0,this.archEdgeColor=`calculated`,this.archEdgeArrowColor=`calculated`,this.archEdgeWidth=`3`,this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth=`2px`,this.clusterBkg=`#1E1A2E`,this.clusterBorder=`#BDBCCC`,this.noteBorderColor=`#FACC15`,this.noteFontWeight=600,this.borderColorArray=[`#E879F9`,`#2DD4BF`,`#FB923C`,`#22D3EE`,`#4ADE80`,`#A78BFA`,`#F87171`,`#FACC15`,`#818CF8`,`#A3E635 `,`#38BDF8`,`#FB7185`],this.bkgColorArray=[],this.filterColor=`#FFFFFF`}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?`#eee`:`#FFFFFF`),this.secondaryColor=this.secondaryColor||M(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||M(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||L(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||L(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||L(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||L(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||`#fff5ad`,this.noteTextColor=this.noteTextColor||`#FFFFFF`,this.secondaryTextColor=this.secondaryTextColor||N(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||N(this.tertiaryColor),this.lineColor=this.lineColor||N(this.background),this.arrowheadColor=this.arrowheadColor||N(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?j(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=`#FFFFFF`,this.signalColor=`#FFFFFF`,this.labelBoxBorderColor=`#BDBCCC`,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||j(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||N(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.rootLabelColor=`#FFFFFF`,this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||`white`,this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||`#eeeeee`,this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||A(this.primaryColor,23),this.gridColor=this.gridColor||`lightgrey`,this.doneTaskBkgColor=this.doneTaskBkgColor||`lightgrey`,this.doneTaskBorderColor=this.doneTaskBorderColor||`grey`,this.critBorderColor=this.critBorderColor||`#ff8888`,this.critBkgColor=this.critBkgColor||`red`,this.todayLineColor=this.todayLineColor||`red`,this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||`#003163`,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||`#f0f0f0`,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||`#f4a8ff`,this.cScale1=this.cScale1||`#46ecd5`,this.cScale2=this.cScale2||`#ffb86a`,this.cScale3=this.cScale3||`#dab2ff`,this.cScale4=this.cScale4||`#7bf1a8`,this.cScale5=this.cScale5||`#c4b4ff`,this.cScale6=this.cScale6||`#ffa2a2`,this.cScale7=this.cScale7||`#ffdf20`,this.cScale8=this.cScale8||`#a3b3ff`,this.cScale9=this.cScale9||`#bbf451`,this.cScale10=this.cScale10||`#74d4ff`,this.cScale11=this.cScale11||`#ffa1ad`;for(let e=0;e{this[t]=e[t]}),this.updateColors(),t.forEach(t=>{this[t]=e[t]})}},Qt={base:{getThemeVariables:Mt},dark:{getThemeVariables:Pt},default:{getThemeVariables:It},forest:{getThemeVariables:Rt},neutral:{getThemeVariables:Bt},neo:{getThemeVariables:Ht},"neo-dark":{getThemeVariables:Wt},redux:{getThemeVariables:Kt},"redux-dark":{getThemeVariables:Jt},"redux-color":{getThemeVariables:Xt},"redux-dark-color":{getThemeVariables:s(e=>{let t=new Zt;return t.calculate(e),t},`getThemeVariables`)}},$t={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:null,nodeSpacing:50,rankSpacing:50,curve:`basis`,padding:15,defaultRenderer:`dagre-wrapper`,wrappingWidth:200,inheritDir:!1},swimlane:{useMaxWidth:!0,lineHops:`arc`,ignoreCrossLaneEdges:!0,optimizeRanksByCrossings:!0,automaticLaneOrdering:!1},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:`center`,mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:`"Open Sans", sans-serif`,actorFontWeight:400,noteFontSize:14,noteFontFamily:`"trebuchet ms", verdana, arial, sans-serif`,noteFontWeight:400,noteAlign:`center`,messageFontSize:16,messageFontFamily:`"trebuchet ms", verdana, arial, sans-serif`,messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:`%Y-%m-%d`,topAxis:!1,displayMode:``,weekday:`sunday`},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,maxLabelWidth:360,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:`center`,bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:`"Open Sans", sans-serif`,taskMargin:50,activationWidth:10,textPlacement:`fo`,actorColours:[`#8FBC8F`,`#7CFC00`,`#00FFFF`,`#20B2AA`,`#B0E0E6`,`#FFFFE0`],sectionFills:[`#191970`,`#8B008B`,`#4B0082`,`#2F4F4F`,`#800000`,`#8B4513`,`#00008B`],sectionColours:[`#fff`],titleColor:``,titleFontFamily:`"trebuchet ms", verdana, arial, sans-serif`,titleFontSize:`4ex`},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:`dagre-wrapper`,htmlLabels:!1,hideEmptyMembersBox:!1,hierarchicalNamespaces:!0},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:`20`,compositTitleSize:35,radius:5,defaultRenderer:`dagre-wrapper`},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:`TB`,minEntityWidth:100,minEntityHeight:75,entityPadding:15,nodeSpacing:140,rankSpacing:80,stroke:`gray`,fill:`honeydew`,fontSize:12},pie:{useMaxWidth:!0,textPosition:.75,donutHole:0,legendPosition:`right`,highlightSlice:``},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:`top`,yAxisPosition:`left`,quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showDataLabel:!1,showDataLabelOutsideBar:!1,showTitle:!0,showLegend:!0,legendFontSize:14,legendPadding:10,xAxis:{$ref:`#/$defs/XYChartAxisConfig`,showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2,labelRotation:0},yAxis:{$ref:`#/$defs/XYChartAxisConfig`,showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2,labelRotation:0},chartOrientation:`vertical`,plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:`#f9f9f9`,text_color:`#333`,rect_border_size:`0.5px`,rect_border_color:`#bbb`,rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200,layoutAlgorithm:`cose-bilkent`},ishikawa:{useMaxWidth:!0,diagramPadding:20},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:``},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:`center`,bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:`"Open Sans", sans-serif`,taskMargin:50,activationWidth:10,textPlacement:`fo`,actorColours:[`#8FBC8F`,`#7CFC00`,`#00FFFF`,`#20B2AA`,`#B0E0E6`,`#FFFFE0`],sectionFills:[`#191970`,`#8B008B`,`#4B0082`,`#2F4F4F`,`#800000`,`#8B4513`,`#00008B`],sectionColours:[`#fff`],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:`main`,mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:`"Open Sans", sans-serif`,personFontWeight:`normal`,external_personFontSize:14,external_personFontFamily:`"Open Sans", sans-serif`,external_personFontWeight:`normal`,systemFontSize:14,systemFontFamily:`"Open Sans", sans-serif`,systemFontWeight:`normal`,external_systemFontSize:14,external_systemFontFamily:`"Open Sans", sans-serif`,external_systemFontWeight:`normal`,system_dbFontSize:14,system_dbFontFamily:`"Open Sans", sans-serif`,system_dbFontWeight:`normal`,external_system_dbFontSize:14,external_system_dbFontFamily:`"Open Sans", sans-serif`,external_system_dbFontWeight:`normal`,system_queueFontSize:14,system_queueFontFamily:`"Open Sans", sans-serif`,system_queueFontWeight:`normal`,external_system_queueFontSize:14,external_system_queueFontFamily:`"Open Sans", sans-serif`,external_system_queueFontWeight:`normal`,boundaryFontSize:14,boundaryFontFamily:`"Open Sans", sans-serif`,boundaryFontWeight:`normal`,messageFontSize:12,messageFontFamily:`"Open Sans", sans-serif`,messageFontWeight:`normal`,containerFontSize:14,containerFontFamily:`"Open Sans", sans-serif`,containerFontWeight:`normal`,external_containerFontSize:14,external_containerFontFamily:`"Open Sans", sans-serif`,external_containerFontWeight:`normal`,container_dbFontSize:14,container_dbFontFamily:`"Open Sans", sans-serif`,container_dbFontWeight:`normal`,external_container_dbFontSize:14,external_container_dbFontFamily:`"Open Sans", sans-serif`,external_container_dbFontWeight:`normal`,container_queueFontSize:14,container_queueFontFamily:`"Open Sans", sans-serif`,container_queueFontWeight:`normal`,external_container_queueFontSize:14,external_container_queueFontFamily:`"Open Sans", sans-serif`,external_container_queueFontWeight:`normal`,componentFontSize:14,componentFontFamily:`"Open Sans", sans-serif`,componentFontWeight:`normal`,external_componentFontSize:14,external_componentFontFamily:`"Open Sans", sans-serif`,external_componentFontWeight:`normal`,component_dbFontSize:14,component_dbFontFamily:`"Open Sans", sans-serif`,component_dbFontWeight:`normal`,external_component_dbFontSize:14,external_component_dbFontFamily:`"Open Sans", sans-serif`,external_component_dbFontWeight:`normal`,component_queueFontSize:14,component_queueFontFamily:`"Open Sans", sans-serif`,component_queueFontWeight:`normal`,external_component_queueFontSize:14,external_component_queueFontFamily:`"Open Sans", sans-serif`,external_component_queueFontWeight:`normal`,wrap:!0,wrapPadding:10,person_bg_color:`#08427B`,person_border_color:`#073B6F`,external_person_bg_color:`#686868`,external_person_border_color:`#8A8A8A`,system_bg_color:`#1168BD`,system_border_color:`#3C7FC0`,system_db_bg_color:`#1168BD`,system_db_border_color:`#3C7FC0`,system_queue_bg_color:`#1168BD`,system_queue_border_color:`#3C7FC0`,external_system_bg_color:`#999999`,external_system_border_color:`#8A8A8A`,external_system_db_bg_color:`#999999`,external_system_db_border_color:`#8A8A8A`,external_system_queue_bg_color:`#999999`,external_system_queue_border_color:`#8A8A8A`,container_bg_color:`#438DD5`,container_border_color:`#3C7FC0`,container_db_bg_color:`#438DD5`,container_db_border_color:`#3C7FC0`,container_queue_bg_color:`#438DD5`,container_queue_border_color:`#3C7FC0`,external_container_bg_color:`#B3B3B3`,external_container_border_color:`#A6A6A6`,external_container_db_bg_color:`#B3B3B3`,external_container_db_border_color:`#A6A6A6`,external_container_queue_bg_color:`#B3B3B3`,external_container_queue_border_color:`#A6A6A6`,component_bg_color:`#85BBF0`,component_border_color:`#78A8D8`,component_db_bg_color:`#85BBF0`,component_db_border_color:`#78A8D8`,component_queue_bg_color:`#85BBF0`,component_queue_border_color:`#78A8D8`,external_component_bg_color:`#CCCCCC`,external_component_border_color:`#BFBFBF`,external_component_db_bg_color:`#CCCCCC`,external_component_db_border_color:`#BFBFBF`,external_component_queue_bg_color:`#CCCCCC`,external_component_queue_border_color:`#BFBFBF`},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:`gradient`,nodeAlignment:`justify`,showValues:!0,prefix:``,suffix:``,nodeWidth:10,nodePadding:12,labelStyle:`legacy`},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},treeView:{useMaxWidth:!0,rowIndent:10,paddingX:5,paddingY:5,lineThickness:1,showIcons:!1,defaultIconPack:``,filenameIcons:{},extensionIcons:{}},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16,randomize:!1,nodeSeparation:75,idealEdgeLengthMultiplier:1.5,edgeElasticity:.45,numIter:2500,seed:1},eventmodeling:{useMaxWidth:!0,padding:30,rowHeight:32},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},venn:{useMaxWidth:!0,width:800,height:450,padding:8,useDebugLayout:!1},cynefin:{useMaxWidth:!0,width:800,height:600,padding:40,showDomainDescriptions:!0,boundaryAmplitude:8,seed:0},theme:`default`,look:`classic`,handDrawnSeed:0,layout:`dagre`,maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:`"trebuchet ms", verdana, arial, sans-serif;`,logLevel:5,securityLevel:`strict`,startOnLoad:!0,arrowMarkerAbsolute:!1,secure:[`secure`,`securityLevel`,`startOnLoad`,`maxTextSize`,`suppressErrorRendering`,`maxEdges`],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1},en={...$t,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:`BRANDES_KOEPF`,nodePlacementAlignment:`NONE`,forceNodeModelOrder:!1,considerModelOrder:`NODES_AND_EDGES`,keepEntryNodeOnTop:!1},themeCSS:void 0,themeVariables:Qt.default.getThemeVariables(),sequence:{...$t.sequence,messageFont:s(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},`messageFont`),noteFont:s(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},`noteFont`),actorFont:s(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},`actorFont`)},class:{defaultRenderer:`dagre-wrapper`,hideEmptyMembersBox:!1,hierarchicalNamespaces:!0},gantt:{...$t.gantt,tickInterval:void 0,useWidth:void 0},c4:{...$t.c4,useWidth:void 0,personFont:s(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},`personFont`),flowchart:{...$t.flowchart,inheritDir:!1},external_personFont:s(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},`external_personFont`),systemFont:s(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},`systemFont`),external_systemFont:s(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},`external_systemFont`),system_dbFont:s(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},`system_dbFont`),external_system_dbFont:s(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},`external_system_dbFont`),system_queueFont:s(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},`system_queueFont`),external_system_queueFont:s(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},`external_system_queueFont`),containerFont:s(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},`containerFont`),external_containerFont:s(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},`external_containerFont`),container_dbFont:s(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},`container_dbFont`),external_container_dbFont:s(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},`external_container_dbFont`),container_queueFont:s(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},`container_queueFont`),external_container_queueFont:s(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},`external_container_queueFont`),componentFont:s(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},`componentFont`),external_componentFont:s(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},`external_componentFont`),component_dbFont:s(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},`component_dbFont`),external_component_dbFont:s(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},`external_component_dbFont`),component_queueFont:s(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},`component_queueFont`),external_component_queueFont:s(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},`external_component_queueFont`),boundaryFont:s(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},`boundaryFont`),messageFont:s(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},`messageFont`)},pie:{...$t.pie,useWidth:984},xyChart:{...$t.xyChart,useWidth:void 0},requirement:{...$t.requirement,useWidth:void 0},packet:{...$t.packet},eventmodeling:{...$t.eventmodeling},treeView:{...$t.treeView,useWidth:void 0},radar:{...$t.radar},railroad:{...$t.railroad,fontSize:void 0,fontFamily:void 0,terminalFill:void 0,terminalStroke:void 0,terminalTextColor:void 0,nonTerminalFill:void 0,nonTerminalStroke:void 0,nonTerminalTextColor:void 0,lineColor:void 0,markerFill:void 0,commentFill:void 0,commentStroke:void 0,commentTextColor:void 0,specialFill:void 0,specialStroke:void 0,ruleNameColor:void 0},ishikawa:{...$t.ishikawa},sankey:{...$t.sankey,nodeColors:void 0},treemap:{useMaxWidth:!0,padding:10,diagramPadding:8,showValues:!0,nodeWidth:100,nodeHeight:40,borderWidth:1,valueFontSize:12,labelFontSize:14,valueFormat:`,`},venn:{...$t.venn},cynefin:{...$t.cynefin}},tn=s((e,t=``)=>Object.keys(e).reduce((n,r)=>Array.isArray(e[r])?n:typeof e[r]==`object`&&e[r]!==null?[...n,t+r,...tn(e[r],``)]:[...n,t+r],[]),`keyify`),nn=new Set(tn(en,``)),rn=en,an={nodeColors:/^#[\da-f]{3,8}$|^rgb\([\d\s%,.]+\)$|^hsl\([\d\s%,.]+\)$|^[a-z]+$/i,filenameIcons:/^[\w-]+(?::[\w-]+)?$/,extensionIcons:/^[\w-]+(?::[\w-]+)?$/},on=s((e,t)=>{for(let n of Object.keys(e)){let r=e[n];(n.startsWith(`__`)||n.includes(`proto`)||n.includes(`constr`)||typeof r!=`string`||!t.test(r))&&(f.debug(`sanitize deleting dictionary entry:`,n,r),delete e[n])}},`sanitizeDictionaryConfig`),sn=s(e=>{if(f.debug(`sanitizeDirective called with`,e),!(typeof e!=`object`||!e)){if(Array.isArray(e)){e.forEach(e=>sn(e));return}for(let t of Object.keys(e)){if(f.debug(`Checking key`,t),t.startsWith(`__`)||t.includes(`proto`)||t.includes(`constr`)||!nn.has(t)||e[t]==null){f.debug(`sanitize deleting key: `,t),delete e[t];continue}if(typeof e[t]==`object`){let n=an[t];n?on(e[t],n):(f.debug(`sanitizing object`,t),sn(e[t]));continue}for(let n of[`themeCSS`,`fontFamily`,`altFontFamily`])t.includes(n)&&(f.debug(`sanitizing css option`,t),e[t]=cn(e[t]))}if(e.themeVariables)for(let t of Object.keys(e.themeVariables)){let n=e.themeVariables[t];n?.match&&!n.match(/^[\d "#%(),.;A-Za-z]+$/)&&(e.themeVariables[t]=``)}f.debug(`After sanitization`,e)}},`sanitizeDirective`),cn=s(e=>{let t=0,n=0;for(let r of e){if(t!(e===!1||[`false`,`null`,`0`].includes(String(e).trim().toLowerCase())),`evaluate`),un=Ot({},ln),dn,fn=[],pn=Ot({},ln),mn=s((e,t)=>{let n=Ot({},e),r={};for(let e of t)bn(e),r=Ot(r,e);if(n=Ot(n,r),r.theme&&r.theme in Qt){let e=Ot(Ot({},dn).themeVariables||{},r.themeVariables);n.theme&&n.theme in Qt&&(n.themeVariables=Qt[n.theme].getThemeVariables(e))}return pn=n,En(pn),pn},`updateCurrentConfig`),hn=s(e=>(un=Ot({},ln),un=Ot(un,e),e.theme&&Qt[e.theme]&&(un.themeVariables=Qt[e.theme].getThemeVariables(e.themeVariables)),mn(un,fn),un),`setSiteConfig`),gn=s(e=>{dn=Ot({},e)},`saveConfigFromInitialize`),_n=s(e=>(un=Ot(un,e),mn(un,fn),un),`updateSiteConfig`),vn=s(()=>Ot({},un),`getSiteConfig`),yn=s(e=>(mn(pn,[e]),z()),`setConfig`),z=s(()=>Ot({},pn),`getConfig`),bn=s(e=>{e&&([`secure`,...un.secure??[]].forEach(t=>{Object.hasOwn(e,t)&&(f.debug(`Denied attempt to modify a secure key ${t}`,e[t]),delete e[t])}),Object.keys(e).forEach(t=>{t.startsWith(`__`)&&delete e[t]}),Object.keys(e).forEach(t=>{typeof e[t]==`string`&&(e[t].includes(`<`)||e[t].includes(`>`)||e[t].includes(`url(data:`))&&delete e[t],typeof e[t]==`object`&&bn(e[t])}))},`sanitize`),xn=s(e=>{sn(e),e.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables={...e.themeVariables,fontFamily:e.fontFamily}),fn.push(e),mn(un,fn)},`addDirective`),Sn=s((e=un)=>{fn=[],mn(e,fn)},`reset`),Cn={LAZY_LOAD_DEPRECATED:`The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.`,FLOWCHART_HTML_LABELS_DEPRECATED:`flowchart.htmlLabels is deprecated. Please use global htmlLabels instead.`},wn={},Tn=s(e=>{wn[e]||(f.warn(Cn[e]),wn[e]=!0)},`issueWarning`),En=s(e=>{e&&(e.lazyLoadedDiagrams||e.loadExternalDiagramsAtStartup)&&Tn(`LAZY_LOAD_DEPRECATED`)},`checkConfig`),Dn=s(()=>{let e={};dn&&(e=Ot(e,dn));for(let t of fn)e=Ot(e,t);return e},`getUserDefinedConfig`),On=s(e=>(e.flowchart?.htmlLabels!=null&&Tn(`FLOWCHART_HTML_LABELS_DEPRECATED`),R(e.htmlLabels??e.flowchart?.htmlLabels??!0)),`getEffectiveHtmlLabels`),kn=/^([^\S\n\r]*)-{3}\s*[\n\r](.*?)[\n\r]\1-{3}\s*[\n\r]+/s,An=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,jn=/\s*%%.*\n/gm,Mn=class extends Error{static{s(this,`UnknownDiagramError`)}constructor(e){super(e),this.name=`UnknownDiagramError`}},Nn={},Pn=s(function(e,t){e=e.replace(kn,``).replace(An,``).replace(jn,` -`);for(let[n,{detector:r}]of Object.entries(Nn))if(r(e,t))return n;throw new Mn(`No diagram type detected matching given configuration for text: ${e}`)},`detectType`),Fn=s((...e)=>{for(let{id:t,detector:n,loader:r}of e)In(t,n,r)},`registerLazyLoadedDiagrams`),In=s((e,t,n)=>{Nn[e]&&f.warn(`Detector with key ${e} already exists. Overwriting.`),Nn[e]={detector:t,loader:n},f.debug(`Detector with key ${e} added${n?` with loader`:``}`)},`addDetector`),Ln=s(e=>Nn[e].loader,`getDiagramLoader`),Rn=//gi,zn=s(e=>e?Yn(e).replace(/\\n/g,`#br#`).split(`#br#`):[``],`getRows`),Bn=(()=>{let e=!1;return()=>{e||=(Vn(),!0)}})();function Vn(){let e=`data-temp-href-target`;Et.addHook(`beforeSanitizeAttributes`,t=>{t.tagName===`A`&&t.hasAttribute(`target`)&&t.setAttribute(e,t.getAttribute(`target`)??``)}),Et.addHook(`afterSanitizeAttributes`,t=>{t.tagName===`A`&&t.hasAttribute(e)&&(t.setAttribute(`target`,t.getAttribute(e)??``),t.removeAttribute(e),t.getAttribute(`target`)===`_blank`&&t.setAttribute(`rel`,`noopener`))})}s(Vn,`setupDompurifyHooks`);var Hn=s(e=>(Bn(),Et.sanitize(e)),`removeScript`),Un=s((e,t)=>{if(On(t)){let n=t.securityLevel;n===`antiscript`||n===`strict`||n===`sandbox`?e=Hn(e):n!==`loose`&&(e=Yn(e),e=e.replace(//g,`>`),e=e.replace(/=/g,`=`),e=Jn(e))}return e},`sanitizeMore`),Wn=s((e,t)=>e&&(e=t.dompurifyConfig?Et.sanitize(Un(e,t),t.dompurifyConfig).toString():Et.sanitize(Un(e,t),{FORBID_TAGS:[`style`]}).toString(),e),`sanitizeText`),Gn=s((e,t)=>typeof e==`string`?Wn(e,t):e.flat().map(e=>Wn(e,t)),`sanitizeTextOrArray`),Kn=s(e=>Rn.test(e),`hasBreaks`),qn=s(e=>e.split(Rn),`splitBreaks`),Jn=s(e=>e.replace(/#br#/g,`
`),`placeholderToBreak`),Yn=s(e=>e.replace(Rn,`#br#`),`breakToPlaceholder`),Xn=s(e=>{let t=``;return e&&(t=window.location.protocol+`//`+window.location.host+window.location.pathname+window.location.search,t=CSS.escape(t)),t},`getUrl`),Zn=s(function(...e){let t=e.filter(e=>!isNaN(e));return Math.max(...t)},`getMax`),Qn=s(function(...e){let t=e.filter(e=>!isNaN(e));return Math.min(...t)},`getMin`),$n=s(function(e){let t=e.split(/(,)/),n=[];for(let e=0;e0&&e+1Math.max(0,e.split(t).length-1),`countOccurrence`),tr=s((e,t)=>{let n=er(e,`~`),r=er(t,`~`);return n===1&&r===1},`shouldCombineSets`),nr=s(e=>{let t=er(e,`~`),n=!1;if(t<=1)return e;t%2!=0&&e.startsWith(`~`)&&(e=e.substring(1),n=!0);let r=[...e],i=r.indexOf(`~`),a=r.lastIndexOf(`~`);for(;i!==-1&&a!==-1&&i!==a;)r[i]=`<`,r[a]=`>`,i=r.indexOf(`~`),a=r.lastIndexOf(`~`);return n&&r.unshift(`~`),r.join(``)},`processSet`),rr=s(()=>window.MathMLElement!==void 0,`isMathMLSupported`),ir=/\$\$(.*?)\$\$/g,ar=s(e=>(e.match(ir)?.length??0)>0,`hasKatex`),or=s(async(e,t)=>{let n=document.createElement(`div`);n.innerHTML=await cr(e,t),n.id=`katex-temp`,n.style.visibility=`hidden`,n.style.position=`absolute`,n.style.top=`0`,document.querySelector(`body`)?.insertAdjacentElement(`beforeend`,n);let r={width:n.clientWidth,height:n.clientHeight};return n.remove(),r},`calculateMathMLDimensions`),sr=s(async(e,t)=>{if(!ar(e))return e;if(!(rr()||t.legacyMathML||t.forceLegacyMathML))return e.replace(ir,`MathML is unsupported in this environment.`);{let{default:n}=await r(async()=>{let{default:e}=await import(`./katex-vFWytM5c.js`).then(e=>e.n);return{default:e}},__vite__mapDeps([0,1,2]),import.meta.url),i=t.forceLegacyMathML||!rr()&&t.legacyMathML?`htmlAndMathml`:`mathml`;return e.split(Rn).map(e=>ar(e)?`
${e}
`:`
${e}
`).join(``).replace(ir,(e,t)=>n.renderToString(t,{throwOnError:!0,displayMode:!0,output:i}).replace(/\n/g,` `).replace(//g,``))}return e.replace(ir,`Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library.`)},`renderKatexUnsanitized`),cr=s(async(e,t)=>Wn(await sr(e,t),t),`renderKatexSanitized`),lr={getRows:zn,sanitizeText:Wn,sanitizeTextOrArray:Gn,hasBreaks:Kn,splitBreaks:qn,lineBreakRegex:Rn,removeScript:Hn,getUrl:Xn,evaluate:R,getMax:Zn,getMin:Qn},ur=s(function(e,t){for(let n of t)e.attr(n[0],n[1])},`d3Attrs`),dr=s(function(e,t,n){let r=new Map;return n?(r.set(`width`,`100%`),r.set(`style`,`max-width: ${t}px;`)):(r.set(`height`,e),r.set(`width`,t)),r},`calculateSvgSizeAttrs`),fr=s(function(e,t,n,r){ur(e,dr(t,n,r))},`configureSvgSize`),pr=s(function(e,t,n,r){let i=t.node().getBBox(),a=i.width,o=i.height;f.info(`SVG bounds: ${a}x${o}`,i);let s=0,c=0;f.info(`Graph bounds: ${s}x${c}`,e),s=a+n*2,c=o+n*2,f.info(`Calculated bounds: ${s}x${c}`),fr(t,c,s,r);let l=`${i.x-n} ${i.y-n} ${i.width+2*n} ${i.height+2*n}`;t.attr(`viewBox`,l)},`setupGraphViewbox`),mr={};function hr(e){return[...e.cssRules].map(e=>e.cssText).join(` +`);for(let[n,{detector:r}]of Object.entries(Nn))if(r(e,t))return n;throw new Mn(`No diagram type detected matching given configuration for text: ${e}`)},`detectType`),Fn=s((...e)=>{for(let{id:t,detector:n,loader:r}of e)In(t,n,r)},`registerLazyLoadedDiagrams`),In=s((e,t,n)=>{Nn[e]&&f.warn(`Detector with key ${e} already exists. Overwriting.`),Nn[e]={detector:t,loader:n},f.debug(`Detector with key ${e} added${n?` with loader`:``}`)},`addDetector`),Ln=s(e=>Nn[e].loader,`getDiagramLoader`),Rn=//gi,zn=s(e=>e?Yn(e).replace(/\\n/g,`#br#`).split(`#br#`):[``],`getRows`),Bn=(()=>{let e=!1;return()=>{e||=(Vn(),!0)}})();function Vn(){let e=`data-temp-href-target`;Et.addHook(`beforeSanitizeAttributes`,t=>{t.tagName===`A`&&t.hasAttribute(`target`)&&t.setAttribute(e,t.getAttribute(`target`)??``)}),Et.addHook(`afterSanitizeAttributes`,t=>{t.tagName===`A`&&t.hasAttribute(e)&&(t.setAttribute(`target`,t.getAttribute(e)??``),t.removeAttribute(e),t.getAttribute(`target`)===`_blank`&&t.setAttribute(`rel`,`noopener`))})}s(Vn,`setupDompurifyHooks`);var Hn=s(e=>(Bn(),Et.sanitize(e)),`removeScript`),Un=s((e,t)=>{if(On(t)){let n=t.securityLevel;n===`antiscript`||n===`strict`||n===`sandbox`?e=Hn(e):n!==`loose`&&(e=Yn(e),e=e.replace(//g,`>`),e=e.replace(/=/g,`=`),e=Jn(e))}return e},`sanitizeMore`),Wn=s((e,t)=>e&&(e=t.dompurifyConfig?Et.sanitize(Un(e,t),t.dompurifyConfig).toString():Et.sanitize(Un(e,t),{FORBID_TAGS:[`style`]}).toString(),e),`sanitizeText`),Gn=s((e,t)=>typeof e==`string`?Wn(e,t):e.flat().map(e=>Wn(e,t)),`sanitizeTextOrArray`),Kn=s(e=>Rn.test(e),`hasBreaks`),qn=s(e=>e.split(Rn),`splitBreaks`),Jn=s(e=>e.replace(/#br#/g,`
`),`placeholderToBreak`),Yn=s(e=>e.replace(Rn,`#br#`),`breakToPlaceholder`),Xn=s(e=>{let t=``;return e&&(t=window.location.protocol+`//`+window.location.host+window.location.pathname+window.location.search,t=CSS.escape(t)),t},`getUrl`),Zn=s(function(...e){let t=e.filter(e=>!isNaN(e));return Math.max(...t)},`getMax`),Qn=s(function(...e){let t=e.filter(e=>!isNaN(e));return Math.min(...t)},`getMin`),$n=s(function(e){let t=e.split(/(,)/),n=[];for(let e=0;e0&&e+1Math.max(0,e.split(t).length-1),`countOccurrence`),tr=s((e,t)=>{let n=er(e,`~`),r=er(t,`~`);return n===1&&r===1},`shouldCombineSets`),nr=s(e=>{let t=er(e,`~`),n=!1;if(t<=1)return e;t%2!=0&&e.startsWith(`~`)&&(e=e.substring(1),n=!0);let r=[...e],i=r.indexOf(`~`),a=r.lastIndexOf(`~`);for(;i!==-1&&a!==-1&&i!==a;)r[i]=`<`,r[a]=`>`,i=r.indexOf(`~`),a=r.lastIndexOf(`~`);return n&&r.unshift(`~`),r.join(``)},`processSet`),rr=s(()=>window.MathMLElement!==void 0,`isMathMLSupported`),ir=/\$\$(.*?)\$\$/g,ar=s(e=>(e.match(ir)?.length??0)>0,`hasKatex`),or=s(async(e,t)=>{let n=document.createElement(`div`);n.innerHTML=await cr(e,t),n.id=`katex-temp`,n.style.visibility=`hidden`,n.style.position=`absolute`,n.style.top=`0`,document.querySelector(`body`)?.insertAdjacentElement(`beforeend`,n);let r={width:n.clientWidth,height:n.clientHeight};return n.remove(),r},`calculateMathMLDimensions`),sr=s(async(e,t)=>{if(!ar(e))return e;if(!(rr()||t.legacyMathML||t.forceLegacyMathML))return e.replace(ir,`MathML is unsupported in this environment.`);{let{default:n}=await r(async()=>{let{default:e}=await import(`./katex-DCJHF0vD.js`).then(e=>e.n);return{default:e}},__vite__mapDeps([0,1,2]),import.meta.url),i=t.forceLegacyMathML||!rr()&&t.legacyMathML?`htmlAndMathml`:`mathml`;return e.split(Rn).map(e=>ar(e)?`
${e}
`:`
${e}
`).join(``).replace(ir,(e,t)=>n.renderToString(t,{throwOnError:!0,displayMode:!0,output:i}).replace(/\n/g,` `).replace(//g,``))}return e.replace(ir,`Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library.`)},`renderKatexUnsanitized`),cr=s(async(e,t)=>Wn(await sr(e,t),t),`renderKatexSanitized`),lr={getRows:zn,sanitizeText:Wn,sanitizeTextOrArray:Gn,hasBreaks:Kn,splitBreaks:qn,lineBreakRegex:Rn,removeScript:Hn,getUrl:Xn,evaluate:R,getMax:Zn,getMin:Qn},ur=s(function(e,t){for(let n of t)e.attr(n[0],n[1])},`d3Attrs`),dr=s(function(e,t,n){let r=new Map;return n?(r.set(`width`,`100%`),r.set(`style`,`max-width: ${t}px;`)):(r.set(`height`,e),r.set(`width`,t)),r},`calculateSvgSizeAttrs`),fr=s(function(e,t,n,r){ur(e,dr(t,n,r))},`configureSvgSize`),pr=s(function(e,t,n,r){let i=t.node().getBBox(),a=i.width,o=i.height;f.info(`SVG bounds: ${a}x${o}`,i);let s=0,c=0;f.info(`Graph bounds: ${s}x${c}`,e),s=a+n*2,c=o+n*2,f.info(`Calculated bounds: ${s}x${c}`),fr(t,c,s,r);let l=`${i.x-n} ${i.y-n} ${i.width+2*n} ${i.height+2*n}`;t.attr(`viewBox`,l)},`setupGraphViewbox`),mr={};function hr(e){return[...e.cssRules].map(e=>e.cssText).join(` `)}s(hr,`cssStyleSheetToString`);var gr=s((e,t,n,r)=>{let i=``;return e in mr&&mr[e]?i=mr[e]({...n,svgId:r}):f.warn(`No theme found for ${e}`),`& { font-family: ${n.fontFamily}; font-size: ${n.fontSize}; @@ -267,7 +267,7 @@ ${i.join(` L0,20`)},`requirement_arrow`),requirement_contains:s((e,t,n)=>{let r=e.append(`defs`).append(`marker`).attr(`id`,n+`_`+t+`-requirement_containsStart`).attr(`refX`,0).attr(`refY`,10).attr(`markerWidth`,20).attr(`markerHeight`,20).attr(`orient`,`auto`).append(`g`);r.append(`circle`).attr(`cx`,10).attr(`cy`,10).attr(`r`,9).attr(`fill`,`none`),r.append(`line`).attr(`x1`,1).attr(`x2`,19).attr(`y1`,10).attr(`y2`,10),r.append(`line`).attr(`y1`,1).attr(`y2`,19).attr(`x1`,10).attr(`x2`,10)},`requirement_contains`),requirement_arrow_neo:s((e,t,n)=>{let{themeVariables:r}=z(),{strokeWidth:i}=r;e.append(`defs`).append(`marker`).attr(`id`,n+`_`+t+`-requirement_arrowEnd`).attr(`refX`,20).attr(`refY`,10).attr(`markerWidth`,20).attr(`markerHeight`,20).attr(`orient`,`auto`).attr(`markerUnits`,`userSpaceOnUse`).attr(`stroke-width`,`${i}`).attr(`viewBox`,`0 0 25 20`).append(`path`).attr(`d`,`M0,0 L20,10 M20,10 - L0,20`).attr(`stroke-linejoin`,`miter`)},`requirement_arrow_neo`),requirement_contains_neo:s((e,t,n)=>{let{themeVariables:r}=z(),{strokeWidth:i}=r,a=e.append(`defs`).append(`marker`).attr(`id`,n+`_`+t+`-requirement_containsStart`).attr(`refX`,0).attr(`refY`,10).attr(`markerWidth`,20).attr(`markerHeight`,20).attr(`orient`,`auto`).attr(`markerUnits`,`userSpaceOnUse`).append(`g`);a.append(`circle`).attr(`cx`,10).attr(`cy`,10).attr(`r`,9).attr(`fill`,`none`),a.append(`line`).attr(`x1`,1).attr(`x2`,19).attr(`y1`,10).attr(`y2`,10),a.append(`line`).attr(`y1`,1).attr(`y2`,19).attr(`x1`,10).attr(`x2`,10),a.selectAll(`*`).attr(`stroke-width`,`${i}`)},`requirement_contains_neo`)},Cy=xy,wy=typeof global==`object`&&global&&global.Object===Object&&global,Ty=typeof self==`object`&&self&&self.Object===Object&&self,Ey=wy||Ty||Function(`return this`)(),Dy=Ey.Symbol,Oy=Object.prototype,ky=Oy.hasOwnProperty,Ay=Oy.toString,jy=Dy?Dy.toStringTag:void 0;function My(e){var t=ky.call(e,jy),n=e[jy];try{e[jy]=void 0;var r=!0}catch{}var i=Ay.call(e);return r&&(t?e[jy]=n:delete e[jy]),i}var Ny=Object.prototype.toString;function Py(e){return Ny.call(e)}var Fy=`[object Null]`,Iy=`[object Undefined]`,Ly=Dy?Dy.toStringTag:void 0;function Ry(e){return e==null?e===void 0?Iy:Fy:Ly&&Ly in Object(e)?My(e):Py(e)}function zy(e){return typeof e==`object`&&!!e}var By=`[object Symbol]`;function Vy(e){return typeof e==`symbol`||zy(e)&&Ry(e)==By}function Hy(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n0){if(++t>=yb)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Cb(e){return function(){return e}}var wb=function(){try{var e=hb(Object,`defineProperty`);return e({},``,{}),e}catch{}}(),Tb=Sb(wb?function(e,t){return wb(e,`toString`,{configurable:!0,enumerable:!1,value:Cb(t),writable:!0})}:Yy);function Eb(e,t){for(var n=-1,r=e==null?0:e.length;++n-1}var Mb=9007199254740991,Nb=/^(?:0|[1-9]\d*)$/;function Pb(e,t){var n=typeof e;return t??=Mb,!!t&&(n==`number`||n!=`symbol`&&Nb.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=zb}function Vb(e){return e!=null&&Bb(e.length)&&!eb(e)}var Hb=Object.prototype;function Ub(e){var t=e&&e.constructor;return e===(typeof t==`function`&&t.prototype||Hb)}function Wb(e,t){for(var n=-1,r=Array(e);++n-1}function cS(e,t){var n=this.__data__,r=rS(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function lS(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t0&&n(s)?t>1?FS(s,t-1,n,r,i):MS(i,s):r||(i[i.length]=s)}return i}function IS(e,t,n,r){var i=-1,a=e==null?0:e.length;for(r&&a&&(n=e[++i]);++is))return!1;var l=a.get(e),u=a.get(t);if(l&&u)return l==t&&u==e;var d=-1,f=!0,p=n&xC?new _C:void 0;for(a.set(e,t),a.set(t,e);++d=Fw){var l=t?null:Pw(e);if(l)return wC(l);o=!1,i=yC,c=new _C}else c=t?[]:s;outer:for(;++r1?r.setNode(e,t):r.setNode(e)}),this}setNode(e,t){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=t),this):(this._nodes[e]=arguments.length>1?t:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=zw,this._children[e]={},this._children[zw][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return Object.prototype.hasOwnProperty.call(this._nodes,e)}removeNode(e){if(Object.prototype.hasOwnProperty.call(this._nodes,e)){var t=e=>this.removeEdge(this._edgeObjs[e]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],Sw(this.children(e),e=>{this.setParent(e)}),delete this._children[e]),Sw(Vx(this._in[e]),t),delete this._in[e],delete this._preds[e],Sw(Vx(this._out[e]),t),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,t){if(!this._isCompound)throw Error(`Cannot set parent in a non-compound graph`);if(jw(t))t=zw;else{t+=``;for(var n=t;!jw(n);n=this.parent(n))if(n===e)throw Error(`Setting `+t+` as parent of `+e+` would create a cycle`);this.setNode(t)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=t,this._children[t][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var t=this._parent[e];if(t!==zw)return t}}children(e){if(jw(e)&&(e=zw),this._isCompound){var t=this._children[e];if(t)return Vx(t)}else if(e===zw)return this.nodes();else if(this.hasNode(e))return[]}predecessors(e){var t=this._preds[e];if(t)return Vx(t)}successors(e){var t=this._sucs[e];if(t)return Vx(t)}neighbors(e){var t=this.predecessors(e);if(t)return Lw(t,this.successors(e))}isLeaf(e){return(this.isDirected()?this.successors(e):this.neighbors(e)).length===0}filterNodes(e){var t=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});t.setGraph(this.graph());var n=this;Sw(this._nodes,function(n,r){e(r)&&t.setNode(r,n)}),Sw(this._edgeObjs,function(e){t.hasNode(e.v)&&t.hasNode(e.w)&&t.setEdge(e,n.edge(e))});var r={};function i(e){var a=n.parent(e);return a===void 0||t.hasNode(a)?(r[e]=a,a):a in r?r[a]:i(a)}return this._isCompound&&Sw(t.nodes(),function(e){t.setParent(e,i(e))}),t}setDefaultEdgeLabel(e){return eb(e)||(e=Cb(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return Ew(this._edgeObjs)}setPath(e,t){var n=this,r=arguments;return Nw(e,function(e,i){return r.length>1?n.setEdge(e,i,t):n.setEdge(e,i),i}),this}setEdge(){var e,t,n,r,i=!1,a=arguments[0];typeof a==`object`&&a&&`v`in a?(e=a.v,t=a.w,n=a.name,arguments.length===2&&(r=arguments[1],i=!0)):(e=a,t=arguments[1],n=arguments[3],arguments.length>2&&(r=arguments[2],i=!0)),e=``+e,t=``+t,jw(n)||(n=``+n);var o=Ww(this._isDirected,e,t,n);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,o))return i&&(this._edgeLabels[o]=r),this;if(!jw(n)&&!this._isMultigraph)throw Error(`Cannot set a named edge when isMultigraph = false`);this.setNode(e),this.setNode(t),this._edgeLabels[o]=i?r:this._defaultEdgeLabelFn(e,t,n);var s=Gw(this._isDirected,e,t,n);return e=s.v,t=s.w,Object.freeze(s),this._edgeObjs[o]=s,Hw(this._preds[t],e),Hw(this._sucs[e],t),this._in[t][o]=s,this._out[e][o]=s,this._edgeCount++,this}edge(e,t,n){var r=arguments.length===1?Kw(this._isDirected,arguments[0]):Ww(this._isDirected,e,t,n);return this._edgeLabels[r]}hasEdge(e,t,n){var r=arguments.length===1?Kw(this._isDirected,arguments[0]):Ww(this._isDirected,e,t,n);return Object.prototype.hasOwnProperty.call(this._edgeLabels,r)}removeEdge(e,t,n){var r=arguments.length===1?Kw(this._isDirected,arguments[0]):Ww(this._isDirected,e,t,n),i=this._edgeObjs[r];return i&&(e=i.v,t=i.w,delete this._edgeLabels[r],delete this._edgeObjs[r],Uw(this._preds[t],e),Uw(this._sucs[e],t),delete this._in[t][r],delete this._out[e][r],this._edgeCount--),this}inEdges(e,t){var n=this._in[e];if(n){var r=Ew(n);return t?ww(r,function(e){return e.v===t}):r}}outEdges(e,t){var n=this._out[e];if(n){var r=Ew(n);return t?ww(r,function(e){return e.w===t}):r}}nodeEdges(e,t){var n=this.inEdges(e,t);if(n)return n.concat(this.outEdges(e,t))}};Vw.prototype._nodeCount=0,Vw.prototype._edgeCount=0;function Hw(e,t){e[t]?e[t]++:e[t]=1}function Uw(e,t){--e[t]||delete e[t]}function Ww(e,t,n,r){var i=``+t,a=``+n;if(!e&&i>a){var o=i;i=a,a=o}return i+Bw+a+Bw+(jw(r)?Rw:r)}function Gw(e,t,n,r){var i=``+t,a=``+n;if(!e&&i>a){var o=i;i=a,a=o}var s={v:i,w:a};return r&&(s.name=r),s}function Kw(e,t){return Ww(e,t.v,t.w,t.name)}var qw=s(async(e,t)=>{let n=B(),{themeVariables:r,handDrawnSeed:i}=n,{clusterBkg:a,clusterBorder:o}=r,s=o,{labelStyles:c,nodeStyles:l,borderStyles:u,backgroundStyles:d}=W(t),p=e.insert(`g`).attr(`class`,`cluster swimlane `+(t.cssClasses||``)).attr(`id`,t.id).attr(`data-id`,t.id).attr(`data-et`,`cluster`).attr(`data-look`,t.look),m=R(n.flowchart.htmlLabels),h=t.direction===`LR`,g=p.insert(`g`).attr(`class`,`cluster-label swimlane-label`),_=await Lm(g,t.label,{style:t.labelStyle,useHtmlLabels:m,isNode:!0,width:t.width}),v=_.getBBox();if(m){let e=_.children[0],t=V(_);v=e.getBoundingClientRect(),t.attr(`width`,v.width),t.attr(`height`,v.height)}let y=t.padding??0,b=t.width<=v.width+y?v.width+y:t.width;t.width<=v.width+y?t.diff=(b-t.width)/2-y:t.diff=-y;let x=t.height,S=t.y-x/2,C=t.y+x/2,w=t.x-b/2,T=t.swimlaneContentTop===void 0?S+x/3:t.swimlaneContentTop,E=h?4:0,D=v.height+2*E,O,ee;if(h){let e=Math.max(D,v.height+2*E),n=w+e,r=Math.max(0,b-e);if(t.look===`handDrawn`){let o=q.svg(p),c=G(t,{roughness:.7,fill:a,stroke:s,fillWeight:3,seed:i}),l=G(t,{roughness:.7,fill:`none`,stroke:s,seed:i}),f=o.rectangle(w,S,e,x,c);O=p.insert(()=>f,`:first-child`);let m=o.rectangle(n,S,r,x,l);ee=p.insert(()=>m,`:first-child`),O.select(`path:nth-child(2)`).attr(`style`,u.join(`;`)),O.select(`path`).attr(`style`,d.join(`;`).replace(`fill`,`stroke`))}else O=p.insert(`rect`,`:first-child`),ee=p.insert(`rect`,`:first-child`),O.attr(`class`,`swimlane-title`).attr(`style`,l).attr(`x`,w).attr(`y`,S).attr(`width`,e).attr(`height`,x).attr(`fill`,a).attr(`stroke`,s),ee.attr(`class`,`swimlane-body`).attr(`style`,l).attr(`x`,n).attr(`y`,S).attr(`width`,r).attr(`height`,x).attr(`fill`,`none`).attr(`stroke`,s);let o=w+e/2,c=t.y;g.attr(`transform`,`translate(${o}, ${c}) rotate(-90) translate(${-v.width/2}, ${-v.height/2})`)}else{let e=Math.max(0,T-S),n=Math.min(D,e),r=S+n,o=Math.max(0,C-r),c=t.x-b/2;if(t.look===`handDrawn`){let e=q.svg(p),l=G(t,{roughness:.7,fill:a,stroke:s,fillWeight:3,seed:i}),f=G(t,{roughness:.7,fill:`none`,stroke:s,seed:i}),m=e.rectangle(c,S,b,n,l);O=p.insert(()=>m,`:first-child`);let h=e.rectangle(c,r,b,o,f);ee=p.insert(()=>h,`:first-child`),O.select(`path:nth-child(2)`).attr(`style`,u.join(`;`)),O.select(`path`).attr(`style`,d.join(`;`).replace(`fill`,`stroke`))}else O=p.insert(`rect`,`:first-child`),ee=p.insert(`rect`,`:first-child`),O.attr(`class`,`swimlane-title`).attr(`style`,l).attr(`x`,c).attr(`y`,S).attr(`width`,b).attr(`height`,n).attr(`fill`,a).attr(`stroke`,s),ee.attr(`class`,`swimlane-body`).attr(`style`,l).attr(`x`,c).attr(`y`,r).attr(`width`,b).attr(`height`,o).attr(`fill`,`none`).attr(`stroke`,s);let f=t.x-v.width/2,m=S+(n-v.height)/2;g.attr(`transform`,`translate(${f}, ${m})`)}if(f.trace(`Swimlane data `,t,JSON.stringify(t)),c){let e=g.select(`span`);e&&e.attr(`style`,c)}return t.offsetX=0,t.width=b,t.height=x,t.offsetY=v.height-y/2,t.intersect=function(e){return ag(t,e)},{cluster:p,labelBBox:v}},`swimlane`),Jw=s(async(e,t)=>{f.info(`Creating subgraph rect for `,t.id,t);let n=B(),{themeVariables:r,handDrawnSeed:i}=n,{clusterBkg:a,clusterBorder:o}=r,{labelStyles:s,nodeStyles:c,borderStyles:l,backgroundStyles:u}=W(t),d=e.insert(`g`).attr(`class`,`cluster `+t.cssClasses).attr(`id`,t.domId).attr(`data-look`,t.look),p=On(n),m=d.insert(`g`).attr(`class`,`cluster-label `),h;h=t.labelType===`markdown`?await Lm(m,t.label,{style:t.labelStyle,useHtmlLabels:p,isNode:!0,width:t.width}):await sg(m,t.label,t.labelStyle||``,!1,!0);let g=h.getBBox();if(On(n)){let e=h.children[0],t=V(h);g=e.getBoundingClientRect(),t.attr(`width`,g.width),t.attr(`height`,g.height)}let _=t.width<=g.width+t.padding?g.width+t.padding:t.width;t.width<=g.width+t.padding?t.diff=(_-t.width)/2-t.padding:t.diff=-t.padding;let v=t.height,y=t.x-_/2,b=t.y-v/2;f.trace(`Data `,t,JSON.stringify(t));let x;if(t.look===`handDrawn`){let e=q.svg(d),n=G(t,{roughness:.7,fill:a,stroke:o,fillWeight:3,seed:i}),r=e.path(og(y,b,_,v,0),n);x=d.insert(()=>(f.debug(`Rough node insert CXC`,r),r),`:first-child`),x.select(`path:nth-child(2)`).attr(`style`,l.join(`;`)),x.select(`path`).attr(`style`,u.join(`;`).replace(`fill`,`stroke`))}else x=d.insert(`rect`,`:first-child`),x.attr(`style`,c).attr(`rx`,t.rx).attr(`ry`,t.ry).attr(`x`,y).attr(`y`,b).attr(`width`,_).attr(`height`,v);let{subGraphTitleTopMargin:S}=Rv(n);if(m.attr(`transform`,`translate(${t.x-g.width/2}, ${t.y-t.height/2+S})`),s){let e=m.select(`span`);e&&e.attr(`style`,s)}let C=x.node().getBBox();return t.offsetX=0,t.width=C.width,t.height=C.height,t.offsetY=g.height-t.padding/2,t.intersect=function(e){return ag(t,e)},{cluster:d,labelBBox:g}},`rect`),Yw={rect:Jw,squareRect:Jw,roundedWithTitle:s(async(e,t)=>{let n=B(),{themeVariables:r,handDrawnSeed:i}=n,{altBackground:a,compositeBackground:o,compositeTitleBackground:s,nodeBorder:c}=r,l=e.insert(`g`).attr(`class`,t.cssClasses).attr(`id`,t.domId).attr(`data-id`,t.id).attr(`data-look`,t.look),u=l.insert(`g`,`:first-child`),d=l.insert(`g`).attr(`class`,`cluster-label`),f=l.append(`rect`),p=await sg(d,t.label,t.labelStyle,void 0,!0),m=p.getBBox();if(On(n)){let e=p.children[0],t=V(p);m=e.getBoundingClientRect(),t.attr(`width`,m.width),t.attr(`height`,m.height)}let h=0*t.padding,g=h/2,_=(t.width<=m.width+t.padding?m.width+t.padding:t.width)+h;t.width<=m.width+t.padding?t.diff=(_-t.width)/2-t.padding:t.diff=-t.padding;let v=t.height+h,y=t.height+h-m.height-6,b=t.x-_/2,x=t.y-v/2;t.width=_;let S=t.y-t.height/2-g+m.height+2,C;if(t.look===`handDrawn`){let e=t.cssClasses.includes(`statediagram-cluster-alt`),n=q.svg(l),r=t.rx||t.ry?n.path(og(b,x,_,v,10),{roughness:.7,fill:s,fillStyle:`solid`,stroke:c,seed:i}):n.rectangle(b,x,_,v,{seed:i});C=l.insert(()=>r,`:first-child`);let u=n.rectangle(b,S,_,y,{fill:e?a:o,fillStyle:e?`hachure`:`solid`,stroke:c,seed:i});C=l.insert(()=>r,`:first-child`),f=l.insert(()=>u)}else C=u.insert(`rect`,`:first-child`),C.attr(`class`,`outer`).attr(`x`,b).attr(`y`,x).attr(`width`,_).attr(`height`,v).attr(`data-look`,t.look),f.attr(`class`,`inner`).attr(`x`,b).attr(`y`,S).attr(`width`,_).attr(`height`,y);return d.attr(`transform`,`translate(${t.x-m.width/2}, ${x+1-(On(n)?0:3)})`),t.height=C.node().getBBox().height,t.offsetX=0,t.offsetY=m.height-t.padding/2,t.labelBBox=m,t.intersect=function(e){return ag(t,e)},{cluster:l,labelBBox:m}},`roundedWithTitle`),noteGroup:s((e,t)=>{let n=e.insert(`g`).attr(`class`,`note-cluster`).attr(`id`,t.domId),r=n.insert(`rect`,`:first-child`),i=0*t.padding,a=i/2;r.attr(`rx`,t.rx).attr(`ry`,t.ry).attr(`x`,t.x-t.width/2-a).attr(`y`,t.y-t.height/2-a).attr(`width`,t.width+i).attr(`height`,t.height+i).attr(`fill`,`none`);let o=r.node().getBBox();return t.width=o.width,t.height=o.height,t.intersect=function(e){return ag(t,e)},{cluster:n,labelBBox:{width:0,height:0}}},`noteGroup`),divider:s((e,t)=>{let{themeVariables:n,handDrawnSeed:r}=B(),{nodeBorder:i}=n,a=e.insert(`g`).attr(`class`,t.cssClasses).attr(`id`,t.domId).attr(`data-look`,t.look),o=a.insert(`g`,`:first-child`),s=0*t.padding,c=t.width+s;t.diff=-t.padding;let l=t.height+s,u=t.x-c/2,d=t.y-l/2;t.width=c;let f;if(t.look===`handDrawn`){let e=q.svg(a).rectangle(u,d,c,l,{fill:`lightgrey`,roughness:.5,strokeLineDash:[5],stroke:i,seed:r});f=a.insert(()=>e,`:first-child`)}else{f=o.insert(`rect`,`:first-child`);let e=`outer`;e=(t.look,`divider`),f.attr(`class`,e).attr(`x`,u).attr(`y`,d).attr(`width`,c).attr(`height`,l).attr(`data-look`,t.look)}return t.height=f.node().getBBox().height,t.offsetX=0,t.offsetY=0,t.intersect=function(e){return ag(t,e)},{cluster:a,labelBBox:{}}},`divider`),kanbanSection:s(async(e,t)=>{f.info(`Creating subgraph rect for `,t.id,t);let n=B(),{themeVariables:r,handDrawnSeed:i}=n,{clusterBkg:a,clusterBorder:o}=r,{labelStyles:s,nodeStyles:c,borderStyles:l,backgroundStyles:u}=W(t),d=e.insert(`g`).attr(`class`,`cluster `+t.cssClasses).attr(`id`,t.domId).attr(`data-look`,t.look),p=On(n),m=d.insert(`g`).attr(`class`,`cluster-label `),h=await Lm(m,t.label,{style:t.labelStyle,useHtmlLabels:p,isNode:!0,width:t.width}),g=h.getBBox();if(On(n)){let e=h.children[0],t=V(h);g=e.getBoundingClientRect(),t.attr(`width`,g.width),t.attr(`height`,g.height)}let _=t.width<=g.width+t.padding?g.width+t.padding:t.width;t.width<=g.width+t.padding?t.diff=(_-t.width)/2-t.padding:t.diff=-t.padding;let v=t.height,y=t.x-_/2,b=t.y-v/2;f.trace(`Data `,t,JSON.stringify(t));let x;if(t.look===`handDrawn`){let e=q.svg(d),n=G(t,{roughness:.7,fill:a,stroke:o,fillWeight:4,seed:i}),r=e.path(og(y,b,_,v,t.rx),n);x=d.insert(()=>(f.debug(`Rough node insert CXC`,r),r),`:first-child`),x.select(`path:nth-child(2)`).attr(`style`,l.join(`;`)),x.select(`path`).attr(`style`,u.join(`;`).replace(`fill`,`stroke`))}else x=d.insert(`rect`,`:first-child`),x.attr(`style`,c).attr(`rx`,t.rx).attr(`ry`,t.ry).attr(`x`,y).attr(`y`,b).attr(`width`,_).attr(`height`,v);let{subGraphTitleTopMargin:S}=Rv(n);if(m.attr(`transform`,`translate(${t.x-g.width/2}, ${t.y-t.height/2+S})`),s){let e=m.select(`span`);e&&e.attr(`style`,s)}let C=x.node().getBBox();return t.offsetX=0,t.width=C.width,t.height=C.height,t.offsetY=g.height-t.padding/2,t.intersect=function(e){return ag(t,e)},{cluster:d,labelBBox:g}},`kanbanSection`),swimlane:qw},Xw=new Map,Zw=s(async(e,t)=>{let n=await Yw[t.shape||`rect`](e,t);return Xw.set(t.id,n),n},`insertCluster`),Qw=s(()=>{Xw=new Map},`clear`),$w={common:lr,getConfig:z,insertCluster:Zw,insertEdge:_y,insertEdgeLabel:oy,insertMarkers:Cy,insertNode:Bv,interpolateToCurve:Qd,labelHelper:J,log:f,positionEdgeLabel:cy},eT={},tT=s(e=>{for(let t of e)eT[t.name]=t},`registerLayoutLoaders`);s(()=>{tT([{name:`dagre`,loader:s(async()=>await r(()=>import(`./dagre-3AP2YEHR-DFiQF-6f.js`),__vite__mapDeps([3,4]),import.meta.url),`loader`)},{name:`swimlane`,loader:s(async()=>await r(()=>import(`./swimlanes-XN3QIQJK-CR-dfN_t.js`),[],import.meta.url),`loader`)},{name:`cose-bilkent`,loader:s(async()=>await r(()=>import(`./cose-bilkent-JH36ORCC-9YQYwdl0.js`),__vite__mapDeps([5,1,2,6]),import.meta.url),`loader`)}])},`registerDefaultLayoutLoaders`)();var nT=s(async(e,t)=>{if(!(e.layoutAlgorithm in eT))throw Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);if(e.diagramId)for(let t of e.nodes){let n=t.domId||t.id;t.domId=`${e.diagramId}-${n}`}let n=eT[e.layoutAlgorithm],r=await n.loader(),{theme:i,themeVariables:a}=e.config,{useGradient:o,gradientStart:s,gradientStop:c}=a,l=t.attr(`id`);if(t.append(`defs`).append(`filter`).attr(`id`,`${l}-drop-shadow`).attr(`height`,`130%`).attr(`width`,`130%`).append(`feDropShadow`).attr(`dx`,`4`).attr(`dy`,`4`).attr(`stdDeviation`,0).attr(`flood-opacity`,`0.06`).attr(`flood-color`,`${i?.includes(`dark`)?`#FFFFFF`:`#000000`}`),t.append(`defs`).append(`filter`).attr(`id`,`${l}-drop-shadow-small`).attr(`height`,`150%`).attr(`width`,`150%`).append(`feDropShadow`).attr(`dx`,`2`).attr(`dy`,`2`).attr(`stdDeviation`,0).attr(`flood-opacity`,`0.06`).attr(`flood-color`,`${i?.includes(`dark`)?`#FFFFFF`:`#000000`}`),o){let e=t.append(`linearGradient`).attr(`id`,t.attr(`id`)+`-gradient`).attr(`gradientUnits`,`objectBoundingBox`).attr(`x1`,`0%`).attr(`y1`,`0%`).attr(`x2`,`100%`).attr(`y2`,`0%`);e.append(`svg:stop`).attr(`offset`,`0%`).attr(`stop-color`,s).attr(`stop-opacity`,1),e.append(`svg:stop`).attr(`offset`,`100%`).attr(`stop-color`,c).attr(`stop-opacity`,1)}return r.render(e,t,$w,{algorithm:n.algorithm})},`render`),rT=s((e=``,{fallback:t=`dagre`}={})=>{if(e in eT)return e;if(t in eT)return f.warn(`Layout algorithm ${e} is not registered. Using ${t} as fallback.`),t;throw Error(`Both layout algorithms ${e} and ${t} are not registered.`)},`getRegisteredLayoutAlgorithm`);function iT(e,{edgePathsClass:t=`edges edgePath`}={}){let n=e.insert(`g`).attr(`class`,`root`);return{clusters:n.insert(`g`).attr(`class`,`clusters`),edgePaths:n.insert(`g`).attr(`class`,t),edgeLabels:n.insert(`g`).attr(`class`,`edgeLabels`),nodes:n.insert(`g`).attr(`class`,`nodes`),rootGroups:n}}s(iT,`createLayoutElementGroups`);async function aT(e,t){if(t.label){let{shapeSvg:n,bbox:r}=await J(e,t);t.labelBBox={width:r.width,height:r.height},n.remove()}else t.labelBBox={width:0,height:0}}s(aT,`measureGroupLabel`);async function oT(e,t,n){let r=await Bv(e,t,n),i=r.node()?.getBBox()??{width:0,height:0};return t.width=i.width,t.height=i.height,r}s(oT,`insertMeasuredNode`);async function sT(e,t){let n=new Vw({multigraph:!0,compound:!0}),i=[...t.edges],a=B(),o=iT(e),{edgeLabels:s,nodes:c}=o,l=new Map,u=e.node()!=null;await Promise.all(t.nodes.map(async e=>{if(e.isGroup)u&&await aT(c,e),n.setNode(e.id,{...e});else{if(u){let t=await oT(c,e,{config:a,dir:e.dir});l.set(e.id,t)}n.setNode(e.id,{...e})}}));for(let e of i)u&&iy(e)&&await oy(s,e),n.setEdge(e.start,e.end,{...e},e.id),t.edges.some(t=>t.id===e.id)||t.edges.push(e);if(globalThis.mermaidCaptureSizes){let{captureNodeSizes:n}=await r(async()=>{let{captureNodeSizes:e}=await import(`./sizeCapture-X5ZJPWSS-heUErzhI.js`);return{captureNodeSizes:e}},[],import.meta.url);n(e,t)}return{graph:n,groups:o,nodeElements:l}}s(sT,`createGraphWithElements`);var $=new Map,cT=new Map,lT=new Map,uT=s(()=>{cT.clear(),lT.clear(),$.clear()},`clear`),dT=s((e,t)=>{let n=cT.get(t)||[];return f.trace(`In isDescendant`,t,` `,e,` = `,n.includes(e)),n.includes(e)},`isDescendant`),fT=s((e,t)=>{let n=cT.get(t)||[];return f.info(`Descendants of `,t,` is `,n),f.info(`Edge is `,e),e.v===t||e.w===t?!1:n?n.includes(e.v)||dT(e.v,t)||dT(e.w,t)||n.includes(e.w):(f.debug(`Tilt, `,t,`,not in descendants`),!1)},`edgeInCluster`),pT=s((e,t,n,r)=>{f.debug(`Copying children of `,e,`root`,r,`data`,t.node(e),r);let i=t.children(e)||[];e!==r&&i.push(e),f.debug(`Copying (nodes) clusterId`,e,`nodes`,i),i.forEach(i=>{if(t.children(i).length>0)pT(i,t,n,r);else{let a=t.node(i);f.info(`cp `,i,` to `,r,` with parent `,e),n.setNode(i,a),r!==t.parent(i)&&(f.debug(`Setting parent`,i,t.parent(i)),n.setParent(i,t.parent(i))),e!==r&&i!==e?(f.debug(`Setting parent`,i,e),n.setParent(i,e)):(f.info(`In copy `,e,`root`,r,`data`,t.node(e),r),f.debug(`Not Setting parent for node=`,i,`cluster!==rootId`,e!==r,`node!==clusterId`,i!==e));let o=t.edges(i);f.debug(`Copying Edges`,o),o.forEach(i=>{f.info(`Edge`,i);let a=t.edge(i.v,i.w,i.name);f.info(`Edge data`,a,r);try{fT(i,r)?(f.info(`Copying as `,i.v,i.w,a,i.name),n.setEdge(i.v,i.w,a,i.name),f.info(`newGraph edges `,n.edges(),n.edge(n.edges()[0]))):f.info(`Skipping copy of edge `,i.v,`-->`,i.w,` rootId: `,r,` clusterId:`,e)}catch(e){f.error(e)}})}f.debug(`Removing node`,i),t.removeNode(i)})},`copy`),mT=s((e,t)=>{let n=t.children(e),r=[...n];for(let i of n)lT.set(i,e),r=[...r,...mT(i,t)];return r},`extractDescendants`),hT=s((e,t,n)=>{let r=e.edges().filter(e=>e.v===t||e.w===t),i=e.edges().filter(e=>e.v===n||e.w===n),a=r.map(e=>({v:e.v===t?n:e.v,w:e.w===t?t:e.w})),o=i.map(e=>({v:e.v,w:e.w}));return a.filter(e=>o.some(t=>e.v===t.v&&e.w===t.w))},`findCommonEdges`),gT=s((e,t,n)=>{let r=t.children(e);if(f.trace(`Searching children of id `,e,r),r.length<1)return e;let i;for(let e of r){let r=gT(e,t,n),a=hT(t,n,r);if(r)if(a.length>0)i=r;else return r}return i},`findNonClusterChild`),_T=s(e=>!$.has(e)||!$.get(e).externalConnections?e:$.has(e)?$.get(e).id:e,`getAnchorId`),vT=s((e,t)=>{if(!e||t>10){f.debug(`Opting out, no graph `);return}else f.debug(`Opting in, graph `);e.nodes().forEach(function(t){e.children(t).length>0&&(f.debug(`Cluster identified`,t,` Replacement id in edges: `,gT(t,e,t)),cT.set(t,mT(t,e)),$.set(t,{id:gT(t,e,t),clusterData:e.node(t)}))}),e.nodes().forEach(function(t){let n=e.children(t),r=e.edges();n.length>0?(f.debug(`Cluster identified`,t,cT),r.forEach(e=>{dT(e.v,t)^dT(e.w,t)&&(f.debug(`Edge: `,e,` leaves cluster `,t),f.debug(`Descendants of XXX `,t,`: `,cT.get(t)),$.get(t).externalConnections=!0)})):f.debug(`Not a cluster `,t,cT)});for(let t of $.keys()){let n=$.get(t).id,r=e.parent(n);r!==t&&$.has(r)&&!$.get(r).externalConnections&&($.get(t).id=r);let i=e.edges().some(e=>e.v===t);if(n&&$.get(t)?.externalConnections&&i&&ST(e,n,t)){let r=CT(e,t,e.parent(n));r&&($.get(t).id=r)}}e.edges().forEach(function(t){let n=e.edge(t);f.debug(`Edge `+t.v+` -> `+t.w+`: `+JSON.stringify(t)),f.debug(`Edge `+t.v+` -> `+t.w+`: `+JSON.stringify(e.edge(t)));let r=t.v,i=t.w;if(f.debug(`Fix XXX`,$,`ids:`,t.v,t.w,`Translating: `,$.get(t.v),` --- `,$.get(t.w)),$.get(t.v)||$.get(t.w)){if(f.debug(`Fixing and trying - removing XXX`,t.v,t.w,t.name),r=_T(t.v),i=_T(t.w),e.removeEdge(t.v,t.w,t.name),r!==t.v){let i=e.parent(r);$.get(i).externalConnections=!0,n.fromCluster=t.v}if(i!==t.w){let r=e.parent(i);$.get(r).externalConnections=!0,n.toCluster=t.w}f.debug(`Fix Replacing with XXX`,r,i,t.name),e.setEdge(r,i,n,t.name)}}),yT(e,0),f.trace($)},`adjustClustersAndEdges`),yT=s((e,t)=>{if(t>10){f.error(`Bailing out`);return}let n=e.nodes(),r=!1;for(let t of n){let n=e.children(t);r||=n.length>0}if(!r){f.debug(`Done, no node has children`,e.nodes());return}f.debug(`Nodes = `,n,t);for(let r of n)if(f.debug(`Extracting node`,r,$,$.has(r)&&!$.get(r).externalConnections,!e.parent(r),e.node(r),e.children(`D`),` Depth `,t),!$.has(r))f.debug(`Not a cluster`,r,t);else if(!$.get(r).externalConnections&&e.children(r)&&e.children(r).length>0){f.debug(`Cluster without external connections, without a parent and with children`,r,t);let n=e.graph().rankdir===`TB`?`LR`:`TB`;$.get(r)?.clusterData?.dir&&(n=$.get(r).clusterData.dir,f.debug(`Fixing dir`,$.get(r).clusterData.dir,n));let i=new Vw({multigraph:!0,compound:!0}).setGraph({rankdir:n,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});pT(r,e,i,r),e.setNode(r,{clusterNode:!0,id:r,clusterData:$.get(r).clusterData,label:$.get(r).label,graph:i})}else f.debug(`Cluster ** `,r,` **not meeting the criteria !externalConnections:`,!$.get(r).externalConnections,` no parent: `,!e.parent(r),` children `,e.children(r)&&e.children(r).length>0,e.children(`D`),t),f.debug($);n=e.nodes(),f.debug(`New list of nodes`,n);for(let r of n){let n=e.node(r);f.debug(` Now next level`,r,n),n?.clusterNode&&yT(n.graph,t+1)}},`extractor`),bT=s((e,t)=>{if(t.length===0)return[];let n=Object.assign([],t);return t.forEach(t=>{let r=bT(e,e.children(t));n=[...n,...r]}),n},`sorter`),xT=s(e=>bT(e,e.children()),`sortNodesByHierarchy`),ST=s((e,t,n)=>{let r=e.parent(t);for(;r&&r!==n;){let t=$.get(r);if(t&&!t.externalConnections)return!0;r=e.parent(r)}return!1},`isNodeInExtractableCluster`),CT=s((e,t,n)=>{let r=e.children(t)??[];for(let i of r){if(i===n||dT(i,n))continue;let r=gT(i,e,t);if(r&&!ST(e,r,t))return r}return null},`findSafeAnchorNode`);function wT({prepareLayout:e,measureLayout:t,runLayoutCore:n,paintLayout:r,afterPaint:i,paintOptions:a}){let o=t??ET;return s(async function(t,s,c,l){let u=s.select(`g`);Cy(u,t.markers,t.type,t.diagramId),TT();let d={element:u,helpers:c,options:l};d.preparedLayout=await e?.(t,d);let f=await o(t,d),p=await n(t,d),m={...d,measure:f};r?await r(t,m,p):await DT(t,m,a),await i?.(t,m,p)},`render`)}s(wT,`createCommonLayoutRenderer`);function TT(){Hv(),ry(),Qw(),uT()}s(TT,`clearLayoutRenderState`);async function ET(e,{element:t}){return await sT(t,e)}s(ET,`defaultMeasureLayout`);async function DT(e,t,n={}){let{measure:r}=t,{groups:i}=r;for(let r of n.getNodes?.(e,t)??e.nodes)n.skipNode?.(r,t)||await OT(i,r,t,n);let a=AT(e.nodes);for(let r of e.edges)jT(r,n)||await MT(i,r,a,e,n,t)}s(DT,`paintLayoutData`);async function OT(e,t,n,r){t.clusterNode?Uv(t):kT(t,n,r)?await Zw(e.clusters,t):Uv(t)}s(OT,`paintLayoutNode`);function kT(e,t,n){return e.isGroup===!0&&(n.isCluster?.(e,t)??!0)}s(kT,`shouldPaintAsCluster`);function AT(e){let t=new Map;for(let n of e)n?.id&&t.set(n.id,n);return t}s(AT,`buildNodeLookup`);function jT(e,t){return e.isLayoutOnly||!!t.skipEdge?.(e)}s(jT,`shouldSkipPaintEdge`);async function MT(e,t,n,r,i,a){let o=_y(e.edgePaths,{...t},i.clusterDb??new Map,r.type,NT(t.start,t,n,a,i),NT(t.end,t,n,a,i),r.diagramId,PT(t,i));iy(t)&&(ty.has(t.id)||await oy(e.edgeLabels,t),FT(t,o))}s(MT,`paintLayoutEdge`);function NT(e,t,n,r,i){return i.getEdgeNode?.(e,t,r)??(e?n.get(e)??{}:{})}s(NT,`getRenderedNode`);function PT(e,t){return typeof t.skipIntersect==`function`?t.skipIntersect(e):t.skipIntersect??!1}s(PT,`shouldSkipIntersect`);function FT(e,t){let n=t?.updatedPath??t?.originalPath,{subGraphTitleTotalMargin:r}=Rv({flowchart:z().flowchart??{}});if(e.label){let i=ty.get(e.id),a=e.x,o=e.y;if(n){let r=Of.calcLabelPosition(n);f.debug(`Moving label `+e.label+` from (`,a,`,`,o,`) to (`,r.x,`,`,r.y,`) abc88`),t?.updatedPath&&(a=r.x,o=r.y)}i.attr(`transform`,`translate(${a}, ${o+r/2})`)}if(e?.startLabelLeft){let t=ny.get(e.id).startLeft,r=e?.x,i=e?.y;if(n){let t=Of.calcTerminalLabelPosition(e.arrowTypeStart?10:0,`start_left`,n);r=t.x,i=t.y}t.attr(`transform`,`translate(${r}, ${i})`)}if(e.startLabelRight){let t=ny.get(e.id).startRight,r=e.x,i=e.y;if(n){let t=Of.calcTerminalLabelPosition(e.arrowTypeStart?10:0,`start_right`,n);r=t.x,i=t.y}t.attr(`transform`,`translate(${r}, ${i})`)}if(e.endLabelLeft){let t=ny.get(e.id).endLeft,r=e.x,i=e.y;if(n){let t=Of.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,`end_left`,n);r=t.x,i=t.y}t.attr(`transform`,`translate(${r}, ${i})`)}if(e.endLabelRight){let t=ny.get(e.id).endRight,r=e.x,i=e.y;if(n){let t=Of.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,`end_right`,n);r=t.x,i=t.y}t.attr(`transform`,`translate(${r}, ${i})`)}}s(FT,`positionRenderedEdgeLabel`);function IT(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,`default`)?e.default:e}s(IT,`getDefaultExportFromCjs`);var LT={},RT={},zT={},BT;function VT(){if(BT)return zT;BT=1;function e(e){return e==null}s(e,`isNothing`);function t(e){return typeof e==`object`&&!!e}s(t,`isObject`);function n(t){return Array.isArray(t)?t:e(t)?[]:[t]}s(n,`toArray`);function r(e,t){if(t){let n=Object.keys(t);for(let r=0,i=n.length;r{let{themeVariables:r}=z(),{strokeWidth:i}=r,a=e.append(`defs`).append(`marker`).attr(`id`,n+`_`+t+`-requirement_containsStart`).attr(`refX`,0).attr(`refY`,10).attr(`markerWidth`,20).attr(`markerHeight`,20).attr(`orient`,`auto`).attr(`markerUnits`,`userSpaceOnUse`).append(`g`);a.append(`circle`).attr(`cx`,10).attr(`cy`,10).attr(`r`,9).attr(`fill`,`none`),a.append(`line`).attr(`x1`,1).attr(`x2`,19).attr(`y1`,10).attr(`y2`,10),a.append(`line`).attr(`y1`,1).attr(`y2`,19).attr(`x1`,10).attr(`x2`,10),a.selectAll(`*`).attr(`stroke-width`,`${i}`)},`requirement_contains_neo`)},Cy=xy,wy=typeof global==`object`&&global&&global.Object===Object&&global,Ty=typeof self==`object`&&self&&self.Object===Object&&self,Ey=wy||Ty||Function(`return this`)(),Dy=Ey.Symbol,Oy=Object.prototype,ky=Oy.hasOwnProperty,Ay=Oy.toString,jy=Dy?Dy.toStringTag:void 0;function My(e){var t=ky.call(e,jy),n=e[jy];try{e[jy]=void 0;var r=!0}catch{}var i=Ay.call(e);return r&&(t?e[jy]=n:delete e[jy]),i}var Ny=Object.prototype.toString;function Py(e){return Ny.call(e)}var Fy=`[object Null]`,Iy=`[object Undefined]`,Ly=Dy?Dy.toStringTag:void 0;function Ry(e){return e==null?e===void 0?Iy:Fy:Ly&&Ly in Object(e)?My(e):Py(e)}function zy(e){return typeof e==`object`&&!!e}var By=`[object Symbol]`;function Vy(e){return typeof e==`symbol`||zy(e)&&Ry(e)==By}function Hy(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n0){if(++t>=yb)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Cb(e){return function(){return e}}var wb=function(){try{var e=hb(Object,`defineProperty`);return e({},``,{}),e}catch{}}(),Tb=Sb(wb?function(e,t){return wb(e,`toString`,{configurable:!0,enumerable:!1,value:Cb(t),writable:!0})}:Yy);function Eb(e,t){for(var n=-1,r=e==null?0:e.length;++n-1}var Mb=9007199254740991,Nb=/^(?:0|[1-9]\d*)$/;function Pb(e,t){var n=typeof e;return t??=Mb,!!t&&(n==`number`||n!=`symbol`&&Nb.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=zb}function Vb(e){return e!=null&&Bb(e.length)&&!eb(e)}var Hb=Object.prototype;function Ub(e){var t=e&&e.constructor;return e===(typeof t==`function`&&t.prototype||Hb)}function Wb(e,t){for(var n=-1,r=Array(e);++n-1}function cS(e,t){var n=this.__data__,r=rS(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function lS(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t0&&n(s)?t>1?FS(s,t-1,n,r,i):MS(i,s):r||(i[i.length]=s)}return i}function IS(e,t,n,r){var i=-1,a=e==null?0:e.length;for(r&&a&&(n=e[++i]);++is))return!1;var l=a.get(e),u=a.get(t);if(l&&u)return l==t&&u==e;var d=-1,f=!0,p=n&xC?new _C:void 0;for(a.set(e,t),a.set(t,e);++d=Fw){var l=t?null:Pw(e);if(l)return wC(l);o=!1,i=yC,c=new _C}else c=t?[]:s;outer:for(;++r1?r.setNode(e,t):r.setNode(e)}),this}setNode(e,t){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=t),this):(this._nodes[e]=arguments.length>1?t:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=zw,this._children[e]={},this._children[zw][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return Object.prototype.hasOwnProperty.call(this._nodes,e)}removeNode(e){if(Object.prototype.hasOwnProperty.call(this._nodes,e)){var t=e=>this.removeEdge(this._edgeObjs[e]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],Sw(this.children(e),e=>{this.setParent(e)}),delete this._children[e]),Sw(Vx(this._in[e]),t),delete this._in[e],delete this._preds[e],Sw(Vx(this._out[e]),t),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,t){if(!this._isCompound)throw Error(`Cannot set parent in a non-compound graph`);if(jw(t))t=zw;else{t+=``;for(var n=t;!jw(n);n=this.parent(n))if(n===e)throw Error(`Setting `+t+` as parent of `+e+` would create a cycle`);this.setNode(t)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=t,this._children[t][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var t=this._parent[e];if(t!==zw)return t}}children(e){if(jw(e)&&(e=zw),this._isCompound){var t=this._children[e];if(t)return Vx(t)}else if(e===zw)return this.nodes();else if(this.hasNode(e))return[]}predecessors(e){var t=this._preds[e];if(t)return Vx(t)}successors(e){var t=this._sucs[e];if(t)return Vx(t)}neighbors(e){var t=this.predecessors(e);if(t)return Lw(t,this.successors(e))}isLeaf(e){return(this.isDirected()?this.successors(e):this.neighbors(e)).length===0}filterNodes(e){var t=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});t.setGraph(this.graph());var n=this;Sw(this._nodes,function(n,r){e(r)&&t.setNode(r,n)}),Sw(this._edgeObjs,function(e){t.hasNode(e.v)&&t.hasNode(e.w)&&t.setEdge(e,n.edge(e))});var r={};function i(e){var a=n.parent(e);return a===void 0||t.hasNode(a)?(r[e]=a,a):a in r?r[a]:i(a)}return this._isCompound&&Sw(t.nodes(),function(e){t.setParent(e,i(e))}),t}setDefaultEdgeLabel(e){return eb(e)||(e=Cb(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return Ew(this._edgeObjs)}setPath(e,t){var n=this,r=arguments;return Nw(e,function(e,i){return r.length>1?n.setEdge(e,i,t):n.setEdge(e,i),i}),this}setEdge(){var e,t,n,r,i=!1,a=arguments[0];typeof a==`object`&&a&&`v`in a?(e=a.v,t=a.w,n=a.name,arguments.length===2&&(r=arguments[1],i=!0)):(e=a,t=arguments[1],n=arguments[3],arguments.length>2&&(r=arguments[2],i=!0)),e=``+e,t=``+t,jw(n)||(n=``+n);var o=Ww(this._isDirected,e,t,n);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,o))return i&&(this._edgeLabels[o]=r),this;if(!jw(n)&&!this._isMultigraph)throw Error(`Cannot set a named edge when isMultigraph = false`);this.setNode(e),this.setNode(t),this._edgeLabels[o]=i?r:this._defaultEdgeLabelFn(e,t,n);var s=Gw(this._isDirected,e,t,n);return e=s.v,t=s.w,Object.freeze(s),this._edgeObjs[o]=s,Hw(this._preds[t],e),Hw(this._sucs[e],t),this._in[t][o]=s,this._out[e][o]=s,this._edgeCount++,this}edge(e,t,n){var r=arguments.length===1?Kw(this._isDirected,arguments[0]):Ww(this._isDirected,e,t,n);return this._edgeLabels[r]}hasEdge(e,t,n){var r=arguments.length===1?Kw(this._isDirected,arguments[0]):Ww(this._isDirected,e,t,n);return Object.prototype.hasOwnProperty.call(this._edgeLabels,r)}removeEdge(e,t,n){var r=arguments.length===1?Kw(this._isDirected,arguments[0]):Ww(this._isDirected,e,t,n),i=this._edgeObjs[r];return i&&(e=i.v,t=i.w,delete this._edgeLabels[r],delete this._edgeObjs[r],Uw(this._preds[t],e),Uw(this._sucs[e],t),delete this._in[t][r],delete this._out[e][r],this._edgeCount--),this}inEdges(e,t){var n=this._in[e];if(n){var r=Ew(n);return t?ww(r,function(e){return e.v===t}):r}}outEdges(e,t){var n=this._out[e];if(n){var r=Ew(n);return t?ww(r,function(e){return e.w===t}):r}}nodeEdges(e,t){var n=this.inEdges(e,t);if(n)return n.concat(this.outEdges(e,t))}};Vw.prototype._nodeCount=0,Vw.prototype._edgeCount=0;function Hw(e,t){e[t]?e[t]++:e[t]=1}function Uw(e,t){--e[t]||delete e[t]}function Ww(e,t,n,r){var i=``+t,a=``+n;if(!e&&i>a){var o=i;i=a,a=o}return i+Bw+a+Bw+(jw(r)?Rw:r)}function Gw(e,t,n,r){var i=``+t,a=``+n;if(!e&&i>a){var o=i;i=a,a=o}var s={v:i,w:a};return r&&(s.name=r),s}function Kw(e,t){return Ww(e,t.v,t.w,t.name)}var qw=s(async(e,t)=>{let n=B(),{themeVariables:r,handDrawnSeed:i}=n,{clusterBkg:a,clusterBorder:o}=r,s=o,{labelStyles:c,nodeStyles:l,borderStyles:u,backgroundStyles:d}=W(t),p=e.insert(`g`).attr(`class`,`cluster swimlane `+(t.cssClasses||``)).attr(`id`,t.id).attr(`data-id`,t.id).attr(`data-et`,`cluster`).attr(`data-look`,t.look),m=R(n.flowchart.htmlLabels),h=t.direction===`LR`,g=p.insert(`g`).attr(`class`,`cluster-label swimlane-label`),_=await Lm(g,t.label,{style:t.labelStyle,useHtmlLabels:m,isNode:!0,width:t.width}),v=_.getBBox();if(m){let e=_.children[0],t=V(_);v=e.getBoundingClientRect(),t.attr(`width`,v.width),t.attr(`height`,v.height)}let y=t.padding??0,b=t.width<=v.width+y?v.width+y:t.width;t.width<=v.width+y?t.diff=(b-t.width)/2-y:t.diff=-y;let x=t.height,S=t.y-x/2,C=t.y+x/2,w=t.x-b/2,T=t.swimlaneContentTop===void 0?S+x/3:t.swimlaneContentTop,E=h?4:0,D=v.height+2*E,O,ee;if(h){let e=Math.max(D,v.height+2*E),n=w+e,r=Math.max(0,b-e);if(t.look===`handDrawn`){let o=q.svg(p),c=G(t,{roughness:.7,fill:a,stroke:s,fillWeight:3,seed:i}),l=G(t,{roughness:.7,fill:`none`,stroke:s,seed:i}),f=o.rectangle(w,S,e,x,c);O=p.insert(()=>f,`:first-child`);let m=o.rectangle(n,S,r,x,l);ee=p.insert(()=>m,`:first-child`),O.select(`path:nth-child(2)`).attr(`style`,u.join(`;`)),O.select(`path`).attr(`style`,d.join(`;`).replace(`fill`,`stroke`))}else O=p.insert(`rect`,`:first-child`),ee=p.insert(`rect`,`:first-child`),O.attr(`class`,`swimlane-title`).attr(`style`,l).attr(`x`,w).attr(`y`,S).attr(`width`,e).attr(`height`,x).attr(`fill`,a).attr(`stroke`,s),ee.attr(`class`,`swimlane-body`).attr(`style`,l).attr(`x`,n).attr(`y`,S).attr(`width`,r).attr(`height`,x).attr(`fill`,`none`).attr(`stroke`,s);let o=w+e/2,c=t.y;g.attr(`transform`,`translate(${o}, ${c}) rotate(-90) translate(${-v.width/2}, ${-v.height/2})`)}else{let e=Math.max(0,T-S),n=Math.min(D,e),r=S+n,o=Math.max(0,C-r),c=t.x-b/2;if(t.look===`handDrawn`){let e=q.svg(p),l=G(t,{roughness:.7,fill:a,stroke:s,fillWeight:3,seed:i}),f=G(t,{roughness:.7,fill:`none`,stroke:s,seed:i}),m=e.rectangle(c,S,b,n,l);O=p.insert(()=>m,`:first-child`);let h=e.rectangle(c,r,b,o,f);ee=p.insert(()=>h,`:first-child`),O.select(`path:nth-child(2)`).attr(`style`,u.join(`;`)),O.select(`path`).attr(`style`,d.join(`;`).replace(`fill`,`stroke`))}else O=p.insert(`rect`,`:first-child`),ee=p.insert(`rect`,`:first-child`),O.attr(`class`,`swimlane-title`).attr(`style`,l).attr(`x`,c).attr(`y`,S).attr(`width`,b).attr(`height`,n).attr(`fill`,a).attr(`stroke`,s),ee.attr(`class`,`swimlane-body`).attr(`style`,l).attr(`x`,c).attr(`y`,r).attr(`width`,b).attr(`height`,o).attr(`fill`,`none`).attr(`stroke`,s);let f=t.x-v.width/2,m=S+(n-v.height)/2;g.attr(`transform`,`translate(${f}, ${m})`)}if(f.trace(`Swimlane data `,t,JSON.stringify(t)),c){let e=g.select(`span`);e&&e.attr(`style`,c)}return t.offsetX=0,t.width=b,t.height=x,t.offsetY=v.height-y/2,t.intersect=function(e){return ag(t,e)},{cluster:p,labelBBox:v}},`swimlane`),Jw=s(async(e,t)=>{f.info(`Creating subgraph rect for `,t.id,t);let n=B(),{themeVariables:r,handDrawnSeed:i}=n,{clusterBkg:a,clusterBorder:o}=r,{labelStyles:s,nodeStyles:c,borderStyles:l,backgroundStyles:u}=W(t),d=e.insert(`g`).attr(`class`,`cluster `+t.cssClasses).attr(`id`,t.domId).attr(`data-look`,t.look),p=On(n),m=d.insert(`g`).attr(`class`,`cluster-label `),h;h=t.labelType===`markdown`?await Lm(m,t.label,{style:t.labelStyle,useHtmlLabels:p,isNode:!0,width:t.width}):await sg(m,t.label,t.labelStyle||``,!1,!0);let g=h.getBBox();if(On(n)){let e=h.children[0],t=V(h);g=e.getBoundingClientRect(),t.attr(`width`,g.width),t.attr(`height`,g.height)}let _=t.width<=g.width+t.padding?g.width+t.padding:t.width;t.width<=g.width+t.padding?t.diff=(_-t.width)/2-t.padding:t.diff=-t.padding;let v=t.height,y=t.x-_/2,b=t.y-v/2;f.trace(`Data `,t,JSON.stringify(t));let x;if(t.look===`handDrawn`){let e=q.svg(d),n=G(t,{roughness:.7,fill:a,stroke:o,fillWeight:3,seed:i}),r=e.path(og(y,b,_,v,0),n);x=d.insert(()=>(f.debug(`Rough node insert CXC`,r),r),`:first-child`),x.select(`path:nth-child(2)`).attr(`style`,l.join(`;`)),x.select(`path`).attr(`style`,u.join(`;`).replace(`fill`,`stroke`))}else x=d.insert(`rect`,`:first-child`),x.attr(`style`,c).attr(`rx`,t.rx).attr(`ry`,t.ry).attr(`x`,y).attr(`y`,b).attr(`width`,_).attr(`height`,v);let{subGraphTitleTopMargin:S}=Rv(n);if(m.attr(`transform`,`translate(${t.x-g.width/2}, ${t.y-t.height/2+S})`),s){let e=m.select(`span`);e&&e.attr(`style`,s)}let C=x.node().getBBox();return t.offsetX=0,t.width=C.width,t.height=C.height,t.offsetY=g.height-t.padding/2,t.intersect=function(e){return ag(t,e)},{cluster:d,labelBBox:g}},`rect`),Yw={rect:Jw,squareRect:Jw,roundedWithTitle:s(async(e,t)=>{let n=B(),{themeVariables:r,handDrawnSeed:i}=n,{altBackground:a,compositeBackground:o,compositeTitleBackground:s,nodeBorder:c}=r,l=e.insert(`g`).attr(`class`,t.cssClasses).attr(`id`,t.domId).attr(`data-id`,t.id).attr(`data-look`,t.look),u=l.insert(`g`,`:first-child`),d=l.insert(`g`).attr(`class`,`cluster-label`),f=l.append(`rect`),p=await sg(d,t.label,t.labelStyle,void 0,!0),m=p.getBBox();if(On(n)){let e=p.children[0],t=V(p);m=e.getBoundingClientRect(),t.attr(`width`,m.width),t.attr(`height`,m.height)}let h=0*t.padding,g=h/2,_=(t.width<=m.width+t.padding?m.width+t.padding:t.width)+h;t.width<=m.width+t.padding?t.diff=(_-t.width)/2-t.padding:t.diff=-t.padding;let v=t.height+h,y=t.height+h-m.height-6,b=t.x-_/2,x=t.y-v/2;t.width=_;let S=t.y-t.height/2-g+m.height+2,C;if(t.look===`handDrawn`){let e=t.cssClasses.includes(`statediagram-cluster-alt`),n=q.svg(l),r=t.rx||t.ry?n.path(og(b,x,_,v,10),{roughness:.7,fill:s,fillStyle:`solid`,stroke:c,seed:i}):n.rectangle(b,x,_,v,{seed:i});C=l.insert(()=>r,`:first-child`);let u=n.rectangle(b,S,_,y,{fill:e?a:o,fillStyle:e?`hachure`:`solid`,stroke:c,seed:i});C=l.insert(()=>r,`:first-child`),f=l.insert(()=>u)}else C=u.insert(`rect`,`:first-child`),C.attr(`class`,`outer`).attr(`x`,b).attr(`y`,x).attr(`width`,_).attr(`height`,v).attr(`data-look`,t.look),f.attr(`class`,`inner`).attr(`x`,b).attr(`y`,S).attr(`width`,_).attr(`height`,y);return d.attr(`transform`,`translate(${t.x-m.width/2}, ${x+1-(On(n)?0:3)})`),t.height=C.node().getBBox().height,t.offsetX=0,t.offsetY=m.height-t.padding/2,t.labelBBox=m,t.intersect=function(e){return ag(t,e)},{cluster:l,labelBBox:m}},`roundedWithTitle`),noteGroup:s((e,t)=>{let n=e.insert(`g`).attr(`class`,`note-cluster`).attr(`id`,t.domId),r=n.insert(`rect`,`:first-child`),i=0*t.padding,a=i/2;r.attr(`rx`,t.rx).attr(`ry`,t.ry).attr(`x`,t.x-t.width/2-a).attr(`y`,t.y-t.height/2-a).attr(`width`,t.width+i).attr(`height`,t.height+i).attr(`fill`,`none`);let o=r.node().getBBox();return t.width=o.width,t.height=o.height,t.intersect=function(e){return ag(t,e)},{cluster:n,labelBBox:{width:0,height:0}}},`noteGroup`),divider:s((e,t)=>{let{themeVariables:n,handDrawnSeed:r}=B(),{nodeBorder:i}=n,a=e.insert(`g`).attr(`class`,t.cssClasses).attr(`id`,t.domId).attr(`data-look`,t.look),o=a.insert(`g`,`:first-child`),s=0*t.padding,c=t.width+s;t.diff=-t.padding;let l=t.height+s,u=t.x-c/2,d=t.y-l/2;t.width=c;let f;if(t.look===`handDrawn`){let e=q.svg(a).rectangle(u,d,c,l,{fill:`lightgrey`,roughness:.5,strokeLineDash:[5],stroke:i,seed:r});f=a.insert(()=>e,`:first-child`)}else{f=o.insert(`rect`,`:first-child`);let e=`outer`;e=(t.look,`divider`),f.attr(`class`,e).attr(`x`,u).attr(`y`,d).attr(`width`,c).attr(`height`,l).attr(`data-look`,t.look)}return t.height=f.node().getBBox().height,t.offsetX=0,t.offsetY=0,t.intersect=function(e){return ag(t,e)},{cluster:a,labelBBox:{}}},`divider`),kanbanSection:s(async(e,t)=>{f.info(`Creating subgraph rect for `,t.id,t);let n=B(),{themeVariables:r,handDrawnSeed:i}=n,{clusterBkg:a,clusterBorder:o}=r,{labelStyles:s,nodeStyles:c,borderStyles:l,backgroundStyles:u}=W(t),d=e.insert(`g`).attr(`class`,`cluster `+t.cssClasses).attr(`id`,t.domId).attr(`data-look`,t.look),p=On(n),m=d.insert(`g`).attr(`class`,`cluster-label `),h=await Lm(m,t.label,{style:t.labelStyle,useHtmlLabels:p,isNode:!0,width:t.width}),g=h.getBBox();if(On(n)){let e=h.children[0],t=V(h);g=e.getBoundingClientRect(),t.attr(`width`,g.width),t.attr(`height`,g.height)}let _=t.width<=g.width+t.padding?g.width+t.padding:t.width;t.width<=g.width+t.padding?t.diff=(_-t.width)/2-t.padding:t.diff=-t.padding;let v=t.height,y=t.x-_/2,b=t.y-v/2;f.trace(`Data `,t,JSON.stringify(t));let x;if(t.look===`handDrawn`){let e=q.svg(d),n=G(t,{roughness:.7,fill:a,stroke:o,fillWeight:4,seed:i}),r=e.path(og(y,b,_,v,t.rx),n);x=d.insert(()=>(f.debug(`Rough node insert CXC`,r),r),`:first-child`),x.select(`path:nth-child(2)`).attr(`style`,l.join(`;`)),x.select(`path`).attr(`style`,u.join(`;`).replace(`fill`,`stroke`))}else x=d.insert(`rect`,`:first-child`),x.attr(`style`,c).attr(`rx`,t.rx).attr(`ry`,t.ry).attr(`x`,y).attr(`y`,b).attr(`width`,_).attr(`height`,v);let{subGraphTitleTopMargin:S}=Rv(n);if(m.attr(`transform`,`translate(${t.x-g.width/2}, ${t.y-t.height/2+S})`),s){let e=m.select(`span`);e&&e.attr(`style`,s)}let C=x.node().getBBox();return t.offsetX=0,t.width=C.width,t.height=C.height,t.offsetY=g.height-t.padding/2,t.intersect=function(e){return ag(t,e)},{cluster:d,labelBBox:g}},`kanbanSection`),swimlane:qw},Xw=new Map,Zw=s(async(e,t)=>{let n=await Yw[t.shape||`rect`](e,t);return Xw.set(t.id,n),n},`insertCluster`),Qw=s(()=>{Xw=new Map},`clear`),$w={common:lr,getConfig:z,insertCluster:Zw,insertEdge:_y,insertEdgeLabel:oy,insertMarkers:Cy,insertNode:Bv,interpolateToCurve:Qd,labelHelper:J,log:f,positionEdgeLabel:cy},eT={},tT=s(e=>{for(let t of e)eT[t.name]=t},`registerLayoutLoaders`);s(()=>{tT([{name:`dagre`,loader:s(async()=>await r(()=>import(`./dagre-3AP2YEHR-Ll3LkcYP.js`),__vite__mapDeps([3,4]),import.meta.url),`loader`)},{name:`swimlane`,loader:s(async()=>await r(()=>import(`./swimlanes-XN3QIQJK-CFJohC2b.js`),[],import.meta.url),`loader`)},{name:`cose-bilkent`,loader:s(async()=>await r(()=>import(`./cose-bilkent-JH36ORCC-CnqJMsPI.js`),__vite__mapDeps([5,1,2,6]),import.meta.url),`loader`)}])},`registerDefaultLayoutLoaders`)();var nT=s(async(e,t)=>{if(!(e.layoutAlgorithm in eT))throw Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);if(e.diagramId)for(let t of e.nodes){let n=t.domId||t.id;t.domId=`${e.diagramId}-${n}`}let n=eT[e.layoutAlgorithm],r=await n.loader(),{theme:i,themeVariables:a}=e.config,{useGradient:o,gradientStart:s,gradientStop:c}=a,l=t.attr(`id`);if(t.append(`defs`).append(`filter`).attr(`id`,`${l}-drop-shadow`).attr(`height`,`130%`).attr(`width`,`130%`).append(`feDropShadow`).attr(`dx`,`4`).attr(`dy`,`4`).attr(`stdDeviation`,0).attr(`flood-opacity`,`0.06`).attr(`flood-color`,`${i?.includes(`dark`)?`#FFFFFF`:`#000000`}`),t.append(`defs`).append(`filter`).attr(`id`,`${l}-drop-shadow-small`).attr(`height`,`150%`).attr(`width`,`150%`).append(`feDropShadow`).attr(`dx`,`2`).attr(`dy`,`2`).attr(`stdDeviation`,0).attr(`flood-opacity`,`0.06`).attr(`flood-color`,`${i?.includes(`dark`)?`#FFFFFF`:`#000000`}`),o){let e=t.append(`linearGradient`).attr(`id`,t.attr(`id`)+`-gradient`).attr(`gradientUnits`,`objectBoundingBox`).attr(`x1`,`0%`).attr(`y1`,`0%`).attr(`x2`,`100%`).attr(`y2`,`0%`);e.append(`svg:stop`).attr(`offset`,`0%`).attr(`stop-color`,s).attr(`stop-opacity`,1),e.append(`svg:stop`).attr(`offset`,`100%`).attr(`stop-color`,c).attr(`stop-opacity`,1)}return r.render(e,t,$w,{algorithm:n.algorithm})},`render`),rT=s((e=``,{fallback:t=`dagre`}={})=>{if(e in eT)return e;if(t in eT)return f.warn(`Layout algorithm ${e} is not registered. Using ${t} as fallback.`),t;throw Error(`Both layout algorithms ${e} and ${t} are not registered.`)},`getRegisteredLayoutAlgorithm`);function iT(e,{edgePathsClass:t=`edges edgePath`}={}){let n=e.insert(`g`).attr(`class`,`root`);return{clusters:n.insert(`g`).attr(`class`,`clusters`),edgePaths:n.insert(`g`).attr(`class`,t),edgeLabels:n.insert(`g`).attr(`class`,`edgeLabels`),nodes:n.insert(`g`).attr(`class`,`nodes`),rootGroups:n}}s(iT,`createLayoutElementGroups`);async function aT(e,t){if(t.label){let{shapeSvg:n,bbox:r}=await J(e,t);t.labelBBox={width:r.width,height:r.height},n.remove()}else t.labelBBox={width:0,height:0}}s(aT,`measureGroupLabel`);async function oT(e,t,n){let r=await Bv(e,t,n),i=r.node()?.getBBox()??{width:0,height:0};return t.width=i.width,t.height=i.height,r}s(oT,`insertMeasuredNode`);async function sT(e,t){let n=new Vw({multigraph:!0,compound:!0}),i=[...t.edges],a=B(),o=iT(e),{edgeLabels:s,nodes:c}=o,l=new Map,u=e.node()!=null;await Promise.all(t.nodes.map(async e=>{if(e.isGroup)u&&await aT(c,e),n.setNode(e.id,{...e});else{if(u){let t=await oT(c,e,{config:a,dir:e.dir});l.set(e.id,t)}n.setNode(e.id,{...e})}}));for(let e of i)u&&iy(e)&&await oy(s,e),n.setEdge(e.start,e.end,{...e},e.id),t.edges.some(t=>t.id===e.id)||t.edges.push(e);if(globalThis.mermaidCaptureSizes){let{captureNodeSizes:n}=await r(async()=>{let{captureNodeSizes:e}=await import(`./sizeCapture-X5ZJPWSS-D__whCj3.js`);return{captureNodeSizes:e}},[],import.meta.url);n(e,t)}return{graph:n,groups:o,nodeElements:l}}s(sT,`createGraphWithElements`);var $=new Map,cT=new Map,lT=new Map,uT=s(()=>{cT.clear(),lT.clear(),$.clear()},`clear`),dT=s((e,t)=>{let n=cT.get(t)||[];return f.trace(`In isDescendant`,t,` `,e,` = `,n.includes(e)),n.includes(e)},`isDescendant`),fT=s((e,t)=>{let n=cT.get(t)||[];return f.info(`Descendants of `,t,` is `,n),f.info(`Edge is `,e),e.v===t||e.w===t?!1:n?n.includes(e.v)||dT(e.v,t)||dT(e.w,t)||n.includes(e.w):(f.debug(`Tilt, `,t,`,not in descendants`),!1)},`edgeInCluster`),pT=s((e,t,n,r)=>{f.debug(`Copying children of `,e,`root`,r,`data`,t.node(e),r);let i=t.children(e)||[];e!==r&&i.push(e),f.debug(`Copying (nodes) clusterId`,e,`nodes`,i),i.forEach(i=>{if(t.children(i).length>0)pT(i,t,n,r);else{let a=t.node(i);f.info(`cp `,i,` to `,r,` with parent `,e),n.setNode(i,a),r!==t.parent(i)&&(f.debug(`Setting parent`,i,t.parent(i)),n.setParent(i,t.parent(i))),e!==r&&i!==e?(f.debug(`Setting parent`,i,e),n.setParent(i,e)):(f.info(`In copy `,e,`root`,r,`data`,t.node(e),r),f.debug(`Not Setting parent for node=`,i,`cluster!==rootId`,e!==r,`node!==clusterId`,i!==e));let o=t.edges(i);f.debug(`Copying Edges`,o),o.forEach(i=>{f.info(`Edge`,i);let a=t.edge(i.v,i.w,i.name);f.info(`Edge data`,a,r);try{fT(i,r)?(f.info(`Copying as `,i.v,i.w,a,i.name),n.setEdge(i.v,i.w,a,i.name),f.info(`newGraph edges `,n.edges(),n.edge(n.edges()[0]))):f.info(`Skipping copy of edge `,i.v,`-->`,i.w,` rootId: `,r,` clusterId:`,e)}catch(e){f.error(e)}})}f.debug(`Removing node`,i),t.removeNode(i)})},`copy`),mT=s((e,t)=>{let n=t.children(e),r=[...n];for(let i of n)lT.set(i,e),r=[...r,...mT(i,t)];return r},`extractDescendants`),hT=s((e,t,n)=>{let r=e.edges().filter(e=>e.v===t||e.w===t),i=e.edges().filter(e=>e.v===n||e.w===n),a=r.map(e=>({v:e.v===t?n:e.v,w:e.w===t?t:e.w})),o=i.map(e=>({v:e.v,w:e.w}));return a.filter(e=>o.some(t=>e.v===t.v&&e.w===t.w))},`findCommonEdges`),gT=s((e,t,n)=>{let r=t.children(e);if(f.trace(`Searching children of id `,e,r),r.length<1)return e;let i;for(let e of r){let r=gT(e,t,n),a=hT(t,n,r);if(r)if(a.length>0)i=r;else return r}return i},`findNonClusterChild`),_T=s(e=>!$.has(e)||!$.get(e).externalConnections?e:$.has(e)?$.get(e).id:e,`getAnchorId`),vT=s((e,t)=>{if(!e||t>10){f.debug(`Opting out, no graph `);return}else f.debug(`Opting in, graph `);e.nodes().forEach(function(t){e.children(t).length>0&&(f.debug(`Cluster identified`,t,` Replacement id in edges: `,gT(t,e,t)),cT.set(t,mT(t,e)),$.set(t,{id:gT(t,e,t),clusterData:e.node(t)}))}),e.nodes().forEach(function(t){let n=e.children(t),r=e.edges();n.length>0?(f.debug(`Cluster identified`,t,cT),r.forEach(e=>{dT(e.v,t)^dT(e.w,t)&&(f.debug(`Edge: `,e,` leaves cluster `,t),f.debug(`Descendants of XXX `,t,`: `,cT.get(t)),$.get(t).externalConnections=!0)})):f.debug(`Not a cluster `,t,cT)});for(let t of $.keys()){let n=$.get(t).id,r=e.parent(n);r!==t&&$.has(r)&&!$.get(r).externalConnections&&($.get(t).id=r);let i=e.edges().some(e=>e.v===t);if(n&&$.get(t)?.externalConnections&&i&&ST(e,n,t)){let r=CT(e,t,e.parent(n));r&&($.get(t).id=r)}}e.edges().forEach(function(t){let n=e.edge(t);f.debug(`Edge `+t.v+` -> `+t.w+`: `+JSON.stringify(t)),f.debug(`Edge `+t.v+` -> `+t.w+`: `+JSON.stringify(e.edge(t)));let r=t.v,i=t.w;if(f.debug(`Fix XXX`,$,`ids:`,t.v,t.w,`Translating: `,$.get(t.v),` --- `,$.get(t.w)),$.get(t.v)||$.get(t.w)){if(f.debug(`Fixing and trying - removing XXX`,t.v,t.w,t.name),r=_T(t.v),i=_T(t.w),e.removeEdge(t.v,t.w,t.name),r!==t.v){let i=e.parent(r);$.get(i).externalConnections=!0,n.fromCluster=t.v}if(i!==t.w){let r=e.parent(i);$.get(r).externalConnections=!0,n.toCluster=t.w}f.debug(`Fix Replacing with XXX`,r,i,t.name),e.setEdge(r,i,n,t.name)}}),yT(e,0),f.trace($)},`adjustClustersAndEdges`),yT=s((e,t)=>{if(t>10){f.error(`Bailing out`);return}let n=e.nodes(),r=!1;for(let t of n){let n=e.children(t);r||=n.length>0}if(!r){f.debug(`Done, no node has children`,e.nodes());return}f.debug(`Nodes = `,n,t);for(let r of n)if(f.debug(`Extracting node`,r,$,$.has(r)&&!$.get(r).externalConnections,!e.parent(r),e.node(r),e.children(`D`),` Depth `,t),!$.has(r))f.debug(`Not a cluster`,r,t);else if(!$.get(r).externalConnections&&e.children(r)&&e.children(r).length>0){f.debug(`Cluster without external connections, without a parent and with children`,r,t);let n=e.graph().rankdir===`TB`?`LR`:`TB`;$.get(r)?.clusterData?.dir&&(n=$.get(r).clusterData.dir,f.debug(`Fixing dir`,$.get(r).clusterData.dir,n));let i=new Vw({multigraph:!0,compound:!0}).setGraph({rankdir:n,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});pT(r,e,i,r),e.setNode(r,{clusterNode:!0,id:r,clusterData:$.get(r).clusterData,label:$.get(r).label,graph:i})}else f.debug(`Cluster ** `,r,` **not meeting the criteria !externalConnections:`,!$.get(r).externalConnections,` no parent: `,!e.parent(r),` children `,e.children(r)&&e.children(r).length>0,e.children(`D`),t),f.debug($);n=e.nodes(),f.debug(`New list of nodes`,n);for(let r of n){let n=e.node(r);f.debug(` Now next level`,r,n),n?.clusterNode&&yT(n.graph,t+1)}},`extractor`),bT=s((e,t)=>{if(t.length===0)return[];let n=Object.assign([],t);return t.forEach(t=>{let r=bT(e,e.children(t));n=[...n,...r]}),n},`sorter`),xT=s(e=>bT(e,e.children()),`sortNodesByHierarchy`),ST=s((e,t,n)=>{let r=e.parent(t);for(;r&&r!==n;){let t=$.get(r);if(t&&!t.externalConnections)return!0;r=e.parent(r)}return!1},`isNodeInExtractableCluster`),CT=s((e,t,n)=>{let r=e.children(t)??[];for(let i of r){if(i===n||dT(i,n))continue;let r=gT(i,e,t);if(r&&!ST(e,r,t))return r}return null},`findSafeAnchorNode`);function wT({prepareLayout:e,measureLayout:t,runLayoutCore:n,paintLayout:r,afterPaint:i,paintOptions:a}){let o=t??ET;return s(async function(t,s,c,l){let u=s.select(`g`);Cy(u,t.markers,t.type,t.diagramId),TT();let d={element:u,helpers:c,options:l};d.preparedLayout=await e?.(t,d);let f=await o(t,d),p=await n(t,d),m={...d,measure:f};r?await r(t,m,p):await DT(t,m,a),await i?.(t,m,p)},`render`)}s(wT,`createCommonLayoutRenderer`);function TT(){Hv(),ry(),Qw(),uT()}s(TT,`clearLayoutRenderState`);async function ET(e,{element:t}){return await sT(t,e)}s(ET,`defaultMeasureLayout`);async function DT(e,t,n={}){let{measure:r}=t,{groups:i}=r;for(let r of n.getNodes?.(e,t)??e.nodes)n.skipNode?.(r,t)||await OT(i,r,t,n);let a=AT(e.nodes);for(let r of e.edges)jT(r,n)||await MT(i,r,a,e,n,t)}s(DT,`paintLayoutData`);async function OT(e,t,n,r){t.clusterNode?Uv(t):kT(t,n,r)?await Zw(e.clusters,t):Uv(t)}s(OT,`paintLayoutNode`);function kT(e,t,n){return e.isGroup===!0&&(n.isCluster?.(e,t)??!0)}s(kT,`shouldPaintAsCluster`);function AT(e){let t=new Map;for(let n of e)n?.id&&t.set(n.id,n);return t}s(AT,`buildNodeLookup`);function jT(e,t){return e.isLayoutOnly||!!t.skipEdge?.(e)}s(jT,`shouldSkipPaintEdge`);async function MT(e,t,n,r,i,a){let o=_y(e.edgePaths,{...t},i.clusterDb??new Map,r.type,NT(t.start,t,n,a,i),NT(t.end,t,n,a,i),r.diagramId,PT(t,i));iy(t)&&(ty.has(t.id)||await oy(e.edgeLabels,t),FT(t,o))}s(MT,`paintLayoutEdge`);function NT(e,t,n,r,i){return i.getEdgeNode?.(e,t,r)??(e?n.get(e)??{}:{})}s(NT,`getRenderedNode`);function PT(e,t){return typeof t.skipIntersect==`function`?t.skipIntersect(e):t.skipIntersect??!1}s(PT,`shouldSkipIntersect`);function FT(e,t){let n=t?.updatedPath??t?.originalPath,{subGraphTitleTotalMargin:r}=Rv({flowchart:z().flowchart??{}});if(e.label){let i=ty.get(e.id),a=e.x,o=e.y;if(n){let r=Of.calcLabelPosition(n);f.debug(`Moving label `+e.label+` from (`,a,`,`,o,`) to (`,r.x,`,`,r.y,`) abc88`),t?.updatedPath&&(a=r.x,o=r.y)}i.attr(`transform`,`translate(${a}, ${o+r/2})`)}if(e?.startLabelLeft){let t=ny.get(e.id).startLeft,r=e?.x,i=e?.y;if(n){let t=Of.calcTerminalLabelPosition(e.arrowTypeStart?10:0,`start_left`,n);r=t.x,i=t.y}t.attr(`transform`,`translate(${r}, ${i})`)}if(e.startLabelRight){let t=ny.get(e.id).startRight,r=e.x,i=e.y;if(n){let t=Of.calcTerminalLabelPosition(e.arrowTypeStart?10:0,`start_right`,n);r=t.x,i=t.y}t.attr(`transform`,`translate(${r}, ${i})`)}if(e.endLabelLeft){let t=ny.get(e.id).endLeft,r=e.x,i=e.y;if(n){let t=Of.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,`end_left`,n);r=t.x,i=t.y}t.attr(`transform`,`translate(${r}, ${i})`)}if(e.endLabelRight){let t=ny.get(e.id).endRight,r=e.x,i=e.y;if(n){let t=Of.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,`end_right`,n);r=t.x,i=t.y}t.attr(`transform`,`translate(${r}, ${i})`)}}s(FT,`positionRenderedEdgeLabel`);function IT(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,`default`)?e.default:e}s(IT,`getDefaultExportFromCjs`);var LT={},RT={},zT={},BT;function VT(){if(BT)return zT;BT=1;function e(e){return e==null}s(e,`isNothing`);function t(e){return typeof e==`object`&&!!e}s(t,`isObject`);function n(t){return Array.isArray(t)?t:e(t)?[]:[t]}s(n,`toArray`);function r(e,t){if(t){let n=Object.keys(t);for(let r=0,i=n.length;rs&&(a=` ... `,t=r-s+a.length),n-r>s&&(o=` ...`,n=r+s-o.length),{str:a+e.slice(t,n).replace(/\t/g,`→`)+o,pos:r-t+a.length}}s(t,`getLine`);function n(t,n){return e.repeat(` `,n-t.length)+t}s(n,`padStart`);function r(r,i){if(i=Object.create(i||null),!r.buffer)return null;i.maxLength||=79,typeof i.indent!=`number`&&(i.indent=1),typeof i.linesBefore!=`number`&&(i.linesBefore=3),typeof i.linesAfter!=`number`&&(i.linesAfter=2);let a=/\r?\n|\r|\0/g,o=[0],s=[],c,l=-1;for(;c=a.exec(r.buffer);)s.push(c.index),o.push(c.index+c[0].length),r.position<=c.index&&l<0&&(l=o.length-2);l<0&&(l=o.length-1);let u=``,d=Math.min(r.line+i.linesAfter,s.length).toString().length,f=i.maxLength-(i.indent+d+3);for(let a=1;a<=i.linesBefore&&!(l-a<0);a++){let c=t(r.buffer,o[l-a],s[l-a],r.position-(o[l]-o[l-a]),f);u=e.repeat(` `,i.indent)+n((r.line-a+1).toString(),d)+` | `+c.str+` `+u}let p=t(r.buffer,o[l],s[l],r.position,f);u+=e.repeat(` `,i.indent)+n((r.line+1).toString(),d)+` | `+p.str+` @@ -300,8 +300,8 @@ ${i.join(` `+e.slice(i,a),i=a+1),o=s;return c+=` `,e.length-i>t&&o>i?c+=e.slice(i,o)+` `+e.slice(o+1):c+=e.slice(i),c.slice(1)}s(ee,`foldLine`);function k(e){let t=``,n=0;for(let r=0;r=65536?r+=2:r++){n=S(e,r);let i=o[n];!i&&_(n)?(t+=e[r],n>=65536&&(t+=e[r+1])):t+=i||d(n)}return t}s(k,`escapeString`);function te(e,t,n){let r=``,i=e.tag;for(let i=0,a=n.length;i1024&&(o+=`? `),o+=e.dump+(e.condenseFlow?`"`:``)+`:`+(e.condenseFlow?``:` `),N(e,t,c,!1,!1)&&(o+=e.dump,r+=o))}e.tag=i,e.dump=`{`+r+`}`}s(j,`writeFlowMapping`);function M(e,n,r,i){let a=``,o=e.tag,s=Object.keys(r);if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys==`function`)s.sort(e.sortKeys);else if(e.sortKeys)throw new t(`sortKeys must be a boolean or a function`);for(let t=0,o=s.length;t1024;u&&(e.dump&&e.dump.charCodeAt(0)===10?o+=`?`:o+=`? `),o+=e.dump,u&&(o+=m(e,n)),N(e,n+1,l,!0,u)&&(e.dump&&e.dump.charCodeAt(0)===10?o+=`:`:o+=`: `,o+=e.dump,a+=o)}e.tag=o,e.dump=a||`{}`}s(M,`writeBlockMapping`);function ne(e,n,a){let o=a?e.explicitTypes:e.implicitTypes;for(let s=0,c=o.length;s tag resolver accepts not "`+a+`" style`);e.dump=o}return!0}}return!1}s(ne,`detectType`);function N(e,n,i,a,o,s,c){e.tag=null,e.dump=i,ne(e,i,!1)||ne(e,i,!0);let l=r.call(e.dump),u=a;a&&=e.flowLevel<0||e.flowLevel>n;let d=l===`[object Object]`||l===`[object Array]`,f,p;if(d&&(f=e.duplicates.indexOf(i),p=f!==-1),(e.tag!==null&&e.tag!==`?`||p||e.indent!==2&&n>0)&&(o=!1),p&&e.usedDuplicates[f])e.dump=`*ref_`+f;else{if(d&&p&&!e.usedDuplicates[f]&&(e.usedDuplicates[f]=!0),l===`[object Object]`)a&&Object.keys(e.dump).length!==0?(M(e,n,e.dump,o),p&&(e.dump=`&ref_`+f+e.dump)):(j(e,n,e.dump),p&&(e.dump=`&ref_`+f+` `+e.dump));else if(l===`[object Array]`)a&&e.dump.length!==0?(e.noArrayIndent&&!c&&n>0?A(e,n-1,e.dump,o):A(e,n,e.dump,o),p&&(e.dump=`&ref_`+f+e.dump)):(te(e,n,e.dump),p&&(e.dump=`&ref_`+f+` `+e.dump));else if(l===`[object String]`)e.tag!==`?`&&T(e,e.dump,n,s,u);else if(l===`[object Undefined]`)return!1;else{if(e.skipInvalid)return!1;throw new t(`unacceptable kind of an object to dump `+l)}if(e.tag!==null&&e.tag!==`?`){let t=encodeURI(e.tag[0]===`!`?e.tag.slice(1):e.tag).replace(/!/g,`%21`);t=e.tag[0]===`!`?`!`+t:t.slice(0,18)===`tag:yaml.org,2002:`?`!!`+t.slice(18):`!<`+t+`>`,e.dump=t+` `+e.dump}}return!0}s(N,`writeNode`);function re(e,t){let n=[],r=[];ie(e,n,r);let i=r.length;for(let e=0;e0?AD(BD,--RD):0,ID--,zD===10&&(ID=1,FD--),zD}function WD(){return zD=RD2||JD(zD)>3?``:` `}function $D(e,t){for(;--t&&WD()&&!(zD<48||zD>102||zD>57&&zD<65||zD>70&&zD<97););return qD(e,KD()+(t<6&&GD()==32&&WD()==32))}function eO(e){for(;WD();)switch(zD){case e:return RD;case 34:case 39:e!==34&&e!==39&&eO(zD);break;case 40:e===41&&eO(e);break;case 92:WD();break}return RD}function tO(e,t){for(;WD()&&e+zD!==57&&!(e+zD===84&&GD()===47););return`/*`+qD(t,RD-1)+`*`+ED(e===47?e:WD())}function nO(e){for(;!JD(GD());)WD();return qD(e,RD)}function rO(e){return XD(iO(``,null,null,null,[``],e=YD(e),0,[0],e))}function iO(e,t,n,r,i,a,o,s,c){for(var l=0,u=0,d=o,f=0,p=0,m=0,h=1,g=1,_=1,v=0,y=``,b=i,x=a,S=r,C=y;g;)switch(m=v,v=WD()){case 40:if(m!=108&&AD(C,d-1)==58){kD(C+=OD(ZD(v),`&`,`&\f`),`&\f`,TD(l?s[l-1]:0))!=-1&&(_=-1);break}case 34:case 39:case 91:C+=ZD(v);break;case 9:case 10:case 13:case 32:C+=QD(m);break;case 92:C+=$D(KD()-1,7);continue;case 47:switch(GD()){case 42:case 47:PD(oO(tO(WD(),KD()),t,n,c),c),(JD(m||1)==5||JD(GD()||1)==5)&&MD(C)&&jD(C,-1,void 0)!==` `&&(C+=` `);break;default:C+=`/`}break;case 123*h:s[l++]=MD(C)*_;case 125*h:case 59:case 0:switch(v){case 0:case 125:g=0;case 59+u:_==-1&&(C=OD(C,/\f/g,``)),p>0&&(MD(C)-d||h===0&&m===47)&&PD(p>32?sO(C+`;`,r,n,d-1,c):sO(OD(C,` `,``)+`;`,r,n,d-2,c),c);break;case 59:C+=`;`;default:if(PD(S=aO(C,t,n,l,u,i,s,y,b=[],x=[],d,a),a),v===123)if(u===0)iO(C,t,S,S,b,a,d,s,x);else{switch(f){case 99:if(AD(C,3)===110)break;case 108:if(AD(C,2)===97)break;default:u=0;case 100:case 109:case 115:}u?iO(e,S,S,r&&PD(aO(e,S,S,0,0,i,s,y,i,b=[],d,x),x),i,x,d,s,r?b:x):iO(C,S,S,S,[``],x,0,s,x)}}l=u=p=0,h=_=1,y=C=``,d=o;break;case 58:d=1+MD(C),p=m;default:if(h<1){if(v==123)--h;else if(v==125&&h++==0&&UD()==125)continue}switch(C+=ED(v),v*h){case 38:_=u>0?1:(C+=`\f`,-1);break;case 44:s[l++]=(MD(C)-1)*_,_=1;break;case 64:GD()===45&&(C+=ZD(WD())),f=GD(),u=d=MD(y=C+=nO(KD())),v++;break;case 45:m===45&&MD(C)==2&&(h=0)}}return a}function aO(e,t,n,r,i,a,o,s,c,l,u,d){for(var f=i-1,p=i===0?a:[``],m=ND(p),h=0,g=0,_=0;h0?p[v]+` `+y:OD(y,/&\f/g,p[v])))&&(c[_++]=b);return VD(e,t,n,i===0?yD:s,c,l,u,d)}function oO(e,t,n,r){return VD(e,t,n,vD,ED(HD()),jD(e,2,-2),0,r)}function sO(e,t,n,r,i){return VD(e,t,n,bD,jD(e,0,r),jD(e,r+1,-1),r,i)}function cO(e,t){for(var n=``,r=0;r/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./c4Diagram-UCG6FXSJ-Dk_ieq2X.js`);return{diagram:e}},__vite__mapDeps([7,8]),import.meta.url);return{id:dO,diagram:e}},`loader`)},pO=`flowchart`,mO={id:pO,detector:s((e,t)=>t?.flowchart?.defaultRenderer===`dagre-wrapper`||t?.flowchart?.defaultRenderer===`elk`?!1:/^\s*graph/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./flowDiagram-A5DVABFB-BBKL0x3P.js`);return{diagram:e}},__vite__mapDeps([9,8,10,11,12,13,14]),import.meta.url);return{id:pO,diagram:e}},`loader`)},hO=`flowchart-v2`,gO={id:hO,detector:s((e,t)=>t?.flowchart?.defaultRenderer===`dagre-d3`?!1:(t?.flowchart?.defaultRenderer===`elk`&&(t.layout=`elk`),/^\s*graph/.test(e)&&t?.flowchart?.defaultRenderer===`dagre-wrapper`?!0:/^\s*flowchart/.test(e)),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./flowDiagram-A5DVABFB-BBKL0x3P.js`);return{diagram:e}},__vite__mapDeps([9,8,10,11,12,13,14]),import.meta.url);return{id:hO,diagram:e}},`loader`)},_O=`swimlane`,vO={id:_O,detector:s(e=>/^\s*swimlane-beta\b/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./swimlanesDiagram-VK2B7HYN-DLVw3q5Q.js`);return{diagram:e}},__vite__mapDeps([15,8,10,11,12,13,14]),import.meta.url);return{id:_O,diagram:e}},`loader`)},yO=`er`,bO={id:yO,detector:s(e=>/^\s*erDiagram/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./erDiagram-SSCWMZ5O-EAGqqR79.js`);return{diagram:e}},__vite__mapDeps([16,12,10,14]),import.meta.url);return{id:yO,diagram:e}},`loader`)},xO=`gitGraph`,SO={id:xO,detector:s(e=>/^\s*gitGraph/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./gitGraphDiagram-WWUBYQGX-B6g4dtDi.js`);return{diagram:e}},__vite__mapDeps([17,18,1,2,19,20]),import.meta.url);return{id:xO,diagram:e}},`loader`)},CO=`gantt`,wO={id:CO,detector:s(e=>/^\s*gantt/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./ganttDiagram-EL5Y4UJY-DqJsKb59.js`);return{diagram:e}},__vite__mapDeps([21,1,2,22,23,24]),import.meta.url);return{id:CO,diagram:e}},`loader`)},TO=`info`,EO={id:TO,detector:s(e=>/^\s*info/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./infoDiagram-RXCK75RN-Djm_nbd5.js`);return{diagram:e}},__vite__mapDeps([25,18,1,2]),import.meta.url);return{id:TO,diagram:e}},`loader`)},DO=`pie`,OO={id:DO,detector:s(e=>/^\s*pie/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./pieDiagram-E7YTZNPT-DpjqOFFp.js`);return{diagram:e}},__vite__mapDeps([26,18,1,2,27,24,28,20]),import.meta.url);return{id:DO,diagram:e}},`loader`)},kO=`quadrantChart`,AO={id:kO,detector:s(e=>/^\s*quadrantChart/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./quadrantDiagram-AXDQQJYC-BiNhgOXX.js`);return{diagram:e}},__vite__mapDeps([29,22,23,24]),import.meta.url);return{id:kO,diagram:e}},`loader`)},jO=`xychart`,MO={id:jO,detector:s(e=>/^\s*xychart(-beta)?/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./xychartDiagram-S5SC5T6Z-Dy6Yh_hu.js`);return{diagram:e}},__vite__mapDeps([30,22,23,24,27]),import.meta.url);return{id:jO,diagram:e}},`loader`)},NO=`requirement`,PO={id:NO,detector:s(e=>/^\s*requirement(Diagram)?/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./requirementDiagram-EFPCY7ZU-DeCFdg9K.js`);return{diagram:e}},__vite__mapDeps([31,10,14]),import.meta.url);return{id:NO,diagram:e}},`loader`)},FO=`sequence`,IO={id:FO,detector:s(e=>/^\s*sequenceDiagram/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./sequenceDiagram-WJ2MYXX4-OEpQQdr4.js`);return{diagram:e}},__vite__mapDeps([32,19,8]),import.meta.url);return{id:FO,diagram:e}},`loader`)},LO=`class`,RO={id:LO,detector:s((e,t)=>t?.class?.defaultRenderer===`dagre-wrapper`?!1:/^\s*classDiagram/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./classDiagram-DTDB5LWJ-DLFd9Xi0.js`);return{diagram:e}},__vite__mapDeps([33,8,34,13,10,14]),import.meta.url);return{id:LO,diagram:e}},`loader`)},zO=`classDiagram`,BO={id:zO,detector:s((e,t)=>/^\s*classDiagram/.test(e)&&t?.class?.defaultRenderer===`dagre-wrapper`?!0:/^\s*classDiagram-v2/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./classDiagram-v2-JRS7N3AN-DLFd9Xi0.js`);return{diagram:e}},__vite__mapDeps([35,8,34,13,10,14]),import.meta.url);return{id:zO,diagram:e}},`loader`)},VO=`state`,HO={id:VO,detector:s((e,t)=>t?.state?.defaultRenderer===`dagre-wrapper`?!1:/^\s*stateDiagram/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./stateDiagram-HBIQ2CUA-DvA3jSMB.js`);return{diagram:e}},__vite__mapDeps([36,4,8,37,10,14]),import.meta.url);return{id:VO,diagram:e}},`loader`)},UO=`stateDiagram`,WO={id:UO,detector:s((e,t)=>!!(/^\s*stateDiagram-v2/.test(e)||/^\s*stateDiagram/.test(e)&&t?.state?.defaultRenderer===`dagre-wrapper`),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./stateDiagram-v2-4QOOHH4V-BgQY03nz.js`);return{diagram:e}},__vite__mapDeps([38,8,37,10,14]),import.meta.url);return{id:UO,diagram:e}},`loader`)},GO=`journey`,KO={id:GO,detector:s(e=>/^\s*journey/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./journeyDiagram-EYS64GPL-DutxhSNI.js`);return{diagram:e}},__vite__mapDeps([39,28,13,8]),import.meta.url);return{id:GO,diagram:e}},`loader`)},qO={draw:s((e,t,n)=>{f.debug(`rendering svg for syntax error -`);let r=pu(t),i=r.append(`g`);r.attr(`viewBox`,`0 0 2412 512`),fr(r,100,512,!0),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z`),i.append(`text`).attr(`class`,`error-text`).attr(`x`,1440).attr(`y`,250).attr(`font-size`,`150px`).style(`text-anchor`,`middle`).text(`Syntax error in text`),i.append(`text`).attr(`class`,`error-text`).attr(`x`,1250).attr(`y`,400).attr(`font-size`,`100px`).style(`text-anchor`,`middle`).text(`mermaid version ${n}`)},`draw`)},JO=qO,YO={db:{},renderer:qO,parser:{parse:s(()=>{},`parse`)}},XO=`flowchart-elk`,ZO={id:XO,detector:s((e,t={})=>/^\s*flowchart-elk/.test(e)||/^\s*(flowchart|graph)/.test(e)&&t?.flowchart?.defaultRenderer===`elk`?(t.layout=`elk`,!0):!1,`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./flowDiagram-A5DVABFB-BBKL0x3P.js`);return{diagram:e}},__vite__mapDeps([9,8,10,11,12,13,14]),import.meta.url);return{id:XO,diagram:e}},`loader`)},QO=`timeline`,$O={id:QO,detector:s(e=>/^\s*timeline/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./timeline-definition-24CTP7MA-DAVJf1TX.js`);return{diagram:e}},__vite__mapDeps([40,28]),import.meta.url);return{id:QO,diagram:e}},`loader`)},ek=`mindmap`,tk={id:ek,detector:s(e=>/^\s*mindmap/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./mindmap-definition-FBJOCRG2-9-HC88D4.js`);return{diagram:e}},__vite__mapDeps([41,10,14]),import.meta.url);return{id:ek,diagram:e}},`loader`)},nk=`kanban`,rk={id:nk,detector:s(e=>/^\s*kanban/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./kanban-definition-3QL26DDD-DJdOF8Fm.js`);return{diagram:e}},__vite__mapDeps([42,13]),import.meta.url);return{id:nk,diagram:e}},`loader`)},ik=`sankey`,ak={id:ik,detector:s(e=>/^\s*sankey(-beta)?/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./sankeyDiagram-P5KCCOFB-CPH75rhw.js`);return{diagram:e}},__vite__mapDeps([43,27,24]),import.meta.url);return{id:ik,diagram:e}},`loader`)},ok=`packet`,sk={id:ok,detector:s(e=>/^\s*packet(-beta)?/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./diagram-Z3DM3KII-Du-nAJ9F.js`);return{diagram:e}},__vite__mapDeps([44,18,1,2,20]),import.meta.url);return{id:ok,diagram:e}},`loader`)},ck=`radar`,lk={id:ck,detector:s(e=>/^\s*radar-beta/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./diagram-UQ7AKVKN-DSCxJdBK.js`);return{diagram:e}},__vite__mapDeps([45,18,1,2,20]),import.meta.url);return{id:ck,diagram:e}},`loader`)},uk=`block`,dk={id:uk,detector:s(e=>/^\s*block(-beta)?/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./blockDiagram-NRAW4CY4-BjkljTNz.js`);return{diagram:e}},__vite__mapDeps([46,12,13]),import.meta.url);return{id:uk,diagram:e}},`loader`)},fk=`treeView`,pk={id:fk,detector:s(e=>/^\s*treeView-beta/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./diagram-S7CK7UJ4-Bt1v8-GC.js`);return{diagram:e}},__vite__mapDeps([47,18,1,2,19,20]),import.meta.url);return{id:fk,diagram:e}},`loader`)},mk=`architecture`,hk={id:mk,detector:s(e=>/^\s*architecture/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./architectureDiagram-5GKGNRK7-DpIqL5h4.js`);return{diagram:e}},__vite__mapDeps([48,1,2,18,6,20]),import.meta.url);return{id:mk,diagram:e}},`loader`)},gk=`eventmodeling`,_k={id:gk,detector:s(e=>/^\s*eventmodeling/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./diagram-VSXAHHWV-DHfYwp_9.js`);return{diagram:e}},__vite__mapDeps([49,18,1,2,20]),import.meta.url);return{id:gk,diagram:e}},`loader`)},vk=`ishikawa`,yk={id:vk,detector:s(e=>/^\s*ishikawa(-beta)?\b/i.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./ishikawaDiagram-5VMMS53U-DWya9SG2.js`);return{diagram:e}},[],import.meta.url);return{id:vk,diagram:e}},`loader`)},bk=`venn`,xk={id:bk,detector:s(e=>/^\s*venn-beta/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./vennDiagram-4TSXK5OY-DwM8eDkh.js`);return{diagram:e}},[],import.meta.url);return{id:bk,diagram:e}},`loader`)},Sk=`treemap`,Ck={id:Sk,detector:s(e=>/^\s*treemap/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./diagram-VX7I27RA-DdzD-4Le.js`);return{diagram:e}},__vite__mapDeps([50,18,1,2,23,27,24,20,10]),import.meta.url);return{id:Sk,diagram:e}},`loader`)},wk=`wardley`,Tk={id:wk,detector:s(e=>/^\s*wardley-beta/i.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./wardleyDiagram-VM6X3IG4-DZL-Zz2t.js`);return{diagram:e}},__vite__mapDeps([51,18,1,2,20]),import.meta.url);return{id:wk,diagram:e}},`loader`)},Ek=`cynefin`,Dk={id:Ek,detector:s(e=>/^\s*cynefin-beta(?:[\s:]|$)/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./cynefinDiagram-5FMLGOSQ-ErLF5N13.js`);return{diagram:e}},__vite__mapDeps([52,18,1,2,20]),import.meta.url);return{id:Ek,diagram:e}},`loader`)},Ok=`railroad`,kk={id:Ok,detector:s(e=>/^\s*railroad-beta/i.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./railroadDiagram-O6MQD6OU-_Y3Ojg6G.js`);return{diagram:e}},__vite__mapDeps([53,18,1,2,20,54]),import.meta.url);return{id:Ok,diagram:e}},`loader`)},Ak=`railroadEbnf`,jk={id:Ak,detector:s(e=>/^\s*railroad-ebnf-beta/i.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./ebnfDiagram-PWID7BFC-Da9C9NO1.js`);return{diagram:e}},__vite__mapDeps([55,18,1,2,20,54]),import.meta.url);return{id:Ak,diagram:e}},`loader`)},Mk=`railroadAbnf`,Nk={id:Mk,detector:s(e=>/^\s*railroad-abnf-beta/i.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./abnfDiagram-VCTEODGH-g20pFzNV.js`);return{diagram:e}},__vite__mapDeps([56,18,1,2,20,54]),import.meta.url);return{id:Mk,diagram:e}},`loader`)},Pk=`railroadPeg`,Fk={id:Pk,detector:s(e=>/^\s*railroad-peg-beta/i.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./pegDiagram-XKGWAZYB-DrEZd4fD.js`);return{diagram:e}},__vite__mapDeps([57,18,1,2,20,54]),import.meta.url);return{id:Pk,diagram:e}},`loader`)},Ik=!1,Lk=s(()=>{Ik||(Ik=!0,zr(`error`,YO,e=>e.toLowerCase().trim()===`error`),zr(`---`,{db:{clear:s(()=>{},`clear`)},styles:{},renderer:{draw:s(()=>{},`draw`)},parser:{parse:s(()=>{throw Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},`parse`)},init:s(()=>null,`init`)},e=>e.toLowerCase().trimStart().startsWith(`---`)),Fn(ZO,tk,hk),Fn(fO,rk,BO,RO,bO,wO,EO,OO,PO,IO,vO,gO,mO,$O,SO,WO,HO,KO,AO,ak,sk,MO,dk,_k,pk,lk,yk,Ck,kk,jk,Nk,Fk,xk,Tk,Dk))},`addDiagrams`),Rk=s(async()=>{f.debug(`Loading registered diagrams`);let e=(await Promise.allSettled(Object.entries(Nn).map(async([e,{detector:t,loader:n}])=>{if(n)try{Br(e)}catch{try{let{diagram:e,id:r}=await n();zr(r,e,t)}catch(t){throw f.error(`Failed to load external diagram with key ${e}. Removing from detectors.`),delete Nn[e],t}}}))).filter(e=>e.status===`rejected`);if(e.length>0){f.error(`Failed to load ${e.length} external diagrams`);for(let t of e)f.error(t);throw Error(`Failed to load ${e.length} external diagrams`)}},`loadRegisteredDiagrams`),zk=`graphics-document document`;function Bk(e,t){e.attr(`role`,zk),t!==``&&e.attr(`aria-roledescription`,t)}s(Bk,`setA11yDiagramInfo`);function Vk(e,t,n,r){if(e.insert!==void 0){if(n){let t=`chart-desc-${r}`;e.attr(`aria-describedby`,t),e.insert(`desc`,`:first-child`).attr(`id`,t).text(n)}if(t){let n=`chart-title-${r}`;e.attr(`aria-labelledby`,n),e.insert(`title`,`:first-child`).attr(`id`,n).text(t)}}}s(Vk,`addSVGa11yTitleDescription`);var Hk=class e{constructor(e,t,n,r,i){this.type=e,this.text=t,this.db=n,this.parser=r,this.renderer=i}static{s(this,`Diagram`)}static async fromText(t,n={}){let r=z(),i=Pn(t,r);t=kf(t)+` +`:``}return s(P,`dump2`),$E.dump=P,$E}s(tD,`requireDumper`);var nD;function rD(){if(nD)return LT;nD=1;let e=QE(),t=tD();function n(e,t){return function(){throw Error(`Function yaml.`+e+` is removed in js-yaml 4. Use yaml.`+t+` instead, which is now safe by default.`)}}return s(n,`renamed`),LT.Type=XT(),LT.Schema=$T(),LT.FAILSAFE_SCHEMA=dE(),LT.JSON_SCHEMA=EE(),LT.CORE_SCHEMA=kE(),LT.DEFAULT_SCHEMA=XE(),LT.load=e.load,LT.loadAll=e.loadAll,LT.dump=t.dump,LT.YAMLException=WT(),LT.types={binary:RE(),float:CE(),map:cE(),null:mE(),pairs:WE(),set:qE(),timestamp:ME(),bool:_E(),int:bE(),merge:FE(),omap:VE(),seq:aE(),str:nE()},LT.safeLoad=n(`safeLoad`,`load`),LT.safeLoadAll=n(`safeLoadAll`,`loadAll`),LT.safeDump=n(`safeDump`,`dump`),LT}s(rD,`requireJsYaml`);var{Type:iD,Schema:aD,FAILSAFE_SCHEMA:oD,JSON_SCHEMA:sD,CORE_SCHEMA:cD,DEFAULT_SCHEMA:lD,load:uD,loadAll:dD,dump:fD,YAMLException:pD,types:mD,safeLoad:hD,safeLoadAll:gD,safeDump:_D}=IT(rD()),vD=`comm`,yD=`rule`,bD=`decl`,xD=`@import`,SD=`@namespace`,CD=`@keyframes`,wD=`@layer`,TD=Math.abs,ED=String.fromCharCode;function DD(e){return e.trim()}function OD(e,t,n){return e.replace(t,n)}function kD(e,t,n){return e.indexOf(t,n)}function AD(e,t){return e.charCodeAt(t)|0}function jD(e,t,n){return e.slice(t,n)}function MD(e){return e.length}function ND(e){return e.length}function PD(e,t){return t.push(e),e}var FD=1,ID=1,LD=0,RD=0,zD=0,BD=``;function VD(e,t,n,r,i,a,o,s){return{value:e,root:t,parent:n,type:r,props:i,children:a,line:FD,column:ID,length:o,return:``,siblings:s}}function HD(){return zD}function UD(){return zD=RD>0?AD(BD,--RD):0,ID--,zD===10&&(ID=1,FD--),zD}function WD(){return zD=RD2||JD(zD)>3?``:` `}function $D(e,t){for(;--t&&WD()&&!(zD<48||zD>102||zD>57&&zD<65||zD>70&&zD<97););return qD(e,KD()+(t<6&&GD()==32&&WD()==32))}function eO(e){for(;WD();)switch(zD){case e:return RD;case 34:case 39:e!==34&&e!==39&&eO(zD);break;case 40:e===41&&eO(e);break;case 92:WD();break}return RD}function tO(e,t){for(;WD()&&e+zD!==57&&!(e+zD===84&&GD()===47););return`/*`+qD(t,RD-1)+`*`+ED(e===47?e:WD())}function nO(e){for(;!JD(GD());)WD();return qD(e,RD)}function rO(e){return XD(iO(``,null,null,null,[``],e=YD(e),0,[0],e))}function iO(e,t,n,r,i,a,o,s,c){for(var l=0,u=0,d=o,f=0,p=0,m=0,h=1,g=1,_=1,v=0,y=``,b=i,x=a,S=r,C=y;g;)switch(m=v,v=WD()){case 40:if(m!=108&&AD(C,d-1)==58){kD(C+=OD(ZD(v),`&`,`&\f`),`&\f`,TD(l?s[l-1]:0))!=-1&&(_=-1);break}case 34:case 39:case 91:C+=ZD(v);break;case 9:case 10:case 13:case 32:C+=QD(m);break;case 92:C+=$D(KD()-1,7);continue;case 47:switch(GD()){case 42:case 47:PD(oO(tO(WD(),KD()),t,n,c),c),(JD(m||1)==5||JD(GD()||1)==5)&&MD(C)&&jD(C,-1,void 0)!==` `&&(C+=` `);break;default:C+=`/`}break;case 123*h:s[l++]=MD(C)*_;case 125*h:case 59:case 0:switch(v){case 0:case 125:g=0;case 59+u:_==-1&&(C=OD(C,/\f/g,``)),p>0&&(MD(C)-d||h===0&&m===47)&&PD(p>32?sO(C+`;`,r,n,d-1,c):sO(OD(C,` `,``)+`;`,r,n,d-2,c),c);break;case 59:C+=`;`;default:if(PD(S=aO(C,t,n,l,u,i,s,y,b=[],x=[],d,a),a),v===123)if(u===0)iO(C,t,S,S,b,a,d,s,x);else{switch(f){case 99:if(AD(C,3)===110)break;case 108:if(AD(C,2)===97)break;default:u=0;case 100:case 109:case 115:}u?iO(e,S,S,r&&PD(aO(e,S,S,0,0,i,s,y,i,b=[],d,x),x),i,x,d,s,r?b:x):iO(C,S,S,S,[``],x,0,s,x)}}l=u=p=0,h=_=1,y=C=``,d=o;break;case 58:d=1+MD(C),p=m;default:if(h<1){if(v==123)--h;else if(v==125&&h++==0&&UD()==125)continue}switch(C+=ED(v),v*h){case 38:_=u>0?1:(C+=`\f`,-1);break;case 44:s[l++]=(MD(C)-1)*_,_=1;break;case 64:GD()===45&&(C+=ZD(WD())),f=GD(),u=d=MD(y=C+=nO(KD())),v++;break;case 45:m===45&&MD(C)==2&&(h=0)}}return a}function aO(e,t,n,r,i,a,o,s,c,l,u,d){for(var f=i-1,p=i===0?a:[``],m=ND(p),h=0,g=0,_=0;h0?p[v]+` `+y:OD(y,/&\f/g,p[v])))&&(c[_++]=b);return VD(e,t,n,i===0?yD:s,c,l,u,d)}function oO(e,t,n,r){return VD(e,t,n,vD,ED(HD()),jD(e,2,-2),0,r)}function sO(e,t,n,r,i){return VD(e,t,n,bD,jD(e,0,r),jD(e,r+1,-1),r,i)}function cO(e,t){for(var n=``,r=0;r/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./c4Diagram-UCG6FXSJ-zrSgZM44.js`);return{diagram:e}},__vite__mapDeps([7,8]),import.meta.url);return{id:dO,diagram:e}},`loader`)},pO=`flowchart`,mO={id:pO,detector:s((e,t)=>t?.flowchart?.defaultRenderer===`dagre-wrapper`||t?.flowchart?.defaultRenderer===`elk`?!1:/^\s*graph/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./flowDiagram-A5DVABFB-CvJ64Qzs.js`);return{diagram:e}},__vite__mapDeps([9,8,10,11,12,13,14]),import.meta.url);return{id:pO,diagram:e}},`loader`)},hO=`flowchart-v2`,gO={id:hO,detector:s((e,t)=>t?.flowchart?.defaultRenderer===`dagre-d3`?!1:(t?.flowchart?.defaultRenderer===`elk`&&(t.layout=`elk`),/^\s*graph/.test(e)&&t?.flowchart?.defaultRenderer===`dagre-wrapper`?!0:/^\s*flowchart/.test(e)),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./flowDiagram-A5DVABFB-CvJ64Qzs.js`);return{diagram:e}},__vite__mapDeps([9,8,10,11,12,13,14]),import.meta.url);return{id:hO,diagram:e}},`loader`)},_O=`swimlane`,vO={id:_O,detector:s(e=>/^\s*swimlane-beta\b/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./swimlanesDiagram-VK2B7HYN-A-oZaquE.js`);return{diagram:e}},__vite__mapDeps([15,8,10,11,12,13,14]),import.meta.url);return{id:_O,diagram:e}},`loader`)},yO=`er`,bO={id:yO,detector:s(e=>/^\s*erDiagram/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./erDiagram-SSCWMZ5O-JvDkJGJ3.js`);return{diagram:e}},__vite__mapDeps([16,12,10,14]),import.meta.url);return{id:yO,diagram:e}},`loader`)},xO=`gitGraph`,SO={id:xO,detector:s(e=>/^\s*gitGraph/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./gitGraphDiagram-WWUBYQGX-D7OJf_No.js`);return{diagram:e}},__vite__mapDeps([17,18,1,2,19,20]),import.meta.url);return{id:xO,diagram:e}},`loader`)},CO=`gantt`,wO={id:CO,detector:s(e=>/^\s*gantt/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./ganttDiagram-EL5Y4UJY-B-SEC706.js`);return{diagram:e}},__vite__mapDeps([21,1,2,22,23,24]),import.meta.url);return{id:CO,diagram:e}},`loader`)},TO=`info`,EO={id:TO,detector:s(e=>/^\s*info/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./infoDiagram-RXCK75RN-CTIHOSud.js`);return{diagram:e}},__vite__mapDeps([25,18,1,2]),import.meta.url);return{id:TO,diagram:e}},`loader`)},DO=`pie`,OO={id:DO,detector:s(e=>/^\s*pie/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./pieDiagram-E7YTZNPT-DQ2yX4VQ.js`);return{diagram:e}},__vite__mapDeps([26,18,1,2,27,24,28,20]),import.meta.url);return{id:DO,diagram:e}},`loader`)},kO=`quadrantChart`,AO={id:kO,detector:s(e=>/^\s*quadrantChart/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./quadrantDiagram-AXDQQJYC-rvRPUN0j.js`);return{diagram:e}},__vite__mapDeps([29,22,23,24]),import.meta.url);return{id:kO,diagram:e}},`loader`)},jO=`xychart`,MO={id:jO,detector:s(e=>/^\s*xychart(-beta)?/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./xychartDiagram-S5SC5T6Z-BlBLXETg.js`);return{diagram:e}},__vite__mapDeps([30,22,23,24,27]),import.meta.url);return{id:jO,diagram:e}},`loader`)},NO=`requirement`,PO={id:NO,detector:s(e=>/^\s*requirement(Diagram)?/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./requirementDiagram-EFPCY7ZU-ChWVLAKz.js`);return{diagram:e}},__vite__mapDeps([31,10,14]),import.meta.url);return{id:NO,diagram:e}},`loader`)},FO=`sequence`,IO={id:FO,detector:s(e=>/^\s*sequenceDiagram/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./sequenceDiagram-WJ2MYXX4-D7g_-PUM.js`);return{diagram:e}},__vite__mapDeps([32,19,8]),import.meta.url);return{id:FO,diagram:e}},`loader`)},LO=`class`,RO={id:LO,detector:s((e,t)=>t?.class?.defaultRenderer===`dagre-wrapper`?!1:/^\s*classDiagram/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./classDiagram-DTDB5LWJ-C0BU8Yr9.js`);return{diagram:e}},__vite__mapDeps([33,8,34,13,10,14]),import.meta.url);return{id:LO,diagram:e}},`loader`)},zO=`classDiagram`,BO={id:zO,detector:s((e,t)=>/^\s*classDiagram/.test(e)&&t?.class?.defaultRenderer===`dagre-wrapper`?!0:/^\s*classDiagram-v2/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./classDiagram-v2-JRS7N3AN-C0BU8Yr9.js`);return{diagram:e}},__vite__mapDeps([35,8,34,13,10,14]),import.meta.url);return{id:zO,diagram:e}},`loader`)},VO=`state`,HO={id:VO,detector:s((e,t)=>t?.state?.defaultRenderer===`dagre-wrapper`?!1:/^\s*stateDiagram/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./stateDiagram-HBIQ2CUA-CpKIc0dl.js`);return{diagram:e}},__vite__mapDeps([36,4,8,37,10,14]),import.meta.url);return{id:VO,diagram:e}},`loader`)},UO=`stateDiagram`,WO={id:UO,detector:s((e,t)=>!!(/^\s*stateDiagram-v2/.test(e)||/^\s*stateDiagram/.test(e)&&t?.state?.defaultRenderer===`dagre-wrapper`),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./stateDiagram-v2-4QOOHH4V-D7ulg6TV.js`);return{diagram:e}},__vite__mapDeps([38,8,37,10,14]),import.meta.url);return{id:UO,diagram:e}},`loader`)},GO=`journey`,KO={id:GO,detector:s(e=>/^\s*journey/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./journeyDiagram-EYS64GPL-DeFbDr5t.js`);return{diagram:e}},__vite__mapDeps([39,28,13,8]),import.meta.url);return{id:GO,diagram:e}},`loader`)},qO={draw:s((e,t,n)=>{f.debug(`rendering svg for syntax error +`);let r=pu(t),i=r.append(`g`);r.attr(`viewBox`,`0 0 2412 512`),fr(r,100,512,!0),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z`),i.append(`path`).attr(`class`,`error-icon`).attr(`d`,`m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z`),i.append(`text`).attr(`class`,`error-text`).attr(`x`,1440).attr(`y`,250).attr(`font-size`,`150px`).style(`text-anchor`,`middle`).text(`Syntax error in text`),i.append(`text`).attr(`class`,`error-text`).attr(`x`,1250).attr(`y`,400).attr(`font-size`,`100px`).style(`text-anchor`,`middle`).text(`mermaid version ${n}`)},`draw`)},JO=qO,YO={db:{},renderer:qO,parser:{parse:s(()=>{},`parse`)}},XO=`flowchart-elk`,ZO={id:XO,detector:s((e,t={})=>/^\s*flowchart-elk/.test(e)||/^\s*(flowchart|graph)/.test(e)&&t?.flowchart?.defaultRenderer===`elk`?(t.layout=`elk`,!0):!1,`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./flowDiagram-A5DVABFB-CvJ64Qzs.js`);return{diagram:e}},__vite__mapDeps([9,8,10,11,12,13,14]),import.meta.url);return{id:XO,diagram:e}},`loader`)},QO=`timeline`,$O={id:QO,detector:s(e=>/^\s*timeline/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./timeline-definition-24CTP7MA-Dg4AY0KC.js`);return{diagram:e}},__vite__mapDeps([40,28]),import.meta.url);return{id:QO,diagram:e}},`loader`)},ek=`mindmap`,tk={id:ek,detector:s(e=>/^\s*mindmap/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./mindmap-definition-FBJOCRG2-D-XtspHN.js`);return{diagram:e}},__vite__mapDeps([41,10,14]),import.meta.url);return{id:ek,diagram:e}},`loader`)},nk=`kanban`,rk={id:nk,detector:s(e=>/^\s*kanban/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./kanban-definition-3QL26DDD-D3OeNqXY.js`);return{diagram:e}},__vite__mapDeps([42,13]),import.meta.url);return{id:nk,diagram:e}},`loader`)},ik=`sankey`,ak={id:ik,detector:s(e=>/^\s*sankey(-beta)?/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./sankeyDiagram-P5KCCOFB-Cb5gXi_j.js`);return{diagram:e}},__vite__mapDeps([43,27,24]),import.meta.url);return{id:ik,diagram:e}},`loader`)},ok=`packet`,sk={id:ok,detector:s(e=>/^\s*packet(-beta)?/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./diagram-Z3DM3KII-mhpvOavV.js`);return{diagram:e}},__vite__mapDeps([44,18,1,2,20]),import.meta.url);return{id:ok,diagram:e}},`loader`)},ck=`radar`,lk={id:ck,detector:s(e=>/^\s*radar-beta/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./diagram-UQ7AKVKN-BXz7DvIg.js`);return{diagram:e}},__vite__mapDeps([45,18,1,2,20]),import.meta.url);return{id:ck,diagram:e}},`loader`)},uk=`block`,dk={id:uk,detector:s(e=>/^\s*block(-beta)?/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./blockDiagram-NRAW4CY4-BEhGFh0b.js`);return{diagram:e}},__vite__mapDeps([46,12,13]),import.meta.url);return{id:uk,diagram:e}},`loader`)},fk=`treeView`,pk={id:fk,detector:s(e=>/^\s*treeView-beta/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./diagram-S7CK7UJ4-BQ1slPEx.js`);return{diagram:e}},__vite__mapDeps([47,18,1,2,19,20]),import.meta.url);return{id:fk,diagram:e}},`loader`)},mk=`architecture`,hk={id:mk,detector:s(e=>/^\s*architecture/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./architectureDiagram-5GKGNRK7-tZ3w1B6m.js`);return{diagram:e}},__vite__mapDeps([48,1,2,18,6,20]),import.meta.url);return{id:mk,diagram:e}},`loader`)},gk=`eventmodeling`,_k={id:gk,detector:s(e=>/^\s*eventmodeling/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./diagram-VSXAHHWV-DOno97OL.js`);return{diagram:e}},__vite__mapDeps([49,18,1,2,20]),import.meta.url);return{id:gk,diagram:e}},`loader`)},vk=`ishikawa`,yk={id:vk,detector:s(e=>/^\s*ishikawa(-beta)?\b/i.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./ishikawaDiagram-5VMMS53U-HMO7FchJ.js`);return{diagram:e}},[],import.meta.url);return{id:vk,diagram:e}},`loader`)},bk=`venn`,xk={id:bk,detector:s(e=>/^\s*venn-beta/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./vennDiagram-4TSXK5OY-A6cRoCBU.js`);return{diagram:e}},[],import.meta.url);return{id:bk,diagram:e}},`loader`)},Sk=`treemap`,Ck={id:Sk,detector:s(e=>/^\s*treemap/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./diagram-VX7I27RA-CU2kHvv3.js`);return{diagram:e}},__vite__mapDeps([50,18,1,2,23,27,24,20,10]),import.meta.url);return{id:Sk,diagram:e}},`loader`)},wk=`wardley`,Tk={id:wk,detector:s(e=>/^\s*wardley-beta/i.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./wardleyDiagram-VM6X3IG4-BVD1hMYl.js`);return{diagram:e}},__vite__mapDeps([51,18,1,2,20]),import.meta.url);return{id:wk,diagram:e}},`loader`)},Ek=`cynefin`,Dk={id:Ek,detector:s(e=>/^\s*cynefin-beta(?:[\s:]|$)/.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./cynefinDiagram-5FMLGOSQ-Ci9qjtA_.js`);return{diagram:e}},__vite__mapDeps([52,18,1,2,20]),import.meta.url);return{id:Ek,diagram:e}},`loader`)},Ok=`railroad`,kk={id:Ok,detector:s(e=>/^\s*railroad-beta/i.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./railroadDiagram-O6MQD6OU-2OVn6qwA.js`);return{diagram:e}},__vite__mapDeps([53,18,1,2,20,54]),import.meta.url);return{id:Ok,diagram:e}},`loader`)},Ak=`railroadEbnf`,jk={id:Ak,detector:s(e=>/^\s*railroad-ebnf-beta/i.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./ebnfDiagram-PWID7BFC-DAH8tjOy.js`);return{diagram:e}},__vite__mapDeps([55,18,1,2,20,54]),import.meta.url);return{id:Ak,diagram:e}},`loader`)},Mk=`railroadAbnf`,Nk={id:Mk,detector:s(e=>/^\s*railroad-abnf-beta/i.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./abnfDiagram-VCTEODGH-CNsXewmF.js`);return{diagram:e}},__vite__mapDeps([56,18,1,2,20,54]),import.meta.url);return{id:Mk,diagram:e}},`loader`)},Pk=`railroadPeg`,Fk={id:Pk,detector:s(e=>/^\s*railroad-peg-beta/i.test(e),`detector`),loader:s(async()=>{let{diagram:e}=await r(async()=>{let{diagram:e}=await import(`./pegDiagram-XKGWAZYB-BYbAq9Nb.js`);return{diagram:e}},__vite__mapDeps([57,18,1,2,20,54]),import.meta.url);return{id:Pk,diagram:e}},`loader`)},Ik=!1,Lk=s(()=>{Ik||(Ik=!0,zr(`error`,YO,e=>e.toLowerCase().trim()===`error`),zr(`---`,{db:{clear:s(()=>{},`clear`)},styles:{},renderer:{draw:s(()=>{},`draw`)},parser:{parse:s(()=>{throw Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},`parse`)},init:s(()=>null,`init`)},e=>e.toLowerCase().trimStart().startsWith(`---`)),Fn(ZO,tk,hk),Fn(fO,rk,BO,RO,bO,wO,EO,OO,PO,IO,vO,gO,mO,$O,SO,WO,HO,KO,AO,ak,sk,MO,dk,_k,pk,lk,yk,Ck,kk,jk,Nk,Fk,xk,Tk,Dk))},`addDiagrams`),Rk=s(async()=>{f.debug(`Loading registered diagrams`);let e=(await Promise.allSettled(Object.entries(Nn).map(async([e,{detector:t,loader:n}])=>{if(n)try{Br(e)}catch{try{let{diagram:e,id:r}=await n();zr(r,e,t)}catch(t){throw f.error(`Failed to load external diagram with key ${e}. Removing from detectors.`),delete Nn[e],t}}}))).filter(e=>e.status===`rejected`);if(e.length>0){f.error(`Failed to load ${e.length} external diagrams`);for(let t of e)f.error(t);throw Error(`Failed to load ${e.length} external diagrams`)}},`loadRegisteredDiagrams`),zk=`graphics-document document`;function Bk(e,t){e.attr(`role`,zk),t!==``&&e.attr(`aria-roledescription`,t)}s(Bk,`setA11yDiagramInfo`);function Vk(e,t,n,r){if(e.insert!==void 0){if(n){let t=`chart-desc-${r}`;e.attr(`aria-describedby`,t),e.insert(`desc`,`:first-child`).attr(`id`,t).text(n)}if(t){let n=`chart-title-${r}`;e.attr(`aria-labelledby`,n),e.insert(`title`,`:first-child`).attr(`id`,n).text(t)}}}s(Vk,`addSVGa11yTitleDescription`);var Hk=class e{constructor(e,t,n,r,i){this.type=e,this.text=t,this.db=n,this.parser=r,this.renderer=i}static{s(this,`Diagram`)}static async fromText(t,n={}){let r=z(),i=Pn(t,r);t=kf(t)+` `;try{Br(i)}catch{let e=Ln(i);if(!e)throw new Mn(`Diagram ${i} not found.`);let{id:t,diagram:n}=await e();zr(t,n)}let{db:a,parser:o,renderer:s,init:c}=Br(i);return o.parser&&(o.parser.yy=a),a.clear?.(),c?.(r),n.title&&a.setDiagramTitle?.(n.title),await o.parse(t),new e(i,t,a,o,s)}async render(e,t){await this.renderer.draw(this.text,e,t,this)}getParser(){return this.parser}getType(){return this.type}},Uk=[],Wk=s(()=>{Uk.forEach(e=>{e()}),Uk=[]},`attachFunctions`),Gk=s(e=>e.replace(/^\s*%%(?!{)[^\n]+\n?/gm,``).trimStart(),`cleanupComments`);function Kk(e){let t=e.match(kn);if(!t)return{text:e,metadata:{}};let n=t[1],r=uD(n?t[2].split(` `).map(e=>e.startsWith(n)?e.slice(n.length):e).join(` `):t[2],{schema:sD})??{};r=typeof r==`object`&&!Array.isArray(r)?r:{};let i={};return r.displayMode&&(i.displayMode=r.displayMode.toString()),r.title&&(i.title=r.title.toString()),r.config&&(i.config=r.config),{text:e.slice(t[0].length),metadata:i}}s(Kk,`extractFrontMatter`);var qk=s(e=>e.replace(/\r\n?/g,` diff --git a/ksadk/server/static/assets/NativeTerminalPanel-DUrK0JpZ.js b/ksadk/server/static/assets/NativeTerminalPanel-Czpx2MSS.js similarity index 99% rename from ksadk/server/static/assets/NativeTerminalPanel-DUrK0JpZ.js rename to ksadk/server/static/assets/NativeTerminalPanel-Czpx2MSS.js index d1be5378..3150e136 100644 --- a/ksadk/server/static/assets/NativeTerminalPanel-DUrK0JpZ.js +++ b/ksadk/server/static/assets/NativeTerminalPanel-Czpx2MSS.js @@ -1 +1 @@ -import{St as e,Tt as t,W as n,bt as r,dt as i,ft as a,lt as o,mt as s,pt as c,ut as l,yt as u}from"./index-8ipRcQ-M.js";var d=u(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),f=u(`plug-zap`,[[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m18 3-4 4h6l-4 4`,key:`16psg9`}]]),p=t(e(),1),m=`/_ksadk/terminal/sessions`,h=/\x1b\](?:10|11|12);(?:rgb:)?[0-9a-fA-F]{1,4}\/[0-9a-fA-F]{1,4}\/[0-9a-fA-F]{1,4}(?:\x07|\x1b\\)/g,g=/\]1[012];(?:rgb:)?[0-9a-fA-F]{1,4}\/[0-9a-fA-F]{1,4}\/[0-9a-fA-F]{1,4}/g;function _(e,t){let n=Number(e);return Number.isFinite(n)&&n>0?Math.floor(n):t}function v(e){let t=Date.parse(String(e?.updated_at||e?.UpdatedAt||``));return Number.isNaN(t)?0:t}function y(e={}){let t={mode:String(e.mode||`tui`).trim()||`tui`,cols:_(e.cols,80),rows:_(e.rows,24)},n=String(e.sessionId||e.session_id||``).trim();n&&(t.session_id=n);let r=String(e.cwd||``).trim();return r&&(t.cwd=r),e.options&&typeof e.options==`object`&&(t.options=e.options),(e.forceNew===!0||e.force_new===!0)&&(t.force_new=!0),t}function b(e={},t){let n=t||(typeof window<`u`?window.location:{href:`http://localhost/`}),r=new URL(m,n.href||`http://localhost/`),i=String(e.sessionId||e.session_id||``).trim();i&&r.searchParams.set(`session_id`,i);let a=String(e.mode||``).trim();return a&&r.searchParams.set(`mode`,a),r.pathname+r.search}function x(e){return(Array.isArray(e?.sessions)?e.sessions:Array.isArray(e?.Sessions)?e.Sessions:[]).map(e=>({terminal_session_id:String(e?.terminal_session_id||e?.TerminalSessionId||``).trim(),mode:String(e?.mode||e?.Mode||`tui`).trim()||`tui`,status:String(e?.status||e?.Status||`closed`).trim()||`closed`,cols:_(e?.cols??e?.Cols,80),rows:_(e?.rows??e?.Rows,24),session_id:String(e?.session_id||e?.SessionId||``).trim(),cwd:String(e?.cwd||e?.Cwd||``).trim(),created_at:e?.created_at||e?.CreatedAt||``,updated_at:e?.updated_at||e?.UpdatedAt||``,exit_code:e?.exit_code??e?.ExitCode??null})).filter(e=>e.terminal_session_id).filter(e=>e.status!==`closed`&&e.status!==`deleted`).sort((e,t)=>{let n=+(e.status===`running`),r=+(t.status===`running`);return n===r?v(t)-v(e):r-n})}function S(e=`/_ksadk/terminal/ws`,t,n){let r=n||(typeof window<`u`?window.location:{href:`http://localhost/`,protocol:`http:`}),i=new URL(e||`/_ksadk/terminal/ws`,r.href||`http://localhost/`);i.protocol=i.protocol===`https:`?`wss:`:`ws:`;let a=String(t||``).trim();return a&&i.searchParams.set(`terminal_session_id`,a),i.toString()}function C(e){return String(e||``).replace(h,``).replace(g,``)}var w=r(),T=2e4;function E(e){return typeof e==`string`?Promise.resolve(e):e instanceof Blob?e.text():Promise.resolve(new TextDecoder().decode(e))}async function D(e){let t=await e.text();if(!t)return{};try{return JSON.parse(t)}catch{return{}}}function O({capability:e,open:t,onClose:r,sessionId:u,autoCreateWhenEmpty:h=!0}){let[g,_]=(0,p.useState)(`idle`),[v,O]=(0,p.useState)([]),[k,A]=(0,p.useState)(null),[j,M]=(0,p.useState)(!1),N=(0,p.useRef)(null),P=(0,p.useRef)(null),F=(0,p.useRef)(null),I=(0,p.useRef)(null),L=(0,p.useRef)([]),R=(0,p.useRef)(null),z=(0,p.useRef)(!1),B=(0,p.useMemo)(()=>v.find(e=>e.terminal_session_id===k)||null,[k,v]),V=(0,p.useCallback)(async({forceNew:t=!1}={})=>{z.current=!0,_(`connecting`);let n=await fetch(m,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(y({mode:e.Mode||`tui`,sessionId:u,forceNew:t}))});if(!n.ok){_(`error`);return}let r=(await D(n))?.session;if(!r?.terminal_session_id){_(`error`);return}await R.current?.(),A(r.terminal_session_id)},[e.Mode,u]),H=(0,p.useCallback)(async()=>{M(!0);try{let n=await fetch(b({sessionId:u,mode:e.Mode||`tui`}));if(!n.ok)throw Error(`HTTP ${n.status}`);let r=x(await D(n));O(r),A(e=>e&&r.some(t=>t.terminal_session_id===e)?e:r[0]?.terminal_session_id||null),t&&e.Enabled&&h&&r.length===0&&!z.current&&(z.current=!0,await V())}catch{_(`error`)}finally{M(!1)}},[h,e.Enabled,e.Mode,V,t,u]);(0,p.useEffect)(()=>{L.current=v},[v]),(0,p.useEffect)(()=>{R.current=H},[H]),(0,p.useEffect)(()=>{(!t||!e.Enabled)&&(z.current=!1)},[e.Enabled,t]);let U=(0,p.useRef)(void 0);(0,p.useEffect)(()=>{if(U.current!==void 0&&U.current!==u){let e=L.current;O([]),A(null),Promise.all(e.map(e=>fetch(`${m}/${e.terminal_session_id}`,{method:`DELETE`}).catch(()=>{})))}U.current=u},[u]);let W=(0,p.useCallback)(async t=>{if(!N.current)return()=>{};_(`connecting`);let r=!1,i=null,a=null,o=null,s=null,c=null,l=null,u=null,d=null;return P.current?.close(1e3,`switch terminal session`),P.current=null,F.current?.dispose(),F.current=null,I.current=null,N.current.innerHTML=``,Promise.all([n(()=>import(`./xterm-DooSxjI5.js`),[],import.meta.url),n(()=>import(`./addon-fit-DthTIhi3.js`),[],import.meta.url)]).then(([n,f])=>{if(r||!N.current)return;let{Terminal:p}=n,{FitAddon:m}=f;i=new p({cursorBlink:!0,convertEol:!0,fontFamily:`ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace`,fontSize:14,lineHeight:1.2,scrollback:6e3,allowProposedApi:!0,theme:{background:`#020617`,foreground:`#e5edf5`,cursor:`#34d399`,cursorAccent:`#020617`,selectionBackground:`#1e40af66`,black:`#020617`,red:`#fb7185`,green:`#34d399`,yellow:`#fbbf24`,blue:`#60a5fa`,magenta:`#c084fc`,cyan:`#22d3ee`,white:`#e5edf5`,brightBlack:`#64748b`,brightRed:`#fda4af`,brightGreen:`#86efac`,brightYellow:`#fde68a`,brightBlue:`#93c5fd`,brightMagenta:`#d8b4fe`,brightCyan:`#67e8f9`,brightWhite:`#ffffff`}}),a=new m,i.loadAddon(a),i.open(N.current),F.current=i,I.current=a;let h=()=>{try{a?.fit()}catch{}},g=()=>{c?.readyState!==WebSocket.OPEN||!i||c.send(JSON.stringify({type:`resize`,cols:i.cols||t.cols||80,rows:i.rows||t.rows||24}))},v=()=>{h(),g()},y=()=>{window.requestAnimationFrame(()=>{r||(v(),window.requestAnimationFrame(()=>{r||v()}))})};window.setTimeout(y,0),c=new WebSocket(S(e.Path||`/_ksadk/terminal/ws`,t.terminal_session_id),e.Protocol||`ks-terminal.v1`),P.current=c,c.addEventListener(`open`,()=>{h(),c?.send(JSON.stringify({type:`attach`,terminal_session_id:t.terminal_session_id,cols:i?.cols||t.cols||80,rows:i?.rows||t.rows||24})),y(),_(`connected`),i?.focus()}),c.addEventListener(`message`,e=>{if(typeof e.data==`string`)try{let t=JSON.parse(e.data);if(t?.type===`ready`){_(`connected`);return}if(t?.type===`pong`)return;if(t?.type===`exit`){_(`closed`);return}if(t?.type===`error`){_(`error`),i?.writeln(`\r\n${t.message||`Terminal error`}`);return}}catch{}E(e.data).then(e=>{e&&i?.write(e)})}),c.addEventListener(`close`,()=>{_(e=>e===`error`?e:`closed`),P.current=null}),c.addEventListener(`error`,()=>{_(`error`)});let b=e=>{let t=C(e);t&&c?.readyState===WebSocket.OPEN&&c.send(new TextEncoder().encode(t))};o=i.onData(e=>{b(e)}),s=i.onBinary(e=>{b(e)}),d=window.setInterval(()=>{c?.readyState===WebSocket.OPEN&&c.send(JSON.stringify({type:`ping`}))},T),l=()=>{v()},window.addEventListener(`resize`,l),u=new ResizeObserver(()=>{y()}),u.observe(N.current)}),()=>{r=!0,o?.dispose(),s?.dispose(),l&&window.removeEventListener(`resize`,l),d!==null&&window.clearInterval(d),u?.disconnect(),c&&(c.readyState===WebSocket.OPEN||c.readyState===WebSocket.CONNECTING)&&c.close(1e3,`panel closed`),P.current===c&&(P.current=null),i?.dispose(),F.current=null,I.current=null}},[e.Path,e.Protocol]);(0,p.useEffect)(()=>{!t||!e.Enabled||H()},[e.Enabled,t,H]),(0,p.useEffect)(()=>{let e=L.current.find(e=>e.terminal_session_id===k)||null;if(!t||!e)return;let n=()=>{},r=!1;return W(e).then(e=>{n=e,r&&n()}),()=>{r=!0,n()}},[k,W,t]);let G=async e=>{let t=v.filter(t=>t.terminal_session_id!==e);O(t),k===e&&(A(t[0]?.terminal_session_id||null),t.length===0&&_(`idle`),P.current?.close(1e3,`terminal session deleted`),P.current=null,F.current?.dispose(),F.current=null,I.current=null,N.current&&(N.current.innerHTML=``));let n=await fetch(`${m}/${e}`,{method:`DELETE`});!n.ok&&n.status!==404&&_(`error`),await H()};return t?(0,w.jsxs)(`div`,{className:`fixed inset-0 z-50 overflow-hidden border border-slate-800 bg-slate-950 text-slate-100 shadow-2xl shadow-slate-950/40 sm:inset-3 sm:rounded-3xl`,children:[(0,w.jsxs)(`div`,{className:`flex items-center justify-between border-b border-slate-800 bg-slate-900 px-4 py-3`,children:[(0,w.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,w.jsx)(`div`,{className:`flex h-9 w-9 items-center justify-center rounded-2xl bg-emerald-500/15 text-emerald-300`,children:(0,w.jsx)(a,{className:`h-4 w-4`})}),(0,w.jsxs)(`div`,{className:`min-w-0`,children:[(0,w.jsx)(`div`,{className:`truncate text-sm font-semibold`,children:`Native TUI`}),(0,w.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs text-slate-400`,children:[(0,w.jsx)(f,{className:`h-3 w-3`}),g]})]})]}),(0,w.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,w.jsx)(`button`,{type:`button`,onClick:()=>void H(),className:`rounded-xl p-2 text-slate-400 transition hover:bg-slate-800 hover:text-slate-100`,"aria-label":`刷新会话列表`,children:(0,w.jsx)(c,{className:o(`h-4 w-4`,j&&`animate-spin`)})}),(0,w.jsx)(`button`,{type:`button`,onClick:()=>void V({forceNew:!0}),className:`rounded-xl p-2 text-slate-400 transition hover:bg-slate-800 hover:text-slate-100`,"aria-label":`新建终端会话`,children:(0,w.jsx)(s,{className:`h-4 w-4`})}),(0,w.jsx)(`button`,{type:`button`,onClick:r,className:`rounded-xl p-2 text-slate-400 transition hover:bg-slate-800 hover:text-slate-100`,"aria-label":`关闭 TUI`,children:(0,w.jsx)(l,{className:`h-4 w-4`})})]})]}),(0,w.jsxs)(`div`,{className:`grid h-[calc(100%-4rem)] min-h-0 grid-cols-[18rem_minmax(0,1fr)] bg-slate-950`,children:[(0,w.jsxs)(`aside`,{className:`flex min-h-0 flex-col border-r border-slate-800 bg-slate-950`,children:[(0,w.jsx)(`div`,{className:`border-b border-slate-800 px-4 py-3 text-xs font-medium uppercase tracking-[0.12em] text-slate-500`,children:`会话`}),(0,w.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-2`,children:[v.length===0?(0,w.jsxs)(`button`,{type:`button`,onClick:()=>void V({forceNew:!0}),className:`flex w-full items-center justify-center gap-2 rounded-2xl border border-dashed border-slate-700 px-3 py-5 text-sm text-slate-400 transition hover:bg-slate-900`,children:[(0,w.jsx)(s,{className:`h-4 w-4`}),`新建终端会话`]}):null,v.map(e=>(0,w.jsxs)(`div`,{role:`button`,tabIndex:0,onClick:()=>A(e.terminal_session_id),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),A(e.terminal_session_id))},className:o(`group mb-2 rounded-2xl border px-3 py-3 text-left transition`,k===e.terminal_session_id?`border-emerald-400/50 bg-emerald-500/10`:`border-slate-800 bg-slate-900/60 hover:bg-slate-900`),children:[(0,w.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,w.jsxs)(`div`,{className:`min-w-0`,children:[(0,w.jsx)(`div`,{className:`truncate text-sm font-medium text-slate-100`,children:e.terminal_session_id}),(0,w.jsx)(`div`,{className:`mt-1 text-[11px] text-slate-400`,children:e.session_id||`未绑定会话`})]}),(0,w.jsxs)(`div`,{className:`flex items-center gap-1`,children:[e.status===`running`?(0,w.jsx)(d,{className:`h-3.5 w-3.5 text-emerald-400`}):null,(0,w.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),G(e.terminal_session_id)},className:`rounded-lg p-1.5 text-slate-500 opacity-0 transition hover:bg-slate-800 hover:text-rose-300 group-hover:opacity-100`,title:`关闭会话`,children:(0,w.jsx)(i,{className:`h-3.5 w-3.5`})})]})]}),(0,w.jsxs)(`div`,{className:`mt-3 flex items-center gap-2 text-[11px] text-slate-500`,children:[(0,w.jsx)(`span`,{className:`rounded-full border border-slate-700 px-2 py-0.5`,children:e.mode}),(0,w.jsxs)(`span`,{className:`rounded-full border border-slate-700 px-2 py-0.5`,children:[e.cols,`x`,e.rows]}),(0,w.jsx)(`span`,{className:`rounded-full border border-slate-700 px-2 py-0.5`,children:e.status})]})]},e.terminal_session_id))]})]}),(0,w.jsx)(`section`,{className:`min-h-0 bg-slate-950 p-2`,children:(0,w.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col overflow-hidden rounded-2xl border border-slate-800 bg-slate-950`,children:[(0,w.jsxs)(`div`,{className:`flex items-center justify-between border-b border-slate-800 bg-slate-900/80 px-4 py-2 text-xs text-slate-400`,children:[(0,w.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,w.jsx)(`span`,{className:`rounded-full border border-slate-700 px-2 py-0.5`,children:B?.terminal_session_id||`no session`}),(0,w.jsx)(`span`,{children:B?.status||`idle`})]}),(0,w.jsx)(`div`,{className:`text-slate-500`,children:B?.cwd||B?.session_id||`attach to a terminal session`})]}),(0,w.jsxs)(`div`,{className:`relative min-h-0 flex-1`,children:[g===`connecting`?(0,w.jsx)(`div`,{className:`absolute left-5 top-5 z-10 rounded-full bg-slate-900/90 px-3 py-1 text-xs text-slate-400`,children:`正在连接原生 TUI...`}):null,(0,w.jsx)(`div`,{ref:N,className:`h-full w-full overflow-hidden bg-slate-950`})]})]})})]})]}):null}export{O as NativeTerminalPanel}; \ No newline at end of file +import{St as e,Tt as t,W as n,bt as r,dt as i,ft as a,lt as o,mt as s,pt as c,ut as l,yt as u}from"./index-BkDx9KsG.js";var d=u(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),f=u(`plug-zap`,[[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m18 3-4 4h6l-4 4`,key:`16psg9`}]]),p=t(e(),1),m=`/_ksadk/terminal/sessions`,h=/\x1b\](?:10|11|12);(?:rgb:)?[0-9a-fA-F]{1,4}\/[0-9a-fA-F]{1,4}\/[0-9a-fA-F]{1,4}(?:\x07|\x1b\\)/g,g=/\]1[012];(?:rgb:)?[0-9a-fA-F]{1,4}\/[0-9a-fA-F]{1,4}\/[0-9a-fA-F]{1,4}/g;function _(e,t){let n=Number(e);return Number.isFinite(n)&&n>0?Math.floor(n):t}function v(e){let t=Date.parse(String(e?.updated_at||e?.UpdatedAt||``));return Number.isNaN(t)?0:t}function y(e={}){let t={mode:String(e.mode||`tui`).trim()||`tui`,cols:_(e.cols,80),rows:_(e.rows,24)},n=String(e.sessionId||e.session_id||``).trim();n&&(t.session_id=n);let r=String(e.cwd||``).trim();return r&&(t.cwd=r),e.options&&typeof e.options==`object`&&(t.options=e.options),(e.forceNew===!0||e.force_new===!0)&&(t.force_new=!0),t}function b(e={},t){let n=t||(typeof window<`u`?window.location:{href:`http://localhost/`}),r=new URL(m,n.href||`http://localhost/`),i=String(e.sessionId||e.session_id||``).trim();i&&r.searchParams.set(`session_id`,i);let a=String(e.mode||``).trim();return a&&r.searchParams.set(`mode`,a),r.pathname+r.search}function x(e){return(Array.isArray(e?.sessions)?e.sessions:Array.isArray(e?.Sessions)?e.Sessions:[]).map(e=>({terminal_session_id:String(e?.terminal_session_id||e?.TerminalSessionId||``).trim(),mode:String(e?.mode||e?.Mode||`tui`).trim()||`tui`,status:String(e?.status||e?.Status||`closed`).trim()||`closed`,cols:_(e?.cols??e?.Cols,80),rows:_(e?.rows??e?.Rows,24),session_id:String(e?.session_id||e?.SessionId||``).trim(),cwd:String(e?.cwd||e?.Cwd||``).trim(),created_at:e?.created_at||e?.CreatedAt||``,updated_at:e?.updated_at||e?.UpdatedAt||``,exit_code:e?.exit_code??e?.ExitCode??null})).filter(e=>e.terminal_session_id).filter(e=>e.status!==`closed`&&e.status!==`deleted`).sort((e,t)=>{let n=+(e.status===`running`),r=+(t.status===`running`);return n===r?v(t)-v(e):r-n})}function S(e=`/_ksadk/terminal/ws`,t,n){let r=n||(typeof window<`u`?window.location:{href:`http://localhost/`,protocol:`http:`}),i=new URL(e||`/_ksadk/terminal/ws`,r.href||`http://localhost/`);i.protocol=i.protocol===`https:`?`wss:`:`ws:`;let a=String(t||``).trim();return a&&i.searchParams.set(`terminal_session_id`,a),i.toString()}function C(e){return String(e||``).replace(h,``).replace(g,``)}var w=r(),T=2e4;function E(e){return typeof e==`string`?Promise.resolve(e):e instanceof Blob?e.text():Promise.resolve(new TextDecoder().decode(e))}async function D(e){let t=await e.text();if(!t)return{};try{return JSON.parse(t)}catch{return{}}}function O({capability:e,open:t,onClose:r,sessionId:u,autoCreateWhenEmpty:h=!0}){let[g,_]=(0,p.useState)(`idle`),[v,O]=(0,p.useState)([]),[k,A]=(0,p.useState)(null),[j,M]=(0,p.useState)(!1),N=(0,p.useRef)(null),P=(0,p.useRef)(null),F=(0,p.useRef)(null),I=(0,p.useRef)(null),L=(0,p.useRef)([]),R=(0,p.useRef)(null),z=(0,p.useRef)(!1),B=(0,p.useMemo)(()=>v.find(e=>e.terminal_session_id===k)||null,[k,v]),V=(0,p.useCallback)(async({forceNew:t=!1}={})=>{z.current=!0,_(`connecting`);let n=await fetch(m,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(y({mode:e.Mode||`tui`,sessionId:u,forceNew:t}))});if(!n.ok){_(`error`);return}let r=(await D(n))?.session;if(!r?.terminal_session_id){_(`error`);return}await R.current?.(),A(r.terminal_session_id)},[e.Mode,u]),H=(0,p.useCallback)(async()=>{M(!0);try{let n=await fetch(b({sessionId:u,mode:e.Mode||`tui`}));if(!n.ok)throw Error(`HTTP ${n.status}`);let r=x(await D(n));O(r),A(e=>e&&r.some(t=>t.terminal_session_id===e)?e:r[0]?.terminal_session_id||null),t&&e.Enabled&&h&&r.length===0&&!z.current&&(z.current=!0,await V())}catch{_(`error`)}finally{M(!1)}},[h,e.Enabled,e.Mode,V,t,u]);(0,p.useEffect)(()=>{L.current=v},[v]),(0,p.useEffect)(()=>{R.current=H},[H]),(0,p.useEffect)(()=>{(!t||!e.Enabled)&&(z.current=!1)},[e.Enabled,t]);let U=(0,p.useRef)(void 0);(0,p.useEffect)(()=>{if(U.current!==void 0&&U.current!==u){let e=L.current;O([]),A(null),Promise.all(e.map(e=>fetch(`${m}/${e.terminal_session_id}`,{method:`DELETE`}).catch(()=>{})))}U.current=u},[u]);let W=(0,p.useCallback)(async t=>{if(!N.current)return()=>{};_(`connecting`);let r=!1,i=null,a=null,o=null,s=null,c=null,l=null,u=null,d=null;return P.current?.close(1e3,`switch terminal session`),P.current=null,F.current?.dispose(),F.current=null,I.current=null,N.current.innerHTML=``,Promise.all([n(()=>import(`./xterm-DooSxjI5.js`),[],import.meta.url),n(()=>import(`./addon-fit-DthTIhi3.js`),[],import.meta.url)]).then(([n,f])=>{if(r||!N.current)return;let{Terminal:p}=n,{FitAddon:m}=f;i=new p({cursorBlink:!0,convertEol:!0,fontFamily:`ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace`,fontSize:14,lineHeight:1.2,scrollback:6e3,allowProposedApi:!0,theme:{background:`#020617`,foreground:`#e5edf5`,cursor:`#34d399`,cursorAccent:`#020617`,selectionBackground:`#1e40af66`,black:`#020617`,red:`#fb7185`,green:`#34d399`,yellow:`#fbbf24`,blue:`#60a5fa`,magenta:`#c084fc`,cyan:`#22d3ee`,white:`#e5edf5`,brightBlack:`#64748b`,brightRed:`#fda4af`,brightGreen:`#86efac`,brightYellow:`#fde68a`,brightBlue:`#93c5fd`,brightMagenta:`#d8b4fe`,brightCyan:`#67e8f9`,brightWhite:`#ffffff`}}),a=new m,i.loadAddon(a),i.open(N.current),F.current=i,I.current=a;let h=()=>{try{a?.fit()}catch{}},g=()=>{c?.readyState!==WebSocket.OPEN||!i||c.send(JSON.stringify({type:`resize`,cols:i.cols||t.cols||80,rows:i.rows||t.rows||24}))},v=()=>{h(),g()},y=()=>{window.requestAnimationFrame(()=>{r||(v(),window.requestAnimationFrame(()=>{r||v()}))})};window.setTimeout(y,0),c=new WebSocket(S(e.Path||`/_ksadk/terminal/ws`,t.terminal_session_id),e.Protocol||`ks-terminal.v1`),P.current=c,c.addEventListener(`open`,()=>{h(),c?.send(JSON.stringify({type:`attach`,terminal_session_id:t.terminal_session_id,cols:i?.cols||t.cols||80,rows:i?.rows||t.rows||24})),y(),_(`connected`),i?.focus()}),c.addEventListener(`message`,e=>{if(typeof e.data==`string`)try{let t=JSON.parse(e.data);if(t?.type===`ready`){_(`connected`);return}if(t?.type===`pong`)return;if(t?.type===`exit`){_(`closed`);return}if(t?.type===`error`){_(`error`),i?.writeln(`\r\n${t.message||`Terminal error`}`);return}}catch{}E(e.data).then(e=>{e&&i?.write(e)})}),c.addEventListener(`close`,()=>{_(e=>e===`error`?e:`closed`),P.current=null}),c.addEventListener(`error`,()=>{_(`error`)});let b=e=>{let t=C(e);t&&c?.readyState===WebSocket.OPEN&&c.send(new TextEncoder().encode(t))};o=i.onData(e=>{b(e)}),s=i.onBinary(e=>{b(e)}),d=window.setInterval(()=>{c?.readyState===WebSocket.OPEN&&c.send(JSON.stringify({type:`ping`}))},T),l=()=>{v()},window.addEventListener(`resize`,l),u=new ResizeObserver(()=>{y()}),u.observe(N.current)}),()=>{r=!0,o?.dispose(),s?.dispose(),l&&window.removeEventListener(`resize`,l),d!==null&&window.clearInterval(d),u?.disconnect(),c&&(c.readyState===WebSocket.OPEN||c.readyState===WebSocket.CONNECTING)&&c.close(1e3,`panel closed`),P.current===c&&(P.current=null),i?.dispose(),F.current=null,I.current=null}},[e.Path,e.Protocol]);(0,p.useEffect)(()=>{!t||!e.Enabled||H()},[e.Enabled,t,H]),(0,p.useEffect)(()=>{let e=L.current.find(e=>e.terminal_session_id===k)||null;if(!t||!e)return;let n=()=>{},r=!1;return W(e).then(e=>{n=e,r&&n()}),()=>{r=!0,n()}},[k,W,t]);let G=async e=>{let t=v.filter(t=>t.terminal_session_id!==e);O(t),k===e&&(A(t[0]?.terminal_session_id||null),t.length===0&&_(`idle`),P.current?.close(1e3,`terminal session deleted`),P.current=null,F.current?.dispose(),F.current=null,I.current=null,N.current&&(N.current.innerHTML=``));let n=await fetch(`${m}/${e}`,{method:`DELETE`});!n.ok&&n.status!==404&&_(`error`),await H()};return t?(0,w.jsxs)(`div`,{className:`fixed inset-0 z-50 overflow-hidden border border-slate-800 bg-slate-950 text-slate-100 shadow-2xl shadow-slate-950/40 sm:inset-3 sm:rounded-3xl`,children:[(0,w.jsxs)(`div`,{className:`flex items-center justify-between border-b border-slate-800 bg-slate-900 px-4 py-3`,children:[(0,w.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,w.jsx)(`div`,{className:`flex h-9 w-9 items-center justify-center rounded-2xl bg-emerald-500/15 text-emerald-300`,children:(0,w.jsx)(a,{className:`h-4 w-4`})}),(0,w.jsxs)(`div`,{className:`min-w-0`,children:[(0,w.jsx)(`div`,{className:`truncate text-sm font-semibold`,children:`Native TUI`}),(0,w.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs text-slate-400`,children:[(0,w.jsx)(f,{className:`h-3 w-3`}),g]})]})]}),(0,w.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,w.jsx)(`button`,{type:`button`,onClick:()=>void H(),className:`rounded-xl p-2 text-slate-400 transition hover:bg-slate-800 hover:text-slate-100`,"aria-label":`刷新会话列表`,children:(0,w.jsx)(c,{className:o(`h-4 w-4`,j&&`animate-spin`)})}),(0,w.jsx)(`button`,{type:`button`,onClick:()=>void V({forceNew:!0}),className:`rounded-xl p-2 text-slate-400 transition hover:bg-slate-800 hover:text-slate-100`,"aria-label":`新建终端会话`,children:(0,w.jsx)(s,{className:`h-4 w-4`})}),(0,w.jsx)(`button`,{type:`button`,onClick:r,className:`rounded-xl p-2 text-slate-400 transition hover:bg-slate-800 hover:text-slate-100`,"aria-label":`关闭 TUI`,children:(0,w.jsx)(l,{className:`h-4 w-4`})})]})]}),(0,w.jsxs)(`div`,{className:`grid h-[calc(100%-4rem)] min-h-0 grid-cols-[18rem_minmax(0,1fr)] bg-slate-950`,children:[(0,w.jsxs)(`aside`,{className:`flex min-h-0 flex-col border-r border-slate-800 bg-slate-950`,children:[(0,w.jsx)(`div`,{className:`border-b border-slate-800 px-4 py-3 text-xs font-medium uppercase tracking-[0.12em] text-slate-500`,children:`会话`}),(0,w.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-2`,children:[v.length===0?(0,w.jsxs)(`button`,{type:`button`,onClick:()=>void V({forceNew:!0}),className:`flex w-full items-center justify-center gap-2 rounded-2xl border border-dashed border-slate-700 px-3 py-5 text-sm text-slate-400 transition hover:bg-slate-900`,children:[(0,w.jsx)(s,{className:`h-4 w-4`}),`新建终端会话`]}):null,v.map(e=>(0,w.jsxs)(`div`,{role:`button`,tabIndex:0,onClick:()=>A(e.terminal_session_id),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),A(e.terminal_session_id))},className:o(`group mb-2 rounded-2xl border px-3 py-3 text-left transition`,k===e.terminal_session_id?`border-emerald-400/50 bg-emerald-500/10`:`border-slate-800 bg-slate-900/60 hover:bg-slate-900`),children:[(0,w.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,w.jsxs)(`div`,{className:`min-w-0`,children:[(0,w.jsx)(`div`,{className:`truncate text-sm font-medium text-slate-100`,children:e.terminal_session_id}),(0,w.jsx)(`div`,{className:`mt-1 text-[11px] text-slate-400`,children:e.session_id||`未绑定会话`})]}),(0,w.jsxs)(`div`,{className:`flex items-center gap-1`,children:[e.status===`running`?(0,w.jsx)(d,{className:`h-3.5 w-3.5 text-emerald-400`}):null,(0,w.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),G(e.terminal_session_id)},className:`rounded-lg p-1.5 text-slate-500 opacity-0 transition hover:bg-slate-800 hover:text-rose-300 group-hover:opacity-100`,title:`关闭会话`,children:(0,w.jsx)(i,{className:`h-3.5 w-3.5`})})]})]}),(0,w.jsxs)(`div`,{className:`mt-3 flex items-center gap-2 text-[11px] text-slate-500`,children:[(0,w.jsx)(`span`,{className:`rounded-full border border-slate-700 px-2 py-0.5`,children:e.mode}),(0,w.jsxs)(`span`,{className:`rounded-full border border-slate-700 px-2 py-0.5`,children:[e.cols,`x`,e.rows]}),(0,w.jsx)(`span`,{className:`rounded-full border border-slate-700 px-2 py-0.5`,children:e.status})]})]},e.terminal_session_id))]})]}),(0,w.jsx)(`section`,{className:`min-h-0 bg-slate-950 p-2`,children:(0,w.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col overflow-hidden rounded-2xl border border-slate-800 bg-slate-950`,children:[(0,w.jsxs)(`div`,{className:`flex items-center justify-between border-b border-slate-800 bg-slate-900/80 px-4 py-2 text-xs text-slate-400`,children:[(0,w.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,w.jsx)(`span`,{className:`rounded-full border border-slate-700 px-2 py-0.5`,children:B?.terminal_session_id||`no session`}),(0,w.jsx)(`span`,{children:B?.status||`idle`})]}),(0,w.jsx)(`div`,{className:`text-slate-500`,children:B?.cwd||B?.session_id||`attach to a terminal session`})]}),(0,w.jsxs)(`div`,{className:`relative min-h-0 flex-1`,children:[g===`connecting`?(0,w.jsx)(`div`,{className:`absolute left-5 top-5 z-10 rounded-full bg-slate-900/90 px-3 py-1 text-xs text-slate-400`,children:`正在连接原生 TUI...`}):null,(0,w.jsx)(`div`,{ref:N,className:`h-full w-full overflow-hidden bg-slate-950`})]})]})})]})]}):null}export{O as NativeTerminalPanel}; \ No newline at end of file diff --git a/ksadk/server/static/assets/abnfDiagram-VCTEODGH-g20pFzNV.js b/ksadk/server/static/assets/abnfDiagram-VCTEODGH-CNsXewmF.js similarity index 85% rename from ksadk/server/static/assets/abnfDiagram-VCTEODGH-g20pFzNV.js rename to ksadk/server/static/assets/abnfDiagram-VCTEODGH-CNsXewmF.js index af845f6b..f1acd724 100644 --- a/ksadk/server/static/assets/abnfDiagram-VCTEODGH-g20pFzNV.js +++ b/ksadk/server/static/assets/abnfDiagram-VCTEODGH-CNsXewmF.js @@ -1 +1 @@ -import{m as e,t}from"./mermaid-parser.core-KGSy4jWT.js";import{n,r,t as i}from"./chunk-SVP7TREG-BLTlmMU7.js";import{t as a}from"./chunk-JWPE2WC7-vYvVJb_M.js";import{Ir as o,Nr as s}from"./MermaidBlock-Dz4IP-Tx.js";var c=e().RailroadAbnf.parser.LangiumParser,l=o(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=o(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=o(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=o(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=o(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=o(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=o(e=>{a(e,i),e.title&&i.setTitle(e.title),e.rules.map(e=>i.addRule(m(e)))},`populateDb`),g={parser:{parse:o(e=>{i.clear(),s.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let r=n.value;s.debug(`[ABNF Parser] Parsed rules:`,r.rules.length),h(r),s.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:i}},db:i,renderer:r,styles:n};export{g as diagram}; \ No newline at end of file +import{m as e,t}from"./mermaid-parser.core-C-Sc5_7E.js";import{n,r,t as i}from"./chunk-SVP7TREG--LDO57tP.js";import{t as a}from"./chunk-JWPE2WC7-CEttzwEN.js";import{Ir as o,Nr as s}from"./MermaidBlock-CI9NjqQx.js";var c=e().RailroadAbnf.parser.LangiumParser,l=o(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=o(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=o(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=o(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=o(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=o(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=o(e=>{a(e,i),e.title&&i.setTitle(e.title),e.rules.map(e=>i.addRule(m(e)))},`populateDb`),g={parser:{parse:o(e=>{i.clear(),s.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let r=n.value;s.debug(`[ABNF Parser] Parsed rules:`,r.rules.length),h(r),s.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:i}},db:i,renderer:r,styles:n};export{g as diagram}; \ No newline at end of file diff --git a/ksadk/server/static/assets/arc-C4FzinUA.js b/ksadk/server/static/assets/arc-x-74isv6.js similarity index 98% rename from ksadk/server/static/assets/arc-C4FzinUA.js rename to ksadk/server/static/assets/arc-x-74isv6.js index 70ceeef5..3a921071 100644 --- a/ksadk/server/static/assets/arc-C4FzinUA.js +++ b/ksadk/server/static/assets/arc-x-74isv6.js @@ -1 +1 @@ -import{Dn as e,En as t,Fn as n,In as r,Ln as i,Mn as a,Nn as o,On as s,Pn as c,Rn as l,Tn as u,jn as d,kn as f,wn as p}from"./MermaidBlock-Dz4IP-Tx.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,i,o,s,c){var l=e-n,u=t-i,d=(c?s:-s)/r(l*l+u*u),f=d*u,p=-d*l,m=e+f,h=t+p,g=n+f,_=i+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=o-s,w=m*_-g*h,T=(x<0?-1:1)*r(a(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(o/C-1),y11:D*(o/C-1)}}function x(){var a=m,x=h,S=l(0),C=null,w=g,T=_,E=v,D=null,O=p(k);function k(){var l,p,m=+a.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-d,_=T.apply(this,arguments)-d,v=u(_-g),k=_>g;if(D||=l=O(),h1e-12))D.moveTo(0,0);else if(v>i-1e-12)D.moveTo(h*f(g),h*n(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*f(_),m*n(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):r(m*m+h*h)),R=o(u(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=e(L/m*n(I)),W=e(L/h*n(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*f(A),K=h*n(A),q=m*f(N),J=m*n(N);if(R>1e-12){var Y=h*f(j),X=h*n(j),Z=m*f(M),Q=m*n(M),$;if(v1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),zM*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(o/C-1),y11:D*(o/C-1)}}function x(){var a=m,x=h,S=l(0),C=null,w=g,T=_,E=v,D=null,O=p(k);function k(){var l,p,m=+a.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-d,_=T.apply(this,arguments)-d,v=u(_-g),k=_>g;if(D||=l=O(),h1e-12))D.moveTo(0,0);else if(v>i-1e-12)D.moveTo(h*f(g),h*n(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*f(_),m*n(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):r(m*m+h*h)),R=o(u(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=e(L/m*n(I)),W=e(L/h*n(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*f(A),K=h*n(A),q=m*f(N),J=m*n(N);if(R>1e-12){var Y=h*f(j),X=h*n(j),Z=m*f(M),Q=m*n(M),$;if(v1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r():typeof define==`function`&&define.amd?define([],r):typeof e==`object`?e.layoutBase=r():n.layoutBase=r()})(e,function(){return(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.i=function(e){return e},n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=28)})([(function(e,t,n){function r(){}r.QUALITY=1,r.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,r.DEFAULT_INCREMENTAL=!1,r.DEFAULT_ANIMATION_ON_LAYOUT=!0,r.DEFAULT_ANIMATION_DURING_LAYOUT=!1,r.DEFAULT_ANIMATION_PERIOD=50,r.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,r.DEFAULT_GRAPH_MARGIN=15,r.NODE_DIMENSIONS_INCLUDE_LABELS=!1,r.SIMPLE_NODE_SIZE=40,r.SIMPLE_NODE_HALF_SIZE=r.SIMPLE_NODE_SIZE/2,r.EMPTY_COMPOUND_NODE_SIZE=40,r.MIN_EDGE_LENGTH=1,r.WORLD_BOUNDARY=1e6,r.INITIAL_WORLD_BOUNDARY=r.WORLD_BOUNDARY/1e3,r.WORLD_CENTER_X=1200,r.WORLD_CENTER_Y=900,e.exports=r}),(function(e,t,n){var r=n(2),i=n(8),a=n(9);function o(e,t,n){r.call(this,n),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=n,this.bendpoints=[],this.source=e,this.target=t}for(var s in o.prototype=Object.create(r.prototype),r)o[s]=r[s];o.prototype.getSource=function(){return this.source},o.prototype.getTarget=function(){return this.target},o.prototype.isInterGraph=function(){return this.isInterGraph},o.prototype.getLength=function(){return this.length},o.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},o.prototype.getBendpoints=function(){return this.bendpoints},o.prototype.getLca=function(){return this.lca},o.prototype.getSourceInLca=function(){return this.sourceInLca},o.prototype.getTargetInLca=function(){return this.targetInLca},o.prototype.getOtherEnd=function(e){if(this.source===e)return this.target;if(this.target===e)return this.source;throw`Node is not incident with this edge`},o.prototype.getOtherEndInGraph=function(e,t){for(var n=this.getOtherEnd(e),r=t.getGraphManager().getRoot();;){if(n.getOwner()==t)return n;if(n.getOwner()==r)break;n=n.getOwner().getParent()}return null},o.prototype.updateLength=function(){var e=[,,,,];this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),e),this.isOverlapingSourceAndTarget||(this.lengthX=e[0]-e[2],this.lengthY=e[1]-e[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},o.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},e.exports=o}),(function(e,t,n){function r(e){this.vGraphObject=e}e.exports=r}),(function(e,t,n){var r=n(2),i=n(10),a=n(13),o=n(0),s=n(16),c=n(5);function l(e,t,n,o){n==null&&o==null&&(o=t),r.call(this,o),e.graphManager!=null&&(e=e.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=o,this.edges=[],this.graphManager=e,n!=null&&t!=null?this.rect=new a(t.x,t.y,n.width,n.height):this.rect=new a}for(var u in l.prototype=Object.create(r.prototype),r)l[u]=r[u];l.prototype.getEdges=function(){return this.edges},l.prototype.getChild=function(){return this.child},l.prototype.getOwner=function(){return this.owner},l.prototype.getWidth=function(){return this.rect.width},l.prototype.setWidth=function(e){this.rect.width=e},l.prototype.getHeight=function(){return this.rect.height},l.prototype.setHeight=function(e){this.rect.height=e},l.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},l.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},l.prototype.getCenter=function(){return new c(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},l.prototype.getLocation=function(){return new c(this.rect.x,this.rect.y)},l.prototype.getRect=function(){return this.rect},l.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},l.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},l.prototype.setRect=function(e,t){this.rect.x=e.x,this.rect.y=e.y,this.rect.width=t.width,this.rect.height=t.height},l.prototype.setCenter=function(e,t){this.rect.x=e-this.rect.width/2,this.rect.y=t-this.rect.height/2},l.prototype.setLocation=function(e,t){this.rect.x=e,this.rect.y=t},l.prototype.moveBy=function(e,t){this.rect.x+=e,this.rect.y+=t},l.prototype.getEdgeListToNode=function(e){var t=[],n=this;return n.edges.forEach(function(r){if(r.target==e){if(r.source!=n)throw`Incorrect edge source!`;t.push(r)}}),t},l.prototype.getEdgesBetween=function(e){var t=[],n=this;return n.edges.forEach(function(r){if(!(r.source==n||r.target==n))throw`Incorrect edge source and/or target`;(r.target==e||r.source==e)&&t.push(r)}),t},l.prototype.getNeighborsList=function(){var e=new Set,t=this;return t.edges.forEach(function(n){if(n.source==t)e.add(n.target);else{if(n.target!=t)throw`Incorrect incidency!`;e.add(n.source)}}),e},l.prototype.withChildren=function(){var e=new Set,t,n;if(e.add(this),this.child!=null)for(var r=this.child.getNodes(),i=0;it?(this.rect.x-=(this.labelWidth-t)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal==`right`&&this.setWidth(t+this.labelWidth)),this.labelHeight&&(this.labelPosVertical==`top`?(this.rect.y-=this.labelHeight,this.setHeight(n+this.labelHeight)):this.labelPosVertical==`center`&&this.labelHeight>n?(this.rect.y-=(this.labelHeight-n)/2,this.setHeight(this.labelHeight)):this.labelPosVertical==`bottom`&&this.setHeight(n+this.labelHeight))}}},l.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw`assert failed`;return this.inclusionTreeDepth},l.prototype.transform=function(e){var t=this.rect.x;t>o.WORLD_BOUNDARY?t=o.WORLD_BOUNDARY:t<-o.WORLD_BOUNDARY&&(t=-o.WORLD_BOUNDARY);var n=this.rect.y;n>o.WORLD_BOUNDARY?n=o.WORLD_BOUNDARY:n<-o.WORLD_BOUNDARY&&(n=-o.WORLD_BOUNDARY);var r=new c(t,n),i=e.inverseTransformPoint(r);this.setLocation(i.x,i.y)},l.prototype.getLeft=function(){return this.rect.x},l.prototype.getRight=function(){return this.rect.x+this.rect.width},l.prototype.getTop=function(){return this.rect.y},l.prototype.getBottom=function(){return this.rect.y+this.rect.height},l.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},e.exports=l}),(function(e,t,n){var r=n(0);function i(){}for(var a in r)i[a]=r[a];i.MAX_ITERATIONS=2500,i.DEFAULT_EDGE_LENGTH=50,i.DEFAULT_SPRING_STRENGTH=.45,i.DEFAULT_REPULSION_STRENGTH=4500,i.DEFAULT_GRAVITY_STRENGTH=.4,i.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,i.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,i.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,i.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,i.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,i.COOLING_ADAPTATION_FACTOR=.33,i.ADAPTATION_LOWER_NODE_LIMIT=1e3,i.ADAPTATION_UPPER_NODE_LIMIT=5e3,i.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,i.MAX_NODE_DISPLACEMENT=i.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,i.MIN_REPULSION_DIST=i.DEFAULT_EDGE_LENGTH/10,i.CONVERGENCE_CHECK_PERIOD=100,i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,i.MIN_EDGE_LENGTH=1,i.GRID_CALCULATION_CHECK_PERIOD=10,e.exports=i}),(function(e,t,n){function r(e,t){e==null&&t==null?(this.x=0,this.y=0):(this.x=e,this.y=t)}r.prototype.getX=function(){return this.x},r.prototype.getY=function(){return this.y},r.prototype.setX=function(e){this.x=e},r.prototype.setY=function(e){this.y=e},r.prototype.getDifference=function(e){return new DimensionD(this.x-e.x,this.y-e.y)},r.prototype.getCopy=function(){return new r(this.x,this.y)},r.prototype.translate=function(e){return this.x+=e.width,this.y+=e.height,this},e.exports=r}),(function(e,t,n){var r=n(2),i=n(10),a=n(0),o=n(7),s=n(3),c=n(1),l=n(13),u=n(12),d=n(11);function f(e,t,n){r.call(this,n),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=e,t!=null&&t instanceof o?this.graphManager=t:t!=null&&t instanceof Layout&&(this.graphManager=t.graphManager)}for(var p in f.prototype=Object.create(r.prototype),r)f[p]=r[p];f.prototype.getNodes=function(){return this.nodes},f.prototype.getEdges=function(){return this.edges},f.prototype.getGraphManager=function(){return this.graphManager},f.prototype.getParent=function(){return this.parent},f.prototype.getLeft=function(){return this.left},f.prototype.getRight=function(){return this.right},f.prototype.getTop=function(){return this.top},f.prototype.getBottom=function(){return this.bottom},f.prototype.isConnected=function(){return this.isConnected},f.prototype.add=function(e,t,n){if(t==null&&n==null){var r=e;if(this.graphManager==null)throw`Graph has no graph mgr!`;if(this.getNodes().indexOf(r)>-1)throw`Node already in graph!`;return r.owner=this,this.getNodes().push(r),r}else{var i=e;if(!(this.getNodes().indexOf(t)>-1&&this.getNodes().indexOf(n)>-1))throw`Source or target not in graph!`;if(!(t.owner==n.owner&&t.owner==this))throw`Both owners must be this graph!`;return t.owner==n.owner?(i.source=t,i.target=n,i.isInterGraph=!1,this.getEdges().push(i),t.edges.push(i),n!=t&&n.edges.push(i),i):null}},f.prototype.remove=function(e){var t=e;if(e instanceof s){if(t==null)throw`Node is null!`;if(!(t.owner!=null&&t.owner==this))throw`Owner graph is invalid!`;if(this.graphManager==null)throw`Owner graph manager is invalid!`;for(var n=t.edges.slice(),r,i=n.length,a=0;a-1&&u>-1))throw`Source and/or target doesn't know this edge!`;r.source.edges.splice(l,1),r.target!=r.source&&r.target.edges.splice(u,1);var o=r.source.owner.getEdges().indexOf(r);if(o==-1)throw`Not in owner's edge list!`;r.source.owner.getEdges().splice(o,1)}},f.prototype.updateLeftTop=function(){for(var e=i.MAX_VALUE,t=i.MAX_VALUE,n,r,a,o=this.getNodes(),s=o.length,c=0;cn&&(e=n),t>r&&(t=r)}return e==i.MAX_VALUE?null:(a=o[0].getParent().paddingLeft==null?this.margin:o[0].getParent().paddingLeft,this.left=t-a,this.top=e-a,new u(this.left,this.top))},f.prototype.updateBounds=function(e){for(var t=i.MAX_VALUE,n=-i.MAX_VALUE,r=i.MAX_VALUE,a=-i.MAX_VALUE,o,s,c,u,d,f=this.nodes,p=f.length,m=0;mo&&(t=o),nc&&(r=c),ao&&(t=o),nc&&(r=c),a=this.nodes.length){var c=0;n.forEach(function(t){t.owner==e&&c++}),c==this.nodes.length&&(this.isConnected=!0)}},e.exports=f}),(function(e,t,n){var r,i=n(1);function a(e){r=n(6),this.layout=e,this.graphs=[],this.edges=[]}a.prototype.addRoot=function(){var e=this.layout.newGraph(),t=this.layout.newNode(null),n=this.add(e,t);return this.setRootGraph(n),this.rootGraph},a.prototype.add=function(e,t,n,r,i){if(n==null&&r==null&&i==null){if(e==null)throw`Graph is null!`;if(t==null)throw`Parent node is null!`;if(this.graphs.indexOf(e)>-1)throw`Graph already in this graph mgr!`;if(this.graphs.push(e),e.parent!=null)throw`Already has a parent!`;if(t.child!=null)throw`Already has a child!`;return e.parent=t,t.child=e,e}else{i=n,r=t,n=e;var a=r.getOwner(),o=i.getOwner();if(!(a!=null&&a.getGraphManager()==this))throw`Source not in this graph mgr!`;if(!(o!=null&&o.getGraphManager()==this))throw`Target not in this graph mgr!`;if(a==o)return n.isInterGraph=!1,a.add(n,r,i);if(n.isInterGraph=!0,n.source=r,n.target=i,this.edges.indexOf(n)>-1)throw`Edge already in inter-graph edge list!`;if(this.edges.push(n),!(n.source!=null&&n.target!=null))throw`Edge source and/or target is null!`;if(!(n.source.edges.indexOf(n)==-1&&n.target.edges.indexOf(n)==-1))throw`Edge already in source and/or target incidency list!`;return n.source.edges.push(n),n.target.edges.push(n),n}},a.prototype.remove=function(e){if(e instanceof r){var t=e;if(t.getGraphManager()!=this)throw`Graph not in this graph mgr`;if(!(t==this.rootGraph||t.parent!=null&&t.parent.graphManager==this))throw`Invalid parent node!`;var n=[];n=n.concat(t.getEdges());for(var a,o=n.length,s=0;s=t.getRight()?n[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight()):t.getX()<=e.getX()&&t.getRight()>=e.getRight()&&(n[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight())),e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()?n[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()):t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()&&(n[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()));var a=Math.abs((t.getCenterY()-e.getCenterY())/(t.getCenterX()-e.getCenterX()));t.getCenterY()===e.getCenterY()&&t.getCenterX()===e.getCenterX()&&(a=1);var o=a*n[0],s=n[1]/a;n[0]o)return n[0]=r,n[1]=c,n[2]=a,n[3]=y,!1;if(ia)return n[0]=s,n[1]=i,n[2]=_,n[3]=o,!1;if(ra?(n[0]=u,n[1]=d,C=!0):(n[0]=l,n[1]=c,C=!0):T===D&&(r>a?(n[0]=s,n[1]=c,C=!0):(n[0]=f,n[1]=d,C=!0)),-E===D?a>r?(n[2]=v,n[3]=y,w=!0):(n[2]=_,n[3]=g,w=!0):E===D&&(a>r?(n[2]=h,n[3]=g,w=!0):(n[2]=b,n[3]=y,w=!0)),C&&w)return!1;if(r>a?i>o?(O=this.getCardinalDirection(T,D,4),k=this.getCardinalDirection(E,D,2)):(O=this.getCardinalDirection(-T,D,3),k=this.getCardinalDirection(-E,D,1)):i>o?(O=this.getCardinalDirection(-T,D,1),k=this.getCardinalDirection(-E,D,3)):(O=this.getCardinalDirection(T,D,2),k=this.getCardinalDirection(E,D,4)),!C)switch(O){case 1:j=c,A=r+-m/D,n[0]=A,n[1]=j;break;case 2:A=f,j=i+p*D,n[0]=A,n[1]=j;break;case 3:j=d,A=r+m/D,n[0]=A,n[1]=j;break;case 4:A=u,j=i+-p*D,n[0]=A,n[1]=j;break}if(!w)switch(k){case 1:N=g,M=a+-S/D,n[2]=M,n[3]=N;break;case 2:M=b,N=o+x*D,n[2]=M,n[3]=N;break;case 3:N=y,M=a+S/D,n[2]=M,n[3]=N;break;case 4:M=v,N=o+-x*D,n[2]=M,n[3]=N;break}}return!1},i.getCardinalDirection=function(e,t,n){return e>t?n:1+n%4},i.getIntersection=function(e,t,n,i){if(i==null)return this.getIntersection2(e,t,n);var a=e.x,o=e.y,s=t.x,c=t.y,l=n.x,u=n.y,d=i.x,f=i.y,p=void 0,m=void 0,h=void 0,g=void 0,_=void 0,v=void 0,y=void 0,b=void 0,x=void 0;return h=c-o,_=a-s,y=s*o-a*c,g=f-u,v=l-d,b=d*u-l*f,x=h*v-g*_,x===0?null:(p=(_*b-v*y)/x,m=(g*y-h*b)/x,new r(p,m))},i.angleOfVector=function(e,t,n,r){var i=void 0;return e===n?i=r=0){var u=(-c+Math.sqrt(c*c-4*s*l))/(2*s),d=(-c-Math.sqrt(c*c-4*s*l))/(2*s);return u>=0&&u<=1?[u]:d>=0&&d<=1?[d]:null}else return null},i.HALF_PI=.5*Math.PI,i.ONE_AND_HALF_PI=1.5*Math.PI,i.TWO_PI=2*Math.PI,i.THREE_PI=3*Math.PI,e.exports=i}),(function(e,t,n){function r(){}r.sign=function(e){return e>0?1:e<0?-1:0},r.floor=function(e){return e<0?Math.ceil(e):Math.floor(e)},r.ceil=function(e){return e<0?Math.floor(e):Math.ceil(e)},e.exports=r}),(function(e,t,n){function r(){}r.MAX_VALUE=2147483647,r.MIN_VALUE=-2147483648,e.exports=r}),(function(e,t,n){var r=function(){function e(e,t){for(var n=0;n0&&t;){for(s.push(l[0]);s.length>0&&t;){var u=s[0];s.splice(0,1),o.add(u);for(var d=u.getEdges(),a=0;a-1&&l.splice(h,1)}o=new Set,c=new Map}}return e},f.prototype.createDummyNodesForBendpoints=function(e){for(var t=[],n=e.source,r=this.graphManager.calcLowestCommonAncestor(e.source,e.target),i=0;i0){for(var i=this.edgeToDummyNodes.get(n),a=0;a=0&&t.splice(d,1),s.getNeighborsList().forEach(function(e){if(n.indexOf(e)<0){var t=r.get(e)-1;t==1&&l.push(e),r.set(e,t)}})}n=n.concat(l),(t.length==1||t.length==2)&&(i=!0,a=t[0])}return a},f.prototype.setGraphManager=function(e){this.graphManager=e},e.exports=f}),(function(e,t,n){function r(){}r.seed=1,r.x=0,r.nextDouble=function(){return r.x=Math.sin(r.seed++)*1e4,r.x-Math.floor(r.x)},e.exports=r}),(function(e,t,n){var r=n(5);function i(e,t){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(e){this.lworldOrgX=e},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(e){this.lworldOrgY=e},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(e){this.lworldExtX=e},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(e){this.lworldExtY=e},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(e){this.ldeviceOrgX=e},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(e){this.ldeviceOrgY=e},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(e){this.ldeviceExtX=e},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(e){this.ldeviceExtY=e},i.prototype.transformX=function(e){var t=0,n=this.lworldExtX;return n!=0&&(t=this.ldeviceOrgX+(e-this.lworldOrgX)*this.ldeviceExtX/n),t},i.prototype.transformY=function(e){var t=0,n=this.lworldExtY;return n!=0&&(t=this.ldeviceOrgY+(e-this.lworldOrgY)*this.ldeviceExtY/n),t},i.prototype.inverseTransformX=function(e){var t=0,n=this.ldeviceExtX;return n!=0&&(t=this.lworldOrgX+(e-this.ldeviceOrgX)*this.lworldExtX/n),t},i.prototype.inverseTransformY=function(e){var t=0,n=this.ldeviceExtY;return n!=0&&(t=this.lworldOrgY+(e-this.ldeviceOrgY)*this.lworldExtY/n),t},i.prototype.inverseTransformPoint=function(e){return new r(this.inverseTransformX(e.x),this.inverseTransformY(e.y))},e.exports=i}),(function(e,t,n){function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);ta.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(e-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(e>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(e-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},l.prototype.calcSpringForces=function(){for(var e=this.getAllEdges(),t,n=0;n0&&arguments[0]!==void 0?arguments[0]:!0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n,r,i,o,s=this.getAllNodes(),c;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&e&&this.updateGrid(),c=new Set,n=0;nc||s>c)&&(e.gravitationForceX=-this.gravityConstant*i,e.gravitationForceY=-this.gravityConstant*a)):(c=t.getEstimatedSize()*this.compoundGravityRangeFactor,(o>c||s>c)&&(e.gravitationForceX=-this.gravityConstant*i*this.compoundGravityConstant,e.gravitationForceY=-this.gravityConstant*a*this.compoundGravityConstant))},l.prototype.isConverged=function(){var e,t=!1;return this.totalIterations>this.maxIterations/3&&(t=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),e=this.totalDisplacement=c.length||u>=c[0].length)){for(var d=0;de}}]),e}()}),(function(e,t,n){function r(){}r.svd=function(e){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=e.length,this.n=e[0].length;var t=Math.min(this.m,this.n);this.s=function(e){for(var t=[];e-- >0;)t.push(0);return t}(Math.min(this.m+1,this.n)),this.U=function(e){return function e(t){if(t.length==0)return 0;for(var n=[],r=0;r0;)t.push(0);return t}(this.n),i=function(e){for(var t=[];e-- >0;)t.push(0);return t}(this.m),a=!0,o=!0,s=Math.min(this.m-1,this.n),c=Math.max(0,Math.min(this.n-2,this.m)),l=0;l=0;k--)if(this.s[k]!==0){for(var A=k+1;A=0;L--){if(function(e,t){return e&&t}(L0;){var U=void 0,W=void 0;for(U=E-2;U>=-1&&U!==-1;U--)if(Math.abs(n[U])<=re+ne*(Math.abs(this.s[U])+Math.abs(this.s[U+1]))){n[U]=0;break}if(U===E-2)W=4;else{var G=void 0;for(G=E-1;G>=U&&G!==U;G--){var ie=(G===E?0:Math.abs(n[G]))+(G===U+1?0:Math.abs(n[G-1]));if(Math.abs(this.s[G])<=re+ne*ie){this.s[G]=0;break}}G===U?W=3:G===E-1?W=1:(W=2,U=G)}switch(U++,W){case 1:var K=n[E-2];n[E-2]=0;for(var q=E-2;q>=U;q--){var ae=r.hypot(this.s[q],K),J=this.s[q]/ae,Y=K/ae;if(this.s[q]=ae,q!==U&&(K=-Y*n[q-1],n[q-1]=J*n[q-1]),o)for(var X=0;X=this.s[U+1]);){var De=this.s[U];if(this.s[U]=this.s[U+1],this.s[U+1]=De,o&&UMath.abs(t)?(n=t/e,n=Math.abs(e)*Math.sqrt(1+n*n)):t==0?n=0:(n=e/t,n=Math.abs(t)*Math.sqrt(1+n*n)),n},e.exports=r}),(function(e,t,n){var r=function(){function e(e,t){for(var n=0;n2&&arguments[2]!==void 0?arguments[2]:1,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,e),this.sequence1=t,this.sequence2=n,this.match_score=r,this.mismatch_penalty=a,this.gap_penalty=o,this.iMax=t.length+1,this.jMax=n.length+1,this.grid=Array(this.iMax);for(var s=0;s=0;n--){var r=this.listeners[n];r.event===e&&r.callback===t&&this.listeners.splice(n,1)}},i.emit=function(e,t){for(var n=0;n{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r(D()):typeof define==`function`&&define.amd?define([`layout-base`],r):typeof e==`object`?e.coseBase=r(D()):n.coseBase=r(n.layoutBase)})(e,function(e){return(()=>{var t={45:((e,t,n)=>{var r={};r.layoutBase=n(551),r.CoSEConstants=n(806),r.CoSEEdge=n(767),r.CoSEGraph=n(880),r.CoSEGraphManager=n(578),r.CoSELayout=n(765),r.CoSENode=n(991),r.ConstraintHandler=n(902),e.exports=r}),806:((e,t,n)=>{var r=n(551).FDLayoutConstants;function i(){}for(var a in r)i[a]=r[a];i.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,i.DEFAULT_RADIAL_SEPARATION=r.DEFAULT_EDGE_LENGTH,i.DEFAULT_COMPONENT_SEPERATION=60,i.TILE=!0,i.TILING_PADDING_VERTICAL=10,i.TILING_PADDING_HORIZONTAL=10,i.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,i.ENFORCE_CONSTRAINTS=!0,i.APPLY_LAYOUT=!0,i.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,i.TREE_REDUCTION_ON_INCREMENTAL=!0,i.PURE_INCREMENTAL=i.DEFAULT_INCREMENTAL,e.exports=i}),767:((e,t,n)=>{var r=n(551).FDLayoutEdge;function i(e,t,n){r.call(this,e,t,n)}for(var a in i.prototype=Object.create(r.prototype),r)i[a]=r[a];e.exports=i}),880:((e,t,n)=>{var r=n(551).LGraph;function i(e,t,n){r.call(this,e,t,n)}for(var a in i.prototype=Object.create(r.prototype),r)i[a]=r[a];e.exports=i}),578:((e,t,n)=>{var r=n(551).LGraphManager;function i(e){r.call(this,e)}for(var a in i.prototype=Object.create(r.prototype),r)i[a]=r[a];e.exports=i}),765:((e,t,n)=>{var r=n(551).FDLayout,i=n(578),a=n(880),o=n(991),s=n(767),c=n(806),l=n(902),u=n(551).FDLayoutConstants,d=n(551).LayoutConstants,f=n(551).Point,p=n(551).PointD,m=n(551).DimensionD,h=n(551).Layout,g=n(551).Integer,_=n(551).IGeometry,v=n(551).LGraph,y=n(551).Transform,b=n(551).LinkedList;function x(){r.call(this),this.toBeTiled={},this.constraints={}}for(var S in x.prototype=Object.create(r.prototype),r)x[S]=r[S];x.prototype.newGraphManager=function(){var e=new i(this);return this.graphManager=e,e},x.prototype.newGraph=function(e){return new a(null,this.graphManager,e)},x.prototype.newNode=function(e){return new o(this.graphManager,e)},x.prototype.newEdge=function(e){return new s(null,null,e)},x.prototype.initParameters=function(){r.prototype.initParameters.call(this,arguments),this.isSubLayout||(c.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=c.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=c.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=u.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=u.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=u.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=u.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},x.prototype.initSpringEmbedder=function(){r.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/u.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},x.prototype.layout=function(){return d.DEFAULT_CREATE_BENDS_AS_NEEDED&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},x.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),!this.incremental){var e=this.getFlatForest();if(e.length>0)this.positionNodesRadially(e);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),n=this.nodesWithGravity.filter(function(e){return t.has(e)});this.graphManager.setAllNodesToApplyGravitation(n),this.positionNodesRandomly()}}else if(c.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),n=this.nodesWithGravity.filter(function(e){return t.has(e)});this.graphManager.setAllNodesToApplyGravitation(n)}return Object.keys(this.constraints).length>0&&(l.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),c.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},x.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%u.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-this.coolingCycle**+(Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),t=this.nodesWithGravity.filter(function(t){return e.has(t)});this.graphManager.setAllNodesToApplyGravitation(t),this.graphManager.updateBounds(),this.updateGrid(),c.PURE_INCREMENTAL?this.coolingFactor=u.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=u.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),c.PURE_INCREMENTAL?this.coolingFactor=u.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=u.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var n=!this.isTreeGrowing&&!this.isGrowthFinished,r=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(n,r),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},x.prototype.getPositionsData=function(){for(var e=this.graphManager.getAllNodes(),t={},n=0;n0&&this.updateDisplacements();for(var n=0;n0&&(r.fixedNodeWeight=a)}}if(this.constraints.relativePlacementConstraint){var o=new Map,s=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(t){e.fixedNodesOnHorizontal.add(t),e.fixedNodesOnVertical.add(t)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var l=this.constraints.alignmentConstraint.vertical,n=0;n=2*e.length/3;r--)t=Math.floor(Math.random()*(r+1)),n=e[r],e[r]=e[t],e[t]=n;return e},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(t){if(t.left){var n=o.has(t.left)?o.get(t.left):t.left,r=o.has(t.right)?o.get(t.right):t.right;e.nodesInRelativeHorizontal.includes(n)||(e.nodesInRelativeHorizontal.push(n),e.nodeToRelativeConstraintMapHorizontal.set(n,[]),e.dummyToNodeForVerticalAlignment.has(n)?e.nodeToTempPositionMapHorizontal.set(n,e.idToNodeMap.get(e.dummyToNodeForVerticalAlignment.get(n)[0]).getCenterX()):e.nodeToTempPositionMapHorizontal.set(n,e.idToNodeMap.get(n).getCenterX())),e.nodesInRelativeHorizontal.includes(r)||(e.nodesInRelativeHorizontal.push(r),e.nodeToRelativeConstraintMapHorizontal.set(r,[]),e.dummyToNodeForVerticalAlignment.has(r)?e.nodeToTempPositionMapHorizontal.set(r,e.idToNodeMap.get(e.dummyToNodeForVerticalAlignment.get(r)[0]).getCenterX()):e.nodeToTempPositionMapHorizontal.set(r,e.idToNodeMap.get(r).getCenterX())),e.nodeToRelativeConstraintMapHorizontal.get(n).push({right:r,gap:t.gap}),e.nodeToRelativeConstraintMapHorizontal.get(r).push({left:n,gap:t.gap})}else{var i=s.has(t.top)?s.get(t.top):t.top,a=s.has(t.bottom)?s.get(t.bottom):t.bottom;e.nodesInRelativeVertical.includes(i)||(e.nodesInRelativeVertical.push(i),e.nodeToRelativeConstraintMapVertical.set(i,[]),e.dummyToNodeForHorizontalAlignment.has(i)?e.nodeToTempPositionMapVertical.set(i,e.idToNodeMap.get(e.dummyToNodeForHorizontalAlignment.get(i)[0]).getCenterY()):e.nodeToTempPositionMapVertical.set(i,e.idToNodeMap.get(i).getCenterY())),e.nodesInRelativeVertical.includes(a)||(e.nodesInRelativeVertical.push(a),e.nodeToRelativeConstraintMapVertical.set(a,[]),e.dummyToNodeForHorizontalAlignment.has(a)?e.nodeToTempPositionMapVertical.set(a,e.idToNodeMap.get(e.dummyToNodeForHorizontalAlignment.get(a)[0]).getCenterY()):e.nodeToTempPositionMapVertical.set(a,e.idToNodeMap.get(a).getCenterY())),e.nodeToRelativeConstraintMapVertical.get(i).push({bottom:a,gap:t.gap}),e.nodeToRelativeConstraintMapVertical.get(a).push({top:i,gap:t.gap})}});else{var d=new Map,f=new Map;this.constraints.relativePlacementConstraint.forEach(function(e){if(e.left){var t=o.has(e.left)?o.get(e.left):e.left,n=o.has(e.right)?o.get(e.right):e.right;d.has(t)?d.get(t).push(n):d.set(t,[n]),d.has(n)?d.get(n).push(t):d.set(n,[t])}else{var r=s.has(e.top)?s.get(e.top):e.top,i=s.has(e.bottom)?s.get(e.bottom):e.bottom;f.has(r)?f.get(r).push(i):f.set(r,[i]),f.has(i)?f.get(i).push(r):f.set(i,[r])}});var p=function(e,t){var n=[],r=[],i=new b,a=new Set,o=0;return e.forEach(function(s,c){if(!a.has(c)){n[o]=[],r[o]=!1;var l=c;for(i.push(l),a.add(l),n[o].push(l);i.length!=0;)l=i.shift(),t.has(l)&&(r[o]=!0),e.get(l).forEach(function(e){a.has(e)||(i.push(e),a.add(e),n[o].push(e))});o++}}),{components:n,isFixed:r}},m=p(d,e.fixedNodesOnHorizontal);this.componentsOnHorizontal=m.components,this.fixedComponentsOnHorizontal=m.isFixed;var h=p(f,e.fixedNodesOnVertical);this.componentsOnVertical=h.components,this.fixedComponentsOnVertical=h.isFixed}}},x.prototype.updateDisplacements=function(){var e=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(t){var n=e.idToNodeMap.get(t.nodeId);n.displacementX=0,n.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var t=this.constraints.alignmentConstraint.vertical,n=0;n1){var s;for(s=0;sr&&(r=Math.floor(o.y)),a=Math.floor(o.x+c.DEFAULT_COMPONENT_SEPERATION)}this.transform(new p(d.WORLD_CENTER_X-o.x/2,d.WORLD_CENTER_Y-o.y/2))},x.radialLayout=function(e,t,n){var r=Math.max(this.maxDiagonalInTree(e),c.DEFAULT_RADIAL_SEPARATION);x.branchRadialLayout(t,null,0,359,0,r);var i=v.calculateBounds(e),a=new y;a.setDeviceOrgX(i.getMinX()),a.setDeviceOrgY(i.getMinY()),a.setWorldOrgX(n.x),a.setWorldOrgY(n.y);for(var o=0;o1;){var g=h[0];h.splice(0,1);var v=u.indexOf(g);v>=0&&u.splice(v,1),p--,d--}m=t==null?0:(u.indexOf(h[0])+1)%p;for(var y=Math.abs(r-n)/d,b=m;f!=d;b=++b%p){var S=u[b].getOtherEnd(e);if(S!=t){var C=(n+f*y)%360,w=(C+y)%360;x.branchRadialLayout(S,e,C,w,i+a,a),f++}}},x.maxDiagonalInTree=function(e){for(var t=g.MIN_VALUE,n=0;nt&&(t=r)}return t},x.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},x.prototype.groupZeroDegreeMembers=function(){var e=this,t={};this.memberGroups={},this.idToDummyNode={};for(var n=[],r=this.graphManager.getAllNodes(),i=0;i1){var r=`DummyCompound_`+n;e.memberGroups[r]=t[n];var i=t[n][0].getParent(),a=new o(e.graphManager);a.id=r,a.paddingLeft=i.paddingLeft||0,a.paddingRight=i.paddingRight||0,a.paddingBottom=i.paddingBottom||0,a.paddingTop=i.paddingTop||0,e.idToDummyNode[r]=a;var s=e.getGraphManager().add(e.newGraph(),a),c=i.getChild();c.add(a);for(var l=0;li?(r.rect.x-=(r.labelWidth-i)/2,r.setWidth(r.labelWidth),r.labelMarginLeft=(r.labelWidth-i)/2):r.labelPosHorizontal==`right`&&r.setWidth(i+r.labelWidth)),r.labelHeight&&(r.labelPosVertical==`top`?(r.rect.y-=r.labelHeight,r.setHeight(a+r.labelHeight),r.labelMarginTop=r.labelHeight):r.labelPosVertical==`center`&&r.labelHeight>a?(r.rect.y-=(r.labelHeight-a)/2,r.setHeight(r.labelHeight),r.labelMarginTop=(r.labelHeight-a)/2):r.labelPosVertical==`bottom`&&r.setHeight(a+r.labelHeight))}})},x.prototype.repopulateCompounds=function(){for(var e=this.compoundOrder.length-1;e>=0;e--){var t=this.compoundOrder[e],n=t.id,r=t.paddingLeft,i=t.paddingTop,a=t.labelMarginLeft,o=t.labelMarginTop;this.adjustLocations(this.tiledMemberPack[n],t.rect.x,t.rect.y,r,i,a,o)}},x.prototype.repopulateZeroDegreeMembers=function(){var e=this,t=this.tiledZeroDegreePack;Object.keys(t).forEach(function(n){var r=e.idToDummyNode[n],i=r.paddingLeft,a=r.paddingTop,o=r.labelMarginLeft,s=r.labelMarginTop;e.adjustLocations(t[n],r.rect.x,r.rect.y,i,a,o,s)})},x.prototype.getToBeTiled=function(e){var t=e.id;if(this.toBeTiled[t]!=null)return this.toBeTiled[t];var n=e.getChild();if(n==null)return this.toBeTiled[t]=!1,!1;for(var r=n.getNodes(),i=0;i0)return this.toBeTiled[t]=!1,!1;if(a.getChild()==null){this.toBeTiled[a.id]=!1;continue}if(!this.getToBeTiled(a))return this.toBeTiled[t]=!1,!1}return this.toBeTiled[t]=!0,!0},x.prototype.getNodeDegree=function(e){e.id;for(var t=e.getEdges(),n=0,r=0;ru&&(u=f.rect.height)}n+=u+e.verticalPadding}},x.prototype.tileCompoundMembers=function(e,t){var n=this;this.tiledMemberPack=[],Object.keys(e).forEach(function(r){var i=t[r];if(n.tiledMemberPack[r]=n.tileNodes(e[r],i.paddingLeft+i.paddingRight),i.rect.width=n.tiledMemberPack[r].width,i.rect.height=n.tiledMemberPack[r].height,i.setCenter(n.tiledMemberPack[r].centerX,n.tiledMemberPack[r].centerY),i.labelMarginLeft=0,i.labelMarginTop=0,c.NODE_DIMENSIONS_INCLUDE_LABELS){var a=i.rect.width,o=i.rect.height;i.labelWidth&&(i.labelPosHorizontal==`left`?(i.rect.x-=i.labelWidth,i.setWidth(a+i.labelWidth),i.labelMarginLeft=i.labelWidth):i.labelPosHorizontal==`center`&&i.labelWidth>a?(i.rect.x-=(i.labelWidth-a)/2,i.setWidth(i.labelWidth),i.labelMarginLeft=(i.labelWidth-a)/2):i.labelPosHorizontal==`right`&&i.setWidth(a+i.labelWidth)),i.labelHeight&&(i.labelPosVertical==`top`?(i.rect.y-=i.labelHeight,i.setHeight(o+i.labelHeight),i.labelMarginTop=i.labelHeight):i.labelPosVertical==`center`&&i.labelHeight>o?(i.rect.y-=(i.labelHeight-o)/2,i.setHeight(i.labelHeight),i.labelMarginTop=(i.labelHeight-o)/2):i.labelPosVertical==`bottom`&&i.setHeight(o+i.labelHeight))}})},x.prototype.tileNodes=function(e,t){var n=this.tileNodesByFavoringDim(e,t,!0),r=this.tileNodesByFavoringDim(e,t,!1),i=this.getOrgRatio(n);return this.getOrgRatio(r)s&&(s=e.getWidth())});var l=a/i,u=o/i,d=(n-r)**2+4*(l+r)*(u+n)*i,f=(r-n+Math.sqrt(d))/(2*(l+r)),p;t?(p=Math.ceil(f),p==f&&p++):p=Math.floor(f);var m=p*(l+r)-r;return s>m&&(m=s),m+=r*2,m},x.prototype.tileNodesByFavoringDim=function(e,t,n){var r=c.TILING_PADDING_VERTICAL,i=c.TILING_PADDING_HORIZONTAL,a=c.TILING_COMPARE_BY,o={rows:[],rowWidth:[],rowHeight:[],width:0,height:t,verticalPadding:r,horizontalPadding:i,centerX:0,centerY:0};a&&(o.idealRowWidth=this.calcIdealRowWidth(e,n));var s=function(e){return e.rect.width*e.rect.height},l=function(e,t){return s(t)-s(e)};e.sort(function(e,t){var n=l;return o.idealRowWidth?(n=a,n(e.id,t.id)):n(e,t)});for(var u=0,d=0,f=0;f0&&(a+=e.horizontalPadding),e.rowWidth[n]=a,e.width0&&(o+=e.verticalPadding);var s=0;o>e.rowHeight[n]&&(s=e.rowHeight[n],e.rowHeight[n]=o,s=e.rowHeight[n]-s),e.height+=s,e.rows[n].push(t)},x.prototype.getShortestRowIndex=function(e){for(var t=-1,n=Number.MAX_VALUE,r=0;rn&&(t=r,n=e.rowWidth[r]);return t},x.prototype.canAddHorizontal=function(e,t,n){if(e.idealRowWidth){var r=e.rows.length-1;return e.rowWidth[r]+t+e.horizontalPadding<=e.idealRowWidth}var i=this.getShortestRowIndex(e);if(i<0)return!0;var a=e.rowWidth[i];if(a+e.horizontalPadding+t<=e.width)return!0;var o=0;e.rowHeight[i]0&&(o=n+e.verticalPadding-e.rowHeight[i]);var s=e.width-a>=t+e.horizontalPadding?(e.height+o)/(a+t+e.horizontalPadding):(e.height+o)/e.width;o=n+e.verticalPadding;var c=e.widtha&&t!=n){r.splice(-1,1),e.rows[n].push(i),e.rowWidth[t]=e.rowWidth[t]-a,e.rowWidth[n]=e.rowWidth[n]+a,e.width=e.rowWidth[instance.getLongestRowIndex(e)];for(var o=Number.MIN_VALUE,s=0;so&&(o=r[s].height);t>0&&(o+=e.verticalPadding);var c=e.rowHeight[t]+e.rowHeight[n];e.rowHeight[t]=o,e.rowHeight[n]0)for(var d=i;d<=a;d++)l[0]+=this.grid[d][o-1].length+this.grid[d][o].length-1;if(a0)for(var d=o;d<=s;d++)l[3]+=this.grid[i-1][d].length+this.grid[i][d].length-1;for(var f=g.MAX_VALUE,p,m,h=0;h{var r=n(551).FDLayoutNode,i=n(551).IMath;function a(e,t,n,i){r.call(this,e,t,n,i)}for(var o in a.prototype=Object.create(r.prototype),r)a[o]=r[o];a.prototype.calculateDisplacement=function(){var e=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=e.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=e.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=e.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=e.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>e.coolingFactor*e.maxNodeDisplacement&&(this.displacementX=e.coolingFactor*e.maxNodeDisplacement*i.sign(this.displacementX)),Math.abs(this.displacementY)>e.coolingFactor*e.maxNodeDisplacement&&(this.displacementY=e.coolingFactor*e.maxNodeDisplacement*i.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},a.prototype.propogateDisplacementToChildren=function(e,t){for(var n=this.getChild().getNodes(),r,i=0;i{function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0){var a=0;r.forEach(function(e){t==`horizontal`?(f.set(e,c.has(e)?l[c.get(e)]:i.get(e)),a+=f.get(e)):(f.set(e,c.has(e)?u[c.get(e)]:i.get(e)),a+=f.get(e))}),a/=r.length,e.forEach(function(e){n.has(e)||f.set(e,a)})}else{var o=0;e.forEach(function(e){t==`horizontal`?o+=c.has(e)?l[c.get(e)]:i.get(e):o+=c.has(e)?u[c.get(e)]:i.get(e)}),o/=e.length,e.forEach(function(e){f.set(e,o)})}});for(var h=function(){var r=m.shift();e.get(r).forEach(function(e){if(f.get(e.id)o&&(o=v),ys&&(s=y)}}catch(e){p=!0,m=e}finally{try{!d&&h.return&&h.return()}finally{if(p)throw m}}var b=(r+o)/2-(a+s)/2,x=!0,S=!1,C=void 0;try{for(var w=e[Symbol.iterator](),T;!(x=(T=w.next()).done);x=!0){var E=T.value;f.set(E,f.get(E)+b)}}catch(e){S=!0,C=e}finally{try{!x&&w.return&&w.return()}finally{if(S)throw C}}})}return f},v=function(e){var t=0,n=0,r=0,i=0;if(e.forEach(function(e){e.left?l[c.get(e.left)]-l[c.get(e.right)]>=0?t++:n++:u[c.get(e.top)]-u[c.get(e.bottom)]>=0?r++:i++}),t>n&&r>i)for(var a=0;an)for(var o=0;oi)for(var s=0;s1)t.fixedNodeConstraint.forEach(function(e,t){S[t]=[e.position.x,e.position.y],C[t]=[l[c.get(e.nodeId)],u[c.get(e.nodeId)]]}),w=!0;else if(t.alignmentConstraint)(function(){var e=0;if(t.alignmentConstraint.vertical){for(var n=t.alignmentConstraint.vertical,i=function(t){var i=new Set;n[t].forEach(function(e){i.add(e)});var a=new Set([].concat(r(i)).filter(function(e){return E.has(e)})),o=void 0;o=a.size>0?l[c.get(a.values().next().value)]:g(i).x,n[t].forEach(function(t){S[e]=[o,u[c.get(t)]],C[e]=[l[c.get(t)],u[c.get(t)]],e++})},a=0;a0?l[c.get(i.values().next().value)]:g(n).y,o[t].forEach(function(t){S[e]=[l[c.get(t)],a],C[e]=[l[c.get(t)],u[c.get(t)]],e++})},d=0;dA&&(A=k[M].length,j=M);if(A0){var W={x:0,y:0};t.fixedNodeConstraint.forEach(function(e,t){var n={x:l[c.get(e.nodeId)],y:u[c.get(e.nodeId)]},r=e.position,i=h(r,n);W.x+=i.x,W.y+=i.y}),W.x/=t.fixedNodeConstraint.length,W.y/=t.fixedNodeConstraint.length,l.forEach(function(e,t){l[t]+=W.x}),u.forEach(function(e,t){u[t]+=W.y}),t.fixedNodeConstraint.forEach(function(e){l[c.get(e.nodeId)]=e.position.x,u[c.get(e.nodeId)]=e.position.y})}if(t.alignmentConstraint){if(t.alignmentConstraint.vertical)for(var G=t.alignmentConstraint.vertical,ie=function(e){var t=new Set;G[e].forEach(function(e){t.add(e)});var n=new Set([].concat(r(t)).filter(function(e){return E.has(e)})),i=void 0;i=n.size>0?l[c.get(n.values().next().value)]:g(t).x,t.forEach(function(e){E.has(e)||(l[c.get(e)]=i)})},K=0;K0?u[c.get(n.values().next().value)]:g(t).y,t.forEach(function(e){E.has(e)||(u[c.get(e)]=i)})},J=0;J{t.exports=e})},n={};function r(e){var i=n[e];if(i!==void 0)return i.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}return r(45)})()})})),k=t(e(((e,t)=>{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r(O()):typeof define==`function`&&define.amd?define([`cose-base`],r):typeof e==`object`?e.cytoscapeFcose=r(O()):n.cytoscapeFcose=r(n.coseBase)})(e,function(e){return(()=>{var t={658:(e=>{e.exports=Object.assign==null?function(e){return[...arguments].slice(1).forEach(function(t){Object.keys(t).forEach(function(n){return e[n]=t[n]})}),e}:Object.assign.bind(Object)}),548:((e,t,n)=>{var r=function(){function e(e,t){var n=[],r=!0,i=!1,a=void 0;try{for(var o=e[Symbol.iterator](),s;!(r=(s=o.next()).done)&&(n.push(s.value),!(t&&n.length===t));r=!0);}catch(e){i=!0,a=e}finally{try{!r&&o.return&&o.return()}finally{if(i)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw TypeError(`Invalid attempt to destructure non-iterable instance`)}}(),i=n(140).layoutBase.LinkedList,a={};a.getTopMostNodes=function(e){for(var t={},n=0;n0&&l.merge(e)});for(var u=0;u1){l=s[0],u=l.connectedEdges().length,s.forEach(function(e){e.connectedEdges().length0&&r.set(`dummy`+(r.size+1),p),m},a.relocateComponent=function(e,t,n){if(!n.fixedNodeConstraint){var i=1/0,a=-1/0,o=1/0,s=-1/0;if(n.quality==`draft`){var c=!0,l=!1,u=void 0;try{for(var d=t.nodeIndexes[Symbol.iterator](),f;!(c=(f=d.next()).done);c=!0){var p=f.value,m=r(p,2),h=m[0],g=m[1],_=n.cy.getElementById(h);if(_){var v=_.boundingBox(),y=t.xCoords[g]-v.w/2,b=t.xCoords[g]+v.w/2,x=t.yCoords[g]-v.h/2,S=t.yCoords[g]+v.h/2;ya&&(a=b),xs&&(s=S)}}}catch(e){l=!0,u=e}finally{try{!c&&d.return&&d.return()}finally{if(l)throw u}}var C=e.x-(a+i)/2,w=e.y-(s+o)/2;t.xCoords=t.xCoords.map(function(e){return e+C}),t.yCoords=t.yCoords.map(function(e){return e+w})}else{Object.keys(t).forEach(function(e){var n=t[e],r=n.getRect().x,c=n.getRect().x+n.getRect().width,l=n.getRect().y,u=n.getRect().y+n.getRect().height;ra&&(a=c),ls&&(s=u)});var T=e.x-(a+i)/2,E=e.y-(s+o)/2;Object.keys(t).forEach(function(e){var n=t[e];n.setCenter(n.getCenterX()+T,n.getCenterY()+E)})}}},a.calcBoundingBox=function(e,t,n,r){for(var i=2**53-1,a=-(2**53-1),o=2**53-1,s=-(2**53-1),c=void 0,l=void 0,u=void 0,d=void 0,f=e.descendants().not(`:parent`),p=f.length,m=0;mc&&(i=c),au&&(o=u),s{var r=n(548),i=n(140).CoSELayout,a=n(140).CoSENode,o=n(140).layoutBase.PointD,s=n(140).layoutBase.DimensionD,c=n(140).layoutBase.LayoutConstants,l=n(140).layoutBase.FDLayoutConstants,u=n(140).CoSEConstants;e.exports={coseLayout:function(e,t){var n=e.cy,d=e.eles,f=d.nodes(),p=d.edges(),m=void 0,h=void 0,g=void 0,_={};e.randomize&&(m=t.nodeIndexes,h=t.xCoords,g=t.yCoords);var v=function(e){return typeof e==`function`},y=function(e,t){return v(e)?e(t):e},b=r.calcParentsWithoutChildren(n,d),x=function e(t,n,i,c){for(var l=n.length,u=0;u0){var S=void 0;S=i.getGraphManager().add(i.newGraph(),p),e(S,f,i,c)}}},S=function(t,n,r){for(var i=0,a=0,o=0;o0?u.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=i/a:v(e.idealEdgeLength)?u.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=50:u.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=e.idealEdgeLength,u.MIN_REPULSION_DIST=l.MIN_REPULSION_DIST=l.DEFAULT_EDGE_LENGTH/10,u.DEFAULT_RADIAL_SEPARATION=l.DEFAULT_EDGE_LENGTH)},C=function(e,t){t.fixedNodeConstraint&&(e.constraints.fixedNodeConstraint=t.fixedNodeConstraint),t.alignmentConstraint&&(e.constraints.alignmentConstraint=t.alignmentConstraint),t.relativePlacementConstraint&&(e.constraints.relativePlacementConstraint=t.relativePlacementConstraint)};e.nestingFactor!=null&&(u.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=l.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=e.nestingFactor),e.gravity!=null&&(u.DEFAULT_GRAVITY_STRENGTH=l.DEFAULT_GRAVITY_STRENGTH=e.gravity),e.numIter!=null&&(u.MAX_ITERATIONS=l.MAX_ITERATIONS=e.numIter),e.gravityRange!=null&&(u.DEFAULT_GRAVITY_RANGE_FACTOR=l.DEFAULT_GRAVITY_RANGE_FACTOR=e.gravityRange),e.gravityCompound!=null&&(u.DEFAULT_COMPOUND_GRAVITY_STRENGTH=l.DEFAULT_COMPOUND_GRAVITY_STRENGTH=e.gravityCompound),e.gravityRangeCompound!=null&&(u.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=l.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=e.gravityRangeCompound),e.initialEnergyOnIncremental!=null&&(u.DEFAULT_COOLING_FACTOR_INCREMENTAL=l.DEFAULT_COOLING_FACTOR_INCREMENTAL=e.initialEnergyOnIncremental),e.tilingCompareBy!=null&&(u.TILING_COMPARE_BY=e.tilingCompareBy),e.quality==`proof`?c.QUALITY=2:c.QUALITY=0,u.NODE_DIMENSIONS_INCLUDE_LABELS=l.NODE_DIMENSIONS_INCLUDE_LABELS=c.NODE_DIMENSIONS_INCLUDE_LABELS=e.nodeDimensionsIncludeLabels,u.DEFAULT_INCREMENTAL=l.DEFAULT_INCREMENTAL=c.DEFAULT_INCREMENTAL=!e.randomize,u.ANIMATE=l.ANIMATE=c.ANIMATE=e.animate,u.TILE=e.tile,u.TILING_PADDING_VERTICAL=typeof e.tilingPaddingVertical==`function`?e.tilingPaddingVertical.call():e.tilingPaddingVertical,u.TILING_PADDING_HORIZONTAL=typeof e.tilingPaddingHorizontal==`function`?e.tilingPaddingHorizontal.call():e.tilingPaddingHorizontal,u.DEFAULT_INCREMENTAL=l.DEFAULT_INCREMENTAL=c.DEFAULT_INCREMENTAL=!0,u.PURE_INCREMENTAL=!e.randomize,c.DEFAULT_UNIFORM_LEAF_NODE_SIZES=e.uniformNodeDimensions,e.step==`transformed`&&(u.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,u.ENFORCE_CONSTRAINTS=!1,u.APPLY_LAYOUT=!1),e.step==`enforced`&&(u.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,u.ENFORCE_CONSTRAINTS=!0,u.APPLY_LAYOUT=!1),e.step==`cose`&&(u.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,u.ENFORCE_CONSTRAINTS=!1,u.APPLY_LAYOUT=!0),e.step==`all`&&(e.randomize?u.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:u.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,u.ENFORCE_CONSTRAINTS=!0,u.APPLY_LAYOUT=!0),e.fixedNodeConstraint||e.alignmentConstraint||e.relativePlacementConstraint?u.TREE_REDUCTION_ON_INCREMENTAL=!1:u.TREE_REDUCTION_ON_INCREMENTAL=!0;var w=new i,T=w.newGraphManager();return x(T.addRoot(),r.getTopMostNodes(f),w,e),S(w,T,p),C(w,e),w.runLayout(),_}}}),212:((e,t,n)=>{var r=function(){function e(e,t){for(var n=0;n0)if(f){var p=o.getTopMostNodes(t.eles.nodes());if(l=o.connectComponents(n,t.eles,p),l.forEach(function(e){var t=e.boundingBox();u.push({x:t.x1+t.w/2,y:t.y1+t.h/2})}),t.randomize&&l.forEach(function(e){t.eles=e,i.push(s(t))}),t.quality==`default`||t.quality==`proof`){var m=n.collection();if(t.tile){var h=new Map,g=[],_=[],v=0,y={nodeIndexes:h,xCoords:g,yCoords:_},b=[];if(l.forEach(function(e,t){e.edges().length==0&&(e.nodes().forEach(function(t,n){m.merge(e.nodes()[n]),t.isParent()||(y.nodeIndexes.set(e.nodes()[n].id(),v++),y.xCoords.push(e.nodes()[0].position().x),y.yCoords.push(e.nodes()[0].position().y))}),b.push(t))}),m.length>1){var x=m.boundingBox();u.push({x:x.x1+x.w/2,y:x.y1+x.h/2}),l.push(m),i.push(y);for(var S=b.length-1;S>=0;S--)l.splice(b[S],1),i.splice(b[S],1),u.splice(b[S],1)}}l.forEach(function(e,n){t.eles=e,a.push(c(t,i[n])),o.relocateComponent(u[n],a[n],t)})}else l.forEach(function(e,n){o.relocateComponent(u[n],i[n],t)});var C=new Set;if(l.length>1){var w=[],T=r.filter(function(e){return e.css(`display`)==`none`});l.forEach(function(e,n){var r=void 0;if(t.quality==`draft`&&(r=i[n].nodeIndexes),e.nodes().not(T).length>0){var s={};s.edges=[],s.nodes=[];var c=void 0;e.nodes().not(T).forEach(function(e){if(t.quality==`draft`)if(!e.isParent())c=r.get(e.id()),s.nodes.push({x:i[n].xCoords[c]-e.boundingbox().w/2,y:i[n].yCoords[c]-e.boundingbox().h/2,width:e.boundingbox().w,height:e.boundingbox().h});else{var l=o.calcBoundingBox(e,i[n].xCoords,i[n].yCoords,r);s.nodes.push({x:l.topLeftX,y:l.topLeftY,width:l.width,height:l.height})}else a[n][e.id()]&&s.nodes.push({x:a[n][e.id()].getLeft(),y:a[n][e.id()].getTop(),width:a[n][e.id()].getWidth(),height:a[n][e.id()].getHeight()})}),e.edges().forEach(function(e){var c=e.source(),l=e.target();if(c.css(`display`)!=`none`&&l.css(`display`)!=`none`)if(t.quality==`draft`){var u=r.get(c.id()),d=r.get(l.id()),f=[],p=[];if(c.isParent()){var m=o.calcBoundingBox(c,i[n].xCoords,i[n].yCoords,r);f.push(m.topLeftX+m.width/2),f.push(m.topLeftY+m.height/2)}else f.push(i[n].xCoords[u]),f.push(i[n].yCoords[u]);if(l.isParent()){var h=o.calcBoundingBox(l,i[n].xCoords,i[n].yCoords,r);p.push(h.topLeftX+h.width/2),p.push(h.topLeftY+h.height/2)}else p.push(i[n].xCoords[d]),p.push(i[n].yCoords[d]);s.edges.push({startX:f[0],startY:f[1],endX:p[0],endY:p[1]})}else a[n][c.id()]&&a[n][l.id()]&&s.edges.push({startX:a[n][c.id()].getCenterX(),startY:a[n][c.id()].getCenterY(),endX:a[n][l.id()].getCenterX(),endY:a[n][l.id()].getCenterY()})}),s.nodes.length>0&&(w.push(s),C.add(n))}});var E=d.packComponents(w,t.randomize).shifts;if(t.quality==`draft`)i.forEach(function(e,t){var n=e.xCoords.map(function(e){return e+E[t].dx}),r=e.yCoords.map(function(e){return e+E[t].dy});e.xCoords=n,e.yCoords=r});else{var D=0;C.forEach(function(e){Object.keys(a[e]).forEach(function(t){var n=a[e][t];n.setCenter(n.getCenterX()+E[D].dx,n.getCenterY()+E[D].dy)}),D++})}}}else{var O=t.eles.boundingBox();if(u.push({x:O.x1+O.w/2,y:O.y1+O.h/2}),t.randomize){var k=s(t);i.push(k)}t.quality==`default`||t.quality==`proof`?(a.push(c(t,i[0])),o.relocateComponent(u[0],a[0],t)):o.relocateComponent(u[0],i[0],t)}var A=function(e,n){if(t.quality==`default`||t.quality==`proof`){typeof e==`number`&&(e=n);var r=void 0,o=void 0,s=e.data(`id`);return a.forEach(function(e){s in e&&(r={x:e[s].getRect().getCenterX(),y:e[s].getRect().getCenterY()},o=e[s])}),t.nodeDimensionsIncludeLabels&&(o.labelWidth&&(o.labelPosHorizontal==`left`?r.x+=o.labelWidth/2:o.labelPosHorizontal==`right`&&(r.x-=o.labelWidth/2)),o.labelHeight&&(o.labelPosVertical==`top`?r.y+=o.labelHeight/2:o.labelPosVertical==`bottom`&&(r.y-=o.labelHeight/2))),r??={x:e.position(`x`),y:e.position(`y`)},{x:r.x,y:r.y}}else{var c=void 0;return i.forEach(function(t){var n=t.nodeIndexes.get(e.id());n!=null&&(c={x:t.xCoords[n],y:t.yCoords[n]})}),c??={x:e.position(`x`),y:e.position(`y`)},{x:c.x,y:c.y}}};if(t.quality==`default`||t.quality==`proof`||t.randomize){var j=o.calcParentsWithoutChildren(n,r),M=r.filter(function(e){return e.css(`display`)==`none`});t.eles=r.not(M),r.nodes().not(`:parent`).not(M).layoutPositions(e,t,A),j.length>0&&j.forEach(function(e){e.position(A(e))})}else console.log(`If randomize option is set to false, then quality option must be 'default' or 'proof'.`)}}]),e}()}),657:((e,t,n)=>{var r=n(548),i=n(140).layoutBase.Matrix,a=n(140).layoutBase.SVD;e.exports={spectralLayout:function(e){var t=e.cy,n=e.eles,o=n.nodes(),s=n.nodes(`:parent`),c=new Map,l=new Map,u=new Map,d=[],f=[],p=[],m=[],h=[],g=[],_=[],v=[],y=void 0,b=1e8,x=1e-9,S=e.piTol,C=e.samplingType,w=e.nodeSeparation,T=void 0,E=function(){for(var e=0,t=0,n=!1;t=i;){o=r[i++];for(var m=d[o],_=0;_u&&(u=h[x],f=x)}return f},O=function(e){var t=void 0;if(e){t=Math.floor(Math.random()*y);for(var n=0;n=1)break;u=l}for(var h=0;h=1)break;u=l}for(var b=0;b0&&(r.isParent()?d[t].push(u.get(r.id())):d[t].push(r.id()))})});var B=function(e){var n=l.get(e),r=void 0;c.get(e).forEach(function(i){r=t.getElementById(i).isParent()?u.get(i):i,d[n].push(r),d[l.get(r)].push(e)})},V=!0,ee=!1,te=void 0;try{for(var H=c.keys()[Symbol.iterator](),ne;!(V=(ne=H.next()).done);V=!0){var re=ne.value;B(re)}}catch(e){ee=!0,te=e}finally{try{!V&&H.return&&H.return()}finally{if(ee)throw te}}y=l.size;var U=void 0;if(y>2){T=y{var r=n(212),i=function(e){e&&e(`layout`,`fcose`,r)};typeof cytoscape<`u`&&i(cytoscape),e.exports=i}),140:(t=>{t.exports=e})},n={};function r(e){var i=n[e];if(i!==void 0)return i.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}return r(579)})()})}))(),1),A={L:`left`,R:`right`,T:`top`,B:`bottom`},j={L:o(e=>`${e},${e/2} 0,${e} 0,0`,`L`),R:o(e=>`0,${e/2} ${e},0 ${e},${e}`,`R`),T:o(e=>`0,0 ${e},0 ${e/2},${e}`,`T`),B:o(e=>`${e/2},0 ${e},${e} 0,${e}`,`B`)},M={L:o((e,t)=>e-t+2,`L`),R:o((e,t)=>e-2,`R`),T:o((e,t)=>e-t+2,`T`),B:o((e,t)=>e-2,`B`)},N=o(function(e){return F(e)?e===`L`?`R`:`L`:e===`T`?`B`:`T`},`getOppositeArchitectureDirection`),P=o(function(e){let t=e;return t===`L`||t===`R`||t===`T`||t===`B`},`isArchitectureDirection`),F=o(function(e){let t=e;return t===`L`||t===`R`},`isArchitectureDirectionX`),I=o(function(e){let t=e;return t===`T`||t===`B`},`isArchitectureDirectionY`),L=o(function(e,t){let n=F(e)&&I(t),r=I(e)&&F(t);return n||r},`isArchitectureDirectionXY`),R=o(function(e){let t=e[0],n=e[1],r=F(t)&&I(n),i=I(t)&&F(n);return r||i},`isArchitecturePairXY`),z=o(function(e){return e!==`LL`&&e!==`RR`&&e!==`TT`&&e!==`BB`},`isValidArchitectureDirectionPair`),B=o(function(e,t){let n=`${e}${t}`;return z(n)?n:void 0},`getArchitectureDirectionPair`),V=o(function([e,t],n){let r=n[0],i=n[1];return F(r)?I(i)?[e+(r===`L`?-1:1),t+(i===`T`?1:-1)]:[e+(r===`L`?-1:1),t]:F(i)?[e+(i===`L`?1:-1),t+(r===`T`?1:-1)]:[e,t+(r===`T`?1:-1)]},`shiftPositionByArchitectureDirectionPair`),ee=o(function(e){return e===`LT`||e===`TL`?[1,1]:e===`BL`||e===`LB`?[1,-1]:e===`BR`||e===`RB`?[-1,-1]:[-1,1]},`getArchitectureDirectionXYFactors`),te=o(function(e,t){return L(e,t)?`bend`:F(e)?`horizontal`:`vertical`},`getArchitectureDirectionAlignment`),H=o(function(e){return e.type===`service`},`isArchitectureService`),ne=o(function(e){return e.type===`junction`},`isArchitectureJunction`),re=o((e,t)=>{let[n,r]=[e,t].sort();return`${JSON.stringify(n)}-${JSON.stringify(r)}`},`architectureGroupAlignmentKey`),U=o(e=>e.data(),`edgeData`),W=o(e=>e.data(),`nodeData`),G=p.architecture,ie=class{constructor(){this.nodes=new Map,this.groups=new Map,this.edges=[],this.layoutHints=[],this.registeredIds=new Map,this.elements=new Map,this.diagramId=``,this.setAccTitle=h,this.getAccTitle=b,this.setDiagramTitle=u,this.getDiagramTitle=x,this.getAccDescription=y,this.setAccDescription=T,this.clear()}static{o(this,`ArchitectureDB`)}setDiagramId(e){this.diagramId=e}getDiagramId(){return this.diagramId}clear(){this.nodes=new Map,this.groups=new Map,this.edges=[],this.layoutHints=[],this.registeredIds=new Map,this.dataStructures=void 0,this.elements=new Map,this.diagramId=``,_()}addService({id:e,icon:t,in:n,title:r,iconText:i}){if(this.registeredIds.has(e))throw Error(`The service id [${e}] is already in use by another ${this.registeredIds.get(e)}`);if(n!==void 0){if(e===n)throw Error(`The service [${e}] cannot be placed within itself`);if(!this.registeredIds.has(n))throw Error(`The service [${e}]'s parent does not exist. Please make sure the parent is created before this service`);if(this.registeredIds.get(n)===`node`)throw Error(`The service [${e}]'s parent is not a group`)}this.registeredIds.set(e,`node`),this.nodes.set(e,{id:e,type:`service`,icon:t,iconText:i,title:r,edges:[],in:n})}getServices(){return[...this.nodes.values()].filter(H)}addJunction({id:e,in:t}){if(this.registeredIds.has(e))throw Error(`The junction id [${e}] is already in use by another ${this.registeredIds.get(e)}`);if(t!==void 0){if(e===t)throw Error(`The junction [${e}] cannot be placed within itself`);if(!this.registeredIds.has(t))throw Error(`The junction [${e}]'s parent does not exist. Please make sure the parent is created before this junction`);if(this.registeredIds.get(t)===`node`)throw Error(`The junction [${e}]'s parent is not a group`)}this.registeredIds.set(e,`node`),this.nodes.set(e,{id:e,type:`junction`,edges:[],in:t})}getJunctions(){return[...this.nodes.values()].filter(ne)}getNodes(){return[...this.nodes.values()]}getNode(e){return this.nodes.get(e)??null}addGroup({id:e,icon:t,in:n,title:r}){if(this.registeredIds.has(e))throw Error(`The group id [${e}] is already in use by another ${this.registeredIds.get(e)}`);if(n!==void 0){if(e===n)throw Error(`The group [${e}] cannot be placed within itself`);if(!this.registeredIds.has(n))throw Error(`The group [${e}]'s parent does not exist. Please make sure the parent is created before this group`);if(this.registeredIds.get(n)===`node`)throw Error(`The group [${e}]'s parent is not a group`)}this.registeredIds.set(e,`group`),this.groups.set(e,{id:e,icon:t,title:r,in:n})}getGroups(){return[...this.groups.values()]}addEdge({lhsId:e,rhsId:t,lhsDir:n,rhsDir:r,lhsInto:i,rhsInto:a,lhsGroup:o,rhsGroup:s,title:c}){if(!P(n))throw Error(`Invalid direction given for left hand side of edge ${e}--${t}. Expected (L,R,T,B) got ${String(n)}`);if(!P(r))throw Error(`Invalid direction given for right hand side of edge ${e}--${t}. Expected (L,R,T,B) got ${String(r)}`);if(!this.nodes.has(e)&&!this.groups.has(e))throw Error(`The left-hand id [${e}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(!this.nodes.has(t)&&!this.groups.has(t))throw Error(`The right-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`);let l=this.nodes.get(e).in,u=this.nodes.get(t).in;if(o&&l&&u&&l==u)throw Error(`The left-hand id [${e}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(s&&l&&u&&l==u)throw Error(`The right-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);let d={lhsId:e,lhsDir:n,lhsInto:i,lhsGroup:o,rhsId:t,rhsDir:r,rhsInto:a,rhsGroup:s,title:c};this.edges.push(d);let f=this.nodes.get(e),p=this.nodes.get(t);f&&p&&(f.edges.push(this.edges[this.edges.length-1]),p.edges.push(this.edges[this.edges.length-1]))}getEdges(){return this.edges}addLayoutHint(e){if(e.members.length<2)throw Error(`An align directive requires at least two members; got ${e.members.length}`);let t=new Set;e.members.forEach(n=>{if(this.registeredIds.get(n)!==`node`)throw Error(`align ${e.direction} references [${n}], which is not a service or junction`);if(t.has(n))throw Error(`align ${e.direction} lists [${n}] more than once`);t.add(n)}),this.layoutHints.push(e)}getLayoutHints(){return this.layoutHints}getDataStructures(){if(this.dataStructures===void 0){let e=new Map,t=new Map;for(let[n,r]of this.nodes.entries()){let i=new Map;for(let t of r.edges){let r=this.getNode(t.lhsId)?.in,a=this.getNode(t.rhsId)?.in;if(r&&a&&r!==a){let n=te(t.lhsDir,t.rhsDir);n!==`bend`&&e.set(re(r,a),n)}if(t.lhsId===n){let e=B(t.lhsDir,t.rhsDir);e&&i.set(e,t.rhsId)}else{let e=B(t.rhsDir,t.lhsDir);e&&i.set(e,t.lhsId)}}t.set(n,i)}let n=new Set,r=new Set(t.keys()),i=o(e=>{let i=new Map([[e,[0,0]]]),a=[e];for(;a.length>0;){let e=a.shift();if(e){n.add(e),r.delete(e);let o=t.get(e);if(!o)throw Error(`BFS error: adjacency list for id ${e} not found. Please report this as a bug.`);let s=i.get(e);if(!s)throw Error(`BFS error: position for id ${e} not found in spatial map. Please report this as a bug.`);let[c,l]=s;o.forEach((e,t)=>{n.has(e)||(i.set(e,V([c,l],t)),a.push(e))})}}return i},`BFS`),a=[];for(;r.size>0;){let e=r.values().next().value;a.push(i(e))}this.dataStructures={adjList:t,spatialMaps:a,groupAlignments:e}}return this.dataStructures}setElementForId(e,t){this.elements.set(e,t)}getElementById(e){return this.elements.get(e)}getConfig(){return s({...G,...g().architecture})}getConfigField(e){return this.getConfig()[e]}},K=o((e,t)=>{r(e,t),e.groups.map(e=>t.addGroup(e)),e.services.map(e=>t.addService({...e,type:`service`})),e.junctions.map(e=>t.addJunction({...e,type:`junction`})),e.edges.map(e=>t.addEdge(e)),e.alignments?.map(e=>t.addLayoutHint({direction:e.direction,members:[...e.members]}))},`populateDb`),q={parser:{yy:void 0},parse:o(async e=>{let t=await n(`architecture`,e);c.debug(t);let r=q.parser?.yy;if(!(r instanceof ie))throw Error(`parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.`);K(t,r)},`parse`)},ae=o(e=>` +import{Ct as e,Tt as t}from"./index-BkDx9KsG.js";import{n}from"./mermaid-parser.core-C-Sc5_7E.js";import{t as r}from"./chunk-JWPE2WC7-CEttzwEN.js";import{t as i}from"./cytoscape.esm-CyCl8rPi.js";import{Cr as a,Ir as o,Lt as s,Nr as c,Nt as l,Sr as u,Zn as d,_n as f,ar as p,bn as m,br as h,cr as g,er as _,lr as v,or as y,sr as b,ur as x,vn as S,vr as C,yn as w,yr as T,zt as E}from"./MermaidBlock-CI9NjqQx.js";var D=e(((e,t)=>{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r():typeof define==`function`&&define.amd?define([],r):typeof e==`object`?e.layoutBase=r():n.layoutBase=r()})(e,function(){return(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.i=function(e){return e},n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=28)})([(function(e,t,n){function r(){}r.QUALITY=1,r.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,r.DEFAULT_INCREMENTAL=!1,r.DEFAULT_ANIMATION_ON_LAYOUT=!0,r.DEFAULT_ANIMATION_DURING_LAYOUT=!1,r.DEFAULT_ANIMATION_PERIOD=50,r.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,r.DEFAULT_GRAPH_MARGIN=15,r.NODE_DIMENSIONS_INCLUDE_LABELS=!1,r.SIMPLE_NODE_SIZE=40,r.SIMPLE_NODE_HALF_SIZE=r.SIMPLE_NODE_SIZE/2,r.EMPTY_COMPOUND_NODE_SIZE=40,r.MIN_EDGE_LENGTH=1,r.WORLD_BOUNDARY=1e6,r.INITIAL_WORLD_BOUNDARY=r.WORLD_BOUNDARY/1e3,r.WORLD_CENTER_X=1200,r.WORLD_CENTER_Y=900,e.exports=r}),(function(e,t,n){var r=n(2),i=n(8),a=n(9);function o(e,t,n){r.call(this,n),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=n,this.bendpoints=[],this.source=e,this.target=t}for(var s in o.prototype=Object.create(r.prototype),r)o[s]=r[s];o.prototype.getSource=function(){return this.source},o.prototype.getTarget=function(){return this.target},o.prototype.isInterGraph=function(){return this.isInterGraph},o.prototype.getLength=function(){return this.length},o.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},o.prototype.getBendpoints=function(){return this.bendpoints},o.prototype.getLca=function(){return this.lca},o.prototype.getSourceInLca=function(){return this.sourceInLca},o.prototype.getTargetInLca=function(){return this.targetInLca},o.prototype.getOtherEnd=function(e){if(this.source===e)return this.target;if(this.target===e)return this.source;throw`Node is not incident with this edge`},o.prototype.getOtherEndInGraph=function(e,t){for(var n=this.getOtherEnd(e),r=t.getGraphManager().getRoot();;){if(n.getOwner()==t)return n;if(n.getOwner()==r)break;n=n.getOwner().getParent()}return null},o.prototype.updateLength=function(){var e=[,,,,];this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),e),this.isOverlapingSourceAndTarget||(this.lengthX=e[0]-e[2],this.lengthY=e[1]-e[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},o.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},e.exports=o}),(function(e,t,n){function r(e){this.vGraphObject=e}e.exports=r}),(function(e,t,n){var r=n(2),i=n(10),a=n(13),o=n(0),s=n(16),c=n(5);function l(e,t,n,o){n==null&&o==null&&(o=t),r.call(this,o),e.graphManager!=null&&(e=e.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=o,this.edges=[],this.graphManager=e,n!=null&&t!=null?this.rect=new a(t.x,t.y,n.width,n.height):this.rect=new a}for(var u in l.prototype=Object.create(r.prototype),r)l[u]=r[u];l.prototype.getEdges=function(){return this.edges},l.prototype.getChild=function(){return this.child},l.prototype.getOwner=function(){return this.owner},l.prototype.getWidth=function(){return this.rect.width},l.prototype.setWidth=function(e){this.rect.width=e},l.prototype.getHeight=function(){return this.rect.height},l.prototype.setHeight=function(e){this.rect.height=e},l.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},l.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},l.prototype.getCenter=function(){return new c(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},l.prototype.getLocation=function(){return new c(this.rect.x,this.rect.y)},l.prototype.getRect=function(){return this.rect},l.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},l.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},l.prototype.setRect=function(e,t){this.rect.x=e.x,this.rect.y=e.y,this.rect.width=t.width,this.rect.height=t.height},l.prototype.setCenter=function(e,t){this.rect.x=e-this.rect.width/2,this.rect.y=t-this.rect.height/2},l.prototype.setLocation=function(e,t){this.rect.x=e,this.rect.y=t},l.prototype.moveBy=function(e,t){this.rect.x+=e,this.rect.y+=t},l.prototype.getEdgeListToNode=function(e){var t=[],n=this;return n.edges.forEach(function(r){if(r.target==e){if(r.source!=n)throw`Incorrect edge source!`;t.push(r)}}),t},l.prototype.getEdgesBetween=function(e){var t=[],n=this;return n.edges.forEach(function(r){if(!(r.source==n||r.target==n))throw`Incorrect edge source and/or target`;(r.target==e||r.source==e)&&t.push(r)}),t},l.prototype.getNeighborsList=function(){var e=new Set,t=this;return t.edges.forEach(function(n){if(n.source==t)e.add(n.target);else{if(n.target!=t)throw`Incorrect incidency!`;e.add(n.source)}}),e},l.prototype.withChildren=function(){var e=new Set,t,n;if(e.add(this),this.child!=null)for(var r=this.child.getNodes(),i=0;it?(this.rect.x-=(this.labelWidth-t)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal==`right`&&this.setWidth(t+this.labelWidth)),this.labelHeight&&(this.labelPosVertical==`top`?(this.rect.y-=this.labelHeight,this.setHeight(n+this.labelHeight)):this.labelPosVertical==`center`&&this.labelHeight>n?(this.rect.y-=(this.labelHeight-n)/2,this.setHeight(this.labelHeight)):this.labelPosVertical==`bottom`&&this.setHeight(n+this.labelHeight))}}},l.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw`assert failed`;return this.inclusionTreeDepth},l.prototype.transform=function(e){var t=this.rect.x;t>o.WORLD_BOUNDARY?t=o.WORLD_BOUNDARY:t<-o.WORLD_BOUNDARY&&(t=-o.WORLD_BOUNDARY);var n=this.rect.y;n>o.WORLD_BOUNDARY?n=o.WORLD_BOUNDARY:n<-o.WORLD_BOUNDARY&&(n=-o.WORLD_BOUNDARY);var r=new c(t,n),i=e.inverseTransformPoint(r);this.setLocation(i.x,i.y)},l.prototype.getLeft=function(){return this.rect.x},l.prototype.getRight=function(){return this.rect.x+this.rect.width},l.prototype.getTop=function(){return this.rect.y},l.prototype.getBottom=function(){return this.rect.y+this.rect.height},l.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},e.exports=l}),(function(e,t,n){var r=n(0);function i(){}for(var a in r)i[a]=r[a];i.MAX_ITERATIONS=2500,i.DEFAULT_EDGE_LENGTH=50,i.DEFAULT_SPRING_STRENGTH=.45,i.DEFAULT_REPULSION_STRENGTH=4500,i.DEFAULT_GRAVITY_STRENGTH=.4,i.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,i.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,i.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,i.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,i.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,i.COOLING_ADAPTATION_FACTOR=.33,i.ADAPTATION_LOWER_NODE_LIMIT=1e3,i.ADAPTATION_UPPER_NODE_LIMIT=5e3,i.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,i.MAX_NODE_DISPLACEMENT=i.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,i.MIN_REPULSION_DIST=i.DEFAULT_EDGE_LENGTH/10,i.CONVERGENCE_CHECK_PERIOD=100,i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,i.MIN_EDGE_LENGTH=1,i.GRID_CALCULATION_CHECK_PERIOD=10,e.exports=i}),(function(e,t,n){function r(e,t){e==null&&t==null?(this.x=0,this.y=0):(this.x=e,this.y=t)}r.prototype.getX=function(){return this.x},r.prototype.getY=function(){return this.y},r.prototype.setX=function(e){this.x=e},r.prototype.setY=function(e){this.y=e},r.prototype.getDifference=function(e){return new DimensionD(this.x-e.x,this.y-e.y)},r.prototype.getCopy=function(){return new r(this.x,this.y)},r.prototype.translate=function(e){return this.x+=e.width,this.y+=e.height,this},e.exports=r}),(function(e,t,n){var r=n(2),i=n(10),a=n(0),o=n(7),s=n(3),c=n(1),l=n(13),u=n(12),d=n(11);function f(e,t,n){r.call(this,n),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=e,t!=null&&t instanceof o?this.graphManager=t:t!=null&&t instanceof Layout&&(this.graphManager=t.graphManager)}for(var p in f.prototype=Object.create(r.prototype),r)f[p]=r[p];f.prototype.getNodes=function(){return this.nodes},f.prototype.getEdges=function(){return this.edges},f.prototype.getGraphManager=function(){return this.graphManager},f.prototype.getParent=function(){return this.parent},f.prototype.getLeft=function(){return this.left},f.prototype.getRight=function(){return this.right},f.prototype.getTop=function(){return this.top},f.prototype.getBottom=function(){return this.bottom},f.prototype.isConnected=function(){return this.isConnected},f.prototype.add=function(e,t,n){if(t==null&&n==null){var r=e;if(this.graphManager==null)throw`Graph has no graph mgr!`;if(this.getNodes().indexOf(r)>-1)throw`Node already in graph!`;return r.owner=this,this.getNodes().push(r),r}else{var i=e;if(!(this.getNodes().indexOf(t)>-1&&this.getNodes().indexOf(n)>-1))throw`Source or target not in graph!`;if(!(t.owner==n.owner&&t.owner==this))throw`Both owners must be this graph!`;return t.owner==n.owner?(i.source=t,i.target=n,i.isInterGraph=!1,this.getEdges().push(i),t.edges.push(i),n!=t&&n.edges.push(i),i):null}},f.prototype.remove=function(e){var t=e;if(e instanceof s){if(t==null)throw`Node is null!`;if(!(t.owner!=null&&t.owner==this))throw`Owner graph is invalid!`;if(this.graphManager==null)throw`Owner graph manager is invalid!`;for(var n=t.edges.slice(),r,i=n.length,a=0;a-1&&u>-1))throw`Source and/or target doesn't know this edge!`;r.source.edges.splice(l,1),r.target!=r.source&&r.target.edges.splice(u,1);var o=r.source.owner.getEdges().indexOf(r);if(o==-1)throw`Not in owner's edge list!`;r.source.owner.getEdges().splice(o,1)}},f.prototype.updateLeftTop=function(){for(var e=i.MAX_VALUE,t=i.MAX_VALUE,n,r,a,o=this.getNodes(),s=o.length,c=0;cn&&(e=n),t>r&&(t=r)}return e==i.MAX_VALUE?null:(a=o[0].getParent().paddingLeft==null?this.margin:o[0].getParent().paddingLeft,this.left=t-a,this.top=e-a,new u(this.left,this.top))},f.prototype.updateBounds=function(e){for(var t=i.MAX_VALUE,n=-i.MAX_VALUE,r=i.MAX_VALUE,a=-i.MAX_VALUE,o,s,c,u,d,f=this.nodes,p=f.length,m=0;mo&&(t=o),nc&&(r=c),ao&&(t=o),nc&&(r=c),a=this.nodes.length){var c=0;n.forEach(function(t){t.owner==e&&c++}),c==this.nodes.length&&(this.isConnected=!0)}},e.exports=f}),(function(e,t,n){var r,i=n(1);function a(e){r=n(6),this.layout=e,this.graphs=[],this.edges=[]}a.prototype.addRoot=function(){var e=this.layout.newGraph(),t=this.layout.newNode(null),n=this.add(e,t);return this.setRootGraph(n),this.rootGraph},a.prototype.add=function(e,t,n,r,i){if(n==null&&r==null&&i==null){if(e==null)throw`Graph is null!`;if(t==null)throw`Parent node is null!`;if(this.graphs.indexOf(e)>-1)throw`Graph already in this graph mgr!`;if(this.graphs.push(e),e.parent!=null)throw`Already has a parent!`;if(t.child!=null)throw`Already has a child!`;return e.parent=t,t.child=e,e}else{i=n,r=t,n=e;var a=r.getOwner(),o=i.getOwner();if(!(a!=null&&a.getGraphManager()==this))throw`Source not in this graph mgr!`;if(!(o!=null&&o.getGraphManager()==this))throw`Target not in this graph mgr!`;if(a==o)return n.isInterGraph=!1,a.add(n,r,i);if(n.isInterGraph=!0,n.source=r,n.target=i,this.edges.indexOf(n)>-1)throw`Edge already in inter-graph edge list!`;if(this.edges.push(n),!(n.source!=null&&n.target!=null))throw`Edge source and/or target is null!`;if(!(n.source.edges.indexOf(n)==-1&&n.target.edges.indexOf(n)==-1))throw`Edge already in source and/or target incidency list!`;return n.source.edges.push(n),n.target.edges.push(n),n}},a.prototype.remove=function(e){if(e instanceof r){var t=e;if(t.getGraphManager()!=this)throw`Graph not in this graph mgr`;if(!(t==this.rootGraph||t.parent!=null&&t.parent.graphManager==this))throw`Invalid parent node!`;var n=[];n=n.concat(t.getEdges());for(var a,o=n.length,s=0;s=t.getRight()?n[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight()):t.getX()<=e.getX()&&t.getRight()>=e.getRight()&&(n[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight())),e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()?n[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()):t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()&&(n[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()));var a=Math.abs((t.getCenterY()-e.getCenterY())/(t.getCenterX()-e.getCenterX()));t.getCenterY()===e.getCenterY()&&t.getCenterX()===e.getCenterX()&&(a=1);var o=a*n[0],s=n[1]/a;n[0]o)return n[0]=r,n[1]=c,n[2]=a,n[3]=y,!1;if(ia)return n[0]=s,n[1]=i,n[2]=_,n[3]=o,!1;if(ra?(n[0]=u,n[1]=d,C=!0):(n[0]=l,n[1]=c,C=!0):T===D&&(r>a?(n[0]=s,n[1]=c,C=!0):(n[0]=f,n[1]=d,C=!0)),-E===D?a>r?(n[2]=v,n[3]=y,w=!0):(n[2]=_,n[3]=g,w=!0):E===D&&(a>r?(n[2]=h,n[3]=g,w=!0):(n[2]=b,n[3]=y,w=!0)),C&&w)return!1;if(r>a?i>o?(O=this.getCardinalDirection(T,D,4),k=this.getCardinalDirection(E,D,2)):(O=this.getCardinalDirection(-T,D,3),k=this.getCardinalDirection(-E,D,1)):i>o?(O=this.getCardinalDirection(-T,D,1),k=this.getCardinalDirection(-E,D,3)):(O=this.getCardinalDirection(T,D,2),k=this.getCardinalDirection(E,D,4)),!C)switch(O){case 1:j=c,A=r+-m/D,n[0]=A,n[1]=j;break;case 2:A=f,j=i+p*D,n[0]=A,n[1]=j;break;case 3:j=d,A=r+m/D,n[0]=A,n[1]=j;break;case 4:A=u,j=i+-p*D,n[0]=A,n[1]=j;break}if(!w)switch(k){case 1:N=g,M=a+-S/D,n[2]=M,n[3]=N;break;case 2:M=b,N=o+x*D,n[2]=M,n[3]=N;break;case 3:N=y,M=a+S/D,n[2]=M,n[3]=N;break;case 4:M=v,N=o+-x*D,n[2]=M,n[3]=N;break}}return!1},i.getCardinalDirection=function(e,t,n){return e>t?n:1+n%4},i.getIntersection=function(e,t,n,i){if(i==null)return this.getIntersection2(e,t,n);var a=e.x,o=e.y,s=t.x,c=t.y,l=n.x,u=n.y,d=i.x,f=i.y,p=void 0,m=void 0,h=void 0,g=void 0,_=void 0,v=void 0,y=void 0,b=void 0,x=void 0;return h=c-o,_=a-s,y=s*o-a*c,g=f-u,v=l-d,b=d*u-l*f,x=h*v-g*_,x===0?null:(p=(_*b-v*y)/x,m=(g*y-h*b)/x,new r(p,m))},i.angleOfVector=function(e,t,n,r){var i=void 0;return e===n?i=r=0){var u=(-c+Math.sqrt(c*c-4*s*l))/(2*s),d=(-c-Math.sqrt(c*c-4*s*l))/(2*s);return u>=0&&u<=1?[u]:d>=0&&d<=1?[d]:null}else return null},i.HALF_PI=.5*Math.PI,i.ONE_AND_HALF_PI=1.5*Math.PI,i.TWO_PI=2*Math.PI,i.THREE_PI=3*Math.PI,e.exports=i}),(function(e,t,n){function r(){}r.sign=function(e){return e>0?1:e<0?-1:0},r.floor=function(e){return e<0?Math.ceil(e):Math.floor(e)},r.ceil=function(e){return e<0?Math.floor(e):Math.ceil(e)},e.exports=r}),(function(e,t,n){function r(){}r.MAX_VALUE=2147483647,r.MIN_VALUE=-2147483648,e.exports=r}),(function(e,t,n){var r=function(){function e(e,t){for(var n=0;n0&&t;){for(s.push(l[0]);s.length>0&&t;){var u=s[0];s.splice(0,1),o.add(u);for(var d=u.getEdges(),a=0;a-1&&l.splice(h,1)}o=new Set,c=new Map}}return e},f.prototype.createDummyNodesForBendpoints=function(e){for(var t=[],n=e.source,r=this.graphManager.calcLowestCommonAncestor(e.source,e.target),i=0;i0){for(var i=this.edgeToDummyNodes.get(n),a=0;a=0&&t.splice(d,1),s.getNeighborsList().forEach(function(e){if(n.indexOf(e)<0){var t=r.get(e)-1;t==1&&l.push(e),r.set(e,t)}})}n=n.concat(l),(t.length==1||t.length==2)&&(i=!0,a=t[0])}return a},f.prototype.setGraphManager=function(e){this.graphManager=e},e.exports=f}),(function(e,t,n){function r(){}r.seed=1,r.x=0,r.nextDouble=function(){return r.x=Math.sin(r.seed++)*1e4,r.x-Math.floor(r.x)},e.exports=r}),(function(e,t,n){var r=n(5);function i(e,t){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(e){this.lworldOrgX=e},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(e){this.lworldOrgY=e},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(e){this.lworldExtX=e},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(e){this.lworldExtY=e},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(e){this.ldeviceOrgX=e},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(e){this.ldeviceOrgY=e},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(e){this.ldeviceExtX=e},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(e){this.ldeviceExtY=e},i.prototype.transformX=function(e){var t=0,n=this.lworldExtX;return n!=0&&(t=this.ldeviceOrgX+(e-this.lworldOrgX)*this.ldeviceExtX/n),t},i.prototype.transformY=function(e){var t=0,n=this.lworldExtY;return n!=0&&(t=this.ldeviceOrgY+(e-this.lworldOrgY)*this.ldeviceExtY/n),t},i.prototype.inverseTransformX=function(e){var t=0,n=this.ldeviceExtX;return n!=0&&(t=this.lworldOrgX+(e-this.ldeviceOrgX)*this.lworldExtX/n),t},i.prototype.inverseTransformY=function(e){var t=0,n=this.ldeviceExtY;return n!=0&&(t=this.lworldOrgY+(e-this.ldeviceOrgY)*this.lworldExtY/n),t},i.prototype.inverseTransformPoint=function(e){return new r(this.inverseTransformX(e.x),this.inverseTransformY(e.y))},e.exports=i}),(function(e,t,n){function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);ta.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(e-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(e>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(e-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},l.prototype.calcSpringForces=function(){for(var e=this.getAllEdges(),t,n=0;n0&&arguments[0]!==void 0?arguments[0]:!0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n,r,i,o,s=this.getAllNodes(),c;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&e&&this.updateGrid(),c=new Set,n=0;nc||s>c)&&(e.gravitationForceX=-this.gravityConstant*i,e.gravitationForceY=-this.gravityConstant*a)):(c=t.getEstimatedSize()*this.compoundGravityRangeFactor,(o>c||s>c)&&(e.gravitationForceX=-this.gravityConstant*i*this.compoundGravityConstant,e.gravitationForceY=-this.gravityConstant*a*this.compoundGravityConstant))},l.prototype.isConverged=function(){var e,t=!1;return this.totalIterations>this.maxIterations/3&&(t=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),e=this.totalDisplacement=c.length||u>=c[0].length)){for(var d=0;de}}]),e}()}),(function(e,t,n){function r(){}r.svd=function(e){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=e.length,this.n=e[0].length;var t=Math.min(this.m,this.n);this.s=function(e){for(var t=[];e-- >0;)t.push(0);return t}(Math.min(this.m+1,this.n)),this.U=function(e){return function e(t){if(t.length==0)return 0;for(var n=[],r=0;r0;)t.push(0);return t}(this.n),i=function(e){for(var t=[];e-- >0;)t.push(0);return t}(this.m),a=!0,o=!0,s=Math.min(this.m-1,this.n),c=Math.max(0,Math.min(this.n-2,this.m)),l=0;l=0;k--)if(this.s[k]!==0){for(var A=k+1;A=0;L--){if(function(e,t){return e&&t}(L0;){var U=void 0,W=void 0;for(U=E-2;U>=-1&&U!==-1;U--)if(Math.abs(n[U])<=re+ne*(Math.abs(this.s[U])+Math.abs(this.s[U+1]))){n[U]=0;break}if(U===E-2)W=4;else{var G=void 0;for(G=E-1;G>=U&&G!==U;G--){var ie=(G===E?0:Math.abs(n[G]))+(G===U+1?0:Math.abs(n[G-1]));if(Math.abs(this.s[G])<=re+ne*ie){this.s[G]=0;break}}G===U?W=3:G===E-1?W=1:(W=2,U=G)}switch(U++,W){case 1:var K=n[E-2];n[E-2]=0;for(var q=E-2;q>=U;q--){var ae=r.hypot(this.s[q],K),J=this.s[q]/ae,Y=K/ae;if(this.s[q]=ae,q!==U&&(K=-Y*n[q-1],n[q-1]=J*n[q-1]),o)for(var X=0;X=this.s[U+1]);){var De=this.s[U];if(this.s[U]=this.s[U+1],this.s[U+1]=De,o&&UMath.abs(t)?(n=t/e,n=Math.abs(e)*Math.sqrt(1+n*n)):t==0?n=0:(n=e/t,n=Math.abs(t)*Math.sqrt(1+n*n)),n},e.exports=r}),(function(e,t,n){var r=function(){function e(e,t){for(var n=0;n2&&arguments[2]!==void 0?arguments[2]:1,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,e),this.sequence1=t,this.sequence2=n,this.match_score=r,this.mismatch_penalty=a,this.gap_penalty=o,this.iMax=t.length+1,this.jMax=n.length+1,this.grid=Array(this.iMax);for(var s=0;s=0;n--){var r=this.listeners[n];r.event===e&&r.callback===t&&this.listeners.splice(n,1)}},i.emit=function(e,t){for(var n=0;n{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r(D()):typeof define==`function`&&define.amd?define([`layout-base`],r):typeof e==`object`?e.coseBase=r(D()):n.coseBase=r(n.layoutBase)})(e,function(e){return(()=>{var t={45:((e,t,n)=>{var r={};r.layoutBase=n(551),r.CoSEConstants=n(806),r.CoSEEdge=n(767),r.CoSEGraph=n(880),r.CoSEGraphManager=n(578),r.CoSELayout=n(765),r.CoSENode=n(991),r.ConstraintHandler=n(902),e.exports=r}),806:((e,t,n)=>{var r=n(551).FDLayoutConstants;function i(){}for(var a in r)i[a]=r[a];i.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,i.DEFAULT_RADIAL_SEPARATION=r.DEFAULT_EDGE_LENGTH,i.DEFAULT_COMPONENT_SEPERATION=60,i.TILE=!0,i.TILING_PADDING_VERTICAL=10,i.TILING_PADDING_HORIZONTAL=10,i.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,i.ENFORCE_CONSTRAINTS=!0,i.APPLY_LAYOUT=!0,i.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,i.TREE_REDUCTION_ON_INCREMENTAL=!0,i.PURE_INCREMENTAL=i.DEFAULT_INCREMENTAL,e.exports=i}),767:((e,t,n)=>{var r=n(551).FDLayoutEdge;function i(e,t,n){r.call(this,e,t,n)}for(var a in i.prototype=Object.create(r.prototype),r)i[a]=r[a];e.exports=i}),880:((e,t,n)=>{var r=n(551).LGraph;function i(e,t,n){r.call(this,e,t,n)}for(var a in i.prototype=Object.create(r.prototype),r)i[a]=r[a];e.exports=i}),578:((e,t,n)=>{var r=n(551).LGraphManager;function i(e){r.call(this,e)}for(var a in i.prototype=Object.create(r.prototype),r)i[a]=r[a];e.exports=i}),765:((e,t,n)=>{var r=n(551).FDLayout,i=n(578),a=n(880),o=n(991),s=n(767),c=n(806),l=n(902),u=n(551).FDLayoutConstants,d=n(551).LayoutConstants,f=n(551).Point,p=n(551).PointD,m=n(551).DimensionD,h=n(551).Layout,g=n(551).Integer,_=n(551).IGeometry,v=n(551).LGraph,y=n(551).Transform,b=n(551).LinkedList;function x(){r.call(this),this.toBeTiled={},this.constraints={}}for(var S in x.prototype=Object.create(r.prototype),r)x[S]=r[S];x.prototype.newGraphManager=function(){var e=new i(this);return this.graphManager=e,e},x.prototype.newGraph=function(e){return new a(null,this.graphManager,e)},x.prototype.newNode=function(e){return new o(this.graphManager,e)},x.prototype.newEdge=function(e){return new s(null,null,e)},x.prototype.initParameters=function(){r.prototype.initParameters.call(this,arguments),this.isSubLayout||(c.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=c.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=c.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=u.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=u.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=u.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=u.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},x.prototype.initSpringEmbedder=function(){r.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/u.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},x.prototype.layout=function(){return d.DEFAULT_CREATE_BENDS_AS_NEEDED&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},x.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),!this.incremental){var e=this.getFlatForest();if(e.length>0)this.positionNodesRadially(e);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),n=this.nodesWithGravity.filter(function(e){return t.has(e)});this.graphManager.setAllNodesToApplyGravitation(n),this.positionNodesRandomly()}}else if(c.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),n=this.nodesWithGravity.filter(function(e){return t.has(e)});this.graphManager.setAllNodesToApplyGravitation(n)}return Object.keys(this.constraints).length>0&&(l.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),c.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},x.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%u.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-this.coolingCycle**+(Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),t=this.nodesWithGravity.filter(function(t){return e.has(t)});this.graphManager.setAllNodesToApplyGravitation(t),this.graphManager.updateBounds(),this.updateGrid(),c.PURE_INCREMENTAL?this.coolingFactor=u.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=u.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),c.PURE_INCREMENTAL?this.coolingFactor=u.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=u.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var n=!this.isTreeGrowing&&!this.isGrowthFinished,r=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(n,r),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},x.prototype.getPositionsData=function(){for(var e=this.graphManager.getAllNodes(),t={},n=0;n0&&this.updateDisplacements();for(var n=0;n0&&(r.fixedNodeWeight=a)}}if(this.constraints.relativePlacementConstraint){var o=new Map,s=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(t){e.fixedNodesOnHorizontal.add(t),e.fixedNodesOnVertical.add(t)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var l=this.constraints.alignmentConstraint.vertical,n=0;n=2*e.length/3;r--)t=Math.floor(Math.random()*(r+1)),n=e[r],e[r]=e[t],e[t]=n;return e},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(t){if(t.left){var n=o.has(t.left)?o.get(t.left):t.left,r=o.has(t.right)?o.get(t.right):t.right;e.nodesInRelativeHorizontal.includes(n)||(e.nodesInRelativeHorizontal.push(n),e.nodeToRelativeConstraintMapHorizontal.set(n,[]),e.dummyToNodeForVerticalAlignment.has(n)?e.nodeToTempPositionMapHorizontal.set(n,e.idToNodeMap.get(e.dummyToNodeForVerticalAlignment.get(n)[0]).getCenterX()):e.nodeToTempPositionMapHorizontal.set(n,e.idToNodeMap.get(n).getCenterX())),e.nodesInRelativeHorizontal.includes(r)||(e.nodesInRelativeHorizontal.push(r),e.nodeToRelativeConstraintMapHorizontal.set(r,[]),e.dummyToNodeForVerticalAlignment.has(r)?e.nodeToTempPositionMapHorizontal.set(r,e.idToNodeMap.get(e.dummyToNodeForVerticalAlignment.get(r)[0]).getCenterX()):e.nodeToTempPositionMapHorizontal.set(r,e.idToNodeMap.get(r).getCenterX())),e.nodeToRelativeConstraintMapHorizontal.get(n).push({right:r,gap:t.gap}),e.nodeToRelativeConstraintMapHorizontal.get(r).push({left:n,gap:t.gap})}else{var i=s.has(t.top)?s.get(t.top):t.top,a=s.has(t.bottom)?s.get(t.bottom):t.bottom;e.nodesInRelativeVertical.includes(i)||(e.nodesInRelativeVertical.push(i),e.nodeToRelativeConstraintMapVertical.set(i,[]),e.dummyToNodeForHorizontalAlignment.has(i)?e.nodeToTempPositionMapVertical.set(i,e.idToNodeMap.get(e.dummyToNodeForHorizontalAlignment.get(i)[0]).getCenterY()):e.nodeToTempPositionMapVertical.set(i,e.idToNodeMap.get(i).getCenterY())),e.nodesInRelativeVertical.includes(a)||(e.nodesInRelativeVertical.push(a),e.nodeToRelativeConstraintMapVertical.set(a,[]),e.dummyToNodeForHorizontalAlignment.has(a)?e.nodeToTempPositionMapVertical.set(a,e.idToNodeMap.get(e.dummyToNodeForHorizontalAlignment.get(a)[0]).getCenterY()):e.nodeToTempPositionMapVertical.set(a,e.idToNodeMap.get(a).getCenterY())),e.nodeToRelativeConstraintMapVertical.get(i).push({bottom:a,gap:t.gap}),e.nodeToRelativeConstraintMapVertical.get(a).push({top:i,gap:t.gap})}});else{var d=new Map,f=new Map;this.constraints.relativePlacementConstraint.forEach(function(e){if(e.left){var t=o.has(e.left)?o.get(e.left):e.left,n=o.has(e.right)?o.get(e.right):e.right;d.has(t)?d.get(t).push(n):d.set(t,[n]),d.has(n)?d.get(n).push(t):d.set(n,[t])}else{var r=s.has(e.top)?s.get(e.top):e.top,i=s.has(e.bottom)?s.get(e.bottom):e.bottom;f.has(r)?f.get(r).push(i):f.set(r,[i]),f.has(i)?f.get(i).push(r):f.set(i,[r])}});var p=function(e,t){var n=[],r=[],i=new b,a=new Set,o=0;return e.forEach(function(s,c){if(!a.has(c)){n[o]=[],r[o]=!1;var l=c;for(i.push(l),a.add(l),n[o].push(l);i.length!=0;)l=i.shift(),t.has(l)&&(r[o]=!0),e.get(l).forEach(function(e){a.has(e)||(i.push(e),a.add(e),n[o].push(e))});o++}}),{components:n,isFixed:r}},m=p(d,e.fixedNodesOnHorizontal);this.componentsOnHorizontal=m.components,this.fixedComponentsOnHorizontal=m.isFixed;var h=p(f,e.fixedNodesOnVertical);this.componentsOnVertical=h.components,this.fixedComponentsOnVertical=h.isFixed}}},x.prototype.updateDisplacements=function(){var e=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(t){var n=e.idToNodeMap.get(t.nodeId);n.displacementX=0,n.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var t=this.constraints.alignmentConstraint.vertical,n=0;n1){var s;for(s=0;sr&&(r=Math.floor(o.y)),a=Math.floor(o.x+c.DEFAULT_COMPONENT_SEPERATION)}this.transform(new p(d.WORLD_CENTER_X-o.x/2,d.WORLD_CENTER_Y-o.y/2))},x.radialLayout=function(e,t,n){var r=Math.max(this.maxDiagonalInTree(e),c.DEFAULT_RADIAL_SEPARATION);x.branchRadialLayout(t,null,0,359,0,r);var i=v.calculateBounds(e),a=new y;a.setDeviceOrgX(i.getMinX()),a.setDeviceOrgY(i.getMinY()),a.setWorldOrgX(n.x),a.setWorldOrgY(n.y);for(var o=0;o1;){var g=h[0];h.splice(0,1);var v=u.indexOf(g);v>=0&&u.splice(v,1),p--,d--}m=t==null?0:(u.indexOf(h[0])+1)%p;for(var y=Math.abs(r-n)/d,b=m;f!=d;b=++b%p){var S=u[b].getOtherEnd(e);if(S!=t){var C=(n+f*y)%360,w=(C+y)%360;x.branchRadialLayout(S,e,C,w,i+a,a),f++}}},x.maxDiagonalInTree=function(e){for(var t=g.MIN_VALUE,n=0;nt&&(t=r)}return t},x.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},x.prototype.groupZeroDegreeMembers=function(){var e=this,t={};this.memberGroups={},this.idToDummyNode={};for(var n=[],r=this.graphManager.getAllNodes(),i=0;i1){var r=`DummyCompound_`+n;e.memberGroups[r]=t[n];var i=t[n][0].getParent(),a=new o(e.graphManager);a.id=r,a.paddingLeft=i.paddingLeft||0,a.paddingRight=i.paddingRight||0,a.paddingBottom=i.paddingBottom||0,a.paddingTop=i.paddingTop||0,e.idToDummyNode[r]=a;var s=e.getGraphManager().add(e.newGraph(),a),c=i.getChild();c.add(a);for(var l=0;li?(r.rect.x-=(r.labelWidth-i)/2,r.setWidth(r.labelWidth),r.labelMarginLeft=(r.labelWidth-i)/2):r.labelPosHorizontal==`right`&&r.setWidth(i+r.labelWidth)),r.labelHeight&&(r.labelPosVertical==`top`?(r.rect.y-=r.labelHeight,r.setHeight(a+r.labelHeight),r.labelMarginTop=r.labelHeight):r.labelPosVertical==`center`&&r.labelHeight>a?(r.rect.y-=(r.labelHeight-a)/2,r.setHeight(r.labelHeight),r.labelMarginTop=(r.labelHeight-a)/2):r.labelPosVertical==`bottom`&&r.setHeight(a+r.labelHeight))}})},x.prototype.repopulateCompounds=function(){for(var e=this.compoundOrder.length-1;e>=0;e--){var t=this.compoundOrder[e],n=t.id,r=t.paddingLeft,i=t.paddingTop,a=t.labelMarginLeft,o=t.labelMarginTop;this.adjustLocations(this.tiledMemberPack[n],t.rect.x,t.rect.y,r,i,a,o)}},x.prototype.repopulateZeroDegreeMembers=function(){var e=this,t=this.tiledZeroDegreePack;Object.keys(t).forEach(function(n){var r=e.idToDummyNode[n],i=r.paddingLeft,a=r.paddingTop,o=r.labelMarginLeft,s=r.labelMarginTop;e.adjustLocations(t[n],r.rect.x,r.rect.y,i,a,o,s)})},x.prototype.getToBeTiled=function(e){var t=e.id;if(this.toBeTiled[t]!=null)return this.toBeTiled[t];var n=e.getChild();if(n==null)return this.toBeTiled[t]=!1,!1;for(var r=n.getNodes(),i=0;i0)return this.toBeTiled[t]=!1,!1;if(a.getChild()==null){this.toBeTiled[a.id]=!1;continue}if(!this.getToBeTiled(a))return this.toBeTiled[t]=!1,!1}return this.toBeTiled[t]=!0,!0},x.prototype.getNodeDegree=function(e){e.id;for(var t=e.getEdges(),n=0,r=0;ru&&(u=f.rect.height)}n+=u+e.verticalPadding}},x.prototype.tileCompoundMembers=function(e,t){var n=this;this.tiledMemberPack=[],Object.keys(e).forEach(function(r){var i=t[r];if(n.tiledMemberPack[r]=n.tileNodes(e[r],i.paddingLeft+i.paddingRight),i.rect.width=n.tiledMemberPack[r].width,i.rect.height=n.tiledMemberPack[r].height,i.setCenter(n.tiledMemberPack[r].centerX,n.tiledMemberPack[r].centerY),i.labelMarginLeft=0,i.labelMarginTop=0,c.NODE_DIMENSIONS_INCLUDE_LABELS){var a=i.rect.width,o=i.rect.height;i.labelWidth&&(i.labelPosHorizontal==`left`?(i.rect.x-=i.labelWidth,i.setWidth(a+i.labelWidth),i.labelMarginLeft=i.labelWidth):i.labelPosHorizontal==`center`&&i.labelWidth>a?(i.rect.x-=(i.labelWidth-a)/2,i.setWidth(i.labelWidth),i.labelMarginLeft=(i.labelWidth-a)/2):i.labelPosHorizontal==`right`&&i.setWidth(a+i.labelWidth)),i.labelHeight&&(i.labelPosVertical==`top`?(i.rect.y-=i.labelHeight,i.setHeight(o+i.labelHeight),i.labelMarginTop=i.labelHeight):i.labelPosVertical==`center`&&i.labelHeight>o?(i.rect.y-=(i.labelHeight-o)/2,i.setHeight(i.labelHeight),i.labelMarginTop=(i.labelHeight-o)/2):i.labelPosVertical==`bottom`&&i.setHeight(o+i.labelHeight))}})},x.prototype.tileNodes=function(e,t){var n=this.tileNodesByFavoringDim(e,t,!0),r=this.tileNodesByFavoringDim(e,t,!1),i=this.getOrgRatio(n);return this.getOrgRatio(r)s&&(s=e.getWidth())});var l=a/i,u=o/i,d=(n-r)**2+4*(l+r)*(u+n)*i,f=(r-n+Math.sqrt(d))/(2*(l+r)),p;t?(p=Math.ceil(f),p==f&&p++):p=Math.floor(f);var m=p*(l+r)-r;return s>m&&(m=s),m+=r*2,m},x.prototype.tileNodesByFavoringDim=function(e,t,n){var r=c.TILING_PADDING_VERTICAL,i=c.TILING_PADDING_HORIZONTAL,a=c.TILING_COMPARE_BY,o={rows:[],rowWidth:[],rowHeight:[],width:0,height:t,verticalPadding:r,horizontalPadding:i,centerX:0,centerY:0};a&&(o.idealRowWidth=this.calcIdealRowWidth(e,n));var s=function(e){return e.rect.width*e.rect.height},l=function(e,t){return s(t)-s(e)};e.sort(function(e,t){var n=l;return o.idealRowWidth?(n=a,n(e.id,t.id)):n(e,t)});for(var u=0,d=0,f=0;f0&&(a+=e.horizontalPadding),e.rowWidth[n]=a,e.width0&&(o+=e.verticalPadding);var s=0;o>e.rowHeight[n]&&(s=e.rowHeight[n],e.rowHeight[n]=o,s=e.rowHeight[n]-s),e.height+=s,e.rows[n].push(t)},x.prototype.getShortestRowIndex=function(e){for(var t=-1,n=Number.MAX_VALUE,r=0;rn&&(t=r,n=e.rowWidth[r]);return t},x.prototype.canAddHorizontal=function(e,t,n){if(e.idealRowWidth){var r=e.rows.length-1;return e.rowWidth[r]+t+e.horizontalPadding<=e.idealRowWidth}var i=this.getShortestRowIndex(e);if(i<0)return!0;var a=e.rowWidth[i];if(a+e.horizontalPadding+t<=e.width)return!0;var o=0;e.rowHeight[i]0&&(o=n+e.verticalPadding-e.rowHeight[i]);var s=e.width-a>=t+e.horizontalPadding?(e.height+o)/(a+t+e.horizontalPadding):(e.height+o)/e.width;o=n+e.verticalPadding;var c=e.widtha&&t!=n){r.splice(-1,1),e.rows[n].push(i),e.rowWidth[t]=e.rowWidth[t]-a,e.rowWidth[n]=e.rowWidth[n]+a,e.width=e.rowWidth[instance.getLongestRowIndex(e)];for(var o=Number.MIN_VALUE,s=0;so&&(o=r[s].height);t>0&&(o+=e.verticalPadding);var c=e.rowHeight[t]+e.rowHeight[n];e.rowHeight[t]=o,e.rowHeight[n]0)for(var d=i;d<=a;d++)l[0]+=this.grid[d][o-1].length+this.grid[d][o].length-1;if(a0)for(var d=o;d<=s;d++)l[3]+=this.grid[i-1][d].length+this.grid[i][d].length-1;for(var f=g.MAX_VALUE,p,m,h=0;h{var r=n(551).FDLayoutNode,i=n(551).IMath;function a(e,t,n,i){r.call(this,e,t,n,i)}for(var o in a.prototype=Object.create(r.prototype),r)a[o]=r[o];a.prototype.calculateDisplacement=function(){var e=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=e.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=e.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=e.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=e.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>e.coolingFactor*e.maxNodeDisplacement&&(this.displacementX=e.coolingFactor*e.maxNodeDisplacement*i.sign(this.displacementX)),Math.abs(this.displacementY)>e.coolingFactor*e.maxNodeDisplacement&&(this.displacementY=e.coolingFactor*e.maxNodeDisplacement*i.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},a.prototype.propogateDisplacementToChildren=function(e,t){for(var n=this.getChild().getNodes(),r,i=0;i{function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0){var a=0;r.forEach(function(e){t==`horizontal`?(f.set(e,c.has(e)?l[c.get(e)]:i.get(e)),a+=f.get(e)):(f.set(e,c.has(e)?u[c.get(e)]:i.get(e)),a+=f.get(e))}),a/=r.length,e.forEach(function(e){n.has(e)||f.set(e,a)})}else{var o=0;e.forEach(function(e){t==`horizontal`?o+=c.has(e)?l[c.get(e)]:i.get(e):o+=c.has(e)?u[c.get(e)]:i.get(e)}),o/=e.length,e.forEach(function(e){f.set(e,o)})}});for(var h=function(){var r=m.shift();e.get(r).forEach(function(e){if(f.get(e.id)o&&(o=v),ys&&(s=y)}}catch(e){p=!0,m=e}finally{try{!d&&h.return&&h.return()}finally{if(p)throw m}}var b=(r+o)/2-(a+s)/2,x=!0,S=!1,C=void 0;try{for(var w=e[Symbol.iterator](),T;!(x=(T=w.next()).done);x=!0){var E=T.value;f.set(E,f.get(E)+b)}}catch(e){S=!0,C=e}finally{try{!x&&w.return&&w.return()}finally{if(S)throw C}}})}return f},v=function(e){var t=0,n=0,r=0,i=0;if(e.forEach(function(e){e.left?l[c.get(e.left)]-l[c.get(e.right)]>=0?t++:n++:u[c.get(e.top)]-u[c.get(e.bottom)]>=0?r++:i++}),t>n&&r>i)for(var a=0;an)for(var o=0;oi)for(var s=0;s1)t.fixedNodeConstraint.forEach(function(e,t){S[t]=[e.position.x,e.position.y],C[t]=[l[c.get(e.nodeId)],u[c.get(e.nodeId)]]}),w=!0;else if(t.alignmentConstraint)(function(){var e=0;if(t.alignmentConstraint.vertical){for(var n=t.alignmentConstraint.vertical,i=function(t){var i=new Set;n[t].forEach(function(e){i.add(e)});var a=new Set([].concat(r(i)).filter(function(e){return E.has(e)})),o=void 0;o=a.size>0?l[c.get(a.values().next().value)]:g(i).x,n[t].forEach(function(t){S[e]=[o,u[c.get(t)]],C[e]=[l[c.get(t)],u[c.get(t)]],e++})},a=0;a0?l[c.get(i.values().next().value)]:g(n).y,o[t].forEach(function(t){S[e]=[l[c.get(t)],a],C[e]=[l[c.get(t)],u[c.get(t)]],e++})},d=0;dA&&(A=k[M].length,j=M);if(A0){var W={x:0,y:0};t.fixedNodeConstraint.forEach(function(e,t){var n={x:l[c.get(e.nodeId)],y:u[c.get(e.nodeId)]},r=e.position,i=h(r,n);W.x+=i.x,W.y+=i.y}),W.x/=t.fixedNodeConstraint.length,W.y/=t.fixedNodeConstraint.length,l.forEach(function(e,t){l[t]+=W.x}),u.forEach(function(e,t){u[t]+=W.y}),t.fixedNodeConstraint.forEach(function(e){l[c.get(e.nodeId)]=e.position.x,u[c.get(e.nodeId)]=e.position.y})}if(t.alignmentConstraint){if(t.alignmentConstraint.vertical)for(var G=t.alignmentConstraint.vertical,ie=function(e){var t=new Set;G[e].forEach(function(e){t.add(e)});var n=new Set([].concat(r(t)).filter(function(e){return E.has(e)})),i=void 0;i=n.size>0?l[c.get(n.values().next().value)]:g(t).x,t.forEach(function(e){E.has(e)||(l[c.get(e)]=i)})},K=0;K0?u[c.get(n.values().next().value)]:g(t).y,t.forEach(function(e){E.has(e)||(u[c.get(e)]=i)})},J=0;J{t.exports=e})},n={};function r(e){var i=n[e];if(i!==void 0)return i.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}return r(45)})()})})),k=t(e(((e,t)=>{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r(O()):typeof define==`function`&&define.amd?define([`cose-base`],r):typeof e==`object`?e.cytoscapeFcose=r(O()):n.cytoscapeFcose=r(n.coseBase)})(e,function(e){return(()=>{var t={658:(e=>{e.exports=Object.assign==null?function(e){return[...arguments].slice(1).forEach(function(t){Object.keys(t).forEach(function(n){return e[n]=t[n]})}),e}:Object.assign.bind(Object)}),548:((e,t,n)=>{var r=function(){function e(e,t){var n=[],r=!0,i=!1,a=void 0;try{for(var o=e[Symbol.iterator](),s;!(r=(s=o.next()).done)&&(n.push(s.value),!(t&&n.length===t));r=!0);}catch(e){i=!0,a=e}finally{try{!r&&o.return&&o.return()}finally{if(i)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw TypeError(`Invalid attempt to destructure non-iterable instance`)}}(),i=n(140).layoutBase.LinkedList,a={};a.getTopMostNodes=function(e){for(var t={},n=0;n0&&l.merge(e)});for(var u=0;u1){l=s[0],u=l.connectedEdges().length,s.forEach(function(e){e.connectedEdges().length0&&r.set(`dummy`+(r.size+1),p),m},a.relocateComponent=function(e,t,n){if(!n.fixedNodeConstraint){var i=1/0,a=-1/0,o=1/0,s=-1/0;if(n.quality==`draft`){var c=!0,l=!1,u=void 0;try{for(var d=t.nodeIndexes[Symbol.iterator](),f;!(c=(f=d.next()).done);c=!0){var p=f.value,m=r(p,2),h=m[0],g=m[1],_=n.cy.getElementById(h);if(_){var v=_.boundingBox(),y=t.xCoords[g]-v.w/2,b=t.xCoords[g]+v.w/2,x=t.yCoords[g]-v.h/2,S=t.yCoords[g]+v.h/2;ya&&(a=b),xs&&(s=S)}}}catch(e){l=!0,u=e}finally{try{!c&&d.return&&d.return()}finally{if(l)throw u}}var C=e.x-(a+i)/2,w=e.y-(s+o)/2;t.xCoords=t.xCoords.map(function(e){return e+C}),t.yCoords=t.yCoords.map(function(e){return e+w})}else{Object.keys(t).forEach(function(e){var n=t[e],r=n.getRect().x,c=n.getRect().x+n.getRect().width,l=n.getRect().y,u=n.getRect().y+n.getRect().height;ra&&(a=c),ls&&(s=u)});var T=e.x-(a+i)/2,E=e.y-(s+o)/2;Object.keys(t).forEach(function(e){var n=t[e];n.setCenter(n.getCenterX()+T,n.getCenterY()+E)})}}},a.calcBoundingBox=function(e,t,n,r){for(var i=2**53-1,a=-(2**53-1),o=2**53-1,s=-(2**53-1),c=void 0,l=void 0,u=void 0,d=void 0,f=e.descendants().not(`:parent`),p=f.length,m=0;mc&&(i=c),au&&(o=u),s{var r=n(548),i=n(140).CoSELayout,a=n(140).CoSENode,o=n(140).layoutBase.PointD,s=n(140).layoutBase.DimensionD,c=n(140).layoutBase.LayoutConstants,l=n(140).layoutBase.FDLayoutConstants,u=n(140).CoSEConstants;e.exports={coseLayout:function(e,t){var n=e.cy,d=e.eles,f=d.nodes(),p=d.edges(),m=void 0,h=void 0,g=void 0,_={};e.randomize&&(m=t.nodeIndexes,h=t.xCoords,g=t.yCoords);var v=function(e){return typeof e==`function`},y=function(e,t){return v(e)?e(t):e},b=r.calcParentsWithoutChildren(n,d),x=function e(t,n,i,c){for(var l=n.length,u=0;u0){var S=void 0;S=i.getGraphManager().add(i.newGraph(),p),e(S,f,i,c)}}},S=function(t,n,r){for(var i=0,a=0,o=0;o0?u.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=i/a:v(e.idealEdgeLength)?u.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=50:u.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=e.idealEdgeLength,u.MIN_REPULSION_DIST=l.MIN_REPULSION_DIST=l.DEFAULT_EDGE_LENGTH/10,u.DEFAULT_RADIAL_SEPARATION=l.DEFAULT_EDGE_LENGTH)},C=function(e,t){t.fixedNodeConstraint&&(e.constraints.fixedNodeConstraint=t.fixedNodeConstraint),t.alignmentConstraint&&(e.constraints.alignmentConstraint=t.alignmentConstraint),t.relativePlacementConstraint&&(e.constraints.relativePlacementConstraint=t.relativePlacementConstraint)};e.nestingFactor!=null&&(u.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=l.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=e.nestingFactor),e.gravity!=null&&(u.DEFAULT_GRAVITY_STRENGTH=l.DEFAULT_GRAVITY_STRENGTH=e.gravity),e.numIter!=null&&(u.MAX_ITERATIONS=l.MAX_ITERATIONS=e.numIter),e.gravityRange!=null&&(u.DEFAULT_GRAVITY_RANGE_FACTOR=l.DEFAULT_GRAVITY_RANGE_FACTOR=e.gravityRange),e.gravityCompound!=null&&(u.DEFAULT_COMPOUND_GRAVITY_STRENGTH=l.DEFAULT_COMPOUND_GRAVITY_STRENGTH=e.gravityCompound),e.gravityRangeCompound!=null&&(u.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=l.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=e.gravityRangeCompound),e.initialEnergyOnIncremental!=null&&(u.DEFAULT_COOLING_FACTOR_INCREMENTAL=l.DEFAULT_COOLING_FACTOR_INCREMENTAL=e.initialEnergyOnIncremental),e.tilingCompareBy!=null&&(u.TILING_COMPARE_BY=e.tilingCompareBy),e.quality==`proof`?c.QUALITY=2:c.QUALITY=0,u.NODE_DIMENSIONS_INCLUDE_LABELS=l.NODE_DIMENSIONS_INCLUDE_LABELS=c.NODE_DIMENSIONS_INCLUDE_LABELS=e.nodeDimensionsIncludeLabels,u.DEFAULT_INCREMENTAL=l.DEFAULT_INCREMENTAL=c.DEFAULT_INCREMENTAL=!e.randomize,u.ANIMATE=l.ANIMATE=c.ANIMATE=e.animate,u.TILE=e.tile,u.TILING_PADDING_VERTICAL=typeof e.tilingPaddingVertical==`function`?e.tilingPaddingVertical.call():e.tilingPaddingVertical,u.TILING_PADDING_HORIZONTAL=typeof e.tilingPaddingHorizontal==`function`?e.tilingPaddingHorizontal.call():e.tilingPaddingHorizontal,u.DEFAULT_INCREMENTAL=l.DEFAULT_INCREMENTAL=c.DEFAULT_INCREMENTAL=!0,u.PURE_INCREMENTAL=!e.randomize,c.DEFAULT_UNIFORM_LEAF_NODE_SIZES=e.uniformNodeDimensions,e.step==`transformed`&&(u.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,u.ENFORCE_CONSTRAINTS=!1,u.APPLY_LAYOUT=!1),e.step==`enforced`&&(u.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,u.ENFORCE_CONSTRAINTS=!0,u.APPLY_LAYOUT=!1),e.step==`cose`&&(u.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,u.ENFORCE_CONSTRAINTS=!1,u.APPLY_LAYOUT=!0),e.step==`all`&&(e.randomize?u.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:u.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,u.ENFORCE_CONSTRAINTS=!0,u.APPLY_LAYOUT=!0),e.fixedNodeConstraint||e.alignmentConstraint||e.relativePlacementConstraint?u.TREE_REDUCTION_ON_INCREMENTAL=!1:u.TREE_REDUCTION_ON_INCREMENTAL=!0;var w=new i,T=w.newGraphManager();return x(T.addRoot(),r.getTopMostNodes(f),w,e),S(w,T,p),C(w,e),w.runLayout(),_}}}),212:((e,t,n)=>{var r=function(){function e(e,t){for(var n=0;n0)if(f){var p=o.getTopMostNodes(t.eles.nodes());if(l=o.connectComponents(n,t.eles,p),l.forEach(function(e){var t=e.boundingBox();u.push({x:t.x1+t.w/2,y:t.y1+t.h/2})}),t.randomize&&l.forEach(function(e){t.eles=e,i.push(s(t))}),t.quality==`default`||t.quality==`proof`){var m=n.collection();if(t.tile){var h=new Map,g=[],_=[],v=0,y={nodeIndexes:h,xCoords:g,yCoords:_},b=[];if(l.forEach(function(e,t){e.edges().length==0&&(e.nodes().forEach(function(t,n){m.merge(e.nodes()[n]),t.isParent()||(y.nodeIndexes.set(e.nodes()[n].id(),v++),y.xCoords.push(e.nodes()[0].position().x),y.yCoords.push(e.nodes()[0].position().y))}),b.push(t))}),m.length>1){var x=m.boundingBox();u.push({x:x.x1+x.w/2,y:x.y1+x.h/2}),l.push(m),i.push(y);for(var S=b.length-1;S>=0;S--)l.splice(b[S],1),i.splice(b[S],1),u.splice(b[S],1)}}l.forEach(function(e,n){t.eles=e,a.push(c(t,i[n])),o.relocateComponent(u[n],a[n],t)})}else l.forEach(function(e,n){o.relocateComponent(u[n],i[n],t)});var C=new Set;if(l.length>1){var w=[],T=r.filter(function(e){return e.css(`display`)==`none`});l.forEach(function(e,n){var r=void 0;if(t.quality==`draft`&&(r=i[n].nodeIndexes),e.nodes().not(T).length>0){var s={};s.edges=[],s.nodes=[];var c=void 0;e.nodes().not(T).forEach(function(e){if(t.quality==`draft`)if(!e.isParent())c=r.get(e.id()),s.nodes.push({x:i[n].xCoords[c]-e.boundingbox().w/2,y:i[n].yCoords[c]-e.boundingbox().h/2,width:e.boundingbox().w,height:e.boundingbox().h});else{var l=o.calcBoundingBox(e,i[n].xCoords,i[n].yCoords,r);s.nodes.push({x:l.topLeftX,y:l.topLeftY,width:l.width,height:l.height})}else a[n][e.id()]&&s.nodes.push({x:a[n][e.id()].getLeft(),y:a[n][e.id()].getTop(),width:a[n][e.id()].getWidth(),height:a[n][e.id()].getHeight()})}),e.edges().forEach(function(e){var c=e.source(),l=e.target();if(c.css(`display`)!=`none`&&l.css(`display`)!=`none`)if(t.quality==`draft`){var u=r.get(c.id()),d=r.get(l.id()),f=[],p=[];if(c.isParent()){var m=o.calcBoundingBox(c,i[n].xCoords,i[n].yCoords,r);f.push(m.topLeftX+m.width/2),f.push(m.topLeftY+m.height/2)}else f.push(i[n].xCoords[u]),f.push(i[n].yCoords[u]);if(l.isParent()){var h=o.calcBoundingBox(l,i[n].xCoords,i[n].yCoords,r);p.push(h.topLeftX+h.width/2),p.push(h.topLeftY+h.height/2)}else p.push(i[n].xCoords[d]),p.push(i[n].yCoords[d]);s.edges.push({startX:f[0],startY:f[1],endX:p[0],endY:p[1]})}else a[n][c.id()]&&a[n][l.id()]&&s.edges.push({startX:a[n][c.id()].getCenterX(),startY:a[n][c.id()].getCenterY(),endX:a[n][l.id()].getCenterX(),endY:a[n][l.id()].getCenterY()})}),s.nodes.length>0&&(w.push(s),C.add(n))}});var E=d.packComponents(w,t.randomize).shifts;if(t.quality==`draft`)i.forEach(function(e,t){var n=e.xCoords.map(function(e){return e+E[t].dx}),r=e.yCoords.map(function(e){return e+E[t].dy});e.xCoords=n,e.yCoords=r});else{var D=0;C.forEach(function(e){Object.keys(a[e]).forEach(function(t){var n=a[e][t];n.setCenter(n.getCenterX()+E[D].dx,n.getCenterY()+E[D].dy)}),D++})}}}else{var O=t.eles.boundingBox();if(u.push({x:O.x1+O.w/2,y:O.y1+O.h/2}),t.randomize){var k=s(t);i.push(k)}t.quality==`default`||t.quality==`proof`?(a.push(c(t,i[0])),o.relocateComponent(u[0],a[0],t)):o.relocateComponent(u[0],i[0],t)}var A=function(e,n){if(t.quality==`default`||t.quality==`proof`){typeof e==`number`&&(e=n);var r=void 0,o=void 0,s=e.data(`id`);return a.forEach(function(e){s in e&&(r={x:e[s].getRect().getCenterX(),y:e[s].getRect().getCenterY()},o=e[s])}),t.nodeDimensionsIncludeLabels&&(o.labelWidth&&(o.labelPosHorizontal==`left`?r.x+=o.labelWidth/2:o.labelPosHorizontal==`right`&&(r.x-=o.labelWidth/2)),o.labelHeight&&(o.labelPosVertical==`top`?r.y+=o.labelHeight/2:o.labelPosVertical==`bottom`&&(r.y-=o.labelHeight/2))),r??={x:e.position(`x`),y:e.position(`y`)},{x:r.x,y:r.y}}else{var c=void 0;return i.forEach(function(t){var n=t.nodeIndexes.get(e.id());n!=null&&(c={x:t.xCoords[n],y:t.yCoords[n]})}),c??={x:e.position(`x`),y:e.position(`y`)},{x:c.x,y:c.y}}};if(t.quality==`default`||t.quality==`proof`||t.randomize){var j=o.calcParentsWithoutChildren(n,r),M=r.filter(function(e){return e.css(`display`)==`none`});t.eles=r.not(M),r.nodes().not(`:parent`).not(M).layoutPositions(e,t,A),j.length>0&&j.forEach(function(e){e.position(A(e))})}else console.log(`If randomize option is set to false, then quality option must be 'default' or 'proof'.`)}}]),e}()}),657:((e,t,n)=>{var r=n(548),i=n(140).layoutBase.Matrix,a=n(140).layoutBase.SVD;e.exports={spectralLayout:function(e){var t=e.cy,n=e.eles,o=n.nodes(),s=n.nodes(`:parent`),c=new Map,l=new Map,u=new Map,d=[],f=[],p=[],m=[],h=[],g=[],_=[],v=[],y=void 0,b=1e8,x=1e-9,S=e.piTol,C=e.samplingType,w=e.nodeSeparation,T=void 0,E=function(){for(var e=0,t=0,n=!1;t=i;){o=r[i++];for(var m=d[o],_=0;_u&&(u=h[x],f=x)}return f},O=function(e){var t=void 0;if(e){t=Math.floor(Math.random()*y);for(var n=0;n=1)break;u=l}for(var h=0;h=1)break;u=l}for(var b=0;b0&&(r.isParent()?d[t].push(u.get(r.id())):d[t].push(r.id()))})});var B=function(e){var n=l.get(e),r=void 0;c.get(e).forEach(function(i){r=t.getElementById(i).isParent()?u.get(i):i,d[n].push(r),d[l.get(r)].push(e)})},V=!0,ee=!1,te=void 0;try{for(var H=c.keys()[Symbol.iterator](),ne;!(V=(ne=H.next()).done);V=!0){var re=ne.value;B(re)}}catch(e){ee=!0,te=e}finally{try{!V&&H.return&&H.return()}finally{if(ee)throw te}}y=l.size;var U=void 0;if(y>2){T=y{var r=n(212),i=function(e){e&&e(`layout`,`fcose`,r)};typeof cytoscape<`u`&&i(cytoscape),e.exports=i}),140:(t=>{t.exports=e})},n={};function r(e){var i=n[e];if(i!==void 0)return i.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}return r(579)})()})}))(),1),A={L:`left`,R:`right`,T:`top`,B:`bottom`},j={L:o(e=>`${e},${e/2} 0,${e} 0,0`,`L`),R:o(e=>`0,${e/2} ${e},0 ${e},${e}`,`R`),T:o(e=>`0,0 ${e},0 ${e/2},${e}`,`T`),B:o(e=>`${e/2},0 ${e},${e} 0,${e}`,`B`)},M={L:o((e,t)=>e-t+2,`L`),R:o((e,t)=>e-2,`R`),T:o((e,t)=>e-t+2,`T`),B:o((e,t)=>e-2,`B`)},N=o(function(e){return F(e)?e===`L`?`R`:`L`:e===`T`?`B`:`T`},`getOppositeArchitectureDirection`),P=o(function(e){let t=e;return t===`L`||t===`R`||t===`T`||t===`B`},`isArchitectureDirection`),F=o(function(e){let t=e;return t===`L`||t===`R`},`isArchitectureDirectionX`),I=o(function(e){let t=e;return t===`T`||t===`B`},`isArchitectureDirectionY`),L=o(function(e,t){let n=F(e)&&I(t),r=I(e)&&F(t);return n||r},`isArchitectureDirectionXY`),R=o(function(e){let t=e[0],n=e[1],r=F(t)&&I(n),i=I(t)&&F(n);return r||i},`isArchitecturePairXY`),z=o(function(e){return e!==`LL`&&e!==`RR`&&e!==`TT`&&e!==`BB`},`isValidArchitectureDirectionPair`),B=o(function(e,t){let n=`${e}${t}`;return z(n)?n:void 0},`getArchitectureDirectionPair`),V=o(function([e,t],n){let r=n[0],i=n[1];return F(r)?I(i)?[e+(r===`L`?-1:1),t+(i===`T`?1:-1)]:[e+(r===`L`?-1:1),t]:F(i)?[e+(i===`L`?1:-1),t+(r===`T`?1:-1)]:[e,t+(r===`T`?1:-1)]},`shiftPositionByArchitectureDirectionPair`),ee=o(function(e){return e===`LT`||e===`TL`?[1,1]:e===`BL`||e===`LB`?[1,-1]:e===`BR`||e===`RB`?[-1,-1]:[-1,1]},`getArchitectureDirectionXYFactors`),te=o(function(e,t){return L(e,t)?`bend`:F(e)?`horizontal`:`vertical`},`getArchitectureDirectionAlignment`),H=o(function(e){return e.type===`service`},`isArchitectureService`),ne=o(function(e){return e.type===`junction`},`isArchitectureJunction`),re=o((e,t)=>{let[n,r]=[e,t].sort();return`${JSON.stringify(n)}-${JSON.stringify(r)}`},`architectureGroupAlignmentKey`),U=o(e=>e.data(),`edgeData`),W=o(e=>e.data(),`nodeData`),G=p.architecture,ie=class{constructor(){this.nodes=new Map,this.groups=new Map,this.edges=[],this.layoutHints=[],this.registeredIds=new Map,this.elements=new Map,this.diagramId=``,this.setAccTitle=h,this.getAccTitle=b,this.setDiagramTitle=u,this.getDiagramTitle=x,this.getAccDescription=y,this.setAccDescription=T,this.clear()}static{o(this,`ArchitectureDB`)}setDiagramId(e){this.diagramId=e}getDiagramId(){return this.diagramId}clear(){this.nodes=new Map,this.groups=new Map,this.edges=[],this.layoutHints=[],this.registeredIds=new Map,this.dataStructures=void 0,this.elements=new Map,this.diagramId=``,_()}addService({id:e,icon:t,in:n,title:r,iconText:i}){if(this.registeredIds.has(e))throw Error(`The service id [${e}] is already in use by another ${this.registeredIds.get(e)}`);if(n!==void 0){if(e===n)throw Error(`The service [${e}] cannot be placed within itself`);if(!this.registeredIds.has(n))throw Error(`The service [${e}]'s parent does not exist. Please make sure the parent is created before this service`);if(this.registeredIds.get(n)===`node`)throw Error(`The service [${e}]'s parent is not a group`)}this.registeredIds.set(e,`node`),this.nodes.set(e,{id:e,type:`service`,icon:t,iconText:i,title:r,edges:[],in:n})}getServices(){return[...this.nodes.values()].filter(H)}addJunction({id:e,in:t}){if(this.registeredIds.has(e))throw Error(`The junction id [${e}] is already in use by another ${this.registeredIds.get(e)}`);if(t!==void 0){if(e===t)throw Error(`The junction [${e}] cannot be placed within itself`);if(!this.registeredIds.has(t))throw Error(`The junction [${e}]'s parent does not exist. Please make sure the parent is created before this junction`);if(this.registeredIds.get(t)===`node`)throw Error(`The junction [${e}]'s parent is not a group`)}this.registeredIds.set(e,`node`),this.nodes.set(e,{id:e,type:`junction`,edges:[],in:t})}getJunctions(){return[...this.nodes.values()].filter(ne)}getNodes(){return[...this.nodes.values()]}getNode(e){return this.nodes.get(e)??null}addGroup({id:e,icon:t,in:n,title:r}){if(this.registeredIds.has(e))throw Error(`The group id [${e}] is already in use by another ${this.registeredIds.get(e)}`);if(n!==void 0){if(e===n)throw Error(`The group [${e}] cannot be placed within itself`);if(!this.registeredIds.has(n))throw Error(`The group [${e}]'s parent does not exist. Please make sure the parent is created before this group`);if(this.registeredIds.get(n)===`node`)throw Error(`The group [${e}]'s parent is not a group`)}this.registeredIds.set(e,`group`),this.groups.set(e,{id:e,icon:t,title:r,in:n})}getGroups(){return[...this.groups.values()]}addEdge({lhsId:e,rhsId:t,lhsDir:n,rhsDir:r,lhsInto:i,rhsInto:a,lhsGroup:o,rhsGroup:s,title:c}){if(!P(n))throw Error(`Invalid direction given for left hand side of edge ${e}--${t}. Expected (L,R,T,B) got ${String(n)}`);if(!P(r))throw Error(`Invalid direction given for right hand side of edge ${e}--${t}. Expected (L,R,T,B) got ${String(r)}`);if(!this.nodes.has(e)&&!this.groups.has(e))throw Error(`The left-hand id [${e}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(!this.nodes.has(t)&&!this.groups.has(t))throw Error(`The right-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`);let l=this.nodes.get(e).in,u=this.nodes.get(t).in;if(o&&l&&u&&l==u)throw Error(`The left-hand id [${e}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(s&&l&&u&&l==u)throw Error(`The right-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);let d={lhsId:e,lhsDir:n,lhsInto:i,lhsGroup:o,rhsId:t,rhsDir:r,rhsInto:a,rhsGroup:s,title:c};this.edges.push(d);let f=this.nodes.get(e),p=this.nodes.get(t);f&&p&&(f.edges.push(this.edges[this.edges.length-1]),p.edges.push(this.edges[this.edges.length-1]))}getEdges(){return this.edges}addLayoutHint(e){if(e.members.length<2)throw Error(`An align directive requires at least two members; got ${e.members.length}`);let t=new Set;e.members.forEach(n=>{if(this.registeredIds.get(n)!==`node`)throw Error(`align ${e.direction} references [${n}], which is not a service or junction`);if(t.has(n))throw Error(`align ${e.direction} lists [${n}] more than once`);t.add(n)}),this.layoutHints.push(e)}getLayoutHints(){return this.layoutHints}getDataStructures(){if(this.dataStructures===void 0){let e=new Map,t=new Map;for(let[n,r]of this.nodes.entries()){let i=new Map;for(let t of r.edges){let r=this.getNode(t.lhsId)?.in,a=this.getNode(t.rhsId)?.in;if(r&&a&&r!==a){let n=te(t.lhsDir,t.rhsDir);n!==`bend`&&e.set(re(r,a),n)}if(t.lhsId===n){let e=B(t.lhsDir,t.rhsDir);e&&i.set(e,t.rhsId)}else{let e=B(t.rhsDir,t.lhsDir);e&&i.set(e,t.lhsId)}}t.set(n,i)}let n=new Set,r=new Set(t.keys()),i=o(e=>{let i=new Map([[e,[0,0]]]),a=[e];for(;a.length>0;){let e=a.shift();if(e){n.add(e),r.delete(e);let o=t.get(e);if(!o)throw Error(`BFS error: adjacency list for id ${e} not found. Please report this as a bug.`);let s=i.get(e);if(!s)throw Error(`BFS error: position for id ${e} not found in spatial map. Please report this as a bug.`);let[c,l]=s;o.forEach((e,t)=>{n.has(e)||(i.set(e,V([c,l],t)),a.push(e))})}}return i},`BFS`),a=[];for(;r.size>0;){let e=r.values().next().value;a.push(i(e))}this.dataStructures={adjList:t,spatialMaps:a,groupAlignments:e}}return this.dataStructures}setElementForId(e,t){this.elements.set(e,t)}getElementById(e){return this.elements.get(e)}getConfig(){return s({...G,...g().architecture})}getConfigField(e){return this.getConfig()[e]}},K=o((e,t)=>{r(e,t),e.groups.map(e=>t.addGroup(e)),e.services.map(e=>t.addService({...e,type:`service`})),e.junctions.map(e=>t.addJunction({...e,type:`junction`})),e.edges.map(e=>t.addEdge(e)),e.alignments?.map(e=>t.addLayoutHint({direction:e.direction,members:[...e.members]}))},`populateDb`),q={parser:{yy:void 0},parse:o(async e=>{let t=await n(`architecture`,e);c.debug(t);let r=q.parser?.yy;if(!(r instanceof ie))throw Error(`parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.`);K(t,r)},`parse`)},ae=o(e=>` .edge { stroke-width: ${e.archEdgeWidth}; stroke: ${e.archEdgeColor}; diff --git a/ksadk/server/static/assets/blockDiagram-NRAW4CY4-BjkljTNz.js b/ksadk/server/static/assets/blockDiagram-NRAW4CY4-BEhGFh0b.js similarity index 99% rename from ksadk/server/static/assets/blockDiagram-NRAW4CY4-BjkljTNz.js rename to ksadk/server/static/assets/blockDiagram-NRAW4CY4-BEhGFh0b.js index 338d29a4..6abe5880 100644 --- a/ksadk/server/static/assets/blockDiagram-NRAW4CY4-BjkljTNz.js +++ b/ksadk/server/static/assets/blockDiagram-NRAW4CY4-BEhGFh0b.js @@ -1,4 +1,4 @@ -import{t as e}from"./channel-4cQHKtx1.js";import{t}from"./chunk-5VM5RSS4-BVHAchFb.js";import{$t as n,Ar as r,Bt as i,Ct as a,Gt as o,Ir as s,Jt as c,Kt as l,Nr as u,Qt as d,Xt as f,Yt as p,Zn as m,Zt as h,_t as g,an as _,bt as v,cn as y,cr as b,dn as x,en as S,er as C,fn as w,hn as T,in as E,ln as D,lr as O,mn as k,nn as A,nr as j,on as M,p as ee,pn as te,qt as ne,rn as re,rr as ie,sn as ae,tn as oe,un as se,vt as ce,wt as le,xt as ue}from"./MermaidBlock-Dz4IP-Tx.js";function de(e){return Array.isArray(e)}function fe(e){if(l(e))return e;let t=T(e);if(!pe(e))return{};if(de(e)){let t=Array.from(e);return e.length>0&&typeof e[0]==`string`&&Object.hasOwn(e,`index`)&&(t.index=e.index,t.input=e.input),t}if(o(e)){let t=e,n=t.constructor;return new n(t.buffer,t.byteOffset,t.length)}if(t===`[object ArrayBuffer]`)return new ArrayBuffer(e.byteLength);if(t===`[object DataView]`){let t=e,n=t.buffer,r=t.byteOffset,i=t.byteLength,a=new ArrayBuffer(i),o=new Uint8Array(n,r,i);return new Uint8Array(a).set(o),new DataView(a)}if(t===`[object Boolean]`||t===`[object Number]`||t===`[object String]`){let n=e.constructor,r=new n(e.valueOf());return t===`[object String]`?he(r,e):N(r,e),r}if(t===`[object Date]`)return new Date(Number(e));if(t===`[object RegExp]`){let t=e,n=new RegExp(t.source,t.flags);return n.lastIndex=t.lastIndex,n}if(t===`[object Symbol]`)return Object(Symbol.prototype.valueOf.call(e));if(t===`[object Map]`){let t=e,n=new Map;return t.forEach((e,t)=>{n.set(t,e)}),n}if(t===`[object Set]`){let t=e,n=new Set;return t.forEach(e=>{n.add(e)}),n}if(t===`[object Arguments]`){let t=e,n={};return N(n,t),n.length=t.length,n[Symbol.iterator]=t[Symbol.iterator],n}let n={};return ge(n,e),N(n,e),me(n,e),n}function pe(e){switch(T(e)){case ne:case p:case c:case h:case f:case d:case n:case S:case re:case oe:case A:case E:case _:case M:case ae:case y:case D:case se:case te:case k:case x:case w:return!0;default:return!1}}function N(e,t){for(let n in t)Object.hasOwn(t,n)&&(e[n]=t[n])}function me(e,t){let n=Object.getOwnPropertySymbols(t);for(let r=0;r=n)&&(e[r]=t[r])}function ge(e,t){let n=Object.getPrototypeOf(t);n!==null&&typeof t.constructor==`function`&&Object.setPrototypeOf(e,n)}var P=(function(){var e=s(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,15],n=[1,7],r=[1,13],i=[1,14],a=[1,19],o=[1,16],c=[1,17],l=[1,18],u=[8,30],d=[8,10,21,28,29,30,31,39,43,46],f=[1,23],p=[1,24],m=[8,10,15,16,21,28,29,30,31,39,43,46],h=[8,10,15,16,21,27,28,29,30,31,39,43,46],g=[1,49],_={trace:s(function(){},`trace`),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$accept:0,$end:1},terminals_:{2:`error`,4:`SPACELINE`,5:`NL`,7:`SPACE`,8:`EOF`,10:`BLOCK_DIAGRAM_KEY`,15:`LINK`,16:`START_LINK`,17:`LINK_LABEL`,18:`STR`,21:`SPACE_BLOCK`,27:`SIZE`,28:`COLUMNS`,29:`id-block`,30:`end`,31:`NODE_ID`,34:`DIR`,35:`NODE_DSTART`,36:`NODE_DEND`,37:`BLOCK_ARROW_START`,38:`BLOCK_ARROW_END`,39:`classDef`,40:`CLASSDEF_ID`,41:`CLASSDEF_STYLEOPTS`,42:`DEFAULT`,43:`class`,44:`CLASSENTITY_IDS`,45:`STYLECLASS`,46:`style`,47:`STYLE_ENTITY_IDS`,48:`STYLE_DEFINITION_DATA`},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:s(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 4:r.getLogger().debug(`Rule: separator (NL) `);break;case 5:r.getLogger().debug(`Rule: separator (Space) `);break;case 6:r.getLogger().debug(`Rule: separator (EOF) `);break;case 7:r.getLogger().debug(`Rule: hierarchy: `,a[s-1]),r.setHierarchy(a[s-1]);break;case 8:r.getLogger().debug(`Stop NL `);break;case 9:r.getLogger().debug(`Stop EOF `);break;case 10:r.getLogger().debug(`Stop NL2 `);break;case 11:r.getLogger().debug(`Stop EOF2 `);break;case 12:r.getLogger().debug(`Rule: statement: `,a[s]),typeof a[s].length==`number`?this.$=a[s]:this.$=[a[s]];break;case 13:r.getLogger().debug(`Rule: statement #2: `,a[s-1]),this.$=[a[s-1]].concat(a[s]);break;case 14:r.getLogger().debug(`Rule: link: `,a[s],e),this.$={edgeTypeStr:a[s],label:``};break;case 15:r.getLogger().debug(`Rule: LABEL link: `,a[s-3],a[s-1],a[s]),this.$={edgeTypeStr:a[s],label:a[s-1]};break;case 18:let t=parseInt(a[s]),n=r.generateId();this.$={id:n,type:`space`,label:``,width:t,children:[]};break;case 23:r.getLogger().debug(`Rule: (nodeStatement link node) `,a[s-2],a[s-1],a[s],` typestr: `,a[s-1].edgeTypeStr);let i=r.edgeStrToEdgeData(a[s-1].edgeTypeStr),o=r.edgeStrToEdgeStartData(a[s-1].edgeTypeStr),c=r.edgeStrToThickness(a[s-1].edgeTypeStr),l=r.edgeStrToPattern(a[s-1].edgeTypeStr);this.$=[{id:a[s-2].id,label:a[s-2].label,type:a[s-2].type,directions:a[s-2].directions},{id:a[s-2].id+`-`+a[s].id,start:a[s-2].id,end:a[s].id,label:a[s-1].label,type:`edge`,thickness:c,pattern:l,directions:a[s].directions,arrowTypeEnd:i,arrowTypeStart:o},{id:a[s].id,label:a[s].label,type:r.typeStr2Type(a[s].typeStr),directions:a[s].directions}];break;case 24:r.getLogger().debug(`Rule: nodeStatement (abc88 node size) `,a[s-1],a[s]),this.$={id:a[s-1].id,label:a[s-1].label,type:r.typeStr2Type(a[s-1].typeStr),directions:a[s-1].directions,widthInColumns:parseInt(a[s],10)};break;case 25:r.getLogger().debug(`Rule: nodeStatement (node) `,a[s]),this.$={id:a[s].id,label:a[s].label,type:r.typeStr2Type(a[s].typeStr),directions:a[s].directions,widthInColumns:1};break;case 26:r.getLogger().debug(`APA123`,this?this:`na`),r.getLogger().debug(`COLUMNS: `,a[s]),this.$={type:`column-setting`,columns:a[s]===`auto`?-1:parseInt(a[s])};break;case 27:r.getLogger().debug(`Rule: id-block statement : `,a[s-2],a[s-1]),r.generateId(),this.$={...a[s-2],type:`composite`,children:a[s-1]};break;case 28:r.getLogger().debug(`Rule: blockStatement : `,a[s-2],a[s-1],a[s]);let u=r.generateId();this.$={id:u,type:`composite`,label:``,children:a[s-1]};break;case 29:r.getLogger().debug(`Rule: node (NODE_ID separator): `,a[s]),this.$={id:a[s]};break;case 30:r.getLogger().debug(`Rule: node (NODE_ID nodeShapeNLabel separator): `,a[s-1],a[s]),this.$={id:a[s-1],label:a[s].label,typeStr:a[s].typeStr,directions:a[s].directions};break;case 31:r.getLogger().debug(`Rule: dirList: `,a[s]),this.$=[a[s]];break;case 32:r.getLogger().debug(`Rule: dirList: `,a[s-1],a[s]),this.$=[a[s-1]].concat(a[s]);break;case 33:r.getLogger().debug(`Rule: nodeShapeNLabel: `,a[s-2],a[s-1],a[s]),this.$={typeStr:a[s-2]+a[s],label:a[s-1]};break;case 34:r.getLogger().debug(`Rule: BLOCK_ARROW nodeShapeNLabel: `,a[s-3],a[s-2],` #3:`,a[s-1],a[s]),this.$={typeStr:a[s-3]+a[s],label:a[s-2],directions:a[s-1]};break;case 35:case 36:this.$={type:`classDef`,id:a[s-1].trim(),css:a[s].trim()};break;case 37:this.$={type:`applyClass`,id:a[s-1].trim(),styleClass:a[s].trim()};break;case 38:this.$={type:`applyStyles`,id:a[s-1].trim(),stylesStr:a[s].trim()};break}},`anonymous`),table:[{9:1,10:[1,2]},{1:[3]},{10:t,11:3,13:4,19:5,20:6,21:n,22:8,23:9,24:10,25:11,26:12,28:r,29:i,31:a,39:o,43:c,46:l},{8:[1,20]},e(u,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:t,21:n,28:r,29:i,31:a,39:o,43:c,46:l}),e(d,[2,16],{14:22,15:f,16:p}),e(d,[2,17]),e(d,[2,18]),e(d,[2,19]),e(d,[2,20]),e(d,[2,21]),e(d,[2,22]),e(m,[2,25],{27:[1,25]}),e(d,[2,26]),{19:26,26:12,31:a},{10:t,11:27,13:4,19:5,20:6,21:n,22:8,23:9,24:10,25:11,26:12,28:r,29:i,31:a,39:o,43:c,46:l},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},e(h,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},e(u,[2,13]),{26:35,31:a},{31:[2,14]},{17:[1,36]},e(m,[2,24]),{10:t,11:37,13:4,14:22,15:f,16:p,19:5,20:6,21:n,22:8,23:9,24:10,25:11,26:12,28:r,29:i,31:a,39:o,43:c,46:l},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},e(h,[2,30]),{18:[1,43]},{18:[1,44]},e(m,[2,23]),{18:[1,45]},{30:[1,46]},e(d,[2,28]),e(d,[2,35]),e(d,[2,36]),e(d,[2,37]),e(d,[2,38]),{36:[1,47]},{33:48,34:g},{15:[1,50]},e(d,[2,27]),e(h,[2,33]),{38:[1,51]},{33:52,34:g,38:[2,31]},{31:[2,15]},e(h,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:s(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:s(function(e){var t=this,n=[0],r=[],i=[null],a=[],o=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=a.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;a.push(v);var y=h.options&&h.options.ranges;typeof g.yy.parseError==`function`?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function b(e){n.length-=2*e,i.length-=e,a.length-=e}s(b,`popStack`);function x(){var e=r.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(r=e,e=r.pop()),e=t.symbols_[e]||e),e}s(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=n[n.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=o[w]&&o[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],o[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`: +import{t as e}from"./channel-CdffTTpb.js";import{t}from"./chunk-5VM5RSS4-VZAcej21.js";import{$t as n,Ar as r,Bt as i,Ct as a,Gt as o,Ir as s,Jt as c,Kt as l,Nr as u,Qt as d,Xt as f,Yt as p,Zn as m,Zt as h,_t as g,an as _,bt as v,cn as y,cr as b,dn as x,en as S,er as C,fn as w,hn as T,in as E,ln as D,lr as O,mn as k,nn as A,nr as j,on as M,p as ee,pn as te,qt as ne,rn as re,rr as ie,sn as ae,tn as oe,un as se,vt as ce,wt as le,xt as ue}from"./MermaidBlock-CI9NjqQx.js";function de(e){return Array.isArray(e)}function fe(e){if(l(e))return e;let t=T(e);if(!pe(e))return{};if(de(e)){let t=Array.from(e);return e.length>0&&typeof e[0]==`string`&&Object.hasOwn(e,`index`)&&(t.index=e.index,t.input=e.input),t}if(o(e)){let t=e,n=t.constructor;return new n(t.buffer,t.byteOffset,t.length)}if(t===`[object ArrayBuffer]`)return new ArrayBuffer(e.byteLength);if(t===`[object DataView]`){let t=e,n=t.buffer,r=t.byteOffset,i=t.byteLength,a=new ArrayBuffer(i),o=new Uint8Array(n,r,i);return new Uint8Array(a).set(o),new DataView(a)}if(t===`[object Boolean]`||t===`[object Number]`||t===`[object String]`){let n=e.constructor,r=new n(e.valueOf());return t===`[object String]`?he(r,e):N(r,e),r}if(t===`[object Date]`)return new Date(Number(e));if(t===`[object RegExp]`){let t=e,n=new RegExp(t.source,t.flags);return n.lastIndex=t.lastIndex,n}if(t===`[object Symbol]`)return Object(Symbol.prototype.valueOf.call(e));if(t===`[object Map]`){let t=e,n=new Map;return t.forEach((e,t)=>{n.set(t,e)}),n}if(t===`[object Set]`){let t=e,n=new Set;return t.forEach(e=>{n.add(e)}),n}if(t===`[object Arguments]`){let t=e,n={};return N(n,t),n.length=t.length,n[Symbol.iterator]=t[Symbol.iterator],n}let n={};return ge(n,e),N(n,e),me(n,e),n}function pe(e){switch(T(e)){case ne:case p:case c:case h:case f:case d:case n:case S:case re:case oe:case A:case E:case _:case M:case ae:case y:case D:case se:case te:case k:case x:case w:return!0;default:return!1}}function N(e,t){for(let n in t)Object.hasOwn(t,n)&&(e[n]=t[n])}function me(e,t){let n=Object.getOwnPropertySymbols(t);for(let r=0;r=n)&&(e[r]=t[r])}function ge(e,t){let n=Object.getPrototypeOf(t);n!==null&&typeof t.constructor==`function`&&Object.setPrototypeOf(e,n)}var P=(function(){var e=s(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,15],n=[1,7],r=[1,13],i=[1,14],a=[1,19],o=[1,16],c=[1,17],l=[1,18],u=[8,30],d=[8,10,21,28,29,30,31,39,43,46],f=[1,23],p=[1,24],m=[8,10,15,16,21,28,29,30,31,39,43,46],h=[8,10,15,16,21,27,28,29,30,31,39,43,46],g=[1,49],_={trace:s(function(){},`trace`),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$accept:0,$end:1},terminals_:{2:`error`,4:`SPACELINE`,5:`NL`,7:`SPACE`,8:`EOF`,10:`BLOCK_DIAGRAM_KEY`,15:`LINK`,16:`START_LINK`,17:`LINK_LABEL`,18:`STR`,21:`SPACE_BLOCK`,27:`SIZE`,28:`COLUMNS`,29:`id-block`,30:`end`,31:`NODE_ID`,34:`DIR`,35:`NODE_DSTART`,36:`NODE_DEND`,37:`BLOCK_ARROW_START`,38:`BLOCK_ARROW_END`,39:`classDef`,40:`CLASSDEF_ID`,41:`CLASSDEF_STYLEOPTS`,42:`DEFAULT`,43:`class`,44:`CLASSENTITY_IDS`,45:`STYLECLASS`,46:`style`,47:`STYLE_ENTITY_IDS`,48:`STYLE_DEFINITION_DATA`},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:s(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 4:r.getLogger().debug(`Rule: separator (NL) `);break;case 5:r.getLogger().debug(`Rule: separator (Space) `);break;case 6:r.getLogger().debug(`Rule: separator (EOF) `);break;case 7:r.getLogger().debug(`Rule: hierarchy: `,a[s-1]),r.setHierarchy(a[s-1]);break;case 8:r.getLogger().debug(`Stop NL `);break;case 9:r.getLogger().debug(`Stop EOF `);break;case 10:r.getLogger().debug(`Stop NL2 `);break;case 11:r.getLogger().debug(`Stop EOF2 `);break;case 12:r.getLogger().debug(`Rule: statement: `,a[s]),typeof a[s].length==`number`?this.$=a[s]:this.$=[a[s]];break;case 13:r.getLogger().debug(`Rule: statement #2: `,a[s-1]),this.$=[a[s-1]].concat(a[s]);break;case 14:r.getLogger().debug(`Rule: link: `,a[s],e),this.$={edgeTypeStr:a[s],label:``};break;case 15:r.getLogger().debug(`Rule: LABEL link: `,a[s-3],a[s-1],a[s]),this.$={edgeTypeStr:a[s],label:a[s-1]};break;case 18:let t=parseInt(a[s]),n=r.generateId();this.$={id:n,type:`space`,label:``,width:t,children:[]};break;case 23:r.getLogger().debug(`Rule: (nodeStatement link node) `,a[s-2],a[s-1],a[s],` typestr: `,a[s-1].edgeTypeStr);let i=r.edgeStrToEdgeData(a[s-1].edgeTypeStr),o=r.edgeStrToEdgeStartData(a[s-1].edgeTypeStr),c=r.edgeStrToThickness(a[s-1].edgeTypeStr),l=r.edgeStrToPattern(a[s-1].edgeTypeStr);this.$=[{id:a[s-2].id,label:a[s-2].label,type:a[s-2].type,directions:a[s-2].directions},{id:a[s-2].id+`-`+a[s].id,start:a[s-2].id,end:a[s].id,label:a[s-1].label,type:`edge`,thickness:c,pattern:l,directions:a[s].directions,arrowTypeEnd:i,arrowTypeStart:o},{id:a[s].id,label:a[s].label,type:r.typeStr2Type(a[s].typeStr),directions:a[s].directions}];break;case 24:r.getLogger().debug(`Rule: nodeStatement (abc88 node size) `,a[s-1],a[s]),this.$={id:a[s-1].id,label:a[s-1].label,type:r.typeStr2Type(a[s-1].typeStr),directions:a[s-1].directions,widthInColumns:parseInt(a[s],10)};break;case 25:r.getLogger().debug(`Rule: nodeStatement (node) `,a[s]),this.$={id:a[s].id,label:a[s].label,type:r.typeStr2Type(a[s].typeStr),directions:a[s].directions,widthInColumns:1};break;case 26:r.getLogger().debug(`APA123`,this?this:`na`),r.getLogger().debug(`COLUMNS: `,a[s]),this.$={type:`column-setting`,columns:a[s]===`auto`?-1:parseInt(a[s])};break;case 27:r.getLogger().debug(`Rule: id-block statement : `,a[s-2],a[s-1]),r.generateId(),this.$={...a[s-2],type:`composite`,children:a[s-1]};break;case 28:r.getLogger().debug(`Rule: blockStatement : `,a[s-2],a[s-1],a[s]);let u=r.generateId();this.$={id:u,type:`composite`,label:``,children:a[s-1]};break;case 29:r.getLogger().debug(`Rule: node (NODE_ID separator): `,a[s]),this.$={id:a[s]};break;case 30:r.getLogger().debug(`Rule: node (NODE_ID nodeShapeNLabel separator): `,a[s-1],a[s]),this.$={id:a[s-1],label:a[s].label,typeStr:a[s].typeStr,directions:a[s].directions};break;case 31:r.getLogger().debug(`Rule: dirList: `,a[s]),this.$=[a[s]];break;case 32:r.getLogger().debug(`Rule: dirList: `,a[s-1],a[s]),this.$=[a[s-1]].concat(a[s]);break;case 33:r.getLogger().debug(`Rule: nodeShapeNLabel: `,a[s-2],a[s-1],a[s]),this.$={typeStr:a[s-2]+a[s],label:a[s-1]};break;case 34:r.getLogger().debug(`Rule: BLOCK_ARROW nodeShapeNLabel: `,a[s-3],a[s-2],` #3:`,a[s-1],a[s]),this.$={typeStr:a[s-3]+a[s],label:a[s-2],directions:a[s-1]};break;case 35:case 36:this.$={type:`classDef`,id:a[s-1].trim(),css:a[s].trim()};break;case 37:this.$={type:`applyClass`,id:a[s-1].trim(),styleClass:a[s].trim()};break;case 38:this.$={type:`applyStyles`,id:a[s-1].trim(),stylesStr:a[s].trim()};break}},`anonymous`),table:[{9:1,10:[1,2]},{1:[3]},{10:t,11:3,13:4,19:5,20:6,21:n,22:8,23:9,24:10,25:11,26:12,28:r,29:i,31:a,39:o,43:c,46:l},{8:[1,20]},e(u,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:t,21:n,28:r,29:i,31:a,39:o,43:c,46:l}),e(d,[2,16],{14:22,15:f,16:p}),e(d,[2,17]),e(d,[2,18]),e(d,[2,19]),e(d,[2,20]),e(d,[2,21]),e(d,[2,22]),e(m,[2,25],{27:[1,25]}),e(d,[2,26]),{19:26,26:12,31:a},{10:t,11:27,13:4,19:5,20:6,21:n,22:8,23:9,24:10,25:11,26:12,28:r,29:i,31:a,39:o,43:c,46:l},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},e(h,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},e(u,[2,13]),{26:35,31:a},{31:[2,14]},{17:[1,36]},e(m,[2,24]),{10:t,11:37,13:4,14:22,15:f,16:p,19:5,20:6,21:n,22:8,23:9,24:10,25:11,26:12,28:r,29:i,31:a,39:o,43:c,46:l},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},e(h,[2,30]),{18:[1,43]},{18:[1,44]},e(m,[2,23]),{18:[1,45]},{30:[1,46]},e(d,[2,28]),e(d,[2,35]),e(d,[2,36]),e(d,[2,37]),e(d,[2,38]),{36:[1,47]},{33:48,34:g},{15:[1,50]},e(d,[2,27]),e(h,[2,33]),{38:[1,51]},{33:52,34:g,38:[2,31]},{31:[2,15]},e(h,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:s(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:s(function(e){var t=this,n=[0],r=[],i=[null],a=[],o=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=a.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;a.push(v);var y=h.options&&h.options.ranges;typeof g.yy.parseError==`function`?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function b(e){n.length-=2*e,i.length-=e,a.length-=e}s(b,`popStack`);function x(){var e=r.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(r=e,e=r.pop()),e=t.symbols_[e]||e),e}s(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=n[n.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=o[w]&&o[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],o[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`: `+h.showPosition()+` Expecting `+j.join(`, `)+`, got '`+(this.terminals_[S]||S)+`'`:`Parse error on line `+(l+1)+`: Unexpected `+(S==p?`end of input`:`'`+(this.terminals_[S]||S)+`'`),this.parseError(M,{text:h.match,token:this.terminals_[S]||S,line:h.yylineno,loc:v,expected:j})}if(T[0]instanceof Array&&T.length>1)throw Error(`Parse Error: multiple actions possible at state: `+w+`, token: `+S);switch(T[0]){case 1:n.push(S),i.push(h.yytext),a.push(h.yylloc),n.push(T[1]),S=null,C?(S=C,C=null):(u=h.yyleng,c=h.yytext,l=h.yylineno,v=h.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[T[1]][1],D.$=i[i.length-k],D._$={first_line:a[a.length-(k||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(k||1)].first_column,last_column:a[a.length-1].last_column},y&&(D._$.range=[a[a.length-(k||1)].range[0],a[a.length-1].range[1]]),E=this.performAction.apply(D,[c,u,l,g.yy,T[1],i,a].concat(m)),E!==void 0)return E;k&&(n=n.slice(0,-1*k*2),i=i.slice(0,-1*k),a=a.slice(0,-1*k)),n.push(this.productions_[T[1]][0]),i.push(D.$),a.push(D._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0},`parse`)};_.lexer=(function(){return{EOF:1,parseError:s(function(e,t){if(this.yy.parser)this.yy.parser.parseError(e,t);else throw Error(e)},`parseError`),setInput:s(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=``,this.conditionStack=[`INITIAL`],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},`setInput`),input:s(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},`input`),unput:s(function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},`unput`),more:s(function(){return this._more=!0,this},`more`),reject:s(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(`Lexical error on line `+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:``,token:null,line:this.yylineno});return this},`reject`),less:s(function(e){this.unput(this.match.slice(e))},`less`),pastInput:s(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?`...`:``)+e.substr(-20).replace(/\n/g,``)},`pastInput`),upcomingInput:s(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?`...`:``)).replace(/\n/g,``)},`upcomingInput`),showPosition:s(function(){var e=this.pastInput(),t=Array(e.length+1).join(`-`);return e+this.upcomingInput()+` diff --git a/ksadk/server/static/assets/c4Diagram-UCG6FXSJ-Dk_ieq2X.js b/ksadk/server/static/assets/c4Diagram-UCG6FXSJ-zrSgZM44.js similarity index 99% rename from ksadk/server/static/assets/c4Diagram-UCG6FXSJ-Dk_ieq2X.js rename to ksadk/server/static/assets/c4Diagram-UCG6FXSJ-zrSgZM44.js index 46321f1a..5d95867f 100644 --- a/ksadk/server/static/assets/c4Diagram-UCG6FXSJ-Dk_ieq2X.js +++ b/ksadk/server/static/assets/c4Diagram-UCG6FXSJ-zrSgZM44.js @@ -1,4 +1,4 @@ -import{a as e}from"./chunk-F27PBJKO-C-ipQzuS.js";import{Dt as t,Ft as n,Ir as r,It as i,Nr as a,Qn as o,Wt as s,Zn as l,br as u,lr as d,nr as f,or as p,rr as m,sr as h,vr as g,yr as _}from"./MermaidBlock-Dz4IP-Tx.js";var v=(function(){var e=r(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,24],n=[1,25],i=[1,26],a=[1,27],o=[1,28],s=[1,63],l=[1,64],u=[1,65],d=[1,66],f=[1,67],p=[1,68],m=[1,69],h=[1,29],g=[1,30],_=[1,31],v=[1,32],y=[1,33],b=[1,34],x=[1,35],S=[1,36],C=[1,37],w=[1,38],T=[1,39],E=[1,40],D=[1,41],O=[1,42],k=[1,43],A=[1,44],j=[1,45],M=[1,46],N=[1,47],P=[1,48],F=[1,50],I=[1,51],L=[1,52],R=[1,53],z=[1,54],B=[1,55],V=[1,56],H=[1,57],U=[1,58],W=[1,59],G=[1,60],ee=[14,42],te=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],ne=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],K=[1,82],q=[1,83],J=[1,84],Y=[1,85],X=[12,14,42],re=[12,14,33,42],ie=[12,14,33,42,76,77,79,80],ae=[12,33],oe=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],se={trace:r(function(){},`trace`),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:`error`,6:`direction_tb`,7:`direction_bt`,8:`direction_rl`,9:`direction_lr`,11:`C4_CONTEXT`,12:`NEWLINE`,14:`EOF`,15:`C4_CONTAINER`,16:`C4_COMPONENT`,17:`C4_DYNAMIC`,18:`C4_DEPLOYMENT`,22:`title`,23:`accDescription`,24:`acc_title`,25:`acc_title_value`,26:`acc_descr`,27:`acc_descr_value`,28:`acc_descr_multiline_value`,33:`LBRACE`,34:`ENTERPRISE_BOUNDARY`,36:`SYSTEM_BOUNDARY`,37:`BOUNDARY`,38:`CONTAINER_BOUNDARY`,39:`NODE`,40:`NODE_L`,41:`NODE_R`,42:`RBRACE`,44:`PERSON`,45:`PERSON_EXT`,46:`SYSTEM`,47:`SYSTEM_DB`,48:`SYSTEM_QUEUE`,49:`SYSTEM_EXT`,50:`SYSTEM_EXT_DB`,51:`SYSTEM_EXT_QUEUE`,52:`CONTAINER`,53:`CONTAINER_DB`,54:`CONTAINER_QUEUE`,55:`CONTAINER_EXT`,56:`CONTAINER_EXT_DB`,57:`CONTAINER_EXT_QUEUE`,58:`COMPONENT`,59:`COMPONENT_DB`,60:`COMPONENT_QUEUE`,61:`COMPONENT_EXT`,62:`COMPONENT_EXT_DB`,63:`COMPONENT_EXT_QUEUE`,64:`REL`,65:`BIREL`,66:`REL_U`,67:`REL_D`,68:`REL_L`,69:`REL_R`,70:`REL_B`,71:`REL_INDEX`,72:`UPDATE_EL_STYLE`,73:`UPDATE_REL_STYLE`,74:`UPDATE_LAYOUT_CONFIG`,76:`STR`,77:`STR_KEY`,78:`STR_VALUE`,79:`ATTRIBUTE`,80:`ATTRIBUTE_EMPTY`},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:r(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 3:r.setDirection(`TB`);break;case 4:r.setDirection(`BT`);break;case 5:r.setDirection(`RL`);break;case 6:r.setDirection(`LR`);break;case 8:case 9:case 10:case 11:case 12:r.setC4Type(a[s-3]);break;case 19:r.setTitle(a[s].substring(6)),this.$=a[s].substring(6);break;case 20:r.setAccDescription(a[s].substring(15)),this.$=a[s].substring(15);break;case 21:this.$=a[s].trim(),r.setTitle(this.$);break;case 22:case 23:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 28:a[s].splice(2,0,`ENTERPRISE`),r.addPersonOrSystemBoundary(...a[s]),this.$=a[s];break;case 29:a[s].splice(2,0,`SYSTEM`),r.addPersonOrSystemBoundary(...a[s]),this.$=a[s];break;case 30:r.addPersonOrSystemBoundary(...a[s]),this.$=a[s];break;case 31:a[s].splice(2,0,`CONTAINER`),r.addContainerBoundary(...a[s]),this.$=a[s];break;case 32:r.addDeploymentNode(`node`,...a[s]),this.$=a[s];break;case 33:r.addDeploymentNode(`nodeL`,...a[s]),this.$=a[s];break;case 34:r.addDeploymentNode(`nodeR`,...a[s]),this.$=a[s];break;case 35:r.popBoundaryParseStack();break;case 39:r.addPersonOrSystem(`person`,...a[s]),this.$=a[s];break;case 40:r.addPersonOrSystem(`external_person`,...a[s]),this.$=a[s];break;case 41:r.addPersonOrSystem(`system`,...a[s]),this.$=a[s];break;case 42:r.addPersonOrSystem(`system_db`,...a[s]),this.$=a[s];break;case 43:r.addPersonOrSystem(`system_queue`,...a[s]),this.$=a[s];break;case 44:r.addPersonOrSystem(`external_system`,...a[s]),this.$=a[s];break;case 45:r.addPersonOrSystem(`external_system_db`,...a[s]),this.$=a[s];break;case 46:r.addPersonOrSystem(`external_system_queue`,...a[s]),this.$=a[s];break;case 47:r.addContainer(`container`,...a[s]),this.$=a[s];break;case 48:r.addContainer(`container_db`,...a[s]),this.$=a[s];break;case 49:r.addContainer(`container_queue`,...a[s]),this.$=a[s];break;case 50:r.addContainer(`external_container`,...a[s]),this.$=a[s];break;case 51:r.addContainer(`external_container_db`,...a[s]),this.$=a[s];break;case 52:r.addContainer(`external_container_queue`,...a[s]),this.$=a[s];break;case 53:r.addComponent(`component`,...a[s]),this.$=a[s];break;case 54:r.addComponent(`component_db`,...a[s]),this.$=a[s];break;case 55:r.addComponent(`component_queue`,...a[s]),this.$=a[s];break;case 56:r.addComponent(`external_component`,...a[s]),this.$=a[s];break;case 57:r.addComponent(`external_component_db`,...a[s]),this.$=a[s];break;case 58:r.addComponent(`external_component_queue`,...a[s]),this.$=a[s];break;case 60:r.addRel(`rel`,...a[s]),this.$=a[s];break;case 61:r.addRel(`birel`,...a[s]),this.$=a[s];break;case 62:r.addRel(`rel_u`,...a[s]),this.$=a[s];break;case 63:r.addRel(`rel_d`,...a[s]),this.$=a[s];break;case 64:r.addRel(`rel_l`,...a[s]),this.$=a[s];break;case 65:r.addRel(`rel_r`,...a[s]),this.$=a[s];break;case 66:r.addRel(`rel_b`,...a[s]),this.$=a[s];break;case 67:a[s].splice(0,1),r.addRel(`rel`,...a[s]),this.$=a[s];break;case 68:r.updateElStyle(`update_el_style`,...a[s]),this.$=a[s];break;case 69:r.updateRelStyle(`update_rel_style`,...a[s]),this.$=a[s];break;case 70:r.updateLayoutConfig(`update_layout_config`,...a[s]),this.$=a[s];break;case 71:this.$=[a[s]];break;case 72:a[s].unshift(a[s-1]),this.$=a[s];break;case 73:case 75:this.$=a[s].trim();break;case 74:let e={};e[a[s-1].trim()]=a[s].trim(),this.$=e;break;case 76:this.$=``;break}},`anonymous`),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:t,23:n,24:i,26:a,28:o,29:49,30:61,32:62,34:s,36:l,37:u,38:d,39:f,40:p,41:m,43:23,44:h,45:g,46:_,47:v,48:y,49:b,50:x,51:S,52:C,53:w,54:T,55:E,56:D,57:O,58:k,59:A,60:j,61:M,62:N,63:P,64:F,65:I,66:L,67:R,68:z,69:B,70:V,71:H,72:U,73:W,74:G},{13:70,19:20,20:21,21:22,22:t,23:n,24:i,26:a,28:o,29:49,30:61,32:62,34:s,36:l,37:u,38:d,39:f,40:p,41:m,43:23,44:h,45:g,46:_,47:v,48:y,49:b,50:x,51:S,52:C,53:w,54:T,55:E,56:D,57:O,58:k,59:A,60:j,61:M,62:N,63:P,64:F,65:I,66:L,67:R,68:z,69:B,70:V,71:H,72:U,73:W,74:G},{13:71,19:20,20:21,21:22,22:t,23:n,24:i,26:a,28:o,29:49,30:61,32:62,34:s,36:l,37:u,38:d,39:f,40:p,41:m,43:23,44:h,45:g,46:_,47:v,48:y,49:b,50:x,51:S,52:C,53:w,54:T,55:E,56:D,57:O,58:k,59:A,60:j,61:M,62:N,63:P,64:F,65:I,66:L,67:R,68:z,69:B,70:V,71:H,72:U,73:W,74:G},{13:72,19:20,20:21,21:22,22:t,23:n,24:i,26:a,28:o,29:49,30:61,32:62,34:s,36:l,37:u,38:d,39:f,40:p,41:m,43:23,44:h,45:g,46:_,47:v,48:y,49:b,50:x,51:S,52:C,53:w,54:T,55:E,56:D,57:O,58:k,59:A,60:j,61:M,62:N,63:P,64:F,65:I,66:L,67:R,68:z,69:B,70:V,71:H,72:U,73:W,74:G},{13:73,19:20,20:21,21:22,22:t,23:n,24:i,26:a,28:o,29:49,30:61,32:62,34:s,36:l,37:u,38:d,39:f,40:p,41:m,43:23,44:h,45:g,46:_,47:v,48:y,49:b,50:x,51:S,52:C,53:w,54:T,55:E,56:D,57:O,58:k,59:A,60:j,61:M,62:N,63:P,64:F,65:I,66:L,67:R,68:z,69:B,70:V,71:H,72:U,73:W,74:G},{14:[1,74]},e(ee,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:l,37:u,38:d,39:f,40:p,41:m,44:h,45:g,46:_,47:v,48:y,49:b,50:x,51:S,52:C,53:w,54:T,55:E,56:D,57:O,58:k,59:A,60:j,61:M,62:N,63:P,64:F,65:I,66:L,67:R,68:z,69:B,70:V,71:H,72:U,73:W,74:G}),e(ee,[2,14]),e(te,[2,16],{12:[1,76]}),e(ee,[2,36],{12:[1,77]}),e(ne,[2,19]),e(ne,[2,20]),{25:[1,78]},{27:[1,79]},e(ne,[2,23]),{35:80,75:81,76:K,77:q,79:J,80:Y},{35:86,75:81,76:K,77:q,79:J,80:Y},{35:87,75:81,76:K,77:q,79:J,80:Y},{35:88,75:81,76:K,77:q,79:J,80:Y},{35:89,75:81,76:K,77:q,79:J,80:Y},{35:90,75:81,76:K,77:q,79:J,80:Y},{35:91,75:81,76:K,77:q,79:J,80:Y},{35:92,75:81,76:K,77:q,79:J,80:Y},{35:93,75:81,76:K,77:q,79:J,80:Y},{35:94,75:81,76:K,77:q,79:J,80:Y},{35:95,75:81,76:K,77:q,79:J,80:Y},{35:96,75:81,76:K,77:q,79:J,80:Y},{35:97,75:81,76:K,77:q,79:J,80:Y},{35:98,75:81,76:K,77:q,79:J,80:Y},{35:99,75:81,76:K,77:q,79:J,80:Y},{35:100,75:81,76:K,77:q,79:J,80:Y},{35:101,75:81,76:K,77:q,79:J,80:Y},{35:102,75:81,76:K,77:q,79:J,80:Y},{35:103,75:81,76:K,77:q,79:J,80:Y},{35:104,75:81,76:K,77:q,79:J,80:Y},e(X,[2,59]),{35:105,75:81,76:K,77:q,79:J,80:Y},{35:106,75:81,76:K,77:q,79:J,80:Y},{35:107,75:81,76:K,77:q,79:J,80:Y},{35:108,75:81,76:K,77:q,79:J,80:Y},{35:109,75:81,76:K,77:q,79:J,80:Y},{35:110,75:81,76:K,77:q,79:J,80:Y},{35:111,75:81,76:K,77:q,79:J,80:Y},{35:112,75:81,76:K,77:q,79:J,80:Y},{35:113,75:81,76:K,77:q,79:J,80:Y},{35:114,75:81,76:K,77:q,79:J,80:Y},{35:115,75:81,76:K,77:q,79:J,80:Y},{20:116,29:49,30:61,32:62,34:s,36:l,37:u,38:d,39:f,40:p,41:m,43:23,44:h,45:g,46:_,47:v,48:y,49:b,50:x,51:S,52:C,53:w,54:T,55:E,56:D,57:O,58:k,59:A,60:j,61:M,62:N,63:P,64:F,65:I,66:L,67:R,68:z,69:B,70:V,71:H,72:U,73:W,74:G},{12:[1,118],33:[1,117]},{35:119,75:81,76:K,77:q,79:J,80:Y},{35:120,75:81,76:K,77:q,79:J,80:Y},{35:121,75:81,76:K,77:q,79:J,80:Y},{35:122,75:81,76:K,77:q,79:J,80:Y},{35:123,75:81,76:K,77:q,79:J,80:Y},{35:124,75:81,76:K,77:q,79:J,80:Y},{35:125,75:81,76:K,77:q,79:J,80:Y},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},e(ee,[2,15]),e(te,[2,17],{21:22,19:130,22:t,23:n,24:i,26:a,28:o}),e(ee,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:t,23:n,24:i,26:a,28:o,34:s,36:l,37:u,38:d,39:f,40:p,41:m,44:h,45:g,46:_,47:v,48:y,49:b,50:x,51:S,52:C,53:w,54:T,55:E,56:D,57:O,58:k,59:A,60:j,61:M,62:N,63:P,64:F,65:I,66:L,67:R,68:z,69:B,70:V,71:H,72:U,73:W,74:G}),e(ne,[2,21]),e(ne,[2,22]),e(X,[2,39]),e(re,[2,71],{75:81,35:132,76:K,77:q,79:J,80:Y}),e(ie,[2,73]),{78:[1,133]},e(ie,[2,75]),e(ie,[2,76]),e(X,[2,40]),e(X,[2,41]),e(X,[2,42]),e(X,[2,43]),e(X,[2,44]),e(X,[2,45]),e(X,[2,46]),e(X,[2,47]),e(X,[2,48]),e(X,[2,49]),e(X,[2,50]),e(X,[2,51]),e(X,[2,52]),e(X,[2,53]),e(X,[2,54]),e(X,[2,55]),e(X,[2,56]),e(X,[2,57]),e(X,[2,58]),e(X,[2,60]),e(X,[2,61]),e(X,[2,62]),e(X,[2,63]),e(X,[2,64]),e(X,[2,65]),e(X,[2,66]),e(X,[2,67]),e(X,[2,68]),e(X,[2,69]),e(X,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},e(ae,[2,28]),e(ae,[2,29]),e(ae,[2,30]),e(ae,[2,31]),e(ae,[2,32]),e(ae,[2,33]),e(ae,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},e(te,[2,18]),e(ee,[2,38]),e(re,[2,72]),e(ie,[2,74]),e(X,[2,24]),e(X,[2,35]),e(oe,[2,25]),e(oe,[2,26],{12:[1,138]}),e(oe,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:r(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:r(function(e){var t=this,n=[0],i=[],a=[null],o=[],s=this.table,l=``,u=0,d=0,f=0,p=2,m=1,h=o.slice.call(arguments,1),g=Object.create(this.lexer),_={yy:{}};for(var v in this.yy)Object.prototype.hasOwnProperty.call(this.yy,v)&&(_.yy[v]=this.yy[v]);g.setInput(e,_.yy),_.yy.lexer=g,_.yy.parser=this,g.yylloc===void 0&&(g.yylloc={});var y=g.yylloc;o.push(y);var b=g.options&&g.options.ranges;typeof _.yy.parseError==`function`?this.parseError=_.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function x(e){n.length-=2*e,a.length-=e,o.length-=e}r(x,`popStack`);function S(){var e=i.pop()||g.lex()||m;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=t.symbols_[e]||e),e}r(S,`lex`);for(var C,w,T,E,D,O={},k,A,j,M;;){if(T=n[n.length-1],this.defaultActions[T]?E=this.defaultActions[T]:(C??=S(),E=s[T]&&s[T][C]),E===void 0||!E.length||!E[0]){var N=``;for(k in M=[],s[T])this.terminals_[k]&&k>p&&M.push(`'`+this.terminals_[k]+`'`);N=g.showPosition?`Parse error on line `+(u+1)+`: +import{a as e}from"./chunk-F27PBJKO-DNUQP5bs.js";import{Dt as t,Ft as n,Ir as r,It as i,Nr as a,Qn as o,Wt as s,Zn as l,br as u,lr as d,nr as f,or as p,rr as m,sr as h,vr as g,yr as _}from"./MermaidBlock-CI9NjqQx.js";var v=(function(){var e=r(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,24],n=[1,25],i=[1,26],a=[1,27],o=[1,28],s=[1,63],l=[1,64],u=[1,65],d=[1,66],f=[1,67],p=[1,68],m=[1,69],h=[1,29],g=[1,30],_=[1,31],v=[1,32],y=[1,33],b=[1,34],x=[1,35],S=[1,36],C=[1,37],w=[1,38],T=[1,39],E=[1,40],D=[1,41],O=[1,42],k=[1,43],A=[1,44],j=[1,45],M=[1,46],N=[1,47],P=[1,48],F=[1,50],I=[1,51],L=[1,52],R=[1,53],z=[1,54],B=[1,55],V=[1,56],H=[1,57],U=[1,58],W=[1,59],G=[1,60],ee=[14,42],te=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],ne=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],K=[1,82],q=[1,83],J=[1,84],Y=[1,85],X=[12,14,42],re=[12,14,33,42],ie=[12,14,33,42,76,77,79,80],ae=[12,33],oe=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],se={trace:r(function(){},`trace`),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:`error`,6:`direction_tb`,7:`direction_bt`,8:`direction_rl`,9:`direction_lr`,11:`C4_CONTEXT`,12:`NEWLINE`,14:`EOF`,15:`C4_CONTAINER`,16:`C4_COMPONENT`,17:`C4_DYNAMIC`,18:`C4_DEPLOYMENT`,22:`title`,23:`accDescription`,24:`acc_title`,25:`acc_title_value`,26:`acc_descr`,27:`acc_descr_value`,28:`acc_descr_multiline_value`,33:`LBRACE`,34:`ENTERPRISE_BOUNDARY`,36:`SYSTEM_BOUNDARY`,37:`BOUNDARY`,38:`CONTAINER_BOUNDARY`,39:`NODE`,40:`NODE_L`,41:`NODE_R`,42:`RBRACE`,44:`PERSON`,45:`PERSON_EXT`,46:`SYSTEM`,47:`SYSTEM_DB`,48:`SYSTEM_QUEUE`,49:`SYSTEM_EXT`,50:`SYSTEM_EXT_DB`,51:`SYSTEM_EXT_QUEUE`,52:`CONTAINER`,53:`CONTAINER_DB`,54:`CONTAINER_QUEUE`,55:`CONTAINER_EXT`,56:`CONTAINER_EXT_DB`,57:`CONTAINER_EXT_QUEUE`,58:`COMPONENT`,59:`COMPONENT_DB`,60:`COMPONENT_QUEUE`,61:`COMPONENT_EXT`,62:`COMPONENT_EXT_DB`,63:`COMPONENT_EXT_QUEUE`,64:`REL`,65:`BIREL`,66:`REL_U`,67:`REL_D`,68:`REL_L`,69:`REL_R`,70:`REL_B`,71:`REL_INDEX`,72:`UPDATE_EL_STYLE`,73:`UPDATE_REL_STYLE`,74:`UPDATE_LAYOUT_CONFIG`,76:`STR`,77:`STR_KEY`,78:`STR_VALUE`,79:`ATTRIBUTE`,80:`ATTRIBUTE_EMPTY`},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:r(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 3:r.setDirection(`TB`);break;case 4:r.setDirection(`BT`);break;case 5:r.setDirection(`RL`);break;case 6:r.setDirection(`LR`);break;case 8:case 9:case 10:case 11:case 12:r.setC4Type(a[s-3]);break;case 19:r.setTitle(a[s].substring(6)),this.$=a[s].substring(6);break;case 20:r.setAccDescription(a[s].substring(15)),this.$=a[s].substring(15);break;case 21:this.$=a[s].trim(),r.setTitle(this.$);break;case 22:case 23:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 28:a[s].splice(2,0,`ENTERPRISE`),r.addPersonOrSystemBoundary(...a[s]),this.$=a[s];break;case 29:a[s].splice(2,0,`SYSTEM`),r.addPersonOrSystemBoundary(...a[s]),this.$=a[s];break;case 30:r.addPersonOrSystemBoundary(...a[s]),this.$=a[s];break;case 31:a[s].splice(2,0,`CONTAINER`),r.addContainerBoundary(...a[s]),this.$=a[s];break;case 32:r.addDeploymentNode(`node`,...a[s]),this.$=a[s];break;case 33:r.addDeploymentNode(`nodeL`,...a[s]),this.$=a[s];break;case 34:r.addDeploymentNode(`nodeR`,...a[s]),this.$=a[s];break;case 35:r.popBoundaryParseStack();break;case 39:r.addPersonOrSystem(`person`,...a[s]),this.$=a[s];break;case 40:r.addPersonOrSystem(`external_person`,...a[s]),this.$=a[s];break;case 41:r.addPersonOrSystem(`system`,...a[s]),this.$=a[s];break;case 42:r.addPersonOrSystem(`system_db`,...a[s]),this.$=a[s];break;case 43:r.addPersonOrSystem(`system_queue`,...a[s]),this.$=a[s];break;case 44:r.addPersonOrSystem(`external_system`,...a[s]),this.$=a[s];break;case 45:r.addPersonOrSystem(`external_system_db`,...a[s]),this.$=a[s];break;case 46:r.addPersonOrSystem(`external_system_queue`,...a[s]),this.$=a[s];break;case 47:r.addContainer(`container`,...a[s]),this.$=a[s];break;case 48:r.addContainer(`container_db`,...a[s]),this.$=a[s];break;case 49:r.addContainer(`container_queue`,...a[s]),this.$=a[s];break;case 50:r.addContainer(`external_container`,...a[s]),this.$=a[s];break;case 51:r.addContainer(`external_container_db`,...a[s]),this.$=a[s];break;case 52:r.addContainer(`external_container_queue`,...a[s]),this.$=a[s];break;case 53:r.addComponent(`component`,...a[s]),this.$=a[s];break;case 54:r.addComponent(`component_db`,...a[s]),this.$=a[s];break;case 55:r.addComponent(`component_queue`,...a[s]),this.$=a[s];break;case 56:r.addComponent(`external_component`,...a[s]),this.$=a[s];break;case 57:r.addComponent(`external_component_db`,...a[s]),this.$=a[s];break;case 58:r.addComponent(`external_component_queue`,...a[s]),this.$=a[s];break;case 60:r.addRel(`rel`,...a[s]),this.$=a[s];break;case 61:r.addRel(`birel`,...a[s]),this.$=a[s];break;case 62:r.addRel(`rel_u`,...a[s]),this.$=a[s];break;case 63:r.addRel(`rel_d`,...a[s]),this.$=a[s];break;case 64:r.addRel(`rel_l`,...a[s]),this.$=a[s];break;case 65:r.addRel(`rel_r`,...a[s]),this.$=a[s];break;case 66:r.addRel(`rel_b`,...a[s]),this.$=a[s];break;case 67:a[s].splice(0,1),r.addRel(`rel`,...a[s]),this.$=a[s];break;case 68:r.updateElStyle(`update_el_style`,...a[s]),this.$=a[s];break;case 69:r.updateRelStyle(`update_rel_style`,...a[s]),this.$=a[s];break;case 70:r.updateLayoutConfig(`update_layout_config`,...a[s]),this.$=a[s];break;case 71:this.$=[a[s]];break;case 72:a[s].unshift(a[s-1]),this.$=a[s];break;case 73:case 75:this.$=a[s].trim();break;case 74:let e={};e[a[s-1].trim()]=a[s].trim(),this.$=e;break;case 76:this.$=``;break}},`anonymous`),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:t,23:n,24:i,26:a,28:o,29:49,30:61,32:62,34:s,36:l,37:u,38:d,39:f,40:p,41:m,43:23,44:h,45:g,46:_,47:v,48:y,49:b,50:x,51:S,52:C,53:w,54:T,55:E,56:D,57:O,58:k,59:A,60:j,61:M,62:N,63:P,64:F,65:I,66:L,67:R,68:z,69:B,70:V,71:H,72:U,73:W,74:G},{13:70,19:20,20:21,21:22,22:t,23:n,24:i,26:a,28:o,29:49,30:61,32:62,34:s,36:l,37:u,38:d,39:f,40:p,41:m,43:23,44:h,45:g,46:_,47:v,48:y,49:b,50:x,51:S,52:C,53:w,54:T,55:E,56:D,57:O,58:k,59:A,60:j,61:M,62:N,63:P,64:F,65:I,66:L,67:R,68:z,69:B,70:V,71:H,72:U,73:W,74:G},{13:71,19:20,20:21,21:22,22:t,23:n,24:i,26:a,28:o,29:49,30:61,32:62,34:s,36:l,37:u,38:d,39:f,40:p,41:m,43:23,44:h,45:g,46:_,47:v,48:y,49:b,50:x,51:S,52:C,53:w,54:T,55:E,56:D,57:O,58:k,59:A,60:j,61:M,62:N,63:P,64:F,65:I,66:L,67:R,68:z,69:B,70:V,71:H,72:U,73:W,74:G},{13:72,19:20,20:21,21:22,22:t,23:n,24:i,26:a,28:o,29:49,30:61,32:62,34:s,36:l,37:u,38:d,39:f,40:p,41:m,43:23,44:h,45:g,46:_,47:v,48:y,49:b,50:x,51:S,52:C,53:w,54:T,55:E,56:D,57:O,58:k,59:A,60:j,61:M,62:N,63:P,64:F,65:I,66:L,67:R,68:z,69:B,70:V,71:H,72:U,73:W,74:G},{13:73,19:20,20:21,21:22,22:t,23:n,24:i,26:a,28:o,29:49,30:61,32:62,34:s,36:l,37:u,38:d,39:f,40:p,41:m,43:23,44:h,45:g,46:_,47:v,48:y,49:b,50:x,51:S,52:C,53:w,54:T,55:E,56:D,57:O,58:k,59:A,60:j,61:M,62:N,63:P,64:F,65:I,66:L,67:R,68:z,69:B,70:V,71:H,72:U,73:W,74:G},{14:[1,74]},e(ee,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:l,37:u,38:d,39:f,40:p,41:m,44:h,45:g,46:_,47:v,48:y,49:b,50:x,51:S,52:C,53:w,54:T,55:E,56:D,57:O,58:k,59:A,60:j,61:M,62:N,63:P,64:F,65:I,66:L,67:R,68:z,69:B,70:V,71:H,72:U,73:W,74:G}),e(ee,[2,14]),e(te,[2,16],{12:[1,76]}),e(ee,[2,36],{12:[1,77]}),e(ne,[2,19]),e(ne,[2,20]),{25:[1,78]},{27:[1,79]},e(ne,[2,23]),{35:80,75:81,76:K,77:q,79:J,80:Y},{35:86,75:81,76:K,77:q,79:J,80:Y},{35:87,75:81,76:K,77:q,79:J,80:Y},{35:88,75:81,76:K,77:q,79:J,80:Y},{35:89,75:81,76:K,77:q,79:J,80:Y},{35:90,75:81,76:K,77:q,79:J,80:Y},{35:91,75:81,76:K,77:q,79:J,80:Y},{35:92,75:81,76:K,77:q,79:J,80:Y},{35:93,75:81,76:K,77:q,79:J,80:Y},{35:94,75:81,76:K,77:q,79:J,80:Y},{35:95,75:81,76:K,77:q,79:J,80:Y},{35:96,75:81,76:K,77:q,79:J,80:Y},{35:97,75:81,76:K,77:q,79:J,80:Y},{35:98,75:81,76:K,77:q,79:J,80:Y},{35:99,75:81,76:K,77:q,79:J,80:Y},{35:100,75:81,76:K,77:q,79:J,80:Y},{35:101,75:81,76:K,77:q,79:J,80:Y},{35:102,75:81,76:K,77:q,79:J,80:Y},{35:103,75:81,76:K,77:q,79:J,80:Y},{35:104,75:81,76:K,77:q,79:J,80:Y},e(X,[2,59]),{35:105,75:81,76:K,77:q,79:J,80:Y},{35:106,75:81,76:K,77:q,79:J,80:Y},{35:107,75:81,76:K,77:q,79:J,80:Y},{35:108,75:81,76:K,77:q,79:J,80:Y},{35:109,75:81,76:K,77:q,79:J,80:Y},{35:110,75:81,76:K,77:q,79:J,80:Y},{35:111,75:81,76:K,77:q,79:J,80:Y},{35:112,75:81,76:K,77:q,79:J,80:Y},{35:113,75:81,76:K,77:q,79:J,80:Y},{35:114,75:81,76:K,77:q,79:J,80:Y},{35:115,75:81,76:K,77:q,79:J,80:Y},{20:116,29:49,30:61,32:62,34:s,36:l,37:u,38:d,39:f,40:p,41:m,43:23,44:h,45:g,46:_,47:v,48:y,49:b,50:x,51:S,52:C,53:w,54:T,55:E,56:D,57:O,58:k,59:A,60:j,61:M,62:N,63:P,64:F,65:I,66:L,67:R,68:z,69:B,70:V,71:H,72:U,73:W,74:G},{12:[1,118],33:[1,117]},{35:119,75:81,76:K,77:q,79:J,80:Y},{35:120,75:81,76:K,77:q,79:J,80:Y},{35:121,75:81,76:K,77:q,79:J,80:Y},{35:122,75:81,76:K,77:q,79:J,80:Y},{35:123,75:81,76:K,77:q,79:J,80:Y},{35:124,75:81,76:K,77:q,79:J,80:Y},{35:125,75:81,76:K,77:q,79:J,80:Y},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},e(ee,[2,15]),e(te,[2,17],{21:22,19:130,22:t,23:n,24:i,26:a,28:o}),e(ee,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:t,23:n,24:i,26:a,28:o,34:s,36:l,37:u,38:d,39:f,40:p,41:m,44:h,45:g,46:_,47:v,48:y,49:b,50:x,51:S,52:C,53:w,54:T,55:E,56:D,57:O,58:k,59:A,60:j,61:M,62:N,63:P,64:F,65:I,66:L,67:R,68:z,69:B,70:V,71:H,72:U,73:W,74:G}),e(ne,[2,21]),e(ne,[2,22]),e(X,[2,39]),e(re,[2,71],{75:81,35:132,76:K,77:q,79:J,80:Y}),e(ie,[2,73]),{78:[1,133]},e(ie,[2,75]),e(ie,[2,76]),e(X,[2,40]),e(X,[2,41]),e(X,[2,42]),e(X,[2,43]),e(X,[2,44]),e(X,[2,45]),e(X,[2,46]),e(X,[2,47]),e(X,[2,48]),e(X,[2,49]),e(X,[2,50]),e(X,[2,51]),e(X,[2,52]),e(X,[2,53]),e(X,[2,54]),e(X,[2,55]),e(X,[2,56]),e(X,[2,57]),e(X,[2,58]),e(X,[2,60]),e(X,[2,61]),e(X,[2,62]),e(X,[2,63]),e(X,[2,64]),e(X,[2,65]),e(X,[2,66]),e(X,[2,67]),e(X,[2,68]),e(X,[2,69]),e(X,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},e(ae,[2,28]),e(ae,[2,29]),e(ae,[2,30]),e(ae,[2,31]),e(ae,[2,32]),e(ae,[2,33]),e(ae,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},e(te,[2,18]),e(ee,[2,38]),e(re,[2,72]),e(ie,[2,74]),e(X,[2,24]),e(X,[2,35]),e(oe,[2,25]),e(oe,[2,26],{12:[1,138]}),e(oe,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:r(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:r(function(e){var t=this,n=[0],i=[],a=[null],o=[],s=this.table,l=``,u=0,d=0,f=0,p=2,m=1,h=o.slice.call(arguments,1),g=Object.create(this.lexer),_={yy:{}};for(var v in this.yy)Object.prototype.hasOwnProperty.call(this.yy,v)&&(_.yy[v]=this.yy[v]);g.setInput(e,_.yy),_.yy.lexer=g,_.yy.parser=this,g.yylloc===void 0&&(g.yylloc={});var y=g.yylloc;o.push(y);var b=g.options&&g.options.ranges;typeof _.yy.parseError==`function`?this.parseError=_.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function x(e){n.length-=2*e,a.length-=e,o.length-=e}r(x,`popStack`);function S(){var e=i.pop()||g.lex()||m;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=t.symbols_[e]||e),e}r(S,`lex`);for(var C,w,T,E,D,O={},k,A,j,M;;){if(T=n[n.length-1],this.defaultActions[T]?E=this.defaultActions[T]:(C??=S(),E=s[T]&&s[T][C]),E===void 0||!E.length||!E[0]){var N=``;for(k in M=[],s[T])this.terminals_[k]&&k>p&&M.push(`'`+this.terminals_[k]+`'`);N=g.showPosition?`Parse error on line `+(u+1)+`: `+g.showPosition()+` Expecting `+M.join(`, `)+`, got '`+(this.terminals_[C]||C)+`'`:`Parse error on line `+(u+1)+`: Unexpected `+(C==m?`end of input`:`'`+(this.terminals_[C]||C)+`'`),this.parseError(N,{text:g.match,token:this.terminals_[C]||C,line:g.yylineno,loc:y,expected:M})}if(E[0]instanceof Array&&E.length>1)throw Error(`Parse Error: multiple actions possible at state: `+T+`, token: `+C);switch(E[0]){case 1:n.push(C),a.push(g.yytext),o.push(g.yylloc),n.push(E[1]),C=null,w?(C=w,w=null):(d=g.yyleng,l=g.yytext,u=g.yylineno,y=g.yylloc,f>0&&f--);break;case 2:if(A=this.productions_[E[1]][1],O.$=a[a.length-A],O._$={first_line:o[o.length-(A||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(A||1)].first_column,last_column:o[o.length-1].last_column},b&&(O._$.range=[o[o.length-(A||1)].range[0],o[o.length-1].range[1]]),D=this.performAction.apply(O,[l,d,u,_.yy,E[1],a,o].concat(h)),D!==void 0)return D;A&&(n=n.slice(0,-1*A*2),a=a.slice(0,-1*A),o=o.slice(0,-1*A)),n.push(this.productions_[E[1]][0]),a.push(O.$),o.push(O._$),j=s[n[n.length-2]][n[n.length-1]],n.push(j);break;case 3:return!0}}return!0},`parse`)};se.lexer=(function(){return{EOF:1,parseError:r(function(e,t){if(this.yy.parser)this.yy.parser.parseError(e,t);else throw Error(e)},`parseError`),setInput:r(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=``,this.conditionStack=[`INITIAL`],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},`setInput`),input:r(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},`input`),unput:r(function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},`unput`),more:r(function(){return this._more=!0,this},`more`),reject:r(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(`Lexical error on line `+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:``,token:null,line:this.yylineno});return this},`reject`),less:r(function(e){this.unput(this.match.slice(e))},`less`),pastInput:r(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?`...`:``)+e.substr(-20).replace(/\n/g,``)},`pastInput`),upcomingInput:r(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?`...`:``)).replace(/\n/g,``)},`upcomingInput`),showPosition:r(function(){var e=this.pastInput(),t=Array(e.length+1).join(`-`);return e+this.upcomingInput()+` diff --git a/ksadk/server/static/assets/channel-4cQHKtx1.js b/ksadk/server/static/assets/channel-4cQHKtx1.js deleted file mode 100644 index a5c65da0..00000000 --- a/ksadk/server/static/assets/channel-4cQHKtx1.js +++ /dev/null @@ -1 +0,0 @@ -import{Mr as e,jr as t}from"./MermaidBlock-Dz4IP-Tx.js";var n=(n,r)=>e.lang.round(t.parse(n)[r]);export{n as t}; \ No newline at end of file diff --git a/ksadk/server/static/assets/channel-CdffTTpb.js b/ksadk/server/static/assets/channel-CdffTTpb.js new file mode 100644 index 00000000..1d49197e --- /dev/null +++ b/ksadk/server/static/assets/channel-CdffTTpb.js @@ -0,0 +1 @@ +import{Mr as e,jr as t}from"./MermaidBlock-CI9NjqQx.js";var n=(n,r)=>e.lang.round(t.parse(n)[r]);export{n as t}; \ No newline at end of file diff --git a/ksadk/server/static/assets/chunk-2Q5K7J3B-DmgWkESh.js b/ksadk/server/static/assets/chunk-2Q5K7J3B-B6k89qGR.js similarity index 66% rename from ksadk/server/static/assets/chunk-2Q5K7J3B-DmgWkESh.js rename to ksadk/server/static/assets/chunk-2Q5K7J3B-B6k89qGR.js index 5e70581d..06477d34 100644 --- a/ksadk/server/static/assets/chunk-2Q5K7J3B-DmgWkESh.js +++ b/ksadk/server/static/assets/chunk-2Q5K7J3B-B6k89qGR.js @@ -1 +1 @@ -import{Ir as e}from"./MermaidBlock-Dz4IP-Tx.js";var t=class{constructor(e){this.init=e,this.records=this.init()}static{e(this,`ImperativeState`)}reset(){this.records=this.init()}};export{t}; \ No newline at end of file +import{Ir as e}from"./MermaidBlock-CI9NjqQx.js";var t=class{constructor(e){this.init=e,this.records=this.init()}static{e(this,`ImperativeState`)}reset(){this.records=this.init()}};export{t}; \ No newline at end of file diff --git a/ksadk/server/static/assets/chunk-5VM5RSS4-BVHAchFb.js b/ksadk/server/static/assets/chunk-5VM5RSS4-VZAcej21.js similarity index 82% rename from ksadk/server/static/assets/chunk-5VM5RSS4-BVHAchFb.js rename to ksadk/server/static/assets/chunk-5VM5RSS4-VZAcej21.js index 975f449a..0a9cfe39 100644 --- a/ksadk/server/static/assets/chunk-5VM5RSS4-BVHAchFb.js +++ b/ksadk/server/static/assets/chunk-5VM5RSS4-VZAcej21.js @@ -1,4 +1,4 @@ -import{Ir as e}from"./MermaidBlock-Dz4IP-Tx.js";var t=e(()=>` +import{Ir as e}from"./MermaidBlock-CI9NjqQx.js";var t=e(()=>` /* Font Awesome icon styling - consolidated */ .label-icon { display: inline-block; diff --git a/ksadk/server/static/assets/chunk-F27PBJKO-C-ipQzuS.js b/ksadk/server/static/assets/chunk-F27PBJKO-DNUQP5bs.js similarity index 93% rename from ksadk/server/static/assets/chunk-F27PBJKO-C-ipQzuS.js rename to ksadk/server/static/assets/chunk-F27PBJKO-DNUQP5bs.js index f117719e..fb38bd63 100644 --- a/ksadk/server/static/assets/chunk-F27PBJKO-C-ipQzuS.js +++ b/ksadk/server/static/assets/chunk-F27PBJKO-DNUQP5bs.js @@ -1 +1 @@ -import{Ir as e,Zn as t,gn as n,hr as r}from"./MermaidBlock-Dz4IP-Tx.js";var i=n(),a=e((e,t)=>{let n=e.append(`rect`);if(n.attr(`x`,t.x),n.attr(`y`,t.y),n.attr(`fill`,t.fill),n.attr(`stroke`,t.stroke),n.attr(`width`,t.width),n.attr(`height`,t.height),t.name&&n.attr(`name`,t.name),t.rx&&n.attr(`rx`,t.rx),t.ry&&n.attr(`ry`,t.ry),t.attrs!==void 0)for(let e in t.attrs)n.attr(e,t.attrs[e]);return t.class&&n.attr(`class`,t.class),n},`drawRect`),o=e((e,t)=>{a(e,{x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:`rect`}).lower()},`drawBackgroundRect`),s=e((e,t)=>{let n=t.text.replace(r,` `),i=e.append(`text`);i.attr(`x`,t.x),i.attr(`y`,t.y),i.attr(`class`,`legend`),i.style(`text-anchor`,t.anchor),t.class&&i.attr(`class`,t.class);let a=i.append(`tspan`);return a.attr(`x`,t.x+t.textMargin*2),a.text(n),i},`drawText`),c=e((e,t,n,r)=>{let a=e.append(`image`);a.attr(`x`,t),a.attr(`y`,n);let o=(0,i.sanitizeUrl)(r);a.attr(`xlink:href`,o)},`drawImage`),l=e((e,t,n,r)=>{let a=e.append(`use`);a.attr(`x`,t),a.attr(`y`,n);let o=(0,i.sanitizeUrl)(r);a.attr(`xlink:href`,`#${o}`)},`drawEmbeddedImage`),u=e(()=>({x:0,y:0,width:100,height:100,fill:`#EDF2AE`,stroke:`#666`,anchor:`start`,rx:0,ry:0}),`getNoteRect`),d=e(()=>({x:0,y:0,width:100,height:100,"text-anchor":`start`,style:`#666`,textMargin:0,rx:0,ry:0,tspan:!0}),`getTextObj`),f=e(()=>{let e=t(`.mermaidTooltip`);return e.empty()&&(e=t(`body`).append(`div`).attr(`class`,`mermaidTooltip`).style(`opacity`,0).style(`position`,`absolute`).style(`text-align`,`center`).style(`max-width`,`200px`).style(`padding`,`2px`).style(`font-size`,`12px`).style(`background`,`#ffffde`).style(`border`,`1px solid #333`).style(`border-radius`,`2px`).style(`pointer-events`,`none`).style(`z-index`,`100`)),e},`createTooltip`);export{a,d as c,c as i,o as n,s as o,l as r,u as s,f as t}; \ No newline at end of file +import{Ir as e,Zn as t,gn as n,hr as r}from"./MermaidBlock-CI9NjqQx.js";var i=n(),a=e((e,t)=>{let n=e.append(`rect`);if(n.attr(`x`,t.x),n.attr(`y`,t.y),n.attr(`fill`,t.fill),n.attr(`stroke`,t.stroke),n.attr(`width`,t.width),n.attr(`height`,t.height),t.name&&n.attr(`name`,t.name),t.rx&&n.attr(`rx`,t.rx),t.ry&&n.attr(`ry`,t.ry),t.attrs!==void 0)for(let e in t.attrs)n.attr(e,t.attrs[e]);return t.class&&n.attr(`class`,t.class),n},`drawRect`),o=e((e,t)=>{a(e,{x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:`rect`}).lower()},`drawBackgroundRect`),s=e((e,t)=>{let n=t.text.replace(r,` `),i=e.append(`text`);i.attr(`x`,t.x),i.attr(`y`,t.y),i.attr(`class`,`legend`),i.style(`text-anchor`,t.anchor),t.class&&i.attr(`class`,t.class);let a=i.append(`tspan`);return a.attr(`x`,t.x+t.textMargin*2),a.text(n),i},`drawText`),c=e((e,t,n,r)=>{let a=e.append(`image`);a.attr(`x`,t),a.attr(`y`,n);let o=(0,i.sanitizeUrl)(r);a.attr(`xlink:href`,o)},`drawImage`),l=e((e,t,n,r)=>{let a=e.append(`use`);a.attr(`x`,t),a.attr(`y`,n);let o=(0,i.sanitizeUrl)(r);a.attr(`xlink:href`,`#${o}`)},`drawEmbeddedImage`),u=e(()=>({x:0,y:0,width:100,height:100,fill:`#EDF2AE`,stroke:`#666`,anchor:`start`,rx:0,ry:0}),`getNoteRect`),d=e(()=>({x:0,y:0,width:100,height:100,"text-anchor":`start`,style:`#666`,textMargin:0,rx:0,ry:0,tspan:!0}),`getTextObj`),f=e(()=>{let e=t(`.mermaidTooltip`);return e.empty()&&(e=t(`body`).append(`div`).attr(`class`,`mermaidTooltip`).style(`opacity`,0).style(`position`,`absolute`).style(`text-align`,`center`).style(`max-width`,`200px`).style(`padding`,`2px`).style(`font-size`,`12px`).style(`background`,`#ffffde`).style(`border`,`1px solid #333`).style(`border-radius`,`2px`).style(`pointer-events`,`none`).style(`z-index`,`100`)),e},`createTooltip`);export{a,d as c,c as i,o as n,s as o,l as r,u as s,f as t}; \ No newline at end of file diff --git a/ksadk/server/static/assets/chunk-G27WJ6UU-C2EyJbIK.js b/ksadk/server/static/assets/chunk-G27WJ6UU-BVuLv5Os.js similarity index 99% rename from ksadk/server/static/assets/chunk-G27WJ6UU-C2EyJbIK.js rename to ksadk/server/static/assets/chunk-G27WJ6UU-BVuLv5Os.js index f8189c5e..8fed65b6 100644 --- a/ksadk/server/static/assets/chunk-G27WJ6UU-C2EyJbIK.js +++ b/ksadk/server/static/assets/chunk-G27WJ6UU-BVuLv5Os.js @@ -1,4 +1,4 @@ -import{t as e}from"./chunk-F27PBJKO-C-ipQzuS.js";import{t}from"./chunk-XXDRQBXY-C_32ArgP.js";import{t as n}from"./chunk-POPQ4Y6H-C030x_Z1.js";import{Ir as r,Nr as i,Rt as a,Sr as o,Tr as s,Ut as c,Zn as l,br as u,d,er as f,lr as p,nr as m,or as h,sr as g,ur as _,yr as v}from"./MermaidBlock-Dz4IP-Tx.js";var y=(function(){var e=r(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,2],n=[1,3],i=[1,4],a=[2,4],o=[1,9],s=[1,11],c=[1,16],l=[1,17],u=[1,18],d=[1,19],f=[1,33],p=[1,20],m=[1,21],h=[1,22],g=[1,23],_=[1,24],v=[1,26],y=[1,27],b=[1,28],x=[1,29],S=[1,30],C=[1,31],w=[1,32],T=[1,35],E=[1,36],D=[1,37],O=[1,38],k=[1,34],A=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],j=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],M=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],N={trace:r(function(){},`trace`),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:`error`,4:`SPACE`,5:`NL`,6:`SD`,14:`DESCR`,15:`-->`,16:`HIDE_EMPTY`,17:`scale`,18:`WIDTH`,19:`COMPOSIT_STATE`,20:`STRUCT_START`,21:`STRUCT_STOP`,22:`STATE_DESCR`,23:`AS`,24:`ID`,25:`FORK`,26:`JOIN`,27:`CHOICE`,28:`CONCURRENT`,29:`note`,31:`NOTE_TEXT`,33:`acc_title`,34:`acc_title_value`,35:`acc_descr`,36:`acc_descr_value`,37:`acc_descr_multiline_value`,38:`CLICK`,39:`STRING`,40:`HREF`,41:`classDef`,42:`CLASSDEF_ID`,43:`CLASSDEF_STYLEOPTS`,44:`DEFAULT`,45:`style`,46:`STYLE_IDS`,47:`STYLEDEF_STYLEOPTS`,48:`class`,49:`CLASSENTITY_IDS`,50:`STYLECLASS`,51:`direction_tb`,52:`direction_bt`,53:`direction_rl`,54:`direction_lr`,56:`;`,57:`EDGE_STATE`,58:`STYLE_SEPARATOR`,59:`left_of`,60:`right_of`},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:r(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 3:return r.setRootDoc(a[s]),a[s];case 4:this.$=[];break;case 5:a[s]!=`nl`&&(a[s-1].push(a[s]),this.$=a[s-1]);break;case 6:case 7:this.$=a[s];break;case 8:this.$=`nl`;break;case 12:this.$=a[s];break;case 13:let e=a[s-1];e.description=r.trimColon(a[s]),this.$=e;break;case 14:this.$={stmt:`relation`,state1:a[s-2],state2:a[s]};break;case 15:let t=r.trimColon(a[s]);this.$={stmt:`relation`,state1:a[s-3],state2:a[s-1],description:t};break;case 19:this.$={stmt:`state`,id:a[s-3],type:`default`,description:``,doc:a[s-1]};break;case 20:var c=a[s],l=a[s-2].trim();if(a[s].match(`:`)){var u=a[s].split(`:`);c=u[0],l=[l,u[1]]}this.$={stmt:`state`,id:c,type:`default`,description:l};break;case 21:this.$={stmt:`state`,id:a[s-3],type:`default`,description:a[s-5],doc:a[s-1]};break;case 22:this.$={stmt:`state`,id:a[s],type:`fork`};break;case 23:this.$={stmt:`state`,id:a[s],type:`join`};break;case 24:this.$={stmt:`state`,id:a[s],type:`choice`};break;case 25:this.$={stmt:`state`,id:r.getDividerId(),type:`divider`};break;case 26:this.$={stmt:`state`,id:a[s-1].trim(),note:{position:a[s-2].trim(),text:a[s].trim()}};break;case 29:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 30:case 31:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 32:this.$={stmt:`click`,id:a[s-3],url:a[s-2],tooltip:a[s-1]};break;case 33:this.$={stmt:`click`,id:a[s-3],url:a[s-1],tooltip:``};break;case 34:case 35:this.$={stmt:`classDef`,id:a[s-1].trim(),classes:a[s].trim()};break;case 36:this.$={stmt:`style`,id:a[s-1].trim(),styleClass:a[s].trim()};break;case 37:this.$={stmt:`applyClass`,id:a[s-1].trim(),styleClass:a[s].trim()};break;case 38:r.setDirection(`TB`),this.$={stmt:`dir`,value:`TB`};break;case 39:r.setDirection(`BT`),this.$={stmt:`dir`,value:`BT`};break;case 40:r.setDirection(`RL`),this.$={stmt:`dir`,value:`RL`};break;case 41:r.setDirection(`LR`),this.$={stmt:`dir`,value:`LR`};break;case 44:case 45:this.$={stmt:`state`,id:a[s].trim(),type:`default`,description:``};break;case 46:this.$={stmt:`state`,id:a[s-2].trim(),classes:[a[s].trim()],type:`default`,description:``};break;case 47:this.$={stmt:`state`,id:a[s-2].trim(),classes:[a[s].trim()],type:`default`,description:``};break}},`anonymous`),table:[{3:1,4:t,5:n,6:i},{1:[3]},{3:5,4:t,5:n,6:i},{3:6,4:t,5:n,6:i},e([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],a,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:o,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:c,17:l,19:u,22:d,24:f,25:p,26:m,27:h,28:g,29:_,32:25,33:v,35:y,37:b,38:x,41:S,45:C,48:w,51:T,52:E,53:D,54:O,57:k},e(A,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:c,17:l,19:u,22:d,24:f,25:p,26:m,27:h,28:g,29:_,32:25,33:v,35:y,37:b,38:x,41:S,45:C,48:w,51:T,52:E,53:D,54:O,57:k},e(A,[2,7]),e(A,[2,8]),e(A,[2,9]),e(A,[2,10]),e(A,[2,11]),e(A,[2,12],{14:[1,40],15:[1,41]}),e(A,[2,16]),{18:[1,42]},e(A,[2,18],{20:[1,43]}),{23:[1,44]},e(A,[2,22]),e(A,[2,23]),e(A,[2,24]),e(A,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},e(A,[2,28]),{34:[1,49]},{36:[1,50]},e(A,[2,31]),{13:51,24:f,57:k},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},e(j,[2,44],{58:[1,56]}),e(j,[2,45],{58:[1,57]}),e(A,[2,38]),e(A,[2,39]),e(A,[2,40]),e(A,[2,41]),e(A,[2,6]),e(A,[2,13]),{13:58,24:f,57:k},e(A,[2,17]),e(M,a,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},e(A,[2,29]),e(A,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},e(A,[2,14],{14:[1,71]}),{4:o,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:c,17:l,19:u,21:[1,72],22:d,24:f,25:p,26:m,27:h,28:g,29:_,32:25,33:v,35:y,37:b,38:x,41:S,45:C,48:w,51:T,52:E,53:D,54:O,57:k},e(A,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},e(A,[2,34]),e(A,[2,35]),e(A,[2,36]),e(A,[2,37]),e(j,[2,46]),e(j,[2,47]),e(A,[2,15]),e(A,[2,19]),e(M,a,{7:78}),e(A,[2,26]),e(A,[2,27]),{5:[1,79]},{5:[1,80]},{4:o,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:c,17:l,19:u,21:[1,81],22:d,24:f,25:p,26:m,27:h,28:g,29:_,32:25,33:v,35:y,37:b,38:x,41:S,45:C,48:w,51:T,52:E,53:D,54:O,57:k},e(A,[2,32]),e(A,[2,33]),e(A,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:r(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:r(function(e){var t=this,n=[0],i=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;typeof g.yy.parseError==`function`?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function b(e){n.length-=2*e,a.length-=e,o.length-=e}r(b,`popStack`);function x(){var e=i.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=t.symbols_[e]||e),e}r(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=n[n.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`: +import{t as e}from"./chunk-F27PBJKO-DNUQP5bs.js";import{t}from"./chunk-XXDRQBXY-WtVtVhpq.js";import{t as n}from"./chunk-POPQ4Y6H-BvutC1JH.js";import{Ir as r,Nr as i,Rt as a,Sr as o,Tr as s,Ut as c,Zn as l,br as u,d,er as f,lr as p,nr as m,or as h,sr as g,ur as _,yr as v}from"./MermaidBlock-CI9NjqQx.js";var y=(function(){var e=r(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,2],n=[1,3],i=[1,4],a=[2,4],o=[1,9],s=[1,11],c=[1,16],l=[1,17],u=[1,18],d=[1,19],f=[1,33],p=[1,20],m=[1,21],h=[1,22],g=[1,23],_=[1,24],v=[1,26],y=[1,27],b=[1,28],x=[1,29],S=[1,30],C=[1,31],w=[1,32],T=[1,35],E=[1,36],D=[1,37],O=[1,38],k=[1,34],A=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],j=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],M=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],N={trace:r(function(){},`trace`),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:`error`,4:`SPACE`,5:`NL`,6:`SD`,14:`DESCR`,15:`-->`,16:`HIDE_EMPTY`,17:`scale`,18:`WIDTH`,19:`COMPOSIT_STATE`,20:`STRUCT_START`,21:`STRUCT_STOP`,22:`STATE_DESCR`,23:`AS`,24:`ID`,25:`FORK`,26:`JOIN`,27:`CHOICE`,28:`CONCURRENT`,29:`note`,31:`NOTE_TEXT`,33:`acc_title`,34:`acc_title_value`,35:`acc_descr`,36:`acc_descr_value`,37:`acc_descr_multiline_value`,38:`CLICK`,39:`STRING`,40:`HREF`,41:`classDef`,42:`CLASSDEF_ID`,43:`CLASSDEF_STYLEOPTS`,44:`DEFAULT`,45:`style`,46:`STYLE_IDS`,47:`STYLEDEF_STYLEOPTS`,48:`class`,49:`CLASSENTITY_IDS`,50:`STYLECLASS`,51:`direction_tb`,52:`direction_bt`,53:`direction_rl`,54:`direction_lr`,56:`;`,57:`EDGE_STATE`,58:`STYLE_SEPARATOR`,59:`left_of`,60:`right_of`},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:r(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 3:return r.setRootDoc(a[s]),a[s];case 4:this.$=[];break;case 5:a[s]!=`nl`&&(a[s-1].push(a[s]),this.$=a[s-1]);break;case 6:case 7:this.$=a[s];break;case 8:this.$=`nl`;break;case 12:this.$=a[s];break;case 13:let e=a[s-1];e.description=r.trimColon(a[s]),this.$=e;break;case 14:this.$={stmt:`relation`,state1:a[s-2],state2:a[s]};break;case 15:let t=r.trimColon(a[s]);this.$={stmt:`relation`,state1:a[s-3],state2:a[s-1],description:t};break;case 19:this.$={stmt:`state`,id:a[s-3],type:`default`,description:``,doc:a[s-1]};break;case 20:var c=a[s],l=a[s-2].trim();if(a[s].match(`:`)){var u=a[s].split(`:`);c=u[0],l=[l,u[1]]}this.$={stmt:`state`,id:c,type:`default`,description:l};break;case 21:this.$={stmt:`state`,id:a[s-3],type:`default`,description:a[s-5],doc:a[s-1]};break;case 22:this.$={stmt:`state`,id:a[s],type:`fork`};break;case 23:this.$={stmt:`state`,id:a[s],type:`join`};break;case 24:this.$={stmt:`state`,id:a[s],type:`choice`};break;case 25:this.$={stmt:`state`,id:r.getDividerId(),type:`divider`};break;case 26:this.$={stmt:`state`,id:a[s-1].trim(),note:{position:a[s-2].trim(),text:a[s].trim()}};break;case 29:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 30:case 31:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 32:this.$={stmt:`click`,id:a[s-3],url:a[s-2],tooltip:a[s-1]};break;case 33:this.$={stmt:`click`,id:a[s-3],url:a[s-1],tooltip:``};break;case 34:case 35:this.$={stmt:`classDef`,id:a[s-1].trim(),classes:a[s].trim()};break;case 36:this.$={stmt:`style`,id:a[s-1].trim(),styleClass:a[s].trim()};break;case 37:this.$={stmt:`applyClass`,id:a[s-1].trim(),styleClass:a[s].trim()};break;case 38:r.setDirection(`TB`),this.$={stmt:`dir`,value:`TB`};break;case 39:r.setDirection(`BT`),this.$={stmt:`dir`,value:`BT`};break;case 40:r.setDirection(`RL`),this.$={stmt:`dir`,value:`RL`};break;case 41:r.setDirection(`LR`),this.$={stmt:`dir`,value:`LR`};break;case 44:case 45:this.$={stmt:`state`,id:a[s].trim(),type:`default`,description:``};break;case 46:this.$={stmt:`state`,id:a[s-2].trim(),classes:[a[s].trim()],type:`default`,description:``};break;case 47:this.$={stmt:`state`,id:a[s-2].trim(),classes:[a[s].trim()],type:`default`,description:``};break}},`anonymous`),table:[{3:1,4:t,5:n,6:i},{1:[3]},{3:5,4:t,5:n,6:i},{3:6,4:t,5:n,6:i},e([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],a,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:o,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:c,17:l,19:u,22:d,24:f,25:p,26:m,27:h,28:g,29:_,32:25,33:v,35:y,37:b,38:x,41:S,45:C,48:w,51:T,52:E,53:D,54:O,57:k},e(A,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:c,17:l,19:u,22:d,24:f,25:p,26:m,27:h,28:g,29:_,32:25,33:v,35:y,37:b,38:x,41:S,45:C,48:w,51:T,52:E,53:D,54:O,57:k},e(A,[2,7]),e(A,[2,8]),e(A,[2,9]),e(A,[2,10]),e(A,[2,11]),e(A,[2,12],{14:[1,40],15:[1,41]}),e(A,[2,16]),{18:[1,42]},e(A,[2,18],{20:[1,43]}),{23:[1,44]},e(A,[2,22]),e(A,[2,23]),e(A,[2,24]),e(A,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},e(A,[2,28]),{34:[1,49]},{36:[1,50]},e(A,[2,31]),{13:51,24:f,57:k},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},e(j,[2,44],{58:[1,56]}),e(j,[2,45],{58:[1,57]}),e(A,[2,38]),e(A,[2,39]),e(A,[2,40]),e(A,[2,41]),e(A,[2,6]),e(A,[2,13]),{13:58,24:f,57:k},e(A,[2,17]),e(M,a,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},e(A,[2,29]),e(A,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},e(A,[2,14],{14:[1,71]}),{4:o,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:c,17:l,19:u,21:[1,72],22:d,24:f,25:p,26:m,27:h,28:g,29:_,32:25,33:v,35:y,37:b,38:x,41:S,45:C,48:w,51:T,52:E,53:D,54:O,57:k},e(A,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},e(A,[2,34]),e(A,[2,35]),e(A,[2,36]),e(A,[2,37]),e(j,[2,46]),e(j,[2,47]),e(A,[2,15]),e(A,[2,19]),e(M,a,{7:78}),e(A,[2,26]),e(A,[2,27]),{5:[1,79]},{5:[1,80]},{4:o,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:c,17:l,19:u,21:[1,81],22:d,24:f,25:p,26:m,27:h,28:g,29:_,32:25,33:v,35:y,37:b,38:x,41:S,45:C,48:w,51:T,52:E,53:D,54:O,57:k},e(A,[2,32]),e(A,[2,33]),e(A,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:r(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:r(function(e){var t=this,n=[0],i=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;typeof g.yy.parseError==`function`?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function b(e){n.length-=2*e,a.length-=e,o.length-=e}r(b,`popStack`);function x(){var e=i.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=t.symbols_[e]||e),e}r(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=n[n.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`: `+h.showPosition()+` Expecting `+j.join(`, `)+`, got '`+(this.terminals_[S]||S)+`'`:`Parse error on line `+(l+1)+`: Unexpected `+(S==p?`end of input`:`'`+(this.terminals_[S]||S)+`'`),this.parseError(M,{text:h.match,token:this.terminals_[S]||S,line:h.yylineno,loc:v,expected:j})}if(T[0]instanceof Array&&T.length>1)throw Error(`Parse Error: multiple actions possible at state: `+w+`, token: `+S);switch(T[0]){case 1:n.push(S),a.push(h.yytext),o.push(h.yylloc),n.push(T[1]),S=null,C?(S=C,C=null):(u=h.yyleng,c=h.yytext,l=h.yylineno,v=h.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[T[1]][1],D.$=a[a.length-k],D._$={first_line:o[o.length-(k||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(k||1)].first_column,last_column:o[o.length-1].last_column},y&&(D._$.range=[o[o.length-(k||1)].range[0],o[o.length-1].range[1]]),E=this.performAction.apply(D,[c,u,l,g.yy,T[1],a,o].concat(m)),E!==void 0)return E;k&&(n=n.slice(0,-1*k*2),a=a.slice(0,-1*k),o=o.slice(0,-1*k)),n.push(this.productions_[T[1]][0]),a.push(D.$),o.push(D._$),A=s[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0},`parse`)};N.lexer=(function(){return{EOF:1,parseError:r(function(e,t){if(this.yy.parser)this.yy.parser.parseError(e,t);else throw Error(e)},`parseError`),setInput:r(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=``,this.conditionStack=[`INITIAL`],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},`setInput`),input:r(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},`input`),unput:r(function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},`unput`),more:r(function(){return this._more=!0,this},`more`),reject:r(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(`Lexical error on line `+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:``,token:null,line:this.yylineno});return this},`reject`),less:r(function(e){this.unput(this.match.slice(e))},`less`),pastInput:r(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?`...`:``)+e.substr(-20).replace(/\n/g,``)},`pastInput`),upcomingInput:r(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?`...`:``)).replace(/\n/g,``)},`upcomingInput`),showPosition:r(function(){var e=this.pastInput(),t=Array(e.length+1).join(`-`);return e+this.upcomingInput()+` diff --git a/ksadk/server/static/assets/chunk-JWPE2WC7-vYvVJb_M.js b/ksadk/server/static/assets/chunk-JWPE2WC7-CEttzwEN.js similarity index 71% rename from ksadk/server/static/assets/chunk-JWPE2WC7-vYvVJb_M.js rename to ksadk/server/static/assets/chunk-JWPE2WC7-CEttzwEN.js index 83affb09..58bc753f 100644 --- a/ksadk/server/static/assets/chunk-JWPE2WC7-vYvVJb_M.js +++ b/ksadk/server/static/assets/chunk-JWPE2WC7-CEttzwEN.js @@ -1 +1 @@ -import{Ir as e}from"./MermaidBlock-Dz4IP-Tx.js";function t(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}e(t,`populateCommonDb`);export{t}; \ No newline at end of file +import{Ir as e}from"./MermaidBlock-CI9NjqQx.js";function t(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}e(t,`populateCommonDb`);export{t}; \ No newline at end of file diff --git a/ksadk/server/static/assets/chunk-LCL6LL3I-BcI6ysPT.js b/ksadk/server/static/assets/chunk-LCL6LL3I-BT3bzrVf.js similarity index 99% rename from ksadk/server/static/assets/chunk-LCL6LL3I-BcI6ysPT.js rename to ksadk/server/static/assets/chunk-LCL6LL3I-BT3bzrVf.js index 5dea9764..a76bde7f 100644 --- a/ksadk/server/static/assets/chunk-LCL6LL3I-BcI6ysPT.js +++ b/ksadk/server/static/assets/chunk-LCL6LL3I-BT3bzrVf.js @@ -1,4 +1,4 @@ -import{t as e}from"./chunk-5VM5RSS4-BVHAchFb.js";import{t}from"./chunk-F27PBJKO-C-ipQzuS.js";import{t as n}from"./chunk-XXDRQBXY-C_32ArgP.js";import{t as r}from"./chunk-POPQ4Y6H-C030x_Z1.js";import{Ir as i,Nr as a,Sr as o,Tr as s,Ut as c,Zn as l,br as u,d,er as f,gr as p,lr as m,nr as h,or as g,sr as _,u as v,ur as y,vr as b,yr as x,zt as S}from"./MermaidBlock-Dz4IP-Tx.js";var C=(function(){var e=i(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,18],n=[1,19],r=[1,20],a=[1,41],o=[1,26],s=[1,42],c=[1,24],l=[1,25],u=[1,32],d=[1,33],f=[1,34],p=[1,45],m=[1,35],h=[1,36],g=[1,37],_=[1,38],v=[1,27],y=[1,28],b=[1,29],x=[1,30],S=[1,31],C=[1,44],w=[1,46],T=[1,43],E=[1,47],D=[1,9],O=[1,8,9],k=[1,58],A=[1,59],j=[1,60],M=[1,61],N=[1,62],ee=[1,63],P=[1,64],F=[1,8,9,41],te=[1,77],I=[1,8,9,12,13,22,39,41,44,46,68,69,70,71,72,73,74,79,81],L=[1,8,9,12,13,18,20,22,39,41,44,46,47,60,68,69,70,71,72,73,74,79,81,86,100,102,103],R=[13,60,86,100,102,103],z=[13,60,73,74,86,100,102,103],ne=[13,60,68,69,70,71,72,86,100,102,103],B=[1,103],V=[1,121],H=[1,117],U=[1,113],W=[1,119],G=[1,114],K=[1,115],q=[1,116],J=[1,118],Y=[1,120],re=[22,50,60,61,82,86,87,88,89,90],ie=[1,128],X=[12,39],ae=[1,8,9,39,41,44,46],Z=[1,8,9,22],oe=[1,153],se=[1,8,9,61],Q=[1,8,9,22,50,60,61,82,86,87,88,89,90],ce={trace:i(function(){},`trace`),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,classLiteralName:17,DOT:18,className:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,ANNOTATION_START:46,ANNOTATION_END:47,CLASS:48,emptyBody:49,SPACE:50,MEMBER:51,SEPARATOR:52,relation:53,NOTE_FOR:54,noteText:55,NOTE:56,CLASSDEF:57,classList:58,stylesOpt:59,ALPHA:60,COMMA:61,direction_tb:62,direction_bt:63,direction_rl:64,direction_lr:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,STYLE:82,CSSCLASS:83,style:84,styleComponent:85,NUM:86,COLON:87,UNIT:88,BRKT:89,PCT:90,commentToken:91,textToken:92,graphCodeTokens:93,textNoTagsToken:94,TAGSTART:95,TAGEND:96,"==":97,"--":98,DEFAULT:99,MINUS:100,keywords:101,UNICODE_TEXT:102,BQUOTE_STR:103,$accept:0,$end:1},terminals_:{2:`error`,7:`CLASS_DIAGRAM`,8:`NEWLINE`,9:`EOF`,12:`SQS`,13:`STR`,14:`SQE`,18:`DOT`,20:`GENERICTYPE`,22:`LABEL`,33:`acc_title`,34:`acc_title_value`,35:`acc_descr`,36:`acc_descr_value`,37:`acc_descr_multiline_value`,39:`STRUCT_START`,41:`STRUCT_STOP`,42:`NAMESPACE`,44:`STYLE_SEPARATOR`,46:`ANNOTATION_START`,47:`ANNOTATION_END`,48:`CLASS`,50:`SPACE`,51:`MEMBER`,52:`SEPARATOR`,54:`NOTE_FOR`,56:`NOTE`,57:`CLASSDEF`,60:`ALPHA`,61:`COMMA`,62:`direction_tb`,63:`direction_bt`,64:`direction_rl`,65:`direction_lr`,68:`AGGREGATION`,69:`EXTENSION`,70:`COMPOSITION`,71:`DEPENDENCY`,72:`LOLLIPOP`,73:`LINE`,74:`DOTTED_LINE`,75:`CALLBACK`,76:`LINK`,77:`LINK_TARGET`,78:`CLICK`,79:`CALLBACK_NAME`,80:`CALLBACK_ARGS`,81:`HREF`,82:`STYLE`,83:`CSSCLASS`,86:`NUM`,87:`COLON`,88:`UNIT`,89:`BRKT`,90:`PCT`,93:`graphCodeTokens`,95:`TAGSTART`,96:`TAGEND`,97:`==`,98:`--`,99:`DEFAULT`,100:`MINUS`,101:`keywords`,102:`UNICODE_TEXT`,103:`BQUOTE_STR`},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[38,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,3],[24,6],[24,4],[24,7],[24,6],[43,2],[43,3],[49,0],[49,2],[49,2],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],performAction:i(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 8:this.$=a[s-1];break;case 9:case 10:case 13:case 15:this.$=a[s];break;case 11:case 14:this.$=a[s-2]+`.`+a[s];break;case 12:case 16:this.$=a[s-1]+a[s];break;case 17:case 18:this.$=a[s-1]+`~`+a[s]+`~`;break;case 19:r.addRelation(a[s]);break;case 20:a[s-1].title=r.cleanupLabel(a[s]),r.addRelation(a[s-1]);break;case 31:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 32:case 33:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 34:r.addClassesToNamespace(a[s-3],a[s-1][0],a[s-1][1]),r.popNamespace();break;case 35:r.addClassesToNamespace(a[s-4],a[s-1][0],a[s-1][1]),r.popNamespace();break;case 36:this.$=r.addNamespace(a[s]);break;case 37:this.$=r.addNamespace(a[s-1],a[s]);break;case 38:this.$=[[a[s]],[]];break;case 39:this.$=[[a[s-1]],[]];break;case 40:a[s][0].unshift(a[s-2]),this.$=a[s];break;case 41:this.$=[[],[a[s]]];break;case 42:this.$=[[],[a[s-1]]];break;case 43:a[s][1].unshift(a[s-2]),this.$=a[s];break;case 44:case 45:this.$=[[],[]];break;case 46:this.$=a[s];break;case 48:r.setCssClass(a[s-2],a[s]);break;case 49:r.addMembers(a[s-3],a[s-1]);break;case 51:r.setCssClass(a[s-5],a[s-3]),r.addMembers(a[s-5],a[s-1]);break;case 52:r.addAnnotation(a[s-3],a[s-1]);break;case 53:r.addAnnotation(a[s-6],a[s-4]),r.addMembers(a[s-6],a[s-1]);break;case 54:r.addAnnotation(a[s-5],a[s-3]);break;case 55:this.$=a[s],r.addClass(a[s]);break;case 56:this.$=a[s-1],r.addClass(a[s-1]),r.setClassLabel(a[s-1],a[s]);break;case 60:r.addAnnotation(a[s],a[s-2]);break;case 61:case 74:this.$=[a[s]];break;case 62:a[s].push(a[s-1]),this.$=a[s];break;case 63:break;case 64:r.addMember(a[s-1],r.cleanupLabel(a[s]));break;case 65:break;case 66:break;case 67:this.$={id1:a[s-2],id2:a[s],relation:a[s-1],relationTitle1:`none`,relationTitle2:`none`};break;case 68:this.$={id1:a[s-3],id2:a[s],relation:a[s-1],relationTitle1:a[s-2],relationTitle2:`none`};break;case 69:this.$={id1:a[s-3],id2:a[s],relation:a[s-2],relationTitle1:`none`,relationTitle2:a[s-1]};break;case 70:this.$={id1:a[s-4],id2:a[s],relation:a[s-2],relationTitle1:a[s-3],relationTitle2:a[s-1]};break;case 71:this.$=r.addNote(a[s],a[s-1]);break;case 72:this.$=r.addNote(a[s]);break;case 73:this.$=a[s-2],r.defineClass(a[s-1],a[s]);break;case 75:this.$=a[s-2].concat([a[s]]);break;case 76:r.setDirection(`TB`);break;case 77:r.setDirection(`BT`);break;case 78:r.setDirection(`RL`);break;case 79:r.setDirection(`LR`);break;case 80:this.$={type1:a[s-2],type2:a[s],lineType:a[s-1]};break;case 81:this.$={type1:`none`,type2:a[s],lineType:a[s-1]};break;case 82:this.$={type1:a[s-1],type2:`none`,lineType:a[s]};break;case 83:this.$={type1:`none`,type2:`none`,lineType:a[s]};break;case 84:this.$=r.relationType.AGGREGATION;break;case 85:this.$=r.relationType.EXTENSION;break;case 86:this.$=r.relationType.COMPOSITION;break;case 87:this.$=r.relationType.DEPENDENCY;break;case 88:this.$=r.relationType.LOLLIPOP;break;case 89:this.$=r.lineType.LINE;break;case 90:this.$=r.lineType.DOTTED_LINE;break;case 91:case 97:this.$=a[s-2],r.setClickEvent(a[s-1],a[s]);break;case 92:case 98:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1]),r.setTooltip(a[s-2],a[s]);break;case 93:this.$=a[s-2],r.setLink(a[s-1],a[s]);break;case 94:this.$=a[s-3],r.setLink(a[s-2],a[s-1],a[s]);break;case 95:this.$=a[s-3],r.setLink(a[s-2],a[s-1]),r.setTooltip(a[s-2],a[s]);break;case 96:this.$=a[s-4],r.setLink(a[s-3],a[s-2],a[s]),r.setTooltip(a[s-3],a[s-1]);break;case 99:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 100:this.$=a[s-4],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setTooltip(a[s-3],a[s]);break;case 101:this.$=a[s-3],r.setLink(a[s-2],a[s]);break;case 102:this.$=a[s-4],r.setLink(a[s-3],a[s-1],a[s]);break;case 103:this.$=a[s-4],r.setLink(a[s-3],a[s-1]),r.setTooltip(a[s-3],a[s]);break;case 104:this.$=a[s-5],r.setLink(a[s-4],a[s-2],a[s]),r.setTooltip(a[s-4],a[s-1]);break;case 105:this.$=a[s-2],r.setCssStyle(a[s-1],a[s]);break;case 106:r.setCssClass(a[s-1],a[s]);break;case 107:this.$=[a[s]];break;case 108:a[s-2].push(a[s]),this.$=a[s-2];break;case 110:this.$=a[s-1]+a[s];break}},`anonymous`),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:t,35:n,37:r,38:22,42:a,43:23,46:o,48:s,51:c,52:l,54:u,56:d,57:f,60:p,62:m,63:h,64:g,65:_,75:v,76:y,78:b,82:x,83:S,86:C,100:w,102:T,103:E},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},e(D,[2,5],{8:[1,48]}),{8:[1,49]},e(O,[2,19],{22:[1,50]}),e(O,[2,21]),e(O,[2,22]),e(O,[2,23]),e(O,[2,24]),e(O,[2,25]),e(O,[2,26]),e(O,[2,27]),e(O,[2,28]),e(O,[2,29]),e(O,[2,30]),{34:[1,51]},{36:[1,52]},e(O,[2,33]),e(O,[2,63],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:k,69:A,70:j,71:M,72:N,73:ee,74:P}),{39:[1,65]},e(F,[2,47],{39:[1,67],44:[1,66],46:[1,68]}),e(O,[2,65]),e(O,[2,66]),{16:69,60:p,86:C,100:w,102:T},{16:39,17:40,19:70,60:p,86:C,100:w,102:T,103:E},{16:39,17:40,19:71,60:p,86:C,100:w,102:T,103:E},{16:39,17:40,19:72,60:p,86:C,100:w,102:T,103:E},{60:[1,73]},{13:[1,74]},{16:39,17:40,19:75,60:p,86:C,100:w,102:T,103:E},{13:te,55:76},{58:78,60:[1,79]},e(O,[2,76]),e(O,[2,77]),e(O,[2,78]),e(O,[2,79]),e(I,[2,13],{16:39,17:40,19:81,18:[1,80],20:[1,82],60:p,86:C,100:w,102:T,103:E}),e(I,[2,15],{20:[1,83]}),{15:84,16:85,17:86,60:p,86:C,100:w,102:T,103:E},{16:39,17:40,19:87,60:p,86:C,100:w,102:T,103:E},e(L,[2,133]),e(L,[2,134]),e(L,[2,135]),e(L,[2,136]),e([1,8,9,12,13,20,22,39,41,44,46,68,69,70,71,72,73,74,79,81],[2,137]),e(D,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,19:21,38:22,43:23,16:39,17:40,5:88,33:t,35:n,37:r,42:a,46:o,48:s,51:c,52:l,54:u,56:d,57:f,60:p,62:m,63:h,64:g,65:_,75:v,76:y,78:b,82:x,83:S,86:C,100:w,102:T,103:E}),{5:89,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:t,35:n,37:r,38:22,42:a,43:23,46:o,48:s,51:c,52:l,54:u,56:d,57:f,60:p,62:m,63:h,64:g,65:_,75:v,76:y,78:b,82:x,83:S,86:C,100:w,102:T,103:E},e(O,[2,20]),e(O,[2,31]),e(O,[2,32]),{13:[1,91],16:39,17:40,19:90,60:p,86:C,100:w,102:T,103:E},{53:92,66:56,67:57,68:k,69:A,70:j,71:M,72:N,73:ee,74:P},e(O,[2,64]),{67:93,73:ee,74:P},e(R,[2,83],{66:94,68:k,69:A,70:j,71:M,72:N}),e(z,[2,84]),e(z,[2,85]),e(z,[2,86]),e(z,[2,87]),e(z,[2,88]),e(ne,[2,89]),e(ne,[2,90]),{8:[1,96],23:99,24:97,30:98,38:22,40:95,42:a,43:23,48:s,54:u,56:d},{16:100,60:p,86:C,100:w,102:T},{41:[1,102],45:101,51:B},{16:104,60:p,86:C,100:w,102:T},{47:[1,105]},{13:[1,106]},{13:[1,107]},{79:[1,108],81:[1,109]},{22:V,50:H,59:110,60:U,82:W,84:111,85:112,86:G,87:K,88:q,89:J,90:Y},{60:[1,122]},{13:te,55:123},e(F,[2,72]),e(F,[2,138]),{22:V,50:H,59:124,60:U,61:[1,125],82:W,84:111,85:112,86:G,87:K,88:q,89:J,90:Y},e(re,[2,74]),{16:39,17:40,19:126,60:p,86:C,100:w,102:T,103:E},e(I,[2,16]),e(I,[2,17]),e(I,[2,18]),{11:127,12:ie,39:[2,36]},e(X,[2,9],{16:85,17:86,15:130,18:[1,129],60:p,86:C,100:w,102:T,103:E}),e(X,[2,10]),e(ae,[2,55],{11:131,12:ie}),e(D,[2,7]),{9:[1,132]},e(Z,[2,67]),{16:39,17:40,19:133,60:p,86:C,100:w,102:T,103:E},{13:[1,135],16:39,17:40,19:134,60:p,86:C,100:w,102:T,103:E},e(R,[2,82],{66:136,68:k,69:A,70:j,71:M,72:N}),e(R,[2,81]),{41:[1,137]},{23:99,24:97,30:98,38:22,40:138,42:a,43:23,48:s,54:u,56:d},{8:[1,139],41:[2,38]},{8:[1,140],41:[2,41]},{8:[1,141],41:[2,44]},e(F,[2,48],{39:[1,142]}),{41:[1,143]},e(F,[2,50]),{41:[2,61],45:144,51:B},{47:[1,145]},{16:39,17:40,19:146,60:p,86:C,100:w,102:T,103:E},e(O,[2,91],{13:[1,147]}),e(O,[2,93],{13:[1,149],77:[1,148]}),e(O,[2,97],{13:[1,150],80:[1,151]}),{13:[1,152]},e(O,[2,105],{61:oe}),e(se,[2,107],{85:154,22:V,50:H,60:U,82:W,86:G,87:K,88:q,89:J,90:Y}),e(Q,[2,109]),e(Q,[2,111]),e(Q,[2,112]),e(Q,[2,113]),e(Q,[2,114]),e(Q,[2,115]),e(Q,[2,116]),e(Q,[2,117]),e(Q,[2,118]),e(Q,[2,119]),e(O,[2,106]),e(F,[2,71]),e(O,[2,73],{61:oe}),{60:[1,155]},e(I,[2,14]),{39:[2,37]},{13:[1,156]},{15:157,16:85,17:86,60:p,86:C,100:w,102:T,103:E},e(X,[2,12]),e(ae,[2,56]),{1:[2,4]},e(Z,[2,69]),e(Z,[2,68]),{16:39,17:40,19:158,60:p,86:C,100:w,102:T,103:E},e(R,[2,80]),e(F,[2,34]),{41:[1,159]},{23:99,24:97,30:98,38:22,40:160,41:[2,39],42:a,43:23,48:s,54:u,56:d},{23:99,24:97,30:98,38:22,40:161,41:[2,42],42:a,43:23,48:s,54:u,56:d},{23:99,24:97,30:98,38:22,40:162,41:[2,45],42:a,43:23,48:s,54:u,56:d},{45:163,51:B},e(F,[2,49]),{41:[2,62]},e(F,[2,52],{39:[1,164]}),e(O,[2,60]),e(O,[2,92]),e(O,[2,94]),e(O,[2,95],{77:[1,165]}),e(O,[2,98]),e(O,[2,99],{13:[1,166]}),e(O,[2,101],{13:[1,168],77:[1,167]}),{22:V,50:H,60:U,82:W,84:169,85:112,86:G,87:K,88:q,89:J,90:Y},e(Q,[2,110]),e(re,[2,75]),{14:[1,170]},e(X,[2,11]),e(Z,[2,70]),e(F,[2,35]),{41:[2,40]},{41:[2,43]},{41:[2,46]},{41:[1,171]},{41:[1,173],45:172,51:B},e(O,[2,96]),e(O,[2,100]),e(O,[2,102]),e(O,[2,103],{77:[1,174]}),e(se,[2,108],{85:154,22:V,50:H,60:U,82:W,86:G,87:K,88:q,89:J,90:Y}),e(ae,[2,8]),e(F,[2,51]),{41:[1,175]},e(F,[2,54]),e(O,[2,104]),e(F,[2,53])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],127:[2,37],132:[2,4],144:[2,62],160:[2,40],161:[2,43],162:[2,46]},parseError:i(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:i(function(e){var t=this,n=[0],r=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;typeof g.yy.parseError==`function`?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function b(e){n.length-=2*e,a.length-=e,o.length-=e}i(b,`popStack`);function x(){var e=r.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(r=e,e=r.pop()),e=t.symbols_[e]||e),e}i(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=n[n.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`: +import{t as e}from"./chunk-5VM5RSS4-VZAcej21.js";import{t}from"./chunk-F27PBJKO-DNUQP5bs.js";import{t as n}from"./chunk-XXDRQBXY-WtVtVhpq.js";import{t as r}from"./chunk-POPQ4Y6H-BvutC1JH.js";import{Ir as i,Nr as a,Sr as o,Tr as s,Ut as c,Zn as l,br as u,d,er as f,gr as p,lr as m,nr as h,or as g,sr as _,u as v,ur as y,vr as b,yr as x,zt as S}from"./MermaidBlock-CI9NjqQx.js";var C=(function(){var e=i(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,18],n=[1,19],r=[1,20],a=[1,41],o=[1,26],s=[1,42],c=[1,24],l=[1,25],u=[1,32],d=[1,33],f=[1,34],p=[1,45],m=[1,35],h=[1,36],g=[1,37],_=[1,38],v=[1,27],y=[1,28],b=[1,29],x=[1,30],S=[1,31],C=[1,44],w=[1,46],T=[1,43],E=[1,47],D=[1,9],O=[1,8,9],k=[1,58],A=[1,59],j=[1,60],M=[1,61],N=[1,62],ee=[1,63],P=[1,64],F=[1,8,9,41],te=[1,77],I=[1,8,9,12,13,22,39,41,44,46,68,69,70,71,72,73,74,79,81],L=[1,8,9,12,13,18,20,22,39,41,44,46,47,60,68,69,70,71,72,73,74,79,81,86,100,102,103],R=[13,60,86,100,102,103],z=[13,60,73,74,86,100,102,103],ne=[13,60,68,69,70,71,72,86,100,102,103],B=[1,103],V=[1,121],H=[1,117],U=[1,113],W=[1,119],G=[1,114],K=[1,115],q=[1,116],J=[1,118],Y=[1,120],re=[22,50,60,61,82,86,87,88,89,90],ie=[1,128],X=[12,39],ae=[1,8,9,39,41,44,46],Z=[1,8,9,22],oe=[1,153],se=[1,8,9,61],Q=[1,8,9,22,50,60,61,82,86,87,88,89,90],ce={trace:i(function(){},`trace`),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,classLiteralName:17,DOT:18,className:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,ANNOTATION_START:46,ANNOTATION_END:47,CLASS:48,emptyBody:49,SPACE:50,MEMBER:51,SEPARATOR:52,relation:53,NOTE_FOR:54,noteText:55,NOTE:56,CLASSDEF:57,classList:58,stylesOpt:59,ALPHA:60,COMMA:61,direction_tb:62,direction_bt:63,direction_rl:64,direction_lr:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,STYLE:82,CSSCLASS:83,style:84,styleComponent:85,NUM:86,COLON:87,UNIT:88,BRKT:89,PCT:90,commentToken:91,textToken:92,graphCodeTokens:93,textNoTagsToken:94,TAGSTART:95,TAGEND:96,"==":97,"--":98,DEFAULT:99,MINUS:100,keywords:101,UNICODE_TEXT:102,BQUOTE_STR:103,$accept:0,$end:1},terminals_:{2:`error`,7:`CLASS_DIAGRAM`,8:`NEWLINE`,9:`EOF`,12:`SQS`,13:`STR`,14:`SQE`,18:`DOT`,20:`GENERICTYPE`,22:`LABEL`,33:`acc_title`,34:`acc_title_value`,35:`acc_descr`,36:`acc_descr_value`,37:`acc_descr_multiline_value`,39:`STRUCT_START`,41:`STRUCT_STOP`,42:`NAMESPACE`,44:`STYLE_SEPARATOR`,46:`ANNOTATION_START`,47:`ANNOTATION_END`,48:`CLASS`,50:`SPACE`,51:`MEMBER`,52:`SEPARATOR`,54:`NOTE_FOR`,56:`NOTE`,57:`CLASSDEF`,60:`ALPHA`,61:`COMMA`,62:`direction_tb`,63:`direction_bt`,64:`direction_rl`,65:`direction_lr`,68:`AGGREGATION`,69:`EXTENSION`,70:`COMPOSITION`,71:`DEPENDENCY`,72:`LOLLIPOP`,73:`LINE`,74:`DOTTED_LINE`,75:`CALLBACK`,76:`LINK`,77:`LINK_TARGET`,78:`CLICK`,79:`CALLBACK_NAME`,80:`CALLBACK_ARGS`,81:`HREF`,82:`STYLE`,83:`CSSCLASS`,86:`NUM`,87:`COLON`,88:`UNIT`,89:`BRKT`,90:`PCT`,93:`graphCodeTokens`,95:`TAGSTART`,96:`TAGEND`,97:`==`,98:`--`,99:`DEFAULT`,100:`MINUS`,101:`keywords`,102:`UNICODE_TEXT`,103:`BQUOTE_STR`},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[38,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,3],[24,6],[24,4],[24,7],[24,6],[43,2],[43,3],[49,0],[49,2],[49,2],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],performAction:i(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 8:this.$=a[s-1];break;case 9:case 10:case 13:case 15:this.$=a[s];break;case 11:case 14:this.$=a[s-2]+`.`+a[s];break;case 12:case 16:this.$=a[s-1]+a[s];break;case 17:case 18:this.$=a[s-1]+`~`+a[s]+`~`;break;case 19:r.addRelation(a[s]);break;case 20:a[s-1].title=r.cleanupLabel(a[s]),r.addRelation(a[s-1]);break;case 31:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 32:case 33:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 34:r.addClassesToNamespace(a[s-3],a[s-1][0],a[s-1][1]),r.popNamespace();break;case 35:r.addClassesToNamespace(a[s-4],a[s-1][0],a[s-1][1]),r.popNamespace();break;case 36:this.$=r.addNamespace(a[s]);break;case 37:this.$=r.addNamespace(a[s-1],a[s]);break;case 38:this.$=[[a[s]],[]];break;case 39:this.$=[[a[s-1]],[]];break;case 40:a[s][0].unshift(a[s-2]),this.$=a[s];break;case 41:this.$=[[],[a[s]]];break;case 42:this.$=[[],[a[s-1]]];break;case 43:a[s][1].unshift(a[s-2]),this.$=a[s];break;case 44:case 45:this.$=[[],[]];break;case 46:this.$=a[s];break;case 48:r.setCssClass(a[s-2],a[s]);break;case 49:r.addMembers(a[s-3],a[s-1]);break;case 51:r.setCssClass(a[s-5],a[s-3]),r.addMembers(a[s-5],a[s-1]);break;case 52:r.addAnnotation(a[s-3],a[s-1]);break;case 53:r.addAnnotation(a[s-6],a[s-4]),r.addMembers(a[s-6],a[s-1]);break;case 54:r.addAnnotation(a[s-5],a[s-3]);break;case 55:this.$=a[s],r.addClass(a[s]);break;case 56:this.$=a[s-1],r.addClass(a[s-1]),r.setClassLabel(a[s-1],a[s]);break;case 60:r.addAnnotation(a[s],a[s-2]);break;case 61:case 74:this.$=[a[s]];break;case 62:a[s].push(a[s-1]),this.$=a[s];break;case 63:break;case 64:r.addMember(a[s-1],r.cleanupLabel(a[s]));break;case 65:break;case 66:break;case 67:this.$={id1:a[s-2],id2:a[s],relation:a[s-1],relationTitle1:`none`,relationTitle2:`none`};break;case 68:this.$={id1:a[s-3],id2:a[s],relation:a[s-1],relationTitle1:a[s-2],relationTitle2:`none`};break;case 69:this.$={id1:a[s-3],id2:a[s],relation:a[s-2],relationTitle1:`none`,relationTitle2:a[s-1]};break;case 70:this.$={id1:a[s-4],id2:a[s],relation:a[s-2],relationTitle1:a[s-3],relationTitle2:a[s-1]};break;case 71:this.$=r.addNote(a[s],a[s-1]);break;case 72:this.$=r.addNote(a[s]);break;case 73:this.$=a[s-2],r.defineClass(a[s-1],a[s]);break;case 75:this.$=a[s-2].concat([a[s]]);break;case 76:r.setDirection(`TB`);break;case 77:r.setDirection(`BT`);break;case 78:r.setDirection(`RL`);break;case 79:r.setDirection(`LR`);break;case 80:this.$={type1:a[s-2],type2:a[s],lineType:a[s-1]};break;case 81:this.$={type1:`none`,type2:a[s],lineType:a[s-1]};break;case 82:this.$={type1:a[s-1],type2:`none`,lineType:a[s]};break;case 83:this.$={type1:`none`,type2:`none`,lineType:a[s]};break;case 84:this.$=r.relationType.AGGREGATION;break;case 85:this.$=r.relationType.EXTENSION;break;case 86:this.$=r.relationType.COMPOSITION;break;case 87:this.$=r.relationType.DEPENDENCY;break;case 88:this.$=r.relationType.LOLLIPOP;break;case 89:this.$=r.lineType.LINE;break;case 90:this.$=r.lineType.DOTTED_LINE;break;case 91:case 97:this.$=a[s-2],r.setClickEvent(a[s-1],a[s]);break;case 92:case 98:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1]),r.setTooltip(a[s-2],a[s]);break;case 93:this.$=a[s-2],r.setLink(a[s-1],a[s]);break;case 94:this.$=a[s-3],r.setLink(a[s-2],a[s-1],a[s]);break;case 95:this.$=a[s-3],r.setLink(a[s-2],a[s-1]),r.setTooltip(a[s-2],a[s]);break;case 96:this.$=a[s-4],r.setLink(a[s-3],a[s-2],a[s]),r.setTooltip(a[s-3],a[s-1]);break;case 99:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 100:this.$=a[s-4],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setTooltip(a[s-3],a[s]);break;case 101:this.$=a[s-3],r.setLink(a[s-2],a[s]);break;case 102:this.$=a[s-4],r.setLink(a[s-3],a[s-1],a[s]);break;case 103:this.$=a[s-4],r.setLink(a[s-3],a[s-1]),r.setTooltip(a[s-3],a[s]);break;case 104:this.$=a[s-5],r.setLink(a[s-4],a[s-2],a[s]),r.setTooltip(a[s-4],a[s-1]);break;case 105:this.$=a[s-2],r.setCssStyle(a[s-1],a[s]);break;case 106:r.setCssClass(a[s-1],a[s]);break;case 107:this.$=[a[s]];break;case 108:a[s-2].push(a[s]),this.$=a[s-2];break;case 110:this.$=a[s-1]+a[s];break}},`anonymous`),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:t,35:n,37:r,38:22,42:a,43:23,46:o,48:s,51:c,52:l,54:u,56:d,57:f,60:p,62:m,63:h,64:g,65:_,75:v,76:y,78:b,82:x,83:S,86:C,100:w,102:T,103:E},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},e(D,[2,5],{8:[1,48]}),{8:[1,49]},e(O,[2,19],{22:[1,50]}),e(O,[2,21]),e(O,[2,22]),e(O,[2,23]),e(O,[2,24]),e(O,[2,25]),e(O,[2,26]),e(O,[2,27]),e(O,[2,28]),e(O,[2,29]),e(O,[2,30]),{34:[1,51]},{36:[1,52]},e(O,[2,33]),e(O,[2,63],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:k,69:A,70:j,71:M,72:N,73:ee,74:P}),{39:[1,65]},e(F,[2,47],{39:[1,67],44:[1,66],46:[1,68]}),e(O,[2,65]),e(O,[2,66]),{16:69,60:p,86:C,100:w,102:T},{16:39,17:40,19:70,60:p,86:C,100:w,102:T,103:E},{16:39,17:40,19:71,60:p,86:C,100:w,102:T,103:E},{16:39,17:40,19:72,60:p,86:C,100:w,102:T,103:E},{60:[1,73]},{13:[1,74]},{16:39,17:40,19:75,60:p,86:C,100:w,102:T,103:E},{13:te,55:76},{58:78,60:[1,79]},e(O,[2,76]),e(O,[2,77]),e(O,[2,78]),e(O,[2,79]),e(I,[2,13],{16:39,17:40,19:81,18:[1,80],20:[1,82],60:p,86:C,100:w,102:T,103:E}),e(I,[2,15],{20:[1,83]}),{15:84,16:85,17:86,60:p,86:C,100:w,102:T,103:E},{16:39,17:40,19:87,60:p,86:C,100:w,102:T,103:E},e(L,[2,133]),e(L,[2,134]),e(L,[2,135]),e(L,[2,136]),e([1,8,9,12,13,20,22,39,41,44,46,68,69,70,71,72,73,74,79,81],[2,137]),e(D,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,19:21,38:22,43:23,16:39,17:40,5:88,33:t,35:n,37:r,42:a,46:o,48:s,51:c,52:l,54:u,56:d,57:f,60:p,62:m,63:h,64:g,65:_,75:v,76:y,78:b,82:x,83:S,86:C,100:w,102:T,103:E}),{5:89,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:t,35:n,37:r,38:22,42:a,43:23,46:o,48:s,51:c,52:l,54:u,56:d,57:f,60:p,62:m,63:h,64:g,65:_,75:v,76:y,78:b,82:x,83:S,86:C,100:w,102:T,103:E},e(O,[2,20]),e(O,[2,31]),e(O,[2,32]),{13:[1,91],16:39,17:40,19:90,60:p,86:C,100:w,102:T,103:E},{53:92,66:56,67:57,68:k,69:A,70:j,71:M,72:N,73:ee,74:P},e(O,[2,64]),{67:93,73:ee,74:P},e(R,[2,83],{66:94,68:k,69:A,70:j,71:M,72:N}),e(z,[2,84]),e(z,[2,85]),e(z,[2,86]),e(z,[2,87]),e(z,[2,88]),e(ne,[2,89]),e(ne,[2,90]),{8:[1,96],23:99,24:97,30:98,38:22,40:95,42:a,43:23,48:s,54:u,56:d},{16:100,60:p,86:C,100:w,102:T},{41:[1,102],45:101,51:B},{16:104,60:p,86:C,100:w,102:T},{47:[1,105]},{13:[1,106]},{13:[1,107]},{79:[1,108],81:[1,109]},{22:V,50:H,59:110,60:U,82:W,84:111,85:112,86:G,87:K,88:q,89:J,90:Y},{60:[1,122]},{13:te,55:123},e(F,[2,72]),e(F,[2,138]),{22:V,50:H,59:124,60:U,61:[1,125],82:W,84:111,85:112,86:G,87:K,88:q,89:J,90:Y},e(re,[2,74]),{16:39,17:40,19:126,60:p,86:C,100:w,102:T,103:E},e(I,[2,16]),e(I,[2,17]),e(I,[2,18]),{11:127,12:ie,39:[2,36]},e(X,[2,9],{16:85,17:86,15:130,18:[1,129],60:p,86:C,100:w,102:T,103:E}),e(X,[2,10]),e(ae,[2,55],{11:131,12:ie}),e(D,[2,7]),{9:[1,132]},e(Z,[2,67]),{16:39,17:40,19:133,60:p,86:C,100:w,102:T,103:E},{13:[1,135],16:39,17:40,19:134,60:p,86:C,100:w,102:T,103:E},e(R,[2,82],{66:136,68:k,69:A,70:j,71:M,72:N}),e(R,[2,81]),{41:[1,137]},{23:99,24:97,30:98,38:22,40:138,42:a,43:23,48:s,54:u,56:d},{8:[1,139],41:[2,38]},{8:[1,140],41:[2,41]},{8:[1,141],41:[2,44]},e(F,[2,48],{39:[1,142]}),{41:[1,143]},e(F,[2,50]),{41:[2,61],45:144,51:B},{47:[1,145]},{16:39,17:40,19:146,60:p,86:C,100:w,102:T,103:E},e(O,[2,91],{13:[1,147]}),e(O,[2,93],{13:[1,149],77:[1,148]}),e(O,[2,97],{13:[1,150],80:[1,151]}),{13:[1,152]},e(O,[2,105],{61:oe}),e(se,[2,107],{85:154,22:V,50:H,60:U,82:W,86:G,87:K,88:q,89:J,90:Y}),e(Q,[2,109]),e(Q,[2,111]),e(Q,[2,112]),e(Q,[2,113]),e(Q,[2,114]),e(Q,[2,115]),e(Q,[2,116]),e(Q,[2,117]),e(Q,[2,118]),e(Q,[2,119]),e(O,[2,106]),e(F,[2,71]),e(O,[2,73],{61:oe}),{60:[1,155]},e(I,[2,14]),{39:[2,37]},{13:[1,156]},{15:157,16:85,17:86,60:p,86:C,100:w,102:T,103:E},e(X,[2,12]),e(ae,[2,56]),{1:[2,4]},e(Z,[2,69]),e(Z,[2,68]),{16:39,17:40,19:158,60:p,86:C,100:w,102:T,103:E},e(R,[2,80]),e(F,[2,34]),{41:[1,159]},{23:99,24:97,30:98,38:22,40:160,41:[2,39],42:a,43:23,48:s,54:u,56:d},{23:99,24:97,30:98,38:22,40:161,41:[2,42],42:a,43:23,48:s,54:u,56:d},{23:99,24:97,30:98,38:22,40:162,41:[2,45],42:a,43:23,48:s,54:u,56:d},{45:163,51:B},e(F,[2,49]),{41:[2,62]},e(F,[2,52],{39:[1,164]}),e(O,[2,60]),e(O,[2,92]),e(O,[2,94]),e(O,[2,95],{77:[1,165]}),e(O,[2,98]),e(O,[2,99],{13:[1,166]}),e(O,[2,101],{13:[1,168],77:[1,167]}),{22:V,50:H,60:U,82:W,84:169,85:112,86:G,87:K,88:q,89:J,90:Y},e(Q,[2,110]),e(re,[2,75]),{14:[1,170]},e(X,[2,11]),e(Z,[2,70]),e(F,[2,35]),{41:[2,40]},{41:[2,43]},{41:[2,46]},{41:[1,171]},{41:[1,173],45:172,51:B},e(O,[2,96]),e(O,[2,100]),e(O,[2,102]),e(O,[2,103],{77:[1,174]}),e(se,[2,108],{85:154,22:V,50:H,60:U,82:W,86:G,87:K,88:q,89:J,90:Y}),e(ae,[2,8]),e(F,[2,51]),{41:[1,175]},e(F,[2,54]),e(O,[2,104]),e(F,[2,53])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],127:[2,37],132:[2,4],144:[2,62],160:[2,40],161:[2,43],162:[2,46]},parseError:i(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:i(function(e){var t=this,n=[0],r=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;typeof g.yy.parseError==`function`?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function b(e){n.length-=2*e,a.length-=e,o.length-=e}i(b,`popStack`);function x(){var e=r.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(r=e,e=r.pop()),e=t.symbols_[e]||e),e}i(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=n[n.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`: `+h.showPosition()+` Expecting `+j.join(`, `)+`, got '`+(this.terminals_[S]||S)+`'`:`Parse error on line `+(l+1)+`: Unexpected `+(S==p?`end of input`:`'`+(this.terminals_[S]||S)+`'`),this.parseError(M,{text:h.match,token:this.terminals_[S]||S,line:h.yylineno,loc:v,expected:j})}if(T[0]instanceof Array&&T.length>1)throw Error(`Parse Error: multiple actions possible at state: `+w+`, token: `+S);switch(T[0]){case 1:n.push(S),a.push(h.yytext),o.push(h.yylloc),n.push(T[1]),S=null,C?(S=C,C=null):(u=h.yyleng,c=h.yytext,l=h.yylineno,v=h.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[T[1]][1],D.$=a[a.length-k],D._$={first_line:o[o.length-(k||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(k||1)].first_column,last_column:o[o.length-1].last_column},y&&(D._$.range=[o[o.length-(k||1)].range[0],o[o.length-1].range[1]]),E=this.performAction.apply(D,[c,u,l,g.yy,T[1],a,o].concat(m)),E!==void 0)return E;k&&(n=n.slice(0,-1*k*2),a=a.slice(0,-1*k),o=o.slice(0,-1*k)),n.push(this.productions_[T[1]][0]),a.push(D.$),o.push(D._$),A=s[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0},`parse`)};ce.lexer=(function(){return{EOF:1,parseError:i(function(e,t){if(this.yy.parser)this.yy.parser.parseError(e,t);else throw Error(e)},`parseError`),setInput:i(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=``,this.conditionStack=[`INITIAL`],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},`setInput`),input:i(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},`input`),unput:i(function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},`unput`),more:i(function(){return this._more=!0,this},`more`),reject:i(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(`Lexical error on line `+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:``,token:null,line:this.yylineno});return this},`reject`),less:i(function(e){this.unput(this.match.slice(e))},`less`),pastInput:i(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?`...`:``)+e.substr(-20).replace(/\n/g,``)},`pastInput`),upcomingInput:i(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?`...`:``)).replace(/\n/g,``)},`upcomingInput`),showPosition:i(function(){var e=this.pastInput(),t=Array(e.length+1).join(`-`);return e+this.upcomingInput()+` diff --git a/ksadk/server/static/assets/chunk-POPQ4Y6H-C030x_Z1.js b/ksadk/server/static/assets/chunk-POPQ4Y6H-BvutC1JH.js similarity index 87% rename from ksadk/server/static/assets/chunk-POPQ4Y6H-C030x_Z1.js rename to ksadk/server/static/assets/chunk-POPQ4Y6H-BvutC1JH.js index b1d17208..3dd0dd57 100644 --- a/ksadk/server/static/assets/chunk-POPQ4Y6H-C030x_Z1.js +++ b/ksadk/server/static/assets/chunk-POPQ4Y6H-BvutC1JH.js @@ -1 +1 @@ -import{Ir as e,Nr as t,rr as n}from"./MermaidBlock-Dz4IP-Tx.js";var r=e((e,r,o,s)=>{e.attr(`class`,o);let{width:c,height:l,x:u,y:d}=i(e,r);n(e,l,c,s);let f=a(u,d,c,l,r);e.attr(`viewBox`,f),t.debug(`viewBox configured: ${f} with padding: ${r}`)},`setupViewPortForSVG`),i=e((e,t)=>{let n=e.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:n.width+t*2,height:n.height+t*2,x:n.x,y:n.y}},`calculateDimensionsWithPadding`),a=e((e,t,n,r,i)=>`${e-i} ${t-i} ${n} ${r}`,`createViewBox`);export{r as t}; \ No newline at end of file +import{Ir as e,Nr as t,rr as n}from"./MermaidBlock-CI9NjqQx.js";var r=e((e,r,o,s)=>{e.attr(`class`,o);let{width:c,height:l,x:u,y:d}=i(e,r);n(e,l,c,s);let f=a(u,d,c,l,r);e.attr(`viewBox`,f),t.debug(`viewBox configured: ${f} with padding: ${r}`)},`setupViewPortForSVG`),i=e((e,t)=>{let n=e.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:n.width+t*2,height:n.height+t*2,x:n.x,y:n.y}},`calculateDimensionsWithPadding`),a=e((e,t,n,r,i)=>`${e-i} ${t-i} ${n} ${r}`,`createViewBox`);export{r as t}; \ No newline at end of file diff --git a/ksadk/server/static/assets/chunk-RHFEMEQ7-yyGpsz4n.js b/ksadk/server/static/assets/chunk-RHFEMEQ7-BIXm03MG.js similarity index 99% rename from ksadk/server/static/assets/chunk-RHFEMEQ7-yyGpsz4n.js rename to ksadk/server/static/assets/chunk-RHFEMEQ7-BIXm03MG.js index 1510723c..e06e8cd0 100644 --- a/ksadk/server/static/assets/chunk-RHFEMEQ7-yyGpsz4n.js +++ b/ksadk/server/static/assets/chunk-RHFEMEQ7-BIXm03MG.js @@ -1,4 +1,4 @@ -import{t as e}from"./channel-4cQHKtx1.js";import{t}from"./chunk-5VM5RSS4-BVHAchFb.js";import{t as n}from"./chunk-F27PBJKO-C-ipQzuS.js";import{t as r}from"./chunk-XXDRQBXY-C_32ArgP.js";import{t as i}from"./chunk-POPQ4Y6H-C030x_Z1.js";import{Ar as a,Et as o,Ir as s,Nr as c,Sr as l,Tr as u,Ut as d,Zn as f,br as p,d as m,er as h,ir as g,lr as _,n as ee,nr as te,or as ne,pr as re,sr as v,t as y,u as b,ur as x,xr as S,yr as C,zt as w}from"./MermaidBlock-Dz4IP-Tx.js";var T=`flowchart-`,E=class{constructor(){this.vertexCounter=0,this.config=_(),this.diagramId=``,this.vertices=new Map,this.edges=[],this.classes=new Map,this.subGraphs=[],this.subGraphLookup=new Map,this.tooltips=new Map,this.subCount=0,this.firstGraphFlag=!0,this.secCount=-1,this.posCrossRef=[],this.funs=[],this.setAccTitle=p,this.setAccDescription=C,this.setDiagramTitle=l,this.getAccTitle=v,this.getAccDescription=ne,this.getDiagramTitle=x,this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen(`gen-2`)}static{s(this,`FlowDB`)}sanitizeText(e){return te.sanitizeText(e,this.config)}sanitizeNodeLabelType(e){switch(e){case`markdown`:case`string`:case`text`:return e;default:return`markdown`}}setDiagramId(e){this.diagramId=e}lookUpDomId(e){for(let t of this.vertices.values())if(t.id===e)return this.diagramId?`${this.diagramId}-${t.domId}`:t.domId;return this.diagramId?`${this.diagramId}-${e}`:e}addVertex(e,t,n,r,i,a,s={},l){if(!e||e.trim().length===0)return;let u;if(l!==void 0){let e;e=l.includes(` +import{t as e}from"./channel-CdffTTpb.js";import{t}from"./chunk-5VM5RSS4-VZAcej21.js";import{t as n}from"./chunk-F27PBJKO-DNUQP5bs.js";import{t as r}from"./chunk-XXDRQBXY-WtVtVhpq.js";import{t as i}from"./chunk-POPQ4Y6H-BvutC1JH.js";import{Ar as a,Et as o,Ir as s,Nr as c,Sr as l,Tr as u,Ut as d,Zn as f,br as p,d as m,er as h,ir as g,lr as _,n as ee,nr as te,or as ne,pr as re,sr as v,t as y,u as b,ur as x,xr as S,yr as C,zt as w}from"./MermaidBlock-CI9NjqQx.js";var T=`flowchart-`,E=class{constructor(){this.vertexCounter=0,this.config=_(),this.diagramId=``,this.vertices=new Map,this.edges=[],this.classes=new Map,this.subGraphs=[],this.subGraphLookup=new Map,this.tooltips=new Map,this.subCount=0,this.firstGraphFlag=!0,this.secCount=-1,this.posCrossRef=[],this.funs=[],this.setAccTitle=p,this.setAccDescription=C,this.setDiagramTitle=l,this.getAccTitle=v,this.getAccDescription=ne,this.getDiagramTitle=x,this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen(`gen-2`)}static{s(this,`FlowDB`)}sanitizeText(e){return te.sanitizeText(e,this.config)}sanitizeNodeLabelType(e){switch(e){case`markdown`:case`string`:case`text`:return e;default:return`markdown`}}setDiagramId(e){this.diagramId=e}lookUpDomId(e){for(let t of this.vertices.values())if(t.id===e)return this.diagramId?`${this.diagramId}-${t.domId}`:t.domId;return this.diagramId?`${this.diagramId}-${e}`:e}addVertex(e,t,n,r,i,a,s={},l){if(!e||e.trim().length===0)return;let u;if(l!==void 0){let e;e=l.includes(` `)?l+` `:`{ `+l+` diff --git a/ksadk/server/static/assets/chunk-SVP7TREG-BLTlmMU7.js b/ksadk/server/static/assets/chunk-SVP7TREG--LDO57tP.js similarity index 99% rename from ksadk/server/static/assets/chunk-SVP7TREG-BLTlmMU7.js rename to ksadk/server/static/assets/chunk-SVP7TREG--LDO57tP.js index bf3367e3..43a0619a 100644 --- a/ksadk/server/static/assets/chunk-SVP7TREG-BLTlmMU7.js +++ b/ksadk/server/static/assets/chunk-SVP7TREG--LDO57tP.js @@ -1,4 +1,4 @@ -import{Ir as e,Nr as t,bn as n,cr as r,dr as i,er as a,lr as o,rr as s,vr as c}from"./MermaidBlock-Dz4IP-Tx.js";var l=``,u=``,d=``,f=[],p=new Map,m=e(e=>c(e,o()),`sanitizeText`),h=e(e=>{switch(e.type){case`terminal`:return{...e,value:m(e.value)};case`nonterminal`:return{...e,name:m(e.name)};case`sequence`:return{...e,elements:e.elements.map(h)};case`choice`:return{...e,alternatives:e.alternatives.map(h)};case`optional`:return{...e,element:h(e.element)};case`repetition`:return{...e,element:h(e.element),separator:e.separator?h(e.separator):void 0};case`special`:return{...e,text:m(e.text)}}},`sanitizeAstNode`),g=e(()=>{l=``,u=``,d=``,f.length=0,p.clear(),a(),t.debug(`[Railroad] Database cleared`)},`clear`),_=e(e=>{l=m(e),t.debug(`[Railroad] Title set:`,e)},`setTitle`),v=e(()=>l,`getTitle`),y={clear:g,setTitle:_,getTitle:v,addRule:e(e=>{let n={...e,name:m(e.name),definition:h(e.definition),comment:e.comment?m(e.comment):void 0};t.debug(`[Railroad] Adding rule:`,n.name),p.has(n.name)&&t.warn(`[Railroad] Rule '${n.name}' is already defined. Overwriting.`),f.push(n),p.set(n.name,n)},`addRule`),getRules:e(()=>f,`getRules`),getRule:e(e=>p.get(e),`getRule`),setAccTitle:e(e=>{u=m(e).replace(/^\s+/g,``),t.debug(`[Railroad] Accessibility title set:`,e)},`setAccTitle`),getAccTitle:e(()=>u,`getAccTitle`),setAccDescription:e(e=>{d=m(e).replace(/\n\s+/g,` +import{Ir as e,Nr as t,bn as n,cr as r,dr as i,er as a,lr as o,rr as s,vr as c}from"./MermaidBlock-CI9NjqQx.js";var l=``,u=``,d=``,f=[],p=new Map,m=e(e=>c(e,o()),`sanitizeText`),h=e(e=>{switch(e.type){case`terminal`:return{...e,value:m(e.value)};case`nonterminal`:return{...e,name:m(e.name)};case`sequence`:return{...e,elements:e.elements.map(h)};case`choice`:return{...e,alternatives:e.alternatives.map(h)};case`optional`:return{...e,element:h(e.element)};case`repetition`:return{...e,element:h(e.element),separator:e.separator?h(e.separator):void 0};case`special`:return{...e,text:m(e.text)}}},`sanitizeAstNode`),g=e(()=>{l=``,u=``,d=``,f.length=0,p.clear(),a(),t.debug(`[Railroad] Database cleared`)},`clear`),_=e(e=>{l=m(e),t.debug(`[Railroad] Title set:`,e)},`setTitle`),v=e(()=>l,`getTitle`),y={clear:g,setTitle:_,getTitle:v,addRule:e(e=>{let n={...e,name:m(e.name),definition:h(e.definition),comment:e.comment?m(e.comment):void 0};t.debug(`[Railroad] Adding rule:`,n.name),p.has(n.name)&&t.warn(`[Railroad] Rule '${n.name}' is already defined. Overwriting.`),f.push(n),p.set(n.name,n)},`addRule`),getRules:e(()=>f,`getRules`),getRule:e(e=>p.get(e),`getRule`),setAccTitle:e(e=>{u=m(e).replace(/^\s+/g,``),t.debug(`[Railroad] Accessibility title set:`,e)},`setAccTitle`),getAccTitle:e(()=>u,`getAccTitle`),setAccDescription:e(e=>{d=m(e).replace(/\n\s+/g,` `),t.debug(`[Railroad] Accessibility description set:`,e)},`setAccDescription`),getAccDescription:e(()=>d,`getAccDescription`),setDiagramTitle:_,getDiagramTitle:v},b={compactMode:!1,padding:10,verticalSeparation:8,horizontalSeparation:10,arcRadius:10,fontSize:14,fontFamily:`monospace`,terminalFill:`#FFFFC0`,terminalStroke:`#000000`,terminalTextColor:`#000000`,nonTerminalFill:`#FFFFFF`,nonTerminalStroke:`#000000`,nonTerminalTextColor:`#000000`,lineColor:`#000000`,strokeWidth:2,markerFill:`#000000`,commentFill:`#E8E8E8`,commentStroke:`#888888`,commentTextColor:`#666666`,specialFill:`#F0E0FF`,specialStroke:`#8800CC`,ruleNameColor:`#000066`,showMarkers:!0,markerRadius:5},x=/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$|^(?:rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch)\([\d\s%+,./-]+\)$|^[a-z]+$/i,S=/^[\w "',.-]+$/,C=new Set([`compactMode`,`padding`,`verticalSeparation`,`horizontalSeparation`,`arcRadius`,`fontSize`,`fontFamily`,`terminalFill`,`terminalStroke`,`terminalTextColor`,`nonTerminalFill`,`nonTerminalStroke`,`nonTerminalTextColor`,`lineColor`,`strokeWidth`,`markerFill`,`commentFill`,`commentStroke`,`commentTextColor`,`specialFill`,`specialStroke`,`ruleNameColor`,`showMarkers`,`markerRadius`]),w=e(e=>e?Object.keys(e).every(e=>e===`railroad`||C.has(e)):!1,`isRailroadStyleOptions`),T=e(e=>e?`railroad`in e&&e.railroad?e.railroad:w(e)?e:{}:{},`extractRailroadOverrides`),E=e(e=>{if(!e||w(e))return{};let{railroad:t,svgId:n,theme:r,look:i,...a}=e;return a},`extractThemeOverrides`),D=e((e,t)=>{if(typeof e!=`string`)return t;let n=e.trim();return x.test(n)?n:t},`sanitizeColorValue`),O=e((e,t)=>{if(typeof e!=`string`)return t;let n=e.trim();return S.test(n)?n:t},`sanitizeFontFamilyValue`),k=e((e,t)=>{let n=typeof e==`number`?e:typeof e==`string`?Number.parseFloat(e):NaN;return Number.isFinite(n)&&n>=0?n:t},`sanitizeNumberValue`),A=e(e=>{let t=typeof e==`number`?e:typeof e==`string`?Number.parseFloat(e):NaN;return Number.isFinite(t)&&t>0?t:void 0},`parseThemeFontSize`),j=e(e=>{let t=O(e.fontFamily,b.fontFamily),n=A(e.fontSize)??b.fontSize;return{...b,fontFamily:t,fontSize:n,terminalFill:D(e.secondBkg??e.secondaryColor,b.terminalFill),terminalStroke:D(e.secondaryBorderColor??e.lineColor,b.terminalStroke),terminalTextColor:D(e.secondaryTextColor??e.textColor,b.terminalTextColor),nonTerminalFill:D(e.mainBkg??e.background,b.nonTerminalFill),nonTerminalStroke:D(e.primaryBorderColor??e.lineColor,b.nonTerminalStroke),nonTerminalTextColor:D(e.primaryTextColor??e.textColor,b.nonTerminalTextColor),lineColor:D(e.lineColor,b.lineColor),markerFill:D(e.lineColor,b.markerFill),commentFill:D(e.labelBackground??e.tertiaryColor,b.commentFill),commentStroke:D(e.tertiaryBorderColor??e.lineColor,b.commentStroke),commentTextColor:D(e.tertiaryTextColor??e.textColor,b.commentTextColor),specialFill:D(e.tertiaryColor??e.secondaryColor,b.specialFill),specialStroke:D(e.tertiaryBorderColor??e.secondaryBorderColor,b.specialStroke),ruleNameColor:D(e.titleColor??e.textColor,b.ruleNameColor)}},`buildThemeDefaults`),M=e(e=>{let t=r(),n=j({...i(),...t.themeVariables??{},...E(e)}),a={...t.railroad??{},...T(e)};return{compactMode:a.compactMode??n.compactMode,padding:k(a.padding,n.padding),verticalSeparation:k(a.verticalSeparation,n.verticalSeparation),horizontalSeparation:k(a.horizontalSeparation,n.horizontalSeparation),arcRadius:k(a.arcRadius,n.arcRadius),fontSize:k(a.fontSize,n.fontSize),fontFamily:O(a.fontFamily,n.fontFamily),terminalFill:D(a.terminalFill,n.terminalFill),terminalStroke:D(a.terminalStroke,n.terminalStroke),terminalTextColor:D(a.terminalTextColor,n.terminalTextColor),nonTerminalFill:D(a.nonTerminalFill,n.nonTerminalFill),nonTerminalStroke:D(a.nonTerminalStroke,n.nonTerminalStroke),nonTerminalTextColor:D(a.nonTerminalTextColor,n.nonTerminalTextColor),lineColor:D(a.lineColor,n.lineColor),strokeWidth:k(a.strokeWidth,n.strokeWidth),markerFill:D(a.markerFill,n.markerFill),commentFill:D(a.commentFill,n.commentFill),commentStroke:D(a.commentStroke,n.commentStroke),commentTextColor:D(a.commentTextColor,n.commentTextColor),specialFill:D(a.specialFill,n.specialFill),specialStroke:D(a.specialStroke,n.specialStroke),ruleNameColor:D(a.ruleNameColor,n.ruleNameColor),showMarkers:a.showMarkers??n.showMarkers,markerRadius:k(a.markerRadius,n.markerRadius)}},`buildRailroadStyleOptions`),N=e(e=>{let{fontFamily:t,fontSize:n,terminalFill:r,terminalStroke:i,terminalTextColor:a,nonTerminalFill:o,nonTerminalStroke:s,nonTerminalTextColor:c,lineColor:l,strokeWidth:u,markerFill:d,commentFill:f,commentStroke:p,commentTextColor:m,specialFill:h,specialStroke:g,ruleNameColor:_}=M(e);return` .railroad-diagram { font-family: ${t}; diff --git a/ksadk/server/static/assets/chunk-XXDRQBXY-C_32ArgP.js b/ksadk/server/static/assets/chunk-XXDRQBXY-WtVtVhpq.js similarity index 72% rename from ksadk/server/static/assets/chunk-XXDRQBXY-C_32ArgP.js rename to ksadk/server/static/assets/chunk-XXDRQBXY-WtVtVhpq.js index f2f521f7..df150152 100644 --- a/ksadk/server/static/assets/chunk-XXDRQBXY-C_32ArgP.js +++ b/ksadk/server/static/assets/chunk-XXDRQBXY-WtVtVhpq.js @@ -1 +1 @@ -import{Ir as e,Zn as t}from"./MermaidBlock-Dz4IP-Tx.js";var n=e((e,n)=>{let r;return n===`sandbox`&&(r=t(`#i`+e)),t(n===`sandbox`?r.nodes()[0].contentDocument.body:`body`).select(`[id="${e}"]`)},`getDiagramElement`);export{n as t}; \ No newline at end of file +import{Ir as e,Zn as t}from"./MermaidBlock-CI9NjqQx.js";var n=e((e,n)=>{let r;return n===`sandbox`&&(r=t(`#i`+e)),t(n===`sandbox`?r.nodes()[0].contentDocument.body:`body`).select(`[id="${e}"]`)},`getDiagramElement`);export{n as t}; \ No newline at end of file diff --git a/ksadk/server/static/assets/classDiagram-DTDB5LWJ-C0BU8Yr9.js b/ksadk/server/static/assets/classDiagram-DTDB5LWJ-C0BU8Yr9.js new file mode 100644 index 00000000..5ea1da8b --- /dev/null +++ b/ksadk/server/static/assets/classDiagram-DTDB5LWJ-C0BU8Yr9.js @@ -0,0 +1 @@ +import"./chunk-F27PBJKO-DNUQP5bs.js";import"./chunk-XXDRQBXY-WtVtVhpq.js";import"./chunk-POPQ4Y6H-BvutC1JH.js";import{i as e,n as t,r as n,t as r}from"./chunk-LCL6LL3I-BT3bzrVf.js";import{Ir as i}from"./MermaidBlock-CI9NjqQx.js";var a={parser:t,get db(){return new r},renderer:n,styles:e,init:i(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram}; \ No newline at end of file diff --git a/ksadk/server/static/assets/classDiagram-DTDB5LWJ-DLFd9Xi0.js b/ksadk/server/static/assets/classDiagram-DTDB5LWJ-DLFd9Xi0.js deleted file mode 100644 index e74d07fb..00000000 --- a/ksadk/server/static/assets/classDiagram-DTDB5LWJ-DLFd9Xi0.js +++ /dev/null @@ -1 +0,0 @@ -import"./chunk-F27PBJKO-C-ipQzuS.js";import"./chunk-XXDRQBXY-C_32ArgP.js";import"./chunk-POPQ4Y6H-C030x_Z1.js";import{i as e,n as t,r as n,t as r}from"./chunk-LCL6LL3I-BcI6ysPT.js";import{Ir as i}from"./MermaidBlock-Dz4IP-Tx.js";var a={parser:t,get db(){return new r},renderer:n,styles:e,init:i(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram}; \ No newline at end of file diff --git a/ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-C0BU8Yr9.js b/ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-C0BU8Yr9.js new file mode 100644 index 00000000..5ea1da8b --- /dev/null +++ b/ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-C0BU8Yr9.js @@ -0,0 +1 @@ +import"./chunk-F27PBJKO-DNUQP5bs.js";import"./chunk-XXDRQBXY-WtVtVhpq.js";import"./chunk-POPQ4Y6H-BvutC1JH.js";import{i as e,n as t,r as n,t as r}from"./chunk-LCL6LL3I-BT3bzrVf.js";import{Ir as i}from"./MermaidBlock-CI9NjqQx.js";var a={parser:t,get db(){return new r},renderer:n,styles:e,init:i(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram}; \ No newline at end of file diff --git a/ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-DLFd9Xi0.js b/ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-DLFd9Xi0.js deleted file mode 100644 index e74d07fb..00000000 --- a/ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-DLFd9Xi0.js +++ /dev/null @@ -1 +0,0 @@ -import"./chunk-F27PBJKO-C-ipQzuS.js";import"./chunk-XXDRQBXY-C_32ArgP.js";import"./chunk-POPQ4Y6H-C030x_Z1.js";import{i as e,n as t,r as n,t as r}from"./chunk-LCL6LL3I-BcI6ysPT.js";import{Ir as i}from"./MermaidBlock-Dz4IP-Tx.js";var a={parser:t,get db(){return new r},renderer:n,styles:e,init:i(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram}; \ No newline at end of file diff --git a/ksadk/server/static/assets/cose-bilkent-JH36ORCC-9YQYwdl0.js b/ksadk/server/static/assets/cose-bilkent-JH36ORCC-CnqJMsPI.js similarity index 99% rename from ksadk/server/static/assets/cose-bilkent-JH36ORCC-9YQYwdl0.js rename to ksadk/server/static/assets/cose-bilkent-JH36ORCC-CnqJMsPI.js index 1f48ee95..55b56821 100644 --- a/ksadk/server/static/assets/cose-bilkent-JH36ORCC-9YQYwdl0.js +++ b/ksadk/server/static/assets/cose-bilkent-JH36ORCC-CnqJMsPI.js @@ -1 +1 @@ -import{Ct as e,Tt as t}from"./index-8ipRcQ-M.js";import{t as n}from"./cytoscape.esm-CyCl8rPi.js";import{Ir as r,Nr as i,Zn as a}from"./MermaidBlock-Dz4IP-Tx.js";var o=e(((e,t)=>{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r():typeof define==`function`&&define.amd?define([],r):typeof e==`object`?e.layoutBase=r():n.layoutBase=r()})(e,function(){return(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.i=function(e){return e},n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=26)})([(function(e,t,n){function r(){}r.QUALITY=1,r.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,r.DEFAULT_INCREMENTAL=!1,r.DEFAULT_ANIMATION_ON_LAYOUT=!0,r.DEFAULT_ANIMATION_DURING_LAYOUT=!1,r.DEFAULT_ANIMATION_PERIOD=50,r.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,r.DEFAULT_GRAPH_MARGIN=15,r.NODE_DIMENSIONS_INCLUDE_LABELS=!1,r.SIMPLE_NODE_SIZE=40,r.SIMPLE_NODE_HALF_SIZE=r.SIMPLE_NODE_SIZE/2,r.EMPTY_COMPOUND_NODE_SIZE=40,r.MIN_EDGE_LENGTH=1,r.WORLD_BOUNDARY=1e6,r.INITIAL_WORLD_BOUNDARY=r.WORLD_BOUNDARY/1e3,r.WORLD_CENTER_X=1200,r.WORLD_CENTER_Y=900,e.exports=r}),(function(e,t,n){var r=n(2),i=n(8),a=n(9);function o(e,t,n){r.call(this,n),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=n,this.bendpoints=[],this.source=e,this.target=t}for(var s in o.prototype=Object.create(r.prototype),r)o[s]=r[s];o.prototype.getSource=function(){return this.source},o.prototype.getTarget=function(){return this.target},o.prototype.isInterGraph=function(){return this.isInterGraph},o.prototype.getLength=function(){return this.length},o.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},o.prototype.getBendpoints=function(){return this.bendpoints},o.prototype.getLca=function(){return this.lca},o.prototype.getSourceInLca=function(){return this.sourceInLca},o.prototype.getTargetInLca=function(){return this.targetInLca},o.prototype.getOtherEnd=function(e){if(this.source===e)return this.target;if(this.target===e)return this.source;throw`Node is not incident with this edge`},o.prototype.getOtherEndInGraph=function(e,t){for(var n=this.getOtherEnd(e),r=t.getGraphManager().getRoot();;){if(n.getOwner()==t)return n;if(n.getOwner()==r)break;n=n.getOwner().getParent()}return null},o.prototype.updateLength=function(){var e=[,,,,];this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),e),this.isOverlapingSourceAndTarget||(this.lengthX=e[0]-e[2],this.lengthY=e[1]-e[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},o.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},e.exports=o}),(function(e,t,n){function r(e){this.vGraphObject=e}e.exports=r}),(function(e,t,n){var r=n(2),i=n(10),a=n(13),o=n(0),s=n(16),c=n(4);function l(e,t,n,o){n==null&&o==null&&(o=t),r.call(this,o),e.graphManager!=null&&(e=e.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=o,this.edges=[],this.graphManager=e,n!=null&&t!=null?this.rect=new a(t.x,t.y,n.width,n.height):this.rect=new a}for(var u in l.prototype=Object.create(r.prototype),r)l[u]=r[u];l.prototype.getEdges=function(){return this.edges},l.prototype.getChild=function(){return this.child},l.prototype.getOwner=function(){return this.owner},l.prototype.getWidth=function(){return this.rect.width},l.prototype.setWidth=function(e){this.rect.width=e},l.prototype.getHeight=function(){return this.rect.height},l.prototype.setHeight=function(e){this.rect.height=e},l.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},l.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},l.prototype.getCenter=function(){return new c(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},l.prototype.getLocation=function(){return new c(this.rect.x,this.rect.y)},l.prototype.getRect=function(){return this.rect},l.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},l.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},l.prototype.setRect=function(e,t){this.rect.x=e.x,this.rect.y=e.y,this.rect.width=t.width,this.rect.height=t.height},l.prototype.setCenter=function(e,t){this.rect.x=e-this.rect.width/2,this.rect.y=t-this.rect.height/2},l.prototype.setLocation=function(e,t){this.rect.x=e,this.rect.y=t},l.prototype.moveBy=function(e,t){this.rect.x+=e,this.rect.y+=t},l.prototype.getEdgeListToNode=function(e){var t=[],n=this;return n.edges.forEach(function(r){if(r.target==e){if(r.source!=n)throw`Incorrect edge source!`;t.push(r)}}),t},l.prototype.getEdgesBetween=function(e){var t=[],n=this;return n.edges.forEach(function(r){if(!(r.source==n||r.target==n))throw`Incorrect edge source and/or target`;(r.target==e||r.source==e)&&t.push(r)}),t},l.prototype.getNeighborsList=function(){var e=new Set,t=this;return t.edges.forEach(function(n){if(n.source==t)e.add(n.target);else{if(n.target!=t)throw`Incorrect incidency!`;e.add(n.source)}}),e},l.prototype.withChildren=function(){var e=new Set,t,n;if(e.add(this),this.child!=null)for(var r=this.child.getNodes(),i=0;it&&(this.rect.x-=(this.labelWidth-t)/2,this.setWidth(this.labelWidth)),this.labelHeight>n&&(this.labelPos==`center`?this.rect.y-=(this.labelHeight-n)/2:this.labelPos==`top`&&(this.rect.y-=this.labelHeight-n),this.setHeight(this.labelHeight))}}},l.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw`assert failed`;return this.inclusionTreeDepth},l.prototype.transform=function(e){var t=this.rect.x;t>o.WORLD_BOUNDARY?t=o.WORLD_BOUNDARY:t<-o.WORLD_BOUNDARY&&(t=-o.WORLD_BOUNDARY);var n=this.rect.y;n>o.WORLD_BOUNDARY?n=o.WORLD_BOUNDARY:n<-o.WORLD_BOUNDARY&&(n=-o.WORLD_BOUNDARY);var r=new c(t,n),i=e.inverseTransformPoint(r);this.setLocation(i.x,i.y)},l.prototype.getLeft=function(){return this.rect.x},l.prototype.getRight=function(){return this.rect.x+this.rect.width},l.prototype.getTop=function(){return this.rect.y},l.prototype.getBottom=function(){return this.rect.y+this.rect.height},l.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},e.exports=l}),(function(e,t,n){function r(e,t){e==null&&t==null?(this.x=0,this.y=0):(this.x=e,this.y=t)}r.prototype.getX=function(){return this.x},r.prototype.getY=function(){return this.y},r.prototype.setX=function(e){this.x=e},r.prototype.setY=function(e){this.y=e},r.prototype.getDifference=function(e){return new DimensionD(this.x-e.x,this.y-e.y)},r.prototype.getCopy=function(){return new r(this.x,this.y)},r.prototype.translate=function(e){return this.x+=e.width,this.y+=e.height,this},e.exports=r}),(function(e,t,n){var r=n(2),i=n(10),a=n(0),o=n(6),s=n(3),c=n(1),l=n(13),u=n(12),d=n(11);function f(e,t,n){r.call(this,n),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=e,t!=null&&t instanceof o?this.graphManager=t:t!=null&&t instanceof Layout&&(this.graphManager=t.graphManager)}for(var p in f.prototype=Object.create(r.prototype),r)f[p]=r[p];f.prototype.getNodes=function(){return this.nodes},f.prototype.getEdges=function(){return this.edges},f.prototype.getGraphManager=function(){return this.graphManager},f.prototype.getParent=function(){return this.parent},f.prototype.getLeft=function(){return this.left},f.prototype.getRight=function(){return this.right},f.prototype.getTop=function(){return this.top},f.prototype.getBottom=function(){return this.bottom},f.prototype.isConnected=function(){return this.isConnected},f.prototype.add=function(e,t,n){if(t==null&&n==null){var r=e;if(this.graphManager==null)throw`Graph has no graph mgr!`;if(this.getNodes().indexOf(r)>-1)throw`Node already in graph!`;return r.owner=this,this.getNodes().push(r),r}else{var i=e;if(!(this.getNodes().indexOf(t)>-1&&this.getNodes().indexOf(n)>-1))throw`Source or target not in graph!`;if(!(t.owner==n.owner&&t.owner==this))throw`Both owners must be this graph!`;return t.owner==n.owner?(i.source=t,i.target=n,i.isInterGraph=!1,this.getEdges().push(i),t.edges.push(i),n!=t&&n.edges.push(i),i):null}},f.prototype.remove=function(e){var t=e;if(e instanceof s){if(t==null)throw`Node is null!`;if(!(t.owner!=null&&t.owner==this))throw`Owner graph is invalid!`;if(this.graphManager==null)throw`Owner graph manager is invalid!`;for(var n=t.edges.slice(),r,i=n.length,a=0;a-1&&u>-1))throw`Source and/or target doesn't know this edge!`;r.source.edges.splice(l,1),r.target!=r.source&&r.target.edges.splice(u,1);var o=r.source.owner.getEdges().indexOf(r);if(o==-1)throw`Not in owner's edge list!`;r.source.owner.getEdges().splice(o,1)}},f.prototype.updateLeftTop=function(){for(var e=i.MAX_VALUE,t=i.MAX_VALUE,n,r,a,o=this.getNodes(),s=o.length,c=0;cn&&(e=n),t>r&&(t=r)}return e==i.MAX_VALUE?null:(a=o[0].getParent().paddingLeft==null?this.margin:o[0].getParent().paddingLeft,this.left=t-a,this.top=e-a,new u(this.left,this.top))},f.prototype.updateBounds=function(e){for(var t=i.MAX_VALUE,n=-i.MAX_VALUE,r=i.MAX_VALUE,a=-i.MAX_VALUE,o,s,c,u,d,f=this.nodes,p=f.length,m=0;mo&&(t=o),nc&&(r=c),ao&&(t=o),nc&&(r=c),a=this.nodes.length){var c=0;n.forEach(function(t){t.owner==e&&c++}),c==this.nodes.length&&(this.isConnected=!0)}},e.exports=f}),(function(e,t,n){var r,i=n(1);function a(e){r=n(5),this.layout=e,this.graphs=[],this.edges=[]}a.prototype.addRoot=function(){var e=this.layout.newGraph(),t=this.layout.newNode(null),n=this.add(e,t);return this.setRootGraph(n),this.rootGraph},a.prototype.add=function(e,t,n,r,i){if(n==null&&r==null&&i==null){if(e==null)throw`Graph is null!`;if(t==null)throw`Parent node is null!`;if(this.graphs.indexOf(e)>-1)throw`Graph already in this graph mgr!`;if(this.graphs.push(e),e.parent!=null)throw`Already has a parent!`;if(t.child!=null)throw`Already has a child!`;return e.parent=t,t.child=e,e}else{i=n,r=t,n=e;var a=r.getOwner(),o=i.getOwner();if(!(a!=null&&a.getGraphManager()==this))throw`Source not in this graph mgr!`;if(!(o!=null&&o.getGraphManager()==this))throw`Target not in this graph mgr!`;if(a==o)return n.isInterGraph=!1,a.add(n,r,i);if(n.isInterGraph=!0,n.source=r,n.target=i,this.edges.indexOf(n)>-1)throw`Edge already in inter-graph edge list!`;if(this.edges.push(n),!(n.source!=null&&n.target!=null))throw`Edge source and/or target is null!`;if(!(n.source.edges.indexOf(n)==-1&&n.target.edges.indexOf(n)==-1))throw`Edge already in source and/or target incidency list!`;return n.source.edges.push(n),n.target.edges.push(n),n}},a.prototype.remove=function(e){if(e instanceof r){var t=e;if(t.getGraphManager()!=this)throw`Graph not in this graph mgr`;if(!(t==this.rootGraph||t.parent!=null&&t.parent.graphManager==this))throw`Invalid parent node!`;var n=[];n=n.concat(t.getEdges());for(var a,o=n.length,s=0;s=t.getRight()?n[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight()):t.getX()<=e.getX()&&t.getRight()>=e.getRight()&&(n[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight())),e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()?n[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()):t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()&&(n[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()));var a=Math.abs((t.getCenterY()-e.getCenterY())/(t.getCenterX()-e.getCenterX()));t.getCenterY()===e.getCenterY()&&t.getCenterX()===e.getCenterX()&&(a=1);var o=a*n[0],s=n[1]/a;n[0]o)return n[0]=r,n[1]=c,n[2]=a,n[3]=y,!1;if(ia)return n[0]=s,n[1]=i,n[2]=_,n[3]=o,!1;if(ra?(n[0]=u,n[1]=d,C=!0):(n[0]=l,n[1]=c,C=!0):T===D&&(r>a?(n[0]=s,n[1]=c,C=!0):(n[0]=f,n[1]=d,C=!0)),-E===D?a>r?(n[2]=v,n[3]=y,w=!0):(n[2]=_,n[3]=g,w=!0):E===D&&(a>r?(n[2]=h,n[3]=g,w=!0):(n[2]=b,n[3]=y,w=!0)),C&&w)return!1;if(r>a?i>o?(O=this.getCardinalDirection(T,D,4),k=this.getCardinalDirection(E,D,2)):(O=this.getCardinalDirection(-T,D,3),k=this.getCardinalDirection(-E,D,1)):i>o?(O=this.getCardinalDirection(-T,D,1),k=this.getCardinalDirection(-E,D,3)):(O=this.getCardinalDirection(T,D,2),k=this.getCardinalDirection(E,D,4)),!C)switch(O){case 1:j=c,A=r+-m/D,n[0]=A,n[1]=j;break;case 2:A=f,j=i+p*D,n[0]=A,n[1]=j;break;case 3:j=d,A=r+m/D,n[0]=A,n[1]=j;break;case 4:A=u,j=i+-p*D,n[0]=A,n[1]=j;break}if(!w)switch(k){case 1:N=g,M=a+-S/D,n[2]=M,n[3]=N;break;case 2:M=b,N=o+x*D,n[2]=M,n[3]=N;break;case 3:N=y,M=a+S/D,n[2]=M,n[3]=N;break;case 4:M=v,N=o+-x*D,n[2]=M,n[3]=N;break}}return!1},i.getCardinalDirection=function(e,t,n){return e>t?n:1+n%4},i.getIntersection=function(e,t,n,i){if(i==null)return this.getIntersection2(e,t,n);var a=e.x,o=e.y,s=t.x,c=t.y,l=n.x,u=n.y,d=i.x,f=i.y,p=void 0,m=void 0,h=void 0,g=void 0,_=void 0,v=void 0,y=void 0,b=void 0,x=void 0;return h=c-o,_=a-s,y=s*o-a*c,g=f-u,v=l-d,b=d*u-l*f,x=h*v-g*_,x===0?null:(p=(_*b-v*y)/x,m=(g*y-h*b)/x,new r(p,m))},i.angleOfVector=function(e,t,n,r){var i=void 0;return e===n?i=r0?1:e<0?-1:0},r.floor=function(e){return e<0?Math.ceil(e):Math.floor(e)},r.ceil=function(e){return e<0?Math.floor(e):Math.ceil(e)},e.exports=r}),(function(e,t,n){function r(){}r.MAX_VALUE=2147483647,r.MIN_VALUE=-2147483648,e.exports=r}),(function(e,t,n){var r=function(){function e(e,t){for(var n=0;n0&&t;){for(s.push(l[0]);s.length>0&&t;){var u=s[0];s.splice(0,1),o.add(u);for(var d=u.getEdges(),a=0;a-1&&l.splice(h,1)}o=new Set,c=new Map}}return e},f.prototype.createDummyNodesForBendpoints=function(e){for(var t=[],n=e.source,r=this.graphManager.calcLowestCommonAncestor(e.source,e.target),i=0;i0){for(var i=this.edgeToDummyNodes.get(n),a=0;a=0&&t.splice(d,1),s.getNeighborsList().forEach(function(e){if(n.indexOf(e)<0){var t=r.get(e)-1;t==1&&l.push(e),r.set(e,t)}})}n=n.concat(l),(t.length==1||t.length==2)&&(i=!0,a=t[0])}return a},f.prototype.setGraphManager=function(e){this.graphManager=e},e.exports=f}),(function(e,t,n){function r(){}r.seed=1,r.x=0,r.nextDouble=function(){return r.x=Math.sin(r.seed++)*1e4,r.x-Math.floor(r.x)},e.exports=r}),(function(e,t,n){var r=n(4);function i(e,t){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(e){this.lworldOrgX=e},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(e){this.lworldOrgY=e},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(e){this.lworldExtX=e},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(e){this.lworldExtY=e},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(e){this.ldeviceOrgX=e},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(e){this.ldeviceOrgY=e},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(e){this.ldeviceExtX=e},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(e){this.ldeviceExtY=e},i.prototype.transformX=function(e){var t=0,n=this.lworldExtX;return n!=0&&(t=this.ldeviceOrgX+(e-this.lworldOrgX)*this.ldeviceExtX/n),t},i.prototype.transformY=function(e){var t=0,n=this.lworldExtY;return n!=0&&(t=this.ldeviceOrgY+(e-this.lworldOrgY)*this.ldeviceExtY/n),t},i.prototype.inverseTransformX=function(e){var t=0,n=this.ldeviceExtX;return n!=0&&(t=this.lworldOrgX+(e-this.ldeviceOrgX)*this.lworldExtX/n),t},i.prototype.inverseTransformY=function(e){var t=0,n=this.ldeviceExtY;return n!=0&&(t=this.lworldOrgY+(e-this.ldeviceOrgY)*this.lworldExtY/n),t},i.prototype.inverseTransformPoint=function(e){return new r(this.inverseTransformX(e.x),this.inverseTransformY(e.y))},e.exports=i}),(function(e,t,n){function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);ta.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(e-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(e>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(e-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},l.prototype.calcSpringForces=function(){for(var e=this.getAllEdges(),t,n=0;n0&&arguments[0]!==void 0?arguments[0]:!0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n,r,i,o,s=this.getAllNodes(),c;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&e&&this.updateGrid(),c=new Set,n=0;nc||s>c)&&(e.gravitationForceX=-this.gravityConstant*i,e.gravitationForceY=-this.gravityConstant*a)):(c=t.getEstimatedSize()*this.compoundGravityRangeFactor,(o>c||s>c)&&(e.gravitationForceX=-this.gravityConstant*i*this.compoundGravityConstant,e.gravitationForceY=-this.gravityConstant*a*this.compoundGravityConstant))},l.prototype.isConverged=function(){var e,t=!1;return this.totalIterations>this.maxIterations/3&&(t=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),e=this.totalDisplacement=c.length||u>=c[0].length)){for(var d=0;de}}]),e}()}),(function(e,t,n){var r=function(){function e(e,t){for(var n=0;n2&&arguments[2]!==void 0?arguments[2]:1,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,e),this.sequence1=t,this.sequence2=n,this.match_score=r,this.mismatch_penalty=a,this.gap_penalty=o,this.iMax=t.length+1,this.jMax=n.length+1,this.grid=Array(this.iMax);for(var s=0;s=0;n--){var r=this.listeners[n];r.event===e&&r.callback===t&&this.listeners.splice(n,1)}},i.emit=function(e,t){for(var n=0;n{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r(o()):typeof define==`function`&&define.amd?define([`layout-base`],r):typeof e==`object`?e.coseBase=r(o()):n.coseBase=r(n.layoutBase)})(e,function(e){return(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.i=function(e){return e},n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=7)})([(function(t,n){t.exports=e}),(function(e,t,n){var r=n(0).FDLayoutConstants;function i(){}for(var a in r)i[a]=r[a];i.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,i.DEFAULT_RADIAL_SEPARATION=r.DEFAULT_EDGE_LENGTH,i.DEFAULT_COMPONENT_SEPERATION=60,i.TILE=!0,i.TILING_PADDING_VERTICAL=10,i.TILING_PADDING_HORIZONTAL=10,i.TREE_REDUCTION_ON_INCREMENTAL=!1,e.exports=i}),(function(e,t,n){var r=n(0).FDLayoutEdge;function i(e,t,n){r.call(this,e,t,n)}for(var a in i.prototype=Object.create(r.prototype),r)i[a]=r[a];e.exports=i}),(function(e,t,n){var r=n(0).LGraph;function i(e,t,n){r.call(this,e,t,n)}for(var a in i.prototype=Object.create(r.prototype),r)i[a]=r[a];e.exports=i}),(function(e,t,n){var r=n(0).LGraphManager;function i(e){r.call(this,e)}for(var a in i.prototype=Object.create(r.prototype),r)i[a]=r[a];e.exports=i}),(function(e,t,n){var r=n(0).FDLayoutNode,i=n(0).IMath;function a(e,t,n,i){r.call(this,e,t,n,i)}for(var o in a.prototype=Object.create(r.prototype),r)a[o]=r[o];a.prototype.move=function(){var e=this.graphManager.getLayout();this.displacementX=e.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=e.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>e.coolingFactor*e.maxNodeDisplacement&&(this.displacementX=e.coolingFactor*e.maxNodeDisplacement*i.sign(this.displacementX)),Math.abs(this.displacementY)>e.coolingFactor*e.maxNodeDisplacement&&(this.displacementY=e.coolingFactor*e.maxNodeDisplacement*i.sign(this.displacementY)),this.child==null||this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),e.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},a.prototype.propogateDisplacementToChildren=function(e,t){for(var n=this.getChild().getNodes(),r,i=0;i0)this.positionNodesRadially(e);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),n=this.nodesWithGravity.filter(function(e){return t.has(e)});this.graphManager.setAllNodesToApplyGravitation(n),this.positionNodesRandomly()}}else if(c.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),n=this.nodesWithGravity.filter(function(e){return t.has(e)});this.graphManager.setAllNodesToApplyGravitation(n)}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},v.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%l.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-this.coolingCycle**+(Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),t=this.nodesWithGravity.filter(function(t){return e.has(t)});this.graphManager.setAllNodesToApplyGravitation(t),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var n=!this.isTreeGrowing&&!this.isGrowthFinished,r=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(n,r),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},v.prototype.getPositionsData=function(){for(var e=this.graphManager.getAllNodes(),t={},n=0;n1){var s;for(s=0;sr&&(r=Math.floor(o.y)),a=Math.floor(o.x+c.DEFAULT_COMPONENT_SEPERATION)}this.transform(new f(u.WORLD_CENTER_X-o.x/2,u.WORLD_CENTER_Y-o.y/2))},v.radialLayout=function(e,t,n){var r=Math.max(this.maxDiagonalInTree(e),c.DEFAULT_RADIAL_SEPARATION);v.branchRadialLayout(t,null,0,359,0,r);var i=g.calculateBounds(e),a=new _;a.setDeviceOrgX(i.getMinX()),a.setDeviceOrgY(i.getMinY()),a.setWorldOrgX(n.x),a.setWorldOrgY(n.y);for(var o=0;o1;){var _=g[0];g.splice(0,1);var y=u.indexOf(_);y>=0&&u.splice(y,1),p--,d--}m=t==null?0:(u.indexOf(g[0])+1)%p;for(var b=Math.abs(r-n)/d,x=m;f!=d;x=++x%p){var S=u[x].getOtherEnd(e);if(S!=t){var C=(n+f*b)%360,w=(C+b)%360;v.branchRadialLayout(S,e,C,w,i+a,a),f++}}},v.maxDiagonalInTree=function(e){for(var t=m.MIN_VALUE,n=0;nt&&(t=r)}return t},v.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},v.prototype.groupZeroDegreeMembers=function(){var e=this,t={};this.memberGroups={},this.idToDummyNode={};for(var n=[],r=this.graphManager.getAllNodes(),i=0;i1){var r=`DummyCompound_`+n;e.memberGroups[r]=t[n];var i=t[n][0].getParent(),a=new o(e.graphManager);a.id=r,a.paddingLeft=i.paddingLeft||0,a.paddingRight=i.paddingRight||0,a.paddingBottom=i.paddingBottom||0,a.paddingTop=i.paddingTop||0,e.idToDummyNode[r]=a;var s=e.getGraphManager().add(e.newGraph(),a),c=i.getChild();c.add(a);for(var l=0;l=0;e--){var t=this.compoundOrder[e],n=t.id,r=t.paddingLeft,i=t.paddingTop;this.adjustLocations(this.tiledMemberPack[n],t.rect.x,t.rect.y,r,i)}},v.prototype.repopulateZeroDegreeMembers=function(){var e=this,t=this.tiledZeroDegreePack;Object.keys(t).forEach(function(n){var r=e.idToDummyNode[n],i=r.paddingLeft,a=r.paddingTop;e.adjustLocations(t[n],r.rect.x,r.rect.y,i,a)})},v.prototype.getToBeTiled=function(e){var t=e.id;if(this.toBeTiled[t]!=null)return this.toBeTiled[t];var n=e.getChild();if(n==null)return this.toBeTiled[t]=!1,!1;for(var r=n.getNodes(),i=0;i0)return this.toBeTiled[t]=!1,!1;if(a.getChild()==null){this.toBeTiled[a.id]=!1;continue}if(!this.getToBeTiled(a))return this.toBeTiled[t]=!1,!1}return this.toBeTiled[t]=!0,!0},v.prototype.getNodeDegree=function(e){e.id;for(var t=e.getEdges(),n=0,r=0;rc&&(c=u.rect.height)}n+=c+e.verticalPadding}},v.prototype.tileCompoundMembers=function(e,t){var n=this;this.tiledMemberPack=[],Object.keys(e).forEach(function(r){var i=t[r];n.tiledMemberPack[r]=n.tileNodes(e[r],i.paddingLeft+i.paddingRight),i.rect.width=n.tiledMemberPack[r].width,i.rect.height=n.tiledMemberPack[r].height})},v.prototype.tileNodes=function(e,t){var n={rows:[],rowWidth:[],rowHeight:[],width:0,height:t,verticalPadding:c.TILING_PADDING_VERTICAL,horizontalPadding:c.TILING_PADDING_HORIZONTAL};e.sort(function(e,t){return e.rect.width*e.rect.height>t.rect.width*t.rect.height?-1:+(e.rect.width*e.rect.height0&&(a+=e.horizontalPadding),e.rowWidth[n]=a,e.width0&&(o+=e.verticalPadding);var s=0;o>e.rowHeight[n]&&(s=e.rowHeight[n],e.rowHeight[n]=o,s=e.rowHeight[n]-s),e.height+=s,e.rows[n].push(t)},v.prototype.getShortestRowIndex=function(e){for(var t=-1,n=Number.MAX_VALUE,r=0;rn&&(t=r,n=e.rowWidth[r]);return t},v.prototype.canAddHorizontal=function(e,t,n){var r=this.getShortestRowIndex(e);if(r<0)return!0;var i=e.rowWidth[r];if(i+e.horizontalPadding+t<=e.width)return!0;var a=0;e.rowHeight[r]0&&(a=n+e.verticalPadding-e.rowHeight[r]);var o=e.width-i>=t+e.horizontalPadding?(e.height+a)/(i+t+e.horizontalPadding):(e.height+a)/e.width;a=n+e.verticalPadding;var s=e.widtha&&t!=n){r.splice(-1,1),e.rows[n].push(i),e.rowWidth[t]=e.rowWidth[t]-a,e.rowWidth[n]=e.rowWidth[n]+a,e.width=e.rowWidth[instance.getLongestRowIndex(e)];for(var o=Number.MIN_VALUE,s=0;so&&(o=r[s].height);t>0&&(o+=e.verticalPadding);var c=e.rowHeight[t]+e.rowHeight[n];e.rowHeight[t]=o,e.rowHeight[n]0)for(var u=i;u<=a;u++)c[0]+=this.grid[u][o-1].length+this.grid[u][o].length-1;if(a0)for(var u=o;u<=s;u++)c[3]+=this.grid[i-1][u].length+this.grid[i][u].length-1;for(var d=m.MAX_VALUE,f,p,h=0;h{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r(s()):typeof define==`function`&&define.amd?define([`cose-base`],r):typeof e==`object`?e.cytoscapeCoseBilkent=r(s()):n.cytoscapeCoseBilkent=r(n.coseBase)})(e,function(e){return(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.i=function(e){return e},n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=1)})([(function(t,n){t.exports=e}),(function(e,t,n){var r=n(0).layoutBase.LayoutConstants,i=n(0).layoutBase.FDLayoutConstants,a=n(0).CoSEConstants,o=n(0).CoSELayout,s=n(0).CoSENode,c=n(0).layoutBase.PointD,l=n(0).layoutBase.DimensionD,u={ready:function(){},stop:function(){},quality:`default`,nodeDimensionsIncludeLabels:!1,refresh:30,fit:!0,padding:10,randomize:!0,nodeRepulsion:4500,idealEdgeLength:50,edgeElasticity:.45,nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,animate:`end`,animationDuration:500,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.5};function d(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n}function f(e){this.options=d(u,e),p(this.options)}var p=function(e){e.nodeRepulsion!=null&&(a.DEFAULT_REPULSION_STRENGTH=i.DEFAULT_REPULSION_STRENGTH=e.nodeRepulsion),e.idealEdgeLength!=null&&(a.DEFAULT_EDGE_LENGTH=i.DEFAULT_EDGE_LENGTH=e.idealEdgeLength),e.edgeElasticity!=null&&(a.DEFAULT_SPRING_STRENGTH=i.DEFAULT_SPRING_STRENGTH=e.edgeElasticity),e.nestingFactor!=null&&(a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=e.nestingFactor),e.gravity!=null&&(a.DEFAULT_GRAVITY_STRENGTH=i.DEFAULT_GRAVITY_STRENGTH=e.gravity),e.numIter!=null&&(a.MAX_ITERATIONS=i.MAX_ITERATIONS=e.numIter),e.gravityRange!=null&&(a.DEFAULT_GRAVITY_RANGE_FACTOR=i.DEFAULT_GRAVITY_RANGE_FACTOR=e.gravityRange),e.gravityCompound!=null&&(a.DEFAULT_COMPOUND_GRAVITY_STRENGTH=i.DEFAULT_COMPOUND_GRAVITY_STRENGTH=e.gravityCompound),e.gravityRangeCompound!=null&&(a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=e.gravityRangeCompound),e.initialEnergyOnIncremental!=null&&(a.DEFAULT_COOLING_FACTOR_INCREMENTAL=i.DEFAULT_COOLING_FACTOR_INCREMENTAL=e.initialEnergyOnIncremental),e.quality==`draft`?r.QUALITY=0:e.quality==`proof`?r.QUALITY=2:r.QUALITY=1,a.NODE_DIMENSIONS_INCLUDE_LABELS=i.NODE_DIMENSIONS_INCLUDE_LABELS=r.NODE_DIMENSIONS_INCLUDE_LABELS=e.nodeDimensionsIncludeLabels,a.DEFAULT_INCREMENTAL=i.DEFAULT_INCREMENTAL=r.DEFAULT_INCREMENTAL=!e.randomize,a.ANIMATE=i.ANIMATE=r.ANIMATE=e.animate,a.TILE=e.tile,a.TILING_PADDING_VERTICAL=typeof e.tilingPaddingVertical==`function`?e.tilingPaddingVertical.call():e.tilingPaddingVertical,a.TILING_PADDING_HORIZONTAL=typeof e.tilingPaddingHorizontal==`function`?e.tilingPaddingHorizontal.call():e.tilingPaddingHorizontal};f.prototype.run=function(){var e,t,n=this.options;this.idToLNode={};var r=this.layout=new o,i=this;i.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:`layoutstart`,layout:this});var a=r.newGraphManager();this.gm=a;var s=this.options.eles.nodes(),c=this.options.eles.edges();this.root=a.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(s),r);for(var l=0;l0){var h=n.getGraphManager().add(n.newGraph(),u);this.processChildrenList(h,o,n)}}},f.prototype.stop=function(){return this.stopped=!0,this};var m=function(e){e(`layout`,`cose-bilkent`,f)};typeof cytoscape<`u`&&m(cytoscape),e.exports=m})])})}))(),1);n.use(c.default);function l(e,t){e.forEach(e=>{let n={id:e.id,labelText:e.label,height:e.height,width:e.width,padding:e.padding??0};Object.keys(e).forEach(t=>{[`id`,`label`,`height`,`width`,`padding`,`x`,`y`].includes(t)||(n[t]=e[t])}),t.add({group:`nodes`,data:n,position:{x:e.x??0,y:e.y??0}})})}r(l,`addNodes`);function u(e,t){e.forEach(e=>{let n={id:e.id,source:e.start,target:e.end};Object.keys(e).forEach(t=>{[`id`,`start`,`end`].includes(t)||(n[t]=e[t])}),t.add({group:`edges`,data:n})})}r(u,`addEdges`);function d(e){return new Promise(t=>{let r=a(`body`).append(`div`).attr(`id`,`cy`).attr(`style`,`display:none`),o=n({container:document.getElementById(`cy`),style:[{selector:`edge`,style:{"curve-style":`bezier`}}]});r.remove(),l(e.nodes,o),u(e.edges,o),o.nodes().forEach(function(e){e.layoutDimensions=()=>{let t=e.data();return{w:t.width,h:t.height}}}),o.layout({name:`cose-bilkent`,quality:`proof`,styleEnabled:!1,animate:!1}).run(),o.ready(e=>{i.info(`Cytoscape ready`,e),t(o)})})}r(d,`createCytoscapeInstance`);function f(e){return e.nodes().map(e=>{let t=e.data(),n=e.position(),r={id:t.id,x:n.x,y:n.y};return Object.keys(t).forEach(e=>{e!==`id`&&(r[e]=t[e])}),r})}r(f,`extractPositionedNodes`);function p(e){return e.edges().map(e=>{let t=e.data(),n=e._private.rscratch,r={id:t.id,source:t.source,target:t.target,startX:n.startX,startY:n.startY,midX:n.midX,midY:n.midY,endX:n.endX,endY:n.endY};return Object.keys(t).forEach(e=>{[`id`,`source`,`target`].includes(e)||(r[e]=t[e])}),r})}r(p,`extractPositionedEdges`);async function m(e,t){i.debug(`Starting cose-bilkent layout algorithm`);try{h(e);let t=await d(e),n=f(t),r=p(t);return i.debug(`Layout completed: ${n.length} nodes, ${r.length} edges`),{nodes:n,edges:r}}catch(e){throw i.error(`Error in cose-bilkent layout algorithm:`,e),e}}r(m,`executeCoseBilkentLayout`);function h(e){if(!e)throw Error(`Layout data is required`);if(!e.config)throw Error(`Configuration is required in layout data`);if(!e.rootNode)throw Error(`Root node is required`);if(!e.nodes||!Array.isArray(e.nodes))throw Error(`No nodes found in layout data`);if(!Array.isArray(e.edges))throw Error(`Edges array is required in layout data`);return!0}r(h,`validateLayoutData`);var g=r(async(e,t,{insertCluster:n,insertEdge:r,insertEdgeLabel:i,insertMarkers:a,insertNode:o,log:s,positionEdgeLabel:c},{algorithm:l})=>{let u={},d={},f=t.select(`g`);a(f,e.markers,e.type,e.diagramId);let p=f.insert(`g`).attr(`class`,`subgraphs`),h=f.insert(`g`).attr(`class`,`edgePaths`),g=f.insert(`g`).attr(`class`,`edgeLabels`),_=f.insert(`g`).attr(`class`,`nodes`);s.debug(`Inserting nodes into DOM for dimension calculation`),await Promise.all(e.nodes.map(async t=>{if(t.isGroup){let e={...t};d[t.id]=e,u[t.id]=e,await n(p,t)}else{let n={...t};u[t.id]=n;let r=await o(_,t,{config:e.config,dir:e.direction||`TB`}),i=r.node().getBBox();n.width=i.width,n.height=i.height,n.domId=r,s.debug(`Node ${t.id} dimensions: ${i.width}x${i.height}`)}})),s.debug(`Running cose-bilkent layout algorithm`);let v=await m({...e,nodes:e.nodes.map(e=>{let t=u[e.id];return{...e,width:t.width,height:t.height}})},e.config);s.debug(`Positioning nodes based on layout results`),v.nodes.forEach(e=>{let t=u[e.id];t?.domId&&(t.domId.attr(`transform`,`translate(${e.x}, ${e.y})`),t.x=e.x,t.y=e.y,s.debug(`Positioned node ${t.id} at center (${e.x}, ${e.y})`))}),v.edges.forEach(t=>{let n=e.edges.find(e=>e.id===t.id);n&&(n.points=[{x:t.startX,y:t.startY},{x:t.midX,y:t.midY},{x:t.endX,y:t.endY}])}),s.debug(`Inserting and positioning edges`),await Promise.all(e.edges.map(async t=>{await i(g,t);let n=u[t.start??``],a=u[t.end??``];if(n&&a){let i=v.edges.find(e=>e.id===t.id);if(i){s.debug(`APA01 positionedEdge`,i);let o={...t};c(o,r(h,o,d,e.type,n,a,e.diagramId))}else{let i={...t,points:[{x:n.x||0,y:n.y||0},{x:a.x||0,y:a.y||0}]};c(i,r(h,i,d,e.type,n,a,e.diagramId))}}})),s.debug(`Cose-bilkent rendering completed`)},`render`);export{g as render}; \ No newline at end of file +import{Ct as e,Tt as t}from"./index-BkDx9KsG.js";import{t as n}from"./cytoscape.esm-CyCl8rPi.js";import{Ir as r,Nr as i,Zn as a}from"./MermaidBlock-CI9NjqQx.js";var o=e(((e,t)=>{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r():typeof define==`function`&&define.amd?define([],r):typeof e==`object`?e.layoutBase=r():n.layoutBase=r()})(e,function(){return(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.i=function(e){return e},n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=26)})([(function(e,t,n){function r(){}r.QUALITY=1,r.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,r.DEFAULT_INCREMENTAL=!1,r.DEFAULT_ANIMATION_ON_LAYOUT=!0,r.DEFAULT_ANIMATION_DURING_LAYOUT=!1,r.DEFAULT_ANIMATION_PERIOD=50,r.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,r.DEFAULT_GRAPH_MARGIN=15,r.NODE_DIMENSIONS_INCLUDE_LABELS=!1,r.SIMPLE_NODE_SIZE=40,r.SIMPLE_NODE_HALF_SIZE=r.SIMPLE_NODE_SIZE/2,r.EMPTY_COMPOUND_NODE_SIZE=40,r.MIN_EDGE_LENGTH=1,r.WORLD_BOUNDARY=1e6,r.INITIAL_WORLD_BOUNDARY=r.WORLD_BOUNDARY/1e3,r.WORLD_CENTER_X=1200,r.WORLD_CENTER_Y=900,e.exports=r}),(function(e,t,n){var r=n(2),i=n(8),a=n(9);function o(e,t,n){r.call(this,n),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=n,this.bendpoints=[],this.source=e,this.target=t}for(var s in o.prototype=Object.create(r.prototype),r)o[s]=r[s];o.prototype.getSource=function(){return this.source},o.prototype.getTarget=function(){return this.target},o.prototype.isInterGraph=function(){return this.isInterGraph},o.prototype.getLength=function(){return this.length},o.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},o.prototype.getBendpoints=function(){return this.bendpoints},o.prototype.getLca=function(){return this.lca},o.prototype.getSourceInLca=function(){return this.sourceInLca},o.prototype.getTargetInLca=function(){return this.targetInLca},o.prototype.getOtherEnd=function(e){if(this.source===e)return this.target;if(this.target===e)return this.source;throw`Node is not incident with this edge`},o.prototype.getOtherEndInGraph=function(e,t){for(var n=this.getOtherEnd(e),r=t.getGraphManager().getRoot();;){if(n.getOwner()==t)return n;if(n.getOwner()==r)break;n=n.getOwner().getParent()}return null},o.prototype.updateLength=function(){var e=[,,,,];this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),e),this.isOverlapingSourceAndTarget||(this.lengthX=e[0]-e[2],this.lengthY=e[1]-e[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},o.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},e.exports=o}),(function(e,t,n){function r(e){this.vGraphObject=e}e.exports=r}),(function(e,t,n){var r=n(2),i=n(10),a=n(13),o=n(0),s=n(16),c=n(4);function l(e,t,n,o){n==null&&o==null&&(o=t),r.call(this,o),e.graphManager!=null&&(e=e.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=o,this.edges=[],this.graphManager=e,n!=null&&t!=null?this.rect=new a(t.x,t.y,n.width,n.height):this.rect=new a}for(var u in l.prototype=Object.create(r.prototype),r)l[u]=r[u];l.prototype.getEdges=function(){return this.edges},l.prototype.getChild=function(){return this.child},l.prototype.getOwner=function(){return this.owner},l.prototype.getWidth=function(){return this.rect.width},l.prototype.setWidth=function(e){this.rect.width=e},l.prototype.getHeight=function(){return this.rect.height},l.prototype.setHeight=function(e){this.rect.height=e},l.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},l.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},l.prototype.getCenter=function(){return new c(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},l.prototype.getLocation=function(){return new c(this.rect.x,this.rect.y)},l.prototype.getRect=function(){return this.rect},l.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},l.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},l.prototype.setRect=function(e,t){this.rect.x=e.x,this.rect.y=e.y,this.rect.width=t.width,this.rect.height=t.height},l.prototype.setCenter=function(e,t){this.rect.x=e-this.rect.width/2,this.rect.y=t-this.rect.height/2},l.prototype.setLocation=function(e,t){this.rect.x=e,this.rect.y=t},l.prototype.moveBy=function(e,t){this.rect.x+=e,this.rect.y+=t},l.prototype.getEdgeListToNode=function(e){var t=[],n=this;return n.edges.forEach(function(r){if(r.target==e){if(r.source!=n)throw`Incorrect edge source!`;t.push(r)}}),t},l.prototype.getEdgesBetween=function(e){var t=[],n=this;return n.edges.forEach(function(r){if(!(r.source==n||r.target==n))throw`Incorrect edge source and/or target`;(r.target==e||r.source==e)&&t.push(r)}),t},l.prototype.getNeighborsList=function(){var e=new Set,t=this;return t.edges.forEach(function(n){if(n.source==t)e.add(n.target);else{if(n.target!=t)throw`Incorrect incidency!`;e.add(n.source)}}),e},l.prototype.withChildren=function(){var e=new Set,t,n;if(e.add(this),this.child!=null)for(var r=this.child.getNodes(),i=0;it&&(this.rect.x-=(this.labelWidth-t)/2,this.setWidth(this.labelWidth)),this.labelHeight>n&&(this.labelPos==`center`?this.rect.y-=(this.labelHeight-n)/2:this.labelPos==`top`&&(this.rect.y-=this.labelHeight-n),this.setHeight(this.labelHeight))}}},l.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw`assert failed`;return this.inclusionTreeDepth},l.prototype.transform=function(e){var t=this.rect.x;t>o.WORLD_BOUNDARY?t=o.WORLD_BOUNDARY:t<-o.WORLD_BOUNDARY&&(t=-o.WORLD_BOUNDARY);var n=this.rect.y;n>o.WORLD_BOUNDARY?n=o.WORLD_BOUNDARY:n<-o.WORLD_BOUNDARY&&(n=-o.WORLD_BOUNDARY);var r=new c(t,n),i=e.inverseTransformPoint(r);this.setLocation(i.x,i.y)},l.prototype.getLeft=function(){return this.rect.x},l.prototype.getRight=function(){return this.rect.x+this.rect.width},l.prototype.getTop=function(){return this.rect.y},l.prototype.getBottom=function(){return this.rect.y+this.rect.height},l.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},e.exports=l}),(function(e,t,n){function r(e,t){e==null&&t==null?(this.x=0,this.y=0):(this.x=e,this.y=t)}r.prototype.getX=function(){return this.x},r.prototype.getY=function(){return this.y},r.prototype.setX=function(e){this.x=e},r.prototype.setY=function(e){this.y=e},r.prototype.getDifference=function(e){return new DimensionD(this.x-e.x,this.y-e.y)},r.prototype.getCopy=function(){return new r(this.x,this.y)},r.prototype.translate=function(e){return this.x+=e.width,this.y+=e.height,this},e.exports=r}),(function(e,t,n){var r=n(2),i=n(10),a=n(0),o=n(6),s=n(3),c=n(1),l=n(13),u=n(12),d=n(11);function f(e,t,n){r.call(this,n),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=e,t!=null&&t instanceof o?this.graphManager=t:t!=null&&t instanceof Layout&&(this.graphManager=t.graphManager)}for(var p in f.prototype=Object.create(r.prototype),r)f[p]=r[p];f.prototype.getNodes=function(){return this.nodes},f.prototype.getEdges=function(){return this.edges},f.prototype.getGraphManager=function(){return this.graphManager},f.prototype.getParent=function(){return this.parent},f.prototype.getLeft=function(){return this.left},f.prototype.getRight=function(){return this.right},f.prototype.getTop=function(){return this.top},f.prototype.getBottom=function(){return this.bottom},f.prototype.isConnected=function(){return this.isConnected},f.prototype.add=function(e,t,n){if(t==null&&n==null){var r=e;if(this.graphManager==null)throw`Graph has no graph mgr!`;if(this.getNodes().indexOf(r)>-1)throw`Node already in graph!`;return r.owner=this,this.getNodes().push(r),r}else{var i=e;if(!(this.getNodes().indexOf(t)>-1&&this.getNodes().indexOf(n)>-1))throw`Source or target not in graph!`;if(!(t.owner==n.owner&&t.owner==this))throw`Both owners must be this graph!`;return t.owner==n.owner?(i.source=t,i.target=n,i.isInterGraph=!1,this.getEdges().push(i),t.edges.push(i),n!=t&&n.edges.push(i),i):null}},f.prototype.remove=function(e){var t=e;if(e instanceof s){if(t==null)throw`Node is null!`;if(!(t.owner!=null&&t.owner==this))throw`Owner graph is invalid!`;if(this.graphManager==null)throw`Owner graph manager is invalid!`;for(var n=t.edges.slice(),r,i=n.length,a=0;a-1&&u>-1))throw`Source and/or target doesn't know this edge!`;r.source.edges.splice(l,1),r.target!=r.source&&r.target.edges.splice(u,1);var o=r.source.owner.getEdges().indexOf(r);if(o==-1)throw`Not in owner's edge list!`;r.source.owner.getEdges().splice(o,1)}},f.prototype.updateLeftTop=function(){for(var e=i.MAX_VALUE,t=i.MAX_VALUE,n,r,a,o=this.getNodes(),s=o.length,c=0;cn&&(e=n),t>r&&(t=r)}return e==i.MAX_VALUE?null:(a=o[0].getParent().paddingLeft==null?this.margin:o[0].getParent().paddingLeft,this.left=t-a,this.top=e-a,new u(this.left,this.top))},f.prototype.updateBounds=function(e){for(var t=i.MAX_VALUE,n=-i.MAX_VALUE,r=i.MAX_VALUE,a=-i.MAX_VALUE,o,s,c,u,d,f=this.nodes,p=f.length,m=0;mo&&(t=o),nc&&(r=c),ao&&(t=o),nc&&(r=c),a=this.nodes.length){var c=0;n.forEach(function(t){t.owner==e&&c++}),c==this.nodes.length&&(this.isConnected=!0)}},e.exports=f}),(function(e,t,n){var r,i=n(1);function a(e){r=n(5),this.layout=e,this.graphs=[],this.edges=[]}a.prototype.addRoot=function(){var e=this.layout.newGraph(),t=this.layout.newNode(null),n=this.add(e,t);return this.setRootGraph(n),this.rootGraph},a.prototype.add=function(e,t,n,r,i){if(n==null&&r==null&&i==null){if(e==null)throw`Graph is null!`;if(t==null)throw`Parent node is null!`;if(this.graphs.indexOf(e)>-1)throw`Graph already in this graph mgr!`;if(this.graphs.push(e),e.parent!=null)throw`Already has a parent!`;if(t.child!=null)throw`Already has a child!`;return e.parent=t,t.child=e,e}else{i=n,r=t,n=e;var a=r.getOwner(),o=i.getOwner();if(!(a!=null&&a.getGraphManager()==this))throw`Source not in this graph mgr!`;if(!(o!=null&&o.getGraphManager()==this))throw`Target not in this graph mgr!`;if(a==o)return n.isInterGraph=!1,a.add(n,r,i);if(n.isInterGraph=!0,n.source=r,n.target=i,this.edges.indexOf(n)>-1)throw`Edge already in inter-graph edge list!`;if(this.edges.push(n),!(n.source!=null&&n.target!=null))throw`Edge source and/or target is null!`;if(!(n.source.edges.indexOf(n)==-1&&n.target.edges.indexOf(n)==-1))throw`Edge already in source and/or target incidency list!`;return n.source.edges.push(n),n.target.edges.push(n),n}},a.prototype.remove=function(e){if(e instanceof r){var t=e;if(t.getGraphManager()!=this)throw`Graph not in this graph mgr`;if(!(t==this.rootGraph||t.parent!=null&&t.parent.graphManager==this))throw`Invalid parent node!`;var n=[];n=n.concat(t.getEdges());for(var a,o=n.length,s=0;s=t.getRight()?n[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight()):t.getX()<=e.getX()&&t.getRight()>=e.getRight()&&(n[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight())),e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()?n[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()):t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()&&(n[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()));var a=Math.abs((t.getCenterY()-e.getCenterY())/(t.getCenterX()-e.getCenterX()));t.getCenterY()===e.getCenterY()&&t.getCenterX()===e.getCenterX()&&(a=1);var o=a*n[0],s=n[1]/a;n[0]o)return n[0]=r,n[1]=c,n[2]=a,n[3]=y,!1;if(ia)return n[0]=s,n[1]=i,n[2]=_,n[3]=o,!1;if(ra?(n[0]=u,n[1]=d,C=!0):(n[0]=l,n[1]=c,C=!0):T===D&&(r>a?(n[0]=s,n[1]=c,C=!0):(n[0]=f,n[1]=d,C=!0)),-E===D?a>r?(n[2]=v,n[3]=y,w=!0):(n[2]=_,n[3]=g,w=!0):E===D&&(a>r?(n[2]=h,n[3]=g,w=!0):(n[2]=b,n[3]=y,w=!0)),C&&w)return!1;if(r>a?i>o?(O=this.getCardinalDirection(T,D,4),k=this.getCardinalDirection(E,D,2)):(O=this.getCardinalDirection(-T,D,3),k=this.getCardinalDirection(-E,D,1)):i>o?(O=this.getCardinalDirection(-T,D,1),k=this.getCardinalDirection(-E,D,3)):(O=this.getCardinalDirection(T,D,2),k=this.getCardinalDirection(E,D,4)),!C)switch(O){case 1:j=c,A=r+-m/D,n[0]=A,n[1]=j;break;case 2:A=f,j=i+p*D,n[0]=A,n[1]=j;break;case 3:j=d,A=r+m/D,n[0]=A,n[1]=j;break;case 4:A=u,j=i+-p*D,n[0]=A,n[1]=j;break}if(!w)switch(k){case 1:N=g,M=a+-S/D,n[2]=M,n[3]=N;break;case 2:M=b,N=o+x*D,n[2]=M,n[3]=N;break;case 3:N=y,M=a+S/D,n[2]=M,n[3]=N;break;case 4:M=v,N=o+-x*D,n[2]=M,n[3]=N;break}}return!1},i.getCardinalDirection=function(e,t,n){return e>t?n:1+n%4},i.getIntersection=function(e,t,n,i){if(i==null)return this.getIntersection2(e,t,n);var a=e.x,o=e.y,s=t.x,c=t.y,l=n.x,u=n.y,d=i.x,f=i.y,p=void 0,m=void 0,h=void 0,g=void 0,_=void 0,v=void 0,y=void 0,b=void 0,x=void 0;return h=c-o,_=a-s,y=s*o-a*c,g=f-u,v=l-d,b=d*u-l*f,x=h*v-g*_,x===0?null:(p=(_*b-v*y)/x,m=(g*y-h*b)/x,new r(p,m))},i.angleOfVector=function(e,t,n,r){var i=void 0;return e===n?i=r0?1:e<0?-1:0},r.floor=function(e){return e<0?Math.ceil(e):Math.floor(e)},r.ceil=function(e){return e<0?Math.floor(e):Math.ceil(e)},e.exports=r}),(function(e,t,n){function r(){}r.MAX_VALUE=2147483647,r.MIN_VALUE=-2147483648,e.exports=r}),(function(e,t,n){var r=function(){function e(e,t){for(var n=0;n0&&t;){for(s.push(l[0]);s.length>0&&t;){var u=s[0];s.splice(0,1),o.add(u);for(var d=u.getEdges(),a=0;a-1&&l.splice(h,1)}o=new Set,c=new Map}}return e},f.prototype.createDummyNodesForBendpoints=function(e){for(var t=[],n=e.source,r=this.graphManager.calcLowestCommonAncestor(e.source,e.target),i=0;i0){for(var i=this.edgeToDummyNodes.get(n),a=0;a=0&&t.splice(d,1),s.getNeighborsList().forEach(function(e){if(n.indexOf(e)<0){var t=r.get(e)-1;t==1&&l.push(e),r.set(e,t)}})}n=n.concat(l),(t.length==1||t.length==2)&&(i=!0,a=t[0])}return a},f.prototype.setGraphManager=function(e){this.graphManager=e},e.exports=f}),(function(e,t,n){function r(){}r.seed=1,r.x=0,r.nextDouble=function(){return r.x=Math.sin(r.seed++)*1e4,r.x-Math.floor(r.x)},e.exports=r}),(function(e,t,n){var r=n(4);function i(e,t){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(e){this.lworldOrgX=e},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(e){this.lworldOrgY=e},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(e){this.lworldExtX=e},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(e){this.lworldExtY=e},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(e){this.ldeviceOrgX=e},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(e){this.ldeviceOrgY=e},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(e){this.ldeviceExtX=e},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(e){this.ldeviceExtY=e},i.prototype.transformX=function(e){var t=0,n=this.lworldExtX;return n!=0&&(t=this.ldeviceOrgX+(e-this.lworldOrgX)*this.ldeviceExtX/n),t},i.prototype.transformY=function(e){var t=0,n=this.lworldExtY;return n!=0&&(t=this.ldeviceOrgY+(e-this.lworldOrgY)*this.ldeviceExtY/n),t},i.prototype.inverseTransformX=function(e){var t=0,n=this.ldeviceExtX;return n!=0&&(t=this.lworldOrgX+(e-this.ldeviceOrgX)*this.lworldExtX/n),t},i.prototype.inverseTransformY=function(e){var t=0,n=this.ldeviceExtY;return n!=0&&(t=this.lworldOrgY+(e-this.ldeviceOrgY)*this.lworldExtY/n),t},i.prototype.inverseTransformPoint=function(e){return new r(this.inverseTransformX(e.x),this.inverseTransformY(e.y))},e.exports=i}),(function(e,t,n){function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);ta.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(e-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(e>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(e-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},l.prototype.calcSpringForces=function(){for(var e=this.getAllEdges(),t,n=0;n0&&arguments[0]!==void 0?arguments[0]:!0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n,r,i,o,s=this.getAllNodes(),c;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&e&&this.updateGrid(),c=new Set,n=0;nc||s>c)&&(e.gravitationForceX=-this.gravityConstant*i,e.gravitationForceY=-this.gravityConstant*a)):(c=t.getEstimatedSize()*this.compoundGravityRangeFactor,(o>c||s>c)&&(e.gravitationForceX=-this.gravityConstant*i*this.compoundGravityConstant,e.gravitationForceY=-this.gravityConstant*a*this.compoundGravityConstant))},l.prototype.isConverged=function(){var e,t=!1;return this.totalIterations>this.maxIterations/3&&(t=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),e=this.totalDisplacement=c.length||u>=c[0].length)){for(var d=0;de}}]),e}()}),(function(e,t,n){var r=function(){function e(e,t){for(var n=0;n2&&arguments[2]!==void 0?arguments[2]:1,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,e),this.sequence1=t,this.sequence2=n,this.match_score=r,this.mismatch_penalty=a,this.gap_penalty=o,this.iMax=t.length+1,this.jMax=n.length+1,this.grid=Array(this.iMax);for(var s=0;s=0;n--){var r=this.listeners[n];r.event===e&&r.callback===t&&this.listeners.splice(n,1)}},i.emit=function(e,t){for(var n=0;n{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r(o()):typeof define==`function`&&define.amd?define([`layout-base`],r):typeof e==`object`?e.coseBase=r(o()):n.coseBase=r(n.layoutBase)})(e,function(e){return(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.i=function(e){return e},n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=7)})([(function(t,n){t.exports=e}),(function(e,t,n){var r=n(0).FDLayoutConstants;function i(){}for(var a in r)i[a]=r[a];i.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,i.DEFAULT_RADIAL_SEPARATION=r.DEFAULT_EDGE_LENGTH,i.DEFAULT_COMPONENT_SEPERATION=60,i.TILE=!0,i.TILING_PADDING_VERTICAL=10,i.TILING_PADDING_HORIZONTAL=10,i.TREE_REDUCTION_ON_INCREMENTAL=!1,e.exports=i}),(function(e,t,n){var r=n(0).FDLayoutEdge;function i(e,t,n){r.call(this,e,t,n)}for(var a in i.prototype=Object.create(r.prototype),r)i[a]=r[a];e.exports=i}),(function(e,t,n){var r=n(0).LGraph;function i(e,t,n){r.call(this,e,t,n)}for(var a in i.prototype=Object.create(r.prototype),r)i[a]=r[a];e.exports=i}),(function(e,t,n){var r=n(0).LGraphManager;function i(e){r.call(this,e)}for(var a in i.prototype=Object.create(r.prototype),r)i[a]=r[a];e.exports=i}),(function(e,t,n){var r=n(0).FDLayoutNode,i=n(0).IMath;function a(e,t,n,i){r.call(this,e,t,n,i)}for(var o in a.prototype=Object.create(r.prototype),r)a[o]=r[o];a.prototype.move=function(){var e=this.graphManager.getLayout();this.displacementX=e.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=e.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>e.coolingFactor*e.maxNodeDisplacement&&(this.displacementX=e.coolingFactor*e.maxNodeDisplacement*i.sign(this.displacementX)),Math.abs(this.displacementY)>e.coolingFactor*e.maxNodeDisplacement&&(this.displacementY=e.coolingFactor*e.maxNodeDisplacement*i.sign(this.displacementY)),this.child==null||this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),e.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},a.prototype.propogateDisplacementToChildren=function(e,t){for(var n=this.getChild().getNodes(),r,i=0;i0)this.positionNodesRadially(e);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),n=this.nodesWithGravity.filter(function(e){return t.has(e)});this.graphManager.setAllNodesToApplyGravitation(n),this.positionNodesRandomly()}}else if(c.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),n=this.nodesWithGravity.filter(function(e){return t.has(e)});this.graphManager.setAllNodesToApplyGravitation(n)}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},v.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%l.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-this.coolingCycle**+(Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),t=this.nodesWithGravity.filter(function(t){return e.has(t)});this.graphManager.setAllNodesToApplyGravitation(t),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var n=!this.isTreeGrowing&&!this.isGrowthFinished,r=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(n,r),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},v.prototype.getPositionsData=function(){for(var e=this.graphManager.getAllNodes(),t={},n=0;n1){var s;for(s=0;sr&&(r=Math.floor(o.y)),a=Math.floor(o.x+c.DEFAULT_COMPONENT_SEPERATION)}this.transform(new f(u.WORLD_CENTER_X-o.x/2,u.WORLD_CENTER_Y-o.y/2))},v.radialLayout=function(e,t,n){var r=Math.max(this.maxDiagonalInTree(e),c.DEFAULT_RADIAL_SEPARATION);v.branchRadialLayout(t,null,0,359,0,r);var i=g.calculateBounds(e),a=new _;a.setDeviceOrgX(i.getMinX()),a.setDeviceOrgY(i.getMinY()),a.setWorldOrgX(n.x),a.setWorldOrgY(n.y);for(var o=0;o1;){var _=g[0];g.splice(0,1);var y=u.indexOf(_);y>=0&&u.splice(y,1),p--,d--}m=t==null?0:(u.indexOf(g[0])+1)%p;for(var b=Math.abs(r-n)/d,x=m;f!=d;x=++x%p){var S=u[x].getOtherEnd(e);if(S!=t){var C=(n+f*b)%360,w=(C+b)%360;v.branchRadialLayout(S,e,C,w,i+a,a),f++}}},v.maxDiagonalInTree=function(e){for(var t=m.MIN_VALUE,n=0;nt&&(t=r)}return t},v.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},v.prototype.groupZeroDegreeMembers=function(){var e=this,t={};this.memberGroups={},this.idToDummyNode={};for(var n=[],r=this.graphManager.getAllNodes(),i=0;i1){var r=`DummyCompound_`+n;e.memberGroups[r]=t[n];var i=t[n][0].getParent(),a=new o(e.graphManager);a.id=r,a.paddingLeft=i.paddingLeft||0,a.paddingRight=i.paddingRight||0,a.paddingBottom=i.paddingBottom||0,a.paddingTop=i.paddingTop||0,e.idToDummyNode[r]=a;var s=e.getGraphManager().add(e.newGraph(),a),c=i.getChild();c.add(a);for(var l=0;l=0;e--){var t=this.compoundOrder[e],n=t.id,r=t.paddingLeft,i=t.paddingTop;this.adjustLocations(this.tiledMemberPack[n],t.rect.x,t.rect.y,r,i)}},v.prototype.repopulateZeroDegreeMembers=function(){var e=this,t=this.tiledZeroDegreePack;Object.keys(t).forEach(function(n){var r=e.idToDummyNode[n],i=r.paddingLeft,a=r.paddingTop;e.adjustLocations(t[n],r.rect.x,r.rect.y,i,a)})},v.prototype.getToBeTiled=function(e){var t=e.id;if(this.toBeTiled[t]!=null)return this.toBeTiled[t];var n=e.getChild();if(n==null)return this.toBeTiled[t]=!1,!1;for(var r=n.getNodes(),i=0;i0)return this.toBeTiled[t]=!1,!1;if(a.getChild()==null){this.toBeTiled[a.id]=!1;continue}if(!this.getToBeTiled(a))return this.toBeTiled[t]=!1,!1}return this.toBeTiled[t]=!0,!0},v.prototype.getNodeDegree=function(e){e.id;for(var t=e.getEdges(),n=0,r=0;rc&&(c=u.rect.height)}n+=c+e.verticalPadding}},v.prototype.tileCompoundMembers=function(e,t){var n=this;this.tiledMemberPack=[],Object.keys(e).forEach(function(r){var i=t[r];n.tiledMemberPack[r]=n.tileNodes(e[r],i.paddingLeft+i.paddingRight),i.rect.width=n.tiledMemberPack[r].width,i.rect.height=n.tiledMemberPack[r].height})},v.prototype.tileNodes=function(e,t){var n={rows:[],rowWidth:[],rowHeight:[],width:0,height:t,verticalPadding:c.TILING_PADDING_VERTICAL,horizontalPadding:c.TILING_PADDING_HORIZONTAL};e.sort(function(e,t){return e.rect.width*e.rect.height>t.rect.width*t.rect.height?-1:+(e.rect.width*e.rect.height0&&(a+=e.horizontalPadding),e.rowWidth[n]=a,e.width0&&(o+=e.verticalPadding);var s=0;o>e.rowHeight[n]&&(s=e.rowHeight[n],e.rowHeight[n]=o,s=e.rowHeight[n]-s),e.height+=s,e.rows[n].push(t)},v.prototype.getShortestRowIndex=function(e){for(var t=-1,n=Number.MAX_VALUE,r=0;rn&&(t=r,n=e.rowWidth[r]);return t},v.prototype.canAddHorizontal=function(e,t,n){var r=this.getShortestRowIndex(e);if(r<0)return!0;var i=e.rowWidth[r];if(i+e.horizontalPadding+t<=e.width)return!0;var a=0;e.rowHeight[r]0&&(a=n+e.verticalPadding-e.rowHeight[r]);var o=e.width-i>=t+e.horizontalPadding?(e.height+a)/(i+t+e.horizontalPadding):(e.height+a)/e.width;a=n+e.verticalPadding;var s=e.widtha&&t!=n){r.splice(-1,1),e.rows[n].push(i),e.rowWidth[t]=e.rowWidth[t]-a,e.rowWidth[n]=e.rowWidth[n]+a,e.width=e.rowWidth[instance.getLongestRowIndex(e)];for(var o=Number.MIN_VALUE,s=0;so&&(o=r[s].height);t>0&&(o+=e.verticalPadding);var c=e.rowHeight[t]+e.rowHeight[n];e.rowHeight[t]=o,e.rowHeight[n]0)for(var u=i;u<=a;u++)c[0]+=this.grid[u][o-1].length+this.grid[u][o].length-1;if(a0)for(var u=o;u<=s;u++)c[3]+=this.grid[i-1][u].length+this.grid[i][u].length-1;for(var d=m.MAX_VALUE,f,p,h=0;h{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r(s()):typeof define==`function`&&define.amd?define([`cose-base`],r):typeof e==`object`?e.cytoscapeCoseBilkent=r(s()):n.cytoscapeCoseBilkent=r(n.coseBase)})(e,function(e){return(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.i=function(e){return e},n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=1)})([(function(t,n){t.exports=e}),(function(e,t,n){var r=n(0).layoutBase.LayoutConstants,i=n(0).layoutBase.FDLayoutConstants,a=n(0).CoSEConstants,o=n(0).CoSELayout,s=n(0).CoSENode,c=n(0).layoutBase.PointD,l=n(0).layoutBase.DimensionD,u={ready:function(){},stop:function(){},quality:`default`,nodeDimensionsIncludeLabels:!1,refresh:30,fit:!0,padding:10,randomize:!0,nodeRepulsion:4500,idealEdgeLength:50,edgeElasticity:.45,nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,animate:`end`,animationDuration:500,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.5};function d(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n}function f(e){this.options=d(u,e),p(this.options)}var p=function(e){e.nodeRepulsion!=null&&(a.DEFAULT_REPULSION_STRENGTH=i.DEFAULT_REPULSION_STRENGTH=e.nodeRepulsion),e.idealEdgeLength!=null&&(a.DEFAULT_EDGE_LENGTH=i.DEFAULT_EDGE_LENGTH=e.idealEdgeLength),e.edgeElasticity!=null&&(a.DEFAULT_SPRING_STRENGTH=i.DEFAULT_SPRING_STRENGTH=e.edgeElasticity),e.nestingFactor!=null&&(a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=e.nestingFactor),e.gravity!=null&&(a.DEFAULT_GRAVITY_STRENGTH=i.DEFAULT_GRAVITY_STRENGTH=e.gravity),e.numIter!=null&&(a.MAX_ITERATIONS=i.MAX_ITERATIONS=e.numIter),e.gravityRange!=null&&(a.DEFAULT_GRAVITY_RANGE_FACTOR=i.DEFAULT_GRAVITY_RANGE_FACTOR=e.gravityRange),e.gravityCompound!=null&&(a.DEFAULT_COMPOUND_GRAVITY_STRENGTH=i.DEFAULT_COMPOUND_GRAVITY_STRENGTH=e.gravityCompound),e.gravityRangeCompound!=null&&(a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=e.gravityRangeCompound),e.initialEnergyOnIncremental!=null&&(a.DEFAULT_COOLING_FACTOR_INCREMENTAL=i.DEFAULT_COOLING_FACTOR_INCREMENTAL=e.initialEnergyOnIncremental),e.quality==`draft`?r.QUALITY=0:e.quality==`proof`?r.QUALITY=2:r.QUALITY=1,a.NODE_DIMENSIONS_INCLUDE_LABELS=i.NODE_DIMENSIONS_INCLUDE_LABELS=r.NODE_DIMENSIONS_INCLUDE_LABELS=e.nodeDimensionsIncludeLabels,a.DEFAULT_INCREMENTAL=i.DEFAULT_INCREMENTAL=r.DEFAULT_INCREMENTAL=!e.randomize,a.ANIMATE=i.ANIMATE=r.ANIMATE=e.animate,a.TILE=e.tile,a.TILING_PADDING_VERTICAL=typeof e.tilingPaddingVertical==`function`?e.tilingPaddingVertical.call():e.tilingPaddingVertical,a.TILING_PADDING_HORIZONTAL=typeof e.tilingPaddingHorizontal==`function`?e.tilingPaddingHorizontal.call():e.tilingPaddingHorizontal};f.prototype.run=function(){var e,t,n=this.options;this.idToLNode={};var r=this.layout=new o,i=this;i.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:`layoutstart`,layout:this});var a=r.newGraphManager();this.gm=a;var s=this.options.eles.nodes(),c=this.options.eles.edges();this.root=a.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(s),r);for(var l=0;l0){var h=n.getGraphManager().add(n.newGraph(),u);this.processChildrenList(h,o,n)}}},f.prototype.stop=function(){return this.stopped=!0,this};var m=function(e){e(`layout`,`cose-bilkent`,f)};typeof cytoscape<`u`&&m(cytoscape),e.exports=m})])})}))(),1);n.use(c.default);function l(e,t){e.forEach(e=>{let n={id:e.id,labelText:e.label,height:e.height,width:e.width,padding:e.padding??0};Object.keys(e).forEach(t=>{[`id`,`label`,`height`,`width`,`padding`,`x`,`y`].includes(t)||(n[t]=e[t])}),t.add({group:`nodes`,data:n,position:{x:e.x??0,y:e.y??0}})})}r(l,`addNodes`);function u(e,t){e.forEach(e=>{let n={id:e.id,source:e.start,target:e.end};Object.keys(e).forEach(t=>{[`id`,`start`,`end`].includes(t)||(n[t]=e[t])}),t.add({group:`edges`,data:n})})}r(u,`addEdges`);function d(e){return new Promise(t=>{let r=a(`body`).append(`div`).attr(`id`,`cy`).attr(`style`,`display:none`),o=n({container:document.getElementById(`cy`),style:[{selector:`edge`,style:{"curve-style":`bezier`}}]});r.remove(),l(e.nodes,o),u(e.edges,o),o.nodes().forEach(function(e){e.layoutDimensions=()=>{let t=e.data();return{w:t.width,h:t.height}}}),o.layout({name:`cose-bilkent`,quality:`proof`,styleEnabled:!1,animate:!1}).run(),o.ready(e=>{i.info(`Cytoscape ready`,e),t(o)})})}r(d,`createCytoscapeInstance`);function f(e){return e.nodes().map(e=>{let t=e.data(),n=e.position(),r={id:t.id,x:n.x,y:n.y};return Object.keys(t).forEach(e=>{e!==`id`&&(r[e]=t[e])}),r})}r(f,`extractPositionedNodes`);function p(e){return e.edges().map(e=>{let t=e.data(),n=e._private.rscratch,r={id:t.id,source:t.source,target:t.target,startX:n.startX,startY:n.startY,midX:n.midX,midY:n.midY,endX:n.endX,endY:n.endY};return Object.keys(t).forEach(e=>{[`id`,`source`,`target`].includes(e)||(r[e]=t[e])}),r})}r(p,`extractPositionedEdges`);async function m(e,t){i.debug(`Starting cose-bilkent layout algorithm`);try{h(e);let t=await d(e),n=f(t),r=p(t);return i.debug(`Layout completed: ${n.length} nodes, ${r.length} edges`),{nodes:n,edges:r}}catch(e){throw i.error(`Error in cose-bilkent layout algorithm:`,e),e}}r(m,`executeCoseBilkentLayout`);function h(e){if(!e)throw Error(`Layout data is required`);if(!e.config)throw Error(`Configuration is required in layout data`);if(!e.rootNode)throw Error(`Root node is required`);if(!e.nodes||!Array.isArray(e.nodes))throw Error(`No nodes found in layout data`);if(!Array.isArray(e.edges))throw Error(`Edges array is required in layout data`);return!0}r(h,`validateLayoutData`);var g=r(async(e,t,{insertCluster:n,insertEdge:r,insertEdgeLabel:i,insertMarkers:a,insertNode:o,log:s,positionEdgeLabel:c},{algorithm:l})=>{let u={},d={},f=t.select(`g`);a(f,e.markers,e.type,e.diagramId);let p=f.insert(`g`).attr(`class`,`subgraphs`),h=f.insert(`g`).attr(`class`,`edgePaths`),g=f.insert(`g`).attr(`class`,`edgeLabels`),_=f.insert(`g`).attr(`class`,`nodes`);s.debug(`Inserting nodes into DOM for dimension calculation`),await Promise.all(e.nodes.map(async t=>{if(t.isGroup){let e={...t};d[t.id]=e,u[t.id]=e,await n(p,t)}else{let n={...t};u[t.id]=n;let r=await o(_,t,{config:e.config,dir:e.direction||`TB`}),i=r.node().getBBox();n.width=i.width,n.height=i.height,n.domId=r,s.debug(`Node ${t.id} dimensions: ${i.width}x${i.height}`)}})),s.debug(`Running cose-bilkent layout algorithm`);let v=await m({...e,nodes:e.nodes.map(e=>{let t=u[e.id];return{...e,width:t.width,height:t.height}})},e.config);s.debug(`Positioning nodes based on layout results`),v.nodes.forEach(e=>{let t=u[e.id];t?.domId&&(t.domId.attr(`transform`,`translate(${e.x}, ${e.y})`),t.x=e.x,t.y=e.y,s.debug(`Positioned node ${t.id} at center (${e.x}, ${e.y})`))}),v.edges.forEach(t=>{let n=e.edges.find(e=>e.id===t.id);n&&(n.points=[{x:t.startX,y:t.startY},{x:t.midX,y:t.midY},{x:t.endX,y:t.endY}])}),s.debug(`Inserting and positioning edges`),await Promise.all(e.edges.map(async t=>{await i(g,t);let n=u[t.start??``],a=u[t.end??``];if(n&&a){let i=v.edges.find(e=>e.id===t.id);if(i){s.debug(`APA01 positionedEdge`,i);let o={...t};c(o,r(h,o,d,e.type,n,a,e.diagramId))}else{let i={...t,points:[{x:n.x||0,y:n.y||0},{x:a.x||0,y:a.y||0}]};c(i,r(h,i,d,e.type,n,a,e.diagramId))}}})),s.debug(`Cose-bilkent rendering completed`)},`render`);export{g as render}; \ No newline at end of file diff --git a/ksadk/server/static/assets/cynefin-OW5HDTMX-BckONr__.js b/ksadk/server/static/assets/cynefin-OW5HDTMX-BckONr__.js new file mode 100644 index 00000000..14e562d3 --- /dev/null +++ b/ksadk/server/static/assets/cynefin-OW5HDTMX-BckONr__.js @@ -0,0 +1 @@ +import{A as e}from"./mermaid-parser.core-C-Sc5_7E.js";export{e as createCynefinServices}; \ No newline at end of file diff --git a/ksadk/server/static/assets/cynefin-OW5HDTMX-DjEM48Qp.js b/ksadk/server/static/assets/cynefin-OW5HDTMX-DjEM48Qp.js deleted file mode 100644 index 22872012..00000000 --- a/ksadk/server/static/assets/cynefin-OW5HDTMX-DjEM48Qp.js +++ /dev/null @@ -1 +0,0 @@ -import{A as e}from"./mermaid-parser.core-KGSy4jWT.js";export{e as createCynefinServices}; \ No newline at end of file diff --git a/ksadk/server/static/assets/cynefinDiagram-5FMLGOSQ-ErLF5N13.js b/ksadk/server/static/assets/cynefinDiagram-5FMLGOSQ-Ci9qjtA_.js similarity index 98% rename from ksadk/server/static/assets/cynefinDiagram-5FMLGOSQ-ErLF5N13.js rename to ksadk/server/static/assets/cynefinDiagram-5FMLGOSQ-Ci9qjtA_.js index 419424a9..7bb00841 100644 --- a/ksadk/server/static/assets/cynefinDiagram-5FMLGOSQ-ErLF5N13.js +++ b/ksadk/server/static/assets/cynefinDiagram-5FMLGOSQ-Ci9qjtA_.js @@ -1,4 +1,4 @@ -import{n as e}from"./mermaid-parser.core-KGSy4jWT.js";import{t}from"./chunk-JWPE2WC7-vYvVJb_M.js";import{Ir as n,Lt as r,Nr as i,Sr as a,ar as o,bn as s,br as c,cr as l,dr as u,er as d,or as f,rr as p,sr as m,ur as h,yr as g}from"./MermaidBlock-Dz4IP-Tx.js";var _=n(()=>({domains:new Map,transitions:[]}),`createDefaultData`),v=_(),y={getDomains:n(()=>v.domains,`getDomains`),getTransitions:n(()=>v.transitions,`getTransitions`),setDomains:n(e=>{if(e)for(let t of e){let e=t.domain,n=(t.items??[]).map(e=>({label:e.label}));v.domains.set(e,{name:e,items:n})}},`setDomains`),setTransitions:n(e=>{e&&(v.transitions=e.filter(e=>e.from===e.to?(i.warn(`Cynefin: self-loop transition on domain "${e.from}" is not meaningful and will be skipped.`),!1):!0).map(e=>({from:e.from,to:e.to,label:e.label||void 0})))},`setTransitions`),getConfig:n(()=>r({...o.cynefin,...l().cynefin}),`getConfig`),clear:n(()=>{d(),v=_()},`clear`),setAccTitle:c,getAccTitle:m,setDiagramTitle:a,getDiagramTitle:h,getAccDescription:f,setAccDescription:g},b=n(e=>{t(e,y),y.setDomains(e.domains),y.setTransitions(e.transitions)},`populate`),x={parse:n(async t=>{let n=await e(`cynefin`,t);i.debug(n),b(n)},`parse`)};function S(e){let t=e+1831565813|0;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}n(S,`seededRandom`);function C(e){let t=0;for(let n=0;n{let n=e/2,r=t/2;return{complex:{cx:n/2,cy:r/2,x:0,y:0,w:n,h:r},complicated:{cx:n+n/2,cy:r/2,x:n,y:0,w:n,h:r},chaotic:{cx:n/2,cy:r+r/2,x:0,y:r,w:n,h:r},clear:{cx:n+n/2,cy:r+r/2,x:n,y:r,w:n,h:r},confusion:{cx:n,cy:r,x:n*.7,y:r*.7,w:n*.6,h:r*.6}}},`getDomainLayouts`),j=n(()=>r(u(),l().themeVariables).cynefin,`getCynefinDomainColors`),M=3,N={draw:n((e,t,n,r)=>{let a=r.db,o=a.getDomains(),c=a.getTransitions(),l=a.getDiagramTitle(),u=a.getAccTitle(),d=a.getAccDescription(),f=a.getConfig(),m=j();i.debug(`Rendering Cynefin diagram`);let h=f.width,g=f.height,_=f.padding,v=f.showDomainDescriptions,y=f.boundaryAmplitude,b=h+_*2,x=g+_*2,S={complex:m.complexBg,complicated:m.complicatedBg,clear:m.clearBg,chaotic:m.chaoticBg,confusion:m.confusionBg},C=s(t);p(C,x,b,f.useMaxWidth??!0),C.attr(`viewBox`,`0 0 ${b} ${x}`),u&&C.append(`title`).text(u),d&&C.append(`desc`).text(d);let N=C.append(`g`).attr(`transform`,`translate(${_}, ${_})`),P=A(h,g),F=w(f.seed,t),I=N.append(`g`).attr(`class`,`cynefin-backgrounds`),L=[`complex`,`complicated`,`chaotic`,`clear`];for(let e of L){let t=P[e];I.append(`rect`).attr(`class`,`cynefinDomain`).attr(`x`,t.x).attr(`y`,t.y).attr(`width`,t.w).attr(`height`,t.h).attr(`fill`,S[e]).attr(`fill-opacity`,.4).attr(`stroke`,`none`)}let R=N.append(`g`).attr(`class`,`cynefin-boundaries`);R.append(`path`).attr(`class`,`cynefinBoundary`).attr(`d`,T(h,g,F,y)).attr(`fill`,`none`),R.append(`path`).attr(`class`,`cynefinBoundary`).attr(`d`,E(h,g,F+100,y)).attr(`fill`,`none`),R.append(`path`).attr(`class`,`cynefinCliff`).attr(`d`,D(h,g)).attr(`fill`,`none`);let z=h*.15,B=g*.15;N.append(`path`).attr(`class`,`cynefinConfusion`).attr(`d`,O(h/2,g/2,z,B)).attr(`fill`,S.confusion).attr(`fill-opacity`,.5);let V=N.append(`g`).attr(`class`,`cynefin-labels`);for(let e of L){let t=P[e];V.append(`text`).attr(`class`,`cynefinDomainLabel`).attr(`x`,t.cx).attr(`y`,v?t.cy-30:t.cy).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(e.charAt(0).toUpperCase()+e.slice(1))}if(V.append(`text`).attr(`class`,`cynefinDomainLabel`).attr(`x`,h/2).attr(`y`,v?g/2-10:g/2).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(`Confusion`),v){let e=N.append(`g`).attr(`class`,`cynefin-subtitles`);for(let t of L){let n=P[t],r=k[t];e.append(`text`).attr(`class`,`cynefinSubtitle`).attr(`x`,n.cx).attr(`y`,n.cy-10).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(r.model),e.append(`text`).attr(`class`,`cynefinSubtitle`).attr(`x`,n.cx).attr(`y`,n.cy+5).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(r.practice)}e.append(`text`).attr(`class`,`cynefinSubtitle`).attr(`x`,h/2).attr(`y`,g/2+8).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(k.confusion.practice)}let H=N.append(`g`).attr(`class`,`cynefin-items`);for(let e of[`complex`,`complicated`,`chaotic`,`clear`,`confusion`]){let t=o.get(e);if(!t||t.items.length===0)continue;let n=P[e],r=e===`confusion`,i=t.items,a=0;r&&t.items.length>M&&(a=t.items.length-M,i=t.items.slice(0,M));let s;if(r){let e=v?22:14;s=n.cy+e}else s=n.cy+(v?25:15);if([...i].forEach((t,r)=>{let i=s+r*30,a=H.append(`g`),o=a.append(`text`).attr(`class`,`cynefinItemText`).attr(`x`,0).attr(`y`,26/2).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`central`).text(t.label),c=t.label.length*7,l=o.node();if(l&&typeof l.getBBox==`function`){let e=l.getBBox();e.width>0&&(c=e.width)}let u=c+20,d=n.cx-u/2;a.attr(`transform`,`translate(${d}, ${i})`),a.insert(`rect`,`text`).attr(`class`,`cynefinItem`).attr(`x`,0).attr(`y`,0).attr(`width`,u).attr(`height`,26).attr(`rx`,4).attr(`ry`,4).attr(`fill`,S[e]).attr(`fill-opacity`,.95),o.attr(`x`,u/2).attr(`y`,26/2)}),a>0){let t=s+i.length*30,r=`+${a} more`,o=H.append(`g`),c=o.append(`text`).attr(`class`,`cynefinItemText`).attr(`x`,0).attr(`y`,26/2).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`central`).text(r),l=r.length*7,u=c.node();if(u&&typeof u.getBBox==`function`){let e=u.getBBox();e.width>0&&(l=e.width)}let d=l+20,f=n.cx-d/2;o.attr(`transform`,`translate(${f}, ${t})`),o.insert(`rect`,`text`).attr(`class`,`cynefinItemOverflow`).attr(`x`,0).attr(`y`,0).attr(`width`,d).attr(`height`,26).attr(`rx`,4).attr(`ry`,4).attr(`fill`,S[e]).attr(`fill-opacity`,.6),c.attr(`x`,d/2).attr(`y`,26/2)}}if(c.length>0){let e=C.select(`defs`).empty()?C.append(`defs`):C.select(`defs`),n=`cynefin-arrow-${t}`;e.append(`marker`).attr(`id`,n).attr(`viewBox`,`0 0 10 10`).attr(`refX`,9).attr(`refY`,5).attr(`markerWidth`,6).attr(`markerHeight`,6).attr(`orient`,`auto-start-reverse`).append(`path`).attr(`d`,`M 0 0 L 10 5 L 0 10 z`).attr(`class`,`cynefinArrowHead`);let r=N.append(`g`).attr(`class`,`cynefin-arrows`);c.forEach(e=>{let t=P[e.from],a=P[e.to];if(!t||!a)return;if(e.from===e.to){i.warn(`Cynefin renderer: skipping self-loop on domain "${e.from}"`);return}let o=t.cx,s=t.cy,c=a.cx,l=a.cy,u=(o+c)/2,d=(s+l)/2,f=c-o,p=l-s,m=Math.sqrt(f*f+p*p),h=m*.15,g=-p/m,_=f/m,v=u+g*h,y=d+_*h;r.append(`path`).attr(`class`,`cynefinArrowLine`).attr(`d`,`M${o},${s} Q${v},${y} ${c},${l}`).attr(`fill`,`none`).attr(`marker-end`,`url(#${n})`),e.label&&r.append(`text`).attr(`class`,`cynefinArrowLabel`).attr(`x`,v).attr(`y`,y-6).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`auto`).text(e.label)})}l&&N.append(`text`).attr(`class`,`cynefinTitle`).attr(`x`,h/2).attr(`y`,-_/2).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(l)},`draw`)},P=n(()=>r(u(),l().themeVariables).cynefin,`getCynefinTheme`),F={parser:x,db:y,renderer:N,styles:n(()=>{let e=P();return` +import{n as e}from"./mermaid-parser.core-C-Sc5_7E.js";import{t}from"./chunk-JWPE2WC7-CEttzwEN.js";import{Ir as n,Lt as r,Nr as i,Sr as a,ar as o,bn as s,br as c,cr as l,dr as u,er as d,or as f,rr as p,sr as m,ur as h,yr as g}from"./MermaidBlock-CI9NjqQx.js";var _=n(()=>({domains:new Map,transitions:[]}),`createDefaultData`),v=_(),y={getDomains:n(()=>v.domains,`getDomains`),getTransitions:n(()=>v.transitions,`getTransitions`),setDomains:n(e=>{if(e)for(let t of e){let e=t.domain,n=(t.items??[]).map(e=>({label:e.label}));v.domains.set(e,{name:e,items:n})}},`setDomains`),setTransitions:n(e=>{e&&(v.transitions=e.filter(e=>e.from===e.to?(i.warn(`Cynefin: self-loop transition on domain "${e.from}" is not meaningful and will be skipped.`),!1):!0).map(e=>({from:e.from,to:e.to,label:e.label||void 0})))},`setTransitions`),getConfig:n(()=>r({...o.cynefin,...l().cynefin}),`getConfig`),clear:n(()=>{d(),v=_()},`clear`),setAccTitle:c,getAccTitle:m,setDiagramTitle:a,getDiagramTitle:h,getAccDescription:f,setAccDescription:g},b=n(e=>{t(e,y),y.setDomains(e.domains),y.setTransitions(e.transitions)},`populate`),x={parse:n(async t=>{let n=await e(`cynefin`,t);i.debug(n),b(n)},`parse`)};function S(e){let t=e+1831565813|0;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}n(S,`seededRandom`);function C(e){let t=0;for(let n=0;n{let n=e/2,r=t/2;return{complex:{cx:n/2,cy:r/2,x:0,y:0,w:n,h:r},complicated:{cx:n+n/2,cy:r/2,x:n,y:0,w:n,h:r},chaotic:{cx:n/2,cy:r+r/2,x:0,y:r,w:n,h:r},clear:{cx:n+n/2,cy:r+r/2,x:n,y:r,w:n,h:r},confusion:{cx:n,cy:r,x:n*.7,y:r*.7,w:n*.6,h:r*.6}}},`getDomainLayouts`),j=n(()=>r(u(),l().themeVariables).cynefin,`getCynefinDomainColors`),M=3,N={draw:n((e,t,n,r)=>{let a=r.db,o=a.getDomains(),c=a.getTransitions(),l=a.getDiagramTitle(),u=a.getAccTitle(),d=a.getAccDescription(),f=a.getConfig(),m=j();i.debug(`Rendering Cynefin diagram`);let h=f.width,g=f.height,_=f.padding,v=f.showDomainDescriptions,y=f.boundaryAmplitude,b=h+_*2,x=g+_*2,S={complex:m.complexBg,complicated:m.complicatedBg,clear:m.clearBg,chaotic:m.chaoticBg,confusion:m.confusionBg},C=s(t);p(C,x,b,f.useMaxWidth??!0),C.attr(`viewBox`,`0 0 ${b} ${x}`),u&&C.append(`title`).text(u),d&&C.append(`desc`).text(d);let N=C.append(`g`).attr(`transform`,`translate(${_}, ${_})`),P=A(h,g),F=w(f.seed,t),I=N.append(`g`).attr(`class`,`cynefin-backgrounds`),L=[`complex`,`complicated`,`chaotic`,`clear`];for(let e of L){let t=P[e];I.append(`rect`).attr(`class`,`cynefinDomain`).attr(`x`,t.x).attr(`y`,t.y).attr(`width`,t.w).attr(`height`,t.h).attr(`fill`,S[e]).attr(`fill-opacity`,.4).attr(`stroke`,`none`)}let R=N.append(`g`).attr(`class`,`cynefin-boundaries`);R.append(`path`).attr(`class`,`cynefinBoundary`).attr(`d`,T(h,g,F,y)).attr(`fill`,`none`),R.append(`path`).attr(`class`,`cynefinBoundary`).attr(`d`,E(h,g,F+100,y)).attr(`fill`,`none`),R.append(`path`).attr(`class`,`cynefinCliff`).attr(`d`,D(h,g)).attr(`fill`,`none`);let z=h*.15,B=g*.15;N.append(`path`).attr(`class`,`cynefinConfusion`).attr(`d`,O(h/2,g/2,z,B)).attr(`fill`,S.confusion).attr(`fill-opacity`,.5);let V=N.append(`g`).attr(`class`,`cynefin-labels`);for(let e of L){let t=P[e];V.append(`text`).attr(`class`,`cynefinDomainLabel`).attr(`x`,t.cx).attr(`y`,v?t.cy-30:t.cy).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(e.charAt(0).toUpperCase()+e.slice(1))}if(V.append(`text`).attr(`class`,`cynefinDomainLabel`).attr(`x`,h/2).attr(`y`,v?g/2-10:g/2).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(`Confusion`),v){let e=N.append(`g`).attr(`class`,`cynefin-subtitles`);for(let t of L){let n=P[t],r=k[t];e.append(`text`).attr(`class`,`cynefinSubtitle`).attr(`x`,n.cx).attr(`y`,n.cy-10).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(r.model),e.append(`text`).attr(`class`,`cynefinSubtitle`).attr(`x`,n.cx).attr(`y`,n.cy+5).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(r.practice)}e.append(`text`).attr(`class`,`cynefinSubtitle`).attr(`x`,h/2).attr(`y`,g/2+8).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(k.confusion.practice)}let H=N.append(`g`).attr(`class`,`cynefin-items`);for(let e of[`complex`,`complicated`,`chaotic`,`clear`,`confusion`]){let t=o.get(e);if(!t||t.items.length===0)continue;let n=P[e],r=e===`confusion`,i=t.items,a=0;r&&t.items.length>M&&(a=t.items.length-M,i=t.items.slice(0,M));let s;if(r){let e=v?22:14;s=n.cy+e}else s=n.cy+(v?25:15);if([...i].forEach((t,r)=>{let i=s+r*30,a=H.append(`g`),o=a.append(`text`).attr(`class`,`cynefinItemText`).attr(`x`,0).attr(`y`,26/2).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`central`).text(t.label),c=t.label.length*7,l=o.node();if(l&&typeof l.getBBox==`function`){let e=l.getBBox();e.width>0&&(c=e.width)}let u=c+20,d=n.cx-u/2;a.attr(`transform`,`translate(${d}, ${i})`),a.insert(`rect`,`text`).attr(`class`,`cynefinItem`).attr(`x`,0).attr(`y`,0).attr(`width`,u).attr(`height`,26).attr(`rx`,4).attr(`ry`,4).attr(`fill`,S[e]).attr(`fill-opacity`,.95),o.attr(`x`,u/2).attr(`y`,26/2)}),a>0){let t=s+i.length*30,r=`+${a} more`,o=H.append(`g`),c=o.append(`text`).attr(`class`,`cynefinItemText`).attr(`x`,0).attr(`y`,26/2).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`central`).text(r),l=r.length*7,u=c.node();if(u&&typeof u.getBBox==`function`){let e=u.getBBox();e.width>0&&(l=e.width)}let d=l+20,f=n.cx-d/2;o.attr(`transform`,`translate(${f}, ${t})`),o.insert(`rect`,`text`).attr(`class`,`cynefinItemOverflow`).attr(`x`,0).attr(`y`,0).attr(`width`,d).attr(`height`,26).attr(`rx`,4).attr(`ry`,4).attr(`fill`,S[e]).attr(`fill-opacity`,.6),c.attr(`x`,d/2).attr(`y`,26/2)}}if(c.length>0){let e=C.select(`defs`).empty()?C.append(`defs`):C.select(`defs`),n=`cynefin-arrow-${t}`;e.append(`marker`).attr(`id`,n).attr(`viewBox`,`0 0 10 10`).attr(`refX`,9).attr(`refY`,5).attr(`markerWidth`,6).attr(`markerHeight`,6).attr(`orient`,`auto-start-reverse`).append(`path`).attr(`d`,`M 0 0 L 10 5 L 0 10 z`).attr(`class`,`cynefinArrowHead`);let r=N.append(`g`).attr(`class`,`cynefin-arrows`);c.forEach(e=>{let t=P[e.from],a=P[e.to];if(!t||!a)return;if(e.from===e.to){i.warn(`Cynefin renderer: skipping self-loop on domain "${e.from}"`);return}let o=t.cx,s=t.cy,c=a.cx,l=a.cy,u=(o+c)/2,d=(s+l)/2,f=c-o,p=l-s,m=Math.sqrt(f*f+p*p),h=m*.15,g=-p/m,_=f/m,v=u+g*h,y=d+_*h;r.append(`path`).attr(`class`,`cynefinArrowLine`).attr(`d`,`M${o},${s} Q${v},${y} ${c},${l}`).attr(`fill`,`none`).attr(`marker-end`,`url(#${n})`),e.label&&r.append(`text`).attr(`class`,`cynefinArrowLabel`).attr(`x`,v).attr(`y`,y-6).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`auto`).text(e.label)})}l&&N.append(`text`).attr(`class`,`cynefinTitle`).attr(`x`,h/2).attr(`y`,-_/2).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(l)},`draw`)},P=n(()=>r(u(),l().themeVariables).cynefin,`getCynefinTheme`),F={parser:x,db:y,renderer:N,styles:n(()=>{let e=P();return` .cynefinDomain { stroke: none; } diff --git a/ksadk/server/static/assets/dagre-3AP2YEHR-DFiQF-6f.js b/ksadk/server/static/assets/dagre-3AP2YEHR-Ll3LkcYP.js similarity index 98% rename from ksadk/server/static/assets/dagre-3AP2YEHR-DFiQF-6f.js rename to ksadk/server/static/assets/dagre-3AP2YEHR-Ll3LkcYP.js index a3e632b2..350747c1 100644 --- a/ksadk/server/static/assets/dagre-3AP2YEHR-DFiQF-6f.js +++ b/ksadk/server/static/assets/dagre-3AP2YEHR-Ll3LkcYP.js @@ -1,4 +1,4 @@ -import{t as e}from"./dagre-BuhGnRI1.js";import{Ir as t,Nr as n,Ot as r,St as i,Tt as a,_t as o,a as s,c,f as l,i as u,l as d,lr as f,o as p,p as m,r as h,s as g,vt as _,wt as v,xt as y}from"./MermaidBlock-Dz4IP-Tx.js";var b=t((e,t,n)=>Math.max(t,Math.min(n,e)),`clamp`),x=t((e=`TB`)=>{switch(e){case`BT`:return`bottom`;case`LR`:return`right`;case`RL`:return`left`;default:return`top`}},`getDefaultSelfLoopSide`),S=t(e=>e===`flowchart`||e===`flowchart-v2`||e===`stateDiagram`||e===`er`||e===`classDiagram`,`shouldMergeSelfLoopSegments`),C=[`x`,`y`,`width`,`height`,`labelBBox`,`intersect`,`calcIntersect`,`diff`,`clusterNode`],w=t((e,t,n,r,i)=>{let a=[],o=new Set;if(n.forEach(({start:e,end:t})=>{e!==r&&o.add(e),t!==r&&o.add(t)}),o.forEach(t=>{let n=e.node(t);typeof n?.x==`number`&&typeof n?.y==`number`&&a.push(n)}),a.length===0&&n.forEach(({edge:e})=>{(e.points??[]).forEach(e=>{typeof e?.x==`number`&&typeof e?.y==`number`&&a.push(e)})}),a.length===0)return x(i);let s=a.reduce((e,t)=>({x:e.x+t.x/a.length,y:e.y+t.y/a.length}),{x:0,y:0}),c=s.x-t.x,l=s.y-t.y;return Math.abs(c)>Math.abs(l)?c>0?`right`:`left`:Math.abs(l)>0?l>0?`bottom`:`top`:x(i)},`getSelfLoopSide`),T=t((e,t=`top`,n=0,r=0)=>{let i=e.x,a=e.y-n,o=e.width/2,s=e.height/2,c=Math.max(36,Math.min(100,e.width*.8)),l=b(Math.max(r,e.width*.35),36,c),u=b(Math.min(e.width,e.height)*.45,24,48);switch(t){case`bottom`:{let e=a+s;return[{x:i-l/2,y:e},{x:i-l/2,y:e+u},{x:i+l/2,y:e+u},{x:i+l/2,y:e}]}case`right`:{let e=i+o;return[{x:e,y:a-l/2},{x:e+u,y:a-l/2},{x:e+u,y:a+l/2},{x:e,y:a+l/2}]}case`left`:{let e=i-o;return[{x:e,y:a-l/2},{x:e-u,y:a-l/2},{x:e-u,y:a+l/2},{x:e,y:a+l/2}]}default:{let e=a-s;return[{x:i-l/2,y:e},{x:i-l/2,y:e-u},{x:i+l/2,y:e-u},{x:i+l/2,y:e}]}}},`getSelfLoopPoints`),E=t((e,t,n=`top`,r=0,i={})=>{let a=e.x,o=e.y-r,s=i.width??0,c=i.height??0;switch(n){case`bottom`:return{x:a,y:Math.max(...t.map(e=>e.y))+c/2+4};case`right`:return{x:Math.max(...t.map(e=>e.x))+s/2+4,y:o};case`left`:return{x:Math.min(...t.map(e=>e.x))-s/2-4,y:o};default:return{x:a,y:Math.min(...t.map(e=>e.y))-c/2-4}}},`getSelfLoopLabelPosition`),D=t((e,t=0,{mergeSelfLoops:n=!0}={})=>{let r=new Map,i=[],a=e.graph()?.rankdir;return e.edges().forEach(t=>{let a=e.edge(t);if(n&&a.selfLoop){let e=a.selfLoop.id;r.has(e)||r.set(e,[]),r.get(e).push({edge:a,start:t.v,end:t.w})}else i.push({edge:a,start:t.v,end:t.w})}),r.forEach(n=>{if(n.length!==3){n.forEach(e=>i.push(e));return}n.sort((e,t)=>e.edge.selfLoop.order-t.edge.selfLoop.order);let[r,o,s]=n,c=r.edge.originalEdge??o.edge.originalEdge??s.edge.originalEdge??o.edge,l=e.node(c.start);if(!l){n.forEach(e=>i.push(e));return}let u={width:o.edge.width,height:o.edge.height},d=w(e,l,n,c.start,a),f=T(l,d,t,u.width??0),p=E(l,f,d,t,u),m={...o.edge,...c,id:c.id,points:f,start:c.start,end:c.end,x:p.x,y:p.y,width:u.width,height:u.height,labelStyle:o.edge.labelStyle,fromCluster:r.edge.fromCluster??o.edge.fromCluster??s.edge.fromCluster,toCluster:r.edge.toCluster??o.edge.toCluster??s.edge.toCluster};delete m.selfLoop,delete m.originalEdge,i.push({edge:m,start:m.start,end:m.end})}),i},`getEdgesToRender`),O=t(async({element:e,graph:o,diagramType:s,id:l,parentCluster:d,siteConfig:f})=>{let m=o.graph().rankdir;n.trace(`Dir in recursive render - dir:`,m);let{clusters:h,edgePaths:v,edgeLabels:y,nodes:b,rootGroups:x}=p(e,{edgePathsClass:`edgePaths`});o.nodes()?n.info(`Recursive render XXX`,o.nodes()):n.info(`No nodes found for`,o),o.edges().length>0&&n.info(`Recursive edges`,o.edge(o.edges()[0]));let C=S(s);await Promise.all(o.nodes().map(async function(e){let t=o.node(e);if(d!==void 0){let t=JSON.parse(JSON.stringify(d.clusterData));n.trace(`Setting data for parent cluster XXX +import{t as e}from"./dagre-CKrj2THw.js";import{Ir as t,Nr as n,Ot as r,St as i,Tt as a,_t as o,a as s,c,f as l,i as u,l as d,lr as f,o as p,p as m,r as h,s as g,vt as _,wt as v,xt as y}from"./MermaidBlock-CI9NjqQx.js";var b=t((e,t,n)=>Math.max(t,Math.min(n,e)),`clamp`),x=t((e=`TB`)=>{switch(e){case`BT`:return`bottom`;case`LR`:return`right`;case`RL`:return`left`;default:return`top`}},`getDefaultSelfLoopSide`),S=t(e=>e===`flowchart`||e===`flowchart-v2`||e===`stateDiagram`||e===`er`||e===`classDiagram`,`shouldMergeSelfLoopSegments`),C=[`x`,`y`,`width`,`height`,`labelBBox`,`intersect`,`calcIntersect`,`diff`,`clusterNode`],w=t((e,t,n,r,i)=>{let a=[],o=new Set;if(n.forEach(({start:e,end:t})=>{e!==r&&o.add(e),t!==r&&o.add(t)}),o.forEach(t=>{let n=e.node(t);typeof n?.x==`number`&&typeof n?.y==`number`&&a.push(n)}),a.length===0&&n.forEach(({edge:e})=>{(e.points??[]).forEach(e=>{typeof e?.x==`number`&&typeof e?.y==`number`&&a.push(e)})}),a.length===0)return x(i);let s=a.reduce((e,t)=>({x:e.x+t.x/a.length,y:e.y+t.y/a.length}),{x:0,y:0}),c=s.x-t.x,l=s.y-t.y;return Math.abs(c)>Math.abs(l)?c>0?`right`:`left`:Math.abs(l)>0?l>0?`bottom`:`top`:x(i)},`getSelfLoopSide`),T=t((e,t=`top`,n=0,r=0)=>{let i=e.x,a=e.y-n,o=e.width/2,s=e.height/2,c=Math.max(36,Math.min(100,e.width*.8)),l=b(Math.max(r,e.width*.35),36,c),u=b(Math.min(e.width,e.height)*.45,24,48);switch(t){case`bottom`:{let e=a+s;return[{x:i-l/2,y:e},{x:i-l/2,y:e+u},{x:i+l/2,y:e+u},{x:i+l/2,y:e}]}case`right`:{let e=i+o;return[{x:e,y:a-l/2},{x:e+u,y:a-l/2},{x:e+u,y:a+l/2},{x:e,y:a+l/2}]}case`left`:{let e=i-o;return[{x:e,y:a-l/2},{x:e-u,y:a-l/2},{x:e-u,y:a+l/2},{x:e,y:a+l/2}]}default:{let e=a-s;return[{x:i-l/2,y:e},{x:i-l/2,y:e-u},{x:i+l/2,y:e-u},{x:i+l/2,y:e}]}}},`getSelfLoopPoints`),E=t((e,t,n=`top`,r=0,i={})=>{let a=e.x,o=e.y-r,s=i.width??0,c=i.height??0;switch(n){case`bottom`:return{x:a,y:Math.max(...t.map(e=>e.y))+c/2+4};case`right`:return{x:Math.max(...t.map(e=>e.x))+s/2+4,y:o};case`left`:return{x:Math.min(...t.map(e=>e.x))-s/2-4,y:o};default:return{x:a,y:Math.min(...t.map(e=>e.y))-c/2-4}}},`getSelfLoopLabelPosition`),D=t((e,t=0,{mergeSelfLoops:n=!0}={})=>{let r=new Map,i=[],a=e.graph()?.rankdir;return e.edges().forEach(t=>{let a=e.edge(t);if(n&&a.selfLoop){let e=a.selfLoop.id;r.has(e)||r.set(e,[]),r.get(e).push({edge:a,start:t.v,end:t.w})}else i.push({edge:a,start:t.v,end:t.w})}),r.forEach(n=>{if(n.length!==3){n.forEach(e=>i.push(e));return}n.sort((e,t)=>e.edge.selfLoop.order-t.edge.selfLoop.order);let[r,o,s]=n,c=r.edge.originalEdge??o.edge.originalEdge??s.edge.originalEdge??o.edge,l=e.node(c.start);if(!l){n.forEach(e=>i.push(e));return}let u={width:o.edge.width,height:o.edge.height},d=w(e,l,n,c.start,a),f=T(l,d,t,u.width??0),p=E(l,f,d,t,u),m={...o.edge,...c,id:c.id,points:f,start:c.start,end:c.end,x:p.x,y:p.y,width:u.width,height:u.height,labelStyle:o.edge.labelStyle,fromCluster:r.edge.fromCluster??o.edge.fromCluster??s.edge.fromCluster,toCluster:r.edge.toCluster??o.edge.toCluster??s.edge.toCluster};delete m.selfLoop,delete m.originalEdge,i.push({edge:m,start:m.start,end:m.end})}),i},`getEdgesToRender`),O=t(async({element:e,graph:o,diagramType:s,id:l,parentCluster:d,siteConfig:f})=>{let m=o.graph().rankdir;n.trace(`Dir in recursive render - dir:`,m);let{clusters:h,edgePaths:v,edgeLabels:y,nodes:b,rootGroups:x}=p(e,{edgePathsClass:`edgePaths`});o.nodes()?n.info(`Recursive render XXX`,o.nodes()):n.info(`No nodes found for`,o),o.edges().length>0&&n.info(`Recursive edges`,o.edge(o.edges()[0]));let C=S(s);await Promise.all(o.nodes().map(async function(e){let t=o.node(e);if(d!==void 0){let t=JSON.parse(JSON.stringify(d.clusterData));n.trace(`Setting data for parent cluster XXX Node.id = `,e,` data=`,t.height,` Parent cluster`,d.height),o.setNode(d.id,t),o.parent(e)||(n.trace(`Setting parent`,e,d.id),o.setParent(e,d.id,t))}if(n.info(`(Insert) Node XXX`+e+`: `+JSON.stringify(o.node(e))),t?.clusterNode){n.info(`Cluster identified XBX`,e,t.width,o.node(e));let{ranksep:i,nodesep:c}=o.graph();t.graph.setGraph({...t.graph.graph(),ranksep:i+25,nodesep:c});let u=await F({element:b,graph:t.graph,diagramType:s,id:l,parentCluster:o.node(e),siteConfig:f}),d=u.elem;r(t,d),t.diff=u.diff||0,n.info(`New compound node after recursive render XAX`,e,`width`,t.width,`height`,t.height),a(d,t)}else o.children(e).length>0?(n.trace(`Cluster - the non recursive path XBX`,e,t.id,t,t.width,`Graph:`,o),n.trace(g(t.id,o)),u.set(t.id,{id:g(t.id,o),node:t})):(n.trace(`Node - the non recursive path XAX`,e,b,o.node(e),m),await c(b,o.node(e),{config:f,dir:m}))})),await t(async()=>{let e=o.edges().map(async function(e){let t=o.edge(e.v,e.w,e.name);if(n.info(`Edge `+e.v+` -> `+e.w+`: `+JSON.stringify(e)),n.info(`Edge `+e.v+` -> `+e.w+`: `,e,` `,JSON.stringify(o.edge(e))),n.info(`Fix`,u,`ids:`,e.v,e.w,`Translating: `,u.get(e.v),u.get(e.w)),C&&t.selfLoop){if(t.selfLoop.order!==1)return;let e={...t.originalEdge,...t,id:t.selfLoop.id,startLabelLeft:t.originalEdge?.startLabelLeft??t.startLabelLeft,startLabelRight:t.originalEdge?.startLabelRight??t.startLabelRight,endLabelLeft:t.originalEdge?.endLabelLeft??t.endLabelLeft,endLabelRight:t.originalEdge?.endLabelRight??t.endLabelRight};await _(y,e),t.width=e.width,t.height=e.height,t.labelStyle=e.labelStyle;return}await _(y,t)});await Promise.all(e)},`processEdges`)();let{subGraphTitleTotalMargin:w}=i(f);return{elem:x,graph:o,groups:{clusters:h,edgePaths:v,edgeLabels:y,nodes:b,rootGroups:x},diagramType:s,id:l,mergeSelfLoops:C,subGraphTitleTotalMargin:w}},`measureDagreGraph`),k=t(t=>{n.info(`############################################# XXX`),n.info(`### Layout ### XXX`),n.info(`############################################# XXX`),e(t)},`runDagreGraphLayout`),A=t((e,t,n)=>{let r=e.node(t);if(!r)return;let i={...r};return r?.clusterNode?i.y=(r.y??0)+n:e.children(t).length>0?i.height=(r.height??0)+n:i.y=(r.y??0)+n/2,i},`normalizeDagreNode`),j=t((e,t)=>{C.forEach(n=>{t[n]!==void 0&&(e[n]=t[n])})},`applyDagreNodeLayout`),M=t((e,t,n,r)=>({...e,start:e.start??t,end:e.end??n,points:(e.points??[]).map(e=>({...e,y:typeof e.y==`number`?e.y+r:e.y}))}),`normalizeDagreEdge`),N=t((e,t)=>{let{graph:n,mergeSelfLoops:r,subGraphTitleTotalMargin:i=0}=t,a=new Map(e.nodes.map(e=>[e.id,e]));d(n).forEach(e=>{let t=A(n,e,i);if(!t)return;j(n.node(e),t);let r=a.get(e);r&&j(r,t)});let o=i/2;return e.edges=D(n,o,{mergeSelfLoops:r}).map(({edge:e,start:t,end:n})=>M(e,t,n,o)),e},`applyDagreLayoutResult`),P=t(async({elem:e,graph:t,groups:{clusters:r,edgePaths:i},diagramType:a,id:s,mergeSelfLoops:c,subGraphTitleTotalMargin:f})=>{let p=0;await Promise.all(d(t).map(async function(e){let i=t.node(e);if(n.info(`Position XBX => `+e+`: (`+i.x,`,`+i.y,`) width: `,i.width,` height: `,i.height),i?.clusterNode)i.y+=f,n.info(`A tainted cluster node XBX1`,e,i.id,i.width,i.height,i.x,i.y,t.parent(e)),u.get(i.id).node=i,v(i);else if(t.children(e).length>0){n.info(`A pure cluster node XBX1`,e,i.id,i.x,i.y,i.width,i.height,t.parent(e)),i.height+=f,t.node(i.parentId);let a=i?.padding/2||0,o=i?.labelBBox?.height||0,s=o-a||0;n.debug(`OffsetY`,s,`labelHeight`,o,`halfPadding`,a),await l(r,i),u.get(i.id).node=i}else{let e=t.node(i.parentId);i.y+=f/2,n.info(`A regular node XBX1 - using the padding`,i.id,`parent`,i.parentId,i.width,i.height,i.x,i.y,`offsetY`,i.offsetY,`parent`,e,e?.offsetY,i),v(i)}}));let m=f/2;return D(t,m,{mergeSelfLoops:c}).forEach(function({edge:e,start:r,end:c}){n.info(`Edge `+r+` -> `+c+`: `+JSON.stringify(e),e),e.points.forEach(e=>e.y+=m),y(e,o(i,e,u,a,t.node(r),t.node(c),s))}),t.nodes().forEach(function(e){let r=t.node(e);n.info(e,r.type,r.diff),r.isGroup&&(p=r.diff)}),n.warn(`Returning from recursive render XAX`,e,p),{elem:e,diff:p}},`paintDagreLayoutCore`),F=t(async e=>{let t=await O(e);return k(t.graph),await P(t)},`renderDagreSubgraph`),I=t(e=>{let t=new m({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:e.config?.nodeSpacing||e.nodeSpacing||e.config?.flowchart?.nodeSpacing,ranksep:e.config?.rankSpacing||e.rankSpacing||e.config?.flowchart?.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});return e.nodes.forEach(e=>{t.setNode(e.id,{...e}),e.parentId&&t.setParent(e.id,e.parentId)}),n.debug(`Edges:`,e.edges),e.edges.forEach(e=>{if(e.start===e.end){let n=e.start,r=n+`---`+n+`---1`,i=n+`---`+n+`---2`,a=t.node(n);t.setNode(r,{domId:r,id:r,parentId:a.parentId,labelStyle:``,label:``,padding:0,shape:`labelRect`,style:``,width:10,height:10}),t.setParent(r,a.parentId),t.setNode(i,{domId:i,id:i,parentId:a.parentId,labelStyle:``,padding:0,shape:`labelRect`,label:``,style:``,width:10,height:10}),t.setParent(i,a.parentId);let o=structuredClone(e),s=structuredClone(e),c=structuredClone(e),l=structuredClone(e);s.originalEdge=o,s.selfLoop={id:o.id,order:0},c.originalEdge=o,c.selfLoop={id:o.id,order:1},l.originalEdge=o,l.selfLoop={id:o.id,order:2},s.label=``,s.arrowTypeEnd=`none`,s.endLabelLeft=``,s.endLabelRight=``,s.startLabelLeft=``,s.id=n+`-cyclic-special-1`,c.startLabelRight=``,c.startLabelLeft=``,c.endLabelLeft=``,c.endLabelRight=``,c.arrowTypeStart=`none`,c.arrowTypeEnd=`none`,c.id=n+`-cyclic-special-mid`,l.label=``,l.startLabelRight=``,l.startLabelLeft=``,l.arrowTypeStart=`none`,a.isGroup&&(s.fromCluster=n,l.toCluster=n),l.id=n+`-cyclic-special-2`,l.arrowTypeStart=`none`,t.setEdge(n,r,s,n+`-cyclic-special-0`),t.setEdge(r,i,c,n+`-cyclic-special-1`),t.setEdge(i,n,l,n+`-cyclic-special-2`)}else t.setEdge(e.start,e.end,{...e},e.id)}),h(t),{graph:t}},`prepareLayoutForDagre`),L=t(async(e,{element:t,preparedLayout:n})=>{let r=n??I(e),i=f(),a=await O({element:t,graph:r.graph,diagramType:e.type,id:e.diagramId,parentCluster:void 0,siteConfig:i});return r.measuredLayout=a,a},`measureDagreLayout`),R=t((e,t)=>{let n=t.preparedLayout?.measuredLayout;if(!n)throw Error(`runDagreLayoutCore requires measureDagreLayout to run first`);return k(n.graph),N(e,n),n},`runDagreLayoutCore`),z=s({prepareLayout:I,measureLayout:L,runLayoutCore:R,paintOptions:{clusterDb:u,getNodes:t((e,{measure:t})=>d(t.graph).map(e=>t.graph.node(e)).filter(Boolean),`getDagrePaintNodes`),getEdgeNode:t((e,t,{measure:n})=>e?n.graph.node(e):void 0,`getDagreEdgeNode`),skipNode:t((e,{measure:t})=>!t.graph.hasNode(e.id),`skipNode`),isCluster:t((e,{measure:t})=>t.graph.hasNode(e.id)&&(t.graph.children(e.id)??[]).length>0,`isCluster`)}});export{N as applyDagreLayoutResult,D as getEdgesToRender,L as measureDagreLayout,I as prepareLayoutForDagre,z as render,R as runDagreLayoutCore}; \ No newline at end of file diff --git a/ksadk/server/static/assets/dagre-BuhGnRI1.js b/ksadk/server/static/assets/dagre-CKrj2THw.js similarity index 99% rename from ksadk/server/static/assets/dagre-BuhGnRI1.js rename to ksadk/server/static/assets/dagre-CKrj2THw.js index c4552d24..655e87f0 100644 --- a/ksadk/server/static/assets/dagre-BuhGnRI1.js +++ b/ksadk/server/static/assets/dagre-CKrj2THw.js @@ -1 +1 @@ -import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,Q as _,R as ee,S as te,T as ne,U as re,V as ie,W as ae,X as oe,Y as se,Z as v,_ as y,at as ce,b as le,ct as ue,dt as b,et as x,ft as S,g as C,gt as de,h as w,ht as fe,it as pe,j as me,k as T,lt as E,m as D,mt as he,nt as ge,ot as _e,p as O,pt as k,q as ve,rt as ye,st as be,tt as xe,ut as A,v as j,w as M,x as Se,y as Ce,z as we}from"./MermaidBlock-Dz4IP-Tx.js";var Te=/\s/;function Ee(e){for(var t=e.length;t--&&Te.test(e.charAt(t)););return t}var De=/^\s+/;function Oe(e){return e&&e.slice(0,Ee(e)+1).replace(De,``)}var ke=NaN,Ae=/^[-+]0x[0-9a-f]+$/i,je=/^0b[01]+$/i,Me=/^0o[0-7]+$/i,Ne=parseInt;function Pe(e){if(typeof e==`number`)return e;if(S(e))return ke;if(E(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=E(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=Oe(e);var n=je.test(e);return n||Me.test(e)?Ne(e.slice(2),n?2:8):Ae.test(e)?ke:+e}var Fe=1/0,Ie=17976931348623157e292;function N(e){return e?(e=Pe(e),e===Fe||e===-Fe?(e<0?-1:1)*Ie:e===e?e:0):e===0?e:0}function Le(e){var t=N(e),n=t%1;return t===t?n?t-n:t:0}var Re=Object.create,ze=function(){function e(){}return function(t){if(!E(t))return{};if(Re)return Re(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function Be(e,t){var n=-1,r=e.length;for(t||=Array(r);++n1?n[i-1]:void 0,o=i>2?n[2]:void 0;for(a=e.length>3&&typeof a==`function`?(i--,a):void 0,o&&I(n[0],n[1],o)&&(a=i<3?void 0:a,i=1),t=Object(t);++r2?t[2]:void 0;for(i&&I(t[0],t[1],i)&&(r=1);++n-1?i[a?t[o]:o]:void 0}}var Un=Math.max;function Wn(e,t,n){var r=e==null?0:e.length;if(!r)return-1;var i=n==null?0:Le(n);return i<0&&(i=Un(r+i,0)),ge(e,M(t,3),i)}var Gn=Hn(Wn);function Kn(e,t){var n=-1,r=v(e)?Array(e.length):[];return Se(e,function(e,i,a){r[++n]=t(e,i,a)}),r}function H(e,t){return(A(e)?b:Kn)(e,M(t,3))}function qn(e,t){return e==null?e:r(e,Ce(t),L)}function Jn(e,t){return e&&te(e,Ce(t))}function Yn(e,t){return e>t}var Xn=Object.prototype.hasOwnProperty;function Zn(e,t){return e!=null&&Xn.call(e,t)}function Qn(e,t){return e!=null&&i(e,t,Zn)}var $n=`[object String]`;function er(e){return typeof e==`string`||!A(e)&&k(e)&&he(e)==$n}function tr(e,t){return et||a&&o&&c&&!s&&!l||r&&o&&c||!n&&c||!i)return 1;if(!r&&!a&&!l&&e=s?c:c*(n[r]==`desc`?-1:1)}return e.index-t.index}function ur(e,t,n){t=t.length?b(t,function(e){return A(e)?function(t){return f(t,e.length===1?e[0]:e)}:e}):[ue];var r=-1;return t=b(t,ve(M)),sr(Kn(e,function(e,n,i){return{criteria:b(t,function(t){return t(e)}),index:++r,value:e}}),function(e,t){return lr(e,t,n)})}var dr=ne(`length`),fr=`\\ud800-\\udfff`,pr=`\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff`,mr=`\\ufe0e\\ufe0f`,hr=`[`+fr+`]`,gr=`[`+pr+`]`,_r=`\\ud83c[\\udffb-\\udfff]`,vr=`(?:`+gr+`|`+_r+`)`,yr=`[^`+fr+`]`,br=`(?:\\ud83c[\\udde6-\\uddff]){2}`,xr=`[\\ud800-\\udbff][\\udc00-\\udfff]`,Sr=`\\u200d`,Cr=vr+`?`,wr=`[`+mr+`]?`,Tr=`(?:`+Sr+`(?:`+[yr,br,xr].join(`|`)+`)`+wr+Cr+`)*`,Er=wr+Cr+Tr,Dr=`(?:`+[yr+gr+`?`,gr,br,xr,hr].join(`|`)+`)`,Or=RegExp(_r+`(?=`+_r+`)|`+Dr+Er,`g`);function kr(e){for(var t=Or.lastIndex=0;Or.test(e);)++t;return t}function Ar(e){return rt(e)?kr(e):dr(e)}function jr(e,t){return or(e,t,function(t,n){return a(e,n)})}var K=qe(function(e,t){return e==null?{}:jr(e,t)}),Mr=Math.ceil,Nr=Math.max;function Pr(e,t,n,r){for(var i=-1,a=Nr(Mr((t-e)/(n||1)),0),o=Array(a);a--;)o[r?a:++i]=e,e+=n;return o}function Fr(e){return function(t,n,r){return r&&typeof r!=`number`&&I(t,n,r)&&(n=r=void 0),t=N(t),n===void 0?(n=t,t=0):n=N(n),r=r===void 0?t1&&I(e,t[0],t[1])?t=[]:n>2&&I(t[0],t[1],t[2])&&(t=[t[0]]),ur(e,o(t,1),[])}),zr=0;function Br(e){var t=++zr;return n(e)+t}function Vr(e,t,n){for(var r=-1,i=e.length,a=t.length,o={};++r0;--s)if(o=t[s].dequeue(),o){r=r.concat(Yr(e,t,n,o,!0));break}}}return r}function Yr(e,t,n,r,i){var a=i?[]:void 0;return j(e.inEdges(r.v),function(r){var o=e.edge(r),s=e.node(r.v);i&&a.push({v:r.v,w:r.w}),s.out-=o,Zr(t,n,s)}),j(e.outEdges(r.v),function(r){var i=e.edge(r),a=r.w,o=e.node(a);o.in-=i,Zr(t,n,o)}),e.removeNode(r.v),a}function Xr(e,t){var n=new O,r=0,i=0;j(e.nodes(),function(e){n.setNode(e,{v:e,in:0,out:0})}),j(e.edges(),function(e){var a=n.edge(e.v,e.w)||0,o=t(e),s=a+o;n.setEdge(e.v,e.w,s),i=Math.max(i,n.node(e.v).out+=o),r=Math.max(r,n.node(e.w).in+=o)});var a=q(i+r+3).map(function(){return new Ur}),o=r+1;return j(n.nodes(),function(e){Zr(a,o,n.node(e))}),{graph:n,buckets:a,zeroIdx:o}}function Zr(e,t,n){n.out?n.in?e[n.out-n.in+t].enqueue(n):e[e.length-1].enqueue(n):e[0].enqueue(n)}function Qr(e){j(e.graph().acyclicer===`greedy`?qr(e,t(e)):$r(e),function(t){var n=e.edge(t);e.removeEdge(t),n.forwardName=t.name,n.reversed=!0,e.setEdge(t.w,t.v,n,Br(`rev`))});function t(e){return function(t){return e.edge(t).weight}}}function $r(e){var t=[],n={},r={};function i(a){Object.prototype.hasOwnProperty.call(r,a)||(r[a]=!0,n[a]=!0,j(e.outEdges(a),function(e){Object.prototype.hasOwnProperty.call(n,e.w)?t.push(e):i(e.w)}),delete n[a])}return j(e.nodes(),i),t}function ei(e){j(e.edges(),function(t){var n=e.edge(t);if(n.reversed){e.removeEdge(t);var r=n.forwardName;delete n.reversed,delete n.forwardName,e.setEdge(t.w,t.v,n,r)}})}function Y(e,t,n,r){var i;do i=Br(r);while(e.hasNode(i));return n.dummy=t,e.setNode(i,n),i}function ti(e){var t=new O().setGraph(e.graph());return j(e.nodes(),function(n){t.setNode(n,e.node(n))}),j(e.edges(),function(n){var r=t.edge(n.v,n.w)||{weight:0,minlen:1},i=e.edge(n);t.setEdge(n.v,n.w,{weight:r.weight+i.weight,minlen:Math.max(r.minlen,i.minlen)})}),t}function ni(e){var t=new O({multigraph:e.isMultigraph()}).setGraph(e.graph());return j(e.nodes(),function(n){e.children(n).length||t.setNode(n,e.node(n))}),j(e.edges(),function(n){t.setEdge(n,e.edge(n))}),t}function ri(e,t){var n=e.x,r=e.y,i=t.x-n,a=t.y-r,o=e.width/2,s=e.height/2;if(!i&&!a)throw Error(`Not possible to find intersection inside of the rectangle`);var c,l;return Math.abs(a)*o>Math.abs(i)*s?(a<0&&(s=-s),c=s*i/a,l=s):(i<0&&(o=-o),c=o,l=o*a/i),{x:n+c,y:r+l}}function X(e){var t=H(q(si(e)+1),function(){return[]});return j(e.nodes(),function(n){var r=e.node(n),i=r.rank;w(i)||(t[i][r.order]=n)}),t}function ii(e){var t=G(H(e.nodes(),function(t){return e.node(t).rank}));j(e.nodes(),function(n){var r=e.node(n);Qn(r,`rank`)&&(r.rank-=t)})}function ai(e){var t=G(H(e.nodes(),function(t){return e.node(t).rank})),n=[];j(e.nodes(),function(r){var i=e.node(r).rank-t;n[i]||(n[i]=[]),n[i].push(r)});var r=0,i=e.graph().nodeRankFactor;j(n,function(t,n){w(t)&&n%i!==0?--r:r&&j(t,function(t){e.node(t).rank+=r})})}function oi(e,t,n,r){var i={width:0,height:0};return arguments.length>=4&&(i.rank=n,i.order=r),Y(e,`border`,i,t)}function si(e){return W(H(e.nodes(),function(t){var n=e.node(t).rank;if(!w(n))return n}))}function ci(e,t){var n={lhs:[],rhs:[]};return j(e,function(e){t(e)?n.lhs.push(e):n.rhs.push(e)}),n}function li(e,t){var n=Nn();try{return t()}finally{console.log(e+` time: `+(Nn()-n)+`ms`)}}function ui(e,t){return t()}function di(e){function t(n){var r=e.children(n),i=e.node(n);if(r.length&&j(r,t),Object.prototype.hasOwnProperty.call(i,`minRank`)){i.borderLeft=[],i.borderRight=[];for(var a=i.minRank,o=i.maxRank+1;ao.lim&&(s=o,c=!0),ir(y(t.edges(),function(t){return c===Wi(e,e.node(t.v),s)&&c!==Wi(e,e.node(t.w),s)}),function(e){return Z(t,e)})}function Vi(e,t,n,r){var i=n.v,a=n.w;e.removeEdge(i,a),e.setEdge(r.v,r.w,{}),Li(e),Pi(e,t),Hi(e,t)}function Hi(e,t){var n=Ni(e,Gn(e.nodes(),function(e){return!t.node(e).parent}));n=n.slice(1),j(n,function(n){var r=e.node(n).parent,i=t.edge(n,r),a=!1;i||(i=t.edge(r,n),a=!0),t.node(n).rank=t.node(r).rank+(a?i.minlen:-i.minlen)})}function Ui(e,t,n){return e.hasEdge(t,n)}function Wi(e,t,n){return n.low<=t.lim&&t.lim<=n.lim}function Gi(e){switch(e.graph().ranker){case`network-simplex`:Ji(e);break;case`tight-tree`:qi(e);break;case`longest-path`:Ki(e);break;default:Ji(e)}}var Ki=wi;function qi(e){wi(e),Ti(e)}function Ji(e){$(e)}function Yi(e){var t=Y(e,`root`,{},`_root`),n=Zi(e),r=W(C(n))-1,i=2*r+1;e.graph().nestingRoot=t,j(e.edges(),function(t){e.edge(t).minlen*=i});var a=Qi(e)+1;j(e.children(),function(o){Xi(e,t,i,a,r,n,o)}),e.graph().nodeRankFactor=i}function Xi(e,t,n,r,i,a,o){var s=e.children(o);if(!s.length){o!==t&&e.setEdge(t,o,{weight:0,minlen:n});return}var c=oi(e,`_bt`),l=oi(e,`_bb`),u=e.node(o);e.setParent(c,o),u.borderTop=c,e.setParent(l,o),u.borderBottom=l,j(s,function(s){Xi(e,t,n,r,i,a,s);var u=e.node(s),d=u.borderTop?u.borderTop:s,f=u.borderBottom?u.borderBottom:s,p=u.borderTop?r:2*r,m=d===f?i-a[o]+1:1;e.setEdge(c,d,{weight:p,minlen:m,nestingEdge:!0}),e.setEdge(f,l,{weight:p,minlen:m,nestingEdge:!0})}),e.parent(o)||e.setEdge(t,c,{weight:0,minlen:i+a[o]})}function Zi(e){var t={};function n(r,i){var a=e.children(r);a&&a.length&&j(a,function(e){n(e,i+1)}),t[r]=i}return j(e.children(),function(e){n(e,1)}),t}function Qi(e){return D(e.edges(),function(t,n){return t+e.edge(n).weight},0)}function $i(e){var t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,j(e.edges(),function(t){e.edge(t).nestingEdge&&e.removeEdge(t)})}function ea(e,t,n){var r={},i;j(n,function(n){for(var a=e.parent(n),o,s;a;){if(o=e.parent(a),o?(s=r[o],r[o]=a):(s=i,i=a),s&&s!==a){t.setEdge(s,a);return}a=o}})}function ta(e,t,n){var r=na(e),i=new O({compound:!0}).setGraph({root:r}).setDefaultNodeLabel(function(t){return e.node(t)});return j(e.nodes(),function(a){var o=e.node(a),s=e.parent(a);(o.rank===t||o.minRank<=t&&t<=o.maxRank)&&(i.setNode(a),i.setParent(a,s||r),j(e[n](a),function(t){var n=t.v===a?t.w:t.v,r=i.edge(n,a),o=w(r)?0:r.weight;i.setEdge(n,a,{weight:e.edge(t).weight+o})}),Object.prototype.hasOwnProperty.call(o,`minRank`)&&i.setNode(a,{borderLeft:o.borderLeft[t],borderRight:o.borderRight[t]}))}),i}function na(e){for(var t;e.hasNode(t=Br(`_root`)););return t}function ra(e,t){for(var n=0,r=1;r0;)t%2&&(n+=s[t+1]),t=t-1>>1,s[t]+=e.weight;c+=e.weight*n})),c}function aa(e){var t={},n=y(e.nodes(),function(t){return!e.children(t).length}),r=H(q(W(H(n,function(t){return e.node(t).rank}))+1),function(){return[]});function i(n){Qn(t,n)||(t[n]=!0,r[e.node(n).rank].push(n),j(e.successors(n),i))}return j(J(n,function(t){return e.node(t).rank}),i),r}function oa(e,t){return H(t,function(t){var n=e.inEdges(t);if(n.length){var r=D(n,function(t,n){var r=e.edge(n),i=e.node(n.v);return{sum:t.sum+r.weight*i.order,weight:t.weight+r.weight}},{sum:0,weight:0});return{v:t,barycenter:r.sum/r.weight,weight:r.weight}}else return{v:t}})}function sa(e,t){var n={};return j(e,function(e,t){var r=n[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:t};w(e.barycenter)||(r.barycenter=e.barycenter,r.weight=e.weight)}),j(t.edges(),function(e){var t=n[e.v],r=n[e.w];!w(t)&&!w(r)&&(r.indegree++,t.out.push(n[e.w]))}),ca(y(n,function(e){return!e.indegree}))}function ca(e){var t=[];function n(e){return function(t){t.merged||(w(t.barycenter)||w(e.barycenter)||t.barycenter>=e.barycenter)&&la(e,t)}}function r(t){return function(n){n.in.push(t),--n.indegree===0&&e.push(n)}}for(;e.length;){var i=e.pop();t.push(i),j(i.in.reverse(),n(i)),j(i.out,r(i))}return H(y(t,function(e){return!e.merged}),function(e){return K(e,[`vs`,`i`,`barycenter`,`weight`])})}function la(e,t){var n=0,r=0;e.weight&&(n+=e.barycenter*e.weight,r+=e.weight),t.weight&&(n+=t.barycenter*t.weight,r+=t.weight),e.vs=t.vs.concat(e.vs),e.barycenter=n/r,e.weight=r,e.i=Math.min(t.i,e.i),t.merged=!0}function ua(e,t){var n=ci(e,function(e){return Object.prototype.hasOwnProperty.call(e,`barycenter`)}),r=n.lhs,i=J(n.rhs,function(e){return-e.i}),a=[],o=0,s=0,c=0;r.sort(fa(!!t)),c=da(a,i,c),j(r,function(e){c+=e.vs.length,a.push(e.vs),o+=e.barycenter*e.weight,s+=e.weight,c=da(a,i,c)});var l={vs:R(a)};return s&&(l.barycenter=o/s,l.weight=s),l}function da(e,t,n){for(var r;t.length&&(r=V(t)).i<=n;)t.pop(),e.push(r.vs),n++;return n}function fa(e){return function(t,n){return t.barycentern.barycenter?1:e?n.i-t.i:t.i-n.i}}function pa(e,t,n,r){var i=e.children(t),a=e.node(t),o=a?a.borderLeft:void 0,s=a?a.borderRight:void 0,c={};o&&(i=y(i,function(e){return e!==o&&e!==s}));var l=oa(e,i);j(l,function(t){if(e.children(t.v).length){var i=pa(e,t.v,n,r);c[t.v]=i,Object.prototype.hasOwnProperty.call(i,`barycenter`)&&ha(t,i)}});var u=sa(l,n);ma(u,c);var d=ua(u,r);if(o&&(d.vs=R([o,d.vs,s]),e.predecessors(o).length)){var f=e.node(e.predecessors(o)[0]),p=e.node(e.predecessors(s)[0]);Object.prototype.hasOwnProperty.call(d,`barycenter`)||(d.barycenter=0,d.weight=0),d.barycenter=(d.barycenter*d.weight+f.order+p.order)/(d.weight+2),d.weight+=2}return d}function ma(e,t){j(e,function(e){e.vs=R(e.vs.map(function(e){return t[e]?t[e].vs:e}))})}function ha(e,t){w(e.barycenter)?(e.barycenter=t.barycenter,e.weight=t.weight):(e.barycenter=(e.barycenter*e.weight+t.barycenter*t.weight)/(e.weight+t.weight),e.weight+=t.weight)}function ga(e){var t=si(e),n=_a(e,q(1,t+1),`inEdges`),r=_a(e,q(t-1,-1,-1),`outEdges`),i=aa(e);ya(e,i);for(var a=1/0,o,s=0,c=0;c<4;++s,++c){va(s%2?n:r,s%4>=2),i=X(e);var l=ra(e,i);lo||s>t[c].lim));for(l=c,c=r;(c=e.parent(c))!==l;)a.push(c);return{path:i.concat(a.reverse()),lca:l}}function Sa(e){var t={},n=0;function r(i){var a=n;j(e.children(i),r),t[i]={low:a,lim:n++}}return j(e.children(),r),t}function Ca(e,t){var n={};function r(t,r){var i=0,a=0,o=t.length,s=V(r);return j(r,function(t,c){var l=Ta(e,t),u=l?e.node(l).order:o;(l||t===s)&&(j(r.slice(a,c+1),function(t){j(e.predecessors(t),function(r){var a=e.node(r),o=a.order;(oo)&&Ea(n,t,s)})})}function i(t,n){var i=-1,a,o=0;return j(n,function(s,c){if(e.node(s).dummy===`border`){var l=e.predecessors(s);l.length&&(a=e.node(l[0]).order,r(n,o,c,i,a),o=c,i=a)}r(n,o,n.length,a,t.length)}),n}return D(t,i),n}function Ta(e,t){if(e.node(t).dummy)return Gn(e.predecessors(t),function(t){return e.node(t).dummy})}function Ea(e,t,n){if(t>n){var r=t;t=n,n=r}Object.prototype.hasOwnProperty.call(e,t)||Object.defineProperty(e,t,{enumerable:!0,configurable:!0,value:{},writable:!0});var i=e[t];Object.defineProperty(i,n,{enumerable:!0,configurable:!0,value:!0,writable:!0})}function Da(e,t,n){if(t>n){var r=t;t=n,n=r}return!!e[t]&&Object.prototype.hasOwnProperty.call(e[t],n)}function Oa(e,t,n,r){var i={},a={},o={};return j(t,function(e){j(e,function(e,t){i[e]=e,a[e]=e,o[e]=t})}),j(t,function(e){var t=-1;j(e,function(e){var s=r(e);if(s.length){s=J(s,function(e){return o[e]});for(var c=(s.length-1)/2,l=Math.floor(c),u=Math.ceil(c);l<=u;++l){var d=s[l];a[e]===e&&t{var t=n(` buildLayoutGraph`,()=>Xa(e));n(` runLayout`,()=>Ba(t,n)),n(` updateInputGraph`,()=>Va(e,t))})}function Ba(e,t){t(` makeSpaceForEdgeLabels`,()=>Za(e)),t(` removeSelfEdges`,()=>oo(e)),t(` acyclic`,()=>Qr(e)),t(` nestingGraph.run`,()=>Yi(e)),t(` rank`,()=>Gi(ni(e))),t(` injectEdgeLabelProxies`,()=>Qa(e)),t(` removeEmptyRanks`,()=>ai(e)),t(` nestingGraph.cleanup`,()=>$i(e)),t(` normalizeRanks`,()=>ii(e)),t(` assignRankMinMax`,()=>$a(e)),t(` removeEdgeLabelProxies`,()=>eo(e)),t(` normalize.run`,()=>xi(e)),t(` parentDummyChains`,()=>ba(e)),t(` addBorderSegments`,()=>di(e)),t(` order`,()=>ga(e)),t(` insertSelfEdges`,()=>so(e)),t(` adjustCoordinateSystem`,()=>pi(e)),t(` position`,()=>La(e)),t(` positionSelfEdges`,()=>co(e)),t(` removeBorderNodes`,()=>ao(e)),t(` normalize.undo`,()=>Ci(e)),t(` fixupEdgeLabelCoords`,()=>ro(e)),t(` undoCoordinateSystem`,()=>mi(e)),t(` translateGraph`,()=>to(e)),t(` assignNodeIntersects`,()=>no(e)),t(` reversePoints`,()=>io(e)),t(` acyclic.undo`,()=>ei(e))}function Va(e,t){j(e.nodes(),function(n){var r=e.node(n),i=t.node(n);r&&(r.x=i.x,r.y=i.y,t.children(n).length&&(r.width=i.width,r.height=i.height))}),j(e.edges(),function(n){var r=e.edge(n),i=t.edge(n);r.points=i.points,Object.prototype.hasOwnProperty.call(i,`x`)&&(r.x=i.x,r.y=i.y)}),e.graph().width=t.graph().width,e.graph().height=t.graph().height}var Ha=[`nodesep`,`edgesep`,`ranksep`,`marginx`,`marginy`],Ua={ranksep:50,edgesep:20,nodesep:50,rankdir:`tb`},Wa=[`acyclicer`,`ranker`,`rankdir`,`align`],Ga=[`width`,`height`],Ka={width:0,height:0},qa=[`minlen`,`weight`,`width`,`height`,`labeloffset`],Ja={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:`r`},Ya=[`labelpos`];function Xa(e){var t=new O({multigraph:!0,compound:!0}),n=uo(e.graph());return t.setGraph(rr({},Ua,lo(n,Ha),K(n,Wa))),j(e.nodes(),function(n){var r=uo(e.node(n));t.setNode(n,In(lo(r,Ga),Ka)),t.setParent(n,e.parent(n))}),j(e.edges(),function(n){var r=uo(e.edge(n));t.setEdge(n,rr({},Ja,lo(r,qa),K(r,Ya)))}),t}function Za(e){var t=e.graph();t.ranksep/=2,j(e.edges(),function(n){var r=e.edge(n);r.minlen*=2,r.labelpos.toLowerCase()!==`c`&&(t.rankdir===`TB`||t.rankdir===`BT`?r.width+=r.labeloffset:r.height+=r.labeloffset)})}function Qa(e){j(e.edges(),function(t){var n=e.edge(t);if(n.width&&n.height){var r=e.node(t.v);Y(e,`edge-proxy`,{rank:(e.node(t.w).rank-r.rank)/2+r.rank,e:t},`_ep`)}})}function $a(e){var t=0;j(e.nodes(),function(n){var r=e.node(n);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,t=W(t,r.maxRank))}),e.graph().maxRank=t}function eo(e){j(e.nodes(),function(t){var n=e.node(t);n.dummy===`edge-proxy`&&(e.edge(n.e).labelRank=n.rank,e.removeNode(t))})}function to(e){var t=1/0,n=0,r=1/0,i=0,a=e.graph(),o=a.marginx||0,s=a.marginy||0;function c(e){var a=e.x,o=e.y,s=e.width,c=e.height;t=Math.min(t,a-s/2),n=Math.max(n,a+s/2),r=Math.min(r,o-c/2),i=Math.max(i,o+c/2)}j(e.nodes(),function(t){c(e.node(t))}),j(e.edges(),function(t){var n=e.edge(t);Object.prototype.hasOwnProperty.call(n,`x`)&&c(n)}),t-=o,r-=s,j(e.nodes(),function(n){var i=e.node(n);i.x-=t,i.y-=r}),j(e.edges(),function(n){var i=e.edge(n);j(i.points,function(e){e.x-=t,e.y-=r}),Object.prototype.hasOwnProperty.call(i,`x`)&&(i.x-=t),Object.prototype.hasOwnProperty.call(i,`y`)&&(i.y-=r)}),a.width=n-t+o,a.height=i-r+s}function no(e){j(e.edges(),function(t){var n=e.edge(t),r=e.node(t.v),i=e.node(t.w),a,o;n.points?(a=n.points[0],o=n.points[n.points.length-1]):(n.points=[],a=i,o=r),n.points.unshift(ri(r,a)),n.points.push(ri(i,o))})}function ro(e){j(e.edges(),function(t){var n=e.edge(t);if(Object.prototype.hasOwnProperty.call(n,`x`))switch((n.labelpos===`l`||n.labelpos===`r`)&&(n.width-=n.labeloffset),n.labelpos){case`l`:n.x-=n.width/2+n.labeloffset;break;case`r`:n.x+=n.width/2+n.labeloffset;break}})}function io(e){j(e.edges(),function(t){var n=e.edge(t);n.reversed&&n.points.reverse()})}function ao(e){j(e.nodes(),function(t){if(e.children(t).length){var n=e.node(t),r=e.node(n.borderTop),i=e.node(n.borderBottom),a=e.node(V(n.borderLeft)),o=e.node(V(n.borderRight));n.width=Math.abs(o.x-a.x),n.height=Math.abs(i.y-r.y),n.x=a.x+n.width/2,n.y=r.y+n.height/2}}),j(e.nodes(),function(t){e.node(t).dummy===`border`&&e.removeNode(t)})}function oo(e){j(e.edges(),function(t){if(t.v===t.w){var n=e.node(t.v);n.selfEdges||=[],n.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}})}function so(e){j(X(e),function(t){var n=0;j(t,function(t,r){var i=e.node(t);i.order=r+n,j(i.selfEdges,function(t){Y(e,`selfedge`,{width:t.label.width,height:t.label.height,rank:i.rank,order:r+ ++n,e:t.e,label:t.label},`_se`)}),delete i.selfEdges})})}function co(e){j(e.nodes(),function(t){var n=e.node(t);if(n.dummy===`selfedge`){var r=e.node(n.e.v),i=r.x+r.width/2,a=r.y,o=n.x-i,s=r.height/2;e.setEdge(n.e,n.label),e.removeNode(t),n.label.points=[{x:i+2*o/3,y:a-s},{x:i+5*o/6,y:a-s},{x:i+o,y:a},{x:i+5*o/6,y:a+s},{x:i+2*o/3,y:a+s}],n.label.x=n.x,n.label.y=n.y}})}function lo(e,t){return U(K(e,t),Number)}function uo(e){var t={};return j(e,function(e,n){t[n.toLowerCase()]=e}),t}export{za as t}; \ No newline at end of file +import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,Q as _,R as ee,S as te,T as ne,U as re,V as ie,W as ae,X as oe,Y as se,Z as v,_ as y,at as ce,b as le,ct as ue,dt as b,et as x,ft as S,g as C,gt as de,h as w,ht as fe,it as pe,j as me,k as T,lt as E,m as D,mt as he,nt as ge,ot as _e,p as O,pt as k,q as ve,rt as ye,st as be,tt as xe,ut as A,v as j,w as M,x as Se,y as Ce,z as we}from"./MermaidBlock-CI9NjqQx.js";var Te=/\s/;function Ee(e){for(var t=e.length;t--&&Te.test(e.charAt(t)););return t}var De=/^\s+/;function Oe(e){return e&&e.slice(0,Ee(e)+1).replace(De,``)}var ke=NaN,Ae=/^[-+]0x[0-9a-f]+$/i,je=/^0b[01]+$/i,Me=/^0o[0-7]+$/i,Ne=parseInt;function Pe(e){if(typeof e==`number`)return e;if(S(e))return ke;if(E(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=E(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=Oe(e);var n=je.test(e);return n||Me.test(e)?Ne(e.slice(2),n?2:8):Ae.test(e)?ke:+e}var Fe=1/0,Ie=17976931348623157e292;function N(e){return e?(e=Pe(e),e===Fe||e===-Fe?(e<0?-1:1)*Ie:e===e?e:0):e===0?e:0}function Le(e){var t=N(e),n=t%1;return t===t?n?t-n:t:0}var Re=Object.create,ze=function(){function e(){}return function(t){if(!E(t))return{};if(Re)return Re(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function Be(e,t){var n=-1,r=e.length;for(t||=Array(r);++n1?n[i-1]:void 0,o=i>2?n[2]:void 0;for(a=e.length>3&&typeof a==`function`?(i--,a):void 0,o&&I(n[0],n[1],o)&&(a=i<3?void 0:a,i=1),t=Object(t);++r2?t[2]:void 0;for(i&&I(t[0],t[1],i)&&(r=1);++n-1?i[a?t[o]:o]:void 0}}var Un=Math.max;function Wn(e,t,n){var r=e==null?0:e.length;if(!r)return-1;var i=n==null?0:Le(n);return i<0&&(i=Un(r+i,0)),ge(e,M(t,3),i)}var Gn=Hn(Wn);function Kn(e,t){var n=-1,r=v(e)?Array(e.length):[];return Se(e,function(e,i,a){r[++n]=t(e,i,a)}),r}function H(e,t){return(A(e)?b:Kn)(e,M(t,3))}function qn(e,t){return e==null?e:r(e,Ce(t),L)}function Jn(e,t){return e&&te(e,Ce(t))}function Yn(e,t){return e>t}var Xn=Object.prototype.hasOwnProperty;function Zn(e,t){return e!=null&&Xn.call(e,t)}function Qn(e,t){return e!=null&&i(e,t,Zn)}var $n=`[object String]`;function er(e){return typeof e==`string`||!A(e)&&k(e)&&he(e)==$n}function tr(e,t){return et||a&&o&&c&&!s&&!l||r&&o&&c||!n&&c||!i)return 1;if(!r&&!a&&!l&&e=s?c:c*(n[r]==`desc`?-1:1)}return e.index-t.index}function ur(e,t,n){t=t.length?b(t,function(e){return A(e)?function(t){return f(t,e.length===1?e[0]:e)}:e}):[ue];var r=-1;return t=b(t,ve(M)),sr(Kn(e,function(e,n,i){return{criteria:b(t,function(t){return t(e)}),index:++r,value:e}}),function(e,t){return lr(e,t,n)})}var dr=ne(`length`),fr=`\\ud800-\\udfff`,pr=`\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff`,mr=`\\ufe0e\\ufe0f`,hr=`[`+fr+`]`,gr=`[`+pr+`]`,_r=`\\ud83c[\\udffb-\\udfff]`,vr=`(?:`+gr+`|`+_r+`)`,yr=`[^`+fr+`]`,br=`(?:\\ud83c[\\udde6-\\uddff]){2}`,xr=`[\\ud800-\\udbff][\\udc00-\\udfff]`,Sr=`\\u200d`,Cr=vr+`?`,wr=`[`+mr+`]?`,Tr=`(?:`+Sr+`(?:`+[yr,br,xr].join(`|`)+`)`+wr+Cr+`)*`,Er=wr+Cr+Tr,Dr=`(?:`+[yr+gr+`?`,gr,br,xr,hr].join(`|`)+`)`,Or=RegExp(_r+`(?=`+_r+`)|`+Dr+Er,`g`);function kr(e){for(var t=Or.lastIndex=0;Or.test(e);)++t;return t}function Ar(e){return rt(e)?kr(e):dr(e)}function jr(e,t){return or(e,t,function(t,n){return a(e,n)})}var K=qe(function(e,t){return e==null?{}:jr(e,t)}),Mr=Math.ceil,Nr=Math.max;function Pr(e,t,n,r){for(var i=-1,a=Nr(Mr((t-e)/(n||1)),0),o=Array(a);a--;)o[r?a:++i]=e,e+=n;return o}function Fr(e){return function(t,n,r){return r&&typeof r!=`number`&&I(t,n,r)&&(n=r=void 0),t=N(t),n===void 0?(n=t,t=0):n=N(n),r=r===void 0?t1&&I(e,t[0],t[1])?t=[]:n>2&&I(t[0],t[1],t[2])&&(t=[t[0]]),ur(e,o(t,1),[])}),zr=0;function Br(e){var t=++zr;return n(e)+t}function Vr(e,t,n){for(var r=-1,i=e.length,a=t.length,o={};++r0;--s)if(o=t[s].dequeue(),o){r=r.concat(Yr(e,t,n,o,!0));break}}}return r}function Yr(e,t,n,r,i){var a=i?[]:void 0;return j(e.inEdges(r.v),function(r){var o=e.edge(r),s=e.node(r.v);i&&a.push({v:r.v,w:r.w}),s.out-=o,Zr(t,n,s)}),j(e.outEdges(r.v),function(r){var i=e.edge(r),a=r.w,o=e.node(a);o.in-=i,Zr(t,n,o)}),e.removeNode(r.v),a}function Xr(e,t){var n=new O,r=0,i=0;j(e.nodes(),function(e){n.setNode(e,{v:e,in:0,out:0})}),j(e.edges(),function(e){var a=n.edge(e.v,e.w)||0,o=t(e),s=a+o;n.setEdge(e.v,e.w,s),i=Math.max(i,n.node(e.v).out+=o),r=Math.max(r,n.node(e.w).in+=o)});var a=q(i+r+3).map(function(){return new Ur}),o=r+1;return j(n.nodes(),function(e){Zr(a,o,n.node(e))}),{graph:n,buckets:a,zeroIdx:o}}function Zr(e,t,n){n.out?n.in?e[n.out-n.in+t].enqueue(n):e[e.length-1].enqueue(n):e[0].enqueue(n)}function Qr(e){j(e.graph().acyclicer===`greedy`?qr(e,t(e)):$r(e),function(t){var n=e.edge(t);e.removeEdge(t),n.forwardName=t.name,n.reversed=!0,e.setEdge(t.w,t.v,n,Br(`rev`))});function t(e){return function(t){return e.edge(t).weight}}}function $r(e){var t=[],n={},r={};function i(a){Object.prototype.hasOwnProperty.call(r,a)||(r[a]=!0,n[a]=!0,j(e.outEdges(a),function(e){Object.prototype.hasOwnProperty.call(n,e.w)?t.push(e):i(e.w)}),delete n[a])}return j(e.nodes(),i),t}function ei(e){j(e.edges(),function(t){var n=e.edge(t);if(n.reversed){e.removeEdge(t);var r=n.forwardName;delete n.reversed,delete n.forwardName,e.setEdge(t.w,t.v,n,r)}})}function Y(e,t,n,r){var i;do i=Br(r);while(e.hasNode(i));return n.dummy=t,e.setNode(i,n),i}function ti(e){var t=new O().setGraph(e.graph());return j(e.nodes(),function(n){t.setNode(n,e.node(n))}),j(e.edges(),function(n){var r=t.edge(n.v,n.w)||{weight:0,minlen:1},i=e.edge(n);t.setEdge(n.v,n.w,{weight:r.weight+i.weight,minlen:Math.max(r.minlen,i.minlen)})}),t}function ni(e){var t=new O({multigraph:e.isMultigraph()}).setGraph(e.graph());return j(e.nodes(),function(n){e.children(n).length||t.setNode(n,e.node(n))}),j(e.edges(),function(n){t.setEdge(n,e.edge(n))}),t}function ri(e,t){var n=e.x,r=e.y,i=t.x-n,a=t.y-r,o=e.width/2,s=e.height/2;if(!i&&!a)throw Error(`Not possible to find intersection inside of the rectangle`);var c,l;return Math.abs(a)*o>Math.abs(i)*s?(a<0&&(s=-s),c=s*i/a,l=s):(i<0&&(o=-o),c=o,l=o*a/i),{x:n+c,y:r+l}}function X(e){var t=H(q(si(e)+1),function(){return[]});return j(e.nodes(),function(n){var r=e.node(n),i=r.rank;w(i)||(t[i][r.order]=n)}),t}function ii(e){var t=G(H(e.nodes(),function(t){return e.node(t).rank}));j(e.nodes(),function(n){var r=e.node(n);Qn(r,`rank`)&&(r.rank-=t)})}function ai(e){var t=G(H(e.nodes(),function(t){return e.node(t).rank})),n=[];j(e.nodes(),function(r){var i=e.node(r).rank-t;n[i]||(n[i]=[]),n[i].push(r)});var r=0,i=e.graph().nodeRankFactor;j(n,function(t,n){w(t)&&n%i!==0?--r:r&&j(t,function(t){e.node(t).rank+=r})})}function oi(e,t,n,r){var i={width:0,height:0};return arguments.length>=4&&(i.rank=n,i.order=r),Y(e,`border`,i,t)}function si(e){return W(H(e.nodes(),function(t){var n=e.node(t).rank;if(!w(n))return n}))}function ci(e,t){var n={lhs:[],rhs:[]};return j(e,function(e){t(e)?n.lhs.push(e):n.rhs.push(e)}),n}function li(e,t){var n=Nn();try{return t()}finally{console.log(e+` time: `+(Nn()-n)+`ms`)}}function ui(e,t){return t()}function di(e){function t(n){var r=e.children(n),i=e.node(n);if(r.length&&j(r,t),Object.prototype.hasOwnProperty.call(i,`minRank`)){i.borderLeft=[],i.borderRight=[];for(var a=i.minRank,o=i.maxRank+1;ao.lim&&(s=o,c=!0),ir(y(t.edges(),function(t){return c===Wi(e,e.node(t.v),s)&&c!==Wi(e,e.node(t.w),s)}),function(e){return Z(t,e)})}function Vi(e,t,n,r){var i=n.v,a=n.w;e.removeEdge(i,a),e.setEdge(r.v,r.w,{}),Li(e),Pi(e,t),Hi(e,t)}function Hi(e,t){var n=Ni(e,Gn(e.nodes(),function(e){return!t.node(e).parent}));n=n.slice(1),j(n,function(n){var r=e.node(n).parent,i=t.edge(n,r),a=!1;i||(i=t.edge(r,n),a=!0),t.node(n).rank=t.node(r).rank+(a?i.minlen:-i.minlen)})}function Ui(e,t,n){return e.hasEdge(t,n)}function Wi(e,t,n){return n.low<=t.lim&&t.lim<=n.lim}function Gi(e){switch(e.graph().ranker){case`network-simplex`:Ji(e);break;case`tight-tree`:qi(e);break;case`longest-path`:Ki(e);break;default:Ji(e)}}var Ki=wi;function qi(e){wi(e),Ti(e)}function Ji(e){$(e)}function Yi(e){var t=Y(e,`root`,{},`_root`),n=Zi(e),r=W(C(n))-1,i=2*r+1;e.graph().nestingRoot=t,j(e.edges(),function(t){e.edge(t).minlen*=i});var a=Qi(e)+1;j(e.children(),function(o){Xi(e,t,i,a,r,n,o)}),e.graph().nodeRankFactor=i}function Xi(e,t,n,r,i,a,o){var s=e.children(o);if(!s.length){o!==t&&e.setEdge(t,o,{weight:0,minlen:n});return}var c=oi(e,`_bt`),l=oi(e,`_bb`),u=e.node(o);e.setParent(c,o),u.borderTop=c,e.setParent(l,o),u.borderBottom=l,j(s,function(s){Xi(e,t,n,r,i,a,s);var u=e.node(s),d=u.borderTop?u.borderTop:s,f=u.borderBottom?u.borderBottom:s,p=u.borderTop?r:2*r,m=d===f?i-a[o]+1:1;e.setEdge(c,d,{weight:p,minlen:m,nestingEdge:!0}),e.setEdge(f,l,{weight:p,minlen:m,nestingEdge:!0})}),e.parent(o)||e.setEdge(t,c,{weight:0,minlen:i+a[o]})}function Zi(e){var t={};function n(r,i){var a=e.children(r);a&&a.length&&j(a,function(e){n(e,i+1)}),t[r]=i}return j(e.children(),function(e){n(e,1)}),t}function Qi(e){return D(e.edges(),function(t,n){return t+e.edge(n).weight},0)}function $i(e){var t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,j(e.edges(),function(t){e.edge(t).nestingEdge&&e.removeEdge(t)})}function ea(e,t,n){var r={},i;j(n,function(n){for(var a=e.parent(n),o,s;a;){if(o=e.parent(a),o?(s=r[o],r[o]=a):(s=i,i=a),s&&s!==a){t.setEdge(s,a);return}a=o}})}function ta(e,t,n){var r=na(e),i=new O({compound:!0}).setGraph({root:r}).setDefaultNodeLabel(function(t){return e.node(t)});return j(e.nodes(),function(a){var o=e.node(a),s=e.parent(a);(o.rank===t||o.minRank<=t&&t<=o.maxRank)&&(i.setNode(a),i.setParent(a,s||r),j(e[n](a),function(t){var n=t.v===a?t.w:t.v,r=i.edge(n,a),o=w(r)?0:r.weight;i.setEdge(n,a,{weight:e.edge(t).weight+o})}),Object.prototype.hasOwnProperty.call(o,`minRank`)&&i.setNode(a,{borderLeft:o.borderLeft[t],borderRight:o.borderRight[t]}))}),i}function na(e){for(var t;e.hasNode(t=Br(`_root`)););return t}function ra(e,t){for(var n=0,r=1;r0;)t%2&&(n+=s[t+1]),t=t-1>>1,s[t]+=e.weight;c+=e.weight*n})),c}function aa(e){var t={},n=y(e.nodes(),function(t){return!e.children(t).length}),r=H(q(W(H(n,function(t){return e.node(t).rank}))+1),function(){return[]});function i(n){Qn(t,n)||(t[n]=!0,r[e.node(n).rank].push(n),j(e.successors(n),i))}return j(J(n,function(t){return e.node(t).rank}),i),r}function oa(e,t){return H(t,function(t){var n=e.inEdges(t);if(n.length){var r=D(n,function(t,n){var r=e.edge(n),i=e.node(n.v);return{sum:t.sum+r.weight*i.order,weight:t.weight+r.weight}},{sum:0,weight:0});return{v:t,barycenter:r.sum/r.weight,weight:r.weight}}else return{v:t}})}function sa(e,t){var n={};return j(e,function(e,t){var r=n[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:t};w(e.barycenter)||(r.barycenter=e.barycenter,r.weight=e.weight)}),j(t.edges(),function(e){var t=n[e.v],r=n[e.w];!w(t)&&!w(r)&&(r.indegree++,t.out.push(n[e.w]))}),ca(y(n,function(e){return!e.indegree}))}function ca(e){var t=[];function n(e){return function(t){t.merged||(w(t.barycenter)||w(e.barycenter)||t.barycenter>=e.barycenter)&&la(e,t)}}function r(t){return function(n){n.in.push(t),--n.indegree===0&&e.push(n)}}for(;e.length;){var i=e.pop();t.push(i),j(i.in.reverse(),n(i)),j(i.out,r(i))}return H(y(t,function(e){return!e.merged}),function(e){return K(e,[`vs`,`i`,`barycenter`,`weight`])})}function la(e,t){var n=0,r=0;e.weight&&(n+=e.barycenter*e.weight,r+=e.weight),t.weight&&(n+=t.barycenter*t.weight,r+=t.weight),e.vs=t.vs.concat(e.vs),e.barycenter=n/r,e.weight=r,e.i=Math.min(t.i,e.i),t.merged=!0}function ua(e,t){var n=ci(e,function(e){return Object.prototype.hasOwnProperty.call(e,`barycenter`)}),r=n.lhs,i=J(n.rhs,function(e){return-e.i}),a=[],o=0,s=0,c=0;r.sort(fa(!!t)),c=da(a,i,c),j(r,function(e){c+=e.vs.length,a.push(e.vs),o+=e.barycenter*e.weight,s+=e.weight,c=da(a,i,c)});var l={vs:R(a)};return s&&(l.barycenter=o/s,l.weight=s),l}function da(e,t,n){for(var r;t.length&&(r=V(t)).i<=n;)t.pop(),e.push(r.vs),n++;return n}function fa(e){return function(t,n){return t.barycentern.barycenter?1:e?n.i-t.i:t.i-n.i}}function pa(e,t,n,r){var i=e.children(t),a=e.node(t),o=a?a.borderLeft:void 0,s=a?a.borderRight:void 0,c={};o&&(i=y(i,function(e){return e!==o&&e!==s}));var l=oa(e,i);j(l,function(t){if(e.children(t.v).length){var i=pa(e,t.v,n,r);c[t.v]=i,Object.prototype.hasOwnProperty.call(i,`barycenter`)&&ha(t,i)}});var u=sa(l,n);ma(u,c);var d=ua(u,r);if(o&&(d.vs=R([o,d.vs,s]),e.predecessors(o).length)){var f=e.node(e.predecessors(o)[0]),p=e.node(e.predecessors(s)[0]);Object.prototype.hasOwnProperty.call(d,`barycenter`)||(d.barycenter=0,d.weight=0),d.barycenter=(d.barycenter*d.weight+f.order+p.order)/(d.weight+2),d.weight+=2}return d}function ma(e,t){j(e,function(e){e.vs=R(e.vs.map(function(e){return t[e]?t[e].vs:e}))})}function ha(e,t){w(e.barycenter)?(e.barycenter=t.barycenter,e.weight=t.weight):(e.barycenter=(e.barycenter*e.weight+t.barycenter*t.weight)/(e.weight+t.weight),e.weight+=t.weight)}function ga(e){var t=si(e),n=_a(e,q(1,t+1),`inEdges`),r=_a(e,q(t-1,-1,-1),`outEdges`),i=aa(e);ya(e,i);for(var a=1/0,o,s=0,c=0;c<4;++s,++c){va(s%2?n:r,s%4>=2),i=X(e);var l=ra(e,i);lo||s>t[c].lim));for(l=c,c=r;(c=e.parent(c))!==l;)a.push(c);return{path:i.concat(a.reverse()),lca:l}}function Sa(e){var t={},n=0;function r(i){var a=n;j(e.children(i),r),t[i]={low:a,lim:n++}}return j(e.children(),r),t}function Ca(e,t){var n={};function r(t,r){var i=0,a=0,o=t.length,s=V(r);return j(r,function(t,c){var l=Ta(e,t),u=l?e.node(l).order:o;(l||t===s)&&(j(r.slice(a,c+1),function(t){j(e.predecessors(t),function(r){var a=e.node(r),o=a.order;(oo)&&Ea(n,t,s)})})}function i(t,n){var i=-1,a,o=0;return j(n,function(s,c){if(e.node(s).dummy===`border`){var l=e.predecessors(s);l.length&&(a=e.node(l[0]).order,r(n,o,c,i,a),o=c,i=a)}r(n,o,n.length,a,t.length)}),n}return D(t,i),n}function Ta(e,t){if(e.node(t).dummy)return Gn(e.predecessors(t),function(t){return e.node(t).dummy})}function Ea(e,t,n){if(t>n){var r=t;t=n,n=r}Object.prototype.hasOwnProperty.call(e,t)||Object.defineProperty(e,t,{enumerable:!0,configurable:!0,value:{},writable:!0});var i=e[t];Object.defineProperty(i,n,{enumerable:!0,configurable:!0,value:!0,writable:!0})}function Da(e,t,n){if(t>n){var r=t;t=n,n=r}return!!e[t]&&Object.prototype.hasOwnProperty.call(e[t],n)}function Oa(e,t,n,r){var i={},a={},o={};return j(t,function(e){j(e,function(e,t){i[e]=e,a[e]=e,o[e]=t})}),j(t,function(e){var t=-1;j(e,function(e){var s=r(e);if(s.length){s=J(s,function(e){return o[e]});for(var c=(s.length-1)/2,l=Math.floor(c),u=Math.ceil(c);l<=u;++l){var d=s[l];a[e]===e&&t{var t=n(` buildLayoutGraph`,()=>Xa(e));n(` runLayout`,()=>Ba(t,n)),n(` updateInputGraph`,()=>Va(e,t))})}function Ba(e,t){t(` makeSpaceForEdgeLabels`,()=>Za(e)),t(` removeSelfEdges`,()=>oo(e)),t(` acyclic`,()=>Qr(e)),t(` nestingGraph.run`,()=>Yi(e)),t(` rank`,()=>Gi(ni(e))),t(` injectEdgeLabelProxies`,()=>Qa(e)),t(` removeEmptyRanks`,()=>ai(e)),t(` nestingGraph.cleanup`,()=>$i(e)),t(` normalizeRanks`,()=>ii(e)),t(` assignRankMinMax`,()=>$a(e)),t(` removeEdgeLabelProxies`,()=>eo(e)),t(` normalize.run`,()=>xi(e)),t(` parentDummyChains`,()=>ba(e)),t(` addBorderSegments`,()=>di(e)),t(` order`,()=>ga(e)),t(` insertSelfEdges`,()=>so(e)),t(` adjustCoordinateSystem`,()=>pi(e)),t(` position`,()=>La(e)),t(` positionSelfEdges`,()=>co(e)),t(` removeBorderNodes`,()=>ao(e)),t(` normalize.undo`,()=>Ci(e)),t(` fixupEdgeLabelCoords`,()=>ro(e)),t(` undoCoordinateSystem`,()=>mi(e)),t(` translateGraph`,()=>to(e)),t(` assignNodeIntersects`,()=>no(e)),t(` reversePoints`,()=>io(e)),t(` acyclic.undo`,()=>ei(e))}function Va(e,t){j(e.nodes(),function(n){var r=e.node(n),i=t.node(n);r&&(r.x=i.x,r.y=i.y,t.children(n).length&&(r.width=i.width,r.height=i.height))}),j(e.edges(),function(n){var r=e.edge(n),i=t.edge(n);r.points=i.points,Object.prototype.hasOwnProperty.call(i,`x`)&&(r.x=i.x,r.y=i.y)}),e.graph().width=t.graph().width,e.graph().height=t.graph().height}var Ha=[`nodesep`,`edgesep`,`ranksep`,`marginx`,`marginy`],Ua={ranksep:50,edgesep:20,nodesep:50,rankdir:`tb`},Wa=[`acyclicer`,`ranker`,`rankdir`,`align`],Ga=[`width`,`height`],Ka={width:0,height:0},qa=[`minlen`,`weight`,`width`,`height`,`labeloffset`],Ja={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:`r`},Ya=[`labelpos`];function Xa(e){var t=new O({multigraph:!0,compound:!0}),n=uo(e.graph());return t.setGraph(rr({},Ua,lo(n,Ha),K(n,Wa))),j(e.nodes(),function(n){var r=uo(e.node(n));t.setNode(n,In(lo(r,Ga),Ka)),t.setParent(n,e.parent(n))}),j(e.edges(),function(n){var r=uo(e.edge(n));t.setEdge(n,rr({},Ja,lo(r,qa),K(r,Ya)))}),t}function Za(e){var t=e.graph();t.ranksep/=2,j(e.edges(),function(n){var r=e.edge(n);r.minlen*=2,r.labelpos.toLowerCase()!==`c`&&(t.rankdir===`TB`||t.rankdir===`BT`?r.width+=r.labeloffset:r.height+=r.labeloffset)})}function Qa(e){j(e.edges(),function(t){var n=e.edge(t);if(n.width&&n.height){var r=e.node(t.v);Y(e,`edge-proxy`,{rank:(e.node(t.w).rank-r.rank)/2+r.rank,e:t},`_ep`)}})}function $a(e){var t=0;j(e.nodes(),function(n){var r=e.node(n);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,t=W(t,r.maxRank))}),e.graph().maxRank=t}function eo(e){j(e.nodes(),function(t){var n=e.node(t);n.dummy===`edge-proxy`&&(e.edge(n.e).labelRank=n.rank,e.removeNode(t))})}function to(e){var t=1/0,n=0,r=1/0,i=0,a=e.graph(),o=a.marginx||0,s=a.marginy||0;function c(e){var a=e.x,o=e.y,s=e.width,c=e.height;t=Math.min(t,a-s/2),n=Math.max(n,a+s/2),r=Math.min(r,o-c/2),i=Math.max(i,o+c/2)}j(e.nodes(),function(t){c(e.node(t))}),j(e.edges(),function(t){var n=e.edge(t);Object.prototype.hasOwnProperty.call(n,`x`)&&c(n)}),t-=o,r-=s,j(e.nodes(),function(n){var i=e.node(n);i.x-=t,i.y-=r}),j(e.edges(),function(n){var i=e.edge(n);j(i.points,function(e){e.x-=t,e.y-=r}),Object.prototype.hasOwnProperty.call(i,`x`)&&(i.x-=t),Object.prototype.hasOwnProperty.call(i,`y`)&&(i.y-=r)}),a.width=n-t+o,a.height=i-r+s}function no(e){j(e.edges(),function(t){var n=e.edge(t),r=e.node(t.v),i=e.node(t.w),a,o;n.points?(a=n.points[0],o=n.points[n.points.length-1]):(n.points=[],a=i,o=r),n.points.unshift(ri(r,a)),n.points.push(ri(i,o))})}function ro(e){j(e.edges(),function(t){var n=e.edge(t);if(Object.prototype.hasOwnProperty.call(n,`x`))switch((n.labelpos===`l`||n.labelpos===`r`)&&(n.width-=n.labeloffset),n.labelpos){case`l`:n.x-=n.width/2+n.labeloffset;break;case`r`:n.x+=n.width/2+n.labeloffset;break}})}function io(e){j(e.edges(),function(t){var n=e.edge(t);n.reversed&&n.points.reverse()})}function ao(e){j(e.nodes(),function(t){if(e.children(t).length){var n=e.node(t),r=e.node(n.borderTop),i=e.node(n.borderBottom),a=e.node(V(n.borderLeft)),o=e.node(V(n.borderRight));n.width=Math.abs(o.x-a.x),n.height=Math.abs(i.y-r.y),n.x=a.x+n.width/2,n.y=r.y+n.height/2}}),j(e.nodes(),function(t){e.node(t).dummy===`border`&&e.removeNode(t)})}function oo(e){j(e.edges(),function(t){if(t.v===t.w){var n=e.node(t.v);n.selfEdges||=[],n.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}})}function so(e){j(X(e),function(t){var n=0;j(t,function(t,r){var i=e.node(t);i.order=r+n,j(i.selfEdges,function(t){Y(e,`selfedge`,{width:t.label.width,height:t.label.height,rank:i.rank,order:r+ ++n,e:t.e,label:t.label},`_se`)}),delete i.selfEdges})})}function co(e){j(e.nodes(),function(t){var n=e.node(t);if(n.dummy===`selfedge`){var r=e.node(n.e.v),i=r.x+r.width/2,a=r.y,o=n.x-i,s=r.height/2;e.setEdge(n.e,n.label),e.removeNode(t),n.label.points=[{x:i+2*o/3,y:a-s},{x:i+5*o/6,y:a-s},{x:i+o,y:a},{x:i+5*o/6,y:a+s},{x:i+2*o/3,y:a+s}],n.label.x=n.x,n.label.y=n.y}})}function lo(e,t){return U(K(e,t),Number)}function uo(e){var t={};return j(e,function(e,n){t[n.toLowerCase()]=e}),t}export{za as t}; \ No newline at end of file diff --git a/ksadk/server/static/assets/diagram-S7CK7UJ4-Bt1v8-GC.js b/ksadk/server/static/assets/diagram-S7CK7UJ4-BQ1slPEx.js similarity index 96% rename from ksadk/server/static/assets/diagram-S7CK7UJ4-Bt1v8-GC.js rename to ksadk/server/static/assets/diagram-S7CK7UJ4-BQ1slPEx.js index b018a568..d28481ba 100644 --- a/ksadk/server/static/assets/diagram-S7CK7UJ4-Bt1v8-GC.js +++ b/ksadk/server/static/assets/diagram-S7CK7UJ4-BQ1slPEx.js @@ -1,4 +1,4 @@ -import{n as e}from"./mermaid-parser.core-KGSy4jWT.js";import{t}from"./chunk-JWPE2WC7-vYvVJb_M.js";import{t as n}from"./chunk-2Q5K7J3B-DmgWkESh.js";import{Ir as r,Lt as i,Nr as a,Sr as o,_n as s,ar as c,bn as l,br as u,cr as d,er as f,or as p,rr as m,sr as h,ur as g,vn as _,vr as v,yr as y}from"./MermaidBlock-Dz4IP-Tx.js";var b=/[─━│┃└┗├┣]/,x=/[└┗├┣]/,S=/[─━]/,C=/^[\s│┃]+$/,w=/^\s*(title[\t ]|accTitle[\t ]*:|accDescr[\t ]*[:{])/,T=/^\s*%%/,E=` `;function D(e){return e.some(e=>b.test(e))}r(D,`isBoxDrawingFormat`);function O(e){for(let t of e){let e=x.exec(t);if(e?.index&&e.index>0)return e.index}return 4}r(O,`inferSegmentWidth`);function k(e,t){return e.replace(/\bline\s+(\d+)\b/gi,(e,n)=>{let r=parseInt(n,10),i=t.get(r);return i?`line ${i}`:e})}r(k,`remapErrorLines`);function A(e){let t=e.split(` +import{n as e}from"./mermaid-parser.core-C-Sc5_7E.js";import{t}from"./chunk-JWPE2WC7-CEttzwEN.js";import{t as n}from"./chunk-2Q5K7J3B-B6k89qGR.js";import{Ir as r,Lt as i,Nr as a,Sr as o,_n as s,ar as c,bn as l,br as u,cr as d,er as f,or as p,rr as m,sr as h,ur as g,vn as _,vr as v,yr as y}from"./MermaidBlock-CI9NjqQx.js";var b=/[─━│┃└┗├┣]/,x=/[└┗├┣]/,S=/[─━]/,C=/^[\s│┃]+$/,w=/^\s*(title[\t ]|accTitle[\t ]*:|accDescr[\t ]*[:{])/,T=/^\s*%%/,E=` `;function D(e){return e.some(e=>b.test(e))}r(D,`isBoxDrawingFormat`);function O(e){for(let t of e){let e=x.exec(t);if(e?.index&&e.index>0)return e.index}return 4}r(O,`inferSegmentWidth`);function k(e,t){return e.replace(/\bline\s+(\d+)\b/gi,(e,n)=>{let r=parseInt(n,10),i=t.get(r);return i?`line ${i}`:e})}r(k,`remapErrorLines`);function A(e){let t=e.split(` `),n=new Map,r=-1;for(let[e,n]of t.entries())if(n.trim()===`treeView-beta`){r=e;break}if(r===-1)return{text:e,lineMap:n};let i=[];for(let e=r+1;e({cnt:1,stack:[{id:0,level:-1,name:`/`,nodeType:`directory`,children:[]}]})),M=r(()=>{j.reset(),f()},`clear`),N=r(()=>j.records.stack[0],`getRoot`),P=r(()=>j.records.cnt,`getCount`),F=c.treeView,I={clear:M,addNode:r((e,t,n,r,i,a)=>{for(;e<=j.records.stack[j.records.stack.length-1].level;)j.records.stack.pop();let o={id:j.records.cnt++,level:e,name:t,nodeType:n,icon:i,cssClass:r,description:a,children:[]};j.records.stack[j.records.stack.length-1].children.push(o),j.records.stack.push(o)},`addNode`),getRoot:N,getCount:P,getConfig:r(()=>i(F,d().treeView),`getConfig`),getAccTitle:h,getAccDescription:p,getDiagramTitle:g,setAccDescription:y,setAccTitle:u,setDiagramTitle:o},L=r(e=>{t(e,I);for(let t of e.nodes){let e=typeof t.indent==`number`?t.indent:0,n=t.name,r=n.endsWith(`/`);r&&(n=n.slice(0,-1));let i=r?`directory`:`file`,a=t.classAnnotation||void 0,o=t.iconAnnotation,s=o===void 0?void 0:o||`none`,c=t.descAnnotation||void 0,l=c?v(c,d()):void 0;I.addNode(e,n,i,a,s,l)}},`populate`),R={parse:r(async t=>{let{text:n,lineMap:r}=A(t);try{let t=await e(`treeView`,n);a.debug(t),L(t)}catch(e){throw r.size>0&&e instanceof Error&&(e.message=k(e.message,r)),e}},`parse`)},z={prefix:`mermaid-treeview`,height:24,width:24,icons:{folder:{body:``},file:{body:``}}};function B(e,t){let n=t?.filenameIcons?.[e];if(n)return n;let r=e.lastIndexOf(`.`);if(r>0){let n=e.substring(r).toLowerCase(),i=t?.extensionIcons;return i?.[n]??i?.[n.slice(1)]}}r(B,`detectIcon`);function V(e,t){return e.includes(`:`)?e:e in z.icons||!t?`${z.prefix}:${e}`:`${t}:${e}`}r(V,`qualifyIcon`);function H(e,t){if(e.icon!==`none`){if(e.icon)return V(e.icon,t.defaultIconPack);if(t.showIcons){if(e.nodeType===`file`){let n=B(e.name,t);if(n===`none`)return;if(n)return V(n,t.defaultIconPack)}return`${z.prefix}:${e.nodeType===`directory`?`folder`:`file`}`}}}r(H,`getNodeIcon`),_([{name:z.prefix,icons:z}]);var U=14,W=4,G=16,K=r(async(e,t)=>{let n=[],i=r(e=>{let r=H(e,t);r&&n.push({icon:r,node:e}),e.children.forEach(i)},`collect`);i(e);let a=await Promise.all(n.map(async({icon:e,node:t})=>({id:t.id,svg:await s(e,{height:U,width:U})})));return new Map(a.map(({id:e,svg:t})=>[e,t]))},`resolveNodeIcons`),q=r((e,t,n,r,i,a)=>{let o=r.append(`g`),s=`treeView-node-label`;n.nodeType===`directory`&&(s+=` treeView-node-dir`),n.cssClass&&(s+=` ${n.cssClass}`);let c=U+W,l=H(n,i),u=l!==void 0;l&&o.append(`g`).attr(`class`,`treeView-node-icon`).attr(`transform`,`translate(${e+i.paddingX}, ${t+i.paddingY})`).html(a.get(n.id)??``);let d=o.append(`text`).text(n.name).attr(`dominant-baseline`,`middle`).attr(`class`,s),{height:f,width:p}=d.node().getBBox(),m=f+i.paddingY*2,h=e+i.paddingX+(u?c:0);d.attr(`x`,h),d.attr(`y`,t+m/2);let g=h+p;return n.BBox={x:e,y:t,width:p+i.paddingX*2+(u?c:0),height:m},n.cssClass?.split(/\s+/).includes(`highlight`)&&o.insert(`rect`,`:first-child`).attr(`x`,e).attr(`y`,t+1).attr(`width`,0).attr(`height`,m-2).attr(`rx`,3).attr(`class`,`treeView-highlight-bg`),{node:n,nodeGroup:o,labelRightEdge:g,centerY:t+m/2}},`positionLabel`),J=r((e,t,n,r,i,a)=>e.append(`line`).attr(`x1`,t).attr(`y1`,n).attr(`x2`,r).attr(`y2`,i).attr(`stroke-width`,a).attr(`class`,`treeView-node-line`),`positionLine`),Y=r((e,t,n,i)=>{let a=0,o=0,s=[],c=r((e,t,n,r)=>{let c=r*(n.rowIndent+n.paddingX),l=q(c,a,t,e,n,i);s.push(l);let{height:u,width:d}=t.BBox;J(e,c-n.rowIndent,a+u/2,c,a+u/2,n.lineThickness),o=Math.max(o,c+d),a+=u},`drawNode`),l=r((t,r=0)=>{c(e,t,n,r),t.children.forEach(e=>{l(e,r+1)});let{x:i,y:a,height:o}=t.BBox;if(t.children.length){let{y:r,height:s}=t.children[t.children.length-1].BBox;J(e,i+n.paddingX,a+o,i+n.paddingX,r+s/2+n.lineThickness/2,n.lineThickness)}},`processNode`);l(t);let u=s.filter(e=>e.node.description);if(u.length>0){let e=Math.max(...s.map(e=>e.labelRightEdge))+G;for(let t of u){let r=t.nodeGroup.append(`text`).text(t.node.description).attr(`dominant-baseline`,`middle`).attr(`class`,`treeView-node-description`).attr(`x`,e).attr(`y`,t.centerY).node().getBBox();o=Math.max(o,e+r.width+n.paddingX)}}for(let e of s)if(e.node.cssClass?.split(/\s+/).includes(`highlight`)){let t=e.nodeGroup.select(`.treeView-highlight-bg`);if(!t.empty()){let n=o-e.node.BBox.x+8;t.attr(`width`,n),o=Math.max(o,e.node.BBox.x+n+2)}}return{totalHeight:a,totalWidth:o}},`drawTree`),X={draw:r(async(e,t,n,r)=>{a.debug(`Rendering treeView diagram `+e);let i=r.db,o=i.getRoot(),s=i.getConfig(),c=l(t),u=c.append(`g`);u.attr(`class`,`tree-view`);let{totalHeight:d,totalWidth:f}=Y(u,o,s,await K(o,s));c.attr(`viewBox`,`-${s.lineThickness/2} 0 ${f} ${d}`),m(c,d,f,s.useMaxWidth)},`draw`)},Z={labelFontSize:`16px`,labelColor:`black`,lineColor:`black`,iconColor:`#546e7a`,descriptionColor:`#6a9955`,highlightBg:`rgba(255, 193, 7, 0.15)`,highlightStroke:`#ffc107`},Q={db:I,renderer:X,parser:R,styles:r(({treeView:e})=>{let{labelFontSize:t,labelColor:n,lineColor:r,iconColor:a,descriptionColor:o,highlightBg:s,highlightStroke:c}=i(Z,e);return` diff --git a/ksadk/server/static/assets/diagram-UQ7AKVKN-DSCxJdBK.js b/ksadk/server/static/assets/diagram-UQ7AKVKN-BXz7DvIg.js similarity index 96% rename from ksadk/server/static/assets/diagram-UQ7AKVKN-DSCxJdBK.js rename to ksadk/server/static/assets/diagram-UQ7AKVKN-BXz7DvIg.js index fc6128a9..919ae308 100644 --- a/ksadk/server/static/assets/diagram-UQ7AKVKN-DSCxJdBK.js +++ b/ksadk/server/static/assets/diagram-UQ7AKVKN-BXz7DvIg.js @@ -1,4 +1,4 @@ -import{n as e}from"./mermaid-parser.core-KGSy4jWT.js";import{t}from"./chunk-JWPE2WC7-vYvVJb_M.js";import{Ir as n,Lt as r,Nr as i,Sr as a,ar as o,bn as s,br as c,cr as l,dr as u,er as d,or as f,rr as p,sr as m,ur as h,yr as g}from"./MermaidBlock-Dz4IP-Tx.js";var _={showLegend:!0,ticks:5,max:null,min:0,graticule:`circle`},v=32,y={axes:[],curves:[],options:_},b=structuredClone(y),x=o.radar,S=n(()=>r({...x,...l().radar}),`getConfig`),C=n(()=>b.axes,`getAxes`),w=n(()=>b.curves,`getCurves`),T=n(()=>b.options,`getOptions`),E=n(e=>{b.axes=e.map(e=>({name:e.name,label:e.label??e.name}))},`setAxes`),D=n(e=>{b.curves=e.map(e=>({name:e.name,label:e.label??e.name,entries:O(e.entries)}))},`setCurves`),O=n(e=>{if(e[0].axis==null)return e.map(e=>e.value);let t=C();if(t.length===0)throw Error(`Axes must be populated before curves for reference entries`);return t.map(t=>{let n=e.find(e=>e.axis?.$refText===t.name);if(n===void 0)throw Error(`Missing entry for axis `+t.label);return n.value})},`computeCurveEntries`),k={getAxes:C,getCurves:w,getOptions:T,setAxes:E,setCurves:D,setOptions:n(e=>{let t=e.reduce((e,t)=>(e[t.name]=t,e),{});b.options={showLegend:t.showLegend?.value??_.showLegend,ticks:t.ticks?.value??_.ticks,max:t.max?.value??_.max,min:t.min?.value??_.min,graticule:t.graticule?.value??_.graticule},b.options.ticks>v&&(i.warn(`Radar diagram ticks (${b.options.ticks}) exceeds maximum allowed (${v}). Using ${v} instead.`),b.options.ticks=v)},`setOptions`),getConfig:S,clear:n(()=>{d(),b=structuredClone(y)},`clear`),setAccTitle:c,getAccTitle:m,setDiagramTitle:a,getDiagramTitle:h,getAccDescription:f,setAccDescription:g},A=n(e=>{t(e,k);let{axes:n,curves:r,options:i}=e;k.setAxes(n),k.setCurves(r),k.setOptions(i)},`populate`),j={parse:n(async t=>{let n=await e(`radar`,t);i.debug(n),A(n)},`parse`)},M=n((e,t,n,r)=>{let i=r.db,a=i.getAxes(),o=i.getCurves(),c=i.getOptions(),l=i.getConfig(),u=i.getDiagramTitle(),d=N(s(t),l),f=c.max??Math.max(...o.map(e=>Math.max(...e.entries))),p=c.min,m=Math.min(l.width,l.height)/2;P(d,a,m,c.ticks,c.graticule),F(d,a,m,l),I(d,a,o,p,f,c.graticule,l),z(d,o,c.showLegend,l),d.append(`text`).attr(`class`,`radarTitle`).text(u).attr(`x`,0).attr(`y`,-l.height/2-l.marginTop)},`draw`),N=n((e,t)=>{let n=t.width+t.marginLeft+t.marginRight,r=t.height+t.marginTop+t.marginBottom,i={x:t.marginLeft+t.width/2,y:t.marginTop+t.height/2};return p(e,r,n,t.useMaxWidth??!0),e.attr(`viewBox`,`0 0 ${n} ${r}`).attr(`overflow`,`visible`),e.append(`g`).attr(`transform`,`translate(${i.x}, ${i.y})`)},`drawFrame`),P=n((e,t,n,r,i)=>{if(i===`circle`)for(let t=0;t{let n=2*t*Math.PI/i-Math.PI/2;return`${o*Math.cos(n)},${o*Math.sin(n)}`}).join(` `);e.append(`polygon`).attr(`points`,s).attr(`class`,`radarGraticule`)}}},`drawGraticule`),F=n((e,t,n,r)=>{let i=t.length;for(let a=0;a.01?`start`:c<-.01?`end`:`middle`,d=l>.01?`hanging`:l<-.01?`auto`:`central`;e.append(`text`).text(o).attr(`x`,n*r.axisLabelFactor*c+4*c).attr(`y`,n*r.axisLabelFactor*l+4*l).attr(`text-anchor`,u).attr(`dominant-baseline`,d).attr(`class`,`radarAxisLabel`)}},`drawAxes`);function I(e,t,n,r,i,a,o){let s=t.length,c=Math.min(o.width,o.height)/2;n.forEach((t,n)=>{if(t.entries.length!==s)return;let l=t.entries.map((e,t)=>{let n=2*Math.PI*t/s-Math.PI/2,a=L(e,r,i,c);return{x:a*Math.cos(n),y:a*Math.sin(n)}});a===`circle`?e.append(`path`).attr(`d`,R(l,o.curveTension)).attr(`class`,`radarCurve-${n}`):a===`polygon`&&e.append(`polygon`).attr(`points`,l.map(e=>`${e.x},${e.y}`).join(` `)).attr(`class`,`radarCurve-${n}`)})}n(I,`drawCurves`);function L(e,t,n,r){return r*(Math.min(Math.max(e,t),n)-t)/(n-t)}n(L,`relativeRadius`);function R(e,t){let n=e.length,r=`M${e[0].x},${e[0].y}`;for(let i=0;i{let r=e.append(`g`).attr(`transform`,`translate(${i}, ${a+n*20})`);r.append(`rect`).attr(`width`,12).attr(`height`,12).attr(`class`,`radarLegendBox-${n}`),r.append(`text`).attr(`x`,16).attr(`y`,0).attr(`class`,`radarLegendText`).text(t.label)})}n(z,`drawLegend`);var B={draw:M},V=n((e,t)=>{let n=``;for(let r=0;rr({...x,...l().radar}),`getConfig`),C=n(()=>b.axes,`getAxes`),w=n(()=>b.curves,`getCurves`),T=n(()=>b.options,`getOptions`),E=n(e=>{b.axes=e.map(e=>({name:e.name,label:e.label??e.name}))},`setAxes`),D=n(e=>{b.curves=e.map(e=>({name:e.name,label:e.label??e.name,entries:O(e.entries)}))},`setCurves`),O=n(e=>{if(e[0].axis==null)return e.map(e=>e.value);let t=C();if(t.length===0)throw Error(`Axes must be populated before curves for reference entries`);return t.map(t=>{let n=e.find(e=>e.axis?.$refText===t.name);if(n===void 0)throw Error(`Missing entry for axis `+t.label);return n.value})},`computeCurveEntries`),k={getAxes:C,getCurves:w,getOptions:T,setAxes:E,setCurves:D,setOptions:n(e=>{let t=e.reduce((e,t)=>(e[t.name]=t,e),{});b.options={showLegend:t.showLegend?.value??_.showLegend,ticks:t.ticks?.value??_.ticks,max:t.max?.value??_.max,min:t.min?.value??_.min,graticule:t.graticule?.value??_.graticule},b.options.ticks>v&&(i.warn(`Radar diagram ticks (${b.options.ticks}) exceeds maximum allowed (${v}). Using ${v} instead.`),b.options.ticks=v)},`setOptions`),getConfig:S,clear:n(()=>{d(),b=structuredClone(y)},`clear`),setAccTitle:c,getAccTitle:m,setDiagramTitle:a,getDiagramTitle:h,getAccDescription:f,setAccDescription:g},A=n(e=>{t(e,k);let{axes:n,curves:r,options:i}=e;k.setAxes(n),k.setCurves(r),k.setOptions(i)},`populate`),j={parse:n(async t=>{let n=await e(`radar`,t);i.debug(n),A(n)},`parse`)},M=n((e,t,n,r)=>{let i=r.db,a=i.getAxes(),o=i.getCurves(),c=i.getOptions(),l=i.getConfig(),u=i.getDiagramTitle(),d=N(s(t),l),f=c.max??Math.max(...o.map(e=>Math.max(...e.entries))),p=c.min,m=Math.min(l.width,l.height)/2;P(d,a,m,c.ticks,c.graticule),F(d,a,m,l),I(d,a,o,p,f,c.graticule,l),z(d,o,c.showLegend,l),d.append(`text`).attr(`class`,`radarTitle`).text(u).attr(`x`,0).attr(`y`,-l.height/2-l.marginTop)},`draw`),N=n((e,t)=>{let n=t.width+t.marginLeft+t.marginRight,r=t.height+t.marginTop+t.marginBottom,i={x:t.marginLeft+t.width/2,y:t.marginTop+t.height/2};return p(e,r,n,t.useMaxWidth??!0),e.attr(`viewBox`,`0 0 ${n} ${r}`).attr(`overflow`,`visible`),e.append(`g`).attr(`transform`,`translate(${i.x}, ${i.y})`)},`drawFrame`),P=n((e,t,n,r,i)=>{if(i===`circle`)for(let t=0;t{let n=2*t*Math.PI/i-Math.PI/2;return`${o*Math.cos(n)},${o*Math.sin(n)}`}).join(` `);e.append(`polygon`).attr(`points`,s).attr(`class`,`radarGraticule`)}}},`drawGraticule`),F=n((e,t,n,r)=>{let i=t.length;for(let a=0;a.01?`start`:c<-.01?`end`:`middle`,d=l>.01?`hanging`:l<-.01?`auto`:`central`;e.append(`text`).text(o).attr(`x`,n*r.axisLabelFactor*c+4*c).attr(`y`,n*r.axisLabelFactor*l+4*l).attr(`text-anchor`,u).attr(`dominant-baseline`,d).attr(`class`,`radarAxisLabel`)}},`drawAxes`);function I(e,t,n,r,i,a,o){let s=t.length,c=Math.min(o.width,o.height)/2;n.forEach((t,n)=>{if(t.entries.length!==s)return;let l=t.entries.map((e,t)=>{let n=2*Math.PI*t/s-Math.PI/2,a=L(e,r,i,c);return{x:a*Math.cos(n),y:a*Math.sin(n)}});a===`circle`?e.append(`path`).attr(`d`,R(l,o.curveTension)).attr(`class`,`radarCurve-${n}`):a===`polygon`&&e.append(`polygon`).attr(`points`,l.map(e=>`${e.x},${e.y}`).join(` `)).attr(`class`,`radarCurve-${n}`)})}n(I,`drawCurves`);function L(e,t,n,r){return r*(Math.min(Math.max(e,t),n)-t)/(n-t)}n(L,`relativeRadius`);function R(e,t){let n=e.length,r=`M${e[0].x},${e[0].y}`;for(let i=0;i{let r=e.append(`g`).attr(`transform`,`translate(${i}, ${a+n*20})`);r.append(`rect`).attr(`width`,12).attr(`height`,12).attr(`class`,`radarLegendBox-${n}`),r.append(`text`).attr(`x`,16).attr(`y`,0).attr(`class`,`radarLegendText`).text(t.label)})}n(z,`drawLegend`);var B={draw:M},V=n((e,t)=>{let n=``;for(let r=0;ri({...oe,...f().eventmodeling}),`getConfig`),C={};function w(){let e=ce,{ast:t}=C,n=D();if(!t)throw Error(`No data for EventModel`);return t.frames.forEach((r,i)=>{let o=P(r,t.dataEntities,n);e=J(e,{$kind:v,index:i,frame:r,textProps:o});let s;V(r)?(a.debug(`source frame`,r.sourceFrames),s=t.frames.filter(e=>r.sourceFrames.some(t=>t.$refText===e.name)),s.forEach(t=>{e=J(e,{$kind:b,index:i,frame:r,sourceFrame:t})})):e=J(e,{$kind:b,index:i,frame:r})}),e={...e,sortedSwimlanesArray:R(e.swimlanes)},e}r(w,`getState`);function T(e){C.ast=e}r(T,`setAst`);var E={swimlaneMinHeight:70,swimlanePadding:15,swimlaneGap:10,boxPadding:10,boxOverlap:90,boxDefaultY:0,boxMinWidth:80,boxMaxWidth:450,boxMinHeight:80,boxMaxHeight:750,contentStartX:250,textMaxWidth:430,boxTextFontWeight:`bold`,boxTextPadding:10,swimlaneTextFontWeight:`bold`,labelUiAutomation:`UI/Automation`,labelUiAutomationPrefix:`UI/A: `,labelCommandReadModel:`Command/Read Model`,labelCommandReadModelPrefix:`C/RM: `,labelEvents:`Events`,labelEventsPrefix:`Stream: `};function D(){return E}r(D,`getDiagramProps`);var ce={boxes:[],swimlanes:{},relations:[],maxR:0,sortedSwimlanesArray:[]};function O(e){let t=e.split(`.`);if(t.length===2)return t[0]}r(O,`extractNamespace`);function k(e){let t=e.split(`.`);return t.length===2?t[1]:e}r(k,`extractName`);function A(e,t){if(!(!t||t.length===0))return Object.values(e).find(e=>e.namespace===t)}r(A,`findSwimlaneByNamespace`);function j(e,t,n){return Math.max(t,...Object.keys(e).filter(e=>{let r=Number.parseInt(e);return r>t&&rNumber.parseInt(e)))+1}r(j,`findNextAvailableIndex`);function M(e,t){let n=O(e.entityIdentifier),r=A(t,n);switch(e.modelEntityType){case`ui`:case`pcr`:case`processor`:return r?{index:r.index,label:r.namespace||E.labelUiAutomation}:n?{index:j(t,0,100),label:E.labelUiAutomationPrefix+n}:{index:0,label:E.labelUiAutomation};case`rmo`:case`readmodel`:case`cmd`:case`command`:return r?{index:r.index,label:r.namespace||E.labelCommandReadModel}:n?{index:j(t,100,200),label:E.labelCommandReadModelPrefix+n}:{index:100,label:E.labelCommandReadModel};default:return r?{index:r.index,label:r.namespace||E.labelEvents}:n?{index:j(t,200,300),label:E.labelEventsPrefix+n}:{index:200,label:E.labelEvents}}}r(M,`calculateSwimlaneProps`);function N(e){let{themeVariables:t}=f();switch(e.modelEntityType){case`ui`:return{fill:t.emUiFill??`white`,stroke:t.emUiStroke??`#dbdada`};case`pcr`:case`processor`:return{fill:t.emProcessorFill??`#edb3f6`,stroke:t.emProcessorStroke??`#b88cbf`};case`rmo`:case`readmodel`:return{fill:t.emReadModelFill??`#d3f1a2`,stroke:t.emReadModelStroke??`#a3b732`};case`cmd`:case`command`:return{fill:t.emCommandFill??`#bcd6fe`,stroke:t.emCommandStroke??`#679ac3`};case`evt`:case`event`:return{fill:t.emEventFill??`#ffb778`,stroke:t.emEventStroke??`#c19a0f`};default:return{fill:`red`,stroke:`black`}}}r(N,`calculateEntityVisualProps`);function P(e,t,n){let r=f(),i=_(k(e.entityIdentifier)??``,r),s,l={fontSize:16,fontWeight:700,fontFamily:`"trebuchet ms", verdana, arial, sans-serif`,joinWith:`
`},u=`${c(i,n.textMaxWidth,l)}`;if(e.dataInlineValue&&(s=e.dataInlineValue,s=s.substring(s.indexOf(`{`)+1),s=s.substring(0,s.lastIndexOf(`}`)-1),s=_(s,r),s=c(s,n.textMaxWidth,l),s=s.replaceAll(` `,` `)),e.dataReference){let i=t.find(t=>t.name===e.dataReference?.$refText);i&&(s=i.dataBlockValue,s=s.substring(s.indexOf(`{ +import{N as e,n as t}from"./mermaid-parser.core-C-Sc5_7E.js";import{t as n}from"./chunk-JWPE2WC7-CEttzwEN.js";import{Ir as r,Lt as i,Nr as a,Pt as o,Sr as s,Wt as c,Zn as l,ar as u,br as d,cr as f,er as p,lr as m,or as h,sr as g,ur as ee,vr as _,wr as te,yr as ne}from"./MermaidBlock-CI9NjqQx.js";var v=`position frame`,y=`frame positioned`,b=`position relation`,x=`relation positioned`,re=r(function(e){a.debug(`options str`,e)},`setOptions`),ie=r(function(){return{}},`getOptions`),ae=r(function(){S(),p()},`clear`);function S(){C={}}r(S,`reset`);var oe=u.eventmodeling,se=r(()=>i({...oe,...f().eventmodeling}),`getConfig`),C={};function w(){let e=ce,{ast:t}=C,n=D();if(!t)throw Error(`No data for EventModel`);return t.frames.forEach((r,i)=>{let o=P(r,t.dataEntities,n);e=J(e,{$kind:v,index:i,frame:r,textProps:o});let s;V(r)?(a.debug(`source frame`,r.sourceFrames),s=t.frames.filter(e=>r.sourceFrames.some(t=>t.$refText===e.name)),s.forEach(t=>{e=J(e,{$kind:b,index:i,frame:r,sourceFrame:t})})):e=J(e,{$kind:b,index:i,frame:r})}),e={...e,sortedSwimlanesArray:R(e.swimlanes)},e}r(w,`getState`);function T(e){C.ast=e}r(T,`setAst`);var E={swimlaneMinHeight:70,swimlanePadding:15,swimlaneGap:10,boxPadding:10,boxOverlap:90,boxDefaultY:0,boxMinWidth:80,boxMaxWidth:450,boxMinHeight:80,boxMaxHeight:750,contentStartX:250,textMaxWidth:430,boxTextFontWeight:`bold`,boxTextPadding:10,swimlaneTextFontWeight:`bold`,labelUiAutomation:`UI/Automation`,labelUiAutomationPrefix:`UI/A: `,labelCommandReadModel:`Command/Read Model`,labelCommandReadModelPrefix:`C/RM: `,labelEvents:`Events`,labelEventsPrefix:`Stream: `};function D(){return E}r(D,`getDiagramProps`);var ce={boxes:[],swimlanes:{},relations:[],maxR:0,sortedSwimlanesArray:[]};function O(e){let t=e.split(`.`);if(t.length===2)return t[0]}r(O,`extractNamespace`);function k(e){let t=e.split(`.`);return t.length===2?t[1]:e}r(k,`extractName`);function A(e,t){if(!(!t||t.length===0))return Object.values(e).find(e=>e.namespace===t)}r(A,`findSwimlaneByNamespace`);function j(e,t,n){return Math.max(t,...Object.keys(e).filter(e=>{let r=Number.parseInt(e);return r>t&&rNumber.parseInt(e)))+1}r(j,`findNextAvailableIndex`);function M(e,t){let n=O(e.entityIdentifier),r=A(t,n);switch(e.modelEntityType){case`ui`:case`pcr`:case`processor`:return r?{index:r.index,label:r.namespace||E.labelUiAutomation}:n?{index:j(t,0,100),label:E.labelUiAutomationPrefix+n}:{index:0,label:E.labelUiAutomation};case`rmo`:case`readmodel`:case`cmd`:case`command`:return r?{index:r.index,label:r.namespace||E.labelCommandReadModel}:n?{index:j(t,100,200),label:E.labelCommandReadModelPrefix+n}:{index:100,label:E.labelCommandReadModel};default:return r?{index:r.index,label:r.namespace||E.labelEvents}:n?{index:j(t,200,300),label:E.labelEventsPrefix+n}:{index:200,label:E.labelEvents}}}r(M,`calculateSwimlaneProps`);function N(e){let{themeVariables:t}=f();switch(e.modelEntityType){case`ui`:return{fill:t.emUiFill??`white`,stroke:t.emUiStroke??`#dbdada`};case`pcr`:case`processor`:return{fill:t.emProcessorFill??`#edb3f6`,stroke:t.emProcessorStroke??`#b88cbf`};case`rmo`:case`readmodel`:return{fill:t.emReadModelFill??`#d3f1a2`,stroke:t.emReadModelStroke??`#a3b732`};case`cmd`:case`command`:return{fill:t.emCommandFill??`#bcd6fe`,stroke:t.emCommandStroke??`#679ac3`};case`evt`:case`event`:return{fill:t.emEventFill??`#ffb778`,stroke:t.emEventStroke??`#c19a0f`};default:return{fill:`red`,stroke:`black`}}}r(N,`calculateEntityVisualProps`);function P(e,t,n){let r=f(),i=_(k(e.entityIdentifier)??``,r),s,l={fontSize:16,fontWeight:700,fontFamily:`"trebuchet ms", verdana, arial, sans-serif`,joinWith:`
`},u=`${c(i,n.textMaxWidth,l)}`;if(e.dataInlineValue&&(s=e.dataInlineValue,s=s.substring(s.indexOf(`{`)+1),s=s.substring(0,s.lastIndexOf(`}`)-1),s=_(s,r),s=c(s,n.textMaxWidth,l),s=s.replaceAll(` `,` `)),e.dataReference){let i=t.find(t=>t.name===e.dataReference?.$refText);i&&(s=i.dataBlockValue,s=s.substring(s.indexOf(`{ `)+2),s=s.substring(0,s.lastIndexOf(`}`)-1),s=_(s,r),s=c(s,n.textMaxWidth,l),s=s.replaceAll(` `,` `),s+=`
`)}let d=s!==void 0;d&&(u+=`

${s}`);let p={fontSize:l.fontSize,fontWeight:l.fontWeight,fontFamily:l.fontFamily},m=o(u,p),h=d?m.width/3:m.width,g={content:u,width:h,height:m.height};return a.debug(`[${e.name}] ${e.entityIdentifier} text`,g),g}r(P,`calculateTextProps`);function F(e,t){let n=t,r=N(n.frame),i={width:n.textProps.width+2*E.boxTextPadding,height:n.textProps.height+2*E.boxTextPadding};return[{$kind:y,frame:n.frame,index:n.index,visual:r,dimension:i,textProps:n.textProps}]}r(F,`decidePositionFrame`);function I(e,t,n){return t===void 0?E.contentStartX:t.index===e.index&&e.r?e.r+E.boxPadding:n===void 0?E.contentStartX:n.r-E.boxOverlap+E.boxPadding}r(I,`calculateX`);function L(e,t){let n=[...e.map(e=>e.r),t];return Math.max(...n)}r(L,`calculateMaxRight`);function R(e){return Object.values(e).sort((e,t)=>e.index-t.index)}r(R,`sortedSwimlanesArray`);function z(e,t){let n=t,r=M(n.frame,e.swimlanes),i;i=r.index in e.swimlanes?e.swimlanes[r.index]:{index:r.index,label:r.label,r:0,y:r.index*E.swimlaneMinHeight+E.swimlaneGap,height:E.swimlaneMinHeight,maxHeight:E.swimlaneMinHeight};let a=e.boxes.length>0?e.boxes[e.boxes.length-1]:void 0,o=e.previousSwimlaneNumber===void 0?void 0:e.swimlanes[e.previousSwimlaneNumber],s={width:Math.max(E.boxMinWidth,Math.min(E.boxMaxWidth,n.dimension.width))+2*E.boxPadding,height:Math.max(E.boxMinHeight,Math.min(E.boxMaxHeight,n.dimension.height))+2*E.boxPadding},c=I(i,o,a),l=c+s.width+E.boxPadding,u=L(Object.values(e.swimlanes),l);i.r=c+s.width,i.maxHeight=Math.max(i.maxHeight,s.height),i.height=Math.max(E.swimlaneMinHeight,i.maxHeight)+2*E.swimlanePadding;let d={x:c,y:E.swimlanePadding+i.y,r:l,dimension:s,leftSibling:!1,swimlane:i,visual:n.visual,text:n.textProps.content,frame:n.frame,index:n.index},f={...e,boxes:[...e.boxes,d],swimlanes:{...e.swimlanes,[`${i.index}`]:i},previousSwimlaneNumber:r.index,previousFrame:n.frame,maxR:u},p=R(f.swimlanes);p.length>0&&(p[0].y=0);for(let e=1;e0}r(V,`hasSourceFrame`);function H(e,t){if(t!=null)return e.find(e=>e.frame.name===t.name)}r(H,`findBoxByFrame`);function U(e,t,n){if(!(n<0))for(let r=n;r>=0;r--){let n=e[r];if(n.swimlane.index!==t)return n}}r(U,`findBoxByLineIndex`);function W(t,n){let r=n;if(e(r.frame)||B(r.index,r.frame))return[];let i=H(t.boxes,r.frame);if(i===void 0)throw Error(`Target box not found for frame ${r.frame.name}`);let a;return a=r.sourceFrame?H(t.boxes,r.sourceFrame):U(t.boxes,i.swimlane.index,r.index-1),a===void 0?[]:[{$kind:x,frame:r.frame,index:r.index,sourceBox:a,targetBox:i}]}r(W,`decidePositionRelation`);function G(e,t){let n=t,r={visual:{fill:`none`,stroke:`#000`},source:{x:n.sourceBox.x,y:n.sourceBox.y},target:{x:n.targetBox.x,y:n.targetBox.y},sourceBox:n.sourceBox,targetBox:n.targetBox};return{...e,relations:[...e.relations,r]}}r(G,`evolveRelationPositioned`);var le={[v]:F,[b]:W},ue={[y]:z,[x]:G};function K(e,t){let n=le[t.$kind];if(n==null)return[];let r=n(e,t);return a.debug(`decided events`,r),r}r(K,`decide`);function q(e,t){let n=t.reduce((e,t)=>{let n=ue[t.$kind];return n==null?e:n(e,t)},e);return a.debug(`evolve events`,{state:e,newState:n,events:t}),n}r(q,`evolve`);function J(e,t){return q(e,K(e,t))}r(J,`dispatch`);var Y={getConfig:se,setOptions:re,getOptions:ie,clear:ae,setAccTitle:d,getAccTitle:g,getAccDescription:h,setAccDescription:ne,setDiagramTitle:s,getDiagramTitle:ee,setAst:T,getDiagramProps:D,getState:w},de={parse:r(async e=>{let r=await t(`eventmodeling`,e);a.debug(r),Y.setAst(r),n(r,Y)},`parse`)},fe=m()?.eventmodeling;function X(e,t){return n=>{let r=n.swimlane.y+t.swimlanePadding,i=e.append(`g`).attr(`class`,`em-box`);i.append(`rect`).attr(`x`,n.x).attr(`y`,r).attr(`rx`,`3`).attr(`width`,n.dimension.width).attr(`height`,n.dimension.height).attr(`stroke`,n.visual.stroke).attr(`fill`,n.visual.fill),i.append(`foreignObject`).attr(`x`,n.x+t.boxPadding).attr(`y`,r+10).attr(`width`,n.dimension.width-2*t.boxPadding).attr(`height`,n.dimension.height-2*t.boxPadding).append(`xhtml:div`).style(`display`,`table`).style(`height`,`100%`).style(`width`,`100%`).append(`span`).style(`display`,`table-cell`).style(`text-align`,`center`).style(`vertical-align`,`middle`).html(n.text)}}r(X,`renderD3Box`);function Z(e,t){return e>t}r(Z,`dirUpwards`);function Q(e,t,n,r){return i=>{let o=i.sourceBox.swimlane.y+t.swimlanePadding,s=i.targetBox.swimlane.y+t.swimlanePadding,c=Z(o,s),l=i.sourceBox.x+i.sourceBox.dimension.width*2/3,u=i.targetBox.x+i.targetBox.dimension.width/3,d,f;a.debug(`rendering relation up=${c} for `,{sourceBox:i.sourceBox,targetBox:i.targetBox}),c?(d=o,f=s+i.targetBox.dimension.height):(d=o+i.sourceBox.dimension.height,f=s);let p=r.emRelationStroke??i.visual.stroke;e.append(`path`).attr(`class`,`em-relation`).attr(`fill`,i.visual.fill).attr(`stroke`,p).attr(`stroke-width`,`1`).attr(`marker-end`,`url(#${n})`).attr(`d`,`M${l} ${d} L${u} ${f}`)}}r(Q,`renderD3Relation`);function $(e,t,n,r){return i=>{let a=e.append(`g`).attr(`class`,`em-swimlane`),o=r.emSwimlaneBackgroundOdd??`rgb(250,250,250)`,s=r.emSwimlaneBackgroundStroke??`rgb(240,240,240)`;a.append(`rect`).attr(`x`,0).attr(`y`,i.y).attr(`rx`,`3`).attr(`width`,t+n.swimlanePadding).attr(`height`,i.height).attr(`fill`,o).attr(`stroke`,s),a.append(`text`).attr(`font-weight`,n.swimlaneTextFontWeight).attr(`x`,30).attr(`y`,i.y+30).text(i.label)}}r($,`renderD3Swimlane`);var pe={parser:de,db:Y,renderer:{draw:r(function(e,t,n,r){if(a.debug(`in eventmodeling renderer`,e+` `,`id:`,t,n),!fe)throw Error(`EventModeling config not found`);let i=r.db,{themeVariables:o,eventmodeling:s}=m(),c=l(`[id="${t}"]`),u=i.getDiagramProps(),d=i.getState(),f=`em-arrowhead-${t}`,p=o.emArrowhead??`#000000`;d.sortedSwimlanesArray.forEach($(c,d.maxR,u,o)),d.boxes.forEach(X(c,u)),d.relations.forEach(Q(c,u,f,o)),c.append(`defs`).append(`marker`).attr(`id`,f).attr(`markerWidth`,`10`).attr(`markerHeight`,`7`).attr(`refX`,`10`).attr(`refY`,`3.5`).attr(`orient`,`auto`).append(`polygon`).attr(`points`,`0 0, 10 3.5, 0 7`).attr(`fill`,p),te(void 0,c,s?.padding??30,s?.useMaxWidth)},`draw`)},styles:r(e=>``,`getStyles`)};export{pe as diagram}; \ No newline at end of file diff --git a/ksadk/server/static/assets/diagram-VX7I27RA-DdzD-4Le.js b/ksadk/server/static/assets/diagram-VX7I27RA-CU2kHvv3.js similarity index 98% rename from ksadk/server/static/assets/diagram-VX7I27RA-DdzD-4Le.js rename to ksadk/server/static/assets/diagram-VX7I27RA-CU2kHvv3.js index 3eecdd33..dba72e40 100644 --- a/ksadk/server/static/assets/diagram-VX7I27RA-DdzD-4Le.js +++ b/ksadk/server/static/assets/diagram-VX7I27RA-CU2kHvv3.js @@ -1,4 +1,4 @@ -import{n as e}from"./mermaid-parser.core-KGSy4jWT.js";import{t}from"./ordinal-hYBb2elL.js";import{t as n}from"./defaultLocale-C8Fc0cco.js";import{t as r}from"./chunk-JWPE2WC7-vYvVJb_M.js";import{t as i}from"./chunk-POPQ4Y6H-C030x_Z1.js";import{At as a,Ir as o,Lt as s,Nr as c,Sr as l,Zn as u,ar as d,bn as f,br as p,cr as m,dr as h,er as g,jt as _,or as v,rr as y,sr as b,ur as x,yr as S}from"./MermaidBlock-Dz4IP-Tx.js";function C(e){var t=0,n=e.children,r=n&&n.length;if(!r)t=1;else for(;--r>=0;)t+=n[r].value;e.value=t}function w(){return this.eachAfter(C)}function T(e,t){let n=-1;for(let r of this)e.call(t,r,++n,this);return this}function E(e,t){for(var n=this,r=[n],i,a,o=-1;n=r.pop();)if(e.call(t,n,++o,this),i=n.children)for(a=i.length-1;a>=0;--a)r.push(i[a]);return this}function D(e,t){for(var n=this,r=[n],i=[],a,o,s,c=-1;n=r.pop();)if(i.push(n),a=n.children)for(o=0,s=a.length;o=0;)n+=r[i].value;t.value=n})}function A(e){return this.eachBefore(function(t){t.children&&t.children.sort(e)})}function j(e){for(var t=this,n=M(t,e),r=[t];t!==n;)t=t.parent,r.push(t);for(var i=r.length;e!==n;)r.splice(i,0,e),e=e.parent;return r}function M(e,t){if(e===t)return e;var n=e.ancestors(),r=t.ancestors(),i=null;for(e=n.pop(),t=r.pop();e===t;)i=e,e=n.pop(),t=r.pop();return i}function N(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t}function P(){return Array.from(this)}function F(){var e=[];return this.eachBefore(function(t){t.children||e.push(t)}),e}function I(){var e=this,t=[];return e.each(function(n){n!==e&&t.push({source:n.parent,target:n})}),t}function*L(){var e=this,t,n=[e],r,i,a;do for(t=n.reverse(),n=[];e=t.pop();)if(yield e,r=e.children)for(i=0,a=r.length;i=0;--s)i.push(a=o[s]=new W(o[s])),a.parent=r,a.depth=r.depth+1;return n.eachBefore(U)}function z(){return R(this).eachBefore(H)}function B(e){return e.children}function V(e){return Array.isArray(e)?e[1]:null}function H(e){e.data.value!==void 0&&(e.value=e.data.value),e.data=e.data.data}function U(e){var t=0;do e.height=t;while((e=e.parent)&&e.height<++t)}function W(e){this.data=e,this.depth=this.height=0,this.parent=null}W.prototype=R.prototype={constructor:W,count:w,each:T,eachAfter:D,eachBefore:E,find:O,sum:k,sort:A,path:j,ancestors:N,descendants:P,leaves:F,links:I,copy:z,[Symbol.iterator]:L};function G(e){if(typeof e!=`function`)throw Error();return e}function K(){return 0}function q(e){return function(){return e}}function J(e){e.x0=Math.round(e.x0),e.y0=Math.round(e.y0),e.x1=Math.round(e.x1),e.y1=Math.round(e.y1)}function ee(e,t,n,r,i){for(var a=e.children,o,s=-1,c=a.length,l=e.value&&(r-t)/e.value;++sv&&(v=l),S=g*g*x,y=Math.max(v/S,S/_),y>b){g-=l;break}b=y}o.push(c={value:g,dice:p1?t:1)},n})(ne);function ae(){var e=ie,t=!1,n=1,r=1,i=[0],a=K,o=K,s=K,c=K,l=K;function u(e){return e.x0=e.y0=0,e.x1=n,e.y1=r,e.eachBefore(d),i=[0],t&&e.eachBefore(J),e}function d(t){var n=i[t.depth],r=t.x0+n,u=t.y0+n,d=t.x1-n,f=t.y1-n;d{a(e)&&(n?.textStyles?n.textStyles.push(e):n.textStyles=[e]),n?.styles?n.styles.push(e):n.styles=[e]}),this.classes.set(e,n)}getClasses(){return this.classes}getStylesForClass(e){return this.classes.get(e)?.styles??[]}clear(){g(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}};function X(e){if(!e.length)return[];let t=[],n=[];return e.forEach(e=>{let r={name:e.name,children:e.type===`Leaf`?void 0:[]};for(r.classSelector=e?.classSelector,e?.cssCompiledStyles&&(r.cssCompiledStyles=e.cssCompiledStyles),e.type===`Leaf`&&e.value!==void 0&&(r.value=e.value);n.length>0&&n[n.length-1].level>=e.level;)n.pop();if(n.length===0)t.push(r);else{let e=n[n.length-1].node;e.children?e.children.push(r):e.children=[r]}e.type!==`Leaf`&&n.push({node:r,level:e.level})}),t}o(X,`buildHierarchy`);var oe=o((e,t)=>{r(e,t);let n=[];for(let n of e.TreemapRows??[])n.$type===`ClassDefStatement`&&t.addClass(n.className??``,n.styleText??``);for(let r of e.TreemapRows??[]){let e=r.item;if(!e)continue;let i=r.indent?parseInt(r.indent):0,a=se(e),o=e.classSelector?t.getStylesForClass(e.classSelector):[],s=o.length>0?o:void 0,c={level:i,name:a,type:e.$type,value:e.value,classSelector:e.classSelector,cssCompiledStyles:s};n.push(c)}let i=X(n),a=o((e,n)=>{for(let r of e)t.addNode(r,n),r.children&&r.children.length>0&&a(r.children,n+1)},`addNodesRecursively`);a(i,0)},`populate`),se=o(e=>e.name?String(e.name):``,`getItemName`),Z={parser:{yy:void 0},parse:o(async t=>{try{let n=await e(`treemap`,t);c.debug(`Treemap AST:`,n);let r=Z.parser?.yy;if(!(r instanceof Y))throw Error(`parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.`);oe(n,r)}catch(e){throw c.error(`Error parsing treemap:`,e),e}},`parse`)},ce=10,Q=10,$=25,le={draw:o((e,r,a,s)=>{let l=s.db,d=l.getConfig(),p=d.padding??ce,h=l.getDiagramTitle(),g=l.getRoot(),{themeVariables:v}=m();if(!g)return;let b=h?30:0,x=f(r),S=d.nodeWidth?d.nodeWidth*Q:960,C=d.nodeHeight?d.nodeHeight*Q:500,w=S,T=C+b;x.attr(`viewBox`,`0 0 ${w} ${T}`),y(x,T,w,d.useMaxWidth);let E;try{let e=d.valueFormat||`,`;if(e===`$0,0`)E=o(e=>`$`+n(`,`)(e),`valueFormat`);else if(e.startsWith(`$`)&&e.includes(`,`)){let t=/\.\d+/.exec(e),r=t?t[0]:``;E=o(e=>`$`+n(`,`+r)(e),`valueFormat`)}else if(e.startsWith(`$`)){let t=e.substring(1);E=o(e=>`$`+n(t||``)(e),`valueFormat`)}else E=n(e)}catch(e){c.error(`Error creating format function:`,e),E=n(`,`)}let D=t().range([`transparent`,v.cScale0,v.cScale1,v.cScale2,v.cScale3,v.cScale4,v.cScale5,v.cScale6,v.cScale7,v.cScale8,v.cScale9,v.cScale10,v.cScale11]),O=t().range([`transparent`,v.cScalePeer0,v.cScalePeer1,v.cScalePeer2,v.cScalePeer3,v.cScalePeer4,v.cScalePeer5,v.cScalePeer6,v.cScalePeer7,v.cScalePeer8,v.cScalePeer9,v.cScalePeer10,v.cScalePeer11]),k=t().range([v.cScaleLabel0,v.cScaleLabel1,v.cScaleLabel2,v.cScaleLabel3,v.cScaleLabel4,v.cScaleLabel5,v.cScaleLabel6,v.cScaleLabel7,v.cScaleLabel8,v.cScaleLabel9,v.cScaleLabel10,v.cScaleLabel11]);h&&x.append(`text`).attr(`x`,w/2).attr(`y`,b/2).attr(`class`,`treemapTitle`).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(h);let A=x.append(`g`).attr(`transform`,`translate(0, ${b})`).attr(`class`,`treemapContainer`),j=R(g).sum(e=>e.value??0).sort((e,t)=>(t.value??0)-(e.value??0)),M=ae().size([S,C]).paddingTop(e=>e.children&&e.children.length>0?$+Q:0).paddingInner(p).paddingLeft(e=>e.children&&e.children.length>0?Q:0).paddingRight(e=>e.children&&e.children.length>0?Q:0).paddingBottom(e=>e.children&&e.children.length>0?Q:0).round(!0)(j),N=M.descendants().filter(e=>e.children&&e.children.length>0),P=A.selectAll(`.treemapSection`).data(N).enter().append(`g`).attr(`class`,`treemapSection`).attr(`transform`,e=>`translate(${e.x0},${e.y0})`);P.append(`rect`).attr(`width`,e=>e.x1-e.x0).attr(`height`,$).attr(`class`,`treemapSectionHeader`).attr(`fill`,`none`).attr(`fill-opacity`,.6).attr(`stroke-width`,.6).attr(`style`,e=>e.depth===0?`display: none;`:``),P.append(`clipPath`).attr(`id`,(e,t)=>`clip-section-${r}-${t}`).append(`rect`).attr(`width`,e=>Math.max(0,e.x1-e.x0-12)).attr(`height`,$),P.append(`rect`).attr(`width`,e=>e.x1-e.x0).attr(`height`,e=>e.y1-e.y0).attr(`class`,(e,t)=>`treemapSection section${t}`).attr(`fill`,e=>D(e.data.name)).attr(`fill-opacity`,.6).attr(`stroke`,e=>O(e.data.name)).attr(`stroke-width`,2).attr(`stroke-opacity`,.4).attr(`style`,e=>{if(e.depth===0)return`display: none;`;let t=_({cssCompiledStyles:e.data.cssCompiledStyles});return t.nodeStyles+`;`+t.borderStyles.join(`;`)}),P.append(`text`).attr(`class`,`treemapSectionLabel`).attr(`x`,6).attr(`y`,$/2).attr(`dominant-baseline`,`middle`).text(e=>e.depth===0?``:e.data.name).attr(`font-weight`,`bold`).attr(`clip-path`,(e,t)=>`url(#clip-section-${r}-${t})`).attr(`style`,e=>e.depth===0?`display: none;`:`dominant-baseline: middle; font-size: 12px; fill:`+k(e.data.name)+`; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;`+_({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace(`color:`,`fill:`)).each(function(e){if(e.depth===0)return;let t=u(this),n=e.data.name;t.text(n);let r=e.x1-e.x0,i;i=d.showValues!==!1&&e.value?r-10-30-10-6:r-6-6;let a=Math.max(15,i),o=t.node();if(o.getComputedTextLength()>a){let e=n;for(;e.length>0;){if(e=n.substring(0,e.length-1),e.length===0){t.text(`...`),o.getComputedTextLength()>a&&t.text(``);break}if(t.text(e+`...`),o.getComputedTextLength()<=a)break}}}),d.showValues!==!1&&P.append(`text`).attr(`class`,`treemapSectionValue`).attr(`x`,e=>e.x1-e.x0-10).attr(`y`,$/2).attr(`text-anchor`,`end`).attr(`dominant-baseline`,`middle`).text(e=>e.value?E(e.value):``).attr(`font-style`,`italic`).attr(`style`,e=>e.depth===0?`display: none;`:`text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:`+k(e.data.name)+`; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;`+_({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace(`color:`,`fill:`));let F=M.leaves(),I=F.length>20,L=I?16:38,z=I?14:28,B=I?4:8,V=I?4:6,H=I?2:4,U=I?8:10,W=I?1:2,G=A.selectAll(`.treemapLeafGroup`).data(F).enter().append(`g`).attr(`class`,(e,t)=>`treemapNode treemapLeafGroup leaf${t}${e.data.classSelector?` ${e.data.classSelector}`:``}x`).attr(`transform`,e=>`translate(${e.x0},${e.y0})`);G.append(`rect`).attr(`width`,e=>e.x1-e.x0).attr(`height`,e=>e.y1-e.y0).attr(`class`,`treemapLeaf`).attr(`fill`,e=>e.parent?D(e.parent.data.name):D(e.data.name)).attr(`style`,e=>_({cssCompiledStyles:e.data.cssCompiledStyles}).nodeStyles).attr(`fill-opacity`,.3).attr(`stroke`,e=>e.parent?D(e.parent.data.name):D(e.data.name)).attr(`stroke-width`,3),G.append(`clipPath`).attr(`id`,(e,t)=>`clip-${r}-${t}`).append(`rect`).attr(`width`,e=>Math.max(0,e.x1-e.x0-4)).attr(`height`,e=>Math.max(0,e.y1-e.y0-4)),G.append(`text`).attr(`class`,`treemapLabel`).attr(`x`,e=>(e.x1-e.x0)/2).attr(`y`,e=>(e.y1-e.y0)/2).attr(`style`,e=>`text-anchor: middle; dominant-baseline: middle; font-size: ${L}px;fill:`+k(e.data.name)+`;`+_({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace(`color:`,`fill:`)).attr(`clip-path`,(e,t)=>`url(#clip-${r}-${t})`).text(e=>e.data.name).each(function(e){let t=u(this),n=e.x1-e.x0,r=e.y1-e.y0,i=t.node(),a=n-2*H,o=r-2*H;if(aa&&s>B;)s--,t.style(`font-size`,`${s}px`);let l=Math.max(V,Math.min(z,Math.round(s*c))),d=s+W+l;for(;d>o&&s>B&&(s--,l=Math.max(V,Math.min(z,Math.round(s*c))),!(la||s(e.x1-e.x0)/2).attr(`y`,function(e){return(e.y1-e.y0)/2}).attr(`style`,e=>`text-anchor: middle; dominant-baseline: hanging; font-size: ${z}px;fill:`+k(e.data.name)+`;`+_({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace(`color:`,`fill:`)).attr(`clip-path`,(e,t)=>`url(#clip-${r}-${t})`).text(e=>e.value?E(e.value):``).each(function(e){let t=u(this),n=this.parentNode;if(!n){t.style(`display`,`none`);return}let r=u(n).select(`.treemapLabel`);if(r.empty()||r.style(`display`)===`none`){t.style(`display`,`none`);return}let i=parseFloat(r.style(`font-size`)),a=Math.max(V,Math.min(z,Math.round(i*.6)));t.style(`font-size`,`${a}px`);let o=(e.y1-e.y0)/2+i/2+W;t.attr(`y`,o);let s=e.x1-e.x0,c=e.y1-e.y0-4,l=s-2*H;t.node().getComputedTextLength()>l||o+a>c||a{let t=s(h(),m().themeVariables),n=s(ue,e),r=n.titleColor??t.titleColor,i=n.labelColor??t.textColor,a=n.valueColor??t.textColor;return` +import{n as e}from"./mermaid-parser.core-C-Sc5_7E.js";import{t}from"./ordinal-hYBb2elL.js";import{t as n}from"./defaultLocale-C8Fc0cco.js";import{t as r}from"./chunk-JWPE2WC7-CEttzwEN.js";import{t as i}from"./chunk-POPQ4Y6H-BvutC1JH.js";import{At as a,Ir as o,Lt as s,Nr as c,Sr as l,Zn as u,ar as d,bn as f,br as p,cr as m,dr as h,er as g,jt as _,or as v,rr as y,sr as b,ur as x,yr as S}from"./MermaidBlock-CI9NjqQx.js";function C(e){var t=0,n=e.children,r=n&&n.length;if(!r)t=1;else for(;--r>=0;)t+=n[r].value;e.value=t}function w(){return this.eachAfter(C)}function T(e,t){let n=-1;for(let r of this)e.call(t,r,++n,this);return this}function E(e,t){for(var n=this,r=[n],i,a,o=-1;n=r.pop();)if(e.call(t,n,++o,this),i=n.children)for(a=i.length-1;a>=0;--a)r.push(i[a]);return this}function D(e,t){for(var n=this,r=[n],i=[],a,o,s,c=-1;n=r.pop();)if(i.push(n),a=n.children)for(o=0,s=a.length;o=0;)n+=r[i].value;t.value=n})}function A(e){return this.eachBefore(function(t){t.children&&t.children.sort(e)})}function j(e){for(var t=this,n=M(t,e),r=[t];t!==n;)t=t.parent,r.push(t);for(var i=r.length;e!==n;)r.splice(i,0,e),e=e.parent;return r}function M(e,t){if(e===t)return e;var n=e.ancestors(),r=t.ancestors(),i=null;for(e=n.pop(),t=r.pop();e===t;)i=e,e=n.pop(),t=r.pop();return i}function N(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t}function P(){return Array.from(this)}function F(){var e=[];return this.eachBefore(function(t){t.children||e.push(t)}),e}function I(){var e=this,t=[];return e.each(function(n){n!==e&&t.push({source:n.parent,target:n})}),t}function*L(){var e=this,t,n=[e],r,i,a;do for(t=n.reverse(),n=[];e=t.pop();)if(yield e,r=e.children)for(i=0,a=r.length;i=0;--s)i.push(a=o[s]=new W(o[s])),a.parent=r,a.depth=r.depth+1;return n.eachBefore(U)}function z(){return R(this).eachBefore(H)}function B(e){return e.children}function V(e){return Array.isArray(e)?e[1]:null}function H(e){e.data.value!==void 0&&(e.value=e.data.value),e.data=e.data.data}function U(e){var t=0;do e.height=t;while((e=e.parent)&&e.height<++t)}function W(e){this.data=e,this.depth=this.height=0,this.parent=null}W.prototype=R.prototype={constructor:W,count:w,each:T,eachAfter:D,eachBefore:E,find:O,sum:k,sort:A,path:j,ancestors:N,descendants:P,leaves:F,links:I,copy:z,[Symbol.iterator]:L};function G(e){if(typeof e!=`function`)throw Error();return e}function K(){return 0}function q(e){return function(){return e}}function J(e){e.x0=Math.round(e.x0),e.y0=Math.round(e.y0),e.x1=Math.round(e.x1),e.y1=Math.round(e.y1)}function ee(e,t,n,r,i){for(var a=e.children,o,s=-1,c=a.length,l=e.value&&(r-t)/e.value;++sv&&(v=l),S=g*g*x,y=Math.max(v/S,S/_),y>b){g-=l;break}b=y}o.push(c={value:g,dice:p1?t:1)},n})(ne);function ae(){var e=ie,t=!1,n=1,r=1,i=[0],a=K,o=K,s=K,c=K,l=K;function u(e){return e.x0=e.y0=0,e.x1=n,e.y1=r,e.eachBefore(d),i=[0],t&&e.eachBefore(J),e}function d(t){var n=i[t.depth],r=t.x0+n,u=t.y0+n,d=t.x1-n,f=t.y1-n;d{a(e)&&(n?.textStyles?n.textStyles.push(e):n.textStyles=[e]),n?.styles?n.styles.push(e):n.styles=[e]}),this.classes.set(e,n)}getClasses(){return this.classes}getStylesForClass(e){return this.classes.get(e)?.styles??[]}clear(){g(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}};function X(e){if(!e.length)return[];let t=[],n=[];return e.forEach(e=>{let r={name:e.name,children:e.type===`Leaf`?void 0:[]};for(r.classSelector=e?.classSelector,e?.cssCompiledStyles&&(r.cssCompiledStyles=e.cssCompiledStyles),e.type===`Leaf`&&e.value!==void 0&&(r.value=e.value);n.length>0&&n[n.length-1].level>=e.level;)n.pop();if(n.length===0)t.push(r);else{let e=n[n.length-1].node;e.children?e.children.push(r):e.children=[r]}e.type!==`Leaf`&&n.push({node:r,level:e.level})}),t}o(X,`buildHierarchy`);var oe=o((e,t)=>{r(e,t);let n=[];for(let n of e.TreemapRows??[])n.$type===`ClassDefStatement`&&t.addClass(n.className??``,n.styleText??``);for(let r of e.TreemapRows??[]){let e=r.item;if(!e)continue;let i=r.indent?parseInt(r.indent):0,a=se(e),o=e.classSelector?t.getStylesForClass(e.classSelector):[],s=o.length>0?o:void 0,c={level:i,name:a,type:e.$type,value:e.value,classSelector:e.classSelector,cssCompiledStyles:s};n.push(c)}let i=X(n),a=o((e,n)=>{for(let r of e)t.addNode(r,n),r.children&&r.children.length>0&&a(r.children,n+1)},`addNodesRecursively`);a(i,0)},`populate`),se=o(e=>e.name?String(e.name):``,`getItemName`),Z={parser:{yy:void 0},parse:o(async t=>{try{let n=await e(`treemap`,t);c.debug(`Treemap AST:`,n);let r=Z.parser?.yy;if(!(r instanceof Y))throw Error(`parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.`);oe(n,r)}catch(e){throw c.error(`Error parsing treemap:`,e),e}},`parse`)},ce=10,Q=10,$=25,le={draw:o((e,r,a,s)=>{let l=s.db,d=l.getConfig(),p=d.padding??ce,h=l.getDiagramTitle(),g=l.getRoot(),{themeVariables:v}=m();if(!g)return;let b=h?30:0,x=f(r),S=d.nodeWidth?d.nodeWidth*Q:960,C=d.nodeHeight?d.nodeHeight*Q:500,w=S,T=C+b;x.attr(`viewBox`,`0 0 ${w} ${T}`),y(x,T,w,d.useMaxWidth);let E;try{let e=d.valueFormat||`,`;if(e===`$0,0`)E=o(e=>`$`+n(`,`)(e),`valueFormat`);else if(e.startsWith(`$`)&&e.includes(`,`)){let t=/\.\d+/.exec(e),r=t?t[0]:``;E=o(e=>`$`+n(`,`+r)(e),`valueFormat`)}else if(e.startsWith(`$`)){let t=e.substring(1);E=o(e=>`$`+n(t||``)(e),`valueFormat`)}else E=n(e)}catch(e){c.error(`Error creating format function:`,e),E=n(`,`)}let D=t().range([`transparent`,v.cScale0,v.cScale1,v.cScale2,v.cScale3,v.cScale4,v.cScale5,v.cScale6,v.cScale7,v.cScale8,v.cScale9,v.cScale10,v.cScale11]),O=t().range([`transparent`,v.cScalePeer0,v.cScalePeer1,v.cScalePeer2,v.cScalePeer3,v.cScalePeer4,v.cScalePeer5,v.cScalePeer6,v.cScalePeer7,v.cScalePeer8,v.cScalePeer9,v.cScalePeer10,v.cScalePeer11]),k=t().range([v.cScaleLabel0,v.cScaleLabel1,v.cScaleLabel2,v.cScaleLabel3,v.cScaleLabel4,v.cScaleLabel5,v.cScaleLabel6,v.cScaleLabel7,v.cScaleLabel8,v.cScaleLabel9,v.cScaleLabel10,v.cScaleLabel11]);h&&x.append(`text`).attr(`x`,w/2).attr(`y`,b/2).attr(`class`,`treemapTitle`).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(h);let A=x.append(`g`).attr(`transform`,`translate(0, ${b})`).attr(`class`,`treemapContainer`),j=R(g).sum(e=>e.value??0).sort((e,t)=>(t.value??0)-(e.value??0)),M=ae().size([S,C]).paddingTop(e=>e.children&&e.children.length>0?$+Q:0).paddingInner(p).paddingLeft(e=>e.children&&e.children.length>0?Q:0).paddingRight(e=>e.children&&e.children.length>0?Q:0).paddingBottom(e=>e.children&&e.children.length>0?Q:0).round(!0)(j),N=M.descendants().filter(e=>e.children&&e.children.length>0),P=A.selectAll(`.treemapSection`).data(N).enter().append(`g`).attr(`class`,`treemapSection`).attr(`transform`,e=>`translate(${e.x0},${e.y0})`);P.append(`rect`).attr(`width`,e=>e.x1-e.x0).attr(`height`,$).attr(`class`,`treemapSectionHeader`).attr(`fill`,`none`).attr(`fill-opacity`,.6).attr(`stroke-width`,.6).attr(`style`,e=>e.depth===0?`display: none;`:``),P.append(`clipPath`).attr(`id`,(e,t)=>`clip-section-${r}-${t}`).append(`rect`).attr(`width`,e=>Math.max(0,e.x1-e.x0-12)).attr(`height`,$),P.append(`rect`).attr(`width`,e=>e.x1-e.x0).attr(`height`,e=>e.y1-e.y0).attr(`class`,(e,t)=>`treemapSection section${t}`).attr(`fill`,e=>D(e.data.name)).attr(`fill-opacity`,.6).attr(`stroke`,e=>O(e.data.name)).attr(`stroke-width`,2).attr(`stroke-opacity`,.4).attr(`style`,e=>{if(e.depth===0)return`display: none;`;let t=_({cssCompiledStyles:e.data.cssCompiledStyles});return t.nodeStyles+`;`+t.borderStyles.join(`;`)}),P.append(`text`).attr(`class`,`treemapSectionLabel`).attr(`x`,6).attr(`y`,$/2).attr(`dominant-baseline`,`middle`).text(e=>e.depth===0?``:e.data.name).attr(`font-weight`,`bold`).attr(`clip-path`,(e,t)=>`url(#clip-section-${r}-${t})`).attr(`style`,e=>e.depth===0?`display: none;`:`dominant-baseline: middle; font-size: 12px; fill:`+k(e.data.name)+`; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;`+_({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace(`color:`,`fill:`)).each(function(e){if(e.depth===0)return;let t=u(this),n=e.data.name;t.text(n);let r=e.x1-e.x0,i;i=d.showValues!==!1&&e.value?r-10-30-10-6:r-6-6;let a=Math.max(15,i),o=t.node();if(o.getComputedTextLength()>a){let e=n;for(;e.length>0;){if(e=n.substring(0,e.length-1),e.length===0){t.text(`...`),o.getComputedTextLength()>a&&t.text(``);break}if(t.text(e+`...`),o.getComputedTextLength()<=a)break}}}),d.showValues!==!1&&P.append(`text`).attr(`class`,`treemapSectionValue`).attr(`x`,e=>e.x1-e.x0-10).attr(`y`,$/2).attr(`text-anchor`,`end`).attr(`dominant-baseline`,`middle`).text(e=>e.value?E(e.value):``).attr(`font-style`,`italic`).attr(`style`,e=>e.depth===0?`display: none;`:`text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:`+k(e.data.name)+`; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;`+_({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace(`color:`,`fill:`));let F=M.leaves(),I=F.length>20,L=I?16:38,z=I?14:28,B=I?4:8,V=I?4:6,H=I?2:4,U=I?8:10,W=I?1:2,G=A.selectAll(`.treemapLeafGroup`).data(F).enter().append(`g`).attr(`class`,(e,t)=>`treemapNode treemapLeafGroup leaf${t}${e.data.classSelector?` ${e.data.classSelector}`:``}x`).attr(`transform`,e=>`translate(${e.x0},${e.y0})`);G.append(`rect`).attr(`width`,e=>e.x1-e.x0).attr(`height`,e=>e.y1-e.y0).attr(`class`,`treemapLeaf`).attr(`fill`,e=>e.parent?D(e.parent.data.name):D(e.data.name)).attr(`style`,e=>_({cssCompiledStyles:e.data.cssCompiledStyles}).nodeStyles).attr(`fill-opacity`,.3).attr(`stroke`,e=>e.parent?D(e.parent.data.name):D(e.data.name)).attr(`stroke-width`,3),G.append(`clipPath`).attr(`id`,(e,t)=>`clip-${r}-${t}`).append(`rect`).attr(`width`,e=>Math.max(0,e.x1-e.x0-4)).attr(`height`,e=>Math.max(0,e.y1-e.y0-4)),G.append(`text`).attr(`class`,`treemapLabel`).attr(`x`,e=>(e.x1-e.x0)/2).attr(`y`,e=>(e.y1-e.y0)/2).attr(`style`,e=>`text-anchor: middle; dominant-baseline: middle; font-size: ${L}px;fill:`+k(e.data.name)+`;`+_({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace(`color:`,`fill:`)).attr(`clip-path`,(e,t)=>`url(#clip-${r}-${t})`).text(e=>e.data.name).each(function(e){let t=u(this),n=e.x1-e.x0,r=e.y1-e.y0,i=t.node(),a=n-2*H,o=r-2*H;if(aa&&s>B;)s--,t.style(`font-size`,`${s}px`);let l=Math.max(V,Math.min(z,Math.round(s*c))),d=s+W+l;for(;d>o&&s>B&&(s--,l=Math.max(V,Math.min(z,Math.round(s*c))),!(la||s(e.x1-e.x0)/2).attr(`y`,function(e){return(e.y1-e.y0)/2}).attr(`style`,e=>`text-anchor: middle; dominant-baseline: hanging; font-size: ${z}px;fill:`+k(e.data.name)+`;`+_({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace(`color:`,`fill:`)).attr(`clip-path`,(e,t)=>`url(#clip-${r}-${t})`).text(e=>e.value?E(e.value):``).each(function(e){let t=u(this),n=this.parentNode;if(!n){t.style(`display`,`none`);return}let r=u(n).select(`.treemapLabel`);if(r.empty()||r.style(`display`)===`none`){t.style(`display`,`none`);return}let i=parseFloat(r.style(`font-size`)),a=Math.max(V,Math.min(z,Math.round(i*.6)));t.style(`font-size`,`${a}px`);let o=(e.y1-e.y0)/2+i/2+W;t.attr(`y`,o);let s=e.x1-e.x0,c=e.y1-e.y0-4,l=s-2*H;t.node().getComputedTextLength()>l||o+a>c||a{let t=s(h(),m().themeVariables),n=s(ue,e),r=n.titleColor??t.titleColor,i=n.labelColor??t.textColor,a=n.valueColor??t.textColor;return` .treemapNode.section { stroke: ${n.sectionStrokeColor}; stroke-width: ${n.sectionStrokeWidth}; diff --git a/ksadk/server/static/assets/diagram-Z3DM3KII-Du-nAJ9F.js b/ksadk/server/static/assets/diagram-Z3DM3KII-mhpvOavV.js similarity index 95% rename from ksadk/server/static/assets/diagram-Z3DM3KII-Du-nAJ9F.js rename to ksadk/server/static/assets/diagram-Z3DM3KII-mhpvOavV.js index 10cbc2a1..841bc821 100644 --- a/ksadk/server/static/assets/diagram-Z3DM3KII-Du-nAJ9F.js +++ b/ksadk/server/static/assets/diagram-Z3DM3KII-mhpvOavV.js @@ -1,4 +1,4 @@ -import{n as e}from"./mermaid-parser.core-KGSy4jWT.js";import{t}from"./chunk-JWPE2WC7-vYvVJb_M.js";import{Ir as n,Lt as r,Nr as i,Sr as a,ar as o,bn as s,br as c,cr as l,er as u,or as d,rr as f,sr as p,ur as m,yr as h}from"./MermaidBlock-Dz4IP-Tx.js";var g=o.packet,_=class{constructor(){this.packet=[],this.setAccTitle=c,this.getAccTitle=p,this.setDiagramTitle=a,this.getDiagramTitle=m,this.getAccDescription=d,this.setAccDescription=h}static{n(this,`PacketDB`)}getConfig(){let e=r({...g,...l().packet});return e.showBits&&(e.paddingY+=10),e}getPacket(){return this.packet}pushWord(e){e.length>0&&this.packet.push(e)}clear(){u(),this.packet=[]}},v=1e4,y=n((e,n)=>{t(e,n);let r=-1,a=[],o=1,{bitsPerRow:s}=n.getConfig();for(let{start:t,end:c,bits:l,label:u}of e.blocks){if(t!==void 0&&c!==void 0&&c{if(e.start===void 0)throw Error(`start should have been set during first phase`);if(e.end===void 0)throw Error(`end should have been set during first phase`);if(e.start>e.end)throw Error(`Block start ${e.start} is greater than block end ${e.end}.`);if(e.end+1<=t*n)return[e,void 0];let r=t*n-1,i=t*n;return[{start:e.start,end:r,label:e.label,bits:r-e.start},{start:i,end:e.end,label:e.label,bits:e.end-i}]},`getNextFittingBlock`),x={parser:{yy:void 0},parse:n(async t=>{let n=await e(`packet`,t),r=x.parser?.yy;if(!(r instanceof _))throw Error(`parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.`);i.debug(n),y(n,r)},`parse`)},S=n((e,t,n,r)=>{let i=r.db,a=i.getConfig(),{rowHeight:o,paddingY:c,bitWidth:l,bitsPerRow:u}=a,d=i.getPacket(),p=i.getDiagramTitle(),m=o+c,h=m*(d.length+1)-(p?0:o),g=l*u+2,_=s(t);_.attr(`viewBox`,`0 0 ${g} ${h}`),f(_,h,g,a.useMaxWidth);for(let[e,t]of d.entries())C(_,t,e,a);_.append(`text`).text(p).attr(`x`,g/2).attr(`y`,h-m/2).attr(`dominant-baseline`,`middle`).attr(`text-anchor`,`middle`).attr(`class`,`packetTitle`)},`draw`),C=n((e,t,n,{rowHeight:r,paddingX:i,paddingY:a,bitWidth:o,bitsPerRow:s,showBits:c})=>{let l=e.append(`g`),u=n*(r+a)+a;for(let e of t){let t=e.start%s*o+1,n=(e.end-e.start+1)*o-i;if(l.append(`rect`).attr(`x`,t).attr(`y`,u).attr(`width`,n).attr(`height`,r).attr(`class`,`packetBlock`),l.append(`text`).attr(`x`,t+n/2).attr(`y`,u+r/2).attr(`class`,`packetLabel`).attr(`dominant-baseline`,`middle`).attr(`text-anchor`,`middle`).text(e.label),!c)continue;let a=e.end===e.start,d=u-2;l.append(`text`).attr(`x`,t+(a?n/2:0)).attr(`y`,d).attr(`class`,`packetByte start`).attr(`dominant-baseline`,`auto`).attr(`text-anchor`,a?`middle`:`start`).text(e.start),a||l.append(`text`).attr(`x`,t+n).attr(`y`,d).attr(`class`,`packetByte end`).attr(`dominant-baseline`,`auto`).attr(`text-anchor`,`end`).text(e.end)}},`drawWord`),w={draw:S},T={byteFontSize:`10px`,startByteColor:`black`,endByteColor:`black`,labelColor:`black`,labelFontSize:`12px`,titleColor:`black`,titleFontSize:`14px`,blockStrokeColor:`black`,blockStrokeWidth:`1`,blockFillColor:`#efefef`},E={parser:x,get db(){return new _},renderer:w,styles:n(({packet:e}={})=>{let t=r(T,e);return` +import{n as e}from"./mermaid-parser.core-C-Sc5_7E.js";import{t}from"./chunk-JWPE2WC7-CEttzwEN.js";import{Ir as n,Lt as r,Nr as i,Sr as a,ar as o,bn as s,br as c,cr as l,er as u,or as d,rr as f,sr as p,ur as m,yr as h}from"./MermaidBlock-CI9NjqQx.js";var g=o.packet,_=class{constructor(){this.packet=[],this.setAccTitle=c,this.getAccTitle=p,this.setDiagramTitle=a,this.getDiagramTitle=m,this.getAccDescription=d,this.setAccDescription=h}static{n(this,`PacketDB`)}getConfig(){let e=r({...g,...l().packet});return e.showBits&&(e.paddingY+=10),e}getPacket(){return this.packet}pushWord(e){e.length>0&&this.packet.push(e)}clear(){u(),this.packet=[]}},v=1e4,y=n((e,n)=>{t(e,n);let r=-1,a=[],o=1,{bitsPerRow:s}=n.getConfig();for(let{start:t,end:c,bits:l,label:u}of e.blocks){if(t!==void 0&&c!==void 0&&c{if(e.start===void 0)throw Error(`start should have been set during first phase`);if(e.end===void 0)throw Error(`end should have been set during first phase`);if(e.start>e.end)throw Error(`Block start ${e.start} is greater than block end ${e.end}.`);if(e.end+1<=t*n)return[e,void 0];let r=t*n-1,i=t*n;return[{start:e.start,end:r,label:e.label,bits:r-e.start},{start:i,end:e.end,label:e.label,bits:e.end-i}]},`getNextFittingBlock`),x={parser:{yy:void 0},parse:n(async t=>{let n=await e(`packet`,t),r=x.parser?.yy;if(!(r instanceof _))throw Error(`parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.`);i.debug(n),y(n,r)},`parse`)},S=n((e,t,n,r)=>{let i=r.db,a=i.getConfig(),{rowHeight:o,paddingY:c,bitWidth:l,bitsPerRow:u}=a,d=i.getPacket(),p=i.getDiagramTitle(),m=o+c,h=m*(d.length+1)-(p?0:o),g=l*u+2,_=s(t);_.attr(`viewBox`,`0 0 ${g} ${h}`),f(_,h,g,a.useMaxWidth);for(let[e,t]of d.entries())C(_,t,e,a);_.append(`text`).text(p).attr(`x`,g/2).attr(`y`,h-m/2).attr(`dominant-baseline`,`middle`).attr(`text-anchor`,`middle`).attr(`class`,`packetTitle`)},`draw`),C=n((e,t,n,{rowHeight:r,paddingX:i,paddingY:a,bitWidth:o,bitsPerRow:s,showBits:c})=>{let l=e.append(`g`),u=n*(r+a)+a;for(let e of t){let t=e.start%s*o+1,n=(e.end-e.start+1)*o-i;if(l.append(`rect`).attr(`x`,t).attr(`y`,u).attr(`width`,n).attr(`height`,r).attr(`class`,`packetBlock`),l.append(`text`).attr(`x`,t+n/2).attr(`y`,u+r/2).attr(`class`,`packetLabel`).attr(`dominant-baseline`,`middle`).attr(`text-anchor`,`middle`).text(e.label),!c)continue;let a=e.end===e.start,d=u-2;l.append(`text`).attr(`x`,t+(a?n/2:0)).attr(`y`,d).attr(`class`,`packetByte start`).attr(`dominant-baseline`,`auto`).attr(`text-anchor`,a?`middle`:`start`).text(e.start),a||l.append(`text`).attr(`x`,t+n).attr(`y`,d).attr(`class`,`packetByte end`).attr(`dominant-baseline`,`auto`).attr(`text-anchor`,`end`).text(e.end)}},`drawWord`),w={draw:S},T={byteFontSize:`10px`,startByteColor:`black`,endByteColor:`black`,labelColor:`black`,labelFontSize:`12px`,titleColor:`black`,titleFontSize:`14px`,blockStrokeColor:`black`,blockStrokeWidth:`1`,blockFillColor:`#efefef`},E={parser:x,get db(){return new _},renderer:w,styles:n(({packet:e}={})=>{let t=r(T,e);return` .packetByte { font-size: ${t.byteFontSize}; } diff --git a/ksadk/server/static/assets/dist-dydu68Fl.js b/ksadk/server/static/assets/dist-2cbEIexW.js similarity index 99% rename from ksadk/server/static/assets/dist-dydu68Fl.js rename to ksadk/server/static/assets/dist-2cbEIexW.js index 54ad1dbe..63d766cc 100644 --- a/ksadk/server/static/assets/dist-dydu68Fl.js +++ b/ksadk/server/static/assets/dist-2cbEIexW.js @@ -1 +1 @@ -import{D as e,E as t,_ as n,b as r,p as i,s as a,u as o,v as s}from"./index-8ipRcQ-M.js";import{n as c,r as l,t as u}from"./dist-C_wsv-Qd.js";import{r as d}from"./dist-B7seoj3d.js";var f=168,p=169,m=170,h=1,g=2,_=3,ee=171,te=172,v=4,y=173,b=5,x=174,S=175,C=176,w=177,T=6,E=7,ne=8,D=9,O=0,k=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],re=58,A=40,j=95,M=91,N=45,P=46,F=35,I=37,L=123,R=125,z=47,B=42,V=10,H=61,U=43,W=38;function G(e){return e>=65&&e<=90||e>=97&&e<=122||e>=161}function K(e){return e>=48&&e<=57}function q(e){let t;return e.next==z&&((t=e.peek(1))==z||t==B)}var J=new c((e,t)=>{if(t.dialectEnabled(O)){let n;if(e.next<0&&t.canShift(C))e.acceptToken(C);else if(((n=e.peek(-1))==V||n<0)&&t.canShift(S)){let t=0;for(;e.next!=V&&k.includes(e.next);)e.advance(),t++;e.next==V||q(e)?e.acceptToken(S,-t):t&&e.acceptToken(w)}else if(e.next==V)e.acceptToken(x,1);else if(k.includes(e.next)){for(e.advance();e.next!=V&&k.includes(e.next);)e.advance();e.acceptToken(w)}}else{let t=0;for(;k.includes(e.next);)e.advance(),t++;t&&e.acceptToken(w)}},{contextual:!0}),Y=new c((e,t)=>{if(q(e)){if(e.advance(),t.dialectEnabled(O)){let t=-1;for(let n=1;;n++){let r=e.peek(-n-1);if(r==V||r<0){t=n+1;break}else if(!k.includes(r))break}if(t>-1){let n=e.next==B,r=0;for(e.advance();e.next>=0;)if(e.next==V){e.advance();let n=0;for(;e.next!=V&&k.includes(e.next);)n++,e.advance();if(n=0;)e.advance();e.acceptToken(T)}else{for(e.advance();e.next>=0;){let{next:t}=e;if(e.advance(),t==B&&e.next==z){e.advance();break}}e.acceptToken(E)}}}),X=new c((e,t)=>{(e.next==U||e.next==H)&&t.dialectEnabled(O)&&e.acceptToken(e.next==H?ne:D,1)}),ie=new c((e,t)=>{if(!t.dialectEnabled(O))return;let n=t.context.depth;if(e.next<0&&n){e.acceptToken(p);return}if(e.peek(-1)==V){let t=0;for(;e.next!=V&&k.includes(e.next);)e.advance(),t++;t!=n&&e.next!=V&&!q(e)&&(t{for(let n=!1,r=0,i=0;;i++){let{next:a}=e;if(G(a)||a==N||a==j||n&&K(a))!n&&(a!=N||i>0)&&(n=!0),r===i&&a==N&&r++,e.advance();else if(a==F&&e.peek(1)==L){e.acceptToken(b,2);break}else{n&&e.acceptToken(r==2&&t.canShift(v)?v:t.canShift(y)?y:a==A?ee:te);break}}}),oe=new c(e=>{if(e.next==R){for(e.advance();G(e.next)||e.next==N||e.next==j||K(e.next);)e.advance();e.next==F&&e.peek(1)==L?e.acceptToken(g,2):e.acceptToken(h)}}),se=new c(e=>{if(k.includes(e.peek(-1))){let{next:t}=e;(G(t)||t==j||t==F||t==P||t==M||t==re&&G(e.peek(1))||t==N||t==W||t==B)&&e.acceptToken(m)}}),ce=new c(e=>{if(!k.includes(e.peek(-1))){let{next:t}=e;if(t==I&&(e.advance(),e.acceptToken(_)),G(t)){do e.advance();while(G(e.next)||K(e.next));e.acceptToken(_)}}});function Z(e,t){this.parent=e,this.depth=t,this.hash=(e?e.hash+e.hash<<8:0)+t+(t<<4)}var le=new u({start:new Z(null,0),shift(e,t,n,r){return t==f?new Z(e,n.pos-r.pos):t==p?e.parent:e},hash(e){return e.hash}}),ue=t({"AtKeyword import charset namespace keyframes media supports include mixin use forward extend at-root":e.definitionKeyword,"Keyword selector":e.keyword,ControlKeyword:e.controlKeyword,NamespaceName:e.namespace,KeyframeName:e.labelName,KeyframeRangeName:e.operatorKeyword,TagName:e.tagName,"ClassName Suffix":e.className,PseudoClassName:e.constant(e.className),IdName:e.labelName,"FeatureName PropertyName":e.propertyName,AttributeName:e.attributeName,NumberLiteral:e.number,KeywordQuery:e.keyword,UnaryQueryOp:e.operatorKeyword,"CallTag ValueName":e.atom,VariableName:e.variableName,SassVariableName:e.special(e.variableName),Callee:e.operatorKeyword,Unit:e.unit,"UniversalSelector NestingSelector IndentedMixin IndentedInclude":e.definitionOperator,MatchOp:e.compareOperator,"ChildOp SiblingOp, LogicOp":e.logicOperator,BinOp:e.arithmeticOperator,"Important Global Default":e.modifier,Comment:e.blockComment,LineComment:e.lineComment,ColorLiteral:e.color,"ParenthesizedContent StringLiteral":e.string,"InterpolationStart InterpolationContinue InterpolationEnd":e.meta,': "..."':e.punctuation,"PseudoOp #":e.derefOperator,"; ,":e.separator,"( )":e.paren,"[ ]":e.squareBracket,"{ }":e.brace}),de={__proto__:null,not:62,using:197,as:207,with:211,without:211,hide:225,show:225,if:263,from:269,to:271,through:273,in:279},fe={__proto__:null,url:82,"url-prefix":82,domain:82,regexp:82,lang:104,"nth-child":104,"nth-last-child":104,"nth-of-type":104,"nth-last-of-type":104,dir:104,"host-context":104},pe={__proto__:null,"@import":162,"@include":194,"@mixin":200,"@function":200,"@use":204,"@extend":214,"@at-root":218,"@forward":222,"@media":228,"@charset":232,"@namespace":236,"@keyframes":242,"@supports":254,"@if":258,"@else":260,"@for":266,"@each":276,"@while":282,"@debug":286,"@warn":286,"@error":286,"@return":286},me={__proto__:null,layer:166,not:184,only:184,selector:190},Q=l.deserialize({version:14,states:"!$WQ`Q+tOOO#fQ+tOOP#mOpOOOOQ#U'#Ch'#ChO#rQ(pO'#CjOOQ#U'#Ci'#CiO%_Q)QO'#GXO%rQ.jO'#CnO&mQ#dO'#D]O'dQ(pO'#CgO'kQ)OO'#D_O'vQ#dO'#DfO'{Q#dO'#DiO(QQ#dO'#DqOOQ#U'#GX'#GXO(VQ(pO'#GXO(^Q(nO'#DuO%rQ.jO'#D}O%rQ.jO'#E`O%rQ.jO'#EcO%rQ.jO'#EeO(cQ)OO'#EjO)TQ)OO'#ElO%rQ.jO'#EnO)bQ)OO'#EqO%rQ.jO'#EsO)|Q)OO'#EuO*XQ)OO'#ExO*aQ)OO'#FOO*uQ)OO'#FbOOQ&Z'#GW'#GWOOQ&Y'#Fe'#FeO+PQ(nO'#FeQ`Q+tOOO%rQ.jO'#FQO+[Q(nO'#FUO+aQ)OO'#FZO%rQ.jO'#F^O%rQ.jO'#F`OOQ&Z'#Fm'#FmO+iQ+uO'#GaO+vQ(oO'#GaQOQ#SOOP,XO#SO'#GVPOOO)CAz)CAzOOQ#U'#Cm'#CmOOQ#U,59W,59WOOQ#i'#Cp'#CpO%rQ.jO'#CsO,xQ.wO'#CuO/dQ.^O,59YO%rQ.jO'#CzOOQ#S'#DP'#DPO/uQ(nO'#DUO/zQ)OO'#DZOOQ#i'#GZ'#GZO0SQ(nO'#DOOOQ#U'#D^'#D^OOQ#U,59w,59wO&mQ#dO,59wO0XQ)OO,59yO'vQ#dO,5:QO'{Q#dO,5:TO(cQ)OO,5:WO(cQ)OO,5:YO(cQ)OO,5:ZO(cQ)OO'#FlO0dQ(nO,59RO0oQ+tO'#DsO0vQ#TO'#DsOOQ&Z,59R,59ROOQ#U'#Da'#DaOOQ#S'#Dd'#DdOOQ#U,59y,59yO0{Q(nO,59yO1QQ(nO,59yOOQ#U'#Dh'#DhOOQ#U,5:Q,5:QOOQ#S'#Dj'#DjO1VQ9`O,5:TOOQ#U'#Dr'#DrOOQ#U,5:],5:]O2YQ.jO,5:aO2dQ.jO,5:iO3`Q.jO,5:zO3mQ.YO,5:}O4OQ.jO,5;POOQ#U'#Cj'#CjO4wQ(pO,5;UO5UQ(pO,5;WOOQ&Z,5;W,5;WO5]Q)OO,5;WO5bQ.jO,5;YOOQ#S'#ET'#ETO6TQ.jO'#E]O6kQ(nO'#GcO*aQ)OO'#EZO7PQ(nO'#E^OOQ#S'#Gd'#GdO0gQ(nO,5;]O4UQ.YO,5;_OOQ#d'#Ew'#EwO+PQ(nO,5;aO7UQ)OO,5;aOOQ#S'#Ez'#EzO7^Q(nO,5;dO7cQ(nO,5;jO7nQ(nO,5;|OOQ&Z'#Gf'#GfOOQ&Y,5VQ9`O1G/oO>pQ(pO1G/rO?dQ(pO1G/tO@WQ(pO1G/uO@zQ(pO,5aAN>aO!6QQ(pO,5_Ow!bi!a!bi!d!bi!h!bi$p!bi$t!bi!o!bi$v!bif!bie!bi~P>_Ow!ci!a!ci!d!ci!h!ci$p!ci$t!ci!o!ci$v!cif!cie!ci~P>_Ow$`a!h$`a$t$`a~P4]O!p%|O~O$o%TP~P`Oe%RP~P(cOe%QP~P%rOS!XOTVO_!XOc!XOf!QOh!XOo!TOy!VO|!WO$q!UO$r!PO%O!RO~Oe&VOj&TO~PAsOl#sOm#sOq#tOw&XO!l&ZO!m&ZO!n&ZO!o!ii$t!ii$v!ii$m!ii!p!ii$o!ii~P%rOf&[OT!tXc!tX!o!tX#O!tX#R!tX$s!tX$t!tX$v!tX~O$n$_OS%YXT%YXW%YXX%YX_%YXc%YXq%YXu%YX|%YX!S%YX!Z%YX!r%YX!s%YX#T%YX#W%YX#Y%YX#_%YX#a%YX#c%YX#f%YX#h%YX#j%YX#m%YX#s%YX#u%YX#y%YX$O%YX$R%YX$T%YX$m%YX$r%YX$|%YX%S%YX!p%YX!o%YX$t%YX$o%YX~O$r!PO$|&aO~O#]&cO~Ou&dO~O!o#`O#d$wO$t#`O$v#`O~O!o%ZP#d%ZP$t%ZP$v%ZP~P%rO$r!PO~OR#rO!|iXeiX~Oe!wXm!wXu!yX!|!yX~Ou&jO!|&kO~Oe&lOm%PO~Ow$fX!h$fX$t$fX!o$fX$v$fX~P*aOw%QO!h%Va$t%Va!o%Va$v%Va~Om%POw!}a!h!}a$t!}a!o!}a$v!}ae!}a~O!p&xO$r&sO%O&rO~O#v&zOS#tiT#tiW#tiX#ti_#tic#tiq#tiu#ti|#ti!S#ti!Z#ti!r#ti!s#ti#T#ti#W#ti#Y#ti#_#ti#a#ti#c#ti#f#ti#h#ti#j#ti#m#ti#s#ti#u#ti#y#ti$O#ti$R#ti$T#ti$m#ti$r#ti$|#ti%S#ti!p#ti!o#ti$t#ti$o#ti~Oc&|Ow$lX$P$lX~Ow%`O$P%[a~O!o#kO$t#kO$m%Ti!p%Ti$o%Ti~O!o$da$m$da$t$da!p$da$o$da~P`Oq#tOPkiQkilkimkiTkickifki!oki!uki#Oki#Rki$ski$tki$vki!hki#Uki#Zki#]ki#dkiekiSki_kihkijkiokiwkiyki|ki!lki!mki!nki$qki$rki%Oki$mkivki{ki#{ki#|ki!pki$oki~Ol#sOm#sOq#tOP$]aQ$]a~Oe'QO~Ol#sOm#sOq#tOS$YXT$YX_$YXc$YXe$YXf$YXh$YXj$YXo$YXv$YXw$YXy$YX|$YX$q$YX$r$YX%O$YX~Ov'UOw'SOe%PX~P%rOS$}XT$}X_$}Xc$}Xe$}Xf$}Xh$}Xj$}Xl$}Xm$}Xo$}Xq$}Xv$}Xw$}Xy$}X|$}X$q$}X$r$}X%O$}X~Ou'VO~P!%OOe'WO~O$o'YO~Ow'ZOe%RX~P4]Oe']O~Ow'^Oe%QX~P%rOe'`O~Ol#sOm#sOq#tO{'aO~Ou'bOe$}Xl$}Xm$}Xq$}X~Oe'eOj'cO~Ol#sOm#sOq#tOS$cXT$cX_$cXc$cXf$cXh$cXj$cXo$cXw$cXy$cX|$cX!l$cX!m$cX!n$cX!o$cX$q$cX$r$cX$t$cX$v$cX%O$cX$m$cX!p$cX$o$cX~Ow&XO!l'hO!m'hO!n'hO!o!iq$t!iq$v!iq$m!iq!p!iq$o!iq~P%rO$r'iO~O!o#`O#]'nO$t#`O$v#`O~Ou'oO~Ol#sOm#sOq#tOw'qO!o%ZX#d%ZX$t%ZX$v%ZX~O$s'uO~P5oOm%POw$fa!h$fa$t$fa!o$fa$v$fa~Oe'wO~P4]O%O&rOw#pX!h#pX$t#pX~Ow'yO!h!fO$t!gO~O!p'}O$r&sO%O&rO~O#v(POS#tqT#tqW#tqX#tq_#tqc#tqq#tqu#tq|#tq!S#tq!Z#tq!r#tq!s#tq#T#tq#W#tq#Y#tq#_#tq#a#tq#c#tq#f#tq#h#tq#j#tq#m#tq#s#tq#u#tq#y#tq$O#tq$R#tq$T#tq$m#tq$r#tq$|#tq%S#tq!p#tq!o#tq$t#tq$o#tq~O!h!fO#w(QO$t!gO~Ol#sOm#sOq#tO#{(SO#|(SO~Oc(VOe$ZXw$ZX~P=TOw'SOe%Pa~Ol#sOm#sOq#tO{(ZO~Oe$_Xw$_X~P(cOw'ZOe%Ra~Oe$^Xw$^X~P%rOw'^Oe%Qa~Ou'bO~Ol#sOm#sOq#tOS$caT$ca_$cac$caf$cah$caj$cao$caw$cay$ca|$ca!l$ca!m$ca!n$ca!o$ca$q$ca$r$ca$t$ca$v$ca%O$ca$m$ca!p$ca$o$ca~Oe(dOq(bO~Oe(gOm%PO~Ow$hX!o$hX#d$hX$t$hX$v$hX~P%rOw'qO!o%Za#d%Za$t%Za$v%Za~Oe(lO~P%rOe(mO!|(nO~Ov(vOe$Zaw$Za~P%rOu(wO~P!%OOw'SOe%Pi~Ow'SOe%Pi~P%rOe$_aw$_a~P4]Oe$^aw$^a~P%rOl#sOm#sOq#tOw(yOe$bij$bi~Oe(|Oq(bO~Oe)OOm%PO~Ol#sOm#sOq#tOw$ha!o$ha#d$ha$t$ha$v$ha~OS$}Oh$}Oj$}Oy!VO$q!UO$s'uO%O&rO~O#w(QO~Ow'SOe%Pq~Oe)WO~Oe$Zqw$Zq~P%rO%Oql!dl~",goto:"=Y%]PPPPPPPPPPP%^%h%h%{P%h&`&cP(UPP)ZP*YP)ZPP)ZP)ZP+f,j-lPPP-xPPPP)Z/S%h/W%hP/^P/d/j/p%hP/v%h/|P%hP%h%hP%h0S0VP1k1}2XPPPPP%^PP2_P2b'w'w2h'w'wP'wP'w'wP%^PP%^P%^PP2qP%^P%^P%^PP%^P%^P%^P2w%^P2z2}3Q3X%^P%^PPP%^PPPP%^PP%^P%^P%^P3^3d3j4Y4h4n4t4z5Q5W5d5j5p5z6Q6W6b6h6n6t6zPPPPPPPPPPPP7Q7T7aP8WP:_:b:eP:h:q:w;T;p;y=S=VanOPqx!f#l$_%fs^OPefqx!a!b!c!d!f#l$_$`%T%f'ZsTOPefqx!a!b!c!d!f#l$_$`%T%f'ZR!OUb^ef!a!b!c!d$`%T'Z`_OPqx!f#l$_%f!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)Ug#Uhlm!u#Q#S$i%P%Q&d'o!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UQ&b$pR&i$x!y!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)U!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UU$}#Q&k(nU&u%Y&w'yR'x&t!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UV$}#Q&k(n#P!YVabcdgiruv!Q!T!t#Q#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j&k'S'V'^'b'q't(Q(S(U(Y(^(n(w)UQ$P!YQ&_$lQ&`$oR(e'n!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UQ#YjU$}#Q&k(nR%X#ZT#{!W#|Q![WR$Q!]Q!kYR$R!^Q$R!mR%y$TQ!lYR$S!^Q$R!lR%y$SQ!oZR$U!_Q!q[R$V!`R!s]Q!hXQ!|fQ$]!eQ$f!tQ$k!vQ$m!wQ$r!{Q%U#VQ%[#^Q%]#_Q%^#cQ%c#gQ'l&_Q'{&vQ(R&zQ(T'OQ(q'zQ(s(PQ)P(gQ)S(tQ)T(uR)V)OSpOqUyP!f$_Q#jxQ%g#lR'P%fa`OPqx!f#l$_%fQ$f!tR(a'bR$i!uQ'j&[R(z(bQ${#QQ'v&kR)R(nQ&b$pR's&iR#ZjR#]kR%Z#]S&v%Y&wR(o'yV&t%Y&w'yQ#o{R%i#oQqOR#bqQ%v$OQ&Q$a^'R%v&Q't(U(Y(^)UQ't&jQ(U'SQ(Y'VQ(^'^R)U(wQ'T%vU(W'T(X(xQ(X'UR(x(YQ#|!WR%s#|Q#v!SR%o#vQ'_&QR(_'_Q'[&OR(]'[Q!eXR$[!eUxP!f$_S#ix%fR%f#lQ&U$dR'd&UQ&Y$eR'g&YQ#myQ%e#jT%h#m%eQ(c'jR({(cQ%R#RR&o%RQ$u#OS&e$u(jR(j'sQ'r&gR(i'rQ&w%YR'|&wQ'z&vR(p'zQ&y%^R(O&yQ%a#eR&}%aR|QSoOq]wPx!f#l$_%f`XOPqx!f#l$_%fQ!zeQ!{fQ$W!aQ$X!bQ$Y!cQ$Z!dQ&O$`Q&p%TR(['ZQ!SVQ!uaQ!vbQ!wcQ!xdQ#OgQ#WiQ#crQ#guQ#hvS#q!Q$dQ#x!TQ$e!tQ%l#sQ%m#tQ%n#ul%u$O$a%v&Q&j'S'V'^'t(U(Y(^(w)UQ&S$cS&W$e&YQ&g$wQ&{%_Q'O%bQ'X%{Q'f&XQ(`'bQ(h'qQ(t(QR(u(SR%x$OR&R$aR&P$`QzPQ$^!fR%}$_X#ly#j#m%eQ#VhQ#_mQ$h!uR&^$iW#Rhm!u$iQ#^lQ$|#QQ%S#SQ&m%PQ&n%QQ'p&dR(f'oQ%O#QQ'v&kR)R(nQ#apQ$k!vQ$n!xQ$q!zQ$v#OQ%V#WQ%W#YQ%]#_Q%d#hQ&]$hQ&f$uQ&q%XQ'k&^Q'l&_S'm&`&bQ(k'sQ(}(eR)Q(jR&h$wR#ft",nodeNames:`⚠ InterpolationEnd InterpolationContinue Unit VariableName InterpolationStart LineComment Comment IndentedMixin IndentedInclude StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector SuffixedSelector Suffix Interpolation SassVariableName ValueName ) ( ParenthesizedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp LogicOp UnaryExpression LogicOp NamespacedValue . CallExpression Callee ArgList : ... , CallLiteral CallTag ParenthesizedContent ] [ LineNames LineName ClassSelector ClassName PseudoClassSelector :: PseudoClassName PseudoClassName ArgList PseudoClassName ArgList IdSelector # IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp PlaceholderSelector ClassName Block { Declaration PropertyName Map Important Global Default ; } ImportStatement AtKeyword import Layer layer LayerName KeywordQuery FeatureQuery FeatureName BinaryQuery ComparisonQuery CompareOp UnaryQuery LogicOp ParenthesizedQuery SelectorQuery selector IncludeStatement include Keyword MixinStatement mixin UseStatement use Keyword Star Keyword ExtendStatement extend RootStatement at-root ForwardStatement forward Keyword MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports IfStatement ControlKeyword ControlKeyword Keyword ForStatement ControlKeyword Keyword Keyword Keyword EachStatement ControlKeyword Keyword WhileStatement ControlKeyword OutputStatement ControlKeyword AtRule Styles`,maxTerm:196,context:le,nodeProps:[[`openedBy`,1,`InterpolationStart`,5,`InterpolationEnd`,21,`(`,43,`[`,78,`{`],[`isolate`,-3,6,7,26,``],[`closedBy`,22,`)`,44,`]`,70,`}`]],propSources:[ue],skippedNodes:[0,6,7,146],repeatNodeCount:21,tokenData:"!$Q~RyOq#rqr$jrs0jst2^tu8{uv;hvw;{wx<^xy={yz>^z{>c{|>||}Co}!ODQ!O!PDo!P!QFY!Q![Fk![!]Gf!]!^Hb!^!_Hs!_!`Is!`!aJ^!a!b#r!b!cKa!c!}#r!}#OMn#O#P#r#P#QNP#Q#RNb#R#T#r#T#UNw#U#c#r#c#d!!Y#d#o#r#o#p!!o#p#qNb#q#r!#Q#r#s!#c#s;'S#r;'S;=`!#z<%lO#rW#uSOy$Rz;'S$R;'S;=`$d<%lO$RW$WSzWOy$Rz;'S$R;'S;=`$d<%lO$RW$gP;=`<%l$RY$m[Oy$Rz!_$R!_!`%c!`#W$R#W#X%v#X#Z$R#Z#[)Z#[#]$R#]#^,V#^;'S$R;'S;=`$d<%lO$RY%jSzWlQOy$Rz;'S$R;'S;=`$d<%lO$RY%{UzWOy$Rz#X$R#X#Y&_#Y;'S$R;'S;=`$d<%lO$RY&dUzWOy$Rz#Y$R#Y#Z&v#Z;'S$R;'S;=`$d<%lO$RY&{UzWOy$Rz#T$R#T#U'_#U;'S$R;'S;=`$d<%lO$RY'dUzWOy$Rz#i$R#i#j'v#j;'S$R;'S;=`$d<%lO$RY'{UzWOy$Rz#`$R#`#a(_#a;'S$R;'S;=`$d<%lO$RY(dUzWOy$Rz#h$R#h#i(v#i;'S$R;'S;=`$d<%lO$RY(}S!nQzWOy$Rz;'S$R;'S;=`$d<%lO$RY)`UzWOy$Rz#`$R#`#a)r#a;'S$R;'S;=`$d<%lO$RY)wUzWOy$Rz#c$R#c#d*Z#d;'S$R;'S;=`$d<%lO$RY*`UzWOy$Rz#U$R#U#V*r#V;'S$R;'S;=`$d<%lO$RY*wUzWOy$Rz#T$R#T#U+Z#U;'S$R;'S;=`$d<%lO$RY+`UzWOy$Rz#`$R#`#a+r#a;'S$R;'S;=`$d<%lO$RY+yS!mQzWOy$Rz;'S$R;'S;=`$d<%lO$RY,[UzWOy$Rz#a$R#a#b,n#b;'S$R;'S;=`$d<%lO$RY,sUzWOy$Rz#d$R#d#e-V#e;'S$R;'S;=`$d<%lO$RY-[UzWOy$Rz#c$R#c#d-n#d;'S$R;'S;=`$d<%lO$RY-sUzWOy$Rz#f$R#f#g.V#g;'S$R;'S;=`$d<%lO$RY.[UzWOy$Rz#h$R#h#i.n#i;'S$R;'S;=`$d<%lO$RY.sUzWOy$Rz#T$R#T#U/V#U;'S$R;'S;=`$d<%lO$RY/[UzWOy$Rz#b$R#b#c/n#c;'S$R;'S;=`$d<%lO$RY/sUzWOy$Rz#h$R#h#i0V#i;'S$R;'S;=`$d<%lO$RY0^S!lQzWOy$Rz;'S$R;'S;=`$d<%lO$R~0mWOY0jZr0jrs1Vs#O0j#O#P1[#P;'S0j;'S;=`2W<%lO0j~1[Oj~~1_RO;'S0j;'S;=`1h;=`O0j~1kXOY0jZr0jrs1Vs#O0j#O#P1[#P;'S0j;'S;=`2W;=`<%l0j<%lO0j~2ZP;=`<%l0jZ2cY!ZPOy$Rz!Q$R!Q![3R![!c$R!c!i3R!i#T$R#T#Z3R#Z;'S$R;'S;=`$d<%lO$RY3WYzWOy$Rz!Q$R!Q![3v![!c$R!c!i3v!i#T$R#T#Z3v#Z;'S$R;'S;=`$d<%lO$RY3{YzWOy$Rz!Q$R!Q![4k![!c$R!c!i4k!i#T$R#T#Z4k#Z;'S$R;'S;=`$d<%lO$RY4rYhQzWOy$Rz!Q$R!Q![5b![!c$R!c!i5b!i#T$R#T#Z5b#Z;'S$R;'S;=`$d<%lO$RY5iYhQzWOy$Rz!Q$R!Q![6X![!c$R!c!i6X!i#T$R#T#Z6X#Z;'S$R;'S;=`$d<%lO$RY6^YzWOy$Rz!Q$R!Q![6|![!c$R!c!i6|!i#T$R#T#Z6|#Z;'S$R;'S;=`$d<%lO$RY7TYhQzWOy$Rz!Q$R!Q![7s![!c$R!c!i7s!i#T$R#T#Z7s#Z;'S$R;'S;=`$d<%lO$RY7xYzWOy$Rz!Q$R!Q![8h![!c$R!c!i8h!i#T$R#T#Z8h#Z;'S$R;'S;=`$d<%lO$RY8oShQzWOy$Rz;'S$R;'S;=`$d<%lO$R_9O`Oy$Rz}$R}!O:Q!O!Q$R!Q![:Q![!_$R!_!`;T!`!c$R!c!}:Q!}#R$R#R#S:Q#S#T$R#T#o:Q#o;'S$R;'S;=`$d<%lO$RZ:X^zWcROy$Rz}$R}!O:Q!O!Q$R!Q![:Q![!c$R!c!}:Q!}#R$R#R#S:Q#S#T$R#T#o:Q#o;'S$R;'S;=`$d<%lO$R[;[S!_SzWOy$Rz;'S$R;'S;=`$d<%lO$RZ;oS%SPlQOy$Rz;'S$R;'S;=`$d<%lO$RZQSfROy$Rz;'S$R;'S;=`$d<%lO$R~>cOe~_>jU$|PlQOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RZ?TWlQ!dPOy$Rz!O$R!O!P?m!P!Q$R!Q![Br![;'S$R;'S;=`$d<%lO$RZ?rUzWOy$Rz!Q$R!Q![@U![;'S$R;'S;=`$d<%lO$RZ@]YzW%OROy$Rz!Q$R!Q![@U![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RZAQYzWOy$Rz{$R{|Ap|}$R}!OAp!O!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZAuUzWOy$Rz!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZB`UzW%OROy$Rz!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZBy[zW%OROy$Rz!O$R!O!P@U!P!Q$R!Q![Br![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RZCtSwROy$Rz;'S$R;'S;=`$d<%lO$RZDVWlQOy$Rz!O$R!O!P?m!P!Q$R!Q![Br![;'S$R;'S;=`$d<%lO$RZDtWqROy$Rz!O$R!O!PE^!P!Q$R!Q![@U![;'S$R;'S;=`$d<%lO$RYEcUzWOy$Rz!O$R!O!PEu!P;'S$R;'S;=`$d<%lO$RYE|SvQzWOy$Rz;'S$R;'S;=`$d<%lO$RYF_SlQOy$Rz;'S$R;'S;=`$d<%lO$RZFp[%OROy$Rz!O$R!O!P@U!P!Q$R!Q![Br![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RkGkUucOy$Rz![$R![!]G}!];'S$R;'S;=`$d<%lO$RXHUS!SPzWOy$Rz;'S$R;'S;=`$d<%lO$RZHgS!oROy$Rz;'S$R;'S;=`$d<%lO$RjHzU!|`lQOy$Rz!_$R!_!`I^!`;'S$R;'S;=`$d<%lO$RjIgS!|`zWlQOy$Rz;'S$R;'S;=`$d<%lO$RnIzU!|`!_SOy$Rz!_$R!_!`%c!`;'S$R;'S;=`$d<%lO$RkJgV!aP!|`lQOy$Rz!_$R!_!`I^!`!aJ|!a;'S$R;'S;=`$d<%lO$RXKTS!aPzWOy$Rz;'S$R;'S;=`$d<%lO$RXKdYOy$Rz}$R}!OLS!O!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RXLXWzWOy$Rz!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RXLx[!rPzWOy$Rz}$R}!OLq!O!Q$R!Q![Lq![!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RZMsS|ROy$Rz;'S$R;'S;=`$d<%lO$R_NUS{VOy$Rz;'S$R;'S;=`$d<%lO$R[NeUOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RkNzUOy$Rz#b$R#b#c! ^#c;'S$R;'S;=`$d<%lO$Rk! cUzWOy$Rz#W$R#W#X! u#X;'S$R;'S;=`$d<%lO$Rk! |SmczWOy$Rz;'S$R;'S;=`$d<%lO$Rk!!]UOy$Rz#f$R#f#g! u#g;'S$R;'S;=`$d<%lO$RZ!!tS!hROy$Rz;'S$R;'S;=`$d<%lO$RZ!#VS!pROy$Rz;'S$R;'S;=`$d<%lO$R]!#hU!dPOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RW!#}P;=`<%l#r",tokenizers:[ie,se,oe,ce,ae,J,Y,X,0,1,2,3,4],topRules:{StyleSheet:[0,10],Styles:[1,145]},dialects:{indented:0},specialized:[{term:172,get:e=>de[e]||-1},{term:171,get:e=>fe[e]||-1},{term:80,get:e=>pe[e]||-1},{term:173,get:e=>me[e]||-1}],tokenPrec:3217}),$=a.define({name:`sass`,parser:Q.configure({props:[s.add({Block:n,Comment(e,t){return{from:e.from+2,to:t.sliceDoc(e.to-2,e.to)==`*/`?e.to-2:e.to}}}),r.add({Declaration:i()})]}),languageData:{commentTokens:{block:{open:`/*`,close:`*/`},line:`//`},indentOnInput:/^\s*\}$/,wordChars:`$-`}}),he=$.configure({dialect:`indented`,props:[r.add({"Block RuleSet":e=>e.baseIndent+e.unit}),s.add({Block:e=>({from:e.from,to:e.to})})]}),ge=d(e=>e.name==`VariableName`||e.name==`SassVariableName`);function _e(e){return new o(e?.indented?he:$,$.data.of({autocomplete:ge}))}export{_e as sass}; \ No newline at end of file +import{D as e,E as t,_ as n,b as r,p as i,s as a,u as o,v as s}from"./index-BkDx9KsG.js";import{n as c,r as l,t as u}from"./dist-DeO3Qj-D.js";import{r as d}from"./dist-B-VEMnGR.js";var f=168,p=169,m=170,h=1,g=2,_=3,ee=171,te=172,v=4,y=173,b=5,x=174,S=175,C=176,w=177,T=6,E=7,ne=8,D=9,O=0,k=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],re=58,A=40,j=95,M=91,N=45,P=46,F=35,I=37,L=123,R=125,z=47,B=42,V=10,H=61,U=43,W=38;function G(e){return e>=65&&e<=90||e>=97&&e<=122||e>=161}function K(e){return e>=48&&e<=57}function q(e){let t;return e.next==z&&((t=e.peek(1))==z||t==B)}var J=new c((e,t)=>{if(t.dialectEnabled(O)){let n;if(e.next<0&&t.canShift(C))e.acceptToken(C);else if(((n=e.peek(-1))==V||n<0)&&t.canShift(S)){let t=0;for(;e.next!=V&&k.includes(e.next);)e.advance(),t++;e.next==V||q(e)?e.acceptToken(S,-t):t&&e.acceptToken(w)}else if(e.next==V)e.acceptToken(x,1);else if(k.includes(e.next)){for(e.advance();e.next!=V&&k.includes(e.next);)e.advance();e.acceptToken(w)}}else{let t=0;for(;k.includes(e.next);)e.advance(),t++;t&&e.acceptToken(w)}},{contextual:!0}),Y=new c((e,t)=>{if(q(e)){if(e.advance(),t.dialectEnabled(O)){let t=-1;for(let n=1;;n++){let r=e.peek(-n-1);if(r==V||r<0){t=n+1;break}else if(!k.includes(r))break}if(t>-1){let n=e.next==B,r=0;for(e.advance();e.next>=0;)if(e.next==V){e.advance();let n=0;for(;e.next!=V&&k.includes(e.next);)n++,e.advance();if(n=0;)e.advance();e.acceptToken(T)}else{for(e.advance();e.next>=0;){let{next:t}=e;if(e.advance(),t==B&&e.next==z){e.advance();break}}e.acceptToken(E)}}}),X=new c((e,t)=>{(e.next==U||e.next==H)&&t.dialectEnabled(O)&&e.acceptToken(e.next==H?ne:D,1)}),ie=new c((e,t)=>{if(!t.dialectEnabled(O))return;let n=t.context.depth;if(e.next<0&&n){e.acceptToken(p);return}if(e.peek(-1)==V){let t=0;for(;e.next!=V&&k.includes(e.next);)e.advance(),t++;t!=n&&e.next!=V&&!q(e)&&(t{for(let n=!1,r=0,i=0;;i++){let{next:a}=e;if(G(a)||a==N||a==j||n&&K(a))!n&&(a!=N||i>0)&&(n=!0),r===i&&a==N&&r++,e.advance();else if(a==F&&e.peek(1)==L){e.acceptToken(b,2);break}else{n&&e.acceptToken(r==2&&t.canShift(v)?v:t.canShift(y)?y:a==A?ee:te);break}}}),oe=new c(e=>{if(e.next==R){for(e.advance();G(e.next)||e.next==N||e.next==j||K(e.next);)e.advance();e.next==F&&e.peek(1)==L?e.acceptToken(g,2):e.acceptToken(h)}}),se=new c(e=>{if(k.includes(e.peek(-1))){let{next:t}=e;(G(t)||t==j||t==F||t==P||t==M||t==re&&G(e.peek(1))||t==N||t==W||t==B)&&e.acceptToken(m)}}),ce=new c(e=>{if(!k.includes(e.peek(-1))){let{next:t}=e;if(t==I&&(e.advance(),e.acceptToken(_)),G(t)){do e.advance();while(G(e.next)||K(e.next));e.acceptToken(_)}}});function Z(e,t){this.parent=e,this.depth=t,this.hash=(e?e.hash+e.hash<<8:0)+t+(t<<4)}var le=new u({start:new Z(null,0),shift(e,t,n,r){return t==f?new Z(e,n.pos-r.pos):t==p?e.parent:e},hash(e){return e.hash}}),ue=t({"AtKeyword import charset namespace keyframes media supports include mixin use forward extend at-root":e.definitionKeyword,"Keyword selector":e.keyword,ControlKeyword:e.controlKeyword,NamespaceName:e.namespace,KeyframeName:e.labelName,KeyframeRangeName:e.operatorKeyword,TagName:e.tagName,"ClassName Suffix":e.className,PseudoClassName:e.constant(e.className),IdName:e.labelName,"FeatureName PropertyName":e.propertyName,AttributeName:e.attributeName,NumberLiteral:e.number,KeywordQuery:e.keyword,UnaryQueryOp:e.operatorKeyword,"CallTag ValueName":e.atom,VariableName:e.variableName,SassVariableName:e.special(e.variableName),Callee:e.operatorKeyword,Unit:e.unit,"UniversalSelector NestingSelector IndentedMixin IndentedInclude":e.definitionOperator,MatchOp:e.compareOperator,"ChildOp SiblingOp, LogicOp":e.logicOperator,BinOp:e.arithmeticOperator,"Important Global Default":e.modifier,Comment:e.blockComment,LineComment:e.lineComment,ColorLiteral:e.color,"ParenthesizedContent StringLiteral":e.string,"InterpolationStart InterpolationContinue InterpolationEnd":e.meta,': "..."':e.punctuation,"PseudoOp #":e.derefOperator,"; ,":e.separator,"( )":e.paren,"[ ]":e.squareBracket,"{ }":e.brace}),de={__proto__:null,not:62,using:197,as:207,with:211,without:211,hide:225,show:225,if:263,from:269,to:271,through:273,in:279},fe={__proto__:null,url:82,"url-prefix":82,domain:82,regexp:82,lang:104,"nth-child":104,"nth-last-child":104,"nth-of-type":104,"nth-last-of-type":104,dir:104,"host-context":104},pe={__proto__:null,"@import":162,"@include":194,"@mixin":200,"@function":200,"@use":204,"@extend":214,"@at-root":218,"@forward":222,"@media":228,"@charset":232,"@namespace":236,"@keyframes":242,"@supports":254,"@if":258,"@else":260,"@for":266,"@each":276,"@while":282,"@debug":286,"@warn":286,"@error":286,"@return":286},me={__proto__:null,layer:166,not:184,only:184,selector:190},Q=l.deserialize({version:14,states:"!$WQ`Q+tOOO#fQ+tOOP#mOpOOOOQ#U'#Ch'#ChO#rQ(pO'#CjOOQ#U'#Ci'#CiO%_Q)QO'#GXO%rQ.jO'#CnO&mQ#dO'#D]O'dQ(pO'#CgO'kQ)OO'#D_O'vQ#dO'#DfO'{Q#dO'#DiO(QQ#dO'#DqOOQ#U'#GX'#GXO(VQ(pO'#GXO(^Q(nO'#DuO%rQ.jO'#D}O%rQ.jO'#E`O%rQ.jO'#EcO%rQ.jO'#EeO(cQ)OO'#EjO)TQ)OO'#ElO%rQ.jO'#EnO)bQ)OO'#EqO%rQ.jO'#EsO)|Q)OO'#EuO*XQ)OO'#ExO*aQ)OO'#FOO*uQ)OO'#FbOOQ&Z'#GW'#GWOOQ&Y'#Fe'#FeO+PQ(nO'#FeQ`Q+tOOO%rQ.jO'#FQO+[Q(nO'#FUO+aQ)OO'#FZO%rQ.jO'#F^O%rQ.jO'#F`OOQ&Z'#Fm'#FmO+iQ+uO'#GaO+vQ(oO'#GaQOQ#SOOP,XO#SO'#GVPOOO)CAz)CAzOOQ#U'#Cm'#CmOOQ#U,59W,59WOOQ#i'#Cp'#CpO%rQ.jO'#CsO,xQ.wO'#CuO/dQ.^O,59YO%rQ.jO'#CzOOQ#S'#DP'#DPO/uQ(nO'#DUO/zQ)OO'#DZOOQ#i'#GZ'#GZO0SQ(nO'#DOOOQ#U'#D^'#D^OOQ#U,59w,59wO&mQ#dO,59wO0XQ)OO,59yO'vQ#dO,5:QO'{Q#dO,5:TO(cQ)OO,5:WO(cQ)OO,5:YO(cQ)OO,5:ZO(cQ)OO'#FlO0dQ(nO,59RO0oQ+tO'#DsO0vQ#TO'#DsOOQ&Z,59R,59ROOQ#U'#Da'#DaOOQ#S'#Dd'#DdOOQ#U,59y,59yO0{Q(nO,59yO1QQ(nO,59yOOQ#U'#Dh'#DhOOQ#U,5:Q,5:QOOQ#S'#Dj'#DjO1VQ9`O,5:TOOQ#U'#Dr'#DrOOQ#U,5:],5:]O2YQ.jO,5:aO2dQ.jO,5:iO3`Q.jO,5:zO3mQ.YO,5:}O4OQ.jO,5;POOQ#U'#Cj'#CjO4wQ(pO,5;UO5UQ(pO,5;WOOQ&Z,5;W,5;WO5]Q)OO,5;WO5bQ.jO,5;YOOQ#S'#ET'#ETO6TQ.jO'#E]O6kQ(nO'#GcO*aQ)OO'#EZO7PQ(nO'#E^OOQ#S'#Gd'#GdO0gQ(nO,5;]O4UQ.YO,5;_OOQ#d'#Ew'#EwO+PQ(nO,5;aO7UQ)OO,5;aOOQ#S'#Ez'#EzO7^Q(nO,5;dO7cQ(nO,5;jO7nQ(nO,5;|OOQ&Z'#Gf'#GfOOQ&Y,5VQ9`O1G/oO>pQ(pO1G/rO?dQ(pO1G/tO@WQ(pO1G/uO@zQ(pO,5aAN>aO!6QQ(pO,5_Ow!bi!a!bi!d!bi!h!bi$p!bi$t!bi!o!bi$v!bif!bie!bi~P>_Ow!ci!a!ci!d!ci!h!ci$p!ci$t!ci!o!ci$v!cif!cie!ci~P>_Ow$`a!h$`a$t$`a~P4]O!p%|O~O$o%TP~P`Oe%RP~P(cOe%QP~P%rOS!XOTVO_!XOc!XOf!QOh!XOo!TOy!VO|!WO$q!UO$r!PO%O!RO~Oe&VOj&TO~PAsOl#sOm#sOq#tOw&XO!l&ZO!m&ZO!n&ZO!o!ii$t!ii$v!ii$m!ii!p!ii$o!ii~P%rOf&[OT!tXc!tX!o!tX#O!tX#R!tX$s!tX$t!tX$v!tX~O$n$_OS%YXT%YXW%YXX%YX_%YXc%YXq%YXu%YX|%YX!S%YX!Z%YX!r%YX!s%YX#T%YX#W%YX#Y%YX#_%YX#a%YX#c%YX#f%YX#h%YX#j%YX#m%YX#s%YX#u%YX#y%YX$O%YX$R%YX$T%YX$m%YX$r%YX$|%YX%S%YX!p%YX!o%YX$t%YX$o%YX~O$r!PO$|&aO~O#]&cO~Ou&dO~O!o#`O#d$wO$t#`O$v#`O~O!o%ZP#d%ZP$t%ZP$v%ZP~P%rO$r!PO~OR#rO!|iXeiX~Oe!wXm!wXu!yX!|!yX~Ou&jO!|&kO~Oe&lOm%PO~Ow$fX!h$fX$t$fX!o$fX$v$fX~P*aOw%QO!h%Va$t%Va!o%Va$v%Va~Om%POw!}a!h!}a$t!}a!o!}a$v!}ae!}a~O!p&xO$r&sO%O&rO~O#v&zOS#tiT#tiW#tiX#ti_#tic#tiq#tiu#ti|#ti!S#ti!Z#ti!r#ti!s#ti#T#ti#W#ti#Y#ti#_#ti#a#ti#c#ti#f#ti#h#ti#j#ti#m#ti#s#ti#u#ti#y#ti$O#ti$R#ti$T#ti$m#ti$r#ti$|#ti%S#ti!p#ti!o#ti$t#ti$o#ti~Oc&|Ow$lX$P$lX~Ow%`O$P%[a~O!o#kO$t#kO$m%Ti!p%Ti$o%Ti~O!o$da$m$da$t$da!p$da$o$da~P`Oq#tOPkiQkilkimkiTkickifki!oki!uki#Oki#Rki$ski$tki$vki!hki#Uki#Zki#]ki#dkiekiSki_kihkijkiokiwkiyki|ki!lki!mki!nki$qki$rki%Oki$mkivki{ki#{ki#|ki!pki$oki~Ol#sOm#sOq#tOP$]aQ$]a~Oe'QO~Ol#sOm#sOq#tOS$YXT$YX_$YXc$YXe$YXf$YXh$YXj$YXo$YXv$YXw$YXy$YX|$YX$q$YX$r$YX%O$YX~Ov'UOw'SOe%PX~P%rOS$}XT$}X_$}Xc$}Xe$}Xf$}Xh$}Xj$}Xl$}Xm$}Xo$}Xq$}Xv$}Xw$}Xy$}X|$}X$q$}X$r$}X%O$}X~Ou'VO~P!%OOe'WO~O$o'YO~Ow'ZOe%RX~P4]Oe']O~Ow'^Oe%QX~P%rOe'`O~Ol#sOm#sOq#tO{'aO~Ou'bOe$}Xl$}Xm$}Xq$}X~Oe'eOj'cO~Ol#sOm#sOq#tOS$cXT$cX_$cXc$cXf$cXh$cXj$cXo$cXw$cXy$cX|$cX!l$cX!m$cX!n$cX!o$cX$q$cX$r$cX$t$cX$v$cX%O$cX$m$cX!p$cX$o$cX~Ow&XO!l'hO!m'hO!n'hO!o!iq$t!iq$v!iq$m!iq!p!iq$o!iq~P%rO$r'iO~O!o#`O#]'nO$t#`O$v#`O~Ou'oO~Ol#sOm#sOq#tOw'qO!o%ZX#d%ZX$t%ZX$v%ZX~O$s'uO~P5oOm%POw$fa!h$fa$t$fa!o$fa$v$fa~Oe'wO~P4]O%O&rOw#pX!h#pX$t#pX~Ow'yO!h!fO$t!gO~O!p'}O$r&sO%O&rO~O#v(POS#tqT#tqW#tqX#tq_#tqc#tqq#tqu#tq|#tq!S#tq!Z#tq!r#tq!s#tq#T#tq#W#tq#Y#tq#_#tq#a#tq#c#tq#f#tq#h#tq#j#tq#m#tq#s#tq#u#tq#y#tq$O#tq$R#tq$T#tq$m#tq$r#tq$|#tq%S#tq!p#tq!o#tq$t#tq$o#tq~O!h!fO#w(QO$t!gO~Ol#sOm#sOq#tO#{(SO#|(SO~Oc(VOe$ZXw$ZX~P=TOw'SOe%Pa~Ol#sOm#sOq#tO{(ZO~Oe$_Xw$_X~P(cOw'ZOe%Ra~Oe$^Xw$^X~P%rOw'^Oe%Qa~Ou'bO~Ol#sOm#sOq#tOS$caT$ca_$cac$caf$cah$caj$cao$caw$cay$ca|$ca!l$ca!m$ca!n$ca!o$ca$q$ca$r$ca$t$ca$v$ca%O$ca$m$ca!p$ca$o$ca~Oe(dOq(bO~Oe(gOm%PO~Ow$hX!o$hX#d$hX$t$hX$v$hX~P%rOw'qO!o%Za#d%Za$t%Za$v%Za~Oe(lO~P%rOe(mO!|(nO~Ov(vOe$Zaw$Za~P%rOu(wO~P!%OOw'SOe%Pi~Ow'SOe%Pi~P%rOe$_aw$_a~P4]Oe$^aw$^a~P%rOl#sOm#sOq#tOw(yOe$bij$bi~Oe(|Oq(bO~Oe)OOm%PO~Ol#sOm#sOq#tOw$ha!o$ha#d$ha$t$ha$v$ha~OS$}Oh$}Oj$}Oy!VO$q!UO$s'uO%O&rO~O#w(QO~Ow'SOe%Pq~Oe)WO~Oe$Zqw$Zq~P%rO%Oql!dl~",goto:"=Y%]PPPPPPPPPPP%^%h%h%{P%h&`&cP(UPP)ZP*YP)ZPP)ZP)ZP+f,j-lPPP-xPPPP)Z/S%h/W%hP/^P/d/j/p%hP/v%h/|P%hP%h%hP%h0S0VP1k1}2XPPPPP%^PP2_P2b'w'w2h'w'wP'wP'w'wP%^PP%^P%^PP2qP%^P%^P%^PP%^P%^P%^P2w%^P2z2}3Q3X%^P%^PPP%^PPPP%^PP%^P%^P%^P3^3d3j4Y4h4n4t4z5Q5W5d5j5p5z6Q6W6b6h6n6t6zPPPPPPPPPPPP7Q7T7aP8WP:_:b:eP:h:q:w;T;p;y=S=VanOPqx!f#l$_%fs^OPefqx!a!b!c!d!f#l$_$`%T%f'ZsTOPefqx!a!b!c!d!f#l$_$`%T%f'ZR!OUb^ef!a!b!c!d$`%T'Z`_OPqx!f#l$_%f!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)Ug#Uhlm!u#Q#S$i%P%Q&d'o!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UQ&b$pR&i$x!y!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)U!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UU$}#Q&k(nU&u%Y&w'yR'x&t!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UV$}#Q&k(n#P!YVabcdgiruv!Q!T!t#Q#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j&k'S'V'^'b'q't(Q(S(U(Y(^(n(w)UQ$P!YQ&_$lQ&`$oR(e'n!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UQ#YjU$}#Q&k(nR%X#ZT#{!W#|Q![WR$Q!]Q!kYR$R!^Q$R!mR%y$TQ!lYR$S!^Q$R!lR%y$SQ!oZR$U!_Q!q[R$V!`R!s]Q!hXQ!|fQ$]!eQ$f!tQ$k!vQ$m!wQ$r!{Q%U#VQ%[#^Q%]#_Q%^#cQ%c#gQ'l&_Q'{&vQ(R&zQ(T'OQ(q'zQ(s(PQ)P(gQ)S(tQ)T(uR)V)OSpOqUyP!f$_Q#jxQ%g#lR'P%fa`OPqx!f#l$_%fQ$f!tR(a'bR$i!uQ'j&[R(z(bQ${#QQ'v&kR)R(nQ&b$pR's&iR#ZjR#]kR%Z#]S&v%Y&wR(o'yV&t%Y&w'yQ#o{R%i#oQqOR#bqQ%v$OQ&Q$a^'R%v&Q't(U(Y(^)UQ't&jQ(U'SQ(Y'VQ(^'^R)U(wQ'T%vU(W'T(X(xQ(X'UR(x(YQ#|!WR%s#|Q#v!SR%o#vQ'_&QR(_'_Q'[&OR(]'[Q!eXR$[!eUxP!f$_S#ix%fR%f#lQ&U$dR'd&UQ&Y$eR'g&YQ#myQ%e#jT%h#m%eQ(c'jR({(cQ%R#RR&o%RQ$u#OS&e$u(jR(j'sQ'r&gR(i'rQ&w%YR'|&wQ'z&vR(p'zQ&y%^R(O&yQ%a#eR&}%aR|QSoOq]wPx!f#l$_%f`XOPqx!f#l$_%fQ!zeQ!{fQ$W!aQ$X!bQ$Y!cQ$Z!dQ&O$`Q&p%TR(['ZQ!SVQ!uaQ!vbQ!wcQ!xdQ#OgQ#WiQ#crQ#guQ#hvS#q!Q$dQ#x!TQ$e!tQ%l#sQ%m#tQ%n#ul%u$O$a%v&Q&j'S'V'^'t(U(Y(^(w)UQ&S$cS&W$e&YQ&g$wQ&{%_Q'O%bQ'X%{Q'f&XQ(`'bQ(h'qQ(t(QR(u(SR%x$OR&R$aR&P$`QzPQ$^!fR%}$_X#ly#j#m%eQ#VhQ#_mQ$h!uR&^$iW#Rhm!u$iQ#^lQ$|#QQ%S#SQ&m%PQ&n%QQ'p&dR(f'oQ%O#QQ'v&kR)R(nQ#apQ$k!vQ$n!xQ$q!zQ$v#OQ%V#WQ%W#YQ%]#_Q%d#hQ&]$hQ&f$uQ&q%XQ'k&^Q'l&_S'm&`&bQ(k'sQ(}(eR)Q(jR&h$wR#ft",nodeNames:`⚠ InterpolationEnd InterpolationContinue Unit VariableName InterpolationStart LineComment Comment IndentedMixin IndentedInclude StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector SuffixedSelector Suffix Interpolation SassVariableName ValueName ) ( ParenthesizedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp LogicOp UnaryExpression LogicOp NamespacedValue . CallExpression Callee ArgList : ... , CallLiteral CallTag ParenthesizedContent ] [ LineNames LineName ClassSelector ClassName PseudoClassSelector :: PseudoClassName PseudoClassName ArgList PseudoClassName ArgList IdSelector # IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp PlaceholderSelector ClassName Block { Declaration PropertyName Map Important Global Default ; } ImportStatement AtKeyword import Layer layer LayerName KeywordQuery FeatureQuery FeatureName BinaryQuery ComparisonQuery CompareOp UnaryQuery LogicOp ParenthesizedQuery SelectorQuery selector IncludeStatement include Keyword MixinStatement mixin UseStatement use Keyword Star Keyword ExtendStatement extend RootStatement at-root ForwardStatement forward Keyword MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports IfStatement ControlKeyword ControlKeyword Keyword ForStatement ControlKeyword Keyword Keyword Keyword EachStatement ControlKeyword Keyword WhileStatement ControlKeyword OutputStatement ControlKeyword AtRule Styles`,maxTerm:196,context:le,nodeProps:[[`openedBy`,1,`InterpolationStart`,5,`InterpolationEnd`,21,`(`,43,`[`,78,`{`],[`isolate`,-3,6,7,26,``],[`closedBy`,22,`)`,44,`]`,70,`}`]],propSources:[ue],skippedNodes:[0,6,7,146],repeatNodeCount:21,tokenData:"!$Q~RyOq#rqr$jrs0jst2^tu8{uv;hvw;{wx<^xy={yz>^z{>c{|>||}Co}!ODQ!O!PDo!P!QFY!Q![Fk![!]Gf!]!^Hb!^!_Hs!_!`Is!`!aJ^!a!b#r!b!cKa!c!}#r!}#OMn#O#P#r#P#QNP#Q#RNb#R#T#r#T#UNw#U#c#r#c#d!!Y#d#o#r#o#p!!o#p#qNb#q#r!#Q#r#s!#c#s;'S#r;'S;=`!#z<%lO#rW#uSOy$Rz;'S$R;'S;=`$d<%lO$RW$WSzWOy$Rz;'S$R;'S;=`$d<%lO$RW$gP;=`<%l$RY$m[Oy$Rz!_$R!_!`%c!`#W$R#W#X%v#X#Z$R#Z#[)Z#[#]$R#]#^,V#^;'S$R;'S;=`$d<%lO$RY%jSzWlQOy$Rz;'S$R;'S;=`$d<%lO$RY%{UzWOy$Rz#X$R#X#Y&_#Y;'S$R;'S;=`$d<%lO$RY&dUzWOy$Rz#Y$R#Y#Z&v#Z;'S$R;'S;=`$d<%lO$RY&{UzWOy$Rz#T$R#T#U'_#U;'S$R;'S;=`$d<%lO$RY'dUzWOy$Rz#i$R#i#j'v#j;'S$R;'S;=`$d<%lO$RY'{UzWOy$Rz#`$R#`#a(_#a;'S$R;'S;=`$d<%lO$RY(dUzWOy$Rz#h$R#h#i(v#i;'S$R;'S;=`$d<%lO$RY(}S!nQzWOy$Rz;'S$R;'S;=`$d<%lO$RY)`UzWOy$Rz#`$R#`#a)r#a;'S$R;'S;=`$d<%lO$RY)wUzWOy$Rz#c$R#c#d*Z#d;'S$R;'S;=`$d<%lO$RY*`UzWOy$Rz#U$R#U#V*r#V;'S$R;'S;=`$d<%lO$RY*wUzWOy$Rz#T$R#T#U+Z#U;'S$R;'S;=`$d<%lO$RY+`UzWOy$Rz#`$R#`#a+r#a;'S$R;'S;=`$d<%lO$RY+yS!mQzWOy$Rz;'S$R;'S;=`$d<%lO$RY,[UzWOy$Rz#a$R#a#b,n#b;'S$R;'S;=`$d<%lO$RY,sUzWOy$Rz#d$R#d#e-V#e;'S$R;'S;=`$d<%lO$RY-[UzWOy$Rz#c$R#c#d-n#d;'S$R;'S;=`$d<%lO$RY-sUzWOy$Rz#f$R#f#g.V#g;'S$R;'S;=`$d<%lO$RY.[UzWOy$Rz#h$R#h#i.n#i;'S$R;'S;=`$d<%lO$RY.sUzWOy$Rz#T$R#T#U/V#U;'S$R;'S;=`$d<%lO$RY/[UzWOy$Rz#b$R#b#c/n#c;'S$R;'S;=`$d<%lO$RY/sUzWOy$Rz#h$R#h#i0V#i;'S$R;'S;=`$d<%lO$RY0^S!lQzWOy$Rz;'S$R;'S;=`$d<%lO$R~0mWOY0jZr0jrs1Vs#O0j#O#P1[#P;'S0j;'S;=`2W<%lO0j~1[Oj~~1_RO;'S0j;'S;=`1h;=`O0j~1kXOY0jZr0jrs1Vs#O0j#O#P1[#P;'S0j;'S;=`2W;=`<%l0j<%lO0j~2ZP;=`<%l0jZ2cY!ZPOy$Rz!Q$R!Q![3R![!c$R!c!i3R!i#T$R#T#Z3R#Z;'S$R;'S;=`$d<%lO$RY3WYzWOy$Rz!Q$R!Q![3v![!c$R!c!i3v!i#T$R#T#Z3v#Z;'S$R;'S;=`$d<%lO$RY3{YzWOy$Rz!Q$R!Q![4k![!c$R!c!i4k!i#T$R#T#Z4k#Z;'S$R;'S;=`$d<%lO$RY4rYhQzWOy$Rz!Q$R!Q![5b![!c$R!c!i5b!i#T$R#T#Z5b#Z;'S$R;'S;=`$d<%lO$RY5iYhQzWOy$Rz!Q$R!Q![6X![!c$R!c!i6X!i#T$R#T#Z6X#Z;'S$R;'S;=`$d<%lO$RY6^YzWOy$Rz!Q$R!Q![6|![!c$R!c!i6|!i#T$R#T#Z6|#Z;'S$R;'S;=`$d<%lO$RY7TYhQzWOy$Rz!Q$R!Q![7s![!c$R!c!i7s!i#T$R#T#Z7s#Z;'S$R;'S;=`$d<%lO$RY7xYzWOy$Rz!Q$R!Q![8h![!c$R!c!i8h!i#T$R#T#Z8h#Z;'S$R;'S;=`$d<%lO$RY8oShQzWOy$Rz;'S$R;'S;=`$d<%lO$R_9O`Oy$Rz}$R}!O:Q!O!Q$R!Q![:Q![!_$R!_!`;T!`!c$R!c!}:Q!}#R$R#R#S:Q#S#T$R#T#o:Q#o;'S$R;'S;=`$d<%lO$RZ:X^zWcROy$Rz}$R}!O:Q!O!Q$R!Q![:Q![!c$R!c!}:Q!}#R$R#R#S:Q#S#T$R#T#o:Q#o;'S$R;'S;=`$d<%lO$R[;[S!_SzWOy$Rz;'S$R;'S;=`$d<%lO$RZ;oS%SPlQOy$Rz;'S$R;'S;=`$d<%lO$RZQSfROy$Rz;'S$R;'S;=`$d<%lO$R~>cOe~_>jU$|PlQOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RZ?TWlQ!dPOy$Rz!O$R!O!P?m!P!Q$R!Q![Br![;'S$R;'S;=`$d<%lO$RZ?rUzWOy$Rz!Q$R!Q![@U![;'S$R;'S;=`$d<%lO$RZ@]YzW%OROy$Rz!Q$R!Q![@U![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RZAQYzWOy$Rz{$R{|Ap|}$R}!OAp!O!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZAuUzWOy$Rz!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZB`UzW%OROy$Rz!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZBy[zW%OROy$Rz!O$R!O!P@U!P!Q$R!Q![Br![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RZCtSwROy$Rz;'S$R;'S;=`$d<%lO$RZDVWlQOy$Rz!O$R!O!P?m!P!Q$R!Q![Br![;'S$R;'S;=`$d<%lO$RZDtWqROy$Rz!O$R!O!PE^!P!Q$R!Q![@U![;'S$R;'S;=`$d<%lO$RYEcUzWOy$Rz!O$R!O!PEu!P;'S$R;'S;=`$d<%lO$RYE|SvQzWOy$Rz;'S$R;'S;=`$d<%lO$RYF_SlQOy$Rz;'S$R;'S;=`$d<%lO$RZFp[%OROy$Rz!O$R!O!P@U!P!Q$R!Q![Br![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RkGkUucOy$Rz![$R![!]G}!];'S$R;'S;=`$d<%lO$RXHUS!SPzWOy$Rz;'S$R;'S;=`$d<%lO$RZHgS!oROy$Rz;'S$R;'S;=`$d<%lO$RjHzU!|`lQOy$Rz!_$R!_!`I^!`;'S$R;'S;=`$d<%lO$RjIgS!|`zWlQOy$Rz;'S$R;'S;=`$d<%lO$RnIzU!|`!_SOy$Rz!_$R!_!`%c!`;'S$R;'S;=`$d<%lO$RkJgV!aP!|`lQOy$Rz!_$R!_!`I^!`!aJ|!a;'S$R;'S;=`$d<%lO$RXKTS!aPzWOy$Rz;'S$R;'S;=`$d<%lO$RXKdYOy$Rz}$R}!OLS!O!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RXLXWzWOy$Rz!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RXLx[!rPzWOy$Rz}$R}!OLq!O!Q$R!Q![Lq![!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RZMsS|ROy$Rz;'S$R;'S;=`$d<%lO$R_NUS{VOy$Rz;'S$R;'S;=`$d<%lO$R[NeUOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RkNzUOy$Rz#b$R#b#c! ^#c;'S$R;'S;=`$d<%lO$Rk! cUzWOy$Rz#W$R#W#X! u#X;'S$R;'S;=`$d<%lO$Rk! |SmczWOy$Rz;'S$R;'S;=`$d<%lO$Rk!!]UOy$Rz#f$R#f#g! u#g;'S$R;'S;=`$d<%lO$RZ!!tS!hROy$Rz;'S$R;'S;=`$d<%lO$RZ!#VS!pROy$Rz;'S$R;'S;=`$d<%lO$R]!#hU!dPOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RW!#}P;=`<%l#r",tokenizers:[ie,se,oe,ce,ae,J,Y,X,0,1,2,3,4],topRules:{StyleSheet:[0,10],Styles:[1,145]},dialects:{indented:0},specialized:[{term:172,get:e=>de[e]||-1},{term:171,get:e=>fe[e]||-1},{term:80,get:e=>pe[e]||-1},{term:173,get:e=>me[e]||-1}],tokenPrec:3217}),$=a.define({name:`sass`,parser:Q.configure({props:[s.add({Block:n,Comment(e,t){return{from:e.from+2,to:t.sliceDoc(e.to-2,e.to)==`*/`?e.to-2:e.to}}}),r.add({Declaration:i()})]}),languageData:{commentTokens:{block:{open:`/*`,close:`*/`},line:`//`},indentOnInput:/^\s*\}$/,wordChars:`$-`}}),he=$.configure({dialect:`indented`,props:[r.add({"Block RuleSet":e=>e.baseIndent+e.unit}),s.add({Block:e=>({from:e.from,to:e.to})})]}),ge=d(e=>e.name==`VariableName`||e.name==`SassVariableName`);function _e(e){return new o(e?.indented?he:$,$.data.of({autocomplete:ge}))}export{_e as sass}; \ No newline at end of file diff --git a/ksadk/server/static/assets/dist-ClxGviKw.js b/ksadk/server/static/assets/dist-4j-rswH6.js similarity index 97% rename from ksadk/server/static/assets/dist-ClxGviKw.js rename to ksadk/server/static/assets/dist-4j-rswH6.js index bc33c611..96489e8b 100644 --- a/ksadk/server/static/assets/dist-ClxGviKw.js +++ b/ksadk/server/static/assets/dist-4j-rswH6.js @@ -1 +1 @@ -import{D as e,E as t,_ as n,b as r,h as i,s as a,u as o,v as s}from"./index-8ipRcQ-M.js";import{r as c}from"./dist-C_wsv-Qd.js";var l={__proto__:null,anyref:34,dataref:34,eqref:34,externref:34,i31ref:34,funcref:34,i8:34,i16:34,i32:34,i64:34,f32:34,f64:34},u=c.deserialize({version:14,states:`!^Q]QPOOOqQPO'#CbOOQO'#Cd'#CdOOQO'#Cl'#ClOOQO'#Ch'#ChQ]QPOOOOQO,58|,58|OxQPO,58|OOQO-E6f-E6fOOQO1G.h1G.h`,stateData:`!P~O_OSPOSQOS~OTPOVROXROYROZROaQO~OSUO~P]OSXO~P]O`,goto:`xaPPPPPPbPbPPPhPPPrXROPTVQTOQVPTWTVXSOPTV`,nodeNames:`⚠ LineComment BlockComment Module ) ( App Identifier Type Keyword Number String`,maxTerm:17,nodeProps:[[`isolate`,-3,1,2,11,``],[`openedBy`,4,`(`],[`closedBy`,5,`)`],[`group`,-6,6,7,8,9,10,11,`Expression`]],skippedNodes:[0,1,2],repeatNodeCount:1,tokenData:"0o~R^XY}YZ}]^}pq}rs!Stu#pxy'Uyz(e{|(j}!O(j!Q!R(s!R![*p!]!^.^#T#o.{~!SO_~~!VVOr!Srs!ls#O!S#O#P!q#P;'S!S;'S;=`#j<%lO!S~!qOZ~~!tRO;'S!S;'S;=`!};=`O!S~#QWOr!Srs!ls#O!S#O#P!q#P;'S!S;'S;=`#j;=`<%l!S<%lO!S~#mP;=`<%l!S~#siqr%bst%btu%buv%bvw%bwx%bz{%b{|%b}!O%b!O!P%b!P!Q%b!Q![%b![!]%b!^!_%b!_!`%b!`!a%b!a!b%b!b!c%b!c!}%b#Q#R%b#R#S%b#S#T%b#T#o%b#p#q%b#r#s%b~%giV~qr%bst%btu%buv%bvw%bwx%bz{%b{|%b}!O%b!O!P%b!P!Q%b!Q![%b![!]%b!^!_%b!_!`%b!`!a%b!a!b%b!b!c%b!c!}%b#Q#R%b#R#S%b#S#T%b#T#o%b#p#q%b#r#s%b~'ZPT~!]!^'^~'aTO!]'^!]!^'p!^;'S'^;'S;=`(_<%lO'^~'sVOy'^yz(Yz!]'^!]!^'p!^;'S'^;'S;=`(_<%lO'^~(_OQ~~(bP;=`<%l'^~(jOS~~(mQ!Q!R(s!R![*p~(xUY~!O!P)[!Q![*p!g!h){#R#S+U#X#Y){#l#m+[~)aRY~!Q![)j!g!h){#X#Y){~)oSY~!Q![)j!g!h){#R#S*j#X#Y){~*OR{|*X}!O*X!Q![*_~*[P!Q![*_~*dQY~!Q![*_#R#S*X~*mP!Q![)j~*uTY~!O!P)[!Q![*p!g!h){#R#S+U#X#Y){~+XP!Q![*p~+_R!Q![+h!c!i+h#T#Z+h~+mVY~!O!P,S!Q![+h!c!i+h!r!s-P#R#S+[#T#Z+h#d#e-P~,XTY~!Q![,h!c!i,h!r!s-P#T#Z,h#d#e-P~,mUY~!Q![,h!c!i,h!r!s-P#R#S.Q#T#Z,h#d#e-P~-ST{|-c}!O-c!Q![-o!c!i-o#T#Z-o~-fR!Q![-o!c!i-o#T#Z-o~-tSY~!Q![-o!c!i-o#R#S-c#T#Z-o~.TR!Q![,h!c!i,h#T#Z,h~.aP!]!^.d~.iSP~OY.dZ;'S.d;'S;=`.u<%lO.d~.xP;=`<%l.d~/QiX~qr.{st.{tu.{uv.{vw.{wx.{z{.{{|.{}!O.{!O!P.{!P!Q.{!Q![.{![!].{!^!_.{!_!`.{!`!a.{!a!b.{!b!c.{!c!}.{#Q#R.{#R#S.{#S#T.{#T#o.{#p#q.{#r#s.{",tokenizers:[0],topRules:{Module:[0,3]},specialized:[{term:9,get:e=>l[e]||-1}],tokenPrec:0}),d=a.define({name:`wast`,parser:u.configure({props:[r.add({App:i({closing:`)`,align:!1})}),s.add({App:n,BlockComment(e){return{from:e.from+2,to:e.to-2}}}),t({Keyword:e.keyword,Type:e.typeName,Number:e.number,String:e.string,Identifier:e.variableName,LineComment:e.lineComment,BlockComment:e.blockComment,"( )":e.paren})]}),languageData:{commentTokens:{line:`;;`,block:{open:`(;`,close:`;)`}},closeBrackets:{brackets:[`(`,`"`]}}});function f(){return new o(d)}export{f as wast}; \ No newline at end of file +import{D as e,E as t,_ as n,b as r,h as i,s as a,u as o,v as s}from"./index-BkDx9KsG.js";import{r as c}from"./dist-DeO3Qj-D.js";var l={__proto__:null,anyref:34,dataref:34,eqref:34,externref:34,i31ref:34,funcref:34,i8:34,i16:34,i32:34,i64:34,f32:34,f64:34},u=c.deserialize({version:14,states:`!^Q]QPOOOqQPO'#CbOOQO'#Cd'#CdOOQO'#Cl'#ClOOQO'#Ch'#ChQ]QPOOOOQO,58|,58|OxQPO,58|OOQO-E6f-E6fOOQO1G.h1G.h`,stateData:`!P~O_OSPOSQOS~OTPOVROXROYROZROaQO~OSUO~P]OSXO~P]O`,goto:`xaPPPPPPbPbPPPhPPPrXROPTVQTOQVPTWTVXSOPTV`,nodeNames:`⚠ LineComment BlockComment Module ) ( App Identifier Type Keyword Number String`,maxTerm:17,nodeProps:[[`isolate`,-3,1,2,11,``],[`openedBy`,4,`(`],[`closedBy`,5,`)`],[`group`,-6,6,7,8,9,10,11,`Expression`]],skippedNodes:[0,1,2],repeatNodeCount:1,tokenData:"0o~R^XY}YZ}]^}pq}rs!Stu#pxy'Uyz(e{|(j}!O(j!Q!R(s!R![*p!]!^.^#T#o.{~!SO_~~!VVOr!Srs!ls#O!S#O#P!q#P;'S!S;'S;=`#j<%lO!S~!qOZ~~!tRO;'S!S;'S;=`!};=`O!S~#QWOr!Srs!ls#O!S#O#P!q#P;'S!S;'S;=`#j;=`<%l!S<%lO!S~#mP;=`<%l!S~#siqr%bst%btu%buv%bvw%bwx%bz{%b{|%b}!O%b!O!P%b!P!Q%b!Q![%b![!]%b!^!_%b!_!`%b!`!a%b!a!b%b!b!c%b!c!}%b#Q#R%b#R#S%b#S#T%b#T#o%b#p#q%b#r#s%b~%giV~qr%bst%btu%buv%bvw%bwx%bz{%b{|%b}!O%b!O!P%b!P!Q%b!Q![%b![!]%b!^!_%b!_!`%b!`!a%b!a!b%b!b!c%b!c!}%b#Q#R%b#R#S%b#S#T%b#T#o%b#p#q%b#r#s%b~'ZPT~!]!^'^~'aTO!]'^!]!^'p!^;'S'^;'S;=`(_<%lO'^~'sVOy'^yz(Yz!]'^!]!^'p!^;'S'^;'S;=`(_<%lO'^~(_OQ~~(bP;=`<%l'^~(jOS~~(mQ!Q!R(s!R![*p~(xUY~!O!P)[!Q![*p!g!h){#R#S+U#X#Y){#l#m+[~)aRY~!Q![)j!g!h){#X#Y){~)oSY~!Q![)j!g!h){#R#S*j#X#Y){~*OR{|*X}!O*X!Q![*_~*[P!Q![*_~*dQY~!Q![*_#R#S*X~*mP!Q![)j~*uTY~!O!P)[!Q![*p!g!h){#R#S+U#X#Y){~+XP!Q![*p~+_R!Q![+h!c!i+h#T#Z+h~+mVY~!O!P,S!Q![+h!c!i+h!r!s-P#R#S+[#T#Z+h#d#e-P~,XTY~!Q![,h!c!i,h!r!s-P#T#Z,h#d#e-P~,mUY~!Q![,h!c!i,h!r!s-P#R#S.Q#T#Z,h#d#e-P~-ST{|-c}!O-c!Q![-o!c!i-o#T#Z-o~-fR!Q![-o!c!i-o#T#Z-o~-tSY~!Q![-o!c!i-o#R#S-c#T#Z-o~.TR!Q![,h!c!i,h#T#Z,h~.aP!]!^.d~.iSP~OY.dZ;'S.d;'S;=`.u<%lO.d~.xP;=`<%l.d~/QiX~qr.{st.{tu.{uv.{vw.{wx.{z{.{{|.{}!O.{!O!P.{!P!Q.{!Q![.{![!].{!^!_.{!_!`.{!`!a.{!a!b.{!b!c.{!c!}.{#Q#R.{#R#S.{#S#T.{#T#o.{#p#q.{#r#s.{",tokenizers:[0],topRules:{Module:[0,3]},specialized:[{term:9,get:e=>l[e]||-1}],tokenPrec:0}),d=a.define({name:`wast`,parser:u.configure({props:[r.add({App:i({closing:`)`,align:!1})}),s.add({App:n,BlockComment(e){return{from:e.from+2,to:e.to-2}}}),t({Keyword:e.keyword,Type:e.typeName,Number:e.number,String:e.string,Identifier:e.variableName,LineComment:e.lineComment,BlockComment:e.blockComment,"( )":e.paren})]}),languageData:{commentTokens:{line:`;;`,block:{open:`(;`,close:`;)`}},closeBrackets:{brackets:[`(`,`"`]}}});function f(){return new o(d)}export{f as wast}; \ No newline at end of file diff --git a/ksadk/server/static/assets/dist-B7seoj3d.js b/ksadk/server/static/assets/dist-B-VEMnGR.js similarity index 99% rename from ksadk/server/static/assets/dist-B7seoj3d.js rename to ksadk/server/static/assets/dist-B-VEMnGR.js index 5ff31e6a..ed0367e7 100644 --- a/ksadk/server/static/assets/dist-B7seoj3d.js +++ b/ksadk/server/static/assets/dist-B-VEMnGR.js @@ -1 +1 @@ -import{D as e,E as t,N as n,_ as r,b as i,k as a,p as o,s,u as c,v as l,w as ee,wt as u}from"./index-8ipRcQ-M.js";import{i as d,n as f,r as p}from"./dist-C_wsv-Qd.js";var m=135,h=1,te=136,ne=137,g=2,_=138,v=3,re=4,y=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],b=58,ie=40,x=95,ae=91,S=45,oe=46,se=35,C=37,w=38,T=92,E=10,D=42;function O(e){return e>=65&&e<=90||e>=97&&e<=122||e>=161}function k(e){return e>=48&&e<=57}function A(e){return k(e)||e>=97&&e<=102||e>=65&&e<=70}var j=(e,t,n)=>(r,i)=>{for(let a=!1,o=0,s=0;;s++){let{next:c}=r;if(O(c)||c==S||c==x||a&&k(c))!a&&(c!=S||s>0)&&(a=!0),o===s&&c==S&&o++,r.advance();else if(c==T&&r.peek(1)!=E){if(r.advance(),A(r.next)){do r.advance();while(A(r.next));r.next==32&&r.advance()}else r.next>-1&&r.advance();a=!0}else{a&&r.acceptToken(o==2&&i.canShift(g)?t:c==ie?n:e);break}}},M=new f(j(te,g,ne),{contextual:!0}),N=new f(j(_,v,re),{contextual:!0}),P=new f(e=>{if(y.includes(e.peek(-1))){let{next:t}=e;(O(t)||t==x||t==se||t==oe||t==D||t==ae||t==b&&O(e.peek(1))||t==S||t==w)&&e.acceptToken(m)}}),F=new f(e=>{if(!y.includes(e.peek(-1))){let{next:t}=e;if(t==C&&(e.advance(),e.acceptToken(h)),O(t)){do e.advance();while(O(e.next)||k(e.next));e.acceptToken(h)}}}),I=t({"AtKeyword import charset namespace keyframes media supports font-feature-values":e.definitionKeyword,"from to selector scope MatchFlag":e.keyword,NamespaceName:e.namespace,KeyframeName:e.labelName,KeyframeRangeName:e.operatorKeyword,TagName:e.tagName,ClassName:e.className,PseudoClassName:e.constant(e.className),IdName:e.labelName,"FeatureName PropertyName":e.propertyName,AttributeName:e.attributeName,NumberLiteral:e.number,KeywordQuery:e.keyword,UnaryQueryOp:e.operatorKeyword,"CallTag ValueName FontName":e.atom,VariableName:e.variableName,Callee:e.operatorKeyword,Unit:e.unit,"UniversalSelector NestingSelector":e.definitionOperator,"MatchOp CompareOp":e.compareOperator,"ChildOp SiblingOp, LogicOp":e.logicOperator,BinOp:e.arithmeticOperator,Important:e.modifier,Comment:e.blockComment,ColorLiteral:e.color,"ParenthesizedContent StringLiteral":e.string,":":e.punctuation,"PseudoOp #":e.derefOperator,"; , |":e.separator,"( )":e.paren,"[ ]":e.squareBracket,"{ }":e.brace}),L={__proto__:null,lang:44,"nth-child":44,"nth-last-child":44,"nth-of-type":44,"nth-last-of-type":44,dir:44,"host-context":44,if:90,url:132,"url-prefix":132,domain:132,regexp:132},R={__proto__:null,or:104,and:104,not:112,only:112,layer:186},ce={__proto__:null,selector:118,layer:182},z={__proto__:null,"@import":178,"@media":190,"@charset":194,"@namespace":198,"@keyframes":204,"@supports":216,"@scope":220,"@font-feature-values":226},B={__proto__:null,to:223},V=p.deserialize({version:14,states:"IpQYQdOOO#}QdOOP$UO`OOO%OQaO'#CfOOQP'#Ce'#CeO%VQdO'#CgO%[Q`O'#CgO%aQaO'#FdO&XQdO'#CkO&xQaO'#CcO'SQdO'#CnO'_QdO'#DtO'dQdO'#DvO'oQdO'#D}O'oQdO'#EQOOQP'#Fd'#FdO)OQhO'#EsOOQS'#Fc'#FcOOQS'#Ev'#EvQYQdOOO)VQdO'#EWO*cQhO'#E^O)VQdO'#E`O*jQdO'#EbO*uQdO'#EeO)zQhO'#EkO*}QdO'#EmO+YQdO'#EpO+_QaO'#CfO+fQ`O'#ETO+kQ`O'#FnO+vQdO'#FnQOQ`OOP,QO&jO'#CaPOOO)CAR)CAROOQP'#Ci'#CiOOQP,59R,59RO%VQdO,59ROOQP'#Cm'#CmOOQP,59V,59VO&XQdO,59VO,]QdO,59YO'_QdO,5:`O'dQdO,5:bO'oQdO,5:iO'oQdO,5:kO'oQdO,5:lO'oQdO'#E}O,hQ`O,58}O,pQdO'#ESOOQS,58},58}OOQP'#Cq'#CqOOQO'#Dr'#DrOOQP,59Y,59YO,wQ`O,59YO,|Q`O,59YOOQP'#Du'#DuOOQP,5:`,5:`O-RQpO'#DwO-^QdO'#DxO-cQ`O'#DxO-hQpO,5:bO.RQaO,5:iO.iQaO,5:lOOQW'#D^'#D^O/eQhO'#DgO/xQhO,5;_O)zQhO'#DeO0VQ`O'#DkO0[QhO'#DnOOQW'#Fj'#FjOOQS,5;_,5;_O0aQ`O'#DhOOQS-E8t-E8tOOQ['#Cv'#CvO0fQdO'#CwO0|QdO'#C}O1dQdO'#DQO1zQ!pO'#DSO4TQ!jO,5:rOOQO'#DX'#DXO,|Q`O'#DWO4eQ!nO'#FgO6hQ`O'#DYO6mQ`O'#DoOOQ['#Fg'#FgO6rQhO'#FqO7QQ`O,5:xO7VQ!bO,5:zOOQS'#Ed'#EdO7_Q`O,5:|O7dQdO,5:|OOQO'#Eg'#EgO7lQ`O,5;PO7qQhO,5;VO'oQdO'#DjOOQS,5;X,5;XO0aQ`O,5;XO7yQdO,5;XOOQS'#FU'#FUO8RQdO'#ErO7QQ`O,5;[O8ZQdO,5:oO8kQdO'#FPO8xQ`O,5QQhO'#DlOOQW,5:V,5:VOOQW,5:Y,5:YOOQW,5:S,5:SO>[Q!fO'#FhOOQS'#Fh'#FhOOQS'#Ex'#ExO?lQdO,59cOOQ[,59c,59cO@SQdO,59iOOQ[,59i,59iO@jQdO,59lOOQ[,59l,59lOOQ[,59n,59nO)VQdO,59pOAQQhO'#EYOOQW'#EY'#EYOAlQ`O1G0^O4^QhO1G0^OOQ[,59r,59rO)zQhO'#D[OOQ[,59t,59tOAqQ#tO,5:ZOA|QhO'#FROBZQ`O,5<]OOQS1G0d1G0dOOQS1G0f1G0fOOQS1G0h1G0hOBfQ`O1G0hOBkQdO'#EhOOQS1G0k1G0kOOQS1G0q1G0qOBvQaO,5:UO7QQ`O1G0sOOQS1G0s1G0sO0aQ`O1G0sOOQS-E9S-E9SOOQS1G0v1G0vOB}Q!fO1G0ZOCeQ`O'#EVOOQO1G0Z1G0ZOOQO,5;k,5;kOCjQdO,5;kOOQO-E8}-E8}OCwQ`O1G1tPOOO-E8s-E8sPOOO1G.g1G.gOOQP7+$`7+$`OOQP7+%h7+%hO)VQdO7+%hOOQS1G0Y1G0YODSQaO'#FmOD^Q`O,5:_ODcQ!fO'#EwOEaQdO'#FfOEkQ`O,59aOOQO1G0O1G0OOEpQ!bO7+%hO)VQdO1G/eOE{QhO1G/iOOQW1G/m1G/mOOQW1G/g1G/gOF^QhO,5;qOOQW-E9T-E9TOOQS7+&e7+&eOGRQhO'#D^OGaQhO'#FlOGlQ`O'#FlOGqQ`O,5:WOOQS-E8v-E8vOOQ[1G.}1G.}OOQ[1G/T1G/TOOQ[1G/W1G/WOOQ[1G/[1G/[OGvQdO,5:tOOQS7+%x7+%xOG{Q`O7+%xOHQQhO'#D]OHYQ`O,59vO)zQhO,59vOOQ[1G/u1G/uOHbQ`O1G/uOHgQhO,5;mOOQO-E9P-E9POOQS7+&S7+&SOHuQbO'#DSOOQO'#Ej'#EjOITQ`O'#EiOOQO'#Ei'#EiOI`Q`O'#FSOIhQdO,5;SOOQS,5;S,5;SOOQ[1G/p1G/pOOQS7+&_7+&_O7QQ`O7+&_OIsQ!fO'#FOO)VQdO'#FOOJzQdO7+%uOOQO7+%u7+%uOOQO,5:q,5:qOOQO1G1V1G1VOK_Q!bO<nAN>nO! bQ`OAN>nO! gQaO,5;hOOQO-E8z-E8zO! qQdO,5;gOOQO-E8y-E8yOOQW<ZO)VQdO1G1QO!#nQ`O7+'^OOQO,5;l,5;lOOQO-E9O-E9OOOQW<Q!]!^>|!^!_?_!_!`@Z!`!a@n!a!b%Z!b!cAo!c!k%Z!k!lC|!l!u%Z!u!vC|!v!}%Z!}#OD_#O#P%Z#P#QDp#Q#R2X#R#]%Z#]#^ER#^#g%Z#g#hC|#h#o%Z#o#pIf#p#qIw#q#rJ`#r#sJq#s#y%Z#y#z&R#z$f%Z$f$g&R$g#BY%Z#BY#BZ&R#BZ$IS%Z$IS$I_&R$I_$I|%Z$I|$JO&R$JO$JT%Z$JT$JU&R$JU$KV%Z$KV$KW&R$KW&FU%Z&FU&FV&R&FV;'S%Z;'S;=`KY<%lO%Z`%^SOy%jz;'S%j;'S;=`%{<%lO%j`%oS!e`Oy%jz;'S%j;'S;=`%{<%lO%j`&OP;=`<%l%j~&Wh$Q~OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%j~'yh$Q~!e`OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%jj)jS$dYOy%jz;'S%j;'S;=`%{<%lO%j~)yWOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d<%lO)v~*hOw~~*kRO;'S)v;'S;=`*t;=`O)v~*wXOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d;=`<%l)v<%lO)v~+gP;=`<%l)vj+oYmYOy%jz!Q%j!Q![,_![!c%j!c!i,_!i#T%j#T#Z,_#Z;'S%j;'S;=`%{<%lO%jj,dY!e`Oy%jz!Q%j!Q![-S![!c%j!c!i-S!i#T%j#T#Z-S#Z;'S%j;'S;=`%{<%lO%jj-XY!e`Oy%jz!Q%j!Q![-w![!c%j!c!i-w!i#T%j#T#Z-w#Z;'S%j;'S;=`%{<%lO%jj.OYuY!e`Oy%jz!Q%j!Q![.n![!c%j!c!i.n!i#T%j#T#Z.n#Z;'S%j;'S;=`%{<%lO%jj.uYuY!e`Oy%jz!Q%j!Q![/e![!c%j!c!i/e!i#T%j#T#Z/e#Z;'S%j;'S;=`%{<%lO%jj/jY!e`Oy%jz!Q%j!Q![0Y![!c%j!c!i0Y!i#T%j#T#Z0Y#Z;'S%j;'S;=`%{<%lO%jj0aYuY!e`Oy%jz!Q%j!Q![1P![!c%j!c!i1P!i#T%j#T#Z1P#Z;'S%j;'S;=`%{<%lO%jj1UY!e`Oy%jz!Q%j!Q![1t![!c%j!c!i1t!i#T%j#T#Z1t#Z;'S%j;'S;=`%{<%lO%jj1{SuY!e`Oy%jz;'S%j;'S;=`%{<%lO%jd2[UOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jd2uS!oS!e`Oy%jz;'S%j;'S;=`%{<%lO%jb3WS^QOy%jz;'S%j;'S;=`%{<%lO%j~3gWOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{<%lO3d~4SRO;'S3d;'S;=`4];=`O3d~4`XOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{;=`<%l3d<%lO3d~5OP;=`<%l3dj5WShYOy%jz;'S%j;'S;=`%{<%lO%j~5iOg~n5pUWQyWOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jj6ZWyW!uQOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj6xU!e`Oy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%jj7cY!e`$]YOy%jz!Q%j!Q![7[![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj8WY!e`Oy%jz{%j{|8v|}%j}!O8v!O!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj8{U!e`Oy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj9fU!e`$]YOy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj:P[!e`$]YOy%jz!O%j!O!P7[!P!Q%j!Q![9x![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj:zS!aYOy%jz;'S%j;'S;=`%{<%lO%jj;]WyWOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj;zU`YOy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%j~VUcYOy%jz![%j![!]>i!];'S%j;'S;=`%{<%lO%jj>pSdY!e`Oy%jz;'S%j;'S;=`%{<%lO%jj?RSnYOy%jz;'S%j;'S;=`%{<%lO%jh?dU!WWOy%jz!_%j!_!`?v!`;'S%j;'S;=`%{<%lO%jh?}S!WW!e`Oy%jz;'S%j;'S;=`%{<%lO%jl@bS!WW!oSOy%jz;'S%j;'S;=`%{<%lO%jj@uV!rQ!WWOy%jz!_%j!_!`?v!`!aA[!a;'S%j;'S;=`%{<%lO%jbAcS!rQ!e`Oy%jz;'S%j;'S;=`%{<%lO%jjArYOy%jz}%j}!OBb!O!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjBgW!e`Oy%jz!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjCW[lY!e`Oy%jz}%j}!OCP!O!Q%j!Q![CP![!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jhDRS!pWOy%jz;'S%j;'S;=`%{<%lO%jjDdSpYOy%jz;'S%j;'S;=`%{<%lO%jnDuSo^Oy%jz;'S%j;'S;=`%{<%lO%jjEWU!pWOy%jz#a%j#a#bEj#b;'S%j;'S;=`%{<%lO%jbEoU!e`Oy%jz#d%j#d#eFR#e;'S%j;'S;=`%{<%lO%jbFWU!e`Oy%jz#c%j#c#dFj#d;'S%j;'S;=`%{<%lO%jbFoU!e`Oy%jz#f%j#f#gGR#g;'S%j;'S;=`%{<%lO%jbGWU!e`Oy%jz#h%j#h#iGj#i;'S%j;'S;=`%{<%lO%jbGoU!e`Oy%jz#T%j#T#UHR#U;'S%j;'S;=`%{<%lO%jbHWU!e`Oy%jz#b%j#b#cHj#c;'S%j;'S;=`%{<%lO%jbHoU!e`Oy%jz#h%j#h#iIR#i;'S%j;'S;=`%{<%lO%jbIYS$cQ!e`Oy%jz;'S%j;'S;=`%{<%lO%jjIkSsYOy%jz;'S%j;'S;=`%{<%lO%jfI|U$XUOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jjJeSrYOy%jz;'S%j;'S;=`%{<%lO%jfJvU!uQOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%j`K]P;=`<%l%Z",tokenizers:[P,F,M,N,1,2,3,4,new d(`m~RRYZ[z{a~~g~aO$T~~dP!P!Qg~lO$U~~`,28,142)],topRules:{StyleSheet:[0,6],Styles:[1,116]},dynamicPrecedences:{84:1},specialized:[{term:137,get:e=>L[e]||-1},{term:138,get:e=>R[e]||-1},{term:4,get:e=>ce[e]||-1},{term:28,get:e=>z[e]||-1},{term:136,get:e=>B[e]||-1}],tokenPrec:2256}),H=u({css:()=>$,cssCompletionSource:()=>Z,cssLanguage:()=>Q,defineCSSCompletionSource:()=>X}),U=null;function W(){if(!U&&typeof document==`object`&&document.body){let{style:e}=document.body,t=[],n=new Set;for(let r in e)r!=`cssText`&&r!=`cssFloat`&&typeof e[r]==`string`&&(/[A-Z]/.test(r)&&(r=r.replace(/[A-Z]/g,e=>`-`+e.toLowerCase())),n.has(r)||(t.push(r),n.add(r)));U=t.sort().map(e=>({type:`property`,label:e,apply:e+`: `}))}return U||[]}var G=`active.after.any-link.autofill.backdrop.before.checked.cue.default.defined.disabled.empty.enabled.file-selector-button.first.first-child.first-letter.first-line.first-of-type.focus.focus-visible.focus-within.fullscreen.has.host.host-context.hover.in-range.indeterminate.invalid.is.lang.last-child.last-of-type.left.link.marker.modal.not.nth-child.nth-last-child.nth-last-of-type.nth-of-type.only-child.only-of-type.optional.out-of-range.part.placeholder.placeholder-shown.read-only.read-write.required.right.root.scope.selection.slotted.target.target-text.valid.visited.where`.split(`.`).map(e=>({type:`class`,label:e})),K=`above.absolute.activeborder.additive.activecaption.after-white-space.ahead.alias.all.all-scroll.alphabetic.alternate.always.antialiased.appworkspace.asterisks.attr.auto.auto-flow.avoid.avoid-column.avoid-page.avoid-region.axis-pan.background.backwards.baseline.below.bidi-override.blink.block.block-axis.bold.bolder.border.border-box.both.bottom.break.break-all.break-word.bullets.button.button-bevel.buttonface.buttonhighlight.buttonshadow.buttontext.calc.capitalize.caps-lock-indicator.caption.captiontext.caret.cell.center.checkbox.circle.cjk-decimal.clear.clip.close-quote.col-resize.collapse.color.color-burn.color-dodge.column.column-reverse.compact.condensed.contain.content.contents.content-box.context-menu.continuous.copy.counter.counters.cover.crop.cross.crosshair.currentcolor.cursive.cyclic.darken.dashed.decimal.decimal-leading-zero.default.default-button.dense.destination-atop.destination-in.destination-out.destination-over.difference.disc.discard.disclosure-closed.disclosure-open.document.dot-dash.dot-dot-dash.dotted.double.down.e-resize.ease.ease-in.ease-in-out.ease-out.element.ellipse.ellipsis.embed.end.ethiopic-abegede-gez.ethiopic-halehame-aa-er.ethiopic-halehame-gez.ew-resize.exclusion.expanded.extends.extra-condensed.extra-expanded.fantasy.fast.fill.fill-box.fixed.flat.flex.flex-end.flex-start.footnotes.forwards.from.geometricPrecision.graytext.grid.groove.hand.hard-light.help.hidden.hide.higher.highlight.highlighttext.horizontal.hsl.hsla.hue.icon.ignore.inactiveborder.inactivecaption.inactivecaptiontext.infinite.infobackground.infotext.inherit.initial.inline.inline-axis.inline-block.inline-flex.inline-grid.inline-table.inset.inside.intrinsic.invert.italic.justify.keep-all.landscape.large.larger.left.level.lighter.lighten.line-through.linear.linear-gradient.lines.list-item.listbox.listitem.local.logical.loud.lower.lower-hexadecimal.lower-latin.lower-norwegian.lowercase.ltr.luminosity.manipulation.match.matrix.matrix3d.medium.menu.menutext.message-box.middle.min-intrinsic.mix.monospace.move.multiple.multiple_mask_images.multiply.n-resize.narrower.ne-resize.nesw-resize.no-close-quote.no-drop.no-open-quote.no-repeat.none.normal.not-allowed.nowrap.ns-resize.numbers.numeric.nw-resize.nwse-resize.oblique.opacity.open-quote.optimizeLegibility.optimizeSpeed.outset.outside.outside-shape.overlay.overline.padding.padding-box.painted.page.paused.perspective.pinch-zoom.plus-darker.plus-lighter.pointer.polygon.portrait.pre.pre-line.pre-wrap.preserve-3d.progress.push-button.radial-gradient.radio.read-only.read-write.read-write-plaintext-only.rectangle.region.relative.repeat.repeating-linear-gradient.repeating-radial-gradient.repeat-x.repeat-y.reset.reverse.rgb.rgba.ridge.right.rotate.rotate3d.rotateX.rotateY.rotateZ.round.row.row-resize.row-reverse.rtl.run-in.running.s-resize.sans-serif.saturation.scale.scale3d.scaleX.scaleY.scaleZ.screen.scroll.scrollbar.scroll-position.se-resize.self-start.self-end.semi-condensed.semi-expanded.separate.serif.show.single.skew.skewX.skewY.skip-white-space.slide.slider-horizontal.slider-vertical.sliderthumb-horizontal.sliderthumb-vertical.slow.small.small-caps.small-caption.smaller.soft-light.solid.source-atop.source-in.source-out.source-over.space.space-around.space-between.space-evenly.spell-out.square.start.static.status-bar.stretch.stroke.stroke-box.sub.subpixel-antialiased.svg_masks.super.sw-resize.symbolic.symbols.system-ui.table.table-caption.table-cell.table-column.table-column-group.table-footer-group.table-header-group.table-row.table-row-group.text.text-bottom.text-top.textarea.textfield.thick.thin.threeddarkshadow.threedface.threedhighlight.threedlightshadow.threedshadow.to.top.transform.translate.translate3d.translateX.translateY.translateZ.transparent.ultra-condensed.ultra-expanded.underline.unidirectional-pan.unset.up.upper-latin.uppercase.url.var.vertical.vertical-text.view-box.visible.visibleFill.visiblePainted.visibleStroke.visual.w-resize.wait.wave.wider.window.windowframe.windowtext.words.wrap.wrap-reverse.x-large.x-small.xor.xx-large.xx-small`.split(`.`).map(e=>({type:`keyword`,label:e})).concat(`aliceblue.antiquewhite.aqua.aquamarine.azure.beige.bisque.black.blanchedalmond.blue.blueviolet.brown.burlywood.cadetblue.chartreuse.chocolate.coral.cornflowerblue.cornsilk.crimson.cyan.darkblue.darkcyan.darkgoldenrod.darkgray.darkgreen.darkkhaki.darkmagenta.darkolivegreen.darkorange.darkorchid.darkred.darksalmon.darkseagreen.darkslateblue.darkslategray.darkturquoise.darkviolet.deeppink.deepskyblue.dimgray.dodgerblue.firebrick.floralwhite.forestgreen.fuchsia.gainsboro.ghostwhite.gold.goldenrod.gray.grey.green.greenyellow.honeydew.hotpink.indianred.indigo.ivory.khaki.lavender.lavenderblush.lawngreen.lemonchiffon.lightblue.lightcoral.lightcyan.lightgoldenrodyellow.lightgray.lightgreen.lightpink.lightsalmon.lightseagreen.lightskyblue.lightslategray.lightsteelblue.lightyellow.lime.limegreen.linen.magenta.maroon.mediumaquamarine.mediumblue.mediumorchid.mediumpurple.mediumseagreen.mediumslateblue.mediumspringgreen.mediumturquoise.mediumvioletred.midnightblue.mintcream.mistyrose.moccasin.navajowhite.navy.oldlace.olive.olivedrab.orange.orangered.orchid.palegoldenrod.palegreen.paleturquoise.palevioletred.papayawhip.peachpuff.peru.pink.plum.powderblue.purple.rebeccapurple.red.rosybrown.royalblue.saddlebrown.salmon.sandybrown.seagreen.seashell.sienna.silver.skyblue.slateblue.slategray.snow.springgreen.steelblue.tan.teal.thistle.tomato.turquoise.violet.wheat.white.whitesmoke.yellow.yellowgreen`.split(`.`).map(e=>({type:`constant`,label:e}))),le=`a.abbr.address.article.aside.b.bdi.bdo.blockquote.body.br.button.canvas.caption.cite.code.col.colgroup.dd.del.details.dfn.dialog.div.dl.dt.em.figcaption.figure.footer.form.header.hgroup.h1.h2.h3.h4.h5.h6.hr.html.i.iframe.img.input.ins.kbd.label.legend.li.main.meter.nav.ol.output.p.pre.ruby.section.select.small.source.span.strong.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.tr.u.ul`.split(`.`).map(e=>({type:`type`,label:e})),ue=[`@charset`,`@color-profile`,`@container`,`@counter-style`,`@font-face`,`@font-feature-values`,`@font-palette-values`,`@import`,`@keyframes`,`@layer`,`@media`,`@namespace`,`@page`,`@position-try`,`@property`,`@scope`,`@starting-style`,`@supports`,`@view-transition`].map(e=>({type:`keyword`,label:e})),q=/^(\w[\w-]*|-\w[\w-]*|)$/,de=/^-(-[\w-]*)?$/;function fe(e,t){if((e.name==`(`||e.type.isError)&&(e=e.parent||e),e.name!=`ArgList`)return!1;let n=e.parent?.firstChild;return n?.name==`Callee`?t.sliceString(n.from,n.to)==`var`:!1}var J=new n,pe=[`Declaration`];function me(e){for(let t=e;;){if(t.type.isTop)return t;if(!(t=t.parent))return e}}function Y(e,t,n){if(t.to-t.from>4096){let r=J.get(t);if(r)return r;let i=[],o=new Set,s=t.cursor(a.IncludeAnonymous);if(s.firstChild())do for(let t of Y(e,s.node,n))o.has(t.label)||(o.add(t.label),i.push(t));while(s.nextSibling());return J.set(t,i),i}else{let r=[],i=new Set;return t.cursor().iterate(t=>{if(n(t)&&t.matchContext(pe)&&t.node.nextSibling?.name==`:`){let n=e.sliceString(t.from,t.to);i.has(n)||(i.add(n),r.push({label:n,type:`variable`}))}}),r}}var X=e=>t=>{let{state:n,pos:r}=t,i=ee(n).resolveInner(r,-1),a=i.type.isError&&i.from==i.to-1&&n.doc.sliceString(i.from,i.to)==`-`;if(i.name==`PropertyName`||(a||i.name==`TagName`)&&/^(Block|Styles)$/.test(i.resolve(i.to).name))return{from:i.from,options:W(),validFor:q};if(i.name==`ValueName`)return{from:i.from,options:K,validFor:q};if(i.name==`PseudoClassName`)return{from:i.from,options:G,validFor:q};if(e(i)||(t.explicit||a)&&fe(i,n.doc))return{from:e(i)||a?i.from:r,options:Y(n.doc,me(i),e),validFor:de};if(i.name==`TagName`){for(let{parent:e}=i;e;e=e.parent)if(e.name==`Block`)return{from:i.from,options:W(),validFor:q};return{from:i.from,options:le,validFor:q}}if(i.name==`AtKeyword`)return{from:i.from,options:ue,validFor:q};if(!t.explicit)return null;let o=i.resolve(r),s=o.childBefore(r);return s&&s.name==`:`&&o.name==`PseudoClassSelector`?{from:r,options:G,validFor:q}:s&&s.name==`:`&&o.name==`Declaration`||o.name==`ArgList`?{from:r,options:K,validFor:q}:o.name==`Block`||o.name==`Styles`?{from:r,options:W(),validFor:q}:null},Z=X(e=>e.name==`VariableName`),Q=s.define({name:`css`,parser:V.configure({props:[i.add({Declaration:o()}),l.add({"Block KeyframeList":r})]}),languageData:{commentTokens:{block:{open:`/*`,close:`*/`}},indentOnInput:/^\s*\}$/,wordChars:`-`}});function $(){return new c(Q,Q.data.of({autocomplete:Z}))}export{H as i,Q as n,X as r,$ as t}; \ No newline at end of file +import{D as e,E as t,N as n,_ as r,b as i,k as a,p as o,s,u as c,v as l,w as ee,wt as u}from"./index-BkDx9KsG.js";import{i as d,n as f,r as p}from"./dist-DeO3Qj-D.js";var m=135,h=1,te=136,ne=137,g=2,_=138,v=3,re=4,y=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],b=58,ie=40,x=95,ae=91,S=45,oe=46,se=35,C=37,w=38,T=92,E=10,D=42;function O(e){return e>=65&&e<=90||e>=97&&e<=122||e>=161}function k(e){return e>=48&&e<=57}function A(e){return k(e)||e>=97&&e<=102||e>=65&&e<=70}var j=(e,t,n)=>(r,i)=>{for(let a=!1,o=0,s=0;;s++){let{next:c}=r;if(O(c)||c==S||c==x||a&&k(c))!a&&(c!=S||s>0)&&(a=!0),o===s&&c==S&&o++,r.advance();else if(c==T&&r.peek(1)!=E){if(r.advance(),A(r.next)){do r.advance();while(A(r.next));r.next==32&&r.advance()}else r.next>-1&&r.advance();a=!0}else{a&&r.acceptToken(o==2&&i.canShift(g)?t:c==ie?n:e);break}}},M=new f(j(te,g,ne),{contextual:!0}),N=new f(j(_,v,re),{contextual:!0}),P=new f(e=>{if(y.includes(e.peek(-1))){let{next:t}=e;(O(t)||t==x||t==se||t==oe||t==D||t==ae||t==b&&O(e.peek(1))||t==S||t==w)&&e.acceptToken(m)}}),F=new f(e=>{if(!y.includes(e.peek(-1))){let{next:t}=e;if(t==C&&(e.advance(),e.acceptToken(h)),O(t)){do e.advance();while(O(e.next)||k(e.next));e.acceptToken(h)}}}),I=t({"AtKeyword import charset namespace keyframes media supports font-feature-values":e.definitionKeyword,"from to selector scope MatchFlag":e.keyword,NamespaceName:e.namespace,KeyframeName:e.labelName,KeyframeRangeName:e.operatorKeyword,TagName:e.tagName,ClassName:e.className,PseudoClassName:e.constant(e.className),IdName:e.labelName,"FeatureName PropertyName":e.propertyName,AttributeName:e.attributeName,NumberLiteral:e.number,KeywordQuery:e.keyword,UnaryQueryOp:e.operatorKeyword,"CallTag ValueName FontName":e.atom,VariableName:e.variableName,Callee:e.operatorKeyword,Unit:e.unit,"UniversalSelector NestingSelector":e.definitionOperator,"MatchOp CompareOp":e.compareOperator,"ChildOp SiblingOp, LogicOp":e.logicOperator,BinOp:e.arithmeticOperator,Important:e.modifier,Comment:e.blockComment,ColorLiteral:e.color,"ParenthesizedContent StringLiteral":e.string,":":e.punctuation,"PseudoOp #":e.derefOperator,"; , |":e.separator,"( )":e.paren,"[ ]":e.squareBracket,"{ }":e.brace}),L={__proto__:null,lang:44,"nth-child":44,"nth-last-child":44,"nth-of-type":44,"nth-last-of-type":44,dir:44,"host-context":44,if:90,url:132,"url-prefix":132,domain:132,regexp:132},R={__proto__:null,or:104,and:104,not:112,only:112,layer:186},ce={__proto__:null,selector:118,layer:182},z={__proto__:null,"@import":178,"@media":190,"@charset":194,"@namespace":198,"@keyframes":204,"@supports":216,"@scope":220,"@font-feature-values":226},B={__proto__:null,to:223},V=p.deserialize({version:14,states:"IpQYQdOOO#}QdOOP$UO`OOO%OQaO'#CfOOQP'#Ce'#CeO%VQdO'#CgO%[Q`O'#CgO%aQaO'#FdO&XQdO'#CkO&xQaO'#CcO'SQdO'#CnO'_QdO'#DtO'dQdO'#DvO'oQdO'#D}O'oQdO'#EQOOQP'#Fd'#FdO)OQhO'#EsOOQS'#Fc'#FcOOQS'#Ev'#EvQYQdOOO)VQdO'#EWO*cQhO'#E^O)VQdO'#E`O*jQdO'#EbO*uQdO'#EeO)zQhO'#EkO*}QdO'#EmO+YQdO'#EpO+_QaO'#CfO+fQ`O'#ETO+kQ`O'#FnO+vQdO'#FnQOQ`OOP,QO&jO'#CaPOOO)CAR)CAROOQP'#Ci'#CiOOQP,59R,59RO%VQdO,59ROOQP'#Cm'#CmOOQP,59V,59VO&XQdO,59VO,]QdO,59YO'_QdO,5:`O'dQdO,5:bO'oQdO,5:iO'oQdO,5:kO'oQdO,5:lO'oQdO'#E}O,hQ`O,58}O,pQdO'#ESOOQS,58},58}OOQP'#Cq'#CqOOQO'#Dr'#DrOOQP,59Y,59YO,wQ`O,59YO,|Q`O,59YOOQP'#Du'#DuOOQP,5:`,5:`O-RQpO'#DwO-^QdO'#DxO-cQ`O'#DxO-hQpO,5:bO.RQaO,5:iO.iQaO,5:lOOQW'#D^'#D^O/eQhO'#DgO/xQhO,5;_O)zQhO'#DeO0VQ`O'#DkO0[QhO'#DnOOQW'#Fj'#FjOOQS,5;_,5;_O0aQ`O'#DhOOQS-E8t-E8tOOQ['#Cv'#CvO0fQdO'#CwO0|QdO'#C}O1dQdO'#DQO1zQ!pO'#DSO4TQ!jO,5:rOOQO'#DX'#DXO,|Q`O'#DWO4eQ!nO'#FgO6hQ`O'#DYO6mQ`O'#DoOOQ['#Fg'#FgO6rQhO'#FqO7QQ`O,5:xO7VQ!bO,5:zOOQS'#Ed'#EdO7_Q`O,5:|O7dQdO,5:|OOQO'#Eg'#EgO7lQ`O,5;PO7qQhO,5;VO'oQdO'#DjOOQS,5;X,5;XO0aQ`O,5;XO7yQdO,5;XOOQS'#FU'#FUO8RQdO'#ErO7QQ`O,5;[O8ZQdO,5:oO8kQdO'#FPO8xQ`O,5QQhO'#DlOOQW,5:V,5:VOOQW,5:Y,5:YOOQW,5:S,5:SO>[Q!fO'#FhOOQS'#Fh'#FhOOQS'#Ex'#ExO?lQdO,59cOOQ[,59c,59cO@SQdO,59iOOQ[,59i,59iO@jQdO,59lOOQ[,59l,59lOOQ[,59n,59nO)VQdO,59pOAQQhO'#EYOOQW'#EY'#EYOAlQ`O1G0^O4^QhO1G0^OOQ[,59r,59rO)zQhO'#D[OOQ[,59t,59tOAqQ#tO,5:ZOA|QhO'#FROBZQ`O,5<]OOQS1G0d1G0dOOQS1G0f1G0fOOQS1G0h1G0hOBfQ`O1G0hOBkQdO'#EhOOQS1G0k1G0kOOQS1G0q1G0qOBvQaO,5:UO7QQ`O1G0sOOQS1G0s1G0sO0aQ`O1G0sOOQS-E9S-E9SOOQS1G0v1G0vOB}Q!fO1G0ZOCeQ`O'#EVOOQO1G0Z1G0ZOOQO,5;k,5;kOCjQdO,5;kOOQO-E8}-E8}OCwQ`O1G1tPOOO-E8s-E8sPOOO1G.g1G.gOOQP7+$`7+$`OOQP7+%h7+%hO)VQdO7+%hOOQS1G0Y1G0YODSQaO'#FmOD^Q`O,5:_ODcQ!fO'#EwOEaQdO'#FfOEkQ`O,59aOOQO1G0O1G0OOEpQ!bO7+%hO)VQdO1G/eOE{QhO1G/iOOQW1G/m1G/mOOQW1G/g1G/gOF^QhO,5;qOOQW-E9T-E9TOOQS7+&e7+&eOGRQhO'#D^OGaQhO'#FlOGlQ`O'#FlOGqQ`O,5:WOOQS-E8v-E8vOOQ[1G.}1G.}OOQ[1G/T1G/TOOQ[1G/W1G/WOOQ[1G/[1G/[OGvQdO,5:tOOQS7+%x7+%xOG{Q`O7+%xOHQQhO'#D]OHYQ`O,59vO)zQhO,59vOOQ[1G/u1G/uOHbQ`O1G/uOHgQhO,5;mOOQO-E9P-E9POOQS7+&S7+&SOHuQbO'#DSOOQO'#Ej'#EjOITQ`O'#EiOOQO'#Ei'#EiOI`Q`O'#FSOIhQdO,5;SOOQS,5;S,5;SOOQ[1G/p1G/pOOQS7+&_7+&_O7QQ`O7+&_OIsQ!fO'#FOO)VQdO'#FOOJzQdO7+%uOOQO7+%u7+%uOOQO,5:q,5:qOOQO1G1V1G1VOK_Q!bO<nAN>nO! bQ`OAN>nO! gQaO,5;hOOQO-E8z-E8zO! qQdO,5;gOOQO-E8y-E8yOOQW<ZO)VQdO1G1QO!#nQ`O7+'^OOQO,5;l,5;lOOQO-E9O-E9OOOQW<Q!]!^>|!^!_?_!_!`@Z!`!a@n!a!b%Z!b!cAo!c!k%Z!k!lC|!l!u%Z!u!vC|!v!}%Z!}#OD_#O#P%Z#P#QDp#Q#R2X#R#]%Z#]#^ER#^#g%Z#g#hC|#h#o%Z#o#pIf#p#qIw#q#rJ`#r#sJq#s#y%Z#y#z&R#z$f%Z$f$g&R$g#BY%Z#BY#BZ&R#BZ$IS%Z$IS$I_&R$I_$I|%Z$I|$JO&R$JO$JT%Z$JT$JU&R$JU$KV%Z$KV$KW&R$KW&FU%Z&FU&FV&R&FV;'S%Z;'S;=`KY<%lO%Z`%^SOy%jz;'S%j;'S;=`%{<%lO%j`%oS!e`Oy%jz;'S%j;'S;=`%{<%lO%j`&OP;=`<%l%j~&Wh$Q~OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%j~'yh$Q~!e`OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%jj)jS$dYOy%jz;'S%j;'S;=`%{<%lO%j~)yWOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d<%lO)v~*hOw~~*kRO;'S)v;'S;=`*t;=`O)v~*wXOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d;=`<%l)v<%lO)v~+gP;=`<%l)vj+oYmYOy%jz!Q%j!Q![,_![!c%j!c!i,_!i#T%j#T#Z,_#Z;'S%j;'S;=`%{<%lO%jj,dY!e`Oy%jz!Q%j!Q![-S![!c%j!c!i-S!i#T%j#T#Z-S#Z;'S%j;'S;=`%{<%lO%jj-XY!e`Oy%jz!Q%j!Q![-w![!c%j!c!i-w!i#T%j#T#Z-w#Z;'S%j;'S;=`%{<%lO%jj.OYuY!e`Oy%jz!Q%j!Q![.n![!c%j!c!i.n!i#T%j#T#Z.n#Z;'S%j;'S;=`%{<%lO%jj.uYuY!e`Oy%jz!Q%j!Q![/e![!c%j!c!i/e!i#T%j#T#Z/e#Z;'S%j;'S;=`%{<%lO%jj/jY!e`Oy%jz!Q%j!Q![0Y![!c%j!c!i0Y!i#T%j#T#Z0Y#Z;'S%j;'S;=`%{<%lO%jj0aYuY!e`Oy%jz!Q%j!Q![1P![!c%j!c!i1P!i#T%j#T#Z1P#Z;'S%j;'S;=`%{<%lO%jj1UY!e`Oy%jz!Q%j!Q![1t![!c%j!c!i1t!i#T%j#T#Z1t#Z;'S%j;'S;=`%{<%lO%jj1{SuY!e`Oy%jz;'S%j;'S;=`%{<%lO%jd2[UOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jd2uS!oS!e`Oy%jz;'S%j;'S;=`%{<%lO%jb3WS^QOy%jz;'S%j;'S;=`%{<%lO%j~3gWOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{<%lO3d~4SRO;'S3d;'S;=`4];=`O3d~4`XOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{;=`<%l3d<%lO3d~5OP;=`<%l3dj5WShYOy%jz;'S%j;'S;=`%{<%lO%j~5iOg~n5pUWQyWOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jj6ZWyW!uQOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj6xU!e`Oy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%jj7cY!e`$]YOy%jz!Q%j!Q![7[![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj8WY!e`Oy%jz{%j{|8v|}%j}!O8v!O!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj8{U!e`Oy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj9fU!e`$]YOy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj:P[!e`$]YOy%jz!O%j!O!P7[!P!Q%j!Q![9x![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj:zS!aYOy%jz;'S%j;'S;=`%{<%lO%jj;]WyWOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj;zU`YOy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%j~VUcYOy%jz![%j![!]>i!];'S%j;'S;=`%{<%lO%jj>pSdY!e`Oy%jz;'S%j;'S;=`%{<%lO%jj?RSnYOy%jz;'S%j;'S;=`%{<%lO%jh?dU!WWOy%jz!_%j!_!`?v!`;'S%j;'S;=`%{<%lO%jh?}S!WW!e`Oy%jz;'S%j;'S;=`%{<%lO%jl@bS!WW!oSOy%jz;'S%j;'S;=`%{<%lO%jj@uV!rQ!WWOy%jz!_%j!_!`?v!`!aA[!a;'S%j;'S;=`%{<%lO%jbAcS!rQ!e`Oy%jz;'S%j;'S;=`%{<%lO%jjArYOy%jz}%j}!OBb!O!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjBgW!e`Oy%jz!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjCW[lY!e`Oy%jz}%j}!OCP!O!Q%j!Q![CP![!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jhDRS!pWOy%jz;'S%j;'S;=`%{<%lO%jjDdSpYOy%jz;'S%j;'S;=`%{<%lO%jnDuSo^Oy%jz;'S%j;'S;=`%{<%lO%jjEWU!pWOy%jz#a%j#a#bEj#b;'S%j;'S;=`%{<%lO%jbEoU!e`Oy%jz#d%j#d#eFR#e;'S%j;'S;=`%{<%lO%jbFWU!e`Oy%jz#c%j#c#dFj#d;'S%j;'S;=`%{<%lO%jbFoU!e`Oy%jz#f%j#f#gGR#g;'S%j;'S;=`%{<%lO%jbGWU!e`Oy%jz#h%j#h#iGj#i;'S%j;'S;=`%{<%lO%jbGoU!e`Oy%jz#T%j#T#UHR#U;'S%j;'S;=`%{<%lO%jbHWU!e`Oy%jz#b%j#b#cHj#c;'S%j;'S;=`%{<%lO%jbHoU!e`Oy%jz#h%j#h#iIR#i;'S%j;'S;=`%{<%lO%jbIYS$cQ!e`Oy%jz;'S%j;'S;=`%{<%lO%jjIkSsYOy%jz;'S%j;'S;=`%{<%lO%jfI|U$XUOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jjJeSrYOy%jz;'S%j;'S;=`%{<%lO%jfJvU!uQOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%j`K]P;=`<%l%Z",tokenizers:[P,F,M,N,1,2,3,4,new d(`m~RRYZ[z{a~~g~aO$T~~dP!P!Qg~lO$U~~`,28,142)],topRules:{StyleSheet:[0,6],Styles:[1,116]},dynamicPrecedences:{84:1},specialized:[{term:137,get:e=>L[e]||-1},{term:138,get:e=>R[e]||-1},{term:4,get:e=>ce[e]||-1},{term:28,get:e=>z[e]||-1},{term:136,get:e=>B[e]||-1}],tokenPrec:2256}),H=u({css:()=>$,cssCompletionSource:()=>Z,cssLanguage:()=>Q,defineCSSCompletionSource:()=>X}),U=null;function W(){if(!U&&typeof document==`object`&&document.body){let{style:e}=document.body,t=[],n=new Set;for(let r in e)r!=`cssText`&&r!=`cssFloat`&&typeof e[r]==`string`&&(/[A-Z]/.test(r)&&(r=r.replace(/[A-Z]/g,e=>`-`+e.toLowerCase())),n.has(r)||(t.push(r),n.add(r)));U=t.sort().map(e=>({type:`property`,label:e,apply:e+`: `}))}return U||[]}var G=`active.after.any-link.autofill.backdrop.before.checked.cue.default.defined.disabled.empty.enabled.file-selector-button.first.first-child.first-letter.first-line.first-of-type.focus.focus-visible.focus-within.fullscreen.has.host.host-context.hover.in-range.indeterminate.invalid.is.lang.last-child.last-of-type.left.link.marker.modal.not.nth-child.nth-last-child.nth-last-of-type.nth-of-type.only-child.only-of-type.optional.out-of-range.part.placeholder.placeholder-shown.read-only.read-write.required.right.root.scope.selection.slotted.target.target-text.valid.visited.where`.split(`.`).map(e=>({type:`class`,label:e})),K=`above.absolute.activeborder.additive.activecaption.after-white-space.ahead.alias.all.all-scroll.alphabetic.alternate.always.antialiased.appworkspace.asterisks.attr.auto.auto-flow.avoid.avoid-column.avoid-page.avoid-region.axis-pan.background.backwards.baseline.below.bidi-override.blink.block.block-axis.bold.bolder.border.border-box.both.bottom.break.break-all.break-word.bullets.button.button-bevel.buttonface.buttonhighlight.buttonshadow.buttontext.calc.capitalize.caps-lock-indicator.caption.captiontext.caret.cell.center.checkbox.circle.cjk-decimal.clear.clip.close-quote.col-resize.collapse.color.color-burn.color-dodge.column.column-reverse.compact.condensed.contain.content.contents.content-box.context-menu.continuous.copy.counter.counters.cover.crop.cross.crosshair.currentcolor.cursive.cyclic.darken.dashed.decimal.decimal-leading-zero.default.default-button.dense.destination-atop.destination-in.destination-out.destination-over.difference.disc.discard.disclosure-closed.disclosure-open.document.dot-dash.dot-dot-dash.dotted.double.down.e-resize.ease.ease-in.ease-in-out.ease-out.element.ellipse.ellipsis.embed.end.ethiopic-abegede-gez.ethiopic-halehame-aa-er.ethiopic-halehame-gez.ew-resize.exclusion.expanded.extends.extra-condensed.extra-expanded.fantasy.fast.fill.fill-box.fixed.flat.flex.flex-end.flex-start.footnotes.forwards.from.geometricPrecision.graytext.grid.groove.hand.hard-light.help.hidden.hide.higher.highlight.highlighttext.horizontal.hsl.hsla.hue.icon.ignore.inactiveborder.inactivecaption.inactivecaptiontext.infinite.infobackground.infotext.inherit.initial.inline.inline-axis.inline-block.inline-flex.inline-grid.inline-table.inset.inside.intrinsic.invert.italic.justify.keep-all.landscape.large.larger.left.level.lighter.lighten.line-through.linear.linear-gradient.lines.list-item.listbox.listitem.local.logical.loud.lower.lower-hexadecimal.lower-latin.lower-norwegian.lowercase.ltr.luminosity.manipulation.match.matrix.matrix3d.medium.menu.menutext.message-box.middle.min-intrinsic.mix.monospace.move.multiple.multiple_mask_images.multiply.n-resize.narrower.ne-resize.nesw-resize.no-close-quote.no-drop.no-open-quote.no-repeat.none.normal.not-allowed.nowrap.ns-resize.numbers.numeric.nw-resize.nwse-resize.oblique.opacity.open-quote.optimizeLegibility.optimizeSpeed.outset.outside.outside-shape.overlay.overline.padding.padding-box.painted.page.paused.perspective.pinch-zoom.plus-darker.plus-lighter.pointer.polygon.portrait.pre.pre-line.pre-wrap.preserve-3d.progress.push-button.radial-gradient.radio.read-only.read-write.read-write-plaintext-only.rectangle.region.relative.repeat.repeating-linear-gradient.repeating-radial-gradient.repeat-x.repeat-y.reset.reverse.rgb.rgba.ridge.right.rotate.rotate3d.rotateX.rotateY.rotateZ.round.row.row-resize.row-reverse.rtl.run-in.running.s-resize.sans-serif.saturation.scale.scale3d.scaleX.scaleY.scaleZ.screen.scroll.scrollbar.scroll-position.se-resize.self-start.self-end.semi-condensed.semi-expanded.separate.serif.show.single.skew.skewX.skewY.skip-white-space.slide.slider-horizontal.slider-vertical.sliderthumb-horizontal.sliderthumb-vertical.slow.small.small-caps.small-caption.smaller.soft-light.solid.source-atop.source-in.source-out.source-over.space.space-around.space-between.space-evenly.spell-out.square.start.static.status-bar.stretch.stroke.stroke-box.sub.subpixel-antialiased.svg_masks.super.sw-resize.symbolic.symbols.system-ui.table.table-caption.table-cell.table-column.table-column-group.table-footer-group.table-header-group.table-row.table-row-group.text.text-bottom.text-top.textarea.textfield.thick.thin.threeddarkshadow.threedface.threedhighlight.threedlightshadow.threedshadow.to.top.transform.translate.translate3d.translateX.translateY.translateZ.transparent.ultra-condensed.ultra-expanded.underline.unidirectional-pan.unset.up.upper-latin.uppercase.url.var.vertical.vertical-text.view-box.visible.visibleFill.visiblePainted.visibleStroke.visual.w-resize.wait.wave.wider.window.windowframe.windowtext.words.wrap.wrap-reverse.x-large.x-small.xor.xx-large.xx-small`.split(`.`).map(e=>({type:`keyword`,label:e})).concat(`aliceblue.antiquewhite.aqua.aquamarine.azure.beige.bisque.black.blanchedalmond.blue.blueviolet.brown.burlywood.cadetblue.chartreuse.chocolate.coral.cornflowerblue.cornsilk.crimson.cyan.darkblue.darkcyan.darkgoldenrod.darkgray.darkgreen.darkkhaki.darkmagenta.darkolivegreen.darkorange.darkorchid.darkred.darksalmon.darkseagreen.darkslateblue.darkslategray.darkturquoise.darkviolet.deeppink.deepskyblue.dimgray.dodgerblue.firebrick.floralwhite.forestgreen.fuchsia.gainsboro.ghostwhite.gold.goldenrod.gray.grey.green.greenyellow.honeydew.hotpink.indianred.indigo.ivory.khaki.lavender.lavenderblush.lawngreen.lemonchiffon.lightblue.lightcoral.lightcyan.lightgoldenrodyellow.lightgray.lightgreen.lightpink.lightsalmon.lightseagreen.lightskyblue.lightslategray.lightsteelblue.lightyellow.lime.limegreen.linen.magenta.maroon.mediumaquamarine.mediumblue.mediumorchid.mediumpurple.mediumseagreen.mediumslateblue.mediumspringgreen.mediumturquoise.mediumvioletred.midnightblue.mintcream.mistyrose.moccasin.navajowhite.navy.oldlace.olive.olivedrab.orange.orangered.orchid.palegoldenrod.palegreen.paleturquoise.palevioletred.papayawhip.peachpuff.peru.pink.plum.powderblue.purple.rebeccapurple.red.rosybrown.royalblue.saddlebrown.salmon.sandybrown.seagreen.seashell.sienna.silver.skyblue.slateblue.slategray.snow.springgreen.steelblue.tan.teal.thistle.tomato.turquoise.violet.wheat.white.whitesmoke.yellow.yellowgreen`.split(`.`).map(e=>({type:`constant`,label:e}))),le=`a.abbr.address.article.aside.b.bdi.bdo.blockquote.body.br.button.canvas.caption.cite.code.col.colgroup.dd.del.details.dfn.dialog.div.dl.dt.em.figcaption.figure.footer.form.header.hgroup.h1.h2.h3.h4.h5.h6.hr.html.i.iframe.img.input.ins.kbd.label.legend.li.main.meter.nav.ol.output.p.pre.ruby.section.select.small.source.span.strong.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.tr.u.ul`.split(`.`).map(e=>({type:`type`,label:e})),ue=[`@charset`,`@color-profile`,`@container`,`@counter-style`,`@font-face`,`@font-feature-values`,`@font-palette-values`,`@import`,`@keyframes`,`@layer`,`@media`,`@namespace`,`@page`,`@position-try`,`@property`,`@scope`,`@starting-style`,`@supports`,`@view-transition`].map(e=>({type:`keyword`,label:e})),q=/^(\w[\w-]*|-\w[\w-]*|)$/,de=/^-(-[\w-]*)?$/;function fe(e,t){if((e.name==`(`||e.type.isError)&&(e=e.parent||e),e.name!=`ArgList`)return!1;let n=e.parent?.firstChild;return n?.name==`Callee`?t.sliceString(n.from,n.to)==`var`:!1}var J=new n,pe=[`Declaration`];function me(e){for(let t=e;;){if(t.type.isTop)return t;if(!(t=t.parent))return e}}function Y(e,t,n){if(t.to-t.from>4096){let r=J.get(t);if(r)return r;let i=[],o=new Set,s=t.cursor(a.IncludeAnonymous);if(s.firstChild())do for(let t of Y(e,s.node,n))o.has(t.label)||(o.add(t.label),i.push(t));while(s.nextSibling());return J.set(t,i),i}else{let r=[],i=new Set;return t.cursor().iterate(t=>{if(n(t)&&t.matchContext(pe)&&t.node.nextSibling?.name==`:`){let n=e.sliceString(t.from,t.to);i.has(n)||(i.add(n),r.push({label:n,type:`variable`}))}}),r}}var X=e=>t=>{let{state:n,pos:r}=t,i=ee(n).resolveInner(r,-1),a=i.type.isError&&i.from==i.to-1&&n.doc.sliceString(i.from,i.to)==`-`;if(i.name==`PropertyName`||(a||i.name==`TagName`)&&/^(Block|Styles)$/.test(i.resolve(i.to).name))return{from:i.from,options:W(),validFor:q};if(i.name==`ValueName`)return{from:i.from,options:K,validFor:q};if(i.name==`PseudoClassName`)return{from:i.from,options:G,validFor:q};if(e(i)||(t.explicit||a)&&fe(i,n.doc))return{from:e(i)||a?i.from:r,options:Y(n.doc,me(i),e),validFor:de};if(i.name==`TagName`){for(let{parent:e}=i;e;e=e.parent)if(e.name==`Block`)return{from:i.from,options:W(),validFor:q};return{from:i.from,options:le,validFor:q}}if(i.name==`AtKeyword`)return{from:i.from,options:ue,validFor:q};if(!t.explicit)return null;let o=i.resolve(r),s=o.childBefore(r);return s&&s.name==`:`&&o.name==`PseudoClassSelector`?{from:r,options:G,validFor:q}:s&&s.name==`:`&&o.name==`Declaration`||o.name==`ArgList`?{from:r,options:K,validFor:q}:o.name==`Block`||o.name==`Styles`?{from:r,options:W(),validFor:q}:null},Z=X(e=>e.name==`VariableName`),Q=s.define({name:`css`,parser:V.configure({props:[i.add({Declaration:o()}),l.add({"Block KeyframeList":r})]}),languageData:{commentTokens:{block:{open:`/*`,close:`*/`}},indentOnInput:/^\s*\}$/,wordChars:`-`}});function $(){return new c(Q,Q.data.of({autocomplete:Z}))}export{H as i,Q as n,X as r,$ as t}; \ No newline at end of file diff --git a/ksadk/server/static/assets/dist-BjU6y-A2.js b/ksadk/server/static/assets/dist-B6XMlZpc.js similarity index 99% rename from ksadk/server/static/assets/dist-BjU6y-A2.js rename to ksadk/server/static/assets/dist-B6XMlZpc.js index 6784c376..85ace93f 100644 --- a/ksadk/server/static/assets/dist-BjU6y-A2.js +++ b/ksadk/server/static/assets/dist-B6XMlZpc.js @@ -1 +1 @@ -import{D as e,E as t,I as n,L as r,b as i,f as a,s as o,u as s,v as c,w as l,z as ee}from"./index-8ipRcQ-M.js";import{n as u,r as te,t as ne}from"./dist-C_wsv-Qd.js";import{n as d,t as re}from"./dist-B7seoj3d.js";import{a as ie,i as ae,n as oe,o as se,r as f}from"./dist-DnfXs8Vn.js";var ce=55,le=1,ue=56,de=2,fe=57,pe=3,p=4,me=5,m=6,he=7,ge=8,h=9,g=10,_e=11,ve=12,ye=13,_=58,be=14,xe=15,v=59,y=21,Se=23,b=24,Ce=25,x=27,S=28,we=29,Te=32,Ee=35,De=37,Oe=38,ke=0,Ae=1,je={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},Me={dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},C={dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}};function Ne(e){return e==45||e==46||e==58||e>=65&&e<=90||e==95||e>=97&&e<=122||e>=161}var w=null,T=null,E=0;function D(e,t){let n=e.pos+t;if(E==n&&T==e)return w;let r=e.peek(t),i=``;for(;Ne(r);)i+=String.fromCharCode(r),r=e.peek(++t);return T=e,E=n,w=i?i.toLowerCase():r==Pe||r==Fe?void 0:null}var O=60,k=62,A=47,Pe=63,Fe=33,Ie=45;function j(e,t){this.name=e,this.parent=t}var Le=[m,g,he,ge,h],Re=new ne({start:null,shift(e,t,n,r){return Le.indexOf(t)>-1?new j(D(r,1)||``,e):e},reduce(e,t){return t==y&&e?e.parent:e},reuse(e,t,n,r){let i=t.type.id;return i==m||i==De?new j(D(r,1)||``,e):e},strict:!1}),ze=new u((e,t)=>{if(e.next!=O){e.next<0&&t.context&&e.acceptToken(_);return}e.advance();let n=e.next==A;n&&e.advance();let r=D(e,0);if(r===void 0)return;if(!r)return e.acceptToken(n?xe:be);let i=t.context?t.context.name:null;if(n){if(r==i)return e.acceptToken(_e);if(i&&Me[i])return e.acceptToken(_,-2);if(t.dialectEnabled(ke))return e.acceptToken(ve);for(let e=t.context;e;e=e.parent)if(e.name==r)return;e.acceptToken(ye)}else{if(r==`script`)return e.acceptToken(he);if(r==`style`)return e.acceptToken(ge);if(r==`textarea`)return e.acceptToken(h);if(je.hasOwnProperty(r))return e.acceptToken(g);i&&C[i]&&C[i][r]?e.acceptToken(_,-1):e.acceptToken(m)}},{contextual:!0}),Be=new u(e=>{for(let t=0,n=0;;n++){if(e.next<0){n&&e.acceptToken(v);break}if(e.next==Ie)t++;else if(e.next==k&&t>=2){n>=3&&e.acceptToken(v,-2);break}else t=0;e.advance()}});function Ve(e){for(;e;e=e.parent)if(e.name==`svg`||e.name==`math`)return!0;return!1}var He=new u((e,t)=>{if(e.next==A&&e.peek(1)==k){let n=t.dialectEnabled(Ae)||Ve(t.context);e.acceptToken(n?me:p,2)}else e.next==k&&e.acceptToken(p,1)});function M(e,t,n){let r=2+e.length;return new u(i=>{for(let a=0,o=0,s=0;;s++){if(i.next<0){s&&i.acceptToken(t);break}if(a==0&&i.next==O||a==1&&i.next==A||a>=2&&ao?i.acceptToken(t,-o):i.acceptToken(n,-(o-2));break}else if((i.next==10||i.next==13)&&s){i.acceptToken(t,1);break}else a=o=0;i.advance()}})}var Ue=M(`script`,ce,le),We=M(`style`,ue,de),Ge=M(`textarea`,fe,pe),Ke=t({"Text RawText IncompleteTag IncompleteCloseTag":e.content,"StartTag StartCloseTag SelfClosingEndTag EndTag":e.angleBracket,TagName:e.tagName,"MismatchedCloseTag/TagName":[e.tagName,e.invalid],AttributeName:e.attributeName,"AttributeValue UnquotedAttributeValue":e.attributeValue,Is:e.definitionOperator,"EntityReference CharacterReference":e.character,Comment:e.blockComment,ProcessingInst:e.processingInstruction,DoctypeDecl:e.documentMeta}),qe=te.deserialize({version:14,states:",xOVO!rOOO!ZQ#tO'#CrO!`Q#tO'#C{O!eQ#tO'#DOO!jQ#tO'#DRO!oQ#tO'#DTO!tOaO'#CqO#PObO'#CqO#[OdO'#CqO$kO!rO'#CqOOO`'#Cq'#CqO$rO$fO'#DUO$zQ#tO'#DWO%PQ#tO'#DXOOO`'#Dl'#DlOOO`'#DZ'#DZQVO!rOOO%UQ&rO,59^O%aQ&rO,59gO%lQ&rO,59jO%wQ&rO,59mO&SQ&rO,59oOOOa'#D_'#D_O&_OaO'#CyO&jOaO,59]OOOb'#D`'#D`O&rObO'#C|O&}ObO,59]OOOd'#Da'#DaO'VOdO'#DPO'bOdO,59]OOO`'#Db'#DbO'jO!rO,59]O'qQ#tO'#DSOOO`,59],59]OOOp'#Dc'#DcO'vO$fO,59pOOO`,59p,59pO(OQ#|O,59rO(TQ#|O,59sOOO`-E7X-E7XO(YQ&rO'#CtOOQW'#D['#D[O(hQ&rO1G.xOOOa1G.x1G.xOOO`1G/Z1G/ZO(sQ&rO1G/ROOOb1G/R1G/RO)OQ&rO1G/UOOOd1G/U1G/UO)ZQ&rO1G/XOOO`1G/X1G/XO)fQ&rO1G/ZOOOa-E7]-E7]O)qQ#tO'#CzOOO`1G.w1G.wOOOb-E7^-E7^O)vQ#tO'#C}OOOd-E7_-E7_O){Q#tO'#DQOOO`-E7`-E7`O*QQ#|O,59nOOOp-E7a-E7aOOO`1G/[1G/[OOO`1G/^1G/^OOO`1G/_1G/_O*VQ,UO,59`OOQW-E7Y-E7YOOOa7+$d7+$dOOO`7+$u7+$uOOOb7+$m7+$mOOOd7+$p7+$pOOO`7+$s7+$sO*bQ#|O,59fO*gQ#|O,59iO*lQ#|O,59lOOO`1G/Y1G/YO*qO7[O'#CwO+SOMhO'#CwOOQW1G.z1G.zOOO`1G/Q1G/QOOO`1G/T1G/TOOO`1G/W1G/WOOOO'#D]'#D]O+eO7[O,59cOOQW,59c,59cOOOO'#D^'#D^O+vOMhO,59cOOOO-E7Z-E7ZOOQW1G.}1G.}OOOO-E7[-E7[",stateData:`,c~O!_OS~OUSOVPOWQOXROYTO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O|_O!eZO~OgaO~OgbO~OgcO~OgdO~OgeO~O!XfOPmP![mP~O!YiOQpP![pP~O!ZlORsP![sP~OUSOVPOWQOXROYTOZqO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O!eZO~O![rO~P#gO!]sO!fuO~OgvO~OgwO~OS|OT}OiyO~OS!POT}OiyO~OS!ROT}OiyO~OS!TOT}OiyO~OS}OT}OiyO~O!XfOPmX![mX~OP!WO![!XO~O!YiOQpX![pX~OQ!ZO![!XO~O!ZlORsX![sX~OR!]O![!XO~O![!XO~P#gOg!_O~O!]sO!f!aO~OS!bO~OS!cO~Oj!dOShXThXihX~OS!fOT!gOiyO~OS!hOT!gOiyO~OS!iOT!gOiyO~OS!jOT!gOiyO~OS!gOT!gOiyO~Og!kO~Og!lO~Og!mO~OS!nO~Ol!qO!a!oO!c!pO~OS!rO~OS!sO~OS!tO~Ob!uOc!uOd!uO!a!wO!b!uO~Ob!xOc!xOd!xO!c!wO!d!xO~Ob!uOc!uOd!uO!a!{O!b!uO~Ob!xOc!xOd!xO!c!{O!d!xO~OT~cbd!ey|!e~`,goto:"%q!aPPPPPPPPPPPPPPPPPPPPP!b!hP!nPP!zP!}#Q#T#Z#^#a#g#j#m#s#y!bP!b!bP$P$V$m$s$y%P%V%]%cPPPPPPPP%iX^OX`pXUOX`pezabcde{!O!Q!S!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ!ObQ!QcQ!SdQ!UeZ!e{!O!Q!S!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp",nodeNames:`⚠ StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl`,maxTerm:68,context:Re,nodeProps:[[`closedBy`,-10,1,2,3,7,8,9,10,11,12,13,`EndTag`,6,`EndTag SelfClosingEndTag`,-4,22,31,34,37,`CloseTag`],[`openedBy`,4,`StartTag StartCloseTag`,5,`StartTag`,-4,30,33,36,38,`OpenTag`],[`group`,-10,14,15,18,19,20,21,40,41,42,43,`Entity`,17,`Entity TextContent`,-3,29,32,35,`TextContent Entity`],[`isolate`,-11,22,30,31,33,34,36,37,38,39,42,43,`ltr`,-3,27,28,40,``]],propSources:[Ke],skippedNodes:[0],repeatNodeCount:9,tokenData:"!]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zblWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n<%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q<%lO7S!R7qOb!R!R7tP;=`<%l7S!Z8OYlWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z8qP;=`<%l5u!_8{iiSlWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbiSlWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VP<%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXiSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!V>SP;=`<%l;{!_>YP;=`<%l8t!_>dhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TalWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq<%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At<%lOAY!RAtOc!R!RAwP;=`<%lAY!ZBRYlWc!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!ZBtP;=`<%l@O!_COhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbiSlWc!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbiSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|<%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXiSc!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!VHPP;=`<%lE{!_HVP;=`<%lBw!ZHcW!cxaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t!aIYliSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_kiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_XaP!b`!dp!fQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!aNZ!ZiSgQaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`<%lMz!R!$ZY!b`!dpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s<%lO*V!R!%Q]!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s<%lO*V!R!&QX!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s<%lO*V!R!&vV!b`!dp!ePOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!'dX!b`!dpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s<%lO*V!R!(WX!b`!dpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s<%lO*V!R!(zX!b`!dpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s<%lO*V!R!)nX!b`!dpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s<%lO*V!R!*bX!b`!dpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s<%lO*V!R!+UX!b`!dpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s<%lO*V!R!+xY!b`!dpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y<%lO!+qq!,mV!dpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U<%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k<%lO!-SP!-kO|PP!-nP;=`<%l!-Sq!-xS!dp|POv(Vx;'S(V;'S;=`(h<%lO(Vq!.XP;=`<%l!,ha!.aX!b`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d<%lO!.[a!/TT!b`|POr)esv)ew;'S)e;'S;=`)y<%lO)ea!/gP;=`<%l!.[!R!/sV!b`!dp|POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!0]P;=`<%l!+q!R!0gX!b`!dpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s<%lO*V!R!1ZX!b`!dpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s<%lO*V!R!1}X!b`!dpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s<%lO*V!R!2qX!b`!dpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s<%lO*V!R!3eX!b`!dpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s<%lO*V!R!4XX!b`!dpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s<%lO*V!R!4{Y!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r<%lO!4tq!5pV!dpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V<%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q<%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q<%lO!6VP!7QOyPP!7TP;=`<%l!6Vq!7]V!dpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V<%lO!5kq!7yS!dpyPOv(Vx;'S(V;'S;=`(h<%lO(Vq!8YP;=`<%l!5ka!8bX!b`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V<%lO!8]a!9SX!b`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V<%lO!8]a!9vT!b`yPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!:YP;=`<%l!8]!R!:dY!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r<%lO!4t!R!;]V!b`!dpyPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!;uP;=`<%l!4t!V!{let n=e.type.id;if(n==we)return F(e,t,r);if(n==Te)return F(e,t,i);if(n==Ee)return F(e,t,a);if(n==y&&o.length){let n=e.node,r=n.firstChild,i=r&&P(r,t),a;if(i){for(let e of o)if(e.tag==i&&(!e.attrs||e.attrs(a||=N(r,t)))){let t=n.lastChild,i=t.type.id==Oe?t.from:n.to;if(i>r.to)return{parser:e.parser,overlay:[{from:r.to,to:i}]}}}}if(s&&n==b){let n=e.node,r;if(r=n.firstChild){let e=s[t.read(r.from,r.to)];if(e)for(let r of e){if(r.tagName&&r.tagName!=P(n.parent,t))continue;let e=n.lastChild;if(e.type.id==x){let t=e.from+1,n=e.lastChild,i=e.to-(n&&n.isError?0:1);if(i>t)return{parser:r.parser,overlay:[{from:t,to:i}],bracketed:!0}}else if(e.type.id==S)return{parser:r.parser,overlay:[{from:e.from,to:e.to}]}}}}return null})}var L=[`_blank`,`_self`,`_top`,`_parent`],R=[`ascii`,`utf-8`,`utf-16`,`latin1`,`latin1`],z=[`get`,`post`,`put`,`delete`],B=[`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`],V=[`true`,`false`],H={},Je={a:{attrs:{href:null,ping:null,type:null,media:null,target:L,hreflang:null}},abbr:H,address:H,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:[`default`,`rect`,`circle`,`poly`]}},article:H,aside:H,audio:{attrs:{src:null,mediagroup:null,crossorigin:[`anonymous`,`use-credentials`],preload:[`none`,`metadata`,`auto`],autoplay:[`autoplay`],loop:[`loop`],controls:[`controls`]}},b:H,base:{attrs:{href:null,target:L}},bdi:H,bdo:H,blockquote:{attrs:{cite:null}},body:H,br:H,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:[`autofocus`],disabled:[`autofocus`],formenctype:B,formmethod:z,formnovalidate:[`novalidate`],formtarget:L,type:[`submit`,`reset`,`button`]}},canvas:{attrs:{width:null,height:null}},caption:H,center:H,cite:H,code:H,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:[`command`,`checkbox`,`radio`],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:[`disabled`],checked:[`checked`]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:[`disabled`],multiple:[`multiple`]}},datalist:{attrs:{data:null}},dd:H,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:[`open`]}},dfn:H,div:H,dl:H,dt:H,em:H,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:[`disabled`],form:null,name:null}},figcaption:H,figure:H,footer:H,form:{attrs:{action:null,name:null,"accept-charset":R,autocomplete:[`on`,`off`],enctype:B,method:z,novalidate:[`novalidate`],target:L}},h1:H,h2:H,h3:H,h4:H,h5:H,h6:H,head:{children:[`title`,`base`,`link`,`style`,`meta`,`script`,`noscript`,`command`]},header:H,hgroup:H,hr:H,html:{attrs:{manifest:null}},i:H,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:[`allow-top-navigation`,`allow-same-origin`,`allow-forms`,`allow-scripts`],seamless:[`seamless`]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:[`anonymous`,`use-credentials`]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:[`audio/*`,`video/*`,`image/*`],autocomplete:[`on`,`off`],autofocus:[`autofocus`],checked:[`checked`],disabled:[`disabled`],formenctype:B,formmethod:z,formnovalidate:[`novalidate`],formtarget:L,multiple:[`multiple`],readonly:[`readonly`],required:[`required`],type:[`hidden`,`text`,`search`,`tel`,`url`,`email`,`password`,`datetime`,`date`,`month`,`week`,`time`,`datetime-local`,`number`,`range`,`color`,`checkbox`,`radio`,`file`,`submit`,`image`,`reset`,`button`]}},ins:{attrs:{cite:null,datetime:null}},kbd:H,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:[`autofocus`],disabled:[`disabled`],keytype:[`RSA`]}},label:{attrs:{for:null,form:null}},legend:H,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:null,media:null,sizes:[`all`,`16x16`,`16x16 32x32`,`16x16 32x32 64x64`]}},map:{attrs:{name:null}},mark:H,menu:{attrs:{label:null,type:[`list`,`context`,`toolbar`]}},meta:{attrs:{content:null,charset:R,name:[`viewport`,`application-name`,`author`,`description`,`generator`,`keywords`],"http-equiv":[`content-language`,`content-type`,`default-style`,`refresh`]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:H,noscript:H,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:[`typemustmatch`]}},ol:{attrs:{reversed:[`reversed`],start:null,type:[`1`,`a`,`A`,`i`,`I`]},children:[`li`,`script`,`template`,`ul`,`ol`]},optgroup:{attrs:{disabled:[`disabled`],label:null}},option:{attrs:{disabled:[`disabled`],label:null,selected:[`selected`],value:null}},output:{attrs:{for:null,form:null,name:null}},p:H,param:{attrs:{name:null,value:null}},pre:H,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:H,rt:H,ruby:H,samp:H,script:{attrs:{type:[`text/javascript`],src:null,async:[`async`],defer:[`defer`],charset:R}},section:H,select:{attrs:{form:null,name:null,size:null,autofocus:[`autofocus`],disabled:[`disabled`],multiple:[`multiple`]}},slot:{attrs:{name:null}},small:H,source:{attrs:{src:null,type:null,media:null}},span:H,strong:H,style:{attrs:{type:[`text/css`],media:null,scoped:null}},sub:H,summary:H,sup:H,table:H,tbody:H,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:H,textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:[`autofocus`],disabled:[`disabled`],readonly:[`readonly`],required:[`required`],wrap:[`soft`,`hard`]}},tfoot:H,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:[`row`,`col`,`rowgroup`,`colgroup`]}},thead:H,time:{attrs:{datetime:null}},title:H,tr:H,track:{attrs:{src:null,label:null,default:null,kind:[`subtitles`,`captions`,`descriptions`,`chapters`,`metadata`],srclang:null}},ul:{children:[`li`,`script`,`template`,`ul`,`ol`]},var:H,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:[`anonymous`,`use-credentials`],preload:[`auto`,`metadata`,`none`],autoplay:[`autoplay`],mediagroup:[`movie`],muted:[`muted`],controls:[`controls`]}},wbr:H},U={accesskey:null,class:null,contenteditable:V,contextmenu:null,dir:[`ltr`,`rtl`,`auto`],draggable:[`true`,`false`,`auto`],dropzone:[`copy`,`move`,`link`,`string:`,`file:`],hidden:[`hidden`],id:null,inert:[`inert`],itemid:null,itemprop:null,itemref:null,itemscope:[`itemscope`],itemtype:null,lang:[`ar`,`bn`,`de`,`en-GB`,`en-US`,`es`,`fr`,`hi`,`id`,`ja`,`pa`,`pt`,`ru`,`tr`,`zh`],spellcheck:V,autocorrect:V,autocapitalize:V,style:null,tabindex:null,title:null,translate:[`yes`,`no`],rel:[`stylesheet`,`alternate`,`author`,`bookmark`,`help`,`license`,`next`,`nofollow`,`noreferrer`,`prefetch`,`prev`,`search`,`tag`],role:`alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer`.split(` `),"aria-activedescendant":null,"aria-atomic":V,"aria-autocomplete":[`inline`,`list`,`both`,`none`],"aria-busy":V,"aria-checked":[`true`,`false`,`mixed`,`undefined`],"aria-controls":null,"aria-describedby":null,"aria-disabled":V,"aria-dropeffect":null,"aria-expanded":[`true`,`false`,`undefined`],"aria-flowto":null,"aria-grabbed":[`true`,`false`,`undefined`],"aria-haspopup":V,"aria-hidden":V,"aria-invalid":[`true`,`false`,`grammar`,`spelling`],"aria-label":null,"aria-labelledby":null,"aria-level":null,"aria-live":[`off`,`polite`,`assertive`],"aria-multiline":V,"aria-multiselectable":V,"aria-owns":null,"aria-posinset":null,"aria-pressed":[`true`,`false`,`mixed`,`undefined`],"aria-readonly":V,"aria-relevant":null,"aria-required":V,"aria-selected":[`true`,`false`,`undefined`],"aria-setsize":null,"aria-sort":[`ascending`,`descending`,`none`,`other`],"aria-valuemax":null,"aria-valuemin":null,"aria-valuenow":null,"aria-valuetext":null},W=`beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload`.split(` `).map(e=>`on`+e);for(let e of W)U[e]=null;var G=class{constructor(e,t){this.tags={...Je,...e},this.globalAttrs={...U,...t},this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}};G.default=new G;function K(e,t,n=e.length){if(!t)return``;let r=t.firstChild,i=r&&r.getChild(`TagName`);return i?e.sliceString(i.from,Math.min(i.to,n)):``}function q(e,t=!1){for(;e;e=e.parent)if(e.name==`Element`)if(t)t=!1;else return e;return null}function J(e,t,n){return n.tags[K(e,q(t))]?.children||n.allTags}function Y(e,t){let n=[];for(let r=q(t);r&&!r.type.isTop;r=q(r.parent)){let i=K(e,r);if(i&&r.lastChild.name==`CloseTag`)break;i&&n.indexOf(i)<0&&(t.name==`EndTag`||t.from>=r.firstChild.to)&&n.push(i)}return n}var X=/^[:\-\.\w\u00b7-\uffff]*$/;function Z(e,t,n,r,i){let a=/\s*>/.test(e.sliceDoc(i,i+5))?``:`>`,o=q(n,n.name==`StartTag`||n.name==`TagName`);return{from:r,to:i,options:J(e.doc,o,t).map(e=>({label:e,type:`type`})).concat(Y(e.doc,n).map((e,t)=>({label:`/`+e,apply:`/`+e+a,type:`type`,boost:99-t}))),validFor:/^\/?[:\-\.\w\u00b7-\uffff]*$/}}function Ye(e,t,n,r){let i=/\s*>/.test(e.sliceDoc(r,r+5))?``:`>`;return{from:n,to:r,options:Y(e.doc,t).map((e,t)=>({label:e,apply:e+i,type:`type`,boost:99-t})),validFor:X}}function Xe(e,t,n,r){let i=[],a=0;for(let r of J(e.doc,n,t))i.push({label:`<`+r,type:`type`});for(let t of Y(e.doc,n))i.push({label:``,type:`type`,boost:99-a++});return{from:r,to:r,options:i,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}function Ze(e,t,n,r,i){let a=q(n),o=a?t.tags[K(e.doc,a)]:null,s=o&&o.attrs?Object.keys(o.attrs):[];return{from:r,to:i,options:(o&&o.globalAttrs===!1?s:s.length?s.concat(t.globalAttrNames):t.globalAttrNames).map(e=>({label:e,type:`property`})),validFor:X}}function Qe(e,t,n,r,i){let a=n.parent?.getChild(`AttributeName`),o=[],s;if(a){let c=e.sliceDoc(a.from,a.to),l=t.globalAttrs[c];if(!l){let r=q(n),i=r?t.tags[K(e.doc,r)]:null;l=i?.attrs&&i.attrs[c]}if(l){let t=e.sliceDoc(r,i).toLowerCase(),n=`"`,a=`"`;/^['"]/.test(t)?(s=t[0]==`"`?/^[^"]*$/:/^[^']*$/,n=``,a=e.sliceDoc(i,i+1)==t[0]?``:t[0],t=t.slice(1),r++):s=/^[^\s<>='"]*$/;for(let e of l)o.push({label:e,apply:n+e+a,type:`constant`})}}return{from:r,to:i,options:o,validFor:s}}function Q(e,t){let{state:n,pos:r}=t,i=l(n).resolveInner(r,-1),a=i.resolve(r);for(let e=r,t;a==i&&(t=i.childBefore(e));){let n=t.lastChild;if(!n||!n.type.isError||n.fromQ(r,e)}var tt=f.parser.configure({top:`SingleExpression`}),nt=[{tag:`script`,attrs:e=>e.type==`text/typescript`||e.lang==`ts`,parser:se.parser},{tag:`script`,attrs:e=>e.type==`text/babel`||e.type==`text/jsx`,parser:ae.parser},{tag:`script`,attrs:e=>e.type==`text/typescript-jsx`,parser:ie.parser},{tag:`script`,attrs(e){return/^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(e.type)},parser:tt},{tag:`script`,attrs(e){return!e.type||/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(e.type)},parser:f.parser},{tag:`style`,attrs(e){return(!e.lang||e.lang==`css`)&&(!e.type||/^(text\/)?(x-)?(stylesheet|css)$/i.test(e.type))},parser:d.parser}],rt=[{name:`style`,parser:d.parser.configure({top:`Styles`})}].concat(W.map(e=>({name:e,parser:f.parser}))),it=o.define({name:`html`,parser:qe.configure({props:[i.add({Element(e){let t=/^(\s*)(<\/)?/.exec(e.textAfter);return e.node.to<=e.pos+t[0].length?e.continue():e.lineIndent(e.node.from)+(t[2]?0:e.unit)},"OpenTag CloseTag SelfClosingTag"(e){return e.column(e.node.from)+e.unit},Document(e){if(e.pos+/\s*/.exec(e.textAfter)[0].lengthe.getChild(`TagName`)})]}),languageData:{commentTokens:{block:{open:``}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:`-_`}}),$=it.configure({wrap:I(nt,rt)});function at(e={}){let t=``,n;return e.matchClosingTags===!1&&(t=`noMatch`),e.selfClosingTags===!0&&(t=(t?t+` `:``)+`selfClosing`),(e.nestedLanguages&&e.nestedLanguages.length||e.nestedAttributes&&e.nestedAttributes.length)&&(n=I((e.nestedLanguages||[]).concat(nt),(e.nestedAttributes||[]).concat(rt))),new s(n?it.configure({wrap:n,dialect:t}):t?$.configure({dialect:t}):$,[$.data.of({autocomplete:et(e)}),e.autoCloseTags===!1?[]:st,oe().support,re().support])}var ot=new Set(`area base br col command embed frame hr img input keygen link meta param source track wbr menuitem`.split(` `)),st=r.inputHandler.of((e,t,n,r,i)=>{if(e.composing||e.state.readOnly||t!=n||r!=`>`&&r!=`/`||!$.isActiveAt(e.state,t,-1))return!1;let a=i(),{state:o}=a,s=o.changeByRange(e=>{let t=o.doc.sliceString(e.from-1,e.to)==r,{head:n}=e,i=l(o).resolveInner(n,-1),a;if(t&&r==`>`&&i.name==`EndTag`){let t=i.parent;if(t.parent?.lastChild?.name!=`CloseTag`&&(a=K(o.doc,t.parent,n))&&!ot.has(a))return{range:e,changes:{from:n,to:n+ +(o.doc.sliceString(n,n+1)===`>`),insert:``}}}else if(t&&r==`/`&&i.name==`IncompleteCloseTag`){let e=i.parent;if(i.from==n-2&&e.lastChild?.name!=`CloseTag`&&(a=K(o.doc,e,n))&&!ot.has(a)){let e=n+ +(o.doc.sliceString(n,n+1)===`>`),t=`${a}>`;return{range:ee.cursor(n+t.length,-1),changes:{from:n,to:e,insert:t}}}}return{range:e}});return s.changes.empty?!1:(e.dispatch([a,o.update(s,{userEvent:`input.complete`,scrollIntoView:!0})]),!0)});export{at as html,$e as htmlCompletionSource}; \ No newline at end of file +import{D as e,E as t,I as n,L as r,b as i,f as a,s as o,u as s,v as c,w as l,z as ee}from"./index-BkDx9KsG.js";import{n as u,r as te,t as ne}from"./dist-DeO3Qj-D.js";import{n as d,t as re}from"./dist-B-VEMnGR.js";import{a as ie,i as ae,n as oe,o as se,r as f}from"./dist-C-Q0Ulfg.js";var ce=55,le=1,ue=56,de=2,fe=57,pe=3,p=4,me=5,m=6,he=7,ge=8,h=9,g=10,_e=11,ve=12,ye=13,_=58,be=14,xe=15,v=59,y=21,Se=23,b=24,Ce=25,x=27,S=28,we=29,Te=32,Ee=35,De=37,Oe=38,ke=0,Ae=1,je={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},Me={dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},C={dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}};function Ne(e){return e==45||e==46||e==58||e>=65&&e<=90||e==95||e>=97&&e<=122||e>=161}var w=null,T=null,E=0;function D(e,t){let n=e.pos+t;if(E==n&&T==e)return w;let r=e.peek(t),i=``;for(;Ne(r);)i+=String.fromCharCode(r),r=e.peek(++t);return T=e,E=n,w=i?i.toLowerCase():r==Pe||r==Fe?void 0:null}var O=60,k=62,A=47,Pe=63,Fe=33,Ie=45;function j(e,t){this.name=e,this.parent=t}var Le=[m,g,he,ge,h],Re=new ne({start:null,shift(e,t,n,r){return Le.indexOf(t)>-1?new j(D(r,1)||``,e):e},reduce(e,t){return t==y&&e?e.parent:e},reuse(e,t,n,r){let i=t.type.id;return i==m||i==De?new j(D(r,1)||``,e):e},strict:!1}),ze=new u((e,t)=>{if(e.next!=O){e.next<0&&t.context&&e.acceptToken(_);return}e.advance();let n=e.next==A;n&&e.advance();let r=D(e,0);if(r===void 0)return;if(!r)return e.acceptToken(n?xe:be);let i=t.context?t.context.name:null;if(n){if(r==i)return e.acceptToken(_e);if(i&&Me[i])return e.acceptToken(_,-2);if(t.dialectEnabled(ke))return e.acceptToken(ve);for(let e=t.context;e;e=e.parent)if(e.name==r)return;e.acceptToken(ye)}else{if(r==`script`)return e.acceptToken(he);if(r==`style`)return e.acceptToken(ge);if(r==`textarea`)return e.acceptToken(h);if(je.hasOwnProperty(r))return e.acceptToken(g);i&&C[i]&&C[i][r]?e.acceptToken(_,-1):e.acceptToken(m)}},{contextual:!0}),Be=new u(e=>{for(let t=0,n=0;;n++){if(e.next<0){n&&e.acceptToken(v);break}if(e.next==Ie)t++;else if(e.next==k&&t>=2){n>=3&&e.acceptToken(v,-2);break}else t=0;e.advance()}});function Ve(e){for(;e;e=e.parent)if(e.name==`svg`||e.name==`math`)return!0;return!1}var He=new u((e,t)=>{if(e.next==A&&e.peek(1)==k){let n=t.dialectEnabled(Ae)||Ve(t.context);e.acceptToken(n?me:p,2)}else e.next==k&&e.acceptToken(p,1)});function M(e,t,n){let r=2+e.length;return new u(i=>{for(let a=0,o=0,s=0;;s++){if(i.next<0){s&&i.acceptToken(t);break}if(a==0&&i.next==O||a==1&&i.next==A||a>=2&&ao?i.acceptToken(t,-o):i.acceptToken(n,-(o-2));break}else if((i.next==10||i.next==13)&&s){i.acceptToken(t,1);break}else a=o=0;i.advance()}})}var Ue=M(`script`,ce,le),We=M(`style`,ue,de),Ge=M(`textarea`,fe,pe),Ke=t({"Text RawText IncompleteTag IncompleteCloseTag":e.content,"StartTag StartCloseTag SelfClosingEndTag EndTag":e.angleBracket,TagName:e.tagName,"MismatchedCloseTag/TagName":[e.tagName,e.invalid],AttributeName:e.attributeName,"AttributeValue UnquotedAttributeValue":e.attributeValue,Is:e.definitionOperator,"EntityReference CharacterReference":e.character,Comment:e.blockComment,ProcessingInst:e.processingInstruction,DoctypeDecl:e.documentMeta}),qe=te.deserialize({version:14,states:",xOVO!rOOO!ZQ#tO'#CrO!`Q#tO'#C{O!eQ#tO'#DOO!jQ#tO'#DRO!oQ#tO'#DTO!tOaO'#CqO#PObO'#CqO#[OdO'#CqO$kO!rO'#CqOOO`'#Cq'#CqO$rO$fO'#DUO$zQ#tO'#DWO%PQ#tO'#DXOOO`'#Dl'#DlOOO`'#DZ'#DZQVO!rOOO%UQ&rO,59^O%aQ&rO,59gO%lQ&rO,59jO%wQ&rO,59mO&SQ&rO,59oOOOa'#D_'#D_O&_OaO'#CyO&jOaO,59]OOOb'#D`'#D`O&rObO'#C|O&}ObO,59]OOOd'#Da'#DaO'VOdO'#DPO'bOdO,59]OOO`'#Db'#DbO'jO!rO,59]O'qQ#tO'#DSOOO`,59],59]OOOp'#Dc'#DcO'vO$fO,59pOOO`,59p,59pO(OQ#|O,59rO(TQ#|O,59sOOO`-E7X-E7XO(YQ&rO'#CtOOQW'#D['#D[O(hQ&rO1G.xOOOa1G.x1G.xOOO`1G/Z1G/ZO(sQ&rO1G/ROOOb1G/R1G/RO)OQ&rO1G/UOOOd1G/U1G/UO)ZQ&rO1G/XOOO`1G/X1G/XO)fQ&rO1G/ZOOOa-E7]-E7]O)qQ#tO'#CzOOO`1G.w1G.wOOOb-E7^-E7^O)vQ#tO'#C}OOOd-E7_-E7_O){Q#tO'#DQOOO`-E7`-E7`O*QQ#|O,59nOOOp-E7a-E7aOOO`1G/[1G/[OOO`1G/^1G/^OOO`1G/_1G/_O*VQ,UO,59`OOQW-E7Y-E7YOOOa7+$d7+$dOOO`7+$u7+$uOOOb7+$m7+$mOOOd7+$p7+$pOOO`7+$s7+$sO*bQ#|O,59fO*gQ#|O,59iO*lQ#|O,59lOOO`1G/Y1G/YO*qO7[O'#CwO+SOMhO'#CwOOQW1G.z1G.zOOO`1G/Q1G/QOOO`1G/T1G/TOOO`1G/W1G/WOOOO'#D]'#D]O+eO7[O,59cOOQW,59c,59cOOOO'#D^'#D^O+vOMhO,59cOOOO-E7Z-E7ZOOQW1G.}1G.}OOOO-E7[-E7[",stateData:`,c~O!_OS~OUSOVPOWQOXROYTO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O|_O!eZO~OgaO~OgbO~OgcO~OgdO~OgeO~O!XfOPmP![mP~O!YiOQpP![pP~O!ZlORsP![sP~OUSOVPOWQOXROYTOZqO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O!eZO~O![rO~P#gO!]sO!fuO~OgvO~OgwO~OS|OT}OiyO~OS!POT}OiyO~OS!ROT}OiyO~OS!TOT}OiyO~OS}OT}OiyO~O!XfOPmX![mX~OP!WO![!XO~O!YiOQpX![pX~OQ!ZO![!XO~O!ZlORsX![sX~OR!]O![!XO~O![!XO~P#gOg!_O~O!]sO!f!aO~OS!bO~OS!cO~Oj!dOShXThXihX~OS!fOT!gOiyO~OS!hOT!gOiyO~OS!iOT!gOiyO~OS!jOT!gOiyO~OS!gOT!gOiyO~Og!kO~Og!lO~Og!mO~OS!nO~Ol!qO!a!oO!c!pO~OS!rO~OS!sO~OS!tO~Ob!uOc!uOd!uO!a!wO!b!uO~Ob!xOc!xOd!xO!c!wO!d!xO~Ob!uOc!uOd!uO!a!{O!b!uO~Ob!xOc!xOd!xO!c!{O!d!xO~OT~cbd!ey|!e~`,goto:"%q!aPPPPPPPPPPPPPPPPPPPPP!b!hP!nPP!zP!}#Q#T#Z#^#a#g#j#m#s#y!bP!b!bP$P$V$m$s$y%P%V%]%cPPPPPPPP%iX^OX`pXUOX`pezabcde{!O!Q!S!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ!ObQ!QcQ!SdQ!UeZ!e{!O!Q!S!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp",nodeNames:`⚠ StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl`,maxTerm:68,context:Re,nodeProps:[[`closedBy`,-10,1,2,3,7,8,9,10,11,12,13,`EndTag`,6,`EndTag SelfClosingEndTag`,-4,22,31,34,37,`CloseTag`],[`openedBy`,4,`StartTag StartCloseTag`,5,`StartTag`,-4,30,33,36,38,`OpenTag`],[`group`,-10,14,15,18,19,20,21,40,41,42,43,`Entity`,17,`Entity TextContent`,-3,29,32,35,`TextContent Entity`],[`isolate`,-11,22,30,31,33,34,36,37,38,39,42,43,`ltr`,-3,27,28,40,``]],propSources:[Ke],skippedNodes:[0],repeatNodeCount:9,tokenData:"!]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zblWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n<%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q<%lO7S!R7qOb!R!R7tP;=`<%l7S!Z8OYlWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z8qP;=`<%l5u!_8{iiSlWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbiSlWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VP<%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXiSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!V>SP;=`<%l;{!_>YP;=`<%l8t!_>dhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TalWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq<%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At<%lOAY!RAtOc!R!RAwP;=`<%lAY!ZBRYlWc!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!ZBtP;=`<%l@O!_COhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbiSlWc!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbiSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|<%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXiSc!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!VHPP;=`<%lE{!_HVP;=`<%lBw!ZHcW!cxaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t!aIYliSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_kiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_XaP!b`!dp!fQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!aNZ!ZiSgQaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`<%lMz!R!$ZY!b`!dpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s<%lO*V!R!%Q]!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s<%lO*V!R!&QX!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s<%lO*V!R!&vV!b`!dp!ePOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!'dX!b`!dpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s<%lO*V!R!(WX!b`!dpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s<%lO*V!R!(zX!b`!dpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s<%lO*V!R!)nX!b`!dpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s<%lO*V!R!*bX!b`!dpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s<%lO*V!R!+UX!b`!dpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s<%lO*V!R!+xY!b`!dpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y<%lO!+qq!,mV!dpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U<%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k<%lO!-SP!-kO|PP!-nP;=`<%l!-Sq!-xS!dp|POv(Vx;'S(V;'S;=`(h<%lO(Vq!.XP;=`<%l!,ha!.aX!b`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d<%lO!.[a!/TT!b`|POr)esv)ew;'S)e;'S;=`)y<%lO)ea!/gP;=`<%l!.[!R!/sV!b`!dp|POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!0]P;=`<%l!+q!R!0gX!b`!dpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s<%lO*V!R!1ZX!b`!dpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s<%lO*V!R!1}X!b`!dpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s<%lO*V!R!2qX!b`!dpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s<%lO*V!R!3eX!b`!dpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s<%lO*V!R!4XX!b`!dpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s<%lO*V!R!4{Y!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r<%lO!4tq!5pV!dpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V<%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q<%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q<%lO!6VP!7QOyPP!7TP;=`<%l!6Vq!7]V!dpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V<%lO!5kq!7yS!dpyPOv(Vx;'S(V;'S;=`(h<%lO(Vq!8YP;=`<%l!5ka!8bX!b`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V<%lO!8]a!9SX!b`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V<%lO!8]a!9vT!b`yPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!:YP;=`<%l!8]!R!:dY!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r<%lO!4t!R!;]V!b`!dpyPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!;uP;=`<%l!4t!V!{let n=e.type.id;if(n==we)return F(e,t,r);if(n==Te)return F(e,t,i);if(n==Ee)return F(e,t,a);if(n==y&&o.length){let n=e.node,r=n.firstChild,i=r&&P(r,t),a;if(i){for(let e of o)if(e.tag==i&&(!e.attrs||e.attrs(a||=N(r,t)))){let t=n.lastChild,i=t.type.id==Oe?t.from:n.to;if(i>r.to)return{parser:e.parser,overlay:[{from:r.to,to:i}]}}}}if(s&&n==b){let n=e.node,r;if(r=n.firstChild){let e=s[t.read(r.from,r.to)];if(e)for(let r of e){if(r.tagName&&r.tagName!=P(n.parent,t))continue;let e=n.lastChild;if(e.type.id==x){let t=e.from+1,n=e.lastChild,i=e.to-(n&&n.isError?0:1);if(i>t)return{parser:r.parser,overlay:[{from:t,to:i}],bracketed:!0}}else if(e.type.id==S)return{parser:r.parser,overlay:[{from:e.from,to:e.to}]}}}}return null})}var L=[`_blank`,`_self`,`_top`,`_parent`],R=[`ascii`,`utf-8`,`utf-16`,`latin1`,`latin1`],z=[`get`,`post`,`put`,`delete`],B=[`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`],V=[`true`,`false`],H={},Je={a:{attrs:{href:null,ping:null,type:null,media:null,target:L,hreflang:null}},abbr:H,address:H,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:[`default`,`rect`,`circle`,`poly`]}},article:H,aside:H,audio:{attrs:{src:null,mediagroup:null,crossorigin:[`anonymous`,`use-credentials`],preload:[`none`,`metadata`,`auto`],autoplay:[`autoplay`],loop:[`loop`],controls:[`controls`]}},b:H,base:{attrs:{href:null,target:L}},bdi:H,bdo:H,blockquote:{attrs:{cite:null}},body:H,br:H,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:[`autofocus`],disabled:[`autofocus`],formenctype:B,formmethod:z,formnovalidate:[`novalidate`],formtarget:L,type:[`submit`,`reset`,`button`]}},canvas:{attrs:{width:null,height:null}},caption:H,center:H,cite:H,code:H,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:[`command`,`checkbox`,`radio`],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:[`disabled`],checked:[`checked`]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:[`disabled`],multiple:[`multiple`]}},datalist:{attrs:{data:null}},dd:H,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:[`open`]}},dfn:H,div:H,dl:H,dt:H,em:H,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:[`disabled`],form:null,name:null}},figcaption:H,figure:H,footer:H,form:{attrs:{action:null,name:null,"accept-charset":R,autocomplete:[`on`,`off`],enctype:B,method:z,novalidate:[`novalidate`],target:L}},h1:H,h2:H,h3:H,h4:H,h5:H,h6:H,head:{children:[`title`,`base`,`link`,`style`,`meta`,`script`,`noscript`,`command`]},header:H,hgroup:H,hr:H,html:{attrs:{manifest:null}},i:H,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:[`allow-top-navigation`,`allow-same-origin`,`allow-forms`,`allow-scripts`],seamless:[`seamless`]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:[`anonymous`,`use-credentials`]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:[`audio/*`,`video/*`,`image/*`],autocomplete:[`on`,`off`],autofocus:[`autofocus`],checked:[`checked`],disabled:[`disabled`],formenctype:B,formmethod:z,formnovalidate:[`novalidate`],formtarget:L,multiple:[`multiple`],readonly:[`readonly`],required:[`required`],type:[`hidden`,`text`,`search`,`tel`,`url`,`email`,`password`,`datetime`,`date`,`month`,`week`,`time`,`datetime-local`,`number`,`range`,`color`,`checkbox`,`radio`,`file`,`submit`,`image`,`reset`,`button`]}},ins:{attrs:{cite:null,datetime:null}},kbd:H,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:[`autofocus`],disabled:[`disabled`],keytype:[`RSA`]}},label:{attrs:{for:null,form:null}},legend:H,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:null,media:null,sizes:[`all`,`16x16`,`16x16 32x32`,`16x16 32x32 64x64`]}},map:{attrs:{name:null}},mark:H,menu:{attrs:{label:null,type:[`list`,`context`,`toolbar`]}},meta:{attrs:{content:null,charset:R,name:[`viewport`,`application-name`,`author`,`description`,`generator`,`keywords`],"http-equiv":[`content-language`,`content-type`,`default-style`,`refresh`]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:H,noscript:H,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:[`typemustmatch`]}},ol:{attrs:{reversed:[`reversed`],start:null,type:[`1`,`a`,`A`,`i`,`I`]},children:[`li`,`script`,`template`,`ul`,`ol`]},optgroup:{attrs:{disabled:[`disabled`],label:null}},option:{attrs:{disabled:[`disabled`],label:null,selected:[`selected`],value:null}},output:{attrs:{for:null,form:null,name:null}},p:H,param:{attrs:{name:null,value:null}},pre:H,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:H,rt:H,ruby:H,samp:H,script:{attrs:{type:[`text/javascript`],src:null,async:[`async`],defer:[`defer`],charset:R}},section:H,select:{attrs:{form:null,name:null,size:null,autofocus:[`autofocus`],disabled:[`disabled`],multiple:[`multiple`]}},slot:{attrs:{name:null}},small:H,source:{attrs:{src:null,type:null,media:null}},span:H,strong:H,style:{attrs:{type:[`text/css`],media:null,scoped:null}},sub:H,summary:H,sup:H,table:H,tbody:H,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:H,textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:[`autofocus`],disabled:[`disabled`],readonly:[`readonly`],required:[`required`],wrap:[`soft`,`hard`]}},tfoot:H,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:[`row`,`col`,`rowgroup`,`colgroup`]}},thead:H,time:{attrs:{datetime:null}},title:H,tr:H,track:{attrs:{src:null,label:null,default:null,kind:[`subtitles`,`captions`,`descriptions`,`chapters`,`metadata`],srclang:null}},ul:{children:[`li`,`script`,`template`,`ul`,`ol`]},var:H,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:[`anonymous`,`use-credentials`],preload:[`auto`,`metadata`,`none`],autoplay:[`autoplay`],mediagroup:[`movie`],muted:[`muted`],controls:[`controls`]}},wbr:H},U={accesskey:null,class:null,contenteditable:V,contextmenu:null,dir:[`ltr`,`rtl`,`auto`],draggable:[`true`,`false`,`auto`],dropzone:[`copy`,`move`,`link`,`string:`,`file:`],hidden:[`hidden`],id:null,inert:[`inert`],itemid:null,itemprop:null,itemref:null,itemscope:[`itemscope`],itemtype:null,lang:[`ar`,`bn`,`de`,`en-GB`,`en-US`,`es`,`fr`,`hi`,`id`,`ja`,`pa`,`pt`,`ru`,`tr`,`zh`],spellcheck:V,autocorrect:V,autocapitalize:V,style:null,tabindex:null,title:null,translate:[`yes`,`no`],rel:[`stylesheet`,`alternate`,`author`,`bookmark`,`help`,`license`,`next`,`nofollow`,`noreferrer`,`prefetch`,`prev`,`search`,`tag`],role:`alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer`.split(` `),"aria-activedescendant":null,"aria-atomic":V,"aria-autocomplete":[`inline`,`list`,`both`,`none`],"aria-busy":V,"aria-checked":[`true`,`false`,`mixed`,`undefined`],"aria-controls":null,"aria-describedby":null,"aria-disabled":V,"aria-dropeffect":null,"aria-expanded":[`true`,`false`,`undefined`],"aria-flowto":null,"aria-grabbed":[`true`,`false`,`undefined`],"aria-haspopup":V,"aria-hidden":V,"aria-invalid":[`true`,`false`,`grammar`,`spelling`],"aria-label":null,"aria-labelledby":null,"aria-level":null,"aria-live":[`off`,`polite`,`assertive`],"aria-multiline":V,"aria-multiselectable":V,"aria-owns":null,"aria-posinset":null,"aria-pressed":[`true`,`false`,`mixed`,`undefined`],"aria-readonly":V,"aria-relevant":null,"aria-required":V,"aria-selected":[`true`,`false`,`undefined`],"aria-setsize":null,"aria-sort":[`ascending`,`descending`,`none`,`other`],"aria-valuemax":null,"aria-valuemin":null,"aria-valuenow":null,"aria-valuetext":null},W=`beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload`.split(` `).map(e=>`on`+e);for(let e of W)U[e]=null;var G=class{constructor(e,t){this.tags={...Je,...e},this.globalAttrs={...U,...t},this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}};G.default=new G;function K(e,t,n=e.length){if(!t)return``;let r=t.firstChild,i=r&&r.getChild(`TagName`);return i?e.sliceString(i.from,Math.min(i.to,n)):``}function q(e,t=!1){for(;e;e=e.parent)if(e.name==`Element`)if(t)t=!1;else return e;return null}function J(e,t,n){return n.tags[K(e,q(t))]?.children||n.allTags}function Y(e,t){let n=[];for(let r=q(t);r&&!r.type.isTop;r=q(r.parent)){let i=K(e,r);if(i&&r.lastChild.name==`CloseTag`)break;i&&n.indexOf(i)<0&&(t.name==`EndTag`||t.from>=r.firstChild.to)&&n.push(i)}return n}var X=/^[:\-\.\w\u00b7-\uffff]*$/;function Z(e,t,n,r,i){let a=/\s*>/.test(e.sliceDoc(i,i+5))?``:`>`,o=q(n,n.name==`StartTag`||n.name==`TagName`);return{from:r,to:i,options:J(e.doc,o,t).map(e=>({label:e,type:`type`})).concat(Y(e.doc,n).map((e,t)=>({label:`/`+e,apply:`/`+e+a,type:`type`,boost:99-t}))),validFor:/^\/?[:\-\.\w\u00b7-\uffff]*$/}}function Ye(e,t,n,r){let i=/\s*>/.test(e.sliceDoc(r,r+5))?``:`>`;return{from:n,to:r,options:Y(e.doc,t).map((e,t)=>({label:e,apply:e+i,type:`type`,boost:99-t})),validFor:X}}function Xe(e,t,n,r){let i=[],a=0;for(let r of J(e.doc,n,t))i.push({label:`<`+r,type:`type`});for(let t of Y(e.doc,n))i.push({label:``,type:`type`,boost:99-a++});return{from:r,to:r,options:i,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}function Ze(e,t,n,r,i){let a=q(n),o=a?t.tags[K(e.doc,a)]:null,s=o&&o.attrs?Object.keys(o.attrs):[];return{from:r,to:i,options:(o&&o.globalAttrs===!1?s:s.length?s.concat(t.globalAttrNames):t.globalAttrNames).map(e=>({label:e,type:`property`})),validFor:X}}function Qe(e,t,n,r,i){let a=n.parent?.getChild(`AttributeName`),o=[],s;if(a){let c=e.sliceDoc(a.from,a.to),l=t.globalAttrs[c];if(!l){let r=q(n),i=r?t.tags[K(e.doc,r)]:null;l=i?.attrs&&i.attrs[c]}if(l){let t=e.sliceDoc(r,i).toLowerCase(),n=`"`,a=`"`;/^['"]/.test(t)?(s=t[0]==`"`?/^[^"]*$/:/^[^']*$/,n=``,a=e.sliceDoc(i,i+1)==t[0]?``:t[0],t=t.slice(1),r++):s=/^[^\s<>='"]*$/;for(let e of l)o.push({label:e,apply:n+e+a,type:`constant`})}}return{from:r,to:i,options:o,validFor:s}}function Q(e,t){let{state:n,pos:r}=t,i=l(n).resolveInner(r,-1),a=i.resolve(r);for(let e=r,t;a==i&&(t=i.childBefore(e));){let n=t.lastChild;if(!n||!n.type.isError||n.fromQ(r,e)}var tt=f.parser.configure({top:`SingleExpression`}),nt=[{tag:`script`,attrs:e=>e.type==`text/typescript`||e.lang==`ts`,parser:se.parser},{tag:`script`,attrs:e=>e.type==`text/babel`||e.type==`text/jsx`,parser:ae.parser},{tag:`script`,attrs:e=>e.type==`text/typescript-jsx`,parser:ie.parser},{tag:`script`,attrs(e){return/^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(e.type)},parser:tt},{tag:`script`,attrs(e){return!e.type||/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(e.type)},parser:f.parser},{tag:`style`,attrs(e){return(!e.lang||e.lang==`css`)&&(!e.type||/^(text\/)?(x-)?(stylesheet|css)$/i.test(e.type))},parser:d.parser}],rt=[{name:`style`,parser:d.parser.configure({top:`Styles`})}].concat(W.map(e=>({name:e,parser:f.parser}))),it=o.define({name:`html`,parser:qe.configure({props:[i.add({Element(e){let t=/^(\s*)(<\/)?/.exec(e.textAfter);return e.node.to<=e.pos+t[0].length?e.continue():e.lineIndent(e.node.from)+(t[2]?0:e.unit)},"OpenTag CloseTag SelfClosingTag"(e){return e.column(e.node.from)+e.unit},Document(e){if(e.pos+/\s*/.exec(e.textAfter)[0].lengthe.getChild(`TagName`)})]}),languageData:{commentTokens:{block:{open:``}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:`-_`}}),$=it.configure({wrap:I(nt,rt)});function at(e={}){let t=``,n;return e.matchClosingTags===!1&&(t=`noMatch`),e.selfClosingTags===!0&&(t=(t?t+` `:``)+`selfClosing`),(e.nestedLanguages&&e.nestedLanguages.length||e.nestedAttributes&&e.nestedAttributes.length)&&(n=I((e.nestedLanguages||[]).concat(nt),(e.nestedAttributes||[]).concat(rt))),new s(n?it.configure({wrap:n,dialect:t}):t?$.configure({dialect:t}):$,[$.data.of({autocomplete:et(e)}),e.autoCloseTags===!1?[]:st,oe().support,re().support])}var ot=new Set(`area base br col command embed frame hr img input keygen link meta param source track wbr menuitem`.split(` `)),st=r.inputHandler.of((e,t,n,r,i)=>{if(e.composing||e.state.readOnly||t!=n||r!=`>`&&r!=`/`||!$.isActiveAt(e.state,t,-1))return!1;let a=i(),{state:o}=a,s=o.changeByRange(e=>{let t=o.doc.sliceString(e.from-1,e.to)==r,{head:n}=e,i=l(o).resolveInner(n,-1),a;if(t&&r==`>`&&i.name==`EndTag`){let t=i.parent;if(t.parent?.lastChild?.name!=`CloseTag`&&(a=K(o.doc,t.parent,n))&&!ot.has(a))return{range:e,changes:{from:n,to:n+ +(o.doc.sliceString(n,n+1)===`>`),insert:``}}}else if(t&&r==`/`&&i.name==`IncompleteCloseTag`){let e=i.parent;if(i.from==n-2&&e.lastChild?.name!=`CloseTag`&&(a=K(o.doc,e,n))&&!ot.has(a)){let e=n+ +(o.doc.sliceString(n,n+1)===`>`),t=`${a}>`;return{range:ee.cursor(n+t.length,-1),changes:{from:n,to:e,insert:t}}}}return{range:e}});return s.changes.empty?!1:(e.dispatch([a,o.update(s,{userEvent:`input.complete`,scrollIntoView:!0})]),!0)});export{at as html,$e as htmlCompletionSource}; \ No newline at end of file diff --git a/ksadk/server/static/assets/dist-BytlxIDT.js b/ksadk/server/static/assets/dist-BQCggVji.js similarity index 96% rename from ksadk/server/static/assets/dist-BytlxIDT.js rename to ksadk/server/static/assets/dist-BQCggVji.js index 9a6481ec..f9a32b95 100644 --- a/ksadk/server/static/assets/dist-BytlxIDT.js +++ b/ksadk/server/static/assets/dist-BQCggVji.js @@ -1 +1 @@ -import{D as e,E as t,I as n,s as r,u as i}from"./index-8ipRcQ-M.js";import{n as a,r as o}from"./dist-C_wsv-Qd.js";import{r as s}from"./dist-DnfXs8Vn.js";import{html as c}from"./dist-BjU6y-A2.js";var l=1,u=33,d=34,f=35,p=36,m=new a(e=>{let t=e.pos;for(;;){if(e.next==10){e.advance();break}else if(e.next==123&&e.peek(1)==123||e.next<0)break;e.advance()}e.pos>t&&e.acceptToken(l)});function h(e,t,n){return new a(r=>{let i=r.pos;for(;r.next!=e&&r.next>=0&&(n||r.next!=38&&(r.next!=123||r.peek(1)!=123));)r.advance();r.pos>i&&r.acceptToken(t)})}var g=h(39,u,!1),_=h(34,d,!1),v=h(39,f,!0),y=h(34,p,!0),b=o.deserialize({version:14,states:"(jOVOqOOOeQpOOOvO!bO'#CaOOOP'#Cx'#CxQVOqOOO!OQpO'#CfO!WQpO'#ClO!]QpO'#CrO!bQpO'#CsOOQO'#Cv'#CvQ!gQpOOQ!lQpOOQ!qQpOOOOOV,58{,58{O!vOpO,58{OOOP-E6v-E6vO!{QpO,59QO#TQpO,59QOOQO,59W,59WO#YQpO,59^OOQO,59_,59_O#_QpOOO#_QpOOO#gQpOOOOOV1G.g1G.gO#oQpO'#CyO#tQpO1G.lOOQO1G.l1G.lO#|QpO1G.lOOQO1G.x1G.xO$UO`O'#DUO$ZOWO'#DUOOQO'#Co'#CoQOQpOOOOQO'#Cu'#CuO$`OtO'#CwO$qOrO'#CwOOQO,59e,59eOOQO-E6w-E6wOOQO7+$W7+$WO%SQpO7+$WO%[QpO7+$WOOOO'#Cp'#CpO%aOpO,59pOOOO'#Cq'#CqO%fOpO,59pOOOS'#Cz'#CzO%kOtO,59cOOQO,59c,59cOOOQ'#C{'#C{O%|OrO,59cO&_QpO<e.name==`InterpolationContent`?C:null)}),E=S.configure({wrap:n((e,t)=>e.name==`InterpolationContent`?C:e.name==`AttributeInterpolation`?e.node.parent?.name==`StatementAttributeValue`?w:C:null),top:`Attribute`}),D={parser:T},O={parser:E},k=c({selfClosingTags:!0});function A(e){return e.configure({wrap:n(M)},`angular`)}var j=A(k.language);function M(e,t){switch(e.name){case`Attribute`:return/^[*#(\[]|\{\{/.test(t.read(e.from,e.to))?O:null;case`Text`:return D}return null}function N(e={}){let t=k;if(e.base){if(e.base.language.name!=`html`||!(e.base.language instanceof r))throw RangeError(`The base option must be the result of calling html(...)`);t=e.base}return new i(t.language==k.language?j:A(t.language),[t.support,t.language.data.of({closeBrackets:{brackets:[`[`,`{`,`"`]},indentOnInput:/^\s*[\}\]]$/})])}export{N as angular}; \ No newline at end of file +import{D as e,E as t,I as n,s as r,u as i}from"./index-BkDx9KsG.js";import{n as a,r as o}from"./dist-DeO3Qj-D.js";import{r as s}from"./dist-C-Q0Ulfg.js";import{html as c}from"./dist-B6XMlZpc.js";var l=1,u=33,d=34,f=35,p=36,m=new a(e=>{let t=e.pos;for(;;){if(e.next==10){e.advance();break}else if(e.next==123&&e.peek(1)==123||e.next<0)break;e.advance()}e.pos>t&&e.acceptToken(l)});function h(e,t,n){return new a(r=>{let i=r.pos;for(;r.next!=e&&r.next>=0&&(n||r.next!=38&&(r.next!=123||r.peek(1)!=123));)r.advance();r.pos>i&&r.acceptToken(t)})}var g=h(39,u,!1),_=h(34,d,!1),v=h(39,f,!0),y=h(34,p,!0),b=o.deserialize({version:14,states:"(jOVOqOOOeQpOOOvO!bO'#CaOOOP'#Cx'#CxQVOqOOO!OQpO'#CfO!WQpO'#ClO!]QpO'#CrO!bQpO'#CsOOQO'#Cv'#CvQ!gQpOOQ!lQpOOQ!qQpOOOOOV,58{,58{O!vOpO,58{OOOP-E6v-E6vO!{QpO,59QO#TQpO,59QOOQO,59W,59WO#YQpO,59^OOQO,59_,59_O#_QpOOO#_QpOOO#gQpOOOOOV1G.g1G.gO#oQpO'#CyO#tQpO1G.lOOQO1G.l1G.lO#|QpO1G.lOOQO1G.x1G.xO$UO`O'#DUO$ZOWO'#DUOOQO'#Co'#CoQOQpOOOOQO'#Cu'#CuO$`OtO'#CwO$qOrO'#CwOOQO,59e,59eOOQO-E6w-E6wOOQO7+$W7+$WO%SQpO7+$WO%[QpO7+$WOOOO'#Cp'#CpO%aOpO,59pOOOO'#Cq'#CqO%fOpO,59pOOOS'#Cz'#CzO%kOtO,59cOOQO,59c,59cOOOQ'#C{'#C{O%|OrO,59cO&_QpO<e.name==`InterpolationContent`?C:null)}),E=S.configure({wrap:n((e,t)=>e.name==`InterpolationContent`?C:e.name==`AttributeInterpolation`?e.node.parent?.name==`StatementAttributeValue`?w:C:null),top:`Attribute`}),D={parser:T},O={parser:E},k=c({selfClosingTags:!0});function A(e){return e.configure({wrap:n(M)},`angular`)}var j=A(k.language);function M(e,t){switch(e.name){case`Attribute`:return/^[*#(\[]|\{\{/.test(t.read(e.from,e.to))?O:null;case`Text`:return D}return null}function N(e={}){let t=k;if(e.base){if(e.base.language.name!=`html`||!(e.base.language instanceof r))throw RangeError(`The base option must be the result of calling html(...)`);t=e.base}return new i(t.language==k.language?j:A(t.language),[t.support,t.language.data.of({closeBrackets:{brackets:[`[`,`{`,`"`]},indentOnInput:/^\s*[\}\]]$/})])}export{N as angular}; \ No newline at end of file diff --git a/ksadk/server/static/assets/dist-W-TIVntx.js b/ksadk/server/static/assets/dist-BZiMQVbN.js similarity index 98% rename from ksadk/server/static/assets/dist-W-TIVntx.js rename to ksadk/server/static/assets/dist-BZiMQVbN.js index 929fe8b9..aabb937f 100644 --- a/ksadk/server/static/assets/dist-W-TIVntx.js +++ b/ksadk/server/static/assets/dist-BZiMQVbN.js @@ -1 +1 @@ -import{D as e,E as t,_ as n,b as r,h as i,s as a,u as o,v as s}from"./index-8ipRcQ-M.js";import{n as c,r as l,t as u}from"./dist-C_wsv-Qd.js";var d=63,f=64,p=1,m=2,h=3,g=4,_=5,v=6,y=7,b=65,x=66,ee=8,S=9,C=10,w=11,T=12,E=13,D=19,O=20,k=29,A=33,te=34,ne=47,re=0,j=1,M=2,N=3,P=4,F=class{constructor(e,t,n){this.parent=e,this.depth=t,this.type=n,this.hash=(e?e.hash+e.hash<<8:0)+t+(t<<4)+n}};F.top=new F(null,-1,re);function I(e,t){for(let n=0,r=t-e.pos-1;;r--,n++){let t=e.peek(r);if(R(t)||t==-1)return n}}function L(e){return e==32||e==9}function R(e){return e==10||e==13}function z(e){return L(e)||R(e)}function B(e){return e<0||z(e)}var V=new u({start:F.top,reduce(e,t){return e.type==N&&(t==O||t==te)?e.parent:e},shift(e,t,n,r){if(t==h)return new F(e,I(r,r.pos),j);if(t==b||t==_)return new F(e,I(r,r.pos),M);if(t==d)return e.parent;if(t==D||t==A)return new F(e,0,N);if(t==E&&e.type==P)return e.parent;if(t==ne){let t=/[1-9]/.exec(r.read(r.pos,n.pos));if(t)return new F(e,e.depth+ +t[0],P)}return e},hash(e){return e.hash}});function H(e,t,n=0){return e.peek(n)==t&&e.peek(n+1)==t&&e.peek(n+2)==t&&B(e.peek(n+3))}var U=new c((e,t)=>{if(e.next==-1&&t.canShift(f))return e.acceptToken(f);let n=e.peek(-1);if((R(n)||n<0)&&t.context.type!=N){if(H(e,45))if(t.canShift(d))e.acceptToken(d);else return e.acceptToken(p,3);if(H(e,46))if(t.canShift(d))e.acceptToken(d);else return e.acceptToken(m,3);let n=0;for(;e.next==32;)n++,e.advance();(n{if(t.context.type==N){e.next==63&&(e.advance(),B(e.next)&&e.acceptToken(y));return}if(e.next==45)e.advance(),B(e.next)&&e.acceptToken(t.context.type==j&&t.context.depth==I(e,e.pos-1)?g:h);else if(e.next==63)e.advance(),B(e.next)&&e.acceptToken(t.context.type==M&&t.context.depth==I(e,e.pos-1)?v:_);else{let n=e.pos;for(;;)if(L(e.next)){if(e.pos==n)return;e.advance()}else if(e.next==33)J(e);else if(e.next==38)Y(e);else if(e.next==42){Y(e);break}else if(e.next==39||e.next==34){if(X(e,!0))break;return}else if(e.next==91||e.next==123){if(!ie(e))return;break}else{$(e,!0,!1,0);break}for(;L(e.next);)e.advance();if(e.next==58){if(e.pos==n&&t.canShift(k))return;B(e.peek(1))&&e.acceptTokenTo(t.context.type==M&&t.context.depth==I(e,n)?x:b,n)}}},{contextual:!0});function G(e){return e>32&&e<127&&e!=34&&e!=37&&e!=44&&e!=60&&e!=62&&e!=92&&e!=94&&e!=96&&e!=123&&e!=124&&e!=125}function K(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70}function q(e,t){return e.next==37?(e.advance(),K(e.next)&&e.advance(),K(e.next)&&e.advance(),!0):G(e.next)||t&&e.next==44?(e.advance(),!0):!1}function J(e){if(e.advance(),e.next==60){for(e.advance();;)if(!q(e,!0)){e.next==62&&e.advance();break}}else for(;q(e,!1););}function Y(e){for(e.advance();!B(e.next)&&Z(e.next)!=`f`;)e.advance()}function X(e,t){let n=e.next,r=!1,i=e.pos;for(e.advance();;){let a=e.next;if(a<0)break;if(e.advance(),a==n)if(a==39)if(e.next==39)e.advance();else break;else break;else if(a==92&&n==34)e.next>=0&&e.advance();else if(R(a)){if(t)return!1;r=!0}else if(t&&e.pos>=i+1024)return!1}return!r}function ie(e){for(let t=[],n=e.pos+1024;;)if(e.next==91||e.next==123)t.push(e.next),e.advance();else if(e.next==39||e.next==34){if(!X(e,!0))return!1}else if(e.next==93||e.next==125){if(t[t.length-1]!=e.next-2)return!1;if(t.pop(),e.advance(),!t.length)return!0}else if(e.next<0||e.pos>n||R(e.next))return!1;else e.advance()}var ae=`iiisiiissisfissssssssssssisssiiissssssssssssssssssssssssssfsfssissssssssssssssssssssssssssfif`;function Z(e){return e<33?`u`:e>125?`s`:ae[e-33]}function Q(e,t){let n=Z(e);return n!=`u`&&!(t&&n==`f`)}function $(e,t,n,r){if(Z(e.next)==`s`||(e.next==63||e.next==58||e.next==45)&&Q(e.peek(1),n))e.advance();else return!1;let i=e.pos;for(;;){let a=e.next,o=0,s=r+1;for(;z(a);){if(R(a)){if(t)return!1;s=0}else s++;a=e.peek(++o)}if(!(a>=0&&(a==58?Q(e.peek(o+1),n):a==35?e.peek(o-1)!=32:Q(a,n)))||!n&&s<=r||s==0&&!n&&(H(e,45,o)||H(e,46,o)))break;if(t&&Z(a)==`f`)return!1;for(let t=o;t>=0;t--)e.advance();if(t&&e.pos>i+1024)return!1}return!0}var oe=new c((e,t)=>{if(e.next==33)J(e),e.acceptToken(T);else if(e.next==38||e.next==42){let t=e.next==38?C:w;Y(e),e.acceptToken(t)}else e.next==39||e.next==34?(X(e,!1),e.acceptToken(S)):$(e,!1,t.context.type==N,t.context.depth)&&e.acceptToken(ee)}),se=new c((e,t)=>{let n=t.context.type==P?t.context.depth:-1,r=e.pos;scan:for(;;){let i=0,a=e.next;for(;a==32;)a=e.peek(++i);if(!i&&(H(e,45,i)||H(e,46,i))||!R(a)&&(n<0&&(n=Math.max(t.context.depth+1,i)),iYAN>Y",stateData:";S~O!fOS!gOS^OS~OP_OQbORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!V[O!cTO~O`cO~P]OVkOWROXROYeOZfO[dOcPOmhOqQO~OboO~P!bOVtOWROXROYeOZfO[dOcPOmrOqQO~OpwO~P#WORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!cTO~OSvP!avP!bvP~P#|OWROXROYeOZfO[dOcPOqQO~OmzO~P%OOm!OOUzP!azP!bzP!dzP~P#|O^!SO!b!QO!f!TO!g!RO~ORSOTUOWROXROcPOqQO!PVO!cTO~OY!UOP!QXQ!QX!V!QX!`!QXS!QX!a!QX!b!QXU!QXm!QX!d!QX~P&aO[!WOP!SXQ!SX!V!SX!`!SXS!SX!a!SX!b!SXU!SXm!SX!d!SX~P&aO^!ZO!W![O!b!YO!f!]O!g!YO~OP!_O!V[OQaX!`aX~OPaXQaX!VaX!`aX~P#|OP!bOQ!cO!V[O~OP_O!V[O~P#|OWROXROY!fOcPOqQObfXmfXofXpfX~OWROXRO[!hOcPOqQObhXmhXohXphX~ObeXmlXoeX~ObkXokX~P%OOm!kO~Om!lObnPonP~P%OOb!pOo!oO~Ob!pO~P!bOm!sOosXpsX~OosXpsX~P%OOm!uOotPptP~P%OOo!xOp!yO~Op!yO~P#WOS!|O!a#OO!b#OO~OUyX!ayX!byX!dyX~P#|Om#QO~OU#SO!a#UO!b#UO!d#RO~Om#WOUzX!azX!bzX!dzX~O]#XO~O!b#XO!g#YO~O^#ZO!b#XO!g#YO~OP!RXQ!RX!V!RX!`!RXS!RX!a!RX!b!RXU!RXm!RX!d!RX~P&aOP!TXQ!TX!V!TX!`!TXS!TX!a!TX!b!TXU!TXm!TX!d!TX~P&aO!b#^O!g#^O~O^#_O!b#^O!f#`O!g#^O~O^#_O!W#aO!b#^O!g#^O~OPaaQaa!Vaa!`aa~P#|OP#cO!V[OQ!XX!`!XX~OP!XXQ!XX!V!XX!`!XX~P#|OP_O!V[OQ!_X!`!_X~P#|OWROXROcPOqQObgXmgXogXpgX~OWROXROcPOqQObiXmiXoiXpiX~Obkaoka~P%OObnXonX~P%OOm#kO~Ob#lOo!oO~Oosapsa~P%OOotXptX~P%OOm#pO~Oo!xOp#qO~OSwP!awP!bwP~P#|OS!|O!a#vO!b#vO~OUya!aya!bya!dya~P#|Om#xO~P%OOm#{OU}P!a}P!b}P!d}P~P#|OU#SO!a$OO!b$OO!d#RO~O]$QO~O!b$QO!g$RO~O!b$SO!g$SO~O^$TO!b$SO!g$SO~O^$TO!b$SO!f$UO!g$SO~OP!XaQ!Xa!V!Xa!`!Xa~P#|Obnaona~P%OOotapta~P%OOo!xO~OU|X!a|X!b|X!d|X~P#|Om$ZO~Om$]OU}X!a}X!b}X!d}X~O]$^O~O!b$_O!g$_O~O^$`O!b$_O!g$_O~OU|a!a|a!b|a!d|a~P#|O!b$cO!g$cO~O",goto:",]!mPPPPPPPPPPPPPPPPP!nPP!v#v#|$`#|$c$f$j$nP%VPPP!v%Y%^%a%{&O%a&R&U&X&_&b%aP&e&{&e'O'RPP']'a'g'm's'y(XPPPPPPPP(_)e*X+c,VUaObcR#e!c!{ROPQSTUXY_bcdehknrtvz!O!U!W!_!b!c!f!h!k!l!s!u!|#Q#R#S#W#c#k#p#x#{$Z$]QmPR!qnqfPQThknrtv!k!l!s!u#R#k#pR!gdR!ieTlPnTjPnSiPnSqQvQ{TQ!mkQ!trQ!vtR#y#RR!nkTsQvR!wt!RWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]RySR#t!|R|TR|UQ!PUR#|#SR#z#RR#z#SyZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]R!VXR!XYa]O^abc!a!c!eT!da!eQnPR!rnQvQR!{vQ!}yR#u!}Q#T|R#}#TW^Obc!cS!^^!aT!aa!eQ!eaR#f!eW`Obc!cQxSS}U#SQ!`_Q#PzQ#V!OQ#b!_Q#d!bQ#s!|Q#w#QQ$P#WQ$V#cQ$Y#xQ$[#{Q$a$ZR$b$]xZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]Q!VXQ!XYQ#[!UR#]!W!QWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]pfPQThknrtv!k!l!s!u#R#k#pQ!gdQ!ieQ#g!fR#h!hSgPn^pQTkrtv#RQ!jhQ#i!kQ#j!lQ#n!sQ#o!uQ$W#kR$X#pQuQR!zv",nodeNames:`⚠ DirectiveEnd DocEnd - - ? ? ? Literal QuotedLiteral Anchor Alias Tag BlockLiteralContent Comment Stream BOM Document ] [ FlowSequence Item Tagged Anchored Anchored Tagged FlowMapping Pair Key : Pair , } { FlowMapping Pair Pair BlockSequence Item Item BlockMapping Pair Pair Key Pair Pair BlockLiteral BlockLiteralHeader Tagged Anchored Anchored Tagged Directive DirectiveName DirectiveContent Document`,maxTerm:74,context:V,nodeProps:[[`isolate`,-3,8,9,14,``],[`openedBy`,18,`[`,32,`{`],[`closedBy`,19,`]`,33,`}`]],propSources:[ce],skippedNodes:[0],repeatNodeCount:6,tokenData:"-Y~RnOX#PXY$QYZ$]Z]#P]^$]^p#Ppq$Qqs#Pst$btu#Puv$yv|#P|}&e}![#P![!]'O!]!`#P!`!a'i!a!}#P!}#O*g#O#P#P#P#Q+Q#Q#o#P#o#p+k#p#q'i#q#r,U#r;'S#P;'S;=`#z<%l?HT#P?HT?HU,o?HUO#PQ#UU!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PQ#kTOY#PZs#Pt;'S#P;'S;=`#z<%lO#PQ#}P;=`<%l#P~$VQ!f~XY$Qpq$Q~$bO!g~~$gS^~OY$bZ;'S$b;'S;=`$s<%lO$b~$vP;=`<%l$bR%OX!WQOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR%rX!WQ!VPOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR&bP;=`<%l%kR&lUoP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'VUmP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'p[!PP!WQOY#PZp#Ppq#hq{#P{|(f|}#P}!O(f!O!R#P!R![)p![;'S#P;'S;=`#z<%lO#PR(mW!PP!WQOY#PZp#Ppq#hq!R#P!R![)V![;'S#P;'S;=`#z<%lO#PR)^U!PP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR)wY!PP!WQOY#PZp#Ppq#hq{#P{|)V|}#P}!O)V!O;'S#P;'S;=`#z<%lO#PR*nUcP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+XUbP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+rUqP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,]UpP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,vU`P!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#P",tokenizers:[U,W,oe,se,0,1],topRules:{Stream:[0,15]},tokenPrec:0}),ue=a.define({name:`yaml`,parser:le.configure({props:[r.add({Stream:e=>{for(let t=e.node.resolve(e.pos,-1);t&&t.to>=e.pos;t=t.parent){if(t.name==`BlockLiteralContent`&&t.frome.pos)return null}}return null},FlowMapping:i({closing:`}`}),FlowSequence:i({closing:`]`})}),s.add({"FlowMapping FlowSequence":n,"Item Pair BlockLiteral":(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})})]}),languageData:{commentTokens:{line:`#`},indentOnInput:/^\s*[\]\}]$/}});function de(){return new o(ue)}e.meta;export{de as yaml}; \ No newline at end of file +import{D as e,E as t,_ as n,b as r,h as i,s as a,u as o,v as s}from"./index-BkDx9KsG.js";import{n as c,r as l,t as u}from"./dist-DeO3Qj-D.js";var d=63,f=64,p=1,m=2,h=3,g=4,_=5,v=6,y=7,b=65,x=66,ee=8,S=9,C=10,w=11,T=12,E=13,D=19,O=20,k=29,A=33,te=34,ne=47,re=0,j=1,M=2,N=3,P=4,F=class{constructor(e,t,n){this.parent=e,this.depth=t,this.type=n,this.hash=(e?e.hash+e.hash<<8:0)+t+(t<<4)+n}};F.top=new F(null,-1,re);function I(e,t){for(let n=0,r=t-e.pos-1;;r--,n++){let t=e.peek(r);if(R(t)||t==-1)return n}}function L(e){return e==32||e==9}function R(e){return e==10||e==13}function z(e){return L(e)||R(e)}function B(e){return e<0||z(e)}var V=new u({start:F.top,reduce(e,t){return e.type==N&&(t==O||t==te)?e.parent:e},shift(e,t,n,r){if(t==h)return new F(e,I(r,r.pos),j);if(t==b||t==_)return new F(e,I(r,r.pos),M);if(t==d)return e.parent;if(t==D||t==A)return new F(e,0,N);if(t==E&&e.type==P)return e.parent;if(t==ne){let t=/[1-9]/.exec(r.read(r.pos,n.pos));if(t)return new F(e,e.depth+ +t[0],P)}return e},hash(e){return e.hash}});function H(e,t,n=0){return e.peek(n)==t&&e.peek(n+1)==t&&e.peek(n+2)==t&&B(e.peek(n+3))}var U=new c((e,t)=>{if(e.next==-1&&t.canShift(f))return e.acceptToken(f);let n=e.peek(-1);if((R(n)||n<0)&&t.context.type!=N){if(H(e,45))if(t.canShift(d))e.acceptToken(d);else return e.acceptToken(p,3);if(H(e,46))if(t.canShift(d))e.acceptToken(d);else return e.acceptToken(m,3);let n=0;for(;e.next==32;)n++,e.advance();(n{if(t.context.type==N){e.next==63&&(e.advance(),B(e.next)&&e.acceptToken(y));return}if(e.next==45)e.advance(),B(e.next)&&e.acceptToken(t.context.type==j&&t.context.depth==I(e,e.pos-1)?g:h);else if(e.next==63)e.advance(),B(e.next)&&e.acceptToken(t.context.type==M&&t.context.depth==I(e,e.pos-1)?v:_);else{let n=e.pos;for(;;)if(L(e.next)){if(e.pos==n)return;e.advance()}else if(e.next==33)J(e);else if(e.next==38)Y(e);else if(e.next==42){Y(e);break}else if(e.next==39||e.next==34){if(X(e,!0))break;return}else if(e.next==91||e.next==123){if(!ie(e))return;break}else{$(e,!0,!1,0);break}for(;L(e.next);)e.advance();if(e.next==58){if(e.pos==n&&t.canShift(k))return;B(e.peek(1))&&e.acceptTokenTo(t.context.type==M&&t.context.depth==I(e,n)?x:b,n)}}},{contextual:!0});function G(e){return e>32&&e<127&&e!=34&&e!=37&&e!=44&&e!=60&&e!=62&&e!=92&&e!=94&&e!=96&&e!=123&&e!=124&&e!=125}function K(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70}function q(e,t){return e.next==37?(e.advance(),K(e.next)&&e.advance(),K(e.next)&&e.advance(),!0):G(e.next)||t&&e.next==44?(e.advance(),!0):!1}function J(e){if(e.advance(),e.next==60){for(e.advance();;)if(!q(e,!0)){e.next==62&&e.advance();break}}else for(;q(e,!1););}function Y(e){for(e.advance();!B(e.next)&&Z(e.next)!=`f`;)e.advance()}function X(e,t){let n=e.next,r=!1,i=e.pos;for(e.advance();;){let a=e.next;if(a<0)break;if(e.advance(),a==n)if(a==39)if(e.next==39)e.advance();else break;else break;else if(a==92&&n==34)e.next>=0&&e.advance();else if(R(a)){if(t)return!1;r=!0}else if(t&&e.pos>=i+1024)return!1}return!r}function ie(e){for(let t=[],n=e.pos+1024;;)if(e.next==91||e.next==123)t.push(e.next),e.advance();else if(e.next==39||e.next==34){if(!X(e,!0))return!1}else if(e.next==93||e.next==125){if(t[t.length-1]!=e.next-2)return!1;if(t.pop(),e.advance(),!t.length)return!0}else if(e.next<0||e.pos>n||R(e.next))return!1;else e.advance()}var ae=`iiisiiissisfissssssssssssisssiiissssssssssssssssssssssssssfsfssissssssssssssssssssssssssssfif`;function Z(e){return e<33?`u`:e>125?`s`:ae[e-33]}function Q(e,t){let n=Z(e);return n!=`u`&&!(t&&n==`f`)}function $(e,t,n,r){if(Z(e.next)==`s`||(e.next==63||e.next==58||e.next==45)&&Q(e.peek(1),n))e.advance();else return!1;let i=e.pos;for(;;){let a=e.next,o=0,s=r+1;for(;z(a);){if(R(a)){if(t)return!1;s=0}else s++;a=e.peek(++o)}if(!(a>=0&&(a==58?Q(e.peek(o+1),n):a==35?e.peek(o-1)!=32:Q(a,n)))||!n&&s<=r||s==0&&!n&&(H(e,45,o)||H(e,46,o)))break;if(t&&Z(a)==`f`)return!1;for(let t=o;t>=0;t--)e.advance();if(t&&e.pos>i+1024)return!1}return!0}var oe=new c((e,t)=>{if(e.next==33)J(e),e.acceptToken(T);else if(e.next==38||e.next==42){let t=e.next==38?C:w;Y(e),e.acceptToken(t)}else e.next==39||e.next==34?(X(e,!1),e.acceptToken(S)):$(e,!1,t.context.type==N,t.context.depth)&&e.acceptToken(ee)}),se=new c((e,t)=>{let n=t.context.type==P?t.context.depth:-1,r=e.pos;scan:for(;;){let i=0,a=e.next;for(;a==32;)a=e.peek(++i);if(!i&&(H(e,45,i)||H(e,46,i))||!R(a)&&(n<0&&(n=Math.max(t.context.depth+1,i)),iYAN>Y",stateData:";S~O!fOS!gOS^OS~OP_OQbORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!V[O!cTO~O`cO~P]OVkOWROXROYeOZfO[dOcPOmhOqQO~OboO~P!bOVtOWROXROYeOZfO[dOcPOmrOqQO~OpwO~P#WORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!cTO~OSvP!avP!bvP~P#|OWROXROYeOZfO[dOcPOqQO~OmzO~P%OOm!OOUzP!azP!bzP!dzP~P#|O^!SO!b!QO!f!TO!g!RO~ORSOTUOWROXROcPOqQO!PVO!cTO~OY!UOP!QXQ!QX!V!QX!`!QXS!QX!a!QX!b!QXU!QXm!QX!d!QX~P&aO[!WOP!SXQ!SX!V!SX!`!SXS!SX!a!SX!b!SXU!SXm!SX!d!SX~P&aO^!ZO!W![O!b!YO!f!]O!g!YO~OP!_O!V[OQaX!`aX~OPaXQaX!VaX!`aX~P#|OP!bOQ!cO!V[O~OP_O!V[O~P#|OWROXROY!fOcPOqQObfXmfXofXpfX~OWROXRO[!hOcPOqQObhXmhXohXphX~ObeXmlXoeX~ObkXokX~P%OOm!kO~Om!lObnPonP~P%OOb!pOo!oO~Ob!pO~P!bOm!sOosXpsX~OosXpsX~P%OOm!uOotPptP~P%OOo!xOp!yO~Op!yO~P#WOS!|O!a#OO!b#OO~OUyX!ayX!byX!dyX~P#|Om#QO~OU#SO!a#UO!b#UO!d#RO~Om#WOUzX!azX!bzX!dzX~O]#XO~O!b#XO!g#YO~O^#ZO!b#XO!g#YO~OP!RXQ!RX!V!RX!`!RXS!RX!a!RX!b!RXU!RXm!RX!d!RX~P&aOP!TXQ!TX!V!TX!`!TXS!TX!a!TX!b!TXU!TXm!TX!d!TX~P&aO!b#^O!g#^O~O^#_O!b#^O!f#`O!g#^O~O^#_O!W#aO!b#^O!g#^O~OPaaQaa!Vaa!`aa~P#|OP#cO!V[OQ!XX!`!XX~OP!XXQ!XX!V!XX!`!XX~P#|OP_O!V[OQ!_X!`!_X~P#|OWROXROcPOqQObgXmgXogXpgX~OWROXROcPOqQObiXmiXoiXpiX~Obkaoka~P%OObnXonX~P%OOm#kO~Ob#lOo!oO~Oosapsa~P%OOotXptX~P%OOm#pO~Oo!xOp#qO~OSwP!awP!bwP~P#|OS!|O!a#vO!b#vO~OUya!aya!bya!dya~P#|Om#xO~P%OOm#{OU}P!a}P!b}P!d}P~P#|OU#SO!a$OO!b$OO!d#RO~O]$QO~O!b$QO!g$RO~O!b$SO!g$SO~O^$TO!b$SO!g$SO~O^$TO!b$SO!f$UO!g$SO~OP!XaQ!Xa!V!Xa!`!Xa~P#|Obnaona~P%OOotapta~P%OOo!xO~OU|X!a|X!b|X!d|X~P#|Om$ZO~Om$]OU}X!a}X!b}X!d}X~O]$^O~O!b$_O!g$_O~O^$`O!b$_O!g$_O~OU|a!a|a!b|a!d|a~P#|O!b$cO!g$cO~O",goto:",]!mPPPPPPPPPPPPPPPPP!nPP!v#v#|$`#|$c$f$j$nP%VPPP!v%Y%^%a%{&O%a&R&U&X&_&b%aP&e&{&e'O'RPP']'a'g'm's'y(XPPPPPPPP(_)e*X+c,VUaObcR#e!c!{ROPQSTUXY_bcdehknrtvz!O!U!W!_!b!c!f!h!k!l!s!u!|#Q#R#S#W#c#k#p#x#{$Z$]QmPR!qnqfPQThknrtv!k!l!s!u#R#k#pR!gdR!ieTlPnTjPnSiPnSqQvQ{TQ!mkQ!trQ!vtR#y#RR!nkTsQvR!wt!RWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]RySR#t!|R|TR|UQ!PUR#|#SR#z#RR#z#SyZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]R!VXR!XYa]O^abc!a!c!eT!da!eQnPR!rnQvQR!{vQ!}yR#u!}Q#T|R#}#TW^Obc!cS!^^!aT!aa!eQ!eaR#f!eW`Obc!cQxSS}U#SQ!`_Q#PzQ#V!OQ#b!_Q#d!bQ#s!|Q#w#QQ$P#WQ$V#cQ$Y#xQ$[#{Q$a$ZR$b$]xZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]Q!VXQ!XYQ#[!UR#]!W!QWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]pfPQThknrtv!k!l!s!u#R#k#pQ!gdQ!ieQ#g!fR#h!hSgPn^pQTkrtv#RQ!jhQ#i!kQ#j!lQ#n!sQ#o!uQ$W#kR$X#pQuQR!zv",nodeNames:`⚠ DirectiveEnd DocEnd - - ? ? ? Literal QuotedLiteral Anchor Alias Tag BlockLiteralContent Comment Stream BOM Document ] [ FlowSequence Item Tagged Anchored Anchored Tagged FlowMapping Pair Key : Pair , } { FlowMapping Pair Pair BlockSequence Item Item BlockMapping Pair Pair Key Pair Pair BlockLiteral BlockLiteralHeader Tagged Anchored Anchored Tagged Directive DirectiveName DirectiveContent Document`,maxTerm:74,context:V,nodeProps:[[`isolate`,-3,8,9,14,``],[`openedBy`,18,`[`,32,`{`],[`closedBy`,19,`]`,33,`}`]],propSources:[ce],skippedNodes:[0],repeatNodeCount:6,tokenData:"-Y~RnOX#PXY$QYZ$]Z]#P]^$]^p#Ppq$Qqs#Pst$btu#Puv$yv|#P|}&e}![#P![!]'O!]!`#P!`!a'i!a!}#P!}#O*g#O#P#P#P#Q+Q#Q#o#P#o#p+k#p#q'i#q#r,U#r;'S#P;'S;=`#z<%l?HT#P?HT?HU,o?HUO#PQ#UU!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PQ#kTOY#PZs#Pt;'S#P;'S;=`#z<%lO#PQ#}P;=`<%l#P~$VQ!f~XY$Qpq$Q~$bO!g~~$gS^~OY$bZ;'S$b;'S;=`$s<%lO$b~$vP;=`<%l$bR%OX!WQOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR%rX!WQ!VPOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR&bP;=`<%l%kR&lUoP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'VUmP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'p[!PP!WQOY#PZp#Ppq#hq{#P{|(f|}#P}!O(f!O!R#P!R![)p![;'S#P;'S;=`#z<%lO#PR(mW!PP!WQOY#PZp#Ppq#hq!R#P!R![)V![;'S#P;'S;=`#z<%lO#PR)^U!PP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR)wY!PP!WQOY#PZp#Ppq#hq{#P{|)V|}#P}!O)V!O;'S#P;'S;=`#z<%lO#PR*nUcP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+XUbP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+rUqP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,]UpP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,vU`P!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#P",tokenizers:[U,W,oe,se,0,1],topRules:{Stream:[0,15]},tokenPrec:0}),ue=a.define({name:`yaml`,parser:le.configure({props:[r.add({Stream:e=>{for(let t=e.node.resolve(e.pos,-1);t&&t.to>=e.pos;t=t.parent){if(t.name==`BlockLiteralContent`&&t.frome.pos)return null}}return null},FlowMapping:i({closing:`}`}),FlowSequence:i({closing:`]`})}),s.add({"FlowMapping FlowSequence":n,"Item Pair BlockLiteral":(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})})]}),languageData:{commentTokens:{line:`#`},indentOnInput:/^\s*[\]\}]$/}});function de(){return new o(ue)}e.meta;export{de as yaml}; \ No newline at end of file diff --git a/ksadk/server/static/assets/dist-CXYYBw3_.js b/ksadk/server/static/assets/dist-BvMDy0Xp.js similarity index 99% rename from ksadk/server/static/assets/dist-CXYYBw3_.js rename to ksadk/server/static/assets/dist-BvMDy0Xp.js index d08cb469..d24d7736 100644 --- a/ksadk/server/static/assets/dist-CXYYBw3_.js +++ b/ksadk/server/static/assets/dist-BvMDy0Xp.js @@ -1 +1 @@ -import{D as e,E as t,I as n,_ as r,b as i,h as ee,p as a,s as o,u as s,v as te}from"./index-8ipRcQ-M.js";import{n as c,r as ne}from"./dist-C_wsv-Qd.js";import{html as re}from"./dist-BjU6y-A2.js";var ie=1,ae=2,oe=275,l=3,u=276,d=277,f=278,p=4,m=5,h=6,g=7,_=8,v=9,y=10,b=11,x=12,S=13,C=14,w=15,T=16,E=17,D=18,O=19,k=20,A=21,j=22,M=23,N=24,P=25,F=26,I=27,L=28,R=29,z=30,B=31,V=32,H=33,U=34,W=35,G=36,K=37,q=38,se=39,ce=40,le=41,ue=42,de=43,fe=44,pe=45,me=46,he=47,ge=48,_e=49,ve=50,ye=51,be=52,xe=53,Se=54,Ce=55,we=56,Te=57,Ee=58,De=59,Oe=60,ke=61,Ae=62,J=63,je={abstract:p,and:m,array:h,as:g,true:_,false:_,break:v,case:y,catch:b,clone:x,const:S,continue:C,declare:T,default:w,do:E,echo:D,else:O,elseif:k,enddeclare:A,endfor:j,endforeach:M,endif:N,endswitch:P,endwhile:F,enum:I,extends:L,final:R,finally:z,fn:B,for:V,foreach:H,from:U,function:W,global:G,goto:K,if:q,implements:se,include:ce,include_once:le,instanceof:ue,insteadof:de,interface:fe,list:pe,match:me,namespace:he,new:ge,null:_e,or:ve,print:ye,readonly:be,require:xe,require_once:Se,return:Ce,switch:we,throw:Te,trait:Ee,try:De,unset:Oe,use:ke,var:Ae,public:J,private:J,protected:J,while:64,xor:65,yield:66,__proto__:null};function Y(e){return je[e.toLowerCase()]??-1}function X(e){return e==9||e==10||e==13||e==32}function Z(e){return e>=97&&e<=122||e>=65&&e<=90}function Q(e){return e==95||e>=128||Z(e)}function $(e){return e>=48&&e<=55||e>=97&&e<=102||e>=65&&e<=70}var Me={int:!0,integer:!0,bool:!0,boolean:!0,float:!0,double:!0,real:!0,string:!0,array:!0,object:!0,unset:!0,__proto__:null},Ne=new c(e=>{if(e.next==40){e.advance();let t=0;for(;X(e.peek(t));)t++;let n=``,r;for(;Z(r=e.peek(t));)n+=String.fromCharCode(r),t++;for(;X(e.peek(t));)t++;e.peek(t)==41&&Me[n.toLowerCase()]&&e.acceptToken(ie)}else if(e.next==60&&e.peek(1)==60&&e.peek(2)==60){for(let t=0;t<3;t++)e.advance();for(;e.next==32||e.next==9;)e.advance();let t=e.next==39;if(t&&e.advance(),!Q(e.next))return;let n=String.fromCharCode(e.next);for(;e.advance(),!(!Q(e.next)&&!(e.next>=48&&e.next<=55));)n+=String.fromCharCode(e.next);if(t){if(e.next!=39)return;e.advance()}if(e.next!=10&&e.next!=13)return;for(;;){let t=e.next==10||e.next==13;if(e.advance(),e.next<0)return;if(t){for(;e.next==32||e.next==9;)e.advance();let t=!0;for(let r=0;r{e.next<0&&e.acceptToken(f)}),Fe=new c((e,t)=>{e.next==63&&t.canShift(d)&&e.peek(1)==62&&e.acceptToken(d)});function Ie(e){let t=e.peek(1);if(t==110||t==114||t==116||t==118||t==101||t==102||t==92||t==36||t==34||t==123)return 2;if(t>=48&&t<=55){let t=2,n;for(;t<5&&(n=e.peek(t))>=48&&n<=55;)t++;return t}if(t==120&&$(e.peek(2)))return $(e.peek(3))?4:3;if(t==117&&e.peek(2)==123)for(let t=3;;t++){let n=e.peek(t);if(n==125)return t==2?0:t+1;if(!$(n))break}return 0}var Le=new c((e,t)=>{let n=!1;for(;!(e.next==34||e.next<0||e.next==36&&(Q(e.peek(1))||e.peek(1)==123)||e.next==123&&e.peek(1)==36);n=!0){if(e.next==92){let t=Ie(e);if(t){if(n)break;return e.acceptToken(l,t)}}else if(!n&&(e.next==91||e.next==45&&e.peek(1)==62&&Q(e.peek(2))||e.next==63&&e.peek(1)==45&&e.peek(2)==62&&Q(e.peek(3)))&&t.canShift(u))break;e.advance()}n&&e.acceptToken(oe)}),Re=t({"Visibility abstract final static":e.modifier,"for foreach while do if else elseif switch try catch finally return throw break continue default case":e.controlKeyword,"endif endfor endforeach endswitch endwhile declare enddeclare goto match":e.controlKeyword,"and or xor yield unset clone instanceof insteadof":e.operatorKeyword,"function fn class trait implements extends const enum global interface use var":e.definitionKeyword,"include include_once require require_once namespace":e.moduleKeyword,"new from echo print array list as":e.keyword,null:e.null,Boolean:e.bool,VariableName:e.variableName,"NamespaceName/...":e.namespace,"NamedType/...":e.typeName,Name:e.name,"CallExpression/Name":e.function(e.variableName),"LabelStatement/Name":e.labelName,"MemberExpression/Name":e.propertyName,"MemberExpression/VariableName":e.special(e.propertyName),"ScopedExpression/ClassMemberName/Name":e.propertyName,"ScopedExpression/ClassMemberName/VariableName":e.special(e.propertyName),"CallExpression/MemberExpression/Name":e.function(e.propertyName),"CallExpression/ScopedExpression/ClassMemberName/Name":e.function(e.propertyName),"MethodDeclaration/Name":e.function(e.definition(e.variableName)),"FunctionDefinition/Name":e.function(e.definition(e.variableName)),"ClassDeclaration/Name":e.definition(e.className),UpdateOp:e.updateOperator,ArithOp:e.arithmeticOperator,"LogicOp IntersectionType/&":e.logicOperator,BitOp:e.bitwiseOperator,CompareOp:e.compareOperator,ControlOp:e.controlOperator,AssignOp:e.definitionOperator,"$ ConcatOp":e.operator,LineComment:e.lineComment,BlockComment:e.blockComment,Integer:e.integer,Float:e.float,String:e.string,ShellExpression:e.special(e.string),"=> ->":e.punctuation,"( )":e.paren,"#[ [ ]":e.squareBracket,"${ { }":e.brace,"-> ?->":e.derefOperator,", ; :: : \\":e.separator,"PhpOpen PhpClose":e.processingInstruction}),ze={__proto__:null,static:325,STATIC:325,class:351,CLASS:351},Be=ne.deserialize({version:14,states:"%#[Q`OWOOQhQaOOP%oO`OOOOO#t'#Hh'#HhO%tO#|O'#DuOOO#u'#Dx'#DxQ&SOWO'#DxO&XO$VOOOOQ#u'#Dy'#DyO&lQaO'#D}O'[QdO'#EQO+QQdO'#IqO+_QdO'#ERO-RQaO'#EXO/bQ`O'#EUO/gQ`O'#E_O2UQaO'#E_O2]Q`O'#EgO2bQ`O'#EqO-RQaO'#EqO2mQpO'#FOO2rQ`O'#FOOOQS'#Iq'#IqO2wQ`O'#ExOOQS'#Ih'#IhO5SQdO'#IeO9UQeO'#F]O-RQaO'#FlO-RQaO'#FmO-RQaO'#FnO-RQaO'#FoO-RQaO'#FoO-RQaO'#FrOOQO'#Ir'#IrO9cQ`O'#FxOOQO'#Ht'#HtO9kQ`O'#HXO:VQ`O'#FsO:bQ`O'#HfO:mQ`O'#GPO:uQaO'#GQO-RQaO'#G`O-RQaO'#GcO;bOrO'#GfOOQS'#JP'#JPOOQS'#JO'#JOOOQS'#Ie'#IeO/bQ`O'#GmO/bQ`O'#GoO/bQ`O'#GtOhQaO'#GvO;iQ`O'#GwO;nQ`O'#GzO:]Q`O'#G}O;sQeO'#HOO;sQeO'#HPO;sQeO'#HQO;}Q`O'#HROhQ`O'#HVO:]Q`O'#HWO>mQ`O'#HWO;}Q`O'#HXO:]Q`O'#HZO:]Q`O'#H[O:]Q`O'#H]O>rQ`O'#H`O>}Q`O'#HaOQO!$dQ`O,5POOQ#u-E;h-E;hO!1QQ`O,5=tOOO#u,5:_,5:_O!1]O#|O,5:_OOO#u-E;g-E;gOOOO,5>|,5>|OOQ#y1G0T1G0TO!1eQ`O1G0YO-RQaO1G0YO!2wQ`O1G0qOOQS1G0q1G0qOOQS'#Eo'#EoOOQS'#Il'#IlO-RQaO'#IlOOQS1G0r1G0rO!4ZQ`O'#IoO!5pQ`O'#IqO!5}QaO'#EwOOQO'#Io'#IoO!6XQ`O'#InO!6aQ`O,5;aO-RQaO'#FXOOQS'#FW'#FWOOQS1G1[1G1[O!6fQdO1G1dO!8kQdO1G1dO!:WQdO1G1dO!;sQdO1G1dO!=`QdO1G1dO!>{QdO1G1dO!@hQdO1G1dO!BTQdO1G1dO!CpQdO1G1dO!E]QdO1G1dO!FxQdO1G1dO!HeQdO1G1dO!JQQdO1G1dO!KmQdO1G1dO!MYQdO1G1dO!NuQdO1G1dOOQT1G0_1G0_O!#[Q`O,5<_O#!bQaO'#EYOOQS1G0[1G0[O#!iQ`O,5:zOEdQaO,5:zO#!nQaO,5;OO#!uQdO,5:|O#$tQdO,5?UO#&sQaO'#HmO#'TQ`O,5?TOOQS1G0e1G0eO#']Q`O1G0eO#'bQ`O'#IkO#(zQ`O'#IkO#)SQ`O,5;SOG|QaO,5;SOOQS1G0w1G0wOOQO,5>^,5>^OOQO-E;p-E;pOOQS1G1U1G1UO#)pQdO'#FQO#+uQ`O'#HsOJ}QpO1G1UO2wQ`O'#HpO#+zQtO,5;eO2wQ`O'#HqO#,iQtO,5;gO#-WQaO1G1OOOQS,5;h,5;hO#/gQtO'#FQO#/tQdO1G0dO-RQaO1G0dO#1aQdO1G1aO#2|QdO1G1cOOQO,5X,5>XOOQO-E;k-E;kOOQS7+&P7+&PO!+iQaO,5;TO$$^QaO'#HnO$$hQ`O,5?VOOQS1G0n1G0nO$$pQ`O1G0nPOQO'#FQ'#FQOOQO,5>_,5>_OOQO-E;q-E;qOOQS7+&p7+&pOOQS,5>[,5>[OOQS-E;n-E;nO$$uQtO,5>]OOQS-E;o-E;oO$%dQdO7+&jO$'iQtO'#FQO$'vQdO7+&OOOQS1G0j1G0jOOQO,5>a,5>aOOQO-E;s-E;sOOQ#u7+(x7+(xO!$[QdO7+(xOOQ#u7+(}7+(}O#JfQ`O7+(}O#JkQ`O7+(}OOQ#u7+(z7+(zO!.]Q`O7+(zO!1TQ`O7+(zO!1QQ`O7+(zO$)cQ`O,5i,5>iOOQS-E;{-E;{O$.lQdO7+'qO$.|QpO7+'qO$/XQdO'#IxOOQO,5pOOQ#u,5>p,5>pOOQ#u-EoOOQS-EVQdO1G2^OOQS,5>h,5>hOOQS-E;z-E;zOOQ#u7+({7+({O$?oQ`O'#GXO:]Q`O'#H_OOQO'#IV'#IVO$@fQ`O,5=xOOQ#u,5=x,5=xO$AcQ!bO'#EQO$AzQ!bO7+(}O$BYQpO7+)RO#KRQpO7+)RO$BbQ`O'#HbO!$[QdO7+)RO$BpQdO,5>rOOQS-EVOOQS-E;i-E;iO$D{QdO<Z,5>ZOOQO-E;m-E;mOOQS1G1_1G1_O$8rQaO,5:uO$G}QaO'#HlO$H[Q`O,5?QOOQS1G0`1G0`OOQS7+&Q7+&QO$HdQ`O7+&UO$IyQ`O1G0oO$K`Q`O,5>YOOQO,5>Y,5>YOOQO-E;l-E;lOOQS7+&Y7+&YOOQS7+&U7+&UOOQ#u<c,5>cOOQO-E;u-E;uOOQS<lOOQ#u-EmOOQO-EW,5>WOOQO-E;j-E;jO!+iQaO,5;UOOQ#uANBTANBTO#JfQ`OANBTOOQ#uANBQANBQO!.]Q`OANBQO!+iQaO7+'hOOQO7+'l7+'lO%-bQ`O7+'hO%.wQ`O7+'hO%/SQ`O7+'lO!+iQaO7+'mOOQO7+'m7+'mO%/XQdO'#F}OOQO'#Hv'#HvO%/jQ`O,5e,5>eOOQS-E;w-E;wOOQO1G2_1G2_O$1YQdO1G2_O$/jQpO1G2_O#JkQ`O1G2]O!.mQdO1G2aO%$dQ!bO1G2]O!$[QdO1G2]OOQO1G2a1G2aOOQO1G2]1G2]O%2uQaO'#G]OOQO1G2b1G2bOOQSAN@xAN@xO!.]Q`OAN@xOOOQ<]O%6rQ!bO'#FQO!$[QdOANBXOOQ#uANBXANBXO:]Q`O,5=}O%7WQ`O,5=}O%7cQ`O'#IXO%7wQ`O,5?rOOQS1G3h1G3hOOQS7+)x7+)xP%+OQpOANBXO%8PQ`O1G0pOOQ#uG27oG27oOOQ#uG27lG27lO%9fQ`O<d,5>dO%dOOQO-E;v-E;vO%hQ`O'#IqO%>rQ`O'#IhO!$[QdO'#IOO%@lQaO,5s,5>sOOQO-Ej,5>jOOQP-E;|-E;|OOQO1G2c1G2cOOQ#uLD,kLD,kOOQTG27[G27[O!$[QdOLD-RO!$[QdO<OO%EpQ`O,5>OPOQ#uLD-_LD-_OOQO7+'o7+'oO+_QdO7+'oOOQS!$( ]!$( ]OOQOAN@}AN@}OOQS1G2d1G2dOOQS1G2e1G2eO%E{QdO1G2eOOQ#u!$(!m!$(!mOOQOANBVANBVOOQO1G3j1G3jO:]Q`O1G3jOOQO<tQaO,5:xO'/vQaO,5;uO'/vQaO,5;wO'@sQdO,5YQdO,5<^O)@XQdO,5QQ`O,5=eO*>YQaO'#HkO*>dQ`O,5?ROlQdO7+%tO*@kQ`O1G0jO!+iQaO1G0jO*BQQdO7+&OOoO*GeQ`O,5>VO*HzQdO<[QdO,5{QdO'#IjO.BbQ`O'#IeO.BoQ`O'#GPO.BwQaO,5:nO.COQ`O,5uOs#fOx7xOy7xO}aO!O^O!Q8OO!R}O!T7}O!V7yO!W7yO!Z8QO!d:QO!z]O#T#mO#V#lO#X`O#dhO#fbO#gcO#sdO$[7|O$d7{O$e7|O$hqO%T8PO%U!OO%W}O%X}O%`|O'WYO'u{O#Y']P~O#O#qO~P/lO!z#rO~O#d#tO#fbO#gcO~O'a#vO~O#s#zO~OU$OO!R$OO!w#}O#s3hO'W#{O~OT'XXz'XX!S'XX!c'XX!n'XX!w'XX!z'XX#T'XX#X'XX#a'XX#b'XX#y'XX$R'XX$S'XX$T'XX$U'XX$V'XX$X'XX$Y'XX$Z'XX$['XX$]'XX$^'XX$_'XX%T'XX'P'XX!y'XX!o'XX~O#|$QO$O$RO~P3YOP7wOQ|OU_OW}O[7zOo>uOs#fOx7xOy7xO}aO!O^O!Q8OO!R}O!T7}O!V7yO!W7yO!Z8QO!d:QO!z]O#X`O#dhO#fbO#gcO#sdO$[7|O$d7{O$e7|O$hqO%T8PO%U!OO%W}O%X}O%`|O'WYO'u{OT$PXz$PX!S$PX!c$PX!n$PX!w$PX#a$PX#b$PX#y$PX$R$PX$S$PX$T$PX$U$PX$V$PX$X$PX$Y$PX$Z$PX$]$PX$^$PX$_$PX'P$PX!y$PX!o$PX~Or$TO#T8eO#V8dO~P5^O#sdO'WYO~OS$fO]$aOk$dOm$fOs$`O!a$bO$krO$u$eO~O!z$hO#T$jO'W$gO~Oo$mOs$lO#d$nO~O!z$hO#T$rO~O!U$uO$u$tO~P-ROR${O!p$zO#d$yO#g$zO&}${O~O't$}O~P;PO!z%SO~O!z%UO~O!n#bO'P#bO~P-RO!pXO~O!z%`O~OP7wOQ|OU_OW}O[7zOo>uOs#fOx7xOy7xO}aO!O^O!Q8OO!R}O!T7}O!V7yO!W7yO!Z8QO!d:QO!z]O#X`O#dhO#fbO#gcO#sdO$[7|O$d7{O$e7|O$hqO%T8PO%U!OO%W}O%X}O%`|O'WYO'u{O~O!z%dO~O]$aO~O!pXO#sdO'WYO~O]%rOs%rO#s%nO'WYO~O!j%wO'Q%wO'TRO~O'Q%zO~PhO!o%{O~PhO!r%}O~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'cX#O'cX~P!%aO!r)yO!y'eX#O'eX~P)dO!y#kX#O#kX~P!+iO#O){O!y'bX~O!y)}O~O%T#cOT$Qiz$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi$_$Qi'P$Qi!y$Qi#O$Qi#P$Qi#Y$Qi!o$Qi!r$QiV$Qi#|$Qi$O$Qi!p$Qi~P!%aOz#QO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi'P$Qi!y$Qi!o$Qi~P!%aOT#SOz#QO!c#UO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cO!S$Qi!n$Qi'P$Qi!y$Qi!o$Qi~P!%aOT#SOz#QO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cO!S$Qi!c$Qi!n$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi$T$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi$T$Qi$U$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$[#_O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$Z#^O$[#_O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi'P$Qi!y$Qi!o$Qi~P!%aO_*PO~PxO$hqO$krO~P2wO#X+|O#a+{O#b+{O~O#d,OO%W,OO%^+}O'W$gO~O!o,PO~PCVOc%bXd%bXh%bXj%bXf%bXg%bXe%bX~PhOc,TOd,ROP%aiQ%aiS%aiU%aiW%aiX%ai[%ai]%ai^%ai`%aia%aib%aik%aim%aio%aip%aiq%ais%ait%aiu%aiv%aix%aiy%ai|%ai}%ai!O%ai!P%ai!Q%ai!R%ai!T%ai!V%ai!W%ai!X%ai!Y%ai!Z%ai![%ai!]%ai!^%ai!_%ai!a%ai!b%ai!d%ai!n%ai!p%ai!z%ai#X%ai#d%ai#f%ai#g%ai#s%ai$[%ai$d%ai$e%ai$h%ai$k%ai$u%ai%T%ai%U%ai%W%ai%X%ai%`%ai&|%ai'W%ai'u%ai'Q%ai!o%aih%aij%aif%aig%aiY%ai_%aii%aie%ai~Oc,XOd,UOh,WO~OY,YO_,ZO!o,^O~OY,YO_,ZOi%gX~Oi,`O~Oj,aO~O!n,cO~PxO$hqO$krO~P2wO!p)`O~OU$OO!R$OO!w3nO#s3iO'W,zO~O#s,|O~O!p-OO'a'UO~O#sdO'WYO!n&zX#O&zX'P&zX~O#O)gO!n'ya'P'ya~O#s-UO~O!n&_X#O&_X'P&_X#P&_X~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#ka#O#ka~P!%aO!y&cX#O&cX~P@aO#O){O!y'ba~O!o-_O~PCVO#P-`O~O#O-aO!o'YX~O!o-cO~O!y-dO~OT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O#Wi#Y#Wi~P!%aO!y&bX#O&bX~PxO#n'XO~OS+kO].cOm+kOs$`O!U+kO!`+kO!a+kO#d>xO$hqO$krO~P2wOS+kO].cOm+kOs$`O!U+kO!`+kO!a+kO#d>xO$hqO~P2wO!n#bO!p-yO'P#bO~OS+kO]+nOm+kOs$`O!U+kO!_+qO!`+kO!a+kO!o.mO#d>xO$hqO$krO~P2wO#d.rO%W.rO%^+}O'W$gO~O%W.sO~O#Y.tO~Oc%bad%bah%baj%baf%bag%bae%ba~PhOc.wOd,ROP%aqQ%aqS%aqU%aqW%aqX%aq[%aq]%aq^%aq`%aqa%aqb%aqk%aqm%aqo%aqp%aqq%aqs%aqt%aqu%aqv%aqx%aqy%aq|%aq}%aq!O%aq!P%aq!Q%aq!R%aq!T%aq!V%aq!W%aq!X%aq!Y%aq!Z%aq![%aq!]%aq!^%aq!_%aq!a%aq!b%aq!d%aq!n%aq!p%aq!z%aq#X%aq#d%aq#f%aq#g%aq#s%aq$[%aq$d%aq$e%aq$h%aq$k%aq$u%aq%T%aq%U%aq%W%aq%X%aq%`%aq&|%aq'W%aq'u%aq'Q%aq!o%aqh%aqj%aqf%aqg%aqY%aq_%aqi%aqe%aq~Oc.|Od,UOh.{O~O!r(hO~OP7wOQ|OU_OW}O[xO$hqO$krO~P2wOS+kOY,vO]+nOm+kOs$`O!U+kO!_+qO!`+kO!a+kO!o/fO#d>xO$hqO$krO~P2wOw!tX!p!tX#T!tX#n!tX#s#vX#|!tX'W!tX~Ow(ZO!p)`O#T3tO#n3sO~O!p-OO'a&fa~O]/nOs/nO#sdO'WYO~OV/rO!n&za#O&za'P&za~O#O)gO!n'yi'P'yi~O#s/tO~OT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n&_a#O&_a'P&_a#P&_a~P!%aOz#QO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT!vy!S!vy!c!vy!n!vy!w!vy'P!vy!y!vy!o!vy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#ji#O#ji~P!%aO_*PO!o&`X#O&`X~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#]i#O#]i~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#P/yO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!y&ba#O&ba~P!%aO#|0OO!y$ji#O$ji~O#d0PO~O#V0SO#d0RO~P2wOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ji#O$ji~P!%aO!p-yO#|0TO!y$oi#O$oi~O!o0YO'W$gO~O#O0[O!y'kX~O#d0^O~O!y0_O~O!pXO!r0bO~O#T'ZO#n'XO!p'qy!n'qy'P'qy~O!n$sy'P$sy!y$sy!o$sy~PCVO#P0eO#T'ZO#n'XO~O#sdO'WYOw&mX!p&mX#O&mX!n&mX'P&mX~O#O.^Ow'la!p'la!n'la'P'la~OS+kO]0mOm+kOs$`O!U+kO!`+kO!a+kO#d>xO$hqO~P2wO#T3tO#n3sO'W$gO~O#|)XO#T'eX#n'eX'W'eX~O!n#bO!p0sO'P#bO~O#Y0wO~Oh0|O~OTvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$jq#O$jq~P!%aO#|1kO!y$jq#O$jq~O#d1lO~O!n#bO!pXO!z$hO#P1oO'P#bO~O!o1rO'W$gO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$oq#O$oq~P!%aO#T1tO#d1sO!y&lX#O&lX~O#O0[O!y'ka~O#T'ZO#n'XO!p'q!R!n'q!R'P'q!R~O!pXO!r1yO~O!n$s!R'P$s!R!y$s!R!o$s!R~PCVO#P1{O#T'ZO#n'XO~OP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!QvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#^i#O#^i~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$jy#O$jy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$oy#O$oy~P!%aO!pXO#P2rO~O#d2sO~O#O0[O!y'ki~O!n$s!Z'P$s!Z!y$s!Z!o$s!Z~PCVOTvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$j!R#O$j!R~P!%aO!n$s!c'P$s!c!y$s!c!o$s!c~PCVO!a3`O'W$gO~OV3dO!o&Wa#O&Wa~O'W$gO!n%Ri'P%Ri~O'a'_O~O'a/jO~O'a*iO~O'a1]O~OT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$ta#|$ta$O$ta'P$ta!y$ta!o$ta#O$ta~P!%aO#T3uO~P-RO#s3lO~O#s3mO~O!U$uO$u$tO~P#-WOT8TOz8RO!S8UO!c8VO!w:_O#P3pO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n'^X'P'^X!y'^X!o'^X~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#P5aO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O'^X#Y'^X#|'^X$O'^X!n'^X'P'^X!r'^X!y'^X!o'^XV'^X!p'^X~P!%aO#T5OO~P#-WOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$`a#|$`a$O$`a'P$`a!y$`a!o$`a#O$`a~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$aa#|$aa$O$aa'P$aa!y$aa!o$aa#O$aa~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$ba#|$ba$O$ba'P$ba!y$ba!o$ba#O$ba~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$ca#|$ca$O$ca'P$ca!y$ca!o$ca#O$ca~P!%aOz3{O#|$ca$O$ca#O$ca~PMVOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$fa#|$fa$O$fa'P$fa!y$fa!o$fa#O$fa~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n%Va#|%Va$O%Va'P%Va!y%Va!o%Va#O%Va~P!%aOz3{O#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOT3}Oz3{O!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!S$Qi!n$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOT3}Oz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!S$Qi!c$Qi!n$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$[4YO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$Z4XO$[4YO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n#Ua#|#Ua$O#Ua'P#Ua!y#Ua!o#Ua#O#Ua~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n'^a#|'^a$O'^a'P'^a!y'^a!o'^a#O'^a~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT#Qi!S#Qi!c#Qi!n#Qi#|#Qi$O#Qi'P#Qi!y#Qi!o#Qi#O#Qi~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT#}i!S#}i!c#}i!n#}i#|#}i$O#}i'P#}i!y#}i!o#}i#O#}i~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$Pi#|$Pi$O$Pi'P$Pi!y$Pi!o$Pi#O$Pi~P!%aOz3{O#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT!vq!S!vq!c!vq!n!vq!w!vq#|!vq$O!vq'P!vq!y!vq!o!vq#O!vq~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT#Qq!S#Qq!c#Qq!n#Qq#|#Qq$O#Qq'P#Qq!y#Qq!o#Qq#O#Qq~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$sq#|$sq$O$sq'P$sq!y$sq!o$sq#O$sq~P!%aOz3{O#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT!vy!S!vy!c!vy!n!vy!w!vy#|!vy$O!vy'P!vy!y!vy!o!vy#O!vy~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$sy#|$sy$O$sy'P$sy!y$sy!o$sy#O$sy~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$s!R#|$s!R$O$s!R'P$s!R!y$s!R!o$s!R#O$s!R~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$s!Z#|$s!Z$O$s!Z'P$s!Z!y$s!Z!o$s!Z#O$s!Z~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$s!c#|$s!c$O$s!c'P$s!c!y$s!c!o$s!c#O$s!c~P!%aOP7wOU_O[5kOo9xOs#fOx5gOy5gO}aO!O^O!Q5{O!T5qO!V5iO!W5iO!Z5}O!d5eO!z]O#T5bO#X`O#dhO#fbO#gcO#sdO$[5oO$d5mO$e5oO$hqO%T5|O%U!OO'WYO~P$vO#O9_O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'xX~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#O9aO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'ZX~P!%aOz8RO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOT8TOz8RO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!S$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOT8TOz8RO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!S$Qi!c$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi$T$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$[8`O$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$Z8_O$[8`O$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aO#T9fO~P!+iO!n#Ua'P#Ua!y#Ua!o#Ua~PCVO!n'^a'P'^a!y'^a!o'^a~PCVO#T=PO#V=OO!y&aX#O&aX~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#Wi#O#Wi~P!%aOz8RO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT#Qq!S#Qq!c#Qq#O#Qq#P#Qq#Y#Qq!n#Qq'P#Qq!r#Qq!y#Qq!o#QqV#Qq!p#Qq~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$sq#P$sq#Y$sq!n$sq'P$sq!r$sq!y$sq!o$sqV$sq!p$sq~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y&wa#O&wa~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y&_a#O&_a~P!%aOz8RO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT!vy!S!vy!c!vy!w!vy#O!vy#P!vy#Y!vy!n!vy'P!vy!r!vy!y!vy!o!vyV!vy!p!vy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#Wq#O#Wq~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$sy#P$sy#Y$sy!n$sy'P$sy!r$sy!y$sy!o$syV$sy!p$sy~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$s!R#P$s!R#Y$s!R!n$s!R'P$s!R!r$s!R!y$s!R!o$s!RV$s!R!p$s!R~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$s!Z#P$s!Z#Y$s!Z!n$s!Z'P$s!Z!r$s!Z!y$s!Z!o$s!ZV$s!Z!p$s!Z~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$s!c#P$s!c#Y$s!c!n$s!c'P$s!c!r$s!c!y$s!c!o$s!cV$s!c!p$s!c~P!%aO#T9vO~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$`a#O$`a~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$aa#O$aa~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ba#O$ba~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ca#O$ca~P!%aOz:`O%T#cOT$ca!S$ca!c$ca!w$ca!y$ca#O$ca#T$ca$R$ca$S$ca$T$ca$U$ca$V$ca$X$ca$Y$ca$Z$ca$[$ca$]$ca$^$ca$_$ca~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$fa#O$fa~P!%aO!r?SO#P9^O~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ta#O$ta~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y%Va#O%Va~P!%aOT8TOz8RO!S8UO!c8VO!r9cO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOz:`O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!y$Qi#O$Qi~P!%aOT:bOz:`O!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!S$Qi!y$Qi#O$Qi~P!%aOT:bOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!S$Qi!c$Qi!y$Qi#O$Qi~P!%aOz:`O#T#PO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi~P!%aOz:`O#T#PO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi$T$Qi~P!%aOz:`O#T#PO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi$T$Qi$U$Qi~P!%aOz:`O#T#PO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi~P!%aOz:`O$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi~P!%aOz:`O$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi~P!%aOz:`O$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi~P!%aOz:`O$[:mO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi~P!%aOz:`O$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi~P!%aOz:`O$Z:lO$[:mO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi~P!%aOz:`O$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT#Qi!S#Qi!c#Qi!y#Qi#O#Qi~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT#}i!S#}i!c#}i!y#}i#O#}i~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$Pi#O$Pi~P!%aO!r?TO#P9hO~Oz:`O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT!vq!S!vq!c!vq!w!vq!y!vq#O!vq~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT#Qq!S#Qq!c#Qq!y#Qq#O#Qq~P!%aO!r?YO#P9oO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$sq#O$sq~P!%aO#P9oO#T'ZO#n'XO~Oz:`O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT!vy!S!vy!c!vy!w!vy!y!vy#O!vy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$sy#O$sy~P!%aO#P9pO#T'ZO#n'XO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$s!R#O$s!R~P!%aO#P9sO#T'ZO#n'XO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$s!Z#O$s!Z~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$s!c#O$s!c~P!%aO#T;}O~P!+iOT8TOz8RO!S8UO!c8VO!w:_O#P;|O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!y'^X#O'^X~P!%aO!U$uO$u$tO~P$8rOP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!QVO~P$8rOP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!QWO#X`O#dhO#fbO#gcO#sdO$[vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#Ua#O#Ua~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'^a#O'^a~P!%aOz<]O!w?^O#T#PO$R<_O$SpO~P$8rOP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!QqO#X`O#dhO#fbO#gcO#sdO$[oO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#P>nO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n'^X!r'^X!o'^X#O'^X!p'^X'P'^X~P!%aOT'XXz'XX!S'XX!c'XX!w'XX!z'XX#O'XX#T'XX#X'XX#a'XX#b'XX#y'XX$R'XX$S'XX$T'XX$U'XX$V'XX$X'XX$Y'XX$Z'XX$['XX$]'XX$^'XX$_'XX%T'XX~O#|:uO$O:vO!y'XX~P.@qO!z$hO#T>zO~O!r;SO~PxO!n&qX!p&qX#O&qX'P&qX~O#O?QO!n'pa!p'pa'P'pa~O!r?rO#P;uO~OT[O~O!r?zO#P:rO~OT8TOz8RO!S8UO!c8VO!r>]O!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOT8TOz8RO!S8UO!c8VO!r>^O!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aO!r?{O#P>cO~O!r?|O#P>hO~O#P>hO#T'ZO#n'XO~O#P:rO#T'ZO#n'XO~O#P>iO#T'ZO#n'XO~O#P>lO#T'ZO#n'XO~O!z$hO#T?nO~Oo>wOs$lO~O!z$hO#T?oO~O#O?QO!n'pX!p'pX'P'pX~O!z$hO#T?vO~O!z$hO#T?wO~O!z$hO#T?xO~Oo?lOs$lO~Oo?uOs$lO~Oo?tOs$lO~O%X$]%W$k!e$^#d%`#g'u'W#f~",goto:"%1O'{PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP'|P(TPP(Z(^PPP(vP(^*o(^6cP6cPP>cFxF{PP6cGR! RP! UP! UPPGR! e! h! lGRGRPP! oP! rPPGR!)u!0q!0qGR!0uP!0u!0u!0u!2PP!;g!S#>Y#>h#>n#>x#?O#?U#?[#?b#?l#?v#?|#@S#@^PPPPPPPP#@d#@hP#A^$(h$(k$(u$1R$1_$1t$1zP$1}$2Q$2W$5[$?Y$Gr$Gu$G{$HO$Kb$Ke$Kn$Kv$LQ$Li$MP$Mz%'}PP%0O%0S%0`%0u%0{Q!nQT!qV!rQUOR%x!mRVO}!hPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]|!hPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]Q%_!ZQ%h!aQ%m!eQ'k$cQ'x$iQ)d%lQ+W'{Q,k)QU.O+T+V+]Q.j+pQ/`,jS0a.T.UQ0q.dQ1n0VS1w0`0dQ2Q0nQ2q1pQ2t1xR3[2u|ZPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]2lf]`cgjklmnoprxyz!W!X!Y!]!e!f!g!y!z#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r#}$Q$R$T$h$z%S%U%d%r%}&S&W&[&q&t&u&x'P'X'Z']'a'e'p't'y(R(V(W(Y(Z([(t)T)X)`)c)g)n)u)y*V*Z*[*r*w*|+Q+X+[+^+_+j+m+q+t,Y,c,e,g,i,u,x-O-`-a-t-v-z.S.V.[.].^.b/X/n/y0O0T0b0e1R1S1b1k1o1y1{2k2r3n3p3s3t3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7i7j7k7o7w7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v9|9}:O:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?S?T?Y?^?_?p?q?r?y?z?{?|S$ku$`Q%W!V^%e!_$a'j)Y.f0o2OQ%i!bQ%j!cQ%k!dQ%v!kS&V!|){Q&]#OQ'l$dQ'm$eS'|$j'hQ)S%`Q*v'nQ+z(bQ,O(dQ-S)iU.g+n.c0mQ.q+{Q.r+|Q/d,vS0V-y0XQ1X/cQ1e/rS2T0s2WQ2h1`Q3U2iQ3^2zQ3_2{Q3c3VQ3f3`R3g3d0{!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_0z!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_Q#h^Q%O!PQ%P!QQ%Q!RQ,b(sQ.u,RR.y,UR&r#hQ*Q&qR/w-a0{hPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_R#j_k#n`j#i#q&t&x5d5e9W:Q:R:S:TR#saT&}#r'PR-h*[R&R!{0zhPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_R#tb-x!}[#e#k#u$U$V$W$X$Y$Z$v$w%X%Z%]%a%s%|&O&U&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&v&w&|'`'b'c(e(x)v)x)z*O*U*h*j+a+d,n,q-W-Y-[-e-f-g-w.Y/O/[/v0Q0Z0f1g1j1m1z2S2`2o2p2v3Z4]4^4d4e4f4g4h4i4j4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}5P5Q5T5U5W5X5Y5]5^5`5t6e6f6g6h6i6j6k6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}7O7Q7R7U7V7X7Y7Z7^7_7a7m7q8i8j8k8l8m8n8p8q8r8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9U9V9Y9[9]9d9e9g9i9j9k9l9m9n9q9r9t9w:p:x:y:z:{:|:};Q;R;T;U;V;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;g;l;m;p;r;s;w;y;{O>P>Q>R>S>T>U>X>Y>Z>_>`>a>b>d>e>f>g>j>k>m>r>s>{>|>}?V?b?cQ'd$[Y(X$s8o;P=^=_S(]3o7lQ(`$tR+y(aT&X!|){#a$Pg#}$h'X'Z'p't'y(W([)`)c*r*w+Q+X+[+_+j+m+n+t,i,u,x-v.S.V.].b.c0b0m1y3n3s3t7i7j7k7w9|9}:O?S?T?Y?p?q?r?y?z?{?|3yfPVX]`cgjklmnoprxyz!S!W!X!Y!]!e!f!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r#}$Q$R$T$h$z%O%Q%S%T%U%V%d%r%}&S&W&[&q&t&u&x'P'X'Z']'a'e'p't'y(R(V(W(Y(Z([(h(t)T)X)`)c)g)n)u)y){*V*Z*[*r*w*|+Q+X+[+^+_+j+m+n+q+t,Q,T,Y,c,e,g,i,u,x-O-`-a-t-v-z.S.V.[.].^.b.c.u.w/P/X/n/y0O0T0b0e0m0s0}1O1R1S1W1b1k1o1y1{2W2]2k2r3n3p3s3t3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7i7j7k7o7w7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v9|9}:O:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?S?T?Y?^?_?p?q?r?y?z?{?|[#wd#x3h3i3j3kh'V#z'W)f,}-U/k/u1f3l3m3q3rQ)e%nR-T)kY#yd%n)k3h3iV'T#x3j3k1dePVX]`cjklmnoprxyz!S!W!X!Y!]!e!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a'e(R(V(Y(Z(h(t)T)X)g)n)u)y){*V*Z*[*|+^+q,Q,T,Y,c,e,g-O-`-a-t-z.[.^.u.w/P/X/n/y0O0T0e0s0}1O1R1S1W1b1k1o1{2W2]2k2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_Q%o!fQ)l%r#O3vg#}$h'X'Z'p't'y(W([)`*w+Q+X+[+_+j+m+t,i,u,x-v.S.V.].b0b1y7i7j7k7w9|9}:O?S?T?Y?p?q?r?y?z?{?|a3w)c*r+n.c0m3n3s3tY'T#z)f-U3l3mZ*c'W,}/u3q3r0vhPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0}1O1R1S1W1k1o1{2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_T2U0s2WR&^#OR&]#O!r#Z[#e#u$U$V$W$X$Z$s$w%X%Z%]&`&a&b&c&d&e&f&g'`'b'c(e)v)x*O*j+d-Y.Y0f1z2`2p2v3Z9U9V!Y4U3o4d4e4f4g4i4j4l4m4n4o4p4q4r4s4{4|4}5P5Q5T5U5W5X5Y5]5^5`!^6X4^6e6f6g6h6j6k6m6n6o6p6q6r6s6t6|6}7O7Q7R7U7V7X7Y7Z7^7_7a7l7m#b8[#k%a%s%|&O&v&w&|(x*U+a,n,q-W-e-g/[4]5t7q8i8j8k8l8n8o8p8t8u8v8w8x8y8z8{9Y9[9]9d9g9i9l9n9q9r9t9w:p;Rr>s>{?b?c!|:i&U)z-[-f-w0Q0Z1g1j1m2o8q8r9e9j9k9m:x:y:z:{:};P;Q;T;U;V;W;X;Y;Z;[;d;f;g;l;m;p;r;s;w;y;{>R>S!`T>X>Z>_>a>d>e>g>j>k>m>|>}?VoU>Y>`>b>fS$iu#fQ$qwU'{$j$l&pQ'}$kS(P$m$rQ+Z'|Q+](OQ+`(QQ1p0VQ5s7dS5v7f7gQ5w7hQ7p9xS7r9y9zQ7s9{Q;O>uS;h>w>zQ;o?PQ>y?jS?O?l?nQ?U?oQ?`?sS?a?t?wS?d?u?vR?e?xT'u$h+Q!csPVXt!S!j!r!s!w$h%O%Q%T%V'p([(h)`+Q+j+t,Q,T,u,x.u.w/P0}1O1W2]Q$]rR*l'eQ-{+PQ.i+oQ0U-xQ0j.`Q1|0kR2w1}T0W-y0XQ+V'zQ.U+YR0d.XQ(_$tQ)^%iQ)s%vQ*u'mS+x(`(aQ-q*vR.p+yQ(^$tQ)b%kQ)r%vQ*q'lS*t'm)sU+w(_(`(aS-p*u*vS.o+x+yQ/i,{Q/{-nQ/}-qR0v.pQ(]$tQ)]%iQ)_%jQ)q%vU*s'm)r)sW+v(^(_(`(aQ,t)^U-o*t*u*vU.n+w+x+yS/|-p-qS0u.o.pQ1i/}R2Y0vX+r([)`+t,xb%f!_$a'j+n.c.f0m0o2OR,r)YQ$ovS+b(S?Qg?m([)`+i+j+m+t,u,x.a.b0lR0t.kT2V0s2W0}|PVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g,m-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_T$y{$|Q,O(dR.r+|T${{$|Q(j%OQ(r%QQ(w%TQ(z%VQ.},XQ0z.yQ0{.|R2c1WR(m%PX,[(k(l,],_R(n%PX(p%Q%T%V1WR%T!T_%b!]%S(t,c,e/X1RR%V!UR/],gR,j)PQ)a%kS*p'l)bS-m*q,{S/z-n/iR1h/{T,w)`,xQ-P)fU/l,|,}-UU1^/k/t/uR2n1fR/o-OR2l1bSSO!mR!oSQ!rVR%y!rQ!jPS!sV!rQ!wX[%u!j!s!w,Q1O2]Q,Q(hQ1O/PR2]0}Q)o%sS-X)o9bR9b8rQ-b*QR/x-bQ&y#oS*X&y9XR9X:tS*]&|&}R-i*]Q)|&YR-^)|!j'Y#|'o*f*z+O+T+e+i.T.W.Z.a/_0`0c0g0l1x2u5x5y5z7e7t7u7v;q;t;x?W?X?Z?f?g?h?iS*e'Y/g]/g,{-n.f0o1[2O!h'[#|'o*z+O+T+e+i.T.W.Z.a/_0`0c0g0l1x2u5x5y5z7e7t7u7v;q;t;x?W?X?Z?f?g?h?iS*g'[/hZ/h,{-n.f0o2OU#xd%n)kU'S#x3j3kQ3j3hR3k3iQ'W#z^*b'W,}/k/u1f3q3rQ,})fQ/u-UQ3q3lR3r3m|tPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]W$_t'p+j,uS'p$h+QS+j([+tT,u)`,xQ'f$]R*m'fQ0X-yR1q0XQ+R'vR-}+RQ0].PS1u0]1vR1v0^Q._+fR0i._Q+t([R.l+tW+m([)`+t,xS.b+j,uT.e+m.bQ)Z%fR,s)ZQ(T$oS+c(T?RR?R?mQ2W0sR2}2WQ$|{R(f$|Q,S(iR.v,SQ,V(jR.z,VQ,](kQ,_(lT/Q,],_Q)U%aS,o)U9`R9`8qQ)R%_R,l)RQ,x)`R/e,xQ)h%pS-R)h/sR/s-SQ1c/oR2m1cT!uV!rj!iPVX!j!r!s!w(h,Q/P0}1O2]Q%R!SQ(i%OW(p%Q%T%V1WQ.x,TQ0x.uR0y.w|[PVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]Q#e]U#k`#q&xQ#ucQ$UkQ$VlQ$WmQ$XnQ$YoQ$ZpQ$sx^$vy3y5|8P:]n>oQ+a(RQ+d(VQ,n)TQ,q)XQ-W)nQ-Y)uQ-[)yQ-e*VQ-f*ZQ-g*[^-k3u5b7c9v;}>p>qQ-w*|Q.Y+^Q/O,YQ/[,gQ/v-`Q0Q-tQ0Z-zQ0f.[Q1g/yQ1j0OQ1m0TQ1z0eU2S0s2W:rQ2`1SQ2o1kQ2p1oQ2v1{Q3Z2rQ3o3xQ4]jQ4^5eQ4d5fQ4e5hQ4f5jQ4g5lQ4h5nQ4i5pQ4j3zQ4l3|Q4m3}Q4n4OQ4o4PQ4p4QQ4q4RQ4r4SQ4s4TQ4t4UQ4u4VQ4v4WQ4w4XQ4x4YQ4y4ZQ4z4[Q4{4_Q4|4`Q4}4aQ5P4bQ5Q4cQ5T4kQ5U5OQ5W5RQ5X5SQ5Y5VQ5]5ZQ5^5[Q5`5_Q5t5rQ6e5gQ6f5iQ6g5kQ6h5mQ6i5oQ6j5qQ6k5}Q6m6PQ6n6QQ6o6RQ6p6SQ6q6TQ6r6UQ6s6VQ6t6WQ6u6XQ6v6YQ6w6ZQ6x6[Q6y6]Q6z6^Q6{6_Q6|6`Q6}6aQ7O6bQ7Q6cQ7R6dQ7U6lQ7V7PQ7X7SQ7Y7TQ7Z7WQ7^7[Q7_7]Q7a7`Q7l5{Q7m5dQ7q7oQ8i7xQ8j7yQ8k7zQ8l7{Q8m7|Q8n7}Q8o8OQ8p8QU8q,c/X1RQ8r%dQ8t8SQ8u8TQ8v8UQ8w8VQ8x8WQ8y8XQ8z8YQ8{8ZQ8|8[Q8}8]Q9O8^Q9P8_Q9Q8`Q9R8aQ9S8bQ9U8dQ9V8eQ9Y8fQ9[8gQ9]8hQ9d8sQ9e9TQ9g9ZQ9i9^Q9j9_Q9k9aQ9l9cQ9m9fQ9n9hQ9q9oQ9r9pQ9t9sQ9w:QU:p#i&t9WQ:x:UQ:y:VQ:z:WQ:{:XQ:|:YQ:}:ZQ;P:[Q;Q:^Q;R:_Q;T:aQ;U:bQ;V:cQ;W:dQ;X:eQ;Y:fQ;Z:gQ;[:hQ;]:iQ;^:jQ;_:kQ;`:lQ;a:mQ;b:nQ;c:oQ;d:uQ;f:vQ;g:wQ;l;SQ;m;eQ;p;jQ;r;kQ;s;nQ;w;uQ;y;vQ;{;zQOP<{Q>Q<|Q>R=OQ>S=PQ>T=QQ>U=RQ>X=SQ>Y=TQ>Z=UQ>_=aQ>`=bQ>a>VQ>b>WQ>d>[Q>e>]Q>f>^Q>g>cQ>j>hQ>k>iQ>m>lQ>r:SQ>s:RQ>{>vQ>|:qQ>}:sQ?V;iQ?b?^R?c?_R*R&qQ%t!gQ)W%dT*P&q-a$WiPVX]cklmnopxyz!S!W!X!Y!j!r!s!w#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a$Q$R$T$z%O%Q%T%V%}&S&['a(V(h)u+^,Q,T.[.u.w/P0e0}1O1S1W1o1{2]2r3p3u8d8e!t5c']3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5f5h5j5l5n5p7b7c!x7n5a5b5d5e5g5i5k5m5o5q5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`$`:P`j!]!g!y!z#i#l#m#q#r%S%U&q&t&u&x'P(R(t)T)X)n*V*[,e,g-a5r7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8f8g8h8s9W9Z9^9c9h9o9p9s9u9v:Q:R:S:T:_>v?^?_#l>t!|%d&W)y){*Z*|,c-t-z/X/y0O0T1R1k9T9_9a9f:U:V:W:X:Y:Z:[:]:^:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:u:v:w;S;e;j;k;n;u;v;z;|;}=O=P!x?[,Y-`:q:s;iV>[>]>c>h>i>l>n>p!]?]0s2W:rW>^>o>qQ#p`Q&s#iQ&{#qR*T&tS#o`#q^$Sj5d5e:Q:R:S:TS*W&x9WT:t#i&tQ'O#rR*_'PR&T!{R&Z!|Q&Y!|R-]){Q#|gS'^#}3nS'o$h+QS*d'X3sU*f'Z*w-vQ*z'pQ+O'tQ+T'yQ+e(WW+i([)`+t,xQ,{)cQ-n*rQ.T+XQ.W+[Q.Z+_U.a+j+m,uQ.f+nQ/_,iQ0`.SQ0c.VQ0g.]Q0l.bQ0o.cQ1[3tQ1x0bQ2O0mQ2u1yQ5x7iQ5y7jQ5z7kQ7e7wQ7t9|Q7u9}Q7v:OQ;q?SQ;t?TQ;x?YQ?W?pQ?X?qQ?Z?rQ?f?yQ?g?zQ?h?{R?i?|0z!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_#`$Og#}$h'X'Z'p't'y(W([)`)c*r*w+Q+X+[+_+j+m+n+t,i,u,x-v.S.V.].b.c0b0m1y3n3s3t7i7j7k7w9|9}:O?S?T?Y?p?q?r?y?z?{?|S$[r'eQ%l!eS%p!f%rU+f(Y(Z+qQ-Q)gQ/m-OQ0h.^Q1a/nQ2j1bR3W2k|vPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]#Y#g]cklmnopxyz!W!X!Y#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a$Q$R$T$z%}&S&['a(V)u+^.[0e1S1o1{2r3p3u8d8e`+k([)`+j+m+t,u,x.b!t8c']3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5f5h5j5l5n5p7b7c!x<}5a5b5d5e5g5i5k5m5o5q5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`$`?k`j!]!g!y!z#i#l#m#q#r%S%U&q&t&u&x'P(R(t)T)X)n*V*[,e,g-a5r7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8f8g8h8s9W9Z9^9c9h9o9p9s9u9v:Q:R:S:T:_>v?^?_#l?}!|%d&W)y){*Z*|,c-t-z/X/y0O0T1R1k9T9_9a9f:U:V:W:X:Y:Z:[:]:^:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:u:v:w;S;e;j;k;n;u;v;z;|;}=O=P!x@O,Y-`:q:s;iV>[>]>c>h>i>l>n>p!]@P0s2W:rW>^>o>qR'w$hQ'v$hR-|+QR$^rQ#d[Q%Y!WQ%[!XQ%^!YQ(U$pQ({%WQ(|%XQ(}%ZQ)O%]Q)V%cQ)[%gQ)d%lQ)j%qQ)p%tQ*n'iQ-V)mQ-l*oQ.i+oQ.j+pQ.x,WQ/S,`Q/T,aQ/U,bQ/Z,fQ/^,hQ/b,pQ/q-PQ0j.`Q0q.dQ0r.hQ0t.kQ0y.{Q1Y/dQ1_/lQ1n0VQ1|0kQ2Q0nQ2R0pQ2[0|Q2d1XQ2g1^Q2w1}Q2y2PQ2|2VQ3P2ZQ3T2fQ3X2nQ3Y2pQ3]2xQ3a3RQ3b3SR3e3ZR.R+UQ+g(YQ+h(ZR.k+qS+s([+tT,w)`,xa+l([)`+j+m+t,u,x.bQ%g!_Q'i$aQ*o'jQ.h+nS0p.c.fS2P0m0oR2x2OQ$pvW+o([)`+t,xW.`+i+j+m,uS0k.a.bR1}0l|!aPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]Q$ctW+p([)`+t,xU.d+j+m,uR0n.b0z!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_R/a,m0}}PVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g,m-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_T$x{$|Q(q%QQ(v%TQ(y%VR2b1WQ%c!]Q(u%SQ,d(tQ/W,cQ/Y,eQ1Q/XR2_1RQ%q!fR)m%rR/p-O",nodeNames:"⚠ ( HeredocString EscapeSequence abstract LogicOp array as Boolean break case catch clone const continue default declare do echo else elseif enddeclare endfor endforeach endif endswitch endwhile enum extends final finally fn for foreach from function global goto if implements include include_once LogicOp insteadof interface list match namespace new null LogicOp print readonly require require_once return switch throw trait try unset use var Visibility while LogicOp yield LineComment BlockComment TextInterpolation PhpClose Text PhpOpen Template TextInterpolation EmptyStatement ; } { Block : LabelStatement Name ExpressionStatement ConditionalExpression LogicOp MatchExpression ) ( ParenthesizedExpression MatchBlock MatchArm , => AssignmentExpression ArrayExpression ValueList & VariadicUnpacking ... Pair [ ] ListExpression ValueList Pair Pair SubscriptExpression MemberExpression -> ?-> Name VariableName DynamicVariable $ ${ CallExpression ArgList NamedArgument SpreadArgument CastExpression UnionType LogicOp IntersectionType OptionalType NamedType QualifiedName \\ NamespaceName Name NamespaceName Name ScopedExpression :: ClassMemberName DynamicMemberName AssignOp UpdateExpression UpdateOp YieldExpression BinaryExpression LogicOp LogicOp LogicOp BitOp BitOp BitOp CompareOp CompareOp BitOp ArithOp ConcatOp ArithOp ArithOp IncludeExpression RequireExpression CloneExpression UnaryExpression ControlOp LogicOp PrintIntrinsic FunctionExpression static ParamList Parameter #[ Attributes Attribute VariadicParameter PropertyParameter PropertyHooks PropertyHook UseList ArrowFunction NewExpression class BaseClause ClassInterfaceClause DeclarationList ConstDeclaration VariableDeclarator PropertyDeclaration VariableDeclarator MethodDeclaration UseDeclaration UseList UseInsteadOfClause UseAsClause UpdateExpression ArithOp ShellExpression ThrowExpression Integer Float String MemberExpression SubscriptExpression UnaryExpression ArithOp Interpolation String IfStatement ColonBlock SwitchStatement Block CaseStatement DefaultStatement ColonBlock WhileStatement EmptyStatement DoStatement ForStatement ForSpec SequenceExpression ForeachStatement ForSpec Pair GotoStatement ContinueStatement BreakStatement ReturnStatement TryStatement CatchDeclarator DeclareStatement EchoStatement UnsetStatement ConstDeclaration FunctionDefinition ClassDeclaration InterfaceDeclaration TraitDeclaration EnumDeclaration EnumBody EnumCase NamespaceDefinition NamespaceUseDeclaration UseGroup UseClause UseClause GlobalDeclaration FunctionStaticDeclaration Program",maxTerm:318,nodeProps:[[`group`,-36,2,8,49,82,84,86,89,94,95,103,107,108,112,113,116,120,126,132,137,139,140,154,155,156,157,160,161,173,174,188,190,191,192,193,194,200,`Expression`,-28,75,79,81,83,201,203,208,210,211,214,217,218,219,220,221,223,224,225,226,227,228,229,230,231,234,235,239,240,`Statement`,-4,121,123,124,125,`Type`],[`isolate`,-4,67,68,71,200,``],[`openedBy`,70,`phpOpen`,77,`{`,87,`(`,102,`#[`],[`closedBy`,72,`phpClose`,78,`}`,88,`)`,165,`]`]],propSources:[Re],skippedNodes:[0],repeatNodeCount:32,tokenData:"!GQ_R!]OX$zXY&^YZ'sZ]$z]^&^^p$zpq&^qr)Rrs+Pst+otu2buv5evw6rwx8Vxy>]yz>yz{?g{|@}|}Bb}!OCO!O!PDh!P!QKT!Q!R!!o!R![!$q![!]!,P!]!^!-a!^!_!-}!_!`!1S!`!a!2d!a!b!3t!b!c!7^!c!d!7z!d!e!9Y!e!}!7z!}#O!;b#O#P!V<%lO8VR9WV'TP%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X<%lO9mQ9rV%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X<%lO9mQ:^O%`QQ:aRO;'S9m;'S;=`:j;=`O9mQ:oW%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X;=`<%l9m<%lO9mQ;[P;=`<%l9mR;fV'TP%`QOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRV<%l~8V~O8V~~%fR=OW'TPOY8VYZ9PZ!^8V!^!_;{!_;'S8V;'S;=`=h;=`<%l9m<%lO8VR=mW%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X;=`<%l8V<%lO9mR>YP;=`<%l8VR>dV!zQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV?QV!yU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR?nY'TP$^QOY$zYZ%fZz$zz{@^{!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR@eW$_Q'TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zRAUY$[Q'TPOY$zYZ%fZ{$z{|At|!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zRA{V%TQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRBiV#OQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_CXZ$[Q%^W'TPOY$zYZ%fZ}$z}!OAt!O!^$z!^!_%k!_!`6U!`!aCz!a;'S$z;'S;=`&W<%lO$zVDRV#aU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zVDo['TP$]QOY$zYZ%fZ!O$z!O!PEe!P!Q$z!Q![Fs![!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zVEjX'TPOY$zYZ%fZ!O$z!O!PFV!P!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zVF^V#VU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRFz_'TP%XQOY$zYZ%fZ!Q$z!Q![Fs![!^$z!^!_%k!_!g$z!g!hGy!h#R$z#R#SJc#S#X$z#X#YGy#Y;'S$z;'S;=`&W<%lO$zRHO]'TPOY$zYZ%fZ{$z{|Hw|}$z}!OHw!O!Q$z!Q![Ii![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRH|X'TPOY$zYZ%fZ!Q$z!Q![Ii![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRIpZ'TP%XQOY$zYZ%fZ!Q$z!Q![Ii![!^$z!^!_%k!_#R$z#R#SHw#S;'S$z;'S;=`&W<%lO$zRJhX'TPOY$zYZ%fZ!Q$z!Q![Fs![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_K[['TP$^QOY$zYZ%fZz$zz{LQ{!P$z!P!Q,o!Q!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$z_LVX'TPOYLQYZLrZzLQz{N_{!^LQ!^!_! s!_;'SLQ;'S;=`!!i<%lOLQ_LwT'TPOzMWz{Mj{;'SMW;'S;=`NX<%lOMW^MZTOzMWz{Mj{;'SMW;'S;=`NX<%lOMW^MmVOzMWz{Mj{!PMW!P!QNS!Q;'SMW;'S;=`NX<%lOMW^NXO!f^^N[P;=`<%lMW_NdZ'TPOYLQYZLrZzLQz{N_{!PLQ!P!Q! V!Q!^LQ!^!_! s!_;'SLQ;'S;=`!!i<%lOLQ_! ^V!f^'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_! vZOYLQYZLrZzLQz{N_{!aLQ!a!bMW!b;'SLQ;'S;=`!!i<%l~LQ~OLQ~~%f_!!lP;=`<%lLQZ!!vm'TP%WYOY$zYZ%fZ!O$z!O!PFs!P!Q$z!Q![!$q![!^$z!^!_%k!_!d$z!d!e!&o!e!g$z!g!hGy!h!q$z!q!r!(a!r!z$z!z!{!){!{#R$z#R#S!%}#S#U$z#U#V!&o#V#X$z#X#YGy#Y#c$z#c#d!(a#d#l$z#l#m!){#m;'S$z;'S;=`&W<%lO$zZ!$xa'TP%WYOY$zYZ%fZ!O$z!O!PFs!P!Q$z!Q![!$q![!^$z!^!_%k!_!g$z!g!hGy!h#R$z#R#S!%}#S#X$z#X#YGy#Y;'S$z;'S;=`&W<%lO$zZ!&SX'TPOY$zYZ%fZ!Q$z!Q![!$q![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!&tY'TPOY$zYZ%fZ!Q$z!Q!R!'d!R!S!'d!S!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!'k['TP%WYOY$zYZ%fZ!Q$z!Q!R!'d!R!S!'d!S!^$z!^!_%k!_#R$z#R#S!&o#S;'S$z;'S;=`&W<%lO$zZ!(fX'TPOY$zYZ%fZ!Q$z!Q!Y!)R!Y!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!)YZ'TP%WYOY$zYZ%fZ!Q$z!Q!Y!)R!Y!^$z!^!_%k!_#R$z#R#S!(a#S;'S$z;'S;=`&W<%lO$zZ!*Q]'TPOY$zYZ%fZ!Q$z!Q![!*y![!^$z!^!_%k!_!c$z!c!i!*y!i#T$z#T#Z!*y#Z;'S$z;'S;=`&W<%lO$zZ!+Q_'TP%WYOY$zYZ%fZ!Q$z!Q![!*y![!^$z!^!_%k!_!c$z!c!i!*y!i#R$z#R#S!){#S#T$z#T#Z!*y#Z;'S$z;'S;=`&W<%lO$zR!,WX!rQ'TPOY$zYZ%fZ![$z![!]!,s!]!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!,zV#yQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV!-hV!nU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!.S[$YQOY$zYZ%fZ!^$z!^!_!.x!_!`!/i!`!a*c!a!b!0]!b;'S$z;'S;=`&W<%l~$z~O$z~~%fR!/PW$ZQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR!/pX$YQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`$z!`!a*c!a;'S$z;'S;=`&W<%lO$zP!0bR!jP!_!`!0k!r!s!0p#d#e!0pP!0pO!jPP!0sQ!j!k!0y#[#]!0yP!0|Q!r!s!0k#d#e!0k_!1ZX#|Y'TPOY$zYZ%fZ!^$z!^!_%k!_!`)r!`!a!1v!a;'S$z;'S;=`&W<%lO$zV!1}V#PU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!2kX$YQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`!3W!`!a!.x!a;'S$z;'S;=`&W<%lO$zR!3_V$YQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!3{[!wQ'TPOY$zYZ%fZ}$z}!O!4q!O!^$z!^!_%k!_!`$z!`!a!6P!a!b!6m!b;'S$z;'S;=`&W<%lO$zV!4vX'TPOY$zYZ%fZ!^$z!^!_%k!_!`$z!`!a!5c!a;'S$z;'S;=`&W<%lO$zV!5jV#bU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!6WV!h^'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!6tW$RQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR!7eV$dQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!8Ta'aS'TP'WYOY$zYZ%fZ!Q$z!Q![!7z![!^$z!^!_%k!_!c$z!c!}!7z!}#R$z#R#S!7z#S#T$z#T#o!7z#o$g$z$g&j!7z&j;'S$z;'S;=`&W<%lO$z_!9ce'aS'TP'WYOY$zYZ%fZr$zrs!:tsw$zwx8Vx!Q$z!Q![!7z![!^$z!^!_%k!_!c$z!c!}!7z!}#R$z#R#S!7z#S#T$z#T#o!7z#o$g$z$g&j!7z&j;'S$z;'S;=`&W<%lO$zR!:{V'TP'uQOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV!;iV#XU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!OZ'TPOY!=yYZ!>qZ!^!=y!^!_!@y!_#O!=y#O#P!Au#P#S!=y#S#T!CP#T;'S!=y;'S;=`!Cm<%lO!=yR!>vV'TPO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s<%lO!?]Q!?`VO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s<%lO!?]Q!?xRO;'S!?];'S;=`!@R;=`O!?]Q!@UWO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s;=`<%l!?]<%lO!?]Q!@sO%UQQ!@vP;=`<%l!?]R!@|]OY!=yYZ!>qZ!a!=y!a!b!?]!b#O!=y#O#P!Au#P#S!=y#S#T!CP#T;'S!=y;'S;=`!Cm<%l~!=y~O!=y~~%fR!AzW'TPOY!=yYZ!>qZ!^!=y!^!_!@y!_;'S!=y;'S;=`!Bd;=`<%l!?]<%lO!=yR!BgWO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s;=`<%l!=y<%lO!?]R!CWV%UQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!CpP;=`<%l!=y_!CzV!p^'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!DjY$UQ#n['TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`#p$z#p#q!EY#q;'S$z;'S;=`&W<%lO$zR!EaV$SQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!E}V!oQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!FkV$eQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z",tokenizers:[Ne,Le,Fe,0,1,2,3,Pe],topRules:{Template:[0,73],Program:[1,241]},dynamicPrecedences:{298:1},specialized:[{term:284,get:(e,t)=>Y(e)<<1,external:Y},{term:284,get:e=>ze[e]||-1}],tokenPrec:29889}),Ve=o.define({name:`php`,parser:Be.configure({props:[i.add({IfStatement:a({except:/^\s*({|else\b|elseif\b|endif\b)/}),TryStatement:a({except:/^\s*({|catch\b|finally\b)/}),SwitchBody:e=>{let t=e.textAfter,n=/^\s*\}/.test(t),r=/^\s*(case|default)\b/.test(t);return e.baseIndent+(n?0:r?1:2)*e.unit},ColonBlock:e=>e.baseIndent+e.unit,"Block EnumBody DeclarationList":ee({closing:`}`}),ArrowFunction:e=>e.baseIndent+e.unit,"String BlockComment":()=>null,Statement:a({except:/^({|end(for|foreach|switch|while)\b)/})}),te.add({"Block EnumBody DeclarationList SwitchBody ArrayExpression ValueList":r,ColonBlock(e){return{from:e.from+1,to:e.to}},BlockComment(e){return{from:e.from+2,to:e.to-2}}})]}),languageData:{commentTokens:{block:{open:`/*`,close:`*/`},line:`//`},indentOnInput:/^\s*(?:case |default:|end(?:if|for(?:each)?|switch|while)|else(?:if)?|\{|\})$/,wordChars:`$`,closeBrackets:{stringPrefixes:[`b`,`B`]}}});function He(e={}){let t=[],r;if(e.baseLanguage!==null)if(e.baseLanguage)r=e.baseLanguage;else{let e=re({matchClosingTags:!1});t.push(e.support),r=e.language}return new s(Ve.configure({wrap:r&&n(e=>e.type.isTop?{parser:r.parser,overlay:e=>e.name==`Text`}:null),top:e.plain?`Program`:`Template`}),t)}export{He as php}; \ No newline at end of file +import{D as e,E as t,I as n,_ as r,b as i,h as ee,p as a,s as o,u as s,v as te}from"./index-BkDx9KsG.js";import{n as c,r as ne}from"./dist-DeO3Qj-D.js";import{html as re}from"./dist-B6XMlZpc.js";var ie=1,ae=2,oe=275,l=3,u=276,d=277,f=278,p=4,m=5,h=6,g=7,_=8,v=9,y=10,b=11,x=12,S=13,C=14,w=15,T=16,E=17,D=18,O=19,k=20,A=21,j=22,M=23,N=24,P=25,F=26,I=27,L=28,R=29,z=30,B=31,V=32,H=33,U=34,W=35,G=36,K=37,q=38,se=39,ce=40,le=41,ue=42,de=43,fe=44,pe=45,me=46,he=47,ge=48,_e=49,ve=50,ye=51,be=52,xe=53,Se=54,Ce=55,we=56,Te=57,Ee=58,De=59,Oe=60,ke=61,Ae=62,J=63,je={abstract:p,and:m,array:h,as:g,true:_,false:_,break:v,case:y,catch:b,clone:x,const:S,continue:C,declare:T,default:w,do:E,echo:D,else:O,elseif:k,enddeclare:A,endfor:j,endforeach:M,endif:N,endswitch:P,endwhile:F,enum:I,extends:L,final:R,finally:z,fn:B,for:V,foreach:H,from:U,function:W,global:G,goto:K,if:q,implements:se,include:ce,include_once:le,instanceof:ue,insteadof:de,interface:fe,list:pe,match:me,namespace:he,new:ge,null:_e,or:ve,print:ye,readonly:be,require:xe,require_once:Se,return:Ce,switch:we,throw:Te,trait:Ee,try:De,unset:Oe,use:ke,var:Ae,public:J,private:J,protected:J,while:64,xor:65,yield:66,__proto__:null};function Y(e){return je[e.toLowerCase()]??-1}function X(e){return e==9||e==10||e==13||e==32}function Z(e){return e>=97&&e<=122||e>=65&&e<=90}function Q(e){return e==95||e>=128||Z(e)}function $(e){return e>=48&&e<=55||e>=97&&e<=102||e>=65&&e<=70}var Me={int:!0,integer:!0,bool:!0,boolean:!0,float:!0,double:!0,real:!0,string:!0,array:!0,object:!0,unset:!0,__proto__:null},Ne=new c(e=>{if(e.next==40){e.advance();let t=0;for(;X(e.peek(t));)t++;let n=``,r;for(;Z(r=e.peek(t));)n+=String.fromCharCode(r),t++;for(;X(e.peek(t));)t++;e.peek(t)==41&&Me[n.toLowerCase()]&&e.acceptToken(ie)}else if(e.next==60&&e.peek(1)==60&&e.peek(2)==60){for(let t=0;t<3;t++)e.advance();for(;e.next==32||e.next==9;)e.advance();let t=e.next==39;if(t&&e.advance(),!Q(e.next))return;let n=String.fromCharCode(e.next);for(;e.advance(),!(!Q(e.next)&&!(e.next>=48&&e.next<=55));)n+=String.fromCharCode(e.next);if(t){if(e.next!=39)return;e.advance()}if(e.next!=10&&e.next!=13)return;for(;;){let t=e.next==10||e.next==13;if(e.advance(),e.next<0)return;if(t){for(;e.next==32||e.next==9;)e.advance();let t=!0;for(let r=0;r{e.next<0&&e.acceptToken(f)}),Fe=new c((e,t)=>{e.next==63&&t.canShift(d)&&e.peek(1)==62&&e.acceptToken(d)});function Ie(e){let t=e.peek(1);if(t==110||t==114||t==116||t==118||t==101||t==102||t==92||t==36||t==34||t==123)return 2;if(t>=48&&t<=55){let t=2,n;for(;t<5&&(n=e.peek(t))>=48&&n<=55;)t++;return t}if(t==120&&$(e.peek(2)))return $(e.peek(3))?4:3;if(t==117&&e.peek(2)==123)for(let t=3;;t++){let n=e.peek(t);if(n==125)return t==2?0:t+1;if(!$(n))break}return 0}var Le=new c((e,t)=>{let n=!1;for(;!(e.next==34||e.next<0||e.next==36&&(Q(e.peek(1))||e.peek(1)==123)||e.next==123&&e.peek(1)==36);n=!0){if(e.next==92){let t=Ie(e);if(t){if(n)break;return e.acceptToken(l,t)}}else if(!n&&(e.next==91||e.next==45&&e.peek(1)==62&&Q(e.peek(2))||e.next==63&&e.peek(1)==45&&e.peek(2)==62&&Q(e.peek(3)))&&t.canShift(u))break;e.advance()}n&&e.acceptToken(oe)}),Re=t({"Visibility abstract final static":e.modifier,"for foreach while do if else elseif switch try catch finally return throw break continue default case":e.controlKeyword,"endif endfor endforeach endswitch endwhile declare enddeclare goto match":e.controlKeyword,"and or xor yield unset clone instanceof insteadof":e.operatorKeyword,"function fn class trait implements extends const enum global interface use var":e.definitionKeyword,"include include_once require require_once namespace":e.moduleKeyword,"new from echo print array list as":e.keyword,null:e.null,Boolean:e.bool,VariableName:e.variableName,"NamespaceName/...":e.namespace,"NamedType/...":e.typeName,Name:e.name,"CallExpression/Name":e.function(e.variableName),"LabelStatement/Name":e.labelName,"MemberExpression/Name":e.propertyName,"MemberExpression/VariableName":e.special(e.propertyName),"ScopedExpression/ClassMemberName/Name":e.propertyName,"ScopedExpression/ClassMemberName/VariableName":e.special(e.propertyName),"CallExpression/MemberExpression/Name":e.function(e.propertyName),"CallExpression/ScopedExpression/ClassMemberName/Name":e.function(e.propertyName),"MethodDeclaration/Name":e.function(e.definition(e.variableName)),"FunctionDefinition/Name":e.function(e.definition(e.variableName)),"ClassDeclaration/Name":e.definition(e.className),UpdateOp:e.updateOperator,ArithOp:e.arithmeticOperator,"LogicOp IntersectionType/&":e.logicOperator,BitOp:e.bitwiseOperator,CompareOp:e.compareOperator,ControlOp:e.controlOperator,AssignOp:e.definitionOperator,"$ ConcatOp":e.operator,LineComment:e.lineComment,BlockComment:e.blockComment,Integer:e.integer,Float:e.float,String:e.string,ShellExpression:e.special(e.string),"=> ->":e.punctuation,"( )":e.paren,"#[ [ ]":e.squareBracket,"${ { }":e.brace,"-> ?->":e.derefOperator,", ; :: : \\":e.separator,"PhpOpen PhpClose":e.processingInstruction}),ze={__proto__:null,static:325,STATIC:325,class:351,CLASS:351},Be=ne.deserialize({version:14,states:"%#[Q`OWOOQhQaOOP%oO`OOOOO#t'#Hh'#HhO%tO#|O'#DuOOO#u'#Dx'#DxQ&SOWO'#DxO&XO$VOOOOQ#u'#Dy'#DyO&lQaO'#D}O'[QdO'#EQO+QQdO'#IqO+_QdO'#ERO-RQaO'#EXO/bQ`O'#EUO/gQ`O'#E_O2UQaO'#E_O2]Q`O'#EgO2bQ`O'#EqO-RQaO'#EqO2mQpO'#FOO2rQ`O'#FOOOQS'#Iq'#IqO2wQ`O'#ExOOQS'#Ih'#IhO5SQdO'#IeO9UQeO'#F]O-RQaO'#FlO-RQaO'#FmO-RQaO'#FnO-RQaO'#FoO-RQaO'#FoO-RQaO'#FrOOQO'#Ir'#IrO9cQ`O'#FxOOQO'#Ht'#HtO9kQ`O'#HXO:VQ`O'#FsO:bQ`O'#HfO:mQ`O'#GPO:uQaO'#GQO-RQaO'#G`O-RQaO'#GcO;bOrO'#GfOOQS'#JP'#JPOOQS'#JO'#JOOOQS'#Ie'#IeO/bQ`O'#GmO/bQ`O'#GoO/bQ`O'#GtOhQaO'#GvO;iQ`O'#GwO;nQ`O'#GzO:]Q`O'#G}O;sQeO'#HOO;sQeO'#HPO;sQeO'#HQO;}Q`O'#HROhQ`O'#HVO:]Q`O'#HWO>mQ`O'#HWO;}Q`O'#HXO:]Q`O'#HZO:]Q`O'#H[O:]Q`O'#H]O>rQ`O'#H`O>}Q`O'#HaOQO!$dQ`O,5POOQ#u-E;h-E;hO!1QQ`O,5=tOOO#u,5:_,5:_O!1]O#|O,5:_OOO#u-E;g-E;gOOOO,5>|,5>|OOQ#y1G0T1G0TO!1eQ`O1G0YO-RQaO1G0YO!2wQ`O1G0qOOQS1G0q1G0qOOQS'#Eo'#EoOOQS'#Il'#IlO-RQaO'#IlOOQS1G0r1G0rO!4ZQ`O'#IoO!5pQ`O'#IqO!5}QaO'#EwOOQO'#Io'#IoO!6XQ`O'#InO!6aQ`O,5;aO-RQaO'#FXOOQS'#FW'#FWOOQS1G1[1G1[O!6fQdO1G1dO!8kQdO1G1dO!:WQdO1G1dO!;sQdO1G1dO!=`QdO1G1dO!>{QdO1G1dO!@hQdO1G1dO!BTQdO1G1dO!CpQdO1G1dO!E]QdO1G1dO!FxQdO1G1dO!HeQdO1G1dO!JQQdO1G1dO!KmQdO1G1dO!MYQdO1G1dO!NuQdO1G1dOOQT1G0_1G0_O!#[Q`O,5<_O#!bQaO'#EYOOQS1G0[1G0[O#!iQ`O,5:zOEdQaO,5:zO#!nQaO,5;OO#!uQdO,5:|O#$tQdO,5?UO#&sQaO'#HmO#'TQ`O,5?TOOQS1G0e1G0eO#']Q`O1G0eO#'bQ`O'#IkO#(zQ`O'#IkO#)SQ`O,5;SOG|QaO,5;SOOQS1G0w1G0wOOQO,5>^,5>^OOQO-E;p-E;pOOQS1G1U1G1UO#)pQdO'#FQO#+uQ`O'#HsOJ}QpO1G1UO2wQ`O'#HpO#+zQtO,5;eO2wQ`O'#HqO#,iQtO,5;gO#-WQaO1G1OOOQS,5;h,5;hO#/gQtO'#FQO#/tQdO1G0dO-RQaO1G0dO#1aQdO1G1aO#2|QdO1G1cOOQO,5X,5>XOOQO-E;k-E;kOOQS7+&P7+&PO!+iQaO,5;TO$$^QaO'#HnO$$hQ`O,5?VOOQS1G0n1G0nO$$pQ`O1G0nPOQO'#FQ'#FQOOQO,5>_,5>_OOQO-E;q-E;qOOQS7+&p7+&pOOQS,5>[,5>[OOQS-E;n-E;nO$$uQtO,5>]OOQS-E;o-E;oO$%dQdO7+&jO$'iQtO'#FQO$'vQdO7+&OOOQS1G0j1G0jOOQO,5>a,5>aOOQO-E;s-E;sOOQ#u7+(x7+(xO!$[QdO7+(xOOQ#u7+(}7+(}O#JfQ`O7+(}O#JkQ`O7+(}OOQ#u7+(z7+(zO!.]Q`O7+(zO!1TQ`O7+(zO!1QQ`O7+(zO$)cQ`O,5i,5>iOOQS-E;{-E;{O$.lQdO7+'qO$.|QpO7+'qO$/XQdO'#IxOOQO,5pOOQ#u,5>p,5>pOOQ#u-EoOOQS-EVQdO1G2^OOQS,5>h,5>hOOQS-E;z-E;zOOQ#u7+({7+({O$?oQ`O'#GXO:]Q`O'#H_OOQO'#IV'#IVO$@fQ`O,5=xOOQ#u,5=x,5=xO$AcQ!bO'#EQO$AzQ!bO7+(}O$BYQpO7+)RO#KRQpO7+)RO$BbQ`O'#HbO!$[QdO7+)RO$BpQdO,5>rOOQS-EVOOQS-E;i-E;iO$D{QdO<Z,5>ZOOQO-E;m-E;mOOQS1G1_1G1_O$8rQaO,5:uO$G}QaO'#HlO$H[Q`O,5?QOOQS1G0`1G0`OOQS7+&Q7+&QO$HdQ`O7+&UO$IyQ`O1G0oO$K`Q`O,5>YOOQO,5>Y,5>YOOQO-E;l-E;lOOQS7+&Y7+&YOOQS7+&U7+&UOOQ#u<c,5>cOOQO-E;u-E;uOOQS<lOOQ#u-EmOOQO-EW,5>WOOQO-E;j-E;jO!+iQaO,5;UOOQ#uANBTANBTO#JfQ`OANBTOOQ#uANBQANBQO!.]Q`OANBQO!+iQaO7+'hOOQO7+'l7+'lO%-bQ`O7+'hO%.wQ`O7+'hO%/SQ`O7+'lO!+iQaO7+'mOOQO7+'m7+'mO%/XQdO'#F}OOQO'#Hv'#HvO%/jQ`O,5e,5>eOOQS-E;w-E;wOOQO1G2_1G2_O$1YQdO1G2_O$/jQpO1G2_O#JkQ`O1G2]O!.mQdO1G2aO%$dQ!bO1G2]O!$[QdO1G2]OOQO1G2a1G2aOOQO1G2]1G2]O%2uQaO'#G]OOQO1G2b1G2bOOQSAN@xAN@xO!.]Q`OAN@xOOOQ<]O%6rQ!bO'#FQO!$[QdOANBXOOQ#uANBXANBXO:]Q`O,5=}O%7WQ`O,5=}O%7cQ`O'#IXO%7wQ`O,5?rOOQS1G3h1G3hOOQS7+)x7+)xP%+OQpOANBXO%8PQ`O1G0pOOQ#uG27oG27oOOQ#uG27lG27lO%9fQ`O<d,5>dO%dOOQO-E;v-E;vO%hQ`O'#IqO%>rQ`O'#IhO!$[QdO'#IOO%@lQaO,5s,5>sOOQO-Ej,5>jOOQP-E;|-E;|OOQO1G2c1G2cOOQ#uLD,kLD,kOOQTG27[G27[O!$[QdOLD-RO!$[QdO<OO%EpQ`O,5>OPOQ#uLD-_LD-_OOQO7+'o7+'oO+_QdO7+'oOOQS!$( ]!$( ]OOQOAN@}AN@}OOQS1G2d1G2dOOQS1G2e1G2eO%E{QdO1G2eOOQ#u!$(!m!$(!mOOQOANBVANBVOOQO1G3j1G3jO:]Q`O1G3jOOQO<tQaO,5:xO'/vQaO,5;uO'/vQaO,5;wO'@sQdO,5YQdO,5<^O)@XQdO,5QQ`O,5=eO*>YQaO'#HkO*>dQ`O,5?ROlQdO7+%tO*@kQ`O1G0jO!+iQaO1G0jO*BQQdO7+&OOoO*GeQ`O,5>VO*HzQdO<[QdO,5{QdO'#IjO.BbQ`O'#IeO.BoQ`O'#GPO.BwQaO,5:nO.COQ`O,5uOs#fOx7xOy7xO}aO!O^O!Q8OO!R}O!T7}O!V7yO!W7yO!Z8QO!d:QO!z]O#T#mO#V#lO#X`O#dhO#fbO#gcO#sdO$[7|O$d7{O$e7|O$hqO%T8PO%U!OO%W}O%X}O%`|O'WYO'u{O#Y']P~O#O#qO~P/lO!z#rO~O#d#tO#fbO#gcO~O'a#vO~O#s#zO~OU$OO!R$OO!w#}O#s3hO'W#{O~OT'XXz'XX!S'XX!c'XX!n'XX!w'XX!z'XX#T'XX#X'XX#a'XX#b'XX#y'XX$R'XX$S'XX$T'XX$U'XX$V'XX$X'XX$Y'XX$Z'XX$['XX$]'XX$^'XX$_'XX%T'XX'P'XX!y'XX!o'XX~O#|$QO$O$RO~P3YOP7wOQ|OU_OW}O[7zOo>uOs#fOx7xOy7xO}aO!O^O!Q8OO!R}O!T7}O!V7yO!W7yO!Z8QO!d:QO!z]O#X`O#dhO#fbO#gcO#sdO$[7|O$d7{O$e7|O$hqO%T8PO%U!OO%W}O%X}O%`|O'WYO'u{OT$PXz$PX!S$PX!c$PX!n$PX!w$PX#a$PX#b$PX#y$PX$R$PX$S$PX$T$PX$U$PX$V$PX$X$PX$Y$PX$Z$PX$]$PX$^$PX$_$PX'P$PX!y$PX!o$PX~Or$TO#T8eO#V8dO~P5^O#sdO'WYO~OS$fO]$aOk$dOm$fOs$`O!a$bO$krO$u$eO~O!z$hO#T$jO'W$gO~Oo$mOs$lO#d$nO~O!z$hO#T$rO~O!U$uO$u$tO~P-ROR${O!p$zO#d$yO#g$zO&}${O~O't$}O~P;PO!z%SO~O!z%UO~O!n#bO'P#bO~P-RO!pXO~O!z%`O~OP7wOQ|OU_OW}O[7zOo>uOs#fOx7xOy7xO}aO!O^O!Q8OO!R}O!T7}O!V7yO!W7yO!Z8QO!d:QO!z]O#X`O#dhO#fbO#gcO#sdO$[7|O$d7{O$e7|O$hqO%T8PO%U!OO%W}O%X}O%`|O'WYO'u{O~O!z%dO~O]$aO~O!pXO#sdO'WYO~O]%rOs%rO#s%nO'WYO~O!j%wO'Q%wO'TRO~O'Q%zO~PhO!o%{O~PhO!r%}O~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'cX#O'cX~P!%aO!r)yO!y'eX#O'eX~P)dO!y#kX#O#kX~P!+iO#O){O!y'bX~O!y)}O~O%T#cOT$Qiz$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi$_$Qi'P$Qi!y$Qi#O$Qi#P$Qi#Y$Qi!o$Qi!r$QiV$Qi#|$Qi$O$Qi!p$Qi~P!%aOz#QO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi'P$Qi!y$Qi!o$Qi~P!%aOT#SOz#QO!c#UO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cO!S$Qi!n$Qi'P$Qi!y$Qi!o$Qi~P!%aOT#SOz#QO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cO!S$Qi!c$Qi!n$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi$T$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi$T$Qi$U$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$[#_O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$Z#^O$[#_O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi'P$Qi!y$Qi!o$Qi~P!%aO_*PO~PxO$hqO$krO~P2wO#X+|O#a+{O#b+{O~O#d,OO%W,OO%^+}O'W$gO~O!o,PO~PCVOc%bXd%bXh%bXj%bXf%bXg%bXe%bX~PhOc,TOd,ROP%aiQ%aiS%aiU%aiW%aiX%ai[%ai]%ai^%ai`%aia%aib%aik%aim%aio%aip%aiq%ais%ait%aiu%aiv%aix%aiy%ai|%ai}%ai!O%ai!P%ai!Q%ai!R%ai!T%ai!V%ai!W%ai!X%ai!Y%ai!Z%ai![%ai!]%ai!^%ai!_%ai!a%ai!b%ai!d%ai!n%ai!p%ai!z%ai#X%ai#d%ai#f%ai#g%ai#s%ai$[%ai$d%ai$e%ai$h%ai$k%ai$u%ai%T%ai%U%ai%W%ai%X%ai%`%ai&|%ai'W%ai'u%ai'Q%ai!o%aih%aij%aif%aig%aiY%ai_%aii%aie%ai~Oc,XOd,UOh,WO~OY,YO_,ZO!o,^O~OY,YO_,ZOi%gX~Oi,`O~Oj,aO~O!n,cO~PxO$hqO$krO~P2wO!p)`O~OU$OO!R$OO!w3nO#s3iO'W,zO~O#s,|O~O!p-OO'a'UO~O#sdO'WYO!n&zX#O&zX'P&zX~O#O)gO!n'ya'P'ya~O#s-UO~O!n&_X#O&_X'P&_X#P&_X~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#ka#O#ka~P!%aO!y&cX#O&cX~P@aO#O){O!y'ba~O!o-_O~PCVO#P-`O~O#O-aO!o'YX~O!o-cO~O!y-dO~OT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O#Wi#Y#Wi~P!%aO!y&bX#O&bX~PxO#n'XO~OS+kO].cOm+kOs$`O!U+kO!`+kO!a+kO#d>xO$hqO$krO~P2wOS+kO].cOm+kOs$`O!U+kO!`+kO!a+kO#d>xO$hqO~P2wO!n#bO!p-yO'P#bO~OS+kO]+nOm+kOs$`O!U+kO!_+qO!`+kO!a+kO!o.mO#d>xO$hqO$krO~P2wO#d.rO%W.rO%^+}O'W$gO~O%W.sO~O#Y.tO~Oc%bad%bah%baj%baf%bag%bae%ba~PhOc.wOd,ROP%aqQ%aqS%aqU%aqW%aqX%aq[%aq]%aq^%aq`%aqa%aqb%aqk%aqm%aqo%aqp%aqq%aqs%aqt%aqu%aqv%aqx%aqy%aq|%aq}%aq!O%aq!P%aq!Q%aq!R%aq!T%aq!V%aq!W%aq!X%aq!Y%aq!Z%aq![%aq!]%aq!^%aq!_%aq!a%aq!b%aq!d%aq!n%aq!p%aq!z%aq#X%aq#d%aq#f%aq#g%aq#s%aq$[%aq$d%aq$e%aq$h%aq$k%aq$u%aq%T%aq%U%aq%W%aq%X%aq%`%aq&|%aq'W%aq'u%aq'Q%aq!o%aqh%aqj%aqf%aqg%aqY%aq_%aqi%aqe%aq~Oc.|Od,UOh.{O~O!r(hO~OP7wOQ|OU_OW}O[xO$hqO$krO~P2wOS+kOY,vO]+nOm+kOs$`O!U+kO!_+qO!`+kO!a+kO!o/fO#d>xO$hqO$krO~P2wOw!tX!p!tX#T!tX#n!tX#s#vX#|!tX'W!tX~Ow(ZO!p)`O#T3tO#n3sO~O!p-OO'a&fa~O]/nOs/nO#sdO'WYO~OV/rO!n&za#O&za'P&za~O#O)gO!n'yi'P'yi~O#s/tO~OT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n&_a#O&_a'P&_a#P&_a~P!%aOz#QO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT!vy!S!vy!c!vy!n!vy!w!vy'P!vy!y!vy!o!vy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#ji#O#ji~P!%aO_*PO!o&`X#O&`X~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#]i#O#]i~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#P/yO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!y&ba#O&ba~P!%aO#|0OO!y$ji#O$ji~O#d0PO~O#V0SO#d0RO~P2wOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ji#O$ji~P!%aO!p-yO#|0TO!y$oi#O$oi~O!o0YO'W$gO~O#O0[O!y'kX~O#d0^O~O!y0_O~O!pXO!r0bO~O#T'ZO#n'XO!p'qy!n'qy'P'qy~O!n$sy'P$sy!y$sy!o$sy~PCVO#P0eO#T'ZO#n'XO~O#sdO'WYOw&mX!p&mX#O&mX!n&mX'P&mX~O#O.^Ow'la!p'la!n'la'P'la~OS+kO]0mOm+kOs$`O!U+kO!`+kO!a+kO#d>xO$hqO~P2wO#T3tO#n3sO'W$gO~O#|)XO#T'eX#n'eX'W'eX~O!n#bO!p0sO'P#bO~O#Y0wO~Oh0|O~OTvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$jq#O$jq~P!%aO#|1kO!y$jq#O$jq~O#d1lO~O!n#bO!pXO!z$hO#P1oO'P#bO~O!o1rO'W$gO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$oq#O$oq~P!%aO#T1tO#d1sO!y&lX#O&lX~O#O0[O!y'ka~O#T'ZO#n'XO!p'q!R!n'q!R'P'q!R~O!pXO!r1yO~O!n$s!R'P$s!R!y$s!R!o$s!R~PCVO#P1{O#T'ZO#n'XO~OP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!QvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#^i#O#^i~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$jy#O$jy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$oy#O$oy~P!%aO!pXO#P2rO~O#d2sO~O#O0[O!y'ki~O!n$s!Z'P$s!Z!y$s!Z!o$s!Z~PCVOTvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$j!R#O$j!R~P!%aO!n$s!c'P$s!c!y$s!c!o$s!c~PCVO!a3`O'W$gO~OV3dO!o&Wa#O&Wa~O'W$gO!n%Ri'P%Ri~O'a'_O~O'a/jO~O'a*iO~O'a1]O~OT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$ta#|$ta$O$ta'P$ta!y$ta!o$ta#O$ta~P!%aO#T3uO~P-RO#s3lO~O#s3mO~O!U$uO$u$tO~P#-WOT8TOz8RO!S8UO!c8VO!w:_O#P3pO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n'^X'P'^X!y'^X!o'^X~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#P5aO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O'^X#Y'^X#|'^X$O'^X!n'^X'P'^X!r'^X!y'^X!o'^XV'^X!p'^X~P!%aO#T5OO~P#-WOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$`a#|$`a$O$`a'P$`a!y$`a!o$`a#O$`a~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$aa#|$aa$O$aa'P$aa!y$aa!o$aa#O$aa~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$ba#|$ba$O$ba'P$ba!y$ba!o$ba#O$ba~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$ca#|$ca$O$ca'P$ca!y$ca!o$ca#O$ca~P!%aOz3{O#|$ca$O$ca#O$ca~PMVOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$fa#|$fa$O$fa'P$fa!y$fa!o$fa#O$fa~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n%Va#|%Va$O%Va'P%Va!y%Va!o%Va#O%Va~P!%aOz3{O#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOT3}Oz3{O!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!S$Qi!n$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOT3}Oz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!S$Qi!c$Qi!n$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$[4YO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$Z4XO$[4YO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n#Ua#|#Ua$O#Ua'P#Ua!y#Ua!o#Ua#O#Ua~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n'^a#|'^a$O'^a'P'^a!y'^a!o'^a#O'^a~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT#Qi!S#Qi!c#Qi!n#Qi#|#Qi$O#Qi'P#Qi!y#Qi!o#Qi#O#Qi~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT#}i!S#}i!c#}i!n#}i#|#}i$O#}i'P#}i!y#}i!o#}i#O#}i~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$Pi#|$Pi$O$Pi'P$Pi!y$Pi!o$Pi#O$Pi~P!%aOz3{O#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT!vq!S!vq!c!vq!n!vq!w!vq#|!vq$O!vq'P!vq!y!vq!o!vq#O!vq~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT#Qq!S#Qq!c#Qq!n#Qq#|#Qq$O#Qq'P#Qq!y#Qq!o#Qq#O#Qq~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$sq#|$sq$O$sq'P$sq!y$sq!o$sq#O$sq~P!%aOz3{O#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT!vy!S!vy!c!vy!n!vy!w!vy#|!vy$O!vy'P!vy!y!vy!o!vy#O!vy~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$sy#|$sy$O$sy'P$sy!y$sy!o$sy#O$sy~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$s!R#|$s!R$O$s!R'P$s!R!y$s!R!o$s!R#O$s!R~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$s!Z#|$s!Z$O$s!Z'P$s!Z!y$s!Z!o$s!Z#O$s!Z~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$s!c#|$s!c$O$s!c'P$s!c!y$s!c!o$s!c#O$s!c~P!%aOP7wOU_O[5kOo9xOs#fOx5gOy5gO}aO!O^O!Q5{O!T5qO!V5iO!W5iO!Z5}O!d5eO!z]O#T5bO#X`O#dhO#fbO#gcO#sdO$[5oO$d5mO$e5oO$hqO%T5|O%U!OO'WYO~P$vO#O9_O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'xX~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#O9aO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'ZX~P!%aOz8RO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOT8TOz8RO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!S$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOT8TOz8RO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!S$Qi!c$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi$T$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$[8`O$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$Z8_O$[8`O$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aO#T9fO~P!+iO!n#Ua'P#Ua!y#Ua!o#Ua~PCVO!n'^a'P'^a!y'^a!o'^a~PCVO#T=PO#V=OO!y&aX#O&aX~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#Wi#O#Wi~P!%aOz8RO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT#Qq!S#Qq!c#Qq#O#Qq#P#Qq#Y#Qq!n#Qq'P#Qq!r#Qq!y#Qq!o#QqV#Qq!p#Qq~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$sq#P$sq#Y$sq!n$sq'P$sq!r$sq!y$sq!o$sqV$sq!p$sq~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y&wa#O&wa~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y&_a#O&_a~P!%aOz8RO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT!vy!S!vy!c!vy!w!vy#O!vy#P!vy#Y!vy!n!vy'P!vy!r!vy!y!vy!o!vyV!vy!p!vy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#Wq#O#Wq~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$sy#P$sy#Y$sy!n$sy'P$sy!r$sy!y$sy!o$syV$sy!p$sy~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$s!R#P$s!R#Y$s!R!n$s!R'P$s!R!r$s!R!y$s!R!o$s!RV$s!R!p$s!R~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$s!Z#P$s!Z#Y$s!Z!n$s!Z'P$s!Z!r$s!Z!y$s!Z!o$s!ZV$s!Z!p$s!Z~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$s!c#P$s!c#Y$s!c!n$s!c'P$s!c!r$s!c!y$s!c!o$s!cV$s!c!p$s!c~P!%aO#T9vO~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$`a#O$`a~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$aa#O$aa~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ba#O$ba~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ca#O$ca~P!%aOz:`O%T#cOT$ca!S$ca!c$ca!w$ca!y$ca#O$ca#T$ca$R$ca$S$ca$T$ca$U$ca$V$ca$X$ca$Y$ca$Z$ca$[$ca$]$ca$^$ca$_$ca~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$fa#O$fa~P!%aO!r?SO#P9^O~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ta#O$ta~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y%Va#O%Va~P!%aOT8TOz8RO!S8UO!c8VO!r9cO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOz:`O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!y$Qi#O$Qi~P!%aOT:bOz:`O!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!S$Qi!y$Qi#O$Qi~P!%aOT:bOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!S$Qi!c$Qi!y$Qi#O$Qi~P!%aOz:`O#T#PO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi~P!%aOz:`O#T#PO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi$T$Qi~P!%aOz:`O#T#PO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi$T$Qi$U$Qi~P!%aOz:`O#T#PO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi~P!%aOz:`O$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi~P!%aOz:`O$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi~P!%aOz:`O$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi~P!%aOz:`O$[:mO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi~P!%aOz:`O$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi~P!%aOz:`O$Z:lO$[:mO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi~P!%aOz:`O$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT#Qi!S#Qi!c#Qi!y#Qi#O#Qi~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT#}i!S#}i!c#}i!y#}i#O#}i~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$Pi#O$Pi~P!%aO!r?TO#P9hO~Oz:`O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT!vq!S!vq!c!vq!w!vq!y!vq#O!vq~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT#Qq!S#Qq!c#Qq!y#Qq#O#Qq~P!%aO!r?YO#P9oO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$sq#O$sq~P!%aO#P9oO#T'ZO#n'XO~Oz:`O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT!vy!S!vy!c!vy!w!vy!y!vy#O!vy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$sy#O$sy~P!%aO#P9pO#T'ZO#n'XO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$s!R#O$s!R~P!%aO#P9sO#T'ZO#n'XO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$s!Z#O$s!Z~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$s!c#O$s!c~P!%aO#T;}O~P!+iOT8TOz8RO!S8UO!c8VO!w:_O#P;|O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!y'^X#O'^X~P!%aO!U$uO$u$tO~P$8rOP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!QVO~P$8rOP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!QWO#X`O#dhO#fbO#gcO#sdO$[vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#Ua#O#Ua~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'^a#O'^a~P!%aOz<]O!w?^O#T#PO$R<_O$SpO~P$8rOP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!QqO#X`O#dhO#fbO#gcO#sdO$[oO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#P>nO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n'^X!r'^X!o'^X#O'^X!p'^X'P'^X~P!%aOT'XXz'XX!S'XX!c'XX!w'XX!z'XX#O'XX#T'XX#X'XX#a'XX#b'XX#y'XX$R'XX$S'XX$T'XX$U'XX$V'XX$X'XX$Y'XX$Z'XX$['XX$]'XX$^'XX$_'XX%T'XX~O#|:uO$O:vO!y'XX~P.@qO!z$hO#T>zO~O!r;SO~PxO!n&qX!p&qX#O&qX'P&qX~O#O?QO!n'pa!p'pa'P'pa~O!r?rO#P;uO~OT[O~O!r?zO#P:rO~OT8TOz8RO!S8UO!c8VO!r>]O!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOT8TOz8RO!S8UO!c8VO!r>^O!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aO!r?{O#P>cO~O!r?|O#P>hO~O#P>hO#T'ZO#n'XO~O#P:rO#T'ZO#n'XO~O#P>iO#T'ZO#n'XO~O#P>lO#T'ZO#n'XO~O!z$hO#T?nO~Oo>wOs$lO~O!z$hO#T?oO~O#O?QO!n'pX!p'pX'P'pX~O!z$hO#T?vO~O!z$hO#T?wO~O!z$hO#T?xO~Oo?lOs$lO~Oo?uOs$lO~Oo?tOs$lO~O%X$]%W$k!e$^#d%`#g'u'W#f~",goto:"%1O'{PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP'|P(TPP(Z(^PPP(vP(^*o(^6cP6cPP>cFxF{PP6cGR! RP! UP! UPPGR! e! h! lGRGRPP! oP! rPPGR!)u!0q!0qGR!0uP!0u!0u!0u!2PP!;g!S#>Y#>h#>n#>x#?O#?U#?[#?b#?l#?v#?|#@S#@^PPPPPPPP#@d#@hP#A^$(h$(k$(u$1R$1_$1t$1zP$1}$2Q$2W$5[$?Y$Gr$Gu$G{$HO$Kb$Ke$Kn$Kv$LQ$Li$MP$Mz%'}PP%0O%0S%0`%0u%0{Q!nQT!qV!rQUOR%x!mRVO}!hPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]|!hPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]Q%_!ZQ%h!aQ%m!eQ'k$cQ'x$iQ)d%lQ+W'{Q,k)QU.O+T+V+]Q.j+pQ/`,jS0a.T.UQ0q.dQ1n0VS1w0`0dQ2Q0nQ2q1pQ2t1xR3[2u|ZPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]2lf]`cgjklmnoprxyz!W!X!Y!]!e!f!g!y!z#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r#}$Q$R$T$h$z%S%U%d%r%}&S&W&[&q&t&u&x'P'X'Z']'a'e'p't'y(R(V(W(Y(Z([(t)T)X)`)c)g)n)u)y*V*Z*[*r*w*|+Q+X+[+^+_+j+m+q+t,Y,c,e,g,i,u,x-O-`-a-t-v-z.S.V.[.].^.b/X/n/y0O0T0b0e1R1S1b1k1o1y1{2k2r3n3p3s3t3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7i7j7k7o7w7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v9|9}:O:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?S?T?Y?^?_?p?q?r?y?z?{?|S$ku$`Q%W!V^%e!_$a'j)Y.f0o2OQ%i!bQ%j!cQ%k!dQ%v!kS&V!|){Q&]#OQ'l$dQ'm$eS'|$j'hQ)S%`Q*v'nQ+z(bQ,O(dQ-S)iU.g+n.c0mQ.q+{Q.r+|Q/d,vS0V-y0XQ1X/cQ1e/rS2T0s2WQ2h1`Q3U2iQ3^2zQ3_2{Q3c3VQ3f3`R3g3d0{!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_0z!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_Q#h^Q%O!PQ%P!QQ%Q!RQ,b(sQ.u,RR.y,UR&r#hQ*Q&qR/w-a0{hPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_R#j_k#n`j#i#q&t&x5d5e9W:Q:R:S:TR#saT&}#r'PR-h*[R&R!{0zhPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_R#tb-x!}[#e#k#u$U$V$W$X$Y$Z$v$w%X%Z%]%a%s%|&O&U&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&v&w&|'`'b'c(e(x)v)x)z*O*U*h*j+a+d,n,q-W-Y-[-e-f-g-w.Y/O/[/v0Q0Z0f1g1j1m1z2S2`2o2p2v3Z4]4^4d4e4f4g4h4i4j4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}5P5Q5T5U5W5X5Y5]5^5`5t6e6f6g6h6i6j6k6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}7O7Q7R7U7V7X7Y7Z7^7_7a7m7q8i8j8k8l8m8n8p8q8r8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9U9V9Y9[9]9d9e9g9i9j9k9l9m9n9q9r9t9w:p:x:y:z:{:|:};Q;R;T;U;V;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;g;l;m;p;r;s;w;y;{O>P>Q>R>S>T>U>X>Y>Z>_>`>a>b>d>e>f>g>j>k>m>r>s>{>|>}?V?b?cQ'd$[Y(X$s8o;P=^=_S(]3o7lQ(`$tR+y(aT&X!|){#a$Pg#}$h'X'Z'p't'y(W([)`)c*r*w+Q+X+[+_+j+m+n+t,i,u,x-v.S.V.].b.c0b0m1y3n3s3t7i7j7k7w9|9}:O?S?T?Y?p?q?r?y?z?{?|3yfPVX]`cgjklmnoprxyz!S!W!X!Y!]!e!f!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r#}$Q$R$T$h$z%O%Q%S%T%U%V%d%r%}&S&W&[&q&t&u&x'P'X'Z']'a'e'p't'y(R(V(W(Y(Z([(h(t)T)X)`)c)g)n)u)y){*V*Z*[*r*w*|+Q+X+[+^+_+j+m+n+q+t,Q,T,Y,c,e,g,i,u,x-O-`-a-t-v-z.S.V.[.].^.b.c.u.w/P/X/n/y0O0T0b0e0m0s0}1O1R1S1W1b1k1o1y1{2W2]2k2r3n3p3s3t3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7i7j7k7o7w7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v9|9}:O:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?S?T?Y?^?_?p?q?r?y?z?{?|[#wd#x3h3i3j3kh'V#z'W)f,}-U/k/u1f3l3m3q3rQ)e%nR-T)kY#yd%n)k3h3iV'T#x3j3k1dePVX]`cjklmnoprxyz!S!W!X!Y!]!e!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a'e(R(V(Y(Z(h(t)T)X)g)n)u)y){*V*Z*[*|+^+q,Q,T,Y,c,e,g-O-`-a-t-z.[.^.u.w/P/X/n/y0O0T0e0s0}1O1R1S1W1b1k1o1{2W2]2k2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_Q%o!fQ)l%r#O3vg#}$h'X'Z'p't'y(W([)`*w+Q+X+[+_+j+m+t,i,u,x-v.S.V.].b0b1y7i7j7k7w9|9}:O?S?T?Y?p?q?r?y?z?{?|a3w)c*r+n.c0m3n3s3tY'T#z)f-U3l3mZ*c'W,}/u3q3r0vhPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0}1O1R1S1W1k1o1{2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_T2U0s2WR&^#OR&]#O!r#Z[#e#u$U$V$W$X$Z$s$w%X%Z%]&`&a&b&c&d&e&f&g'`'b'c(e)v)x*O*j+d-Y.Y0f1z2`2p2v3Z9U9V!Y4U3o4d4e4f4g4i4j4l4m4n4o4p4q4r4s4{4|4}5P5Q5T5U5W5X5Y5]5^5`!^6X4^6e6f6g6h6j6k6m6n6o6p6q6r6s6t6|6}7O7Q7R7U7V7X7Y7Z7^7_7a7l7m#b8[#k%a%s%|&O&v&w&|(x*U+a,n,q-W-e-g/[4]5t7q8i8j8k8l8n8o8p8t8u8v8w8x8y8z8{9Y9[9]9d9g9i9l9n9q9r9t9w:p;Rr>s>{?b?c!|:i&U)z-[-f-w0Q0Z1g1j1m2o8q8r9e9j9k9m:x:y:z:{:};P;Q;T;U;V;W;X;Y;Z;[;d;f;g;l;m;p;r;s;w;y;{>R>S!`T>X>Z>_>a>d>e>g>j>k>m>|>}?VoU>Y>`>b>fS$iu#fQ$qwU'{$j$l&pQ'}$kS(P$m$rQ+Z'|Q+](OQ+`(QQ1p0VQ5s7dS5v7f7gQ5w7hQ7p9xS7r9y9zQ7s9{Q;O>uS;h>w>zQ;o?PQ>y?jS?O?l?nQ?U?oQ?`?sS?a?t?wS?d?u?vR?e?xT'u$h+Q!csPVXt!S!j!r!s!w$h%O%Q%T%V'p([(h)`+Q+j+t,Q,T,u,x.u.w/P0}1O1W2]Q$]rR*l'eQ-{+PQ.i+oQ0U-xQ0j.`Q1|0kR2w1}T0W-y0XQ+V'zQ.U+YR0d.XQ(_$tQ)^%iQ)s%vQ*u'mS+x(`(aQ-q*vR.p+yQ(^$tQ)b%kQ)r%vQ*q'lS*t'm)sU+w(_(`(aS-p*u*vS.o+x+yQ/i,{Q/{-nQ/}-qR0v.pQ(]$tQ)]%iQ)_%jQ)q%vU*s'm)r)sW+v(^(_(`(aQ,t)^U-o*t*u*vU.n+w+x+yS/|-p-qS0u.o.pQ1i/}R2Y0vX+r([)`+t,xb%f!_$a'j+n.c.f0m0o2OR,r)YQ$ovS+b(S?Qg?m([)`+i+j+m+t,u,x.a.b0lR0t.kT2V0s2W0}|PVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g,m-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_T$y{$|Q,O(dR.r+|T${{$|Q(j%OQ(r%QQ(w%TQ(z%VQ.},XQ0z.yQ0{.|R2c1WR(m%PX,[(k(l,],_R(n%PX(p%Q%T%V1WR%T!T_%b!]%S(t,c,e/X1RR%V!UR/],gR,j)PQ)a%kS*p'l)bS-m*q,{S/z-n/iR1h/{T,w)`,xQ-P)fU/l,|,}-UU1^/k/t/uR2n1fR/o-OR2l1bSSO!mR!oSQ!rVR%y!rQ!jPS!sV!rQ!wX[%u!j!s!w,Q1O2]Q,Q(hQ1O/PR2]0}Q)o%sS-X)o9bR9b8rQ-b*QR/x-bQ&y#oS*X&y9XR9X:tS*]&|&}R-i*]Q)|&YR-^)|!j'Y#|'o*f*z+O+T+e+i.T.W.Z.a/_0`0c0g0l1x2u5x5y5z7e7t7u7v;q;t;x?W?X?Z?f?g?h?iS*e'Y/g]/g,{-n.f0o1[2O!h'[#|'o*z+O+T+e+i.T.W.Z.a/_0`0c0g0l1x2u5x5y5z7e7t7u7v;q;t;x?W?X?Z?f?g?h?iS*g'[/hZ/h,{-n.f0o2OU#xd%n)kU'S#x3j3kQ3j3hR3k3iQ'W#z^*b'W,}/k/u1f3q3rQ,})fQ/u-UQ3q3lR3r3m|tPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]W$_t'p+j,uS'p$h+QS+j([+tT,u)`,xQ'f$]R*m'fQ0X-yR1q0XQ+R'vR-}+RQ0].PS1u0]1vR1v0^Q._+fR0i._Q+t([R.l+tW+m([)`+t,xS.b+j,uT.e+m.bQ)Z%fR,s)ZQ(T$oS+c(T?RR?R?mQ2W0sR2}2WQ$|{R(f$|Q,S(iR.v,SQ,V(jR.z,VQ,](kQ,_(lT/Q,],_Q)U%aS,o)U9`R9`8qQ)R%_R,l)RQ,x)`R/e,xQ)h%pS-R)h/sR/s-SQ1c/oR2m1cT!uV!rj!iPVX!j!r!s!w(h,Q/P0}1O2]Q%R!SQ(i%OW(p%Q%T%V1WQ.x,TQ0x.uR0y.w|[PVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]Q#e]U#k`#q&xQ#ucQ$UkQ$VlQ$WmQ$XnQ$YoQ$ZpQ$sx^$vy3y5|8P:]n>oQ+a(RQ+d(VQ,n)TQ,q)XQ-W)nQ-Y)uQ-[)yQ-e*VQ-f*ZQ-g*[^-k3u5b7c9v;}>p>qQ-w*|Q.Y+^Q/O,YQ/[,gQ/v-`Q0Q-tQ0Z-zQ0f.[Q1g/yQ1j0OQ1m0TQ1z0eU2S0s2W:rQ2`1SQ2o1kQ2p1oQ2v1{Q3Z2rQ3o3xQ4]jQ4^5eQ4d5fQ4e5hQ4f5jQ4g5lQ4h5nQ4i5pQ4j3zQ4l3|Q4m3}Q4n4OQ4o4PQ4p4QQ4q4RQ4r4SQ4s4TQ4t4UQ4u4VQ4v4WQ4w4XQ4x4YQ4y4ZQ4z4[Q4{4_Q4|4`Q4}4aQ5P4bQ5Q4cQ5T4kQ5U5OQ5W5RQ5X5SQ5Y5VQ5]5ZQ5^5[Q5`5_Q5t5rQ6e5gQ6f5iQ6g5kQ6h5mQ6i5oQ6j5qQ6k5}Q6m6PQ6n6QQ6o6RQ6p6SQ6q6TQ6r6UQ6s6VQ6t6WQ6u6XQ6v6YQ6w6ZQ6x6[Q6y6]Q6z6^Q6{6_Q6|6`Q6}6aQ7O6bQ7Q6cQ7R6dQ7U6lQ7V7PQ7X7SQ7Y7TQ7Z7WQ7^7[Q7_7]Q7a7`Q7l5{Q7m5dQ7q7oQ8i7xQ8j7yQ8k7zQ8l7{Q8m7|Q8n7}Q8o8OQ8p8QU8q,c/X1RQ8r%dQ8t8SQ8u8TQ8v8UQ8w8VQ8x8WQ8y8XQ8z8YQ8{8ZQ8|8[Q8}8]Q9O8^Q9P8_Q9Q8`Q9R8aQ9S8bQ9U8dQ9V8eQ9Y8fQ9[8gQ9]8hQ9d8sQ9e9TQ9g9ZQ9i9^Q9j9_Q9k9aQ9l9cQ9m9fQ9n9hQ9q9oQ9r9pQ9t9sQ9w:QU:p#i&t9WQ:x:UQ:y:VQ:z:WQ:{:XQ:|:YQ:}:ZQ;P:[Q;Q:^Q;R:_Q;T:aQ;U:bQ;V:cQ;W:dQ;X:eQ;Y:fQ;Z:gQ;[:hQ;]:iQ;^:jQ;_:kQ;`:lQ;a:mQ;b:nQ;c:oQ;d:uQ;f:vQ;g:wQ;l;SQ;m;eQ;p;jQ;r;kQ;s;nQ;w;uQ;y;vQ;{;zQOP<{Q>Q<|Q>R=OQ>S=PQ>T=QQ>U=RQ>X=SQ>Y=TQ>Z=UQ>_=aQ>`=bQ>a>VQ>b>WQ>d>[Q>e>]Q>f>^Q>g>cQ>j>hQ>k>iQ>m>lQ>r:SQ>s:RQ>{>vQ>|:qQ>}:sQ?V;iQ?b?^R?c?_R*R&qQ%t!gQ)W%dT*P&q-a$WiPVX]cklmnopxyz!S!W!X!Y!j!r!s!w#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a$Q$R$T$z%O%Q%T%V%}&S&['a(V(h)u+^,Q,T.[.u.w/P0e0}1O1S1W1o1{2]2r3p3u8d8e!t5c']3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5f5h5j5l5n5p7b7c!x7n5a5b5d5e5g5i5k5m5o5q5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`$`:P`j!]!g!y!z#i#l#m#q#r%S%U&q&t&u&x'P(R(t)T)X)n*V*[,e,g-a5r7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8f8g8h8s9W9Z9^9c9h9o9p9s9u9v:Q:R:S:T:_>v?^?_#l>t!|%d&W)y){*Z*|,c-t-z/X/y0O0T1R1k9T9_9a9f:U:V:W:X:Y:Z:[:]:^:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:u:v:w;S;e;j;k;n;u;v;z;|;}=O=P!x?[,Y-`:q:s;iV>[>]>c>h>i>l>n>p!]?]0s2W:rW>^>o>qQ#p`Q&s#iQ&{#qR*T&tS#o`#q^$Sj5d5e:Q:R:S:TS*W&x9WT:t#i&tQ'O#rR*_'PR&T!{R&Z!|Q&Y!|R-]){Q#|gS'^#}3nS'o$h+QS*d'X3sU*f'Z*w-vQ*z'pQ+O'tQ+T'yQ+e(WW+i([)`+t,xQ,{)cQ-n*rQ.T+XQ.W+[Q.Z+_U.a+j+m,uQ.f+nQ/_,iQ0`.SQ0c.VQ0g.]Q0l.bQ0o.cQ1[3tQ1x0bQ2O0mQ2u1yQ5x7iQ5y7jQ5z7kQ7e7wQ7t9|Q7u9}Q7v:OQ;q?SQ;t?TQ;x?YQ?W?pQ?X?qQ?Z?rQ?f?yQ?g?zQ?h?{R?i?|0z!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_#`$Og#}$h'X'Z'p't'y(W([)`)c*r*w+Q+X+[+_+j+m+n+t,i,u,x-v.S.V.].b.c0b0m1y3n3s3t7i7j7k7w9|9}:O?S?T?Y?p?q?r?y?z?{?|S$[r'eQ%l!eS%p!f%rU+f(Y(Z+qQ-Q)gQ/m-OQ0h.^Q1a/nQ2j1bR3W2k|vPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]#Y#g]cklmnopxyz!W!X!Y#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a$Q$R$T$z%}&S&['a(V)u+^.[0e1S1o1{2r3p3u8d8e`+k([)`+j+m+t,u,x.b!t8c']3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5f5h5j5l5n5p7b7c!x<}5a5b5d5e5g5i5k5m5o5q5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`$`?k`j!]!g!y!z#i#l#m#q#r%S%U&q&t&u&x'P(R(t)T)X)n*V*[,e,g-a5r7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8f8g8h8s9W9Z9^9c9h9o9p9s9u9v:Q:R:S:T:_>v?^?_#l?}!|%d&W)y){*Z*|,c-t-z/X/y0O0T1R1k9T9_9a9f:U:V:W:X:Y:Z:[:]:^:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:u:v:w;S;e;j;k;n;u;v;z;|;}=O=P!x@O,Y-`:q:s;iV>[>]>c>h>i>l>n>p!]@P0s2W:rW>^>o>qR'w$hQ'v$hR-|+QR$^rQ#d[Q%Y!WQ%[!XQ%^!YQ(U$pQ({%WQ(|%XQ(}%ZQ)O%]Q)V%cQ)[%gQ)d%lQ)j%qQ)p%tQ*n'iQ-V)mQ-l*oQ.i+oQ.j+pQ.x,WQ/S,`Q/T,aQ/U,bQ/Z,fQ/^,hQ/b,pQ/q-PQ0j.`Q0q.dQ0r.hQ0t.kQ0y.{Q1Y/dQ1_/lQ1n0VQ1|0kQ2Q0nQ2R0pQ2[0|Q2d1XQ2g1^Q2w1}Q2y2PQ2|2VQ3P2ZQ3T2fQ3X2nQ3Y2pQ3]2xQ3a3RQ3b3SR3e3ZR.R+UQ+g(YQ+h(ZR.k+qS+s([+tT,w)`,xa+l([)`+j+m+t,u,x.bQ%g!_Q'i$aQ*o'jQ.h+nS0p.c.fS2P0m0oR2x2OQ$pvW+o([)`+t,xW.`+i+j+m,uS0k.a.bR1}0l|!aPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]Q$ctW+p([)`+t,xU.d+j+m,uR0n.b0z!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_R/a,m0}}PVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g,m-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_T$x{$|Q(q%QQ(v%TQ(y%VR2b1WQ%c!]Q(u%SQ,d(tQ/W,cQ/Y,eQ1Q/XR2_1RQ%q!fR)m%rR/p-O",nodeNames:"⚠ ( HeredocString EscapeSequence abstract LogicOp array as Boolean break case catch clone const continue default declare do echo else elseif enddeclare endfor endforeach endif endswitch endwhile enum extends final finally fn for foreach from function global goto if implements include include_once LogicOp insteadof interface list match namespace new null LogicOp print readonly require require_once return switch throw trait try unset use var Visibility while LogicOp yield LineComment BlockComment TextInterpolation PhpClose Text PhpOpen Template TextInterpolation EmptyStatement ; } { Block : LabelStatement Name ExpressionStatement ConditionalExpression LogicOp MatchExpression ) ( ParenthesizedExpression MatchBlock MatchArm , => AssignmentExpression ArrayExpression ValueList & VariadicUnpacking ... Pair [ ] ListExpression ValueList Pair Pair SubscriptExpression MemberExpression -> ?-> Name VariableName DynamicVariable $ ${ CallExpression ArgList NamedArgument SpreadArgument CastExpression UnionType LogicOp IntersectionType OptionalType NamedType QualifiedName \\ NamespaceName Name NamespaceName Name ScopedExpression :: ClassMemberName DynamicMemberName AssignOp UpdateExpression UpdateOp YieldExpression BinaryExpression LogicOp LogicOp LogicOp BitOp BitOp BitOp CompareOp CompareOp BitOp ArithOp ConcatOp ArithOp ArithOp IncludeExpression RequireExpression CloneExpression UnaryExpression ControlOp LogicOp PrintIntrinsic FunctionExpression static ParamList Parameter #[ Attributes Attribute VariadicParameter PropertyParameter PropertyHooks PropertyHook UseList ArrowFunction NewExpression class BaseClause ClassInterfaceClause DeclarationList ConstDeclaration VariableDeclarator PropertyDeclaration VariableDeclarator MethodDeclaration UseDeclaration UseList UseInsteadOfClause UseAsClause UpdateExpression ArithOp ShellExpression ThrowExpression Integer Float String MemberExpression SubscriptExpression UnaryExpression ArithOp Interpolation String IfStatement ColonBlock SwitchStatement Block CaseStatement DefaultStatement ColonBlock WhileStatement EmptyStatement DoStatement ForStatement ForSpec SequenceExpression ForeachStatement ForSpec Pair GotoStatement ContinueStatement BreakStatement ReturnStatement TryStatement CatchDeclarator DeclareStatement EchoStatement UnsetStatement ConstDeclaration FunctionDefinition ClassDeclaration InterfaceDeclaration TraitDeclaration EnumDeclaration EnumBody EnumCase NamespaceDefinition NamespaceUseDeclaration UseGroup UseClause UseClause GlobalDeclaration FunctionStaticDeclaration Program",maxTerm:318,nodeProps:[[`group`,-36,2,8,49,82,84,86,89,94,95,103,107,108,112,113,116,120,126,132,137,139,140,154,155,156,157,160,161,173,174,188,190,191,192,193,194,200,`Expression`,-28,75,79,81,83,201,203,208,210,211,214,217,218,219,220,221,223,224,225,226,227,228,229,230,231,234,235,239,240,`Statement`,-4,121,123,124,125,`Type`],[`isolate`,-4,67,68,71,200,``],[`openedBy`,70,`phpOpen`,77,`{`,87,`(`,102,`#[`],[`closedBy`,72,`phpClose`,78,`}`,88,`)`,165,`]`]],propSources:[Re],skippedNodes:[0],repeatNodeCount:32,tokenData:"!GQ_R!]OX$zXY&^YZ'sZ]$z]^&^^p$zpq&^qr)Rrs+Pst+otu2buv5evw6rwx8Vxy>]yz>yz{?g{|@}|}Bb}!OCO!O!PDh!P!QKT!Q!R!!o!R![!$q![!]!,P!]!^!-a!^!_!-}!_!`!1S!`!a!2d!a!b!3t!b!c!7^!c!d!7z!d!e!9Y!e!}!7z!}#O!;b#O#P!V<%lO8VR9WV'TP%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X<%lO9mQ9rV%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X<%lO9mQ:^O%`QQ:aRO;'S9m;'S;=`:j;=`O9mQ:oW%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X;=`<%l9m<%lO9mQ;[P;=`<%l9mR;fV'TP%`QOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRV<%l~8V~O8V~~%fR=OW'TPOY8VYZ9PZ!^8V!^!_;{!_;'S8V;'S;=`=h;=`<%l9m<%lO8VR=mW%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X;=`<%l8V<%lO9mR>YP;=`<%l8VR>dV!zQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV?QV!yU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR?nY'TP$^QOY$zYZ%fZz$zz{@^{!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR@eW$_Q'TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zRAUY$[Q'TPOY$zYZ%fZ{$z{|At|!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zRA{V%TQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRBiV#OQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_CXZ$[Q%^W'TPOY$zYZ%fZ}$z}!OAt!O!^$z!^!_%k!_!`6U!`!aCz!a;'S$z;'S;=`&W<%lO$zVDRV#aU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zVDo['TP$]QOY$zYZ%fZ!O$z!O!PEe!P!Q$z!Q![Fs![!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zVEjX'TPOY$zYZ%fZ!O$z!O!PFV!P!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zVF^V#VU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRFz_'TP%XQOY$zYZ%fZ!Q$z!Q![Fs![!^$z!^!_%k!_!g$z!g!hGy!h#R$z#R#SJc#S#X$z#X#YGy#Y;'S$z;'S;=`&W<%lO$zRHO]'TPOY$zYZ%fZ{$z{|Hw|}$z}!OHw!O!Q$z!Q![Ii![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRH|X'TPOY$zYZ%fZ!Q$z!Q![Ii![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRIpZ'TP%XQOY$zYZ%fZ!Q$z!Q![Ii![!^$z!^!_%k!_#R$z#R#SHw#S;'S$z;'S;=`&W<%lO$zRJhX'TPOY$zYZ%fZ!Q$z!Q![Fs![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_K[['TP$^QOY$zYZ%fZz$zz{LQ{!P$z!P!Q,o!Q!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$z_LVX'TPOYLQYZLrZzLQz{N_{!^LQ!^!_! s!_;'SLQ;'S;=`!!i<%lOLQ_LwT'TPOzMWz{Mj{;'SMW;'S;=`NX<%lOMW^MZTOzMWz{Mj{;'SMW;'S;=`NX<%lOMW^MmVOzMWz{Mj{!PMW!P!QNS!Q;'SMW;'S;=`NX<%lOMW^NXO!f^^N[P;=`<%lMW_NdZ'TPOYLQYZLrZzLQz{N_{!PLQ!P!Q! V!Q!^LQ!^!_! s!_;'SLQ;'S;=`!!i<%lOLQ_! ^V!f^'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_! vZOYLQYZLrZzLQz{N_{!aLQ!a!bMW!b;'SLQ;'S;=`!!i<%l~LQ~OLQ~~%f_!!lP;=`<%lLQZ!!vm'TP%WYOY$zYZ%fZ!O$z!O!PFs!P!Q$z!Q![!$q![!^$z!^!_%k!_!d$z!d!e!&o!e!g$z!g!hGy!h!q$z!q!r!(a!r!z$z!z!{!){!{#R$z#R#S!%}#S#U$z#U#V!&o#V#X$z#X#YGy#Y#c$z#c#d!(a#d#l$z#l#m!){#m;'S$z;'S;=`&W<%lO$zZ!$xa'TP%WYOY$zYZ%fZ!O$z!O!PFs!P!Q$z!Q![!$q![!^$z!^!_%k!_!g$z!g!hGy!h#R$z#R#S!%}#S#X$z#X#YGy#Y;'S$z;'S;=`&W<%lO$zZ!&SX'TPOY$zYZ%fZ!Q$z!Q![!$q![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!&tY'TPOY$zYZ%fZ!Q$z!Q!R!'d!R!S!'d!S!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!'k['TP%WYOY$zYZ%fZ!Q$z!Q!R!'d!R!S!'d!S!^$z!^!_%k!_#R$z#R#S!&o#S;'S$z;'S;=`&W<%lO$zZ!(fX'TPOY$zYZ%fZ!Q$z!Q!Y!)R!Y!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!)YZ'TP%WYOY$zYZ%fZ!Q$z!Q!Y!)R!Y!^$z!^!_%k!_#R$z#R#S!(a#S;'S$z;'S;=`&W<%lO$zZ!*Q]'TPOY$zYZ%fZ!Q$z!Q![!*y![!^$z!^!_%k!_!c$z!c!i!*y!i#T$z#T#Z!*y#Z;'S$z;'S;=`&W<%lO$zZ!+Q_'TP%WYOY$zYZ%fZ!Q$z!Q![!*y![!^$z!^!_%k!_!c$z!c!i!*y!i#R$z#R#S!){#S#T$z#T#Z!*y#Z;'S$z;'S;=`&W<%lO$zR!,WX!rQ'TPOY$zYZ%fZ![$z![!]!,s!]!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!,zV#yQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV!-hV!nU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!.S[$YQOY$zYZ%fZ!^$z!^!_!.x!_!`!/i!`!a*c!a!b!0]!b;'S$z;'S;=`&W<%l~$z~O$z~~%fR!/PW$ZQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR!/pX$YQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`$z!`!a*c!a;'S$z;'S;=`&W<%lO$zP!0bR!jP!_!`!0k!r!s!0p#d#e!0pP!0pO!jPP!0sQ!j!k!0y#[#]!0yP!0|Q!r!s!0k#d#e!0k_!1ZX#|Y'TPOY$zYZ%fZ!^$z!^!_%k!_!`)r!`!a!1v!a;'S$z;'S;=`&W<%lO$zV!1}V#PU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!2kX$YQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`!3W!`!a!.x!a;'S$z;'S;=`&W<%lO$zR!3_V$YQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!3{[!wQ'TPOY$zYZ%fZ}$z}!O!4q!O!^$z!^!_%k!_!`$z!`!a!6P!a!b!6m!b;'S$z;'S;=`&W<%lO$zV!4vX'TPOY$zYZ%fZ!^$z!^!_%k!_!`$z!`!a!5c!a;'S$z;'S;=`&W<%lO$zV!5jV#bU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!6WV!h^'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!6tW$RQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR!7eV$dQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!8Ta'aS'TP'WYOY$zYZ%fZ!Q$z!Q![!7z![!^$z!^!_%k!_!c$z!c!}!7z!}#R$z#R#S!7z#S#T$z#T#o!7z#o$g$z$g&j!7z&j;'S$z;'S;=`&W<%lO$z_!9ce'aS'TP'WYOY$zYZ%fZr$zrs!:tsw$zwx8Vx!Q$z!Q![!7z![!^$z!^!_%k!_!c$z!c!}!7z!}#R$z#R#S!7z#S#T$z#T#o!7z#o$g$z$g&j!7z&j;'S$z;'S;=`&W<%lO$zR!:{V'TP'uQOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV!;iV#XU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!OZ'TPOY!=yYZ!>qZ!^!=y!^!_!@y!_#O!=y#O#P!Au#P#S!=y#S#T!CP#T;'S!=y;'S;=`!Cm<%lO!=yR!>vV'TPO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s<%lO!?]Q!?`VO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s<%lO!?]Q!?xRO;'S!?];'S;=`!@R;=`O!?]Q!@UWO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s;=`<%l!?]<%lO!?]Q!@sO%UQQ!@vP;=`<%l!?]R!@|]OY!=yYZ!>qZ!a!=y!a!b!?]!b#O!=y#O#P!Au#P#S!=y#S#T!CP#T;'S!=y;'S;=`!Cm<%l~!=y~O!=y~~%fR!AzW'TPOY!=yYZ!>qZ!^!=y!^!_!@y!_;'S!=y;'S;=`!Bd;=`<%l!?]<%lO!=yR!BgWO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s;=`<%l!=y<%lO!?]R!CWV%UQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!CpP;=`<%l!=y_!CzV!p^'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!DjY$UQ#n['TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`#p$z#p#q!EY#q;'S$z;'S;=`&W<%lO$zR!EaV$SQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!E}V!oQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!FkV$eQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z",tokenizers:[Ne,Le,Fe,0,1,2,3,Pe],topRules:{Template:[0,73],Program:[1,241]},dynamicPrecedences:{298:1},specialized:[{term:284,get:(e,t)=>Y(e)<<1,external:Y},{term:284,get:e=>ze[e]||-1}],tokenPrec:29889}),Ve=o.define({name:`php`,parser:Be.configure({props:[i.add({IfStatement:a({except:/^\s*({|else\b|elseif\b|endif\b)/}),TryStatement:a({except:/^\s*({|catch\b|finally\b)/}),SwitchBody:e=>{let t=e.textAfter,n=/^\s*\}/.test(t),r=/^\s*(case|default)\b/.test(t);return e.baseIndent+(n?0:r?1:2)*e.unit},ColonBlock:e=>e.baseIndent+e.unit,"Block EnumBody DeclarationList":ee({closing:`}`}),ArrowFunction:e=>e.baseIndent+e.unit,"String BlockComment":()=>null,Statement:a({except:/^({|end(for|foreach|switch|while)\b)/})}),te.add({"Block EnumBody DeclarationList SwitchBody ArrayExpression ValueList":r,ColonBlock(e){return{from:e.from+1,to:e.to}},BlockComment(e){return{from:e.from+2,to:e.to-2}}})]}),languageData:{commentTokens:{block:{open:`/*`,close:`*/`},line:`//`},indentOnInput:/^\s*(?:case |default:|end(?:if|for(?:each)?|switch|while)|else(?:if)?|\{|\})$/,wordChars:`$`,closeBrackets:{stringPrefixes:[`b`,`B`]}}});function He(e={}){let t=[],r;if(e.baseLanguage!==null)if(e.baseLanguage)r=e.baseLanguage;else{let e=re({matchClosingTags:!1});t.push(e.support),r=e.language}return new s(Ve.configure({wrap:r&&n(e=>e.type.isTop?{parser:r.parser,overlay:e=>e.name==`Text`}:null),top:e.plain?`Program`:`Template`}),t)}export{He as php}; \ No newline at end of file diff --git a/ksadk/server/static/assets/dist-CSh_DE14.js b/ksadk/server/static/assets/dist-BxjBfG2w.js similarity index 99% rename from ksadk/server/static/assets/dist-CSh_DE14.js rename to ksadk/server/static/assets/dist-BxjBfG2w.js index 8b0c7f51..35f8c80f 100644 --- a/ksadk/server/static/assets/dist-CSh_DE14.js +++ b/ksadk/server/static/assets/dist-BxjBfG2w.js @@ -1,4 +1,4 @@ -import{D as e,E as t,N as n,_ as r,a as i,b as a,g as o,h as ee,i as s,k as c,o as l,p as u,s as d,u as te,v as f,w as p}from"./index-8ipRcQ-M.js";import{i as m,n as h,r as g,t as _}from"./dist-C_wsv-Qd.js";var v=177,y=179,b=184,x=12,S=13,C=17,w=20,T=25,E=53,D=95,O=142,k=144,A=145,j=148,M=10,N=13,P=32,F=9,I=47,L=41,R=125,z=new h((e,t)=>{for(let n=0,r=e.next;(t.context&&(r<0||r==M||r==N||r==I&&e.peek(n+1)==I)||r==L||r==R)&&e.acceptToken(v),!(r!=P&&r!=F);)r=e.peek(++n)},{contextual:!0}),B=new Set([D,b,w,x,C,k,A,O,j,S,E,T]),V=new _({start:!1,shift:(e,t)=>t==y?e:B.has(t)}),H=t({"func interface struct chan map const type var":e.definitionKeyword,"import package":e.moduleKeyword,"switch for go select return break continue goto fallthrough case if else defer":e.controlKeyword,range:e.keyword,Bool:e.bool,String:e.string,Rune:e.character,Number:e.number,Nil:e.null,VariableName:e.variableName,DefName:e.definition(e.variableName),TypeName:e.typeName,LabelName:e.labelName,FieldName:e.propertyName,"FunctionDecl/DefName":e.function(e.definition(e.variableName)),"TypeSpec/DefName":e.definition(e.typeName),"CallExpr/VariableName":e.function(e.variableName),LineComment:e.lineComment,BlockComment:e.blockComment,LogicOp:e.logicOperator,ArithOp:e.arithmeticOperator,BitOp:e.bitwiseOperator,"DerefOp .":e.derefOperator,"UpdateOp IncDecOp":e.updateOperator,CompareOp:e.compareOperator,"= :=":e.definitionOperator,"<-":e.operator,'~ "*"':e.modifier,"; ,":e.separator,"... :":e.punctuation,"( )":e.paren,"[ ]":e.squareBracket,"{ }":e.brace}),U={__proto__:null,package:10,import:18,true:380,false:380,nil:383,struct:48,func:68,interface:78,chan:94,map:118,make:157,new:159,const:204,type:212,var:224,if:236,else:238,switch:242,case:248,default:250,for:260,range:266,go:270,select:274,return:284,break:288,continue:290,goto:292,fallthrough:296,defer:300},W=g.deserialize({version:14,states:"!=xO#{QQOOP$SOQOOO&UQTO'#CbO&]QRO'#FlO]QQOOOOQP'#Cn'#CnOOQP'#Co'#CoO&eQQO'#C|O(kQQO'#C{O)]QRO'#GiO+tQQO'#D_OOQP'#Ge'#GeO+{QQO'#GeO.aQTO'#GaO.hQQO'#D`OOQP'#Gm'#GmO.mQRO'#GdO/hQQO'#DgOOQP'#Gd'#GdO/uQQO'#DrO2bQQO'#DsO4QQTO'#GqO,^QTO'#GaO4XQQO'#DxO4^QQO'#D{OOQO'#EQ'#EQOOQO'#ER'#EROOQO'#ES'#ESOOQO'#ET'#ETO4cQQO'#EPO5}QQO'#EPOOQP'#Ga'#GaO6UQQO'#E`O6^QQO'#EcOOQP'#G`'#G`O6cQQO'#EsOOQP'#G_'#G_O&]QRO'#FnOOQO'#Fn'#FnO9QQQO'#G^QOQQOOO&]QROOO9XQQO'#C`O9^QSO'#CdO9lQQO'#C}O9tQQO'#DSO9yQQO'#D[O:kQQO'#CsO:pQQO'#DhO:uQQO'#EeO:}QQO'#EiO;VQQO'#EoO;_QQO'#EuOPQSO7+%hOOQP7+%h7+%hO4cQQO7+%hOOQP1G0Q1G0QO!>^QQO1G0QOOQP1G0U1G0UO!>fQQO1G0UOF|QQO1G0UOOQO,5nAN>nO4cQQOAN>nO!IsQSOAN>nOOQP<nQQO'#FrOOQO,5vAN>vO!LtQQOAN>vP.hQQO'#F|OOQPG25XG25XO!LyQQOG25bO!MOQQO'#FPOOQPG25bG25bO!MZQQOG25bOOQPLD)tLD)tOOQPG24bG24bO!JqQQOLD*|O!9OQQO'#GQO!McQQO,5;kOOQP,5;k,5;kO?tQQO'#FQO!MnQQO'#FQO!MsQQOLD*|OOQP!$'Nh!$'NhOOQO,5VO^!hOh!POr-TOw}O!P-_O!Q-`O!W-^O!]-eO%O!eO%Y!fO~OZ!sO~O^#uO~O!P$xO~On!lO#W%]aV%]a^%]ah%]ar%]aw%]a!P%]a!Q%]a!W%]a!]%]a#T%]a$w%]a%O%]a%Y%]au%]a~O]${O^#QO~OZ#RO^#VO!W#SO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~O]$|O!|,WO~PBROj!qOn%QO!QnOi%cP~P*aO!V%WO!|#`O~PBRO!V%YO~OV!}O[oO^YOaoOdoOh!POjcOr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~Oi%dX#p%dX#q%dX~PDQOi%]O~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-QO!WaO!]!QO!phO!qhO%O+{O%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O^%aO%O%_O~O!QnO!a%cO~P*aO!QnOn$mX#T$mX#U$mXV$mX$w$mX!a$mX~P*aOn#TO#T%ea#U%eaV%ea$w%ea!a%ea~O]%fO~PF|OV#ga$w#ga~PDTO[%sO~OZ#rO[#qO]%vO%O#oO~O^!hOh!POn%zOr-TOu%xOw}O!P-_O!Q-`O!W-^O!]-eO%O,dO%Y!fO]%[P~O^&OOh!POr!jOw}O!P!OO!Q!kO!WaO!]!QO%Y!fO^%ZXj%ZX~O%O%}O~PKfOjcO^qa]qanqa!Vqa~O^#uO!W&SO~O^!hOh!POr-TOw}O{&WO!P-_O!Q-`O!W-^O!]-eO%O,xO%Y!fO~Oi&^O~PL{O^!hOh!POr!jOw}O!Q!kO!WaO!]!QO%O!eO%Y!fO~O!P#hO~PMwOi&eO%O,yO%Y!fO~O#T&gOV#ZX$w#ZX~P?tO]&kO%O#oO~O^!hOh!POr-TOw}O!P-_O!Q-`O!]-eO%O!eO%Y!fO~O!W&lO#T&mO~P! _O]&qO%O#oO~O#T&sOV#eX$w#eX~P?tO]&vO%O#oO~OjeX~P$XOjcO!|,XO~P2gOn!lO#W&yO#W%]X~O^#VOn#TO!Q#cO!W#SO!|,XO#R#dO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]OV`X#T%eX#U%eX~OZ&zOj$`O$w`X~P!#cOi'OO#p'PO#q'QO~OZ#ROjcO~P!#cO#T'TO#U#iO~O#W'UO~OV'WO!QnO~P*aOV'XO~OjcO~O!|#`OV#za$w#za~PBROi'[O#p']O#q'^O~On#TO!|#`OV%eX$w%eX!a%eX~PBRO!|#`OV$Za$w$Za~PBRO${$rO$|$rO$}'`O~O]${O~O%O!eO]%ZXn%ZX!V%ZX~PKfO!|#`Oi!_Xn!_X!a!`X~PBROi!_Xn!_X!a!`X~O!a'aO~On'bOi%cX~Oi'dO~On'eO!V%bX!a%bX~O!V'gO~O]'jOn'kO!|,YO~PBROn'nO!V'mO!a'oO!|#`O~PBRO!QnO!V'qO!a'rO~P*aO!|#`On$ma#T$ma#U$maV$ma$w$ma!a$ma~PBRO]'sOu'tO~O%Y#XO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xin!xi!Q!xi!W!xi!|!xi#R!xi#T!xi#U!xi$w!xi%`!xi%f!xi%g!xi%i!xi%p!xi%q!xi~O!V!xii!xi!a!xi~P!+YO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%p!xi%q!xi!V!xii!xi!a!xi~O!|!xi~P!-TO!|#`O~P!-TO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[OV!xiZ!xi^!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%q!xi~O!|#`O!V!xii!xi!a!xi~P!/VO!|#`OV#Pi$w#Pi!a#Pi~PBRO]'uOn'wOu'vO~OZ#rO[#qO]'zO%O#oO~Ou'|O~P?tOn'}O]%[X~O](PO~OZeX^mX^!TXj!TX!W!TX~OjcOV$]i$w$]i~O%`(ZOV%^X$w%^Xn%^X!V%^X~Oi(`O~PL{O[(aO!W!tOVlX$wlX~On(bO~P?tO[(aOVlX$wlX~Oi(hO%O,yO%Y!fO~O!V(iO~O#T(kO~O](nO%O#oO~O[oO^YOaoOdoOh!POr!pOu-bOw}O!P!OO!QnO!V-UO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O%O+zO~P!4vO](sO%O#oO~O#T(tOV#ea$w#ea~O](xO%O#oO~O#k(yOV#ii$w#ii~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-PO!WaO!]!QO!phO!qhO%O+xO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O^(|O%O%_O~O#p%dP#q%dP~P/uOi)PO#p'PO#q'QO~O!a)RO~O!QnO#y)VO~P*aOV)WO!|#`O~PBROj#wa~P;_OV)WO!QnO~P*aOi)]O#p']O#q'^O~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O%O,eO~P!:lO!a)bO~Oj!qO!QnO~P*aOj!qO!QnOi%ca~P*aOn)iOi%ca~O!V%ba!a%ba~P?tOn)lO!V%ba!a%ba~O])nO~O])oO~O!V)pO~O!QnO!V)rO!a)sO~P*aO!V)rO!a)sO!|#`O~PBRO])uOn)vO~O])wOn)xO~O^!hOh!POr-TOu%xOw}O!P-_O!Q-`O!W-^O!]-eO%O,dO%Y!fO~O]%[a~P!>nOn)|O]%[a~O]${O]tXntX~OjcOV$^q$w$^q~On*PO{&WO~P?tOn*SO!V%rX~O!V*UO~OjcOV$]q$w$]q~O%`(ZOV|a$w|an|a!V|a~O[*]OVla$wla~O[*]O!W!tOVla$wla~On*PO{&WO!W*`O^%WXj%WX~P! _OjcO#j!UO~OjcO!|,XO~PBROZ*dO^#VO!W#SO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~O!|#`O~P!BoO#^*eO~P?tO!a*fO~Oj$`O!|,XO~P!BoO#W*hO~Oj#wi~P;_OV*kO!|#`O~PBROn#TO!Q#cO!|#`O!a$QX#T%eX~PBRO#T*lO~O#W*lO~O!a*mO~O!|#`Oi!_in!_i~PBRO!|#`Oi!bXn!bX!a!cX~PBROi!bXn!bX!a!cX~O!a*nO~Oj!qO!QnOi%ci~P*aO!V%bi!a%bi~P?tO!V*qO!a*rO!|#`O~PBRO!V*qO!|#`O~PBRO]*tO~O]*uO~O]*uOu*vO~O]%[i~P!>nO%O!eO!V%ra~On*|O!V%ra~O[+OOVli$wli~O%O+yO~P!4vO#k+QOV#iy$w#iy~O^+RO%O%_O~O]+SO~O!|,XOj#xq~PBROj#wq~P;_O!V+ZO!|#`O~PBRO]+[On+]O~O%O!eO!V%ri~O^#QOn'eO!V%bX~O#^+`O~P?tOj+aO~O^#VO!W#SO!|#`O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~OZ+cO~P!JvO!|#`O!a$Qi~PBRO!|#`Oi!bin!bi~PBRO!V+dO!|#`O~PBRO]+eO~O]+fO~Oi+iO#p+jO#q+kO~O^+lO%O%_O~Oi+pO#p+jO#q+kO~O!a+rO~O#^+sO~P?tO!a+tO~O]+uO~OZeX^eX^!TXj!TX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeXVeXneX!QeX#ReX#TeX#UeX$weX~O]eX]!TX!VeXieX!aeX~P!NUOjeX~P!NUOZeX^eX^!TXj!TX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeXn!TX!VeX~O]eX!V!TX~P#!gOh!TXr!TXw!TX{!TX!P!TX!Q!TX!]!TX%O!TX%Y!TX~P#!gOZeX^eX^!TXj!TXneX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeX~O]eXueX~P#$xO]$mXn$mXu$mX~PF|Oj$mXn$mX~P!7`On+|O]%eau%ea~On+}Oj%ea~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-OO!WaO!]!QO!phO!qhO%O+yO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~OZeX]!TX^UXhUXnUXn!TXrUXuUXwUX!PUX!QUX!WUX!W!TX!]UX%OUX%YUX~OnUX!QeX!aeX#TeX#WUX~P#$xOn+|O!|,YO]%eXu%eX~PBROn+}O!|,XOj%eX~PBRO^&OOV%ZXj%ZX$w%ZX]%ZXn%ZX!V%ZXu%ZX%`%ZX#T%ZX[%ZX!a%ZX~P?wO!|,YO]$man$mau$ma~PBRO!|,XOj$man$ma~PBRO%Y#XO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi!|!xi%`!xi%f!xi%g!xi%i!xi%p!xi%q!xi~Oj!xi~P!+YOn!xiu!xi~P#,hO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi!|!xi%p!xi%q!xi~O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xij!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%p!xi%q!xi~O!|!xi~P#/_On!xiu!xi~P#.TO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi%p!xi%q!xi~O!|,WO~P#1^O!|,XO~P#/_O!|,YOn!xiu!xi~P#1^O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[OZ!xi]!xi^!xi!W!xi%q!xi~O!|,WO~P#3QO!|,XOj!xi~P!/VO!|,YOn!xiu!xi~P#3QO!|,XOj#Pi~PBROV!TXZeX^mX!W!TX$w!TX~O%`!TX~P#5RO[!TXhmXnmXrmXwmX!PmX!QmX!WmX!]mX%OmX%YmX~P#5ROn#TO!Q,aO!|,XO#R#dOj`X#T%eX#U%eX~PBRO[oO^YOaoOdoOh!POr!pOw}O!P#hO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!Q-OO%O+yO~P#6{O!Q-PO%O+xO~P#6{O!Q-QO%O+{O~P#6{O#T,bO#U,bO~O#W,cO~O^!hOh!POr-TOw}O!P-_O!Q-WO!W-^O!]-eO%O!eO%Y!fO~O^!hOh!POr-TOw}O!Q-`O!W-^O!]-eO%O!eO%Y!fO~O!P-VO~P#9zO%O+wO~P!4vO!P-XO~O!V-YO!|#`O~PBRO!V-ZO~O!V-[O~O!W-dO~OP%ka%Oa~",goto:"!FW%sPP%tP%wP%zP'SP'XPPPP'`'cP'u'uP)w'u-_PPP0j0m0qP1V4b1VP7s8WP1VP8a8d8hP8p8w1VPP1V8{<`?vPPCY-_-_-_PCdCuCxPC{DQ'u'uDV'uES'u'u'u'uGUIW'uPPJR'uJUMjMjMj'u! r! r!#SP!$`!%d!&d'cP'cPP'cP!&yP!'V!'^!&yP!'a!'h!'n!'w!&yP!'z!(R!&y!(U!(fPP!&yP!(x!)UPP!&y!)Y!)c!&yP!)g!)gP!&yP!&yP!)j!)m!&v!&yP!&yPPP!&yP!&yP!)q!)q!)w!)}!*U!*[!*d!*j!*p!*w!*}!+T!+Z!.q!.x!/O!/X!/m!/s!/z!0Q!0W!0^!0d!0jPPPPPPPPP!0p!1f!1k!1{!2kPP!7P!:^P!>u!?Z!?_!@Z!@fP!@p!D_!Df!Di!DuPPPPPPPPPPPP!FSR!aPRyO!WXOScw!R!T!U!W#O#k#n#u$R$X&O&j&u&|'W'Y']'})W)|*k*w+gQ#pzU#r{#s%uQ#x|U$T!S$U&pQ$^!VQ$y!lR)U'RVROS#nQ#t{T%t#s%uR#t{qrOScw!U!V!W#O#k#n&|'W'Y)W*k+g%PoOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^%O]OSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^#u!iW^!O!h!t!z#e#h#u#v#y#|#}$P$Q$T$W$v$x%W%Y%a%x%y&O&S&W&]&`&b&d&m'e'|'}(S([(c(i(o(|)l)|*P*Q*S*p*w*|+R+^+j+l,h-U-V-W-X-Y-Z-[-]-_-d'cbOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR$O!PT&c#}&dW%`#R&z*d+cQ&Q#vS&V#y&]S&`#}&dR*Y(b'cZOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-d%fWOSWYacmnw!O!U!V!W!X!Z!_!q!z#O#Q#S#T#V#^#_#`#a#b#c#h#i#j#k#n#v#|$f$v$x%W%Y%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(i(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^S&b#}&d!{-]!h!t#e#u#y$P$Q$T$W%a%x%y&O&W&]&`&m'e'|'}(S([(c(o(|)l)|*Q*p*w+R+j+l,h-U-V-W-X-Y-Z-[-]-_-dQ#v|S$v!j!pU&P#v$v,hZ,h#x&Q&U&V-TS%{#u&OV){'})|*wR#z}T&[#y&]]&X#y&](S([(o*QZ&Z#y&](S(o*QT([&Y(]'s_OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-d'r_OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR!w^'bbOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dS&a#}&dR(d&bS!u]fX!x`&_(e(oQ!r[Q%O!qQ)d'aU)f'b)i*oR+X*nR%R!qR%P!qV)h'b)i*oV)g'b)i*odtOScw#O#k#n&|'Y+gQ$h!WQ&R#wQ&w$[S'S$c$iQ(V&TQ*O(RQ*V(WQ*b(yQ*c(zR+_+Q%PfOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^%PgOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^!q#Weg!o!y$[$_$c$j$m$q$}%^%b%d%m'V'p(z({)S)Y)^)c)e)q)t*i*s+T+V+W+Y,f,g,i,j,w,z-aR#fh#^mOSacmnw!X!Z!_!q#O#S#T#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&y&|'P'T'U'X'Y']'a'b'o'r(k(t)i)s*`*h*l*n*o*r+g-^!W#_e!y$j$m$q$}%b%d%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aW,T!o,n,q,tj,U$[$_$c(z)S*i,g,j,o,r,u,w,z[,V%^,f,i,p,s,v`,{Y,Q,T,W,Z,^,{-Ox,|!U!V!W&x'R'W)V)W*k+},R,U,X,[,_,a,b,c,|-Pg,}#Q#V'w+|,S,V,Y,],`,}-Q#^mOSacmnw!X!Z!_!q#O#S#T#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&y&|'P'T'U'X'Y']'a'b'o'r(k(t)i)s*`*h*l*n*o*r+g-^`,{Y,Q,T,W,Z,^,{-Ox,|!U!V!W&x'R'W)V)W*k+},R,U,X,[,_,a,b,c,|-Pg,}#Q#V'w+|,S,V,Y,],`,}-Q!Y#^e!y$j$m$q$}%b%d%i%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aY,Q!o,k,n,q,tl,R$[$_$c(z)S*i,g,j,l,o,r,u,w,z_,S%^,f,i,m,p,s,v!W#_e!y$j$m$q$}%b%d%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aW,T!o,n,q,tj,U$[$_$c(z)S*i,g,j,o,r,u,w,z],V%^,f,i,p,s,v!S#ae!y$j$m$q$}%b%d%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aS,Z!o,tf,[$[$_$c(z)S*i,g,j,u,w,zX,]%^,f,i,v!Q#be!y$j$m$q$}%b%d%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aQ,^!od,_$[$_$c(z)S*i,g,j,w,zV,`%^,f,iprOScw!U!V!W#O#k#n&|'W'Y)W*k+gR)a']etOScw#O#k#n&|'Y+gQ$S!RT&i$R&jR$S!RQ$V!ST&o$U&pQ&U#xR&m$TS(T&S&lV*{*S*|+^R$V!SQ$Y!TT&t$X&uR$Y!TdsOScw#O#k#n&|'Y+gT$p![!]dtOScw#O#k#n&|'Y+gQ*b(yR+_+QQ$a!VQ&{$_Q)T'RR*g)ST&|$`&}Q+b+SQ+m+fR+v+uT+g+a+hR$i!WR$l!YT'Y$k'ZXuOSw#nQ$s!`R'_$sSSO#nR!dSQ%u#sR'y%uUwOS#nR#mwQ&d#}R(g&dQ(c&`R*Z(cS!mX$^R$z!mQ(O%{R)}(OQ&]#yR(_&]Q(]&YR*X(]'r^OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR!v^S'f%T+PR)m'fQ'c%RR)j'cW#Oc&|'Y+gR%[#O^#Ue$[$_$c$m)^,zU%e#U,O,PQ,O,fR,P,gQ&j$RR(m&jS*Q(S(oR*y*QQ*T(TR*}*TQ&p$UR(r&pQ&u$XR(w&uQ&}$`R)O&}Q+h+aR+o+hQ'Z$kR)['ZQ!cRQ#luQ#nyQ%Z!|Q&x$]Q'R$bQ'x%tQ(^&[Q(f&cQ(l&iQ(q&oR(v&tVxOS#nWuOSw#nY!|c#O&|'Y+gR%r#kdtOScw#O#k#n&|'Y+gQ$]!UQ$b!VQ$g!WQ)X'WQ*j)WR+U*kdeOScw#O#k#n&|'Y+gQ!oYQ!ya`#gmn,{,|,}-O-P-QQ$[!UQ$_!VQ$c!WQ$j!Xd$m!Z#i#j&g&s'P'T'U(k(tQ$q!_Q$}!qQ%^#QQ%b#SQ%d#TW%h#^,Q,R,SQ%i#_Q%j#`Q%k#aQ%l#bQ%m#cQ'V$fQ'p%cQ(z&xQ({&yQ)S'RQ)Y'XQ)^']Q)c'aU)e'b)i*oQ)q'oQ)t'rQ*i)VQ*s)sQ+T*hQ+V*lQ+W*nQ+Y*rS,f#V'wS,g,b,cQ,i+|Q,j+}Q,k,TQ,l,UQ,m,VQ,n,WQ,o,XQ,p,YQ,q,ZQ,r,[Q,s,]Q,t,^Q,u,_Q,v,`Q,w,aU,z'W)W*kV-a&l*`-^#bZW!O!h!t!z#e#h#u#v#y#|$P$Q$T$W$v$x%W%Y%a%x%y&O&W&]&`&m'e'|'}(S([(c(i(o(|)l)|*Q*p*w+R+j+l,h-U-V-W-X-Y-Z-[-]-_-d%P[OSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^$zdOSacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^S!gW-]Q!nYS#{!O-_Q$u!hS%T!t+jS%X!z-UQ%n#e[%o#h#|$x-V-W-XW%w#u'})|*wU&P#v$v,h[&X#y&](S([(o*QQ&f$PQ&h$QQ&n$TQ&r$WS'h%W-YS'i%Y-ZW'l%a(|+R+lS'{%x%yQ(Q&OQ(Y&WQ(d&`Q(p&mU)k'e)l*pQ)z'|Q*[(cS*^(i-[Q+P*`R-c-dS#w|!pS$w!j-TQ&T#xQ(R&QQ(W&UR(X&VT%|#u&OhqOScw!U!V#O#k#n&|'Y+gU$Q!R$R&jU$W!T$X&uQ$e!WY%y#u&O'})|*wQ)`']V-S'W)W*kS&[#y&]S*R(S(oR*z*QY&Y#y&](S(o*QR*W(['``OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dS&_#}&dW(S&S*S*|+^Q(e&bQ(o&lR*x*PS%U!t*`R+q+jR%S!qQ#PcQ(}&|Q)Z'YR+n+ghpOScw!U!V#O#k#n&|'Y+gQ$d!WQ$n!ZQ%g#VU%p#i'T,bU%q#j'U,cQ(j&gQ(u&sQ)Q'PQ)_']Q)y'wQ*_(kQ*a(tV-R'W)W*kT(U&S&l",nodeNames:`⚠ LineComment BlockComment SourceFile PackageClause package DefName ; ImportDecl import ImportSpec . String ) ( SpecList ExprStatement Number Bool Nil Rune VariableName TypedLiteral StructType struct } { StructBody FieldDecl FieldName , PointerType * FunctionType func Parameters Parameter ... InterfaceType interface InterfaceBody MethodElem UnderlyingType ~ TypeElem LogicOp ChannelType chan <- ParenthesizedType QualifiedType TypeName ParameterizedType ] [ TypeArgs ArrayType SliceType MapType map LiteralValue Element Key : Element Key ParenthesizedExpr FunctionLiteral Block Conversion SelectorExpr IndexExpr SliceExpr TypeAssertion CallExpr ParameterizedExpr Arguments CallExpr make new Arguments UnaryExp ArithOp LogicOp BitOp DerefOp BinaryExp ArithOp BitOp BitOp CompareOp LogicOp LogicOp SendStatement IncDecStatement IncDecOp Assignment = UpdateOp VarDecl := ConstDecl const ConstSpec SpecList TypeDecl type TypeSpec TypeParams TypeParam SpecList VarDecl var VarSpec SpecList LabeledStatement LabelName IfStatement if else SwitchStatement switch SwitchBlock Case case default TypeSwitchStatement SwitchBlock Case ForStatement for ForClause RangeClause range GoStatement go SelectStatement select SelectBlock Case ReceiveStatement ReturnStatement return GotoStatement break continue goto FallthroughStatement fallthrough DeferStatement defer FunctionDecl MethodDecl`,maxTerm:218,context:V,nodeProps:[[`isolate`,-3,2,12,20,``],[`group`,-18,12,17,18,19,20,21,22,66,67,69,70,71,72,73,74,77,81,86,`Expr`,-20,16,68,93,94,96,99,101,105,111,115,117,120,126,129,134,136,141,143,147,149,`Statement`,-12,23,31,33,38,46,49,50,51,52,56,57,58,`Type`],[`openedBy`,13,`(`,25,`{`,53,`[`],[`closedBy`,14,`)`,26,`}`,54,`]`]],propSources:[H],skippedNodes:[0,1,2,153],repeatNodeCount:23,tokenData:":b~RvXY#iYZ#i]^#ipq#iqr#zrs$Xuv&Pvw&^wx&yxy(qyz(vz{({{|)T|})e}!O)j!O!P)u!P!Q+}!Q!R,y!R![-t![!]2^!]!^2k!^!_2p!_!`3]!`!a3e!c!}3x!}#O4j#P#Q4o#Q#R4t#R#S4|#S#T9X#T#o3x#o#p9q#p#q9v#q#r:W#r#s:]$g;'S3x;'S;=`4d<%lO3x~#nS$y~XY#iYZ#i]^#ipq#iU$PP%hQ!_!`$SS$XO!|S~$^W[~OY$XZr$Xrs$vs#O$X#O#P${#P;'S$X;'S;=`%y<%lO$X~${O[~~%ORO;'S$X;'S;=`%X;=`O$X~%^X[~OY$XZr$Xrs$vs#O$X#O#P${#P;'S$X;'S;=`%y;=`<%l$X<%lO$X~%|P;=`<%l$X~&UP%l~!_!`&X~&^O#U~~&cR%j~vw&l!_!`&X#Q#R&q~&qO%p~~&vP%o~!_!`&X~'OWd~OY&yZw&ywx'hx#O&y#O#P'm#P;'S&y;'S;=`(k<%lO&y~'mOd~~'pRO;'S&y;'S;=`'y;=`O&y~(OXd~OY&yZw&ywx'hx#O&y#O#P'm#P;'S&y;'S;=`(k;=`<%l&y<%lO&y~(nP;=`<%l&y~(vO^~~({O]~~)QP%Y~!_!`&X~)YQ%f~{|)`!_!`&X~)eO#R~~)jOn~~)oQ%g~}!O)`!_!`&X~)zRZS!O!P*T!Q![*`#R#S+w~*WP!O!P*Z~*`Ou~Q*eTaQ!Q![*`!g!h*t#R#S+w#X#Y*t#]#^+rQ*wS{|+T}!O+T!Q![+^#R#S+lQ+WQ!Q![+^#R#S+lQ+cRaQ!Q![+^#R#S+l#]#^+rQ+oP!Q![+^Q+wOaQQ+zP!Q![*`~,SR%k~z{,]!P!Q,b!_!`&X~,bO$z~~,gSP~OY,bZ;'S,b;'S;=`,s<%lO,b~,vP;=`<%l,bQ-O[aQ!O!P*`!Q![-t!d!e.c!g!h*t!q!r/Z!z!{/x#R#S.]#U#V.c#X#Y*t#]#^+r#c#d/Z#l#m/xQ-yUaQ!O!P*`!Q![-t!g!h*t#R#S.]#X#Y*t#]#^+rQ.`P!Q![-tQ.fR!Q!R.o!R!S.o#R#S/QQ.tSaQ!Q!R.o!R!S.o#R#S/Q#]#^+rQ/TQ!Q!R.o!R!S.oQ/^Q!Q!Y/d#R#S/rQ/iRaQ!Q!Y/d#R#S/r#]#^+rQ/uP!Q!Y/dQ/{T!O!P0[!Q![1c!c!i1c#R#S2Q#T#Z1cQ0_S!Q![0k!c!i0k#R#S1V#T#Z0kQ0pVaQ!Q![0k!c!i0k!r!s*t#R#S1V#T#Z0k#]#^+r#d#e*tQ1YR!Q![0k!c!i0k#T#Z0kQ1hWaQ!O!P0k!Q![1c!c!i1c!r!s*t#R#S2Q#T#Z1c#]#^+r#d#e*tQ2TR!Q![1c!c!i1c#T#Z1c~2cP!a~!_!`2f~2kO#W~~2pOV~~2uR!|S}!O3O!^!_3T!_!`$S~3TO!Q~~3YP%m~!_!`&X~3bP#T~!_!`$S~3jQ!|S!_!`$S!`!a3p~3uP%n~!_!`&X~3}V%O~!Q![3x!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~4gP;=`<%l3x~4oO!W~~4tO!V~~4yP%i~!_!`&X~5RV%O~!Q![5h!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~5o^aQ%O~!O!P*`!Q![5h!c!g3x!g!h6k!h!}3x#R#S4|#T#X3x#X#Y6k#Y#]3x#]#^8k#^#o3x$g;'S3x;'S;=`4d<%lO3x~6pX%O~{|+T}!O+T!Q![7]!c!}3x#R#S8P#T#o3x$g;'S3x;'S;=`4d<%lO3x~7dXaQ%O~!Q![7]!c!}3x#R#S8P#T#]3x#]#^8k#^#o3x$g;'S3x;'S;=`4d<%lO3x~8UV%O~!Q![7]!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~8rVaQ%O~!Q![3x!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~9[TO#S9X#S#T$v#T;'S9X;'S;=`9k<%lO9X~9nP;=`<%l9X~9vOj~~9{Q%`~!_!`&X#p#q:R~:WO%q~~:]Oi~~:bO{~",tokenizers:[z,1,2,new m(`j~RQYZXz{^~^O$|~~aP!P!Qd~iO$}~~`,25,181)],topRules:{SourceFile:[0,3]},dynamicPrecedences:{19:1,51:-1,55:2,69:-1,108:-1},specialized:[{term:184,get:e=>U[e]||-1}],tokenPrec:5451}),G=[l("func ${name}(${params}) ${type} {\n ${}\n}",{label:`func`,detail:`declaration`,type:`keyword`}),l("func (${receiver}) ${name}(${params}) ${type} {\n ${}\n}",{label:`func`,detail:`method declaration`,type:`keyword`}),l("var ${name} = ${value}",{label:`var`,detail:`declaration`,type:`keyword`}),l("type ${name} ${type}",{label:`type`,detail:`declaration`,type:`keyword`}),l("const ${name} = ${value}",{label:`const`,detail:`declaration`,type:`keyword`}),l("type ${name} = ${type}",{label:`type`,detail:`alias declaration`,type:`keyword`}),l("for ${init}; ${test}; ${update} {\n ${}\n}",{label:`for`,detail:`loop`,type:`keyword`}),l("for ${i} := range ${value} {\n ${}\n}",{label:`for`,detail:`range`,type:`keyword`}),l(`select { +import{D as e,E as t,N as n,_ as r,a as i,b as a,g as o,h as ee,i as s,k as c,o as l,p as u,s as d,u as te,v as f,w as p}from"./index-BkDx9KsG.js";import{i as m,n as h,r as g,t as _}from"./dist-DeO3Qj-D.js";var v=177,y=179,b=184,x=12,S=13,C=17,w=20,T=25,E=53,D=95,O=142,k=144,A=145,j=148,M=10,N=13,P=32,F=9,I=47,L=41,R=125,z=new h((e,t)=>{for(let n=0,r=e.next;(t.context&&(r<0||r==M||r==N||r==I&&e.peek(n+1)==I)||r==L||r==R)&&e.acceptToken(v),!(r!=P&&r!=F);)r=e.peek(++n)},{contextual:!0}),B=new Set([D,b,w,x,C,k,A,O,j,S,E,T]),V=new _({start:!1,shift:(e,t)=>t==y?e:B.has(t)}),H=t({"func interface struct chan map const type var":e.definitionKeyword,"import package":e.moduleKeyword,"switch for go select return break continue goto fallthrough case if else defer":e.controlKeyword,range:e.keyword,Bool:e.bool,String:e.string,Rune:e.character,Number:e.number,Nil:e.null,VariableName:e.variableName,DefName:e.definition(e.variableName),TypeName:e.typeName,LabelName:e.labelName,FieldName:e.propertyName,"FunctionDecl/DefName":e.function(e.definition(e.variableName)),"TypeSpec/DefName":e.definition(e.typeName),"CallExpr/VariableName":e.function(e.variableName),LineComment:e.lineComment,BlockComment:e.blockComment,LogicOp:e.logicOperator,ArithOp:e.arithmeticOperator,BitOp:e.bitwiseOperator,"DerefOp .":e.derefOperator,"UpdateOp IncDecOp":e.updateOperator,CompareOp:e.compareOperator,"= :=":e.definitionOperator,"<-":e.operator,'~ "*"':e.modifier,"; ,":e.separator,"... :":e.punctuation,"( )":e.paren,"[ ]":e.squareBracket,"{ }":e.brace}),U={__proto__:null,package:10,import:18,true:380,false:380,nil:383,struct:48,func:68,interface:78,chan:94,map:118,make:157,new:159,const:204,type:212,var:224,if:236,else:238,switch:242,case:248,default:250,for:260,range:266,go:270,select:274,return:284,break:288,continue:290,goto:292,fallthrough:296,defer:300},W=g.deserialize({version:14,states:"!=xO#{QQOOP$SOQOOO&UQTO'#CbO&]QRO'#FlO]QQOOOOQP'#Cn'#CnOOQP'#Co'#CoO&eQQO'#C|O(kQQO'#C{O)]QRO'#GiO+tQQO'#D_OOQP'#Ge'#GeO+{QQO'#GeO.aQTO'#GaO.hQQO'#D`OOQP'#Gm'#GmO.mQRO'#GdO/hQQO'#DgOOQP'#Gd'#GdO/uQQO'#DrO2bQQO'#DsO4QQTO'#GqO,^QTO'#GaO4XQQO'#DxO4^QQO'#D{OOQO'#EQ'#EQOOQO'#ER'#EROOQO'#ES'#ESOOQO'#ET'#ETO4cQQO'#EPO5}QQO'#EPOOQP'#Ga'#GaO6UQQO'#E`O6^QQO'#EcOOQP'#G`'#G`O6cQQO'#EsOOQP'#G_'#G_O&]QRO'#FnOOQO'#Fn'#FnO9QQQO'#G^QOQQOOO&]QROOO9XQQO'#C`O9^QSO'#CdO9lQQO'#C}O9tQQO'#DSO9yQQO'#D[O:kQQO'#CsO:pQQO'#DhO:uQQO'#EeO:}QQO'#EiO;VQQO'#EoO;_QQO'#EuOPQSO7+%hOOQP7+%h7+%hO4cQQO7+%hOOQP1G0Q1G0QO!>^QQO1G0QOOQP1G0U1G0UO!>fQQO1G0UOF|QQO1G0UOOQO,5nAN>nO4cQQOAN>nO!IsQSOAN>nOOQP<nQQO'#FrOOQO,5vAN>vO!LtQQOAN>vP.hQQO'#F|OOQPG25XG25XO!LyQQOG25bO!MOQQO'#FPOOQPG25bG25bO!MZQQOG25bOOQPLD)tLD)tOOQPG24bG24bO!JqQQOLD*|O!9OQQO'#GQO!McQQO,5;kOOQP,5;k,5;kO?tQQO'#FQO!MnQQO'#FQO!MsQQOLD*|OOQP!$'Nh!$'NhOOQO,5VO^!hOh!POr-TOw}O!P-_O!Q-`O!W-^O!]-eO%O!eO%Y!fO~OZ!sO~O^#uO~O!P$xO~On!lO#W%]aV%]a^%]ah%]ar%]aw%]a!P%]a!Q%]a!W%]a!]%]a#T%]a$w%]a%O%]a%Y%]au%]a~O]${O^#QO~OZ#RO^#VO!W#SO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~O]$|O!|,WO~PBROj!qOn%QO!QnOi%cP~P*aO!V%WO!|#`O~PBRO!V%YO~OV!}O[oO^YOaoOdoOh!POjcOr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~Oi%dX#p%dX#q%dX~PDQOi%]O~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-QO!WaO!]!QO!phO!qhO%O+{O%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O^%aO%O%_O~O!QnO!a%cO~P*aO!QnOn$mX#T$mX#U$mXV$mX$w$mX!a$mX~P*aOn#TO#T%ea#U%eaV%ea$w%ea!a%ea~O]%fO~PF|OV#ga$w#ga~PDTO[%sO~OZ#rO[#qO]%vO%O#oO~O^!hOh!POn%zOr-TOu%xOw}O!P-_O!Q-`O!W-^O!]-eO%O,dO%Y!fO]%[P~O^&OOh!POr!jOw}O!P!OO!Q!kO!WaO!]!QO%Y!fO^%ZXj%ZX~O%O%}O~PKfOjcO^qa]qanqa!Vqa~O^#uO!W&SO~O^!hOh!POr-TOw}O{&WO!P-_O!Q-`O!W-^O!]-eO%O,xO%Y!fO~Oi&^O~PL{O^!hOh!POr!jOw}O!Q!kO!WaO!]!QO%O!eO%Y!fO~O!P#hO~PMwOi&eO%O,yO%Y!fO~O#T&gOV#ZX$w#ZX~P?tO]&kO%O#oO~O^!hOh!POr-TOw}O!P-_O!Q-`O!]-eO%O!eO%Y!fO~O!W&lO#T&mO~P! _O]&qO%O#oO~O#T&sOV#eX$w#eX~P?tO]&vO%O#oO~OjeX~P$XOjcO!|,XO~P2gOn!lO#W&yO#W%]X~O^#VOn#TO!Q#cO!W#SO!|,XO#R#dO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]OV`X#T%eX#U%eX~OZ&zOj$`O$w`X~P!#cOi'OO#p'PO#q'QO~OZ#ROjcO~P!#cO#T'TO#U#iO~O#W'UO~OV'WO!QnO~P*aOV'XO~OjcO~O!|#`OV#za$w#za~PBROi'[O#p']O#q'^O~On#TO!|#`OV%eX$w%eX!a%eX~PBRO!|#`OV$Za$w$Za~PBRO${$rO$|$rO$}'`O~O]${O~O%O!eO]%ZXn%ZX!V%ZX~PKfO!|#`Oi!_Xn!_X!a!`X~PBROi!_Xn!_X!a!`X~O!a'aO~On'bOi%cX~Oi'dO~On'eO!V%bX!a%bX~O!V'gO~O]'jOn'kO!|,YO~PBROn'nO!V'mO!a'oO!|#`O~PBRO!QnO!V'qO!a'rO~P*aO!|#`On$ma#T$ma#U$maV$ma$w$ma!a$ma~PBRO]'sOu'tO~O%Y#XO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xin!xi!Q!xi!W!xi!|!xi#R!xi#T!xi#U!xi$w!xi%`!xi%f!xi%g!xi%i!xi%p!xi%q!xi~O!V!xii!xi!a!xi~P!+YO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%p!xi%q!xi!V!xii!xi!a!xi~O!|!xi~P!-TO!|#`O~P!-TO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[OV!xiZ!xi^!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%q!xi~O!|#`O!V!xii!xi!a!xi~P!/VO!|#`OV#Pi$w#Pi!a#Pi~PBRO]'uOn'wOu'vO~OZ#rO[#qO]'zO%O#oO~Ou'|O~P?tOn'}O]%[X~O](PO~OZeX^mX^!TXj!TX!W!TX~OjcOV$]i$w$]i~O%`(ZOV%^X$w%^Xn%^X!V%^X~Oi(`O~PL{O[(aO!W!tOVlX$wlX~On(bO~P?tO[(aOVlX$wlX~Oi(hO%O,yO%Y!fO~O!V(iO~O#T(kO~O](nO%O#oO~O[oO^YOaoOdoOh!POr!pOu-bOw}O!P!OO!QnO!V-UO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O%O+zO~P!4vO](sO%O#oO~O#T(tOV#ea$w#ea~O](xO%O#oO~O#k(yOV#ii$w#ii~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-PO!WaO!]!QO!phO!qhO%O+xO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O^(|O%O%_O~O#p%dP#q%dP~P/uOi)PO#p'PO#q'QO~O!a)RO~O!QnO#y)VO~P*aOV)WO!|#`O~PBROj#wa~P;_OV)WO!QnO~P*aOi)]O#p']O#q'^O~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O%O,eO~P!:lO!a)bO~Oj!qO!QnO~P*aOj!qO!QnOi%ca~P*aOn)iOi%ca~O!V%ba!a%ba~P?tOn)lO!V%ba!a%ba~O])nO~O])oO~O!V)pO~O!QnO!V)rO!a)sO~P*aO!V)rO!a)sO!|#`O~PBRO])uOn)vO~O])wOn)xO~O^!hOh!POr-TOu%xOw}O!P-_O!Q-`O!W-^O!]-eO%O,dO%Y!fO~O]%[a~P!>nOn)|O]%[a~O]${O]tXntX~OjcOV$^q$w$^q~On*PO{&WO~P?tOn*SO!V%rX~O!V*UO~OjcOV$]q$w$]q~O%`(ZOV|a$w|an|a!V|a~O[*]OVla$wla~O[*]O!W!tOVla$wla~On*PO{&WO!W*`O^%WXj%WX~P! _OjcO#j!UO~OjcO!|,XO~PBROZ*dO^#VO!W#SO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~O!|#`O~P!BoO#^*eO~P?tO!a*fO~Oj$`O!|,XO~P!BoO#W*hO~Oj#wi~P;_OV*kO!|#`O~PBROn#TO!Q#cO!|#`O!a$QX#T%eX~PBRO#T*lO~O#W*lO~O!a*mO~O!|#`Oi!_in!_i~PBRO!|#`Oi!bXn!bX!a!cX~PBROi!bXn!bX!a!cX~O!a*nO~Oj!qO!QnOi%ci~P*aO!V%bi!a%bi~P?tO!V*qO!a*rO!|#`O~PBRO!V*qO!|#`O~PBRO]*tO~O]*uO~O]*uOu*vO~O]%[i~P!>nO%O!eO!V%ra~On*|O!V%ra~O[+OOVli$wli~O%O+yO~P!4vO#k+QOV#iy$w#iy~O^+RO%O%_O~O]+SO~O!|,XOj#xq~PBROj#wq~P;_O!V+ZO!|#`O~PBRO]+[On+]O~O%O!eO!V%ri~O^#QOn'eO!V%bX~O#^+`O~P?tOj+aO~O^#VO!W#SO!|#`O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~OZ+cO~P!JvO!|#`O!a$Qi~PBRO!|#`Oi!bin!bi~PBRO!V+dO!|#`O~PBRO]+eO~O]+fO~Oi+iO#p+jO#q+kO~O^+lO%O%_O~Oi+pO#p+jO#q+kO~O!a+rO~O#^+sO~P?tO!a+tO~O]+uO~OZeX^eX^!TXj!TX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeXVeXneX!QeX#ReX#TeX#UeX$weX~O]eX]!TX!VeXieX!aeX~P!NUOjeX~P!NUOZeX^eX^!TXj!TX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeXn!TX!VeX~O]eX!V!TX~P#!gOh!TXr!TXw!TX{!TX!P!TX!Q!TX!]!TX%O!TX%Y!TX~P#!gOZeX^eX^!TXj!TXneX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeX~O]eXueX~P#$xO]$mXn$mXu$mX~PF|Oj$mXn$mX~P!7`On+|O]%eau%ea~On+}Oj%ea~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-OO!WaO!]!QO!phO!qhO%O+yO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~OZeX]!TX^UXhUXnUXn!TXrUXuUXwUX!PUX!QUX!WUX!W!TX!]UX%OUX%YUX~OnUX!QeX!aeX#TeX#WUX~P#$xOn+|O!|,YO]%eXu%eX~PBROn+}O!|,XOj%eX~PBRO^&OOV%ZXj%ZX$w%ZX]%ZXn%ZX!V%ZXu%ZX%`%ZX#T%ZX[%ZX!a%ZX~P?wO!|,YO]$man$mau$ma~PBRO!|,XOj$man$ma~PBRO%Y#XO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi!|!xi%`!xi%f!xi%g!xi%i!xi%p!xi%q!xi~Oj!xi~P!+YOn!xiu!xi~P#,hO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi!|!xi%p!xi%q!xi~O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xij!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%p!xi%q!xi~O!|!xi~P#/_On!xiu!xi~P#.TO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi%p!xi%q!xi~O!|,WO~P#1^O!|,XO~P#/_O!|,YOn!xiu!xi~P#1^O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[OZ!xi]!xi^!xi!W!xi%q!xi~O!|,WO~P#3QO!|,XOj!xi~P!/VO!|,YOn!xiu!xi~P#3QO!|,XOj#Pi~PBROV!TXZeX^mX!W!TX$w!TX~O%`!TX~P#5RO[!TXhmXnmXrmXwmX!PmX!QmX!WmX!]mX%OmX%YmX~P#5ROn#TO!Q,aO!|,XO#R#dOj`X#T%eX#U%eX~PBRO[oO^YOaoOdoOh!POr!pOw}O!P#hO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!Q-OO%O+yO~P#6{O!Q-PO%O+xO~P#6{O!Q-QO%O+{O~P#6{O#T,bO#U,bO~O#W,cO~O^!hOh!POr-TOw}O!P-_O!Q-WO!W-^O!]-eO%O!eO%Y!fO~O^!hOh!POr-TOw}O!Q-`O!W-^O!]-eO%O!eO%Y!fO~O!P-VO~P#9zO%O+wO~P!4vO!P-XO~O!V-YO!|#`O~PBRO!V-ZO~O!V-[O~O!W-dO~OP%ka%Oa~",goto:"!FW%sPP%tP%wP%zP'SP'XPPPP'`'cP'u'uP)w'u-_PPP0j0m0qP1V4b1VP7s8WP1VP8a8d8hP8p8w1VPP1V8{<`?vPPCY-_-_-_PCdCuCxPC{DQ'u'uDV'uES'u'u'u'uGUIW'uPPJR'uJUMjMjMj'u! r! r!#SP!$`!%d!&d'cP'cPP'cP!&yP!'V!'^!&yP!'a!'h!'n!'w!&yP!'z!(R!&y!(U!(fPP!&yP!(x!)UPP!&y!)Y!)c!&yP!)g!)gP!&yP!&yP!)j!)m!&v!&yP!&yPPP!&yP!&yP!)q!)q!)w!)}!*U!*[!*d!*j!*p!*w!*}!+T!+Z!.q!.x!/O!/X!/m!/s!/z!0Q!0W!0^!0d!0jPPPPPPPPP!0p!1f!1k!1{!2kPP!7P!:^P!>u!?Z!?_!@Z!@fP!@p!D_!Df!Di!DuPPPPPPPPPPPP!FSR!aPRyO!WXOScw!R!T!U!W#O#k#n#u$R$X&O&j&u&|'W'Y']'})W)|*k*w+gQ#pzU#r{#s%uQ#x|U$T!S$U&pQ$^!VQ$y!lR)U'RVROS#nQ#t{T%t#s%uR#t{qrOScw!U!V!W#O#k#n&|'W'Y)W*k+g%PoOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^%O]OSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^#u!iW^!O!h!t!z#e#h#u#v#y#|#}$P$Q$T$W$v$x%W%Y%a%x%y&O&S&W&]&`&b&d&m'e'|'}(S([(c(i(o(|)l)|*P*Q*S*p*w*|+R+^+j+l,h-U-V-W-X-Y-Z-[-]-_-d'cbOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR$O!PT&c#}&dW%`#R&z*d+cQ&Q#vS&V#y&]S&`#}&dR*Y(b'cZOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-d%fWOSWYacmnw!O!U!V!W!X!Z!_!q!z#O#Q#S#T#V#^#_#`#a#b#c#h#i#j#k#n#v#|$f$v$x%W%Y%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(i(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^S&b#}&d!{-]!h!t#e#u#y$P$Q$T$W%a%x%y&O&W&]&`&m'e'|'}(S([(c(o(|)l)|*Q*p*w+R+j+l,h-U-V-W-X-Y-Z-[-]-_-dQ#v|S$v!j!pU&P#v$v,hZ,h#x&Q&U&V-TS%{#u&OV){'})|*wR#z}T&[#y&]]&X#y&](S([(o*QZ&Z#y&](S(o*QT([&Y(]'s_OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-d'r_OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR!w^'bbOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dS&a#}&dR(d&bS!u]fX!x`&_(e(oQ!r[Q%O!qQ)d'aU)f'b)i*oR+X*nR%R!qR%P!qV)h'b)i*oV)g'b)i*odtOScw#O#k#n&|'Y+gQ$h!WQ&R#wQ&w$[S'S$c$iQ(V&TQ*O(RQ*V(WQ*b(yQ*c(zR+_+Q%PfOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^%PgOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^!q#Weg!o!y$[$_$c$j$m$q$}%^%b%d%m'V'p(z({)S)Y)^)c)e)q)t*i*s+T+V+W+Y,f,g,i,j,w,z-aR#fh#^mOSacmnw!X!Z!_!q#O#S#T#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&y&|'P'T'U'X'Y']'a'b'o'r(k(t)i)s*`*h*l*n*o*r+g-^!W#_e!y$j$m$q$}%b%d%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aW,T!o,n,q,tj,U$[$_$c(z)S*i,g,j,o,r,u,w,z[,V%^,f,i,p,s,v`,{Y,Q,T,W,Z,^,{-Ox,|!U!V!W&x'R'W)V)W*k+},R,U,X,[,_,a,b,c,|-Pg,}#Q#V'w+|,S,V,Y,],`,}-Q#^mOSacmnw!X!Z!_!q#O#S#T#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&y&|'P'T'U'X'Y']'a'b'o'r(k(t)i)s*`*h*l*n*o*r+g-^`,{Y,Q,T,W,Z,^,{-Ox,|!U!V!W&x'R'W)V)W*k+},R,U,X,[,_,a,b,c,|-Pg,}#Q#V'w+|,S,V,Y,],`,}-Q!Y#^e!y$j$m$q$}%b%d%i%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aY,Q!o,k,n,q,tl,R$[$_$c(z)S*i,g,j,l,o,r,u,w,z_,S%^,f,i,m,p,s,v!W#_e!y$j$m$q$}%b%d%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aW,T!o,n,q,tj,U$[$_$c(z)S*i,g,j,o,r,u,w,z],V%^,f,i,p,s,v!S#ae!y$j$m$q$}%b%d%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aS,Z!o,tf,[$[$_$c(z)S*i,g,j,u,w,zX,]%^,f,i,v!Q#be!y$j$m$q$}%b%d%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aQ,^!od,_$[$_$c(z)S*i,g,j,w,zV,`%^,f,iprOScw!U!V!W#O#k#n&|'W'Y)W*k+gR)a']etOScw#O#k#n&|'Y+gQ$S!RT&i$R&jR$S!RQ$V!ST&o$U&pQ&U#xR&m$TS(T&S&lV*{*S*|+^R$V!SQ$Y!TT&t$X&uR$Y!TdsOScw#O#k#n&|'Y+gT$p![!]dtOScw#O#k#n&|'Y+gQ*b(yR+_+QQ$a!VQ&{$_Q)T'RR*g)ST&|$`&}Q+b+SQ+m+fR+v+uT+g+a+hR$i!WR$l!YT'Y$k'ZXuOSw#nQ$s!`R'_$sSSO#nR!dSQ%u#sR'y%uUwOS#nR#mwQ&d#}R(g&dQ(c&`R*Z(cS!mX$^R$z!mQ(O%{R)}(OQ&]#yR(_&]Q(]&YR*X(]'r^OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR!v^S'f%T+PR)m'fQ'c%RR)j'cW#Oc&|'Y+gR%[#O^#Ue$[$_$c$m)^,zU%e#U,O,PQ,O,fR,P,gQ&j$RR(m&jS*Q(S(oR*y*QQ*T(TR*}*TQ&p$UR(r&pQ&u$XR(w&uQ&}$`R)O&}Q+h+aR+o+hQ'Z$kR)['ZQ!cRQ#luQ#nyQ%Z!|Q&x$]Q'R$bQ'x%tQ(^&[Q(f&cQ(l&iQ(q&oR(v&tVxOS#nWuOSw#nY!|c#O&|'Y+gR%r#kdtOScw#O#k#n&|'Y+gQ$]!UQ$b!VQ$g!WQ)X'WQ*j)WR+U*kdeOScw#O#k#n&|'Y+gQ!oYQ!ya`#gmn,{,|,}-O-P-QQ$[!UQ$_!VQ$c!WQ$j!Xd$m!Z#i#j&g&s'P'T'U(k(tQ$q!_Q$}!qQ%^#QQ%b#SQ%d#TW%h#^,Q,R,SQ%i#_Q%j#`Q%k#aQ%l#bQ%m#cQ'V$fQ'p%cQ(z&xQ({&yQ)S'RQ)Y'XQ)^']Q)c'aU)e'b)i*oQ)q'oQ)t'rQ*i)VQ*s)sQ+T*hQ+V*lQ+W*nQ+Y*rS,f#V'wS,g,b,cQ,i+|Q,j+}Q,k,TQ,l,UQ,m,VQ,n,WQ,o,XQ,p,YQ,q,ZQ,r,[Q,s,]Q,t,^Q,u,_Q,v,`Q,w,aU,z'W)W*kV-a&l*`-^#bZW!O!h!t!z#e#h#u#v#y#|$P$Q$T$W$v$x%W%Y%a%x%y&O&W&]&`&m'e'|'}(S([(c(i(o(|)l)|*Q*p*w+R+j+l,h-U-V-W-X-Y-Z-[-]-_-d%P[OSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^$zdOSacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^S!gW-]Q!nYS#{!O-_Q$u!hS%T!t+jS%X!z-UQ%n#e[%o#h#|$x-V-W-XW%w#u'})|*wU&P#v$v,h[&X#y&](S([(o*QQ&f$PQ&h$QQ&n$TQ&r$WS'h%W-YS'i%Y-ZW'l%a(|+R+lS'{%x%yQ(Q&OQ(Y&WQ(d&`Q(p&mU)k'e)l*pQ)z'|Q*[(cS*^(i-[Q+P*`R-c-dS#w|!pS$w!j-TQ&T#xQ(R&QQ(W&UR(X&VT%|#u&OhqOScw!U!V#O#k#n&|'Y+gU$Q!R$R&jU$W!T$X&uQ$e!WY%y#u&O'})|*wQ)`']V-S'W)W*kS&[#y&]S*R(S(oR*z*QY&Y#y&](S(o*QR*W(['``OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dS&_#}&dW(S&S*S*|+^Q(e&bQ(o&lR*x*PS%U!t*`R+q+jR%S!qQ#PcQ(}&|Q)Z'YR+n+ghpOScw!U!V#O#k#n&|'Y+gQ$d!WQ$n!ZQ%g#VU%p#i'T,bU%q#j'U,cQ(j&gQ(u&sQ)Q'PQ)_']Q)y'wQ*_(kQ*a(tV-R'W)W*kT(U&S&l",nodeNames:`⚠ LineComment BlockComment SourceFile PackageClause package DefName ; ImportDecl import ImportSpec . String ) ( SpecList ExprStatement Number Bool Nil Rune VariableName TypedLiteral StructType struct } { StructBody FieldDecl FieldName , PointerType * FunctionType func Parameters Parameter ... InterfaceType interface InterfaceBody MethodElem UnderlyingType ~ TypeElem LogicOp ChannelType chan <- ParenthesizedType QualifiedType TypeName ParameterizedType ] [ TypeArgs ArrayType SliceType MapType map LiteralValue Element Key : Element Key ParenthesizedExpr FunctionLiteral Block Conversion SelectorExpr IndexExpr SliceExpr TypeAssertion CallExpr ParameterizedExpr Arguments CallExpr make new Arguments UnaryExp ArithOp LogicOp BitOp DerefOp BinaryExp ArithOp BitOp BitOp CompareOp LogicOp LogicOp SendStatement IncDecStatement IncDecOp Assignment = UpdateOp VarDecl := ConstDecl const ConstSpec SpecList TypeDecl type TypeSpec TypeParams TypeParam SpecList VarDecl var VarSpec SpecList LabeledStatement LabelName IfStatement if else SwitchStatement switch SwitchBlock Case case default TypeSwitchStatement SwitchBlock Case ForStatement for ForClause RangeClause range GoStatement go SelectStatement select SelectBlock Case ReceiveStatement ReturnStatement return GotoStatement break continue goto FallthroughStatement fallthrough DeferStatement defer FunctionDecl MethodDecl`,maxTerm:218,context:V,nodeProps:[[`isolate`,-3,2,12,20,``],[`group`,-18,12,17,18,19,20,21,22,66,67,69,70,71,72,73,74,77,81,86,`Expr`,-20,16,68,93,94,96,99,101,105,111,115,117,120,126,129,134,136,141,143,147,149,`Statement`,-12,23,31,33,38,46,49,50,51,52,56,57,58,`Type`],[`openedBy`,13,`(`,25,`{`,53,`[`],[`closedBy`,14,`)`,26,`}`,54,`]`]],propSources:[H],skippedNodes:[0,1,2,153],repeatNodeCount:23,tokenData:":b~RvXY#iYZ#i]^#ipq#iqr#zrs$Xuv&Pvw&^wx&yxy(qyz(vz{({{|)T|})e}!O)j!O!P)u!P!Q+}!Q!R,y!R![-t![!]2^!]!^2k!^!_2p!_!`3]!`!a3e!c!}3x!}#O4j#P#Q4o#Q#R4t#R#S4|#S#T9X#T#o3x#o#p9q#p#q9v#q#r:W#r#s:]$g;'S3x;'S;=`4d<%lO3x~#nS$y~XY#iYZ#i]^#ipq#iU$PP%hQ!_!`$SS$XO!|S~$^W[~OY$XZr$Xrs$vs#O$X#O#P${#P;'S$X;'S;=`%y<%lO$X~${O[~~%ORO;'S$X;'S;=`%X;=`O$X~%^X[~OY$XZr$Xrs$vs#O$X#O#P${#P;'S$X;'S;=`%y;=`<%l$X<%lO$X~%|P;=`<%l$X~&UP%l~!_!`&X~&^O#U~~&cR%j~vw&l!_!`&X#Q#R&q~&qO%p~~&vP%o~!_!`&X~'OWd~OY&yZw&ywx'hx#O&y#O#P'm#P;'S&y;'S;=`(k<%lO&y~'mOd~~'pRO;'S&y;'S;=`'y;=`O&y~(OXd~OY&yZw&ywx'hx#O&y#O#P'm#P;'S&y;'S;=`(k;=`<%l&y<%lO&y~(nP;=`<%l&y~(vO^~~({O]~~)QP%Y~!_!`&X~)YQ%f~{|)`!_!`&X~)eO#R~~)jOn~~)oQ%g~}!O)`!_!`&X~)zRZS!O!P*T!Q![*`#R#S+w~*WP!O!P*Z~*`Ou~Q*eTaQ!Q![*`!g!h*t#R#S+w#X#Y*t#]#^+rQ*wS{|+T}!O+T!Q![+^#R#S+lQ+WQ!Q![+^#R#S+lQ+cRaQ!Q![+^#R#S+l#]#^+rQ+oP!Q![+^Q+wOaQQ+zP!Q![*`~,SR%k~z{,]!P!Q,b!_!`&X~,bO$z~~,gSP~OY,bZ;'S,b;'S;=`,s<%lO,b~,vP;=`<%l,bQ-O[aQ!O!P*`!Q![-t!d!e.c!g!h*t!q!r/Z!z!{/x#R#S.]#U#V.c#X#Y*t#]#^+r#c#d/Z#l#m/xQ-yUaQ!O!P*`!Q![-t!g!h*t#R#S.]#X#Y*t#]#^+rQ.`P!Q![-tQ.fR!Q!R.o!R!S.o#R#S/QQ.tSaQ!Q!R.o!R!S.o#R#S/Q#]#^+rQ/TQ!Q!R.o!R!S.oQ/^Q!Q!Y/d#R#S/rQ/iRaQ!Q!Y/d#R#S/r#]#^+rQ/uP!Q!Y/dQ/{T!O!P0[!Q![1c!c!i1c#R#S2Q#T#Z1cQ0_S!Q![0k!c!i0k#R#S1V#T#Z0kQ0pVaQ!Q![0k!c!i0k!r!s*t#R#S1V#T#Z0k#]#^+r#d#e*tQ1YR!Q![0k!c!i0k#T#Z0kQ1hWaQ!O!P0k!Q![1c!c!i1c!r!s*t#R#S2Q#T#Z1c#]#^+r#d#e*tQ2TR!Q![1c!c!i1c#T#Z1c~2cP!a~!_!`2f~2kO#W~~2pOV~~2uR!|S}!O3O!^!_3T!_!`$S~3TO!Q~~3YP%m~!_!`&X~3bP#T~!_!`$S~3jQ!|S!_!`$S!`!a3p~3uP%n~!_!`&X~3}V%O~!Q![3x!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~4gP;=`<%l3x~4oO!W~~4tO!V~~4yP%i~!_!`&X~5RV%O~!Q![5h!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~5o^aQ%O~!O!P*`!Q![5h!c!g3x!g!h6k!h!}3x#R#S4|#T#X3x#X#Y6k#Y#]3x#]#^8k#^#o3x$g;'S3x;'S;=`4d<%lO3x~6pX%O~{|+T}!O+T!Q![7]!c!}3x#R#S8P#T#o3x$g;'S3x;'S;=`4d<%lO3x~7dXaQ%O~!Q![7]!c!}3x#R#S8P#T#]3x#]#^8k#^#o3x$g;'S3x;'S;=`4d<%lO3x~8UV%O~!Q![7]!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~8rVaQ%O~!Q![3x!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~9[TO#S9X#S#T$v#T;'S9X;'S;=`9k<%lO9X~9nP;=`<%l9X~9vOj~~9{Q%`~!_!`&X#p#q:R~:WO%q~~:]Oi~~:bO{~",tokenizers:[z,1,2,new m(`j~RQYZXz{^~^O$|~~aP!P!Qd~iO$}~~`,25,181)],topRules:{SourceFile:[0,3]},dynamicPrecedences:{19:1,51:-1,55:2,69:-1,108:-1},specialized:[{term:184,get:e=>U[e]||-1}],tokenPrec:5451}),G=[l("func ${name}(${params}) ${type} {\n ${}\n}",{label:`func`,detail:`declaration`,type:`keyword`}),l("func (${receiver}) ${name}(${params}) ${type} {\n ${}\n}",{label:`func`,detail:`method declaration`,type:`keyword`}),l("var ${name} = ${value}",{label:`var`,detail:`declaration`,type:`keyword`}),l("type ${name} ${type}",{label:`type`,detail:`declaration`,type:`keyword`}),l("const ${name} = ${value}",{label:`const`,detail:`declaration`,type:`keyword`}),l("type ${name} = ${type}",{label:`type`,detail:`alias declaration`,type:`keyword`}),l("for ${init}; ${test}; ${update} {\n ${}\n}",{label:`for`,detail:`loop`,type:`keyword`}),l("for ${i} := range ${value} {\n ${}\n}",{label:`for`,detail:`range`,type:`keyword`}),l(`select { \${} }`,{label:`select`,detail:`statement`,type:`keyword`}),l("case ${}:\n${}",{label:`case`,type:`keyword`}),l(`switch \${} { \${} diff --git a/ksadk/server/static/assets/dist-CttYUqzS.js b/ksadk/server/static/assets/dist-Byl0QKIY.js similarity index 99% rename from ksadk/server/static/assets/dist-CttYUqzS.js rename to ksadk/server/static/assets/dist-Byl0QKIY.js index 53824dac..3760ebf4 100644 --- a/ksadk/server/static/assets/dist-CttYUqzS.js +++ b/ksadk/server/static/assets/dist-Byl0QKIY.js @@ -1,4 +1,4 @@ -import{A as e,B as t,D as n,E as r,F as i,H as a,I as o,L as s,M as c,P as l,R as u,S as d,T as f,V as p,b as m,c as h,d as ee,j as te,l as ne,m as re,r as ie,u as ae,v as g,w as _,x as oe,y as se,z as v}from"./index-8ipRcQ-M.js";import{html as ce,htmlCompletionSource as le}from"./dist-BjU6y-A2.js";var ue=class t{static create(e,n,r,i,a){return new t(e,n,r,i+(i<<8)+e+(n<<4)|0,a,[],[])}constructor(t,n,r,i,a,o,s){this.type=t,this.value=n,this.from=r,this.hash=i,this.end=a,this.children=o,this.positions=s,this.hashProp=[[e.contextHash,i]]}addChild(t,n){t.prop(e.contextHash)!=this.hash&&(t=new i(t.type,t.children,t.positions,t.length,this.hashProp)),this.children.push(t),this.positions.push(n)}toTree(e,t=this.end){let n=this.children.length-1;return n>=0&&(t=Math.max(t,this.positions[n]+this.children[n].length+this.from)),new i(e.types[this.type],this.children,this.positions,t-this.from).balance({makeTree:(e,t,n)=>new i(c.none,e,t,n,this.hashProp)})}},y;(function(e){e[e.Document=1]=`Document`,e[e.CodeBlock=2]=`CodeBlock`,e[e.FencedCode=3]=`FencedCode`,e[e.Blockquote=4]=`Blockquote`,e[e.HorizontalRule=5]=`HorizontalRule`,e[e.BulletList=6]=`BulletList`,e[e.OrderedList=7]=`OrderedList`,e[e.ListItem=8]=`ListItem`,e[e.ATXHeading1=9]=`ATXHeading1`,e[e.ATXHeading2=10]=`ATXHeading2`,e[e.ATXHeading3=11]=`ATXHeading3`,e[e.ATXHeading4=12]=`ATXHeading4`,e[e.ATXHeading5=13]=`ATXHeading5`,e[e.ATXHeading6=14]=`ATXHeading6`,e[e.SetextHeading1=15]=`SetextHeading1`,e[e.SetextHeading2=16]=`SetextHeading2`,e[e.HTMLBlock=17]=`HTMLBlock`,e[e.LinkReference=18]=`LinkReference`,e[e.Paragraph=19]=`Paragraph`,e[e.CommentBlock=20]=`CommentBlock`,e[e.ProcessingInstructionBlock=21]=`ProcessingInstructionBlock`,e[e.Escape=22]=`Escape`,e[e.Entity=23]=`Entity`,e[e.HardBreak=24]=`HardBreak`,e[e.Emphasis=25]=`Emphasis`,e[e.StrongEmphasis=26]=`StrongEmphasis`,e[e.Link=27]=`Link`,e[e.Image=28]=`Image`,e[e.InlineCode=29]=`InlineCode`,e[e.HTMLTag=30]=`HTMLTag`,e[e.Comment=31]=`Comment`,e[e.ProcessingInstruction=32]=`ProcessingInstruction`,e[e.Autolink=33]=`Autolink`,e[e.HeaderMark=34]=`HeaderMark`,e[e.QuoteMark=35]=`QuoteMark`,e[e.ListMark=36]=`ListMark`,e[e.LinkMark=37]=`LinkMark`,e[e.EmphasisMark=38]=`EmphasisMark`,e[e.CodeMark=39]=`CodeMark`,e[e.CodeText=40]=`CodeText`,e[e.CodeInfo=41]=`CodeInfo`,e[e.LinkTitle=42]=`LinkTitle`,e[e.LinkLabel=43]=`LinkLabel`,e[e.URL=44]=`URL`})(y||={});var de=class{constructor(e,t){this.start=e,this.content=t,this.marks=[],this.parsers=[]}},fe=class{constructor(){this.text=``,this.baseIndent=0,this.basePos=0,this.depth=0,this.markers=[],this.pos=0,this.indent=0,this.next=-1}forward(){this.basePos>this.pos&&this.forwardInner()}forwardInner(){let e=this.skipSpace(this.basePos);this.indent=this.countIndent(e,this.pos,this.indent),this.pos=e,this.next=e==this.text.length?-1:this.text.charCodeAt(e)}skipSpace(e){return x(this.text,e)}reset(e){for(this.text=e,this.baseIndent=this.basePos=this.pos=this.indent=0,this.forwardInner(),this.depth=1;this.markers.length;)this.markers.pop()}moveBase(e){this.basePos=e,this.baseIndent=this.countIndent(e,this.pos,this.indent)}moveBaseColumn(e){this.baseIndent=e,this.basePos=this.findColumn(e)}addMarker(e){this.markers.push(e)}countIndent(e,t=0,n=0){for(let r=t;r=t.stack[n.depth+1].value+n.baseIndent)return!0;if(n.indent>=n.baseIndent+4)return!1;let r=(e.type==y.OrderedList?E:T)(n,t,!1);return r>0&&(e.type!=y.BulletList||w(n,t,!1)<0)&&n.text.charCodeAt(n.pos+r-1)==e.value}var me={[y.Blockquote](e,t,n){return n.next==62?(n.markers.push(R(y.QuoteMark,t.lineStart+n.pos,t.lineStart+n.pos+1)),n.moveBase(n.pos+(b(n.text.charCodeAt(n.pos+1))?2:1)),e.end=t.lineStart+n.text.length,!0):!1},[y.ListItem](e,t,n){return n.indent-1?!1:(n.moveBaseColumn(n.baseIndent+e.value),!0)},[y.OrderedList]:pe,[y.BulletList]:pe,[y.Document](){return!0}};function b(e){return e==32||e==9||e==10||e==13}function x(e,t=0){for(;tn&&b(e.charCodeAt(t-1));)t--;return t}function S(e){if(e.next!=96&&e.next!=126)return-1;let t=e.pos+1;for(;t-1&&e.depth==t.stack.length&&t.parser.leafBlockParsers.indexOf(M.SetextHeading)>-1||r<3?-1:1}function ge(e,t){for(let n=e.stack.length-1;n>=0;n--)if(e.stack[n].type==t)return!0;return!1}function T(e,t,n){return(e.next==45||e.next==43||e.next==42)&&(e.pos==e.text.length-1||b(e.text.charCodeAt(e.pos+1)))&&(!n||ge(t,y.BulletList)||e.skipSpace(e.pos+2)=48&&i<=57;){if(r++,r==e.text.length)return-1;i=e.text.charCodeAt(r)}return r==e.pos||r>e.pos+9||i!=46&&i!=41||re.pos+1||e.next!=49)?-1:r+1-e.pos}function _e(e){if(e.next!=35)return-1;let t=e.pos+1;for(;t6?-1:n}function ve(e){if(e.next!=45&&e.next!=61||e.indent>=e.baseIndent+4)return-1;let t=e.pos+1;for(;t/,be=/\?>/,O=[[/^<(?:script|pre|style)(?:\s|>|$)/i,/<\/(?:script|pre|style)>/i],[/^\s*/,be=/\?>/,O=[[/^<(?:script|pre|style)(?:\s|>|$)/i,/<\/(?:script|pre|style)>/i],[/^\s*`),P=M(y,`?>`),F=M(b,`]]>`),I=t({Text:e.content,"StartTag StartCloseTag EndTag SelfCloseEndTag":e.angleBracket,TagName:e.tagName,"MismatchedCloseTag/TagName":[e.tagName,e.invalid],AttributeName:e.attributeName,AttributeValue:e.attributeValue,Is:e.definitionOperator,"EntityReference CharacterReference":e.character,Comment:e.blockComment,ProcessingInst:e.processingInstruction,DoctypeDecl:e.documentMeta,Cdata:e.special(e.string)}),L=d.deserialize({version:14,states:",lOQOaOOOrOxO'#CfOzOpO'#CiO!tOaO'#CgOOOP'#Cg'#CgO!{OrO'#CrO#TOtO'#CsO#]OpO'#CtOOOP'#DT'#DTOOOP'#Cv'#CvQQOaOOOOOW'#Cw'#CwO#eOxO,59QOOOP,59Q,59QOOOO'#Cx'#CxO#mOpO,59TO#uO!bO,59TOOOP'#C|'#C|O$TOaO,59RO$[OpO'#CoOOOP,59R,59ROOOQ'#C}'#C}O$dOrO,59^OOOP,59^,59^OOOS'#DO'#DOO$lOtO,59_OOOP,59_,59_O$tOpO,59`O$|OpO,59`OOOP-E6t-E6tOOOW-E6u-E6uOOOP1G.l1G.lOOOO-E6v-E6vO%UO!bO1G.oO%UO!bO1G.oO%dOpO'#CkO%lO!bO'#CyO%zO!bO1G.oOOOP1G.o1G.oOOOP1G.w1G.wOOOP-E6z-E6zOOOP1G.m1G.mO&VOpO,59ZO&_OpO,59ZOOOQ-E6{-E6{OOOP1G.x1G.xOOOS-E6|-E6|OOOP1G.y1G.yO&gOpO1G.zO&gOpO1G.zOOOP1G.z1G.zO&oO!bO7+$ZO&}O!bO7+$ZOOOP7+$Z7+$ZOOOP7+$c7+$cO'YOpO,59VO'bOpO,59VO'mO!bO,59eOOOO-E6w-E6wO'{OpO1G.uO'{OpO1G.uOOOP1G.u1G.uO(TOpO7+$fOOOP7+$f7+$fO(]O!bO<c!|;'S(o;'S;=`)]<%lO(oi>jX|W!O`Or(ors&osv(owx'}x!r(o!r!s?V!s;'S(o;'S;=`)]<%lO(oi?^X|W!O`Or(ors&osv(owx'}x!g(o!g!h?y!h;'S(o;'S;=`)]<%lO(oi@QY|W!O`Or?yrs@psv?yvwA[wxBdx!`?y!`!aCr!a;'S?y;'S;=`Db<%lO?ya@uV!O`Ov@pvxA[x!`@p!`!aAy!a;'S@p;'S;=`B^<%lO@pPA_TO!`A[!`!aAn!a;'SA[;'S;=`As<%lOA[PAsOiPPAvP;=`<%lA[aBQSiP!O`Ov&ox;'S&o;'S;=`'Q<%lO&oaBaP;=`<%l@pXBiX|WOrBdrsA[svBdvwA[w!`Bd!`!aCU!a;'SBd;'S;=`Cl<%lOBdXC]TiP|WOr'}sv'}w;'S'};'S;=`(c<%lO'}XCoP;=`<%lBdiC{ViP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiDeP;=`<%l?yiDoZ|W!O`Or(ors&osv(owx'}x!e(o!e!fEb!f#V(o#V#WIr#W;'S(o;'S;=`)]<%lO(oiEiX|W!O`Or(ors&osv(owx'}x!f(o!f!gFU!g;'S(o;'S;=`)]<%lO(oiF]X|W!O`Or(ors&osv(owx'}x!c(o!c!dFx!d;'S(o;'S;=`)]<%lO(oiGPX|W!O`Or(ors&osv(owx'}x!v(o!v!wGl!w;'S(o;'S;=`)]<%lO(oiGsX|W!O`Or(ors&osv(owx'}x!c(o!c!dH`!d;'S(o;'S;=`)]<%lO(oiHgX|W!O`Or(ors&osv(owx'}x!}(o!}#OIS#O;'S(o;'S;=`)]<%lO(oiI]V|W!O`yPOr(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiIyX|W!O`Or(ors&osv(owx'}x#W(o#W#XJf#X;'S(o;'S;=`)]<%lO(oiJmX|W!O`Or(ors&osv(owx'}x#T(o#T#UKY#U;'S(o;'S;=`)]<%lO(oiKaX|W!O`Or(ors&osv(owx'}x#h(o#h#iK|#i;'S(o;'S;=`)]<%lO(oiLTX|W!O`Or(ors&osv(owx'}x#T(o#T#UH`#U;'S(o;'S;=`)]<%lO(oiLwX|W!O`Or(ors&osv(owx'}x#c(o#c#dMd#d;'S(o;'S;=`)]<%lO(oiMkX|W!O`Or(ors&osv(owx'}x#V(o#V#WNW#W;'S(o;'S;=`)]<%lO(oiN_X|W!O`Or(ors&osv(owx'}x#h(o#h#iNz#i;'S(o;'S;=`)]<%lO(oi! RX|W!O`Or(ors&osv(owx'}x#m(o#m#n! n#n;'S(o;'S;=`)]<%lO(oi! uX|W!O`Or(ors&osv(owx'}x#d(o#d#e!!b#e;'S(o;'S;=`)]<%lO(oi!!iX|W!O`Or(ors&osv(owx'}x#X(o#X#Y?y#Y;'S(o;'S;=`)]<%lO(oi!#_V!SP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(ok!$PXaQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qo!$wX[UVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!%mZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!&`!a;'S$q;'S;=`)c<%lO$qk!&kX!RQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!'aZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_#P$q#P#Q!(S#Q;'S$q;'S;=`)c<%lO$qk!(]ZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!)O!a;'S$q;'S;=`)c<%lO$qk!)ZXxQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$q",tokenizers:[j,N,P,F,0,1,2,3,4],topRules:{Document:[0,6]},tokenPrec:0});function R(e,t){let n=t&&t.getChild(`TagName`);return n?e.sliceString(n.from,n.to):``}function z(e,t){let n=t&&t.firstChild;return!n||n.name!=`OpenTag`?``:R(e,n)}function B(e,t,n){let r=t&&t.getChildren(`Attribute`).find(e=>e.from<=n&&e.to>=n),i=r&&r.getChild(`AttributeName`);return i?e.sliceString(i.from,i.to):``}function V(e){for(let t=e&&e.parent;t;t=t.parent)if(t.name==`Element`)return t;return null}function H(e,t){let n=c(e).resolveInner(t,-1),r=null;for(let e=n;!r&&e.parent;e=e.parent)(e.name==`OpenTag`||e.name==`CloseTag`||e.name==`SelfClosingTag`||e.name==`MismatchedCloseTag`)&&(r=e);if(r&&(r.to>t||r.lastChild.type.isError)){let e=r.parent;if(n.name==`TagName`)return r.name==`CloseTag`||r.name==`MismatchedCloseTag`?{type:`closeTag`,from:n.from,context:e}:{type:`openTag`,from:n.from,context:V(e)};if(n.name==`AttributeName`)return{type:`attrName`,from:n.from,context:r};if(n.name==`AttributeValue`)return{type:`attrValue`,from:n.from,context:r};let i=n==r||n.name==`Attribute`?n.childBefore(t):n;return i?.name==`StartTag`?{type:`openTag`,from:t,context:V(e)}:i?.name==`StartCloseTag`&&i.to<=t?{type:`closeTag`,from:t,context:e}:i?.name==`Is`?{type:`attrValue`,from:t,context:r}:i?{type:`attrName`,from:t,context:r}:null}else if(n.name==`StartCloseTag`)return{type:`closeTag`,from:t,context:n.parent};for(;n.parent&&n.to==t&&!n.lastChild?.type.isError;)n=n.parent;return n.name==`Element`||n.name==`Text`||n.name==`Document`?{type:`tag`,from:t,context:n.name==`Element`?n:V(n)}:null}var U=class{constructor(e,t,n){this.attrs=t,this.attrValues=n,this.children=[],this.name=e.name,this.completion=Object.assign(Object.assign({type:`type`},e.completion||{}),{label:this.name}),this.openCompletion=Object.assign(Object.assign({},this.completion),{label:`<`+this.name}),this.closeCompletion=Object.assign(Object.assign({},this.completion),{label:``,boost:2}),this.closeNameCompletion=Object.assign(Object.assign({},this.completion),{label:this.name+`>`}),this.text=e.textContent?e.textContent.map(e=>({label:e,type:`text`})):[]}},W=/^[:\-\.\w\u00b7-\uffff]*$/;function G(e){return Object.assign(Object.assign({type:`property`},e.completion||{}),{label:e.name})}function K(e){return typeof e==`string`?{label:`"${e}"`,type:`constant`}:/^"/.test(e.label)?e:Object.assign(Object.assign({},e),{label:`"${e.label}"`})}function q(e,t){let n=[],r=[],i=Object.create(null);for(let e of t){let t=G(e);n.push(t),e.global&&r.push(t),e.values&&(i[e.name]=e.values.map(K))}let a=[],o=[],s=Object.create(null);for(let t of e){let e=r,c=i;t.attributes&&(e=e.concat(t.attributes.map(e=>typeof e==`string`?n.find(t=>t.label==e)||{label:e,type:`property`}:(e.values&&(c==i&&(c=Object.create(c)),c[e.name]=e.values.map(K)),G(e)))));let l=new U(t,e,c);s[l.name]=l,a.push(l),t.top&&o.push(l)}o.length||(o=a);for(let t=0;t{let{doc:t}=e.state,n=H(e.state,e.pos);if(!n||n.type==`tag`&&!e.explicit)return null;let{type:c,from:l,context:u}=n;if(c==`openTag`){let e=o,n=z(t,u);return n&&(e=s[n]?.children||a),{from:l,options:e.map(e=>e.completion),validFor:W}}else if(c==`closeTag`){let n=z(t,u);return n?{from:l,to:e.pos+ +(t.sliceString(e.pos,e.pos+1)==`>`),options:[s[n]?.closeNameCompletion||{label:n+`>`,type:`type`}],validFor:W}:null}else if(c==`attrName`)return{from:l,options:s[R(t,u)]?.attrs||r,validFor:W};else if(c==`attrValue`){let n=B(t,u,l);if(!n)return null;let r=(s[R(t,u)]?.attrValues||i)[n];return!r||!r.length?null:{from:l,to:e.pos+ +(t.sliceString(e.pos,e.pos+1)==`"`),options:r,validFor:/^"[^"]*"?$/}}else if(c==`tag`){let n=z(t,u),r=s[n],i=[],c=u&&u.lastChild;n&&(!c||c.name!=`CloseTag`||R(t,c)!=n)&&i.push(r?r.closeCompletion:{label:``,type:`type`,boost:2});let d=i.concat((r?.children||(u?a:o)).map(e=>e.openCompletion));if(u&&r?.text.length){let t=u.firstChild;t.to>e.pos-20&&!/\S/.test(e.state.sliceDoc(t.to,e.pos))&&(d=d.concat(r.text))}return{from:l,options:d,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}else return null}}var J=a.define({name:`xml`,parser:L.configure({props:[r.add({Element(e){let t=/^\s*<\//.test(e.textAfter);return e.lineIndent(e.node.from)+(t?0:e.unit)},"OpenTag CloseTag SelfClosingTag"(e){return e.column(e.node.from)+e.unit}}),s.add({Element(e){let t=e.firstChild,n=e.lastChild;return!t||t.name!=`OpenTag`?null:{from:t.to,to:n.name==`CloseTag`?n.from:e.to}}}),i.add({"OpenTag CloseTag":e=>e.getChild(`TagName`)})]}),languageData:{commentTokens:{block:{open:``}},indentOnInput:/^\s*<\/$/}});function Y(e={}){let t=[J.data.of({autocomplete:q(e.elements||[],e.attributes||[])})];return e.autoCloseTags!==!1&&t.push(Z),new o(J,t)}function X(e,t,n=e.length){if(!t)return``;let r=t.firstChild,i=r&&r.getChild(`TagName`);return i?e.sliceString(i.from,Math.min(i.to,n)):``}var Z=n.inputHandler.of((e,t,n,r,i)=>{if(e.composing||e.state.readOnly||t!=n||r!=`>`&&r!=`/`||!J.isActiveAt(e.state,t,-1))return!1;let a=i(),{state:o}=a,s=o.changeByRange(e=>{let{head:t}=e,n=o.doc.sliceString(t-1,t)==r,i=c(o).resolveInner(t,-1),a;if(n&&r==`>`&&i.name==`EndTag`){let n=i.parent;if(n.parent?.lastChild?.name!=`CloseTag`&&(a=X(o.doc,n.parent,t)))return{range:e,changes:{from:t,to:t+ +(o.doc.sliceString(t,t+1)===`>`),insert:``}}}else if(n&&r==`/`&&i.name==`StartCloseTag`){let e=i.parent;if(i.from==t-2&&e.lastChild?.name!=`CloseTag`&&(a=X(o.doc,e,t))){let e=t+ +(o.doc.sliceString(t,t+1)===`>`),n=`${a}>`;return{range:l.cursor(t+n.length,-1),changes:{from:t,to:e,insert:n}}}}return{range:e}});return s.changes.empty?!1:(e.dispatch([a,o.update(s,{userEvent:`input.complete`,scrollIntoView:!0})]),!0)});export{Y as xml}; \ No newline at end of file +import{D as e,E as t,L as n,b as r,f as i,s as a,u as o,v as s,w as c,z as l}from"./index-BkDx9KsG.js";import{n as u,r as d,t as f}from"./dist-DeO3Qj-D.js";var p=1,m=2,h=3,g=4,_=5,v=36,y=37,b=38,x=11,S=13;function C(e){return e==45||e==46||e==58||e>=65&&e<=90||e==95||e>=97&&e<=122||e>=161}function w(e){return e==9||e==10||e==13||e==32}var T=null,E=null,D=0;function O(e,t){let n=e.pos+t;if(E==e&&D==n)return T;for(;w(e.peek(t));)t++;let r=``;for(;;){let n=e.peek(t);if(!C(n))break;r+=String.fromCharCode(n),t++}return E=e,D=n,T=r||null}function k(e,t){this.name=e,this.parent=t}var A=new f({start:null,shift(e,t,n,r){return t==p?new k(O(r,1)||``,e):e},reduce(e,t){return t==x&&e?e.parent:e},reuse(e,t,n,r){let i=t.type.id;return i==p||i==S?new k(O(r,1)||``,e):e},strict:!1}),j=new u((e,t)=>{if(e.next==60){if(e.advance(),e.next==47){e.advance();let n=O(e,0);if(!n)return e.acceptToken(_);if(t.context&&n==t.context.name)return e.acceptToken(m);for(let r=t.context;r;r=r.parent)if(r.name==n)return e.acceptToken(h,-2);e.acceptToken(g)}else if(e.next!=33&&e.next!=63)return e.acceptToken(p)}},{contextual:!0});function M(e,t){return new u(n=>{let r=0,i=t.charCodeAt(0);scan:for(;!(n.next<0);n.advance(),r++)if(n.next==i){for(let e=1;e`),P=M(y,`?>`),F=M(b,`]]>`),I=t({Text:e.content,"StartTag StartCloseTag EndTag SelfCloseEndTag":e.angleBracket,TagName:e.tagName,"MismatchedCloseTag/TagName":[e.tagName,e.invalid],AttributeName:e.attributeName,AttributeValue:e.attributeValue,Is:e.definitionOperator,"EntityReference CharacterReference":e.character,Comment:e.blockComment,ProcessingInst:e.processingInstruction,DoctypeDecl:e.documentMeta,Cdata:e.special(e.string)}),L=d.deserialize({version:14,states:",lOQOaOOOrOxO'#CfOzOpO'#CiO!tOaO'#CgOOOP'#Cg'#CgO!{OrO'#CrO#TOtO'#CsO#]OpO'#CtOOOP'#DT'#DTOOOP'#Cv'#CvQQOaOOOOOW'#Cw'#CwO#eOxO,59QOOOP,59Q,59QOOOO'#Cx'#CxO#mOpO,59TO#uO!bO,59TOOOP'#C|'#C|O$TOaO,59RO$[OpO'#CoOOOP,59R,59ROOOQ'#C}'#C}O$dOrO,59^OOOP,59^,59^OOOS'#DO'#DOO$lOtO,59_OOOP,59_,59_O$tOpO,59`O$|OpO,59`OOOP-E6t-E6tOOOW-E6u-E6uOOOP1G.l1G.lOOOO-E6v-E6vO%UO!bO1G.oO%UO!bO1G.oO%dOpO'#CkO%lO!bO'#CyO%zO!bO1G.oOOOP1G.o1G.oOOOP1G.w1G.wOOOP-E6z-E6zOOOP1G.m1G.mO&VOpO,59ZO&_OpO,59ZOOOQ-E6{-E6{OOOP1G.x1G.xOOOS-E6|-E6|OOOP1G.y1G.yO&gOpO1G.zO&gOpO1G.zOOOP1G.z1G.zO&oO!bO7+$ZO&}O!bO7+$ZOOOP7+$Z7+$ZOOOP7+$c7+$cO'YOpO,59VO'bOpO,59VO'mO!bO,59eOOOO-E6w-E6wO'{OpO1G.uO'{OpO1G.uOOOP1G.u1G.uO(TOpO7+$fOOOP7+$f7+$fO(]O!bO<c!|;'S(o;'S;=`)]<%lO(oi>jX|W!O`Or(ors&osv(owx'}x!r(o!r!s?V!s;'S(o;'S;=`)]<%lO(oi?^X|W!O`Or(ors&osv(owx'}x!g(o!g!h?y!h;'S(o;'S;=`)]<%lO(oi@QY|W!O`Or?yrs@psv?yvwA[wxBdx!`?y!`!aCr!a;'S?y;'S;=`Db<%lO?ya@uV!O`Ov@pvxA[x!`@p!`!aAy!a;'S@p;'S;=`B^<%lO@pPA_TO!`A[!`!aAn!a;'SA[;'S;=`As<%lOA[PAsOiPPAvP;=`<%lA[aBQSiP!O`Ov&ox;'S&o;'S;=`'Q<%lO&oaBaP;=`<%l@pXBiX|WOrBdrsA[svBdvwA[w!`Bd!`!aCU!a;'SBd;'S;=`Cl<%lOBdXC]TiP|WOr'}sv'}w;'S'};'S;=`(c<%lO'}XCoP;=`<%lBdiC{ViP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiDeP;=`<%l?yiDoZ|W!O`Or(ors&osv(owx'}x!e(o!e!fEb!f#V(o#V#WIr#W;'S(o;'S;=`)]<%lO(oiEiX|W!O`Or(ors&osv(owx'}x!f(o!f!gFU!g;'S(o;'S;=`)]<%lO(oiF]X|W!O`Or(ors&osv(owx'}x!c(o!c!dFx!d;'S(o;'S;=`)]<%lO(oiGPX|W!O`Or(ors&osv(owx'}x!v(o!v!wGl!w;'S(o;'S;=`)]<%lO(oiGsX|W!O`Or(ors&osv(owx'}x!c(o!c!dH`!d;'S(o;'S;=`)]<%lO(oiHgX|W!O`Or(ors&osv(owx'}x!}(o!}#OIS#O;'S(o;'S;=`)]<%lO(oiI]V|W!O`yPOr(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiIyX|W!O`Or(ors&osv(owx'}x#W(o#W#XJf#X;'S(o;'S;=`)]<%lO(oiJmX|W!O`Or(ors&osv(owx'}x#T(o#T#UKY#U;'S(o;'S;=`)]<%lO(oiKaX|W!O`Or(ors&osv(owx'}x#h(o#h#iK|#i;'S(o;'S;=`)]<%lO(oiLTX|W!O`Or(ors&osv(owx'}x#T(o#T#UH`#U;'S(o;'S;=`)]<%lO(oiLwX|W!O`Or(ors&osv(owx'}x#c(o#c#dMd#d;'S(o;'S;=`)]<%lO(oiMkX|W!O`Or(ors&osv(owx'}x#V(o#V#WNW#W;'S(o;'S;=`)]<%lO(oiN_X|W!O`Or(ors&osv(owx'}x#h(o#h#iNz#i;'S(o;'S;=`)]<%lO(oi! RX|W!O`Or(ors&osv(owx'}x#m(o#m#n! n#n;'S(o;'S;=`)]<%lO(oi! uX|W!O`Or(ors&osv(owx'}x#d(o#d#e!!b#e;'S(o;'S;=`)]<%lO(oi!!iX|W!O`Or(ors&osv(owx'}x#X(o#X#Y?y#Y;'S(o;'S;=`)]<%lO(oi!#_V!SP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(ok!$PXaQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qo!$wX[UVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!%mZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!&`!a;'S$q;'S;=`)c<%lO$qk!&kX!RQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!'aZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_#P$q#P#Q!(S#Q;'S$q;'S;=`)c<%lO$qk!(]ZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!)O!a;'S$q;'S;=`)c<%lO$qk!)ZXxQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$q",tokenizers:[j,N,P,F,0,1,2,3,4],topRules:{Document:[0,6]},tokenPrec:0});function R(e,t){let n=t&&t.getChild(`TagName`);return n?e.sliceString(n.from,n.to):``}function z(e,t){let n=t&&t.firstChild;return!n||n.name!=`OpenTag`?``:R(e,n)}function B(e,t,n){let r=t&&t.getChildren(`Attribute`).find(e=>e.from<=n&&e.to>=n),i=r&&r.getChild(`AttributeName`);return i?e.sliceString(i.from,i.to):``}function V(e){for(let t=e&&e.parent;t;t=t.parent)if(t.name==`Element`)return t;return null}function H(e,t){let n=c(e).resolveInner(t,-1),r=null;for(let e=n;!r&&e.parent;e=e.parent)(e.name==`OpenTag`||e.name==`CloseTag`||e.name==`SelfClosingTag`||e.name==`MismatchedCloseTag`)&&(r=e);if(r&&(r.to>t||r.lastChild.type.isError)){let e=r.parent;if(n.name==`TagName`)return r.name==`CloseTag`||r.name==`MismatchedCloseTag`?{type:`closeTag`,from:n.from,context:e}:{type:`openTag`,from:n.from,context:V(e)};if(n.name==`AttributeName`)return{type:`attrName`,from:n.from,context:r};if(n.name==`AttributeValue`)return{type:`attrValue`,from:n.from,context:r};let i=n==r||n.name==`Attribute`?n.childBefore(t):n;return i?.name==`StartTag`?{type:`openTag`,from:t,context:V(e)}:i?.name==`StartCloseTag`&&i.to<=t?{type:`closeTag`,from:t,context:e}:i?.name==`Is`?{type:`attrValue`,from:t,context:r}:i?{type:`attrName`,from:t,context:r}:null}else if(n.name==`StartCloseTag`)return{type:`closeTag`,from:t,context:n.parent};for(;n.parent&&n.to==t&&!n.lastChild?.type.isError;)n=n.parent;return n.name==`Element`||n.name==`Text`||n.name==`Document`?{type:`tag`,from:t,context:n.name==`Element`?n:V(n)}:null}var U=class{constructor(e,t,n){this.attrs=t,this.attrValues=n,this.children=[],this.name=e.name,this.completion=Object.assign(Object.assign({type:`type`},e.completion||{}),{label:this.name}),this.openCompletion=Object.assign(Object.assign({},this.completion),{label:`<`+this.name}),this.closeCompletion=Object.assign(Object.assign({},this.completion),{label:``,boost:2}),this.closeNameCompletion=Object.assign(Object.assign({},this.completion),{label:this.name+`>`}),this.text=e.textContent?e.textContent.map(e=>({label:e,type:`text`})):[]}},W=/^[:\-\.\w\u00b7-\uffff]*$/;function G(e){return Object.assign(Object.assign({type:`property`},e.completion||{}),{label:e.name})}function K(e){return typeof e==`string`?{label:`"${e}"`,type:`constant`}:/^"/.test(e.label)?e:Object.assign(Object.assign({},e),{label:`"${e.label}"`})}function q(e,t){let n=[],r=[],i=Object.create(null);for(let e of t){let t=G(e);n.push(t),e.global&&r.push(t),e.values&&(i[e.name]=e.values.map(K))}let a=[],o=[],s=Object.create(null);for(let t of e){let e=r,c=i;t.attributes&&(e=e.concat(t.attributes.map(e=>typeof e==`string`?n.find(t=>t.label==e)||{label:e,type:`property`}:(e.values&&(c==i&&(c=Object.create(c)),c[e.name]=e.values.map(K)),G(e)))));let l=new U(t,e,c);s[l.name]=l,a.push(l),t.top&&o.push(l)}o.length||(o=a);for(let t=0;t{let{doc:t}=e.state,n=H(e.state,e.pos);if(!n||n.type==`tag`&&!e.explicit)return null;let{type:c,from:l,context:u}=n;if(c==`openTag`){let e=o,n=z(t,u);return n&&(e=s[n]?.children||a),{from:l,options:e.map(e=>e.completion),validFor:W}}else if(c==`closeTag`){let n=z(t,u);return n?{from:l,to:e.pos+ +(t.sliceString(e.pos,e.pos+1)==`>`),options:[s[n]?.closeNameCompletion||{label:n+`>`,type:`type`}],validFor:W}:null}else if(c==`attrName`)return{from:l,options:s[R(t,u)]?.attrs||r,validFor:W};else if(c==`attrValue`){let n=B(t,u,l);if(!n)return null;let r=(s[R(t,u)]?.attrValues||i)[n];return!r||!r.length?null:{from:l,to:e.pos+ +(t.sliceString(e.pos,e.pos+1)==`"`),options:r,validFor:/^"[^"]*"?$/}}else if(c==`tag`){let n=z(t,u),r=s[n],i=[],c=u&&u.lastChild;n&&(!c||c.name!=`CloseTag`||R(t,c)!=n)&&i.push(r?r.closeCompletion:{label:``,type:`type`,boost:2});let d=i.concat((r?.children||(u?a:o)).map(e=>e.openCompletion));if(u&&r?.text.length){let t=u.firstChild;t.to>e.pos-20&&!/\S/.test(e.state.sliceDoc(t.to,e.pos))&&(d=d.concat(r.text))}return{from:l,options:d,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}else return null}}var J=a.define({name:`xml`,parser:L.configure({props:[r.add({Element(e){let t=/^\s*<\//.test(e.textAfter);return e.lineIndent(e.node.from)+(t?0:e.unit)},"OpenTag CloseTag SelfClosingTag"(e){return e.column(e.node.from)+e.unit}}),s.add({Element(e){let t=e.firstChild,n=e.lastChild;return!t||t.name!=`OpenTag`?null:{from:t.to,to:n.name==`CloseTag`?n.from:e.to}}}),i.add({"OpenTag CloseTag":e=>e.getChild(`TagName`)})]}),languageData:{commentTokens:{block:{open:``}},indentOnInput:/^\s*<\/$/}});function Y(e={}){let t=[J.data.of({autocomplete:q(e.elements||[],e.attributes||[])})];return e.autoCloseTags!==!1&&t.push(Z),new o(J,t)}function X(e,t,n=e.length){if(!t)return``;let r=t.firstChild,i=r&&r.getChild(`TagName`);return i?e.sliceString(i.from,Math.min(i.to,n)):``}var Z=n.inputHandler.of((e,t,n,r,i)=>{if(e.composing||e.state.readOnly||t!=n||r!=`>`&&r!=`/`||!J.isActiveAt(e.state,t,-1))return!1;let a=i(),{state:o}=a,s=o.changeByRange(e=>{let{head:t}=e,n=o.doc.sliceString(t-1,t)==r,i=c(o).resolveInner(t,-1),a;if(n&&r==`>`&&i.name==`EndTag`){let n=i.parent;if(n.parent?.lastChild?.name!=`CloseTag`&&(a=X(o.doc,n.parent,t)))return{range:e,changes:{from:t,to:t+ +(o.doc.sliceString(t,t+1)===`>`),insert:``}}}else if(n&&r==`/`&&i.name==`StartCloseTag`){let e=i.parent;if(i.from==t-2&&e.lastChild?.name!=`CloseTag`&&(a=X(o.doc,e,t))){let e=t+ +(o.doc.sliceString(t,t+1)===`>`),n=`${a}>`;return{range:l.cursor(t+n.length,-1),changes:{from:t,to:e,insert:n}}}}return{range:e}});return s.changes.empty?!1:(e.dispatch([a,o.update(s,{userEvent:`input.complete`,scrollIntoView:!0})]),!0)});export{Y as xml}; \ No newline at end of file diff --git a/ksadk/server/static/assets/dist-BVDffZ0U.js b/ksadk/server/static/assets/dist-hRISJdRx.js similarity index 96% rename from ksadk/server/static/assets/dist-BVDffZ0U.js rename to ksadk/server/static/assets/dist-hRISJdRx.js index 4c93ad80..56cc9ebd 100644 --- a/ksadk/server/static/assets/dist-BVDffZ0U.js +++ b/ksadk/server/static/assets/dist-hRISJdRx.js @@ -1 +1 @@ -import{D as e,E as t,_ as n,b as r,p as i,s as a,u as o,v as s}from"./index-8ipRcQ-M.js";import{r as c}from"./dist-C_wsv-Qd.js";var l=t({String:e.string,Number:e.number,"True False":e.bool,PropertyName:e.propertyName,Null:e.null,", :":e.separator,"[ ]":e.squareBracket,"{ }":e.brace}),u=c.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:`#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O`,goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:`⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array`,maxTerm:25,nodeProps:[[`isolate`,-2,6,11,``],[`openedBy`,7,`{`,14,`[`],[`closedBy`,8,`}`,15,`]`]],propSources:[l],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0}),d=a.define({name:`json`,parser:u.configure({props:[r.add({Object:i({except:/^\s*\}/}),Array:i({except:/^\s*\]/})}),s.add({"Object Array":n})]}),languageData:{closeBrackets:{brackets:[`[`,`{`,`"`]},indentOnInput:/^\s*[\}\]]$/}});function f(){return new o(d)}export{f as json}; \ No newline at end of file +import{D as e,E as t,_ as n,b as r,p as i,s as a,u as o,v as s}from"./index-BkDx9KsG.js";import{r as c}from"./dist-DeO3Qj-D.js";var l=t({String:e.string,Number:e.number,"True False":e.bool,PropertyName:e.propertyName,Null:e.null,", :":e.separator,"[ ]":e.squareBracket,"{ }":e.brace}),u=c.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:`#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O`,goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:`⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array`,maxTerm:25,nodeProps:[[`isolate`,-2,6,11,``],[`openedBy`,7,`{`,14,`[`],[`closedBy`,8,`}`,15,`]`]],propSources:[l],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0}),d=a.define({name:`json`,parser:u.configure({props:[r.add({Object:i({except:/^\s*\}/}),Array:i({except:/^\s*\]/})}),s.add({"Object Array":n})]}),languageData:{closeBrackets:{brackets:[`[`,`{`,`"`]},indentOnInput:/^\s*[\}\]]$/}});function f(){return new o(d)}export{f as json}; \ No newline at end of file diff --git a/ksadk/server/static/assets/dist-8hqcx0sU.js b/ksadk/server/static/assets/dist-oPMjOYRU.js similarity index 99% rename from ksadk/server/static/assets/dist-8hqcx0sU.js rename to ksadk/server/static/assets/dist-oPMjOYRU.js index 869b7b11..395f26b7 100644 --- a/ksadk/server/static/assets/dist-8hqcx0sU.js +++ b/ksadk/server/static/assets/dist-oPMjOYRU.js @@ -1 +1 @@ -import{D as e,E as t,_ as n,b as r,g as i,h as a,p as o,s,u as c,v as l}from"./index-8ipRcQ-M.js";import{r as u}from"./dist-C_wsv-Qd.js";var d=t({null:e.null,instanceof:e.operatorKeyword,this:e.self,"new super assert open to with void":e.keyword,"class interface extends implements enum var":e.definitionKeyword,"module package import":e.moduleKeyword,"switch while for if else case default do break continue return try catch finally throw":e.controlKeyword,"requires exports opens uses provides public private protected static transitive abstract final strictfp synchronized native transient volatile throws":e.modifier,IntegerLiteral:e.integer,FloatingPointLiteral:e.float,"StringLiteral TextBlock":e.string,CharacterLiteral:e.character,LineComment:e.lineComment,BlockComment:e.blockComment,BooleanLiteral:e.bool,PrimitiveType:e.standard(e.typeName),TypeName:e.typeName,Identifier:e.variableName,"MethodName/Identifier":e.function(e.variableName),Definition:e.definition(e.variableName),ArithOp:e.arithmeticOperator,LogicOp:e.logicOperator,BitOp:e.bitwiseOperator,CompareOp:e.compareOperator,AssignOp:e.definitionOperator,UpdateOp:e.updateOperator,Asterisk:e.punctuation,Label:e.labelName,"( )":e.paren,"[ ]":e.squareBracket,"{ }":e.brace,".":e.derefOperator,", ;":e.separator}),f={__proto__:null,true:34,false:34,null:42,void:46,byte:48,short:48,int:48,long:48,char:48,float:48,double:48,boolean:48,extends:62,super:64,class:76,this:78,new:84,public:100,protected:102,private:104,abstract:106,static:108,final:110,strictfp:112,default:114,synchronized:116,native:118,transient:120,volatile:122,throws:150,implements:160,interface:166,enum:176,instanceof:238,open:267,module:269,requires:274,transitive:276,exports:278,to:280,opens:282,uses:284,provides:286,with:288,package:292,import:296,if:308,else:310,while:314,for:318,var:325,assert:332,switch:336,case:342,do:346,break:350,continue:354,return:358,throw:364,try:368,catch:372,finally:380},p=u.deserialize({version:14,states:"##jQ]QPOOQ$wQPOOO(bQQO'#H^O*iQQO'#CbOOQO'#Cb'#CbO*pQPO'#CaO*xOSO'#CpOOQO'#Hc'#HcOOQO'#Cu'#CuO,eQPO'#D_O-OQQO'#HmOOQO'#Hm'#HmO/gQQO'#HhO/nQQO'#HhOOQO'#Hh'#HhOOQO'#Hg'#HgO1rQPO'#DUO2PQPO'#GnO4wQPO'#D_O5OQPO'#DzO*pQPO'#E[O5qQPO'#E[OOQO'#DV'#DVO7SQQO'#HaO9^QQO'#EeO9eQPO'#EdO9jQPO'#EfOOQO'#Hb'#HbO7jQQO'#HbO:pQQO'#FhO:wQPO'#ExO:|QPO'#E}O:|QPO'#FPOOQO'#Ha'#HaOOQO'#HY'#HYOOQO'#Gh'#GhOOQO'#HX'#HXO<^QPO'#FiOOQO'#HW'#HWOOQO'#Gg'#GgQ]QPOOOOQO'#Hs'#HsOQQPO'#GSO>]QPO'#GUO=kQPO'#GWO:|QPO'#GXO>dQPO'#GZO?QQQO'#HiO?mQQO'#CuO?tQPO'#HxO@SQPO'#D_O@rQPO'#DpO?wQPO'#DqO@|QPO'#HxOA_QPO'#DpOAgQPO'#IROAlQPO'#E`OOQO'#Hr'#HrOOQO'#Gm'#GmQ$wQPOOOAtQPO'#HsOOQO'#H^'#H^OCsQQO,58{OOQO'#H['#H[OOOO'#Gi'#GiOEfOSO,59[OOQO,59[,59[OOQO'#Hi'#HiOFVQPO,59eOGXQPO,59yOOQO-E:f-E:fO*pQPO,58zOG{QPO,58zO*pQPO,5;}OHQQPO'#DQOHVQPO'#DQOOQO'#Gk'#GkOIVQQO,59jOOQO'#Dm'#DmOJqQPO'#HuOJ{QPO'#DlOKZQPO'#HtOKcQPO,5<_OKhQPO,59^OLRQPO'#CxOOQO,59c,59cOLYQPO,59bOLeQQO'#H^ONgQQO'#CbO!!iQPO'#D_O!#nQQO'#HmO!$OQQO,59pO!$VQPO'#DvO!$eQPO'#H|O!$mQPO,5:`O!$rQPO,5:`O!%YQPO,5;nO!%eQPO'#ITO!%pQPO,5;eO!%uQPO,5=YOOQO-E:l-E:lOOQO,5:f,5:fO!']QPO,5:fO!'dQPO,5:vO?tQPO,5<_O*pQPO,5:vO_,5>_O!*sQPO,5:gO!+RQPO,5:qO!+ZQPO,5:lO!+fQPO,5>[O!$VQPO,5>[O!'iQPO,59UO!+qQQO,58zO!+yQQO,5;}O!,RQQO,5gQPO,5gQPO,5<}O!2mQPO,59jO!2zQPO'#HuO!3RQPO,59xO!3WQPO,5>dO?tQPO,59xO!3cQPO,5:[OAlQPO,5:zO!3kQPO'#DrO?wQPO'#DrO!3vQPO'#HyO!4OQPO,5:]O?tQPO,5>dO!(hQPO,5>dOAgQPO,5>mOOQO,5:[,5:[O!$rQPO'#DtOOQO,5>m,5>mO!4TQPO'#EaOOQO,5:z,5:zO!7UQPO,5:zO!(hQPO'#DxOOQO-E:k-E:kOOQO,5:y,5:yO*pQPO,58}O!7ZQPO'#ChOOQO1G.k1G.kOOOO-E:g-E:gOOQO1G.v1G.vO!+qQQO1G.fO*pQPO1G.fO!7eQQO1G1iOOQO,59l,59lO!7mQPO,59lOOQO-E:i-E:iO!7rQPO,5>aO!8ZQPO,5:WO`OOQO1G1y1G1yOOQO1G.x1G.xO!8{QPO'#CyO!9kQPO'#HmO!9uQPO'#CzO!:TQPO'#HlO!:]QPO,59dOOQO1G.|1G.|OLYQPO1G.|O!:sQPO,59eO!;QQQO'#H^O!;cQQO'#CbOOQO,5:b,5:bOhOOQO1G/z1G/zO!oOOQO1G1P1G1POOQO1G0Q1G0QO!=oQPO'#E]OOQO1G0b1G0bO!>`QPO1G1yO!'dQPO1G0bO!*sQPO1G0RO!+RQPO1G0]O!+ZQPO1G0WOOQO1G/]1G/]O!>eQQO1G.pO9eQPO1G0jO*pQPO1G0jOgQPO'#GaOOQO1G2a1G2aO#2zQPO1G2iO#6xQPO,5>gOOQO1G/d1G/dOOQO1G4O1G4OO#7ZQPO1G/dOOQO1G/v1G/vOOQO1G0f1G0fO!7UQPO1G0fOOQO,5:^,5:^O!(hQPO'#DsO#7`QPO,5:^O?wQPO'#GrO#7kQPO,5>eOOQO1G/w1G/wOAgQPO'#H{O#7sQPO1G4OO?tQPO1G4OOOQO1G4X1G4XO!#YQPO'#DvO!!iQPO'#D_OOQO,5:{,5:{O#8OQPO,5:{O#8OQPO,5:{O#8VQQO'#HaO#9hQQO'#HbO#9rQQO'#EbO#9}QPO'#EbO#:VQPO'#IOOOQO,5:d,5:dOOQO1G.i1G.iO#:bQQO'#EeO#:rQQO'#H`O#;SQPO'#FTOOQO'#H`'#H`O#;^QPO'#H`O#;{QPO'#IWO#WOOQO1G/O1G/OOOQO7+$h7+$hOOQO1G/{1G/{O#=cQQO1G/{OOQO1G/}1G/}O#=hQPO1G/{OOQO1G/|1G/|OdQPO,5:wOOQO,5:w,5:wOOQO7+'e7+'eOOQO7+%|7+%|OOQO7+%m7+%mO!KqQPO7+%mO!KvQPO7+%mO!LOQPO7+%mOOQO7+%w7+%wO!LnQPO7+%wOOQO7+%r7+%rO!MmQPO7+%rO!MrQPO7+%rOOQO7+&U7+&UOOQO'#Ee'#EeO9eQPO7+&UO9eQPO,5>[O#?TQPO7+$[OOQO7+&T7+&TOOQO7+&W7+&WO:|QPO'#GlO#?cQPO,5>]OOQO1G/_1G/_O:|QPO7+&lO#?nQQO,59eO#@tQPO,59vOOQO,59v,59vOOQO,5:h,5:hOOQO'#EP'#EPOOQO,5:i,5:iO#@{QPO'#EYOgQPO,5jO#M{QPO,59TO#NSQPO'#IVO#N[QPO,5;oO*pQPO'#G{O#NaQPO,5>rOOQO1G.n1G.nOOQO<Z,5>ZOOQO,5=U,5=UOOQO-E:h-E:hO#NvQPO7+%gOOQO7+%g7+%gOOQO7+%i7+%iOOQO<kO$%tQPO'#EZOOQO1G0_1G0_O$%{QPO1G0_O?tQPO,5:pOOQO-E:s-E:sOOQO1G0Z1G0ZOOQO1G0n1G0nO$&QQQO1G0nOOQO<qOOQO1G1Z1G1ZO$+dQPO'#FUOOQO,5=g,5=gOOQO-E:y-E:yO$+iQPO'#GoO$+vQPO,5>cOOQO1G/u1G/uOOQO<sAN>sO!KqQPOAN>sOOQOAN>xAN>xOOQOAN?[AN?[O9eQPOAN?[OOQO1G0`1G0`O$,_QPO1G0`OOQO,5=b,5=bOOQO-E:t-E:tO$,mQPO,5:uOOQO7+%y7+%yOOQO7+&Y7+&YOOQO1G1`1G1`O$,tQQO1G1`OOQO-E:{-E:{O$,|QQO'#IYO$,wQPO1G1`O$&gQPO1G1`O*pQPO1G1`OOQOAN@]AN@]O$-XQQO<tO$.qQPO7+&zO$.vQQO'#IZOOQOAN@nAN@nO$/RQQOAN@nOOQOAN@jAN@jO$/YQPOAN@jO$/_QQO<uOOQOG26YG26YOOQOG26UG26UOOQO<lOWiXuiX%}iX&PiX&RiX&_iX~OZ!aX~P?XOu#OO%}TO&P#SO&R#SO~O%}TO~P3gOg^Oh^Ov#pO!u#rO!z#qO&_!hO&t#oO~O&P!cO&R!dO~P@ZOg^Oh^O%}TO&P!cO&R!dO~O}cO!P%aO~OZ%bO~O}%dO!m%gO~O}cOg&gXh&gXv&gX!S&gX!T&gX!U&gX!V&gX!W&gX!X&gX!Y&gX!Z&gX!]&gX!^&gX!_&gX!u&gX!z&gX%}&gX&P&gX&R&gX&_&gX&t&gX~OW%jOZ%kOgTahTa%}Ta&PTa&RTa~OvTa!STa!TTa!UTa!VTa!WTa!XTa!YTa!ZTa!]Ta!^Ta!_Ta!uTa!zTa#yTa#zTa$WTa$hTa&tTa&_TauTaYTaqTa|Ta!PTa~PC[O&W%nO&Y!tO~Ou#OO%}TOqma&^maYma&nma!Pma~O&vma}ma!rma~PEnO!SyO!TyO!UyO!VyO!WyO!XyO!YyO!ZzO!]yO!^yO!_yO~Og!Rah!Rav!Ra!u!Ra!z!Ra$h!Ra&P!Ra&R!Ra&t!Ra&_!Ra~PFdO#z%pO~Os%rO~Ou%sO%}TO~Ou#OO%}ra&Pra&Rra&vraYrawra&nra&qra!Pra&^raqra~OWra#_ra#ara#bra#dra#era#fra#gra#hra#ira#kra#ora#rra&_ra#prasra|ra~PH_Ou#OO%}TOq&iX!P&iX!b&iX~OY&iX#p&iX~PJ`O!b%vOq!`X!P!`XY!`X~Oq%wO!P&hX~O!P%yO~Ov%zO~Og^Oh^O%}0oO&P!wO&RWO&b%}O~O&^&`P~PKmO%}TO&P!wO&RWO~OW&QXYiXY!aXY&QXZ&QXq!aXu&QXwiX!b&QX#]&QX#_&QX#a&QX#b&QX#d&QX#e&QX#f&QX#g&QX#h&QX#i&QX#k&QX#o&QX#r&QX&^&QX&_&QX&niX&n&QX&qiX&viX&v&QX&x!aX~P?XOWUXYUXY!aXY&]XZUXq!aXuUXw&]X!bUX#]UX#_UX#aUX#bUX#dUX#eUX#fUX#gUX#hUX#iUX#kUX#oUX#rUX&^UX&_UX&nUX&n&]X&q&]X&vUX&v&]X&x!aX~P>lOg^Oh^O%}TO&P!wO&RWOg!RXh!RX&P!RX&R!RX~PFdOu#OOw&XO%}TO&P&UO&R&TO&q&WO~OW#XOY&aX&n&aX&v&aX~P!#YOY&ZO~P9oOg^Oh^O&P!wO&RWO~Oq&]OY&pX~OY&_O~Og^Oh^O%}TO&P!wO&RWOY&pP~PFdOY&dO&n&bO&v#vO~Oq&eO&x$ZOY&wX~OY&gO~O%}TOg%bah%bav%ba!S%ba!T%ba!U%ba!V%ba!W%ba!X%ba!Y%ba!Z%ba!]%ba!^%ba!_%ba!u%ba!z%ba$h%ba&P%ba&R%ba&t%ba&_%ba~O|&hO~P]O}&iO~Op&uOw&vO&PSO&R!qO&_#YO~Oz&tO~P!'iOz&xO&PSO&R!qO&_#YO~OY&eP~P:|Og^Oh^O%}TO&P!wO&RWO~O}cO~P:|OW#XOu#OO%}TO&v&aX~O#r$WO!P#sa#_#sa#a#sa#b#sa#d#sa#e#sa#f#sa#g#sa#h#sa#i#sa#k#sa#o#sa&^#sa&_#sa&n#saY#sa#p#sas#saq#sa|#sa~Oo'_O}'^O!r'`O&_!hO~O}'eO!r'`O~Oo'iO}'hO&_!hO~OZ#xOu'mO%}TO~OW%jO}'sO~OW%jO!P'uO~OW'vO!P'wO~O$h!WO&P0qO&R0pO!P&eP~P/uO!P(SO#p(TO~P9oO}(UO~O$c(WO~O!P(XO~O!P(YO~O!P(ZO~P9oO!P(]O~P9oOZ$lO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%}TO&P(_O&R(^O&XUO~PFdO%Q(hO%U(iOZ$}a_$}a`$}aa$}ab$}ac$}ae$}ag$}ah$}ap$}av$}aw$}az$}a}$}a!P$}a!S$}a!T$}a!U$}a!V$}a!W$}a!X$}a!Y$}a!Z$}a![$}a!]$}a!^$}a!_$}a!u$}a!z$}a#f$}a#r$}a#t$}a#u$}a#y$}a#z$}a$W$}a$Y$}a$`$}a$c$}a$e$}a$h$}a$l$}a$n$}a$s$}a$u$}a$w$}a$y$}a$|$}a%O$}a%w$}a%}$}a&P$}a&R$}a&X$}a&t$}a|$}a$a$}a$q$}a~O}ra!rra'Ora~PH_OZ%bO~PJ`O!P(mO~O!m%gO}&la!P&la~O}cO!P(pO~Oo(tOq!fX&^!fX~Oq(vO&^&mX~O&^(xO~OZ`O_VO`VOaVObVOcVOeVOg^Oh^Op)UOv{Ow)TOz!OO|)PO}cO!PvO![!`O!u}O!z|O#fpO#roO#tpO#upO#y!RO#z!QO$W!SO$Y!TO$`!UO$c!VO$e!XO$h!WO$l!YO$n!ZO$s![O$u!]O$w!^O$y!_O$|!aO%O!bO%}TO&PRO&RQO&XUO&_#YO&tdO~PFdO}%dO~O})]OY&zP~P:|OW%jO!P)dO~Os)eO~Ou#OO%}TOq&ia!P&ia!b&iaY&ia#p&ia~O})fO~P:|Oq%wO!P&ha~Og^Oh^O%}0oO&P!wO&RWO~O&b)mO~P!8jOu#OO%}TOq&aX&^&aXY&aX&n&aX!P&aX~O}&aX!r&aX~P!9SOo)oOp)oOqnX&^nX~Oq)pO&^&`X~O&^)rO~Ou#OOw)tO%}TO&PSO&R!qO~OYma&nma&vma~P!:bOW&QXY!aXq!aXu!aX%}!aX~OWUXY!aXq!aXu!aX%}!aX~OW)wO~Ou#OO%}TO&P#SO&R#SO&q)yO~Og^Oh^O%}TO&P!wO&RWO~PFdOq&]OY&pa~Ou#OO%}TO&P#SO&R#SO&q&WO~OY)|O~OY*PO&n&bO~Oq&eOY&wa~Og^Oh^Ov{O|*XO!u}O%}TO&P!wO&RWO&tdO~PFdO!P*YO~OW^iZ#XXu^i!P^i!b^i#]^i#_^i#a^i#b^i#d^i#e^i#f^i#g^i#h^i#i^i#k^i#o^i#r^i&^^i&_^i&n^i&v^iY^i#p^is^iq^i|^i~OW*iO~Os*jO~P9oOz*kO&PSO&R!qO~O!P]iY]i#p]is]iq]i|]i~P9oOq*lOY&eX!P&eX~P9oOY*nO~O#f$SO#g$TO#k$YO#r$WO!P#^i#_#^i#a#^i#b#^i#d#^i#e#^i#o#^i&^#^i&_#^i&n#^iY#^i#p#^is#^iq#^i|#^i~O#h$UO#i$UO~P!AmO#_#|O#d$QO#e$RO#f$SO#g$TO#h$UO#i$UO#k$YO#r$WO&^#zO&_#zO&n#{O!P#^i#b#^i#o#^iY#^i#p#^is#^iq#^i|#^i~O#a#^i~P!CUO#a#}O~P!CUO#_#|O#f$SO#g$TO#h$UO#i$UO#k$YO#r$WO&^#zO&_#zO!P#^i#a#^i#b#^i#d#^i#e#^i#o#^iY#^i#p#^is#^iq#^i|#^i~O&n#^i~P!DtO&n#{O~P!DtO#f$SO#g$TO#k$YO#r$WO!P#^i#a#^i#b#^i#e#^i#o#^iY#^i#p#^is#^iq#^i|#^i~O#_#|O#d$QO#h$UO#i$UO&^#zO&_#zO&n#{O~P!FdO#k$YO#r$WO!P#^i#_#^i#a#^i#b#^i#d#^i#e#^i#f#^i#h#^i#i#^i#o#^i&^#^i&_#^i&n#^iY#^i#p#^is#^iq#^i|#^i~O#g$TO~P!G{O#g#^i~P!G{O#h#^i#i#^i~P!AmO#p*oO~P9oO#_&aX#a&aX#b&aX#d&aX#e&aX#f&aX#g&aX#h&aX#i&aX#k&aX#o&aX#r&aX&_&aX#p&aXs&aX|&aX~P!9SO!P#liY#li#p#lis#liq#li|#li~P9oO|*rO~P$wO}'^O~O}'^O!r'`O~Oo'_O}'^O!r'`O~O%}TO&P#SO&R#SO|&sP!P&sP~PFdO}'eO~Og^Oh^Ov{O|+PO!P*}O!u}O!z|O%}TO&P!wO&RWO&_!hO&tdO~PFdO}'hO~Oo'iO}'hO~Os+RO~P:|Ou+TO%}TO~Ou'mO})fO%}TOW#Zi!P#Zi#_#Zi#a#Zi#b#Zi#d#Zi#e#Zi#f#Zi#g#Zi#h#Zi#i#Zi#k#Zi#o#Zi#r#Zi&^#Zi&_#Zi&n#Zi&v#ZiY#Zi#p#Zis#Ziq#Zi|#Zi~O}'^OW&diu&di!P&di#_&di#a&di#b&di#d&di#e&di#f&di#g&di#h&di#i&di#k&di#o&di#r&di&^&di&_&di&n&di&v&diY&di#p&dis&diq&di|&di~O#}+]O$P+^O$R+^O$S+_O$T+`O~O|+[O~P##nO$Z+aO&PSO&R!qO~OW+bO!P+cO~O$a+dOZ$_i_$_i`$_ia$_ib$_ic$_ie$_ig$_ih$_ip$_iv$_iw$_iz$_i}$_i!P$_i!S$_i!T$_i!U$_i!V$_i!W$_i!X$_i!Y$_i!Z$_i![$_i!]$_i!^$_i!_$_i!u$_i!z$_i#f$_i#r$_i#t$_i#u$_i#y$_i#z$_i$W$_i$Y$_i$`$_i$c$_i$e$_i$h$_i$l$_i$n$_i$s$_i$u$_i$w$_i$y$_i$|$_i%O$_i%w$_i%}$_i&P$_i&R$_i&X$_i&t$_i|$_i$q$_i~Og^Oh^O$h#sO&P!wO&RWO~O!P+hO~P:|O!P+iO~OZ`O_VO`VOaVObVOcVOeVOg^Oh^Op!POv{OwkOz!OO}cO!PvO!SyO!TyO!UyO!VyO!WyO!XyO!YyO!Z+nO![!`O!]yO!^yO!_yO!u}O!z|O#fpO#roO#tpO#upO#y!RO#z!QO$W!SO$Y!TO$`!UO$c!VO$e!XO$h!WO$l!YO$n!ZO$q+oO$s![O$u!]O$w!^O$y!_O$|!aO%O!bO%}TO&PRO&RQO&XUO&tdO~O|+mO~P#)QOW&QXY&QXZ&QXu&QX!P&QX&viX&v&QX~P?XOWUXYUXZUXuUX!PUX&vUX&v&]X~P>lOW#tOu#uO&v#vO~OW&UXY%XXu&UX!P%XX&v&UX~OZ#XX~P#.VOY+uO!P+sO~O%Q(hO%U(iOZ$}i_$}i`$}ia$}ib$}ic$}ie$}ig$}ih$}ip$}iv$}iw$}iz$}i}$}i!P$}i!S$}i!T$}i!U$}i!V$}i!W$}i!X$}i!Y$}i!Z$}i![$}i!]$}i!^$}i!_$}i!u$}i!z$}i#f$}i#r$}i#t$}i#u$}i#y$}i#z$}i$W$}i$Y$}i$`$}i$c$}i$e$}i$h$}i$l$}i$n$}i$s$}i$u$}i$w$}i$y$}i$|$}i%O$}i%w$}i%}$}i&P$}i&R$}i&X$}i&t$}i|$}i$a$}i$q$}i~OZ+xO~O%Q(hO%U(iOZ%Vi_%Vi`%Via%Vib%Vic%Vie%Vig%Vih%Vip%Viv%Viw%Viz%Vi}%Vi!P%Vi!S%Vi!T%Vi!U%Vi!V%Vi!W%Vi!X%Vi!Y%Vi!Z%Vi![%Vi!]%Vi!^%Vi!_%Vi!u%Vi!z%Vi#f%Vi#r%Vi#t%Vi#u%Vi#y%Vi#z%Vi$W%Vi$Y%Vi$`%Vi$c%Vi$e%Vi$h%Vi$l%Vi$n%Vi$s%Vi$u%Vi$w%Vi$y%Vi$|%Vi%O%Vi%w%Vi%}%Vi&P%Vi&R%Vi&X%Vi&t%Vi|%Vi$a%Vi$q%Vi~Ou#OO%}TO}&oa!P&oa!m&oa~O!P,OO~Oo(tOq!fa&^!fa~Oq(vO&^&ma~O!m%gO}&li!P&li~O|,XO~P]OW,ZO~P5xOW&UXu&UX#_&UX#a&UX#b&UX#d&UX#e&UX#f&UX#g&UX#h&UX#i&UX#k&UX#o&UX#r&UX&^&UX&_&UX&n&UX&v&UX~OZ#xO!P&UX~P#8^OW$gOZ#xO&v#vO~Op,]Ow,]O~Oq,^O}&rX!P&rX~O!b,`O#]#wOY&UXZ#XX~P#8^OY&SXq&SX|&SX!P&SX~P9oO})]O|&yP~P:|OY&SXg%[Xh%[X%}%[X&P%[X&R%[Xq&SX|&SX!P&SX~Oq,cOY&zX~OY,eO~O})fO|&kP~P:|Oq&jX!P&jX|&jXY&jX~P9oO&bTa~PC[Oo)oOp)oOqna&^na~Oq)pO&^&`a~OW,mO~Ow,nO~Ou#OO%}TO&P,rO&R,qO~Og^Oh^Ov#pO!u#rO&P!wO&RWO&t#oO~Og^Oh^Ov{O|,wO!u}O%}TO&P!wO&RWO&tdO~PFdOw-SO&PSO&R!qO&_#YO~Oq*lOY&ea!P&ea~O#_ma#ama#bma#dma#ema#fma#gma#hma#ima#kma#oma#rma&_ma#pmasma|ma~PEnO|-WO~P$wOZ#xO}'^Oq!|X|!|X!P!|X~Oq-[O|&sX!P&sX~O|-_O!P-^O~O&_!hO~P5VOg^Oh^Ov{O|-cO!P*}O!u}O!z|O%}TO&P!wO&RWO&_!hO&tdO~PFdOs-dO~P9oOs-dO~P:|O}'^OW&dqu&dq!P&dq#_&dq#a&dq#b&dq#d&dq#e&dq#f&dq#g&dq#h&dq#i&dq#k&dq#o&dq#r&dq&^&dq&_&dq&n&dq&v&dqY&dq#p&dqs&dqq&dq|&dq~O|-hO~P##nO!W-lO$O-lO&PSO&R!qO~O!P-oO~O$Z-pO&PSO&R!qO~O!b%vO#p-rOq!`X!P!`X~O!P-tO~P9oO!P-tO~P:|O!P-wO~P9oO|-yO~P#)QO![$aO#p-zO~O!P-|O~O!b-}O~OY.QOZ$lO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%}TO&P(_O&R(^O&XUO~PFdOY.QO!P.RO~O%Q(hO%U(iOZ%Vq_%Vq`%Vqa%Vqb%Vqc%Vqe%Vqg%Vqh%Vqp%Vqv%Vqw%Vqz%Vq}%Vq!P%Vq!S%Vq!T%Vq!U%Vq!V%Vq!W%Vq!X%Vq!Y%Vq!Z%Vq![%Vq!]%Vq!^%Vq!_%Vq!u%Vq!z%Vq#f%Vq#r%Vq#t%Vq#u%Vq#y%Vq#z%Vq$W%Vq$Y%Vq$`%Vq$c%Vq$e%Vq$h%Vq$l%Vq$n%Vq$s%Vq$u%Vq$w%Vq$y%Vq$|%Vq%O%Vq%w%Vq%}%Vq&P%Vq&R%Vq&X%Vq&t%Vq|%Vq$a%Vq$q%Vq~Ou#OO%}TO}&oi!P&oi!m&oi~O&n&bOq!ga&^!ga~O!m%gO}&lq!P&lq~O|.^O~P]Op.`Ow&vOz&tO&PSO&R!qO&_#YO~O!P.aO~Oq,^O}&ra!P&ra~O})]O~P:|Oq.gO|&yX~O|.iO~Oq,cOY&za~Oq.mO|&kX~O|.oO~Ow.pO~Oq!aXu!aX!P!aX!b!aX%}!aX~OZ&QX~P#N{OZUX~P#N{O!P.qO~OZ.rO~OW^yZ#XXu^y!P^y!b^y#]^y#_^y#a^y#b^y#d^y#e^y#f^y#g^y#h^y#i^y#k^y#o^y#r^y&^^y&_^y&n^y&v^yY^y#p^ys^yq^y|^y~OY%`aq%`a!P%`a~P9oO!P#nyY#ny#p#nys#nyq#ny|#ny~P9oO}'^Oq!|a|!|a!P!|a~OZ#xO}'^Oq!|a|!|a!P!|a~O%}TO&P#SO&R#SOq%jX|%jX!P%jX~PFdOq-[O|&sa!P&sa~O|!}X~P$wO|/PO~Os/QO~P9oOW%jO!P/RO~OW%jO$Q/WO&PSO&R!qO!P&|P~OW%jO$U/XO~O!P/YO~O!b%vO#p/[Oq!`X!P!`X~OY/^O~O!P/_O~P9oO#p/`O~P9oO!b/bO~OY/cOZ$lO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%}TO&P(_O&R(^O&XUO~PFdOW#[Ou&[X%}&[X&P&[X&R&[X'O&[X~O&_#YO~P$)QOu#OO%}TO'O/eO&P%SX&R%SX~O&n&bOq!gi&^!gi~Op/iO&PSO&R!qO~OW*iOZ#xO~O!P/kO~OY&SXq&SX~P9oO})]Oq%nX|%nX~P:|Oq.gO|&ya~O!b/nO~O})fOq%cX|%cX~P:|Oq.mO|&ka~OY/qO~O!P/rO~OZ/sO~O}'^Oq!|i|!|i!P!|i~O|!}a~P$wOW%jO!P/wO~OW%jOq/xO!P&|X~OY/|O~P9oOY0OO~OY%Xq!P%Xq~P9oO'O/eO&P%Sa&R%Sa~OY0TO~O!P0WO~Ou#OO!P0YO!Z0ZO%}TO~OY0[O~Oq/xO!P&|a~O!P0_O~OW%jOq/xO!P&}X~OY0aO~P9oOY0bO~OY%Xy!P%Xy~P9oOu#OO%}TO&P%ua&R%ua'O%ua~OY0cO~O!P0dO~Ou#OO!P0eO!Z0fO%}TO~OW%jOq%ra!P%ra~Oq/xO!P&}a~O!P0jO~Ou#OO!P0jO!Z0kO%}TO~O!P0lO~O!P0nO~O#p&QXY&QXs&QXq&QX|&QX~P&bO#pUXYUXsUXqUX|UX~P(iO`Q_P#g%y&P&Xc&X~",goto:"#+S'OPPPP'P'd*x.OP'dPP.d.h0PPPPPP1nP3ZPP4v7l:[WP!?[P!Ap!BW!E]3ZPPP!F|!Jm!MaPP#!P#!SP#$`#$f#&V#&f#&n#'p#(Y#)T#)^#)a#)oP#)r#*OP#*V#*^P#*aP#*lP#*o#*r#*u#*y#+PstOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y'urOPXY`acopx!Y![!_!a!e!f!h!i!o!x#P#T#Y#[#_#`#e#i#l#n#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$]$_$e$l$m$n$o$p$q%O%S%V%Z%^%_%b%d%g%k%u%v%{%|&R&S&[&]&`&b&d&i'X'^'_'`'e'h'i'm'n'p'{'|(O(T(U(`(l(t(v({(})O)Q)R)])f)o)p*P*T*W*l*o*p*q*z*{+O+T+d+f+h+i+l+o+r+s+x+},W,Y,^,`,u-[-^-a-r-t-}.R.V.g.m/O/[/_/b/d/n/q0R0X0Z0[0f0h0k0r#xhO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kt!sT!Q!S!T!{!}$k%p+]+^+_+`-k-m/W/X/x0oQ#mdS&Y#`(}Q&l#oU&q#t$g,ZQ&x#vW(b%O+s.R/dU)Y%j'v+bQ)Z%kS)u&S,WU*f&s-R._Q*k&yQ,t*TQ-P*iQ.j,cR.t,uu!sT!Q!S!T!{!}$k%p+]+^+_+`-k-m/W/X/x0oT%l!r)l#{qO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0k#zlO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kX(c%O+s.R/d$TVO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0k$TkO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0k&O[OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s,Y,^,`-^-r-t-}.R.g.m/O/[/_/b/d/n0Z0f0k0rQ&Q#[Q)s&RV.T+x.X/e&O[OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s,Y,^,`-^-r-t-}.R.g.m/O/[/_/b/d/n0Z0f0k0rV.T+x.X/e&O]OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s,Y,^,`-^-r-t-}.R.g.m/O/[/_/b/d/n0Z0f0k0rV.U+x.X/eS#Z[.TS$f!O&tS&s#t$gQ&y#vQ)V%dQ-R*iR._,Z$kZO`copx!Y![!_!a#Y#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$_$l$m$n$o$p$q%O%d%g%k%v&b&d'_'`'i'm(O(T(U(t)Q)R)])f)o)p*P*l*o+T+d+h+i+l+o+s,Y,^,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kQ&O#YR,k)p&P_OPX`ceopx!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s+x,Y,^,`-^-r-t-}.R.X.g.m/O/[/_/b/d/e/n0Z0f0k0r!o#QY!e!x#R#T#`#n$]%R%S%V%^%u%|&S&[&`'X'|(`(l({(}*T*p*z+f+r+},W,u-a.V/q0R0X0[0h$SkO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kQ$m!UQ$n!VQ$s!ZQ$|!`R+p(WQ#yiS'q$e*hQ*e&rQ+X'rS,[)T)UQ-O*gQ-Y*vQ.b,]Q.x-QQ.{-ZQ/j.`Q/u.yR0V/iQ'a$bW*[&m'b'c'dQ+W'qU,x*]*^*_Q-X*vQ-f+XS.u,y,zS.z-Y-ZQ/t.vR/v.{]!mP!o'^*q-^/OreOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!gP!o'^*q-^/OW#b`#e%b&]Q'}$oW(d%O+s.R/dS*U&i*WS*w'e-[S*|'h+OR.X+xh#VY!W!e#n#s%V'|*T*z+f,u-aQ)j%wQ)v&WR,o)y#xnOcopx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0k^!kP!g!o'^*q-^/Ov#TY!W#`#n#s%w&W&[&`'|(`(})y*T+f+r,u.W/hQ#g`Q$b{Q$c|Q$d}W%S!e%V*z-aS%Y!h(vQ%`!iQ&m#pQ&n#qQ&o#rQ(u%ZS(y%^({Q*R&eS*v'e-[R-Z*wU)h%v)f.mR+V'p[!mP!o'^*q-^/OT*}'h+O^!iP!g!o'^*q-^/OQ'd$bQ'l$dQ*_&mQ*d&oV*{'h*|+OQ%[!hR,S(vQ(s%YR,R(u#znO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kQ%c!kS(l%S(yR(|%`T#e`%bU#c`#e%bR)z&]Q%f!lQ(n%UQ(r%XQ,U(zR.],VrvOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!mP!o'^*q-^/OQ%P!bQ%a!jQ%i!pQ'[$ZQ([$|Q(k%QQ(p%WQ+z(iR.Y+yrtOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!mP!o'^*q-^/OS*V&i*WT*}'h+OQ'c$bS*^&m'dR,z*_Q'b$bQ'g$cU*]&m'c'dQ*a&nS,y*^*_R.v,zQ*u'`R+Q'iQ'k$dS*c&o'lR,}*dQ'j$dU*b&o'k'lS,|*c*dR.w,}rtOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!mP!o'^*q-^/OT*}'h+OQ'f$cS*`&n'gR,{*aQ*x'eR.|-[R-`*yQ&j#mR*Z&lT*V&i*WQ%e!lS(q%X%fR,P(rR)R%dWk%O+s.R/d#{lO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0k$SiO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kU&r#t$g,ZS*g&s._Q-Q*iR.y-RT'o$e'p!_#|m#a$r$z$}&w&z&{'O'P'Q'R'S'W'Z)[)g+S+g+j-T-V-e-v-{.e/Z/a/}0Q!]$Pm#a$r$z$}&w&z&{'O'P'R'S'W'Z)[)g+S+g+j-T-V-e-v-{.e/Z/a/}0Q#{nO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0ka)^%k)],`.g/n0Z0f0kQ)`%kR.k,cQ't$hQ)b%oR,f)cT+Y's+ZsvOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YruOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YQ$w!]R$y!^R$p!XrvOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YR(O$oR$q!XR(V$sT+k(U+lX(f%P(g(k+{R+y(hQ.W+xR/h.XQ(j%PQ+w(gQ+|(kR.Z+{R%Q!bQ(e%OV.P+s.R/dQxOQ#lcW$`x#l)Q,YQ)Q%dR,Y)RrXOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Yn!fP!o#e&]&i'^'e'h*W*q+O+x-[-^/Ol!zX!f#P#_#i$[%Z%_%{&R'n'{)O0r!j#PY!e!x#T#`#n$]%S%V%^%u%|&S&[&`'X'|(`(l({(}*T*p*z+f+r+},W,u-a.V/q0R0X0[0hQ#_`Q#ia#d$[op!Y!_!a#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$l%g%k%v&b&d'_'`'i'm(O(T(t)])f)o*P*l*o+T+h+i+o,^,`-r-t-}.g.m/[/_/b/n0Z0f0kS%Z!h(vS%_!i*{S%{#Y)pQ&R#[S'n$e'pY'{$o%O+s.R/dQ)O%bR0r$YQ!uUR%m!uQ)q&OR,l)q^#RY#`$]'X'|(`*px%R!e!x#n%V%^%|&S&[&`({(}*T*z+f+r,W,u-a.V0R[%t#R%R%u+}0X0hS%u#T%SQ+}(lQ0X/qR0h0[Q*m&{R-U*mQ!oPU%h!o*q/OQ*q'^R/O-^!pbOP`cx![!o#e#l$_$m$n$o$p$q%O%b%d&]&i'^'e'h(U)Q)R*W*q+O+d+l+s+x,Y-[-^.R/O/dY!yX!f#_'{)OT#jb!yQ.n,gR/p.nQ%x#VR)k%xQ&c#fS*O&c.[R.[,QQ(w%[R,T(wQ&^#cR){&^Q,_)WR.d,_Q+O'hR-b+OQ-]*xR.}-]Q*W&iR,v*WQ'p$eR+U'pQ&f#gR*S&fQ.h,aR/m.hQ,d)`R.l,dQ+Z'sR-g+ZQ-k+]R/T-kQ/y/US0^/y0`R0`/{Q+l(UR-x+lQ(g%PS+v(g+{R+{(kQ/f.VR0S/fQ+t(eR.S+t`wOcx#l%d)Q)R,YQ$t![Q']$_Q'y$mQ'z$nQ(Q$pQ(R$qS+k(U+lR-q+d'dsOPXY`acopx!Y![!_!a!e!f!h!i!o!x#P#T#Y#[#_#`#e#i#l#n#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$]$_$e$l$m$n$o$p$q%O%S%V%Z%^%_%b%d%g%u%v%{%|&R&S&[&]&`&b&d&i'X'^'_'`'e'h'i'm'n'p'{'|(O(T(U(`(l(t(v({(})O)Q)R)f)o)p*P*T*W*l*o*p*q*z*{+O+T+d+f+h+i+l+o+r+s+x+},W,Y,^,u-[-^-a-r-t-}.R.V.m/O/[/_/b/d/q0R0X0[0h0ra)_%k)],`.g/n0Z0f0kQ!rTQ$h!QQ$i!SQ$j!TQ%o!{Q%q!}Q'x$kQ)c%pQ)l0oS-i+]+_Q-m+^Q-n+`Q/S-kS/U-m/WQ/{/XR0]/x%uSOT`cdopx!Q!S!T!Y![!_!a!{!}#`#l#o#t#u#v#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$g$k$l$m$n$o$p$q%O%d%j%k%p%v&S&d&s&y'm'v(O(T(U(})Q)R)])f*P*T*i*l*o+T+]+^+_+`+b+d+h+i+l+o+s,W,Y,Z,`,c,u-R-k-m-r-t-}.R._.g.m/W/X/[/_/b/d/n/x0Z0f0k0oQ)a%kQ,a)]S.f,`/nQ/l.gQ0g0ZQ0i0fR0m0krmOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YS#a`$lQ$WoQ$^pQ$r!YQ$z!_Q$}!aQ&w#uQ&z#wY&{#x$o+h-t/_Q&}#|Q'O#}Q'P$OQ'Q$PQ'R$QQ'S$RQ'T$SQ'U$TQ'V$UQ'W$VQ'Z$Z^)[%k)].g/n0Z0f0kU)g%v)f.mQ*Q&dQ+S'mQ+g(OQ+j(TQ,p*PQ-T*lQ-V*oQ-e+TQ-v+iQ-{+oQ.e,`Q/Z-rQ/a-}Q/}/[R0Q/b#xgO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kW(a%O+s.R/dR)S%drYOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!eP!o'^*q-^/OW!xX$[%{'{Q#``Q#ne#S$]op!Y!_!a#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$l%k%v&d'm(O(T)])f*P*l*o+T+h+i+o,`-r-t-}.g.m/[/_/b/n0Z0f0kQ%V!gS%^!i*{d%|#Y%g&b'_'`'i(t)o)p,^Q&S#_Q&[#bS&`#e&]Q'X$YQ'|$oW(`%O+s.R/dQ({%_Q(}%bS*T&i*WQ*p0rS*z'h+OQ+f'}Q+r(dQ,W)OQ,u*UQ-a*|S.V+x.XR0R/e&O_OPX`ceopx!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s+x,Y,^,`-^-r-t-}.R.X.g.m/O/[/_/b/d/e/n0Z0f0k0rQ$e!OQ'r$fR*h&t&ZWOPX`ceopx!O!Y![!_!a!g!i!o#Y#[#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&R&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s+x,Y,^,`-^-r-t-}.R.X.g.m/O/[/_/b/d/e/n0Z0f0k0rR&P#Y$QjOcopx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kQ#f`Q&O#YQ'Y$YU)W%g'`'iQ)}&bQ*s'_Q,Q(tQ,j)oQ,k)pR.c,^Q)n%}R,i)m$SfO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kT&p#t,ZQ&|#xQ(P$oQ-u+hQ/]-tR0P/_]!nP!o'^*q-^/O#PaOPX`bcx![!f!o!y#_#e#l$_$m$n$o$p$q%O%b%d&]&i'^'e'h'{(U)O)Q)R*W*q+O+d+l+s+x,Y-[-^.R/O/dU#WY!W'|Q%T!eU&k#n#s+fQ(o%VS,s*T*zT.s,u-aj#UY!W!e#n#s%V%w&W)y*T*z,u-aU&V#`&`(}Q)x&[Q+e'|Q+q(`Q-s+fQ.O+rQ/g.WR0U/hQ)i%vQ,g)fR/o.mR,h)f`!jP!o'^'h*q+O-^/OT%W!g*|R%]!hW%U!e%V*z-aQ(z%^R,V({S#d`%bR&a#eQ)X%gT*t'`'iR*y'e[!lP!o'^*q-^/OR%X!gR#h`R,b)]R)a%kT-j+]-kQ/V-mR/z/WR/z/X",nodeNames:`⚠ LineComment BlockComment Program ModuleDeclaration MarkerAnnotation Identifier ScopedIdentifier . Annotation ) ( AnnotationArgumentList AssignmentExpression FieldAccess IntegerLiteral FloatingPointLiteral BooleanLiteral CharacterLiteral StringLiteral TextBlock null ClassLiteral void PrimitiveType TypeName ScopedTypeName GenericType TypeArguments AnnotatedType Wildcard extends super , ArrayType ] Dimension [ class this ParenthesizedExpression ObjectCreationExpression new ArgumentList } { ClassBody ; FieldDeclaration Modifiers public protected private abstract static final strictfp default synchronized native transient volatile VariableDeclarator Definition AssignOp ArrayInitializer MethodDeclaration TypeParameters TypeParameter TypeBound FormalParameters ReceiverParameter FormalParameter SpreadParameter Throws throws Block ClassDeclaration Superclass SuperInterfaces implements InterfaceTypeList InterfaceDeclaration interface ExtendsInterfaces InterfaceBody ConstantDeclaration EnumDeclaration enum EnumBody EnumConstant EnumBodyDeclarations AnnotationTypeDeclaration AnnotationTypeBody AnnotationTypeElementDeclaration StaticInitializer ConstructorDeclaration ConstructorBody ExplicitConstructorInvocation ArrayAccess MethodInvocation MethodName MethodReference ArrayCreationExpression Dimension AssignOp BinaryExpression CompareOp CompareOp LogicOp LogicOp BitOp BitOp BitOp ArithOp ArithOp ArithOp BitOp InstanceofExpression instanceof LambdaExpression InferredParameters TernaryExpression LogicOp : UpdateExpression UpdateOp UnaryExpression LogicOp BitOp CastExpression ElementValueArrayInitializer ElementValuePair open module ModuleBody ModuleDirective requires transitive exports to opens uses provides with PackageDeclaration package ImportDeclaration import Asterisk ExpressionStatement LabeledStatement Label IfStatement if else WhileStatement while ForStatement for ForSpec LocalVariableDeclaration var EnhancedForStatement ForSpec AssertStatement assert SwitchStatement switch SwitchBlock SwitchLabel case DoStatement do BreakStatement break ContinueStatement continue ReturnStatement return SynchronizedStatement ThrowStatement throw TryStatement try CatchClause catch CatchFormalParameter CatchType FinallyClause finally TryWithResourcesStatement ResourceSpecification Resource ClassContent`,maxTerm:276,nodeProps:[[`isolate`,-4,1,2,18,19,``],[`group`,-26,4,47,76,77,82,87,92,145,147,150,151,153,156,158,161,163,165,167,172,174,176,178,180,181,183,191,`Statement`,-25,6,13,14,15,16,17,18,19,20,21,22,39,40,41,99,100,102,103,106,118,120,122,125,127,130,`Expression`,-7,23,24,25,26,27,29,34,`Type`],[`openedBy`,10,`(`,44,`{`],[`closedBy`,11,`)`,45,`}`]],propSources:[d],skippedNodes:[0,1,2],repeatNodeCount:28,tokenData:"#'f_R!_OX%QXY'fYZ)bZ^'f^p%Qpq'fqr*|rs,^st%Qtu4euv5zvw7[wx8rxyAZyzAwz{Be{|CZ|}Dq}!OE_!O!PFx!P!Q! r!Q!R!,h!R![!0`![!]!>p!]!^!@Q!^!_!@n!_!`!BX!`!a!B{!a!b!Di!b!c!EX!c!}!LT!}#O!Mj#O#P%Q#P#Q!NW#Q#R!Nt#R#S4e#S#T%Q#T#o4e#o#p# h#p#q#!U#q#r##n#r#s#$[#s#y%Q#y#z'f#z$f%Q$f$g'f$g#BY4e#BY#BZ#$x#BZ$IS4e$IS$I_#$x$I_$I|4e$I|$JO#$x$JO$JT4e$JT$JU#$x$JU$KV4e$KV$KW#$x$KW&FU4e&FU&FV#$x&FV;'S4e;'S;=`5t<%lO4eS%VV&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QS%qO&YSS%tVOY&ZYZ%lZr&Zrs&ys;'S&Z;'S;=`'`<%lO&ZS&^VOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QS&vP;=`<%l%QS&|UOY&ZYZ%lZr&Zs;'S&Z;'S;=`'`<%lO&ZS'cP;=`<%l&Z_'mk&YS%yZOX%QXY'fYZ)bZ^'f^p%Qpq'fqr%Qrs%qs#y%Q#y#z'f#z$f%Q$f$g'f$g#BY%Q#BY#BZ'f#BZ$IS%Q$IS$I_'f$I_$I|%Q$I|$JO'f$JO$JT%Q$JT$JU'f$JU$KV%Q$KV$KW'f$KW&FU%Q&FU&FV'f&FV;'S%Q;'S;=`&s<%lO%Q_)iY&YS%yZX^*Xpq*X#y#z*X$f$g*X#BY#BZ*X$IS$I_*X$I|$JO*X$JT$JU*X$KV$KW*X&FU&FV*XZ*^Y%yZX^*Xpq*X#y#z*X$f$g*X#BY#BZ*X$IS$I_*X$I|$JO*X$JT$JU*X$KV$KW*X&FU&FV*XV+TX#tP&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`;'S%Q;'S;=`&s<%lO%QU+wV#_Q&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT,aXOY,|YZ%lZr,|rs3Ys#O,|#O#P2d#P;'S,|;'S;=`3S<%lO,|T-PXOY-lYZ%lZr-lrs.^s#O-l#O#P.x#P;'S-l;'S;=`2|<%lO-lT-qX&YSOY-lYZ%lZr-lrs.^s#O-l#O#P.x#P;'S-l;'S;=`2|<%lO-lT.cVcPOY&ZYZ%lZr&Zrs&ys;'S&Z;'S;=`'`<%lO&ZT.}V&YSOY-lYZ/dZr-lrs1]s;'S-l;'S;=`2|<%lO-lT/iW&YSOY0RZr0Rrs0ns#O0R#O#P0s#P;'S0R;'S;=`1V<%lO0RP0UWOY0RZr0Rrs0ns#O0R#O#P0s#P;'S0R;'S;=`1V<%lO0RP0sOcPP0vTOY0RYZ0RZ;'S0R;'S;=`1V<%lO0RP1YP;=`<%l0RT1`XOY,|YZ%lZr,|rs1{s#O,|#O#P2d#P;'S,|;'S;=`3S<%lO,|T2QUcPOY&ZYZ%lZr&Zs;'S&Z;'S;=`'`<%lO&ZT2gVOY-lYZ/dZr-lrs1]s;'S-l;'S;=`2|<%lO-lT3PP;=`<%l-lT3VP;=`<%l,|T3_VcPOY&ZYZ%lZr&Zrs3ts;'S&Z;'S;=`'`<%lO&ZT3yR&WSXY4SYZ4`pq4SP4VRXY4SYZ4`pq4SP4eO&XP_4lb&YS&PZOY%QYZ%lZr%Qrs%qst%Qtu4eu!Q%Q!Q![4e![!c%Q!c!}4e!}#R%Q#R#S4e#S#T%Q#T#o4e#o$g%Q$g;'S4e;'S;=`5t<%lO4e_5wP;=`<%l4eU6RX#hQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QU6uV#]Q&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV7cZ&nR&YSOY%QYZ%lZr%Qrs%qsv%Qvw8Uw!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QU8]V#aQ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT8wZ&YSOY9jYZ%lZr9jrs:xsw9jwx%Qx#O9j#O#PhYZ%lZr>hrs?dsw>hwx;hx#O>h#O#P&Z#P;'S>h;'S;=`@}<%lO>hT>kZOYhYZ%lZr>hrs@Ysw>hwx;hx#O>h#O#P&Z#P;'S>h;'S;=`@}<%lO>hP@]VOY@YZw@Ywx@rx#O@Y#P;'S@Y;'S;=`@w<%lO@YP@wObPP@zP;=`<%l@YTAQP;=`<%l>hTAWP;=`<%l9j_AbVZZ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVBOVYR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVBnX$ZP&YS#gQOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QVCbZ#fR&YSOY%QYZ%lZr%Qrs%qs{%Q{|DT|!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QVD[V#rR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVDxVqR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVEf[#fR&YSOY%QYZ%lZr%Qrs%qs}%Q}!ODT!O!_%Q!_!`6n!`!aF[!a;'S%Q;'S;=`&s<%lO%QVFcV&xR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_GPZWY&YSOY%QYZ%lZr%Qrs%qs!O%Q!O!PGr!P!Q%Q!Q![IQ![;'S%Q;'S;=`&s<%lO%QVGwX&YSOY%QYZ%lZr%Qrs%qs!O%Q!O!PHd!P;'S%Q;'S;=`&s<%lO%QVHkV&qR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QTIXc&YS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![IQ![!f%Q!f!gJd!g!hKQ!h!iJd!i#R%Q#R#SNz#S#W%Q#W#XJd#X#YKQ#Y#ZJd#Z;'S%Q;'S;=`&s<%lO%QTJkV&YS`POY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QTKV]&YSOY%QYZ%lZr%Qrs%qs{%Q{|LO|}%Q}!OLO!O!Q%Q!Q![Lp![;'S%Q;'S;=`&s<%lO%QTLTX&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lp![;'S%Q;'S;=`&s<%lO%QTLwc&YS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lp![!f%Q!f!gJd!g!h%Q!h!iJd!i#R%Q#R#SNS#S#W%Q#W#XJd#X#Y%Q#Y#ZJd#Z;'S%Q;'S;=`&s<%lO%QTNXZ&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lp![#R%Q#R#SNS#S;'S%Q;'S;=`&s<%lO%QT! PZ&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![IQ![#R%Q#R#SNz#S;'S%Q;'S;=`&s<%lO%Q_! y]&YS#gQOY%QYZ%lZr%Qrs%qsz%Qz{!!r{!P%Q!P!Q!)e!Q!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%Q_!!wX&YSOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{;'S!!r;'S;=`!'s<%lO!!r_!#iT&YSOz!#xz{!$[{;'S!#x;'S;=`!$y<%lO!#xZ!#{TOz!#xz{!$[{;'S!#x;'S;=`!$y<%lO!#xZ!$_VOz!#xz{!$[{!P!#x!P!Q!$t!Q;'S!#x;'S;=`!$y<%lO!#xZ!$yOQZZ!$|P;=`<%l!#x_!%SXOY!%oYZ!#dZr!%ors!'ysz!%oz{!(i{;'S!%o;'S;=`!)_<%lO!%o_!%rXOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{;'S!!r;'S;=`!'s<%lO!!r_!&dZ&YSOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{!P!!r!P!Q!'V!Q;'S!!r;'S;=`!'s<%lO!!r_!'^V&YSQZOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!'vP;=`<%l!!r_!'|XOY!%oYZ!#dZr!%ors!#xsz!%oz{!(i{;'S!%o;'S;=`!)_<%lO!%o_!(lZOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{!P!!r!P!Q!'V!Q;'S!!r;'S;=`!'s<%lO!!r_!)bP;=`<%l!%o_!)lV&YSPZOY!)eYZ%lZr!)ers!*Rs;'S!)e;'S;=`!+X<%lO!)e_!*WVPZOY!*mYZ%lZr!*mrs!+_s;'S!*m;'S;=`!,b<%lO!*m_!*rVPZOY!)eYZ%lZr!)ers!*Rs;'S!)e;'S;=`!+X<%lO!)e_!+[P;=`<%l!)e_!+dVPZOY!*mYZ%lZr!*mrs!+ys;'S!*m;'S;=`!,b<%lO!*mZ!,OSPZOY!+yZ;'S!+y;'S;=`!,[<%lO!+yZ!,_P;=`<%l!+y_!,eP;=`<%l!*mT!,ou&YS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!/S!P!Q%Q!Q![!0`![!d%Q!d!e!3j!e!f%Q!f!gJd!g!hKQ!h!iJd!i!n%Q!n!o!2U!o!q%Q!q!r!5h!r!z%Q!z!{!7`!{#R%Q#R#S!2r#S#U%Q#U#V!3j#V#W%Q#W#XJd#X#YKQ#Y#ZJd#Z#`%Q#`#a!2U#a#c%Q#c#d!5h#d#l%Q#l#m!7`#m;'S%Q;'S;=`&s<%lO%QT!/Za&YS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![IQ![!f%Q!f!gJd!g!hKQ!h!iJd!i#W%Q#W#XJd#X#YKQ#Y#ZJd#Z;'S%Q;'S;=`&s<%lO%QT!0gi&YS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!/S!P!Q%Q!Q![!0`![!f%Q!f!gJd!g!hKQ!h!iJd!i!n%Q!n!o!2U!o#R%Q#R#S!2r#S#W%Q#W#XJd#X#YKQ#Y#ZJd#Z#`%Q#`#a!2U#a;'S%Q;'S;=`&s<%lO%QT!2]V&YS_POY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT!2wZ&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!0`![#R%Q#R#S!2r#S;'S%Q;'S;=`&s<%lO%QT!3oY&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q!R!4_!R!S!4_!S;'S%Q;'S;=`&s<%lO%QT!4f`&YS_POY%QYZ%lZr%Qrs%qs!Q%Q!Q!R!4_!R!S!4_!S!n%Q!n!o!2U!o#R%Q#R#S!3j#S#`%Q#`#a!2U#a;'S%Q;'S;=`&s<%lO%QT!5mX&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q!Y!6Y!Y;'S%Q;'S;=`&s<%lO%QT!6a_&YS_POY%QYZ%lZr%Qrs%qs!Q%Q!Q!Y!6Y!Y!n%Q!n!o!2U!o#R%Q#R#S!5h#S#`%Q#`#a!2U#a;'S%Q;'S;=`&s<%lO%QT!7e_&YSOY%QYZ%lZr%Qrs%qs!O%Q!O!P!8d!P!Q%Q!Q![!:r![!c%Q!c!i!:r!i#T%Q#T#Z!:r#Z;'S%Q;'S;=`&s<%lO%QT!8i]&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!9b![!c%Q!c!i!9b!i#T%Q#T#Z!9b#Z;'S%Q;'S;=`&s<%lO%QT!9gc&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!9b![!c%Q!c!i!9b!i!r%Q!r!sKQ!s#R%Q#R#S!8d#S#T%Q#T#Z!9b#Z#d%Q#d#eKQ#e;'S%Q;'S;=`&s<%lO%QT!:yi&YS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!wX#pR&YSOY%QYZ%lZr%Qrs%qs![%Q![!]!?d!];'S%Q;'S;=`&s<%lO%QV!?kV&vR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV!@XV!PR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!@uY&_Z&YSOY%QYZ%lZr%Qrs%qs!^%Q!^!_!Ae!_!`+p!`;'S%Q;'S;=`&s<%lO%QU!AlX#iQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QV!B`X!bR&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`;'S%Q;'S;=`&s<%lO%QV!CSY&^R&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`!a!Cr!a;'S%Q;'S;=`&s<%lO%QU!CyY#iQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`!a!Ae!a;'S%Q;'S;=`&s<%lO%Q_!DrV&bX#oQ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!E`X%}Z&YSOY%QYZ%lZr%Qrs%qs#]%Q#]#^!E{#^;'S%Q;'S;=`&s<%lO%QV!FQX&YSOY%QYZ%lZr%Qrs%qs#b%Q#b#c!Fm#c;'S%Q;'S;=`&s<%lO%QV!FrX&YSOY%QYZ%lZr%Qrs%qs#h%Q#h#i!G_#i;'S%Q;'S;=`&s<%lO%QV!GdX&YSOY%QYZ%lZr%Qrs%qs#X%Q#X#Y!HP#Y;'S%Q;'S;=`&s<%lO%QV!HUX&YSOY%QYZ%lZr%Qrs%qs#f%Q#f#g!Hq#g;'S%Q;'S;=`&s<%lO%QV!HvX&YSOY%QYZ%lZr%Qrs%qs#Y%Q#Y#Z!Ic#Z;'S%Q;'S;=`&s<%lO%QV!IhX&YSOY%QYZ%lZr%Qrs%qs#T%Q#T#U!JT#U;'S%Q;'S;=`&s<%lO%QV!JYX&YSOY%QYZ%lZr%Qrs%qs#V%Q#V#W!Ju#W;'S%Q;'S;=`&s<%lO%QV!JzX&YSOY%QYZ%lZr%Qrs%qs#X%Q#X#Y!Kg#Y;'S%Q;'S;=`&s<%lO%QV!KnV&tR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!L[b&RZ&YSOY%QYZ%lZr%Qrs%qst%Qtu!LTu!Q%Q!Q![!LT![!c%Q!c!}!LT!}#R%Q#R#S!LT#S#T%Q#T#o!LT#o$g%Q$g;'S!LT;'S;=`!Md<%lO!LT_!MgP;=`<%l!LT_!MqVuZ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV!N_VsR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QU!N{X#eQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QV# oV}R&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_#!_Z'OX#dQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`#p%Q#p#q##Q#q;'S%Q;'S;=`&s<%lO%QU##XV#bQ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV##uV|R&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT#$cV#uP&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_#%Ru&YS%yZ&PZOX%QXY'fYZ)bZ^'f^p%Qpq'fqr%Qrs%qst%Qtu4eu!Q%Q!Q![4e![!c%Q!c!}4e!}#R%Q#R#S4e#S#T%Q#T#o4e#o#y%Q#y#z'f#z$f%Q$f$g'f$g#BY4e#BY#BZ#$x#BZ$IS4e$IS$I_#$x$I_$I|4e$I|$JO#$x$JO$JT4e$JT$JU#$x$JU$KV4e$KV$KW#$x$KW&FU4e&FU&FV#$x&FV;'S4e;'S;=`5t<%lO4e",tokenizers:[0,1,2,3],topRules:{Program:[0,3],ClassContent:[1,194]},dynamicPrecedences:{27:1,232:-1,243:-1},specialized:[{term:231,get:e=>f[e]||-1}],tokenPrec:7144}),m=s.define({name:`java`,parser:p.configure({props:[r.add({IfStatement:o({except:/^\s*({|else\b)/}),TryStatement:o({except:/^\s*({|catch|finally)\b/}),LabeledStatement:i,SwitchBlock:e=>{let t=e.textAfter,n=/^\s*\}/.test(t),r=/^\s*(case|default)\b/.test(t);return e.baseIndent+(n?0:r?1:2)*e.unit},Block:a({closing:`}`}),BlockComment:()=>null,Statement:o({except:/^{/})}),l.add({"Block SwitchBlock ClassBody ElementValueArrayInitializer ModuleBody EnumBody ConstructorBody InterfaceBody ArrayInitializer":n,BlockComment(e){return{from:e.from+2,to:e.to-2}}})]}),languageData:{commentTokens:{line:`//`,block:{open:`/*`,close:`*/`}},indentOnInput:/^\s*(?:case |default:|\{|\})$/}});function h(){return new c(m)}export{h as java}; \ No newline at end of file +import{D as e,E as t,_ as n,b as r,g as i,h as a,p as o,s,u as c,v as l}from"./index-BkDx9KsG.js";import{r as u}from"./dist-DeO3Qj-D.js";var d=t({null:e.null,instanceof:e.operatorKeyword,this:e.self,"new super assert open to with void":e.keyword,"class interface extends implements enum var":e.definitionKeyword,"module package import":e.moduleKeyword,"switch while for if else case default do break continue return try catch finally throw":e.controlKeyword,"requires exports opens uses provides public private protected static transitive abstract final strictfp synchronized native transient volatile throws":e.modifier,IntegerLiteral:e.integer,FloatingPointLiteral:e.float,"StringLiteral TextBlock":e.string,CharacterLiteral:e.character,LineComment:e.lineComment,BlockComment:e.blockComment,BooleanLiteral:e.bool,PrimitiveType:e.standard(e.typeName),TypeName:e.typeName,Identifier:e.variableName,"MethodName/Identifier":e.function(e.variableName),Definition:e.definition(e.variableName),ArithOp:e.arithmeticOperator,LogicOp:e.logicOperator,BitOp:e.bitwiseOperator,CompareOp:e.compareOperator,AssignOp:e.definitionOperator,UpdateOp:e.updateOperator,Asterisk:e.punctuation,Label:e.labelName,"( )":e.paren,"[ ]":e.squareBracket,"{ }":e.brace,".":e.derefOperator,", ;":e.separator}),f={__proto__:null,true:34,false:34,null:42,void:46,byte:48,short:48,int:48,long:48,char:48,float:48,double:48,boolean:48,extends:62,super:64,class:76,this:78,new:84,public:100,protected:102,private:104,abstract:106,static:108,final:110,strictfp:112,default:114,synchronized:116,native:118,transient:120,volatile:122,throws:150,implements:160,interface:166,enum:176,instanceof:238,open:267,module:269,requires:274,transitive:276,exports:278,to:280,opens:282,uses:284,provides:286,with:288,package:292,import:296,if:308,else:310,while:314,for:318,var:325,assert:332,switch:336,case:342,do:346,break:350,continue:354,return:358,throw:364,try:368,catch:372,finally:380},p=u.deserialize({version:14,states:"##jQ]QPOOQ$wQPOOO(bQQO'#H^O*iQQO'#CbOOQO'#Cb'#CbO*pQPO'#CaO*xOSO'#CpOOQO'#Hc'#HcOOQO'#Cu'#CuO,eQPO'#D_O-OQQO'#HmOOQO'#Hm'#HmO/gQQO'#HhO/nQQO'#HhOOQO'#Hh'#HhOOQO'#Hg'#HgO1rQPO'#DUO2PQPO'#GnO4wQPO'#D_O5OQPO'#DzO*pQPO'#E[O5qQPO'#E[OOQO'#DV'#DVO7SQQO'#HaO9^QQO'#EeO9eQPO'#EdO9jQPO'#EfOOQO'#Hb'#HbO7jQQO'#HbO:pQQO'#FhO:wQPO'#ExO:|QPO'#E}O:|QPO'#FPOOQO'#Ha'#HaOOQO'#HY'#HYOOQO'#Gh'#GhOOQO'#HX'#HXO<^QPO'#FiOOQO'#HW'#HWOOQO'#Gg'#GgQ]QPOOOOQO'#Hs'#HsOQQPO'#GSO>]QPO'#GUO=kQPO'#GWO:|QPO'#GXO>dQPO'#GZO?QQQO'#HiO?mQQO'#CuO?tQPO'#HxO@SQPO'#D_O@rQPO'#DpO?wQPO'#DqO@|QPO'#HxOA_QPO'#DpOAgQPO'#IROAlQPO'#E`OOQO'#Hr'#HrOOQO'#Gm'#GmQ$wQPOOOAtQPO'#HsOOQO'#H^'#H^OCsQQO,58{OOQO'#H['#H[OOOO'#Gi'#GiOEfOSO,59[OOQO,59[,59[OOQO'#Hi'#HiOFVQPO,59eOGXQPO,59yOOQO-E:f-E:fO*pQPO,58zOG{QPO,58zO*pQPO,5;}OHQQPO'#DQOHVQPO'#DQOOQO'#Gk'#GkOIVQQO,59jOOQO'#Dm'#DmOJqQPO'#HuOJ{QPO'#DlOKZQPO'#HtOKcQPO,5<_OKhQPO,59^OLRQPO'#CxOOQO,59c,59cOLYQPO,59bOLeQQO'#H^ONgQQO'#CbO!!iQPO'#D_O!#nQQO'#HmO!$OQQO,59pO!$VQPO'#DvO!$eQPO'#H|O!$mQPO,5:`O!$rQPO,5:`O!%YQPO,5;nO!%eQPO'#ITO!%pQPO,5;eO!%uQPO,5=YOOQO-E:l-E:lOOQO,5:f,5:fO!']QPO,5:fO!'dQPO,5:vO?tQPO,5<_O*pQPO,5:vO_,5>_O!*sQPO,5:gO!+RQPO,5:qO!+ZQPO,5:lO!+fQPO,5>[O!$VQPO,5>[O!'iQPO,59UO!+qQQO,58zO!+yQQO,5;}O!,RQQO,5gQPO,5gQPO,5<}O!2mQPO,59jO!2zQPO'#HuO!3RQPO,59xO!3WQPO,5>dO?tQPO,59xO!3cQPO,5:[OAlQPO,5:zO!3kQPO'#DrO?wQPO'#DrO!3vQPO'#HyO!4OQPO,5:]O?tQPO,5>dO!(hQPO,5>dOAgQPO,5>mOOQO,5:[,5:[O!$rQPO'#DtOOQO,5>m,5>mO!4TQPO'#EaOOQO,5:z,5:zO!7UQPO,5:zO!(hQPO'#DxOOQO-E:k-E:kOOQO,5:y,5:yO*pQPO,58}O!7ZQPO'#ChOOQO1G.k1G.kOOOO-E:g-E:gOOQO1G.v1G.vO!+qQQO1G.fO*pQPO1G.fO!7eQQO1G1iOOQO,59l,59lO!7mQPO,59lOOQO-E:i-E:iO!7rQPO,5>aO!8ZQPO,5:WO`OOQO1G1y1G1yOOQO1G.x1G.xO!8{QPO'#CyO!9kQPO'#HmO!9uQPO'#CzO!:TQPO'#HlO!:]QPO,59dOOQO1G.|1G.|OLYQPO1G.|O!:sQPO,59eO!;QQQO'#H^O!;cQQO'#CbOOQO,5:b,5:bOhOOQO1G/z1G/zO!oOOQO1G1P1G1POOQO1G0Q1G0QO!=oQPO'#E]OOQO1G0b1G0bO!>`QPO1G1yO!'dQPO1G0bO!*sQPO1G0RO!+RQPO1G0]O!+ZQPO1G0WOOQO1G/]1G/]O!>eQQO1G.pO9eQPO1G0jO*pQPO1G0jOgQPO'#GaOOQO1G2a1G2aO#2zQPO1G2iO#6xQPO,5>gOOQO1G/d1G/dOOQO1G4O1G4OO#7ZQPO1G/dOOQO1G/v1G/vOOQO1G0f1G0fO!7UQPO1G0fOOQO,5:^,5:^O!(hQPO'#DsO#7`QPO,5:^O?wQPO'#GrO#7kQPO,5>eOOQO1G/w1G/wOAgQPO'#H{O#7sQPO1G4OO?tQPO1G4OOOQO1G4X1G4XO!#YQPO'#DvO!!iQPO'#D_OOQO,5:{,5:{O#8OQPO,5:{O#8OQPO,5:{O#8VQQO'#HaO#9hQQO'#HbO#9rQQO'#EbO#9}QPO'#EbO#:VQPO'#IOOOQO,5:d,5:dOOQO1G.i1G.iO#:bQQO'#EeO#:rQQO'#H`O#;SQPO'#FTOOQO'#H`'#H`O#;^QPO'#H`O#;{QPO'#IWO#WOOQO1G/O1G/OOOQO7+$h7+$hOOQO1G/{1G/{O#=cQQO1G/{OOQO1G/}1G/}O#=hQPO1G/{OOQO1G/|1G/|OdQPO,5:wOOQO,5:w,5:wOOQO7+'e7+'eOOQO7+%|7+%|OOQO7+%m7+%mO!KqQPO7+%mO!KvQPO7+%mO!LOQPO7+%mOOQO7+%w7+%wO!LnQPO7+%wOOQO7+%r7+%rO!MmQPO7+%rO!MrQPO7+%rOOQO7+&U7+&UOOQO'#Ee'#EeO9eQPO7+&UO9eQPO,5>[O#?TQPO7+$[OOQO7+&T7+&TOOQO7+&W7+&WO:|QPO'#GlO#?cQPO,5>]OOQO1G/_1G/_O:|QPO7+&lO#?nQQO,59eO#@tQPO,59vOOQO,59v,59vOOQO,5:h,5:hOOQO'#EP'#EPOOQO,5:i,5:iO#@{QPO'#EYOgQPO,5jO#M{QPO,59TO#NSQPO'#IVO#N[QPO,5;oO*pQPO'#G{O#NaQPO,5>rOOQO1G.n1G.nOOQO<Z,5>ZOOQO,5=U,5=UOOQO-E:h-E:hO#NvQPO7+%gOOQO7+%g7+%gOOQO7+%i7+%iOOQO<kO$%tQPO'#EZOOQO1G0_1G0_O$%{QPO1G0_O?tQPO,5:pOOQO-E:s-E:sOOQO1G0Z1G0ZOOQO1G0n1G0nO$&QQQO1G0nOOQO<qOOQO1G1Z1G1ZO$+dQPO'#FUOOQO,5=g,5=gOOQO-E:y-E:yO$+iQPO'#GoO$+vQPO,5>cOOQO1G/u1G/uOOQO<sAN>sO!KqQPOAN>sOOQOAN>xAN>xOOQOAN?[AN?[O9eQPOAN?[OOQO1G0`1G0`O$,_QPO1G0`OOQO,5=b,5=bOOQO-E:t-E:tO$,mQPO,5:uOOQO7+%y7+%yOOQO7+&Y7+&YOOQO1G1`1G1`O$,tQQO1G1`OOQO-E:{-E:{O$,|QQO'#IYO$,wQPO1G1`O$&gQPO1G1`O*pQPO1G1`OOQOAN@]AN@]O$-XQQO<tO$.qQPO7+&zO$.vQQO'#IZOOQOAN@nAN@nO$/RQQOAN@nOOQOAN@jAN@jO$/YQPOAN@jO$/_QQO<uOOQOG26YG26YOOQOG26UG26UOOQO<lOWiXuiX%}iX&PiX&RiX&_iX~OZ!aX~P?XOu#OO%}TO&P#SO&R#SO~O%}TO~P3gOg^Oh^Ov#pO!u#rO!z#qO&_!hO&t#oO~O&P!cO&R!dO~P@ZOg^Oh^O%}TO&P!cO&R!dO~O}cO!P%aO~OZ%bO~O}%dO!m%gO~O}cOg&gXh&gXv&gX!S&gX!T&gX!U&gX!V&gX!W&gX!X&gX!Y&gX!Z&gX!]&gX!^&gX!_&gX!u&gX!z&gX%}&gX&P&gX&R&gX&_&gX&t&gX~OW%jOZ%kOgTahTa%}Ta&PTa&RTa~OvTa!STa!TTa!UTa!VTa!WTa!XTa!YTa!ZTa!]Ta!^Ta!_Ta!uTa!zTa#yTa#zTa$WTa$hTa&tTa&_TauTaYTaqTa|Ta!PTa~PC[O&W%nO&Y!tO~Ou#OO%}TOqma&^maYma&nma!Pma~O&vma}ma!rma~PEnO!SyO!TyO!UyO!VyO!WyO!XyO!YyO!ZzO!]yO!^yO!_yO~Og!Rah!Rav!Ra!u!Ra!z!Ra$h!Ra&P!Ra&R!Ra&t!Ra&_!Ra~PFdO#z%pO~Os%rO~Ou%sO%}TO~Ou#OO%}ra&Pra&Rra&vraYrawra&nra&qra!Pra&^raqra~OWra#_ra#ara#bra#dra#era#fra#gra#hra#ira#kra#ora#rra&_ra#prasra|ra~PH_Ou#OO%}TOq&iX!P&iX!b&iX~OY&iX#p&iX~PJ`O!b%vOq!`X!P!`XY!`X~Oq%wO!P&hX~O!P%yO~Ov%zO~Og^Oh^O%}0oO&P!wO&RWO&b%}O~O&^&`P~PKmO%}TO&P!wO&RWO~OW&QXYiXY!aXY&QXZ&QXq!aXu&QXwiX!b&QX#]&QX#_&QX#a&QX#b&QX#d&QX#e&QX#f&QX#g&QX#h&QX#i&QX#k&QX#o&QX#r&QX&^&QX&_&QX&niX&n&QX&qiX&viX&v&QX&x!aX~P?XOWUXYUXY!aXY&]XZUXq!aXuUXw&]X!bUX#]UX#_UX#aUX#bUX#dUX#eUX#fUX#gUX#hUX#iUX#kUX#oUX#rUX&^UX&_UX&nUX&n&]X&q&]X&vUX&v&]X&x!aX~P>lOg^Oh^O%}TO&P!wO&RWOg!RXh!RX&P!RX&R!RX~PFdOu#OOw&XO%}TO&P&UO&R&TO&q&WO~OW#XOY&aX&n&aX&v&aX~P!#YOY&ZO~P9oOg^Oh^O&P!wO&RWO~Oq&]OY&pX~OY&_O~Og^Oh^O%}TO&P!wO&RWOY&pP~PFdOY&dO&n&bO&v#vO~Oq&eO&x$ZOY&wX~OY&gO~O%}TOg%bah%bav%ba!S%ba!T%ba!U%ba!V%ba!W%ba!X%ba!Y%ba!Z%ba!]%ba!^%ba!_%ba!u%ba!z%ba$h%ba&P%ba&R%ba&t%ba&_%ba~O|&hO~P]O}&iO~Op&uOw&vO&PSO&R!qO&_#YO~Oz&tO~P!'iOz&xO&PSO&R!qO&_#YO~OY&eP~P:|Og^Oh^O%}TO&P!wO&RWO~O}cO~P:|OW#XOu#OO%}TO&v&aX~O#r$WO!P#sa#_#sa#a#sa#b#sa#d#sa#e#sa#f#sa#g#sa#h#sa#i#sa#k#sa#o#sa&^#sa&_#sa&n#saY#sa#p#sas#saq#sa|#sa~Oo'_O}'^O!r'`O&_!hO~O}'eO!r'`O~Oo'iO}'hO&_!hO~OZ#xOu'mO%}TO~OW%jO}'sO~OW%jO!P'uO~OW'vO!P'wO~O$h!WO&P0qO&R0pO!P&eP~P/uO!P(SO#p(TO~P9oO}(UO~O$c(WO~O!P(XO~O!P(YO~O!P(ZO~P9oO!P(]O~P9oOZ$lO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%}TO&P(_O&R(^O&XUO~PFdO%Q(hO%U(iOZ$}a_$}a`$}aa$}ab$}ac$}ae$}ag$}ah$}ap$}av$}aw$}az$}a}$}a!P$}a!S$}a!T$}a!U$}a!V$}a!W$}a!X$}a!Y$}a!Z$}a![$}a!]$}a!^$}a!_$}a!u$}a!z$}a#f$}a#r$}a#t$}a#u$}a#y$}a#z$}a$W$}a$Y$}a$`$}a$c$}a$e$}a$h$}a$l$}a$n$}a$s$}a$u$}a$w$}a$y$}a$|$}a%O$}a%w$}a%}$}a&P$}a&R$}a&X$}a&t$}a|$}a$a$}a$q$}a~O}ra!rra'Ora~PH_OZ%bO~PJ`O!P(mO~O!m%gO}&la!P&la~O}cO!P(pO~Oo(tOq!fX&^!fX~Oq(vO&^&mX~O&^(xO~OZ`O_VO`VOaVObVOcVOeVOg^Oh^Op)UOv{Ow)TOz!OO|)PO}cO!PvO![!`O!u}O!z|O#fpO#roO#tpO#upO#y!RO#z!QO$W!SO$Y!TO$`!UO$c!VO$e!XO$h!WO$l!YO$n!ZO$s![O$u!]O$w!^O$y!_O$|!aO%O!bO%}TO&PRO&RQO&XUO&_#YO&tdO~PFdO}%dO~O})]OY&zP~P:|OW%jO!P)dO~Os)eO~Ou#OO%}TOq&ia!P&ia!b&iaY&ia#p&ia~O})fO~P:|Oq%wO!P&ha~Og^Oh^O%}0oO&P!wO&RWO~O&b)mO~P!8jOu#OO%}TOq&aX&^&aXY&aX&n&aX!P&aX~O}&aX!r&aX~P!9SOo)oOp)oOqnX&^nX~Oq)pO&^&`X~O&^)rO~Ou#OOw)tO%}TO&PSO&R!qO~OYma&nma&vma~P!:bOW&QXY!aXq!aXu!aX%}!aX~OWUXY!aXq!aXu!aX%}!aX~OW)wO~Ou#OO%}TO&P#SO&R#SO&q)yO~Og^Oh^O%}TO&P!wO&RWO~PFdOq&]OY&pa~Ou#OO%}TO&P#SO&R#SO&q&WO~OY)|O~OY*PO&n&bO~Oq&eOY&wa~Og^Oh^Ov{O|*XO!u}O%}TO&P!wO&RWO&tdO~PFdO!P*YO~OW^iZ#XXu^i!P^i!b^i#]^i#_^i#a^i#b^i#d^i#e^i#f^i#g^i#h^i#i^i#k^i#o^i#r^i&^^i&_^i&n^i&v^iY^i#p^is^iq^i|^i~OW*iO~Os*jO~P9oOz*kO&PSO&R!qO~O!P]iY]i#p]is]iq]i|]i~P9oOq*lOY&eX!P&eX~P9oOY*nO~O#f$SO#g$TO#k$YO#r$WO!P#^i#_#^i#a#^i#b#^i#d#^i#e#^i#o#^i&^#^i&_#^i&n#^iY#^i#p#^is#^iq#^i|#^i~O#h$UO#i$UO~P!AmO#_#|O#d$QO#e$RO#f$SO#g$TO#h$UO#i$UO#k$YO#r$WO&^#zO&_#zO&n#{O!P#^i#b#^i#o#^iY#^i#p#^is#^iq#^i|#^i~O#a#^i~P!CUO#a#}O~P!CUO#_#|O#f$SO#g$TO#h$UO#i$UO#k$YO#r$WO&^#zO&_#zO!P#^i#a#^i#b#^i#d#^i#e#^i#o#^iY#^i#p#^is#^iq#^i|#^i~O&n#^i~P!DtO&n#{O~P!DtO#f$SO#g$TO#k$YO#r$WO!P#^i#a#^i#b#^i#e#^i#o#^iY#^i#p#^is#^iq#^i|#^i~O#_#|O#d$QO#h$UO#i$UO&^#zO&_#zO&n#{O~P!FdO#k$YO#r$WO!P#^i#_#^i#a#^i#b#^i#d#^i#e#^i#f#^i#h#^i#i#^i#o#^i&^#^i&_#^i&n#^iY#^i#p#^is#^iq#^i|#^i~O#g$TO~P!G{O#g#^i~P!G{O#h#^i#i#^i~P!AmO#p*oO~P9oO#_&aX#a&aX#b&aX#d&aX#e&aX#f&aX#g&aX#h&aX#i&aX#k&aX#o&aX#r&aX&_&aX#p&aXs&aX|&aX~P!9SO!P#liY#li#p#lis#liq#li|#li~P9oO|*rO~P$wO}'^O~O}'^O!r'`O~Oo'_O}'^O!r'`O~O%}TO&P#SO&R#SO|&sP!P&sP~PFdO}'eO~Og^Oh^Ov{O|+PO!P*}O!u}O!z|O%}TO&P!wO&RWO&_!hO&tdO~PFdO}'hO~Oo'iO}'hO~Os+RO~P:|Ou+TO%}TO~Ou'mO})fO%}TOW#Zi!P#Zi#_#Zi#a#Zi#b#Zi#d#Zi#e#Zi#f#Zi#g#Zi#h#Zi#i#Zi#k#Zi#o#Zi#r#Zi&^#Zi&_#Zi&n#Zi&v#ZiY#Zi#p#Zis#Ziq#Zi|#Zi~O}'^OW&diu&di!P&di#_&di#a&di#b&di#d&di#e&di#f&di#g&di#h&di#i&di#k&di#o&di#r&di&^&di&_&di&n&di&v&diY&di#p&dis&diq&di|&di~O#}+]O$P+^O$R+^O$S+_O$T+`O~O|+[O~P##nO$Z+aO&PSO&R!qO~OW+bO!P+cO~O$a+dOZ$_i_$_i`$_ia$_ib$_ic$_ie$_ig$_ih$_ip$_iv$_iw$_iz$_i}$_i!P$_i!S$_i!T$_i!U$_i!V$_i!W$_i!X$_i!Y$_i!Z$_i![$_i!]$_i!^$_i!_$_i!u$_i!z$_i#f$_i#r$_i#t$_i#u$_i#y$_i#z$_i$W$_i$Y$_i$`$_i$c$_i$e$_i$h$_i$l$_i$n$_i$s$_i$u$_i$w$_i$y$_i$|$_i%O$_i%w$_i%}$_i&P$_i&R$_i&X$_i&t$_i|$_i$q$_i~Og^Oh^O$h#sO&P!wO&RWO~O!P+hO~P:|O!P+iO~OZ`O_VO`VOaVObVOcVOeVOg^Oh^Op!POv{OwkOz!OO}cO!PvO!SyO!TyO!UyO!VyO!WyO!XyO!YyO!Z+nO![!`O!]yO!^yO!_yO!u}O!z|O#fpO#roO#tpO#upO#y!RO#z!QO$W!SO$Y!TO$`!UO$c!VO$e!XO$h!WO$l!YO$n!ZO$q+oO$s![O$u!]O$w!^O$y!_O$|!aO%O!bO%}TO&PRO&RQO&XUO&tdO~O|+mO~P#)QOW&QXY&QXZ&QXu&QX!P&QX&viX&v&QX~P?XOWUXYUXZUXuUX!PUX&vUX&v&]X~P>lOW#tOu#uO&v#vO~OW&UXY%XXu&UX!P%XX&v&UX~OZ#XX~P#.VOY+uO!P+sO~O%Q(hO%U(iOZ$}i_$}i`$}ia$}ib$}ic$}ie$}ig$}ih$}ip$}iv$}iw$}iz$}i}$}i!P$}i!S$}i!T$}i!U$}i!V$}i!W$}i!X$}i!Y$}i!Z$}i![$}i!]$}i!^$}i!_$}i!u$}i!z$}i#f$}i#r$}i#t$}i#u$}i#y$}i#z$}i$W$}i$Y$}i$`$}i$c$}i$e$}i$h$}i$l$}i$n$}i$s$}i$u$}i$w$}i$y$}i$|$}i%O$}i%w$}i%}$}i&P$}i&R$}i&X$}i&t$}i|$}i$a$}i$q$}i~OZ+xO~O%Q(hO%U(iOZ%Vi_%Vi`%Via%Vib%Vic%Vie%Vig%Vih%Vip%Viv%Viw%Viz%Vi}%Vi!P%Vi!S%Vi!T%Vi!U%Vi!V%Vi!W%Vi!X%Vi!Y%Vi!Z%Vi![%Vi!]%Vi!^%Vi!_%Vi!u%Vi!z%Vi#f%Vi#r%Vi#t%Vi#u%Vi#y%Vi#z%Vi$W%Vi$Y%Vi$`%Vi$c%Vi$e%Vi$h%Vi$l%Vi$n%Vi$s%Vi$u%Vi$w%Vi$y%Vi$|%Vi%O%Vi%w%Vi%}%Vi&P%Vi&R%Vi&X%Vi&t%Vi|%Vi$a%Vi$q%Vi~Ou#OO%}TO}&oa!P&oa!m&oa~O!P,OO~Oo(tOq!fa&^!fa~Oq(vO&^&ma~O!m%gO}&li!P&li~O|,XO~P]OW,ZO~P5xOW&UXu&UX#_&UX#a&UX#b&UX#d&UX#e&UX#f&UX#g&UX#h&UX#i&UX#k&UX#o&UX#r&UX&^&UX&_&UX&n&UX&v&UX~OZ#xO!P&UX~P#8^OW$gOZ#xO&v#vO~Op,]Ow,]O~Oq,^O}&rX!P&rX~O!b,`O#]#wOY&UXZ#XX~P#8^OY&SXq&SX|&SX!P&SX~P9oO})]O|&yP~P:|OY&SXg%[Xh%[X%}%[X&P%[X&R%[Xq&SX|&SX!P&SX~Oq,cOY&zX~OY,eO~O})fO|&kP~P:|Oq&jX!P&jX|&jXY&jX~P9oO&bTa~PC[Oo)oOp)oOqna&^na~Oq)pO&^&`a~OW,mO~Ow,nO~Ou#OO%}TO&P,rO&R,qO~Og^Oh^Ov#pO!u#rO&P!wO&RWO&t#oO~Og^Oh^Ov{O|,wO!u}O%}TO&P!wO&RWO&tdO~PFdOw-SO&PSO&R!qO&_#YO~Oq*lOY&ea!P&ea~O#_ma#ama#bma#dma#ema#fma#gma#hma#ima#kma#oma#rma&_ma#pmasma|ma~PEnO|-WO~P$wOZ#xO}'^Oq!|X|!|X!P!|X~Oq-[O|&sX!P&sX~O|-_O!P-^O~O&_!hO~P5VOg^Oh^Ov{O|-cO!P*}O!u}O!z|O%}TO&P!wO&RWO&_!hO&tdO~PFdOs-dO~P9oOs-dO~P:|O}'^OW&dqu&dq!P&dq#_&dq#a&dq#b&dq#d&dq#e&dq#f&dq#g&dq#h&dq#i&dq#k&dq#o&dq#r&dq&^&dq&_&dq&n&dq&v&dqY&dq#p&dqs&dqq&dq|&dq~O|-hO~P##nO!W-lO$O-lO&PSO&R!qO~O!P-oO~O$Z-pO&PSO&R!qO~O!b%vO#p-rOq!`X!P!`X~O!P-tO~P9oO!P-tO~P:|O!P-wO~P9oO|-yO~P#)QO![$aO#p-zO~O!P-|O~O!b-}O~OY.QOZ$lO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%}TO&P(_O&R(^O&XUO~PFdOY.QO!P.RO~O%Q(hO%U(iOZ%Vq_%Vq`%Vqa%Vqb%Vqc%Vqe%Vqg%Vqh%Vqp%Vqv%Vqw%Vqz%Vq}%Vq!P%Vq!S%Vq!T%Vq!U%Vq!V%Vq!W%Vq!X%Vq!Y%Vq!Z%Vq![%Vq!]%Vq!^%Vq!_%Vq!u%Vq!z%Vq#f%Vq#r%Vq#t%Vq#u%Vq#y%Vq#z%Vq$W%Vq$Y%Vq$`%Vq$c%Vq$e%Vq$h%Vq$l%Vq$n%Vq$s%Vq$u%Vq$w%Vq$y%Vq$|%Vq%O%Vq%w%Vq%}%Vq&P%Vq&R%Vq&X%Vq&t%Vq|%Vq$a%Vq$q%Vq~Ou#OO%}TO}&oi!P&oi!m&oi~O&n&bOq!ga&^!ga~O!m%gO}&lq!P&lq~O|.^O~P]Op.`Ow&vOz&tO&PSO&R!qO&_#YO~O!P.aO~Oq,^O}&ra!P&ra~O})]O~P:|Oq.gO|&yX~O|.iO~Oq,cOY&za~Oq.mO|&kX~O|.oO~Ow.pO~Oq!aXu!aX!P!aX!b!aX%}!aX~OZ&QX~P#N{OZUX~P#N{O!P.qO~OZ.rO~OW^yZ#XXu^y!P^y!b^y#]^y#_^y#a^y#b^y#d^y#e^y#f^y#g^y#h^y#i^y#k^y#o^y#r^y&^^y&_^y&n^y&v^yY^y#p^ys^yq^y|^y~OY%`aq%`a!P%`a~P9oO!P#nyY#ny#p#nys#nyq#ny|#ny~P9oO}'^Oq!|a|!|a!P!|a~OZ#xO}'^Oq!|a|!|a!P!|a~O%}TO&P#SO&R#SOq%jX|%jX!P%jX~PFdOq-[O|&sa!P&sa~O|!}X~P$wO|/PO~Os/QO~P9oOW%jO!P/RO~OW%jO$Q/WO&PSO&R!qO!P&|P~OW%jO$U/XO~O!P/YO~O!b%vO#p/[Oq!`X!P!`X~OY/^O~O!P/_O~P9oO#p/`O~P9oO!b/bO~OY/cOZ$lO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%}TO&P(_O&R(^O&XUO~PFdOW#[Ou&[X%}&[X&P&[X&R&[X'O&[X~O&_#YO~P$)QOu#OO%}TO'O/eO&P%SX&R%SX~O&n&bOq!gi&^!gi~Op/iO&PSO&R!qO~OW*iOZ#xO~O!P/kO~OY&SXq&SX~P9oO})]Oq%nX|%nX~P:|Oq.gO|&ya~O!b/nO~O})fOq%cX|%cX~P:|Oq.mO|&ka~OY/qO~O!P/rO~OZ/sO~O}'^Oq!|i|!|i!P!|i~O|!}a~P$wOW%jO!P/wO~OW%jOq/xO!P&|X~OY/|O~P9oOY0OO~OY%Xq!P%Xq~P9oO'O/eO&P%Sa&R%Sa~OY0TO~O!P0WO~Ou#OO!P0YO!Z0ZO%}TO~OY0[O~Oq/xO!P&|a~O!P0_O~OW%jOq/xO!P&}X~OY0aO~P9oOY0bO~OY%Xy!P%Xy~P9oOu#OO%}TO&P%ua&R%ua'O%ua~OY0cO~O!P0dO~Ou#OO!P0eO!Z0fO%}TO~OW%jOq%ra!P%ra~Oq/xO!P&}a~O!P0jO~Ou#OO!P0jO!Z0kO%}TO~O!P0lO~O!P0nO~O#p&QXY&QXs&QXq&QX|&QX~P&bO#pUXYUXsUXqUX|UX~P(iO`Q_P#g%y&P&Xc&X~",goto:"#+S'OPPPP'P'd*x.OP'dPP.d.h0PPPPPP1nP3ZPP4v7l:[WP!?[P!Ap!BW!E]3ZPPP!F|!Jm!MaPP#!P#!SP#$`#$f#&V#&f#&n#'p#(Y#)T#)^#)a#)oP#)r#*OP#*V#*^P#*aP#*lP#*o#*r#*u#*y#+PstOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y'urOPXY`acopx!Y![!_!a!e!f!h!i!o!x#P#T#Y#[#_#`#e#i#l#n#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$]$_$e$l$m$n$o$p$q%O%S%V%Z%^%_%b%d%g%k%u%v%{%|&R&S&[&]&`&b&d&i'X'^'_'`'e'h'i'm'n'p'{'|(O(T(U(`(l(t(v({(})O)Q)R)])f)o)p*P*T*W*l*o*p*q*z*{+O+T+d+f+h+i+l+o+r+s+x+},W,Y,^,`,u-[-^-a-r-t-}.R.V.g.m/O/[/_/b/d/n/q0R0X0Z0[0f0h0k0r#xhO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kt!sT!Q!S!T!{!}$k%p+]+^+_+`-k-m/W/X/x0oQ#mdS&Y#`(}Q&l#oU&q#t$g,ZQ&x#vW(b%O+s.R/dU)Y%j'v+bQ)Z%kS)u&S,WU*f&s-R._Q*k&yQ,t*TQ-P*iQ.j,cR.t,uu!sT!Q!S!T!{!}$k%p+]+^+_+`-k-m/W/X/x0oT%l!r)l#{qO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0k#zlO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kX(c%O+s.R/d$TVO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0k$TkO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0k&O[OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s,Y,^,`-^-r-t-}.R.g.m/O/[/_/b/d/n0Z0f0k0rQ&Q#[Q)s&RV.T+x.X/e&O[OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s,Y,^,`-^-r-t-}.R.g.m/O/[/_/b/d/n0Z0f0k0rV.T+x.X/e&O]OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s,Y,^,`-^-r-t-}.R.g.m/O/[/_/b/d/n0Z0f0k0rV.U+x.X/eS#Z[.TS$f!O&tS&s#t$gQ&y#vQ)V%dQ-R*iR._,Z$kZO`copx!Y![!_!a#Y#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$_$l$m$n$o$p$q%O%d%g%k%v&b&d'_'`'i'm(O(T(U(t)Q)R)])f)o)p*P*l*o+T+d+h+i+l+o+s,Y,^,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kQ&O#YR,k)p&P_OPX`ceopx!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s+x,Y,^,`-^-r-t-}.R.X.g.m/O/[/_/b/d/e/n0Z0f0k0r!o#QY!e!x#R#T#`#n$]%R%S%V%^%u%|&S&[&`'X'|(`(l({(}*T*p*z+f+r+},W,u-a.V/q0R0X0[0h$SkO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kQ$m!UQ$n!VQ$s!ZQ$|!`R+p(WQ#yiS'q$e*hQ*e&rQ+X'rS,[)T)UQ-O*gQ-Y*vQ.b,]Q.x-QQ.{-ZQ/j.`Q/u.yR0V/iQ'a$bW*[&m'b'c'dQ+W'qU,x*]*^*_Q-X*vQ-f+XS.u,y,zS.z-Y-ZQ/t.vR/v.{]!mP!o'^*q-^/OreOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!gP!o'^*q-^/OW#b`#e%b&]Q'}$oW(d%O+s.R/dS*U&i*WS*w'e-[S*|'h+OR.X+xh#VY!W!e#n#s%V'|*T*z+f,u-aQ)j%wQ)v&WR,o)y#xnOcopx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0k^!kP!g!o'^*q-^/Ov#TY!W#`#n#s%w&W&[&`'|(`(})y*T+f+r,u.W/hQ#g`Q$b{Q$c|Q$d}W%S!e%V*z-aS%Y!h(vQ%`!iQ&m#pQ&n#qQ&o#rQ(u%ZS(y%^({Q*R&eS*v'e-[R-Z*wU)h%v)f.mR+V'p[!mP!o'^*q-^/OT*}'h+O^!iP!g!o'^*q-^/OQ'd$bQ'l$dQ*_&mQ*d&oV*{'h*|+OQ%[!hR,S(vQ(s%YR,R(u#znO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kQ%c!kS(l%S(yR(|%`T#e`%bU#c`#e%bR)z&]Q%f!lQ(n%UQ(r%XQ,U(zR.],VrvOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!mP!o'^*q-^/OQ%P!bQ%a!jQ%i!pQ'[$ZQ([$|Q(k%QQ(p%WQ+z(iR.Y+yrtOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!mP!o'^*q-^/OS*V&i*WT*}'h+OQ'c$bS*^&m'dR,z*_Q'b$bQ'g$cU*]&m'c'dQ*a&nS,y*^*_R.v,zQ*u'`R+Q'iQ'k$dS*c&o'lR,}*dQ'j$dU*b&o'k'lS,|*c*dR.w,}rtOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!mP!o'^*q-^/OT*}'h+OQ'f$cS*`&n'gR,{*aQ*x'eR.|-[R-`*yQ&j#mR*Z&lT*V&i*WQ%e!lS(q%X%fR,P(rR)R%dWk%O+s.R/d#{lO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0k$SiO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kU&r#t$g,ZS*g&s._Q-Q*iR.y-RT'o$e'p!_#|m#a$r$z$}&w&z&{'O'P'Q'R'S'W'Z)[)g+S+g+j-T-V-e-v-{.e/Z/a/}0Q!]$Pm#a$r$z$}&w&z&{'O'P'R'S'W'Z)[)g+S+g+j-T-V-e-v-{.e/Z/a/}0Q#{nO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0ka)^%k)],`.g/n0Z0f0kQ)`%kR.k,cQ't$hQ)b%oR,f)cT+Y's+ZsvOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YruOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YQ$w!]R$y!^R$p!XrvOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YR(O$oR$q!XR(V$sT+k(U+lX(f%P(g(k+{R+y(hQ.W+xR/h.XQ(j%PQ+w(gQ+|(kR.Z+{R%Q!bQ(e%OV.P+s.R/dQxOQ#lcW$`x#l)Q,YQ)Q%dR,Y)RrXOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Yn!fP!o#e&]&i'^'e'h*W*q+O+x-[-^/Ol!zX!f#P#_#i$[%Z%_%{&R'n'{)O0r!j#PY!e!x#T#`#n$]%S%V%^%u%|&S&[&`'X'|(`(l({(}*T*p*z+f+r+},W,u-a.V/q0R0X0[0hQ#_`Q#ia#d$[op!Y!_!a#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$l%g%k%v&b&d'_'`'i'm(O(T(t)])f)o*P*l*o+T+h+i+o,^,`-r-t-}.g.m/[/_/b/n0Z0f0kS%Z!h(vS%_!i*{S%{#Y)pQ&R#[S'n$e'pY'{$o%O+s.R/dQ)O%bR0r$YQ!uUR%m!uQ)q&OR,l)q^#RY#`$]'X'|(`*px%R!e!x#n%V%^%|&S&[&`({(}*T*z+f+r,W,u-a.V0R[%t#R%R%u+}0X0hS%u#T%SQ+}(lQ0X/qR0h0[Q*m&{R-U*mQ!oPU%h!o*q/OQ*q'^R/O-^!pbOP`cx![!o#e#l$_$m$n$o$p$q%O%b%d&]&i'^'e'h(U)Q)R*W*q+O+d+l+s+x,Y-[-^.R/O/dY!yX!f#_'{)OT#jb!yQ.n,gR/p.nQ%x#VR)k%xQ&c#fS*O&c.[R.[,QQ(w%[R,T(wQ&^#cR){&^Q,_)WR.d,_Q+O'hR-b+OQ-]*xR.}-]Q*W&iR,v*WQ'p$eR+U'pQ&f#gR*S&fQ.h,aR/m.hQ,d)`R.l,dQ+Z'sR-g+ZQ-k+]R/T-kQ/y/US0^/y0`R0`/{Q+l(UR-x+lQ(g%PS+v(g+{R+{(kQ/f.VR0S/fQ+t(eR.S+t`wOcx#l%d)Q)R,YQ$t![Q']$_Q'y$mQ'z$nQ(Q$pQ(R$qS+k(U+lR-q+d'dsOPXY`acopx!Y![!_!a!e!f!h!i!o!x#P#T#Y#[#_#`#e#i#l#n#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$]$_$e$l$m$n$o$p$q%O%S%V%Z%^%_%b%d%g%u%v%{%|&R&S&[&]&`&b&d&i'X'^'_'`'e'h'i'm'n'p'{'|(O(T(U(`(l(t(v({(})O)Q)R)f)o)p*P*T*W*l*o*p*q*z*{+O+T+d+f+h+i+l+o+r+s+x+},W,Y,^,u-[-^-a-r-t-}.R.V.m/O/[/_/b/d/q0R0X0[0h0ra)_%k)],`.g/n0Z0f0kQ!rTQ$h!QQ$i!SQ$j!TQ%o!{Q%q!}Q'x$kQ)c%pQ)l0oS-i+]+_Q-m+^Q-n+`Q/S-kS/U-m/WQ/{/XR0]/x%uSOT`cdopx!Q!S!T!Y![!_!a!{!}#`#l#o#t#u#v#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$g$k$l$m$n$o$p$q%O%d%j%k%p%v&S&d&s&y'm'v(O(T(U(})Q)R)])f*P*T*i*l*o+T+]+^+_+`+b+d+h+i+l+o+s,W,Y,Z,`,c,u-R-k-m-r-t-}.R._.g.m/W/X/[/_/b/d/n/x0Z0f0k0oQ)a%kQ,a)]S.f,`/nQ/l.gQ0g0ZQ0i0fR0m0krmOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YS#a`$lQ$WoQ$^pQ$r!YQ$z!_Q$}!aQ&w#uQ&z#wY&{#x$o+h-t/_Q&}#|Q'O#}Q'P$OQ'Q$PQ'R$QQ'S$RQ'T$SQ'U$TQ'V$UQ'W$VQ'Z$Z^)[%k)].g/n0Z0f0kU)g%v)f.mQ*Q&dQ+S'mQ+g(OQ+j(TQ,p*PQ-T*lQ-V*oQ-e+TQ-v+iQ-{+oQ.e,`Q/Z-rQ/a-}Q/}/[R0Q/b#xgO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kW(a%O+s.R/dR)S%drYOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!eP!o'^*q-^/OW!xX$[%{'{Q#``Q#ne#S$]op!Y!_!a#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$l%k%v&d'm(O(T)])f*P*l*o+T+h+i+o,`-r-t-}.g.m/[/_/b/n0Z0f0kQ%V!gS%^!i*{d%|#Y%g&b'_'`'i(t)o)p,^Q&S#_Q&[#bS&`#e&]Q'X$YQ'|$oW(`%O+s.R/dQ({%_Q(}%bS*T&i*WQ*p0rS*z'h+OQ+f'}Q+r(dQ,W)OQ,u*UQ-a*|S.V+x.XR0R/e&O_OPX`ceopx!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s+x,Y,^,`-^-r-t-}.R.X.g.m/O/[/_/b/d/e/n0Z0f0k0rQ$e!OQ'r$fR*h&t&ZWOPX`ceopx!O!Y![!_!a!g!i!o#Y#[#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&R&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s+x,Y,^,`-^-r-t-}.R.X.g.m/O/[/_/b/d/e/n0Z0f0k0rR&P#Y$QjOcopx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kQ#f`Q&O#YQ'Y$YU)W%g'`'iQ)}&bQ*s'_Q,Q(tQ,j)oQ,k)pR.c,^Q)n%}R,i)m$SfO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kT&p#t,ZQ&|#xQ(P$oQ-u+hQ/]-tR0P/_]!nP!o'^*q-^/O#PaOPX`bcx![!f!o!y#_#e#l$_$m$n$o$p$q%O%b%d&]&i'^'e'h'{(U)O)Q)R*W*q+O+d+l+s+x,Y-[-^.R/O/dU#WY!W'|Q%T!eU&k#n#s+fQ(o%VS,s*T*zT.s,u-aj#UY!W!e#n#s%V%w&W)y*T*z,u-aU&V#`&`(}Q)x&[Q+e'|Q+q(`Q-s+fQ.O+rQ/g.WR0U/hQ)i%vQ,g)fR/o.mR,h)f`!jP!o'^'h*q+O-^/OT%W!g*|R%]!hW%U!e%V*z-aQ(z%^R,V({S#d`%bR&a#eQ)X%gT*t'`'iR*y'e[!lP!o'^*q-^/OR%X!gR#h`R,b)]R)a%kT-j+]-kQ/V-mR/z/WR/z/X",nodeNames:`⚠ LineComment BlockComment Program ModuleDeclaration MarkerAnnotation Identifier ScopedIdentifier . Annotation ) ( AnnotationArgumentList AssignmentExpression FieldAccess IntegerLiteral FloatingPointLiteral BooleanLiteral CharacterLiteral StringLiteral TextBlock null ClassLiteral void PrimitiveType TypeName ScopedTypeName GenericType TypeArguments AnnotatedType Wildcard extends super , ArrayType ] Dimension [ class this ParenthesizedExpression ObjectCreationExpression new ArgumentList } { ClassBody ; FieldDeclaration Modifiers public protected private abstract static final strictfp default synchronized native transient volatile VariableDeclarator Definition AssignOp ArrayInitializer MethodDeclaration TypeParameters TypeParameter TypeBound FormalParameters ReceiverParameter FormalParameter SpreadParameter Throws throws Block ClassDeclaration Superclass SuperInterfaces implements InterfaceTypeList InterfaceDeclaration interface ExtendsInterfaces InterfaceBody ConstantDeclaration EnumDeclaration enum EnumBody EnumConstant EnumBodyDeclarations AnnotationTypeDeclaration AnnotationTypeBody AnnotationTypeElementDeclaration StaticInitializer ConstructorDeclaration ConstructorBody ExplicitConstructorInvocation ArrayAccess MethodInvocation MethodName MethodReference ArrayCreationExpression Dimension AssignOp BinaryExpression CompareOp CompareOp LogicOp LogicOp BitOp BitOp BitOp ArithOp ArithOp ArithOp BitOp InstanceofExpression instanceof LambdaExpression InferredParameters TernaryExpression LogicOp : UpdateExpression UpdateOp UnaryExpression LogicOp BitOp CastExpression ElementValueArrayInitializer ElementValuePair open module ModuleBody ModuleDirective requires transitive exports to opens uses provides with PackageDeclaration package ImportDeclaration import Asterisk ExpressionStatement LabeledStatement Label IfStatement if else WhileStatement while ForStatement for ForSpec LocalVariableDeclaration var EnhancedForStatement ForSpec AssertStatement assert SwitchStatement switch SwitchBlock SwitchLabel case DoStatement do BreakStatement break ContinueStatement continue ReturnStatement return SynchronizedStatement ThrowStatement throw TryStatement try CatchClause catch CatchFormalParameter CatchType FinallyClause finally TryWithResourcesStatement ResourceSpecification Resource ClassContent`,maxTerm:276,nodeProps:[[`isolate`,-4,1,2,18,19,``],[`group`,-26,4,47,76,77,82,87,92,145,147,150,151,153,156,158,161,163,165,167,172,174,176,178,180,181,183,191,`Statement`,-25,6,13,14,15,16,17,18,19,20,21,22,39,40,41,99,100,102,103,106,118,120,122,125,127,130,`Expression`,-7,23,24,25,26,27,29,34,`Type`],[`openedBy`,10,`(`,44,`{`],[`closedBy`,11,`)`,45,`}`]],propSources:[d],skippedNodes:[0,1,2],repeatNodeCount:28,tokenData:"#'f_R!_OX%QXY'fYZ)bZ^'f^p%Qpq'fqr*|rs,^st%Qtu4euv5zvw7[wx8rxyAZyzAwz{Be{|CZ|}Dq}!OE_!O!PFx!P!Q! r!Q!R!,h!R![!0`![!]!>p!]!^!@Q!^!_!@n!_!`!BX!`!a!B{!a!b!Di!b!c!EX!c!}!LT!}#O!Mj#O#P%Q#P#Q!NW#Q#R!Nt#R#S4e#S#T%Q#T#o4e#o#p# h#p#q#!U#q#r##n#r#s#$[#s#y%Q#y#z'f#z$f%Q$f$g'f$g#BY4e#BY#BZ#$x#BZ$IS4e$IS$I_#$x$I_$I|4e$I|$JO#$x$JO$JT4e$JT$JU#$x$JU$KV4e$KV$KW#$x$KW&FU4e&FU&FV#$x&FV;'S4e;'S;=`5t<%lO4eS%VV&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QS%qO&YSS%tVOY&ZYZ%lZr&Zrs&ys;'S&Z;'S;=`'`<%lO&ZS&^VOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QS&vP;=`<%l%QS&|UOY&ZYZ%lZr&Zs;'S&Z;'S;=`'`<%lO&ZS'cP;=`<%l&Z_'mk&YS%yZOX%QXY'fYZ)bZ^'f^p%Qpq'fqr%Qrs%qs#y%Q#y#z'f#z$f%Q$f$g'f$g#BY%Q#BY#BZ'f#BZ$IS%Q$IS$I_'f$I_$I|%Q$I|$JO'f$JO$JT%Q$JT$JU'f$JU$KV%Q$KV$KW'f$KW&FU%Q&FU&FV'f&FV;'S%Q;'S;=`&s<%lO%Q_)iY&YS%yZX^*Xpq*X#y#z*X$f$g*X#BY#BZ*X$IS$I_*X$I|$JO*X$JT$JU*X$KV$KW*X&FU&FV*XZ*^Y%yZX^*Xpq*X#y#z*X$f$g*X#BY#BZ*X$IS$I_*X$I|$JO*X$JT$JU*X$KV$KW*X&FU&FV*XV+TX#tP&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`;'S%Q;'S;=`&s<%lO%QU+wV#_Q&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT,aXOY,|YZ%lZr,|rs3Ys#O,|#O#P2d#P;'S,|;'S;=`3S<%lO,|T-PXOY-lYZ%lZr-lrs.^s#O-l#O#P.x#P;'S-l;'S;=`2|<%lO-lT-qX&YSOY-lYZ%lZr-lrs.^s#O-l#O#P.x#P;'S-l;'S;=`2|<%lO-lT.cVcPOY&ZYZ%lZr&Zrs&ys;'S&Z;'S;=`'`<%lO&ZT.}V&YSOY-lYZ/dZr-lrs1]s;'S-l;'S;=`2|<%lO-lT/iW&YSOY0RZr0Rrs0ns#O0R#O#P0s#P;'S0R;'S;=`1V<%lO0RP0UWOY0RZr0Rrs0ns#O0R#O#P0s#P;'S0R;'S;=`1V<%lO0RP0sOcPP0vTOY0RYZ0RZ;'S0R;'S;=`1V<%lO0RP1YP;=`<%l0RT1`XOY,|YZ%lZr,|rs1{s#O,|#O#P2d#P;'S,|;'S;=`3S<%lO,|T2QUcPOY&ZYZ%lZr&Zs;'S&Z;'S;=`'`<%lO&ZT2gVOY-lYZ/dZr-lrs1]s;'S-l;'S;=`2|<%lO-lT3PP;=`<%l-lT3VP;=`<%l,|T3_VcPOY&ZYZ%lZr&Zrs3ts;'S&Z;'S;=`'`<%lO&ZT3yR&WSXY4SYZ4`pq4SP4VRXY4SYZ4`pq4SP4eO&XP_4lb&YS&PZOY%QYZ%lZr%Qrs%qst%Qtu4eu!Q%Q!Q![4e![!c%Q!c!}4e!}#R%Q#R#S4e#S#T%Q#T#o4e#o$g%Q$g;'S4e;'S;=`5t<%lO4e_5wP;=`<%l4eU6RX#hQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QU6uV#]Q&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV7cZ&nR&YSOY%QYZ%lZr%Qrs%qsv%Qvw8Uw!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QU8]V#aQ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT8wZ&YSOY9jYZ%lZr9jrs:xsw9jwx%Qx#O9j#O#PhYZ%lZr>hrs?dsw>hwx;hx#O>h#O#P&Z#P;'S>h;'S;=`@}<%lO>hT>kZOYhYZ%lZr>hrs@Ysw>hwx;hx#O>h#O#P&Z#P;'S>h;'S;=`@}<%lO>hP@]VOY@YZw@Ywx@rx#O@Y#P;'S@Y;'S;=`@w<%lO@YP@wObPP@zP;=`<%l@YTAQP;=`<%l>hTAWP;=`<%l9j_AbVZZ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVBOVYR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVBnX$ZP&YS#gQOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QVCbZ#fR&YSOY%QYZ%lZr%Qrs%qs{%Q{|DT|!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QVD[V#rR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVDxVqR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVEf[#fR&YSOY%QYZ%lZr%Qrs%qs}%Q}!ODT!O!_%Q!_!`6n!`!aF[!a;'S%Q;'S;=`&s<%lO%QVFcV&xR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_GPZWY&YSOY%QYZ%lZr%Qrs%qs!O%Q!O!PGr!P!Q%Q!Q![IQ![;'S%Q;'S;=`&s<%lO%QVGwX&YSOY%QYZ%lZr%Qrs%qs!O%Q!O!PHd!P;'S%Q;'S;=`&s<%lO%QVHkV&qR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QTIXc&YS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![IQ![!f%Q!f!gJd!g!hKQ!h!iJd!i#R%Q#R#SNz#S#W%Q#W#XJd#X#YKQ#Y#ZJd#Z;'S%Q;'S;=`&s<%lO%QTJkV&YS`POY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QTKV]&YSOY%QYZ%lZr%Qrs%qs{%Q{|LO|}%Q}!OLO!O!Q%Q!Q![Lp![;'S%Q;'S;=`&s<%lO%QTLTX&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lp![;'S%Q;'S;=`&s<%lO%QTLwc&YS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lp![!f%Q!f!gJd!g!h%Q!h!iJd!i#R%Q#R#SNS#S#W%Q#W#XJd#X#Y%Q#Y#ZJd#Z;'S%Q;'S;=`&s<%lO%QTNXZ&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lp![#R%Q#R#SNS#S;'S%Q;'S;=`&s<%lO%QT! PZ&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![IQ![#R%Q#R#SNz#S;'S%Q;'S;=`&s<%lO%Q_! y]&YS#gQOY%QYZ%lZr%Qrs%qsz%Qz{!!r{!P%Q!P!Q!)e!Q!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%Q_!!wX&YSOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{;'S!!r;'S;=`!'s<%lO!!r_!#iT&YSOz!#xz{!$[{;'S!#x;'S;=`!$y<%lO!#xZ!#{TOz!#xz{!$[{;'S!#x;'S;=`!$y<%lO!#xZ!$_VOz!#xz{!$[{!P!#x!P!Q!$t!Q;'S!#x;'S;=`!$y<%lO!#xZ!$yOQZZ!$|P;=`<%l!#x_!%SXOY!%oYZ!#dZr!%ors!'ysz!%oz{!(i{;'S!%o;'S;=`!)_<%lO!%o_!%rXOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{;'S!!r;'S;=`!'s<%lO!!r_!&dZ&YSOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{!P!!r!P!Q!'V!Q;'S!!r;'S;=`!'s<%lO!!r_!'^V&YSQZOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!'vP;=`<%l!!r_!'|XOY!%oYZ!#dZr!%ors!#xsz!%oz{!(i{;'S!%o;'S;=`!)_<%lO!%o_!(lZOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{!P!!r!P!Q!'V!Q;'S!!r;'S;=`!'s<%lO!!r_!)bP;=`<%l!%o_!)lV&YSPZOY!)eYZ%lZr!)ers!*Rs;'S!)e;'S;=`!+X<%lO!)e_!*WVPZOY!*mYZ%lZr!*mrs!+_s;'S!*m;'S;=`!,b<%lO!*m_!*rVPZOY!)eYZ%lZr!)ers!*Rs;'S!)e;'S;=`!+X<%lO!)e_!+[P;=`<%l!)e_!+dVPZOY!*mYZ%lZr!*mrs!+ys;'S!*m;'S;=`!,b<%lO!*mZ!,OSPZOY!+yZ;'S!+y;'S;=`!,[<%lO!+yZ!,_P;=`<%l!+y_!,eP;=`<%l!*mT!,ou&YS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!/S!P!Q%Q!Q![!0`![!d%Q!d!e!3j!e!f%Q!f!gJd!g!hKQ!h!iJd!i!n%Q!n!o!2U!o!q%Q!q!r!5h!r!z%Q!z!{!7`!{#R%Q#R#S!2r#S#U%Q#U#V!3j#V#W%Q#W#XJd#X#YKQ#Y#ZJd#Z#`%Q#`#a!2U#a#c%Q#c#d!5h#d#l%Q#l#m!7`#m;'S%Q;'S;=`&s<%lO%QT!/Za&YS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![IQ![!f%Q!f!gJd!g!hKQ!h!iJd!i#W%Q#W#XJd#X#YKQ#Y#ZJd#Z;'S%Q;'S;=`&s<%lO%QT!0gi&YS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!/S!P!Q%Q!Q![!0`![!f%Q!f!gJd!g!hKQ!h!iJd!i!n%Q!n!o!2U!o#R%Q#R#S!2r#S#W%Q#W#XJd#X#YKQ#Y#ZJd#Z#`%Q#`#a!2U#a;'S%Q;'S;=`&s<%lO%QT!2]V&YS_POY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT!2wZ&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!0`![#R%Q#R#S!2r#S;'S%Q;'S;=`&s<%lO%QT!3oY&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q!R!4_!R!S!4_!S;'S%Q;'S;=`&s<%lO%QT!4f`&YS_POY%QYZ%lZr%Qrs%qs!Q%Q!Q!R!4_!R!S!4_!S!n%Q!n!o!2U!o#R%Q#R#S!3j#S#`%Q#`#a!2U#a;'S%Q;'S;=`&s<%lO%QT!5mX&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q!Y!6Y!Y;'S%Q;'S;=`&s<%lO%QT!6a_&YS_POY%QYZ%lZr%Qrs%qs!Q%Q!Q!Y!6Y!Y!n%Q!n!o!2U!o#R%Q#R#S!5h#S#`%Q#`#a!2U#a;'S%Q;'S;=`&s<%lO%QT!7e_&YSOY%QYZ%lZr%Qrs%qs!O%Q!O!P!8d!P!Q%Q!Q![!:r![!c%Q!c!i!:r!i#T%Q#T#Z!:r#Z;'S%Q;'S;=`&s<%lO%QT!8i]&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!9b![!c%Q!c!i!9b!i#T%Q#T#Z!9b#Z;'S%Q;'S;=`&s<%lO%QT!9gc&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!9b![!c%Q!c!i!9b!i!r%Q!r!sKQ!s#R%Q#R#S!8d#S#T%Q#T#Z!9b#Z#d%Q#d#eKQ#e;'S%Q;'S;=`&s<%lO%QT!:yi&YS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!wX#pR&YSOY%QYZ%lZr%Qrs%qs![%Q![!]!?d!];'S%Q;'S;=`&s<%lO%QV!?kV&vR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV!@XV!PR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!@uY&_Z&YSOY%QYZ%lZr%Qrs%qs!^%Q!^!_!Ae!_!`+p!`;'S%Q;'S;=`&s<%lO%QU!AlX#iQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QV!B`X!bR&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`;'S%Q;'S;=`&s<%lO%QV!CSY&^R&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`!a!Cr!a;'S%Q;'S;=`&s<%lO%QU!CyY#iQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`!a!Ae!a;'S%Q;'S;=`&s<%lO%Q_!DrV&bX#oQ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!E`X%}Z&YSOY%QYZ%lZr%Qrs%qs#]%Q#]#^!E{#^;'S%Q;'S;=`&s<%lO%QV!FQX&YSOY%QYZ%lZr%Qrs%qs#b%Q#b#c!Fm#c;'S%Q;'S;=`&s<%lO%QV!FrX&YSOY%QYZ%lZr%Qrs%qs#h%Q#h#i!G_#i;'S%Q;'S;=`&s<%lO%QV!GdX&YSOY%QYZ%lZr%Qrs%qs#X%Q#X#Y!HP#Y;'S%Q;'S;=`&s<%lO%QV!HUX&YSOY%QYZ%lZr%Qrs%qs#f%Q#f#g!Hq#g;'S%Q;'S;=`&s<%lO%QV!HvX&YSOY%QYZ%lZr%Qrs%qs#Y%Q#Y#Z!Ic#Z;'S%Q;'S;=`&s<%lO%QV!IhX&YSOY%QYZ%lZr%Qrs%qs#T%Q#T#U!JT#U;'S%Q;'S;=`&s<%lO%QV!JYX&YSOY%QYZ%lZr%Qrs%qs#V%Q#V#W!Ju#W;'S%Q;'S;=`&s<%lO%QV!JzX&YSOY%QYZ%lZr%Qrs%qs#X%Q#X#Y!Kg#Y;'S%Q;'S;=`&s<%lO%QV!KnV&tR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!L[b&RZ&YSOY%QYZ%lZr%Qrs%qst%Qtu!LTu!Q%Q!Q![!LT![!c%Q!c!}!LT!}#R%Q#R#S!LT#S#T%Q#T#o!LT#o$g%Q$g;'S!LT;'S;=`!Md<%lO!LT_!MgP;=`<%l!LT_!MqVuZ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV!N_VsR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QU!N{X#eQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QV# oV}R&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_#!_Z'OX#dQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`#p%Q#p#q##Q#q;'S%Q;'S;=`&s<%lO%QU##XV#bQ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV##uV|R&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT#$cV#uP&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_#%Ru&YS%yZ&PZOX%QXY'fYZ)bZ^'f^p%Qpq'fqr%Qrs%qst%Qtu4eu!Q%Q!Q![4e![!c%Q!c!}4e!}#R%Q#R#S4e#S#T%Q#T#o4e#o#y%Q#y#z'f#z$f%Q$f$g'f$g#BY4e#BY#BZ#$x#BZ$IS4e$IS$I_#$x$I_$I|4e$I|$JO#$x$JO$JT4e$JT$JU#$x$JU$KV4e$KV$KW#$x$KW&FU4e&FU&FV#$x&FV;'S4e;'S;=`5t<%lO4e",tokenizers:[0,1,2,3],topRules:{Program:[0,3],ClassContent:[1,194]},dynamicPrecedences:{27:1,232:-1,243:-1},specialized:[{term:231,get:e=>f[e]||-1}],tokenPrec:7144}),m=s.define({name:`java`,parser:p.configure({props:[r.add({IfStatement:o({except:/^\s*({|else\b)/}),TryStatement:o({except:/^\s*({|catch|finally)\b/}),LabeledStatement:i,SwitchBlock:e=>{let t=e.textAfter,n=/^\s*\}/.test(t),r=/^\s*(case|default)\b/.test(t);return e.baseIndent+(n?0:r?1:2)*e.unit},Block:a({closing:`}`}),BlockComment:()=>null,Statement:o({except:/^{/})}),l.add({"Block SwitchBlock ClassBody ElementValueArrayInitializer ModuleBody EnumBody ConstructorBody InterfaceBody ArrayInitializer":n,BlockComment(e){return{from:e.from+2,to:e.to-2}}})]}),languageData:{commentTokens:{line:`//`,block:{open:`/*`,close:`*/`}},indentOnInput:/^\s*(?:case |default:|\{|\})$/}});function h(){return new c(m)}export{h as java}; \ No newline at end of file diff --git a/ksadk/server/static/assets/ebnfDiagram-PWID7BFC-Da9C9NO1.js b/ksadk/server/static/assets/ebnfDiagram-PWID7BFC-DAH8tjOy.js similarity index 86% rename from ksadk/server/static/assets/ebnfDiagram-PWID7BFC-Da9C9NO1.js rename to ksadk/server/static/assets/ebnfDiagram-PWID7BFC-DAH8tjOy.js index 86d377d2..ccaa9237 100644 --- a/ksadk/server/static/assets/ebnfDiagram-PWID7BFC-Da9C9NO1.js +++ b/ksadk/server/static/assets/ebnfDiagram-PWID7BFC-DAH8tjOy.js @@ -1 +1 @@ -import{f as e,t}from"./mermaid-parser.core-KGSy4jWT.js";import{n,r,t as i}from"./chunk-SVP7TREG-BLTlmMU7.js";import{t as a}from"./chunk-JWPE2WC7-vYvVJb_M.js";import{Ir as o,Nr as s}from"./MermaidBlock-Dz4IP-Tx.js";var c=e().RailroadEbnf.parser.LangiumParser,l=o(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformChoice`),u=o(e=>{let t=e.elements.map(p);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformSequence`),d=o(e=>{switch(e.$type){case`EbnfTerminal`:return{type:`terminal`,value:e.value};case`EbnfNonTerminal`:return{type:`nonterminal`,name:e.name};case`EbnfSpecial`:return{type:`special`,text:e.text};case`EbnfGroup`:return l(e.element);case`EbnfOptional`:return{type:`optional`,element:l(e.element)};case`EbnfRepetition`:return{type:`repetition`,element:l(e.element),min:0,max:1/0};default:throw Error(`Unsupported EBNF primary node: ${e.$type}`)}},`transformPrimary`),f=o((e,t)=>{switch(t.$type){case`EbnfOptionalPostfix`:return{type:`optional`,element:e};case`EbnfZeroOrMorePostfix`:return{type:`repetition`,element:e,min:0,max:1/0};case`EbnfOneOrMorePostfix`:return{type:`repetition`,element:e,min:1,max:1/0};case`EbnfExceptionPostfix`:return{type:`sequence`,elements:[e,{type:`terminal`,value:`-`},d(t.except)]};default:throw Error(`Unsupported EBNF postfix node: ${t.$type}`)}},`transformPostfix`),p=o(e=>e.postfixes.reduce((e,t)=>f(e,t),d(e.base)),`transformTerm`),m=o(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=o(e=>{a(e,i),e.title&&i.setTitle(e.title),e.rules.map(e=>i.addRule(m(e)))},`populateDb`),g={parser:{parse:o(e=>{i.clear(),s.debug(`[EBNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let r=n.value;s.debug(`[EBNF Parser] Parsed rules:`,r.rules.length),h(r),s.debug(`[EBNF Parser] Parse complete`)},`parse`),parser:{yy:i}},db:i,renderer:r,styles:n};export{g as diagram}; \ No newline at end of file +import{f as e,t}from"./mermaid-parser.core-C-Sc5_7E.js";import{n,r,t as i}from"./chunk-SVP7TREG--LDO57tP.js";import{t as a}from"./chunk-JWPE2WC7-CEttzwEN.js";import{Ir as o,Nr as s}from"./MermaidBlock-CI9NjqQx.js";var c=e().RailroadEbnf.parser.LangiumParser,l=o(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformChoice`),u=o(e=>{let t=e.elements.map(p);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformSequence`),d=o(e=>{switch(e.$type){case`EbnfTerminal`:return{type:`terminal`,value:e.value};case`EbnfNonTerminal`:return{type:`nonterminal`,name:e.name};case`EbnfSpecial`:return{type:`special`,text:e.text};case`EbnfGroup`:return l(e.element);case`EbnfOptional`:return{type:`optional`,element:l(e.element)};case`EbnfRepetition`:return{type:`repetition`,element:l(e.element),min:0,max:1/0};default:throw Error(`Unsupported EBNF primary node: ${e.$type}`)}},`transformPrimary`),f=o((e,t)=>{switch(t.$type){case`EbnfOptionalPostfix`:return{type:`optional`,element:e};case`EbnfZeroOrMorePostfix`:return{type:`repetition`,element:e,min:0,max:1/0};case`EbnfOneOrMorePostfix`:return{type:`repetition`,element:e,min:1,max:1/0};case`EbnfExceptionPostfix`:return{type:`sequence`,elements:[e,{type:`terminal`,value:`-`},d(t.except)]};default:throw Error(`Unsupported EBNF postfix node: ${t.$type}`)}},`transformPostfix`),p=o(e=>e.postfixes.reduce((e,t)=>f(e,t),d(e.base)),`transformTerm`),m=o(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=o(e=>{a(e,i),e.title&&i.setTitle(e.title),e.rules.map(e=>i.addRule(m(e)))},`populateDb`),g={parser:{parse:o(e=>{i.clear(),s.debug(`[EBNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let r=n.value;s.debug(`[EBNF Parser] Parsed rules:`,r.rules.length),h(r),s.debug(`[EBNF Parser] Parse complete`)},`parse`),parser:{yy:i}},db:i,renderer:r,styles:n};export{g as diagram}; \ No newline at end of file diff --git a/ksadk/server/static/assets/erDiagram-SSCWMZ5O-EAGqqR79.js b/ksadk/server/static/assets/erDiagram-SSCWMZ5O-JvDkJGJ3.js similarity index 99% rename from ksadk/server/static/assets/erDiagram-SSCWMZ5O-EAGqqR79.js rename to ksadk/server/static/assets/erDiagram-SSCWMZ5O-JvDkJGJ3.js index b7040eea..7f05e5d1 100644 --- a/ksadk/server/static/assets/erDiagram-SSCWMZ5O-EAGqqR79.js +++ b/ksadk/server/static/assets/erDiagram-SSCWMZ5O-JvDkJGJ3.js @@ -1,4 +1,4 @@ -import{t as e}from"./channel-4cQHKtx1.js";import{t}from"./chunk-XXDRQBXY-C_32ArgP.js";import{t as n}from"./chunk-POPQ4Y6H-C030x_Z1.js";import{Ar as r,Fr as i,Ir as a,Nr as o,Sr as s,Ut as c,Zn as l,br as u,d,er as f,lr as p,nr as m,or as h,sr as g,u as _,ur as v,yr as y,zt as b}from"./MermaidBlock-Dz4IP-Tx.js";var x=(function(){var e=a(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[6,9,21,23,25,27,34,37,38,39,40,41,43,46,47,51,53,54,55],n=[2,2],r=[1,7],i=[1,9],o=[1,10],s=[1,11],c=[1,12],l=[1,30],u=[1,23],d=[1,24],f=[1,25],p=[1,26],m=[1,27],h=[1,19],g=[1,28],_=[1,29],v=[1,20],y=[1,18],b=[1,21],x=[1,22],S=[2,6],C=[6,9,21,23,25,27,33,34,37,38,39,40,41,43,46,47,51,53,54,55],w=[1,36],T=[1,37],E=[1,38],D=[1,39],O=[1,40],k=[6,9,12,14,16,19,20,21,23,25,27,33,34,37,38,39,40,41,43,46,47,50,51,53,54,55,69,70,71,72,73],A=[1,46],j=[1,47],M=[1,57],N=[43,51,53,54,55,74,75],P=[1,70],F=[1,68],I=[1,65],L=[1,69],R=[1,71],z=[6,9,12,16,21,23,25,27,33,34,37,38,39,40,41,43,44,45,46,47,51,52,53,54,55,69,70,71,72,73],B=[1,78],V=[1,77],H=[1,76],U=[69,70,71,72,73],W=[1,91],G=[6,9,45,50],K=[6,9,12,44,45,50,51,52],q=[1,101],J=[1,100],Y=[1,99],X=[18,61],ee=[1,110],te=[1,109],ne=[20,43,51,53,54,55],Z=[18,61,64,66],Q={trace:a(function(){},`trace`),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,statement:8,NEWLINE:9,entityName:10,relSpec:11,COLON:12,role:13,STYLE_SEPARATOR:14,idList:15,BLOCK_START:16,attributes:17,BLOCK_STOP:18,SQS:19,SQE:20,title:21,title_value:22,acc_title:23,acc_title_value:24,acc_descr:25,acc_descr_value:26,acc_descr_multiline_value:27,direction:28,classDefStatement:29,classStatement:30,styleStatement:31,subgraphHeader:32,END:33,SUBGRAPH:34,separator:35,subgraphTitle:36,direction_tb:37,direction_bt:38,direction_rl:39,direction_lr:40,CLASSDEF:41,stylesOpt:42,UNICODE_TEXT:43,STYLE_TEXT:44,COMMA:45,CLASS:46,STYLE:47,style:48,styleComponent:49,SEMI:50,NUM:51,BRKT:52,ENTITY_NAME:53,DECIMAL_NUM:54,ENTITY_ONE:55,attribute:56,attributeType:57,attributeName:58,attributeKeyTypeList:59,attributeComment:60,ATTRIBUTE_WORD:61,"?":62,attributeKeyType:63,",":64,ATTRIBUTE_KEY:65,COMMENT:66,cardinality:67,relType:68,ZERO_OR_ONE:69,ZERO_OR_MORE:70,ONE_OR_MORE:71,ONLY_ONE:72,MD_PARENT:73,NON_IDENTIFYING:74,IDENTIFYING:75,WORD:76,$accept:0,$end:1},terminals_:{2:`error`,4:`ER_DIAGRAM`,6:`EOF`,9:`NEWLINE`,12:`COLON`,14:`STYLE_SEPARATOR`,16:`BLOCK_START`,18:`BLOCK_STOP`,19:`SQS`,20:`SQE`,21:`title`,22:`title_value`,23:`acc_title`,24:`acc_title_value`,25:`acc_descr`,26:`acc_descr_value`,27:`acc_descr_multiline_value`,33:`END`,34:`SUBGRAPH`,37:`direction_tb`,38:`direction_bt`,39:`direction_rl`,40:`direction_lr`,41:`CLASSDEF`,43:`UNICODE_TEXT`,44:`STYLE_TEXT`,45:`COMMA`,46:`CLASS`,47:`STYLE`,50:`SEMI`,51:`NUM`,52:`BRKT`,53:`ENTITY_NAME`,54:`DECIMAL_NUM`,55:`ENTITY_ONE`,61:`ATTRIBUTE_WORD`,62:`?`,64:`,`,65:`ATTRIBUTE_KEY`,66:`COMMENT`,69:`ZERO_OR_ONE`,70:`ZERO_OR_MORE`,71:`ONE_OR_MORE`,72:`ONLY_ONE`,73:`MD_PARENT`,74:`NON_IDENTIFYING`,75:`IDENTIFYING`,76:`WORD`},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[7,1],[8,5],[8,9],[8,7],[8,7],[8,4],[8,6],[8,3],[8,5],[8,1],[8,3],[8,7],[8,9],[8,6],[8,8],[8,4],[8,6],[8,2],[8,2],[8,2],[8,1],[8,1],[8,1],[8,1],[8,1],[8,3],[32,3],[32,6],[36,1],[36,2],[28,1],[28,1],[28,1],[28,1],[29,4],[15,1],[15,1],[15,3],[15,3],[30,3],[31,4],[42,1],[42,3],[48,1],[48,2],[35,1],[35,1],[35,1],[49,1],[49,1],[49,1],[49,1],[10,1],[10,1],[10,1],[10,1],[10,1],[17,1],[17,2],[56,2],[56,3],[56,3],[56,4],[57,1],[57,2],[58,1],[59,1],[59,3],[63,1],[60,1],[11,3],[67,1],[67,1],[67,1],[67,1],[67,1],[68,1],[68,1],[13,1],[13,1],[13,1]],performAction:a(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 1:break;case 2:this.$=[];break;case 3:this.$=a[s-1].concat(a[s]);break;case 4:this.$=a[s];break;case 5:case 6:this.$=[];break;case 7:r.addEntity(a[s-4]),r.addEntity(a[s-2]),r.addRelationship(a[s-4],a[s],a[s-2],a[s-3]),this.$=[a[s-4],a[s-2]];break;case 8:r.addEntity(a[s-8]),r.addEntity(a[s-4]),r.addRelationship(a[s-8],a[s],a[s-4],a[s-5]),r.setClass([a[s-8]],a[s-6]),r.setClass([a[s-4]],a[s-2]),this.$=[a[s-8],a[s-4]];break;case 9:r.addEntity(a[s-6]),r.addEntity(a[s-2]),r.addRelationship(a[s-6],a[s],a[s-2],a[s-3]),r.setClass([a[s-6]],a[s-4]),this.$=[a[s-6],a[s-2]];break;case 10:r.addEntity(a[s-6]),r.addEntity(a[s-4]),r.addRelationship(a[s-6],a[s],a[s-4],a[s-5]),r.setClass([a[s-4]],a[s-2]),this.$=[a[s-6],a[s-4]];break;case 11:r.addEntity(a[s-3]),r.addAttributes(a[s-3],a[s-1]),this.$=[a[s-3]];break;case 12:r.addEntity(a[s-5]),r.addAttributes(a[s-5],a[s-1]),r.setClass([a[s-5]],a[s-3]),this.$=[a[s-5]];break;case 13:r.addEntity(a[s-2]),this.$=[a[s-2]];break;case 14:r.addEntity(a[s-4]),r.setClass([a[s-4]],a[s-2]),this.$=[a[s-4]];break;case 15:r.addEntity(a[s]),this.$=[a[s]];break;case 16:r.addEntity(a[s-2]),r.setClass([a[s-2]],a[s]),this.$=[a[s-2]];break;case 17:r.addEntity(a[s-6],a[s-4]),r.addAttributes(a[s-6],a[s-1]),this.$=[a[s-6]];break;case 18:r.addEntity(a[s-8],a[s-6]),r.addAttributes(a[s-8],a[s-1]),r.setClass([a[s-8]],a[s-3]),this.$=[a[s-8]];break;case 19:r.addEntity(a[s-5],a[s-3]),this.$=[a[s-5]];break;case 20:r.addEntity(a[s-7],a[s-5]),r.setClass([a[s-7]],a[s-2]),this.$=[a[s-7]];break;case 21:r.addEntity(a[s-3],a[s-1]);break;case 22:r.addEntity(a[s-5],a[s-3]),r.setClass([a[s-5]],a[s]);break;case 23:case 24:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 25:case 26:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 27:r.subgraphDepth?this.$=a[s]:(r.setDirection(a[s].value),this.$=[]);break;case 31:r.subgraphDepth=(r.subgraphDepth||1)-1,this.$=r.addSubGraph({text:a[s-2].id},a[s-1],{text:a[s-2].text});break;case 32:r.subgraphDepth=(r.subgraphDepth||0)+1,this.$={id:a[s-1],text:a[s-1]};break;case 33:r.subgraphDepth=(r.subgraphDepth||0)+1,this.$={id:a[s-4],text:a[s-2]};break;case 34:case 59:case 60:case 61:case 62:case 86:this.$=a[s];break;case 35:this.$=a[s-1]+` `+a[s];break;case 36:this.$={stmt:`dir`,value:`TB`};break;case 37:this.$={stmt:`dir`,value:`BT`};break;case 38:this.$={stmt:`dir`,value:`RL`};break;case 39:this.$={stmt:`dir`,value:`LR`};break;case 40:this.$=a[s-3],r.addClass(a[s-2],a[s-1]);break;case 41:case 42:case 63:case 72:this.$=[a[s]];break;case 43:case 44:this.$=a[s-2].concat([a[s]]);break;case 45:this.$=a[s-2],r.setClass(a[s-1],a[s]);break;case 46:this.$=a[s-3],r.addCssStyles(a[s-2],a[s-1]);break;case 47:this.$=[a[s]];break;case 48:a[s-2].push(a[s]),this.$=a[s-2];break;case 50:this.$=a[s-1]+a[s];break;case 58:case 84:case 85:this.$=a[s].replace(/"/g,``);break;case 64:a[s].push(a[s-1]),this.$=a[s];break;case 65:this.$={type:a[s-1],name:a[s]};break;case 66:this.$={type:a[s-2],name:a[s-1],keys:a[s]};break;case 67:this.$={type:a[s-2],name:a[s-1],comment:a[s]};break;case 68:this.$={type:a[s-3],name:a[s-2],keys:a[s-1],comment:a[s]};break;case 69:case 71:case 74:this.$=a[s];break;case 70:this.$=a[s-1]+a[s];break;case 73:a[s-2].push(a[s]),this.$=a[s-2];break;case 75:this.$=a[s].replace(/"/g,``);break;case 76:this.$={cardA:a[s],relType:a[s-1],cardB:a[s-2]};break;case 77:this.$=r.Cardinality.ZERO_OR_ONE;break;case 78:this.$=r.Cardinality.ZERO_OR_MORE;break;case 79:this.$=r.Cardinality.ONE_OR_MORE;break;case 80:this.$=r.Cardinality.ONLY_ONE;break;case 81:this.$=r.Cardinality.MD_PARENT;break;case 82:this.$=r.Identification.NON_IDENTIFYING;break;case 83:this.$=r.Identification.IDENTIFYING;break}},`anonymous`),table:[{3:1,4:[1,2]},{1:[3]},e(t,n,{5:3}),{6:[1,4],7:5,8:6,9:r,10:8,21:i,23:o,25:s,27:c,28:13,29:14,30:15,31:16,32:17,34:l,37:u,38:d,39:f,40:p,41:m,43:h,46:g,47:_,51:v,53:y,54:b,55:x},e(t,S,{1:[2,1]}),e(C,[2,3]),e(C,[2,4]),e(C,[2,5]),e(C,[2,15],{11:31,67:35,14:[1,32],16:[1,33],19:[1,34],69:w,70:T,71:E,72:D,73:O}),{22:[1,41]},{24:[1,42]},{26:[1,43]},e(C,[2,26]),e(C,[2,27]),e(C,[2,28]),e(C,[2,29]),e(C,[2,30]),e(C,n,{5:44}),e(k,[2,58]),e(k,[2,59]),e(k,[2,60]),e(k,[2,61]),e(k,[2,62]),e(C,[2,36]),e(C,[2,37]),e(C,[2,38]),e(C,[2,39]),{15:45,43:A,44:j},{15:48,43:A,44:j},{15:49,43:A,44:j},{10:50,43:h,51:v,53:y,54:b,55:x},{10:51,43:h,51:v,53:y,54:b,55:x},{15:52,43:A,44:j},{17:53,18:[1,54],56:55,57:56,61:M},{10:58,43:h,51:v,53:y,54:b,55:x},{68:59,74:[1,60],75:[1,61]},e(N,[2,77]),e(N,[2,78]),e(N,[2,79]),e(N,[2,80]),e(N,[2,81]),e(C,[2,23]),e(C,[2,24]),e(C,[2,25]),{6:[1,63],7:5,8:6,9:r,10:8,21:i,23:o,25:s,27:c,28:13,29:14,30:15,31:16,32:17,33:[1,62],34:l,37:u,38:d,39:f,40:p,41:m,43:h,46:g,47:_,51:v,53:y,54:b,55:x},{12:P,42:64,44:F,45:I,48:66,49:67,51:L,52:R},e(z,[2,41]),e(z,[2,42]),{15:72,43:A,44:j,45:I},{12:P,42:73,44:F,45:I,48:66,49:67,51:L,52:R},{6:B,9:V,19:[1,75],35:74,50:H},{12:[1,79],14:[1,80]},e(C,[2,16],{67:35,11:81,16:[1,82],45:I,69:w,70:T,71:E,72:D,73:O}),{18:[1,83]},e(C,[2,13]),{17:84,18:[2,63],56:55,57:56,61:M},{58:85,61:[1,86]},{61:[2,69],62:[1,87]},{20:[1,88]},{67:89,69:w,70:T,71:E,72:D,73:O},e(U,[2,82]),e(U,[2,83]),e(C,[2,31]),e(C,S),{6:B,9:V,35:90,45:W,50:H},{43:[1,92],44:[1,93]},e(G,[2,47],{49:94,12:P,44:F,51:L,52:R}),e(K,[2,49]),e(K,[2,54]),e(K,[2,55]),e(K,[2,56]),e(K,[2,57]),e(C,[2,45],{45:I}),{6:B,9:V,35:95,45:W,50:H},e(C,[2,32]),{10:97,36:96,43:h,51:v,53:y,54:b,55:x},e(C,[2,51]),e(C,[2,52]),e(C,[2,53]),{13:98,43:q,53:J,76:Y},{15:102,43:A,44:j},{10:103,43:h,51:v,53:y,54:b,55:x},{17:104,18:[1,105],56:55,57:56,61:M},e(C,[2,11]),{18:[2,64]},e(X,[2,65],{59:106,60:107,63:108,65:ee,66:te}),e([18,61,65,66],[2,71]),{61:[2,70]},e(C,[2,21],{14:[1,112],16:[1,111]}),e([43,51,53,54,55],[2,76]),e(C,[2,40]),{12:P,44:F,48:113,49:67,51:L,52:R},e(z,[2,43]),e(z,[2,44]),e(K,[2,50]),e(C,[2,46]),{10:115,20:[1,114],43:h,51:v,53:y,54:b,55:x},e(ne,[2,34]),e(C,[2,7]),e(C,[2,84]),e(C,[2,85]),e(C,[2,86]),{12:[1,116],45:I},{12:[1,118],14:[1,117]},{18:[1,119]},e(C,[2,14]),e(X,[2,66],{60:120,64:[1,121],66:te}),e(X,[2,67]),e(Z,[2,72]),e(X,[2,75]),e(Z,[2,74]),{17:122,18:[1,123],56:55,57:56,61:M},{15:124,43:A,44:j},e(G,[2,48],{49:94,12:P,44:F,51:L,52:R}),{6:B,9:V,35:125,50:H},e(ne,[2,35]),{13:126,43:q,53:J,76:Y},{15:127,43:A,44:j},{13:128,43:q,53:J,76:Y},e(C,[2,12]),e(X,[2,68]),{63:129,65:ee},{18:[1,130]},e(C,[2,19]),e(C,[2,22],{16:[1,131],45:I}),e(C,[2,33]),e(C,[2,10]),{12:[1,132],45:I},e(C,[2,9]),e(Z,[2,73]),e(C,[2,17]),{17:133,18:[1,134],56:55,57:56,61:M},{13:135,43:q,53:J,76:Y},{18:[1,136]},e(C,[2,20]),e(C,[2,8]),e(C,[2,18])],defaultActions:{84:[2,64],87:[2,70]},parseError:a(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:a(function(e){var t=this,n=[0],r=[],i=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;typeof g.yy.parseError==`function`?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function b(e){n.length-=2*e,i.length-=e,o.length-=e}a(b,`popStack`);function x(){var e=r.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(r=e,e=r.pop()),e=t.symbols_[e]||e),e}a(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=n[n.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`: +import{t as e}from"./channel-CdffTTpb.js";import{t}from"./chunk-XXDRQBXY-WtVtVhpq.js";import{t as n}from"./chunk-POPQ4Y6H-BvutC1JH.js";import{Ar as r,Fr as i,Ir as a,Nr as o,Sr as s,Ut as c,Zn as l,br as u,d,er as f,lr as p,nr as m,or as h,sr as g,u as _,ur as v,yr as y,zt as b}from"./MermaidBlock-CI9NjqQx.js";var x=(function(){var e=a(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[6,9,21,23,25,27,34,37,38,39,40,41,43,46,47,51,53,54,55],n=[2,2],r=[1,7],i=[1,9],o=[1,10],s=[1,11],c=[1,12],l=[1,30],u=[1,23],d=[1,24],f=[1,25],p=[1,26],m=[1,27],h=[1,19],g=[1,28],_=[1,29],v=[1,20],y=[1,18],b=[1,21],x=[1,22],S=[2,6],C=[6,9,21,23,25,27,33,34,37,38,39,40,41,43,46,47,51,53,54,55],w=[1,36],T=[1,37],E=[1,38],D=[1,39],O=[1,40],k=[6,9,12,14,16,19,20,21,23,25,27,33,34,37,38,39,40,41,43,46,47,50,51,53,54,55,69,70,71,72,73],A=[1,46],j=[1,47],M=[1,57],N=[43,51,53,54,55,74,75],P=[1,70],F=[1,68],I=[1,65],L=[1,69],R=[1,71],z=[6,9,12,16,21,23,25,27,33,34,37,38,39,40,41,43,44,45,46,47,51,52,53,54,55,69,70,71,72,73],B=[1,78],V=[1,77],H=[1,76],U=[69,70,71,72,73],W=[1,91],G=[6,9,45,50],K=[6,9,12,44,45,50,51,52],q=[1,101],J=[1,100],Y=[1,99],X=[18,61],ee=[1,110],te=[1,109],ne=[20,43,51,53,54,55],Z=[18,61,64,66],Q={trace:a(function(){},`trace`),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,statement:8,NEWLINE:9,entityName:10,relSpec:11,COLON:12,role:13,STYLE_SEPARATOR:14,idList:15,BLOCK_START:16,attributes:17,BLOCK_STOP:18,SQS:19,SQE:20,title:21,title_value:22,acc_title:23,acc_title_value:24,acc_descr:25,acc_descr_value:26,acc_descr_multiline_value:27,direction:28,classDefStatement:29,classStatement:30,styleStatement:31,subgraphHeader:32,END:33,SUBGRAPH:34,separator:35,subgraphTitle:36,direction_tb:37,direction_bt:38,direction_rl:39,direction_lr:40,CLASSDEF:41,stylesOpt:42,UNICODE_TEXT:43,STYLE_TEXT:44,COMMA:45,CLASS:46,STYLE:47,style:48,styleComponent:49,SEMI:50,NUM:51,BRKT:52,ENTITY_NAME:53,DECIMAL_NUM:54,ENTITY_ONE:55,attribute:56,attributeType:57,attributeName:58,attributeKeyTypeList:59,attributeComment:60,ATTRIBUTE_WORD:61,"?":62,attributeKeyType:63,",":64,ATTRIBUTE_KEY:65,COMMENT:66,cardinality:67,relType:68,ZERO_OR_ONE:69,ZERO_OR_MORE:70,ONE_OR_MORE:71,ONLY_ONE:72,MD_PARENT:73,NON_IDENTIFYING:74,IDENTIFYING:75,WORD:76,$accept:0,$end:1},terminals_:{2:`error`,4:`ER_DIAGRAM`,6:`EOF`,9:`NEWLINE`,12:`COLON`,14:`STYLE_SEPARATOR`,16:`BLOCK_START`,18:`BLOCK_STOP`,19:`SQS`,20:`SQE`,21:`title`,22:`title_value`,23:`acc_title`,24:`acc_title_value`,25:`acc_descr`,26:`acc_descr_value`,27:`acc_descr_multiline_value`,33:`END`,34:`SUBGRAPH`,37:`direction_tb`,38:`direction_bt`,39:`direction_rl`,40:`direction_lr`,41:`CLASSDEF`,43:`UNICODE_TEXT`,44:`STYLE_TEXT`,45:`COMMA`,46:`CLASS`,47:`STYLE`,50:`SEMI`,51:`NUM`,52:`BRKT`,53:`ENTITY_NAME`,54:`DECIMAL_NUM`,55:`ENTITY_ONE`,61:`ATTRIBUTE_WORD`,62:`?`,64:`,`,65:`ATTRIBUTE_KEY`,66:`COMMENT`,69:`ZERO_OR_ONE`,70:`ZERO_OR_MORE`,71:`ONE_OR_MORE`,72:`ONLY_ONE`,73:`MD_PARENT`,74:`NON_IDENTIFYING`,75:`IDENTIFYING`,76:`WORD`},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[7,1],[8,5],[8,9],[8,7],[8,7],[8,4],[8,6],[8,3],[8,5],[8,1],[8,3],[8,7],[8,9],[8,6],[8,8],[8,4],[8,6],[8,2],[8,2],[8,2],[8,1],[8,1],[8,1],[8,1],[8,1],[8,3],[32,3],[32,6],[36,1],[36,2],[28,1],[28,1],[28,1],[28,1],[29,4],[15,1],[15,1],[15,3],[15,3],[30,3],[31,4],[42,1],[42,3],[48,1],[48,2],[35,1],[35,1],[35,1],[49,1],[49,1],[49,1],[49,1],[10,1],[10,1],[10,1],[10,1],[10,1],[17,1],[17,2],[56,2],[56,3],[56,3],[56,4],[57,1],[57,2],[58,1],[59,1],[59,3],[63,1],[60,1],[11,3],[67,1],[67,1],[67,1],[67,1],[67,1],[68,1],[68,1],[13,1],[13,1],[13,1]],performAction:a(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 1:break;case 2:this.$=[];break;case 3:this.$=a[s-1].concat(a[s]);break;case 4:this.$=a[s];break;case 5:case 6:this.$=[];break;case 7:r.addEntity(a[s-4]),r.addEntity(a[s-2]),r.addRelationship(a[s-4],a[s],a[s-2],a[s-3]),this.$=[a[s-4],a[s-2]];break;case 8:r.addEntity(a[s-8]),r.addEntity(a[s-4]),r.addRelationship(a[s-8],a[s],a[s-4],a[s-5]),r.setClass([a[s-8]],a[s-6]),r.setClass([a[s-4]],a[s-2]),this.$=[a[s-8],a[s-4]];break;case 9:r.addEntity(a[s-6]),r.addEntity(a[s-2]),r.addRelationship(a[s-6],a[s],a[s-2],a[s-3]),r.setClass([a[s-6]],a[s-4]),this.$=[a[s-6],a[s-2]];break;case 10:r.addEntity(a[s-6]),r.addEntity(a[s-4]),r.addRelationship(a[s-6],a[s],a[s-4],a[s-5]),r.setClass([a[s-4]],a[s-2]),this.$=[a[s-6],a[s-4]];break;case 11:r.addEntity(a[s-3]),r.addAttributes(a[s-3],a[s-1]),this.$=[a[s-3]];break;case 12:r.addEntity(a[s-5]),r.addAttributes(a[s-5],a[s-1]),r.setClass([a[s-5]],a[s-3]),this.$=[a[s-5]];break;case 13:r.addEntity(a[s-2]),this.$=[a[s-2]];break;case 14:r.addEntity(a[s-4]),r.setClass([a[s-4]],a[s-2]),this.$=[a[s-4]];break;case 15:r.addEntity(a[s]),this.$=[a[s]];break;case 16:r.addEntity(a[s-2]),r.setClass([a[s-2]],a[s]),this.$=[a[s-2]];break;case 17:r.addEntity(a[s-6],a[s-4]),r.addAttributes(a[s-6],a[s-1]),this.$=[a[s-6]];break;case 18:r.addEntity(a[s-8],a[s-6]),r.addAttributes(a[s-8],a[s-1]),r.setClass([a[s-8]],a[s-3]),this.$=[a[s-8]];break;case 19:r.addEntity(a[s-5],a[s-3]),this.$=[a[s-5]];break;case 20:r.addEntity(a[s-7],a[s-5]),r.setClass([a[s-7]],a[s-2]),this.$=[a[s-7]];break;case 21:r.addEntity(a[s-3],a[s-1]);break;case 22:r.addEntity(a[s-5],a[s-3]),r.setClass([a[s-5]],a[s]);break;case 23:case 24:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 25:case 26:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 27:r.subgraphDepth?this.$=a[s]:(r.setDirection(a[s].value),this.$=[]);break;case 31:r.subgraphDepth=(r.subgraphDepth||1)-1,this.$=r.addSubGraph({text:a[s-2].id},a[s-1],{text:a[s-2].text});break;case 32:r.subgraphDepth=(r.subgraphDepth||0)+1,this.$={id:a[s-1],text:a[s-1]};break;case 33:r.subgraphDepth=(r.subgraphDepth||0)+1,this.$={id:a[s-4],text:a[s-2]};break;case 34:case 59:case 60:case 61:case 62:case 86:this.$=a[s];break;case 35:this.$=a[s-1]+` `+a[s];break;case 36:this.$={stmt:`dir`,value:`TB`};break;case 37:this.$={stmt:`dir`,value:`BT`};break;case 38:this.$={stmt:`dir`,value:`RL`};break;case 39:this.$={stmt:`dir`,value:`LR`};break;case 40:this.$=a[s-3],r.addClass(a[s-2],a[s-1]);break;case 41:case 42:case 63:case 72:this.$=[a[s]];break;case 43:case 44:this.$=a[s-2].concat([a[s]]);break;case 45:this.$=a[s-2],r.setClass(a[s-1],a[s]);break;case 46:this.$=a[s-3],r.addCssStyles(a[s-2],a[s-1]);break;case 47:this.$=[a[s]];break;case 48:a[s-2].push(a[s]),this.$=a[s-2];break;case 50:this.$=a[s-1]+a[s];break;case 58:case 84:case 85:this.$=a[s].replace(/"/g,``);break;case 64:a[s].push(a[s-1]),this.$=a[s];break;case 65:this.$={type:a[s-1],name:a[s]};break;case 66:this.$={type:a[s-2],name:a[s-1],keys:a[s]};break;case 67:this.$={type:a[s-2],name:a[s-1],comment:a[s]};break;case 68:this.$={type:a[s-3],name:a[s-2],keys:a[s-1],comment:a[s]};break;case 69:case 71:case 74:this.$=a[s];break;case 70:this.$=a[s-1]+a[s];break;case 73:a[s-2].push(a[s]),this.$=a[s-2];break;case 75:this.$=a[s].replace(/"/g,``);break;case 76:this.$={cardA:a[s],relType:a[s-1],cardB:a[s-2]};break;case 77:this.$=r.Cardinality.ZERO_OR_ONE;break;case 78:this.$=r.Cardinality.ZERO_OR_MORE;break;case 79:this.$=r.Cardinality.ONE_OR_MORE;break;case 80:this.$=r.Cardinality.ONLY_ONE;break;case 81:this.$=r.Cardinality.MD_PARENT;break;case 82:this.$=r.Identification.NON_IDENTIFYING;break;case 83:this.$=r.Identification.IDENTIFYING;break}},`anonymous`),table:[{3:1,4:[1,2]},{1:[3]},e(t,n,{5:3}),{6:[1,4],7:5,8:6,9:r,10:8,21:i,23:o,25:s,27:c,28:13,29:14,30:15,31:16,32:17,34:l,37:u,38:d,39:f,40:p,41:m,43:h,46:g,47:_,51:v,53:y,54:b,55:x},e(t,S,{1:[2,1]}),e(C,[2,3]),e(C,[2,4]),e(C,[2,5]),e(C,[2,15],{11:31,67:35,14:[1,32],16:[1,33],19:[1,34],69:w,70:T,71:E,72:D,73:O}),{22:[1,41]},{24:[1,42]},{26:[1,43]},e(C,[2,26]),e(C,[2,27]),e(C,[2,28]),e(C,[2,29]),e(C,[2,30]),e(C,n,{5:44}),e(k,[2,58]),e(k,[2,59]),e(k,[2,60]),e(k,[2,61]),e(k,[2,62]),e(C,[2,36]),e(C,[2,37]),e(C,[2,38]),e(C,[2,39]),{15:45,43:A,44:j},{15:48,43:A,44:j},{15:49,43:A,44:j},{10:50,43:h,51:v,53:y,54:b,55:x},{10:51,43:h,51:v,53:y,54:b,55:x},{15:52,43:A,44:j},{17:53,18:[1,54],56:55,57:56,61:M},{10:58,43:h,51:v,53:y,54:b,55:x},{68:59,74:[1,60],75:[1,61]},e(N,[2,77]),e(N,[2,78]),e(N,[2,79]),e(N,[2,80]),e(N,[2,81]),e(C,[2,23]),e(C,[2,24]),e(C,[2,25]),{6:[1,63],7:5,8:6,9:r,10:8,21:i,23:o,25:s,27:c,28:13,29:14,30:15,31:16,32:17,33:[1,62],34:l,37:u,38:d,39:f,40:p,41:m,43:h,46:g,47:_,51:v,53:y,54:b,55:x},{12:P,42:64,44:F,45:I,48:66,49:67,51:L,52:R},e(z,[2,41]),e(z,[2,42]),{15:72,43:A,44:j,45:I},{12:P,42:73,44:F,45:I,48:66,49:67,51:L,52:R},{6:B,9:V,19:[1,75],35:74,50:H},{12:[1,79],14:[1,80]},e(C,[2,16],{67:35,11:81,16:[1,82],45:I,69:w,70:T,71:E,72:D,73:O}),{18:[1,83]},e(C,[2,13]),{17:84,18:[2,63],56:55,57:56,61:M},{58:85,61:[1,86]},{61:[2,69],62:[1,87]},{20:[1,88]},{67:89,69:w,70:T,71:E,72:D,73:O},e(U,[2,82]),e(U,[2,83]),e(C,[2,31]),e(C,S),{6:B,9:V,35:90,45:W,50:H},{43:[1,92],44:[1,93]},e(G,[2,47],{49:94,12:P,44:F,51:L,52:R}),e(K,[2,49]),e(K,[2,54]),e(K,[2,55]),e(K,[2,56]),e(K,[2,57]),e(C,[2,45],{45:I}),{6:B,9:V,35:95,45:W,50:H},e(C,[2,32]),{10:97,36:96,43:h,51:v,53:y,54:b,55:x},e(C,[2,51]),e(C,[2,52]),e(C,[2,53]),{13:98,43:q,53:J,76:Y},{15:102,43:A,44:j},{10:103,43:h,51:v,53:y,54:b,55:x},{17:104,18:[1,105],56:55,57:56,61:M},e(C,[2,11]),{18:[2,64]},e(X,[2,65],{59:106,60:107,63:108,65:ee,66:te}),e([18,61,65,66],[2,71]),{61:[2,70]},e(C,[2,21],{14:[1,112],16:[1,111]}),e([43,51,53,54,55],[2,76]),e(C,[2,40]),{12:P,44:F,48:113,49:67,51:L,52:R},e(z,[2,43]),e(z,[2,44]),e(K,[2,50]),e(C,[2,46]),{10:115,20:[1,114],43:h,51:v,53:y,54:b,55:x},e(ne,[2,34]),e(C,[2,7]),e(C,[2,84]),e(C,[2,85]),e(C,[2,86]),{12:[1,116],45:I},{12:[1,118],14:[1,117]},{18:[1,119]},e(C,[2,14]),e(X,[2,66],{60:120,64:[1,121],66:te}),e(X,[2,67]),e(Z,[2,72]),e(X,[2,75]),e(Z,[2,74]),{17:122,18:[1,123],56:55,57:56,61:M},{15:124,43:A,44:j},e(G,[2,48],{49:94,12:P,44:F,51:L,52:R}),{6:B,9:V,35:125,50:H},e(ne,[2,35]),{13:126,43:q,53:J,76:Y},{15:127,43:A,44:j},{13:128,43:q,53:J,76:Y},e(C,[2,12]),e(X,[2,68]),{63:129,65:ee},{18:[1,130]},e(C,[2,19]),e(C,[2,22],{16:[1,131],45:I}),e(C,[2,33]),e(C,[2,10]),{12:[1,132],45:I},e(C,[2,9]),e(Z,[2,73]),e(C,[2,17]),{17:133,18:[1,134],56:55,57:56,61:M},{13:135,43:q,53:J,76:Y},{18:[1,136]},e(C,[2,20]),e(C,[2,8]),e(C,[2,18])],defaultActions:{84:[2,64],87:[2,70]},parseError:a(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:a(function(e){var t=this,n=[0],r=[],i=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;typeof g.yy.parseError==`function`?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function b(e){n.length-=2*e,i.length-=e,o.length-=e}a(b,`popStack`);function x(){var e=r.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(r=e,e=r.pop()),e=t.symbols_[e]||e),e}a(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=n[n.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`: `+h.showPosition()+` Expecting `+j.join(`, `)+`, got '`+(this.terminals_[S]||S)+`'`:`Parse error on line `+(l+1)+`: Unexpected `+(S==p?`end of input`:`'`+(this.terminals_[S]||S)+`'`),this.parseError(M,{text:h.match,token:this.terminals_[S]||S,line:h.yylineno,loc:v,expected:j})}if(T[0]instanceof Array&&T.length>1)throw Error(`Parse Error: multiple actions possible at state: `+w+`, token: `+S);switch(T[0]){case 1:n.push(S),i.push(h.yytext),o.push(h.yylloc),n.push(T[1]),S=null,C?(S=C,C=null):(u=h.yyleng,c=h.yytext,l=h.yylineno,v=h.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[T[1]][1],D.$=i[i.length-k],D._$={first_line:o[o.length-(k||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(k||1)].first_column,last_column:o[o.length-1].last_column},y&&(D._$.range=[o[o.length-(k||1)].range[0],o[o.length-1].range[1]]),E=this.performAction.apply(D,[c,u,l,g.yy,T[1],i,o].concat(m)),E!==void 0)return E;k&&(n=n.slice(0,-1*k*2),i=i.slice(0,-1*k),o=o.slice(0,-1*k)),n.push(this.productions_[T[1]][0]),i.push(D.$),o.push(D._$),A=s[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0},`parse`)};Q.lexer=(function(){return{EOF:1,parseError:a(function(e,t){if(this.yy.parser)this.yy.parser.parseError(e,t);else throw Error(e)},`parseError`),setInput:a(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=``,this.conditionStack=[`INITIAL`],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},`setInput`),input:a(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},`input`),unput:a(function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},`unput`),more:a(function(){return this._more=!0,this},`more`),reject:a(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(`Lexical error on line `+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:``,token:null,line:this.yylineno});return this},`reject`),less:a(function(e){this.unput(this.match.slice(e))},`less`),pastInput:a(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?`...`:``)+e.substr(-20).replace(/\n/g,``)},`pastInput`),upcomingInput:a(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?`...`:``)).replace(/\n/g,``)},`upcomingInput`),showPosition:a(function(){var e=this.pastInput(),t=Array(e.length+1).join(`-`);return e+this.upcomingInput()+` diff --git a/ksadk/server/static/assets/eventmodeling-NTZA5JFV-CMgMaJrC.js b/ksadk/server/static/assets/eventmodeling-NTZA5JFV-CMgMaJrC.js deleted file mode 100644 index 49511d0f..00000000 --- a/ksadk/server/static/assets/eventmodeling-NTZA5JFV-CMgMaJrC.js +++ /dev/null @@ -1 +0,0 @@ -import{O as e}from"./mermaid-parser.core-KGSy4jWT.js";export{e as createEventModelingServices}; \ No newline at end of file diff --git a/ksadk/server/static/assets/eventmodeling-NTZA5JFV-vjy4Z61x.js b/ksadk/server/static/assets/eventmodeling-NTZA5JFV-vjy4Z61x.js new file mode 100644 index 00000000..2f9add2d --- /dev/null +++ b/ksadk/server/static/assets/eventmodeling-NTZA5JFV-vjy4Z61x.js @@ -0,0 +1 @@ +import{O as e}from"./mermaid-parser.core-C-Sc5_7E.js";export{e as createEventModelingServices}; \ No newline at end of file diff --git a/ksadk/server/static/assets/flowDiagram-A5DVABFB-BBKL0x3P.js b/ksadk/server/static/assets/flowDiagram-A5DVABFB-BBKL0x3P.js deleted file mode 100644 index aaedd0b7..00000000 --- a/ksadk/server/static/assets/flowDiagram-A5DVABFB-BBKL0x3P.js +++ /dev/null @@ -1 +0,0 @@ -import"./chunk-F27PBJKO-C-ipQzuS.js";import"./chunk-XXDRQBXY-C_32ArgP.js";import"./chunk-POPQ4Y6H-C030x_Z1.js";import{n as e}from"./chunk-RHFEMEQ7-yyGpsz4n.js";import"./MermaidBlock-Dz4IP-Tx.js";export{e as diagram}; \ No newline at end of file diff --git a/ksadk/server/static/assets/flowDiagram-A5DVABFB-CvJ64Qzs.js b/ksadk/server/static/assets/flowDiagram-A5DVABFB-CvJ64Qzs.js new file mode 100644 index 00000000..935c269b --- /dev/null +++ b/ksadk/server/static/assets/flowDiagram-A5DVABFB-CvJ64Qzs.js @@ -0,0 +1 @@ +import"./chunk-F27PBJKO-DNUQP5bs.js";import"./chunk-XXDRQBXY-WtVtVhpq.js";import"./chunk-POPQ4Y6H-BvutC1JH.js";import{n as e}from"./chunk-RHFEMEQ7-BIXm03MG.js";import"./MermaidBlock-CI9NjqQx.js";export{e as diagram}; \ No newline at end of file diff --git a/ksadk/server/static/assets/ganttDiagram-EL5Y4UJY-DqJsKb59.js b/ksadk/server/static/assets/ganttDiagram-EL5Y4UJY-B-SEC706.js similarity index 99% rename from ksadk/server/static/assets/ganttDiagram-EL5Y4UJY-DqJsKb59.js rename to ksadk/server/static/assets/ganttDiagram-EL5Y4UJY-B-SEC706.js index 8452204f..225a2566 100644 --- a/ksadk/server/static/assets/ganttDiagram-EL5Y4UJY-DqJsKb59.js +++ b/ksadk/server/static/assets/ganttDiagram-EL5Y4UJY-B-SEC706.js @@ -1,4 +1,4 @@ -import{Ct as e,Tt as t}from"./index-8ipRcQ-M.js";import{a as n,i as r,n as i,r as a,t as o}from"./linear-BHjG8b-J.js";import{t as s}from"./init-D6jRqBbL.js";import{Gn as c,Hn as l,Ir as u,Jn as d,Kn as f,Nr as p,Pr as m,Sr as h,Un as g,Ut as _,Xn as v,Yn as y,Zn as b,br as x,er as S,gn as C,lr as w,nr as T,or as E,rr as D,sr as O,ur as k,yr as ee}from"./MermaidBlock-Dz4IP-Tx.js";function A(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n=i)&&(n=i)}return n}function te(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n>t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function ne(e){return e}var j=1,re=2,ie=3,ae=4,oe=1e-6;function se(e){return`translate(`+e+`,0)`}function ce(e){return`translate(0,`+e+`)`}function le(e){return t=>+e(t)}function ue(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),n=>+e(n)+t}function de(){return!this.__axis}function fe(e,t){var n=[],r=null,i=null,a=6,o=6,s=3,c=typeof window<`u`&&window.devicePixelRatio>1?0:.5,l=e===j||e===ae?-1:1,u=e===ae||e===re?`x`:`y`,d=e===j||e===ie?se:ce;function f(f){var p=r??(t.ticks?t.ticks.apply(t,n):t.domain()),m=i??(t.tickFormat?t.tickFormat.apply(t,n):ne),h=Math.max(a,0)+s,g=t.range(),_=+g[0]+c,v=+g[g.length-1]+c,y=(t.bandwidth?ue:le)(t.copy(),c),b=f.selection?f.selection():f,x=b.selectAll(`.domain`).data([null]),S=b.selectAll(`.tick`).data(p,t).order(),C=S.exit(),w=S.enter().append(`g`).attr(`class`,`tick`),T=S.select(`line`),E=S.select(`text`);x=x.merge(x.enter().insert(`path`,`.tick`).attr(`class`,`domain`).attr(`stroke`,`currentColor`)),S=S.merge(w),T=T.merge(w.append(`line`).attr(`stroke`,`currentColor`).attr(u+`2`,l*a)),E=E.merge(w.append(`text`).attr(`fill`,`currentColor`).attr(u,l*h).attr(`dy`,e===j?`0em`:e===ie?`0.71em`:`0.32em`)),f!==b&&(x=x.transition(f),S=S.transition(f),T=T.transition(f),E=E.transition(f),C=C.transition(f).attr(`opacity`,oe).attr(`transform`,function(e){return isFinite(e=y(e))?d(e+c):this.getAttribute(`transform`)}),w.attr(`opacity`,oe).attr(`transform`,function(e){var t=this.parentNode.__axis;return d((t&&isFinite(t=t(e))?t:y(e))+c)})),C.remove(),x.attr(`d`,e===ae||e===re?o?`M`+l*o+`,`+_+`H`+c+`V`+v+`H`+l*o:`M`+c+`,`+_+`V`+v:o?`M`+_+`,`+l*o+`V`+c+`H`+v+`V`+l*o:`M`+_+`,`+c+`H`+v),S.attr(`opacity`,1).attr(`transform`,function(e){return d(y(e)+c)}),T.attr(u+`2`,l*a),E.attr(u,l*h).text(m),b.filter(de).attr(`fill`,`none`).attr(`font-size`,10).attr(`font-family`,`sans-serif`).attr(`text-anchor`,e===re?`start`:e===ae?`end`:`middle`),b.each(function(){this.__axis=y})}return f.scale=function(e){return arguments.length?(t=e,f):t},f.ticks=function(){return n=Array.from(arguments),f},f.tickArguments=function(e){return arguments.length?(n=e==null?[]:Array.from(e),f):n.slice()},f.tickValues=function(e){return arguments.length?(r=e==null?null:Array.from(e),f):r&&r.slice()},f.tickFormat=function(e){return arguments.length?(i=e,f):i},f.tickSize=function(e){return arguments.length?(a=o=+e,f):a},f.tickSizeInner=function(e){return arguments.length?(a=+e,f):a},f.tickSizeOuter=function(e){return arguments.length?(o=+e,f):o},f.tickPadding=function(e){return arguments.length?(s=+e,f):s},f.offset=function(e){return arguments.length?(c=+e,f):c},f}function pe(e){return fe(j,e)}function me(e){return fe(ie,e)}var he=Math.PI/180,ge=180/Math.PI,_e=18,ve=.96422,ye=1,be=.82521,xe=4/29,Se=6/29,Ce=3*Se*Se,we=Se*Se*Se;function Te(e){if(e instanceof M)return new M(e.l,e.a,e.b,e.opacity);if(e instanceof N)return Ne(e);e instanceof f||(e=d(e));var t=Ae(e.r),n=Ae(e.g),r=Ae(e.b),i=De((.2225045*t+.7168786*n+.0606169*r)/ye),a,o;return t===n&&n===r?a=o=i:(a=De((.4360747*t+.3850649*n+.1430804*r)/ve),o=De((.0139322*t+.0971045*n+.7141733*r)/be)),new M(116*i-16,500*(a-i),200*(i-o),e.opacity)}function Ee(e,t,n,r){return arguments.length===1?Te(e):new M(e,t,n,r??1)}function M(e,t,n,r){this.l=+e,this.a=+t,this.b=+n,this.opacity=+r}y(M,Ee,v(c,{brighter(e){return new M(this.l+_e*(e??1),this.a,this.b,this.opacity)},darker(e){return new M(this.l-_e*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,n=isNaN(this.b)?e:e-this.b/200;return t=ve*Oe(t),e=ye*Oe(e),n=be*Oe(n),new f(ke(3.1338561*t-1.6168667*e-.4906146*n),ke(-.9787684*t+1.9161415*e+.033454*n),ke(.0719453*t-.2289914*e+1.4052427*n),this.opacity)}}));function De(e){return e>we?e**(1/3):e/Ce+xe}function Oe(e){return e>Se?e*e*e:Ce*(e-xe)}function ke(e){return 255*(e<=.0031308?12.92*e:1.055*e**(1/2.4)-.055)}function Ae(e){return(e/=255)<=.04045?e/12.92:((e+.055)/1.055)**2.4}function je(e){if(e instanceof N)return new N(e.h,e.c,e.l,e.opacity);if(e instanceof M||(e=Te(e)),e.a===0&&e.b===0)return new N(NaN,0(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{let t=i(e),n=i.ceil(e);return e-t(t(e=new Date(+e),n==null?1:Math.floor(n)),e),i.range=(n,r,a)=>{let o=[];if(n=i.ceil(n),a=a==null?1:Math.floor(a),!(n0))return o;let s;do o.push(s=new Date(+n)),t(n,a),e(n);while(sP(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}),n&&(i.count=(t,r)=>(Le.setTime(+t),Re.setTime(+r),e(Le),e(Re),Math.floor(n(Le,Re))),i.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i)),i}var ze=P(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);ze.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?P(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):ze),ze.range;var F=1e3,I=F*60,L=I*60,R=L*24,Be=R*7,Ve=R*30,He=R*365,z=P(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*F)},(e,t)=>(t-e)/F,e=>e.getUTCSeconds());z.range;var Ue=P(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*F)},(e,t)=>{e.setTime(+e+t*I)},(e,t)=>(t-e)/I,e=>e.getMinutes());Ue.range;var We=P(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*I)},(e,t)=>(t-e)/I,e=>e.getUTCMinutes());We.range;var Ge=P(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*F-e.getMinutes()*I)},(e,t)=>{e.setTime(+e+t*L)},(e,t)=>(t-e)/L,e=>e.getHours());Ge.range;var Ke=P(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*L)},(e,t)=>(t-e)/L,e=>e.getUTCHours());Ke.range;var B=P(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*I)/R,e=>e.getDate()-1);B.range;var qe=P(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/R,e=>e.getUTCDate()-1);qe.range;var Je=P(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/R,e=>Math.floor(e/R));Je.range;function V(e){return P(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*I)/Be)}var Ye=V(0),Xe=V(1),Ze=V(2),Qe=V(3),H=V(4),$e=V(5),et=V(6);Ye.range,Xe.range,Ze.range,Qe.range,H.range,$e.range,et.range;function U(e){return P(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/Be)}var tt=U(0),nt=U(1),rt=U(2),it=U(3),at=U(4),ot=U(5),st=U(6);tt.range,nt.range,rt.range,it.range,at.range,ot.range,st.range;var ct=P(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());ct.range;var lt=P(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());lt.range;var W=P(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());W.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:P(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}),W.range;var G=P(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());G.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:P(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}),G.range;function ut(e,t,i,a,o,s){let c=[[z,1,F],[z,5,5*F],[z,15,15*F],[z,30,30*F],[s,1,I],[s,5,5*I],[s,15,15*I],[s,30,30*I],[o,1,L],[o,3,3*L],[o,6,6*L],[o,12,12*L],[a,1,R],[a,2,2*R],[i,1,Be],[t,1,Ve],[t,3,3*Ve],[e,1,He]];function l(e,t,n){let r=te).right(c,o);if(s===c.length)return e.every(r(t/He,i/He,a));if(s===0)return ze.every(Math.max(r(t,i,a),1));let[l,u]=c[o/c[s-1][2]53)return null;`w`in r||(r.w=1),`Z`in r?(a=gt(_t(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?nt.ceil(a):nt(a),a=qe.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=ht(_t(r.y,0,1)),o=a.getDay(),a=o>4||o===0?Xe.ceil(a):Xe(a),a=B.offset(a,(r.V-1)*7),r.y=a.getFullYear(),r.m=a.getMonth(),r.d=a.getDate()+(r.w+6)%7)}else (`W`in r||`U`in r)&&(`w`in r||(r.w=`u`in r?r.u%7:+(`W`in r)),o=`Z`in r?gt(_t(r.y,0,1)).getUTCDay():ht(_t(r.y,0,1)).getDay(),r.m=0,r.d=`W`in r?(r.w+6)%7+r.W*7-(o+5)%7:r.w+r.U*7-(o+6)%7);return`Z`in r?(r.H+=r.Z/100|0,r.M+=r.Z%100,gt(r)):ht(r)}}function w(e,t,n,r){for(var i=0,a=t.length,o=n.length,s,c;i=o)return-1;if(s=t.charCodeAt(i++),s===37){if(s=t.charAt(i++),c=x[s in yt?t.charAt(i++):s],!c||(r=c(e,n,r))<0)return-1}else if(s!=n.charCodeAt(r++))return-1}return r}function T(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1}function E(e,t,n){var r=p.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1}function D(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=f.get(r[0].toLowerCase()),n+r[0].length):-1}function O(e,t,n){var r=_.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1}function k(e,t,n){var r=h.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1}function ee(e,n,r){return w(e,t,n,r)}function A(e,t,r){return w(e,n,t,r)}function te(e,t,n){return w(e,r,t,n)}function ne(e){return o[e.getDay()]}function j(e){return a[e.getDay()]}function re(e){return c[e.getMonth()]}function ie(e){return s[e.getMonth()]}function ae(e){return i[+(e.getHours()>=12)]}function oe(e){return 1+~~(e.getMonth()/3)}function se(e){return o[e.getUTCDay()]}function ce(e){return a[e.getUTCDay()]}function le(e){return c[e.getUTCMonth()]}function ue(e){return s[e.getUTCMonth()]}function de(e){return i[+(e.getUTCHours()>=12)]}function fe(e){return 1+~~(e.getUTCMonth()/3)}return{format:function(e){var t=S(e+=``,y);return t.toString=function(){return e},t},parse:function(e){var t=C(e+=``,!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=S(e+=``,b);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+=``,!0);return t.toString=function(){return e},t}}}var yt={"-":``,_:` `,0:`0`},K=/^\s*\d+/,bt=/^%/,xt=/[\\^$*+?|[\]().{}]/g;function q(e,t,n){var r=e<0?`-`:``,i=(r?-e:e)+``,a=i.length;return r+(a[e.toLowerCase(),t]))}function Tt(e,t,n){var r=K.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function Et(e,t,n){var r=K.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function Dt(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function Ot(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function kt(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function At(e,t,n){var r=K.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function jt(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Mt(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||`00`)),n+r[0].length):-1}function Nt(e,t,n){var r=K.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function Pt(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Ft(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function It(e,t,n){var r=K.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Lt(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function Rt(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function zt(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function Bt(e,t,n){var r=K.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function Vt(e,t,n){var r=K.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Ht(e,t,n){var r=bt.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function Ut(e,t,n){var r=K.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function Wt(e,t,n){var r=K.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function Gt(e,t){return q(e.getDate(),t,2)}function Kt(e,t){return q(e.getHours(),t,2)}function qt(e,t){return q(e.getHours()%12||12,t,2)}function Jt(e,t){return q(1+B.count(W(e),e),t,3)}function Yt(e,t){return q(e.getMilliseconds(),t,3)}function Xt(e,t){return Yt(e,t)+`000`}function Zt(e,t){return q(e.getMonth()+1,t,2)}function Qt(e,t){return q(e.getMinutes(),t,2)}function $t(e,t){return q(e.getSeconds(),t,2)}function en(e){var t=e.getDay();return t===0?7:t}function tn(e,t){return q(Ye.count(W(e)-1,e),t,2)}function nn(e){var t=e.getDay();return t>=4||t===0?H(e):H.ceil(e)}function rn(e,t){return e=nn(e),q(H.count(W(e),e)+(W(e).getDay()===4),t,2)}function an(e){return e.getDay()}function on(e,t){return q(Xe.count(W(e)-1,e),t,2)}function sn(e,t){return q(e.getFullYear()%100,t,2)}function cn(e,t){return e=nn(e),q(e.getFullYear()%100,t,2)}function ln(e,t){return q(e.getFullYear()%1e4,t,4)}function un(e,t){var n=e.getDay();return e=n>=4||n===0?H(e):H.ceil(e),q(e.getFullYear()%1e4,t,4)}function dn(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+q(t/60|0,`0`,2)+q(t%60,`0`,2)}function fn(e,t){return q(e.getUTCDate(),t,2)}function pn(e,t){return q(e.getUTCHours(),t,2)}function mn(e,t){return q(e.getUTCHours()%12||12,t,2)}function hn(e,t){return q(1+qe.count(G(e),e),t,3)}function gn(e,t){return q(e.getUTCMilliseconds(),t,3)}function _n(e,t){return gn(e,t)+`000`}function vn(e,t){return q(e.getUTCMonth()+1,t,2)}function yn(e,t){return q(e.getUTCMinutes(),t,2)}function bn(e,t){return q(e.getUTCSeconds(),t,2)}function xn(e){var t=e.getUTCDay();return t===0?7:t}function Sn(e,t){return q(tt.count(G(e)-1,e),t,2)}function Cn(e){var t=e.getUTCDay();return t>=4||t===0?at(e):at.ceil(e)}function wn(e,t){return e=Cn(e),q(at.count(G(e),e)+(G(e).getUTCDay()===4),t,2)}function Tn(e){return e.getUTCDay()}function En(e,t){return q(nt.count(G(e)-1,e),t,2)}function Dn(e,t){return q(e.getUTCFullYear()%100,t,2)}function On(e,t){return e=Cn(e),q(e.getUTCFullYear()%100,t,2)}function kn(e,t){return q(e.getUTCFullYear()%1e4,t,4)}function An(e,t){var n=e.getUTCDay();return e=n>=4||n===0?at(e):at.ceil(e),q(e.getUTCFullYear()%1e4,t,4)}function jn(){return`+0000`}function Mn(){return`%`}function Nn(e){return+e}function Pn(e){return Math.floor(e/1e3)}var Fn,In;Ln({dateTime:`%x, %X`,date:`%-m/%-d/%Y`,time:`%-I:%M:%S %p`,periods:[`AM`,`PM`],days:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],shortDays:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],months:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],shortMonths:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`]});function Ln(e){return Fn=vt(e),In=Fn.format,Fn.parse,Fn.utcFormat,Fn.utcParse,Fn}function Rn(e){return new Date(e)}function zn(e){return e instanceof Date?+e:+new Date(+e)}function Bn(e,t,n,r,o,s,c,l,u,d){var f=i(),p=f.invert,m=f.domain,h=d(`.%L`),g=d(`:%S`),_=d(`%I:%M`),v=d(`%I %p`),y=d(`%a %d`),b=d(`%b %d`),x=d(`%B`),S=d(`%Y`);function C(e){return(u(e){(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_isoWeek=r()})(e,(function(){var e=`day`;return function(t,n,r){var i=function(t){return t.add(4-t.isoWeekday(),e)},a=n.prototype;a.isoWeekYear=function(){return i(this).year()},a.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var n,a,o,s,c=i(this),l=(n=this.isoWeekYear(),a=this.$u,o=(a?r.utc:r)().year(n).startOf(`year`),s=4-o.isoWeekday(),o.isoWeekday()>4&&(s+=7),o.add(s,e));return c.diff(l,`week`)+1},a.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var o=a.startOf;a.startOf=function(e,t){var n=this.$utils(),r=!!n.u(t)||t;return n.p(e)===`isoweek`?r?this.date(this.date()-(this.isoWeekday()-1)).startOf(`day`):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf(`day`):o.bind(this)(e,t)}}}))})),Un=e(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_customParseFormat=r()})(e,(function(){var e={LTS:`h:mm:ss A`,LT:`h:mm A`,L:`MM/DD/YYYY`,LL:`MMMM D, YYYY`,LLL:`MMMM D, YYYY h:mm A`,LLLL:`dddd, MMMM D, YYYY h:mm A`},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d/,r=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)},c=function(e){return function(t){this[e]=+t}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(e){(this.zone||={}).offset=function(e){if(!e||e===`Z`)return 0;var t=e.match(/([+-]|\d\d)/g),n=60*t[1]+(+t[2]||0);return n===0?0:t[0]===`+`?-n:n}(e)}],u=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?`pm`:`PM`);return n},f={A:[a,function(e){this.afternoon=d(e,!1)}],a:[a,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*e}],SS:[r,function(e){this.milliseconds=10*e}],SSS:[/\d{3}/,function(e){this.milliseconds=+e}],s:[i,c(`seconds`)],ss:[i,c(`seconds`)],m:[i,c(`minutes`)],mm:[i,c(`minutes`)],H:[i,c(`hours`)],h:[i,c(`hours`)],HH:[i,c(`hours`)],hh:[i,c(`hours`)],D:[i,c(`day`)],DD:[r,c(`day`)],Do:[a,function(e){var t=o.ordinal,n=e.match(/\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\[|\]/g,``)===e&&(this.day=r)}],w:[i,c(`week`)],ww:[r,c(`week`)],M:[i,c(`month`)],MM:[r,c(`month`)],MMM:[a,function(e){var t=u(`months`),n=(u(`monthsShort`)||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw Error();this.month=n%12||n}],MMMM:[a,function(e){var t=u(`months`).indexOf(e)+1;if(t<1)throw Error();this.month=t%12||t}],Y:[/[+-]?\d+/,c(`year`)],YY:[r,function(e){this.year=s(e)}],YYYY:[/\d{4}/,c(`year`)],Z:l,ZZ:l};function p(n){for(var r=n,i=o&&o.formats,a=(n=r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var a=r&&r.toUpperCase();return n||i[r]||e[r]||i[a].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),s=a.length,c=0;c-1)return new Date((t===`X`?1e3:1)*e);var i=p(t)(e),a=i.year,o=i.month,s=i.day,c=i.hours,l=i.minutes,u=i.seconds,d=i.milliseconds,f=i.zone,m=i.week,h=new Date,g=s||(a||o?1:h.getDate()),_=a||h.getFullYear(),v=0;a&&!o||(v=o>0?o-1:h.getMonth());var y,b=c||0,x=l||0,S=u||0,C=d||0;return f?new Date(Date.UTC(_,v,g,b,x,S,C+60*f.offset*1e3)):n?new Date(Date.UTC(_,v,g,b,x,S,C)):(y=new Date(_,v,g,b,x,S,C),m&&(y=r(y).week(m).toDate()),y)}catch{return new Date(``)}}(t,s,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(s)&&(this.$d=new Date(``)),o={}}else if(s instanceof Array)for(var f=s.length,m=1;m<=f;m+=1){a[1]=s[m-1];var h=n.apply(this,a);if(h.isValid()){this.$d=h.$d,this.$L=h.$L,this.init();break}m===f&&(this.$d=new Date(``))}else i.call(this,e)}}}))})),Wn=e(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_advancedFormat=r()})(e,(function(){return function(e,t){var n=t.prototype,r=n.format;n.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return r.bind(this)(e);var i=this.$utils(),a=(e||`YYYY-MM-DDTHH:mm:ssZ`).replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case`Q`:return Math.ceil((t.$M+1)/3);case`Do`:return n.ordinal(t.$D);case`gggg`:return t.weekYear();case`GGGG`:return t.isoWeekYear();case`wo`:return n.ordinal(t.week(),`W`);case`w`:case`ww`:return i.s(t.week(),e===`w`?1:2,`0`);case`W`:case`WW`:return i.s(t.isoWeek(),e===`W`?1:2,`0`);case`k`:case`kk`:return i.s(String(t.$H===0?24:t.$H),e===`k`?1:2,`0`);case`X`:return Math.floor(t.$d.getTime()/1e3);case`x`:return t.$d.getTime();case`z`:return`[`+t.offsetName()+`]`;case`zzz`:return`[`+t.offsetName(`long`)+`]`;default:return e}}));return r.bind(this)(a)}}}))})),Gn=e(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_duration=r()})(e,(function(){var e,t,n=1e3,r=6e4,i=36e5,a=864e5,o=31536e6,s=2628e6,c=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,l=/\[([^\]]+)]|YYYY|YY|Y|M{1,2}|D{1,2}|H{1,2}|m{1,2}|s{1,2}|SSS/g,u={years:o,months:s,days:a,hours:i,minutes:r,seconds:n,milliseconds:1,weeks:6048e5},d=function(e){return e instanceof v},f=function(e,t,n){return new v(e,n,t.$l)},p=function(e){return t.p(e)+`s`},m=function(e){return e<0},h=function(e){return m(e)?Math.ceil(e):Math.floor(e)},g=function(e){return Math.abs(e)},_=function(e,t){return e?m(e)?{negative:!0,format:``+g(e)+t}:{negative:!1,format:``+e+t}:{negative:!1,format:``}},v=function(){function m(e,t,n){var r=this;if(this.$d={},this.$l=n,e===void 0&&(this.$ms=0,this.parseFromMilliseconds()),t)return f(e*u[p(t)],this);if(typeof e==`number`)return this.$ms=e,this.parseFromMilliseconds(),this;if(typeof e==`object`)return Object.keys(e).forEach((function(t){r.$d[p(t)]=e[t]})),this.calMilliseconds(),this;if(typeof e==`string`){var i=e.match(c);if(i){var a=i.slice(2).map((function(e){return e==null?0:Number(e)}));return this.$d.years=a[0],this.$d.months=a[1],this.$d.weeks=a[2],this.$d.days=a[3],this.$d.hours=a[4],this.$d.minutes=a[5],this.$d.seconds=a[6],this.calMilliseconds(),this}}return this}var g=m.prototype;return g.calMilliseconds=function(){var e=this;this.$ms=Object.keys(this.$d).reduce((function(t,n){return t+(e.$d[n]||0)*u[n]}),0)},g.parseFromMilliseconds=function(){var e=this.$ms;this.$d.years=h(e/o),e%=o,this.$d.months=h(e/s),e%=s,this.$d.days=h(e/a),e%=a,this.$d.hours=h(e/i),e%=i,this.$d.minutes=h(e/r),e%=r,this.$d.seconds=h(e/n),e%=n,this.$d.milliseconds=e},g.toISOString=function(){var e=_(this.$d.years,`Y`),t=_(this.$d.months,`M`),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var r=_(n,`D`),i=_(this.$d.hours,`H`),a=_(this.$d.minutes,`M`),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var s=_(o,`S`),c=e.negative||t.negative||r.negative||i.negative||a.negative||s.negative,l=i.format||a.format||s.format?`T`:``,u=(c?`-`:``)+`P`+e.format+t.format+r.format+l+i.format+a.format+s.format;return u===`P`||u===`-P`?`P0D`:u},g.toJSON=function(){return this.toISOString()},g.format=function(e){var n=e||`YYYY-MM-DDTHH:mm:ss`,r={Y:this.$d.years,YY:t.s(this.$d.years,2,`0`),YYYY:t.s(this.$d.years,4,`0`),M:this.$d.months,MM:t.s(this.$d.months,2,`0`),D:this.$d.days,DD:t.s(this.$d.days,2,`0`),H:this.$d.hours,HH:t.s(this.$d.hours,2,`0`),m:this.$d.minutes,mm:t.s(this.$d.minutes,2,`0`),s:this.$d.seconds,ss:t.s(this.$d.seconds,2,`0`),SSS:t.s(this.$d.milliseconds,3,`0`)};return n.replace(l,(function(e,t){return t||String(r[e])}))},g.as=function(e){return this.$ms/u[p(e)]},g.get=function(e){var t=this.$ms,n=p(e);return n===`milliseconds`?t%=1e3:t=n===`weeks`?h(t/u[n]):this.$d[n],t||0},g.add=function(e,t,n){var r;return r=t?e*u[p(t)]:d(e)?e.$ms:f(e,this).$ms,f(this.$ms+r*(n?-1:1),this)},g.subtract=function(e,t){return this.add(e,t,!0)},g.locale=function(e){var t=this.clone();return t.$l=e,t},g.clone=function(){return f(this.$ms,this)},g.humanize=function(t){return e().add(this.$ms,`ms`).locale(this.$l).fromNow(!t)},g.valueOf=function(){return this.asMilliseconds()},g.milliseconds=function(){return this.get(`milliseconds`)},g.asMilliseconds=function(){return this.as(`milliseconds`)},g.seconds=function(){return this.get(`seconds`)},g.asSeconds=function(){return this.as(`seconds`)},g.minutes=function(){return this.get(`minutes`)},g.asMinutes=function(){return this.as(`minutes`)},g.hours=function(){return this.get(`hours`)},g.asHours=function(){return this.as(`hours`)},g.days=function(){return this.get(`days`)},g.asDays=function(){return this.as(`days`)},g.weeks=function(){return this.get(`weeks`)},g.asWeeks=function(){return this.as(`weeks`)},g.months=function(){return this.get(`months`)},g.asMonths=function(){return this.as(`months`)},g.years=function(){return this.get(`years`)},g.asYears=function(){return this.as(`years`)},m}(),y=function(e,t,n){return e.add(t.years()*n,`y`).add(t.months()*n,`M`).add(t.days()*n,`d`).add(t.hours()*n,`h`).add(t.minutes()*n,`m`).add(t.seconds()*n,`s`).add(t.milliseconds()*n,`ms`)};return function(n,r,i){e=i,t=i().$utils(),i.duration=function(e,t){return f(e,{$l:i.locale()},t)},i.isDuration=d;var a=r.prototype.add,o=r.prototype.subtract;r.prototype.add=function(e,t){return d(e)?y(this,e,1):a.bind(this)(e,t)},r.prototype.subtract=function(e,t){return d(e)?y(this,e,-1):o.bind(this)(e,t)}}}))})),Kn=C(),J=t(m(),1),qn=t(Hn(),1),Jn=t(Un(),1),Yn=t(Wn(),1),Xn=t(Gn(),1),Zn=(function(){var e=u(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],n=[1,26],r=[1,27],i=[1,28],a=[1,29],o=[1,30],s=[1,31],c=[1,32],l=[1,33],d=[1,34],f=[1,9],p=[1,10],m=[1,11],h=[1,12],g=[1,13],_=[1,14],v=[1,15],y=[1,16],b=[1,19],x=[1,20],S=[1,21],C=[1,22],w=[1,23],T=[1,25],E=[1,35],D={trace:u(function(){},`trace`),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:`error`,4:`gantt`,6:`EOF`,8:`SPACE`,10:`NL`,12:`weekday_monday`,13:`weekday_tuesday`,14:`weekday_wednesday`,15:`weekday_thursday`,16:`weekday_friday`,17:`weekday_saturday`,18:`weekday_sunday`,20:`weekend_friday`,21:`weekend_saturday`,22:`dateFormat`,23:`inclusiveEndDates`,24:`topAxis`,25:`axisFormat`,26:`tickInterval`,27:`excludes`,28:`includes`,29:`todayMarker`,30:`title`,31:`acc_title`,32:`acc_title_value`,33:`acc_descr`,34:`acc_descr_value`,35:`acc_descr_multiline_value`,36:`section`,38:`taskTxt`,39:`taskData`,40:`click`,41:`callbackname`,42:`callbackargs`,43:`href`},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:u(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 2:this.$=[];break;case 3:a[s-1].push(a[s]),this.$=a[s-1];break;case 4:case 5:this.$=a[s];break;case 6:case 7:this.$=[];break;case 8:r.setWeekday(`monday`);break;case 9:r.setWeekday(`tuesday`);break;case 10:r.setWeekday(`wednesday`);break;case 11:r.setWeekday(`thursday`);break;case 12:r.setWeekday(`friday`);break;case 13:r.setWeekday(`saturday`);break;case 14:r.setWeekday(`sunday`);break;case 15:r.setWeekend(`friday`);break;case 16:r.setWeekend(`saturday`);break;case 17:r.setDateFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 18:r.enableInclusiveEndDates(),this.$=a[s].substr(18);break;case 19:r.TopAxis(),this.$=a[s].substr(8);break;case 20:r.setAxisFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 21:r.setTickInterval(a[s].substr(13)),this.$=a[s].substr(13);break;case 22:r.setExcludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 23:r.setIncludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 24:r.setTodayMarker(a[s].substr(12)),this.$=a[s].substr(12);break;case 27:r.setDiagramTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 28:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 29:case 30:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 31:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 33:r.addTask(a[s-1],a[s]),this.$=`task`;break;case 34:this.$=a[s-1],r.setClickEvent(a[s-1],a[s],null);break;case 35:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 36:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],null),r.setLink(a[s-2],a[s]);break;case 37:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setLink(a[s-3],a[s]);break;case 38:this.$=a[s-2],r.setClickEvent(a[s-2],a[s],null),r.setLink(a[s-2],a[s-1]);break;case 39:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-1],a[s]),r.setLink(a[s-3],a[s-2]);break;case 40:this.$=a[s-1],r.setLink(a[s-1],a[s]);break;case 41:case 47:this.$=a[s-1]+` `+a[s];break;case 42:case 43:case 45:this.$=a[s-2]+` `+a[s-1]+` `+a[s];break;case 44:case 46:this.$=a[s-3]+` `+a[s-2]+` `+a[s-1]+` `+a[s];break}},`anonymous`),table:[{3:1,4:[1,2]},{1:[3]},e(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:n,13:r,14:i,15:a,16:o,17:s,18:c,19:18,20:l,21:d,22:f,23:p,24:m,25:h,26:g,27:_,28:v,29:y,30:b,31:x,33:S,35:C,36:w,37:24,38:T,40:E},e(t,[2,7],{1:[2,1]}),e(t,[2,3]),{9:36,11:17,12:n,13:r,14:i,15:a,16:o,17:s,18:c,19:18,20:l,21:d,22:f,23:p,24:m,25:h,26:g,27:_,28:v,29:y,30:b,31:x,33:S,35:C,36:w,37:24,38:T,40:E},e(t,[2,5]),e(t,[2,6]),e(t,[2,17]),e(t,[2,18]),e(t,[2,19]),e(t,[2,20]),e(t,[2,21]),e(t,[2,22]),e(t,[2,23]),e(t,[2,24]),e(t,[2,25]),e(t,[2,26]),e(t,[2,27]),{32:[1,37]},{34:[1,38]},e(t,[2,30]),e(t,[2,31]),e(t,[2,32]),{39:[1,39]},e(t,[2,8]),e(t,[2,9]),e(t,[2,10]),e(t,[2,11]),e(t,[2,12]),e(t,[2,13]),e(t,[2,14]),e(t,[2,15]),e(t,[2,16]),{41:[1,40],43:[1,41]},e(t,[2,4]),e(t,[2,28]),e(t,[2,29]),e(t,[2,33]),e(t,[2,34],{42:[1,42],43:[1,43]}),e(t,[2,40],{41:[1,44]}),e(t,[2,35],{43:[1,45]}),e(t,[2,36]),e(t,[2,38],{42:[1,46]}),e(t,[2,37]),e(t,[2,39])],defaultActions:{},parseError:u(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:u(function(e){var t=this,n=[0],r=[],i=[null],a=[],o=this.table,s=``,c=0,l=0,d=0,f=2,p=1,m=a.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;a.push(v);var y=h.options&&h.options.ranges;typeof g.yy.parseError==`function`?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function b(e){n.length-=2*e,i.length-=e,a.length-=e}u(b,`popStack`);function x(){var e=r.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(r=e,e=r.pop()),e=t.symbols_[e]||e),e}u(x,`lex`);for(var S,C,w,T,E,D={},O,k,ee,A;;){if(w=n[n.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=o[w]&&o[w][S]),T===void 0||!T.length||!T[0]){var te=``;for(O in A=[],o[w])this.terminals_[O]&&O>f&&A.push(`'`+this.terminals_[O]+`'`);te=h.showPosition?`Parse error on line `+(c+1)+`: +import{Ct as e,Tt as t}from"./index-BkDx9KsG.js";import{a as n,i as r,n as i,r as a,t as o}from"./linear-D3-vxS4W.js";import{t as s}from"./init-D6jRqBbL.js";import{Gn as c,Hn as l,Ir as u,Jn as d,Kn as f,Nr as p,Pr as m,Sr as h,Un as g,Ut as _,Xn as v,Yn as y,Zn as b,br as x,er as S,gn as C,lr as w,nr as T,or as E,rr as D,sr as O,ur as k,yr as ee}from"./MermaidBlock-CI9NjqQx.js";function A(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n=i)&&(n=i)}return n}function te(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n>t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function ne(e){return e}var j=1,re=2,ie=3,ae=4,oe=1e-6;function se(e){return`translate(`+e+`,0)`}function ce(e){return`translate(0,`+e+`)`}function le(e){return t=>+e(t)}function ue(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),n=>+e(n)+t}function de(){return!this.__axis}function fe(e,t){var n=[],r=null,i=null,a=6,o=6,s=3,c=typeof window<`u`&&window.devicePixelRatio>1?0:.5,l=e===j||e===ae?-1:1,u=e===ae||e===re?`x`:`y`,d=e===j||e===ie?se:ce;function f(f){var p=r??(t.ticks?t.ticks.apply(t,n):t.domain()),m=i??(t.tickFormat?t.tickFormat.apply(t,n):ne),h=Math.max(a,0)+s,g=t.range(),_=+g[0]+c,v=+g[g.length-1]+c,y=(t.bandwidth?ue:le)(t.copy(),c),b=f.selection?f.selection():f,x=b.selectAll(`.domain`).data([null]),S=b.selectAll(`.tick`).data(p,t).order(),C=S.exit(),w=S.enter().append(`g`).attr(`class`,`tick`),T=S.select(`line`),E=S.select(`text`);x=x.merge(x.enter().insert(`path`,`.tick`).attr(`class`,`domain`).attr(`stroke`,`currentColor`)),S=S.merge(w),T=T.merge(w.append(`line`).attr(`stroke`,`currentColor`).attr(u+`2`,l*a)),E=E.merge(w.append(`text`).attr(`fill`,`currentColor`).attr(u,l*h).attr(`dy`,e===j?`0em`:e===ie?`0.71em`:`0.32em`)),f!==b&&(x=x.transition(f),S=S.transition(f),T=T.transition(f),E=E.transition(f),C=C.transition(f).attr(`opacity`,oe).attr(`transform`,function(e){return isFinite(e=y(e))?d(e+c):this.getAttribute(`transform`)}),w.attr(`opacity`,oe).attr(`transform`,function(e){var t=this.parentNode.__axis;return d((t&&isFinite(t=t(e))?t:y(e))+c)})),C.remove(),x.attr(`d`,e===ae||e===re?o?`M`+l*o+`,`+_+`H`+c+`V`+v+`H`+l*o:`M`+c+`,`+_+`V`+v:o?`M`+_+`,`+l*o+`V`+c+`H`+v+`V`+l*o:`M`+_+`,`+c+`H`+v),S.attr(`opacity`,1).attr(`transform`,function(e){return d(y(e)+c)}),T.attr(u+`2`,l*a),E.attr(u,l*h).text(m),b.filter(de).attr(`fill`,`none`).attr(`font-size`,10).attr(`font-family`,`sans-serif`).attr(`text-anchor`,e===re?`start`:e===ae?`end`:`middle`),b.each(function(){this.__axis=y})}return f.scale=function(e){return arguments.length?(t=e,f):t},f.ticks=function(){return n=Array.from(arguments),f},f.tickArguments=function(e){return arguments.length?(n=e==null?[]:Array.from(e),f):n.slice()},f.tickValues=function(e){return arguments.length?(r=e==null?null:Array.from(e),f):r&&r.slice()},f.tickFormat=function(e){return arguments.length?(i=e,f):i},f.tickSize=function(e){return arguments.length?(a=o=+e,f):a},f.tickSizeInner=function(e){return arguments.length?(a=+e,f):a},f.tickSizeOuter=function(e){return arguments.length?(o=+e,f):o},f.tickPadding=function(e){return arguments.length?(s=+e,f):s},f.offset=function(e){return arguments.length?(c=+e,f):c},f}function pe(e){return fe(j,e)}function me(e){return fe(ie,e)}var he=Math.PI/180,ge=180/Math.PI,_e=18,ve=.96422,ye=1,be=.82521,xe=4/29,Se=6/29,Ce=3*Se*Se,we=Se*Se*Se;function Te(e){if(e instanceof M)return new M(e.l,e.a,e.b,e.opacity);if(e instanceof N)return Ne(e);e instanceof f||(e=d(e));var t=Ae(e.r),n=Ae(e.g),r=Ae(e.b),i=De((.2225045*t+.7168786*n+.0606169*r)/ye),a,o;return t===n&&n===r?a=o=i:(a=De((.4360747*t+.3850649*n+.1430804*r)/ve),o=De((.0139322*t+.0971045*n+.7141733*r)/be)),new M(116*i-16,500*(a-i),200*(i-o),e.opacity)}function Ee(e,t,n,r){return arguments.length===1?Te(e):new M(e,t,n,r??1)}function M(e,t,n,r){this.l=+e,this.a=+t,this.b=+n,this.opacity=+r}y(M,Ee,v(c,{brighter(e){return new M(this.l+_e*(e??1),this.a,this.b,this.opacity)},darker(e){return new M(this.l-_e*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,n=isNaN(this.b)?e:e-this.b/200;return t=ve*Oe(t),e=ye*Oe(e),n=be*Oe(n),new f(ke(3.1338561*t-1.6168667*e-.4906146*n),ke(-.9787684*t+1.9161415*e+.033454*n),ke(.0719453*t-.2289914*e+1.4052427*n),this.opacity)}}));function De(e){return e>we?e**(1/3):e/Ce+xe}function Oe(e){return e>Se?e*e*e:Ce*(e-xe)}function ke(e){return 255*(e<=.0031308?12.92*e:1.055*e**(1/2.4)-.055)}function Ae(e){return(e/=255)<=.04045?e/12.92:((e+.055)/1.055)**2.4}function je(e){if(e instanceof N)return new N(e.h,e.c,e.l,e.opacity);if(e instanceof M||(e=Te(e)),e.a===0&&e.b===0)return new N(NaN,0(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{let t=i(e),n=i.ceil(e);return e-t(t(e=new Date(+e),n==null?1:Math.floor(n)),e),i.range=(n,r,a)=>{let o=[];if(n=i.ceil(n),a=a==null?1:Math.floor(a),!(n0))return o;let s;do o.push(s=new Date(+n)),t(n,a),e(n);while(sP(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}),n&&(i.count=(t,r)=>(Le.setTime(+t),Re.setTime(+r),e(Le),e(Re),Math.floor(n(Le,Re))),i.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i)),i}var ze=P(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);ze.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?P(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):ze),ze.range;var F=1e3,I=F*60,L=I*60,R=L*24,Be=R*7,Ve=R*30,He=R*365,z=P(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*F)},(e,t)=>(t-e)/F,e=>e.getUTCSeconds());z.range;var Ue=P(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*F)},(e,t)=>{e.setTime(+e+t*I)},(e,t)=>(t-e)/I,e=>e.getMinutes());Ue.range;var We=P(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*I)},(e,t)=>(t-e)/I,e=>e.getUTCMinutes());We.range;var Ge=P(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*F-e.getMinutes()*I)},(e,t)=>{e.setTime(+e+t*L)},(e,t)=>(t-e)/L,e=>e.getHours());Ge.range;var Ke=P(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*L)},(e,t)=>(t-e)/L,e=>e.getUTCHours());Ke.range;var B=P(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*I)/R,e=>e.getDate()-1);B.range;var qe=P(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/R,e=>e.getUTCDate()-1);qe.range;var Je=P(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/R,e=>Math.floor(e/R));Je.range;function V(e){return P(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*I)/Be)}var Ye=V(0),Xe=V(1),Ze=V(2),Qe=V(3),H=V(4),$e=V(5),et=V(6);Ye.range,Xe.range,Ze.range,Qe.range,H.range,$e.range,et.range;function U(e){return P(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/Be)}var tt=U(0),nt=U(1),rt=U(2),it=U(3),at=U(4),ot=U(5),st=U(6);tt.range,nt.range,rt.range,it.range,at.range,ot.range,st.range;var ct=P(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());ct.range;var lt=P(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());lt.range;var W=P(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());W.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:P(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}),W.range;var G=P(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());G.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:P(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}),G.range;function ut(e,t,i,a,o,s){let c=[[z,1,F],[z,5,5*F],[z,15,15*F],[z,30,30*F],[s,1,I],[s,5,5*I],[s,15,15*I],[s,30,30*I],[o,1,L],[o,3,3*L],[o,6,6*L],[o,12,12*L],[a,1,R],[a,2,2*R],[i,1,Be],[t,1,Ve],[t,3,3*Ve],[e,1,He]];function l(e,t,n){let r=te).right(c,o);if(s===c.length)return e.every(r(t/He,i/He,a));if(s===0)return ze.every(Math.max(r(t,i,a),1));let[l,u]=c[o/c[s-1][2]53)return null;`w`in r||(r.w=1),`Z`in r?(a=gt(_t(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?nt.ceil(a):nt(a),a=qe.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=ht(_t(r.y,0,1)),o=a.getDay(),a=o>4||o===0?Xe.ceil(a):Xe(a),a=B.offset(a,(r.V-1)*7),r.y=a.getFullYear(),r.m=a.getMonth(),r.d=a.getDate()+(r.w+6)%7)}else (`W`in r||`U`in r)&&(`w`in r||(r.w=`u`in r?r.u%7:+(`W`in r)),o=`Z`in r?gt(_t(r.y,0,1)).getUTCDay():ht(_t(r.y,0,1)).getDay(),r.m=0,r.d=`W`in r?(r.w+6)%7+r.W*7-(o+5)%7:r.w+r.U*7-(o+6)%7);return`Z`in r?(r.H+=r.Z/100|0,r.M+=r.Z%100,gt(r)):ht(r)}}function w(e,t,n,r){for(var i=0,a=t.length,o=n.length,s,c;i=o)return-1;if(s=t.charCodeAt(i++),s===37){if(s=t.charAt(i++),c=x[s in yt?t.charAt(i++):s],!c||(r=c(e,n,r))<0)return-1}else if(s!=n.charCodeAt(r++))return-1}return r}function T(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1}function E(e,t,n){var r=p.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1}function D(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=f.get(r[0].toLowerCase()),n+r[0].length):-1}function O(e,t,n){var r=_.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1}function k(e,t,n){var r=h.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1}function ee(e,n,r){return w(e,t,n,r)}function A(e,t,r){return w(e,n,t,r)}function te(e,t,n){return w(e,r,t,n)}function ne(e){return o[e.getDay()]}function j(e){return a[e.getDay()]}function re(e){return c[e.getMonth()]}function ie(e){return s[e.getMonth()]}function ae(e){return i[+(e.getHours()>=12)]}function oe(e){return 1+~~(e.getMonth()/3)}function se(e){return o[e.getUTCDay()]}function ce(e){return a[e.getUTCDay()]}function le(e){return c[e.getUTCMonth()]}function ue(e){return s[e.getUTCMonth()]}function de(e){return i[+(e.getUTCHours()>=12)]}function fe(e){return 1+~~(e.getUTCMonth()/3)}return{format:function(e){var t=S(e+=``,y);return t.toString=function(){return e},t},parse:function(e){var t=C(e+=``,!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=S(e+=``,b);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+=``,!0);return t.toString=function(){return e},t}}}var yt={"-":``,_:` `,0:`0`},K=/^\s*\d+/,bt=/^%/,xt=/[\\^$*+?|[\]().{}]/g;function q(e,t,n){var r=e<0?`-`:``,i=(r?-e:e)+``,a=i.length;return r+(a[e.toLowerCase(),t]))}function Tt(e,t,n){var r=K.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function Et(e,t,n){var r=K.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function Dt(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function Ot(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function kt(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function At(e,t,n){var r=K.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function jt(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Mt(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||`00`)),n+r[0].length):-1}function Nt(e,t,n){var r=K.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function Pt(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Ft(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function It(e,t,n){var r=K.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Lt(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function Rt(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function zt(e,t,n){var r=K.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function Bt(e,t,n){var r=K.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function Vt(e,t,n){var r=K.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Ht(e,t,n){var r=bt.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function Ut(e,t,n){var r=K.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function Wt(e,t,n){var r=K.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function Gt(e,t){return q(e.getDate(),t,2)}function Kt(e,t){return q(e.getHours(),t,2)}function qt(e,t){return q(e.getHours()%12||12,t,2)}function Jt(e,t){return q(1+B.count(W(e),e),t,3)}function Yt(e,t){return q(e.getMilliseconds(),t,3)}function Xt(e,t){return Yt(e,t)+`000`}function Zt(e,t){return q(e.getMonth()+1,t,2)}function Qt(e,t){return q(e.getMinutes(),t,2)}function $t(e,t){return q(e.getSeconds(),t,2)}function en(e){var t=e.getDay();return t===0?7:t}function tn(e,t){return q(Ye.count(W(e)-1,e),t,2)}function nn(e){var t=e.getDay();return t>=4||t===0?H(e):H.ceil(e)}function rn(e,t){return e=nn(e),q(H.count(W(e),e)+(W(e).getDay()===4),t,2)}function an(e){return e.getDay()}function on(e,t){return q(Xe.count(W(e)-1,e),t,2)}function sn(e,t){return q(e.getFullYear()%100,t,2)}function cn(e,t){return e=nn(e),q(e.getFullYear()%100,t,2)}function ln(e,t){return q(e.getFullYear()%1e4,t,4)}function un(e,t){var n=e.getDay();return e=n>=4||n===0?H(e):H.ceil(e),q(e.getFullYear()%1e4,t,4)}function dn(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+q(t/60|0,`0`,2)+q(t%60,`0`,2)}function fn(e,t){return q(e.getUTCDate(),t,2)}function pn(e,t){return q(e.getUTCHours(),t,2)}function mn(e,t){return q(e.getUTCHours()%12||12,t,2)}function hn(e,t){return q(1+qe.count(G(e),e),t,3)}function gn(e,t){return q(e.getUTCMilliseconds(),t,3)}function _n(e,t){return gn(e,t)+`000`}function vn(e,t){return q(e.getUTCMonth()+1,t,2)}function yn(e,t){return q(e.getUTCMinutes(),t,2)}function bn(e,t){return q(e.getUTCSeconds(),t,2)}function xn(e){var t=e.getUTCDay();return t===0?7:t}function Sn(e,t){return q(tt.count(G(e)-1,e),t,2)}function Cn(e){var t=e.getUTCDay();return t>=4||t===0?at(e):at.ceil(e)}function wn(e,t){return e=Cn(e),q(at.count(G(e),e)+(G(e).getUTCDay()===4),t,2)}function Tn(e){return e.getUTCDay()}function En(e,t){return q(nt.count(G(e)-1,e),t,2)}function Dn(e,t){return q(e.getUTCFullYear()%100,t,2)}function On(e,t){return e=Cn(e),q(e.getUTCFullYear()%100,t,2)}function kn(e,t){return q(e.getUTCFullYear()%1e4,t,4)}function An(e,t){var n=e.getUTCDay();return e=n>=4||n===0?at(e):at.ceil(e),q(e.getUTCFullYear()%1e4,t,4)}function jn(){return`+0000`}function Mn(){return`%`}function Nn(e){return+e}function Pn(e){return Math.floor(e/1e3)}var Fn,In;Ln({dateTime:`%x, %X`,date:`%-m/%-d/%Y`,time:`%-I:%M:%S %p`,periods:[`AM`,`PM`],days:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],shortDays:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],months:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],shortMonths:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`]});function Ln(e){return Fn=vt(e),In=Fn.format,Fn.parse,Fn.utcFormat,Fn.utcParse,Fn}function Rn(e){return new Date(e)}function zn(e){return e instanceof Date?+e:+new Date(+e)}function Bn(e,t,n,r,o,s,c,l,u,d){var f=i(),p=f.invert,m=f.domain,h=d(`.%L`),g=d(`:%S`),_=d(`%I:%M`),v=d(`%I %p`),y=d(`%a %d`),b=d(`%b %d`),x=d(`%B`),S=d(`%Y`);function C(e){return(u(e){(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_isoWeek=r()})(e,(function(){var e=`day`;return function(t,n,r){var i=function(t){return t.add(4-t.isoWeekday(),e)},a=n.prototype;a.isoWeekYear=function(){return i(this).year()},a.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var n,a,o,s,c=i(this),l=(n=this.isoWeekYear(),a=this.$u,o=(a?r.utc:r)().year(n).startOf(`year`),s=4-o.isoWeekday(),o.isoWeekday()>4&&(s+=7),o.add(s,e));return c.diff(l,`week`)+1},a.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var o=a.startOf;a.startOf=function(e,t){var n=this.$utils(),r=!!n.u(t)||t;return n.p(e)===`isoweek`?r?this.date(this.date()-(this.isoWeekday()-1)).startOf(`day`):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf(`day`):o.bind(this)(e,t)}}}))})),Un=e(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_customParseFormat=r()})(e,(function(){var e={LTS:`h:mm:ss A`,LT:`h:mm A`,L:`MM/DD/YYYY`,LL:`MMMM D, YYYY`,LLL:`MMMM D, YYYY h:mm A`,LLLL:`dddd, MMMM D, YYYY h:mm A`},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d/,r=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)},c=function(e){return function(t){this[e]=+t}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(e){(this.zone||={}).offset=function(e){if(!e||e===`Z`)return 0;var t=e.match(/([+-]|\d\d)/g),n=60*t[1]+(+t[2]||0);return n===0?0:t[0]===`+`?-n:n}(e)}],u=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?`pm`:`PM`);return n},f={A:[a,function(e){this.afternoon=d(e,!1)}],a:[a,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*e}],SS:[r,function(e){this.milliseconds=10*e}],SSS:[/\d{3}/,function(e){this.milliseconds=+e}],s:[i,c(`seconds`)],ss:[i,c(`seconds`)],m:[i,c(`minutes`)],mm:[i,c(`minutes`)],H:[i,c(`hours`)],h:[i,c(`hours`)],HH:[i,c(`hours`)],hh:[i,c(`hours`)],D:[i,c(`day`)],DD:[r,c(`day`)],Do:[a,function(e){var t=o.ordinal,n=e.match(/\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\[|\]/g,``)===e&&(this.day=r)}],w:[i,c(`week`)],ww:[r,c(`week`)],M:[i,c(`month`)],MM:[r,c(`month`)],MMM:[a,function(e){var t=u(`months`),n=(u(`monthsShort`)||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw Error();this.month=n%12||n}],MMMM:[a,function(e){var t=u(`months`).indexOf(e)+1;if(t<1)throw Error();this.month=t%12||t}],Y:[/[+-]?\d+/,c(`year`)],YY:[r,function(e){this.year=s(e)}],YYYY:[/\d{4}/,c(`year`)],Z:l,ZZ:l};function p(n){for(var r=n,i=o&&o.formats,a=(n=r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var a=r&&r.toUpperCase();return n||i[r]||e[r]||i[a].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),s=a.length,c=0;c-1)return new Date((t===`X`?1e3:1)*e);var i=p(t)(e),a=i.year,o=i.month,s=i.day,c=i.hours,l=i.minutes,u=i.seconds,d=i.milliseconds,f=i.zone,m=i.week,h=new Date,g=s||(a||o?1:h.getDate()),_=a||h.getFullYear(),v=0;a&&!o||(v=o>0?o-1:h.getMonth());var y,b=c||0,x=l||0,S=u||0,C=d||0;return f?new Date(Date.UTC(_,v,g,b,x,S,C+60*f.offset*1e3)):n?new Date(Date.UTC(_,v,g,b,x,S,C)):(y=new Date(_,v,g,b,x,S,C),m&&(y=r(y).week(m).toDate()),y)}catch{return new Date(``)}}(t,s,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(s)&&(this.$d=new Date(``)),o={}}else if(s instanceof Array)for(var f=s.length,m=1;m<=f;m+=1){a[1]=s[m-1];var h=n.apply(this,a);if(h.isValid()){this.$d=h.$d,this.$L=h.$L,this.init();break}m===f&&(this.$d=new Date(``))}else i.call(this,e)}}}))})),Wn=e(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_advancedFormat=r()})(e,(function(){return function(e,t){var n=t.prototype,r=n.format;n.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return r.bind(this)(e);var i=this.$utils(),a=(e||`YYYY-MM-DDTHH:mm:ssZ`).replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case`Q`:return Math.ceil((t.$M+1)/3);case`Do`:return n.ordinal(t.$D);case`gggg`:return t.weekYear();case`GGGG`:return t.isoWeekYear();case`wo`:return n.ordinal(t.week(),`W`);case`w`:case`ww`:return i.s(t.week(),e===`w`?1:2,`0`);case`W`:case`WW`:return i.s(t.isoWeek(),e===`W`?1:2,`0`);case`k`:case`kk`:return i.s(String(t.$H===0?24:t.$H),e===`k`?1:2,`0`);case`X`:return Math.floor(t.$d.getTime()/1e3);case`x`:return t.$d.getTime();case`z`:return`[`+t.offsetName()+`]`;case`zzz`:return`[`+t.offsetName(`long`)+`]`;default:return e}}));return r.bind(this)(a)}}}))})),Gn=e(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_duration=r()})(e,(function(){var e,t,n=1e3,r=6e4,i=36e5,a=864e5,o=31536e6,s=2628e6,c=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,l=/\[([^\]]+)]|YYYY|YY|Y|M{1,2}|D{1,2}|H{1,2}|m{1,2}|s{1,2}|SSS/g,u={years:o,months:s,days:a,hours:i,minutes:r,seconds:n,milliseconds:1,weeks:6048e5},d=function(e){return e instanceof v},f=function(e,t,n){return new v(e,n,t.$l)},p=function(e){return t.p(e)+`s`},m=function(e){return e<0},h=function(e){return m(e)?Math.ceil(e):Math.floor(e)},g=function(e){return Math.abs(e)},_=function(e,t){return e?m(e)?{negative:!0,format:``+g(e)+t}:{negative:!1,format:``+e+t}:{negative:!1,format:``}},v=function(){function m(e,t,n){var r=this;if(this.$d={},this.$l=n,e===void 0&&(this.$ms=0,this.parseFromMilliseconds()),t)return f(e*u[p(t)],this);if(typeof e==`number`)return this.$ms=e,this.parseFromMilliseconds(),this;if(typeof e==`object`)return Object.keys(e).forEach((function(t){r.$d[p(t)]=e[t]})),this.calMilliseconds(),this;if(typeof e==`string`){var i=e.match(c);if(i){var a=i.slice(2).map((function(e){return e==null?0:Number(e)}));return this.$d.years=a[0],this.$d.months=a[1],this.$d.weeks=a[2],this.$d.days=a[3],this.$d.hours=a[4],this.$d.minutes=a[5],this.$d.seconds=a[6],this.calMilliseconds(),this}}return this}var g=m.prototype;return g.calMilliseconds=function(){var e=this;this.$ms=Object.keys(this.$d).reduce((function(t,n){return t+(e.$d[n]||0)*u[n]}),0)},g.parseFromMilliseconds=function(){var e=this.$ms;this.$d.years=h(e/o),e%=o,this.$d.months=h(e/s),e%=s,this.$d.days=h(e/a),e%=a,this.$d.hours=h(e/i),e%=i,this.$d.minutes=h(e/r),e%=r,this.$d.seconds=h(e/n),e%=n,this.$d.milliseconds=e},g.toISOString=function(){var e=_(this.$d.years,`Y`),t=_(this.$d.months,`M`),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var r=_(n,`D`),i=_(this.$d.hours,`H`),a=_(this.$d.minutes,`M`),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var s=_(o,`S`),c=e.negative||t.negative||r.negative||i.negative||a.negative||s.negative,l=i.format||a.format||s.format?`T`:``,u=(c?`-`:``)+`P`+e.format+t.format+r.format+l+i.format+a.format+s.format;return u===`P`||u===`-P`?`P0D`:u},g.toJSON=function(){return this.toISOString()},g.format=function(e){var n=e||`YYYY-MM-DDTHH:mm:ss`,r={Y:this.$d.years,YY:t.s(this.$d.years,2,`0`),YYYY:t.s(this.$d.years,4,`0`),M:this.$d.months,MM:t.s(this.$d.months,2,`0`),D:this.$d.days,DD:t.s(this.$d.days,2,`0`),H:this.$d.hours,HH:t.s(this.$d.hours,2,`0`),m:this.$d.minutes,mm:t.s(this.$d.minutes,2,`0`),s:this.$d.seconds,ss:t.s(this.$d.seconds,2,`0`),SSS:t.s(this.$d.milliseconds,3,`0`)};return n.replace(l,(function(e,t){return t||String(r[e])}))},g.as=function(e){return this.$ms/u[p(e)]},g.get=function(e){var t=this.$ms,n=p(e);return n===`milliseconds`?t%=1e3:t=n===`weeks`?h(t/u[n]):this.$d[n],t||0},g.add=function(e,t,n){var r;return r=t?e*u[p(t)]:d(e)?e.$ms:f(e,this).$ms,f(this.$ms+r*(n?-1:1),this)},g.subtract=function(e,t){return this.add(e,t,!0)},g.locale=function(e){var t=this.clone();return t.$l=e,t},g.clone=function(){return f(this.$ms,this)},g.humanize=function(t){return e().add(this.$ms,`ms`).locale(this.$l).fromNow(!t)},g.valueOf=function(){return this.asMilliseconds()},g.milliseconds=function(){return this.get(`milliseconds`)},g.asMilliseconds=function(){return this.as(`milliseconds`)},g.seconds=function(){return this.get(`seconds`)},g.asSeconds=function(){return this.as(`seconds`)},g.minutes=function(){return this.get(`minutes`)},g.asMinutes=function(){return this.as(`minutes`)},g.hours=function(){return this.get(`hours`)},g.asHours=function(){return this.as(`hours`)},g.days=function(){return this.get(`days`)},g.asDays=function(){return this.as(`days`)},g.weeks=function(){return this.get(`weeks`)},g.asWeeks=function(){return this.as(`weeks`)},g.months=function(){return this.get(`months`)},g.asMonths=function(){return this.as(`months`)},g.years=function(){return this.get(`years`)},g.asYears=function(){return this.as(`years`)},m}(),y=function(e,t,n){return e.add(t.years()*n,`y`).add(t.months()*n,`M`).add(t.days()*n,`d`).add(t.hours()*n,`h`).add(t.minutes()*n,`m`).add(t.seconds()*n,`s`).add(t.milliseconds()*n,`ms`)};return function(n,r,i){e=i,t=i().$utils(),i.duration=function(e,t){return f(e,{$l:i.locale()},t)},i.isDuration=d;var a=r.prototype.add,o=r.prototype.subtract;r.prototype.add=function(e,t){return d(e)?y(this,e,1):a.bind(this)(e,t)},r.prototype.subtract=function(e,t){return d(e)?y(this,e,-1):o.bind(this)(e,t)}}}))})),Kn=C(),J=t(m(),1),qn=t(Hn(),1),Jn=t(Un(),1),Yn=t(Wn(),1),Xn=t(Gn(),1),Zn=(function(){var e=u(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],n=[1,26],r=[1,27],i=[1,28],a=[1,29],o=[1,30],s=[1,31],c=[1,32],l=[1,33],d=[1,34],f=[1,9],p=[1,10],m=[1,11],h=[1,12],g=[1,13],_=[1,14],v=[1,15],y=[1,16],b=[1,19],x=[1,20],S=[1,21],C=[1,22],w=[1,23],T=[1,25],E=[1,35],D={trace:u(function(){},`trace`),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:`error`,4:`gantt`,6:`EOF`,8:`SPACE`,10:`NL`,12:`weekday_monday`,13:`weekday_tuesday`,14:`weekday_wednesday`,15:`weekday_thursday`,16:`weekday_friday`,17:`weekday_saturday`,18:`weekday_sunday`,20:`weekend_friday`,21:`weekend_saturday`,22:`dateFormat`,23:`inclusiveEndDates`,24:`topAxis`,25:`axisFormat`,26:`tickInterval`,27:`excludes`,28:`includes`,29:`todayMarker`,30:`title`,31:`acc_title`,32:`acc_title_value`,33:`acc_descr`,34:`acc_descr_value`,35:`acc_descr_multiline_value`,36:`section`,38:`taskTxt`,39:`taskData`,40:`click`,41:`callbackname`,42:`callbackargs`,43:`href`},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:u(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 2:this.$=[];break;case 3:a[s-1].push(a[s]),this.$=a[s-1];break;case 4:case 5:this.$=a[s];break;case 6:case 7:this.$=[];break;case 8:r.setWeekday(`monday`);break;case 9:r.setWeekday(`tuesday`);break;case 10:r.setWeekday(`wednesday`);break;case 11:r.setWeekday(`thursday`);break;case 12:r.setWeekday(`friday`);break;case 13:r.setWeekday(`saturday`);break;case 14:r.setWeekday(`sunday`);break;case 15:r.setWeekend(`friday`);break;case 16:r.setWeekend(`saturday`);break;case 17:r.setDateFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 18:r.enableInclusiveEndDates(),this.$=a[s].substr(18);break;case 19:r.TopAxis(),this.$=a[s].substr(8);break;case 20:r.setAxisFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 21:r.setTickInterval(a[s].substr(13)),this.$=a[s].substr(13);break;case 22:r.setExcludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 23:r.setIncludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 24:r.setTodayMarker(a[s].substr(12)),this.$=a[s].substr(12);break;case 27:r.setDiagramTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 28:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 29:case 30:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 31:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 33:r.addTask(a[s-1],a[s]),this.$=`task`;break;case 34:this.$=a[s-1],r.setClickEvent(a[s-1],a[s],null);break;case 35:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 36:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],null),r.setLink(a[s-2],a[s]);break;case 37:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setLink(a[s-3],a[s]);break;case 38:this.$=a[s-2],r.setClickEvent(a[s-2],a[s],null),r.setLink(a[s-2],a[s-1]);break;case 39:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-1],a[s]),r.setLink(a[s-3],a[s-2]);break;case 40:this.$=a[s-1],r.setLink(a[s-1],a[s]);break;case 41:case 47:this.$=a[s-1]+` `+a[s];break;case 42:case 43:case 45:this.$=a[s-2]+` `+a[s-1]+` `+a[s];break;case 44:case 46:this.$=a[s-3]+` `+a[s-2]+` `+a[s-1]+` `+a[s];break}},`anonymous`),table:[{3:1,4:[1,2]},{1:[3]},e(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:n,13:r,14:i,15:a,16:o,17:s,18:c,19:18,20:l,21:d,22:f,23:p,24:m,25:h,26:g,27:_,28:v,29:y,30:b,31:x,33:S,35:C,36:w,37:24,38:T,40:E},e(t,[2,7],{1:[2,1]}),e(t,[2,3]),{9:36,11:17,12:n,13:r,14:i,15:a,16:o,17:s,18:c,19:18,20:l,21:d,22:f,23:p,24:m,25:h,26:g,27:_,28:v,29:y,30:b,31:x,33:S,35:C,36:w,37:24,38:T,40:E},e(t,[2,5]),e(t,[2,6]),e(t,[2,17]),e(t,[2,18]),e(t,[2,19]),e(t,[2,20]),e(t,[2,21]),e(t,[2,22]),e(t,[2,23]),e(t,[2,24]),e(t,[2,25]),e(t,[2,26]),e(t,[2,27]),{32:[1,37]},{34:[1,38]},e(t,[2,30]),e(t,[2,31]),e(t,[2,32]),{39:[1,39]},e(t,[2,8]),e(t,[2,9]),e(t,[2,10]),e(t,[2,11]),e(t,[2,12]),e(t,[2,13]),e(t,[2,14]),e(t,[2,15]),e(t,[2,16]),{41:[1,40],43:[1,41]},e(t,[2,4]),e(t,[2,28]),e(t,[2,29]),e(t,[2,33]),e(t,[2,34],{42:[1,42],43:[1,43]}),e(t,[2,40],{41:[1,44]}),e(t,[2,35],{43:[1,45]}),e(t,[2,36]),e(t,[2,38],{42:[1,46]}),e(t,[2,37]),e(t,[2,39])],defaultActions:{},parseError:u(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:u(function(e){var t=this,n=[0],r=[],i=[null],a=[],o=this.table,s=``,c=0,l=0,d=0,f=2,p=1,m=a.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;a.push(v);var y=h.options&&h.options.ranges;typeof g.yy.parseError==`function`?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function b(e){n.length-=2*e,i.length-=e,a.length-=e}u(b,`popStack`);function x(){var e=r.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(r=e,e=r.pop()),e=t.symbols_[e]||e),e}u(x,`lex`);for(var S,C,w,T,E,D={},O,k,ee,A;;){if(w=n[n.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=o[w]&&o[w][S]),T===void 0||!T.length||!T[0]){var te=``;for(O in A=[],o[w])this.terminals_[O]&&O>f&&A.push(`'`+this.terminals_[O]+`'`);te=h.showPosition?`Parse error on line `+(c+1)+`: `+h.showPosition()+` Expecting `+A.join(`, `)+`, got '`+(this.terminals_[S]||S)+`'`:`Parse error on line `+(c+1)+`: Unexpected `+(S==p?`end of input`:`'`+(this.terminals_[S]||S)+`'`),this.parseError(te,{text:h.match,token:this.terminals_[S]||S,line:h.yylineno,loc:v,expected:A})}if(T[0]instanceof Array&&T.length>1)throw Error(`Parse Error: multiple actions possible at state: `+w+`, token: `+S);switch(T[0]){case 1:n.push(S),i.push(h.yytext),a.push(h.yylloc),n.push(T[1]),S=null,C?(S=C,C=null):(l=h.yyleng,s=h.yytext,c=h.yylineno,v=h.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[T[1]][1],D.$=i[i.length-k],D._$={first_line:a[a.length-(k||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(k||1)].first_column,last_column:a[a.length-1].last_column},y&&(D._$.range=[a[a.length-(k||1)].range[0],a[a.length-1].range[1]]),E=this.performAction.apply(D,[s,l,c,g.yy,T[1],i,a].concat(m)),E!==void 0)return E;k&&(n=n.slice(0,-1*k*2),i=i.slice(0,-1*k),a=a.slice(0,-1*k)),n.push(this.productions_[T[1]][0]),i.push(D.$),a.push(D._$),ee=o[n[n.length-2]][n[n.length-1]],n.push(ee);break;case 3:return!0}}return!0},`parse`)};D.lexer=(function(){return{EOF:1,parseError:u(function(e,t){if(this.yy.parser)this.yy.parser.parseError(e,t);else throw Error(e)},`parseError`),setInput:u(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=``,this.conditionStack=[`INITIAL`],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},`setInput`),input:u(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},`input`),unput:u(function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},`unput`),more:u(function(){return this._more=!0,this},`more`),reject:u(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(`Lexical error on line `+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:``,token:null,line:this.yylineno});return this},`reject`),less:u(function(e){this.unput(this.match.slice(e))},`less`),pastInput:u(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?`...`:``)+e.substr(-20).replace(/\n/g,``)},`pastInput`),upcomingInput:u(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?`...`:``)).replace(/\n/g,``)},`upcomingInput`),showPosition:u(function(){var e=this.pastInput(),t=Array(e.length+1).join(`-`);return e+this.upcomingInput()+` diff --git a/ksadk/server/static/assets/gitGraph-4MIJSDKK-CX3KwgqY.js b/ksadk/server/static/assets/gitGraph-4MIJSDKK-CX3KwgqY.js new file mode 100644 index 00000000..24b54d16 --- /dev/null +++ b/ksadk/server/static/assets/gitGraph-4MIJSDKK-CX3KwgqY.js @@ -0,0 +1 @@ +import{E as e}from"./mermaid-parser.core-C-Sc5_7E.js";export{e as createGitGraphServices}; \ No newline at end of file diff --git a/ksadk/server/static/assets/gitGraph-4MIJSDKK-Dw63mrhw.js b/ksadk/server/static/assets/gitGraph-4MIJSDKK-Dw63mrhw.js deleted file mode 100644 index b8f25c7e..00000000 --- a/ksadk/server/static/assets/gitGraph-4MIJSDKK-Dw63mrhw.js +++ /dev/null @@ -1 +0,0 @@ -import{E as e}from"./mermaid-parser.core-KGSy4jWT.js";export{e as createGitGraphServices}; \ No newline at end of file diff --git a/ksadk/server/static/assets/gitGraphDiagram-WWUBYQGX-B6g4dtDi.js b/ksadk/server/static/assets/gitGraphDiagram-WWUBYQGX-D7OJf_No.js similarity index 98% rename from ksadk/server/static/assets/gitGraphDiagram-WWUBYQGX-B6g4dtDi.js rename to ksadk/server/static/assets/gitGraphDiagram-WWUBYQGX-D7OJf_No.js index 6e320b40..0df5b21c 100644 --- a/ksadk/server/static/assets/gitGraphDiagram-WWUBYQGX-B6g4dtDi.js +++ b/ksadk/server/static/assets/gitGraphDiagram-WWUBYQGX-D7OJf_No.js @@ -1,4 +1,4 @@ -import{n as e}from"./mermaid-parser.core-KGSy4jWT.js";import{t}from"./chunk-JWPE2WC7-vYvVJb_M.js";import{t as n}from"./chunk-2Q5K7J3B-DmgWkESh.js";import{Ht as r,Ir as i,Lt as a,Nr as o,Sr as s,Ut as c,Zn as l,ar as u,br as d,cr as f,er as p,lr as m,nr as h,or as g,sr as _,ur as v,wr as y,yr as b}from"./MermaidBlock-Dz4IP-Tx.js";var x={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},ee=u.gitGraph,S=i(()=>a({...ee,...f().gitGraph}),`getConfig`),C=new n(()=>{let e=S(),t=e.mainBranchName,n=e.mainBranchOrder;return{mainBranchName:t,commits:new Map,head:null,branchConfig:new Map([[t,{name:t,order:n}]]),branches:new Map([[t,null]]),currBranch:t,direction:`LR`,seq:0,options:{}}});function w(){return r({length:7})}i(w,`getID`);function T(e,t){let n=Object.create(null);return e.reduce((e,r)=>{let i=t(r);return n[i]||(n[i]=!0,e.push(r)),e},[])}i(T,`uniqBy`);var te=i(function(e){C.records.direction=e},`setDirection`),ne=i(function(e){o.debug(`options str`,e),e=e?.trim(),e||=`{}`;try{C.records.options=JSON.parse(e)}catch(e){o.error(`error while parsing gitGraph options`,e.message)}},`setOptions`),re=i(function(){return C.records.options},`getOptions`),ie=i(function(e){let t=e.msg,n=e.id,r=e.type,i=e.tags;o.info(`commit`,t,n,r,i),o.debug(`Entering commit:`,t,n,r,i);let a=S();n=h.sanitizeText(n,a),t=h.sanitizeText(t,a),i=i?.map(e=>h.sanitizeText(e,a));let s={id:n||C.records.seq+`-`+w(),message:t,seq:C.records.seq++,type:r??x.NORMAL,tags:i??[],parents:C.records.head==null?[]:[C.records.head.id],branch:C.records.currBranch};C.records.head=s,o.info(`main branch`,a.mainBranchName),C.records.commits.has(s.id)&&o.warn(`Commit ID ${s.id} already exists`),C.records.commits.set(s.id,s),C.records.branches.set(C.records.currBranch,s.id),o.debug(`in pushCommit `+s.id)},`commit`),ae=i(function(e){let t=e.name,n=e.order;if(t=h.sanitizeText(t,S()),C.records.branches.has(t))throw Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${t}")`);C.records.branches.set(t,C.records.head==null?null:C.records.head.id),C.records.branchConfig.set(t,{name:t,order:n}),E(t),o.debug(`in createBranch`)},`branch`),oe=i(e=>{let t=e.branch,n=e.id,r=e.type,i=e.tags,a=S();t=h.sanitizeText(t,a),n&&=h.sanitizeText(n,a);let s=C.records.branches.get(C.records.currBranch),c=C.records.branches.get(t),l=s?C.records.commits.get(s):void 0,u=c?C.records.commits.get(c):void 0;if(l&&u&&l.branch===t)throw Error(`Cannot merge branch '${t}' into itself.`);if(C.records.currBranch===t){let e=Error(`Incorrect usage of "merge". Cannot merge a branch to itself`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch abc`]},e}if(l===void 0||!l){let e=Error(`Incorrect usage of "merge". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`commit`]},e}if(!C.records.branches.has(t)){let e=Error(`Incorrect usage of "merge". Branch to be merged (`+t+`) does not exist`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch ${t}`]},e}if(u===void 0||!u){let e=Error(`Incorrect usage of "merge". Branch to be merged (`+t+`) has no commits`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`"commit"`]},e}if(l===u){let e=Error(`Incorrect usage of "merge". Both branches have same head`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch abc`]},e}if(n&&C.records.commits.has(n)){let e=Error(`Incorrect usage of "merge". Commit with id:`+n+` already exists, use different custom id`);throw e.hash={text:`merge ${t} ${n} ${r} ${i?.join(` `)}`,token:`merge ${t} ${n} ${r} ${i?.join(` `)}`,expected:[`merge ${t} ${n}_UNIQUE ${r} ${i?.join(` `)}`]},e}let d=c||``,f={id:n||`${C.records.seq}-${w()}`,message:`merged branch ${t} into ${C.records.currBranch}`,seq:C.records.seq++,parents:C.records.head==null?[]:[C.records.head.id,d],branch:C.records.currBranch,type:x.MERGE,customType:r,customId:!!n,tags:i??[]};C.records.head=f,C.records.commits.set(f.id,f),C.records.branches.set(C.records.currBranch,f.id),o.debug(C.records.branches),o.debug(`in mergeBranch`)},`merge`),se=i(function(e){let t=e.id,n=e.targetId,r=e.tags,i=e.parent;o.debug(`Entering cherryPick:`,t,n,r);let a=S();if(t=h.sanitizeText(t,a),n=h.sanitizeText(n,a),r=r?.map(e=>h.sanitizeText(e,a)),i=h.sanitizeText(i,a),!t||!C.records.commits.has(t)){let e=Error(`Incorrect usage of "cherryPick". Source commit id should exist and provided`);throw e.hash={text:`cherryPick ${t} ${n}`,token:`cherryPick ${t} ${n}`,expected:[`cherry-pick abc`]},e}let s=C.records.commits.get(t);if(s===void 0||!s)throw Error(`Incorrect usage of "cherryPick". Source commit id should exist and provided`);if(i&&!(Array.isArray(s.parents)&&s.parents.includes(i)))throw Error(`Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.`);let c=s.branch;if(s.type===x.MERGE&&!i)throw Error(`Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.`);if(!n||!C.records.commits.has(n)){if(c===C.records.currBranch){let e=Error(`Incorrect usage of "cherryPick". Source commit is already on current branch`);throw e.hash={text:`cherryPick ${t} ${n}`,token:`cherryPick ${t} ${n}`,expected:[`cherry-pick abc`]},e}let e=C.records.branches.get(C.records.currBranch);if(e===void 0||!e){let e=Error(`Incorrect usage of "cherry-pick". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`cherryPick ${t} ${n}`,token:`cherryPick ${t} ${n}`,expected:[`cherry-pick abc`]},e}let a=C.records.commits.get(e);if(a===void 0||!a){let e=Error(`Incorrect usage of "cherry-pick". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`cherryPick ${t} ${n}`,token:`cherryPick ${t} ${n}`,expected:[`cherry-pick abc`]},e}let l={id:C.records.seq+`-`+w(),message:`cherry-picked ${s?.message} into ${C.records.currBranch}`,seq:C.records.seq++,parents:C.records.head==null?[]:[C.records.head.id,s.id],branch:C.records.currBranch,type:x.CHERRY_PICK,tags:r?r.filter(Boolean):[`cherry-pick:${s.id}${s.type===x.MERGE?`|parent:${i}`:``}`]};C.records.head=l,C.records.commits.set(l.id,l),C.records.branches.set(C.records.currBranch,l.id),o.debug(C.records.branches),o.debug(`in cherryPick`)}},`cherryPick`),E=i(function(e){if(e=h.sanitizeText(e,S()),C.records.branches.has(e)){C.records.currBranch=e;let t=C.records.branches.get(C.records.currBranch);t===void 0||!t?C.records.head=null:C.records.head=C.records.commits.get(t)??null}else{let t=Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${e}")`);throw t.hash={text:`checkout ${e}`,token:`checkout ${e}`,expected:[`branch ${e}`]},t}},`checkout`);function D(e,t,n){let r=e.indexOf(t);r===-1?e.push(n):e.splice(r,1,n)}i(D,`upsert`);function O(e){let t=e.reduce((e,t)=>e.seq>t.seq?e:t,e[0]),n=``;e.forEach(function(e){e===t?n+=` *`:n+=` |`});let r=[n,t.id,t.seq];for(let e in C.records.branches)C.records.branches.get(e)===t.id&&r.push(e);if(o.debug(r.join(` `)),t.parents&&t.parents.length==2&&t.parents[0]&&t.parents[1]){let n=C.records.commits.get(t.parents[0]);D(e,t,n),t.parents[1]&&e.push(C.records.commits.get(t.parents[1]))}else if(t.parents.length==0)return;else if(t.parents[0]){let n=C.records.commits.get(t.parents[0]);D(e,t,n)}e=T(e,e=>e.id),O(e)}i(O,`prettyPrintCommitHistory`);var ce=i(function(){o.debug(C.records.commits);let e=k()[0];O([e])},`prettyPrint`),le=i(function(){C.reset(),p()},`clear`),ue=i(function(){return[...C.records.branchConfig.values()].map((e,t)=>e.order!==null&&e.order!==void 0?e:{...e,order:parseFloat(`0.${t}`)}).sort((e,t)=>(e.order??0)-(t.order??0)).map(({name:e})=>({name:e}))},`getBranchesAsObjArray`),de=i(function(){return C.records.branches},`getBranches`),fe=i(function(){return C.records.commits},`getCommits`),k=i(function(){let e=[...C.records.commits.values()];return e.forEach(function(e){o.debug(e.id)}),e.sort((e,t)=>e.seq-t.seq),e},`getCommitsArray`),A={commitType:x,getConfig:S,setDirection:te,setOptions:ne,getOptions:re,commit:ie,branch:ae,merge:oe,cherryPick:se,checkout:E,prettyPrint:ce,clear:le,getBranchesAsObjArray:ue,getBranches:de,getCommits:fe,getCommitsArray:k,getCurrentBranch:i(function(){return C.records.currBranch},`getCurrentBranch`),getDirection:i(function(){return C.records.direction},`getDirection`),getHead:i(function(){return C.records.head},`getHead`),setAccTitle:d,getAccTitle:_,getAccDescription:g,setAccDescription:b,setDiagramTitle:s,getDiagramTitle:v},pe=i((e,n)=>{t(e,n),e.dir&&n.setDirection(e.dir);for(let t of e.statements)me(t,n)},`populate`),me=i((e,t)=>{let n={Commit:i(e=>t.commit(he(e)),`Commit`),Branch:i(e=>t.branch(ge(e)),`Branch`),Merge:i(e=>t.merge(_e(e)),`Merge`),Checkout:i(e=>t.checkout(ve(e)),`Checkout`),CherryPicking:i(e=>t.cherryPick(ye(e)),`CherryPicking`)}[e.$type];n?n(e):o.error(`Unknown statement type: ${e.$type}`)},`parseStatement`),he=i(e=>({id:e.id,msg:e.message??``,type:e.type===void 0?x.NORMAL:x[e.type],tags:e.tags??void 0}),`parseCommit`),ge=i(e=>({name:e.name,order:e.order??0}),`parseBranch`),_e=i(e=>({branch:e.branch,id:e.id??``,type:e.type===void 0?void 0:x[e.type],tags:e.tags??void 0}),`parseMerge`),ve=i(e=>e.branch,`parseCheckout`),ye=i(e=>({id:e.id,targetId:``,tags:e.tags?.length===0?void 0:e.tags,parent:e.parent}),`parseCherryPicking`),be={parse:i(async t=>{let n=await e(`gitGraph`,t);o.debug(n),pe(n,A)},`parse`)},j=10,M=40,N=4,P=2,F=8,I=new Set([`redux`,`redux-dark`,`redux-color`,`redux-dark-color`]),L=12,R=new Set([`redux-color`,`redux-dark-color`]),xe=new Set([`dark`,`redux-dark`,`redux-dark-color`,`neo-dark`]),z=i((e,t,n=!1)=>n&&e>0?(e-1)%(t-1)+1:e%t,`calcColorIndex`),B=new Map,V=new Map,H=30,U=new Map,W=[],G=0,K=`LR`,q=i(()=>{B.clear(),V.clear(),U.clear(),G=0,W=[],K=`LR`},`clear`),J=i(e=>{let t=document.createElementNS(`http://www.w3.org/2000/svg`,`text`);return(typeof e==`string`?e.split(/\\n|\n|/gi):e).forEach(e=>{let n=document.createElementNS(`http://www.w3.org/2000/svg`,`tspan`);n.setAttributeNS(`http://www.w3.org/XML/1998/namespace`,`xml:space`,`preserve`),n.setAttribute(`dy`,`1em`),n.setAttribute(`x`,`0`),n.setAttribute(`class`,`row`),n.textContent=e.trim(),t.appendChild(n)}),t},`drawText`),Y=i(e=>{let t,n,r;return K===`BT`?(n=i((e,t)=>e<=t,`comparisonFunc`),r=1/0):(n=i((e,t)=>e>=t,`comparisonFunc`),r=0),e.forEach(e=>{let i=K===`TB`||K==`BT`?V.get(e)?.y:V.get(e)?.x;i!==void 0&&n(i,r)&&(t=e,r=i)}),t},`findClosestParent`),Se=i(e=>{let t=``,n=1/0;return e.forEach(e=>{let r=V.get(e).y;r<=n&&(t=e,n=r)}),t||void 0},`findClosestParentBT`),Ce=i((e,t,n)=>{let r=n,i=n,a=[];e.forEach(e=>{let n=t.get(e);if(!n)throw Error(`Commit not found for key ${e}`);n.parents.length?(r=Te(n),i=Math.max(r,i)):a.push(n),Ee(n,r)}),r=i,a.forEach(e=>{De(e,r,n)}),e.forEach(e=>{let n=t.get(e);if(n?.parents.length){let e=Se(n.parents);r=V.get(e).y-M,r<=i&&(i=r);let t=B.get(n.branch).pos,a=r-j;V.set(n.id,{x:t,y:a})}})},`setParallelBTPos`),we=i(e=>{let t=Y(e.parents.filter(e=>e!==null));if(!t)throw Error(`Closest parent not found for commit ${e.id}`);let n=V.get(t)?.y;if(n===void 0)throw Error(`Closest parent position not found for commit ${e.id}`);return n},`findClosestParentPos`),Te=i(e=>we(e)+M,`calculateCommitPosition`),Ee=i((e,t)=>{let n=B.get(e.branch);if(!n)throw Error(`Branch not found for commit ${e.id}`);let r=n.pos,i=t+j;return V.set(e.id,{x:r,y:i}),{x:r,y:i}},`setCommitPosition`),De=i((e,t,n)=>{let r=B.get(e.branch);if(!r)throw Error(`Branch not found for commit ${e.id}`);let i=t+n,a=r.pos;V.set(e.id,{x:a,y:i})},`setRootPosition`),Oe=i((e,t,n,r,i,a)=>{let{theme:o}=m(),s=I.has(o??``),c=R.has(o??``),l=xe.has(o??``);if(a===x.HIGHLIGHT)e.append(`rect`).attr(`x`,n.x-10+(s?3:0)).attr(`y`,n.y-10+(s?3:0)).attr(`width`,s?14:20).attr(`height`,s?14:20).attr(`class`,`commit ${t.id} commit-highlight${z(i,F,c)} ${r}-outer`),e.append(`rect`).attr(`x`,n.x-6+(s?2:0)).attr(`y`,n.y-6+(s?2:0)).attr(`width`,s?8:12).attr(`height`,s?8:12).attr(`class`,`commit ${t.id} commit${z(i,F,c)} ${r}-inner`);else if(a===x.CHERRY_PICK)e.append(`circle`).attr(`cx`,n.x).attr(`cy`,n.y).attr(`r`,s?7:10).attr(`class`,`commit ${t.id} ${r}`),e.append(`circle`).attr(`cx`,n.x-3).attr(`cy`,n.y+2).attr(`r`,s?2.5:2.75).attr(`fill`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`),e.append(`circle`).attr(`cx`,n.x+3).attr(`cy`,n.y+2).attr(`r`,s?2.5:2.75).attr(`fill`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`),e.append(`line`).attr(`x1`,n.x+3).attr(`y1`,n.y+1).attr(`x2`,n.x).attr(`y2`,n.y-5).attr(`stroke`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`),e.append(`line`).attr(`x1`,n.x-3).attr(`y1`,n.y+1).attr(`x2`,n.x).attr(`y2`,n.y-5).attr(`stroke`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`);else{let o=e.append(`circle`);if(o.attr(`cx`,n.x),o.attr(`cy`,n.y),o.attr(`r`,s?7:10),o.attr(`class`,`commit ${t.id} commit${z(i,F,c)}`),a===x.MERGE){let a=e.append(`circle`);a.attr(`cx`,n.x),a.attr(`cy`,n.y),a.attr(`r`,s?5:6),a.attr(`class`,`commit ${r} ${t.id} commit${z(i,F,c)}`)}if(a===x.REVERSE){let a=e.append(`path`),o=s?4:5;a.attr(`d`,`M ${n.x-o},${n.y-o}L${n.x+o},${n.y+o}M${n.x-o},${n.y+o}L${n.x+o},${n.y-o}`).attr(`class`,`commit ${r} ${t.id} commit${z(i,F,c)}`)}}},`drawCommitBullet`),ke=i((e,t,n,r,i)=>{if(t.type!==x.CHERRY_PICK&&(t.customId&&t.type===x.MERGE||t.type!==x.MERGE)&&i.showCommitLabel){let a=e.append(`g`),o=a.insert(`rect`).attr(`class`,`commit-label-bkg`),s=a.append(`text`).attr(`x`,r).attr(`y`,n.y+25).attr(`class`,`commit-label`).text(t.id),c=s.node()?.getBBox();if(c&&(o.attr(`x`,n.posWithOffset-c.width/2-P).attr(`y`,n.y+13.5).attr(`width`,c.width+2*P).attr(`height`,c.height+2*P),K===`TB`||K===`BT`?(o.attr(`x`,n.x-(c.width+4*N+5)).attr(`y`,n.y-12),s.attr(`x`,n.x-(c.width+4*N)).attr(`y`,n.y+c.height-12)):s.attr(`x`,n.posWithOffset-c.width/2),i.rotateCommitLabel))if(K===`TB`||K===`BT`)s.attr(`transform`,`rotate(-45, `+n.x+`, `+n.y+`)`),o.attr(`transform`,`rotate(-45, `+n.x+`, `+n.y+`)`);else{let e=-7.5-(c.width+10)/25*9.5,t=10+c.width/25*8.5;a.attr(`transform`,`translate(`+e+`, `+t+`) rotate(-45, `+r+`, `+n.y+`)`)}}},`drawCommitLabel`),Ae=i((e,t,n,r)=>{if(t.tags.length>0){let i=0,a=0,o=0,s=[];for(let r of t.tags.reverse()){let t=e.insert(`polygon`),c=e.append(`circle`),l=e.append(`text`).attr(`y`,n.y-16-i).attr(`class`,`tag-label`).text(r),u=l.node()?.getBBox();if(!u)throw Error(`Tag bbox not found`);a=Math.max(a,u.width),o=Math.max(o,u.height),l.attr(`x`,n.posWithOffset-u.width/2),s.push({tag:l,hole:c,rect:t,yOffset:i}),i+=20}for(let{tag:e,hole:t,rect:i,yOffset:c}of s){let s=o/2,l=n.y-19.2-c;if(i.attr(`class`,`tag-label-bkg`).attr(`points`,` +import{n as e}from"./mermaid-parser.core-C-Sc5_7E.js";import{t}from"./chunk-JWPE2WC7-CEttzwEN.js";import{t as n}from"./chunk-2Q5K7J3B-B6k89qGR.js";import{Ht as r,Ir as i,Lt as a,Nr as o,Sr as s,Ut as c,Zn as l,ar as u,br as d,cr as f,er as p,lr as m,nr as h,or as g,sr as _,ur as v,wr as y,yr as b}from"./MermaidBlock-CI9NjqQx.js";var x={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},ee=u.gitGraph,S=i(()=>a({...ee,...f().gitGraph}),`getConfig`),C=new n(()=>{let e=S(),t=e.mainBranchName,n=e.mainBranchOrder;return{mainBranchName:t,commits:new Map,head:null,branchConfig:new Map([[t,{name:t,order:n}]]),branches:new Map([[t,null]]),currBranch:t,direction:`LR`,seq:0,options:{}}});function w(){return r({length:7})}i(w,`getID`);function T(e,t){let n=Object.create(null);return e.reduce((e,r)=>{let i=t(r);return n[i]||(n[i]=!0,e.push(r)),e},[])}i(T,`uniqBy`);var te=i(function(e){C.records.direction=e},`setDirection`),ne=i(function(e){o.debug(`options str`,e),e=e?.trim(),e||=`{}`;try{C.records.options=JSON.parse(e)}catch(e){o.error(`error while parsing gitGraph options`,e.message)}},`setOptions`),re=i(function(){return C.records.options},`getOptions`),ie=i(function(e){let t=e.msg,n=e.id,r=e.type,i=e.tags;o.info(`commit`,t,n,r,i),o.debug(`Entering commit:`,t,n,r,i);let a=S();n=h.sanitizeText(n,a),t=h.sanitizeText(t,a),i=i?.map(e=>h.sanitizeText(e,a));let s={id:n||C.records.seq+`-`+w(),message:t,seq:C.records.seq++,type:r??x.NORMAL,tags:i??[],parents:C.records.head==null?[]:[C.records.head.id],branch:C.records.currBranch};C.records.head=s,o.info(`main branch`,a.mainBranchName),C.records.commits.has(s.id)&&o.warn(`Commit ID ${s.id} already exists`),C.records.commits.set(s.id,s),C.records.branches.set(C.records.currBranch,s.id),o.debug(`in pushCommit `+s.id)},`commit`),ae=i(function(e){let t=e.name,n=e.order;if(t=h.sanitizeText(t,S()),C.records.branches.has(t))throw Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${t}")`);C.records.branches.set(t,C.records.head==null?null:C.records.head.id),C.records.branchConfig.set(t,{name:t,order:n}),E(t),o.debug(`in createBranch`)},`branch`),oe=i(e=>{let t=e.branch,n=e.id,r=e.type,i=e.tags,a=S();t=h.sanitizeText(t,a),n&&=h.sanitizeText(n,a);let s=C.records.branches.get(C.records.currBranch),c=C.records.branches.get(t),l=s?C.records.commits.get(s):void 0,u=c?C.records.commits.get(c):void 0;if(l&&u&&l.branch===t)throw Error(`Cannot merge branch '${t}' into itself.`);if(C.records.currBranch===t){let e=Error(`Incorrect usage of "merge". Cannot merge a branch to itself`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch abc`]},e}if(l===void 0||!l){let e=Error(`Incorrect usage of "merge". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`commit`]},e}if(!C.records.branches.has(t)){let e=Error(`Incorrect usage of "merge". Branch to be merged (`+t+`) does not exist`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch ${t}`]},e}if(u===void 0||!u){let e=Error(`Incorrect usage of "merge". Branch to be merged (`+t+`) has no commits`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`"commit"`]},e}if(l===u){let e=Error(`Incorrect usage of "merge". Both branches have same head`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch abc`]},e}if(n&&C.records.commits.has(n)){let e=Error(`Incorrect usage of "merge". Commit with id:`+n+` already exists, use different custom id`);throw e.hash={text:`merge ${t} ${n} ${r} ${i?.join(` `)}`,token:`merge ${t} ${n} ${r} ${i?.join(` `)}`,expected:[`merge ${t} ${n}_UNIQUE ${r} ${i?.join(` `)}`]},e}let d=c||``,f={id:n||`${C.records.seq}-${w()}`,message:`merged branch ${t} into ${C.records.currBranch}`,seq:C.records.seq++,parents:C.records.head==null?[]:[C.records.head.id,d],branch:C.records.currBranch,type:x.MERGE,customType:r,customId:!!n,tags:i??[]};C.records.head=f,C.records.commits.set(f.id,f),C.records.branches.set(C.records.currBranch,f.id),o.debug(C.records.branches),o.debug(`in mergeBranch`)},`merge`),se=i(function(e){let t=e.id,n=e.targetId,r=e.tags,i=e.parent;o.debug(`Entering cherryPick:`,t,n,r);let a=S();if(t=h.sanitizeText(t,a),n=h.sanitizeText(n,a),r=r?.map(e=>h.sanitizeText(e,a)),i=h.sanitizeText(i,a),!t||!C.records.commits.has(t)){let e=Error(`Incorrect usage of "cherryPick". Source commit id should exist and provided`);throw e.hash={text:`cherryPick ${t} ${n}`,token:`cherryPick ${t} ${n}`,expected:[`cherry-pick abc`]},e}let s=C.records.commits.get(t);if(s===void 0||!s)throw Error(`Incorrect usage of "cherryPick". Source commit id should exist and provided`);if(i&&!(Array.isArray(s.parents)&&s.parents.includes(i)))throw Error(`Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.`);let c=s.branch;if(s.type===x.MERGE&&!i)throw Error(`Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.`);if(!n||!C.records.commits.has(n)){if(c===C.records.currBranch){let e=Error(`Incorrect usage of "cherryPick". Source commit is already on current branch`);throw e.hash={text:`cherryPick ${t} ${n}`,token:`cherryPick ${t} ${n}`,expected:[`cherry-pick abc`]},e}let e=C.records.branches.get(C.records.currBranch);if(e===void 0||!e){let e=Error(`Incorrect usage of "cherry-pick". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`cherryPick ${t} ${n}`,token:`cherryPick ${t} ${n}`,expected:[`cherry-pick abc`]},e}let a=C.records.commits.get(e);if(a===void 0||!a){let e=Error(`Incorrect usage of "cherry-pick". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`cherryPick ${t} ${n}`,token:`cherryPick ${t} ${n}`,expected:[`cherry-pick abc`]},e}let l={id:C.records.seq+`-`+w(),message:`cherry-picked ${s?.message} into ${C.records.currBranch}`,seq:C.records.seq++,parents:C.records.head==null?[]:[C.records.head.id,s.id],branch:C.records.currBranch,type:x.CHERRY_PICK,tags:r?r.filter(Boolean):[`cherry-pick:${s.id}${s.type===x.MERGE?`|parent:${i}`:``}`]};C.records.head=l,C.records.commits.set(l.id,l),C.records.branches.set(C.records.currBranch,l.id),o.debug(C.records.branches),o.debug(`in cherryPick`)}},`cherryPick`),E=i(function(e){if(e=h.sanitizeText(e,S()),C.records.branches.has(e)){C.records.currBranch=e;let t=C.records.branches.get(C.records.currBranch);t===void 0||!t?C.records.head=null:C.records.head=C.records.commits.get(t)??null}else{let t=Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${e}")`);throw t.hash={text:`checkout ${e}`,token:`checkout ${e}`,expected:[`branch ${e}`]},t}},`checkout`);function D(e,t,n){let r=e.indexOf(t);r===-1?e.push(n):e.splice(r,1,n)}i(D,`upsert`);function O(e){let t=e.reduce((e,t)=>e.seq>t.seq?e:t,e[0]),n=``;e.forEach(function(e){e===t?n+=` *`:n+=` |`});let r=[n,t.id,t.seq];for(let e in C.records.branches)C.records.branches.get(e)===t.id&&r.push(e);if(o.debug(r.join(` `)),t.parents&&t.parents.length==2&&t.parents[0]&&t.parents[1]){let n=C.records.commits.get(t.parents[0]);D(e,t,n),t.parents[1]&&e.push(C.records.commits.get(t.parents[1]))}else if(t.parents.length==0)return;else if(t.parents[0]){let n=C.records.commits.get(t.parents[0]);D(e,t,n)}e=T(e,e=>e.id),O(e)}i(O,`prettyPrintCommitHistory`);var ce=i(function(){o.debug(C.records.commits);let e=k()[0];O([e])},`prettyPrint`),le=i(function(){C.reset(),p()},`clear`),ue=i(function(){return[...C.records.branchConfig.values()].map((e,t)=>e.order!==null&&e.order!==void 0?e:{...e,order:parseFloat(`0.${t}`)}).sort((e,t)=>(e.order??0)-(t.order??0)).map(({name:e})=>({name:e}))},`getBranchesAsObjArray`),de=i(function(){return C.records.branches},`getBranches`),fe=i(function(){return C.records.commits},`getCommits`),k=i(function(){let e=[...C.records.commits.values()];return e.forEach(function(e){o.debug(e.id)}),e.sort((e,t)=>e.seq-t.seq),e},`getCommitsArray`),A={commitType:x,getConfig:S,setDirection:te,setOptions:ne,getOptions:re,commit:ie,branch:ae,merge:oe,cherryPick:se,checkout:E,prettyPrint:ce,clear:le,getBranchesAsObjArray:ue,getBranches:de,getCommits:fe,getCommitsArray:k,getCurrentBranch:i(function(){return C.records.currBranch},`getCurrentBranch`),getDirection:i(function(){return C.records.direction},`getDirection`),getHead:i(function(){return C.records.head},`getHead`),setAccTitle:d,getAccTitle:_,getAccDescription:g,setAccDescription:b,setDiagramTitle:s,getDiagramTitle:v},pe=i((e,n)=>{t(e,n),e.dir&&n.setDirection(e.dir);for(let t of e.statements)me(t,n)},`populate`),me=i((e,t)=>{let n={Commit:i(e=>t.commit(he(e)),`Commit`),Branch:i(e=>t.branch(ge(e)),`Branch`),Merge:i(e=>t.merge(_e(e)),`Merge`),Checkout:i(e=>t.checkout(ve(e)),`Checkout`),CherryPicking:i(e=>t.cherryPick(ye(e)),`CherryPicking`)}[e.$type];n?n(e):o.error(`Unknown statement type: ${e.$type}`)},`parseStatement`),he=i(e=>({id:e.id,msg:e.message??``,type:e.type===void 0?x.NORMAL:x[e.type],tags:e.tags??void 0}),`parseCommit`),ge=i(e=>({name:e.name,order:e.order??0}),`parseBranch`),_e=i(e=>({branch:e.branch,id:e.id??``,type:e.type===void 0?void 0:x[e.type],tags:e.tags??void 0}),`parseMerge`),ve=i(e=>e.branch,`parseCheckout`),ye=i(e=>({id:e.id,targetId:``,tags:e.tags?.length===0?void 0:e.tags,parent:e.parent}),`parseCherryPicking`),be={parse:i(async t=>{let n=await e(`gitGraph`,t);o.debug(n),pe(n,A)},`parse`)},j=10,M=40,N=4,P=2,F=8,I=new Set([`redux`,`redux-dark`,`redux-color`,`redux-dark-color`]),L=12,R=new Set([`redux-color`,`redux-dark-color`]),xe=new Set([`dark`,`redux-dark`,`redux-dark-color`,`neo-dark`]),z=i((e,t,n=!1)=>n&&e>0?(e-1)%(t-1)+1:e%t,`calcColorIndex`),B=new Map,V=new Map,H=30,U=new Map,W=[],G=0,K=`LR`,q=i(()=>{B.clear(),V.clear(),U.clear(),G=0,W=[],K=`LR`},`clear`),J=i(e=>{let t=document.createElementNS(`http://www.w3.org/2000/svg`,`text`);return(typeof e==`string`?e.split(/\\n|\n|/gi):e).forEach(e=>{let n=document.createElementNS(`http://www.w3.org/2000/svg`,`tspan`);n.setAttributeNS(`http://www.w3.org/XML/1998/namespace`,`xml:space`,`preserve`),n.setAttribute(`dy`,`1em`),n.setAttribute(`x`,`0`),n.setAttribute(`class`,`row`),n.textContent=e.trim(),t.appendChild(n)}),t},`drawText`),Y=i(e=>{let t,n,r;return K===`BT`?(n=i((e,t)=>e<=t,`comparisonFunc`),r=1/0):(n=i((e,t)=>e>=t,`comparisonFunc`),r=0),e.forEach(e=>{let i=K===`TB`||K==`BT`?V.get(e)?.y:V.get(e)?.x;i!==void 0&&n(i,r)&&(t=e,r=i)}),t},`findClosestParent`),Se=i(e=>{let t=``,n=1/0;return e.forEach(e=>{let r=V.get(e).y;r<=n&&(t=e,n=r)}),t||void 0},`findClosestParentBT`),Ce=i((e,t,n)=>{let r=n,i=n,a=[];e.forEach(e=>{let n=t.get(e);if(!n)throw Error(`Commit not found for key ${e}`);n.parents.length?(r=Te(n),i=Math.max(r,i)):a.push(n),Ee(n,r)}),r=i,a.forEach(e=>{De(e,r,n)}),e.forEach(e=>{let n=t.get(e);if(n?.parents.length){let e=Se(n.parents);r=V.get(e).y-M,r<=i&&(i=r);let t=B.get(n.branch).pos,a=r-j;V.set(n.id,{x:t,y:a})}})},`setParallelBTPos`),we=i(e=>{let t=Y(e.parents.filter(e=>e!==null));if(!t)throw Error(`Closest parent not found for commit ${e.id}`);let n=V.get(t)?.y;if(n===void 0)throw Error(`Closest parent position not found for commit ${e.id}`);return n},`findClosestParentPos`),Te=i(e=>we(e)+M,`calculateCommitPosition`),Ee=i((e,t)=>{let n=B.get(e.branch);if(!n)throw Error(`Branch not found for commit ${e.id}`);let r=n.pos,i=t+j;return V.set(e.id,{x:r,y:i}),{x:r,y:i}},`setCommitPosition`),De=i((e,t,n)=>{let r=B.get(e.branch);if(!r)throw Error(`Branch not found for commit ${e.id}`);let i=t+n,a=r.pos;V.set(e.id,{x:a,y:i})},`setRootPosition`),Oe=i((e,t,n,r,i,a)=>{let{theme:o}=m(),s=I.has(o??``),c=R.has(o??``),l=xe.has(o??``);if(a===x.HIGHLIGHT)e.append(`rect`).attr(`x`,n.x-10+(s?3:0)).attr(`y`,n.y-10+(s?3:0)).attr(`width`,s?14:20).attr(`height`,s?14:20).attr(`class`,`commit ${t.id} commit-highlight${z(i,F,c)} ${r}-outer`),e.append(`rect`).attr(`x`,n.x-6+(s?2:0)).attr(`y`,n.y-6+(s?2:0)).attr(`width`,s?8:12).attr(`height`,s?8:12).attr(`class`,`commit ${t.id} commit${z(i,F,c)} ${r}-inner`);else if(a===x.CHERRY_PICK)e.append(`circle`).attr(`cx`,n.x).attr(`cy`,n.y).attr(`r`,s?7:10).attr(`class`,`commit ${t.id} ${r}`),e.append(`circle`).attr(`cx`,n.x-3).attr(`cy`,n.y+2).attr(`r`,s?2.5:2.75).attr(`fill`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`),e.append(`circle`).attr(`cx`,n.x+3).attr(`cy`,n.y+2).attr(`r`,s?2.5:2.75).attr(`fill`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`),e.append(`line`).attr(`x1`,n.x+3).attr(`y1`,n.y+1).attr(`x2`,n.x).attr(`y2`,n.y-5).attr(`stroke`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`),e.append(`line`).attr(`x1`,n.x-3).attr(`y1`,n.y+1).attr(`x2`,n.x).attr(`y2`,n.y-5).attr(`stroke`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`);else{let o=e.append(`circle`);if(o.attr(`cx`,n.x),o.attr(`cy`,n.y),o.attr(`r`,s?7:10),o.attr(`class`,`commit ${t.id} commit${z(i,F,c)}`),a===x.MERGE){let a=e.append(`circle`);a.attr(`cx`,n.x),a.attr(`cy`,n.y),a.attr(`r`,s?5:6),a.attr(`class`,`commit ${r} ${t.id} commit${z(i,F,c)}`)}if(a===x.REVERSE){let a=e.append(`path`),o=s?4:5;a.attr(`d`,`M ${n.x-o},${n.y-o}L${n.x+o},${n.y+o}M${n.x-o},${n.y+o}L${n.x+o},${n.y-o}`).attr(`class`,`commit ${r} ${t.id} commit${z(i,F,c)}`)}}},`drawCommitBullet`),ke=i((e,t,n,r,i)=>{if(t.type!==x.CHERRY_PICK&&(t.customId&&t.type===x.MERGE||t.type!==x.MERGE)&&i.showCommitLabel){let a=e.append(`g`),o=a.insert(`rect`).attr(`class`,`commit-label-bkg`),s=a.append(`text`).attr(`x`,r).attr(`y`,n.y+25).attr(`class`,`commit-label`).text(t.id),c=s.node()?.getBBox();if(c&&(o.attr(`x`,n.posWithOffset-c.width/2-P).attr(`y`,n.y+13.5).attr(`width`,c.width+2*P).attr(`height`,c.height+2*P),K===`TB`||K===`BT`?(o.attr(`x`,n.x-(c.width+4*N+5)).attr(`y`,n.y-12),s.attr(`x`,n.x-(c.width+4*N)).attr(`y`,n.y+c.height-12)):s.attr(`x`,n.posWithOffset-c.width/2),i.rotateCommitLabel))if(K===`TB`||K===`BT`)s.attr(`transform`,`rotate(-45, `+n.x+`, `+n.y+`)`),o.attr(`transform`,`rotate(-45, `+n.x+`, `+n.y+`)`);else{let e=-7.5-(c.width+10)/25*9.5,t=10+c.width/25*8.5;a.attr(`transform`,`translate(`+e+`, `+t+`) rotate(-45, `+r+`, `+n.y+`)`)}}},`drawCommitLabel`),Ae=i((e,t,n,r)=>{if(t.tags.length>0){let i=0,a=0,o=0,s=[];for(let r of t.tags.reverse()){let t=e.insert(`polygon`),c=e.append(`circle`),l=e.append(`text`).attr(`y`,n.y-16-i).attr(`class`,`tag-label`).text(r),u=l.node()?.getBBox();if(!u)throw Error(`Tag bbox not found`);a=Math.max(a,u.width),o=Math.max(o,u.height),l.attr(`x`,n.posWithOffset-u.width/2),s.push({tag:l,hole:c,rect:t,yOffset:i}),i+=20}for(let{tag:e,hole:t,rect:i,yOffset:c}of s){let s=o/2,l=n.y-19.2-c;if(i.attr(`class`,`tag-label-bkg`).attr(`points`,` ${r-a/2-N/2},${l+P} ${r-a/2-N/2},${l-P} ${n.posWithOffset-a/2-N},${l-s-P} diff --git a/ksadk/server/static/assets/index-8ipRcQ-M.js b/ksadk/server/static/assets/index-BkDx9KsG.js similarity index 54% rename from ksadk/server/static/assets/index-8ipRcQ-M.js rename to ksadk/server/static/assets/index-BkDx9KsG.js index 4043b94e..36f74dfc 100644 --- a/ksadk/server/static/assets/index-8ipRcQ-M.js +++ b/ksadk/server/static/assets/index-BkDx9KsG.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./MathMessageMarkdown-BL8my1R2.js","./CodeBlock-DOH6MVcn.js","./MermaidBlock-Dz4IP-Tx.js","./katex-vFWytM5c.js","./MathMessageMarkdown-BorAY7qD.css","./NativeTerminalPanel-DUrK0JpZ.js","./NativeTerminalPanel-CHOd7Rch.css","./dist-BE7bu-DL.js","./dist-C_wsv-Qd.js","./dist-DmldrHd_.js","./dist-B7seoj3d.js","./dist-CSh_DE14.js","./dist-BjU6y-A2.js","./dist-DnfXs8Vn.js","./dist-8hqcx0sU.js","./dist-BX8z72IC.js","./dist-BVDffZ0U.js","./dist-DNp6rLRA.js","./dist-ngtN0DJB.js","./dist-CttYUqzS.js","./dist-CXYYBw3_.js","./dist-dDdADKFA.js","./dist-DUX-id_F.js","./dist-dydu68Fl.js","./dist-ClxGviKw.js","./dist-Bf2M8m3N.js","./dist-W-TIVntx.js","./dockerfile-BLkNEvjs.js","./simple-mode-DRpGK0lJ.js","./factor-D7LVTn2l.js","./nsis-AQ_alPln.js","./pug-Bugr-47h.js","./javascript-9Tg8ixDm.js","./dist-Dq9gLD7L.js","./dist-BytlxIDT.js"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./MathMessageMarkdown-BBnihmbC.js","./CodeBlock-D6tEbvd9.js","./MermaidBlock-CI9NjqQx.js","./katex-DCJHF0vD.js","./MathMessageMarkdown-BorAY7qD.css","./NativeTerminalPanel-Czpx2MSS.js","./NativeTerminalPanel-CHOd7Rch.css","./dist-CTeZLI0m.js","./dist-DeO3Qj-D.js","./dist-CoCI5ZIy.js","./dist-B-VEMnGR.js","./dist-BxjBfG2w.js","./dist-B6XMlZpc.js","./dist-C-Q0Ulfg.js","./dist-oPMjOYRU.js","./dist-CaTDm1g0.js","./dist-hRISJdRx.js","./dist-DgSf2VGQ.js","./dist-CUFAKgYs.js","./dist-Byl0QKIY.js","./dist-BvMDy0Xp.js","./dist-C-V2Wj4x.js","./dist-CPZHorum.js","./dist-2cbEIexW.js","./dist-4j-rswH6.js","./dist-DwwtGqH9.js","./dist-BZiMQVbN.js","./dockerfile-BLkNEvjs.js","./simple-mode-DRpGK0lJ.js","./factor-D7LVTn2l.js","./nsis-AQ_alPln.js","./pug-Bugr-47h.js","./javascript-9Tg8ixDm.js","./dist-DGFsOxe9.js","./dist-BQCggVji.js"])))=>i.map(i=>d[i]); var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var u=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,ee||(ee=!0,w());else{var t=n(l);t!==null&&oe(x,t.startTime-e)}}var ee=!1,te=-1,S=5,ne=-1;function re(){return g?!0:!(e.unstable_now()-net&&re());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&oe(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?w():ee=!1}}}var w;if(typeof y==`function`)w=function(){y(C)};else if(typeof MessageChannel<`u`){var ie=new MessageChannel,ae=ie.port2;ie.port1.onmessage=C,w=function(){ae.postMessage(null)}}else w=function(){_(C,0)};function oe(t,n){te=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(te),te=-1):h=!0,oe(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,ee||(ee=!0,w()))),r},e.unstable_shouldYield=re,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),d=o(((e,t)=>{t.exports=u()})),f=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var ee=Array.isArray;function te(){}var S={H:null,A:null,T:null,S:null},ne=Object.prototype.hasOwnProperty;function re(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function C(e,t){return re(e.type,t,e.props)}function w(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ie(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var ae=/\/+/g;function oe(e,t){return typeof e==`object`&&e&&e.key!=null?ie(``+e.key):t.toString(36)}function se(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(te,te):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function ce(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,ce(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+oe(e,0):a,ee(o)?(i=``,c!=null&&(i=c.replace(ae,`$&/`)+`/`),ce(o,r,i,``,function(e){return e})):o!=null&&(w(o)&&(o=C(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(ae,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(ee(e))for(var u=0;u{t.exports=f()})),m=o((e=>{var t=p();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=m()})),g=o((e=>{var t=d(),n=p(),r=h();function i(e){var t=`https://react.dev/errors/`+e;if(1pe||(e.current=fe[pe],fe[pe]=null,pe--)}function ge(e,t){pe++,fe[pe]=e.current,e.current=t}var _e=me(null),ve=me(null),ye=me(null),be=me(null);function xe(e,t){switch(ge(ye,t),ge(ve,e),ge(_e,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?cf(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=cf(t),e=lf(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}he(_e),ge(_e,e)}function Se(){he(_e),he(ve),he(ye)}function Ce(e){e.memoizedState!==null&&ge(be,e);var t=_e.current,n=lf(t,e.type);t!==n&&(ge(ve,e),ge(_e,n))}function we(e){ve.current===e&&(he(_e),he(ve)),be.current===e&&(he(be),_p._currentValue=de)}var Te,Ee;function De(e){if(Te===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Te=t&&t[1]||``,Ee=-1)`:-1String(Dl(e)?.text||``)).join(``);for(let e of[`text`,`output`,`stdout`,`stderr`])if(n[e]!=null)return String(n[e])}return``}function jl(e){return e.map(Al).join(``)}function Ml(e){return e.some(e=>Dl(Dl(e)?.data)?.type===`userMessage`)}function Nl(e){if(e.length===1){let t=Dl(Dl(e[0])?.data);if(t)return t}return jl(e)||null}var Pl=class{textByPart=new Map;sessionId;constructor(e){this.sessionId=e}translate(e){if(!Dl(e))return null;let t=Number(e.seq);if(!Number.isFinite(t)||t<=0)return null;let n=String(e.family||``),r=String(e.event_type||``),i=String(e.run_id||``),a=()=>({EventId:e.event_id?String(e.event_id):`kernel-${t}`,SessionId:this.sessionId,InvocationId:i||void 0,SeqId:t});if(n===`interaction`)return{...a(),EventType:r,payload:e};if(n===`control`){if(r===`control.run_transition`){let t=String(e.state||``).toLowerCase();if(El.has(t))return{...a(),EventType:`run_status`,Content:{status:t}}}return null}if(n!==`runtime`)return null;let o=Tl[r];if(o)return{...a(),EventType:`run_status`,Content:{status:o}};let s=Ol(e);if(r===`item.started`){let t=kl(e,`initial`);return s===`userMessage`||Ml(t)?null:s===`agentMessage`||!s&&e.item_kind===`message`?{...a(),EventType:`assistant_stream_snapshot`,Content:{parts:[{text:``}]}}:s&&s!==`notification`?{...a(),EventType:`tool_call`,Metadata:{call_id:String(e.item_id||``),tool_name:s,run_id:i,tool_args:Nl(t)}}:null}if(r===`item.updated`){let n=kl(e,`snapshot`),r=Dl(n[0]),i=String(r?.part_id||e.item_id||t),o=String(e.op||`replace`),c=jl(n),l=this.textByPart.get(i)||``,u=o===`append`?l+c:c;return this.textByPart.set(i,u),s===`agentMessage`||!s&&e.item_kind===`message`?{...a(),EventType:`assistant_stream_snapshot`,Content:{parts:[{text:u}]}}:s===`reasoning`||e.item_kind===`reasoning`?{...a(),EventType:`reasoning`,Content:{text:u}}:null}if(r===`item.completed`){let n=kl(e,`snapshot`);if(s===`userMessage`||Ml(n))return{...a(),EventType:`user_message`,Content:{parts:[{text:jl(n)}]}};if(s===`agentMessage`||!s&&e.item_kind===`message`){let r=jl(n);return this.textByPart.set(String(Dl(n[0])?.part_id||e.item_id||t),r),{...a(),EventType:`assistant_message`,Content:{parts:[{text:r}]}}}return s===`reasoning`||e.item_kind===`reasoning`?{...a(),EventType:`reasoning`,Content:{text:jl(n)}}:s&&s!==`notification`?{...a(),EventType:`tool_result`,Metadata:{call_id:String(e.item_id||``),tool_name:s,run_id:i,tool_output:Nl(n)}}:null}return null}};async function Fl(e){let t=e.getReader(),n=new TextDecoder,r=``,i=null,a=!1,o=e=>e.includes(`data:`)||e.includes(`event:`)||e.includes(`:`);try{for(;;){let{value:e,done:s}=await t.read();if(e&&(r+=n.decode(e,{stream:!0})),s){a=!0;break}if(r.trimStart().startsWith(`{`)){if(Il(r)){i=Ll(r);break}}else if(o(r))break}}catch{}let s=new TextEncoder().encode(r),c=new ReadableStream({start(e){if(s.length>0&&e.enqueue(s),a||i){e.close();return}let n=()=>t.read().then(({value:t,done:r})=>{if(t&&e.enqueue(t),r){e.close();return}return n()}).catch(()=>{try{e.close()}catch{}});n()},cancel(){t.cancel()}});return{receipt:i,stream:c}}function Il(e){let t=e.trim();if(!t.endsWith(`}`))return!1;let n=0,r=!1,i=!1;for(let e of t){if(i){i=!1;continue}if(e===`\\`){i=!0;continue}e===`"`&&(r=!r),!r&&((e===`{`||e===`[`)&&(n+=1),(e===`}`||e===`]`)&&--n)}return n===0}function Ll(e){try{let t=Dl(JSON.parse(e).Data),n=String(t?.ReceiptStatus||``);if(!n)return null;let r=Dl(t?.Error);return{status:n,messageId:t?.MessageId??null,runId:t?.RunId??null,acceptedSeq:t?.AcceptedSeq??null,error:r?{code:String(r.code||``),message:String(r.message||``)}:null}}catch{return null}}var Rl=[];for(let e=0;e<256;++e)Rl.push((e+256).toString(16).slice(1));function zl(e,t=0){return(Rl[e[t+0]]+Rl[e[t+1]]+Rl[e[t+2]]+Rl[e[t+3]]+`-`+Rl[e[t+4]]+Rl[e[t+5]]+`-`+Rl[e[t+6]]+Rl[e[t+7]]+`-`+Rl[e[t+8]]+Rl[e[t+9]]+`-`+Rl[e[t+10]]+Rl[e[t+11]]+Rl[e[t+12]]+Rl[e[t+13]]+Rl[e[t+14]]+Rl[e[t+15]]).toLowerCase()}var Bl,Vl=new Uint8Array(16);function Hl(){if(!Bl){if(typeof crypto>`u`||!crypto.getRandomValues)throw Error(`crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported`);Bl=crypto.getRandomValues.bind(crypto)}return Bl(Vl)}var Ul={randomUUID:typeof crypto<`u`&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Wl(e,t,n){if(Ul.randomUUID&&!t&&!e)return Ul.randomUUID();e||={};let r=e.random??e.rng?.()??Hl();if(r.length<16)throw Error(`Random bytes length must be >= 16`);if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){if(n||=0,n<0||n+16>t.length)throw RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[n+e]=r[e];return t}return zl(r)}var Gl;(function(e){e.assertEqual=e=>{};function t(e){}e.assertIs=t;function n(e){throw Error()}e.assertNever=n,e.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},e.getValidEnumValues=t=>{let n=e.objectKeys(t).filter(e=>typeof t[t[e]]!=`number`),r={};for(let e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys=typeof Object.keys==`function`?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(let n of e)if(t(n))return n},e.isInteger=typeof Number.isInteger==`function`?e=>Number.isInteger(e):e=>typeof e==`number`&&Number.isFinite(e)&&Math.floor(e)===e;function r(e,t=` | `){return e.map(e=>typeof e==`string`?`'${e}'`:e).join(t)}e.joinValues=r,e.jsonStringifyReplacer=(e,t)=>typeof t==`bigint`?t.toString():t})(Gl||={});var Kl;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})(Kl||={});var k=Gl.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),ql=e=>{switch(typeof e){case`undefined`:return k.undefined;case`string`:return k.string;case`number`:return Number.isNaN(e)?k.nan:k.number;case`boolean`:return k.boolean;case`function`:return k.function;case`bigint`:return k.bigint;case`symbol`:return k.symbol;case`object`:return Array.isArray(e)?k.array:e===null?k.null:e.then&&typeof e.then==`function`&&e.catch&&typeof e.catch==`function`?k.promise:typeof Map<`u`&&e instanceof Map?k.map:typeof Set<`u`&&e instanceof Set?k.set:typeof Date<`u`&&e instanceof Date?k.date:k.object;default:return k.unknown}},A=Gl.arrayToEnum([`invalid_type`,`invalid_literal`,`custom`,`invalid_union`,`invalid_union_discriminator`,`invalid_enum_value`,`unrecognized_keys`,`invalid_arguments`,`invalid_return_type`,`invalid_date`,`invalid_string`,`too_small`,`too_big`,`invalid_intersection_types`,`not_multiple_of`,`not_finite`]),Jl=class e extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=`ZodError`,this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`)i.unionErrors.map(r);else if(i.code===`invalid_return_type`)r(i.returnTypeError);else if(i.code===`invalid_arguments`)r(i.argumentsError);else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;re.message){let t={},n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};Jl.create=e=>new Jl(e);var Yl=(e,t)=>{let n;switch(e.code){case A.invalid_type:n=e.received===k.undefined?`Required`:`Expected ${e.expected}, received ${e.received}`;break;case A.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,Gl.jsonStringifyReplacer)}`;break;case A.unrecognized_keys:n=`Unrecognized key(s) in object: ${Gl.joinValues(e.keys,`, `)}`;break;case A.invalid_union:n=`Invalid input`;break;case A.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${Gl.joinValues(e.options)}`;break;case A.invalid_enum_value:n=`Invalid enum value. Expected ${Gl.joinValues(e.options)}, received '${e.received}'`;break;case A.invalid_arguments:n=`Invalid function arguments`;break;case A.invalid_return_type:n=`Invalid function return type`;break;case A.invalid_date:n=`Invalid date`;break;case A.invalid_string:typeof e.validation==`object`?`includes`in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position==`number`&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):`startsWith`in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:`endsWith`in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:Gl.assertNever(e.validation):n=e.validation===`regex`?`Invalid`:`Invalid ${e.validation}`;break;case A.too_small:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at least`:`more than`} ${e.minimum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at least`:`over`} ${e.minimum} character(s)`:e.type===`number`||e.type===`bigint`?`Number must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${e.minimum}`:e.type===`date`?`Date must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(e.minimum))}`:`Invalid input`;break;case A.too_big:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at most`:`less than`} ${e.maximum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at most`:`under`} ${e.maximum} character(s)`:e.type===`number`?`Number must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`bigint`?`BigInt must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`date`?`Date must be ${e.exact?`exactly`:e.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(e.maximum))}`:`Invalid input`;break;case A.custom:n=`Invalid input`;break;case A.invalid_intersection_types:n=`Intersection results could not be merged`;break;case A.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case A.not_finite:n=`Number must be finite`;break;default:n=t.defaultError,Gl.assertNever(e)}return{message:n}},Xl=Yl;function Zl(){return Xl}var Ql=e=>{let{data:t,path:n,errorMaps:r,issueData:i}=e,a=[...n,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s=``,c=r.filter(e=>!!e).slice().reverse();for(let e of c)s=e(o,{data:t,defaultError:s}).message;return{...i,path:a,message:s}};function j(e,t){let n=Zl(),r=Ql({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===Yl?void 0:Yl].filter(e=>!!e)});e.common.issues.push(r)}var $l=class e{constructor(){this.value=`valid`}dirty(){this.value===`valid`&&(this.value=`dirty`)}abort(){this.value!==`aborted`&&(this.value=`aborted`)}static mergeArray(e,t){let n=[];for(let r of t){if(r.status===`aborted`)return M;r.status===`dirty`&&e.dirty(),n.push(r.value)}return{status:e.value,value:n}}static async mergeObjectAsync(t,n){let r=[];for(let e of n){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return e.mergeObjectSync(t,r)}static mergeObjectSync(e,t){let n={};for(let r of t){let{key:t,value:i}=r;if(t.status===`aborted`||i.status===`aborted`)return M;t.status===`dirty`&&e.dirty(),i.status===`dirty`&&e.dirty(),t.value!==`__proto__`&&(i.value!==void 0||r.alwaysSet)&&(n[t.value]=i.value)}return{status:e.value,value:n}}},M=Object.freeze({status:`aborted`}),eu=e=>({status:`dirty`,value:e}),tu=e=>({status:`valid`,value:e}),nu=e=>e.status===`aborted`,ru=e=>e.status===`dirty`,iu=e=>e.status===`valid`,au=e=>typeof Promise<`u`&&e instanceof Promise,ou;(function(e){e.errToObj=e=>typeof e==`string`?{message:e}:e||{},e.toString=e=>typeof e==`string`?e:e?.message})(ou||={});var su=class{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},cu=(e,t)=>{if(iu(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(`Validation failed but no issues detected.`);return{success:!1,get error(){if(this._error)return this._error;let t=new Jl(e.common.issues);return this._error=t,this._error}}};function lu(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return t.code===`invalid_enum_value`?{message:a??i.defaultError}:i.data===void 0?{message:a??r??i.defaultError}:t.code===`invalid_type`?{message:a??n??i.defaultError}:{message:i.defaultError}},description:i}}var uu=class{get description(){return this._def.description}_getType(e){return ql(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:ql(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new $l,ctx:{common:e.parent.common,data:e.data,parsedType:ql(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(au(t))throw Error(`Synchronous parse encountered promise.`);return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ql(e)};return cu(n,this._parseSync({data:e,path:n.path,parent:n}))}"~validate"(e){let t={common:{issues:[],async:!!this[`~standard`].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ql(e)};if(!this[`~standard`].async)try{let n=this._parseSync({data:e,path:[],parent:t});return iu(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(`encountered`)&&(this[`~standard`].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>iu(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ql(e)},r=this._parse({data:e,path:n.path,parent:n});return cu(n,await(au(r)?r:Promise.resolve(r)))}refine(e,t){let n=e=>typeof t==`string`||t===void 0?{message:t}:typeof t==`function`?t(e):t;return this._refinement((t,r)=>{let i=e(t),a=()=>r.addIssue({code:A.custom,...n(t)});return typeof Promise<`u`&&i instanceof Promise?i.then(e=>e?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(e,t){return this._refinement((n,r)=>e(n)?!0:(r.addIssue(typeof t==`function`?t(n,r):t),!1))}_refinement(e){return new pd({schema:this,typeName:Sd.ZodEffects,effect:{type:`refinement`,refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[`~standard`]={version:1,vendor:`zod`,validate:e=>this[`~validate`](e)}}optional(){return md.create(this,this._def)}nullable(){return hd.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Ju.create(this)}promise(){return fd.create(this,this._def)}or(e){return Zu.create([this,e],this._def)}and(e){return td.create(this,e,this._def)}transform(e){return new pd({...lu(this._def),schema:this,typeName:Sd.ZodEffects,effect:{type:`transform`,transform:e}})}default(e){let t=typeof e==`function`?e:()=>e;return new gd({...lu(this._def),innerType:this,defaultValue:t,typeName:Sd.ZodDefault})}brand(){return new yd({typeName:Sd.ZodBranded,type:this,...lu(this._def)})}catch(e){let t=typeof e==`function`?e:()=>e;return new _d({...lu(this._def),innerType:this,catchValue:t,typeName:Sd.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return bd.create(this,e)}readonly(){return xd.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},du=/^c[^\s-]{8,}$/i,fu=/^[0-9a-z]+$/,pu=/^[0-9A-HJKMNP-TV-Z]{26}$/i,mu=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,hu=/^[a-z0-9_-]{21}$/i,gu=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,_u=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,vu=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,yu=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,bu,xu=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Su=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,Cu=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,wu=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Tu=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Eu=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Du=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`,Ou=RegExp(`^${Du}$`);function ku(e){let t=`[0-5]\\d`;e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision??(t=`${t}(\\.\\d+)?`);let n=e.precision?`+`:`?`;return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function Au(e){return RegExp(`^${ku(e)}$`)}function ju(e){let t=`${Du}T${ku(e)}`,n=[];return n.push(e.local?`Z?`:`Z`),e.offset&&n.push(`([+-]\\d{2}:?\\d{2})`),t=`${t}(${n.join(`|`)})`,RegExp(`^${t}$`)}function Mu(e,t){return!!((t===`v4`||!t)&&xu.test(e)||(t===`v6`||!t)&&Cu.test(e))}function Nu(e,t){if(!gu.test(e))return!1;try{let[n]=e.split(`.`);if(!n)return!1;let r=n.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(n.length+(4-n.length%4)%4,`=`),i=JSON.parse(atob(r));return!(typeof i!=`object`||!i||`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&i.alg!==t)}catch{return!1}}function Pu(e,t){return!!((t===`v4`||!t)&&Su.test(e)||(t===`v6`||!t)&&wu.test(e))}var Fu=class e extends uu{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==k.string){let t=this._getOrReturnCtx(e);return j(t,{code:A.invalid_type,expected:k.string,received:t.parsedType}),M}let t=new $l,n;for(let r of this._def.checks)if(r.kind===`min`)e.data.lengthr.value&&(n=this._getOrReturnCtx(e,n),j(n,{code:A.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),t.dirty());else if(r.kind===`length`){let i=e.data.length>r.value,a=e.data.lengthe.test(t),{validation:t,code:A.invalid_string,...ou.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(e){return this._addCheck({kind:`email`,...ou.errToObj(e)})}url(e){return this._addCheck({kind:`url`,...ou.errToObj(e)})}emoji(e){return this._addCheck({kind:`emoji`,...ou.errToObj(e)})}uuid(e){return this._addCheck({kind:`uuid`,...ou.errToObj(e)})}nanoid(e){return this._addCheck({kind:`nanoid`,...ou.errToObj(e)})}cuid(e){return this._addCheck({kind:`cuid`,...ou.errToObj(e)})}cuid2(e){return this._addCheck({kind:`cuid2`,...ou.errToObj(e)})}ulid(e){return this._addCheck({kind:`ulid`,...ou.errToObj(e)})}base64(e){return this._addCheck({kind:`base64`,...ou.errToObj(e)})}base64url(e){return this._addCheck({kind:`base64url`,...ou.errToObj(e)})}jwt(e){return this._addCheck({kind:`jwt`,...ou.errToObj(e)})}ip(e){return this._addCheck({kind:`ip`,...ou.errToObj(e)})}cidr(e){return this._addCheck({kind:`cidr`,...ou.errToObj(e)})}datetime(e){return typeof e==`string`?this._addCheck({kind:`datetime`,precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:`datetime`,precision:e?.precision===void 0?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...ou.errToObj(e?.message)})}date(e){return this._addCheck({kind:`date`,message:e})}time(e){return typeof e==`string`?this._addCheck({kind:`time`,precision:null,message:e}):this._addCheck({kind:`time`,precision:e?.precision===void 0?null:e?.precision,...ou.errToObj(e?.message)})}duration(e){return this._addCheck({kind:`duration`,...ou.errToObj(e)})}regex(e,t){return this._addCheck({kind:`regex`,regex:e,...ou.errToObj(t)})}includes(e,t){return this._addCheck({kind:`includes`,value:e,position:t?.position,...ou.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:`startsWith`,value:e,...ou.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:`endsWith`,value:e,...ou.errToObj(t)})}min(e,t){return this._addCheck({kind:`min`,value:e,...ou.errToObj(t)})}max(e,t){return this._addCheck({kind:`max`,value:e,...ou.errToObj(t)})}length(e,t){return this._addCheck({kind:`length`,value:e,...ou.errToObj(t)})}nonempty(e){return this.min(1,ou.errToObj(e))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:`trim`}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toLowerCase`}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toUpperCase`}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind===`datetime`)}get isDate(){return!!this._def.checks.find(e=>e.kind===`date`)}get isTime(){return!!this._def.checks.find(e=>e.kind===`time`)}get isDuration(){return!!this._def.checks.find(e=>e.kind===`duration`)}get isEmail(){return!!this._def.checks.find(e=>e.kind===`email`)}get isURL(){return!!this._def.checks.find(e=>e.kind===`url`)}get isEmoji(){return!!this._def.checks.find(e=>e.kind===`emoji`)}get isUUID(){return!!this._def.checks.find(e=>e.kind===`uuid`)}get isNANOID(){return!!this._def.checks.find(e=>e.kind===`nanoid`)}get isCUID(){return!!this._def.checks.find(e=>e.kind===`cuid`)}get isCUID2(){return!!this._def.checks.find(e=>e.kind===`cuid2`)}get isULID(){return!!this._def.checks.find(e=>e.kind===`ulid`)}get isIP(){return!!this._def.checks.find(e=>e.kind===`ip`)}get isCIDR(){return!!this._def.checks.find(e=>e.kind===`cidr`)}get isBase64(){return!!this._def.checks.find(e=>e.kind===`base64`)}get isBase64url(){return!!this._def.checks.find(e=>e.kind===`base64url`)}get minLength(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew Fu({checks:[],typeName:Sd.ZodString,coerce:e?.coerce??!1,...lu(e)});function Iu(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=(t.toString().split(`.`)[1]||``).length,i=n>r?n:r;return Number.parseInt(e.toFixed(i).replace(`.`,``))%Number.parseInt(t.toFixed(i).replace(`.`,``))/10**i}var Lu=class e extends uu{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==k.number){let t=this._getOrReturnCtx(e);return j(t,{code:A.invalid_type,expected:k.number,received:t.parsedType}),M}let t,n=new $l;for(let r of this._def.checks)r.kind===`int`?Gl.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),j(t,{code:A.invalid_type,expected:`integer`,received:`float`,message:r.message}),n.dirty()):r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),j(t,{code:A.too_big,maximum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):r.kind===`multipleOf`?Iu(e.data,r.value)!==0&&(t=this._getOrReturnCtx(e,t),j(t,{code:A.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):r.kind===`finite`?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),j(t,{code:A.not_finite,message:r.message}),n.dirty()):Gl.assertNever(r);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit(`min`,e,!0,ou.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,ou.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,ou.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,ou.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:ou.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(e){return this._addCheck({kind:`int`,message:ou.toString(e)})}positive(e){return this._addCheck({kind:`min`,value:0,inclusive:!1,message:ou.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:0,inclusive:!1,message:ou.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:0,inclusive:!0,message:ou.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:0,inclusive:!0,message:ou.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:ou.toString(t)})}finite(e){return this._addCheck({kind:`finite`,message:ou.toString(e)})}safe(e){return this._addCheck({kind:`min`,inclusive:!0,value:-(2**53-1),message:ou.toString(e)})._addCheck({kind:`max`,inclusive:!0,value:2**53-1,message:ou.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuee.kind===`int`||e.kind===`multipleOf`&&Gl.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(n.kind===`finite`||n.kind===`int`||n.kind===`multipleOf`)return!0;else n.kind===`min`?(t===null||n.value>t)&&(t=n.value):n.kind===`max`&&(e===null||n.valuenew Lu({checks:[],typeName:Sd.ZodNumber,coerce:e?.coerce||!1,...lu(e)});var Ru=class e extends uu{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==k.bigint)return this._getInvalidInput(e);let t,n=new $l;for(let r of this._def.checks)r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),j(t,{code:A.too_big,type:`bigint`,maximum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):r.kind===`multipleOf`?e.data%r.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),j(t,{code:A.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):Gl.assertNever(r);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return j(t,{code:A.invalid_type,expected:k.bigint,received:t.parsedType}),M}gte(e,t){return this.setLimit(`min`,e,!0,ou.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,ou.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,ou.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,ou.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:ou.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!1,message:ou.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!1,message:ou.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!0,message:ou.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!0,message:ou.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:ou.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew Ru({checks:[],typeName:Sd.ZodBigInt,coerce:e?.coerce??!1,...lu(e)});var zu=class extends uu{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==k.boolean){let t=this._getOrReturnCtx(e);return j(t,{code:A.invalid_type,expected:k.boolean,received:t.parsedType}),M}return tu(e.data)}};zu.create=e=>new zu({typeName:Sd.ZodBoolean,coerce:e?.coerce||!1,...lu(e)});var Bu=class e extends uu{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==k.date){let t=this._getOrReturnCtx(e);return j(t,{code:A.invalid_type,expected:k.date,received:t.parsedType}),M}if(Number.isNaN(e.data.getTime()))return j(this._getOrReturnCtx(e),{code:A.invalid_date}),M;let t=new $l,n;for(let r of this._def.checks)r.kind===`min`?e.data.getTime()r.value&&(n=this._getOrReturnCtx(e,n),j(n,{code:A.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:`date`}),t.dirty()):Gl.assertNever(r);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(e,t){return this._addCheck({kind:`min`,value:e.getTime(),message:ou.toString(t)})}max(e,t){return this._addCheck({kind:`max`,value:e.getTime(),message:ou.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e==null?null:new Date(e)}get maxDate(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew Bu({checks:[],coerce:e?.coerce||!1,typeName:Sd.ZodDate,...lu(e)});var Vu=class extends uu{_parse(e){if(this._getType(e)!==k.symbol){let t=this._getOrReturnCtx(e);return j(t,{code:A.invalid_type,expected:k.symbol,received:t.parsedType}),M}return tu(e.data)}};Vu.create=e=>new Vu({typeName:Sd.ZodSymbol,...lu(e)});var Hu=class extends uu{_parse(e){if(this._getType(e)!==k.undefined){let t=this._getOrReturnCtx(e);return j(t,{code:A.invalid_type,expected:k.undefined,received:t.parsedType}),M}return tu(e.data)}};Hu.create=e=>new Hu({typeName:Sd.ZodUndefined,...lu(e)});var Uu=class extends uu{_parse(e){if(this._getType(e)!==k.null){let t=this._getOrReturnCtx(e);return j(t,{code:A.invalid_type,expected:k.null,received:t.parsedType}),M}return tu(e.data)}};Uu.create=e=>new Uu({typeName:Sd.ZodNull,...lu(e)});var Wu=class extends uu{constructor(){super(...arguments),this._any=!0}_parse(e){return tu(e.data)}};Wu.create=e=>new Wu({typeName:Sd.ZodAny,...lu(e)});var Gu=class extends uu{constructor(){super(...arguments),this._unknown=!0}_parse(e){return tu(e.data)}};Gu.create=e=>new Gu({typeName:Sd.ZodUnknown,...lu(e)});var Ku=class extends uu{_parse(e){let t=this._getOrReturnCtx(e);return j(t,{code:A.invalid_type,expected:k.never,received:t.parsedType}),M}};Ku.create=e=>new Ku({typeName:Sd.ZodNever,...lu(e)});var qu=class extends uu{_parse(e){if(this._getType(e)!==k.undefined){let t=this._getOrReturnCtx(e);return j(t,{code:A.invalid_type,expected:k.void,received:t.parsedType}),M}return tu(e.data)}};qu.create=e=>new qu({typeName:Sd.ZodVoid,...lu(e)});var Ju=class e extends uu{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==k.array)return j(t,{code:A.invalid_type,expected:k.array,received:t.parsedType}),M;if(r.exactLength!==null){let e=t.data.length>r.exactLength.value,i=t.data.lengthr.maxLength.value&&(j(t,{code:A.too_big,maximum:r.maxLength.value,type:`array`,inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>r.type._parseAsync(new su(t,e,t.path,n)))).then(e=>$l.mergeArray(n,e));let i=[...t.data].map((e,n)=>r.type._parseSync(new su(t,e,t.path,n)));return $l.mergeArray(n,i)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:ou.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:ou.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:ou.toString(n)}})}nonempty(e){return this.min(1,e)}};Ju.create=(e,t)=>new Ju({type:e,minLength:null,maxLength:null,exactLength:null,typeName:Sd.ZodArray,...lu(t)});function Yu(e){if(e instanceof Xu){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=md.create(Yu(r))}return new Xu({...e._def,shape:()=>t})}else if(e instanceof Ju)return new Ju({...e._def,type:Yu(e.element)});else if(e instanceof md)return md.create(Yu(e.unwrap()));else if(e instanceof hd)return hd.create(Yu(e.unwrap()));else if(e instanceof nd)return nd.create(e.items.map(e=>Yu(e)));else return e}var Xu=class e extends uu{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=Gl.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==k.object){let t=this._getOrReturnCtx(e);return j(t,{code:A.invalid_type,expected:k.object,received:t.parsedType}),M}let{status:t,ctx:n}=this._processInputParams(e),{shape:r,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof Ku&&this._def.unknownKeys===`strip`))for(let e in n.data)i.includes(e)||a.push(e);let o=[];for(let e of i){let t=r[e],i=n.data[e];o.push({key:{status:`valid`,value:e},value:t._parse(new su(n,i,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof Ku){let e=this._def.unknownKeys;if(e===`passthrough`)for(let e of a)o.push({key:{status:`valid`,value:e},value:{status:`valid`,value:n.data[e]}});else if(e===`strict`)a.length>0&&(j(n,{code:A.unrecognized_keys,keys:a}),t.dirty());else if(e!==`strip`)throw Error(`Internal ZodObject error: invalid unknownKeys value.`)}else{let e=this._def.catchall;for(let t of a){let r=n.data[t];o.push({key:{status:`valid`,value:t},value:e._parse(new su(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of o){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>$l.mergeObjectSync(t,e)):$l.mergeObjectSync(t,o)}get shape(){return this._def.shape()}strict(t){return ou.errToObj,new e({...this._def,unknownKeys:`strict`,...t===void 0?{}:{errorMap:(e,n)=>{let r=this._def.errorMap?.(e,n).message??n.defaultError;return e.code===`unrecognized_keys`?{message:ou.errToObj(t).message??r}:{message:r}}}})}strip(){return new e({...this._def,unknownKeys:`strip`})}passthrough(){return new e({...this._def,unknownKeys:`passthrough`})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:Sd.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let n={};for(let e of Gl.objectKeys(t))t[e]&&this.shape[e]&&(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}omit(t){let n={};for(let e of Gl.objectKeys(this.shape))t[e]||(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}deepPartial(){return Yu(this)}partial(t){let n={};for(let e of Gl.objectKeys(this.shape)){let r=this.shape[e];t&&!t[e]?n[e]=r:n[e]=r.optional()}return new e({...this._def,shape:()=>n})}required(t){let n={};for(let e of Gl.objectKeys(this.shape))if(t&&!t[e])n[e]=this.shape[e];else{let t=this.shape[e];for(;t instanceof md;)t=t._def.innerType;n[e]=t}return new e({...this._def,shape:()=>n})}keyof(){return ld(Gl.objectKeys(this.shape))}};Xu.create=(e,t)=>new Xu({shape:()=>e,unknownKeys:`strip`,catchall:Ku.create(),typeName:Sd.ZodObject,...lu(t)}),Xu.strictCreate=(e,t)=>new Xu({shape:()=>e,unknownKeys:`strict`,catchall:Ku.create(),typeName:Sd.ZodObject,...lu(t)}),Xu.lazycreate=(e,t)=>new Xu({shape:e,unknownKeys:`strip`,catchall:Ku.create(),typeName:Sd.ZodObject,...lu(t)});var Zu=class extends uu{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;function r(e){for(let t of e)if(t.result.status===`valid`)return t.result;for(let n of e)if(n.result.status===`dirty`)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new Jl(e.ctx.common.issues));return j(t,{code:A.invalid_union,unionErrors:n}),M}if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(r);{let e,r=[];for(let i of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:n});if(a.status===`valid`)return a;a.status===`dirty`&&!e&&(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=r.map(e=>new Jl(e));return j(t,{code:A.invalid_union,unionErrors:i}),M}}get options(){return this._def.options}};Zu.create=(e,t)=>new Zu({options:e,typeName:Sd.ZodUnion,...lu(t)});var Qu=e=>e instanceof sd?Qu(e.schema):e instanceof pd?Qu(e.innerType()):e instanceof cd?[e.value]:e instanceof ud?e.options:e instanceof dd?Gl.objectValues(e.enum):e instanceof gd?Qu(e._def.innerType):e instanceof Hu?[void 0]:e instanceof Uu?[null]:e instanceof md?[void 0,...Qu(e.unwrap())]:e instanceof hd?[null,...Qu(e.unwrap())]:e instanceof yd||e instanceof xd?Qu(e.unwrap()):e instanceof _d?Qu(e._def.innerType):[],$u=class e extends uu{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==k.object)return j(t,{code:A.invalid_type,expected:k.object,received:t.parsedType}),M;let n=this.discriminator,r=t.data[n],i=this.optionsMap.get(r);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(j(t,{code:A.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),M)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){let i=new Map;for(let e of n){let n=Qu(e.shape[t]);if(!n.length)throw Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let r of n){if(i.has(r))throw Error(`Discriminator property ${String(t)} has duplicate value ${String(r)}`);i.set(r,e)}}return new e({typeName:Sd.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...lu(r)})}};function ed(e,t){let n=ql(e),r=ql(t);if(e===t)return{valid:!0,data:e};if(n===k.object&&r===k.object){let n=Gl.objectKeys(t),r=Gl.objectKeys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=ed(e[n],t[n]);if(!r.valid)return{valid:!1};i[n]=r.data}return{valid:!0,data:i}}else if(n===k.array&&r===k.array){if(e.length!==t.length)return{valid:!1};let n=[];for(let r=0;r{if(nu(e)||nu(r))return M;let i=ed(e.value,r.value);return i.valid?((ru(e)||ru(r))&&t.dirty(),{status:t.value,value:i.data}):(j(n,{code:A.invalid_intersection_types}),M)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([e,t])=>r(e,t)):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};td.create=(e,t,n)=>new td({left:e,right:t,typeName:Sd.ZodIntersection,...lu(n)});var nd=class e extends uu{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==k.array)return j(n,{code:A.invalid_type,expected:k.array,received:n.parsedType}),M;if(n.data.lengththis._def.items.length&&(j(n,{code:A.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),t.dirty());let r=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new su(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(r).then(e=>$l.mergeArray(t,e)):$l.mergeArray(t,r)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};nd.create=(e,t)=>{if(!Array.isArray(e))throw Error(`You must pass an array of schemas to z.tuple([ ... ])`);return new nd({items:e,typeName:Sd.ZodTuple,rest:null,...lu(t)})};var rd=class e extends uu{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==k.object)return j(n,{code:A.invalid_type,expected:k.object,received:n.parsedType}),M;let r=[],i=this._def.keyType,a=this._def.valueType;for(let e in n.data)r.push({key:i._parse(new su(n,e,n.path,e)),value:a._parse(new su(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?$l.mergeObjectAsync(t,r):$l.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof uu?new e({keyType:t,valueType:n,typeName:Sd.ZodRecord,...lu(r)}):new e({keyType:Fu.create(),valueType:t,typeName:Sd.ZodRecord,...lu(n)})}},id=class extends uu{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==k.map)return j(n,{code:A.invalid_type,expected:k.map,received:n.parsedType}),M;let r=this._def.keyType,i=this._def.valueType,a=[...n.data.entries()].map(([e,t],a)=>({key:r._parse(new su(n,e,n.path,[a,`key`])),value:i._parse(new su(n,t,n.path,[a,`value`]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of a){let r=await n.key,i=await n.value;if(r.status===`aborted`||i.status===`aborted`)return M;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}})}else{let e=new Map;for(let n of a){let r=n.key,i=n.value;if(r.status===`aborted`||i.status===`aborted`)return M;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}}};id.create=(e,t,n)=>new id({valueType:t,keyType:e,typeName:Sd.ZodMap,...lu(n)});var ad=class e extends uu{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==k.set)return j(n,{code:A.invalid_type,expected:k.set,received:n.parsedType}),M;let r=this._def;r.minSize!==null&&n.data.sizer.maxSize.value&&(j(n,{code:A.too_big,maximum:r.maxSize.value,type:`set`,inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let i=this._def.valueType;function a(e){let n=new Set;for(let r of e){if(r.status===`aborted`)return M;r.status===`dirty`&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let o=[...n.data.values()].map((e,t)=>i._parse(new su(n,e,n.path,t)));return n.common.async?Promise.all(o).then(e=>a(e)):a(o)}min(t,n){return new e({...this._def,minSize:{value:t,message:ou.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:ou.toString(n)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};ad.create=(e,t)=>new ad({valueType:e,minSize:null,maxSize:null,typeName:Sd.ZodSet,...lu(t)});var od=class e extends uu{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==k.function)return j(t,{code:A.invalid_type,expected:k.function,received:t.parsedType}),M;function n(e,n){return Ql({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Zl(),Yl].filter(e=>!!e),issueData:{code:A.invalid_arguments,argumentsError:n}})}function r(e,n){return Ql({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Zl(),Yl].filter(e=>!!e),issueData:{code:A.invalid_return_type,returnTypeError:n}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof fd){let e=this;return tu(async function(...t){let o=new Jl([]),s=await e._def.args.parseAsync(t,i).catch(e=>{throw o.addIssue(n(t,e)),o}),c=await Reflect.apply(a,this,s);return await e._def.returns._def.type.parseAsync(c,i).catch(e=>{throw o.addIssue(r(c,e)),o})})}else{let e=this;return tu(function(...t){let o=e._def.args.safeParse(t,i);if(!o.success)throw new Jl([n(t,o.error)]);let s=Reflect.apply(a,this,o.data),c=e._def.returns.safeParse(s,i);if(!c.success)throw new Jl([r(s,c.error)]);return c.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:nd.create(t).rest(Gu.create())})}returns(t){return new e({...this._def,returns:t})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(t,n,r){return new e({args:t||nd.create([]).rest(Gu.create()),returns:n||Gu.create(),typeName:Sd.ZodFunction,...lu(r)})}},sd=class extends uu{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};sd.create=(e,t)=>new sd({getter:e,typeName:Sd.ZodLazy,...lu(t)});var cd=class extends uu{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return j(t,{received:t.data,code:A.invalid_literal,expected:this._def.value}),M}return{status:`valid`,value:e.data}}get value(){return this._def.value}};cd.create=(e,t)=>new cd({value:e,typeName:Sd.ZodLiteral,...lu(t)});function ld(e,t){return new ud({values:e,typeName:Sd.ZodEnum,...lu(t)})}var ud=class e extends uu{_parse(e){if(typeof e.data!=`string`){let t=this._getOrReturnCtx(e),n=this._def.values;return j(t,{expected:Gl.joinValues(n),received:t.parsedType,code:A.invalid_type}),M}if(this._cache||=new Set(this._def.values),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return j(t,{received:t.data,code:A.invalid_enum_value,options:n}),M}return tu(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(t,n=this._def){return e.create(t,{...this._def,...n})}exclude(t,n=this._def){return e.create(this.options.filter(e=>!t.includes(e)),{...this._def,...n})}};ud.create=ld;var dd=class extends uu{_parse(e){let t=Gl.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==k.string&&n.parsedType!==k.number){let e=Gl.objectValues(t);return j(n,{expected:Gl.joinValues(e),received:n.parsedType,code:A.invalid_type}),M}if(this._cache||=new Set(Gl.getValidEnumValues(this._def.values)),!this._cache.has(e.data)){let e=Gl.objectValues(t);return j(n,{received:n.data,code:A.invalid_enum_value,options:e}),M}return tu(e.data)}get enum(){return this._def.values}};dd.create=(e,t)=>new dd({values:e,typeName:Sd.ZodNativeEnum,...lu(t)});var fd=class extends uu{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==k.promise&&t.common.async===!1?(j(t,{code:A.invalid_type,expected:k.promise,received:t.parsedType}),M):tu((t.parsedType===k.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}};fd.create=(e,t)=>new fd({type:e,typeName:Sd.ZodPromise,...lu(t)});var pd=class extends uu{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Sd.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=this._def.effect||null,i={addIssue:e=>{j(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(i.addIssue=i.addIssue.bind(i),r.type===`preprocess`){let e=r.transform(n.data,i);if(n.common.async)return Promise.resolve(e).then(async e=>{if(t.value===`aborted`)return M;let r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return r.status===`aborted`?M:r.status===`dirty`||t.value===`dirty`?eu(r.value):r});{if(t.value===`aborted`)return M;let r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return r.status===`aborted`?M:r.status===`dirty`||t.value===`dirty`?eu(r.value):r}}if(r.type===`refinement`){let e=e=>{let t=r.refinement(e,i);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(`Async refinement encountered during synchronous parse operation. Use .parseAsync instead.`);return e};if(n.common.async===!1){let r=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return r.status===`aborted`?M:(r.status===`dirty`&&t.dirty(),e(r.value),{status:t.value,value:r.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(n=>n.status===`aborted`?M:(n.status===`dirty`&&t.dirty(),e(n.value).then(()=>({status:t.value,value:n.value}))))}if(r.type===`transform`)if(n.common.async===!1){let e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!iu(e))return M;let a=r.transform(e.value,i);if(a instanceof Promise)throw Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);return{status:t.value,value:a}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(e=>iu(e)?Promise.resolve(r.transform(e.value,i)).then(e=>({status:t.value,value:e})):M);Gl.assertNever(r)}};pd.create=(e,t,n)=>new pd({schema:e,typeName:Sd.ZodEffects,effect:t,...lu(n)}),pd.createWithPreprocess=(e,t,n)=>new pd({schema:t,effect:{type:`preprocess`,transform:e},typeName:Sd.ZodEffects,...lu(n)});var md=class extends uu{_parse(e){return this._getType(e)===k.undefined?tu(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};md.create=(e,t)=>new md({innerType:e,typeName:Sd.ZodOptional,...lu(t)});var hd=class extends uu{_parse(e){return this._getType(e)===k.null?tu(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};hd.create=(e,t)=>new hd({innerType:e,typeName:Sd.ZodNullable,...lu(t)});var gd=class extends uu{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===k.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};gd.create=(e,t)=>new gd({innerType:e,typeName:Sd.ZodDefault,defaultValue:typeof t.default==`function`?t.default:()=>t.default,...lu(t)});var _d=class extends uu{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return au(r)?r.then(e=>({status:`valid`,value:e.status===`valid`?e.value:this._def.catchValue({get error(){return new Jl(n.common.issues)},input:n.data})})):{status:`valid`,value:r.status===`valid`?r.value:this._def.catchValue({get error(){return new Jl(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};_d.create=(e,t)=>new _d({innerType:e,typeName:Sd.ZodCatch,catchValue:typeof t.catch==`function`?t.catch:()=>t.catch,...lu(t)});var vd=class extends uu{_parse(e){if(this._getType(e)!==k.nan){let t=this._getOrReturnCtx(e);return j(t,{code:A.invalid_type,expected:k.nan,received:t.parsedType}),M}return{status:`valid`,value:e.data}}};vd.create=e=>new vd({typeName:Sd.ZodNaN,...lu(e)});var yd=class extends uu{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}},bd=class e extends uu{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?M:e.status===`dirty`?(t.dirty(),eu(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})();{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?M:e.status===`dirty`?(t.dirty(),{status:`dirty`,value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(t,n){return new e({in:t,out:n,typeName:Sd.ZodPipeline})}},xd=class extends uu{_parse(e){let t=this._def.innerType._parse(e),n=e=>(iu(e)&&(e.value=Object.freeze(e.value)),e);return au(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}};xd.create=(e,t)=>new xd({innerType:e,typeName:Sd.ZodReadonly,...lu(t)}),Xu.lazycreate;var Sd;(function(e){e.ZodString=`ZodString`,e.ZodNumber=`ZodNumber`,e.ZodNaN=`ZodNaN`,e.ZodBigInt=`ZodBigInt`,e.ZodBoolean=`ZodBoolean`,e.ZodDate=`ZodDate`,e.ZodSymbol=`ZodSymbol`,e.ZodUndefined=`ZodUndefined`,e.ZodNull=`ZodNull`,e.ZodAny=`ZodAny`,e.ZodUnknown=`ZodUnknown`,e.ZodNever=`ZodNever`,e.ZodVoid=`ZodVoid`,e.ZodArray=`ZodArray`,e.ZodObject=`ZodObject`,e.ZodUnion=`ZodUnion`,e.ZodDiscriminatedUnion=`ZodDiscriminatedUnion`,e.ZodIntersection=`ZodIntersection`,e.ZodTuple=`ZodTuple`,e.ZodRecord=`ZodRecord`,e.ZodMap=`ZodMap`,e.ZodSet=`ZodSet`,e.ZodFunction=`ZodFunction`,e.ZodLazy=`ZodLazy`,e.ZodLiteral=`ZodLiteral`,e.ZodEnum=`ZodEnum`,e.ZodEffects=`ZodEffects`,e.ZodNativeEnum=`ZodNativeEnum`,e.ZodOptional=`ZodOptional`,e.ZodNullable=`ZodNullable`,e.ZodDefault=`ZodDefault`,e.ZodCatch=`ZodCatch`,e.ZodPromise=`ZodPromise`,e.ZodBranded=`ZodBranded`,e.ZodPipeline=`ZodPipeline`,e.ZodReadonly=`ZodReadonly`})(Sd||={});var N=Fu.create,Cd=Lu.create;vd.create,Ru.create;var wd=zu.create;Bu.create,Vu.create,Hu.create,Uu.create;var Td=Wu.create,Ed=Gu.create;Ku.create,qu.create;var Dd=Ju.create,Od=Xu.create;Xu.strictCreate;var kd=Zu.create,Ad=$u.create;td.create,nd.create;var jd=rd.create;id.create,ad.create,od.create,sd.create;var Md=cd.create,Nd=ud.create,Pd=dd.create;fd.create,pd.create,md.create,hd.create,pd.createWithPreprocess,bd.create;var Fd=Od({name:N(),arguments:N()}),Id=Od({id:N(),type:Md(`function`),function:Fd,encryptedValue:N().optional()}),Ld=Od({id:N(),role:N(),content:N().optional(),name:N().optional(),encryptedValue:N().optional()}),Rd=Od({type:Md(`text`),text:N()}),zd=Ad(`type`,[Od({type:Md(`data`),value:N(),mimeType:N()}),Od({type:Md(`url`),value:N(),mimeType:N().optional()})]),Bd=Od({type:Md(`image`),source:zd,metadata:Ed().optional()}),Vd=Od({type:Md(`audio`),source:zd,metadata:Ed().optional()}),Hd=Od({type:Md(`video`),source:zd,metadata:Ed().optional()}),Ud=Od({type:Md(`document`),source:zd,metadata:Ed().optional()}),Wd=Od({type:Md(`binary`),mimeType:N(),id:N().optional(),url:N().optional(),data:N().optional(),filename:N().optional()}),Gd=(e,t)=>{!e.id&&!e.url&&!e.data&&t.addIssue({code:A.custom,message:`BinaryInputContent requires at least one of id, url, or data.`,path:[`id`]})};Wd.superRefine((e,t)=>{Gd(e,t)});var Kd=Ad(`type`,[Rd,Bd,Vd,Hd,Ud,Wd]).superRefine((e,t)=>{e.type===`binary`&&Gd(e,t)}),qd=Ad(`role`,[Ld.extend({role:Md(`developer`),content:N()}),Ld.extend({role:Md(`system`),content:N()}),Ld.extend({role:Md(`assistant`),content:N().optional(),toolCalls:Dd(Id).optional()}),Ld.extend({role:Md(`user`),content:kd([N(),Dd(Kd)])}),Od({id:N(),content:N(),role:Md(`tool`),toolCallId:N(),error:N().optional(),encryptedValue:N().optional()}),Od({id:N(),role:Md(`activity`),activityType:N(),content:jd(Td())}),Od({id:N(),role:Md(`reasoning`),content:N(),encryptedValue:N().optional()})]);kd([Md(`developer`),Md(`system`),Md(`assistant`),Md(`user`),Md(`tool`),Md(`activity`),Md(`reasoning`)]);var Jd=Od({description:N(),value:N()}),Yd=Od({name:N(),description:N(),parameters:Td(),metadata:jd(Td()).optional()}),Xd=Od({id:N(),reason:N(),message:N().optional(),toolCallId:N().optional(),responseSchema:jd(Td()).optional(),expiresAt:N().optional(),metadata:jd(Td()).optional()}),Zd=Od({interruptId:N(),status:Nd([`resolved`,`cancelled`]),payload:Td().optional()}),Qd=Od({threadId:N(),runId:N(),parentRunId:N().optional(),state:Td(),messages:Dd(qd),tools:Dd(Yd),context:Dd(Jd),forwardedProps:Td(),resume:Dd(Zd).optional()}),$d=Td(),ef=class extends Error{constructor(e){super(e)}},tf=class extends ef{constructor(){super(`Connect not implemented. This method is not supported by the current agent.`)}},nf=Od({name:N(),description:N().optional()}),rf=Od({name:N().optional(),type:N().optional(),description:N().optional(),version:N().optional(),provider:N().optional(),documentationUrl:N().optional(),metadata:jd(Ed()).optional()}),af=Od({streaming:wd().optional(),websocket:wd().optional(),httpBinary:wd().optional(),pushNotifications:wd().optional(),resumable:wd().optional()}),of=Od({supported:wd().optional(),items:Dd(Yd).optional(),parallelCalls:wd().optional(),clientProvided:wd().optional()}),sf=Od({structuredOutput:wd().optional(),supportedMimeTypes:Dd(N()).optional()}),cf=Od({snapshots:wd().optional(),deltas:wd().optional(),memory:wd().optional(),persistentState:wd().optional()}),lf=Od({supported:wd().optional(),delegation:wd().optional(),handoffs:wd().optional(),subAgents:Dd(nf).optional()}),uf=Od({supported:wd().optional(),streaming:wd().optional(),encrypted:wd().optional()}),df=Od({image:wd().optional(),audio:wd().optional(),video:wd().optional(),pdf:wd().optional(),file:wd().optional()}),ff=Od({image:wd().optional(),audio:wd().optional()}),pf=Od({input:df.optional(),output:ff.optional()}),mf=Od({codeExecution:wd().optional(),sandboxed:wd().optional(),maxIterations:Cd().optional(),maxExecutionTime:Cd().optional()}),hf=Od({supported:wd().optional(),approvals:wd().optional(),interventions:wd().optional(),feedback:wd().optional(),interrupts:wd().optional(),approveWithEdits:wd().optional()});Od({identity:rf.optional(),transport:af.optional(),tools:of.optional(),output:sf.optional(),state:cf.optional(),multiAgent:lf.optional(),reasoning:uf.optional(),multimodal:pf.optional(),execution:mf.optional(),humanInTheLoop:hf.optional(),custom:jd(Ed()).optional()});var gf=kd([Md(`developer`),Md(`system`),Md(`assistant`),Md(`user`)]),P=function(e){return e.TEXT_MESSAGE_START=`TEXT_MESSAGE_START`,e.TEXT_MESSAGE_CONTENT=`TEXT_MESSAGE_CONTENT`,e.TEXT_MESSAGE_END=`TEXT_MESSAGE_END`,e.TEXT_MESSAGE_CHUNK=`TEXT_MESSAGE_CHUNK`,e.TOOL_CALL_START=`TOOL_CALL_START`,e.TOOL_CALL_ARGS=`TOOL_CALL_ARGS`,e.TOOL_CALL_END=`TOOL_CALL_END`,e.TOOL_CALL_CHUNK=`TOOL_CALL_CHUNK`,e.TOOL_CALL_RESULT=`TOOL_CALL_RESULT`,e.THINKING_START=`THINKING_START`,e.THINKING_END=`THINKING_END`,e.THINKING_TEXT_MESSAGE_START=`THINKING_TEXT_MESSAGE_START`,e.THINKING_TEXT_MESSAGE_CONTENT=`THINKING_TEXT_MESSAGE_CONTENT`,e.THINKING_TEXT_MESSAGE_END=`THINKING_TEXT_MESSAGE_END`,e.STATE_SNAPSHOT=`STATE_SNAPSHOT`,e.STATE_DELTA=`STATE_DELTA`,e.MESSAGES_SNAPSHOT=`MESSAGES_SNAPSHOT`,e.ACTIVITY_SNAPSHOT=`ACTIVITY_SNAPSHOT`,e.ACTIVITY_DELTA=`ACTIVITY_DELTA`,e.RAW=`RAW`,e.CUSTOM=`CUSTOM`,e.RUN_STARTED=`RUN_STARTED`,e.RUN_FINISHED=`RUN_FINISHED`,e.RUN_ERROR=`RUN_ERROR`,e.STEP_STARTED=`STEP_STARTED`,e.STEP_FINISHED=`STEP_FINISHED`,e.REASONING_START=`REASONING_START`,e.REASONING_MESSAGE_START=`REASONING_MESSAGE_START`,e.REASONING_MESSAGE_CONTENT=`REASONING_MESSAGE_CONTENT`,e.REASONING_MESSAGE_END=`REASONING_MESSAGE_END`,e.REASONING_MESSAGE_CHUNK=`REASONING_MESSAGE_CHUNK`,e.REASONING_END=`REASONING_END`,e.REASONING_ENCRYPTED_VALUE=`REASONING_ENCRYPTED_VALUE`,e}({}),_f=Od({type:Pd(P),timestamp:Cd().optional(),rawEvent:Td().optional()}).passthrough(),vf=_f.extend({type:Md(P.TEXT_MESSAGE_START),messageId:N(),role:gf.default(`assistant`),name:N().optional()}),yf=_f.extend({type:Md(P.TEXT_MESSAGE_CONTENT),messageId:N(),delta:N()}),bf=_f.extend({type:Md(P.TEXT_MESSAGE_END),messageId:N()}),xf=_f.extend({type:Md(P.TEXT_MESSAGE_CHUNK),messageId:N().optional(),role:gf.optional(),delta:N().optional(),name:N().optional()}),Sf=_f.extend({type:Md(P.THINKING_TEXT_MESSAGE_START)}),Cf=yf.omit({messageId:!0,type:!0}).extend({type:Md(P.THINKING_TEXT_MESSAGE_CONTENT)}),wf=_f.extend({type:Md(P.THINKING_TEXT_MESSAGE_END)}),Tf=_f.extend({type:Md(P.TOOL_CALL_START),toolCallId:N(),toolCallName:N(),parentMessageId:N().optional()}),Ef=_f.extend({type:Md(P.TOOL_CALL_ARGS),toolCallId:N(),delta:N()}),Df=_f.extend({type:Md(P.TOOL_CALL_END),toolCallId:N()}),Of=_f.extend({messageId:N(),type:Md(P.TOOL_CALL_RESULT),toolCallId:N(),content:N(),role:Md(`tool`).optional()}),kf=_f.extend({type:Md(P.TOOL_CALL_CHUNK),toolCallId:N().optional(),toolCallName:N().optional(),parentMessageId:N().optional(),delta:N().optional()}),Af=_f.extend({type:Md(P.THINKING_START),title:N().optional()}),jf=_f.extend({type:Md(P.THINKING_END)}),Mf=_f.extend({type:Md(P.STATE_SNAPSHOT),snapshot:$d}),Nf=_f.extend({type:Md(P.STATE_DELTA),delta:Dd(Td())}),Pf=_f.extend({type:Md(P.MESSAGES_SNAPSHOT),messages:Dd(qd)}),Ff=_f.extend({type:Md(P.ACTIVITY_SNAPSHOT),messageId:N(),activityType:N(),content:jd(Td()),replace:wd().optional().default(!0)}),If=_f.extend({type:Md(P.ACTIVITY_DELTA),messageId:N(),activityType:N(),patch:Dd(Td())}),Lf=_f.extend({type:Md(P.RAW),event:Td(),source:N().optional()}),Rf=_f.extend({type:Md(P.CUSTOM),name:N(),value:Td()}),zf=_f.extend({type:Md(P.RUN_STARTED),threadId:N(),runId:N(),parentRunId:N().optional(),input:Qd.optional()}),Bf=Ad(`type`,[Od({type:Md(`success`)}).strict(),Od({type:Md(`interrupt`),interrupts:Dd(Xd).min(1)}).strict()]),Vf=_f.extend({type:Md(P.RUN_FINISHED),threadId:N(),runId:N(),result:Td().optional(),outcome:Bf.nullable().optional().transform(e=>e??void 0)}),Hf=_f.extend({type:Md(P.RUN_ERROR),message:N(),code:N().optional()}),Uf=_f.extend({type:Md(P.STEP_STARTED),stepName:N()}),Wf=_f.extend({type:Md(P.STEP_FINISHED),stepName:N()}),Gf=kd([Md(`tool-call`),Md(`message`)]),Kf=Ad(`type`,[vf,yf,bf,xf,Af,jf,Sf,Cf,wf,Tf,Ef,Df,kf,Of,Mf,Nf,Pf,Ff,If,Lf,Rf,zf,Vf,Hf,Uf,Wf,_f.extend({type:Md(P.REASONING_START),messageId:N()}),_f.extend({type:Md(P.REASONING_MESSAGE_START),messageId:N(),role:Md(`reasoning`)}),_f.extend({type:Md(P.REASONING_MESSAGE_CONTENT),messageId:N(),delta:N()}),_f.extend({type:Md(P.REASONING_MESSAGE_END),messageId:N()}),_f.extend({type:Md(P.REASONING_MESSAGE_CHUNK),messageId:N().optional(),delta:N().optional()}),_f.extend({type:Md(P.REASONING_END),messageId:N()}),_f.extend({type:Md(P.REASONING_ENCRYPTED_VALUE),subtype:Gf,entityId:N(),encryptedValue:N()})]),qf=(function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}})(),Jf=Object.prototype.hasOwnProperty;function Yf(e,t){return Jf.call(e,t)}function Xf(e){if(Array.isArray(e)){for(var t=Array(e.length),n=0;n=48&&r<=57){t++;continue}return!1}return!0}function $f(e){return e.indexOf(`/`)===-1&&e.indexOf(`~`)===-1?e:e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function ep(e){return e.replace(/~1/g,`/`).replace(/~0/g,`~`)}function tp(e){if(e===void 0)return!0;if(e){if(Array.isArray(e)){for(var t=0,n=e.length;tap,_areEquals:()=>hp,applyOperation:()=>up,applyPatch:()=>dp,applyReducer:()=>fp,deepClone:()=>op,getValueByPointer:()=>lp,validate:()=>mp,validator:()=>pp}),ap=rp,op=Zf,sp={add:function(e,t,n){return e[t]=this.value,{newDocument:n}},remove:function(e,t,n){var r=e[t];return delete e[t],{newDocument:n,removed:r}},replace:function(e,t,n){var r=e[t];return e[t]=this.value,{newDocument:n,removed:r}},move:function(e,t,n){var r=lp(n,this.path);r&&=Zf(r);var i=up(n,{op:`remove`,path:this.from}).removed;return up(n,{op:`add`,path:this.path,value:i}),{newDocument:n,removed:r}},copy:function(e,t,n){var r=lp(n,this.from);return up(n,{op:`add`,path:this.path,value:Zf(r)}),{newDocument:n}},test:function(e,t,n){return{newDocument:n,test:hp(e[t],this.value)}},_get:function(e,t,n){return this.value=e[t],{newDocument:n}}},cp={add:function(e,t,n){return Qf(t)?e.splice(t,0,this.value):e[t]=this.value,{newDocument:n,index:t}},remove:function(e,t,n){return{newDocument:n,removed:e.splice(t,1)[0]}},replace:function(e,t,n){var r=e[t];return e[t]=this.value,{newDocument:n,removed:r}},move:sp.move,copy:sp.copy,test:sp.test,_get:sp._get};function lp(e,t){if(t==``)return e;var n={op:`_get`,path:t};return up(e,n),n.value}function up(e,t,n,r,i,a){if(n===void 0&&(n=!1),r===void 0&&(r=!0),i===void 0&&(i=!0),a===void 0&&(a=0),n&&(typeof n==`function`?n(t,0,e,t.path):pp(t,0)),t.path===``){var o={newDocument:e};if(t.op===`add`)return o.newDocument=t.value,o;if(t.op===`replace`)return o.newDocument=t.value,o.removed=e,o;if(t.op===`move`||t.op===`copy`)return o.newDocument=lp(e,t.from),t.op===`move`&&(o.removed=e),o;if(t.op===`test`){if(o.test=hp(e,t.value),o.test===!1)throw new ap(`Test operation failed`,`TEST_OPERATION_FAILED`,a,t,e);return o.newDocument=e,o}else if(t.op===`remove`)return o.removed=e,o.newDocument=null,o;else if(t.op===`_get`)return t.value=e,o;else if(n)throw new ap("Operation `op` property is not one of operations defined in RFC-6902",`OPERATION_OP_INVALID`,a,t,e);else return o}else{r||(e=Zf(e));var s=(t.path||``).split(`/`),c=e,l=1,u=s.length,d=void 0,f=void 0,p=void 0;for(p=typeof n==`function`?n:pp;;){if(f=s[l],f&&f.indexOf(`~`)!=-1&&(f=ep(f)),i&&(f==`__proto__`||f==`prototype`&&l>0&&s[l-1]==`constructor`))throw TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(n&&d===void 0&&(c[f]===void 0?d=s.slice(0,l).join(`/`):l==u-1&&(d=t.path),d!==void 0&&p(t,0,e,d)),l++,Array.isArray(c)){if(f===`-`)f=c.length;else if(n&&!Qf(f))throw new ap(`Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index`,`OPERATION_PATH_ILLEGAL_ARRAY_INDEX`,a,t,e);else Qf(f)&&(f=~~f);if(l>=u){if(n&&t.op===`add`&&f>c.length)throw new ap(`The specified index MUST NOT be greater than the number of elements in the array`,`OPERATION_VALUE_OUT_OF_BOUNDS`,a,t,e);var o=cp[t.op].call(t,c,f,e);if(o.test===!1)throw new ap(`Test operation failed`,`TEST_OPERATION_FAILED`,a,t,e);return o}}else if(l>=u){var o=sp[t.op].call(t,c,f,e);if(o.test===!1)throw new ap(`Test operation failed`,`TEST_OPERATION_FAILED`,a,t,e);return o}if(c=c[f],n&&l0)throw new ap('Operation `path` property must start with "/"',`OPERATION_PATH_INVALID`,t,e,n);if((e.op===`move`||e.op===`copy`)&&typeof e.from!=`string`)throw new ap("Operation `from` property is not present (applicable in `move` and `copy` operations)",`OPERATION_FROM_REQUIRED`,t,e,n);if((e.op===`add`||e.op===`replace`||e.op===`test`)&&e.value===void 0)throw new ap("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)",`OPERATION_VALUE_REQUIRED`,t,e,n);if((e.op===`add`||e.op===`replace`||e.op===`test`)&&tp(e.value))throw new ap("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)",`OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED`,t,e,n);if(n){if(e.op==`add`){var i=e.path.split(`/`).length,a=r.split(`/`).length;if(i!==a+1&&i!==a)throw new ap("Cannot perform an `add` operation at the desired path",`OPERATION_PATH_CANNOT_ADD`,t,e,n)}else if(e.op===`replace`||e.op===`remove`||e.op===`_get`){if(e.path!==r)throw new ap(`Cannot perform the operation at a path that does not exist`,`OPERATION_PATH_UNRESOLVABLE`,t,e,n)}else if(e.op===`move`||e.op===`copy`){var o=mp([{op:`_get`,path:e.from,value:void 0}],n);if(o&&o.name===`OPERATION_PATH_UNRESOLVABLE`)throw new ap(`Cannot perform the operation from a path that does not exist`,`OPERATION_FROM_UNRESOLVABLE`,t,e,n)}}}function mp(e,t,n){try{if(!Array.isArray(e))throw new ap(`Patch sequence must be an array`,`SEQUENCE_NOT_AN_ARRAY`);if(t)dp(Zf(t),Zf(e),n||!0);else{n||=pp;for(var r=0;rDp,generate:()=>Tp,observe:()=>wp,unobserve:()=>Cp}),_p=new WeakMap,vp=function(){function e(e){this.observers=new Map,this.obj=e}return e}(),yp=function(){function e(e,t){this.callback=e,this.observer=t}return e}();function bp(e){return _p.get(e)}function xp(e,t){return e.observers.get(t)}function Sp(e,t){e.observers.delete(t.callback)}function Cp(e,t){t.unobserve()}function wp(e,t){var n=[],r,i=bp(e);if(!i)i=new vp(e),_p.set(e,i);else{var a=xp(i,t);r=a&&a.observer}if(r)return r;if(r={},i.value=Zf(e),t){r.callback=t,r.next=null;var o=function(){Tp(r)},s=function(){clearTimeout(r.next),r.next=setTimeout(o)};typeof window<`u`&&(window.addEventListener(`mouseup`,s),window.addEventListener(`keyup`,s),window.addEventListener(`mousedown`,s),window.addEventListener(`keydown`,s),window.addEventListener(`change`,s))}return r.patches=n,r.object=e,r.unobserve=function(){Tp(r),clearTimeout(r.next),Sp(i,r),typeof window<`u`&&(window.removeEventListener(`mouseup`,s),window.removeEventListener(`keyup`,s),window.removeEventListener(`mousedown`,s),window.removeEventListener(`keydown`,s),window.removeEventListener(`change`,s))},i.observers.set(t,new yp(t,r)),r}function Tp(e,t){t===void 0&&(t=!1);var n=_p.get(e.object);Ep(n.value,e.object,e.patches,``,t),e.patches.length&&dp(n.value,e.patches);var r=e.patches;return r.length>0&&(e.patches=[],e.callback&&e.callback(r)),r}function Ep(e,t,n,r,i){if(t!==e){typeof t.toJSON==`function`&&(t=t.toJSON());for(var a=Xf(t),o=Xf(e),s=!1,c=o.length-1;c>=0;c--){var l=o[c],u=e[l];if(Yf(t,l)&&!(t[l]===void 0&&u!==void 0&&Array.isArray(t)===!1)){var d=t[l];typeof u==`object`&&u&&typeof d==`object`&&d&&Array.isArray(u)===Array.isArray(d)?Ep(u,d,n,r+`/`+$f(l),i):u!==d&&(i&&n.push({op:`test`,path:r+`/`+$f(l),value:Zf(u)}),n.push({op:`replace`,path:r+`/`+$f(l),value:Zf(d)}))}else Array.isArray(e)===Array.isArray(t)?(i&&n.push({op:`test`,path:r+`/`+$f(l),value:Zf(u)}),n.push({op:`remove`,path:r+`/`+$f(l)}),s=!0):(i&&n.push({op:`test`,path:r,value:e}),n.push({op:`replace`,path:r,value:t}))}if(!(!s&&a.length==o.length))for(var c=0;c0&&a[a.length-1]))&&(s[0]===6||s[0]===2)){n=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)}function Ip(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a}function Lp(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r1||c(e,t)})},t&&(i[e]=t(i[e])))}function c(e,t){try{l(r[e](t))}catch(e){f(a[0][3],e)}}function l(e){e.value instanceof Rp?Promise.resolve(e.value.v).then(u,d):f(a[0][2],e)}function u(e){c(`next`,e)}function d(e){c(`throw`,e)}function f(e,t){e(t),a.shift(),a.length&&c(a[0][0],a[0][1])}}function Bp(e){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof Fp==`function`?Fp(e):e[Symbol.iterator](),n={},r(`next`),r(`throw`),r(`return`),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise(function(r,a){n=e[t](n),i(r,a,n.done,n.value)})}}function i(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)}}function Vp(e){return typeof e==`function`}function Hp(e){var t=e(function(e){Error.call(e),e.stack=Error().stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var Up=Hp(function(e){return function(t){e(this),this.message=t?t.length+` errors occurred during unsubscription: `+t.map(function(e,t){return t+1+`) `+e.toString()}).join(` - `):``,this.name=`UnsubscriptionError`,this.errors=t}});function Wp(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var Gp=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var e,t,n,r,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var o=Fp(a),s=o.next();!s.done;s=o.next())s.value.remove(this)}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}else a.remove(this);var c=this.initialTeardown;if(Vp(c))try{c()}catch(e){i=e instanceof Up?e.errors:[e]}var l=this._finalizers;if(l){this._finalizers=null;try{for(var u=Fp(l),d=u.next();!d.done;d=u.next()){var f=d.value;try{Jp(f)}catch(e){i??=[],e instanceof Up?i=Lp(Lp([],Ip(i)),Ip(e.errors)):i.push(e)}}}catch(e){n={error:e}}finally{try{d&&!d.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}}if(i)throw new Up(i)}},e.prototype.add=function(t){if(t&&t!==this)if(this.closed)Jp(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=this._finalizers??[]).push(t)}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&Wp(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&Wp(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=(function(){var t=new e;return t.closed=!0,t})(),e}(),Kp=Gp.EMPTY;function qp(e){return e instanceof Gp||e&&`closed`in e&&Vp(e.remove)&&Vp(e.add)&&Vp(e.unsubscribe)}function Jp(e){Vp(e)?e():e.unsubscribe()}var Yp={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Xp={setTimeout:function(e,t){var n=[...arguments].slice(2),r=Xp.delegate;return r?.setTimeout?r.setTimeout.apply(r,Lp([e,t],Ip(n))):setTimeout.apply(void 0,Lp([e,t],Ip(n)))},clearTimeout:function(e){return(Xp.delegate?.clearTimeout||clearTimeout)(e)},delegate:void 0};function Zp(e){Xp.setTimeout(function(){var t=Yp.onUnhandledError;if(t)t(e);else throw e})}function Qp(){}var $p=(function(){return nm(`C`,void 0,void 0)})();function em(e){return nm(`E`,void 0,e)}function tm(e){return nm(`N`,e,void 0)}function nm(e,t,n){return{kind:e,value:t,error:n}}var rm=null;function im(e){if(Yp.useDeprecatedSynchronousErrorHandling){var t=!rm;if(t&&(rm={errorThrown:!1,error:null}),e(),t){var n=rm,r=n.errorThrown,i=n.error;if(rm=null,r)throw i}}else e()}function am(e){Yp.useDeprecatedSynchronousErrorHandling&&rm&&(rm.errorThrown=!0,rm.error=e)}var om=function(e){Ap(t,e);function t(t){var n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,qp(t)&&t.add(n)):n.destination=nee,n}return t.create=function(e,t,n){return new cm(e,t,n)},t.prototype.next=function(e){this.isStopped?dm(tm(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?dm(em(e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?dm($p,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(Gp),eee=Function.prototype.bind;function sm(e,t){return eee.call(e,t)}var tee=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){lm(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){lm(e)}else lm(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){lm(e)}},e}(),cm=function(e){Ap(t,e);function t(t,n,r){var i=e.call(this)||this,a;if(Vp(t)||!t)a={next:t??void 0,error:n??void 0,complete:r??void 0};else{var o;i&&Yp.useDeprecatedNextContext?(o=Object.create(t),o.unsubscribe=function(){return i.unsubscribe()},a={next:t.next&&sm(t.next,o),error:t.error&&sm(t.error,o),complete:t.complete&&sm(t.complete,o)}):a=t}return i.destination=new tee(a),i}return t}(om);function lm(e){Yp.useDeprecatedSynchronousErrorHandling?am(e):Zp(e)}function um(e){throw e}function dm(e,t){var n=Yp.onStoppedNotification;n&&Xp.setTimeout(function(){return n(e,t)})}var nee={closed:!0,next:Qp,error:um,complete:Qp},fm=(function(){return typeof Symbol==`function`&&Symbol.observable||`@@observable`})();function pm(e){return e}function mm(){return hm([...arguments])}function hm(e){return e.length===0?pm:e.length===1?e[0]:function(t){return e.reduce(function(e,t){return t(e)},t)}}var gm=function(){function e(e){e&&(this._subscribe=e)}return e.prototype.lift=function(t){var n=new e;return n.source=this,n.operator=t,n},e.prototype.subscribe=function(e,t,n){var r=this,i=iee(e)?e:new cm(e,t,n);return im(function(){var e=r,t=e.operator,n=e.source;i.add(t?t.call(i,n):n?r._subscribe(i):r._trySubscribe(i))}),i},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},e.prototype.forEach=function(e,t){var n=this;return t=_m(t),new t(function(t,r){var i=new cm({next:function(t){try{e(t)}catch(e){r(e),i.unsubscribe()}},error:r,complete:t});n.subscribe(i)})},e.prototype._subscribe=function(e){return this.source?.subscribe(e)},e.prototype[fm]=function(){return this},e.prototype.pipe=function(){return hm([...arguments])(this)},e.prototype.toPromise=function(e){var t=this;return e=_m(e),new e(function(e,n){var r;t.subscribe(function(e){return r=e},function(e){return n(e)},function(){return e(r)})})},e.create=function(t){return new e(t)},e}();function _m(e){return e??Yp.Promise??Promise}function ree(e){return e&&Vp(e.next)&&Vp(e.error)&&Vp(e.complete)}function iee(e){return e&&e instanceof om||ree(e)&&qp(e)}function vm(e){return Vp(e?.lift)}function ym(e){return function(t){if(vm(t))return t.lift(function(t){try{return e(t,this)}catch(e){this.error(e)}});throw TypeError(`Unable to lift unknown Observable type`)}}function bm(e,t,n,r,i){return new xm(e,t,n,r,i)}var xm=function(e){Ap(t,e);function t(t,n,r,i,a,o){var s=e.call(this,t)||this;return s.onFinalize=a,s.shouldUnsubscribe=o,s._next=n?function(e){try{n(e)}catch(e){t.error(e)}}:e.prototype._next,s._error=i?function(e){try{i(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,s._complete=r?function(){try{r()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,s}return t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;e.prototype.unsubscribe.call(this),!n&&((t=this.onFinalize)==null||t.call(this))}},t}(om),Sm=Hp(function(e){return function(){e(this),this.name=`ObjectUnsubscribedError`,this.message=`object unsubscribed`}}),Cm=function(e){Ap(t,e);function t(){var t=e.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return t.prototype.lift=function(e){var t=new wm(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new Sm},t.prototype.next=function(e){var t=this;im(function(){var n,r;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||=Array.from(t.observers);try{for(var i=Fp(t.currentObservers),a=i.next();!a.done;a=i.next())a.value.next(e)}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}})},t.prototype.error=function(e){var t=this;im(function(){if(t._throwIfClosed(),!t.isStopped){t.hasError=t.isStopped=!0,t.thrownError=e;for(var n=t.observers;n.length;)n.shift().error(e)}})},t.prototype.complete=function(){var e=this;im(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var t=e.observers;t.length;)t.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){return this.observers?.length>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,n=this,r=n.hasError,i=n.isStopped,a=n.observers;return r||i?Kp:(this.currentObservers=null,a.push(e),new Gp(function(){t.currentObservers=null,Wp(a,e)}))},t.prototype._checkFinalizedStatuses=function(e){var t=this,n=t.hasError,r=t.thrownError,i=t.isStopped;n?e.error(r):i&&e.complete()},t.prototype.asObservable=function(){var e=new gm;return e.source=this,e},t.create=function(e,t){return new wm(e,t)},t}(gm),wm=function(e){Ap(t,e);function t(t,n){var r=e.call(this)||this;return r.destination=t,r.source=n,r}return t.prototype.next=function(e){var t,n;(n=(t=this.destination)?.next)==null||n.call(t,e)},t.prototype.error=function(e){var t,n;(n=(t=this.destination)?.error)==null||n.call(t,e)},t.prototype.complete=function(){var e,t;(t=(e=this.destination)?.complete)==null||t.call(e)},t.prototype._subscribe=function(e){return this.source?.subscribe(e)??Kp},t}(Cm),Tm={now:function(){return(Tm.delegate||Date).now()},delegate:void 0},Em=function(e){Ap(t,e);function t(t,n,r){t===void 0&&(t=1/0),n===void 0&&(n=1/0),r===void 0&&(r=Tm);var i=e.call(this)||this;return i._bufferSize=t,i._windowTime=n,i._timestampProvider=r,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,t),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(t){var n=this,r=n.isStopped,i=n._buffer,a=n._infiniteTimeWindow,o=n._timestampProvider,s=n._windowTime;r||(i.push(t),!a&&i.push(o.now()+s)),this._trimBuffer(),e.prototype.next.call(this,t)},t.prototype._subscribe=function(e){this._throwIfClosed(),this._trimBuffer();for(var t=this._innerSubscribe(e),n=this,r=n._infiniteTimeWindow,i=n._buffer.slice(),a=0;a=0}function bh(e){for(var t=[`topLevel`],n=0,r,i,a,o=function(e){return t.push(e)},s=function(e){return t[t.length-1]=e},c=function(e){r??(r=n,i=t.length,a=e)},l=function(e){e===a&&(r=void 0,i=void 0,a=void 0)},u=function(){return t.pop()},d=function(){return n--},f=function(e){if(`0`<=e&&e<=`9`){o(`number`);return}switch(e){case`"`:o(`string`);return;case`-`:o(`numberNeedsDigit`);return;case`t`:o(`true`);return;case`f`:o(`false`);return;case`n`:o(`null`);return;case`[`:o(`arrayNeedsValue`);return;case`{`:o(`objectNeedsKey`);return}},p=e.length;n`9`)&&(d(),u());break;case`numberNeedsDigit`:s(`number`);break;case`numberNeedsExponent`:s(m===`+`||m===`-`?`numberNeedsDigit`:`number`);break;case`true`:case`false`:case`null`:(m<`a`||m>`z`)&&(d(),u());break;case`arrayNeedsValue`:m===`]`?u():yh(m)||(l(`collectionItem`),s(`arrayNeedsComma`),f(m));break;case`arrayNeedsComma`:m===`]`?u():m===`,`&&(c(`collectionItem`),s(`arrayNeedsValue`));break;case`objectNeedsKey`:m===`}`?u():m===`"`&&(c(`collectionItem`),s(`objectNeedsColon`),o(`string`));break;case`objectNeedsColon`:m===`:`&&s(`objectNeedsValue`);break;case`objectNeedsValue`:yh(m)||(l(`collectionItem`),s(`objectNeedsComma`),f(m));break;case`objectNeedsComma`:m===`}`?u():m===`,`&&(c(`collectionItem`),s(`objectNeedsKey`));break}}i!=null&&(t.length=i);for(var h=[r==null?e:e.slice(0,r)],g=function(t){return h.push(t.slice(e.length-e.lastIndexOf(t[0])))},_=t.length-1;_>=0;_--)switch(t[_]){case`string`:h.push(`"`);break;case`numberNeedsDigit`:case`numberNeedsExponent`:h.push(`0`);break;case`true`:g(`true`);break;case`false`:g(`false`);break;case`null`:g(`null`);break;case`arrayNeedsValue`:case`arrayNeedsComma`:h.push(`]`);break;case`objectNeedsKey`:case`objectNeedsColon`:case`objectNeedsValue`:case`objectNeedsComma`:h.push(`}`);break}return h.join(``)}function xh(){let e=0,t=0;for(let n=0;n<28;n+=7){let r=this.buf[this.pos++];if(e|=(r&127)<>4,!(n&128))return this.assertBounds(),[e,t];for(let n=3;n<=31;n+=7){let r=this.buf[this.pos++];if(t|=(r&127)<>>r,a=!(!(i>>>7)&&t==0),o=(a?i|128:i)&255;if(n.push(o),!a)return}let r=e>>>28&15|(t&7)<<4,i=!!(t>>3);if(n.push((i?r|128:r)&255),i){for(let e=3;e<31;e+=7){let r=t>>>e,i=!!(r>>>7),a=(i?r|128:r)&255;if(n.push(a),!i)return}n.push(t>>>31&1)}}var Ch=4294967296;function wh(e){let t=e[0]===`-`;t&&(e=e.slice(1));let n=1e6,r=0,i=0;function a(t,a){let o=Number(e.slice(t,a));i*=n,r=r*n+o,r>=Ch&&(i+=r/Ch|0,r%=Ch)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),t?kh(r,i):Oh(r,i)}function Th(e,t){let n=Oh(e,t),r=n.hi&2147483648;r&&(n=kh(n.lo,n.hi));let i=Eh(n.lo,n.hi);return r?`-`+i:i}function Eh(e,t){if({lo:e,hi:t}=Dh(e,t),t<=2097151)return String(Ch*t+e);let n=e&16777215,r=(e>>>24|t<<8)&16777215,i=t>>16&65535,a=n+r*6777216+i*6710656,o=r+i*8147497,s=i*2,c=1e7;return a>=c&&(o+=Math.floor(a/c),a%=c),o>=c&&(s+=Math.floor(o/c),o%=c),s.toString()+Ah(o)+Ah(a)}function Dh(e,t){return{lo:e>>>0,hi:t>>>0}}function Oh(e,t){return{lo:e|0,hi:t|0}}function kh(e,t){return t=~t,e?e=~e+1:t+=1,Oh(e,t)}var Ah=e=>{let t=String(e);return`0000000`.slice(t.length)+t};function jh(e,t){if(e>=0){for(;e>127;)t.push(e&127|128),e>>>=7;t.push(e)}else{for(let n=0;n<9;n++)t.push(e&127|128),e>>=7;t.push(1)}}function Mh(){let e=this.buf[this.pos++],t=e&127;if(!(e&128)||(e=this.buf[this.pos++],t|=(e&127)<<7,!(e&128))||(e=this.buf[this.pos++],t|=(e&127)<<14,!(e&128))||(e=this.buf[this.pos++],t|=(e&127)<<21,!(e&128)))return this.assertBounds(),t;e=this.buf[this.pos++],t|=(e&15)<<28;for(let t=5;e&128&&t<10;t++)e=this.buf[this.pos++];if(e&128)throw Error(`invalid varint`);return this.assertBounds(),t>>>0}var Nh=Ph();function Ph(){let e=new DataView(new ArrayBuffer(8));if(typeof BigInt==`function`&&typeof e.getBigInt64==`function`&&typeof e.getBigUint64==`function`&&typeof e.setBigInt64==`function`&&typeof e.setBigUint64==`function`&&(globalThis.Deno||globalThis.Bun||typeof process!=`object`||{}.BUF_BIGINT_DISABLE!==`1`)){let t=BigInt(`-9223372036854775808`),n=BigInt(`9223372036854775807`),r=BigInt(`0`),i=BigInt(`18446744073709551615`);return{zero:BigInt(0),supported:!0,parse(e){let r=typeof e==`bigint`?e:BigInt(e);if(r>n||ri||t>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(Hh(e);e>127;)this.buf.push(e&127|128),e>>>=7;return this.buf.push(e),this}int32(e){return Vh(e),jh(e,this.buf),this}bool(e){return this.buf.push(+!!e),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.encodeUtf8(e);return this.uint32(t.byteLength),this.raw(t)}float(e){Uh(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){Hh(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){Vh(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return Vh(e),e=(e<<1^e>>31)>>>0,jh(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=Nh.enc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=Nh.uEnc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=Nh.enc(e);return Sh(t.lo,t.hi,this.buf),this}sint64(e){let t=Nh.enc(e),n=t.hi>>31;return Sh(t.lo<<1^n,(t.hi<<1|t.lo>>>31)^n,this.buf),this}uint64(e){let t=Nh.uEnc(e);return Sh(t.lo,t.hi,this.buf),this}},F=class{constructor(e,t=Rh().decodeUtf8){this.decodeUtf8=t,this.varint64=xh,this.uint32=Mh,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength)}tag(){let e=this.pos,t=this.uint32(),n=this.pos-e;if(n>5||n==5&&this.buf[this.pos-1]>15)throw Error(`illegal tag: varint overflows uint32`);let r=t>>>3,i=t&7;if(r<=0||i>5)throw Error(`illegal tag: field no `+r+` wire type `+i);return[r,i]}skip(e,t,n=100){let r=this.pos;switch(e){case zh.Varint:for(;this.buf[this.pos++]&128;);break;case zh.Bit64:this.pos+=4;case zh.Bit32:this.pos+=4;break;case zh.LengthDelimited:let r=this.uint32();this.pos+=r;break;case zh.StartGroup:if(n<=0)throw Error(`maximum recursion depth reached`);for(;;){let[e,r]=this.tag();if(r===zh.EndGroup){if(t!==void 0&&e!==t)throw Error(`invalid end group tag`);break}this.skip(r,e,n-1)}break;default:throw Error(`cant skip wire type `+e)}return this.assertBounds(),this.buf.subarray(r,this.pos)}assertBounds(){if(this.pos>this.len)throw RangeError(`premature EOF`)}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return Nh.dec(...this.varint64())}uint64(){return Nh.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),n=-(e&1);return e=(e>>>1|(t&1)<<31)^n,t=t>>>1^n,Nh.dec(e,t)}bool(){let[e,t]=this.varint64();return e!==0||t!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return Nh.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return Nh.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(e){return this.decodeUtf8(this.bytes(),e)}};function Vh(e){if(typeof e==`string`)e=Number(e);else if(typeof e!=`number`)throw Error(`invalid int32: `+typeof e);if(!Number.isInteger(e)||e>2147483647||e<-2147483648)throw Error(`invalid int32: `+e)}function Hh(e){if(typeof e==`string`)e=Number(e);else if(typeof e!=`number`)throw Error(`invalid uint32: `+typeof e);if(!Number.isInteger(e)||e>4294967295||e<0)throw Error(`invalid uint32: `+e)}function Uh(e){if(typeof e==`string`){let t=e;if(e=Number(e),Number.isNaN(e)&&t!==`NaN`)throw Error(`invalid float32: `+t)}else if(typeof e!=`number`)throw Error(`invalid float32: `+typeof e);if(Number.isFinite(e)&&(e>34028234663852886e22||e<-34028234663852886e22))throw Error(`invalid float32: `+e)}var cee=function(e){return e[e.NULL_VALUE=0]=`NULL_VALUE`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e}({});function Wh(){return{fields:{}}}var Gh={encode(e,t=new Bh){return Object.entries(e.fields).forEach(([e,n])=>{n!==void 0&&qh.encode({key:e,value:n},t.uint32(10).fork()).join()}),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Wh();for(;n.pos>>3){case 1:{if(e!==10)break;let t=qh.decode(n,n.uint32());t.value!==void 0&&(i.fields[t.key]=t.value);continue}}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Gh.fromPartial(e??{})},fromPartial(e){let t=Wh();return t.fields=Object.entries(e.fields??{}).reduce((e,[t,n])=>(n!==void 0&&(e[t]=n),e),{}),t},wrap(e){let t=Wh();if(e!==void 0)for(let n of Object.keys(e))t.fields[n]=e[n];return t},unwrap(e){let t={};if(e.fields)for(let n of Object.keys(e.fields))t[n]=e.fields[n];return t}};function Kh(){return{key:``,value:void 0}}var qh={encode(e,t=new Bh){return e.key!==``&&t.uint32(10).string(e.key),e.value!==void 0&&Yh.encode(Yh.wrap(e.value),t.uint32(18).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Kh();for(;n.pos>>3){case 1:if(e!==10)break;i.key=n.string();continue;case 2:if(e!==18)break;i.value=Yh.unwrap(Yh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return qh.fromPartial(e??{})},fromPartial(e){let t=Kh();return t.key=e.key??``,t.value=e.value??void 0,t}};function Jh(){return{nullValue:void 0,numberValue:void 0,stringValue:void 0,boolValue:void 0,structValue:void 0,listValue:void 0}}var Yh={encode(e,t=new Bh){return e.nullValue!==void 0&&t.uint32(8).int32(e.nullValue),e.numberValue!==void 0&&t.uint32(17).double(e.numberValue),e.stringValue!==void 0&&t.uint32(26).string(e.stringValue),e.boolValue!==void 0&&t.uint32(32).bool(e.boolValue),e.structValue!==void 0&&Gh.encode(Gh.wrap(e.structValue),t.uint32(42).fork()).join(),e.listValue!==void 0&&Zh.encode(Zh.wrap(e.listValue),t.uint32(50).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Jh();for(;n.pos>>3){case 1:if(e!==8)break;i.nullValue=n.int32();continue;case 2:if(e!==17)break;i.numberValue=n.double();continue;case 3:if(e!==26)break;i.stringValue=n.string();continue;case 4:if(e!==32)break;i.boolValue=n.bool();continue;case 5:if(e!==42)break;i.structValue=Gh.unwrap(Gh.decode(n,n.uint32()));continue;case 6:if(e!==50)break;i.listValue=Zh.unwrap(Zh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Yh.fromPartial(e??{})},fromPartial(e){let t=Jh();return t.nullValue=e.nullValue??void 0,t.numberValue=e.numberValue??void 0,t.stringValue=e.stringValue??void 0,t.boolValue=e.boolValue??void 0,t.structValue=e.structValue??void 0,t.listValue=e.listValue??void 0,t},wrap(e){let t=Jh();if(e===null)t.nullValue=cee.NULL_VALUE;else if(typeof e==`boolean`)t.boolValue=e;else if(typeof e==`number`)t.numberValue=e;else if(typeof e==`string`)t.stringValue=e;else if(globalThis.Array.isArray(e))t.listValue=e;else if(typeof e==`object`)t.structValue=e;else if(e!==void 0)throw new globalThis.Error(`Unsupported any value type: `+typeof e);return t},unwrap(e){if(e.stringValue!==void 0)return e.stringValue;if(e?.numberValue!==void 0)return e.numberValue;if(e?.boolValue!==void 0)return e.boolValue;if(e?.structValue!==void 0)return e.structValue;if(e?.listValue!==void 0)return e.listValue;if(e?.nullValue!==void 0)return null}};function Xh(){return{values:[]}}var Zh={encode(e,t=new Bh){for(let n of e.values)Yh.encode(Yh.wrap(n),t.uint32(10).fork()).join();return t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Xh();for(;n.pos>>3){case 1:if(e!==10)break;i.values.push(Yh.unwrap(Yh.decode(n,n.uint32())));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Zh.fromPartial(e??{})},fromPartial(e){let t=Xh();return t.values=e.values?.map(e=>e)||[],t},wrap(e){let t=Xh();return t.values=e??[],t},unwrap(e){return e?.hasOwnProperty(`values`)&&globalThis.Array.isArray(e.values)?e.values:e}},lee=function(e){return e[e.ADD=0]=`ADD`,e[e.REMOVE=1]=`REMOVE`,e[e.REPLACE=2]=`REPLACE`,e[e.MOVE=3]=`MOVE`,e[e.COPY=4]=`COPY`,e[e.TEST=5]=`TEST`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e}({});function Qh(){return{op:0,path:``,from:void 0,value:void 0}}var $h={encode(e,t=new Bh){return e.op!==0&&t.uint32(8).int32(e.op),e.path!==``&&t.uint32(18).string(e.path),e.from!==void 0&&t.uint32(26).string(e.from),e.value!==void 0&&Yh.encode(Yh.wrap(e.value),t.uint32(34).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Qh();for(;n.pos>>3){case 1:if(e!==8)break;i.op=n.int32();continue;case 2:if(e!==18)break;i.path=n.string();continue;case 3:if(e!==26)break;i.from=n.string();continue;case 4:if(e!==34)break;i.value=Yh.unwrap(Yh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return $h.fromPartial(e??{})},fromPartial(e){let t=Qh();return t.op=e.op??0,t.path=e.path??``,t.from=e.from??void 0,t.value=e.value??void 0,t}};function eg(){return{id:``,type:``,function:void 0}}var tg={encode(e,t=new Bh){return e.id!==``&&t.uint32(10).string(e.id),e.type!==``&&t.uint32(18).string(e.type),e.function!==void 0&&rg.encode(e.function,t.uint32(26).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=eg();for(;n.pos>>3){case 1:if(e!==10)break;i.id=n.string();continue;case 2:if(e!==18)break;i.type=n.string();continue;case 3:if(e!==26)break;i.function=rg.decode(n,n.uint32());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return tg.fromPartial(e??{})},fromPartial(e){let t=eg();return t.id=e.id??``,t.type=e.type??``,t.function=e.function!==void 0&&e.function!==null?rg.fromPartial(e.function):void 0,t}};function ng(){return{name:``,arguments:``}}var rg={encode(e,t=new Bh){return e.name!==``&&t.uint32(10).string(e.name),e.arguments!==``&&t.uint32(18).string(e.arguments),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=ng();for(;n.pos>>3){case 1:if(e!==10)break;i.name=n.string();continue;case 2:if(e!==18)break;i.arguments=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return rg.fromPartial(e??{})},fromPartial(e){let t=ng();return t.name=e.name??``,t.arguments=e.arguments??``,t}};function ig(){return{value:``,mimeType:``}}var ag={encode(e,t=new Bh){return e.value!==``&&t.uint32(10).string(e.value),e.mimeType!==``&&t.uint32(18).string(e.mimeType),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=ig();for(;n.pos>>3){case 1:if(e!==10)break;i.value=n.string();continue;case 2:if(e!==18)break;i.mimeType=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return ag.fromPartial(e??{})},fromPartial(e){let t=ig();return t.value=e.value??``,t.mimeType=e.mimeType??``,t}};function og(){return{value:``,mimeType:void 0}}var sg={encode(e,t=new Bh){return e.value!==``&&t.uint32(10).string(e.value),e.mimeType!==void 0&&t.uint32(18).string(e.mimeType),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=og();for(;n.pos>>3){case 1:if(e!==10)break;i.value=n.string();continue;case 2:if(e!==18)break;i.mimeType=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return sg.fromPartial(e??{})},fromPartial(e){let t=og();return t.value=e.value??``,t.mimeType=e.mimeType??void 0,t}};function cg(){return{data:void 0,url:void 0}}var lg={encode(e,t=new Bh){return e.data!==void 0&&ag.encode(e.data,t.uint32(10).fork()).join(),e.url!==void 0&&sg.encode(e.url,t.uint32(18).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=cg();for(;n.pos>>3){case 1:if(e!==10)break;i.data=ag.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.url=sg.decode(n,n.uint32());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return lg.fromPartial(e??{})},fromPartial(e){let t=cg();return t.data=e.data!==void 0&&e.data!==null?ag.fromPartial(e.data):void 0,t.url=e.url!==void 0&&e.url!==null?sg.fromPartial(e.url):void 0,t}};function ug(){return{text:``}}var dg={encode(e,t=new Bh){return e.text!==``&&t.uint32(10).string(e.text),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=ug();for(;n.pos>>3){case 1:if(e!==10)break;i.text=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return dg.fromPartial(e??{})},fromPartial(e){let t=ug();return t.text=e.text??``,t}};function fg(){return{source:void 0,metadata:void 0}}var pg={encode(e,t=new Bh){return e.source!==void 0&&lg.encode(e.source,t.uint32(10).fork()).join(),e.metadata!==void 0&&Yh.encode(Yh.wrap(e.metadata),t.uint32(18).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=fg();for(;n.pos>>3){case 1:if(e!==10)break;i.source=lg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.metadata=Yh.unwrap(Yh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return pg.fromPartial(e??{})},fromPartial(e){let t=fg();return t.source=e.source!==void 0&&e.source!==null?lg.fromPartial(e.source):void 0,t.metadata=e.metadata??void 0,t}};function mg(){return{source:void 0,metadata:void 0}}var hg={encode(e,t=new Bh){return e.source!==void 0&&lg.encode(e.source,t.uint32(10).fork()).join(),e.metadata!==void 0&&Yh.encode(Yh.wrap(e.metadata),t.uint32(18).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=mg();for(;n.pos>>3){case 1:if(e!==10)break;i.source=lg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.metadata=Yh.unwrap(Yh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return hg.fromPartial(e??{})},fromPartial(e){let t=mg();return t.source=e.source!==void 0&&e.source!==null?lg.fromPartial(e.source):void 0,t.metadata=e.metadata??void 0,t}};function gg(){return{source:void 0,metadata:void 0}}var _g={encode(e,t=new Bh){return e.source!==void 0&&lg.encode(e.source,t.uint32(10).fork()).join(),e.metadata!==void 0&&Yh.encode(Yh.wrap(e.metadata),t.uint32(18).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=gg();for(;n.pos>>3){case 1:if(e!==10)break;i.source=lg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.metadata=Yh.unwrap(Yh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return _g.fromPartial(e??{})},fromPartial(e){let t=gg();return t.source=e.source!==void 0&&e.source!==null?lg.fromPartial(e.source):void 0,t.metadata=e.metadata??void 0,t}};function vg(){return{source:void 0,metadata:void 0}}var yg={encode(e,t=new Bh){return e.source!==void 0&&lg.encode(e.source,t.uint32(10).fork()).join(),e.metadata!==void 0&&Yh.encode(Yh.wrap(e.metadata),t.uint32(18).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=vg();for(;n.pos>>3){case 1:if(e!==10)break;i.source=lg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.metadata=Yh.unwrap(Yh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return yg.fromPartial(e??{})},fromPartial(e){let t=vg();return t.source=e.source!==void 0&&e.source!==null?lg.fromPartial(e.source):void 0,t.metadata=e.metadata??void 0,t}};function bg(){return{text:void 0,image:void 0,audio:void 0,video:void 0,document:void 0}}var xg={encode(e,t=new Bh){return e.text!==void 0&&dg.encode(e.text,t.uint32(10).fork()).join(),e.image!==void 0&&pg.encode(e.image,t.uint32(18).fork()).join(),e.audio!==void 0&&hg.encode(e.audio,t.uint32(26).fork()).join(),e.video!==void 0&&_g.encode(e.video,t.uint32(34).fork()).join(),e.document!==void 0&&yg.encode(e.document,t.uint32(42).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=bg();for(;n.pos>>3){case 1:if(e!==10)break;i.text=dg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.image=pg.decode(n,n.uint32());continue;case 3:if(e!==26)break;i.audio=hg.decode(n,n.uint32());continue;case 4:if(e!==34)break;i.video=_g.decode(n,n.uint32());continue;case 5:if(e!==42)break;i.document=yg.decode(n,n.uint32());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return xg.fromPartial(e??{})},fromPartial(e){let t=bg();return t.text=e.text!==void 0&&e.text!==null?dg.fromPartial(e.text):void 0,t.image=e.image!==void 0&&e.image!==null?pg.fromPartial(e.image):void 0,t.audio=e.audio!==void 0&&e.audio!==null?hg.fromPartial(e.audio):void 0,t.video=e.video!==void 0&&e.video!==null?_g.fromPartial(e.video):void 0,t.document=e.document!==void 0&&e.document!==null?yg.fromPartial(e.document):void 0,t}};function Sg(){return{id:``,role:``,content:void 0,name:void 0,toolCalls:[],toolCallId:void 0,error:void 0,contentParts:[]}}var Cg={encode(e,t=new Bh){e.id!==``&&t.uint32(10).string(e.id),e.role!==``&&t.uint32(18).string(e.role),e.content!==void 0&&t.uint32(26).string(e.content),e.name!==void 0&&t.uint32(34).string(e.name);for(let n of e.toolCalls)tg.encode(n,t.uint32(42).fork()).join();e.toolCallId!==void 0&&t.uint32(50).string(e.toolCallId),e.error!==void 0&&t.uint32(58).string(e.error);for(let n of e.contentParts)xg.encode(n,t.uint32(66).fork()).join();return t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Sg();for(;n.pos>>3){case 1:if(e!==10)break;i.id=n.string();continue;case 2:if(e!==18)break;i.role=n.string();continue;case 3:if(e!==26)break;i.content=n.string();continue;case 4:if(e!==34)break;i.name=n.string();continue;case 5:if(e!==42)break;i.toolCalls.push(tg.decode(n,n.uint32()));continue;case 6:if(e!==50)break;i.toolCallId=n.string();continue;case 7:if(e!==58)break;i.error=n.string();continue;case 8:if(e!==66)break;i.contentParts.push(xg.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Cg.fromPartial(e??{})},fromPartial(e){let t=Sg();return t.id=e.id??``,t.role=e.role??``,t.content=e.content??void 0,t.name=e.name??void 0,t.toolCalls=e.toolCalls?.map(e=>tg.fromPartial(e))||[],t.toolCallId=e.toolCallId??void 0,t.error=e.error??void 0,t.contentParts=e.contentParts?.map(e=>xg.fromPartial(e))||[],t}};function wg(){return{id:``,reason:``,message:void 0,toolCallId:void 0,responseSchema:void 0,expiresAt:void 0,metadata:void 0}}var Tg={encode(e,t=new Bh){return e.id!==``&&t.uint32(10).string(e.id),e.reason!==``&&t.uint32(18).string(e.reason),e.message!==void 0&&t.uint32(26).string(e.message),e.toolCallId!==void 0&&t.uint32(34).string(e.toolCallId),e.responseSchema!==void 0&&Yh.encode(Yh.wrap(e.responseSchema),t.uint32(42).fork()).join(),e.expiresAt!==void 0&&t.uint32(50).string(e.expiresAt),e.metadata!==void 0&&Yh.encode(Yh.wrap(e.metadata),t.uint32(58).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=wg();for(;n.pos>>3){case 1:if(e!==10)break;i.id=n.string();continue;case 2:if(e!==18)break;i.reason=n.string();continue;case 3:if(e!==26)break;i.message=n.string();continue;case 4:if(e!==34)break;i.toolCallId=n.string();continue;case 5:if(e!==42)break;i.responseSchema=Yh.unwrap(Yh.decode(n,n.uint32()));continue;case 6:if(e!==50)break;i.expiresAt=n.string();continue;case 7:if(e!==58)break;i.metadata=Yh.unwrap(Yh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Tg.fromPartial(e??{})},fromPartial(e){let t=wg();return t.id=e.id??``,t.reason=e.reason??``,t.message=e.message??void 0,t.toolCallId=e.toolCallId??void 0,t.responseSchema=e.responseSchema??void 0,t.expiresAt=e.expiresAt??void 0,t.metadata=e.metadata??void 0,t}},Eg=function(e){return e[e.TEXT_MESSAGE_START=0]=`TEXT_MESSAGE_START`,e[e.TEXT_MESSAGE_CONTENT=1]=`TEXT_MESSAGE_CONTENT`,e[e.TEXT_MESSAGE_END=2]=`TEXT_MESSAGE_END`,e[e.TOOL_CALL_START=3]=`TOOL_CALL_START`,e[e.TOOL_CALL_ARGS=4]=`TOOL_CALL_ARGS`,e[e.TOOL_CALL_END=5]=`TOOL_CALL_END`,e[e.STATE_SNAPSHOT=6]=`STATE_SNAPSHOT`,e[e.STATE_DELTA=7]=`STATE_DELTA`,e[e.MESSAGES_SNAPSHOT=8]=`MESSAGES_SNAPSHOT`,e[e.RAW=9]=`RAW`,e[e.CUSTOM=10]=`CUSTOM`,e[e.RUN_STARTED=11]=`RUN_STARTED`,e[e.RUN_FINISHED=12]=`RUN_FINISHED`,e[e.RUN_ERROR=13]=`RUN_ERROR`,e[e.STEP_STARTED=14]=`STEP_STARTED`,e[e.STEP_FINISHED=15]=`STEP_FINISHED`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e}({});function Dg(){return{type:0,timestamp:void 0,rawEvent:void 0}}var Og={encode(e,t=new Bh){return e.type!==0&&t.uint32(8).int32(e.type),e.timestamp!==void 0&&t.uint32(16).int64(e.timestamp),e.rawEvent!==void 0&&Yh.encode(Yh.wrap(e.rawEvent),t.uint32(26).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Dg();for(;n.pos>>3){case 1:if(e!==8)break;i.type=n.int32();continue;case 2:if(e!==16)break;i.timestamp=p_(n.int64());continue;case 3:if(e!==26)break;i.rawEvent=Yh.unwrap(Yh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Og.fromPartial(e??{})},fromPartial(e){let t=Dg();return t.type=e.type??0,t.timestamp=e.timestamp??void 0,t.rawEvent=e.rawEvent??void 0,t}};function kg(){return{baseEvent:void 0,messageId:``,role:void 0,name:void 0}}var Ag={encode(e,t=new Bh){return e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join(),e.messageId!==``&&t.uint32(18).string(e.messageId),e.role!==void 0&&t.uint32(26).string(e.role),e.name!==void 0&&t.uint32(34).string(e.name),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=kg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messageId=n.string();continue;case 3:if(e!==26)break;i.role=n.string();continue;case 4:if(e!==34)break;i.name=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Ag.fromPartial(e??{})},fromPartial(e){let t=kg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.messageId=e.messageId??``,t.role=e.role??void 0,t.name=e.name??void 0,t}};function jg(){return{baseEvent:void 0,messageId:``,delta:``}}var Mg={encode(e,t=new Bh){return e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join(),e.messageId!==``&&t.uint32(18).string(e.messageId),e.delta!==``&&t.uint32(26).string(e.delta),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=jg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messageId=n.string();continue;case 3:if(e!==26)break;i.delta=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Mg.fromPartial(e??{})},fromPartial(e){let t=jg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.messageId=e.messageId??``,t.delta=e.delta??``,t}};function Ng(){return{baseEvent:void 0,messageId:``}}var Pg={encode(e,t=new Bh){return e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join(),e.messageId!==``&&t.uint32(18).string(e.messageId),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Ng();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messageId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Pg.fromPartial(e??{})},fromPartial(e){let t=Ng();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.messageId=e.messageId??``,t}};function Fg(){return{baseEvent:void 0,toolCallId:``,toolCallName:``,parentMessageId:void 0}}var Ig={encode(e,t=new Bh){return e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join(),e.toolCallId!==``&&t.uint32(18).string(e.toolCallId),e.toolCallName!==``&&t.uint32(26).string(e.toolCallName),e.parentMessageId!==void 0&&t.uint32(34).string(e.parentMessageId),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Fg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.toolCallId=n.string();continue;case 3:if(e!==26)break;i.toolCallName=n.string();continue;case 4:if(e!==34)break;i.parentMessageId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Ig.fromPartial(e??{})},fromPartial(e){let t=Fg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.toolCallId=e.toolCallId??``,t.toolCallName=e.toolCallName??``,t.parentMessageId=e.parentMessageId??void 0,t}};function Lg(){return{baseEvent:void 0,toolCallId:``,delta:``}}var Rg={encode(e,t=new Bh){return e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join(),e.toolCallId!==``&&t.uint32(18).string(e.toolCallId),e.delta!==``&&t.uint32(26).string(e.delta),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Lg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.toolCallId=n.string();continue;case 3:if(e!==26)break;i.delta=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Rg.fromPartial(e??{})},fromPartial(e){let t=Lg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.toolCallId=e.toolCallId??``,t.delta=e.delta??``,t}};function zg(){return{baseEvent:void 0,toolCallId:``}}var Bg={encode(e,t=new Bh){return e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join(),e.toolCallId!==``&&t.uint32(18).string(e.toolCallId),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=zg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.toolCallId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Bg.fromPartial(e??{})},fromPartial(e){let t=zg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.toolCallId=e.toolCallId??``,t}};function Vg(){return{baseEvent:void 0,snapshot:void 0}}var Hg={encode(e,t=new Bh){return e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join(),e.snapshot!==void 0&&Yh.encode(Yh.wrap(e.snapshot),t.uint32(18).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Vg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.snapshot=Yh.unwrap(Yh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Hg.fromPartial(e??{})},fromPartial(e){let t=Vg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.snapshot=e.snapshot??void 0,t}};function Ug(){return{baseEvent:void 0,delta:[]}}var Wg={encode(e,t=new Bh){e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join();for(let n of e.delta)$h.encode(n,t.uint32(18).fork()).join();return t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Ug();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.delta.push($h.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Wg.fromPartial(e??{})},fromPartial(e){let t=Ug();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.delta=e.delta?.map(e=>$h.fromPartial(e))||[],t}};function Gg(){return{baseEvent:void 0,messages:[]}}var Kg={encode(e,t=new Bh){e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join();for(let n of e.messages)Cg.encode(n,t.uint32(18).fork()).join();return t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Gg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messages.push(Cg.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Kg.fromPartial(e??{})},fromPartial(e){let t=Gg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.messages=e.messages?.map(e=>Cg.fromPartial(e))||[],t}};function qg(){return{baseEvent:void 0,event:void 0,source:void 0}}var Jg={encode(e,t=new Bh){return e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join(),e.event!==void 0&&Yh.encode(Yh.wrap(e.event),t.uint32(18).fork()).join(),e.source!==void 0&&t.uint32(26).string(e.source),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=qg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.event=Yh.unwrap(Yh.decode(n,n.uint32()));continue;case 3:if(e!==26)break;i.source=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Jg.fromPartial(e??{})},fromPartial(e){let t=qg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.event=e.event??void 0,t.source=e.source??void 0,t}};function Yg(){return{baseEvent:void 0,name:``,value:void 0}}var Xg={encode(e,t=new Bh){return e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join(),e.name!==``&&t.uint32(18).string(e.name),e.value!==void 0&&Yh.encode(Yh.wrap(e.value),t.uint32(26).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Yg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.name=n.string();continue;case 3:if(e!==26)break;i.value=Yh.unwrap(Yh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Xg.fromPartial(e??{})},fromPartial(e){let t=Yg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.name=e.name??``,t.value=e.value??void 0,t}};function Zg(){return{baseEvent:void 0,threadId:``,runId:``}}var Qg={encode(e,t=new Bh){return e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join(),e.threadId!==``&&t.uint32(18).string(e.threadId),e.runId!==``&&t.uint32(26).string(e.runId),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Zg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.threadId=n.string();continue;case 3:if(e!==26)break;i.runId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Qg.fromPartial(e??{})},fromPartial(e){let t=Zg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.threadId=e.threadId??``,t.runId=e.runId??``,t}};function $g(){return{baseEvent:void 0,threadId:``,runId:``,result:void 0,outcome:``,interrupts:[]}}var e_={encode(e,t=new Bh){e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join(),e.threadId!==``&&t.uint32(18).string(e.threadId),e.runId!==``&&t.uint32(26).string(e.runId),e.result!==void 0&&Yh.encode(Yh.wrap(e.result),t.uint32(34).fork()).join(),e.outcome!==``&&t.uint32(42).string(e.outcome);for(let n of e.interrupts)Tg.encode(n,t.uint32(50).fork()).join();return t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=$g();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.threadId=n.string();continue;case 3:if(e!==26)break;i.runId=n.string();continue;case 4:if(e!==34)break;i.result=Yh.unwrap(Yh.decode(n,n.uint32()));continue;case 5:if(e!==42)break;i.outcome=n.string();continue;case 6:if(e!==50)break;i.interrupts.push(Tg.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return e_.fromPartial(e??{})},fromPartial(e){let t=$g();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.threadId=e.threadId??``,t.runId=e.runId??``,t.result=e.result??void 0,t.outcome=e.outcome??``,t.interrupts=e.interrupts?.map(e=>Tg.fromPartial(e))||[],t}};function t_(){return{baseEvent:void 0,code:void 0,message:``}}var n_={encode(e,t=new Bh){return e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join(),e.code!==void 0&&t.uint32(18).string(e.code),e.message!==``&&t.uint32(26).string(e.message),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=t_();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.code=n.string();continue;case 3:if(e!==26)break;i.message=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return n_.fromPartial(e??{})},fromPartial(e){let t=t_();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.code=e.code??void 0,t.message=e.message??``,t}};function r_(){return{baseEvent:void 0,stepName:``}}var i_={encode(e,t=new Bh){return e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join(),e.stepName!==``&&t.uint32(18).string(e.stepName),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=r_();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.stepName=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return i_.fromPartial(e??{})},fromPartial(e){let t=r_();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.stepName=e.stepName??``,t}};function a_(){return{baseEvent:void 0,stepName:``}}var o_={encode(e,t=new Bh){return e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join(),e.stepName!==``&&t.uint32(18).string(e.stepName),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=a_();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.stepName=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return o_.fromPartial(e??{})},fromPartial(e){let t=a_();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.stepName=e.stepName??``,t}};function s_(){return{baseEvent:void 0,messageId:void 0,role:void 0,delta:void 0,name:void 0}}var c_={encode(e,t=new Bh){return e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join(),e.messageId!==void 0&&t.uint32(18).string(e.messageId),e.role!==void 0&&t.uint32(26).string(e.role),e.delta!==void 0&&t.uint32(34).string(e.delta),e.name!==void 0&&t.uint32(42).string(e.name),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=s_();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messageId=n.string();continue;case 3:if(e!==26)break;i.role=n.string();continue;case 4:if(e!==34)break;i.delta=n.string();continue;case 5:if(e!==42)break;i.name=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return c_.fromPartial(e??{})},fromPartial(e){let t=s_();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.messageId=e.messageId??void 0,t.role=e.role??void 0,t.delta=e.delta??void 0,t.name=e.name??void 0,t}};function l_(){return{baseEvent:void 0,toolCallId:void 0,toolCallName:void 0,parentMessageId:void 0,delta:void 0}}var u_={encode(e,t=new Bh){return e.baseEvent!==void 0&&Og.encode(e.baseEvent,t.uint32(10).fork()).join(),e.toolCallId!==void 0&&t.uint32(18).string(e.toolCallId),e.toolCallName!==void 0&&t.uint32(26).string(e.toolCallName),e.parentMessageId!==void 0&&t.uint32(34).string(e.parentMessageId),e.delta!==void 0&&t.uint32(42).string(e.delta),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=l_();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.toolCallId=n.string();continue;case 3:if(e!==26)break;i.toolCallName=n.string();continue;case 4:if(e!==34)break;i.parentMessageId=n.string();continue;case 5:if(e!==42)break;i.delta=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return u_.fromPartial(e??{})},fromPartial(e){let t=l_();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Og.fromPartial(e.baseEvent):void 0,t.toolCallId=e.toolCallId??void 0,t.toolCallName=e.toolCallName??void 0,t.parentMessageId=e.parentMessageId??void 0,t.delta=e.delta??void 0,t}};function d_(){return{textMessageStart:void 0,textMessageContent:void 0,textMessageEnd:void 0,toolCallStart:void 0,toolCallArgs:void 0,toolCallEnd:void 0,stateSnapshot:void 0,stateDelta:void 0,messagesSnapshot:void 0,raw:void 0,custom:void 0,runStarted:void 0,runFinished:void 0,runError:void 0,stepStarted:void 0,stepFinished:void 0,textMessageChunk:void 0,toolCallChunk:void 0}}var f_={encode(e,t=new Bh){return e.textMessageStart!==void 0&&Ag.encode(e.textMessageStart,t.uint32(10).fork()).join(),e.textMessageContent!==void 0&&Mg.encode(e.textMessageContent,t.uint32(18).fork()).join(),e.textMessageEnd!==void 0&&Pg.encode(e.textMessageEnd,t.uint32(26).fork()).join(),e.toolCallStart!==void 0&&Ig.encode(e.toolCallStart,t.uint32(34).fork()).join(),e.toolCallArgs!==void 0&&Rg.encode(e.toolCallArgs,t.uint32(42).fork()).join(),e.toolCallEnd!==void 0&&Bg.encode(e.toolCallEnd,t.uint32(50).fork()).join(),e.stateSnapshot!==void 0&&Hg.encode(e.stateSnapshot,t.uint32(58).fork()).join(),e.stateDelta!==void 0&&Wg.encode(e.stateDelta,t.uint32(66).fork()).join(),e.messagesSnapshot!==void 0&&Kg.encode(e.messagesSnapshot,t.uint32(74).fork()).join(),e.raw!==void 0&&Jg.encode(e.raw,t.uint32(82).fork()).join(),e.custom!==void 0&&Xg.encode(e.custom,t.uint32(90).fork()).join(),e.runStarted!==void 0&&Qg.encode(e.runStarted,t.uint32(98).fork()).join(),e.runFinished!==void 0&&e_.encode(e.runFinished,t.uint32(106).fork()).join(),e.runError!==void 0&&n_.encode(e.runError,t.uint32(114).fork()).join(),e.stepStarted!==void 0&&i_.encode(e.stepStarted,t.uint32(122).fork()).join(),e.stepFinished!==void 0&&o_.encode(e.stepFinished,t.uint32(130).fork()).join(),e.textMessageChunk!==void 0&&c_.encode(e.textMessageChunk,t.uint32(138).fork()).join(),e.toolCallChunk!==void 0&&u_.encode(e.toolCallChunk,t.uint32(146).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=d_();for(;n.pos>>3){case 1:if(e!==10)break;i.textMessageStart=Ag.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.textMessageContent=Mg.decode(n,n.uint32());continue;case 3:if(e!==26)break;i.textMessageEnd=Pg.decode(n,n.uint32());continue;case 4:if(e!==34)break;i.toolCallStart=Ig.decode(n,n.uint32());continue;case 5:if(e!==42)break;i.toolCallArgs=Rg.decode(n,n.uint32());continue;case 6:if(e!==50)break;i.toolCallEnd=Bg.decode(n,n.uint32());continue;case 7:if(e!==58)break;i.stateSnapshot=Hg.decode(n,n.uint32());continue;case 8:if(e!==66)break;i.stateDelta=Wg.decode(n,n.uint32());continue;case 9:if(e!==74)break;i.messagesSnapshot=Kg.decode(n,n.uint32());continue;case 10:if(e!==82)break;i.raw=Jg.decode(n,n.uint32());continue;case 11:if(e!==90)break;i.custom=Xg.decode(n,n.uint32());continue;case 12:if(e!==98)break;i.runStarted=Qg.decode(n,n.uint32());continue;case 13:if(e!==106)break;i.runFinished=e_.decode(n,n.uint32());continue;case 14:if(e!==114)break;i.runError=n_.decode(n,n.uint32());continue;case 15:if(e!==122)break;i.stepStarted=i_.decode(n,n.uint32());continue;case 16:if(e!==130)break;i.stepFinished=o_.decode(n,n.uint32());continue;case 17:if(e!==138)break;i.textMessageChunk=c_.decode(n,n.uint32());continue;case 18:if(e!==146)break;i.toolCallChunk=u_.decode(n,n.uint32());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return f_.fromPartial(e??{})},fromPartial(e){let t=d_();return t.textMessageStart=e.textMessageStart!==void 0&&e.textMessageStart!==null?Ag.fromPartial(e.textMessageStart):void 0,t.textMessageContent=e.textMessageContent!==void 0&&e.textMessageContent!==null?Mg.fromPartial(e.textMessageContent):void 0,t.textMessageEnd=e.textMessageEnd!==void 0&&e.textMessageEnd!==null?Pg.fromPartial(e.textMessageEnd):void 0,t.toolCallStart=e.toolCallStart!==void 0&&e.toolCallStart!==null?Ig.fromPartial(e.toolCallStart):void 0,t.toolCallArgs=e.toolCallArgs!==void 0&&e.toolCallArgs!==null?Rg.fromPartial(e.toolCallArgs):void 0,t.toolCallEnd=e.toolCallEnd!==void 0&&e.toolCallEnd!==null?Bg.fromPartial(e.toolCallEnd):void 0,t.stateSnapshot=e.stateSnapshot!==void 0&&e.stateSnapshot!==null?Hg.fromPartial(e.stateSnapshot):void 0,t.stateDelta=e.stateDelta!==void 0&&e.stateDelta!==null?Wg.fromPartial(e.stateDelta):void 0,t.messagesSnapshot=e.messagesSnapshot!==void 0&&e.messagesSnapshot!==null?Kg.fromPartial(e.messagesSnapshot):void 0,t.raw=e.raw!==void 0&&e.raw!==null?Jg.fromPartial(e.raw):void 0,t.custom=e.custom!==void 0&&e.custom!==null?Xg.fromPartial(e.custom):void 0,t.runStarted=e.runStarted!==void 0&&e.runStarted!==null?Qg.fromPartial(e.runStarted):void 0,t.runFinished=e.runFinished!==void 0&&e.runFinished!==null?e_.fromPartial(e.runFinished):void 0,t.runError=e.runError!==void 0&&e.runError!==null?n_.fromPartial(e.runError):void 0,t.stepStarted=e.stepStarted!==void 0&&e.stepStarted!==null?i_.fromPartial(e.stepStarted):void 0,t.stepFinished=e.stepFinished!==void 0&&e.stepFinished!==null?o_.fromPartial(e.stepFinished):void 0,t.textMessageChunk=e.textMessageChunk!==void 0&&e.textMessageChunk!==null?c_.fromPartial(e.textMessageChunk):void 0,t.toolCallChunk=e.toolCallChunk!==void 0&&e.toolCallChunk!==null?u_.fromPartial(e.toolCallChunk):void 0,t}};function p_(e){let t=globalThis.Number(e.toString());if(t>globalThis.Number.MAX_SAFE_INTEGER)throw new globalThis.Error(`Value is larger than Number.MAX_SAFE_INTEGER`);if(t{if(!(!e||typeof e!=`object`)){if(e.data)return{type:`data`,value:e.data.value,mimeType:e.data.mimeType};if(e.url)return{type:`url`,value:e.url.value,mimeType:e.url.mimeType}}},h_=e=>{if(!(!e||typeof e!=`object`)){if(e.text)return{type:`text`,text:e.text.text};if(e.image)return{type:`image`,source:m_(e.image.source),metadata:e.image.metadata};if(e.audio)return{type:`audio`,source:m_(e.audio.source),metadata:e.audio.metadata};if(e.video)return{type:`video`,source:m_(e.video.source),metadata:e.video.metadata};if(e.document)return{type:`document`,source:m_(e.document.source),metadata:e.document.metadata}}};function g_(e){let t=f_.decode(e),n=Object.values(t).find(e=>e!==void 0);if(!n)throw Error(`Invalid event`);if(n.type=Eg[n.baseEvent.type],n.timestamp=n.baseEvent.timestamp,n.rawEvent=n.baseEvent.rawEvent,delete n.baseEvent,n.type===P.MESSAGES_SNAPSHOT)for(let e of n.messages){let t=e;if(t.role===`user`&&Array.isArray(t.contentParts)){let e=t.contentParts.map(e=>h_(e)).filter(e=>e!==void 0);e.length>0&&(t.content=e)}Array.isArray(t.contentParts)&&t.contentParts.length===0&&(t.contentParts=void 0),t.toolCalls?.length===0&&(t.toolCalls=void 0)}if(n.type===P.RUN_FINISHED){let e=n,t=typeof e.outcome==`string`&&e.outcome!==``?e.outcome:void 0,r=Array.isArray(e.interrupts)?e.interrupts:[];delete e.interrupts,t===`interrupt`?e.outcome={type:`interrupt`,interrupts:r}:t===`success`?e.outcome={type:`success`}:delete e.outcome}if(n.type===P.STATE_DELTA)for(let e of n.delta)e.op=lee[e.op].toLowerCase(),Object.keys(e).forEach(t=>{e[t]===void 0&&delete e[t]});return Object.keys(n).forEach(e=>{n[e]===void 0&&delete n[e]}),Kf.parse(n)}var __;(function(e){e.assertEqual=e=>{};function t(e){}e.assertIs=t;function n(e){throw Error()}e.assertNever=n,e.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},e.getValidEnumValues=t=>{let n=e.objectKeys(t).filter(e=>typeof t[t[e]]!=`number`),r={};for(let e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys=typeof Object.keys==`function`?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(let n of e)if(t(n))return n},e.isInteger=typeof Number.isInteger==`function`?e=>Number.isInteger(e):e=>typeof e==`number`&&Number.isFinite(e)&&Math.floor(e)===e;function r(e,t=` | `){return e.map(e=>typeof e==`string`?`'${e}'`:e).join(t)}e.joinValues=r,e.jsonStringifyReplacer=(e,t)=>typeof t==`bigint`?t.toString():t})(__||={});var v_;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})(v_||={});var y_=__.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),b_=e=>{switch(typeof e){case`undefined`:return y_.undefined;case`string`:return y_.string;case`number`:return Number.isNaN(e)?y_.nan:y_.number;case`boolean`:return y_.boolean;case`function`:return y_.function;case`bigint`:return y_.bigint;case`symbol`:return y_.symbol;case`object`:return Array.isArray(e)?y_.array:e===null?y_.null:e.then&&typeof e.then==`function`&&e.catch&&typeof e.catch==`function`?y_.promise:typeof Map<`u`&&e instanceof Map?y_.map:typeof Set<`u`&&e instanceof Set?y_.set:typeof Date<`u`&&e instanceof Date?y_.date:y_.object;default:return y_.unknown}},I=__.arrayToEnum([`invalid_type`,`invalid_literal`,`custom`,`invalid_union`,`invalid_union_discriminator`,`invalid_enum_value`,`unrecognized_keys`,`invalid_arguments`,`invalid_return_type`,`invalid_date`,`invalid_string`,`too_small`,`too_big`,`invalid_intersection_types`,`not_multiple_of`,`not_finite`]),x_=class e extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=`ZodError`,this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`)i.unionErrors.map(r);else if(i.code===`invalid_return_type`)r(i.returnTypeError);else if(i.code===`invalid_arguments`)r(i.argumentsError);else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;re.message){let t={},n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};x_.create=e=>new x_(e);var S_=(e,t)=>{let n;switch(e.code){case I.invalid_type:n=e.received===y_.undefined?`Required`:`Expected ${e.expected}, received ${e.received}`;break;case I.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,__.jsonStringifyReplacer)}`;break;case I.unrecognized_keys:n=`Unrecognized key(s) in object: ${__.joinValues(e.keys,`, `)}`;break;case I.invalid_union:n=`Invalid input`;break;case I.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${__.joinValues(e.options)}`;break;case I.invalid_enum_value:n=`Invalid enum value. Expected ${__.joinValues(e.options)}, received '${e.received}'`;break;case I.invalid_arguments:n=`Invalid function arguments`;break;case I.invalid_return_type:n=`Invalid function return type`;break;case I.invalid_date:n=`Invalid date`;break;case I.invalid_string:typeof e.validation==`object`?`includes`in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position==`number`&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):`startsWith`in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:`endsWith`in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:__.assertNever(e.validation):n=e.validation===`regex`?`Invalid`:`Invalid ${e.validation}`;break;case I.too_small:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at least`:`more than`} ${e.minimum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at least`:`over`} ${e.minimum} character(s)`:e.type===`number`||e.type===`bigint`?`Number must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${e.minimum}`:e.type===`date`?`Date must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(e.minimum))}`:`Invalid input`;break;case I.too_big:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at most`:`less than`} ${e.maximum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at most`:`under`} ${e.maximum} character(s)`:e.type===`number`?`Number must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`bigint`?`BigInt must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`date`?`Date must be ${e.exact?`exactly`:e.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(e.maximum))}`:`Invalid input`;break;case I.custom:n=`Invalid input`;break;case I.invalid_intersection_types:n=`Intersection results could not be merged`;break;case I.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case I.not_finite:n=`Number must be finite`;break;default:n=t.defaultError,__.assertNever(e)}return{message:n}},uee=S_;function C_(){return uee}var w_=e=>{let{data:t,path:n,errorMaps:r,issueData:i}=e,a=[...n,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s=``,c=r.filter(e=>!!e).slice().reverse();for(let e of c)s=e(o,{data:t,defaultError:s}).message;return{...i,path:a,message:s}};function L(e,t){let n=C_(),r=w_({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===S_?void 0:S_].filter(e=>!!e)});e.common.issues.push(r)}var T_=class e{constructor(){this.value=`valid`}dirty(){this.value===`valid`&&(this.value=`dirty`)}abort(){this.value!==`aborted`&&(this.value=`aborted`)}static mergeArray(e,t){let n=[];for(let r of t){if(r.status===`aborted`)return E_;r.status===`dirty`&&e.dirty(),n.push(r.value)}return{status:e.value,value:n}}static async mergeObjectAsync(t,n){let r=[];for(let e of n){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return e.mergeObjectSync(t,r)}static mergeObjectSync(e,t){let n={};for(let r of t){let{key:t,value:i}=r;if(t.status===`aborted`||i.status===`aborted`)return E_;t.status===`dirty`&&e.dirty(),i.status===`dirty`&&e.dirty(),t.value!==`__proto__`&&(i.value!==void 0||r.alwaysSet)&&(n[t.value]=i.value)}return{status:e.value,value:n}}},E_=Object.freeze({status:`aborted`}),D_=e=>({status:`dirty`,value:e}),O_=e=>({status:`valid`,value:e}),k_=e=>e.status===`aborted`,A_=e=>e.status===`dirty`,j_=e=>e.status===`valid`,M_=e=>typeof Promise<`u`&&e instanceof Promise,N_;(function(e){e.errToObj=e=>typeof e==`string`?{message:e}:e||{},e.toString=e=>typeof e==`string`?e:e?.message})(N_||={});var P_=class{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},F_=(e,t)=>{if(j_(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(`Validation failed but no issues detected.`);return{success:!1,get error(){if(this._error)return this._error;let t=new x_(e.common.issues);return this._error=t,this._error}}};function I_(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return t.code===`invalid_enum_value`?{message:a??i.defaultError}:i.data===void 0?{message:a??r??i.defaultError}:t.code===`invalid_type`?{message:a??n??i.defaultError}:{message:i.defaultError}},description:i}}var L_=class{get description(){return this._def.description}_getType(e){return b_(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:b_(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new T_,ctx:{common:e.parent.common,data:e.data,parsedType:b_(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(M_(t))throw Error(`Synchronous parse encountered promise.`);return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:b_(e)};return F_(n,this._parseSync({data:e,path:n.path,parent:n}))}"~validate"(e){let t={common:{issues:[],async:!!this[`~standard`].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:b_(e)};if(!this[`~standard`].async)try{let n=this._parseSync({data:e,path:[],parent:t});return j_(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(`encountered`)&&(this[`~standard`].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>j_(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:b_(e)},r=this._parse({data:e,path:n.path,parent:n});return F_(n,await(M_(r)?r:Promise.resolve(r)))}refine(e,t){let n=e=>typeof t==`string`||t===void 0?{message:t}:typeof t==`function`?t(e):t;return this._refinement((t,r)=>{let i=e(t),a=()=>r.addIssue({code:I.custom,...n(t)});return typeof Promise<`u`&&i instanceof Promise?i.then(e=>e?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(e,t){return this._refinement((n,r)=>e(n)?!0:(r.addIssue(typeof t==`function`?t(n,r):t),!1))}_refinement(e){return new Bv({schema:this,typeName:Yv.ZodEffects,effect:{type:`refinement`,refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[`~standard`]={version:1,vendor:`zod`,validate:e=>this[`~validate`](e)}}optional(){return Vv.create(this,this._def)}nullable(){return Hv.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return xv.create(this)}promise(){return zv.create(this,this._def)}or(e){return wv.create([this,e],this._def)}and(e){return Ov.create(this,e,this._def)}transform(e){return new Bv({...I_(this._def),schema:this,typeName:Yv.ZodEffects,effect:{type:`transform`,transform:e}})}default(e){let t=typeof e==`function`?e:()=>e;return new Uv({...I_(this._def),innerType:this,defaultValue:t,typeName:Yv.ZodDefault})}brand(){return new Kv({typeName:Yv.ZodBranded,type:this,...I_(this._def)})}catch(e){let t=typeof e==`function`?e:()=>e;return new Wv({...I_(this._def),innerType:this,catchValue:t,typeName:Yv.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return qv.create(this,e)}readonly(){return Jv.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},R_=/^c[^\s-]{8,}$/i,z_=/^[0-9a-z]+$/,B_=/^[0-9A-HJKMNP-TV-Z]{26}$/i,V_=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,H_=/^[a-z0-9_-]{21}$/i,U_=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,W_=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,G_=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,K_=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,q_,J_=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Y_=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,X_=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Z_=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Q_=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,$_=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,ev=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`,tv=RegExp(`^${ev}$`);function nv(e){let t=`[0-5]\\d`;e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision??(t=`${t}(\\.\\d+)?`);let n=e.precision?`+`:`?`;return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function rv(e){return RegExp(`^${nv(e)}$`)}function iv(e){let t=`${ev}T${nv(e)}`,n=[];return n.push(e.local?`Z?`:`Z`),e.offset&&n.push(`([+-]\\d{2}:?\\d{2})`),t=`${t}(${n.join(`|`)})`,RegExp(`^${t}$`)}function av(e,t){return!!((t===`v4`||!t)&&J_.test(e)||(t===`v6`||!t)&&X_.test(e))}function ov(e,t){if(!U_.test(e))return!1;try{let[n]=e.split(`.`);if(!n)return!1;let r=n.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(n.length+(4-n.length%4)%4,`=`),i=JSON.parse(atob(r));return!(typeof i!=`object`||!i||`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&i.alg!==t)}catch{return!1}}function sv(e,t){return!!((t===`v4`||!t)&&Y_.test(e)||(t===`v6`||!t)&&Z_.test(e))}var cv=class e extends L_{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==y_.string){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:y_.string,received:t.parsedType}),E_}let t=new T_,n;for(let r of this._def.checks)if(r.kind===`min`)e.data.lengthr.value&&(n=this._getOrReturnCtx(e,n),L(n,{code:I.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),t.dirty());else if(r.kind===`length`){let i=e.data.length>r.value,a=e.data.lengthe.test(t),{validation:t,code:I.invalid_string,...N_.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(e){return this._addCheck({kind:`email`,...N_.errToObj(e)})}url(e){return this._addCheck({kind:`url`,...N_.errToObj(e)})}emoji(e){return this._addCheck({kind:`emoji`,...N_.errToObj(e)})}uuid(e){return this._addCheck({kind:`uuid`,...N_.errToObj(e)})}nanoid(e){return this._addCheck({kind:`nanoid`,...N_.errToObj(e)})}cuid(e){return this._addCheck({kind:`cuid`,...N_.errToObj(e)})}cuid2(e){return this._addCheck({kind:`cuid2`,...N_.errToObj(e)})}ulid(e){return this._addCheck({kind:`ulid`,...N_.errToObj(e)})}base64(e){return this._addCheck({kind:`base64`,...N_.errToObj(e)})}base64url(e){return this._addCheck({kind:`base64url`,...N_.errToObj(e)})}jwt(e){return this._addCheck({kind:`jwt`,...N_.errToObj(e)})}ip(e){return this._addCheck({kind:`ip`,...N_.errToObj(e)})}cidr(e){return this._addCheck({kind:`cidr`,...N_.errToObj(e)})}datetime(e){return typeof e==`string`?this._addCheck({kind:`datetime`,precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:`datetime`,precision:e?.precision===void 0?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...N_.errToObj(e?.message)})}date(e){return this._addCheck({kind:`date`,message:e})}time(e){return typeof e==`string`?this._addCheck({kind:`time`,precision:null,message:e}):this._addCheck({kind:`time`,precision:e?.precision===void 0?null:e?.precision,...N_.errToObj(e?.message)})}duration(e){return this._addCheck({kind:`duration`,...N_.errToObj(e)})}regex(e,t){return this._addCheck({kind:`regex`,regex:e,...N_.errToObj(t)})}includes(e,t){return this._addCheck({kind:`includes`,value:e,position:t?.position,...N_.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:`startsWith`,value:e,...N_.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:`endsWith`,value:e,...N_.errToObj(t)})}min(e,t){return this._addCheck({kind:`min`,value:e,...N_.errToObj(t)})}max(e,t){return this._addCheck({kind:`max`,value:e,...N_.errToObj(t)})}length(e,t){return this._addCheck({kind:`length`,value:e,...N_.errToObj(t)})}nonempty(e){return this.min(1,N_.errToObj(e))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:`trim`}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toLowerCase`}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toUpperCase`}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind===`datetime`)}get isDate(){return!!this._def.checks.find(e=>e.kind===`date`)}get isTime(){return!!this._def.checks.find(e=>e.kind===`time`)}get isDuration(){return!!this._def.checks.find(e=>e.kind===`duration`)}get isEmail(){return!!this._def.checks.find(e=>e.kind===`email`)}get isURL(){return!!this._def.checks.find(e=>e.kind===`url`)}get isEmoji(){return!!this._def.checks.find(e=>e.kind===`emoji`)}get isUUID(){return!!this._def.checks.find(e=>e.kind===`uuid`)}get isNANOID(){return!!this._def.checks.find(e=>e.kind===`nanoid`)}get isCUID(){return!!this._def.checks.find(e=>e.kind===`cuid`)}get isCUID2(){return!!this._def.checks.find(e=>e.kind===`cuid2`)}get isULID(){return!!this._def.checks.find(e=>e.kind===`ulid`)}get isIP(){return!!this._def.checks.find(e=>e.kind===`ip`)}get isCIDR(){return!!this._def.checks.find(e=>e.kind===`cidr`)}get isBase64(){return!!this._def.checks.find(e=>e.kind===`base64`)}get isBase64url(){return!!this._def.checks.find(e=>e.kind===`base64url`)}get minLength(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew cv({checks:[],typeName:Yv.ZodString,coerce:e?.coerce??!1,...I_(e)});function lv(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=(t.toString().split(`.`)[1]||``).length,i=n>r?n:r;return Number.parseInt(e.toFixed(i).replace(`.`,``))%Number.parseInt(t.toFixed(i).replace(`.`,``))/10**i}var uv=class e extends L_{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==y_.number){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:y_.number,received:t.parsedType}),E_}let t,n=new T_;for(let r of this._def.checks)r.kind===`int`?__.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),L(t,{code:I.invalid_type,expected:`integer`,received:`float`,message:r.message}),n.dirty()):r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),L(t,{code:I.too_big,maximum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):r.kind===`multipleOf`?lv(e.data,r.value)!==0&&(t=this._getOrReturnCtx(e,t),L(t,{code:I.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):r.kind===`finite`?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),L(t,{code:I.not_finite,message:r.message}),n.dirty()):__.assertNever(r);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit(`min`,e,!0,N_.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,N_.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,N_.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,N_.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:N_.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(e){return this._addCheck({kind:`int`,message:N_.toString(e)})}positive(e){return this._addCheck({kind:`min`,value:0,inclusive:!1,message:N_.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:0,inclusive:!1,message:N_.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:0,inclusive:!0,message:N_.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:0,inclusive:!0,message:N_.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:N_.toString(t)})}finite(e){return this._addCheck({kind:`finite`,message:N_.toString(e)})}safe(e){return this._addCheck({kind:`min`,inclusive:!0,value:-(2**53-1),message:N_.toString(e)})._addCheck({kind:`max`,inclusive:!0,value:2**53-1,message:N_.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuee.kind===`int`||e.kind===`multipleOf`&&__.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(n.kind===`finite`||n.kind===`int`||n.kind===`multipleOf`)return!0;else n.kind===`min`?(t===null||n.value>t)&&(t=n.value):n.kind===`max`&&(e===null||n.valuenew uv({checks:[],typeName:Yv.ZodNumber,coerce:e?.coerce||!1,...I_(e)});var dv=class e extends L_{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==y_.bigint)return this._getInvalidInput(e);let t,n=new T_;for(let r of this._def.checks)r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),L(t,{code:I.too_big,type:`bigint`,maximum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):r.kind===`multipleOf`?e.data%r.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),L(t,{code:I.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):__.assertNever(r);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:y_.bigint,received:t.parsedType}),E_}gte(e,t){return this.setLimit(`min`,e,!0,N_.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,N_.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,N_.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,N_.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:N_.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!1,message:N_.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!1,message:N_.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!0,message:N_.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!0,message:N_.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:N_.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew dv({checks:[],typeName:Yv.ZodBigInt,coerce:e?.coerce??!1,...I_(e)});var fv=class extends L_{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==y_.boolean){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:y_.boolean,received:t.parsedType}),E_}return O_(e.data)}};fv.create=e=>new fv({typeName:Yv.ZodBoolean,coerce:e?.coerce||!1,...I_(e)});var pv=class e extends L_{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==y_.date){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:y_.date,received:t.parsedType}),E_}if(Number.isNaN(e.data.getTime()))return L(this._getOrReturnCtx(e),{code:I.invalid_date}),E_;let t=new T_,n;for(let r of this._def.checks)r.kind===`min`?e.data.getTime()r.value&&(n=this._getOrReturnCtx(e,n),L(n,{code:I.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:`date`}),t.dirty()):__.assertNever(r);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(e,t){return this._addCheck({kind:`min`,value:e.getTime(),message:N_.toString(t)})}max(e,t){return this._addCheck({kind:`max`,value:e.getTime(),message:N_.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e==null?null:new Date(e)}get maxDate(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew pv({checks:[],coerce:e?.coerce||!1,typeName:Yv.ZodDate,...I_(e)});var mv=class extends L_{_parse(e){if(this._getType(e)!==y_.symbol){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:y_.symbol,received:t.parsedType}),E_}return O_(e.data)}};mv.create=e=>new mv({typeName:Yv.ZodSymbol,...I_(e)});var hv=class extends L_{_parse(e){if(this._getType(e)!==y_.undefined){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:y_.undefined,received:t.parsedType}),E_}return O_(e.data)}};hv.create=e=>new hv({typeName:Yv.ZodUndefined,...I_(e)});var gv=class extends L_{_parse(e){if(this._getType(e)!==y_.null){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:y_.null,received:t.parsedType}),E_}return O_(e.data)}};gv.create=e=>new gv({typeName:Yv.ZodNull,...I_(e)});var _v=class extends L_{constructor(){super(...arguments),this._any=!0}_parse(e){return O_(e.data)}};_v.create=e=>new _v({typeName:Yv.ZodAny,...I_(e)});var vv=class extends L_{constructor(){super(...arguments),this._unknown=!0}_parse(e){return O_(e.data)}};vv.create=e=>new vv({typeName:Yv.ZodUnknown,...I_(e)});var yv=class extends L_{_parse(e){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:y_.never,received:t.parsedType}),E_}};yv.create=e=>new yv({typeName:Yv.ZodNever,...I_(e)});var bv=class extends L_{_parse(e){if(this._getType(e)!==y_.undefined){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:y_.void,received:t.parsedType}),E_}return O_(e.data)}};bv.create=e=>new bv({typeName:Yv.ZodVoid,...I_(e)});var xv=class e extends L_{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==y_.array)return L(t,{code:I.invalid_type,expected:y_.array,received:t.parsedType}),E_;if(r.exactLength!==null){let e=t.data.length>r.exactLength.value,i=t.data.lengthr.maxLength.value&&(L(t,{code:I.too_big,maximum:r.maxLength.value,type:`array`,inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>r.type._parseAsync(new P_(t,e,t.path,n)))).then(e=>T_.mergeArray(n,e));let i=[...t.data].map((e,n)=>r.type._parseSync(new P_(t,e,t.path,n)));return T_.mergeArray(n,i)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:N_.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:N_.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:N_.toString(n)}})}nonempty(e){return this.min(1,e)}};xv.create=(e,t)=>new xv({type:e,minLength:null,maxLength:null,exactLength:null,typeName:Yv.ZodArray,...I_(t)});function Sv(e){if(e instanceof Cv){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=Vv.create(Sv(r))}return new Cv({...e._def,shape:()=>t})}else if(e instanceof xv)return new xv({...e._def,type:Sv(e.element)});else if(e instanceof Vv)return Vv.create(Sv(e.unwrap()));else if(e instanceof Hv)return Hv.create(Sv(e.unwrap()));else if(e instanceof kv)return kv.create(e.items.map(e=>Sv(e)));else return e}var Cv=class e extends L_{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=__.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==y_.object){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:y_.object,received:t.parsedType}),E_}let{status:t,ctx:n}=this._processInputParams(e),{shape:r,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof yv&&this._def.unknownKeys===`strip`))for(let e in n.data)i.includes(e)||a.push(e);let o=[];for(let e of i){let t=r[e],i=n.data[e];o.push({key:{status:`valid`,value:e},value:t._parse(new P_(n,i,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof yv){let e=this._def.unknownKeys;if(e===`passthrough`)for(let e of a)o.push({key:{status:`valid`,value:e},value:{status:`valid`,value:n.data[e]}});else if(e===`strict`)a.length>0&&(L(n,{code:I.unrecognized_keys,keys:a}),t.dirty());else if(e!==`strip`)throw Error(`Internal ZodObject error: invalid unknownKeys value.`)}else{let e=this._def.catchall;for(let t of a){let r=n.data[t];o.push({key:{status:`valid`,value:t},value:e._parse(new P_(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of o){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>T_.mergeObjectSync(t,e)):T_.mergeObjectSync(t,o)}get shape(){return this._def.shape()}strict(t){return N_.errToObj,new e({...this._def,unknownKeys:`strict`,...t===void 0?{}:{errorMap:(e,n)=>{let r=this._def.errorMap?.(e,n).message??n.defaultError;return e.code===`unrecognized_keys`?{message:N_.errToObj(t).message??r}:{message:r}}}})}strip(){return new e({...this._def,unknownKeys:`strip`})}passthrough(){return new e({...this._def,unknownKeys:`passthrough`})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:Yv.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let n={};for(let e of __.objectKeys(t))t[e]&&this.shape[e]&&(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}omit(t){let n={};for(let e of __.objectKeys(this.shape))t[e]||(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}deepPartial(){return Sv(this)}partial(t){let n={};for(let e of __.objectKeys(this.shape)){let r=this.shape[e];t&&!t[e]?n[e]=r:n[e]=r.optional()}return new e({...this._def,shape:()=>n})}required(t){let n={};for(let e of __.objectKeys(this.shape))if(t&&!t[e])n[e]=this.shape[e];else{let t=this.shape[e];for(;t instanceof Vv;)t=t._def.innerType;n[e]=t}return new e({...this._def,shape:()=>n})}keyof(){return Iv(__.objectKeys(this.shape))}};Cv.create=(e,t)=>new Cv({shape:()=>e,unknownKeys:`strip`,catchall:yv.create(),typeName:Yv.ZodObject,...I_(t)}),Cv.strictCreate=(e,t)=>new Cv({shape:()=>e,unknownKeys:`strict`,catchall:yv.create(),typeName:Yv.ZodObject,...I_(t)}),Cv.lazycreate=(e,t)=>new Cv({shape:e,unknownKeys:`strip`,catchall:yv.create(),typeName:Yv.ZodObject,...I_(t)});var wv=class extends L_{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;function r(e){for(let t of e)if(t.result.status===`valid`)return t.result;for(let n of e)if(n.result.status===`dirty`)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new x_(e.ctx.common.issues));return L(t,{code:I.invalid_union,unionErrors:n}),E_}if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(r);{let e,r=[];for(let i of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:n});if(a.status===`valid`)return a;a.status===`dirty`&&!e&&(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=r.map(e=>new x_(e));return L(t,{code:I.invalid_union,unionErrors:i}),E_}}get options(){return this._def.options}};wv.create=(e,t)=>new wv({options:e,typeName:Yv.ZodUnion,...I_(t)});var Tv=e=>e instanceof Pv?Tv(e.schema):e instanceof Bv?Tv(e.innerType()):e instanceof Fv?[e.value]:e instanceof Lv?e.options:e instanceof Rv?__.objectValues(e.enum):e instanceof Uv?Tv(e._def.innerType):e instanceof hv?[void 0]:e instanceof gv?[null]:e instanceof Vv?[void 0,...Tv(e.unwrap())]:e instanceof Hv?[null,...Tv(e.unwrap())]:e instanceof Kv||e instanceof Jv?Tv(e.unwrap()):e instanceof Wv?Tv(e._def.innerType):[],Ev=class e extends L_{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==y_.object)return L(t,{code:I.invalid_type,expected:y_.object,received:t.parsedType}),E_;let n=this.discriminator,r=t.data[n],i=this.optionsMap.get(r);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(L(t,{code:I.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),E_)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){let i=new Map;for(let e of n){let n=Tv(e.shape[t]);if(!n.length)throw Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let r of n){if(i.has(r))throw Error(`Discriminator property ${String(t)} has duplicate value ${String(r)}`);i.set(r,e)}}return new e({typeName:Yv.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...I_(r)})}};function Dv(e,t){let n=b_(e),r=b_(t);if(e===t)return{valid:!0,data:e};if(n===y_.object&&r===y_.object){let n=__.objectKeys(t),r=__.objectKeys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=Dv(e[n],t[n]);if(!r.valid)return{valid:!1};i[n]=r.data}return{valid:!0,data:i}}else if(n===y_.array&&r===y_.array){if(e.length!==t.length)return{valid:!1};let n=[];for(let r=0;r{if(k_(e)||k_(r))return E_;let i=Dv(e.value,r.value);return i.valid?((A_(e)||A_(r))&&t.dirty(),{status:t.value,value:i.data}):(L(n,{code:I.invalid_intersection_types}),E_)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([e,t])=>r(e,t)):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};Ov.create=(e,t,n)=>new Ov({left:e,right:t,typeName:Yv.ZodIntersection,...I_(n)});var kv=class e extends L_{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==y_.array)return L(n,{code:I.invalid_type,expected:y_.array,received:n.parsedType}),E_;if(n.data.lengththis._def.items.length&&(L(n,{code:I.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),t.dirty());let r=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new P_(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(r).then(e=>T_.mergeArray(t,e)):T_.mergeArray(t,r)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};kv.create=(e,t)=>{if(!Array.isArray(e))throw Error(`You must pass an array of schemas to z.tuple([ ... ])`);return new kv({items:e,typeName:Yv.ZodTuple,rest:null,...I_(t)})};var Av=class e extends L_{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==y_.object)return L(n,{code:I.invalid_type,expected:y_.object,received:n.parsedType}),E_;let r=[],i=this._def.keyType,a=this._def.valueType;for(let e in n.data)r.push({key:i._parse(new P_(n,e,n.path,e)),value:a._parse(new P_(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?T_.mergeObjectAsync(t,r):T_.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof L_?new e({keyType:t,valueType:n,typeName:Yv.ZodRecord,...I_(r)}):new e({keyType:cv.create(),valueType:t,typeName:Yv.ZodRecord,...I_(n)})}},jv=class extends L_{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==y_.map)return L(n,{code:I.invalid_type,expected:y_.map,received:n.parsedType}),E_;let r=this._def.keyType,i=this._def.valueType,a=[...n.data.entries()].map(([e,t],a)=>({key:r._parse(new P_(n,e,n.path,[a,`key`])),value:i._parse(new P_(n,t,n.path,[a,`value`]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of a){let r=await n.key,i=await n.value;if(r.status===`aborted`||i.status===`aborted`)return E_;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}})}else{let e=new Map;for(let n of a){let r=n.key,i=n.value;if(r.status===`aborted`||i.status===`aborted`)return E_;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}}};jv.create=(e,t,n)=>new jv({valueType:t,keyType:e,typeName:Yv.ZodMap,...I_(n)});var Mv=class e extends L_{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==y_.set)return L(n,{code:I.invalid_type,expected:y_.set,received:n.parsedType}),E_;let r=this._def;r.minSize!==null&&n.data.sizer.maxSize.value&&(L(n,{code:I.too_big,maximum:r.maxSize.value,type:`set`,inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let i=this._def.valueType;function a(e){let n=new Set;for(let r of e){if(r.status===`aborted`)return E_;r.status===`dirty`&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let o=[...n.data.values()].map((e,t)=>i._parse(new P_(n,e,n.path,t)));return n.common.async?Promise.all(o).then(e=>a(e)):a(o)}min(t,n){return new e({...this._def,minSize:{value:t,message:N_.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:N_.toString(n)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};Mv.create=(e,t)=>new Mv({valueType:e,minSize:null,maxSize:null,typeName:Yv.ZodSet,...I_(t)});var Nv=class e extends L_{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==y_.function)return L(t,{code:I.invalid_type,expected:y_.function,received:t.parsedType}),E_;function n(e,n){return w_({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,C_(),S_].filter(e=>!!e),issueData:{code:I.invalid_arguments,argumentsError:n}})}function r(e,n){return w_({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,C_(),S_].filter(e=>!!e),issueData:{code:I.invalid_return_type,returnTypeError:n}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof zv){let e=this;return O_(async function(...t){let o=new x_([]),s=await e._def.args.parseAsync(t,i).catch(e=>{throw o.addIssue(n(t,e)),o}),c=await Reflect.apply(a,this,s);return await e._def.returns._def.type.parseAsync(c,i).catch(e=>{throw o.addIssue(r(c,e)),o})})}else{let e=this;return O_(function(...t){let o=e._def.args.safeParse(t,i);if(!o.success)throw new x_([n(t,o.error)]);let s=Reflect.apply(a,this,o.data),c=e._def.returns.safeParse(s,i);if(!c.success)throw new x_([r(s,c.error)]);return c.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:kv.create(t).rest(vv.create())})}returns(t){return new e({...this._def,returns:t})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(t,n,r){return new e({args:t||kv.create([]).rest(vv.create()),returns:n||vv.create(),typeName:Yv.ZodFunction,...I_(r)})}},Pv=class extends L_{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};Pv.create=(e,t)=>new Pv({getter:e,typeName:Yv.ZodLazy,...I_(t)});var Fv=class extends L_{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return L(t,{received:t.data,code:I.invalid_literal,expected:this._def.value}),E_}return{status:`valid`,value:e.data}}get value(){return this._def.value}};Fv.create=(e,t)=>new Fv({value:e,typeName:Yv.ZodLiteral,...I_(t)});function Iv(e,t){return new Lv({values:e,typeName:Yv.ZodEnum,...I_(t)})}var Lv=class e extends L_{_parse(e){if(typeof e.data!=`string`){let t=this._getOrReturnCtx(e),n=this._def.values;return L(t,{expected:__.joinValues(n),received:t.parsedType,code:I.invalid_type}),E_}if(this._cache||=new Set(this._def.values),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return L(t,{received:t.data,code:I.invalid_enum_value,options:n}),E_}return O_(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(t,n=this._def){return e.create(t,{...this._def,...n})}exclude(t,n=this._def){return e.create(this.options.filter(e=>!t.includes(e)),{...this._def,...n})}};Lv.create=Iv;var Rv=class extends L_{_parse(e){let t=__.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==y_.string&&n.parsedType!==y_.number){let e=__.objectValues(t);return L(n,{expected:__.joinValues(e),received:n.parsedType,code:I.invalid_type}),E_}if(this._cache||=new Set(__.getValidEnumValues(this._def.values)),!this._cache.has(e.data)){let e=__.objectValues(t);return L(n,{received:n.data,code:I.invalid_enum_value,options:e}),E_}return O_(e.data)}get enum(){return this._def.values}};Rv.create=(e,t)=>new Rv({values:e,typeName:Yv.ZodNativeEnum,...I_(t)});var zv=class extends L_{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==y_.promise&&t.common.async===!1?(L(t,{code:I.invalid_type,expected:y_.promise,received:t.parsedType}),E_):O_((t.parsedType===y_.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}};zv.create=(e,t)=>new zv({type:e,typeName:Yv.ZodPromise,...I_(t)});var Bv=class extends L_{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Yv.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=this._def.effect||null,i={addIssue:e=>{L(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(i.addIssue=i.addIssue.bind(i),r.type===`preprocess`){let e=r.transform(n.data,i);if(n.common.async)return Promise.resolve(e).then(async e=>{if(t.value===`aborted`)return E_;let r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return r.status===`aborted`?E_:r.status===`dirty`||t.value===`dirty`?D_(r.value):r});{if(t.value===`aborted`)return E_;let r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return r.status===`aborted`?E_:r.status===`dirty`||t.value===`dirty`?D_(r.value):r}}if(r.type===`refinement`){let e=e=>{let t=r.refinement(e,i);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(`Async refinement encountered during synchronous parse operation. Use .parseAsync instead.`);return e};if(n.common.async===!1){let r=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return r.status===`aborted`?E_:(r.status===`dirty`&&t.dirty(),e(r.value),{status:t.value,value:r.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(n=>n.status===`aborted`?E_:(n.status===`dirty`&&t.dirty(),e(n.value).then(()=>({status:t.value,value:n.value}))))}if(r.type===`transform`)if(n.common.async===!1){let e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!j_(e))return E_;let a=r.transform(e.value,i);if(a instanceof Promise)throw Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);return{status:t.value,value:a}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(e=>j_(e)?Promise.resolve(r.transform(e.value,i)).then(e=>({status:t.value,value:e})):E_);__.assertNever(r)}};Bv.create=(e,t,n)=>new Bv({schema:e,typeName:Yv.ZodEffects,effect:t,...I_(n)}),Bv.createWithPreprocess=(e,t,n)=>new Bv({schema:t,effect:{type:`preprocess`,transform:e},typeName:Yv.ZodEffects,...I_(n)});var Vv=class extends L_{_parse(e){return this._getType(e)===y_.undefined?O_(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Vv.create=(e,t)=>new Vv({innerType:e,typeName:Yv.ZodOptional,...I_(t)});var Hv=class extends L_{_parse(e){return this._getType(e)===y_.null?O_(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Hv.create=(e,t)=>new Hv({innerType:e,typeName:Yv.ZodNullable,...I_(t)});var Uv=class extends L_{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===y_.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};Uv.create=(e,t)=>new Uv({innerType:e,typeName:Yv.ZodDefault,defaultValue:typeof t.default==`function`?t.default:()=>t.default,...I_(t)});var Wv=class extends L_{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return M_(r)?r.then(e=>({status:`valid`,value:e.status===`valid`?e.value:this._def.catchValue({get error(){return new x_(n.common.issues)},input:n.data})})):{status:`valid`,value:r.status===`valid`?r.value:this._def.catchValue({get error(){return new x_(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};Wv.create=(e,t)=>new Wv({innerType:e,typeName:Yv.ZodCatch,catchValue:typeof t.catch==`function`?t.catch:()=>t.catch,...I_(t)});var Gv=class extends L_{_parse(e){if(this._getType(e)!==y_.nan){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:y_.nan,received:t.parsedType}),E_}return{status:`valid`,value:e.data}}};Gv.create=e=>new Gv({typeName:Yv.ZodNaN,...I_(e)});var Kv=class extends L_{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}},qv=class e extends L_{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?E_:e.status===`dirty`?(t.dirty(),D_(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})();{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?E_:e.status===`dirty`?(t.dirty(),{status:`dirty`,value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(t,n){return new e({in:t,out:n,typeName:Yv.ZodPipeline})}},Jv=class extends L_{_parse(e){let t=this._def.innerType._parse(e),n=e=>(j_(e)&&(e.value=Object.freeze(e.value)),e);return M_(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}};Jv.create=(e,t)=>new Jv({innerType:e,typeName:Yv.ZodReadonly,...I_(t)}),Cv.lazycreate;var Yv;(function(e){e.ZodString=`ZodString`,e.ZodNumber=`ZodNumber`,e.ZodNaN=`ZodNaN`,e.ZodBigInt=`ZodBigInt`,e.ZodBoolean=`ZodBoolean`,e.ZodDate=`ZodDate`,e.ZodSymbol=`ZodSymbol`,e.ZodUndefined=`ZodUndefined`,e.ZodNull=`ZodNull`,e.ZodAny=`ZodAny`,e.ZodUnknown=`ZodUnknown`,e.ZodNever=`ZodNever`,e.ZodVoid=`ZodVoid`,e.ZodArray=`ZodArray`,e.ZodObject=`ZodObject`,e.ZodUnion=`ZodUnion`,e.ZodDiscriminatedUnion=`ZodDiscriminatedUnion`,e.ZodIntersection=`ZodIntersection`,e.ZodTuple=`ZodTuple`,e.ZodRecord=`ZodRecord`,e.ZodMap=`ZodMap`,e.ZodSet=`ZodSet`,e.ZodFunction=`ZodFunction`,e.ZodLazy=`ZodLazy`,e.ZodLiteral=`ZodLiteral`,e.ZodEnum=`ZodEnum`,e.ZodEffects=`ZodEffects`,e.ZodNativeEnum=`ZodNativeEnum`,e.ZodOptional=`ZodOptional`,e.ZodNullable=`ZodNullable`,e.ZodDefault=`ZodDefault`,e.ZodCatch=`ZodCatch`,e.ZodPromise=`ZodPromise`,e.ZodBranded=`ZodBranded`,e.ZodPipeline=`ZodPipeline`,e.ZodReadonly=`ZodReadonly`})(Yv||={});var Xv=cv.create;uv.create,Gv.create,dv.create;var Zv=fv.create;pv.create,mv.create,hv.create,gv.create;var Qv=_v.create;vv.create,yv.create,bv.create,xv.create;var $v=Cv.create;Cv.strictCreate,wv.create;var ey=Ev.create;Ov.create,kv.create,Av.create,jv.create,Mv.create,Nv.create,Pv.create;var ty=Fv.create,ny=Lv.create;Rv.create,zv.create,Bv.create,Vv.create,Hv.create,Bv.createWithPreprocess,qv.create;var ry=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,iy=e=>{if(typeof e!=`string`)throw TypeError(`Invalid argument expected string`);let t=e.match(ry);if(!t)throw Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},ay=e=>e===`*`||e===`x`||e===`X`,oy=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},sy=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],cy=(e,t)=>{if(ay(e)||ay(t))return 0;let[n,r]=sy(oy(e),oy(t));return n>r?1:n{for(let n=0;n{let n=iy(e),r=iy(t),i=n.pop(),a=r.pop(),o=ly(n,r);return o===0?i&&a?ly(i.split(`.`),a.split(`.`)):i||a?i?-1:1:0:o},dy=e=>{if(typeof structuredClone==`function`)return structuredClone(e);try{return JSON.parse(JSON.stringify(e))}catch{return Array.isArray(e)?[...e]:{...e}}};function fy(){return Wl()}function py(e){if(Object.freeze(e),typeof e==`object`&&e)for(let t of Object.values(e))typeof t==`object`&&t&&!Object.isFrozen(t)&&py(t);return e}var my=512*1024;function hy(e,t,n){let r=0,i=[e,t],a=new WeakSet;for(;i.length>0;){let e=i.pop();if(typeof e==`string`){if(r+=e.length,r>n)return!0}else if(typeof e==`object`&&e){if(a.has(e))continue;if(a.add(e),Array.isArray(e))for(let t=0;tn)return!0;i.push(e[o])}}}}return!1}async function gy(e,t,n,r){let i=typeof process<`u`&&!0,a=i&&!!{}.VITEST_WORKER_ID,o=i&&!!{}.VITEST_WORKER_ID,s=o&&!hy(t,n,my),c=s?dy(t):t,l=s?dy(n):n,u=!1,d=!1,f;for(let t of e)try{s&&(py(c),py(l));let e=await r(t,c,l);if(e===void 0)continue;let n=!1;if(e.messages!==void 0&&e.messages!==c&&(c=dy(e.messages),u=!0,n=!0),e.state!==void 0&&e.state!==l&&(l=dy(e.state),d=!0,n=!0),s&&n&&hy(c,l,my)&&(s=!1),f=e.stopPropagation,f===!0)break}catch(e){if(o&&e instanceof TypeError){if(a)throw e;console.error(`AG-UI: Subscriber attempted to mutate frozen inputs in-place. Return mutations via AgentStateMutation instead of mutating directly.`,e)}else a||console.error(`Subscriber error:`,e);continue}return{...u?{messages:Object.isFrozen(c)?dy(c):c}:{},...d?{state:Object.isFrozen(l)?dy(l):l}:{},...f===void 0?{}:{stopPropagation:f}}}function _y(e){if(!e)return{enabled:!1,events:!1,lifecycle:!1,verbose:!1};if(e===!0)return{enabled:!0,events:!0,lifecycle:!0,verbose:!0};let t=e.events??!0,n=e.lifecycle??!0,r=e.verbose??!1;return{enabled:t||n,events:t,lifecycle:n,verbose:r}}function vy(e){if(e instanceof yy)return e;if(e===!0)return new yy(_y(!0))}var yy=class{constructor(e){this.config=e}event(e,t,n,r){this.config.events&&(this.config.verbose?console.debug(`[${e}] ${t}`,typeof n==`string`?n:JSON.stringify(n)):console.debug(`[${e}] ${t}`,r??n))}lifecycle(e,t,n){this.config.lifecycle&&(n?console.debug(`[${e}] ${t}`,n):console.debug(`[${e}] ${t}`))}get eventsEnabled(){return this.config.events}get lifecycleEnabled(){return this.config.lifecycle}get enabled(){return this.config.enabled}};function by(e){return e.enabled?new yy(e):void 0}function xy(e,t,n){if(t){let r=e.find(e=>e.id===t);if(r?.role===`assistant`)return r;r&&console.warn(`TOOL_CALL_START: parentMessageId '${t}' matches a '${r.role}' message, not assistant — falling back to toolCallId`);let i={id:r?n:t,role:`assistant`,toolCalls:[]};return e.push(i),i}let r={id:n,role:`assistant`,toolCalls:[]};return e.push(r),r}var Sy=(e,t,n,r,i)=>{let a=vy(i),o=dy(n.messages),s=dy(e.state),c={},l=e=>{e.messages!==void 0&&(o=e.messages,c.messages=e.messages),e.state!==void 0&&(s=e.state,c.state=e.state)},u=()=>{let e=dy(c);return c={},e.messages!==void 0||e.state!==void 0?oh(e):Dm};return t.pipe(mh(async t=>{let i=await gy(r,o,s,(r,i,a)=>r.onEvent?.({event:t,agent:n,input:e,messages:i,state:a}));if(l(i),i.stopPropagation===!0?a?.event(`APPLY`,`Event dropped:`,t,{type:t.type,reason:`stopPropagation by subscriber`}):a?.event(`APPLY`,`Event applied:`,t,{type:t.type,subscribers:r.length}),i.stopPropagation===!0)return u();switch(t.type){case P.TEXT_MESSAGE_START:{let i=await gy(r,o,s,(r,i,a)=>r.onTextMessageStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(i),i.stopPropagation!==!0){let{messageId:e,role:n=`assistant`,name:r}=t;if(!o.find(t=>t.id===e)){let t={id:e,role:n,content:``,...r!==void 0&&{name:r}};o.push(t),l({messages:o})}}return u()}case P.TEXT_MESSAGE_CONTENT:{let{messageId:i,delta:a}=t,c=o.find(e=>e.id===i);if(!c)return console.warn(`TEXT_MESSAGE_CONTENT: No message found with ID '${i}'`),u();let d=await gy(r,o,s,(r,i,a)=>r.onTextMessageContentEvent?.({event:t,messages:i,state:a,agent:n,input:e,textMessageBuffer:typeof c.content==`string`?c.content:``}));return l(d),d.stopPropagation!==!0&&(c.content=`${typeof c.content==`string`?c.content:``}${a}`,l({messages:o})),u()}case P.TEXT_MESSAGE_END:{let{messageId:i}=t,a=o.find(e=>e.id===i);return a?(l(await gy(r,o,s,(r,i,o)=>r.onTextMessageEndEvent?.({event:t,messages:i,state:o,agent:n,input:e,textMessageBuffer:typeof a.content==`string`?a.content:``}))),await Promise.all(r.map(t=>{t.onNewMessage?.({message:a,messages:o,state:s,agent:n,input:e})})),u()):(console.warn(`TEXT_MESSAGE_END: No message found with ID '${i}'`),u())}case P.TOOL_CALL_START:{let i=await gy(r,o,s,(r,i,a)=>r.onToolCallStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(i),i.stopPropagation!==!0){let{toolCallId:e,toolCallName:n,parentMessageId:r}=t,i=xy(o,r,e);i.toolCalls??=[],i.toolCalls.push({id:e,type:`function`,function:{name:n,arguments:``}}),l({messages:o})}return u()}case P.TOOL_CALL_ARGS:{let{toolCallId:i,delta:a}=t,c=o.find(e=>e.toolCalls?.some(e=>e.id===i));if(!c)return console.warn(`TOOL_CALL_ARGS: No message found containing tool call with ID '${i}'`),u();let d=c.toolCalls?.find(e=>e.id===i);if(!d)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${i}'`),u();let f=await gy(r,o,s,(r,i,a)=>{let o=d.function.arguments,s=d.function.name,c={};try{c=bh(o)}catch{}return r.onToolCallArgsEvent?.({event:t,messages:i,state:a,agent:n,input:e,toolCallBuffer:o,toolCallName:s,partialToolCallArgs:c})});return l(f),f.stopPropagation!==!0&&(d.function.arguments+=a,l({messages:o})),u()}case P.TOOL_CALL_END:{let{toolCallId:i}=t,a=o.find(e=>e.toolCalls?.some(e=>e.id===i));if(!a)return console.warn(`TOOL_CALL_END: No message found containing tool call with ID '${i}'`),u();let c=a.toolCalls?.find(e=>e.id===i);return c?(l(await gy(r,o,s,(r,i,a)=>{let o=c.function.arguments,s=c.function.name,l={};try{l=JSON.parse(o)}catch{}return r.onToolCallEndEvent?.({event:t,messages:i,state:a,agent:n,input:e,toolCallName:s,toolCallArgs:l})})),await Promise.all(r.map(t=>{t.onNewToolCall?.({toolCall:c,messages:o,state:s,agent:n,input:e})})),u()):(console.warn(`TOOL_CALL_END: No tool call found with ID '${i}'`),u())}case P.TOOL_CALL_RESULT:{let i=await gy(r,o,s,(r,i,a)=>r.onToolCallResultEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(i),i.stopPropagation!==!0){let{messageId:i,toolCallId:a,content:c,role:u}=t,d={id:i,toolCallId:a,role:u||`tool`,content:c},f=o.findIndex(e=>e.role===`assistant`&&e.toolCalls?.some(e=>e.id===a));if(f===-1)o.push(d);else{let e=f+1;for(;e{t.onNewMessage?.({message:d,messages:o,state:s,agent:n,input:e})})),l({messages:o})}return u()}case P.STATE_SNAPSHOT:{let i=await gy(r,o,s,(r,i,a)=>r.onStateSnapshotEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(i),i.stopPropagation!==!0){let{snapshot:e}=t;s=e,l({state:s})}return u()}case P.STATE_DELTA:{let i=await gy(r,o,s,(r,i,a)=>r.onStateDeltaEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(i),i.stopPropagation!==!0){let{delta:e}=t;try{s=Op.applyPatch(s,e,!0,!1).newDocument,l({state:s})}catch(t){let n=t instanceof Error?t.message:String(t);console.warn(`Failed to apply state patch:\nCurrent state: ${JSON.stringify(s,null,2)}\nPatch operations: ${JSON.stringify(e,null,2)}\nError: ${n}`)}}return u()}case P.MESSAGES_SNAPSHOT:{let i=await gy(r,o,s,(r,i,a)=>r.onMessagesSnapshotEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(i),i.stopPropagation!==!0){let{messages:e}=t,n=new Map(e.map(e=>[e.id,e])),r=e.some(e=>e.role===`reasoning`),i=e=>e.role===`activity`||e.role===`reasoning`&&!r;o=o.filter(e=>i(e)||n.has(e.id)).map(e=>i(e)?e:n.get(e.id));let a=new Set(o.map(e=>e.id));for(let t of e)a.has(t.id)||o.push(t);l({messages:o})}return u()}case P.ACTIVITY_SNAPSHOT:{let i=t,a=o.findIndex(e=>e.id===i.messageId),c=a>=0?o[a]:void 0,d=c?.role===`activity`?c:void 0,f=i.replace??!0,p=await gy(r,o,s,(t,r,a)=>t.onActivitySnapshotEvent?.({event:i,messages:r,state:a,agent:n,input:e,activityMessage:d,existingMessage:c}));if(l(p),p.stopPropagation!==!0){let t={id:i.messageId,role:`activity`,activityType:i.activityType,content:dy(i.content)},c;a===-1?(o.push(t),c=t):d?f&&(o[a]={...d,activityType:i.activityType,content:dy(i.content)}):f&&(o[a]=t,c=t),l({messages:o}),c&&await Promise.all(r.map(t=>t.onNewMessage?.({message:c,messages:o,state:s,agent:n,input:e})))}return u()}case P.ACTIVITY_DELTA:{let i=t,a=o.findIndex(e=>e.id===i.messageId);if(a===-1)return u();let c=o[a];if(c.role!==`activity`)return console.warn(`ACTIVITY_DELTA: Message '${i.messageId}' is not an activity message`),u();let d=c,f=await gy(r,o,s,(t,r,a)=>t.onActivityDeltaEvent?.({event:i,messages:r,state:a,agent:n,input:e,activityMessage:d}));if(l(f),f.stopPropagation!==!0)try{let e=dy(d.content??{}),t=Op.applyPatch(e,i.patch??[],!0,!1).newDocument;o[a]={...d,content:dy(t),activityType:i.activityType},l({messages:o})}catch(e){let t=e instanceof Error?e.message:String(e);console.warn(`Failed to apply activity patch for '${i.messageId}': ${t}`)}return u()}case P.RAW:return l(await gy(r,o,s,(r,i,a)=>r.onRawEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),u();case P.CUSTOM:return l(await gy(r,o,s,(r,i,a)=>r.onCustomEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),u();case P.RUN_STARTED:{let i=await gy(r,o,s,(r,i,a)=>r.onRunStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(i),i.stopPropagation!==!0){let e=t;if(e.input?.messages){for(let t of e.input.messages)o.find(e=>e.id===t.id)||o.push(t);l({messages:o})}}return u()}case P.RUN_FINISHED:{let i=t,a=i.outcome?.type===`interrupt`?{event:i,outcome:`interrupt`,interrupts:i.outcome.interrupts}:{event:i,outcome:`success`,result:i.result},c=await gy(r,o,s,(t,r,i)=>t.onRunFinishedEvent?.({...a,messages:r,state:i,agent:n,input:e}));return l(c),c.stopPropagation!==!0&&(n.pendingInterrupts=a.outcome===`interrupt`?[...a.interrupts]:[]),u()}case P.RUN_ERROR:return l(await gy(r,o,s,(r,i,a)=>r.onRunErrorEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),u();case P.STEP_STARTED:return l(await gy(r,o,s,(r,i,a)=>r.onStepStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),u();case P.STEP_FINISHED:return l(await gy(r,o,s,(r,i,a)=>r.onStepFinishedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),u();case P.TEXT_MESSAGE_CHUNK:throw Error(`TEXT_MESSAGE_CHUNK must be tranformed before being applied`);case P.TOOL_CALL_CHUNK:throw Error(`TOOL_CALL_CHUNK must be tranformed before being applied`);case P.THINKING_START:return u();case P.THINKING_END:return u();case P.THINKING_TEXT_MESSAGE_START:return u();case P.THINKING_TEXT_MESSAGE_CONTENT:return u();case P.THINKING_TEXT_MESSAGE_END:return u();case P.REASONING_START:return l(await gy(r,o,s,(r,i,a)=>r.onReasoningStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),u();case P.REASONING_MESSAGE_START:{let i=await gy(r,o,s,(r,i,a)=>r.onReasoningMessageStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(i),i.stopPropagation!==!0){let{messageId:e}=t;if(!o.find(t=>t.id===e)){let t={id:e,role:`reasoning`,content:``};o.push(t),l({messages:o})}}return u()}case P.REASONING_MESSAGE_CONTENT:{let{messageId:i,delta:a}=t,c=o.find(e=>e.id===i);if(!c)return console.warn(`REASONING_MESSAGE_CONTENT: No message found with ID '${i}'`),u();let d=await gy(r,o,s,(r,i,a)=>r.onReasoningMessageContentEvent?.({event:t,messages:i,state:a,agent:n,input:e,reasoningMessageBuffer:typeof c.content==`string`?c.content:``}));return l(d),d.stopPropagation!==!0&&(c.content=`${typeof c.content==`string`?c.content:``}${a}`,l({messages:o})),u()}case P.REASONING_MESSAGE_END:{let{messageId:i}=t,a=o.find(e=>e.id===i);return a?(l(await gy(r,o,s,(r,i,o)=>r.onReasoningMessageEndEvent?.({event:t,messages:i,state:o,agent:n,input:e,reasoningMessageBuffer:typeof a.content==`string`?a.content:``}))),await Promise.all(r.map(t=>{t.onNewMessage?.({message:a,messages:o,state:s,agent:n,input:e})})),u()):(console.warn(`REASONING_MESSAGE_END: No message found with ID '${i}'`),u())}case P.REASONING_MESSAGE_CHUNK:throw Error(`REASONING_MESSAGE_CHUNK must be transformed before being applied`);case P.REASONING_END:return l(await gy(r,o,s,(r,i,a)=>r.onReasoningEndEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),u();case P.REASONING_ENCRYPTED_VALUE:{let{subtype:i,entityId:a,encryptedValue:d}=t,f=await gy(r,o,s,(r,i,a)=>r.onReasoningEncryptedValueEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(f),f.stopPropagation!==!0){let e=!1;if(i===`tool-call`){for(let t of o)if(t.role===`assistant`&&t.toolCalls){let n=t.toolCalls.find(e=>e.id===a);if(n){n.encryptedValue=d,e=!0;break}}}else{let t=o.find(e=>e.id===a);t?.role!==`activity`&&t&&(t.encryptedValue=d,e=!0)}e&&(c.messages=o)}return u()}}return t.type,u()}),oee(),r.length>0?see({}):e=>e)},Cy=e=>t=>{let n=vy(e),r=new Map,i=new Map,a=!1,o=!1,s=!1,c=new Map,l=!1,u=!1,d=!1,f=()=>{r.clear(),i.clear(),c.clear(),l=!1,u=!1,a=!1,o=!1,d=!0};return t.pipe(dh(e=>{let t=e.type;if(n?.event(`VERIFY`,`Event:`,e,{type:e.type}),o)return sh(()=>new ef(`Cannot send event type '${t}': The run has already errored with 'RUN_ERROR'. No further events can be sent.`));if(a&&t!==P.RUN_ERROR&&t!==P.RUN_STARTED)return sh(()=>new ef(`Cannot send event type '${t}': The run has already finished with 'RUN_FINISHED'. Start a new run with 'RUN_STARTED'.`));if(!s){if(s=!0,t!==P.RUN_STARTED&&t!==P.RUN_ERROR)return sh(()=>new ef(`First event must be 'RUN_STARTED'`))}else if(t===P.RUN_STARTED){if(d&&!a)return sh(()=>new ef(`Cannot send 'RUN_STARTED' while a run is still active. The previous run must be finished with 'RUN_FINISHED' before starting a new run.`));a&&f()}switch(t){case P.TEXT_MESSAGE_START:{let t=e.messageId;return r.has(t)?sh(()=>new ef(`Cannot send 'TEXT_MESSAGE_START' event: A text message with ID '${t}' is already in progress. Complete it with 'TEXT_MESSAGE_END' first.`)):(r.set(t,!0),oh(e))}case P.TEXT_MESSAGE_CONTENT:{let t=e.messageId;return r.has(t)?oh(e):sh(()=>new ef(`Cannot send 'TEXT_MESSAGE_CONTENT' event: No active text message found with ID '${t}'. Start a text message with 'TEXT_MESSAGE_START' first.`))}case P.TEXT_MESSAGE_END:{let t=e.messageId;return r.has(t)?(r.delete(t),oh(e)):sh(()=>new ef(`Cannot send 'TEXT_MESSAGE_END' event: No active text message found with ID '${t}'. A 'TEXT_MESSAGE_START' event must be sent first.`))}case P.TOOL_CALL_START:{let t=e.toolCallId;return i.has(t)?sh(()=>new ef(`Cannot send 'TOOL_CALL_START' event: A tool call with ID '${t}' is already in progress. Complete it with 'TOOL_CALL_END' first.`)):(i.set(t,!0),oh(e))}case P.TOOL_CALL_ARGS:{let t=e.toolCallId;return i.has(t)?oh(e):sh(()=>new ef(`Cannot send 'TOOL_CALL_ARGS' event: No active tool call found with ID '${t}'. Start a tool call with 'TOOL_CALL_START' first.`))}case P.TOOL_CALL_END:{let t=e.toolCallId;return i.has(t)?(i.delete(t),oh(e)):sh(()=>new ef(`Cannot send 'TOOL_CALL_END' event: No active tool call found with ID '${t}'. A 'TOOL_CALL_START' event must be sent first.`))}case P.STEP_STARTED:{let t=e.stepName;return c.has(t)?sh(()=>new ef(`Step "${t}" is already active for 'STEP_STARTED'`)):(c.set(t,!0),oh(e))}case P.STEP_FINISHED:{let t=e.stepName;return c.has(t)?(c.delete(t),oh(e)):sh(()=>new ef(`Cannot send 'STEP_FINISHED' for step "${t}" that was not started`))}case P.RUN_STARTED:return d=!0,oh(e);case P.RUN_FINISHED:if(c.size>0){let e=Array.from(c.keys()).join(`, `);return sh(()=>new ef(`Cannot send 'RUN_FINISHED' while steps are still active: ${e}`))}if(r.size>0){let e=Array.from(r.keys()).join(`, `);return sh(()=>new ef(`Cannot send 'RUN_FINISHED' while text messages are still active: ${e}`))}if(i.size>0){let e=Array.from(i.keys()).join(`, `);return sh(()=>new ef(`Cannot send 'RUN_FINISHED' while tool calls are still active: ${e}`))}return a=!0,oh(e);case P.RUN_ERROR:return o=!0,oh(e);case P.CUSTOM:return oh(e);case P.THINKING_TEXT_MESSAGE_START:return l?u?sh(()=>new ef(`Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking message is already in progress. Complete it with 'THINKING_TEXT_MESSAGE_END' first.`)):(u=!0,oh(e)):sh(()=>new ef(`Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking step is not in progress. Create one with 'THINKING_START' first.`));case P.THINKING_TEXT_MESSAGE_CONTENT:return u?oh(e):sh(()=>new ef(`Cannot send 'THINKING_TEXT_MESSAGE_CONTENT' event: No active thinking message found. Start a message with 'THINKING_TEXT_MESSAGE_START' first.`));case P.THINKING_TEXT_MESSAGE_END:return u?(u=!1,oh(e)):sh(()=>new ef(`Cannot send 'THINKING_TEXT_MESSAGE_END' event: No active thinking message found. A 'THINKING_TEXT_MESSAGE_START' event must be sent first.`));case P.THINKING_START:return l?sh(()=>new ef(`Cannot send 'THINKING_START' event: A thinking step is already in progress. End it with 'THINKING_END' first.`)):(l=!0,oh(e));case P.THINKING_END:return l?(l=!1,oh(e)):sh(()=>new ef(`Cannot send 'THINKING_END' event: No active thinking step found. A 'THINKING_START' event must be sent first.`));default:return oh(e)}}))},wy=function(e){return e.HEADERS=`headers`,e.DATA=`data`,e}({}),Ty=e=>fh(()=>ah(e())).pipe(gh(e=>{if(!e.ok){let t=e.headers.get(`content-type`)||``;return ah(e.text()).pipe(dh(n=>{let r=n;if(t.includes(`application/json`))try{r=JSON.parse(n)}catch{}let i=Error(`HTTP ${e.status}: ${typeof r==`string`?r:JSON.stringify(r)}`);return i.status=e.status,i.payload=r,sh(()=>i)}))}let t={type:wy.HEADERS,status:e.status,headers:e.headers},n=e.body?.getReader();return n?new gm(e=>(e.next(t),(async()=>{try{for(;;){let{done:t,value:r}=await n.read();if(t)break;let i={type:wy.DATA,data:r};e.next(i)}e.complete()}catch(t){e.error(t)}})(),()=>{n.cancel().catch(e=>{if(e?.name!==`AbortError`)throw e})})):sh(()=>Error(`Failed to getReader() from response`))})),Ey=(e,t)=>{let n=vy(t),r=new Cm,i=new TextDecoder(`utf-8`,{fatal:!1}),a=``;e.subscribe({next:e=>{if(e.type!==wy.HEADERS&&e.type===wy.DATA&&e.data){let t=i.decode(e.data,{stream:!0});a+=t;let n=a.split(/\n\n/);a=n.pop()||``;for(let e of n)o(e)}},error:e=>r.error(e),complete:()=>{a&&(a+=i.decode(),o(a)),r.complete()}});function o(e){let t=e.split(` + `):``,this.name=`UnsubscriptionError`,this.errors=t}});function Wp(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var Gp=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var e,t,n,r,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var o=Fp(a),s=o.next();!s.done;s=o.next())s.value.remove(this)}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}else a.remove(this);var c=this.initialTeardown;if(Vp(c))try{c()}catch(e){i=e instanceof Up?e.errors:[e]}var l=this._finalizers;if(l){this._finalizers=null;try{for(var u=Fp(l),d=u.next();!d.done;d=u.next()){var f=d.value;try{Jp(f)}catch(e){i??=[],e instanceof Up?i=Lp(Lp([],Ip(i)),Ip(e.errors)):i.push(e)}}}catch(e){n={error:e}}finally{try{d&&!d.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}}if(i)throw new Up(i)}},e.prototype.add=function(t){if(t&&t!==this)if(this.closed)Jp(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=this._finalizers??[]).push(t)}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&Wp(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&Wp(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=(function(){var t=new e;return t.closed=!0,t})(),e}(),Kp=Gp.EMPTY;function qp(e){return e instanceof Gp||e&&`closed`in e&&Vp(e.remove)&&Vp(e.add)&&Vp(e.unsubscribe)}function Jp(e){Vp(e)?e():e.unsubscribe()}var Yp={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Xp={setTimeout:function(e,t){var n=[...arguments].slice(2),r=Xp.delegate;return r?.setTimeout?r.setTimeout.apply(r,Lp([e,t],Ip(n))):setTimeout.apply(void 0,Lp([e,t],Ip(n)))},clearTimeout:function(e){return(Xp.delegate?.clearTimeout||clearTimeout)(e)},delegate:void 0};function Zp(e){Xp.setTimeout(function(){var t=Yp.onUnhandledError;if(t)t(e);else throw e})}function Qp(){}var $p=(function(){return nm(`C`,void 0,void 0)})();function em(e){return nm(`E`,void 0,e)}function tm(e){return nm(`N`,e,void 0)}function nm(e,t,n){return{kind:e,value:t,error:n}}var rm=null;function im(e){if(Yp.useDeprecatedSynchronousErrorHandling){var t=!rm;if(t&&(rm={errorThrown:!1,error:null}),e(),t){var n=rm,r=n.errorThrown,i=n.error;if(rm=null,r)throw i}}else e()}function am(e){Yp.useDeprecatedSynchronousErrorHandling&&rm&&(rm.errorThrown=!0,rm.error=e)}var om=function(e){Ap(t,e);function t(t){var n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,qp(t)&&t.add(n)):n.destination=nee,n}return t.create=function(e,t,n){return new cm(e,t,n)},t.prototype.next=function(e){this.isStopped?dm(tm(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?dm(em(e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?dm($p,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(Gp),eee=Function.prototype.bind;function sm(e,t){return eee.call(e,t)}var tee=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){lm(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){lm(e)}else lm(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){lm(e)}},e}(),cm=function(e){Ap(t,e);function t(t,n,r){var i=e.call(this)||this,a;if(Vp(t)||!t)a={next:t??void 0,error:n??void 0,complete:r??void 0};else{var o;i&&Yp.useDeprecatedNextContext?(o=Object.create(t),o.unsubscribe=function(){return i.unsubscribe()},a={next:t.next&&sm(t.next,o),error:t.error&&sm(t.error,o),complete:t.complete&&sm(t.complete,o)}):a=t}return i.destination=new tee(a),i}return t}(om);function lm(e){Yp.useDeprecatedSynchronousErrorHandling?am(e):Zp(e)}function um(e){throw e}function dm(e,t){var n=Yp.onStoppedNotification;n&&Xp.setTimeout(function(){return n(e,t)})}var nee={closed:!0,next:Qp,error:um,complete:Qp},fm=(function(){return typeof Symbol==`function`&&Symbol.observable||`@@observable`})();function pm(e){return e}function mm(){return hm([...arguments])}function hm(e){return e.length===0?pm:e.length===1?e[0]:function(t){return e.reduce(function(e,t){return t(e)},t)}}var gm=function(){function e(e){e&&(this._subscribe=e)}return e.prototype.lift=function(t){var n=new e;return n.source=this,n.operator=t,n},e.prototype.subscribe=function(e,t,n){var r=this,i=iee(e)?e:new cm(e,t,n);return im(function(){var e=r,t=e.operator,n=e.source;i.add(t?t.call(i,n):n?r._subscribe(i):r._trySubscribe(i))}),i},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},e.prototype.forEach=function(e,t){var n=this;return t=_m(t),new t(function(t,r){var i=new cm({next:function(t){try{e(t)}catch(e){r(e),i.unsubscribe()}},error:r,complete:t});n.subscribe(i)})},e.prototype._subscribe=function(e){return this.source?.subscribe(e)},e.prototype[fm]=function(){return this},e.prototype.pipe=function(){return hm([...arguments])(this)},e.prototype.toPromise=function(e){var t=this;return e=_m(e),new e(function(e,n){var r;t.subscribe(function(e){return r=e},function(e){return n(e)},function(){return e(r)})})},e.create=function(t){return new e(t)},e}();function _m(e){return e??Yp.Promise??Promise}function ree(e){return e&&Vp(e.next)&&Vp(e.error)&&Vp(e.complete)}function iee(e){return e&&e instanceof om||ree(e)&&qp(e)}function vm(e){return Vp(e?.lift)}function ym(e){return function(t){if(vm(t))return t.lift(function(t){try{return e(t,this)}catch(e){this.error(e)}});throw TypeError(`Unable to lift unknown Observable type`)}}function bm(e,t,n,r,i){return new xm(e,t,n,r,i)}var xm=function(e){Ap(t,e);function t(t,n,r,i,a,o){var s=e.call(this,t)||this;return s.onFinalize=a,s.shouldUnsubscribe=o,s._next=n?function(e){try{n(e)}catch(e){t.error(e)}}:e.prototype._next,s._error=i?function(e){try{i(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,s._complete=r?function(){try{r()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,s}return t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;e.prototype.unsubscribe.call(this),!n&&((t=this.onFinalize)==null||t.call(this))}},t}(om),Sm=Hp(function(e){return function(){e(this),this.name=`ObjectUnsubscribedError`,this.message=`object unsubscribed`}}),Cm=function(e){Ap(t,e);function t(){var t=e.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return t.prototype.lift=function(e){var t=new wm(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new Sm},t.prototype.next=function(e){var t=this;im(function(){var n,r;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||=Array.from(t.observers);try{for(var i=Fp(t.currentObservers),a=i.next();!a.done;a=i.next())a.value.next(e)}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}})},t.prototype.error=function(e){var t=this;im(function(){if(t._throwIfClosed(),!t.isStopped){t.hasError=t.isStopped=!0,t.thrownError=e;for(var n=t.observers;n.length;)n.shift().error(e)}})},t.prototype.complete=function(){var e=this;im(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var t=e.observers;t.length;)t.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){return this.observers?.length>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,n=this,r=n.hasError,i=n.isStopped,a=n.observers;return r||i?Kp:(this.currentObservers=null,a.push(e),new Gp(function(){t.currentObservers=null,Wp(a,e)}))},t.prototype._checkFinalizedStatuses=function(e){var t=this,n=t.hasError,r=t.thrownError,i=t.isStopped;n?e.error(r):i&&e.complete()},t.prototype.asObservable=function(){var e=new gm;return e.source=this,e},t.create=function(e,t){return new wm(e,t)},t}(gm),wm=function(e){Ap(t,e);function t(t,n){var r=e.call(this)||this;return r.destination=t,r.source=n,r}return t.prototype.next=function(e){var t,n;(n=(t=this.destination)?.next)==null||n.call(t,e)},t.prototype.error=function(e){var t,n;(n=(t=this.destination)?.error)==null||n.call(t,e)},t.prototype.complete=function(){var e,t;(t=(e=this.destination)?.complete)==null||t.call(e)},t.prototype._subscribe=function(e){return this.source?.subscribe(e)??Kp},t}(Cm),Tm={now:function(){return(Tm.delegate||Date).now()},delegate:void 0},Em=function(e){Ap(t,e);function t(t,n,r){t===void 0&&(t=1/0),n===void 0&&(n=1/0),r===void 0&&(r=Tm);var i=e.call(this)||this;return i._bufferSize=t,i._windowTime=n,i._timestampProvider=r,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,t),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(t){var n=this,r=n.isStopped,i=n._buffer,a=n._infiniteTimeWindow,o=n._timestampProvider,s=n._windowTime;r||(i.push(t),!a&&i.push(o.now()+s)),this._trimBuffer(),e.prototype.next.call(this,t)},t.prototype._subscribe=function(e){this._throwIfClosed(),this._trimBuffer();for(var t=this._innerSubscribe(e),n=this,r=n._infiniteTimeWindow,i=n._buffer.slice(),a=0;a=0}function hh(e){for(var t=[`topLevel`],n=0,r,i,a,o=function(e){return t.push(e)},s=function(e){return t[t.length-1]=e},c=function(e){r??(r=n,i=t.length,a=e)},l=function(e){e===a&&(r=void 0,i=void 0,a=void 0)},u=function(){return t.pop()},d=function(){return n--},f=function(e){if(`0`<=e&&e<=`9`){o(`number`);return}switch(e){case`"`:o(`string`);return;case`-`:o(`numberNeedsDigit`);return;case`t`:o(`true`);return;case`f`:o(`false`);return;case`n`:o(`null`);return;case`[`:o(`arrayNeedsValue`);return;case`{`:o(`objectNeedsKey`);return}},p=e.length;n`9`)&&(d(),u());break;case`numberNeedsDigit`:s(`number`);break;case`numberNeedsExponent`:s(m===`+`||m===`-`?`numberNeedsDigit`:`number`);break;case`true`:case`false`:case`null`:(m<`a`||m>`z`)&&(d(),u());break;case`arrayNeedsValue`:m===`]`?u():mh(m)||(l(`collectionItem`),s(`arrayNeedsComma`),f(m));break;case`arrayNeedsComma`:m===`]`?u():m===`,`&&(c(`collectionItem`),s(`arrayNeedsValue`));break;case`objectNeedsKey`:m===`}`?u():m===`"`&&(c(`collectionItem`),s(`objectNeedsColon`),o(`string`));break;case`objectNeedsColon`:m===`:`&&s(`objectNeedsValue`);break;case`objectNeedsValue`:mh(m)||(l(`collectionItem`),s(`objectNeedsComma`),f(m));break;case`objectNeedsComma`:m===`}`?u():m===`,`&&(c(`collectionItem`),s(`objectNeedsKey`));break}}i!=null&&(t.length=i);for(var h=[r==null?e:e.slice(0,r)],g=function(t){return h.push(t.slice(e.length-e.lastIndexOf(t[0])))},_=t.length-1;_>=0;_--)switch(t[_]){case`string`:h.push(`"`);break;case`numberNeedsDigit`:case`numberNeedsExponent`:h.push(`0`);break;case`true`:g(`true`);break;case`false`:g(`false`);break;case`null`:g(`null`);break;case`arrayNeedsValue`:case`arrayNeedsComma`:h.push(`]`);break;case`objectNeedsKey`:case`objectNeedsColon`:case`objectNeedsValue`:case`objectNeedsComma`:h.push(`}`);break}return h.join(``)}function gh(){let e=0,t=0;for(let n=0;n<28;n+=7){let r=this.buf[this.pos++];if(e|=(r&127)<>4,!(n&128))return this.assertBounds(),[e,t];for(let n=3;n<=31;n+=7){let r=this.buf[this.pos++];if(t|=(r&127)<>>r,a=!(!(i>>>7)&&t==0),o=(a?i|128:i)&255;if(n.push(o),!a)return}let r=e>>>28&15|(t&7)<<4,i=!!(t>>3);if(n.push((i?r|128:r)&255),i){for(let e=3;e<31;e+=7){let r=t>>>e,i=!!(r>>>7),a=(i?r|128:r)&255;if(n.push(a),!i)return}n.push(t>>>31&1)}}var vh=4294967296;function yh(e){let t=e[0]===`-`;t&&(e=e.slice(1));let n=1e6,r=0,i=0;function a(t,a){let o=Number(e.slice(t,a));i*=n,r=r*n+o,r>=vh&&(i+=r/vh|0,r%=vh)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),t?wh(r,i):Ch(r,i)}function bh(e,t){let n=Ch(e,t),r=n.hi&2147483648;r&&(n=wh(n.lo,n.hi));let i=xh(n.lo,n.hi);return r?`-`+i:i}function xh(e,t){if({lo:e,hi:t}=Sh(e,t),t<=2097151)return String(vh*t+e);let n=e&16777215,r=(e>>>24|t<<8)&16777215,i=t>>16&65535,a=n+r*6777216+i*6710656,o=r+i*8147497,s=i*2,c=1e7;return a>=c&&(o+=Math.floor(a/c),a%=c),o>=c&&(s+=Math.floor(o/c),o%=c),s.toString()+Th(o)+Th(a)}function Sh(e,t){return{lo:e>>>0,hi:t>>>0}}function Ch(e,t){return{lo:e|0,hi:t|0}}function wh(e,t){return t=~t,e?e=~e+1:t+=1,Ch(e,t)}var Th=e=>{let t=String(e);return`0000000`.slice(t.length)+t};function Eh(e,t){if(e>=0){for(;e>127;)t.push(e&127|128),e>>>=7;t.push(e)}else{for(let n=0;n<9;n++)t.push(e&127|128),e>>=7;t.push(1)}}function Dh(){let e=this.buf[this.pos++],t=e&127;if(!(e&128)||(e=this.buf[this.pos++],t|=(e&127)<<7,!(e&128))||(e=this.buf[this.pos++],t|=(e&127)<<14,!(e&128))||(e=this.buf[this.pos++],t|=(e&127)<<21,!(e&128)))return this.assertBounds(),t;e=this.buf[this.pos++],t|=(e&15)<<28;for(let t=5;e&128&&t<10;t++)e=this.buf[this.pos++];if(e&128)throw Error(`invalid varint`);return this.assertBounds(),t>>>0}var Oh=kh();function kh(){let e=new DataView(new ArrayBuffer(8));if(typeof BigInt==`function`&&typeof e.getBigInt64==`function`&&typeof e.getBigUint64==`function`&&typeof e.setBigInt64==`function`&&typeof e.setBigUint64==`function`&&(globalThis.Deno||globalThis.Bun||typeof process!=`object`||{}.BUF_BIGINT_DISABLE!==`1`)){let t=BigInt(`-9223372036854775808`),n=BigInt(`9223372036854775807`),r=BigInt(`0`),i=BigInt(`18446744073709551615`);return{zero:BigInt(0),supported:!0,parse(e){let r=typeof e==`bigint`?e:BigInt(e);if(r>n||ri||t>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(Lh(e);e>127;)this.buf.push(e&127|128),e>>>=7;return this.buf.push(e),this}int32(e){return Ih(e),Eh(e,this.buf),this}bool(e){return this.buf.push(+!!e),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.encodeUtf8(e);return this.uint32(t.byteLength),this.raw(t)}float(e){Rh(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){Lh(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){Ih(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return Ih(e),e=(e<<1^e>>31)>>>0,Eh(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=Oh.enc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=Oh.uEnc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=Oh.enc(e);return _h(t.lo,t.hi,this.buf),this}sint64(e){let t=Oh.enc(e),n=t.hi>>31;return _h(t.lo<<1^n,(t.hi<<1|t.lo>>>31)^n,this.buf),this}uint64(e){let t=Oh.uEnc(e);return _h(t.lo,t.hi,this.buf),this}},F=class{constructor(e,t=Nh().decodeUtf8){this.decodeUtf8=t,this.varint64=gh,this.uint32=Dh,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength)}tag(){let e=this.pos,t=this.uint32(),n=this.pos-e;if(n>5||n==5&&this.buf[this.pos-1]>15)throw Error(`illegal tag: varint overflows uint32`);let r=t>>>3,i=t&7;if(r<=0||i>5)throw Error(`illegal tag: field no `+r+` wire type `+i);return[r,i]}skip(e,t,n=100){let r=this.pos;switch(e){case Ph.Varint:for(;this.buf[this.pos++]&128;);break;case Ph.Bit64:this.pos+=4;case Ph.Bit32:this.pos+=4;break;case Ph.LengthDelimited:let r=this.uint32();this.pos+=r;break;case Ph.StartGroup:if(n<=0)throw Error(`maximum recursion depth reached`);for(;;){let[e,r]=this.tag();if(r===Ph.EndGroup){if(t!==void 0&&e!==t)throw Error(`invalid end group tag`);break}this.skip(r,e,n-1)}break;default:throw Error(`cant skip wire type `+e)}return this.assertBounds(),this.buf.subarray(r,this.pos)}assertBounds(){if(this.pos>this.len)throw RangeError(`premature EOF`)}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return Oh.dec(...this.varint64())}uint64(){return Oh.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),n=-(e&1);return e=(e>>>1|(t&1)<<31)^n,t=t>>>1^n,Oh.dec(e,t)}bool(){let[e,t]=this.varint64();return e!==0||t!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return Oh.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return Oh.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(e){return this.decodeUtf8(this.bytes(),e)}};function Ih(e){if(typeof e==`string`)e=Number(e);else if(typeof e!=`number`)throw Error(`invalid int32: `+typeof e);if(!Number.isInteger(e)||e>2147483647||e<-2147483648)throw Error(`invalid int32: `+e)}function Lh(e){if(typeof e==`string`)e=Number(e);else if(typeof e!=`number`)throw Error(`invalid uint32: `+typeof e);if(!Number.isInteger(e)||e>4294967295||e<0)throw Error(`invalid uint32: `+e)}function Rh(e){if(typeof e==`string`){let t=e;if(e=Number(e),Number.isNaN(e)&&t!==`NaN`)throw Error(`invalid float32: `+t)}else if(typeof e!=`number`)throw Error(`invalid float32: `+typeof e);if(Number.isFinite(e)&&(e>34028234663852886e22||e<-34028234663852886e22))throw Error(`invalid float32: `+e)}var pee=function(e){return e[e.NULL_VALUE=0]=`NULL_VALUE`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e}({});function zh(){return{fields:{}}}var Bh={encode(e,t=new Fh){return Object.entries(e.fields).forEach(([e,n])=>{n!==void 0&&Hh.encode({key:e,value:n},t.uint32(10).fork()).join()}),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=zh();for(;n.pos>>3){case 1:{if(e!==10)break;let t=Hh.decode(n,n.uint32());t.value!==void 0&&(i.fields[t.key]=t.value);continue}}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Bh.fromPartial(e??{})},fromPartial(e){let t=zh();return t.fields=Object.entries(e.fields??{}).reduce((e,[t,n])=>(n!==void 0&&(e[t]=n),e),{}),t},wrap(e){let t=zh();if(e!==void 0)for(let n of Object.keys(e))t.fields[n]=e[n];return t},unwrap(e){let t={};if(e.fields)for(let n of Object.keys(e.fields))t[n]=e.fields[n];return t}};function Vh(){return{key:``,value:void 0}}var Hh={encode(e,t=new Fh){return e.key!==``&&t.uint32(10).string(e.key),e.value!==void 0&&Wh.encode(Wh.wrap(e.value),t.uint32(18).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Vh();for(;n.pos>>3){case 1:if(e!==10)break;i.key=n.string();continue;case 2:if(e!==18)break;i.value=Wh.unwrap(Wh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Hh.fromPartial(e??{})},fromPartial(e){let t=Vh();return t.key=e.key??``,t.value=e.value??void 0,t}};function Uh(){return{nullValue:void 0,numberValue:void 0,stringValue:void 0,boolValue:void 0,structValue:void 0,listValue:void 0}}var Wh={encode(e,t=new Fh){return e.nullValue!==void 0&&t.uint32(8).int32(e.nullValue),e.numberValue!==void 0&&t.uint32(17).double(e.numberValue),e.stringValue!==void 0&&t.uint32(26).string(e.stringValue),e.boolValue!==void 0&&t.uint32(32).bool(e.boolValue),e.structValue!==void 0&&Bh.encode(Bh.wrap(e.structValue),t.uint32(42).fork()).join(),e.listValue!==void 0&&Kh.encode(Kh.wrap(e.listValue),t.uint32(50).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Uh();for(;n.pos>>3){case 1:if(e!==8)break;i.nullValue=n.int32();continue;case 2:if(e!==17)break;i.numberValue=n.double();continue;case 3:if(e!==26)break;i.stringValue=n.string();continue;case 4:if(e!==32)break;i.boolValue=n.bool();continue;case 5:if(e!==42)break;i.structValue=Bh.unwrap(Bh.decode(n,n.uint32()));continue;case 6:if(e!==50)break;i.listValue=Kh.unwrap(Kh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Wh.fromPartial(e??{})},fromPartial(e){let t=Uh();return t.nullValue=e.nullValue??void 0,t.numberValue=e.numberValue??void 0,t.stringValue=e.stringValue??void 0,t.boolValue=e.boolValue??void 0,t.structValue=e.structValue??void 0,t.listValue=e.listValue??void 0,t},wrap(e){let t=Uh();if(e===null)t.nullValue=pee.NULL_VALUE;else if(typeof e==`boolean`)t.boolValue=e;else if(typeof e==`number`)t.numberValue=e;else if(typeof e==`string`)t.stringValue=e;else if(globalThis.Array.isArray(e))t.listValue=e;else if(typeof e==`object`)t.structValue=e;else if(e!==void 0)throw new globalThis.Error(`Unsupported any value type: `+typeof e);return t},unwrap(e){if(e.stringValue!==void 0)return e.stringValue;if(e?.numberValue!==void 0)return e.numberValue;if(e?.boolValue!==void 0)return e.boolValue;if(e?.structValue!==void 0)return e.structValue;if(e?.listValue!==void 0)return e.listValue;if(e?.nullValue!==void 0)return null}};function Gh(){return{values:[]}}var Kh={encode(e,t=new Fh){for(let n of e.values)Wh.encode(Wh.wrap(n),t.uint32(10).fork()).join();return t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Gh();for(;n.pos>>3){case 1:if(e!==10)break;i.values.push(Wh.unwrap(Wh.decode(n,n.uint32())));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Kh.fromPartial(e??{})},fromPartial(e){let t=Gh();return t.values=e.values?.map(e=>e)||[],t},wrap(e){let t=Gh();return t.values=e??[],t},unwrap(e){return e?.hasOwnProperty(`values`)&&globalThis.Array.isArray(e.values)?e.values:e}},mee=function(e){return e[e.ADD=0]=`ADD`,e[e.REMOVE=1]=`REMOVE`,e[e.REPLACE=2]=`REPLACE`,e[e.MOVE=3]=`MOVE`,e[e.COPY=4]=`COPY`,e[e.TEST=5]=`TEST`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e}({});function qh(){return{op:0,path:``,from:void 0,value:void 0}}var Jh={encode(e,t=new Fh){return e.op!==0&&t.uint32(8).int32(e.op),e.path!==``&&t.uint32(18).string(e.path),e.from!==void 0&&t.uint32(26).string(e.from),e.value!==void 0&&Wh.encode(Wh.wrap(e.value),t.uint32(34).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=qh();for(;n.pos>>3){case 1:if(e!==8)break;i.op=n.int32();continue;case 2:if(e!==18)break;i.path=n.string();continue;case 3:if(e!==26)break;i.from=n.string();continue;case 4:if(e!==34)break;i.value=Wh.unwrap(Wh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Jh.fromPartial(e??{})},fromPartial(e){let t=qh();return t.op=e.op??0,t.path=e.path??``,t.from=e.from??void 0,t.value=e.value??void 0,t}};function Yh(){return{id:``,type:``,function:void 0}}var Xh={encode(e,t=new Fh){return e.id!==``&&t.uint32(10).string(e.id),e.type!==``&&t.uint32(18).string(e.type),e.function!==void 0&&Qh.encode(e.function,t.uint32(26).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Yh();for(;n.pos>>3){case 1:if(e!==10)break;i.id=n.string();continue;case 2:if(e!==18)break;i.type=n.string();continue;case 3:if(e!==26)break;i.function=Qh.decode(n,n.uint32());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Xh.fromPartial(e??{})},fromPartial(e){let t=Yh();return t.id=e.id??``,t.type=e.type??``,t.function=e.function!==void 0&&e.function!==null?Qh.fromPartial(e.function):void 0,t}};function Zh(){return{name:``,arguments:``}}var Qh={encode(e,t=new Fh){return e.name!==``&&t.uint32(10).string(e.name),e.arguments!==``&&t.uint32(18).string(e.arguments),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Zh();for(;n.pos>>3){case 1:if(e!==10)break;i.name=n.string();continue;case 2:if(e!==18)break;i.arguments=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Qh.fromPartial(e??{})},fromPartial(e){let t=Zh();return t.name=e.name??``,t.arguments=e.arguments??``,t}};function $h(){return{value:``,mimeType:``}}var eg={encode(e,t=new Fh){return e.value!==``&&t.uint32(10).string(e.value),e.mimeType!==``&&t.uint32(18).string(e.mimeType),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=$h();for(;n.pos>>3){case 1:if(e!==10)break;i.value=n.string();continue;case 2:if(e!==18)break;i.mimeType=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return eg.fromPartial(e??{})},fromPartial(e){let t=$h();return t.value=e.value??``,t.mimeType=e.mimeType??``,t}};function tg(){return{value:``,mimeType:void 0}}var ng={encode(e,t=new Fh){return e.value!==``&&t.uint32(10).string(e.value),e.mimeType!==void 0&&t.uint32(18).string(e.mimeType),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=tg();for(;n.pos>>3){case 1:if(e!==10)break;i.value=n.string();continue;case 2:if(e!==18)break;i.mimeType=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return ng.fromPartial(e??{})},fromPartial(e){let t=tg();return t.value=e.value??``,t.mimeType=e.mimeType??void 0,t}};function rg(){return{data:void 0,url:void 0}}var ig={encode(e,t=new Fh){return e.data!==void 0&&eg.encode(e.data,t.uint32(10).fork()).join(),e.url!==void 0&&ng.encode(e.url,t.uint32(18).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=rg();for(;n.pos>>3){case 1:if(e!==10)break;i.data=eg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.url=ng.decode(n,n.uint32());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return ig.fromPartial(e??{})},fromPartial(e){let t=rg();return t.data=e.data!==void 0&&e.data!==null?eg.fromPartial(e.data):void 0,t.url=e.url!==void 0&&e.url!==null?ng.fromPartial(e.url):void 0,t}};function ag(){return{text:``}}var og={encode(e,t=new Fh){return e.text!==``&&t.uint32(10).string(e.text),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=ag();for(;n.pos>>3){case 1:if(e!==10)break;i.text=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return og.fromPartial(e??{})},fromPartial(e){let t=ag();return t.text=e.text??``,t}};function sg(){return{source:void 0,metadata:void 0}}var cg={encode(e,t=new Fh){return e.source!==void 0&&ig.encode(e.source,t.uint32(10).fork()).join(),e.metadata!==void 0&&Wh.encode(Wh.wrap(e.metadata),t.uint32(18).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=sg();for(;n.pos>>3){case 1:if(e!==10)break;i.source=ig.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.metadata=Wh.unwrap(Wh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return cg.fromPartial(e??{})},fromPartial(e){let t=sg();return t.source=e.source!==void 0&&e.source!==null?ig.fromPartial(e.source):void 0,t.metadata=e.metadata??void 0,t}};function lg(){return{source:void 0,metadata:void 0}}var ug={encode(e,t=new Fh){return e.source!==void 0&&ig.encode(e.source,t.uint32(10).fork()).join(),e.metadata!==void 0&&Wh.encode(Wh.wrap(e.metadata),t.uint32(18).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=lg();for(;n.pos>>3){case 1:if(e!==10)break;i.source=ig.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.metadata=Wh.unwrap(Wh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return ug.fromPartial(e??{})},fromPartial(e){let t=lg();return t.source=e.source!==void 0&&e.source!==null?ig.fromPartial(e.source):void 0,t.metadata=e.metadata??void 0,t}};function dg(){return{source:void 0,metadata:void 0}}var fg={encode(e,t=new Fh){return e.source!==void 0&&ig.encode(e.source,t.uint32(10).fork()).join(),e.metadata!==void 0&&Wh.encode(Wh.wrap(e.metadata),t.uint32(18).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=dg();for(;n.pos>>3){case 1:if(e!==10)break;i.source=ig.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.metadata=Wh.unwrap(Wh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return fg.fromPartial(e??{})},fromPartial(e){let t=dg();return t.source=e.source!==void 0&&e.source!==null?ig.fromPartial(e.source):void 0,t.metadata=e.metadata??void 0,t}};function pg(){return{source:void 0,metadata:void 0}}var mg={encode(e,t=new Fh){return e.source!==void 0&&ig.encode(e.source,t.uint32(10).fork()).join(),e.metadata!==void 0&&Wh.encode(Wh.wrap(e.metadata),t.uint32(18).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=pg();for(;n.pos>>3){case 1:if(e!==10)break;i.source=ig.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.metadata=Wh.unwrap(Wh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return mg.fromPartial(e??{})},fromPartial(e){let t=pg();return t.source=e.source!==void 0&&e.source!==null?ig.fromPartial(e.source):void 0,t.metadata=e.metadata??void 0,t}};function hg(){return{text:void 0,image:void 0,audio:void 0,video:void 0,document:void 0}}var gg={encode(e,t=new Fh){return e.text!==void 0&&og.encode(e.text,t.uint32(10).fork()).join(),e.image!==void 0&&cg.encode(e.image,t.uint32(18).fork()).join(),e.audio!==void 0&&ug.encode(e.audio,t.uint32(26).fork()).join(),e.video!==void 0&&fg.encode(e.video,t.uint32(34).fork()).join(),e.document!==void 0&&mg.encode(e.document,t.uint32(42).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=hg();for(;n.pos>>3){case 1:if(e!==10)break;i.text=og.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.image=cg.decode(n,n.uint32());continue;case 3:if(e!==26)break;i.audio=ug.decode(n,n.uint32());continue;case 4:if(e!==34)break;i.video=fg.decode(n,n.uint32());continue;case 5:if(e!==42)break;i.document=mg.decode(n,n.uint32());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return gg.fromPartial(e??{})},fromPartial(e){let t=hg();return t.text=e.text!==void 0&&e.text!==null?og.fromPartial(e.text):void 0,t.image=e.image!==void 0&&e.image!==null?cg.fromPartial(e.image):void 0,t.audio=e.audio!==void 0&&e.audio!==null?ug.fromPartial(e.audio):void 0,t.video=e.video!==void 0&&e.video!==null?fg.fromPartial(e.video):void 0,t.document=e.document!==void 0&&e.document!==null?mg.fromPartial(e.document):void 0,t}};function _g(){return{id:``,role:``,content:void 0,name:void 0,toolCalls:[],toolCallId:void 0,error:void 0,contentParts:[]}}var vg={encode(e,t=new Fh){e.id!==``&&t.uint32(10).string(e.id),e.role!==``&&t.uint32(18).string(e.role),e.content!==void 0&&t.uint32(26).string(e.content),e.name!==void 0&&t.uint32(34).string(e.name);for(let n of e.toolCalls)Xh.encode(n,t.uint32(42).fork()).join();e.toolCallId!==void 0&&t.uint32(50).string(e.toolCallId),e.error!==void 0&&t.uint32(58).string(e.error);for(let n of e.contentParts)gg.encode(n,t.uint32(66).fork()).join();return t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=_g();for(;n.pos>>3){case 1:if(e!==10)break;i.id=n.string();continue;case 2:if(e!==18)break;i.role=n.string();continue;case 3:if(e!==26)break;i.content=n.string();continue;case 4:if(e!==34)break;i.name=n.string();continue;case 5:if(e!==42)break;i.toolCalls.push(Xh.decode(n,n.uint32()));continue;case 6:if(e!==50)break;i.toolCallId=n.string();continue;case 7:if(e!==58)break;i.error=n.string();continue;case 8:if(e!==66)break;i.contentParts.push(gg.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return vg.fromPartial(e??{})},fromPartial(e){let t=_g();return t.id=e.id??``,t.role=e.role??``,t.content=e.content??void 0,t.name=e.name??void 0,t.toolCalls=e.toolCalls?.map(e=>Xh.fromPartial(e))||[],t.toolCallId=e.toolCallId??void 0,t.error=e.error??void 0,t.contentParts=e.contentParts?.map(e=>gg.fromPartial(e))||[],t}};function yg(){return{id:``,reason:``,message:void 0,toolCallId:void 0,responseSchema:void 0,expiresAt:void 0,metadata:void 0}}var bg={encode(e,t=new Fh){return e.id!==``&&t.uint32(10).string(e.id),e.reason!==``&&t.uint32(18).string(e.reason),e.message!==void 0&&t.uint32(26).string(e.message),e.toolCallId!==void 0&&t.uint32(34).string(e.toolCallId),e.responseSchema!==void 0&&Wh.encode(Wh.wrap(e.responseSchema),t.uint32(42).fork()).join(),e.expiresAt!==void 0&&t.uint32(50).string(e.expiresAt),e.metadata!==void 0&&Wh.encode(Wh.wrap(e.metadata),t.uint32(58).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=yg();for(;n.pos>>3){case 1:if(e!==10)break;i.id=n.string();continue;case 2:if(e!==18)break;i.reason=n.string();continue;case 3:if(e!==26)break;i.message=n.string();continue;case 4:if(e!==34)break;i.toolCallId=n.string();continue;case 5:if(e!==42)break;i.responseSchema=Wh.unwrap(Wh.decode(n,n.uint32()));continue;case 6:if(e!==50)break;i.expiresAt=n.string();continue;case 7:if(e!==58)break;i.metadata=Wh.unwrap(Wh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return bg.fromPartial(e??{})},fromPartial(e){let t=yg();return t.id=e.id??``,t.reason=e.reason??``,t.message=e.message??void 0,t.toolCallId=e.toolCallId??void 0,t.responseSchema=e.responseSchema??void 0,t.expiresAt=e.expiresAt??void 0,t.metadata=e.metadata??void 0,t}},xg=function(e){return e[e.TEXT_MESSAGE_START=0]=`TEXT_MESSAGE_START`,e[e.TEXT_MESSAGE_CONTENT=1]=`TEXT_MESSAGE_CONTENT`,e[e.TEXT_MESSAGE_END=2]=`TEXT_MESSAGE_END`,e[e.TOOL_CALL_START=3]=`TOOL_CALL_START`,e[e.TOOL_CALL_ARGS=4]=`TOOL_CALL_ARGS`,e[e.TOOL_CALL_END=5]=`TOOL_CALL_END`,e[e.STATE_SNAPSHOT=6]=`STATE_SNAPSHOT`,e[e.STATE_DELTA=7]=`STATE_DELTA`,e[e.MESSAGES_SNAPSHOT=8]=`MESSAGES_SNAPSHOT`,e[e.RAW=9]=`RAW`,e[e.CUSTOM=10]=`CUSTOM`,e[e.RUN_STARTED=11]=`RUN_STARTED`,e[e.RUN_FINISHED=12]=`RUN_FINISHED`,e[e.RUN_ERROR=13]=`RUN_ERROR`,e[e.STEP_STARTED=14]=`STEP_STARTED`,e[e.STEP_FINISHED=15]=`STEP_FINISHED`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e}({});function Sg(){return{type:0,timestamp:void 0,rawEvent:void 0}}var Cg={encode(e,t=new Fh){return e.type!==0&&t.uint32(8).int32(e.type),e.timestamp!==void 0&&t.uint32(16).int64(e.timestamp),e.rawEvent!==void 0&&Wh.encode(Wh.wrap(e.rawEvent),t.uint32(26).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Sg();for(;n.pos>>3){case 1:if(e!==8)break;i.type=n.int32();continue;case 2:if(e!==16)break;i.timestamp=c_(n.int64());continue;case 3:if(e!==26)break;i.rawEvent=Wh.unwrap(Wh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Cg.fromPartial(e??{})},fromPartial(e){let t=Sg();return t.type=e.type??0,t.timestamp=e.timestamp??void 0,t.rawEvent=e.rawEvent??void 0,t}};function wg(){return{baseEvent:void 0,messageId:``,role:void 0,name:void 0}}var Tg={encode(e,t=new Fh){return e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join(),e.messageId!==``&&t.uint32(18).string(e.messageId),e.role!==void 0&&t.uint32(26).string(e.role),e.name!==void 0&&t.uint32(34).string(e.name),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=wg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messageId=n.string();continue;case 3:if(e!==26)break;i.role=n.string();continue;case 4:if(e!==34)break;i.name=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Tg.fromPartial(e??{})},fromPartial(e){let t=wg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.messageId=e.messageId??``,t.role=e.role??void 0,t.name=e.name??void 0,t}};function Eg(){return{baseEvent:void 0,messageId:``,delta:``}}var Dg={encode(e,t=new Fh){return e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join(),e.messageId!==``&&t.uint32(18).string(e.messageId),e.delta!==``&&t.uint32(26).string(e.delta),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Eg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messageId=n.string();continue;case 3:if(e!==26)break;i.delta=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Dg.fromPartial(e??{})},fromPartial(e){let t=Eg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.messageId=e.messageId??``,t.delta=e.delta??``,t}};function Og(){return{baseEvent:void 0,messageId:``}}var kg={encode(e,t=new Fh){return e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join(),e.messageId!==``&&t.uint32(18).string(e.messageId),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Og();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messageId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return kg.fromPartial(e??{})},fromPartial(e){let t=Og();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.messageId=e.messageId??``,t}};function Ag(){return{baseEvent:void 0,toolCallId:``,toolCallName:``,parentMessageId:void 0}}var jg={encode(e,t=new Fh){return e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join(),e.toolCallId!==``&&t.uint32(18).string(e.toolCallId),e.toolCallName!==``&&t.uint32(26).string(e.toolCallName),e.parentMessageId!==void 0&&t.uint32(34).string(e.parentMessageId),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Ag();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.toolCallId=n.string();continue;case 3:if(e!==26)break;i.toolCallName=n.string();continue;case 4:if(e!==34)break;i.parentMessageId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return jg.fromPartial(e??{})},fromPartial(e){let t=Ag();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.toolCallId=e.toolCallId??``,t.toolCallName=e.toolCallName??``,t.parentMessageId=e.parentMessageId??void 0,t}};function Mg(){return{baseEvent:void 0,toolCallId:``,delta:``}}var Ng={encode(e,t=new Fh){return e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join(),e.toolCallId!==``&&t.uint32(18).string(e.toolCallId),e.delta!==``&&t.uint32(26).string(e.delta),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Mg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.toolCallId=n.string();continue;case 3:if(e!==26)break;i.delta=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Ng.fromPartial(e??{})},fromPartial(e){let t=Mg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.toolCallId=e.toolCallId??``,t.delta=e.delta??``,t}};function Pg(){return{baseEvent:void 0,toolCallId:``}}var Fg={encode(e,t=new Fh){return e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join(),e.toolCallId!==``&&t.uint32(18).string(e.toolCallId),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Pg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.toolCallId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Fg.fromPartial(e??{})},fromPartial(e){let t=Pg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.toolCallId=e.toolCallId??``,t}};function Ig(){return{baseEvent:void 0,snapshot:void 0}}var Lg={encode(e,t=new Fh){return e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join(),e.snapshot!==void 0&&Wh.encode(Wh.wrap(e.snapshot),t.uint32(18).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Ig();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.snapshot=Wh.unwrap(Wh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Lg.fromPartial(e??{})},fromPartial(e){let t=Ig();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.snapshot=e.snapshot??void 0,t}};function Rg(){return{baseEvent:void 0,delta:[]}}var zg={encode(e,t=new Fh){e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join();for(let n of e.delta)Jh.encode(n,t.uint32(18).fork()).join();return t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Rg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.delta.push(Jh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return zg.fromPartial(e??{})},fromPartial(e){let t=Rg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.delta=e.delta?.map(e=>Jh.fromPartial(e))||[],t}};function Bg(){return{baseEvent:void 0,messages:[]}}var Vg={encode(e,t=new Fh){e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join();for(let n of e.messages)vg.encode(n,t.uint32(18).fork()).join();return t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Bg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messages.push(vg.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Vg.fromPartial(e??{})},fromPartial(e){let t=Bg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.messages=e.messages?.map(e=>vg.fromPartial(e))||[],t}};function Hg(){return{baseEvent:void 0,event:void 0,source:void 0}}var Ug={encode(e,t=new Fh){return e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join(),e.event!==void 0&&Wh.encode(Wh.wrap(e.event),t.uint32(18).fork()).join(),e.source!==void 0&&t.uint32(26).string(e.source),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Hg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.event=Wh.unwrap(Wh.decode(n,n.uint32()));continue;case 3:if(e!==26)break;i.source=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Ug.fromPartial(e??{})},fromPartial(e){let t=Hg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.event=e.event??void 0,t.source=e.source??void 0,t}};function Wg(){return{baseEvent:void 0,name:``,value:void 0}}var Gg={encode(e,t=new Fh){return e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join(),e.name!==``&&t.uint32(18).string(e.name),e.value!==void 0&&Wh.encode(Wh.wrap(e.value),t.uint32(26).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Wg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.name=n.string();continue;case 3:if(e!==26)break;i.value=Wh.unwrap(Wh.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Gg.fromPartial(e??{})},fromPartial(e){let t=Wg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.name=e.name??``,t.value=e.value??void 0,t}};function Kg(){return{baseEvent:void 0,threadId:``,runId:``}}var qg={encode(e,t=new Fh){return e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join(),e.threadId!==``&&t.uint32(18).string(e.threadId),e.runId!==``&&t.uint32(26).string(e.runId),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Kg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.threadId=n.string();continue;case 3:if(e!==26)break;i.runId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return qg.fromPartial(e??{})},fromPartial(e){let t=Kg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.threadId=e.threadId??``,t.runId=e.runId??``,t}};function Jg(){return{baseEvent:void 0,threadId:``,runId:``,result:void 0,outcome:``,interrupts:[]}}var Yg={encode(e,t=new Fh){e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join(),e.threadId!==``&&t.uint32(18).string(e.threadId),e.runId!==``&&t.uint32(26).string(e.runId),e.result!==void 0&&Wh.encode(Wh.wrap(e.result),t.uint32(34).fork()).join(),e.outcome!==``&&t.uint32(42).string(e.outcome);for(let n of e.interrupts)bg.encode(n,t.uint32(50).fork()).join();return t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Jg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.threadId=n.string();continue;case 3:if(e!==26)break;i.runId=n.string();continue;case 4:if(e!==34)break;i.result=Wh.unwrap(Wh.decode(n,n.uint32()));continue;case 5:if(e!==42)break;i.outcome=n.string();continue;case 6:if(e!==50)break;i.interrupts.push(bg.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Yg.fromPartial(e??{})},fromPartial(e){let t=Jg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.threadId=e.threadId??``,t.runId=e.runId??``,t.result=e.result??void 0,t.outcome=e.outcome??``,t.interrupts=e.interrupts?.map(e=>bg.fromPartial(e))||[],t}};function Xg(){return{baseEvent:void 0,code:void 0,message:``}}var Zg={encode(e,t=new Fh){return e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join(),e.code!==void 0&&t.uint32(18).string(e.code),e.message!==``&&t.uint32(26).string(e.message),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Xg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.code=n.string();continue;case 3:if(e!==26)break;i.message=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Zg.fromPartial(e??{})},fromPartial(e){let t=Xg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.code=e.code??void 0,t.message=e.message??``,t}};function Qg(){return{baseEvent:void 0,stepName:``}}var $g={encode(e,t=new Fh){return e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join(),e.stepName!==``&&t.uint32(18).string(e.stepName),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=Qg();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.stepName=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return $g.fromPartial(e??{})},fromPartial(e){let t=Qg();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.stepName=e.stepName??``,t}};function e_(){return{baseEvent:void 0,stepName:``}}var t_={encode(e,t=new Fh){return e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join(),e.stepName!==``&&t.uint32(18).string(e.stepName),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=e_();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.stepName=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return t_.fromPartial(e??{})},fromPartial(e){let t=e_();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.stepName=e.stepName??``,t}};function n_(){return{baseEvent:void 0,messageId:void 0,role:void 0,delta:void 0,name:void 0}}var r_={encode(e,t=new Fh){return e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join(),e.messageId!==void 0&&t.uint32(18).string(e.messageId),e.role!==void 0&&t.uint32(26).string(e.role),e.delta!==void 0&&t.uint32(34).string(e.delta),e.name!==void 0&&t.uint32(42).string(e.name),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=n_();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messageId=n.string();continue;case 3:if(e!==26)break;i.role=n.string();continue;case 4:if(e!==34)break;i.delta=n.string();continue;case 5:if(e!==42)break;i.name=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return r_.fromPartial(e??{})},fromPartial(e){let t=n_();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.messageId=e.messageId??void 0,t.role=e.role??void 0,t.delta=e.delta??void 0,t.name=e.name??void 0,t}};function i_(){return{baseEvent:void 0,toolCallId:void 0,toolCallName:void 0,parentMessageId:void 0,delta:void 0}}var a_={encode(e,t=new Fh){return e.baseEvent!==void 0&&Cg.encode(e.baseEvent,t.uint32(10).fork()).join(),e.toolCallId!==void 0&&t.uint32(18).string(e.toolCallId),e.toolCallName!==void 0&&t.uint32(26).string(e.toolCallName),e.parentMessageId!==void 0&&t.uint32(34).string(e.parentMessageId),e.delta!==void 0&&t.uint32(42).string(e.delta),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=i_();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Cg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.toolCallId=n.string();continue;case 3:if(e!==26)break;i.toolCallName=n.string();continue;case 4:if(e!==34)break;i.parentMessageId=n.string();continue;case 5:if(e!==42)break;i.delta=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return a_.fromPartial(e??{})},fromPartial(e){let t=i_();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Cg.fromPartial(e.baseEvent):void 0,t.toolCallId=e.toolCallId??void 0,t.toolCallName=e.toolCallName??void 0,t.parentMessageId=e.parentMessageId??void 0,t.delta=e.delta??void 0,t}};function o_(){return{textMessageStart:void 0,textMessageContent:void 0,textMessageEnd:void 0,toolCallStart:void 0,toolCallArgs:void 0,toolCallEnd:void 0,stateSnapshot:void 0,stateDelta:void 0,messagesSnapshot:void 0,raw:void 0,custom:void 0,runStarted:void 0,runFinished:void 0,runError:void 0,stepStarted:void 0,stepFinished:void 0,textMessageChunk:void 0,toolCallChunk:void 0}}var s_={encode(e,t=new Fh){return e.textMessageStart!==void 0&&Tg.encode(e.textMessageStart,t.uint32(10).fork()).join(),e.textMessageContent!==void 0&&Dg.encode(e.textMessageContent,t.uint32(18).fork()).join(),e.textMessageEnd!==void 0&&kg.encode(e.textMessageEnd,t.uint32(26).fork()).join(),e.toolCallStart!==void 0&&jg.encode(e.toolCallStart,t.uint32(34).fork()).join(),e.toolCallArgs!==void 0&&Ng.encode(e.toolCallArgs,t.uint32(42).fork()).join(),e.toolCallEnd!==void 0&&Fg.encode(e.toolCallEnd,t.uint32(50).fork()).join(),e.stateSnapshot!==void 0&&Lg.encode(e.stateSnapshot,t.uint32(58).fork()).join(),e.stateDelta!==void 0&&zg.encode(e.stateDelta,t.uint32(66).fork()).join(),e.messagesSnapshot!==void 0&&Vg.encode(e.messagesSnapshot,t.uint32(74).fork()).join(),e.raw!==void 0&&Ug.encode(e.raw,t.uint32(82).fork()).join(),e.custom!==void 0&&Gg.encode(e.custom,t.uint32(90).fork()).join(),e.runStarted!==void 0&&qg.encode(e.runStarted,t.uint32(98).fork()).join(),e.runFinished!==void 0&&Yg.encode(e.runFinished,t.uint32(106).fork()).join(),e.runError!==void 0&&Zg.encode(e.runError,t.uint32(114).fork()).join(),e.stepStarted!==void 0&&$g.encode(e.stepStarted,t.uint32(122).fork()).join(),e.stepFinished!==void 0&&t_.encode(e.stepFinished,t.uint32(130).fork()).join(),e.textMessageChunk!==void 0&&r_.encode(e.textMessageChunk,t.uint32(138).fork()).join(),e.toolCallChunk!==void 0&&a_.encode(e.toolCallChunk,t.uint32(146).fork()).join(),t},decode(e,t){let n=e instanceof F?e:new F(e),r=t===void 0?n.len:n.pos+t,i=o_();for(;n.pos>>3){case 1:if(e!==10)break;i.textMessageStart=Tg.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.textMessageContent=Dg.decode(n,n.uint32());continue;case 3:if(e!==26)break;i.textMessageEnd=kg.decode(n,n.uint32());continue;case 4:if(e!==34)break;i.toolCallStart=jg.decode(n,n.uint32());continue;case 5:if(e!==42)break;i.toolCallArgs=Ng.decode(n,n.uint32());continue;case 6:if(e!==50)break;i.toolCallEnd=Fg.decode(n,n.uint32());continue;case 7:if(e!==58)break;i.stateSnapshot=Lg.decode(n,n.uint32());continue;case 8:if(e!==66)break;i.stateDelta=zg.decode(n,n.uint32());continue;case 9:if(e!==74)break;i.messagesSnapshot=Vg.decode(n,n.uint32());continue;case 10:if(e!==82)break;i.raw=Ug.decode(n,n.uint32());continue;case 11:if(e!==90)break;i.custom=Gg.decode(n,n.uint32());continue;case 12:if(e!==98)break;i.runStarted=qg.decode(n,n.uint32());continue;case 13:if(e!==106)break;i.runFinished=Yg.decode(n,n.uint32());continue;case 14:if(e!==114)break;i.runError=Zg.decode(n,n.uint32());continue;case 15:if(e!==122)break;i.stepStarted=$g.decode(n,n.uint32());continue;case 16:if(e!==130)break;i.stepFinished=t_.decode(n,n.uint32());continue;case 17:if(e!==138)break;i.textMessageChunk=r_.decode(n,n.uint32());continue;case 18:if(e!==146)break;i.toolCallChunk=a_.decode(n,n.uint32());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return s_.fromPartial(e??{})},fromPartial(e){let t=o_();return t.textMessageStart=e.textMessageStart!==void 0&&e.textMessageStart!==null?Tg.fromPartial(e.textMessageStart):void 0,t.textMessageContent=e.textMessageContent!==void 0&&e.textMessageContent!==null?Dg.fromPartial(e.textMessageContent):void 0,t.textMessageEnd=e.textMessageEnd!==void 0&&e.textMessageEnd!==null?kg.fromPartial(e.textMessageEnd):void 0,t.toolCallStart=e.toolCallStart!==void 0&&e.toolCallStart!==null?jg.fromPartial(e.toolCallStart):void 0,t.toolCallArgs=e.toolCallArgs!==void 0&&e.toolCallArgs!==null?Ng.fromPartial(e.toolCallArgs):void 0,t.toolCallEnd=e.toolCallEnd!==void 0&&e.toolCallEnd!==null?Fg.fromPartial(e.toolCallEnd):void 0,t.stateSnapshot=e.stateSnapshot!==void 0&&e.stateSnapshot!==null?Lg.fromPartial(e.stateSnapshot):void 0,t.stateDelta=e.stateDelta!==void 0&&e.stateDelta!==null?zg.fromPartial(e.stateDelta):void 0,t.messagesSnapshot=e.messagesSnapshot!==void 0&&e.messagesSnapshot!==null?Vg.fromPartial(e.messagesSnapshot):void 0,t.raw=e.raw!==void 0&&e.raw!==null?Ug.fromPartial(e.raw):void 0,t.custom=e.custom!==void 0&&e.custom!==null?Gg.fromPartial(e.custom):void 0,t.runStarted=e.runStarted!==void 0&&e.runStarted!==null?qg.fromPartial(e.runStarted):void 0,t.runFinished=e.runFinished!==void 0&&e.runFinished!==null?Yg.fromPartial(e.runFinished):void 0,t.runError=e.runError!==void 0&&e.runError!==null?Zg.fromPartial(e.runError):void 0,t.stepStarted=e.stepStarted!==void 0&&e.stepStarted!==null?$g.fromPartial(e.stepStarted):void 0,t.stepFinished=e.stepFinished!==void 0&&e.stepFinished!==null?t_.fromPartial(e.stepFinished):void 0,t.textMessageChunk=e.textMessageChunk!==void 0&&e.textMessageChunk!==null?r_.fromPartial(e.textMessageChunk):void 0,t.toolCallChunk=e.toolCallChunk!==void 0&&e.toolCallChunk!==null?a_.fromPartial(e.toolCallChunk):void 0,t}};function c_(e){let t=globalThis.Number(e.toString());if(t>globalThis.Number.MAX_SAFE_INTEGER)throw new globalThis.Error(`Value is larger than Number.MAX_SAFE_INTEGER`);if(t{if(!(!e||typeof e!=`object`)){if(e.data)return{type:`data`,value:e.data.value,mimeType:e.data.mimeType};if(e.url)return{type:`url`,value:e.url.value,mimeType:e.url.mimeType}}},u_=e=>{if(!(!e||typeof e!=`object`)){if(e.text)return{type:`text`,text:e.text.text};if(e.image)return{type:`image`,source:l_(e.image.source),metadata:e.image.metadata};if(e.audio)return{type:`audio`,source:l_(e.audio.source),metadata:e.audio.metadata};if(e.video)return{type:`video`,source:l_(e.video.source),metadata:e.video.metadata};if(e.document)return{type:`document`,source:l_(e.document.source),metadata:e.document.metadata}}};function d_(e){let t=s_.decode(e),n=Object.values(t).find(e=>e!==void 0);if(!n)throw Error(`Invalid event`);if(n.type=xg[n.baseEvent.type],n.timestamp=n.baseEvent.timestamp,n.rawEvent=n.baseEvent.rawEvent,delete n.baseEvent,n.type===P.MESSAGES_SNAPSHOT)for(let e of n.messages){let t=e;if(t.role===`user`&&Array.isArray(t.contentParts)){let e=t.contentParts.map(e=>u_(e)).filter(e=>e!==void 0);e.length>0&&(t.content=e)}Array.isArray(t.contentParts)&&t.contentParts.length===0&&(t.contentParts=void 0),t.toolCalls?.length===0&&(t.toolCalls=void 0)}if(n.type===P.RUN_FINISHED){let e=n,t=typeof e.outcome==`string`&&e.outcome!==``?e.outcome:void 0,r=Array.isArray(e.interrupts)?e.interrupts:[];delete e.interrupts,t===`interrupt`?e.outcome={type:`interrupt`,interrupts:r}:t===`success`?e.outcome={type:`success`}:delete e.outcome}if(n.type===P.STATE_DELTA)for(let e of n.delta)e.op=mee[e.op].toLowerCase(),Object.keys(e).forEach(t=>{e[t]===void 0&&delete e[t]});return Object.keys(n).forEach(e=>{n[e]===void 0&&delete n[e]}),Kf.parse(n)}var f_;(function(e){e.assertEqual=e=>{};function t(e){}e.assertIs=t;function n(e){throw Error()}e.assertNever=n,e.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},e.getValidEnumValues=t=>{let n=e.objectKeys(t).filter(e=>typeof t[t[e]]!=`number`),r={};for(let e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys=typeof Object.keys==`function`?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(let n of e)if(t(n))return n},e.isInteger=typeof Number.isInteger==`function`?e=>Number.isInteger(e):e=>typeof e==`number`&&Number.isFinite(e)&&Math.floor(e)===e;function r(e,t=` | `){return e.map(e=>typeof e==`string`?`'${e}'`:e).join(t)}e.joinValues=r,e.jsonStringifyReplacer=(e,t)=>typeof t==`bigint`?t.toString():t})(f_||={});var p_;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})(p_||={});var m_=f_.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),h_=e=>{switch(typeof e){case`undefined`:return m_.undefined;case`string`:return m_.string;case`number`:return Number.isNaN(e)?m_.nan:m_.number;case`boolean`:return m_.boolean;case`function`:return m_.function;case`bigint`:return m_.bigint;case`symbol`:return m_.symbol;case`object`:return Array.isArray(e)?m_.array:e===null?m_.null:e.then&&typeof e.then==`function`&&e.catch&&typeof e.catch==`function`?m_.promise:typeof Map<`u`&&e instanceof Map?m_.map:typeof Set<`u`&&e instanceof Set?m_.set:typeof Date<`u`&&e instanceof Date?m_.date:m_.object;default:return m_.unknown}},I=f_.arrayToEnum([`invalid_type`,`invalid_literal`,`custom`,`invalid_union`,`invalid_union_discriminator`,`invalid_enum_value`,`unrecognized_keys`,`invalid_arguments`,`invalid_return_type`,`invalid_date`,`invalid_string`,`too_small`,`too_big`,`invalid_intersection_types`,`not_multiple_of`,`not_finite`]),g_=class e extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=`ZodError`,this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`)i.unionErrors.map(r);else if(i.code===`invalid_return_type`)r(i.returnTypeError);else if(i.code===`invalid_arguments`)r(i.argumentsError);else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;re.message){let t={},n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};g_.create=e=>new g_(e);var __=(e,t)=>{let n;switch(e.code){case I.invalid_type:n=e.received===m_.undefined?`Required`:`Expected ${e.expected}, received ${e.received}`;break;case I.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,f_.jsonStringifyReplacer)}`;break;case I.unrecognized_keys:n=`Unrecognized key(s) in object: ${f_.joinValues(e.keys,`, `)}`;break;case I.invalid_union:n=`Invalid input`;break;case I.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${f_.joinValues(e.options)}`;break;case I.invalid_enum_value:n=`Invalid enum value. Expected ${f_.joinValues(e.options)}, received '${e.received}'`;break;case I.invalid_arguments:n=`Invalid function arguments`;break;case I.invalid_return_type:n=`Invalid function return type`;break;case I.invalid_date:n=`Invalid date`;break;case I.invalid_string:typeof e.validation==`object`?`includes`in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position==`number`&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):`startsWith`in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:`endsWith`in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:f_.assertNever(e.validation):n=e.validation===`regex`?`Invalid`:`Invalid ${e.validation}`;break;case I.too_small:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at least`:`more than`} ${e.minimum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at least`:`over`} ${e.minimum} character(s)`:e.type===`number`||e.type===`bigint`?`Number must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${e.minimum}`:e.type===`date`?`Date must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(e.minimum))}`:`Invalid input`;break;case I.too_big:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at most`:`less than`} ${e.maximum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at most`:`under`} ${e.maximum} character(s)`:e.type===`number`?`Number must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`bigint`?`BigInt must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`date`?`Date must be ${e.exact?`exactly`:e.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(e.maximum))}`:`Invalid input`;break;case I.custom:n=`Invalid input`;break;case I.invalid_intersection_types:n=`Intersection results could not be merged`;break;case I.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case I.not_finite:n=`Number must be finite`;break;default:n=t.defaultError,f_.assertNever(e)}return{message:n}},hee=__;function v_(){return hee}var y_=e=>{let{data:t,path:n,errorMaps:r,issueData:i}=e,a=[...n,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s=``,c=r.filter(e=>!!e).slice().reverse();for(let e of c)s=e(o,{data:t,defaultError:s}).message;return{...i,path:a,message:s}};function L(e,t){let n=v_(),r=y_({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===__?void 0:__].filter(e=>!!e)});e.common.issues.push(r)}var b_=class e{constructor(){this.value=`valid`}dirty(){this.value===`valid`&&(this.value=`dirty`)}abort(){this.value!==`aborted`&&(this.value=`aborted`)}static mergeArray(e,t){let n=[];for(let r of t){if(r.status===`aborted`)return x_;r.status===`dirty`&&e.dirty(),n.push(r.value)}return{status:e.value,value:n}}static async mergeObjectAsync(t,n){let r=[];for(let e of n){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return e.mergeObjectSync(t,r)}static mergeObjectSync(e,t){let n={};for(let r of t){let{key:t,value:i}=r;if(t.status===`aborted`||i.status===`aborted`)return x_;t.status===`dirty`&&e.dirty(),i.status===`dirty`&&e.dirty(),t.value!==`__proto__`&&(i.value!==void 0||r.alwaysSet)&&(n[t.value]=i.value)}return{status:e.value,value:n}}},x_=Object.freeze({status:`aborted`}),S_=e=>({status:`dirty`,value:e}),C_=e=>({status:`valid`,value:e}),w_=e=>e.status===`aborted`,T_=e=>e.status===`dirty`,E_=e=>e.status===`valid`,D_=e=>typeof Promise<`u`&&e instanceof Promise,O_;(function(e){e.errToObj=e=>typeof e==`string`?{message:e}:e||{},e.toString=e=>typeof e==`string`?e:e?.message})(O_||={});var k_=class{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},A_=(e,t)=>{if(E_(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(`Validation failed but no issues detected.`);return{success:!1,get error(){if(this._error)return this._error;let t=new g_(e.common.issues);return this._error=t,this._error}}};function j_(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return t.code===`invalid_enum_value`?{message:a??i.defaultError}:i.data===void 0?{message:a??r??i.defaultError}:t.code===`invalid_type`?{message:a??n??i.defaultError}:{message:i.defaultError}},description:i}}var M_=class{get description(){return this._def.description}_getType(e){return h_(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:h_(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new b_,ctx:{common:e.parent.common,data:e.data,parsedType:h_(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(D_(t))throw Error(`Synchronous parse encountered promise.`);return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:h_(e)};return A_(n,this._parseSync({data:e,path:n.path,parent:n}))}"~validate"(e){let t={common:{issues:[],async:!!this[`~standard`].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:h_(e)};if(!this[`~standard`].async)try{let n=this._parseSync({data:e,path:[],parent:t});return E_(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(`encountered`)&&(this[`~standard`].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>E_(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:h_(e)},r=this._parse({data:e,path:n.path,parent:n});return A_(n,await(D_(r)?r:Promise.resolve(r)))}refine(e,t){let n=e=>typeof t==`string`||t===void 0?{message:t}:typeof t==`function`?t(e):t;return this._refinement((t,r)=>{let i=e(t),a=()=>r.addIssue({code:I.custom,...n(t)});return typeof Promise<`u`&&i instanceof Promise?i.then(e=>e?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(e,t){return this._refinement((n,r)=>e(n)?!0:(r.addIssue(typeof t==`function`?t(n,r):t),!1))}_refinement(e){return new Pv({schema:this,typeName:Uv.ZodEffects,effect:{type:`refinement`,refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[`~standard`]={version:1,vendor:`zod`,validate:e=>this[`~validate`](e)}}optional(){return Fv.create(this,this._def)}nullable(){return Iv.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return gv.create(this)}promise(){return Nv.create(this,this._def)}or(e){return yv.create([this,e],this._def)}and(e){return Cv.create(this,e,this._def)}transform(e){return new Pv({...j_(this._def),schema:this,typeName:Uv.ZodEffects,effect:{type:`transform`,transform:e}})}default(e){let t=typeof e==`function`?e:()=>e;return new Lv({...j_(this._def),innerType:this,defaultValue:t,typeName:Uv.ZodDefault})}brand(){return new Bv({typeName:Uv.ZodBranded,type:this,...j_(this._def)})}catch(e){let t=typeof e==`function`?e:()=>e;return new Rv({...j_(this._def),innerType:this,catchValue:t,typeName:Uv.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return Vv.create(this,e)}readonly(){return Hv.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},N_=/^c[^\s-]{8,}$/i,P_=/^[0-9a-z]+$/,F_=/^[0-9A-HJKMNP-TV-Z]{26}$/i,I_=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,L_=/^[a-z0-9_-]{21}$/i,R_=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,z_=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,B_=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,V_=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,H_,U_=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,W_=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,G_=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,K_=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,q_=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,J_=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Y_=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`,X_=RegExp(`^${Y_}$`);function Z_(e){let t=`[0-5]\\d`;e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision??(t=`${t}(\\.\\d+)?`);let n=e.precision?`+`:`?`;return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function Q_(e){return RegExp(`^${Z_(e)}$`)}function $_(e){let t=`${Y_}T${Z_(e)}`,n=[];return n.push(e.local?`Z?`:`Z`),e.offset&&n.push(`([+-]\\d{2}:?\\d{2})`),t=`${t}(${n.join(`|`)})`,RegExp(`^${t}$`)}function ev(e,t){return!!((t===`v4`||!t)&&U_.test(e)||(t===`v6`||!t)&&G_.test(e))}function tv(e,t){if(!R_.test(e))return!1;try{let[n]=e.split(`.`);if(!n)return!1;let r=n.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(n.length+(4-n.length%4)%4,`=`),i=JSON.parse(atob(r));return!(typeof i!=`object`||!i||`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&i.alg!==t)}catch{return!1}}function nv(e,t){return!!((t===`v4`||!t)&&W_.test(e)||(t===`v6`||!t)&&K_.test(e))}var rv=class e extends M_{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==m_.string){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:m_.string,received:t.parsedType}),x_}let t=new b_,n;for(let r of this._def.checks)if(r.kind===`min`)e.data.lengthr.value&&(n=this._getOrReturnCtx(e,n),L(n,{code:I.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),t.dirty());else if(r.kind===`length`){let i=e.data.length>r.value,a=e.data.lengthe.test(t),{validation:t,code:I.invalid_string,...O_.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(e){return this._addCheck({kind:`email`,...O_.errToObj(e)})}url(e){return this._addCheck({kind:`url`,...O_.errToObj(e)})}emoji(e){return this._addCheck({kind:`emoji`,...O_.errToObj(e)})}uuid(e){return this._addCheck({kind:`uuid`,...O_.errToObj(e)})}nanoid(e){return this._addCheck({kind:`nanoid`,...O_.errToObj(e)})}cuid(e){return this._addCheck({kind:`cuid`,...O_.errToObj(e)})}cuid2(e){return this._addCheck({kind:`cuid2`,...O_.errToObj(e)})}ulid(e){return this._addCheck({kind:`ulid`,...O_.errToObj(e)})}base64(e){return this._addCheck({kind:`base64`,...O_.errToObj(e)})}base64url(e){return this._addCheck({kind:`base64url`,...O_.errToObj(e)})}jwt(e){return this._addCheck({kind:`jwt`,...O_.errToObj(e)})}ip(e){return this._addCheck({kind:`ip`,...O_.errToObj(e)})}cidr(e){return this._addCheck({kind:`cidr`,...O_.errToObj(e)})}datetime(e){return typeof e==`string`?this._addCheck({kind:`datetime`,precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:`datetime`,precision:e?.precision===void 0?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...O_.errToObj(e?.message)})}date(e){return this._addCheck({kind:`date`,message:e})}time(e){return typeof e==`string`?this._addCheck({kind:`time`,precision:null,message:e}):this._addCheck({kind:`time`,precision:e?.precision===void 0?null:e?.precision,...O_.errToObj(e?.message)})}duration(e){return this._addCheck({kind:`duration`,...O_.errToObj(e)})}regex(e,t){return this._addCheck({kind:`regex`,regex:e,...O_.errToObj(t)})}includes(e,t){return this._addCheck({kind:`includes`,value:e,position:t?.position,...O_.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:`startsWith`,value:e,...O_.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:`endsWith`,value:e,...O_.errToObj(t)})}min(e,t){return this._addCheck({kind:`min`,value:e,...O_.errToObj(t)})}max(e,t){return this._addCheck({kind:`max`,value:e,...O_.errToObj(t)})}length(e,t){return this._addCheck({kind:`length`,value:e,...O_.errToObj(t)})}nonempty(e){return this.min(1,O_.errToObj(e))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:`trim`}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toLowerCase`}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toUpperCase`}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind===`datetime`)}get isDate(){return!!this._def.checks.find(e=>e.kind===`date`)}get isTime(){return!!this._def.checks.find(e=>e.kind===`time`)}get isDuration(){return!!this._def.checks.find(e=>e.kind===`duration`)}get isEmail(){return!!this._def.checks.find(e=>e.kind===`email`)}get isURL(){return!!this._def.checks.find(e=>e.kind===`url`)}get isEmoji(){return!!this._def.checks.find(e=>e.kind===`emoji`)}get isUUID(){return!!this._def.checks.find(e=>e.kind===`uuid`)}get isNANOID(){return!!this._def.checks.find(e=>e.kind===`nanoid`)}get isCUID(){return!!this._def.checks.find(e=>e.kind===`cuid`)}get isCUID2(){return!!this._def.checks.find(e=>e.kind===`cuid2`)}get isULID(){return!!this._def.checks.find(e=>e.kind===`ulid`)}get isIP(){return!!this._def.checks.find(e=>e.kind===`ip`)}get isCIDR(){return!!this._def.checks.find(e=>e.kind===`cidr`)}get isBase64(){return!!this._def.checks.find(e=>e.kind===`base64`)}get isBase64url(){return!!this._def.checks.find(e=>e.kind===`base64url`)}get minLength(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew rv({checks:[],typeName:Uv.ZodString,coerce:e?.coerce??!1,...j_(e)});function iv(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=(t.toString().split(`.`)[1]||``).length,i=n>r?n:r;return Number.parseInt(e.toFixed(i).replace(`.`,``))%Number.parseInt(t.toFixed(i).replace(`.`,``))/10**i}var av=class e extends M_{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==m_.number){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:m_.number,received:t.parsedType}),x_}let t,n=new b_;for(let r of this._def.checks)r.kind===`int`?f_.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),L(t,{code:I.invalid_type,expected:`integer`,received:`float`,message:r.message}),n.dirty()):r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),L(t,{code:I.too_big,maximum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):r.kind===`multipleOf`?iv(e.data,r.value)!==0&&(t=this._getOrReturnCtx(e,t),L(t,{code:I.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):r.kind===`finite`?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),L(t,{code:I.not_finite,message:r.message}),n.dirty()):f_.assertNever(r);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit(`min`,e,!0,O_.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,O_.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,O_.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,O_.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:O_.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(e){return this._addCheck({kind:`int`,message:O_.toString(e)})}positive(e){return this._addCheck({kind:`min`,value:0,inclusive:!1,message:O_.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:0,inclusive:!1,message:O_.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:0,inclusive:!0,message:O_.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:0,inclusive:!0,message:O_.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:O_.toString(t)})}finite(e){return this._addCheck({kind:`finite`,message:O_.toString(e)})}safe(e){return this._addCheck({kind:`min`,inclusive:!0,value:-(2**53-1),message:O_.toString(e)})._addCheck({kind:`max`,inclusive:!0,value:2**53-1,message:O_.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuee.kind===`int`||e.kind===`multipleOf`&&f_.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(n.kind===`finite`||n.kind===`int`||n.kind===`multipleOf`)return!0;else n.kind===`min`?(t===null||n.value>t)&&(t=n.value):n.kind===`max`&&(e===null||n.valuenew av({checks:[],typeName:Uv.ZodNumber,coerce:e?.coerce||!1,...j_(e)});var ov=class e extends M_{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==m_.bigint)return this._getInvalidInput(e);let t,n=new b_;for(let r of this._def.checks)r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),L(t,{code:I.too_big,type:`bigint`,maximum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):r.kind===`multipleOf`?e.data%r.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),L(t,{code:I.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):f_.assertNever(r);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:m_.bigint,received:t.parsedType}),x_}gte(e,t){return this.setLimit(`min`,e,!0,O_.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,O_.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,O_.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,O_.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:O_.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!1,message:O_.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!1,message:O_.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!0,message:O_.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!0,message:O_.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:O_.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew ov({checks:[],typeName:Uv.ZodBigInt,coerce:e?.coerce??!1,...j_(e)});var sv=class extends M_{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==m_.boolean){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:m_.boolean,received:t.parsedType}),x_}return C_(e.data)}};sv.create=e=>new sv({typeName:Uv.ZodBoolean,coerce:e?.coerce||!1,...j_(e)});var cv=class e extends M_{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==m_.date){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:m_.date,received:t.parsedType}),x_}if(Number.isNaN(e.data.getTime()))return L(this._getOrReturnCtx(e),{code:I.invalid_date}),x_;let t=new b_,n;for(let r of this._def.checks)r.kind===`min`?e.data.getTime()r.value&&(n=this._getOrReturnCtx(e,n),L(n,{code:I.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:`date`}),t.dirty()):f_.assertNever(r);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(e,t){return this._addCheck({kind:`min`,value:e.getTime(),message:O_.toString(t)})}max(e,t){return this._addCheck({kind:`max`,value:e.getTime(),message:O_.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e==null?null:new Date(e)}get maxDate(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew cv({checks:[],coerce:e?.coerce||!1,typeName:Uv.ZodDate,...j_(e)});var lv=class extends M_{_parse(e){if(this._getType(e)!==m_.symbol){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:m_.symbol,received:t.parsedType}),x_}return C_(e.data)}};lv.create=e=>new lv({typeName:Uv.ZodSymbol,...j_(e)});var uv=class extends M_{_parse(e){if(this._getType(e)!==m_.undefined){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:m_.undefined,received:t.parsedType}),x_}return C_(e.data)}};uv.create=e=>new uv({typeName:Uv.ZodUndefined,...j_(e)});var dv=class extends M_{_parse(e){if(this._getType(e)!==m_.null){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:m_.null,received:t.parsedType}),x_}return C_(e.data)}};dv.create=e=>new dv({typeName:Uv.ZodNull,...j_(e)});var fv=class extends M_{constructor(){super(...arguments),this._any=!0}_parse(e){return C_(e.data)}};fv.create=e=>new fv({typeName:Uv.ZodAny,...j_(e)});var pv=class extends M_{constructor(){super(...arguments),this._unknown=!0}_parse(e){return C_(e.data)}};pv.create=e=>new pv({typeName:Uv.ZodUnknown,...j_(e)});var mv=class extends M_{_parse(e){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:m_.never,received:t.parsedType}),x_}};mv.create=e=>new mv({typeName:Uv.ZodNever,...j_(e)});var hv=class extends M_{_parse(e){if(this._getType(e)!==m_.undefined){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:m_.void,received:t.parsedType}),x_}return C_(e.data)}};hv.create=e=>new hv({typeName:Uv.ZodVoid,...j_(e)});var gv=class e extends M_{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==m_.array)return L(t,{code:I.invalid_type,expected:m_.array,received:t.parsedType}),x_;if(r.exactLength!==null){let e=t.data.length>r.exactLength.value,i=t.data.lengthr.maxLength.value&&(L(t,{code:I.too_big,maximum:r.maxLength.value,type:`array`,inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>r.type._parseAsync(new k_(t,e,t.path,n)))).then(e=>b_.mergeArray(n,e));let i=[...t.data].map((e,n)=>r.type._parseSync(new k_(t,e,t.path,n)));return b_.mergeArray(n,i)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:O_.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:O_.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:O_.toString(n)}})}nonempty(e){return this.min(1,e)}};gv.create=(e,t)=>new gv({type:e,minLength:null,maxLength:null,exactLength:null,typeName:Uv.ZodArray,...j_(t)});function _v(e){if(e instanceof vv){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=Fv.create(_v(r))}return new vv({...e._def,shape:()=>t})}else if(e instanceof gv)return new gv({...e._def,type:_v(e.element)});else if(e instanceof Fv)return Fv.create(_v(e.unwrap()));else if(e instanceof Iv)return Iv.create(_v(e.unwrap()));else if(e instanceof wv)return wv.create(e.items.map(e=>_v(e)));else return e}var vv=class e extends M_{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=f_.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==m_.object){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:m_.object,received:t.parsedType}),x_}let{status:t,ctx:n}=this._processInputParams(e),{shape:r,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof mv&&this._def.unknownKeys===`strip`))for(let e in n.data)i.includes(e)||a.push(e);let o=[];for(let e of i){let t=r[e],i=n.data[e];o.push({key:{status:`valid`,value:e},value:t._parse(new k_(n,i,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof mv){let e=this._def.unknownKeys;if(e===`passthrough`)for(let e of a)o.push({key:{status:`valid`,value:e},value:{status:`valid`,value:n.data[e]}});else if(e===`strict`)a.length>0&&(L(n,{code:I.unrecognized_keys,keys:a}),t.dirty());else if(e!==`strip`)throw Error(`Internal ZodObject error: invalid unknownKeys value.`)}else{let e=this._def.catchall;for(let t of a){let r=n.data[t];o.push({key:{status:`valid`,value:t},value:e._parse(new k_(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of o){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>b_.mergeObjectSync(t,e)):b_.mergeObjectSync(t,o)}get shape(){return this._def.shape()}strict(t){return O_.errToObj,new e({...this._def,unknownKeys:`strict`,...t===void 0?{}:{errorMap:(e,n)=>{let r=this._def.errorMap?.(e,n).message??n.defaultError;return e.code===`unrecognized_keys`?{message:O_.errToObj(t).message??r}:{message:r}}}})}strip(){return new e({...this._def,unknownKeys:`strip`})}passthrough(){return new e({...this._def,unknownKeys:`passthrough`})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:Uv.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let n={};for(let e of f_.objectKeys(t))t[e]&&this.shape[e]&&(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}omit(t){let n={};for(let e of f_.objectKeys(this.shape))t[e]||(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}deepPartial(){return _v(this)}partial(t){let n={};for(let e of f_.objectKeys(this.shape)){let r=this.shape[e];t&&!t[e]?n[e]=r:n[e]=r.optional()}return new e({...this._def,shape:()=>n})}required(t){let n={};for(let e of f_.objectKeys(this.shape))if(t&&!t[e])n[e]=this.shape[e];else{let t=this.shape[e];for(;t instanceof Fv;)t=t._def.innerType;n[e]=t}return new e({...this._def,shape:()=>n})}keyof(){return Av(f_.objectKeys(this.shape))}};vv.create=(e,t)=>new vv({shape:()=>e,unknownKeys:`strip`,catchall:mv.create(),typeName:Uv.ZodObject,...j_(t)}),vv.strictCreate=(e,t)=>new vv({shape:()=>e,unknownKeys:`strict`,catchall:mv.create(),typeName:Uv.ZodObject,...j_(t)}),vv.lazycreate=(e,t)=>new vv({shape:e,unknownKeys:`strip`,catchall:mv.create(),typeName:Uv.ZodObject,...j_(t)});var yv=class extends M_{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;function r(e){for(let t of e)if(t.result.status===`valid`)return t.result;for(let n of e)if(n.result.status===`dirty`)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new g_(e.ctx.common.issues));return L(t,{code:I.invalid_union,unionErrors:n}),x_}if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(r);{let e,r=[];for(let i of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:n});if(a.status===`valid`)return a;a.status===`dirty`&&!e&&(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=r.map(e=>new g_(e));return L(t,{code:I.invalid_union,unionErrors:i}),x_}}get options(){return this._def.options}};yv.create=(e,t)=>new yv({options:e,typeName:Uv.ZodUnion,...j_(t)});var bv=e=>e instanceof Ov?bv(e.schema):e instanceof Pv?bv(e.innerType()):e instanceof kv?[e.value]:e instanceof jv?e.options:e instanceof Mv?f_.objectValues(e.enum):e instanceof Lv?bv(e._def.innerType):e instanceof uv?[void 0]:e instanceof dv?[null]:e instanceof Fv?[void 0,...bv(e.unwrap())]:e instanceof Iv?[null,...bv(e.unwrap())]:e instanceof Bv||e instanceof Hv?bv(e.unwrap()):e instanceof Rv?bv(e._def.innerType):[],xv=class e extends M_{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==m_.object)return L(t,{code:I.invalid_type,expected:m_.object,received:t.parsedType}),x_;let n=this.discriminator,r=t.data[n],i=this.optionsMap.get(r);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(L(t,{code:I.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),x_)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){let i=new Map;for(let e of n){let n=bv(e.shape[t]);if(!n.length)throw Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let r of n){if(i.has(r))throw Error(`Discriminator property ${String(t)} has duplicate value ${String(r)}`);i.set(r,e)}}return new e({typeName:Uv.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...j_(r)})}};function Sv(e,t){let n=h_(e),r=h_(t);if(e===t)return{valid:!0,data:e};if(n===m_.object&&r===m_.object){let n=f_.objectKeys(t),r=f_.objectKeys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=Sv(e[n],t[n]);if(!r.valid)return{valid:!1};i[n]=r.data}return{valid:!0,data:i}}else if(n===m_.array&&r===m_.array){if(e.length!==t.length)return{valid:!1};let n=[];for(let r=0;r{if(w_(e)||w_(r))return x_;let i=Sv(e.value,r.value);return i.valid?((T_(e)||T_(r))&&t.dirty(),{status:t.value,value:i.data}):(L(n,{code:I.invalid_intersection_types}),x_)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([e,t])=>r(e,t)):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};Cv.create=(e,t,n)=>new Cv({left:e,right:t,typeName:Uv.ZodIntersection,...j_(n)});var wv=class e extends M_{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==m_.array)return L(n,{code:I.invalid_type,expected:m_.array,received:n.parsedType}),x_;if(n.data.lengththis._def.items.length&&(L(n,{code:I.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),t.dirty());let r=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new k_(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(r).then(e=>b_.mergeArray(t,e)):b_.mergeArray(t,r)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};wv.create=(e,t)=>{if(!Array.isArray(e))throw Error(`You must pass an array of schemas to z.tuple([ ... ])`);return new wv({items:e,typeName:Uv.ZodTuple,rest:null,...j_(t)})};var Tv=class e extends M_{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==m_.object)return L(n,{code:I.invalid_type,expected:m_.object,received:n.parsedType}),x_;let r=[],i=this._def.keyType,a=this._def.valueType;for(let e in n.data)r.push({key:i._parse(new k_(n,e,n.path,e)),value:a._parse(new k_(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?b_.mergeObjectAsync(t,r):b_.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof M_?new e({keyType:t,valueType:n,typeName:Uv.ZodRecord,...j_(r)}):new e({keyType:rv.create(),valueType:t,typeName:Uv.ZodRecord,...j_(n)})}},Ev=class extends M_{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==m_.map)return L(n,{code:I.invalid_type,expected:m_.map,received:n.parsedType}),x_;let r=this._def.keyType,i=this._def.valueType,a=[...n.data.entries()].map(([e,t],a)=>({key:r._parse(new k_(n,e,n.path,[a,`key`])),value:i._parse(new k_(n,t,n.path,[a,`value`]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of a){let r=await n.key,i=await n.value;if(r.status===`aborted`||i.status===`aborted`)return x_;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}})}else{let e=new Map;for(let n of a){let r=n.key,i=n.value;if(r.status===`aborted`||i.status===`aborted`)return x_;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}}};Ev.create=(e,t,n)=>new Ev({valueType:t,keyType:e,typeName:Uv.ZodMap,...j_(n)});var Dv=class e extends M_{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==m_.set)return L(n,{code:I.invalid_type,expected:m_.set,received:n.parsedType}),x_;let r=this._def;r.minSize!==null&&n.data.sizer.maxSize.value&&(L(n,{code:I.too_big,maximum:r.maxSize.value,type:`set`,inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let i=this._def.valueType;function a(e){let n=new Set;for(let r of e){if(r.status===`aborted`)return x_;r.status===`dirty`&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let o=[...n.data.values()].map((e,t)=>i._parse(new k_(n,e,n.path,t)));return n.common.async?Promise.all(o).then(e=>a(e)):a(o)}min(t,n){return new e({...this._def,minSize:{value:t,message:O_.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:O_.toString(n)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};Dv.create=(e,t)=>new Dv({valueType:e,minSize:null,maxSize:null,typeName:Uv.ZodSet,...j_(t)});var gee=class e extends M_{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==m_.function)return L(t,{code:I.invalid_type,expected:m_.function,received:t.parsedType}),x_;function n(e,n){return y_({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,v_(),__].filter(e=>!!e),issueData:{code:I.invalid_arguments,argumentsError:n}})}function r(e,n){return y_({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,v_(),__].filter(e=>!!e),issueData:{code:I.invalid_return_type,returnTypeError:n}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof Nv){let e=this;return C_(async function(...t){let o=new g_([]),s=await e._def.args.parseAsync(t,i).catch(e=>{throw o.addIssue(n(t,e)),o}),c=await Reflect.apply(a,this,s);return await e._def.returns._def.type.parseAsync(c,i).catch(e=>{throw o.addIssue(r(c,e)),o})})}else{let e=this;return C_(function(...t){let o=e._def.args.safeParse(t,i);if(!o.success)throw new g_([n(t,o.error)]);let s=Reflect.apply(a,this,o.data),c=e._def.returns.safeParse(s,i);if(!c.success)throw new g_([r(s,c.error)]);return c.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:wv.create(t).rest(pv.create())})}returns(t){return new e({...this._def,returns:t})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(t,n,r){return new e({args:t||wv.create([]).rest(pv.create()),returns:n||pv.create(),typeName:Uv.ZodFunction,...j_(r)})}},Ov=class extends M_{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};Ov.create=(e,t)=>new Ov({getter:e,typeName:Uv.ZodLazy,...j_(t)});var kv=class extends M_{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return L(t,{received:t.data,code:I.invalid_literal,expected:this._def.value}),x_}return{status:`valid`,value:e.data}}get value(){return this._def.value}};kv.create=(e,t)=>new kv({value:e,typeName:Uv.ZodLiteral,...j_(t)});function Av(e,t){return new jv({values:e,typeName:Uv.ZodEnum,...j_(t)})}var jv=class e extends M_{_parse(e){if(typeof e.data!=`string`){let t=this._getOrReturnCtx(e),n=this._def.values;return L(t,{expected:f_.joinValues(n),received:t.parsedType,code:I.invalid_type}),x_}if(this._cache||=new Set(this._def.values),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return L(t,{received:t.data,code:I.invalid_enum_value,options:n}),x_}return C_(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(t,n=this._def){return e.create(t,{...this._def,...n})}exclude(t,n=this._def){return e.create(this.options.filter(e=>!t.includes(e)),{...this._def,...n})}};jv.create=Av;var Mv=class extends M_{_parse(e){let t=f_.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==m_.string&&n.parsedType!==m_.number){let e=f_.objectValues(t);return L(n,{expected:f_.joinValues(e),received:n.parsedType,code:I.invalid_type}),x_}if(this._cache||=new Set(f_.getValidEnumValues(this._def.values)),!this._cache.has(e.data)){let e=f_.objectValues(t);return L(n,{received:n.data,code:I.invalid_enum_value,options:e}),x_}return C_(e.data)}get enum(){return this._def.values}};Mv.create=(e,t)=>new Mv({values:e,typeName:Uv.ZodNativeEnum,...j_(t)});var Nv=class extends M_{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==m_.promise&&t.common.async===!1?(L(t,{code:I.invalid_type,expected:m_.promise,received:t.parsedType}),x_):C_((t.parsedType===m_.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}};Nv.create=(e,t)=>new Nv({type:e,typeName:Uv.ZodPromise,...j_(t)});var Pv=class extends M_{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Uv.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=this._def.effect||null,i={addIssue:e=>{L(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(i.addIssue=i.addIssue.bind(i),r.type===`preprocess`){let e=r.transform(n.data,i);if(n.common.async)return Promise.resolve(e).then(async e=>{if(t.value===`aborted`)return x_;let r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return r.status===`aborted`?x_:r.status===`dirty`||t.value===`dirty`?S_(r.value):r});{if(t.value===`aborted`)return x_;let r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return r.status===`aborted`?x_:r.status===`dirty`||t.value===`dirty`?S_(r.value):r}}if(r.type===`refinement`){let e=e=>{let t=r.refinement(e,i);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(`Async refinement encountered during synchronous parse operation. Use .parseAsync instead.`);return e};if(n.common.async===!1){let r=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return r.status===`aborted`?x_:(r.status===`dirty`&&t.dirty(),e(r.value),{status:t.value,value:r.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(n=>n.status===`aborted`?x_:(n.status===`dirty`&&t.dirty(),e(n.value).then(()=>({status:t.value,value:n.value}))))}if(r.type===`transform`)if(n.common.async===!1){let e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!E_(e))return x_;let a=r.transform(e.value,i);if(a instanceof Promise)throw Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);return{status:t.value,value:a}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(e=>E_(e)?Promise.resolve(r.transform(e.value,i)).then(e=>({status:t.value,value:e})):x_);f_.assertNever(r)}};Pv.create=(e,t,n)=>new Pv({schema:e,typeName:Uv.ZodEffects,effect:t,...j_(n)}),Pv.createWithPreprocess=(e,t,n)=>new Pv({schema:t,effect:{type:`preprocess`,transform:e},typeName:Uv.ZodEffects,...j_(n)});var Fv=class extends M_{_parse(e){return this._getType(e)===m_.undefined?C_(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Fv.create=(e,t)=>new Fv({innerType:e,typeName:Uv.ZodOptional,...j_(t)});var Iv=class extends M_{_parse(e){return this._getType(e)===m_.null?C_(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Iv.create=(e,t)=>new Iv({innerType:e,typeName:Uv.ZodNullable,...j_(t)});var Lv=class extends M_{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===m_.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};Lv.create=(e,t)=>new Lv({innerType:e,typeName:Uv.ZodDefault,defaultValue:typeof t.default==`function`?t.default:()=>t.default,...j_(t)});var Rv=class extends M_{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return D_(r)?r.then(e=>({status:`valid`,value:e.status===`valid`?e.value:this._def.catchValue({get error(){return new g_(n.common.issues)},input:n.data})})):{status:`valid`,value:r.status===`valid`?r.value:this._def.catchValue({get error(){return new g_(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};Rv.create=(e,t)=>new Rv({innerType:e,typeName:Uv.ZodCatch,catchValue:typeof t.catch==`function`?t.catch:()=>t.catch,...j_(t)});var zv=class extends M_{_parse(e){if(this._getType(e)!==m_.nan){let t=this._getOrReturnCtx(e);return L(t,{code:I.invalid_type,expected:m_.nan,received:t.parsedType}),x_}return{status:`valid`,value:e.data}}};zv.create=e=>new zv({typeName:Uv.ZodNaN,...j_(e)});var Bv=class extends M_{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}},Vv=class e extends M_{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?x_:e.status===`dirty`?(t.dirty(),S_(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})();{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?x_:e.status===`dirty`?(t.dirty(),{status:`dirty`,value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(t,n){return new e({in:t,out:n,typeName:Uv.ZodPipeline})}},Hv=class extends M_{_parse(e){let t=this._def.innerType._parse(e),n=e=>(E_(e)&&(e.value=Object.freeze(e.value)),e);return D_(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}};Hv.create=(e,t)=>new Hv({innerType:e,typeName:Uv.ZodReadonly,...j_(t)}),vv.lazycreate;var Uv;(function(e){e.ZodString=`ZodString`,e.ZodNumber=`ZodNumber`,e.ZodNaN=`ZodNaN`,e.ZodBigInt=`ZodBigInt`,e.ZodBoolean=`ZodBoolean`,e.ZodDate=`ZodDate`,e.ZodSymbol=`ZodSymbol`,e.ZodUndefined=`ZodUndefined`,e.ZodNull=`ZodNull`,e.ZodAny=`ZodAny`,e.ZodUnknown=`ZodUnknown`,e.ZodNever=`ZodNever`,e.ZodVoid=`ZodVoid`,e.ZodArray=`ZodArray`,e.ZodObject=`ZodObject`,e.ZodUnion=`ZodUnion`,e.ZodDiscriminatedUnion=`ZodDiscriminatedUnion`,e.ZodIntersection=`ZodIntersection`,e.ZodTuple=`ZodTuple`,e.ZodRecord=`ZodRecord`,e.ZodMap=`ZodMap`,e.ZodSet=`ZodSet`,e.ZodFunction=`ZodFunction`,e.ZodLazy=`ZodLazy`,e.ZodLiteral=`ZodLiteral`,e.ZodEnum=`ZodEnum`,e.ZodEffects=`ZodEffects`,e.ZodNativeEnum=`ZodNativeEnum`,e.ZodOptional=`ZodOptional`,e.ZodNullable=`ZodNullable`,e.ZodDefault=`ZodDefault`,e.ZodCatch=`ZodCatch`,e.ZodPromise=`ZodPromise`,e.ZodBranded=`ZodBranded`,e.ZodPipeline=`ZodPipeline`,e.ZodReadonly=`ZodReadonly`})(Uv||={});var Wv=rv.create;av.create,zv.create,ov.create;var Gv=sv.create;cv.create,lv.create,uv.create,dv.create;var Kv=fv.create;pv.create,mv.create,hv.create,gv.create;var qv=vv.create;vv.strictCreate,yv.create;var Jv=xv.create;Cv.create,wv.create,Tv.create,Ev.create,Dv.create,gee.create,Ov.create;var Yv=kv.create,Xv=jv.create;Mv.create,Nv.create,Pv.create,Fv.create,Iv.create,Pv.createWithPreprocess,Vv.create;var Zv=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,Qv=e=>{if(typeof e!=`string`)throw TypeError(`Invalid argument expected string`);let t=e.match(Zv);if(!t)throw Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},$v=e=>e===`*`||e===`x`||e===`X`,ey=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},ty=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],ny=(e,t)=>{if($v(e)||$v(t))return 0;let[n,r]=ty(ey(e),ey(t));return n>r?1:n{for(let n=0;n{let n=Qv(e),r=Qv(t),i=n.pop(),a=r.pop(),o=ry(n,r);return o===0?i&&a?ry(i.split(`.`),a.split(`.`)):i||a?i?-1:1:0:o},ay=e=>{if(typeof structuredClone==`function`)return structuredClone(e);try{return JSON.parse(JSON.stringify(e))}catch{return Array.isArray(e)?[...e]:{...e}}};function oy(){return Wl()}function sy(e){if(Object.freeze(e),typeof e==`object`&&e)for(let t of Object.values(e))typeof t==`object`&&t&&!Object.isFrozen(t)&&sy(t);return e}var cy=512*1024;function ly(e,t,n){let r=0,i=[e,t],a=new WeakSet;for(;i.length>0;){let e=i.pop();if(typeof e==`string`){if(r+=e.length,r>n)return!0}else if(typeof e==`object`&&e){if(a.has(e))continue;if(a.add(e),Array.isArray(e))for(let t=0;tn)return!0;i.push(e[o])}}}}return!1}async function uy(e,t,n,r){let i=typeof process<`u`&&!0,a=i&&!!{}.VITEST_WORKER_ID,o=i&&!!{}.VITEST_WORKER_ID,s=o&&!ly(t,n,cy),c=s?ay(t):t,l=s?ay(n):n,u=!1,d=!1,f;for(let t of e)try{s&&(sy(c),sy(l));let e=await r(t,c,l);if(e===void 0)continue;let n=!1;if(e.messages!==void 0&&e.messages!==c&&(c=ay(e.messages),u=!0,n=!0),e.state!==void 0&&e.state!==l&&(l=ay(e.state),d=!0,n=!0),s&&n&&ly(c,l,cy)&&(s=!1),f=e.stopPropagation,f===!0)break}catch(e){if(o&&e instanceof TypeError){if(a)throw e;console.error(`AG-UI: Subscriber attempted to mutate frozen inputs in-place. Return mutations via AgentStateMutation instead of mutating directly.`,e)}else a||console.error(`Subscriber error:`,e);continue}return{...u?{messages:Object.isFrozen(c)?ay(c):c}:{},...d?{state:Object.isFrozen(l)?ay(l):l}:{},...f===void 0?{}:{stopPropagation:f}}}function dy(e){if(!e)return{enabled:!1,events:!1,lifecycle:!1,verbose:!1};if(e===!0)return{enabled:!0,events:!0,lifecycle:!0,verbose:!0};let t=e.events??!0,n=e.lifecycle??!0,r=e.verbose??!1;return{enabled:t||n,events:t,lifecycle:n,verbose:r}}function fy(e){if(e instanceof py)return e;if(e===!0)return new py(dy(!0))}var py=class{constructor(e){this.config=e}event(e,t,n,r){this.config.events&&(this.config.verbose?console.debug(`[${e}] ${t}`,typeof n==`string`?n:JSON.stringify(n)):console.debug(`[${e}] ${t}`,r??n))}lifecycle(e,t,n){this.config.lifecycle&&(n?console.debug(`[${e}] ${t}`,n):console.debug(`[${e}] ${t}`))}get eventsEnabled(){return this.config.events}get lifecycleEnabled(){return this.config.lifecycle}get enabled(){return this.config.enabled}};function my(e){return e.enabled?new py(e):void 0}function hy(e,t,n){if(t){let r=e.find(e=>e.id===t);if(r?.role===`assistant`)return r;r&&console.warn(`TOOL_CALL_START: parentMessageId '${t}' matches a '${r.role}' message, not assistant — falling back to toolCallId`);let i={id:r?n:t,role:`assistant`,toolCalls:[]};return e.push(i),i}let r={id:n,role:`assistant`,toolCalls:[]};return e.push(r),r}var gy=(e,t,n,r,i)=>{let a=fy(i),o=ay(n.messages),s=ay(e.state),c={},l=e=>{e.messages!==void 0&&(o=e.messages,c.messages=e.messages),e.state!==void 0&&(s=e.state,c.state=e.state)},u=()=>{let e=ay(c);return c={},e.messages!==void 0||e.state!==void 0?rh(e):Dm};return t.pipe(dh(async t=>{let i=await uy(r,o,s,(r,i,a)=>r.onEvent?.({event:t,agent:n,input:e,messages:i,state:a}));if(l(i),i.stopPropagation===!0?a?.event(`APPLY`,`Event dropped:`,t,{type:t.type,reason:`stopPropagation by subscriber`}):a?.event(`APPLY`,`Event applied:`,t,{type:t.type,subscribers:r.length}),i.stopPropagation===!0)return u();switch(t.type){case P.TEXT_MESSAGE_START:{let i=await uy(r,o,s,(r,i,a)=>r.onTextMessageStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(i),i.stopPropagation!==!0){let{messageId:e,role:n=`assistant`,name:r}=t;if(!o.find(t=>t.id===e)){let t={id:e,role:n,content:``,...r!==void 0&&{name:r}};o.push(t),l({messages:o})}}return u()}case P.TEXT_MESSAGE_CONTENT:{let{messageId:i,delta:a}=t,c=o.find(e=>e.id===i);if(!c)return console.warn(`TEXT_MESSAGE_CONTENT: No message found with ID '${i}'`),u();let d=await uy(r,o,s,(r,i,a)=>r.onTextMessageContentEvent?.({event:t,messages:i,state:a,agent:n,input:e,textMessageBuffer:typeof c.content==`string`?c.content:``}));return l(d),d.stopPropagation!==!0&&(c.content=`${typeof c.content==`string`?c.content:``}${a}`,l({messages:o})),u()}case P.TEXT_MESSAGE_END:{let{messageId:i}=t,a=o.find(e=>e.id===i);return a?(l(await uy(r,o,s,(r,i,o)=>r.onTextMessageEndEvent?.({event:t,messages:i,state:o,agent:n,input:e,textMessageBuffer:typeof a.content==`string`?a.content:``}))),await Promise.all(r.map(t=>{t.onNewMessage?.({message:a,messages:o,state:s,agent:n,input:e})})),u()):(console.warn(`TEXT_MESSAGE_END: No message found with ID '${i}'`),u())}case P.TOOL_CALL_START:{let i=await uy(r,o,s,(r,i,a)=>r.onToolCallStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(i),i.stopPropagation!==!0){let{toolCallId:e,toolCallName:n,parentMessageId:r}=t,i=hy(o,r,e);i.toolCalls??=[],i.toolCalls.push({id:e,type:`function`,function:{name:n,arguments:``}}),l({messages:o})}return u()}case P.TOOL_CALL_ARGS:{let{toolCallId:i,delta:a}=t,c=o.find(e=>e.toolCalls?.some(e=>e.id===i));if(!c)return console.warn(`TOOL_CALL_ARGS: No message found containing tool call with ID '${i}'`),u();let d=c.toolCalls?.find(e=>e.id===i);if(!d)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${i}'`),u();let f=await uy(r,o,s,(r,i,a)=>{let o=d.function.arguments,s=d.function.name,c={};try{c=hh(o)}catch{}return r.onToolCallArgsEvent?.({event:t,messages:i,state:a,agent:n,input:e,toolCallBuffer:o,toolCallName:s,partialToolCallArgs:c})});return l(f),f.stopPropagation!==!0&&(d.function.arguments+=a,l({messages:o})),u()}case P.TOOL_CALL_END:{let{toolCallId:i}=t,a=o.find(e=>e.toolCalls?.some(e=>e.id===i));if(!a)return console.warn(`TOOL_CALL_END: No message found containing tool call with ID '${i}'`),u();let c=a.toolCalls?.find(e=>e.id===i);return c?(l(await uy(r,o,s,(r,i,a)=>{let o=c.function.arguments,s=c.function.name,l={};try{l=JSON.parse(o)}catch{}return r.onToolCallEndEvent?.({event:t,messages:i,state:a,agent:n,input:e,toolCallName:s,toolCallArgs:l})})),await Promise.all(r.map(t=>{t.onNewToolCall?.({toolCall:c,messages:o,state:s,agent:n,input:e})})),u()):(console.warn(`TOOL_CALL_END: No tool call found with ID '${i}'`),u())}case P.TOOL_CALL_RESULT:{let i=await uy(r,o,s,(r,i,a)=>r.onToolCallResultEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(i),i.stopPropagation!==!0){let{messageId:i,toolCallId:a,content:c,role:u}=t,d={id:i,toolCallId:a,role:u||`tool`,content:c},f=o.findIndex(e=>e.role===`assistant`&&e.toolCalls?.some(e=>e.id===a));if(f===-1)o.push(d);else{let e=f+1;for(;e{t.onNewMessage?.({message:d,messages:o,state:s,agent:n,input:e})})),l({messages:o})}return u()}case P.STATE_SNAPSHOT:{let i=await uy(r,o,s,(r,i,a)=>r.onStateSnapshotEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(i),i.stopPropagation!==!0){let{snapshot:e}=t;s=e,l({state:s})}return u()}case P.STATE_DELTA:{let i=await uy(r,o,s,(r,i,a)=>r.onStateDeltaEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(i),i.stopPropagation!==!0){let{delta:e}=t;try{s=Op.applyPatch(s,e,!0,!1).newDocument,l({state:s})}catch(t){let n=t instanceof Error?t.message:String(t);console.warn(`Failed to apply state patch:\nCurrent state: ${JSON.stringify(s,null,2)}\nPatch operations: ${JSON.stringify(e,null,2)}\nError: ${n}`)}}return u()}case P.MESSAGES_SNAPSHOT:{let i=await uy(r,o,s,(r,i,a)=>r.onMessagesSnapshotEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(i),i.stopPropagation!==!0){let{messages:e}=t,n=new Map(e.map(e=>[e.id,e])),r=e.some(e=>e.role===`reasoning`),i=e=>e.role===`activity`||e.role===`reasoning`&&!r;o=o.filter(e=>i(e)||n.has(e.id)).map(e=>i(e)?e:n.get(e.id));let a=new Set(o.map(e=>e.id));for(let t of e)a.has(t.id)||o.push(t);l({messages:o})}return u()}case P.ACTIVITY_SNAPSHOT:{let i=t,a=o.findIndex(e=>e.id===i.messageId),c=a>=0?o[a]:void 0,d=c?.role===`activity`?c:void 0,f=i.replace??!0,p=await uy(r,o,s,(t,r,a)=>t.onActivitySnapshotEvent?.({event:i,messages:r,state:a,agent:n,input:e,activityMessage:d,existingMessage:c}));if(l(p),p.stopPropagation!==!0){let t={id:i.messageId,role:`activity`,activityType:i.activityType,content:ay(i.content)},c;a===-1?(o.push(t),c=t):d?f&&(o[a]={...d,activityType:i.activityType,content:ay(i.content)}):f&&(o[a]=t,c=t),l({messages:o}),c&&await Promise.all(r.map(t=>t.onNewMessage?.({message:c,messages:o,state:s,agent:n,input:e})))}return u()}case P.ACTIVITY_DELTA:{let i=t,a=o.findIndex(e=>e.id===i.messageId);if(a===-1)return u();let c=o[a];if(c.role!==`activity`)return console.warn(`ACTIVITY_DELTA: Message '${i.messageId}' is not an activity message`),u();let d=c,f=await uy(r,o,s,(t,r,a)=>t.onActivityDeltaEvent?.({event:i,messages:r,state:a,agent:n,input:e,activityMessage:d}));if(l(f),f.stopPropagation!==!0)try{let e=ay(d.content??{}),t=Op.applyPatch(e,i.patch??[],!0,!1).newDocument;o[a]={...d,content:ay(t),activityType:i.activityType},l({messages:o})}catch(e){let t=e instanceof Error?e.message:String(e);console.warn(`Failed to apply activity patch for '${i.messageId}': ${t}`)}return u()}case P.RAW:return l(await uy(r,o,s,(r,i,a)=>r.onRawEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),u();case P.CUSTOM:return l(await uy(r,o,s,(r,i,a)=>r.onCustomEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),u();case P.RUN_STARTED:{let i=await uy(r,o,s,(r,i,a)=>r.onRunStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(i),i.stopPropagation!==!0){let e=t;if(e.input?.messages){for(let t of e.input.messages)o.find(e=>e.id===t.id)||o.push(t);l({messages:o})}}return u()}case P.RUN_FINISHED:{let i=t,a=i.outcome?.type===`interrupt`?{event:i,outcome:`interrupt`,interrupts:i.outcome.interrupts}:{event:i,outcome:`success`,result:i.result},c=await uy(r,o,s,(t,r,i)=>t.onRunFinishedEvent?.({...a,messages:r,state:i,agent:n,input:e}));return l(c),c.stopPropagation!==!0&&(n.pendingInterrupts=a.outcome===`interrupt`?[...a.interrupts]:[]),u()}case P.RUN_ERROR:return l(await uy(r,o,s,(r,i,a)=>r.onRunErrorEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),u();case P.STEP_STARTED:return l(await uy(r,o,s,(r,i,a)=>r.onStepStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),u();case P.STEP_FINISHED:return l(await uy(r,o,s,(r,i,a)=>r.onStepFinishedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),u();case P.TEXT_MESSAGE_CHUNK:throw Error(`TEXT_MESSAGE_CHUNK must be tranformed before being applied`);case P.TOOL_CALL_CHUNK:throw Error(`TOOL_CALL_CHUNK must be tranformed before being applied`);case P.THINKING_START:return u();case P.THINKING_END:return u();case P.THINKING_TEXT_MESSAGE_START:return u();case P.THINKING_TEXT_MESSAGE_CONTENT:return u();case P.THINKING_TEXT_MESSAGE_END:return u();case P.REASONING_START:return l(await uy(r,o,s,(r,i,a)=>r.onReasoningStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),u();case P.REASONING_MESSAGE_START:{let i=await uy(r,o,s,(r,i,a)=>r.onReasoningMessageStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(i),i.stopPropagation!==!0){let{messageId:e}=t;if(!o.find(t=>t.id===e)){let t={id:e,role:`reasoning`,content:``};o.push(t),l({messages:o})}}return u()}case P.REASONING_MESSAGE_CONTENT:{let{messageId:i,delta:a}=t,c=o.find(e=>e.id===i);if(!c)return console.warn(`REASONING_MESSAGE_CONTENT: No message found with ID '${i}'`),u();let d=await uy(r,o,s,(r,i,a)=>r.onReasoningMessageContentEvent?.({event:t,messages:i,state:a,agent:n,input:e,reasoningMessageBuffer:typeof c.content==`string`?c.content:``}));return l(d),d.stopPropagation!==!0&&(c.content=`${typeof c.content==`string`?c.content:``}${a}`,l({messages:o})),u()}case P.REASONING_MESSAGE_END:{let{messageId:i}=t,a=o.find(e=>e.id===i);return a?(l(await uy(r,o,s,(r,i,o)=>r.onReasoningMessageEndEvent?.({event:t,messages:i,state:o,agent:n,input:e,reasoningMessageBuffer:typeof a.content==`string`?a.content:``}))),await Promise.all(r.map(t=>{t.onNewMessage?.({message:a,messages:o,state:s,agent:n,input:e})})),u()):(console.warn(`REASONING_MESSAGE_END: No message found with ID '${i}'`),u())}case P.REASONING_MESSAGE_CHUNK:throw Error(`REASONING_MESSAGE_CHUNK must be transformed before being applied`);case P.REASONING_END:return l(await uy(r,o,s,(r,i,a)=>r.onReasoningEndEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),u();case P.REASONING_ENCRYPTED_VALUE:{let{subtype:i,entityId:a,encryptedValue:d}=t,f=await uy(r,o,s,(r,i,a)=>r.onReasoningEncryptedValueEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(l(f),f.stopPropagation!==!0){let e=!1;if(i===`tool-call`){for(let t of o)if(t.role===`assistant`&&t.toolCalls){let n=t.toolCalls.find(e=>e.id===a);if(n){n.encryptedValue=d,e=!0;break}}}else{let t=o.find(e=>e.id===a);t?.role!==`activity`&&t&&(t.encryptedValue=d,e=!0)}e&&(c.messages=o)}return u()}}return t.type,u()}),lee(),r.length>0?uee({}):e=>e)},_y=e=>t=>{let n=fy(e),r=new Map,i=new Map,a=!1,o=!1,s=!1,c=new Map,l=!1,u=!1,d=!1,f=()=>{r.clear(),i.clear(),c.clear(),l=!1,u=!1,a=!1,o=!1,d=!0};return t.pipe(ch(e=>{let t=e.type;if(n?.event(`VERIFY`,`Event:`,e,{type:e.type}),o)return ih(()=>new ef(`Cannot send event type '${t}': The run has already errored with 'RUN_ERROR'. No further events can be sent.`));if(a&&t!==P.RUN_ERROR&&t!==P.RUN_STARTED)return ih(()=>new ef(`Cannot send event type '${t}': The run has already finished with 'RUN_FINISHED'. Start a new run with 'RUN_STARTED'.`));if(!s){if(s=!0,t!==P.RUN_STARTED&&t!==P.RUN_ERROR)return ih(()=>new ef(`First event must be 'RUN_STARTED'`))}else if(t===P.RUN_STARTED){if(d&&!a)return ih(()=>new ef(`Cannot send 'RUN_STARTED' while a run is still active. The previous run must be finished with 'RUN_FINISHED' before starting a new run.`));a&&f()}switch(t){case P.TEXT_MESSAGE_START:{let t=e.messageId;return r.has(t)?ih(()=>new ef(`Cannot send 'TEXT_MESSAGE_START' event: A text message with ID '${t}' is already in progress. Complete it with 'TEXT_MESSAGE_END' first.`)):(r.set(t,!0),rh(e))}case P.TEXT_MESSAGE_CONTENT:{let t=e.messageId;return r.has(t)?rh(e):ih(()=>new ef(`Cannot send 'TEXT_MESSAGE_CONTENT' event: No active text message found with ID '${t}'. Start a text message with 'TEXT_MESSAGE_START' first.`))}case P.TEXT_MESSAGE_END:{let t=e.messageId;return r.has(t)?(r.delete(t),rh(e)):ih(()=>new ef(`Cannot send 'TEXT_MESSAGE_END' event: No active text message found with ID '${t}'. A 'TEXT_MESSAGE_START' event must be sent first.`))}case P.TOOL_CALL_START:{let t=e.toolCallId;return i.has(t)?ih(()=>new ef(`Cannot send 'TOOL_CALL_START' event: A tool call with ID '${t}' is already in progress. Complete it with 'TOOL_CALL_END' first.`)):(i.set(t,!0),rh(e))}case P.TOOL_CALL_ARGS:{let t=e.toolCallId;return i.has(t)?rh(e):ih(()=>new ef(`Cannot send 'TOOL_CALL_ARGS' event: No active tool call found with ID '${t}'. Start a tool call with 'TOOL_CALL_START' first.`))}case P.TOOL_CALL_END:{let t=e.toolCallId;return i.has(t)?(i.delete(t),rh(e)):ih(()=>new ef(`Cannot send 'TOOL_CALL_END' event: No active tool call found with ID '${t}'. A 'TOOL_CALL_START' event must be sent first.`))}case P.STEP_STARTED:{let t=e.stepName;return c.has(t)?ih(()=>new ef(`Step "${t}" is already active for 'STEP_STARTED'`)):(c.set(t,!0),rh(e))}case P.STEP_FINISHED:{let t=e.stepName;return c.has(t)?(c.delete(t),rh(e)):ih(()=>new ef(`Cannot send 'STEP_FINISHED' for step "${t}" that was not started`))}case P.RUN_STARTED:return d=!0,rh(e);case P.RUN_FINISHED:if(c.size>0){let e=Array.from(c.keys()).join(`, `);return ih(()=>new ef(`Cannot send 'RUN_FINISHED' while steps are still active: ${e}`))}if(r.size>0){let e=Array.from(r.keys()).join(`, `);return ih(()=>new ef(`Cannot send 'RUN_FINISHED' while text messages are still active: ${e}`))}if(i.size>0){let e=Array.from(i.keys()).join(`, `);return ih(()=>new ef(`Cannot send 'RUN_FINISHED' while tool calls are still active: ${e}`))}return a=!0,rh(e);case P.RUN_ERROR:return o=!0,rh(e);case P.CUSTOM:return rh(e);case P.THINKING_TEXT_MESSAGE_START:return l?u?ih(()=>new ef(`Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking message is already in progress. Complete it with 'THINKING_TEXT_MESSAGE_END' first.`)):(u=!0,rh(e)):ih(()=>new ef(`Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking step is not in progress. Create one with 'THINKING_START' first.`));case P.THINKING_TEXT_MESSAGE_CONTENT:return u?rh(e):ih(()=>new ef(`Cannot send 'THINKING_TEXT_MESSAGE_CONTENT' event: No active thinking message found. Start a message with 'THINKING_TEXT_MESSAGE_START' first.`));case P.THINKING_TEXT_MESSAGE_END:return u?(u=!1,rh(e)):ih(()=>new ef(`Cannot send 'THINKING_TEXT_MESSAGE_END' event: No active thinking message found. A 'THINKING_TEXT_MESSAGE_START' event must be sent first.`));case P.THINKING_START:return l?ih(()=>new ef(`Cannot send 'THINKING_START' event: A thinking step is already in progress. End it with 'THINKING_END' first.`)):(l=!0,rh(e));case P.THINKING_END:return l?(l=!1,rh(e)):ih(()=>new ef(`Cannot send 'THINKING_END' event: No active thinking step found. A 'THINKING_START' event must be sent first.`));default:return rh(e)}}))},vy=function(e){return e.HEADERS=`headers`,e.DATA=`data`,e}({}),yy=e=>lh(()=>nh(e())).pipe(dee(e=>{if(!e.ok){let t=e.headers.get(`content-type`)||``;return nh(e.text()).pipe(ch(n=>{let r=n;if(t.includes(`application/json`))try{r=JSON.parse(n)}catch{}let i=Error(`HTTP ${e.status}: ${typeof r==`string`?r:JSON.stringify(r)}`);return i.status=e.status,i.payload=r,ih(()=>i)}))}let t={type:vy.HEADERS,status:e.status,headers:e.headers},n=e.body?.getReader();return n?new gm(e=>(e.next(t),(async()=>{try{for(;;){let{done:t,value:r}=await n.read();if(t)break;let i={type:vy.DATA,data:r};e.next(i)}e.complete()}catch(t){e.error(t)}})(),()=>{n.cancel().catch(e=>{if(e?.name!==`AbortError`)throw e})})):ih(()=>Error(`Failed to getReader() from response`))})),by=(e,t)=>{let n=fy(t),r=new Cm,i=new TextDecoder(`utf-8`,{fatal:!1}),a=``;e.subscribe({next:e=>{if(e.type!==vy.HEADERS&&e.type===vy.DATA&&e.data){let t=i.decode(e.data,{stream:!0});a+=t;let n=a.split(/\n\n/);a=n.pop()||``;for(let e of n)o(e)}},error:e=>r.error(e),complete:()=>{a&&(a+=i.decode(),o(a)),r.complete()}});function o(e){let t=e.split(` `),i=[];for(let e of t)e.startsWith(`data:`)&&i.push(e.slice(5).replace(/^ /,``));if(i.length>0)try{let e=i.join(` -`),t=JSON.parse(e);n?.event(`SSE`,`Event received:`,t,{type:t.type}),r.next(t)}catch(e){r.error(e)}}return r.asObservable()},Dy=e=>{let t=new Cm,n=new Uint8Array;e.subscribe({next:e=>{if(e.type!==wy.HEADERS&&e.type===wy.DATA&&e.data){let t=new Uint8Array(n.length+e.data.length);t.set(n,0),t.set(e.data,n.length),n=t,r()}},error:e=>t.error(e),complete:()=>{if(n.length>0)try{r()}catch{console.warn(`Incomplete or invalid protocol buffer data at stream end`)}t.complete()}});function r(){for(;n.length>=4;){let e=4+new DataView(n.buffer,n.byteOffset,4).getUint32(0,!1);if(n.length{let n=vy(t),r=new Cm,i=new Em,a=!1;return e.subscribe({next:e=>{if(i.next(e),e.type===wy.HEADERS&&!a){a=!0;let t=e.headers.get(`content-type`);n?.lifecycle(`HTTP`,`Stream format detected:`,{contentType:t,parser:t===`application/vnd.ag-ui.event+proto`?`protobuf`:`sse`}),t===`application/vnd.ag-ui.event+proto`?Dy(i).subscribe({next:e=>r.next(e),error:e=>r.error(e),complete:()=>r.complete()}):Ey(i,n).subscribe({next:e=>{try{let t=Kf.parse(e);n?.event(`HTTP`,`Event validated:`,t,{type:t.type,valid:!0}),r.next(t)}catch(t){n?.event(`HTTP`,`Event invalid:`,{json:e,error:String(t)}),r.error(t)}},error:e=>{if(e?.name===`AbortError`){r.next({type:P.RUN_ERROR,message:e.message||`Request aborted`,code:`abort`,rawEvent:e}),r.complete();return}return r.error(e)},complete:()=>r.complete()})}else a||r.error(Error(`No headers event received before data events`))},error:e=>{i.error(e),r.error(e)},complete:()=>{i.complete()}}),r.asObservable()},ky=ny([`TextMessageStart`,`TextMessageContent`,`TextMessageEnd`,`ActionExecutionStart`,`ActionExecutionArgs`,`ActionExecutionEnd`,`ActionExecutionResult`,`AgentStateMessage`,`MetaEvent`,`RunStarted`,`RunFinished`,`RunError`,`NodeStarted`,`NodeFinished`]),Ay=ny([`LangGraphInterruptEvent`,`PredictState`,`Exit`]);ey(`type`,[$v({type:ty(ky.enum.TextMessageStart),messageId:Xv(),parentMessageId:Xv().optional(),role:Xv().optional()}),$v({type:ty(ky.enum.TextMessageContent),messageId:Xv(),content:Xv()}),$v({type:ty(ky.enum.TextMessageEnd),messageId:Xv()}),$v({type:ty(ky.enum.ActionExecutionStart),actionExecutionId:Xv(),actionName:Xv(),parentMessageId:Xv().optional()}),$v({type:ty(ky.enum.ActionExecutionArgs),actionExecutionId:Xv(),args:Xv()}),$v({type:ty(ky.enum.ActionExecutionEnd),actionExecutionId:Xv()}),$v({type:ty(ky.enum.ActionExecutionResult),actionName:Xv(),actionExecutionId:Xv(),result:Xv()}),$v({type:ty(ky.enum.AgentStateMessage),threadId:Xv(),agentName:Xv(),nodeName:Xv(),runId:Xv(),active:Zv(),role:Xv(),state:Xv(),running:Zv()}),$v({type:ty(ky.enum.MetaEvent),name:Ay,value:Qv()}),$v({type:ty(ky.enum.RunError),message:Xv(),code:Xv().optional()})]),$v({id:Xv(),role:Xv(),content:Xv(),parentMessageId:Xv().optional()}),$v({id:Xv(),name:Xv(),arguments:Qv(),parentMessageId:Xv().optional()}),$v({id:Xv(),result:Qv(),actionExecutionId:Xv(),actionName:Xv()});var jy=e=>{if(typeof e==`string`)return e;if(!Array.isArray(e))return;let t=e.filter(e=>e.type===`text`).map(e=>e.text).filter(e=>e.length>0);if(t.length!==0)return t.join(` -`)},My=(e,t,n)=>r=>{let i={},a=!0,o=!0,s=``,c=null,l=null,u=[],d={},f=e=>{typeof e==`object`&&e&&(`messages`in e&&delete e.messages,i=e)};return r.pipe(dh(r=>{switch(r.type){case P.TEXT_MESSAGE_START:{let e=r;return[{type:ky.enum.TextMessageStart,messageId:e.messageId,role:e.role}]}case P.TEXT_MESSAGE_CONTENT:{let e=r;return[{type:ky.enum.TextMessageContent,messageId:e.messageId,content:e.delta}]}case P.TEXT_MESSAGE_END:{let e=r;return[{type:ky.enum.TextMessageEnd,messageId:e.messageId}]}case P.TOOL_CALL_START:{let e=r;return u.push({id:e.toolCallId,type:`function`,function:{name:e.toolCallName,arguments:``}}),o=!0,d[e.toolCallId]=e.toolCallName,[{type:ky.enum.ActionExecutionStart,actionExecutionId:e.toolCallId,actionName:e.toolCallName,parentMessageId:e.parentMessageId}]}case P.TOOL_CALL_ARGS:{let c=r,d=u.find(e=>e.id===c.toolCallId);if(!d)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${c.toolCallId}'`),[];d.function.arguments+=c.delta;let p=!1;if(l){let e=l.find(e=>e.tool==d.function.name);if(e)try{let t=JSON.parse(bh(d.function.arguments));e.tool_argument&&e.tool_argument in t?(f({...i,[e.state_key]:t[e.tool_argument]}),p=!0):e.tool_argument||(f({...i,[e.state_key]:t}),p=!0)}catch{}}return[{type:ky.enum.ActionExecutionArgs,actionExecutionId:c.toolCallId,args:c.delta},...p?[{type:ky.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}]:[]]}case P.TOOL_CALL_END:{let e=r;return[{type:ky.enum.ActionExecutionEnd,actionExecutionId:e.toolCallId}]}case P.TOOL_CALL_RESULT:{let e=r;return[{type:ky.enum.ActionExecutionResult,actionExecutionId:e.toolCallId,result:e.content,actionName:d[e.toolCallId]||`unknown`}]}case P.RAW:return[];case P.CUSTOM:{let e=r;switch(e.name){case`Exit`:a=!1;break;case`PredictState`:l=e.value;break}return[{type:ky.enum.MetaEvent,name:e.name,value:e.value}]}case P.STATE_SNAPSHOT:return f(r.snapshot),[{type:ky.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}];case P.STATE_DELTA:{let c=r,l=Op.applyPatch(i,c.delta,!0,!1);return l?(f(l.newDocument),[{type:ky.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}]):[]}case P.MESSAGES_SNAPSHOT:return c=r.messages,[{type:ky.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify({...i,...c?{messages:c}:{}}),active:!0}];case P.RUN_STARTED:return[];case P.RUN_FINISHED:return c&&(i.messages=c),Object.keys(i).length===0?[]:[{type:ky.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify({...i,...c?{messages:Ny(c)}:{}}),active:!1}];case P.RUN_ERROR:{let e=r;return[{type:ky.enum.RunError,message:e.message,code:e.code}]}case P.STEP_STARTED:return s=r.stepName,u=[],l=null,[{type:ky.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:!0}];case P.STEP_FINISHED:return u=[],l=null,[{type:ky.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:!1}];default:return[]}}))};function Ny(e){let t=[];for(let n of e)if(n.role===`assistant`||n.role===`user`||n.role===`system`){let e=jy(n.content);if(e){let r={id:n.id,role:n.role,content:e};t.push(r)}if(n.role===`assistant`&&n.toolCalls&&n.toolCalls.length>0)for(let e of n.toolCalls){let r={id:e.id,name:e.function.name,arguments:JSON.parse(e.function.arguments),parentMessageId:n.id};t.push(r)}}else if(n.role===`tool`){let r=`unknown`;for(let t of e)if(t.role===`assistant`&&t.toolCalls?.length){for(let e of t.toolCalls)if(e.id===n.toolCallId){r=e.function.name;break}}let i={id:n.id,result:n.content,actionExecutionId:n.toolCallId,actionName:r};t.push(i)}return t}var Py=e=>t=>{let n=vy(e),r,i,a,o,s=()=>{if(!r||o!==`text`)throw Error(`No text message to close`);let e={type:P.TEXT_MESSAGE_END,messageId:r.messageId};return o=void 0,r=void 0,n?.event(`TRANSFORM`,`TEXT_MESSAGE_END`,e,{messageId:e.messageId}),e},c=()=>{if(!i||o!==`tool`)throw Error(`No tool call to close`);let e={type:P.TOOL_CALL_END,toolCallId:i.toolCallId};return o=void 0,i=void 0,n?.event(`TRANSFORM`,`TOOL_CALL_END`,e,{toolCallId:e.toolCallId}),e},l=()=>{if(!a||o!==`reasoning`)throw Error(`No reasoning message to close`);let e={type:P.REASONING_MESSAGE_END,messageId:a.messageId};return o=void 0,a=void 0,n?.event(`TRANSFORM`,`REASONING_MESSAGE_END`,e,{messageId:e.messageId}),e},u=()=>o===`text`?[s()]:o===`tool`?[c()]:o===`reasoning`?[l()]:[];return t.pipe(dh(e=>{switch(e.type){case P.TEXT_MESSAGE_START:case P.TEXT_MESSAGE_CONTENT:case P.TEXT_MESSAGE_END:case P.TOOL_CALL_START:case P.TOOL_CALL_ARGS:case P.TOOL_CALL_END:case P.TOOL_CALL_RESULT:case P.STATE_SNAPSHOT:case P.STATE_DELTA:case P.MESSAGES_SNAPSHOT:case P.CUSTOM:case P.RUN_STARTED:case P.RUN_FINISHED:case P.RUN_ERROR:case P.STEP_STARTED:case P.STEP_FINISHED:case P.THINKING_START:case P.THINKING_END:case P.THINKING_TEXT_MESSAGE_START:case P.THINKING_TEXT_MESSAGE_CONTENT:case P.THINKING_TEXT_MESSAGE_END:case P.REASONING_START:case P.REASONING_MESSAGE_START:case P.REASONING_MESSAGE_CONTENT:case P.REASONING_MESSAGE_END:case P.REASONING_END:return[...u(),e];case P.RAW:case P.ACTIVITY_SNAPSHOT:case P.ACTIVITY_DELTA:case P.REASONING_ENCRYPTED_VALUE:return[e];case P.TEXT_MESSAGE_CHUNK:let t=e,s=[];if((o!==`text`||t.messageId!==void 0&&t.messageId!==r?.messageId)&&s.push(...u()),o!==`text`){if(t.messageId===void 0)throw Error(`First TEXT_MESSAGE_CHUNK must have a messageId`);r={messageId:t.messageId,name:t.name},o=`text`;let e={type:P.TEXT_MESSAGE_START,messageId:t.messageId,role:t.role||`assistant`,...t.name!==void 0&&{name:t.name}};s.push(e),n?.event(`TRANSFORM`,`TEXT_MESSAGE_START`,e,{messageId:t.messageId})}if(t.delta!==void 0){let e={type:P.TEXT_MESSAGE_CONTENT,messageId:r.messageId,delta:t.delta};s.push(e),n?.event(`TRANSFORM`,`TEXT_MESSAGE_CONTENT`,e,{messageId:r.messageId})}return s;case P.TOOL_CALL_CHUNK:let c=e,l=[];if((o!==`tool`||c.toolCallId!==void 0&&c.toolCallId!==i?.toolCallId)&&l.push(...u()),o!==`tool`){if(c.toolCallId===void 0)throw Error(`First TOOL_CALL_CHUNK must have a toolCallId`);if(c.toolCallName===void 0)throw Error(`First TOOL_CALL_CHUNK must have a toolCallName`);i={toolCallId:c.toolCallId,toolCallName:c.toolCallName,parentMessageId:c.parentMessageId},o=`tool`;let e={type:P.TOOL_CALL_START,toolCallId:c.toolCallId,toolCallName:c.toolCallName,parentMessageId:c.parentMessageId};l.push(e),n?.event(`TRANSFORM`,`TOOL_CALL_START`,e,{toolCallId:c.toolCallId,toolCallName:c.toolCallName})}if(c.delta!==void 0){let e={type:P.TOOL_CALL_ARGS,toolCallId:i.toolCallId,delta:c.delta};l.push(e),n?.event(`TRANSFORM`,`TOOL_CALL_ARGS`,e,{toolCallId:i.toolCallId})}return l;case P.REASONING_MESSAGE_CHUNK:let d=e,f=[];if((o!==`reasoning`||d.messageId&&d.messageId!==a?.messageId)&&f.push(...u()),o!==`reasoning`){if(d.messageId===void 0)throw Error(`First REASONING_MESSAGE_CHUNK must have a messageId`);a={messageId:d.messageId},o=`reasoning`;let e={type:P.REASONING_MESSAGE_START,messageId:d.messageId};f.push(e),n?.event(`TRANSFORM`,`REASONING_MESSAGE_START`,e,{messageId:d.messageId})}if(d.delta!==void 0){let e={type:P.REASONING_MESSAGE_CONTENT,messageId:a.messageId,delta:d.delta};f.push(e),n?.event(`TRANSFORM`,`REASONING_MESSAGE_CONTENT`,e,{messageId:a.messageId})}return f}return e.type,[]}),hh(()=>{u()}))};function Fy(e,t=new Date){return e.expiresAt===void 0?!1:new Date(e.expiresAt)<=t}function Iy(e,t){let n=new Set(e.map(e=>e.id)),r=new Set(Object.keys(t)),i=[...n].filter(e=>!r.has(e));if(i.length>0)throw Error(`buildResumeArray: missing responses for open interrupts: ${i.join(`, `)}`);let a=[...r].filter(e=>!n.has(e));if(a.length>0)throw Error(`buildResumeArray: responses reference unknown interrupt ids: ${a.join(`, `)}`);return e.map(e=>{let n=t[e.id];if(n.status===`resolved`){let t={interruptId:e.id,status:`resolved`};return n.payload!==void 0&&(t.payload=n.payload),t}return{interruptId:e.id,status:`cancelled`}})}var Ly=class{runNext(e,t){return t.run(e).pipe(Py(!1))}runNextWithState(e,t){let n=dy(e.messages||[]),r=dy(e.state||{}),i=new Em;return Sy(e,i,t,[]).subscribe(e=>{e.messages!==void 0&&(n=e.messages),e.state!==void 0&&(r=e.state)}),this.runNext(e,t).pipe(mh(async e=>(i.next(e),await new Promise(e=>setTimeout(e,0)),{event:e,messages:dy(n),state:dy(r)})))}},Ry=class extends Ly{constructor(e){super(),this.fn=e}run(e,t){return this.fn(e,t)}};function zy(e){let t=e.content;if(Array.isArray(t)){let n=t.filter(e=>typeof e==`object`&&!!e&&`type`in e&&e.type===`text`&&typeof e.text==`string`).map(e=>e.text).join(``);return{...e,content:n}}return typeof t==`string`?e:{...e,content:``}}var By=class extends Ly{run(e,t){let{parentRunId:n,...r}=e,i={...r,messages:r.messages.map(zy)};return this.runNext(i,t)}},Vy=`THINKING_START`,Hy=`THINKING_END`,Uy=`THINKING_TEXT_MESSAGE_START`,Wy=`THINKING_TEXT_MESSAGE_CONTENT`,Gy=`THINKING_TEXT_MESSAGE_END`,Ky=class extends Ly{constructor(...e){super(...e),this.currentReasoningId=null,this.currentMessageId=null}warnAboutTransformation(e,t){typeof process<`u`&&{}.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`AG-UI is converting ${e} to ${t}. To remove this warning, upgrade your AG-UI integration package (e.g. @ag-ui/langgraph). To surpress it, set SUPPRESS_TRANSFORMATION_WARNINGS=true in your .env file.`)}run(e,t){return this.currentReasoningId=null,this.currentMessageId=null,this.runNext(e,t).pipe(uh(e=>this.transformEvent(e)))}transformEvent(e){switch(e.type){case Vy:{this.currentReasoningId=fy();let{title:t,...n}=e;return this.warnAboutTransformation(Vy,P.REASONING_START),{...n,type:P.REASONING_START,messageId:this.currentReasoningId}}case Uy:return this.currentMessageId=fy(),this.warnAboutTransformation(Uy,P.REASONING_MESSAGE_START),{...e,type:P.REASONING_MESSAGE_START,messageId:this.currentMessageId,role:`assistant`};case Wy:{let{delta:t,...n}=e;return this.warnAboutTransformation(Wy,P.REASONING_MESSAGE_CONTENT),{...n,type:P.REASONING_MESSAGE_CONTENT,messageId:this.currentMessageId??fy(),delta:t}}case Gy:{let t=this.currentMessageId??fy();return this.warnAboutTransformation(Gy,P.REASONING_MESSAGE_END),{...e,type:P.REASONING_MESSAGE_END,messageId:t}}case Hy:{let t=this.currentReasoningId??fy();return this.warnAboutTransformation(Hy,P.REASONING_END),{...e,type:P.REASONING_END,messageId:t}}default:return e}}};function qy(e){return e.startsWith(`image/`)?`image`:e.startsWith(`audio/`)?`audio`:e.startsWith(`video/`)?`video`:`document`}function Jy(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`binary`&&`mimeType`in e&&typeof e.mimeType==`string`}function Yy(e){let t=qy(e.mimeType);return e.data?{type:t,source:{type:`data`,value:e.data,mimeType:e.mimeType},...e.filename?{metadata:{filename:e.filename}}:{}}:e.url?{type:t,source:{type:`url`,value:e.url,mimeType:e.mimeType},...e.filename?{metadata:{filename:e.filename}}:{}}:e}function Xy(e){let t=e.content;if(!Array.isArray(t))return e;let n=t.map(e=>Jy(e)?Yy(e):e);return{...e,content:n}}var Zy=class extends Ly{run(e,t){let n={...e,messages:e.messages.map(Xy)};return this.runNext(n,t)}},Qy=`0.0.57`,$y=class{get maxVersion(){return Qy}get debug(){return this._debug}set debug(e){this._debug=_y(e),this._debugLogger=by(this._debug)}get debugLogger(){return this._debugLogger}set debugLogger(e){typeof e==`boolean`?this._debugLogger=e?by(_y(!0)):void 0:this._debugLogger=e}constructor({agentId:e,description:t,threadId:n,initialMessages:r,initialState:i,debug:a}={}){this.subscribers=[],this.isRunning=!1,this.pendingInterrupts=[],this.middlewares=[],this.agentId=e,this.description=t??``,this.threadId=n??Wl(),this.messages=dy(r??[]),this.state=dy(i??{}),this._debug=_y(a),this._debugLogger=by(this._debug),uy(this.maxVersion,`0.0.39`)<=0&&this.middlewares.unshift(new By),uy(this.maxVersion,`0.0.45`)<=0&&this.middlewares.unshift(new Ky),uy(this.maxVersion,`0.0.47`)<=0&&this.middlewares.unshift(new Zy)}subscribe(e){return this.subscribers.push(e),{unsubscribe:()=>{this.subscribers=this.subscribers.filter(t=>t!==e)}}}use(...e){let t=e.map(e=>typeof e==`function`?new Ry(e):e);return this.middlewares.push(...t),this}async runAgent(e,t){try{this.isRunning=!0,this.agentId=this.agentId??Wl();let n=this.prepareRunAgentInput(e);this.debugLogger?.lifecycle(`LIFECYCLE`,`Run started:`,{agentId:this.agentId,threadId:this.threadId});let r,i=new Set(this.messages.map(e=>e.id)),a=[{onRunFinishedEvent:e=>{e.outcome===`success`&&(r=e.result)}},...this.subscribers,t??{}];await this.onInitialize(n,a),this.activeRunDetach$=new Cm;let o;this.activeRunCompletionPromise=new Promise(e=>{o=e}),await lh(mm(()=>this.middlewares.length===0?this.run(n):this.middlewares.reduceRight((e,t)=>({run:n=>t.run(n,e),get messages(){return e.messages},get state(){return e.state}}),this).run(n),Py(this.debugLogger),Cy(this.debugLogger),e=>e.pipe(_h(this.activeRunDetach$)),e=>this.apply(n,e,a),e=>this.processApplyEvents(n,e,a),ph(e=>(this.debugLogger?.lifecycle(`LIFECYCLE`,`Run errored:`,{agentId:this.agentId,error:e instanceof Error?e.message:String(e)}),this.isRunning=!1,this.onError(n,e,a))),hh(()=>{this.debugLogger?.lifecycle(`LIFECYCLE`,`Run finished:`,{agentId:this.agentId,threadId:this.threadId}),this.isRunning=!1,this.onFinalize(n,a),o?.(),o=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}))(oh(null)));let s=dy(this.messages).filter(e=>!i.has(e.id));return{result:r,newMessages:s}}finally{this.isRunning=!1}}connect(e){throw new tf}async connectAgent(e,t){try{this.isRunning=!0,this.agentId=this.agentId??Wl();let n=this.prepareRunAgentInput(e),r,i=new Set(this.messages.map(e=>e.id)),a=[{onRunFinishedEvent:e=>{e.outcome===`success`&&(r=e.result)}},...this.subscribers,t??{}];await this.onInitialize(n,a),this.activeRunDetach$=new Cm;let o;this.activeRunCompletionPromise=new Promise(e=>{o=e}),await lh(mm(()=>fh(()=>this.connect(n)),Py(this.debugLogger),Cy(this.debugLogger),e=>e.pipe(_h(this.activeRunDetach$)),e=>this.apply(n,e,a),e=>this.processApplyEvents(n,e,a),ph(e=>(this.isRunning=!1,e instanceof tf?Dm:this.onError(n,e,a))),hh(()=>{this.isRunning=!1,this.onFinalize(n,a),o?.(),o=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}))(oh(null)),{defaultValue:void 0});let s=dy(this.messages).filter(e=>!i.has(e.id));return{result:r,newMessages:s}}finally{this.isRunning=!1}}abortRun(){}async detachActiveRun(){if(!this.activeRunDetach$)return;let e=this.activeRunCompletionPromise??Promise.resolve();this.activeRunDetach$.next(),this.activeRunDetach$?.complete(),await e}apply(e,t,n){return Sy(e,t,this,n,this.debugLogger)}processApplyEvents(e,t,n){return t.pipe(vh(t=>{t.messages&&(this.messages=t.messages,n.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),t.state&&(this.state=t.state,n.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})}))}))}prepareRunAgentInput(e){let t=dy(this.messages).filter(e=>e.role!==`activity`);return{threadId:this.threadId,runId:e?.runId||Wl(),tools:dy(e?.tools??[]),context:dy(e?.context??[]),forwardedProps:dy(e?.forwardedProps??{}),state:dy(this.state),messages:t,...e?.resume===void 0?{}:{resume:dy(e.resume)}}}async onInitialize(e,t){if(this.pendingInterrupts.length>0){let t=new Set((e.resume??[]).map(e=>e.interruptId)),n=this.pendingInterrupts.map(e=>e.id).filter(e=>!t.has(e));if(n.length>0)throw new ef(`Thread has ${n.length} pending interrupt(s) not addressed by resume: ${n.join(`, `)}`);for(let e of this.pendingInterrupts)if(Fy(e))throw new ef(`Interrupt ${e.id} expired at ${e.expiresAt}`)}let n=await gy(t,this.messages,this.state,(t,n,r)=>t.onRunInitialized?.({messages:n,state:r,agent:this,input:e}));(n.messages!==void 0||n.state!==void 0)&&(n.messages&&(this.messages=n.messages,e.messages=n.messages,t.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),n.state&&(this.state=n.state,e.state=n.state,t.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})})))}onError(e,t,n){return ah(gy(n,this.messages,this.state,(n,r,i)=>n.onRunFailed?.({error:t,messages:r,state:i,agent:this,input:e}))).pipe(uh(r=>{let i=r;if((i.messages!==void 0||i.state!==void 0)&&(i.messages!==void 0&&(this.messages=i.messages,n.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),i.state!==void 0&&(this.state=i.state,n.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})}))),i.stopPropagation!==!0){let e=String(t);if(!(t.name===`AbortError`||t.message===`Fetch is aborted`||t.message===`signal is aborted without reason`||t.message===`component unmounted`||e===`component unmounted`))throw console.error(`Agent execution failed:`,t),t}return{}}))}async onFinalize(e,t){let n=await gy(t,this.messages,this.state,(t,n,r)=>t.onRunFinalized?.({messages:n,state:r,agent:this,input:e}));(n.messages!==void 0||n.state!==void 0)&&(n.messages!==void 0&&(this.messages=n.messages,t.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),n.state!==void 0&&(this.state=n.state,t.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})})))}clone(){let e=Object.create(Object.getPrototypeOf(this));return e.agentId=this.agentId,e.description=this.description,e.threadId=this.threadId,e.messages=dy(this.messages),e.state=dy(this.state),e._debug=this._debug,e._debugLogger=this._debugLogger,e.isRunning=this.isRunning,e.subscribers=[...this.subscribers],e.middlewares=[...this.middlewares],e.pendingInterrupts=dy(this.pendingInterrupts),e}addMessage(e){this.messages.push(e),(async()=>{for(let t of this.subscribers)await t.onNewMessage?.({message:e,messages:this.messages,state:this.state,agent:this});if(e.role===`assistant`&&e.toolCalls)for(let t of e.toolCalls)for(let e of this.subscribers)await e.onNewToolCall?.({toolCall:t,messages:this.messages,state:this.state,agent:this});for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}addMessages(e){this.messages.push(...e),(async()=>{for(let t of e){for(let e of this.subscribers)await e.onNewMessage?.({message:t,messages:this.messages,state:this.state,agent:this});if(t.role===`assistant`&&t.toolCalls)for(let e of t.toolCalls)for(let t of this.subscribers)await t.onNewToolCall?.({toolCall:e,messages:this.messages,state:this.state,agent:this})}for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}setMessages(e){this.messages=dy(e),(async()=>{for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}setState(e){this.state=dy(e),(async()=>{for(let e of this.subscribers)await e.onStateChanged?.({messages:this.messages,state:this.state,agent:this})})()}legacy_to_be_removed_runAgentBridged(e){this.agentId=this.agentId??Wl();let t=this.prepareRunAgentInput(e);return(this.middlewares.length===0?this.run(t):this.middlewares.reduceRight((e,t)=>({run:n=>t.run(n,e),get messages(){return e.messages},get state(){return e.state}}),this).run(t)).pipe(Py(this.debugLogger),Cy(this.debugLogger),My(this.threadId,t.runId,this.agentId),e=>e.pipe(uh(e=>(this.debugLogger?.event(`LEGACY`,`Event:`,e,{type:e.type}),e))))}},eb=class extends $y{requestInit(e){return{method:`POST`,headers:{...this.headers,"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify(e),signal:this.abortController.signal}}runAgent(e,t){return this.abortController=e?.abortController??new AbortController,super.runAgent(e,t)}abortRun(){this.abortController.abort(),super.abortRun()}constructor(e){super(e),this.abortController=new AbortController,this.url=e.url,this.headers=dy(e.headers??{}),this.fetch=e.fetch??((e,t)=>fetch(e,t))}run(e){return Oy(Ty(()=>this.fetch(this.url,this.requestInit(e))),this.debugLogger)}clone(){let e=super.clone();e.url=this.url,e.headers=dy(this.headers??{}),e.fetch=this.fetch;let t=new AbortController,n=this.abortController.signal;return n.aborted&&t.abort(n.reason),e.abortController=t,e}},tb;(function(e){e.assertEqual=e=>{};function t(e){}e.assertIs=t;function n(e){throw Error()}e.assertNever=n,e.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},e.getValidEnumValues=t=>{let n=e.objectKeys(t).filter(e=>typeof t[t[e]]!=`number`),r={};for(let e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys=typeof Object.keys==`function`?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(let n of e)if(t(n))return n},e.isInteger=typeof Number.isInteger==`function`?e=>Number.isInteger(e):e=>typeof e==`number`&&Number.isFinite(e)&&Math.floor(e)===e;function r(e,t=` | `){return e.map(e=>typeof e==`string`?`'${e}'`:e).join(t)}e.joinValues=r,e.jsonStringifyReplacer=(e,t)=>typeof t==`bigint`?t.toString():t})(tb||={});var nb;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})(nb||={});var rb=tb.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),ib=e=>{switch(typeof e){case`undefined`:return rb.undefined;case`string`:return rb.string;case`number`:return Number.isNaN(e)?rb.nan:rb.number;case`boolean`:return rb.boolean;case`function`:return rb.function;case`bigint`:return rb.bigint;case`symbol`:return rb.symbol;case`object`:return Array.isArray(e)?rb.array:e===null?rb.null:e.then&&typeof e.then==`function`&&e.catch&&typeof e.catch==`function`?rb.promise:typeof Map<`u`&&e instanceof Map?rb.map:typeof Set<`u`&&e instanceof Set?rb.set:typeof Date<`u`&&e instanceof Date?rb.date:rb.object;default:return rb.unknown}},R=tb.arrayToEnum([`invalid_type`,`invalid_literal`,`custom`,`invalid_union`,`invalid_union_discriminator`,`invalid_enum_value`,`unrecognized_keys`,`invalid_arguments`,`invalid_return_type`,`invalid_date`,`invalid_string`,`too_small`,`too_big`,`invalid_intersection_types`,`not_multiple_of`,`not_finite`]),ab=class e extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=`ZodError`,this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`)i.unionErrors.map(r);else if(i.code===`invalid_return_type`)r(i.returnTypeError);else if(i.code===`invalid_arguments`)r(i.argumentsError);else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;re.message){let t={},n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};ab.create=e=>new ab(e);var ob=(e,t)=>{let n;switch(e.code){case R.invalid_type:n=e.received===rb.undefined?`Required`:`Expected ${e.expected}, received ${e.received}`;break;case R.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,tb.jsonStringifyReplacer)}`;break;case R.unrecognized_keys:n=`Unrecognized key(s) in object: ${tb.joinValues(e.keys,`, `)}`;break;case R.invalid_union:n=`Invalid input`;break;case R.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${tb.joinValues(e.options)}`;break;case R.invalid_enum_value:n=`Invalid enum value. Expected ${tb.joinValues(e.options)}, received '${e.received}'`;break;case R.invalid_arguments:n=`Invalid function arguments`;break;case R.invalid_return_type:n=`Invalid function return type`;break;case R.invalid_date:n=`Invalid date`;break;case R.invalid_string:typeof e.validation==`object`?`includes`in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position==`number`&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):`startsWith`in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:`endsWith`in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:tb.assertNever(e.validation):n=e.validation===`regex`?`Invalid`:`Invalid ${e.validation}`;break;case R.too_small:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at least`:`more than`} ${e.minimum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at least`:`over`} ${e.minimum} character(s)`:e.type===`number`||e.type===`bigint`?`Number must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${e.minimum}`:e.type===`date`?`Date must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(e.minimum))}`:`Invalid input`;break;case R.too_big:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at most`:`less than`} ${e.maximum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at most`:`under`} ${e.maximum} character(s)`:e.type===`number`?`Number must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`bigint`?`BigInt must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`date`?`Date must be ${e.exact?`exactly`:e.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(e.maximum))}`:`Invalid input`;break;case R.custom:n=`Invalid input`;break;case R.invalid_intersection_types:n=`Intersection results could not be merged`;break;case R.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case R.not_finite:n=`Number must be finite`;break;default:n=t.defaultError,tb.assertNever(e)}return{message:n}},sb=ob;function cb(){return sb}var lb=e=>{let{data:t,path:n,errorMaps:r,issueData:i}=e,a=[...n,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s=``,c=r.filter(e=>!!e).slice().reverse();for(let e of c)s=e(o,{data:t,defaultError:s}).message;return{...i,path:a,message:s}};function z(e,t){let n=cb(),r=lb({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===ob?void 0:ob].filter(e=>!!e)});e.common.issues.push(r)}var ub=class e{constructor(){this.value=`valid`}dirty(){this.value===`valid`&&(this.value=`dirty`)}abort(){this.value!==`aborted`&&(this.value=`aborted`)}static mergeArray(e,t){let n=[];for(let r of t){if(r.status===`aborted`)return db;r.status===`dirty`&&e.dirty(),n.push(r.value)}return{status:e.value,value:n}}static async mergeObjectAsync(t,n){let r=[];for(let e of n){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return e.mergeObjectSync(t,r)}static mergeObjectSync(e,t){let n={};for(let r of t){let{key:t,value:i}=r;if(t.status===`aborted`||i.status===`aborted`)return db;t.status===`dirty`&&e.dirty(),i.status===`dirty`&&e.dirty(),t.value!==`__proto__`&&(i.value!==void 0||r.alwaysSet)&&(n[t.value]=i.value)}return{status:e.value,value:n}}},db=Object.freeze({status:`aborted`}),fb=e=>({status:`dirty`,value:e}),pb=e=>({status:`valid`,value:e}),mb=e=>e.status===`aborted`,hb=e=>e.status===`dirty`,gb=e=>e.status===`valid`,_b=e=>typeof Promise<`u`&&e instanceof Promise,vb;(function(e){e.errToObj=e=>typeof e==`string`?{message:e}:e||{},e.toString=e=>typeof e==`string`?e:e?.message})(vb||={});var yb=class{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},bb=(e,t)=>{if(gb(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(`Validation failed but no issues detected.`);return{success:!1,get error(){if(this._error)return this._error;let t=new ab(e.common.issues);return this._error=t,this._error}}};function xb(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return t.code===`invalid_enum_value`?{message:a??i.defaultError}:i.data===void 0?{message:a??r??i.defaultError}:t.code===`invalid_type`?{message:a??n??i.defaultError}:{message:i.defaultError}},description:i}}var Sb=class{get description(){return this._def.description}_getType(e){return ib(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:ib(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new ub,ctx:{common:e.parent.common,data:e.data,parsedType:ib(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(_b(t))throw Error(`Synchronous parse encountered promise.`);return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ib(e)};return bb(n,this._parseSync({data:e,path:n.path,parent:n}))}"~validate"(e){let t={common:{issues:[],async:!!this[`~standard`].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ib(e)};if(!this[`~standard`].async)try{let n=this._parseSync({data:e,path:[],parent:t});return gb(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(`encountered`)&&(this[`~standard`].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>gb(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ib(e)},r=this._parse({data:e,path:n.path,parent:n});return bb(n,await(_b(r)?r:Promise.resolve(r)))}refine(e,t){let n=e=>typeof t==`string`||t===void 0?{message:t}:typeof t==`function`?t(e):t;return this._refinement((t,r)=>{let i=e(t),a=()=>r.addIssue({code:R.custom,...n(t)});return typeof Promise<`u`&&i instanceof Promise?i.then(e=>e?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(e,t){return this._refinement((n,r)=>e(n)?!0:(r.addIssue(typeof t==`function`?t(n,r):t),!1))}_refinement(e){return new gx({schema:this,typeName:Tx.ZodEffects,effect:{type:`refinement`,refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[`~standard`]={version:1,vendor:`zod`,validate:e=>this[`~validate`](e)}}optional(){return _x.create(this,this._def)}nullable(){return vx.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Zb.create(this)}promise(){return hx.create(this,this._def)}or(e){return ex.create([this,e],this._def)}and(e){return ix.create(this,e,this._def)}transform(e){return new gx({...xb(this._def),schema:this,typeName:Tx.ZodEffects,effect:{type:`transform`,transform:e}})}default(e){let t=typeof e==`function`?e:()=>e;return new yx({...xb(this._def),innerType:this,defaultValue:t,typeName:Tx.ZodDefault})}brand(){return new Sx({typeName:Tx.ZodBranded,type:this,...xb(this._def)})}catch(e){let t=typeof e==`function`?e:()=>e;return new bx({...xb(this._def),innerType:this,catchValue:t,typeName:Tx.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return Cx.create(this,e)}readonly(){return wx.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},Cb=/^c[^\s-]{8,}$/i,wb=/^[0-9a-z]+$/,Tb=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Eb=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Db=/^[a-z0-9_-]{21}$/i,Ob=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,kb=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Ab=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,jb=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,Mb,Nb=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Pb=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,Fb=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Ib=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,dee=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,fee=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Lb=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`,pee=RegExp(`^${Lb}$`);function Rb(e){let t=`[0-5]\\d`;e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision??(t=`${t}(\\.\\d+)?`);let n=e.precision?`+`:`?`;return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function mee(e){return RegExp(`^${Rb(e)}$`)}function hee(e){let t=`${Lb}T${Rb(e)}`,n=[];return n.push(e.local?`Z?`:`Z`),e.offset&&n.push(`([+-]\\d{2}:?\\d{2})`),t=`${t}(${n.join(`|`)})`,RegExp(`^${t}$`)}function gee(e,t){return!!((t===`v4`||!t)&&Nb.test(e)||(t===`v6`||!t)&&Fb.test(e))}function _ee(e,t){if(!Ob.test(e))return!1;try{let[n]=e.split(`.`);if(!n)return!1;let r=n.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(n.length+(4-n.length%4)%4,`=`),i=JSON.parse(atob(r));return!(typeof i!=`object`||!i||`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&i.alg!==t)}catch{return!1}}function vee(e,t){return!!((t===`v4`||!t)&&Pb.test(e)||(t===`v6`||!t)&&Ib.test(e))}var zb=class e extends Sb{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==rb.string){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:rb.string,received:t.parsedType}),db}let t=new ub,n;for(let r of this._def.checks)if(r.kind===`min`)e.data.lengthr.value&&(n=this._getOrReturnCtx(e,n),z(n,{code:R.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),t.dirty());else if(r.kind===`length`){let i=e.data.length>r.value,a=e.data.lengthe.test(t),{validation:t,code:R.invalid_string,...vb.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(e){return this._addCheck({kind:`email`,...vb.errToObj(e)})}url(e){return this._addCheck({kind:`url`,...vb.errToObj(e)})}emoji(e){return this._addCheck({kind:`emoji`,...vb.errToObj(e)})}uuid(e){return this._addCheck({kind:`uuid`,...vb.errToObj(e)})}nanoid(e){return this._addCheck({kind:`nanoid`,...vb.errToObj(e)})}cuid(e){return this._addCheck({kind:`cuid`,...vb.errToObj(e)})}cuid2(e){return this._addCheck({kind:`cuid2`,...vb.errToObj(e)})}ulid(e){return this._addCheck({kind:`ulid`,...vb.errToObj(e)})}base64(e){return this._addCheck({kind:`base64`,...vb.errToObj(e)})}base64url(e){return this._addCheck({kind:`base64url`,...vb.errToObj(e)})}jwt(e){return this._addCheck({kind:`jwt`,...vb.errToObj(e)})}ip(e){return this._addCheck({kind:`ip`,...vb.errToObj(e)})}cidr(e){return this._addCheck({kind:`cidr`,...vb.errToObj(e)})}datetime(e){return typeof e==`string`?this._addCheck({kind:`datetime`,precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:`datetime`,precision:e?.precision===void 0?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...vb.errToObj(e?.message)})}date(e){return this._addCheck({kind:`date`,message:e})}time(e){return typeof e==`string`?this._addCheck({kind:`time`,precision:null,message:e}):this._addCheck({kind:`time`,precision:e?.precision===void 0?null:e?.precision,...vb.errToObj(e?.message)})}duration(e){return this._addCheck({kind:`duration`,...vb.errToObj(e)})}regex(e,t){return this._addCheck({kind:`regex`,regex:e,...vb.errToObj(t)})}includes(e,t){return this._addCheck({kind:`includes`,value:e,position:t?.position,...vb.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:`startsWith`,value:e,...vb.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:`endsWith`,value:e,...vb.errToObj(t)})}min(e,t){return this._addCheck({kind:`min`,value:e,...vb.errToObj(t)})}max(e,t){return this._addCheck({kind:`max`,value:e,...vb.errToObj(t)})}length(e,t){return this._addCheck({kind:`length`,value:e,...vb.errToObj(t)})}nonempty(e){return this.min(1,vb.errToObj(e))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:`trim`}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toLowerCase`}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toUpperCase`}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind===`datetime`)}get isDate(){return!!this._def.checks.find(e=>e.kind===`date`)}get isTime(){return!!this._def.checks.find(e=>e.kind===`time`)}get isDuration(){return!!this._def.checks.find(e=>e.kind===`duration`)}get isEmail(){return!!this._def.checks.find(e=>e.kind===`email`)}get isURL(){return!!this._def.checks.find(e=>e.kind===`url`)}get isEmoji(){return!!this._def.checks.find(e=>e.kind===`emoji`)}get isUUID(){return!!this._def.checks.find(e=>e.kind===`uuid`)}get isNANOID(){return!!this._def.checks.find(e=>e.kind===`nanoid`)}get isCUID(){return!!this._def.checks.find(e=>e.kind===`cuid`)}get isCUID2(){return!!this._def.checks.find(e=>e.kind===`cuid2`)}get isULID(){return!!this._def.checks.find(e=>e.kind===`ulid`)}get isIP(){return!!this._def.checks.find(e=>e.kind===`ip`)}get isCIDR(){return!!this._def.checks.find(e=>e.kind===`cidr`)}get isBase64(){return!!this._def.checks.find(e=>e.kind===`base64`)}get isBase64url(){return!!this._def.checks.find(e=>e.kind===`base64url`)}get minLength(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew zb({checks:[],typeName:Tx.ZodString,coerce:e?.coerce??!1,...xb(e)});function yee(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=(t.toString().split(`.`)[1]||``).length,i=n>r?n:r;return Number.parseInt(e.toFixed(i).replace(`.`,``))%Number.parseInt(t.toFixed(i).replace(`.`,``))/10**i}var Bb=class e extends Sb{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==rb.number){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:rb.number,received:t.parsedType}),db}let t,n=new ub;for(let r of this._def.checks)r.kind===`int`?tb.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),z(t,{code:R.invalid_type,expected:`integer`,received:`float`,message:r.message}),n.dirty()):r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),z(t,{code:R.too_big,maximum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):r.kind===`multipleOf`?yee(e.data,r.value)!==0&&(t=this._getOrReturnCtx(e,t),z(t,{code:R.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):r.kind===`finite`?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),z(t,{code:R.not_finite,message:r.message}),n.dirty()):tb.assertNever(r);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit(`min`,e,!0,vb.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,vb.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,vb.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,vb.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:vb.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(e){return this._addCheck({kind:`int`,message:vb.toString(e)})}positive(e){return this._addCheck({kind:`min`,value:0,inclusive:!1,message:vb.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:0,inclusive:!1,message:vb.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:0,inclusive:!0,message:vb.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:0,inclusive:!0,message:vb.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:vb.toString(t)})}finite(e){return this._addCheck({kind:`finite`,message:vb.toString(e)})}safe(e){return this._addCheck({kind:`min`,inclusive:!0,value:-(2**53-1),message:vb.toString(e)})._addCheck({kind:`max`,inclusive:!0,value:2**53-1,message:vb.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuee.kind===`int`||e.kind===`multipleOf`&&tb.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(n.kind===`finite`||n.kind===`int`||n.kind===`multipleOf`)return!0;else n.kind===`min`?(t===null||n.value>t)&&(t=n.value):n.kind===`max`&&(e===null||n.valuenew Bb({checks:[],typeName:Tx.ZodNumber,coerce:e?.coerce||!1,...xb(e)});var Vb=class e extends Sb{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==rb.bigint)return this._getInvalidInput(e);let t,n=new ub;for(let r of this._def.checks)r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),z(t,{code:R.too_big,type:`bigint`,maximum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):r.kind===`multipleOf`?e.data%r.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),z(t,{code:R.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):tb.assertNever(r);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:rb.bigint,received:t.parsedType}),db}gte(e,t){return this.setLimit(`min`,e,!0,vb.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,vb.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,vb.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,vb.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:vb.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!1,message:vb.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!1,message:vb.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!0,message:vb.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!0,message:vb.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:vb.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew Vb({checks:[],typeName:Tx.ZodBigInt,coerce:e?.coerce??!1,...xb(e)});var Hb=class extends Sb{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==rb.boolean){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:rb.boolean,received:t.parsedType}),db}return pb(e.data)}};Hb.create=e=>new Hb({typeName:Tx.ZodBoolean,coerce:e?.coerce||!1,...xb(e)});var Ub=class e extends Sb{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==rb.date){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:rb.date,received:t.parsedType}),db}if(Number.isNaN(e.data.getTime()))return z(this._getOrReturnCtx(e),{code:R.invalid_date}),db;let t=new ub,n;for(let r of this._def.checks)r.kind===`min`?e.data.getTime()r.value&&(n=this._getOrReturnCtx(e,n),z(n,{code:R.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:`date`}),t.dirty()):tb.assertNever(r);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(e,t){return this._addCheck({kind:`min`,value:e.getTime(),message:vb.toString(t)})}max(e,t){return this._addCheck({kind:`max`,value:e.getTime(),message:vb.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e==null?null:new Date(e)}get maxDate(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew Ub({checks:[],coerce:e?.coerce||!1,typeName:Tx.ZodDate,...xb(e)});var Wb=class extends Sb{_parse(e){if(this._getType(e)!==rb.symbol){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:rb.symbol,received:t.parsedType}),db}return pb(e.data)}};Wb.create=e=>new Wb({typeName:Tx.ZodSymbol,...xb(e)});var Gb=class extends Sb{_parse(e){if(this._getType(e)!==rb.undefined){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:rb.undefined,received:t.parsedType}),db}return pb(e.data)}};Gb.create=e=>new Gb({typeName:Tx.ZodUndefined,...xb(e)});var Kb=class extends Sb{_parse(e){if(this._getType(e)!==rb.null){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:rb.null,received:t.parsedType}),db}return pb(e.data)}};Kb.create=e=>new Kb({typeName:Tx.ZodNull,...xb(e)});var qb=class extends Sb{constructor(){super(...arguments),this._any=!0}_parse(e){return pb(e.data)}};qb.create=e=>new qb({typeName:Tx.ZodAny,...xb(e)});var Jb=class extends Sb{constructor(){super(...arguments),this._unknown=!0}_parse(e){return pb(e.data)}};Jb.create=e=>new Jb({typeName:Tx.ZodUnknown,...xb(e)});var Yb=class extends Sb{_parse(e){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:rb.never,received:t.parsedType}),db}};Yb.create=e=>new Yb({typeName:Tx.ZodNever,...xb(e)});var Xb=class extends Sb{_parse(e){if(this._getType(e)!==rb.undefined){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:rb.void,received:t.parsedType}),db}return pb(e.data)}};Xb.create=e=>new Xb({typeName:Tx.ZodVoid,...xb(e)});var Zb=class e extends Sb{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==rb.array)return z(t,{code:R.invalid_type,expected:rb.array,received:t.parsedType}),db;if(r.exactLength!==null){let e=t.data.length>r.exactLength.value,i=t.data.lengthr.maxLength.value&&(z(t,{code:R.too_big,maximum:r.maxLength.value,type:`array`,inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>r.type._parseAsync(new yb(t,e,t.path,n)))).then(e=>ub.mergeArray(n,e));let i=[...t.data].map((e,n)=>r.type._parseSync(new yb(t,e,t.path,n)));return ub.mergeArray(n,i)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:vb.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:vb.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:vb.toString(n)}})}nonempty(e){return this.min(1,e)}};Zb.create=(e,t)=>new Zb({type:e,minLength:null,maxLength:null,exactLength:null,typeName:Tx.ZodArray,...xb(t)});function Qb(e){if(e instanceof $b){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=_x.create(Qb(r))}return new $b({...e._def,shape:()=>t})}else if(e instanceof Zb)return new Zb({...e._def,type:Qb(e.element)});else if(e instanceof _x)return _x.create(Qb(e.unwrap()));else if(e instanceof vx)return vx.create(Qb(e.unwrap()));else if(e instanceof ax)return ax.create(e.items.map(e=>Qb(e)));else return e}var $b=class e extends Sb{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=tb.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==rb.object){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:rb.object,received:t.parsedType}),db}let{status:t,ctx:n}=this._processInputParams(e),{shape:r,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof Yb&&this._def.unknownKeys===`strip`))for(let e in n.data)i.includes(e)||a.push(e);let o=[];for(let e of i){let t=r[e],i=n.data[e];o.push({key:{status:`valid`,value:e},value:t._parse(new yb(n,i,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof Yb){let e=this._def.unknownKeys;if(e===`passthrough`)for(let e of a)o.push({key:{status:`valid`,value:e},value:{status:`valid`,value:n.data[e]}});else if(e===`strict`)a.length>0&&(z(n,{code:R.unrecognized_keys,keys:a}),t.dirty());else if(e!==`strip`)throw Error(`Internal ZodObject error: invalid unknownKeys value.`)}else{let e=this._def.catchall;for(let t of a){let r=n.data[t];o.push({key:{status:`valid`,value:t},value:e._parse(new yb(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of o){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>ub.mergeObjectSync(t,e)):ub.mergeObjectSync(t,o)}get shape(){return this._def.shape()}strict(t){return vb.errToObj,new e({...this._def,unknownKeys:`strict`,...t===void 0?{}:{errorMap:(e,n)=>{let r=this._def.errorMap?.(e,n).message??n.defaultError;return e.code===`unrecognized_keys`?{message:vb.errToObj(t).message??r}:{message:r}}}})}strip(){return new e({...this._def,unknownKeys:`strip`})}passthrough(){return new e({...this._def,unknownKeys:`passthrough`})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:Tx.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let n={};for(let e of tb.objectKeys(t))t[e]&&this.shape[e]&&(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}omit(t){let n={};for(let e of tb.objectKeys(this.shape))t[e]||(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}deepPartial(){return Qb(this)}partial(t){let n={};for(let e of tb.objectKeys(this.shape)){let r=this.shape[e];t&&!t[e]?n[e]=r:n[e]=r.optional()}return new e({...this._def,shape:()=>n})}required(t){let n={};for(let e of tb.objectKeys(this.shape))if(t&&!t[e])n[e]=this.shape[e];else{let t=this.shape[e];for(;t instanceof _x;)t=t._def.innerType;n[e]=t}return new e({...this._def,shape:()=>n})}keyof(){return fx(tb.objectKeys(this.shape))}};$b.create=(e,t)=>new $b({shape:()=>e,unknownKeys:`strip`,catchall:Yb.create(),typeName:Tx.ZodObject,...xb(t)}),$b.strictCreate=(e,t)=>new $b({shape:()=>e,unknownKeys:`strict`,catchall:Yb.create(),typeName:Tx.ZodObject,...xb(t)}),$b.lazycreate=(e,t)=>new $b({shape:e,unknownKeys:`strip`,catchall:Yb.create(),typeName:Tx.ZodObject,...xb(t)});var ex=class extends Sb{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;function r(e){for(let t of e)if(t.result.status===`valid`)return t.result;for(let n of e)if(n.result.status===`dirty`)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new ab(e.ctx.common.issues));return z(t,{code:R.invalid_union,unionErrors:n}),db}if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(r);{let e,r=[];for(let i of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:n});if(a.status===`valid`)return a;a.status===`dirty`&&!e&&(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=r.map(e=>new ab(e));return z(t,{code:R.invalid_union,unionErrors:i}),db}}get options(){return this._def.options}};ex.create=(e,t)=>new ex({options:e,typeName:Tx.ZodUnion,...xb(t)});var tx=e=>e instanceof ux?tx(e.schema):e instanceof gx?tx(e.innerType()):e instanceof dx?[e.value]:e instanceof px?e.options:e instanceof mx?tb.objectValues(e.enum):e instanceof yx?tx(e._def.innerType):e instanceof Gb?[void 0]:e instanceof Kb?[null]:e instanceof _x?[void 0,...tx(e.unwrap())]:e instanceof vx?[null,...tx(e.unwrap())]:e instanceof Sx||e instanceof wx?tx(e.unwrap()):e instanceof bx?tx(e._def.innerType):[],nx=class e extends Sb{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==rb.object)return z(t,{code:R.invalid_type,expected:rb.object,received:t.parsedType}),db;let n=this.discriminator,r=t.data[n],i=this.optionsMap.get(r);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(z(t,{code:R.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),db)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){let i=new Map;for(let e of n){let n=tx(e.shape[t]);if(!n.length)throw Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let r of n){if(i.has(r))throw Error(`Discriminator property ${String(t)} has duplicate value ${String(r)}`);i.set(r,e)}}return new e({typeName:Tx.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...xb(r)})}};function rx(e,t){let n=ib(e),r=ib(t);if(e===t)return{valid:!0,data:e};if(n===rb.object&&r===rb.object){let n=tb.objectKeys(t),r=tb.objectKeys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=rx(e[n],t[n]);if(!r.valid)return{valid:!1};i[n]=r.data}return{valid:!0,data:i}}else if(n===rb.array&&r===rb.array){if(e.length!==t.length)return{valid:!1};let n=[];for(let r=0;r{if(mb(e)||mb(r))return db;let i=rx(e.value,r.value);return i.valid?((hb(e)||hb(r))&&t.dirty(),{status:t.value,value:i.data}):(z(n,{code:R.invalid_intersection_types}),db)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([e,t])=>r(e,t)):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};ix.create=(e,t,n)=>new ix({left:e,right:t,typeName:Tx.ZodIntersection,...xb(n)});var ax=class e extends Sb{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==rb.array)return z(n,{code:R.invalid_type,expected:rb.array,received:n.parsedType}),db;if(n.data.lengththis._def.items.length&&(z(n,{code:R.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),t.dirty());let r=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new yb(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(r).then(e=>ub.mergeArray(t,e)):ub.mergeArray(t,r)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};ax.create=(e,t)=>{if(!Array.isArray(e))throw Error(`You must pass an array of schemas to z.tuple([ ... ])`);return new ax({items:e,typeName:Tx.ZodTuple,rest:null,...xb(t)})};var ox=class e extends Sb{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==rb.object)return z(n,{code:R.invalid_type,expected:rb.object,received:n.parsedType}),db;let r=[],i=this._def.keyType,a=this._def.valueType;for(let e in n.data)r.push({key:i._parse(new yb(n,e,n.path,e)),value:a._parse(new yb(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?ub.mergeObjectAsync(t,r):ub.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof Sb?new e({keyType:t,valueType:n,typeName:Tx.ZodRecord,...xb(r)}):new e({keyType:zb.create(),valueType:t,typeName:Tx.ZodRecord,...xb(n)})}},sx=class extends Sb{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==rb.map)return z(n,{code:R.invalid_type,expected:rb.map,received:n.parsedType}),db;let r=this._def.keyType,i=this._def.valueType,a=[...n.data.entries()].map(([e,t],a)=>({key:r._parse(new yb(n,e,n.path,[a,`key`])),value:i._parse(new yb(n,t,n.path,[a,`value`]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of a){let r=await n.key,i=await n.value;if(r.status===`aborted`||i.status===`aborted`)return db;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}})}else{let e=new Map;for(let n of a){let r=n.key,i=n.value;if(r.status===`aborted`||i.status===`aborted`)return db;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}}};sx.create=(e,t,n)=>new sx({valueType:t,keyType:e,typeName:Tx.ZodMap,...xb(n)});var cx=class e extends Sb{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==rb.set)return z(n,{code:R.invalid_type,expected:rb.set,received:n.parsedType}),db;let r=this._def;r.minSize!==null&&n.data.sizer.maxSize.value&&(z(n,{code:R.too_big,maximum:r.maxSize.value,type:`set`,inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let i=this._def.valueType;function a(e){let n=new Set;for(let r of e){if(r.status===`aborted`)return db;r.status===`dirty`&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let o=[...n.data.values()].map((e,t)=>i._parse(new yb(n,e,n.path,t)));return n.common.async?Promise.all(o).then(e=>a(e)):a(o)}min(t,n){return new e({...this._def,minSize:{value:t,message:vb.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:vb.toString(n)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};cx.create=(e,t)=>new cx({valueType:e,minSize:null,maxSize:null,typeName:Tx.ZodSet,...xb(t)});var lx=class e extends Sb{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==rb.function)return z(t,{code:R.invalid_type,expected:rb.function,received:t.parsedType}),db;function n(e,n){return lb({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,cb(),ob].filter(e=>!!e),issueData:{code:R.invalid_arguments,argumentsError:n}})}function r(e,n){return lb({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,cb(),ob].filter(e=>!!e),issueData:{code:R.invalid_return_type,returnTypeError:n}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof hx){let e=this;return pb(async function(...t){let o=new ab([]),s=await e._def.args.parseAsync(t,i).catch(e=>{throw o.addIssue(n(t,e)),o}),c=await Reflect.apply(a,this,s);return await e._def.returns._def.type.parseAsync(c,i).catch(e=>{throw o.addIssue(r(c,e)),o})})}else{let e=this;return pb(function(...t){let o=e._def.args.safeParse(t,i);if(!o.success)throw new ab([n(t,o.error)]);let s=Reflect.apply(a,this,o.data),c=e._def.returns.safeParse(s,i);if(!c.success)throw new ab([r(s,c.error)]);return c.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:ax.create(t).rest(Jb.create())})}returns(t){return new e({...this._def,returns:t})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(t,n,r){return new e({args:t||ax.create([]).rest(Jb.create()),returns:n||Jb.create(),typeName:Tx.ZodFunction,...xb(r)})}},ux=class extends Sb{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};ux.create=(e,t)=>new ux({getter:e,typeName:Tx.ZodLazy,...xb(t)});var dx=class extends Sb{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return z(t,{received:t.data,code:R.invalid_literal,expected:this._def.value}),db}return{status:`valid`,value:e.data}}get value(){return this._def.value}};dx.create=(e,t)=>new dx({value:e,typeName:Tx.ZodLiteral,...xb(t)});function fx(e,t){return new px({values:e,typeName:Tx.ZodEnum,...xb(t)})}var px=class e extends Sb{_parse(e){if(typeof e.data!=`string`){let t=this._getOrReturnCtx(e),n=this._def.values;return z(t,{expected:tb.joinValues(n),received:t.parsedType,code:R.invalid_type}),db}if(this._cache||=new Set(this._def.values),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return z(t,{received:t.data,code:R.invalid_enum_value,options:n}),db}return pb(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(t,n=this._def){return e.create(t,{...this._def,...n})}exclude(t,n=this._def){return e.create(this.options.filter(e=>!t.includes(e)),{...this._def,...n})}};px.create=fx;var mx=class extends Sb{_parse(e){let t=tb.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==rb.string&&n.parsedType!==rb.number){let e=tb.objectValues(t);return z(n,{expected:tb.joinValues(e),received:n.parsedType,code:R.invalid_type}),db}if(this._cache||=new Set(tb.getValidEnumValues(this._def.values)),!this._cache.has(e.data)){let e=tb.objectValues(t);return z(n,{received:n.data,code:R.invalid_enum_value,options:e}),db}return pb(e.data)}get enum(){return this._def.values}};mx.create=(e,t)=>new mx({values:e,typeName:Tx.ZodNativeEnum,...xb(t)});var hx=class extends Sb{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==rb.promise&&t.common.async===!1?(z(t,{code:R.invalid_type,expected:rb.promise,received:t.parsedType}),db):pb((t.parsedType===rb.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}};hx.create=(e,t)=>new hx({type:e,typeName:Tx.ZodPromise,...xb(t)});var gx=class extends Sb{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Tx.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=this._def.effect||null,i={addIssue:e=>{z(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(i.addIssue=i.addIssue.bind(i),r.type===`preprocess`){let e=r.transform(n.data,i);if(n.common.async)return Promise.resolve(e).then(async e=>{if(t.value===`aborted`)return db;let r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return r.status===`aborted`?db:r.status===`dirty`||t.value===`dirty`?fb(r.value):r});{if(t.value===`aborted`)return db;let r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return r.status===`aborted`?db:r.status===`dirty`||t.value===`dirty`?fb(r.value):r}}if(r.type===`refinement`){let e=e=>{let t=r.refinement(e,i);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(`Async refinement encountered during synchronous parse operation. Use .parseAsync instead.`);return e};if(n.common.async===!1){let r=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return r.status===`aborted`?db:(r.status===`dirty`&&t.dirty(),e(r.value),{status:t.value,value:r.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(n=>n.status===`aborted`?db:(n.status===`dirty`&&t.dirty(),e(n.value).then(()=>({status:t.value,value:n.value}))))}if(r.type===`transform`)if(n.common.async===!1){let e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!gb(e))return db;let a=r.transform(e.value,i);if(a instanceof Promise)throw Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);return{status:t.value,value:a}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(e=>gb(e)?Promise.resolve(r.transform(e.value,i)).then(e=>({status:t.value,value:e})):db);tb.assertNever(r)}};gx.create=(e,t,n)=>new gx({schema:e,typeName:Tx.ZodEffects,effect:t,...xb(n)}),gx.createWithPreprocess=(e,t,n)=>new gx({schema:t,effect:{type:`preprocess`,transform:e},typeName:Tx.ZodEffects,...xb(n)});var _x=class extends Sb{_parse(e){return this._getType(e)===rb.undefined?pb(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};_x.create=(e,t)=>new _x({innerType:e,typeName:Tx.ZodOptional,...xb(t)});var vx=class extends Sb{_parse(e){return this._getType(e)===rb.null?pb(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};vx.create=(e,t)=>new vx({innerType:e,typeName:Tx.ZodNullable,...xb(t)});var yx=class extends Sb{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===rb.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};yx.create=(e,t)=>new yx({innerType:e,typeName:Tx.ZodDefault,defaultValue:typeof t.default==`function`?t.default:()=>t.default,...xb(t)});var bx=class extends Sb{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return _b(r)?r.then(e=>({status:`valid`,value:e.status===`valid`?e.value:this._def.catchValue({get error(){return new ab(n.common.issues)},input:n.data})})):{status:`valid`,value:r.status===`valid`?r.value:this._def.catchValue({get error(){return new ab(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};bx.create=(e,t)=>new bx({innerType:e,typeName:Tx.ZodCatch,catchValue:typeof t.catch==`function`?t.catch:()=>t.catch,...xb(t)});var xx=class extends Sb{_parse(e){if(this._getType(e)!==rb.nan){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:rb.nan,received:t.parsedType}),db}return{status:`valid`,value:e.data}}};xx.create=e=>new xx({typeName:Tx.ZodNaN,...xb(e)});var Sx=class extends Sb{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}},Cx=class e extends Sb{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?db:e.status===`dirty`?(t.dirty(),fb(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})();{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?db:e.status===`dirty`?(t.dirty(),{status:`dirty`,value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(t,n){return new e({in:t,out:n,typeName:Tx.ZodPipeline})}},wx=class extends Sb{_parse(e){let t=this._def.innerType._parse(e),n=e=>(gb(e)&&(e.value=Object.freeze(e.value)),e);return _b(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}};wx.create=(e,t)=>new wx({innerType:e,typeName:Tx.ZodReadonly,...xb(t)}),$b.lazycreate;var Tx;(function(e){e.ZodString=`ZodString`,e.ZodNumber=`ZodNumber`,e.ZodNaN=`ZodNaN`,e.ZodBigInt=`ZodBigInt`,e.ZodBoolean=`ZodBoolean`,e.ZodDate=`ZodDate`,e.ZodSymbol=`ZodSymbol`,e.ZodUndefined=`ZodUndefined`,e.ZodNull=`ZodNull`,e.ZodAny=`ZodAny`,e.ZodUnknown=`ZodUnknown`,e.ZodNever=`ZodNever`,e.ZodVoid=`ZodVoid`,e.ZodArray=`ZodArray`,e.ZodObject=`ZodObject`,e.ZodUnion=`ZodUnion`,e.ZodDiscriminatedUnion=`ZodDiscriminatedUnion`,e.ZodIntersection=`ZodIntersection`,e.ZodTuple=`ZodTuple`,e.ZodRecord=`ZodRecord`,e.ZodMap=`ZodMap`,e.ZodSet=`ZodSet`,e.ZodFunction=`ZodFunction`,e.ZodLazy=`ZodLazy`,e.ZodLiteral=`ZodLiteral`,e.ZodEnum=`ZodEnum`,e.ZodEffects=`ZodEffects`,e.ZodNativeEnum=`ZodNativeEnum`,e.ZodOptional=`ZodOptional`,e.ZodNullable=`ZodNullable`,e.ZodDefault=`ZodDefault`,e.ZodCatch=`ZodCatch`,e.ZodPromise=`ZodPromise`,e.ZodBranded=`ZodBranded`,e.ZodPipeline=`ZodPipeline`,e.ZodReadonly=`ZodReadonly`})(Tx||={});var Ex=zb.create,Dx=Bb.create;xx.create,Vb.create;var Ox=Hb.create;Ub.create,Wb.create,Gb.create,Kb.create;var kx=qb.create;Jb.create,Yb.create,Xb.create;var Ax=Zb.create,jx=$b.create;$b.strictCreate;var Mx=ex.create;nx.create,ix.create,ax.create;var Nx=ox.create;sx.create,cx.create,lx.create,ux.create;var Px=dx.create,Fx=px.create;mx.create,hx.create,gx.create,_x.create,vx.create;var Ix=gx.createWithPreprocess;Cx.create;var Lx={string:(e=>zb.create({...e,coerce:!0})),number:(e=>Bb.create({...e,coerce:!0})),boolean:(e=>Hb.create({...e,coerce:!0})),bigint:(e=>Vb.create({...e,coerce:!0})),date:(e=>Ub.create({...e,coerce:!0}))},Rx=class extends Error{constructor(e,t=`UNKNOWN_ERROR`){super(e),this.name=this.constructor.name,this.code=t,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},zx=class extends Rx{constructor(e,t){super(e,`VALIDATION_ERROR`),this.details=t}},Bx=class extends Rx{constructor(e,t){super(e,`DATA_ERROR`),this.path=t}},Vx=class extends Rx{constructor(e,t,n){super(e,`EXPRESSION_ERROR`),this.expression=t,this.details=n}},Hx=class extends Rx{constructor(e){super(e,`STATE_ERROR`)}};function Ux(e){return e&&typeof e==`object`&&`value`in e&&`peek`in e}function Wx(e,t){return{name:e.name,returnType:e.returnType,schema:e.schema,execute:t}}var Gx=class{constructor(e,t,n=[],r){this.id=e;let i=new Map;for(let e of t)i.set(e.name,e);this.components=i;let a=new Map;for(let e of n)a.set(e.name,e);this.functions=a,this.themeSchema=r,this.invoker=(e,t,n,r)=>{let i=this.functions.get(e);if(!i)throw new Vx(`Function not found in catalog '${this.id}': ${e}`,e);try{let e=i.schema.parse(t);return i.execute(e,n,r)}catch(t){throw t?.name===`ZodError`||t instanceof ab?new Vx(`Validation failed for function '${e}': ${t.message}`,e,t.errors??t.issues):t}}}},Kx=class{constructor(){this.listeners=new Set}subscribe(e){return this.listeners.add(e),{unsubscribe:()=>this.listeners.delete(e)}}async emit(e){for(let t of this.listeners)try{await t(e)}catch(e){console.error(`EventEmitter error:`,e)}}dispose(){this.listeners.clear()}},qx=Symbol.for(`preact-signals`);function Jx(){if(eS>1)eS--;else{var e,t=!1;for((function(){var e=iS;for(iS=void 0;e!==void 0;){var t=e.S;if(t.v===e.v)for(var n=t.t;n!==void 0;n=n.x)n.i===e.i&&(n.i=t.i);e=e.o}})();$x!==void 0;){var n=$x;for($x=void 0,tS++;n!==void 0;){var r=n.u;if(n.u=void 0,n.f&=-3,!(8&n.f)&&lS(n))try{n.c()}catch(n){t||=(e=n,!0)}n=r}}if(tS=0,eS--,t)throw e}}function Yx(e){if(eS>0)return e();rS=++nS,eS++;try{return e()}finally{Jx()}}var Xx,Zx=void 0;function Qx(e){var t=Zx,n=Xx;Zx=void 0,Xx=void 0;try{return e()}finally{Zx=t,Xx=n}}var $x=void 0,eS=0,tS=0,nS=0,rS=0,iS=void 0,aS=0;function oS(e){if(Zx!==void 0){var t=e.n;if(t===void 0||t.t!==Zx)return t={i:0,S:e,p:Zx.s,n:void 0,t:Zx,e:void 0,x:void 0,r:t},Zx.s!==void 0&&(Zx.s.n=t),Zx.s=t,e.n=t,32&Zx.f&&e.S(t),t;if(t.i===-1)return t.i=0,t.n!==void 0&&(t.n.p=t.p,t.p!==void 0&&(t.p.n=t.n),t.p=Zx.s,t.n=void 0,Zx.s.n=t,Zx.s=t),t}}function sS(e,t){this.v=e,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=t?.watched,this.Z=t?.unwatched,this.name=t?.name}sS.prototype.brand=qx,sS.prototype.h=function(){return!0},sS.prototype.S=function(e){var t=this,n=this.t;n!==e&&e.e===void 0&&(e.x=n,this.t=e,n===void 0?Qx(function(){var e;(e=t.W)==null||e.call(t)}):n.e=e)},sS.prototype.U=function(e){var t=this;if(this.t!==void 0){var n=e.e,r=e.x;n!==void 0&&(n.x=r,e.e=void 0),r!==void 0&&(r.e=n,e.x=void 0),e===this.t&&(this.t=r,r===void 0&&Qx(function(){var e;(e=t.Z)==null||e.call(t)}))}},sS.prototype.subscribe=function(e){var t=this;return vS(function(){var n=t.value;Qx(function(){return e(n)})},{name:`sub`})},sS.prototype.valueOf=function(){return this.value},sS.prototype.toString=function(){return this.value+``},sS.prototype.toJSON=function(){return this.value},sS.prototype.peek=function(){var e=this;return Qx(function(){return e.value})},Object.defineProperty(sS.prototype,"value",{get:function(){var e=oS(this);return e!==void 0&&(e.i=this.i),this.v},set:function(e){if(e!==this.v){if(tS>100)throw Error(`Cycle detected`);(function(e){eS!==0&&tS===0&&e.l!==rS&&(e.l=rS,iS={S:e,v:e.v,i:e.i,o:iS})})(this),this.v=e,this.i++,aS++,eS++;try{for(var t=this.t;t!==void 0;t=t.x)t.t.N()}finally{Jx()}}}});function cS(e,t){return new sS(e,t)}function lS(e){for(var t=e.s;t!==void 0;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function uS(e){for(var t=e.s;t!==void 0;t=t.n){var n=t.S.n;if(n!==void 0&&(t.r=n),t.S.n=t,t.i=-1,t.n===void 0){e.s=t;break}}}function dS(e){for(var t=e.s,n=void 0;t!==void 0;){var r=t.p;t.i===-1?(t.S.U(t),r!==void 0&&(r.n=t.n),t.n!==void 0&&(t.n.p=r)):n=t,t.S.n=t.r,t.r!==void 0&&(t.r=void 0),t=r}e.s=n}function fS(e,t){sS.call(this,void 0,t),this.x=e,this.s=void 0,this.g=aS-1,this.f=4}fS.prototype=new sS,fS.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===aS))return!0;if(this.g=aS,this.f|=1,this.i>0&&!lS(this))return this.f&=-2,!0;var e=Zx;try{uS(this),Zx=this;var t=this.x();(16&this.f||this.v!==t||this.i===0)&&(this.v=t,this.f&=-17,this.i++)}catch(e){this.v=e,this.f|=16,this.i++}return Zx=e,dS(this),this.f&=-2,!0},fS.prototype.S=function(e){if(this.t===void 0){this.f|=36;for(var t=this.s;t!==void 0;t=t.n)t.S.S(t)}sS.prototype.S.call(this,e)},fS.prototype.U=function(e){if(this.t!==void 0&&(sS.prototype.U.call(this,e),this.t===void 0)){this.f&=-33;for(var t=this.s;t!==void 0;t=t.n)t.S.U(t)}},fS.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var e=this.t;e!==void 0;e=e.x)e.t.N()}},Object.defineProperty(fS.prototype,"value",{get:function(){if(1&this.f)throw Error(`Cycle detected`);var e=oS(this);if(this.h(),e!==void 0&&(e.i=this.i),16&this.f)throw this.v;return this.v}});function pS(e,t){return new fS(e,t)}function mS(e){var t=e.m;if(e.m=void 0,typeof t==`function`){eS++;var n=Zx;Zx=void 0;try{t()}catch(t){throw e.f&=-2,e.f|=8,hS(e),t}finally{Zx=n,Jx()}}}function hS(e){for(var t=e.s;t!==void 0;t=t.n)t.S.U(t);e.x=void 0,e.s=void 0,mS(e)}function gS(e){if(Zx!==this)throw Error(`Out-of-order effect`);dS(this),Zx=e,this.f&=-2,8&this.f&&hS(this),Jx()}function _S(e,t){this.x=e,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=t?.name,Xx&&Xx.push(this)}_S.prototype.c=function(){var e=this.S();try{if(8&this.f||this.x===void 0)return;var t=this.x();typeof t==`function`&&(this.m=t)}finally{e()}},_S.prototype.S=function(){if(1&this.f)throw Error(`Cycle detected`);this.f|=1,this.f&=-9,mS(this),uS(this),eS++;var e=Zx;return Zx=this,gS.bind(this,e)},_S.prototype.N=function(){2&this.f||(this.f|=2,this.u=$x,$x=this)},_S.prototype.d=function(){this.f|=8,1&this.f||hS(this)},_S.prototype.dispose=function(){this.d()};function vS(e,t){var n=new _S(e,t);try{n.c()}catch(e){throw n.d(),e}var r=n.d.bind(n);return r[Symbol.dispose]=r,r}function yS(e){return/^\d+$/.test(e)}var bS=class{constructor(e={}){this.data={},this.signals=new Map,this.subscriptions=new Set,this.data=e}getSignal(e){let t=this.normalizePath(e);return this.signals.has(t)||this.signals.set(t,cS(this.get(t))),this.signals.get(t)}set(e,t){if(e==null)throw new Bx(`Path cannot be null or undefined.`);if(e===`/`||e===``)return this.data=t,this.notifyAllSignals(),this;let n=this.parsePath(e),r=n.pop();this.data||={};let i=this.data;for(let t=0;t{let e=n.value;i=e,r||t(e)});return r=!1,this.subscriptions.add(a),{get value(){return i},unsubscribe:()=>{a(),this.subscriptions.delete(a)}}}dispose(){for(let e of this.subscriptions)e();this.subscriptions.clear(),this.signals.clear()}normalizePath(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e||`/`}parsePath(e){return e.split(`/`).filter(e=>e.length>0)}notifySignals(e){let t=this.normalizePath(e);Yx(()=>{this.updateSignal(t);let e=t;for(;e!==`/`&&e!==``;)e=e.substring(0,e.lastIndexOf(`/`))||`/`,this.updateSignal(e);for(let e of this.signals.keys())this.isDescendant(e,t)&&this.updateSignal(e)})}updateSignal(e){let t=this.signals.get(e);if(t){let n=this.get(e);Array.isArray(n)?t.value=[...n]:typeof n==`object`&&n?t.value={...n}:t.value=n}}notifyAllSignals(){Yx(()=>{for(let e of this.signals.keys())this.updateSignal(e)})}isDescendant(e,t){return t===`/`||t===``?e!==`/`:e.startsWith(t+`/`)}},xS=class{constructor(){this.components=new Map,this._onCreated=new Kx,this._onDeleted=new Kx,this.onCreated=this._onCreated,this.onDeleted=this._onDeleted}get(e){return this.components.get(e)}get entries(){return this.components.entries()}addComponent(e){if(this.components.has(e.id))throw new Hx(`Component with id '${e.id}' already exists.`);this.components.set(e.id,e),this._onCreated.emit(e)}removeComponent(e){let t=this.components.get(e);t&&(this.components.delete(e),t.dispose(),this._onDeleted.emit(e))}dispose(){for(let e of this.components.values())e.dispose();this.components.clear(),this._onCreated.dispose(),this._onDeleted.dispose()}},SS=jx({name:Ex().describe(`The name of the action, taken from the component's action.event.name property.`),surfaceId:Ex().describe(`The id of the surface where the event originated.`),sourceComponentId:Ex().describe(`The id of the component that triggered the event.`),timestamp:Ex().datetime().describe(`An ISO 8601 timestamp of when the event occurred.`),context:Nx(kx()).describe(`A JSON object containing the key-value pairs from the component's action.event.context, after resolving all data bindings.`)}).strict(),CS=Mx([jx({code:Px(`VALIDATION_FAILED`),surfaceId:Ex().describe(`The id of the surface where the error occurred.`),path:Ex().describe(`The JSON pointer to the field that failed validation (e.g. '/components/0/text').`),message:Ex().describe(`A short one or two sentence description of why validation failed.`)}).strict(),jx({code:Ex().refine(e=>e!==`VALIDATION_FAILED`),message:Ex().describe(`A short one or two sentence description of why the error occurred.`),surfaceId:Ex().describe(`The id of the surface where the error occurred.`)}).passthrough()]);jx({version:Px(`v0.9`)}).and(Mx([jx({action:SS}),jx({error:CS})])),jx({version:Px(`v0.9`),surfaces:Nx(jx({}).passthrough()).describe(`A map of surface IDs to their current data models.`)}).strict();var wS=class{constructor(e,t,n={},r=!1){this.id=e,this.catalog=t,this.theme=n,this.sendDataModel=r,this._onAction=new Kx,this._onError=new Kx,this.onAction=this._onAction,this.onError=this._onError,this.dataModel=new bS({}),this.componentsModel=new xS}async dispatchAction(e,t){if(e&&typeof e==`object`&&`event`in e&&e.event){let n={name:e.event.name,surfaceId:this.id,sourceComponentId:t,timestamp:new Date().toISOString(),context:e.event.context||{}},r=SS.safeParse(n);r.success?await this._onAction.emit(r.data):console.error(`A2UI: Invalid action payload dispatched.`,r.error.format())}}async dispatchError(e){await this._onError.emit({...e,surfaceId:this.id})}dispose(){this.dataModel.dispose(),this.componentsModel.dispose(),this._onAction.dispose(),this._onError.dispose()}},TS=class{constructor(){this.surfaces=new Map,this.surfaceUnsubscribers=new Map,this._onSurfaceCreated=new Kx,this._onSurfaceDeleted=new Kx,this._onAction=new Kx,this.onSurfaceCreated=this._onSurfaceCreated,this.onSurfaceDeleted=this._onSurfaceDeleted,this.onAction=this._onAction}addSurface(e){if(this.surfaces.has(e.id)){console.warn(`Surface ${e.id} already exists. Ignoring.`);return}this.surfaces.set(e.id,e);let t=e.onAction.subscribe(e=>this._onAction.emit(e));this.surfaceUnsubscribers.set(e.id,t),this._onSurfaceCreated.emit(e)}deleteSurface(e){let t=this.surfaces.get(e);if(t){let n=this.surfaceUnsubscribers.get(e);n&&(n.unsubscribe(),this.surfaceUnsubscribers.delete(e)),this.surfaces.delete(e),t.dispose(),this._onSurfaceDeleted.emit(e)}}getSurface(e){return this.surfaces.get(e)}get surfacesMap(){return this.surfaces}dispose(){for(let e of Array.from(this.surfaces.keys()))this.deleteSurface(e);this._onSurfaceCreated.dispose(),this._onSurfaceDeleted.dispose(),this._onAction.dispose()}},ES=class{constructor(e,t,n){this.id=e,this.type=t,this._onUpdated=new Kx,this.onUpdated=this._onUpdated,this._properties=n}get properties(){return this._properties}set properties(e){this._properties=e,this._onUpdated.emit(this)}dispose(){this._onUpdated.dispose()}get componentTree(){return{id:this.id,type:this.type,...this._properties}}},DS=Symbol(`Let zodToJsonSchema decide on which parser to use`),OS={name:void 0,$refStrategy:`root`,basePath:[`#`],effectStrategy:`input`,pipeStrategy:`all`,dateStrategy:`format:date-time`,mapStrategy:`entries`,removeAdditionalStrategy:`passthrough`,allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:`definitions`,target:`jsonSchema7`,strictUnions:!1,definitions:{},errorMessages:!1,markdownDescription:!1,patternStrategy:`escape`,applyRegexFlags:!1,emailStrategy:`format:email`,base64Strategy:`contentEncoding:base64`,nameStrategy:`ref`,openAiAnyTypeName:`OpenAiAnyType`},kS=e=>typeof e==`string`?{...OS,name:e}:{...OS,...e},AS=e=>{let t=kS(e),n=t.name===void 0?t.basePath:[...t.basePath,t.definitionPath,t.name];return{...t,flags:{hasReferencedOpenAiAnyType:!1},currentPath:n,propertyPath:void 0,seen:new Map(Object.entries(t.definitions).map(([e,n])=>[n._def,{def:n._def,path:[...t.basePath,t.definitionPath,e],jsonSchema:void 0}]))}};function jS(e,t,n,r){r?.errorMessages&&n&&(e.errorMessage={...e.errorMessage,[t]:n})}function MS(e,t,n,r,i){e[t]=n,jS(e,t,r,i)}var NS=(e,t)=>{let n=0;for(;n{};function t(e){}e.assertIs=t;function n(e){throw Error()}e.assertNever=n,e.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},e.getValidEnumValues=t=>{let n=e.objectKeys(t).filter(e=>typeof t[t[e]]!=`number`),r={};for(let e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys=typeof Object.keys==`function`?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(let n of e)if(t(n))return n},e.isInteger=typeof Number.isInteger==`function`?e=>Number.isInteger(e):e=>typeof e==`number`&&Number.isFinite(e)&&Math.floor(e)===e;function r(e,t=` | `){return e.map(e=>typeof e==`string`?`'${e}'`:e).join(t)}e.joinValues=r,e.jsonStringifyReplacer=(e,t)=>typeof t==`bigint`?t.toString():t})(PS||={});var FS;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})(FS||={});var IS=PS.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),LS=e=>{switch(typeof e){case`undefined`:return IS.undefined;case`string`:return IS.string;case`number`:return Number.isNaN(e)?IS.nan:IS.number;case`boolean`:return IS.boolean;case`function`:return IS.function;case`bigint`:return IS.bigint;case`symbol`:return IS.symbol;case`object`:return Array.isArray(e)?IS.array:e===null?IS.null:e.then&&typeof e.then==`function`&&e.catch&&typeof e.catch==`function`?IS.promise:typeof Map<`u`&&e instanceof Map?IS.map:typeof Set<`u`&&e instanceof Set?IS.set:typeof Date<`u`&&e instanceof Date?IS.date:IS.object;default:return IS.unknown}},B=PS.arrayToEnum([`invalid_type`,`invalid_literal`,`custom`,`invalid_union`,`invalid_union_discriminator`,`invalid_enum_value`,`unrecognized_keys`,`invalid_arguments`,`invalid_return_type`,`invalid_date`,`invalid_string`,`too_small`,`too_big`,`invalid_intersection_types`,`not_multiple_of`,`not_finite`]),RS=class e extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=`ZodError`,this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`)i.unionErrors.map(r);else if(i.code===`invalid_return_type`)r(i.returnTypeError);else if(i.code===`invalid_arguments`)r(i.argumentsError);else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;re.message){let t=Object.create(null),n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};RS.create=e=>new RS(e);var zS=(e,t)=>{let n;switch(e.code){case B.invalid_type:n=e.received===IS.undefined?`Required`:`Expected ${e.expected}, received ${e.received}`;break;case B.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,PS.jsonStringifyReplacer)}`;break;case B.unrecognized_keys:n=`Unrecognized key(s) in object: ${PS.joinValues(e.keys,`, `)}`;break;case B.invalid_union:n=`Invalid input`;break;case B.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${PS.joinValues(e.options)}`;break;case B.invalid_enum_value:n=`Invalid enum value. Expected ${PS.joinValues(e.options)}, received '${e.received}'`;break;case B.invalid_arguments:n=`Invalid function arguments`;break;case B.invalid_return_type:n=`Invalid function return type`;break;case B.invalid_date:n=`Invalid date`;break;case B.invalid_string:typeof e.validation==`object`?`includes`in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position==`number`&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):`startsWith`in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:`endsWith`in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:PS.assertNever(e.validation):n=e.validation===`regex`?`Invalid`:`Invalid ${e.validation}`;break;case B.too_small:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at least`:`more than`} ${e.minimum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at least`:`over`} ${e.minimum} character(s)`:e.type===`number`||e.type===`bigint`?`Number must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${e.minimum}`:e.type===`date`?`Date must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(e.minimum))}`:`Invalid input`;break;case B.too_big:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at most`:`less than`} ${e.maximum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at most`:`under`} ${e.maximum} character(s)`:e.type===`number`?`Number must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`bigint`?`BigInt must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`date`?`Date must be ${e.exact?`exactly`:e.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(e.maximum))}`:`Invalid input`;break;case B.custom:n=`Invalid input`;break;case B.invalid_intersection_types:n=`Intersection results could not be merged`;break;case B.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case B.not_finite:n=`Number must be finite`;break;default:n=t.defaultError,PS.assertNever(e)}return{message:n}},BS=zS;function VS(){return BS}var HS=e=>{let{data:t,path:n,errorMaps:r,issueData:i}=e,a=[...n,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s=``,c=r.filter(e=>!!e).slice().reverse();for(let e of c)s=e(o,{data:t,defaultError:s}).message;return{...i,path:a,message:s}};function V(e,t){let n=VS(),r=HS({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===zS?void 0:zS].filter(e=>!!e)});e.common.issues.push(r)}var US=class e{constructor(){this.value=`valid`}dirty(){this.value===`valid`&&(this.value=`dirty`)}abort(){this.value!==`aborted`&&(this.value=`aborted`)}static mergeArray(e,t){let n=[];for(let r of t){if(r.status===`aborted`)return WS;r.status===`dirty`&&e.dirty(),n.push(r.value)}return{status:e.value,value:n}}static async mergeObjectAsync(t,n){let r=[];for(let e of n){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return e.mergeObjectSync(t,r)}static mergeObjectSync(e,t){let n={};for(let r of t){let{key:t,value:i}=r;if(t.status===`aborted`||i.status===`aborted`)return WS;t.status===`dirty`&&e.dirty(),i.status===`dirty`&&e.dirty(),t.value!==`__proto__`&&(i.value!==void 0||r.alwaysSet)&&(n[t.value]=i.value)}return{status:e.value,value:n}}},WS=Object.freeze({status:`aborted`}),GS=e=>({status:`dirty`,value:e}),KS=e=>({status:`valid`,value:e}),qS=e=>e.status===`aborted`,JS=e=>e.status===`dirty`,YS=e=>e.status===`valid`,XS=e=>typeof Promise<`u`&&e instanceof Promise,ZS;(function(e){e.errToObj=e=>typeof e==`string`?{message:e}:e||{},e.toString=e=>typeof e==`string`?e:e?.message})(ZS||={});var QS=class{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},$S=(e,t)=>{if(YS(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(`Validation failed but no issues detected.`);return{success:!1,get error(){if(this._error)return this._error;let t=new RS(e.common.issues);return this._error=t,this._error}}};function eC(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return t.code===`invalid_enum_value`?{message:a??i.defaultError}:i.data===void 0?{message:a??r??i.defaultError}:t.code===`invalid_type`?{message:a??n??i.defaultError}:{message:i.defaultError}},description:i}}var tC=class{get description(){return this._def.description}_getType(e){return LS(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:LS(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new US,ctx:{common:e.parent.common,data:e.data,parsedType:LS(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(XS(t))throw Error(`Synchronous parse encountered promise.`);return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:LS(e)};return $S(n,this._parseSync({data:e,path:n.path,parent:n}))}"~validate"(e){let t={common:{issues:[],async:!!this[`~standard`].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:LS(e)};if(!this[`~standard`].async)try{let n=this._parseSync({data:e,path:[],parent:t});return YS(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(`encountered`)&&(this[`~standard`].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>YS(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:LS(e)},r=this._parse({data:e,path:n.path,parent:n});return $S(n,await(XS(r)?r:Promise.resolve(r)))}refine(e,t){let n=e=>typeof t==`string`||t===void 0?{message:t}:typeof t==`function`?t(e):t;return this._refinement((t,r)=>{let i=e(t),a=()=>r.addIssue({code:B.custom,...n(t)});return typeof Promise<`u`&&i instanceof Promise?i.then(e=>e?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(e,t){return this._refinement((n,r)=>e(n)?!0:(r.addIssue(typeof t==`function`?t(n,r):t),!1))}_refinement(e){return new RC({schema:this,typeName:H.ZodEffects,effect:{type:`refinement`,refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[`~standard`]={version:1,vendor:`zod`,validate:e=>this[`~validate`](e)}}optional(){return zC.create(this,this._def)}nullable(){return BC.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return yC.create(this)}promise(){return LC.create(this,this._def)}or(e){return SC.create([this,e],this._def)}and(e){return EC.create(this,e,this._def)}transform(e){return new RC({...eC(this._def),schema:this,typeName:H.ZodEffects,effect:{type:`transform`,transform:e}})}default(e){let t=typeof e==`function`?e:()=>e;return new VC({...eC(this._def),innerType:this,defaultValue:t,typeName:H.ZodDefault})}brand(){return new WC({typeName:H.ZodBranded,type:this,...eC(this._def)})}catch(e){let t=typeof e==`function`?e:()=>e;return new HC({...eC(this._def),innerType:this,catchValue:t,typeName:H.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return GC.create(this,e)}readonly(){return KC.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},nC=/^c[^\s-]{8,}$/i,rC=/^[0-9a-z]+$/,bee=/^[0-9A-HJKMNP-TV-Z]{26}$/i,xee=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,See=/^[a-z0-9_-]{21}$/i,Cee=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,wee=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Tee=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Eee=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,iC,Dee=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Oee=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,kee=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Aee=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,jee=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Mee=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,aC=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`,Nee=RegExp(`^${aC}$`);function oC(e){let t=`[0-5]\\d`;e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision??(t=`${t}(\\.\\d+)?`);let n=e.precision?`+`:`?`;return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function Pee(e){return RegExp(`^${oC(e)}$`)}function Fee(e){let t=`${aC}T${oC(e)}`,n=[];return n.push(e.local?`Z?`:`Z`),e.offset&&n.push(`([+-]\\d{2}:?\\d{2})`),t=`${t}(${n.join(`|`)})`,RegExp(`^${t}$`)}function Iee(e,t){return!!((t===`v4`||!t)&&Dee.test(e)||(t===`v6`||!t)&&kee.test(e))}function Lee(e,t){if(!Cee.test(e))return!1;try{let[n]=e.split(`.`);if(!n)return!1;let r=n.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(n.length+(4-n.length%4)%4,`=`),i=JSON.parse(atob(r));return!(typeof i!=`object`||!i||`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&i.alg!==t)}catch{return!1}}function Ree(e,t){return!!((t===`v4`||!t)&&Oee.test(e)||(t===`v6`||!t)&&Aee.test(e))}var sC=class e extends tC{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==IS.string){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:IS.string,received:t.parsedType}),WS}let t=new US,n;for(let r of this._def.checks)if(r.kind===`min`)e.data.lengthr.value&&(n=this._getOrReturnCtx(e,n),V(n,{code:B.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),t.dirty());else if(r.kind===`length`){let i=e.data.length>r.value,a=e.data.lengthe.test(t),{validation:t,code:B.invalid_string,...ZS.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(e){return this._addCheck({kind:`email`,...ZS.errToObj(e)})}url(e){return this._addCheck({kind:`url`,...ZS.errToObj(e)})}emoji(e){return this._addCheck({kind:`emoji`,...ZS.errToObj(e)})}uuid(e){return this._addCheck({kind:`uuid`,...ZS.errToObj(e)})}nanoid(e){return this._addCheck({kind:`nanoid`,...ZS.errToObj(e)})}cuid(e){return this._addCheck({kind:`cuid`,...ZS.errToObj(e)})}cuid2(e){return this._addCheck({kind:`cuid2`,...ZS.errToObj(e)})}ulid(e){return this._addCheck({kind:`ulid`,...ZS.errToObj(e)})}base64(e){return this._addCheck({kind:`base64`,...ZS.errToObj(e)})}base64url(e){return this._addCheck({kind:`base64url`,...ZS.errToObj(e)})}jwt(e){return this._addCheck({kind:`jwt`,...ZS.errToObj(e)})}ip(e){return this._addCheck({kind:`ip`,...ZS.errToObj(e)})}cidr(e){return this._addCheck({kind:`cidr`,...ZS.errToObj(e)})}datetime(e){return typeof e==`string`?this._addCheck({kind:`datetime`,precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:`datetime`,precision:e?.precision===void 0?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...ZS.errToObj(e?.message)})}date(e){return this._addCheck({kind:`date`,message:e})}time(e){return typeof e==`string`?this._addCheck({kind:`time`,precision:null,message:e}):this._addCheck({kind:`time`,precision:e?.precision===void 0?null:e?.precision,...ZS.errToObj(e?.message)})}duration(e){return this._addCheck({kind:`duration`,...ZS.errToObj(e)})}regex(e,t){return this._addCheck({kind:`regex`,regex:e,...ZS.errToObj(t)})}includes(e,t){return this._addCheck({kind:`includes`,value:e,position:t?.position,...ZS.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:`startsWith`,value:e,...ZS.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:`endsWith`,value:e,...ZS.errToObj(t)})}min(e,t){return this._addCheck({kind:`min`,value:e,...ZS.errToObj(t)})}max(e,t){return this._addCheck({kind:`max`,value:e,...ZS.errToObj(t)})}length(e,t){return this._addCheck({kind:`length`,value:e,...ZS.errToObj(t)})}nonempty(e){return this.min(1,ZS.errToObj(e))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:`trim`}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toLowerCase`}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toUpperCase`}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind===`datetime`)}get isDate(){return!!this._def.checks.find(e=>e.kind===`date`)}get isTime(){return!!this._def.checks.find(e=>e.kind===`time`)}get isDuration(){return!!this._def.checks.find(e=>e.kind===`duration`)}get isEmail(){return!!this._def.checks.find(e=>e.kind===`email`)}get isURL(){return!!this._def.checks.find(e=>e.kind===`url`)}get isEmoji(){return!!this._def.checks.find(e=>e.kind===`emoji`)}get isUUID(){return!!this._def.checks.find(e=>e.kind===`uuid`)}get isNANOID(){return!!this._def.checks.find(e=>e.kind===`nanoid`)}get isCUID(){return!!this._def.checks.find(e=>e.kind===`cuid`)}get isCUID2(){return!!this._def.checks.find(e=>e.kind===`cuid2`)}get isULID(){return!!this._def.checks.find(e=>e.kind===`ulid`)}get isIP(){return!!this._def.checks.find(e=>e.kind===`ip`)}get isCIDR(){return!!this._def.checks.find(e=>e.kind===`cidr`)}get isBase64(){return!!this._def.checks.find(e=>e.kind===`base64`)}get isBase64url(){return!!this._def.checks.find(e=>e.kind===`base64url`)}get minLength(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew sC({checks:[],typeName:H.ZodString,coerce:e?.coerce??!1,...eC(e)});function zee(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=(t.toString().split(`.`)[1]||``).length,i=n>r?n:r;return Number.parseInt(e.toFixed(i).replace(`.`,``))%Number.parseInt(t.toFixed(i).replace(`.`,``))/10**i}var cC=class e extends tC{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==IS.number){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:IS.number,received:t.parsedType}),WS}let t,n=new US;for(let r of this._def.checks)r.kind===`int`?PS.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),V(t,{code:B.invalid_type,expected:`integer`,received:`float`,message:r.message}),n.dirty()):r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),V(t,{code:B.too_big,maximum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):r.kind===`multipleOf`?zee(e.data,r.value)!==0&&(t=this._getOrReturnCtx(e,t),V(t,{code:B.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):r.kind===`finite`?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),V(t,{code:B.not_finite,message:r.message}),n.dirty()):PS.assertNever(r);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit(`min`,e,!0,ZS.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,ZS.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,ZS.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,ZS.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:ZS.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(e){return this._addCheck({kind:`int`,message:ZS.toString(e)})}positive(e){return this._addCheck({kind:`min`,value:0,inclusive:!1,message:ZS.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:0,inclusive:!1,message:ZS.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:0,inclusive:!0,message:ZS.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:0,inclusive:!0,message:ZS.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:ZS.toString(t)})}finite(e){return this._addCheck({kind:`finite`,message:ZS.toString(e)})}safe(e){return this._addCheck({kind:`min`,inclusive:!0,value:-(2**53-1),message:ZS.toString(e)})._addCheck({kind:`max`,inclusive:!0,value:2**53-1,message:ZS.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuee.kind===`int`||e.kind===`multipleOf`&&PS.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(n.kind===`finite`||n.kind===`int`||n.kind===`multipleOf`)return!0;else n.kind===`min`?(t===null||n.value>t)&&(t=n.value):n.kind===`max`&&(e===null||n.valuenew cC({checks:[],typeName:H.ZodNumber,coerce:e?.coerce||!1,...eC(e)});var lC=class e extends tC{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==IS.bigint)return this._getInvalidInput(e);let t,n=new US;for(let r of this._def.checks)r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),V(t,{code:B.too_big,type:`bigint`,maximum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):r.kind===`multipleOf`?e.data%r.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),V(t,{code:B.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):PS.assertNever(r);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:IS.bigint,received:t.parsedType}),WS}gte(e,t){return this.setLimit(`min`,e,!0,ZS.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,ZS.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,ZS.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,ZS.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:ZS.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!1,message:ZS.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!1,message:ZS.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!0,message:ZS.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!0,message:ZS.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:ZS.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew lC({checks:[],typeName:H.ZodBigInt,coerce:e?.coerce??!1,...eC(e)});var uC=class extends tC{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==IS.boolean){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:IS.boolean,received:t.parsedType}),WS}return KS(e.data)}};uC.create=e=>new uC({typeName:H.ZodBoolean,coerce:e?.coerce||!1,...eC(e)});var dC=class e extends tC{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==IS.date){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:IS.date,received:t.parsedType}),WS}if(Number.isNaN(e.data.getTime()))return V(this._getOrReturnCtx(e),{code:B.invalid_date}),WS;let t=new US,n;for(let r of this._def.checks)r.kind===`min`?e.data.getTime()r.value&&(n=this._getOrReturnCtx(e,n),V(n,{code:B.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:`date`}),t.dirty()):PS.assertNever(r);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(e,t){return this._addCheck({kind:`min`,value:e.getTime(),message:ZS.toString(t)})}max(e,t){return this._addCheck({kind:`max`,value:e.getTime(),message:ZS.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e==null?null:new Date(e)}get maxDate(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew dC({checks:[],coerce:e?.coerce||!1,typeName:H.ZodDate,...eC(e)});var fC=class extends tC{_parse(e){if(this._getType(e)!==IS.symbol){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:IS.symbol,received:t.parsedType}),WS}return KS(e.data)}};fC.create=e=>new fC({typeName:H.ZodSymbol,...eC(e)});var pC=class extends tC{_parse(e){if(this._getType(e)!==IS.undefined){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:IS.undefined,received:t.parsedType}),WS}return KS(e.data)}};pC.create=e=>new pC({typeName:H.ZodUndefined,...eC(e)});var mC=class extends tC{_parse(e){if(this._getType(e)!==IS.null){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:IS.null,received:t.parsedType}),WS}return KS(e.data)}};mC.create=e=>new mC({typeName:H.ZodNull,...eC(e)});var hC=class extends tC{constructor(){super(...arguments),this._any=!0}_parse(e){return KS(e.data)}};hC.create=e=>new hC({typeName:H.ZodAny,...eC(e)});var gC=class extends tC{constructor(){super(...arguments),this._unknown=!0}_parse(e){return KS(e.data)}};gC.create=e=>new gC({typeName:H.ZodUnknown,...eC(e)});var _C=class extends tC{_parse(e){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:IS.never,received:t.parsedType}),WS}};_C.create=e=>new _C({typeName:H.ZodNever,...eC(e)});var vC=class extends tC{_parse(e){if(this._getType(e)!==IS.undefined){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:IS.void,received:t.parsedType}),WS}return KS(e.data)}};vC.create=e=>new vC({typeName:H.ZodVoid,...eC(e)});var yC=class e extends tC{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==IS.array)return V(t,{code:B.invalid_type,expected:IS.array,received:t.parsedType}),WS;if(r.exactLength!==null){let e=t.data.length>r.exactLength.value,i=t.data.lengthr.maxLength.value&&(V(t,{code:B.too_big,maximum:r.maxLength.value,type:`array`,inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>r.type._parseAsync(new QS(t,e,t.path,n)))).then(e=>US.mergeArray(n,e));let i=[...t.data].map((e,n)=>r.type._parseSync(new QS(t,e,t.path,n)));return US.mergeArray(n,i)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:ZS.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:ZS.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:ZS.toString(n)}})}nonempty(e){return this.min(1,e)}};yC.create=(e,t)=>new yC({type:e,minLength:null,maxLength:null,exactLength:null,typeName:H.ZodArray,...eC(t)});function bC(e){if(e instanceof xC){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=zC.create(bC(r))}return new xC({...e._def,shape:()=>t})}else if(e instanceof yC)return new yC({...e._def,type:bC(e.element)});else if(e instanceof zC)return zC.create(bC(e.unwrap()));else if(e instanceof BC)return BC.create(bC(e.unwrap()));else if(e instanceof DC)return DC.create(e.items.map(e=>bC(e)));else return e}var xC=class e extends tC{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=PS.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==IS.object){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:IS.object,received:t.parsedType}),WS}let{status:t,ctx:n}=this._processInputParams(e),{shape:r,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof _C&&this._def.unknownKeys===`strip`))for(let e in n.data)i.includes(e)||a.push(e);let o=[];for(let e of i){let t=r[e],i=n.data[e];o.push({key:{status:`valid`,value:e},value:t._parse(new QS(n,i,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof _C){let e=this._def.unknownKeys;if(e===`passthrough`)for(let e of a)o.push({key:{status:`valid`,value:e},value:{status:`valid`,value:n.data[e]}});else if(e===`strict`)a.length>0&&(V(n,{code:B.unrecognized_keys,keys:a}),t.dirty());else if(e!==`strip`)throw Error(`Internal ZodObject error: invalid unknownKeys value.`)}else{let e=this._def.catchall;for(let t of a){let r=n.data[t];o.push({key:{status:`valid`,value:t},value:e._parse(new QS(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of o){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>US.mergeObjectSync(t,e)):US.mergeObjectSync(t,o)}get shape(){return this._def.shape()}strict(t){return ZS.errToObj,new e({...this._def,unknownKeys:`strict`,...t===void 0?{}:{errorMap:(e,n)=>{let r=this._def.errorMap?.(e,n).message??n.defaultError;return e.code===`unrecognized_keys`?{message:ZS.errToObj(t).message??r}:{message:r}}}})}strip(){return new e({...this._def,unknownKeys:`strip`})}passthrough(){return new e({...this._def,unknownKeys:`passthrough`})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:H.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let n={};for(let e of PS.objectKeys(t))t[e]&&this.shape[e]&&(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}omit(t){let n={};for(let e of PS.objectKeys(this.shape))t[e]||(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}deepPartial(){return bC(this)}partial(t){let n={};for(let e of PS.objectKeys(this.shape)){let r=this.shape[e];t&&!t[e]?n[e]=r:n[e]=r.optional()}return new e({...this._def,shape:()=>n})}required(t){let n={};for(let e of PS.objectKeys(this.shape))if(t&&!t[e])n[e]=this.shape[e];else{let t=this.shape[e];for(;t instanceof zC;)t=t._def.innerType;n[e]=t}return new e({...this._def,shape:()=>n})}keyof(){return PC(PS.objectKeys(this.shape))}};xC.create=(e,t)=>new xC({shape:()=>e,unknownKeys:`strip`,catchall:_C.create(),typeName:H.ZodObject,...eC(t)}),xC.strictCreate=(e,t)=>new xC({shape:()=>e,unknownKeys:`strict`,catchall:_C.create(),typeName:H.ZodObject,...eC(t)}),xC.lazycreate=(e,t)=>new xC({shape:e,unknownKeys:`strip`,catchall:_C.create(),typeName:H.ZodObject,...eC(t)});var SC=class extends tC{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;function r(e){for(let t of e)if(t.result.status===`valid`)return t.result;for(let n of e)if(n.result.status===`dirty`)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new RS(e.ctx.common.issues));return V(t,{code:B.invalid_union,unionErrors:n}),WS}if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(r);{let e,r=[];for(let i of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:n});if(a.status===`valid`)return a;a.status===`dirty`&&!e&&(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=r.map(e=>new RS(e));return V(t,{code:B.invalid_union,unionErrors:i}),WS}}get options(){return this._def.options}};SC.create=(e,t)=>new SC({options:e,typeName:H.ZodUnion,...eC(t)});var CC=e=>e instanceof MC?CC(e.schema):e instanceof RC?CC(e.innerType()):e instanceof NC?[e.value]:e instanceof FC?e.options:e instanceof IC?PS.objectValues(e.enum):e instanceof VC?CC(e._def.innerType):e instanceof pC?[void 0]:e instanceof mC?[null]:e instanceof zC?[void 0,...CC(e.unwrap())]:e instanceof BC?[null,...CC(e.unwrap())]:e instanceof WC||e instanceof KC?CC(e.unwrap()):e instanceof HC?CC(e._def.innerType):[],wC=class e extends tC{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==IS.object)return V(t,{code:B.invalid_type,expected:IS.object,received:t.parsedType}),WS;let n=this.discriminator,r=t.data[n],i=this.optionsMap.get(r);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(V(t,{code:B.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),WS)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){let i=new Map;for(let e of n){let n=CC(e.shape[t]);if(!n.length)throw Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let r of n){if(i.has(r))throw Error(`Discriminator property ${String(t)} has duplicate value ${String(r)}`);i.set(r,e)}}return new e({typeName:H.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...eC(r)})}};function TC(e,t){let n=LS(e),r=LS(t);if(e===t)return{valid:!0,data:e};if(n===IS.object&&r===IS.object){let n=PS.objectKeys(t),r=PS.objectKeys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=TC(e[n],t[n]);if(!r.valid)return{valid:!1};i[n]=r.data}return{valid:!0,data:i}}else if(n===IS.array&&r===IS.array){if(e.length!==t.length)return{valid:!1};let n=[];for(let r=0;r{if(qS(e)||qS(r))return WS;let i=TC(e.value,r.value);return i.valid?((JS(e)||JS(r))&&t.dirty(),{status:t.value,value:i.data}):(V(n,{code:B.invalid_intersection_types}),WS)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([e,t])=>r(e,t)):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};EC.create=(e,t,n)=>new EC({left:e,right:t,typeName:H.ZodIntersection,...eC(n)});var DC=class e extends tC{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==IS.array)return V(n,{code:B.invalid_type,expected:IS.array,received:n.parsedType}),WS;if(n.data.lengththis._def.items.length&&(V(n,{code:B.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),t.dirty());let r=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new QS(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(r).then(e=>US.mergeArray(t,e)):US.mergeArray(t,r)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};DC.create=(e,t)=>{if(!Array.isArray(e))throw Error(`You must pass an array of schemas to z.tuple([ ... ])`);return new DC({items:e,typeName:H.ZodTuple,rest:null,...eC(t)})};var OC=class e extends tC{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==IS.object)return V(n,{code:B.invalid_type,expected:IS.object,received:n.parsedType}),WS;let r=[],i=this._def.keyType,a=this._def.valueType;for(let e in n.data)r.push({key:i._parse(new QS(n,e,n.path,e)),value:a._parse(new QS(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?US.mergeObjectAsync(t,r):US.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof tC?new e({keyType:t,valueType:n,typeName:H.ZodRecord,...eC(r)}):new e({keyType:sC.create(),valueType:t,typeName:H.ZodRecord,...eC(n)})}},kC=class extends tC{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==IS.map)return V(n,{code:B.invalid_type,expected:IS.map,received:n.parsedType}),WS;let r=this._def.keyType,i=this._def.valueType,a=[...n.data.entries()].map(([e,t],a)=>({key:r._parse(new QS(n,e,n.path,[a,`key`])),value:i._parse(new QS(n,t,n.path,[a,`value`]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of a){let r=await n.key,i=await n.value;if(r.status===`aborted`||i.status===`aborted`)return WS;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}})}else{let e=new Map;for(let n of a){let r=n.key,i=n.value;if(r.status===`aborted`||i.status===`aborted`)return WS;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}}};kC.create=(e,t,n)=>new kC({valueType:t,keyType:e,typeName:H.ZodMap,...eC(n)});var AC=class e extends tC{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==IS.set)return V(n,{code:B.invalid_type,expected:IS.set,received:n.parsedType}),WS;let r=this._def;r.minSize!==null&&n.data.sizer.maxSize.value&&(V(n,{code:B.too_big,maximum:r.maxSize.value,type:`set`,inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let i=this._def.valueType;function a(e){let n=new Set;for(let r of e){if(r.status===`aborted`)return WS;r.status===`dirty`&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let o=[...n.data.values()].map((e,t)=>i._parse(new QS(n,e,n.path,t)));return n.common.async?Promise.all(o).then(e=>a(e)):a(o)}min(t,n){return new e({...this._def,minSize:{value:t,message:ZS.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:ZS.toString(n)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};AC.create=(e,t)=>new AC({valueType:e,minSize:null,maxSize:null,typeName:H.ZodSet,...eC(t)});var jC=class e extends tC{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==IS.function)return V(t,{code:B.invalid_type,expected:IS.function,received:t.parsedType}),WS;function n(e,n){return HS({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,VS(),zS].filter(e=>!!e),issueData:{code:B.invalid_arguments,argumentsError:n}})}function r(e,n){return HS({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,VS(),zS].filter(e=>!!e),issueData:{code:B.invalid_return_type,returnTypeError:n}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof LC){let e=this;return KS(async function(...t){let o=new RS([]),s=await e._def.args.parseAsync(t,i).catch(e=>{throw o.addIssue(n(t,e)),o}),c=await Reflect.apply(a,this,s);return await e._def.returns._def.type.parseAsync(c,i).catch(e=>{throw o.addIssue(r(c,e)),o})})}else{let e=this;return KS(function(...t){let o=e._def.args.safeParse(t,i);if(!o.success)throw new RS([n(t,o.error)]);let s=Reflect.apply(a,this,o.data),c=e._def.returns.safeParse(s,i);if(!c.success)throw new RS([r(s,c.error)]);return c.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:DC.create(t).rest(gC.create())})}returns(t){return new e({...this._def,returns:t})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(t,n,r){return new e({args:t||DC.create([]).rest(gC.create()),returns:n||gC.create(),typeName:H.ZodFunction,...eC(r)})}},MC=class extends tC{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};MC.create=(e,t)=>new MC({getter:e,typeName:H.ZodLazy,...eC(t)});var NC=class extends tC{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return V(t,{received:t.data,code:B.invalid_literal,expected:this._def.value}),WS}return{status:`valid`,value:e.data}}get value(){return this._def.value}};NC.create=(e,t)=>new NC({value:e,typeName:H.ZodLiteral,...eC(t)});function PC(e,t){return new FC({values:e,typeName:H.ZodEnum,...eC(t)})}var FC=class e extends tC{_parse(e){if(typeof e.data!=`string`){let t=this._getOrReturnCtx(e),n=this._def.values;return V(t,{expected:PS.joinValues(n),received:t.parsedType,code:B.invalid_type}),WS}if(this._cache||=new Set(this._def.values),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return V(t,{received:t.data,code:B.invalid_enum_value,options:n}),WS}return KS(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(t,n=this._def){return e.create(t,{...this._def,...n})}exclude(t,n=this._def){return e.create(this.options.filter(e=>!t.includes(e)),{...this._def,...n})}};FC.create=PC;var IC=class extends tC{_parse(e){let t=PS.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==IS.string&&n.parsedType!==IS.number){let e=PS.objectValues(t);return V(n,{expected:PS.joinValues(e),received:n.parsedType,code:B.invalid_type}),WS}if(this._cache||=new Set(PS.getValidEnumValues(this._def.values)),!this._cache.has(e.data)){let e=PS.objectValues(t);return V(n,{received:n.data,code:B.invalid_enum_value,options:e}),WS}return KS(e.data)}get enum(){return this._def.values}};IC.create=(e,t)=>new IC({values:e,typeName:H.ZodNativeEnum,...eC(t)});var LC=class extends tC{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==IS.promise&&t.common.async===!1?(V(t,{code:B.invalid_type,expected:IS.promise,received:t.parsedType}),WS):KS((t.parsedType===IS.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}};LC.create=(e,t)=>new LC({type:e,typeName:H.ZodPromise,...eC(t)});var RC=class extends tC{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===H.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=this._def.effect||null,i={addIssue:e=>{V(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(i.addIssue=i.addIssue.bind(i),r.type===`preprocess`){let e=r.transform(n.data,i);if(n.common.async)return Promise.resolve(e).then(async e=>{if(t.value===`aborted`)return WS;let r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return r.status===`aborted`?WS:r.status===`dirty`||t.value===`dirty`?GS(r.value):r});{if(t.value===`aborted`)return WS;let r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return r.status===`aborted`?WS:r.status===`dirty`||t.value===`dirty`?GS(r.value):r}}if(r.type===`refinement`){let e=e=>{let t=r.refinement(e,i);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(`Async refinement encountered during synchronous parse operation. Use .parseAsync instead.`);return e};if(n.common.async===!1){let r=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return r.status===`aborted`?WS:(r.status===`dirty`&&t.dirty(),e(r.value),{status:t.value,value:r.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(n=>n.status===`aborted`?WS:(n.status===`dirty`&&t.dirty(),e(n.value).then(()=>({status:t.value,value:n.value}))))}if(r.type===`transform`)if(n.common.async===!1){let e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!YS(e))return WS;let a=r.transform(e.value,i);if(a instanceof Promise)throw Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);return{status:t.value,value:a}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(e=>YS(e)?Promise.resolve(r.transform(e.value,i)).then(e=>({status:t.value,value:e})):WS);PS.assertNever(r)}};RC.create=(e,t,n)=>new RC({schema:e,typeName:H.ZodEffects,effect:t,...eC(n)}),RC.createWithPreprocess=(e,t,n)=>new RC({schema:t,effect:{type:`preprocess`,transform:e},typeName:H.ZodEffects,...eC(n)});var zC=class extends tC{_parse(e){return this._getType(e)===IS.undefined?KS(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};zC.create=(e,t)=>new zC({innerType:e,typeName:H.ZodOptional,...eC(t)});var BC=class extends tC{_parse(e){return this._getType(e)===IS.null?KS(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};BC.create=(e,t)=>new BC({innerType:e,typeName:H.ZodNullable,...eC(t)});var VC=class extends tC{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===IS.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};VC.create=(e,t)=>new VC({innerType:e,typeName:H.ZodDefault,defaultValue:typeof t.default==`function`?t.default:()=>t.default,...eC(t)});var HC=class extends tC{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return XS(r)?r.then(e=>({status:`valid`,value:e.status===`valid`?e.value:this._def.catchValue({get error(){return new RS(n.common.issues)},input:n.data})})):{status:`valid`,value:r.status===`valid`?r.value:this._def.catchValue({get error(){return new RS(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};HC.create=(e,t)=>new HC({innerType:e,typeName:H.ZodCatch,catchValue:typeof t.catch==`function`?t.catch:()=>t.catch,...eC(t)});var UC=class extends tC{_parse(e){if(this._getType(e)!==IS.nan){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:IS.nan,received:t.parsedType}),WS}return{status:`valid`,value:e.data}}};UC.create=e=>new UC({typeName:H.ZodNaN,...eC(e)});var WC=class extends tC{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}},GC=class e extends tC{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?WS:e.status===`dirty`?(t.dirty(),GS(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})();{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?WS:e.status===`dirty`?(t.dirty(),{status:`dirty`,value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(t,n){return new e({in:t,out:n,typeName:H.ZodPipeline})}},KC=class extends tC{_parse(e){let t=this._def.innerType._parse(e),n=e=>(YS(e)&&(e.value=Object.freeze(e.value)),e);return XS(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}};KC.create=(e,t)=>new KC({innerType:e,typeName:H.ZodReadonly,...eC(t)}),xC.lazycreate;var H;(function(e){e.ZodString=`ZodString`,e.ZodNumber=`ZodNumber`,e.ZodNaN=`ZodNaN`,e.ZodBigInt=`ZodBigInt`,e.ZodBoolean=`ZodBoolean`,e.ZodDate=`ZodDate`,e.ZodSymbol=`ZodSymbol`,e.ZodUndefined=`ZodUndefined`,e.ZodNull=`ZodNull`,e.ZodAny=`ZodAny`,e.ZodUnknown=`ZodUnknown`,e.ZodNever=`ZodNever`,e.ZodVoid=`ZodVoid`,e.ZodArray=`ZodArray`,e.ZodObject=`ZodObject`,e.ZodUnion=`ZodUnion`,e.ZodDiscriminatedUnion=`ZodDiscriminatedUnion`,e.ZodIntersection=`ZodIntersection`,e.ZodTuple=`ZodTuple`,e.ZodRecord=`ZodRecord`,e.ZodMap=`ZodMap`,e.ZodSet=`ZodSet`,e.ZodFunction=`ZodFunction`,e.ZodLazy=`ZodLazy`,e.ZodLiteral=`ZodLiteral`,e.ZodEnum=`ZodEnum`,e.ZodEffects=`ZodEffects`,e.ZodNativeEnum=`ZodNativeEnum`,e.ZodOptional=`ZodOptional`,e.ZodNullable=`ZodNullable`,e.ZodDefault=`ZodDefault`,e.ZodCatch=`ZodCatch`,e.ZodPromise=`ZodPromise`,e.ZodBranded=`ZodBranded`,e.ZodPipeline=`ZodPipeline`,e.ZodReadonly=`ZodReadonly`})(H||={}),sC.create,cC.create,UC.create,lC.create,uC.create,dC.create,fC.create,pC.create,mC.create,hC.create,gC.create,_C.create,vC.create,yC.create,xC.create,xC.strictCreate,SC.create,wC.create,EC.create,DC.create,OC.create,kC.create,AC.create,jC.create,MC.create,NC.create,FC.create,IC.create,LC.create,RC.create,zC.create,BC.create,RC.createWithPreprocess,GC.create;function qC(e){if(e.target!==`openAi`)return{};let t=[...e.basePath,e.definitionPath,e.openAiAnyTypeName];return e.flags.hasReferencedOpenAiAnyType=!0,{$ref:e.$refStrategy===`relative`?NS(t,e.currentPath):t.join(`/`)}}function JC(e,t){let n={type:`array`};return e.type?._def&&e.type?._def?.typeName!==H.ZodAny&&(n.items=Rw(e.type._def,{...t,currentPath:[...t.currentPath,`items`]})),e.minLength&&MS(n,`minItems`,e.minLength.value,e.minLength.message,t),e.maxLength&&MS(n,`maxItems`,e.maxLength.value,e.maxLength.message,t),e.exactLength&&(MS(n,`minItems`,e.exactLength.value,e.exactLength.message,t),MS(n,`maxItems`,e.exactLength.value,e.exactLength.message,t)),n}function YC(e,t){let n={type:`integer`,format:`int64`};if(!e.checks)return n;for(let r of e.checks)switch(r.kind){case`min`:t.target===`jsonSchema7`?r.inclusive?MS(n,`minimum`,r.value,r.message,t):MS(n,`exclusiveMinimum`,r.value,r.message,t):(r.inclusive||(n.exclusiveMinimum=!0),MS(n,`minimum`,r.value,r.message,t));break;case`max`:t.target===`jsonSchema7`?r.inclusive?MS(n,`maximum`,r.value,r.message,t):MS(n,`exclusiveMaximum`,r.value,r.message,t):(r.inclusive||(n.exclusiveMaximum=!0),MS(n,`maximum`,r.value,r.message,t));break;case`multipleOf`:MS(n,`multipleOf`,r.value,r.message,t);break}return n}function XC(){return{type:`boolean`}}function ZC(e,t){return Rw(e.type._def,t)}var QC=(e,t)=>Rw(e.innerType._def,t);function $C(e,t,n){let r=n??t.dateStrategy;if(Array.isArray(r))return{anyOf:r.map((n,r)=>$C(e,t,n))};switch(r){case`string`:case`format:date-time`:return{type:`string`,format:`date-time`};case`format:date`:return{type:`string`,format:`date`};case`integer`:return ew(e,t)}}var ew=(e,t)=>{let n={type:`integer`,format:`unix-time`};if(t.target===`openApi3`)return n;for(let r of e.checks)switch(r.kind){case`min`:MS(n,`minimum`,r.value,r.message,t);break;case`max`:MS(n,`maximum`,r.value,r.message,t);break}return n};function tw(e,t){return{...Rw(e.innerType._def,t),default:e.defaultValue()}}function nw(e,t){return t.effectStrategy===`input`?Rw(e.schema._def,t):qC(t)}function rw(e){return{type:`string`,enum:Array.from(e.values)}}var iw=e=>`type`in e&&e.type===`string`?!1:`allOf`in e;function aw(e,t){let n=[Rw(e.left._def,{...t,currentPath:[...t.currentPath,`allOf`,`0`]}),Rw(e.right._def,{...t,currentPath:[...t.currentPath,`allOf`,`1`]})].filter(e=>!!e),r=t.target===`jsonSchema2019-09`?{unevaluatedProperties:!1}:void 0,i=[];return n.forEach(e=>{if(iw(e))i.push(...e.allOf),e.unevaluatedProperties===void 0&&(r=void 0);else{let t=e;if(`additionalProperties`in e&&e.additionalProperties===!1){let{additionalProperties:n,...r}=e;t=r}else r=void 0;i.push(t)}}),i.length?{allOf:i,...r}:void 0}function ow(e,t){let n=typeof e.value;return n!==`bigint`&&n!==`number`&&n!==`boolean`&&n!==`string`?{type:Array.isArray(e.value)?`array`:`object`}:t.target===`openApi3`?{type:n===`bigint`?`integer`:n,enum:[e.value]}:{type:n===`bigint`?`integer`:n,const:e.value}}var sw=void 0,cw={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(sw===void 0&&(sw=RegExp(`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,`u`)),sw),uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function lw(e,t){let n={type:`string`};if(e.checks)for(let r of e.checks)switch(r.kind){case`min`:MS(n,`minLength`,typeof n.minLength==`number`?Math.max(n.minLength,r.value):r.value,r.message,t);break;case`max`:MS(n,`maxLength`,typeof n.maxLength==`number`?Math.min(n.maxLength,r.value):r.value,r.message,t);break;case`email`:switch(t.emailStrategy){case`format:email`:pw(n,`email`,r.message,t);break;case`format:idn-email`:pw(n,`idn-email`,r.message,t);break;case`pattern:zod`:mw(n,cw.email,r.message,t);break}break;case`url`:pw(n,`uri`,r.message,t);break;case`uuid`:pw(n,`uuid`,r.message,t);break;case`regex`:mw(n,r.regex,r.message,t);break;case`cuid`:mw(n,cw.cuid,r.message,t);break;case`cuid2`:mw(n,cw.cuid2,r.message,t);break;case`startsWith`:mw(n,RegExp(`^${uw(r.value,t)}`),r.message,t);break;case`endsWith`:mw(n,RegExp(`${uw(r.value,t)}$`),r.message,t);break;case`datetime`:pw(n,`date-time`,r.message,t);break;case`date`:pw(n,`date`,r.message,t);break;case`time`:pw(n,`time`,r.message,t);break;case`duration`:pw(n,`duration`,r.message,t);break;case`length`:MS(n,`minLength`,typeof n.minLength==`number`?Math.max(n.minLength,r.value):r.value,r.message,t),MS(n,`maxLength`,typeof n.maxLength==`number`?Math.min(n.maxLength,r.value):r.value,r.message,t);break;case`includes`:mw(n,RegExp(uw(r.value,t)),r.message,t);break;case`ip`:r.version!==`v6`&&pw(n,`ipv4`,r.message,t),r.version!==`v4`&&pw(n,`ipv6`,r.message,t);break;case`base64url`:mw(n,cw.base64url,r.message,t);break;case`jwt`:mw(n,cw.jwt,r.message,t);break;case`cidr`:r.version!==`v6`&&mw(n,cw.ipv4Cidr,r.message,t),r.version!==`v4`&&mw(n,cw.ipv6Cidr,r.message,t);break;case`emoji`:mw(n,cw.emoji(),r.message,t);break;case`ulid`:mw(n,cw.ulid,r.message,t);break;case`base64`:switch(t.base64Strategy){case`format:binary`:pw(n,`binary`,r.message,t);break;case`contentEncoding:base64`:MS(n,`contentEncoding`,`base64`,r.message,t);break;case`pattern:zod`:mw(n,cw.base64,r.message,t);break}break;case`nanoid`:mw(n,cw.nanoid,r.message,t);case`toLowerCase`:case`toUpperCase`:case`trim`:break;default:(e=>{})(r)}return n}function uw(e,t){return t.patternStrategy===`escape`?fw(e):e}var dw=new Set(`ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789`);function fw(e){let t=``;for(let n=0;ne.format)?(e.anyOf||=[],e.format&&(e.anyOf.push({format:e.format,...e.errorMessage&&r.errorMessages&&{errorMessage:{format:e.errorMessage.format}}}),delete e.format,e.errorMessage&&(delete e.errorMessage.format,Object.keys(e.errorMessage).length===0&&delete e.errorMessage)),e.anyOf.push({format:t,...n&&r.errorMessages&&{errorMessage:{format:n}}})):MS(e,`format`,t,n,r)}function mw(e,t,n,r){e.pattern||e.allOf?.some(e=>e.pattern)?(e.allOf||=[],e.pattern&&(e.allOf.push({pattern:e.pattern,...e.errorMessage&&r.errorMessages&&{errorMessage:{pattern:e.errorMessage.pattern}}}),delete e.pattern,e.errorMessage&&(delete e.errorMessage.pattern,Object.keys(e.errorMessage).length===0&&delete e.errorMessage)),e.allOf.push({pattern:hw(t,r),...n&&r.errorMessages&&{errorMessage:{pattern:n}}})):MS(e,`pattern`,hw(t,r),n,r)}function hw(e,t){if(!t.applyRegexFlags||!e.flags)return e.source;let n={i:e.flags.includes(`i`),m:e.flags.includes(`m`),s:e.flags.includes(`s`)},r=n.i?e.source.toLowerCase():e.source,i=``,a=!1,o=!1,s=!1;for(let e=0;e{let t=new Cm,n=new Uint8Array;e.subscribe({next:e=>{if(e.type!==vy.HEADERS&&e.type===vy.DATA&&e.data){let t=new Uint8Array(n.length+e.data.length);t.set(n,0),t.set(e.data,n.length),n=t,r()}},error:e=>t.error(e),complete:()=>{if(n.length>0)try{r()}catch{console.warn(`Incomplete or invalid protocol buffer data at stream end`)}t.complete()}});function r(){for(;n.length>=4;){let e=4+new DataView(n.buffer,n.byteOffset,4).getUint32(0,!1);if(n.length{let n=fy(t),r=new Cm,i=new Em,a=!1;return e.subscribe({next:e=>{if(i.next(e),e.type===vy.HEADERS&&!a){a=!0;let t=e.headers.get(`content-type`);n?.lifecycle(`HTTP`,`Stream format detected:`,{contentType:t,parser:t===`application/vnd.ag-ui.event+proto`?`protobuf`:`sse`}),t===`application/vnd.ag-ui.event+proto`?xy(i).subscribe({next:e=>r.next(e),error:e=>r.error(e),complete:()=>r.complete()}):by(i,n).subscribe({next:e=>{try{let t=Kf.parse(e);n?.event(`HTTP`,`Event validated:`,t,{type:t.type,valid:!0}),r.next(t)}catch(t){n?.event(`HTTP`,`Event invalid:`,{json:e,error:String(t)}),r.error(t)}},error:e=>{if(e?.name===`AbortError`){r.next({type:P.RUN_ERROR,message:e.message||`Request aborted`,code:`abort`,rawEvent:e}),r.complete();return}return r.error(e)},complete:()=>r.complete()})}else a||r.error(Error(`No headers event received before data events`))},error:e=>{i.error(e),r.error(e)},complete:()=>{i.complete()}}),r.asObservable()},Cy=Xv([`TextMessageStart`,`TextMessageContent`,`TextMessageEnd`,`ActionExecutionStart`,`ActionExecutionArgs`,`ActionExecutionEnd`,`ActionExecutionResult`,`AgentStateMessage`,`MetaEvent`,`RunStarted`,`RunFinished`,`RunError`,`NodeStarted`,`NodeFinished`]),wy=Xv([`LangGraphInterruptEvent`,`PredictState`,`Exit`]);Jv(`type`,[qv({type:Yv(Cy.enum.TextMessageStart),messageId:Wv(),parentMessageId:Wv().optional(),role:Wv().optional()}),qv({type:Yv(Cy.enum.TextMessageContent),messageId:Wv(),content:Wv()}),qv({type:Yv(Cy.enum.TextMessageEnd),messageId:Wv()}),qv({type:Yv(Cy.enum.ActionExecutionStart),actionExecutionId:Wv(),actionName:Wv(),parentMessageId:Wv().optional()}),qv({type:Yv(Cy.enum.ActionExecutionArgs),actionExecutionId:Wv(),args:Wv()}),qv({type:Yv(Cy.enum.ActionExecutionEnd),actionExecutionId:Wv()}),qv({type:Yv(Cy.enum.ActionExecutionResult),actionName:Wv(),actionExecutionId:Wv(),result:Wv()}),qv({type:Yv(Cy.enum.AgentStateMessage),threadId:Wv(),agentName:Wv(),nodeName:Wv(),runId:Wv(),active:Gv(),role:Wv(),state:Wv(),running:Gv()}),qv({type:Yv(Cy.enum.MetaEvent),name:wy,value:Kv()}),qv({type:Yv(Cy.enum.RunError),message:Wv(),code:Wv().optional()})]),qv({id:Wv(),role:Wv(),content:Wv(),parentMessageId:Wv().optional()}),qv({id:Wv(),name:Wv(),arguments:Kv(),parentMessageId:Wv().optional()}),qv({id:Wv(),result:Kv(),actionExecutionId:Wv(),actionName:Wv()});var Ty=e=>{if(typeof e==`string`)return e;if(!Array.isArray(e))return;let t=e.filter(e=>e.type===`text`).map(e=>e.text).filter(e=>e.length>0);if(t.length!==0)return t.join(` +`)},Ey=(e,t,n)=>r=>{let i={},a=!0,o=!0,s=``,c=null,l=null,u=[],d={},f=e=>{typeof e==`object`&&e&&(`messages`in e&&delete e.messages,i=e)};return r.pipe(ch(r=>{switch(r.type){case P.TEXT_MESSAGE_START:{let e=r;return[{type:Cy.enum.TextMessageStart,messageId:e.messageId,role:e.role}]}case P.TEXT_MESSAGE_CONTENT:{let e=r;return[{type:Cy.enum.TextMessageContent,messageId:e.messageId,content:e.delta}]}case P.TEXT_MESSAGE_END:{let e=r;return[{type:Cy.enum.TextMessageEnd,messageId:e.messageId}]}case P.TOOL_CALL_START:{let e=r;return u.push({id:e.toolCallId,type:`function`,function:{name:e.toolCallName,arguments:``}}),o=!0,d[e.toolCallId]=e.toolCallName,[{type:Cy.enum.ActionExecutionStart,actionExecutionId:e.toolCallId,actionName:e.toolCallName,parentMessageId:e.parentMessageId}]}case P.TOOL_CALL_ARGS:{let c=r,d=u.find(e=>e.id===c.toolCallId);if(!d)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${c.toolCallId}'`),[];d.function.arguments+=c.delta;let p=!1;if(l){let e=l.find(e=>e.tool==d.function.name);if(e)try{let t=JSON.parse(hh(d.function.arguments));e.tool_argument&&e.tool_argument in t?(f({...i,[e.state_key]:t[e.tool_argument]}),p=!0):e.tool_argument||(f({...i,[e.state_key]:t}),p=!0)}catch{}}return[{type:Cy.enum.ActionExecutionArgs,actionExecutionId:c.toolCallId,args:c.delta},...p?[{type:Cy.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}]:[]]}case P.TOOL_CALL_END:{let e=r;return[{type:Cy.enum.ActionExecutionEnd,actionExecutionId:e.toolCallId}]}case P.TOOL_CALL_RESULT:{let e=r;return[{type:Cy.enum.ActionExecutionResult,actionExecutionId:e.toolCallId,result:e.content,actionName:d[e.toolCallId]||`unknown`}]}case P.RAW:return[];case P.CUSTOM:{let e=r;switch(e.name){case`Exit`:a=!1;break;case`PredictState`:l=e.value;break}return[{type:Cy.enum.MetaEvent,name:e.name,value:e.value}]}case P.STATE_SNAPSHOT:return f(r.snapshot),[{type:Cy.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}];case P.STATE_DELTA:{let c=r,l=Op.applyPatch(i,c.delta,!0,!1);return l?(f(l.newDocument),[{type:Cy.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}]):[]}case P.MESSAGES_SNAPSHOT:return c=r.messages,[{type:Cy.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify({...i,...c?{messages:c}:{}}),active:!0}];case P.RUN_STARTED:return[];case P.RUN_FINISHED:return c&&(i.messages=c),Object.keys(i).length===0?[]:[{type:Cy.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify({...i,...c?{messages:Dy(c)}:{}}),active:!1}];case P.RUN_ERROR:{let e=r;return[{type:Cy.enum.RunError,message:e.message,code:e.code}]}case P.STEP_STARTED:return s=r.stepName,u=[],l=null,[{type:Cy.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:!0}];case P.STEP_FINISHED:return u=[],l=null,[{type:Cy.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:!1}];default:return[]}}))};function Dy(e){let t=[];for(let n of e)if(n.role===`assistant`||n.role===`user`||n.role===`system`){let e=Ty(n.content);if(e){let r={id:n.id,role:n.role,content:e};t.push(r)}if(n.role===`assistant`&&n.toolCalls&&n.toolCalls.length>0)for(let e of n.toolCalls){let r={id:e.id,name:e.function.name,arguments:JSON.parse(e.function.arguments),parentMessageId:n.id};t.push(r)}}else if(n.role===`tool`){let r=`unknown`;for(let t of e)if(t.role===`assistant`&&t.toolCalls?.length){for(let e of t.toolCalls)if(e.id===n.toolCallId){r=e.function.name;break}}let i={id:n.id,result:n.content,actionExecutionId:n.toolCallId,actionName:r};t.push(i)}return t}var Oy=e=>t=>{let n=fy(e),r,i,a,o,s=()=>{if(!r||o!==`text`)throw Error(`No text message to close`);let e={type:P.TEXT_MESSAGE_END,messageId:r.messageId};return o=void 0,r=void 0,n?.event(`TRANSFORM`,`TEXT_MESSAGE_END`,e,{messageId:e.messageId}),e},c=()=>{if(!i||o!==`tool`)throw Error(`No tool call to close`);let e={type:P.TOOL_CALL_END,toolCallId:i.toolCallId};return o=void 0,i=void 0,n?.event(`TRANSFORM`,`TOOL_CALL_END`,e,{toolCallId:e.toolCallId}),e},l=()=>{if(!a||o!==`reasoning`)throw Error(`No reasoning message to close`);let e={type:P.REASONING_MESSAGE_END,messageId:a.messageId};return o=void 0,a=void 0,n?.event(`TRANSFORM`,`REASONING_MESSAGE_END`,e,{messageId:e.messageId}),e},u=()=>o===`text`?[s()]:o===`tool`?[c()]:o===`reasoning`?[l()]:[];return t.pipe(ch(e=>{switch(e.type){case P.TEXT_MESSAGE_START:case P.TEXT_MESSAGE_CONTENT:case P.TEXT_MESSAGE_END:case P.TOOL_CALL_START:case P.TOOL_CALL_ARGS:case P.TOOL_CALL_END:case P.TOOL_CALL_RESULT:case P.STATE_SNAPSHOT:case P.STATE_DELTA:case P.MESSAGES_SNAPSHOT:case P.CUSTOM:case P.RUN_STARTED:case P.RUN_FINISHED:case P.RUN_ERROR:case P.STEP_STARTED:case P.STEP_FINISHED:case P.THINKING_START:case P.THINKING_END:case P.THINKING_TEXT_MESSAGE_START:case P.THINKING_TEXT_MESSAGE_CONTENT:case P.THINKING_TEXT_MESSAGE_END:case P.REASONING_START:case P.REASONING_MESSAGE_START:case P.REASONING_MESSAGE_CONTENT:case P.REASONING_MESSAGE_END:case P.REASONING_END:return[...u(),e];case P.RAW:case P.ACTIVITY_SNAPSHOT:case P.ACTIVITY_DELTA:case P.REASONING_ENCRYPTED_VALUE:return[e];case P.TEXT_MESSAGE_CHUNK:let t=e,s=[];if((o!==`text`||t.messageId!==void 0&&t.messageId!==r?.messageId)&&s.push(...u()),o!==`text`){if(t.messageId===void 0)throw Error(`First TEXT_MESSAGE_CHUNK must have a messageId`);r={messageId:t.messageId,name:t.name},o=`text`;let e={type:P.TEXT_MESSAGE_START,messageId:t.messageId,role:t.role||`assistant`,...t.name!==void 0&&{name:t.name}};s.push(e),n?.event(`TRANSFORM`,`TEXT_MESSAGE_START`,e,{messageId:t.messageId})}if(t.delta!==void 0){let e={type:P.TEXT_MESSAGE_CONTENT,messageId:r.messageId,delta:t.delta};s.push(e),n?.event(`TRANSFORM`,`TEXT_MESSAGE_CONTENT`,e,{messageId:r.messageId})}return s;case P.TOOL_CALL_CHUNK:let c=e,l=[];if((o!==`tool`||c.toolCallId!==void 0&&c.toolCallId!==i?.toolCallId)&&l.push(...u()),o!==`tool`){if(c.toolCallId===void 0)throw Error(`First TOOL_CALL_CHUNK must have a toolCallId`);if(c.toolCallName===void 0)throw Error(`First TOOL_CALL_CHUNK must have a toolCallName`);i={toolCallId:c.toolCallId,toolCallName:c.toolCallName,parentMessageId:c.parentMessageId},o=`tool`;let e={type:P.TOOL_CALL_START,toolCallId:c.toolCallId,toolCallName:c.toolCallName,parentMessageId:c.parentMessageId};l.push(e),n?.event(`TRANSFORM`,`TOOL_CALL_START`,e,{toolCallId:c.toolCallId,toolCallName:c.toolCallName})}if(c.delta!==void 0){let e={type:P.TOOL_CALL_ARGS,toolCallId:i.toolCallId,delta:c.delta};l.push(e),n?.event(`TRANSFORM`,`TOOL_CALL_ARGS`,e,{toolCallId:i.toolCallId})}return l;case P.REASONING_MESSAGE_CHUNK:let d=e,f=[];if((o!==`reasoning`||d.messageId&&d.messageId!==a?.messageId)&&f.push(...u()),o!==`reasoning`){if(d.messageId===void 0)throw Error(`First REASONING_MESSAGE_CHUNK must have a messageId`);a={messageId:d.messageId},o=`reasoning`;let e={type:P.REASONING_MESSAGE_START,messageId:d.messageId};f.push(e),n?.event(`TRANSFORM`,`REASONING_MESSAGE_START`,e,{messageId:d.messageId})}if(d.delta!==void 0){let e={type:P.REASONING_MESSAGE_CONTENT,messageId:a.messageId,delta:d.delta};f.push(e),n?.event(`TRANSFORM`,`REASONING_MESSAGE_CONTENT`,e,{messageId:a.messageId})}return f}return e.type,[]}),fh(()=>{u()}))};function ky(e,t=new Date){return e.expiresAt===void 0?!1:new Date(e.expiresAt)<=t}function Ay(e,t){let n=new Set(e.map(e=>e.id)),r=new Set(Object.keys(t)),i=[...n].filter(e=>!r.has(e));if(i.length>0)throw Error(`buildResumeArray: missing responses for open interrupts: ${i.join(`, `)}`);let a=[...r].filter(e=>!n.has(e));if(a.length>0)throw Error(`buildResumeArray: responses reference unknown interrupt ids: ${a.join(`, `)}`);return e.map(e=>{let n=t[e.id];if(n.status===`resolved`){let t={interruptId:e.id,status:`resolved`};return n.payload!==void 0&&(t.payload=n.payload),t}return{interruptId:e.id,status:`cancelled`}})}var jy=class{runNext(e,t){return t.run(e).pipe(Oy(!1))}runNextWithState(e,t){let n=ay(e.messages||[]),r=ay(e.state||{}),i=new Em;return gy(e,i,t,[]).subscribe(e=>{e.messages!==void 0&&(n=e.messages),e.state!==void 0&&(r=e.state)}),this.runNext(e,t).pipe(dh(async e=>(i.next(e),await new Promise(e=>setTimeout(e,0)),{event:e,messages:ay(n),state:ay(r)})))}},My=class extends jy{constructor(e){super(),this.fn=e}run(e,t){return this.fn(e,t)}};function Ny(e){let t=e.content;if(Array.isArray(t)){let n=t.filter(e=>typeof e==`object`&&!!e&&`type`in e&&e.type===`text`&&typeof e.text==`string`).map(e=>e.text).join(``);return{...e,content:n}}return typeof t==`string`?e:{...e,content:``}}var Py=class extends jy{run(e,t){let{parentRunId:n,...r}=e,i={...r,messages:r.messages.map(Ny)};return this.runNext(i,t)}},Fy=`THINKING_START`,Iy=`THINKING_END`,Ly=`THINKING_TEXT_MESSAGE_START`,Ry=`THINKING_TEXT_MESSAGE_CONTENT`,zy=`THINKING_TEXT_MESSAGE_END`,By=class extends jy{constructor(...e){super(...e),this.currentReasoningId=null,this.currentMessageId=null}warnAboutTransformation(e,t){typeof process<`u`&&{}.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`AG-UI is converting ${e} to ${t}. To remove this warning, upgrade your AG-UI integration package (e.g. @ag-ui/langgraph). To surpress it, set SUPPRESS_TRANSFORMATION_WARNINGS=true in your .env file.`)}run(e,t){return this.currentReasoningId=null,this.currentMessageId=null,this.runNext(e,t).pipe(sh(e=>this.transformEvent(e)))}transformEvent(e){switch(e.type){case Fy:{this.currentReasoningId=oy();let{title:t,...n}=e;return this.warnAboutTransformation(Fy,P.REASONING_START),{...n,type:P.REASONING_START,messageId:this.currentReasoningId}}case Ly:return this.currentMessageId=oy(),this.warnAboutTransformation(Ly,P.REASONING_MESSAGE_START),{...e,type:P.REASONING_MESSAGE_START,messageId:this.currentMessageId,role:`assistant`};case Ry:{let{delta:t,...n}=e;return this.warnAboutTransformation(Ry,P.REASONING_MESSAGE_CONTENT),{...n,type:P.REASONING_MESSAGE_CONTENT,messageId:this.currentMessageId??oy(),delta:t}}case zy:{let t=this.currentMessageId??oy();return this.warnAboutTransformation(zy,P.REASONING_MESSAGE_END),{...e,type:P.REASONING_MESSAGE_END,messageId:t}}case Iy:{let t=this.currentReasoningId??oy();return this.warnAboutTransformation(Iy,P.REASONING_END),{...e,type:P.REASONING_END,messageId:t}}default:return e}}};function Vy(e){return e.startsWith(`image/`)?`image`:e.startsWith(`audio/`)?`audio`:e.startsWith(`video/`)?`video`:`document`}function Hy(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`binary`&&`mimeType`in e&&typeof e.mimeType==`string`}function Uy(e){let t=Vy(e.mimeType);return e.data?{type:t,source:{type:`data`,value:e.data,mimeType:e.mimeType},...e.filename?{metadata:{filename:e.filename}}:{}}:e.url?{type:t,source:{type:`url`,value:e.url,mimeType:e.mimeType},...e.filename?{metadata:{filename:e.filename}}:{}}:e}function Wy(e){let t=e.content;if(!Array.isArray(t))return e;let n=t.map(e=>Hy(e)?Uy(e):e);return{...e,content:n}}var Gy=class extends jy{run(e,t){let n={...e,messages:e.messages.map(Wy)};return this.runNext(n,t)}},Ky=`0.0.57`,qy=class{get maxVersion(){return Ky}get debug(){return this._debug}set debug(e){this._debug=dy(e),this._debugLogger=my(this._debug)}get debugLogger(){return this._debugLogger}set debugLogger(e){typeof e==`boolean`?this._debugLogger=e?my(dy(!0)):void 0:this._debugLogger=e}constructor({agentId:e,description:t,threadId:n,initialMessages:r,initialState:i,debug:a}={}){this.subscribers=[],this.isRunning=!1,this.pendingInterrupts=[],this.middlewares=[],this.agentId=e,this.description=t??``,this.threadId=n??Wl(),this.messages=ay(r??[]),this.state=ay(i??{}),this._debug=dy(a),this._debugLogger=my(this._debug),iy(this.maxVersion,`0.0.39`)<=0&&this.middlewares.unshift(new Py),iy(this.maxVersion,`0.0.45`)<=0&&this.middlewares.unshift(new By),iy(this.maxVersion,`0.0.47`)<=0&&this.middlewares.unshift(new Gy)}subscribe(e){return this.subscribers.push(e),{unsubscribe:()=>{this.subscribers=this.subscribers.filter(t=>t!==e)}}}use(...e){let t=e.map(e=>typeof e==`function`?new My(e):e);return this.middlewares.push(...t),this}async runAgent(e,t){try{this.isRunning=!0,this.agentId=this.agentId??Wl();let n=this.prepareRunAgentInput(e);this.debugLogger?.lifecycle(`LIFECYCLE`,`Run started:`,{agentId:this.agentId,threadId:this.threadId});let r,i=new Set(this.messages.map(e=>e.id)),a=[{onRunFinishedEvent:e=>{e.outcome===`success`&&(r=e.result)}},...this.subscribers,t??{}];await this.onInitialize(n,a),this.activeRunDetach$=new Cm;let o;this.activeRunCompletionPromise=new Promise(e=>{o=e}),await oh(mm(()=>this.middlewares.length===0?this.run(n):this.middlewares.reduceRight((e,t)=>({run:n=>t.run(n,e),get messages(){return e.messages},get state(){return e.state}}),this).run(n),Oy(this.debugLogger),_y(this.debugLogger),e=>e.pipe(ph(this.activeRunDetach$)),e=>this.apply(n,e,a),e=>this.processApplyEvents(n,e,a),uh(e=>(this.debugLogger?.lifecycle(`LIFECYCLE`,`Run errored:`,{agentId:this.agentId,error:e instanceof Error?e.message:String(e)}),this.isRunning=!1,this.onError(n,e,a))),fh(()=>{this.debugLogger?.lifecycle(`LIFECYCLE`,`Run finished:`,{agentId:this.agentId,threadId:this.threadId}),this.isRunning=!1,this.onFinalize(n,a),o?.(),o=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}))(rh(null)));let s=ay(this.messages).filter(e=>!i.has(e.id));return{result:r,newMessages:s}}finally{this.isRunning=!1}}connect(e){throw new tf}async connectAgent(e,t){try{this.isRunning=!0,this.agentId=this.agentId??Wl();let n=this.prepareRunAgentInput(e),r,i=new Set(this.messages.map(e=>e.id)),a=[{onRunFinishedEvent:e=>{e.outcome===`success`&&(r=e.result)}},...this.subscribers,t??{}];await this.onInitialize(n,a),this.activeRunDetach$=new Cm;let o;this.activeRunCompletionPromise=new Promise(e=>{o=e}),await oh(mm(()=>lh(()=>this.connect(n)),Oy(this.debugLogger),_y(this.debugLogger),e=>e.pipe(ph(this.activeRunDetach$)),e=>this.apply(n,e,a),e=>this.processApplyEvents(n,e,a),uh(e=>(this.isRunning=!1,e instanceof tf?Dm:this.onError(n,e,a))),fh(()=>{this.isRunning=!1,this.onFinalize(n,a),o?.(),o=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}))(rh(null)),{defaultValue:void 0});let s=ay(this.messages).filter(e=>!i.has(e.id));return{result:r,newMessages:s}}finally{this.isRunning=!1}}abortRun(){}async detachActiveRun(){if(!this.activeRunDetach$)return;let e=this.activeRunCompletionPromise??Promise.resolve();this.activeRunDetach$.next(),this.activeRunDetach$?.complete(),await e}apply(e,t,n){return gy(e,t,this,n,this.debugLogger)}processApplyEvents(e,t,n){return t.pipe(fee(t=>{t.messages&&(this.messages=t.messages,n.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),t.state&&(this.state=t.state,n.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})}))}))}prepareRunAgentInput(e){let t=ay(this.messages).filter(e=>e.role!==`activity`);return{threadId:this.threadId,runId:e?.runId||Wl(),tools:ay(e?.tools??[]),context:ay(e?.context??[]),forwardedProps:ay(e?.forwardedProps??{}),state:ay(this.state),messages:t,...e?.resume===void 0?{}:{resume:ay(e.resume)}}}async onInitialize(e,t){if(this.pendingInterrupts.length>0){let t=new Set((e.resume??[]).map(e=>e.interruptId)),n=this.pendingInterrupts.map(e=>e.id).filter(e=>!t.has(e));if(n.length>0)throw new ef(`Thread has ${n.length} pending interrupt(s) not addressed by resume: ${n.join(`, `)}`);for(let e of this.pendingInterrupts)if(ky(e))throw new ef(`Interrupt ${e.id} expired at ${e.expiresAt}`)}let n=await uy(t,this.messages,this.state,(t,n,r)=>t.onRunInitialized?.({messages:n,state:r,agent:this,input:e}));(n.messages!==void 0||n.state!==void 0)&&(n.messages&&(this.messages=n.messages,e.messages=n.messages,t.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),n.state&&(this.state=n.state,e.state=n.state,t.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})})))}onError(e,t,n){return nh(uy(n,this.messages,this.state,(n,r,i)=>n.onRunFailed?.({error:t,messages:r,state:i,agent:this,input:e}))).pipe(sh(r=>{let i=r;if((i.messages!==void 0||i.state!==void 0)&&(i.messages!==void 0&&(this.messages=i.messages,n.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),i.state!==void 0&&(this.state=i.state,n.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})}))),i.stopPropagation!==!0){let e=String(t);if(!(t.name===`AbortError`||t.message===`Fetch is aborted`||t.message===`signal is aborted without reason`||t.message===`component unmounted`||e===`component unmounted`))throw console.error(`Agent execution failed:`,t),t}return{}}))}async onFinalize(e,t){let n=await uy(t,this.messages,this.state,(t,n,r)=>t.onRunFinalized?.({messages:n,state:r,agent:this,input:e}));(n.messages!==void 0||n.state!==void 0)&&(n.messages!==void 0&&(this.messages=n.messages,t.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),n.state!==void 0&&(this.state=n.state,t.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})})))}clone(){let e=Object.create(Object.getPrototypeOf(this));return e.agentId=this.agentId,e.description=this.description,e.threadId=this.threadId,e.messages=ay(this.messages),e.state=ay(this.state),e._debug=this._debug,e._debugLogger=this._debugLogger,e.isRunning=this.isRunning,e.subscribers=[...this.subscribers],e.middlewares=[...this.middlewares],e.pendingInterrupts=ay(this.pendingInterrupts),e}addMessage(e){this.messages.push(e),(async()=>{for(let t of this.subscribers)await t.onNewMessage?.({message:e,messages:this.messages,state:this.state,agent:this});if(e.role===`assistant`&&e.toolCalls)for(let t of e.toolCalls)for(let e of this.subscribers)await e.onNewToolCall?.({toolCall:t,messages:this.messages,state:this.state,agent:this});for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}addMessages(e){this.messages.push(...e),(async()=>{for(let t of e){for(let e of this.subscribers)await e.onNewMessage?.({message:t,messages:this.messages,state:this.state,agent:this});if(t.role===`assistant`&&t.toolCalls)for(let e of t.toolCalls)for(let t of this.subscribers)await t.onNewToolCall?.({toolCall:e,messages:this.messages,state:this.state,agent:this})}for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}setMessages(e){this.messages=ay(e),(async()=>{for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}setState(e){this.state=ay(e),(async()=>{for(let e of this.subscribers)await e.onStateChanged?.({messages:this.messages,state:this.state,agent:this})})()}legacy_to_be_removed_runAgentBridged(e){this.agentId=this.agentId??Wl();let t=this.prepareRunAgentInput(e);return(this.middlewares.length===0?this.run(t):this.middlewares.reduceRight((e,t)=>({run:n=>t.run(n,e),get messages(){return e.messages},get state(){return e.state}}),this).run(t)).pipe(Oy(this.debugLogger),_y(this.debugLogger),Ey(this.threadId,t.runId,this.agentId),e=>e.pipe(sh(e=>(this.debugLogger?.event(`LEGACY`,`Event:`,e,{type:e.type}),e))))}},Jy=class extends qy{requestInit(e){return{method:`POST`,headers:{...this.headers,"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify(e),signal:this.abortController.signal}}runAgent(e,t){return this.abortController=e?.abortController??new AbortController,super.runAgent(e,t)}abortRun(){this.abortController.abort(),super.abortRun()}constructor(e){super(e),this.abortController=new AbortController,this.url=e.url,this.headers=ay(e.headers??{}),this.fetch=e.fetch??((e,t)=>fetch(e,t))}run(e){return Sy(yy(()=>this.fetch(this.url,this.requestInit(e))),this.debugLogger)}clone(){let e=super.clone();e.url=this.url,e.headers=ay(this.headers??{}),e.fetch=this.fetch;let t=new AbortController,n=this.abortController.signal;return n.aborted&&t.abort(n.reason),e.abortController=t,e}},Yy;(function(e){e.assertEqual=e=>{};function t(e){}e.assertIs=t;function n(e){throw Error()}e.assertNever=n,e.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},e.getValidEnumValues=t=>{let n=e.objectKeys(t).filter(e=>typeof t[t[e]]!=`number`),r={};for(let e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys=typeof Object.keys==`function`?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(let n of e)if(t(n))return n},e.isInteger=typeof Number.isInteger==`function`?e=>Number.isInteger(e):e=>typeof e==`number`&&Number.isFinite(e)&&Math.floor(e)===e;function r(e,t=` | `){return e.map(e=>typeof e==`string`?`'${e}'`:e).join(t)}e.joinValues=r,e.jsonStringifyReplacer=(e,t)=>typeof t==`bigint`?t.toString():t})(Yy||={});var Xy;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})(Xy||={});var Zy=Yy.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),Qy=e=>{switch(typeof e){case`undefined`:return Zy.undefined;case`string`:return Zy.string;case`number`:return Number.isNaN(e)?Zy.nan:Zy.number;case`boolean`:return Zy.boolean;case`function`:return Zy.function;case`bigint`:return Zy.bigint;case`symbol`:return Zy.symbol;case`object`:return Array.isArray(e)?Zy.array:e===null?Zy.null:e.then&&typeof e.then==`function`&&e.catch&&typeof e.catch==`function`?Zy.promise:typeof Map<`u`&&e instanceof Map?Zy.map:typeof Set<`u`&&e instanceof Set?Zy.set:typeof Date<`u`&&e instanceof Date?Zy.date:Zy.object;default:return Zy.unknown}},R=Yy.arrayToEnum([`invalid_type`,`invalid_literal`,`custom`,`invalid_union`,`invalid_union_discriminator`,`invalid_enum_value`,`unrecognized_keys`,`invalid_arguments`,`invalid_return_type`,`invalid_date`,`invalid_string`,`too_small`,`too_big`,`invalid_intersection_types`,`not_multiple_of`,`not_finite`]),$y=class e extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=`ZodError`,this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`)i.unionErrors.map(r);else if(i.code===`invalid_return_type`)r(i.returnTypeError);else if(i.code===`invalid_arguments`)r(i.argumentsError);else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;re.message){let t={},n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};$y.create=e=>new $y(e);var eb=(e,t)=>{let n;switch(e.code){case R.invalid_type:n=e.received===Zy.undefined?`Required`:`Expected ${e.expected}, received ${e.received}`;break;case R.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,Yy.jsonStringifyReplacer)}`;break;case R.unrecognized_keys:n=`Unrecognized key(s) in object: ${Yy.joinValues(e.keys,`, `)}`;break;case R.invalid_union:n=`Invalid input`;break;case R.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${Yy.joinValues(e.options)}`;break;case R.invalid_enum_value:n=`Invalid enum value. Expected ${Yy.joinValues(e.options)}, received '${e.received}'`;break;case R.invalid_arguments:n=`Invalid function arguments`;break;case R.invalid_return_type:n=`Invalid function return type`;break;case R.invalid_date:n=`Invalid date`;break;case R.invalid_string:typeof e.validation==`object`?`includes`in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position==`number`&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):`startsWith`in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:`endsWith`in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:Yy.assertNever(e.validation):n=e.validation===`regex`?`Invalid`:`Invalid ${e.validation}`;break;case R.too_small:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at least`:`more than`} ${e.minimum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at least`:`over`} ${e.minimum} character(s)`:e.type===`number`||e.type===`bigint`?`Number must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${e.minimum}`:e.type===`date`?`Date must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(e.minimum))}`:`Invalid input`;break;case R.too_big:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at most`:`less than`} ${e.maximum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at most`:`under`} ${e.maximum} character(s)`:e.type===`number`?`Number must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`bigint`?`BigInt must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`date`?`Date must be ${e.exact?`exactly`:e.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(e.maximum))}`:`Invalid input`;break;case R.custom:n=`Invalid input`;break;case R.invalid_intersection_types:n=`Intersection results could not be merged`;break;case R.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case R.not_finite:n=`Number must be finite`;break;default:n=t.defaultError,Yy.assertNever(e)}return{message:n}},tb=eb;function nb(){return tb}var rb=e=>{let{data:t,path:n,errorMaps:r,issueData:i}=e,a=[...n,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s=``,c=r.filter(e=>!!e).slice().reverse();for(let e of c)s=e(o,{data:t,defaultError:s}).message;return{...i,path:a,message:s}};function z(e,t){let n=nb(),r=rb({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===eb?void 0:eb].filter(e=>!!e)});e.common.issues.push(r)}var ib=class e{constructor(){this.value=`valid`}dirty(){this.value===`valid`&&(this.value=`dirty`)}abort(){this.value!==`aborted`&&(this.value=`aborted`)}static mergeArray(e,t){let n=[];for(let r of t){if(r.status===`aborted`)return ab;r.status===`dirty`&&e.dirty(),n.push(r.value)}return{status:e.value,value:n}}static async mergeObjectAsync(t,n){let r=[];for(let e of n){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return e.mergeObjectSync(t,r)}static mergeObjectSync(e,t){let n={};for(let r of t){let{key:t,value:i}=r;if(t.status===`aborted`||i.status===`aborted`)return ab;t.status===`dirty`&&e.dirty(),i.status===`dirty`&&e.dirty(),t.value!==`__proto__`&&(i.value!==void 0||r.alwaysSet)&&(n[t.value]=i.value)}return{status:e.value,value:n}}},ab=Object.freeze({status:`aborted`}),ob=e=>({status:`dirty`,value:e}),sb=e=>({status:`valid`,value:e}),cb=e=>e.status===`aborted`,lb=e=>e.status===`dirty`,ub=e=>e.status===`valid`,db=e=>typeof Promise<`u`&&e instanceof Promise,fb;(function(e){e.errToObj=e=>typeof e==`string`?{message:e}:e||{},e.toString=e=>typeof e==`string`?e:e?.message})(fb||={});var pb=class{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},mb=(e,t)=>{if(ub(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(`Validation failed but no issues detected.`);return{success:!1,get error(){if(this._error)return this._error;let t=new $y(e.common.issues);return this._error=t,this._error}}};function hb(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return t.code===`invalid_enum_value`?{message:a??i.defaultError}:i.data===void 0?{message:a??r??i.defaultError}:t.code===`invalid_type`?{message:a??n??i.defaultError}:{message:i.defaultError}},description:i}}var gb=class{get description(){return this._def.description}_getType(e){return Qy(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:Qy(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new ib,ctx:{common:e.parent.common,data:e.data,parsedType:Qy(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(db(t))throw Error(`Synchronous parse encountered promise.`);return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Qy(e)};return mb(n,this._parseSync({data:e,path:n.path,parent:n}))}"~validate"(e){let t={common:{issues:[],async:!!this[`~standard`].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Qy(e)};if(!this[`~standard`].async)try{let n=this._parseSync({data:e,path:[],parent:t});return ub(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(`encountered`)&&(this[`~standard`].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>ub(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Qy(e)},r=this._parse({data:e,path:n.path,parent:n});return mb(n,await(db(r)?r:Promise.resolve(r)))}refine(e,t){let n=e=>typeof t==`string`||t===void 0?{message:t}:typeof t==`function`?t(e):t;return this._refinement((t,r)=>{let i=e(t),a=()=>r.addIssue({code:R.custom,...n(t)});return typeof Promise<`u`&&i instanceof Promise?i.then(e=>e?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(e,t){return this._refinement((n,r)=>e(n)?!0:(r.addIssue(typeof t==`function`?t(n,r):t),!1))}_refinement(e){return new ax({schema:this,typeName:mx.ZodEffects,effect:{type:`refinement`,refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[`~standard`]={version:1,vendor:`zod`,validate:e=>this[`~validate`](e)}}optional(){return ox.create(this,this._def)}nullable(){return sx.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Bb.create(this)}promise(){return ix.create(this,this._def)}or(e){return Ub.create([this,e],this._def)}and(e){return qb.create(this,e,this._def)}transform(e){return new ax({...hb(this._def),schema:this,typeName:mx.ZodEffects,effect:{type:`transform`,transform:e}})}default(e){let t=typeof e==`function`?e:()=>e;return new cx({...hb(this._def),innerType:this,defaultValue:t,typeName:mx.ZodDefault})}brand(){return new dx({typeName:mx.ZodBranded,type:this,...hb(this._def)})}catch(e){let t=typeof e==`function`?e:()=>e;return new lx({...hb(this._def),innerType:this,catchValue:t,typeName:mx.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return fx.create(this,e)}readonly(){return px.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},_b=/^c[^\s-]{8,}$/i,vb=/^[0-9a-z]+$/,yb=/^[0-9A-HJKMNP-TV-Z]{26}$/i,bb=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,xb=/^[a-z0-9_-]{21}$/i,Sb=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Cb=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,wb=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,_ee=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,Tb,vee=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,yee=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,bee=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,xee=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,See=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Cee=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Eb=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`,wee=RegExp(`^${Eb}$`);function Db(e){let t=`[0-5]\\d`;e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision??(t=`${t}(\\.\\d+)?`);let n=e.precision?`+`:`?`;return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function Tee(e){return RegExp(`^${Db(e)}$`)}function Eee(e){let t=`${Eb}T${Db(e)}`,n=[];return n.push(e.local?`Z?`:`Z`),e.offset&&n.push(`([+-]\\d{2}:?\\d{2})`),t=`${t}(${n.join(`|`)})`,RegExp(`^${t}$`)}function Dee(e,t){return!!((t===`v4`||!t)&&vee.test(e)||(t===`v6`||!t)&&bee.test(e))}function Oee(e,t){if(!Sb.test(e))return!1;try{let[n]=e.split(`.`);if(!n)return!1;let r=n.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(n.length+(4-n.length%4)%4,`=`),i=JSON.parse(atob(r));return!(typeof i!=`object`||!i||`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&i.alg!==t)}catch{return!1}}function kee(e,t){return!!((t===`v4`||!t)&&yee.test(e)||(t===`v6`||!t)&&xee.test(e))}var Ob=class e extends gb{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==Zy.string){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:Zy.string,received:t.parsedType}),ab}let t=new ib,n;for(let r of this._def.checks)if(r.kind===`min`)e.data.lengthr.value&&(n=this._getOrReturnCtx(e,n),z(n,{code:R.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),t.dirty());else if(r.kind===`length`){let i=e.data.length>r.value,a=e.data.lengthe.test(t),{validation:t,code:R.invalid_string,...fb.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(e){return this._addCheck({kind:`email`,...fb.errToObj(e)})}url(e){return this._addCheck({kind:`url`,...fb.errToObj(e)})}emoji(e){return this._addCheck({kind:`emoji`,...fb.errToObj(e)})}uuid(e){return this._addCheck({kind:`uuid`,...fb.errToObj(e)})}nanoid(e){return this._addCheck({kind:`nanoid`,...fb.errToObj(e)})}cuid(e){return this._addCheck({kind:`cuid`,...fb.errToObj(e)})}cuid2(e){return this._addCheck({kind:`cuid2`,...fb.errToObj(e)})}ulid(e){return this._addCheck({kind:`ulid`,...fb.errToObj(e)})}base64(e){return this._addCheck({kind:`base64`,...fb.errToObj(e)})}base64url(e){return this._addCheck({kind:`base64url`,...fb.errToObj(e)})}jwt(e){return this._addCheck({kind:`jwt`,...fb.errToObj(e)})}ip(e){return this._addCheck({kind:`ip`,...fb.errToObj(e)})}cidr(e){return this._addCheck({kind:`cidr`,...fb.errToObj(e)})}datetime(e){return typeof e==`string`?this._addCheck({kind:`datetime`,precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:`datetime`,precision:e?.precision===void 0?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...fb.errToObj(e?.message)})}date(e){return this._addCheck({kind:`date`,message:e})}time(e){return typeof e==`string`?this._addCheck({kind:`time`,precision:null,message:e}):this._addCheck({kind:`time`,precision:e?.precision===void 0?null:e?.precision,...fb.errToObj(e?.message)})}duration(e){return this._addCheck({kind:`duration`,...fb.errToObj(e)})}regex(e,t){return this._addCheck({kind:`regex`,regex:e,...fb.errToObj(t)})}includes(e,t){return this._addCheck({kind:`includes`,value:e,position:t?.position,...fb.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:`startsWith`,value:e,...fb.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:`endsWith`,value:e,...fb.errToObj(t)})}min(e,t){return this._addCheck({kind:`min`,value:e,...fb.errToObj(t)})}max(e,t){return this._addCheck({kind:`max`,value:e,...fb.errToObj(t)})}length(e,t){return this._addCheck({kind:`length`,value:e,...fb.errToObj(t)})}nonempty(e){return this.min(1,fb.errToObj(e))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:`trim`}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toLowerCase`}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toUpperCase`}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind===`datetime`)}get isDate(){return!!this._def.checks.find(e=>e.kind===`date`)}get isTime(){return!!this._def.checks.find(e=>e.kind===`time`)}get isDuration(){return!!this._def.checks.find(e=>e.kind===`duration`)}get isEmail(){return!!this._def.checks.find(e=>e.kind===`email`)}get isURL(){return!!this._def.checks.find(e=>e.kind===`url`)}get isEmoji(){return!!this._def.checks.find(e=>e.kind===`emoji`)}get isUUID(){return!!this._def.checks.find(e=>e.kind===`uuid`)}get isNANOID(){return!!this._def.checks.find(e=>e.kind===`nanoid`)}get isCUID(){return!!this._def.checks.find(e=>e.kind===`cuid`)}get isCUID2(){return!!this._def.checks.find(e=>e.kind===`cuid2`)}get isULID(){return!!this._def.checks.find(e=>e.kind===`ulid`)}get isIP(){return!!this._def.checks.find(e=>e.kind===`ip`)}get isCIDR(){return!!this._def.checks.find(e=>e.kind===`cidr`)}get isBase64(){return!!this._def.checks.find(e=>e.kind===`base64`)}get isBase64url(){return!!this._def.checks.find(e=>e.kind===`base64url`)}get minLength(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew Ob({checks:[],typeName:mx.ZodString,coerce:e?.coerce??!1,...hb(e)});function Aee(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=(t.toString().split(`.`)[1]||``).length,i=n>r?n:r;return Number.parseInt(e.toFixed(i).replace(`.`,``))%Number.parseInt(t.toFixed(i).replace(`.`,``))/10**i}var kb=class e extends gb{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==Zy.number){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:Zy.number,received:t.parsedType}),ab}let t,n=new ib;for(let r of this._def.checks)r.kind===`int`?Yy.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),z(t,{code:R.invalid_type,expected:`integer`,received:`float`,message:r.message}),n.dirty()):r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),z(t,{code:R.too_big,maximum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):r.kind===`multipleOf`?Aee(e.data,r.value)!==0&&(t=this._getOrReturnCtx(e,t),z(t,{code:R.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):r.kind===`finite`?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),z(t,{code:R.not_finite,message:r.message}),n.dirty()):Yy.assertNever(r);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit(`min`,e,!0,fb.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,fb.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,fb.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,fb.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:fb.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(e){return this._addCheck({kind:`int`,message:fb.toString(e)})}positive(e){return this._addCheck({kind:`min`,value:0,inclusive:!1,message:fb.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:0,inclusive:!1,message:fb.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:0,inclusive:!0,message:fb.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:0,inclusive:!0,message:fb.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:fb.toString(t)})}finite(e){return this._addCheck({kind:`finite`,message:fb.toString(e)})}safe(e){return this._addCheck({kind:`min`,inclusive:!0,value:-(2**53-1),message:fb.toString(e)})._addCheck({kind:`max`,inclusive:!0,value:2**53-1,message:fb.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuee.kind===`int`||e.kind===`multipleOf`&&Yy.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(n.kind===`finite`||n.kind===`int`||n.kind===`multipleOf`)return!0;else n.kind===`min`?(t===null||n.value>t)&&(t=n.value):n.kind===`max`&&(e===null||n.valuenew kb({checks:[],typeName:mx.ZodNumber,coerce:e?.coerce||!1,...hb(e)});var Ab=class e extends gb{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==Zy.bigint)return this._getInvalidInput(e);let t,n=new ib;for(let r of this._def.checks)r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),z(t,{code:R.too_big,type:`bigint`,maximum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):r.kind===`multipleOf`?e.data%r.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),z(t,{code:R.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):Yy.assertNever(r);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:Zy.bigint,received:t.parsedType}),ab}gte(e,t){return this.setLimit(`min`,e,!0,fb.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,fb.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,fb.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,fb.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:fb.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!1,message:fb.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!1,message:fb.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!0,message:fb.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!0,message:fb.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:fb.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew Ab({checks:[],typeName:mx.ZodBigInt,coerce:e?.coerce??!1,...hb(e)});var jb=class extends gb{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==Zy.boolean){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:Zy.boolean,received:t.parsedType}),ab}return sb(e.data)}};jb.create=e=>new jb({typeName:mx.ZodBoolean,coerce:e?.coerce||!1,...hb(e)});var Mb=class e extends gb{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==Zy.date){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:Zy.date,received:t.parsedType}),ab}if(Number.isNaN(e.data.getTime()))return z(this._getOrReturnCtx(e),{code:R.invalid_date}),ab;let t=new ib,n;for(let r of this._def.checks)r.kind===`min`?e.data.getTime()r.value&&(n=this._getOrReturnCtx(e,n),z(n,{code:R.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:`date`}),t.dirty()):Yy.assertNever(r);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(e,t){return this._addCheck({kind:`min`,value:e.getTime(),message:fb.toString(t)})}max(e,t){return this._addCheck({kind:`max`,value:e.getTime(),message:fb.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e==null?null:new Date(e)}get maxDate(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew Mb({checks:[],coerce:e?.coerce||!1,typeName:mx.ZodDate,...hb(e)});var Nb=class extends gb{_parse(e){if(this._getType(e)!==Zy.symbol){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:Zy.symbol,received:t.parsedType}),ab}return sb(e.data)}};Nb.create=e=>new Nb({typeName:mx.ZodSymbol,...hb(e)});var Pb=class extends gb{_parse(e){if(this._getType(e)!==Zy.undefined){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:Zy.undefined,received:t.parsedType}),ab}return sb(e.data)}};Pb.create=e=>new Pb({typeName:mx.ZodUndefined,...hb(e)});var Fb=class extends gb{_parse(e){if(this._getType(e)!==Zy.null){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:Zy.null,received:t.parsedType}),ab}return sb(e.data)}};Fb.create=e=>new Fb({typeName:mx.ZodNull,...hb(e)});var Ib=class extends gb{constructor(){super(...arguments),this._any=!0}_parse(e){return sb(e.data)}};Ib.create=e=>new Ib({typeName:mx.ZodAny,...hb(e)});var Lb=class extends gb{constructor(){super(...arguments),this._unknown=!0}_parse(e){return sb(e.data)}};Lb.create=e=>new Lb({typeName:mx.ZodUnknown,...hb(e)});var Rb=class extends gb{_parse(e){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:Zy.never,received:t.parsedType}),ab}};Rb.create=e=>new Rb({typeName:mx.ZodNever,...hb(e)});var zb=class extends gb{_parse(e){if(this._getType(e)!==Zy.undefined){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:Zy.void,received:t.parsedType}),ab}return sb(e.data)}};zb.create=e=>new zb({typeName:mx.ZodVoid,...hb(e)});var Bb=class e extends gb{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==Zy.array)return z(t,{code:R.invalid_type,expected:Zy.array,received:t.parsedType}),ab;if(r.exactLength!==null){let e=t.data.length>r.exactLength.value,i=t.data.lengthr.maxLength.value&&(z(t,{code:R.too_big,maximum:r.maxLength.value,type:`array`,inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>r.type._parseAsync(new pb(t,e,t.path,n)))).then(e=>ib.mergeArray(n,e));let i=[...t.data].map((e,n)=>r.type._parseSync(new pb(t,e,t.path,n)));return ib.mergeArray(n,i)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:fb.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:fb.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:fb.toString(n)}})}nonempty(e){return this.min(1,e)}};Bb.create=(e,t)=>new Bb({type:e,minLength:null,maxLength:null,exactLength:null,typeName:mx.ZodArray,...hb(t)});function Vb(e){if(e instanceof Hb){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=ox.create(Vb(r))}return new Hb({...e._def,shape:()=>t})}else if(e instanceof Bb)return new Bb({...e._def,type:Vb(e.element)});else if(e instanceof ox)return ox.create(Vb(e.unwrap()));else if(e instanceof sx)return sx.create(Vb(e.unwrap()));else if(e instanceof Jb)return Jb.create(e.items.map(e=>Vb(e)));else return e}var Hb=class e extends gb{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=Yy.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==Zy.object){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:Zy.object,received:t.parsedType}),ab}let{status:t,ctx:n}=this._processInputParams(e),{shape:r,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof Rb&&this._def.unknownKeys===`strip`))for(let e in n.data)i.includes(e)||a.push(e);let o=[];for(let e of i){let t=r[e],i=n.data[e];o.push({key:{status:`valid`,value:e},value:t._parse(new pb(n,i,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof Rb){let e=this._def.unknownKeys;if(e===`passthrough`)for(let e of a)o.push({key:{status:`valid`,value:e},value:{status:`valid`,value:n.data[e]}});else if(e===`strict`)a.length>0&&(z(n,{code:R.unrecognized_keys,keys:a}),t.dirty());else if(e!==`strip`)throw Error(`Internal ZodObject error: invalid unknownKeys value.`)}else{let e=this._def.catchall;for(let t of a){let r=n.data[t];o.push({key:{status:`valid`,value:t},value:e._parse(new pb(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of o){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>ib.mergeObjectSync(t,e)):ib.mergeObjectSync(t,o)}get shape(){return this._def.shape()}strict(t){return fb.errToObj,new e({...this._def,unknownKeys:`strict`,...t===void 0?{}:{errorMap:(e,n)=>{let r=this._def.errorMap?.(e,n).message??n.defaultError;return e.code===`unrecognized_keys`?{message:fb.errToObj(t).message??r}:{message:r}}}})}strip(){return new e({...this._def,unknownKeys:`strip`})}passthrough(){return new e({...this._def,unknownKeys:`passthrough`})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:mx.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let n={};for(let e of Yy.objectKeys(t))t[e]&&this.shape[e]&&(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}omit(t){let n={};for(let e of Yy.objectKeys(this.shape))t[e]||(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}deepPartial(){return Vb(this)}partial(t){let n={};for(let e of Yy.objectKeys(this.shape)){let r=this.shape[e];t&&!t[e]?n[e]=r:n[e]=r.optional()}return new e({...this._def,shape:()=>n})}required(t){let n={};for(let e of Yy.objectKeys(this.shape))if(t&&!t[e])n[e]=this.shape[e];else{let t=this.shape[e];for(;t instanceof ox;)t=t._def.innerType;n[e]=t}return new e({...this._def,shape:()=>n})}keyof(){return tx(Yy.objectKeys(this.shape))}};Hb.create=(e,t)=>new Hb({shape:()=>e,unknownKeys:`strip`,catchall:Rb.create(),typeName:mx.ZodObject,...hb(t)}),Hb.strictCreate=(e,t)=>new Hb({shape:()=>e,unknownKeys:`strict`,catchall:Rb.create(),typeName:mx.ZodObject,...hb(t)}),Hb.lazycreate=(e,t)=>new Hb({shape:e,unknownKeys:`strip`,catchall:Rb.create(),typeName:mx.ZodObject,...hb(t)});var Ub=class extends gb{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;function r(e){for(let t of e)if(t.result.status===`valid`)return t.result;for(let n of e)if(n.result.status===`dirty`)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new $y(e.ctx.common.issues));return z(t,{code:R.invalid_union,unionErrors:n}),ab}if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(r);{let e,r=[];for(let i of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:n});if(a.status===`valid`)return a;a.status===`dirty`&&!e&&(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=r.map(e=>new $y(e));return z(t,{code:R.invalid_union,unionErrors:i}),ab}}get options(){return this._def.options}};Ub.create=(e,t)=>new Ub({options:e,typeName:mx.ZodUnion,...hb(t)});var Wb=e=>e instanceof $b?Wb(e.schema):e instanceof ax?Wb(e.innerType()):e instanceof ex?[e.value]:e instanceof nx?e.options:e instanceof rx?Yy.objectValues(e.enum):e instanceof cx?Wb(e._def.innerType):e instanceof Pb?[void 0]:e instanceof Fb?[null]:e instanceof ox?[void 0,...Wb(e.unwrap())]:e instanceof sx?[null,...Wb(e.unwrap())]:e instanceof dx||e instanceof px?Wb(e.unwrap()):e instanceof lx?Wb(e._def.innerType):[],Gb=class e extends gb{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==Zy.object)return z(t,{code:R.invalid_type,expected:Zy.object,received:t.parsedType}),ab;let n=this.discriminator,r=t.data[n],i=this.optionsMap.get(r);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(z(t,{code:R.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),ab)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){let i=new Map;for(let e of n){let n=Wb(e.shape[t]);if(!n.length)throw Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let r of n){if(i.has(r))throw Error(`Discriminator property ${String(t)} has duplicate value ${String(r)}`);i.set(r,e)}}return new e({typeName:mx.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...hb(r)})}};function Kb(e,t){let n=Qy(e),r=Qy(t);if(e===t)return{valid:!0,data:e};if(n===Zy.object&&r===Zy.object){let n=Yy.objectKeys(t),r=Yy.objectKeys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=Kb(e[n],t[n]);if(!r.valid)return{valid:!1};i[n]=r.data}return{valid:!0,data:i}}else if(n===Zy.array&&r===Zy.array){if(e.length!==t.length)return{valid:!1};let n=[];for(let r=0;r{if(cb(e)||cb(r))return ab;let i=Kb(e.value,r.value);return i.valid?((lb(e)||lb(r))&&t.dirty(),{status:t.value,value:i.data}):(z(n,{code:R.invalid_intersection_types}),ab)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([e,t])=>r(e,t)):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};qb.create=(e,t,n)=>new qb({left:e,right:t,typeName:mx.ZodIntersection,...hb(n)});var Jb=class e extends gb{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==Zy.array)return z(n,{code:R.invalid_type,expected:Zy.array,received:n.parsedType}),ab;if(n.data.lengththis._def.items.length&&(z(n,{code:R.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),t.dirty());let r=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new pb(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(r).then(e=>ib.mergeArray(t,e)):ib.mergeArray(t,r)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};Jb.create=(e,t)=>{if(!Array.isArray(e))throw Error(`You must pass an array of schemas to z.tuple([ ... ])`);return new Jb({items:e,typeName:mx.ZodTuple,rest:null,...hb(t)})};var Yb=class e extends gb{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==Zy.object)return z(n,{code:R.invalid_type,expected:Zy.object,received:n.parsedType}),ab;let r=[],i=this._def.keyType,a=this._def.valueType;for(let e in n.data)r.push({key:i._parse(new pb(n,e,n.path,e)),value:a._parse(new pb(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?ib.mergeObjectAsync(t,r):ib.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof gb?new e({keyType:t,valueType:n,typeName:mx.ZodRecord,...hb(r)}):new e({keyType:Ob.create(),valueType:t,typeName:mx.ZodRecord,...hb(n)})}},Xb=class extends gb{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==Zy.map)return z(n,{code:R.invalid_type,expected:Zy.map,received:n.parsedType}),ab;let r=this._def.keyType,i=this._def.valueType,a=[...n.data.entries()].map(([e,t],a)=>({key:r._parse(new pb(n,e,n.path,[a,`key`])),value:i._parse(new pb(n,t,n.path,[a,`value`]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of a){let r=await n.key,i=await n.value;if(r.status===`aborted`||i.status===`aborted`)return ab;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}})}else{let e=new Map;for(let n of a){let r=n.key,i=n.value;if(r.status===`aborted`||i.status===`aborted`)return ab;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}}};Xb.create=(e,t,n)=>new Xb({valueType:t,keyType:e,typeName:mx.ZodMap,...hb(n)});var Zb=class e extends gb{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==Zy.set)return z(n,{code:R.invalid_type,expected:Zy.set,received:n.parsedType}),ab;let r=this._def;r.minSize!==null&&n.data.sizer.maxSize.value&&(z(n,{code:R.too_big,maximum:r.maxSize.value,type:`set`,inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let i=this._def.valueType;function a(e){let n=new Set;for(let r of e){if(r.status===`aborted`)return ab;r.status===`dirty`&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let o=[...n.data.values()].map((e,t)=>i._parse(new pb(n,e,n.path,t)));return n.common.async?Promise.all(o).then(e=>a(e)):a(o)}min(t,n){return new e({...this._def,minSize:{value:t,message:fb.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:fb.toString(n)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};Zb.create=(e,t)=>new Zb({valueType:e,minSize:null,maxSize:null,typeName:mx.ZodSet,...hb(t)});var Qb=class e extends gb{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==Zy.function)return z(t,{code:R.invalid_type,expected:Zy.function,received:t.parsedType}),ab;function n(e,n){return rb({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,nb(),eb].filter(e=>!!e),issueData:{code:R.invalid_arguments,argumentsError:n}})}function r(e,n){return rb({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,nb(),eb].filter(e=>!!e),issueData:{code:R.invalid_return_type,returnTypeError:n}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof ix){let e=this;return sb(async function(...t){let o=new $y([]),s=await e._def.args.parseAsync(t,i).catch(e=>{throw o.addIssue(n(t,e)),o}),c=await Reflect.apply(a,this,s);return await e._def.returns._def.type.parseAsync(c,i).catch(e=>{throw o.addIssue(r(c,e)),o})})}else{let e=this;return sb(function(...t){let o=e._def.args.safeParse(t,i);if(!o.success)throw new $y([n(t,o.error)]);let s=Reflect.apply(a,this,o.data),c=e._def.returns.safeParse(s,i);if(!c.success)throw new $y([r(s,c.error)]);return c.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:Jb.create(t).rest(Lb.create())})}returns(t){return new e({...this._def,returns:t})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(t,n,r){return new e({args:t||Jb.create([]).rest(Lb.create()),returns:n||Lb.create(),typeName:mx.ZodFunction,...hb(r)})}},$b=class extends gb{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};$b.create=(e,t)=>new $b({getter:e,typeName:mx.ZodLazy,...hb(t)});var ex=class extends gb{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return z(t,{received:t.data,code:R.invalid_literal,expected:this._def.value}),ab}return{status:`valid`,value:e.data}}get value(){return this._def.value}};ex.create=(e,t)=>new ex({value:e,typeName:mx.ZodLiteral,...hb(t)});function tx(e,t){return new nx({values:e,typeName:mx.ZodEnum,...hb(t)})}var nx=class e extends gb{_parse(e){if(typeof e.data!=`string`){let t=this._getOrReturnCtx(e),n=this._def.values;return z(t,{expected:Yy.joinValues(n),received:t.parsedType,code:R.invalid_type}),ab}if(this._cache||=new Set(this._def.values),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return z(t,{received:t.data,code:R.invalid_enum_value,options:n}),ab}return sb(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(t,n=this._def){return e.create(t,{...this._def,...n})}exclude(t,n=this._def){return e.create(this.options.filter(e=>!t.includes(e)),{...this._def,...n})}};nx.create=tx;var rx=class extends gb{_parse(e){let t=Yy.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==Zy.string&&n.parsedType!==Zy.number){let e=Yy.objectValues(t);return z(n,{expected:Yy.joinValues(e),received:n.parsedType,code:R.invalid_type}),ab}if(this._cache||=new Set(Yy.getValidEnumValues(this._def.values)),!this._cache.has(e.data)){let e=Yy.objectValues(t);return z(n,{received:n.data,code:R.invalid_enum_value,options:e}),ab}return sb(e.data)}get enum(){return this._def.values}};rx.create=(e,t)=>new rx({values:e,typeName:mx.ZodNativeEnum,...hb(t)});var ix=class extends gb{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==Zy.promise&&t.common.async===!1?(z(t,{code:R.invalid_type,expected:Zy.promise,received:t.parsedType}),ab):sb((t.parsedType===Zy.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}};ix.create=(e,t)=>new ix({type:e,typeName:mx.ZodPromise,...hb(t)});var ax=class extends gb{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===mx.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=this._def.effect||null,i={addIssue:e=>{z(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(i.addIssue=i.addIssue.bind(i),r.type===`preprocess`){let e=r.transform(n.data,i);if(n.common.async)return Promise.resolve(e).then(async e=>{if(t.value===`aborted`)return ab;let r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return r.status===`aborted`?ab:r.status===`dirty`||t.value===`dirty`?ob(r.value):r});{if(t.value===`aborted`)return ab;let r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return r.status===`aborted`?ab:r.status===`dirty`||t.value===`dirty`?ob(r.value):r}}if(r.type===`refinement`){let e=e=>{let t=r.refinement(e,i);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(`Async refinement encountered during synchronous parse operation. Use .parseAsync instead.`);return e};if(n.common.async===!1){let r=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return r.status===`aborted`?ab:(r.status===`dirty`&&t.dirty(),e(r.value),{status:t.value,value:r.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(n=>n.status===`aborted`?ab:(n.status===`dirty`&&t.dirty(),e(n.value).then(()=>({status:t.value,value:n.value}))))}if(r.type===`transform`)if(n.common.async===!1){let e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!ub(e))return ab;let a=r.transform(e.value,i);if(a instanceof Promise)throw Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);return{status:t.value,value:a}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(e=>ub(e)?Promise.resolve(r.transform(e.value,i)).then(e=>({status:t.value,value:e})):ab);Yy.assertNever(r)}};ax.create=(e,t,n)=>new ax({schema:e,typeName:mx.ZodEffects,effect:t,...hb(n)}),ax.createWithPreprocess=(e,t,n)=>new ax({schema:t,effect:{type:`preprocess`,transform:e},typeName:mx.ZodEffects,...hb(n)});var ox=class extends gb{_parse(e){return this._getType(e)===Zy.undefined?sb(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};ox.create=(e,t)=>new ox({innerType:e,typeName:mx.ZodOptional,...hb(t)});var sx=class extends gb{_parse(e){return this._getType(e)===Zy.null?sb(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};sx.create=(e,t)=>new sx({innerType:e,typeName:mx.ZodNullable,...hb(t)});var cx=class extends gb{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===Zy.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};cx.create=(e,t)=>new cx({innerType:e,typeName:mx.ZodDefault,defaultValue:typeof t.default==`function`?t.default:()=>t.default,...hb(t)});var lx=class extends gb{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return db(r)?r.then(e=>({status:`valid`,value:e.status===`valid`?e.value:this._def.catchValue({get error(){return new $y(n.common.issues)},input:n.data})})):{status:`valid`,value:r.status===`valid`?r.value:this._def.catchValue({get error(){return new $y(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};lx.create=(e,t)=>new lx({innerType:e,typeName:mx.ZodCatch,catchValue:typeof t.catch==`function`?t.catch:()=>t.catch,...hb(t)});var ux=class extends gb{_parse(e){if(this._getType(e)!==Zy.nan){let t=this._getOrReturnCtx(e);return z(t,{code:R.invalid_type,expected:Zy.nan,received:t.parsedType}),ab}return{status:`valid`,value:e.data}}};ux.create=e=>new ux({typeName:mx.ZodNaN,...hb(e)});var dx=class extends gb{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}},fx=class e extends gb{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?ab:e.status===`dirty`?(t.dirty(),ob(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})();{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?ab:e.status===`dirty`?(t.dirty(),{status:`dirty`,value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(t,n){return new e({in:t,out:n,typeName:mx.ZodPipeline})}},px=class extends gb{_parse(e){let t=this._def.innerType._parse(e),n=e=>(ub(e)&&(e.value=Object.freeze(e.value)),e);return db(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}};px.create=(e,t)=>new px({innerType:e,typeName:mx.ZodReadonly,...hb(t)}),Hb.lazycreate;var mx;(function(e){e.ZodString=`ZodString`,e.ZodNumber=`ZodNumber`,e.ZodNaN=`ZodNaN`,e.ZodBigInt=`ZodBigInt`,e.ZodBoolean=`ZodBoolean`,e.ZodDate=`ZodDate`,e.ZodSymbol=`ZodSymbol`,e.ZodUndefined=`ZodUndefined`,e.ZodNull=`ZodNull`,e.ZodAny=`ZodAny`,e.ZodUnknown=`ZodUnknown`,e.ZodNever=`ZodNever`,e.ZodVoid=`ZodVoid`,e.ZodArray=`ZodArray`,e.ZodObject=`ZodObject`,e.ZodUnion=`ZodUnion`,e.ZodDiscriminatedUnion=`ZodDiscriminatedUnion`,e.ZodIntersection=`ZodIntersection`,e.ZodTuple=`ZodTuple`,e.ZodRecord=`ZodRecord`,e.ZodMap=`ZodMap`,e.ZodSet=`ZodSet`,e.ZodFunction=`ZodFunction`,e.ZodLazy=`ZodLazy`,e.ZodLiteral=`ZodLiteral`,e.ZodEnum=`ZodEnum`,e.ZodEffects=`ZodEffects`,e.ZodNativeEnum=`ZodNativeEnum`,e.ZodOptional=`ZodOptional`,e.ZodNullable=`ZodNullable`,e.ZodDefault=`ZodDefault`,e.ZodCatch=`ZodCatch`,e.ZodPromise=`ZodPromise`,e.ZodBranded=`ZodBranded`,e.ZodPipeline=`ZodPipeline`,e.ZodReadonly=`ZodReadonly`})(mx||={});var hx=Ob.create,gx=kb.create;ux.create,Ab.create;var _x=jb.create;Mb.create,Nb.create,Pb.create,Fb.create;var vx=Ib.create;Lb.create,Rb.create,zb.create;var yx=Bb.create,bx=Hb.create;Hb.strictCreate;var xx=Ub.create;Gb.create,qb.create,Jb.create;var Sx=Yb.create;Xb.create,Zb.create,Qb.create,$b.create;var Cx=ex.create,wx=nx.create;rx.create,ix.create,ax.create,ox.create,sx.create;var Tx=ax.createWithPreprocess;fx.create;var Ex={string:(e=>Ob.create({...e,coerce:!0})),number:(e=>kb.create({...e,coerce:!0})),boolean:(e=>jb.create({...e,coerce:!0})),bigint:(e=>Ab.create({...e,coerce:!0})),date:(e=>Mb.create({...e,coerce:!0}))},Dx=class extends Error{constructor(e,t=`UNKNOWN_ERROR`){super(e),this.name=this.constructor.name,this.code=t,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},Ox=class extends Dx{constructor(e,t){super(e,`VALIDATION_ERROR`),this.details=t}},kx=class extends Dx{constructor(e,t){super(e,`DATA_ERROR`),this.path=t}},Ax=class extends Dx{constructor(e,t,n){super(e,`EXPRESSION_ERROR`),this.expression=t,this.details=n}},jx=class extends Dx{constructor(e){super(e,`STATE_ERROR`)}};function Mx(e){return e&&typeof e==`object`&&`value`in e&&`peek`in e}function Nx(e,t){return{name:e.name,returnType:e.returnType,schema:e.schema,execute:t}}var Px=class{constructor(e,t,n=[],r){this.id=e;let i=new Map;for(let e of t)i.set(e.name,e);this.components=i;let a=new Map;for(let e of n)a.set(e.name,e);this.functions=a,this.themeSchema=r,this.invoker=(e,t,n,r)=>{let i=this.functions.get(e);if(!i)throw new Ax(`Function not found in catalog '${this.id}': ${e}`,e);try{let e=i.schema.parse(t);return i.execute(e,n,r)}catch(t){throw t?.name===`ZodError`||t instanceof $y?new Ax(`Validation failed for function '${e}': ${t.message}`,e,t.errors??t.issues):t}}}},Fx=class{constructor(){this.listeners=new Set}subscribe(e){return this.listeners.add(e),{unsubscribe:()=>this.listeners.delete(e)}}async emit(e){for(let t of this.listeners)try{await t(e)}catch(e){console.error(`EventEmitter error:`,e)}}dispose(){this.listeners.clear()}},Ix=Symbol.for(`preact-signals`);function Lx(){if(Ux>1)Ux--;else{var e,t=!1;for((function(){var e=qx;for(qx=void 0;e!==void 0;){var t=e.S;if(t.v===e.v)for(var n=t.t;n!==void 0;n=n.x)n.i===e.i&&(n.i=t.i);e=e.o}})();Hx!==void 0;){var n=Hx;for(Hx=void 0,Wx++;n!==void 0;){var r=n.u;if(n.u=void 0,n.f&=-3,!(8&n.f)&&Qx(n))try{n.c()}catch(n){t||=(e=n,!0)}n=r}}if(Wx=0,Ux--,t)throw e}}function Rx(e){if(Ux>0)return e();Kx=++Gx,Ux++;try{return e()}finally{Lx()}}var zx,Bx=void 0;function Vx(e){var t=Bx,n=zx;Bx=void 0,zx=void 0;try{return e()}finally{Bx=t,zx=n}}var Hx=void 0,Ux=0,Wx=0,Gx=0,Kx=0,qx=void 0,Jx=0;function Yx(e){if(Bx!==void 0){var t=e.n;if(t===void 0||t.t!==Bx)return t={i:0,S:e,p:Bx.s,n:void 0,t:Bx,e:void 0,x:void 0,r:t},Bx.s!==void 0&&(Bx.s.n=t),Bx.s=t,e.n=t,32&Bx.f&&e.S(t),t;if(t.i===-1)return t.i=0,t.n!==void 0&&(t.n.p=t.p,t.p!==void 0&&(t.p.n=t.n),t.p=Bx.s,t.n=void 0,Bx.s.n=t,Bx.s=t),t}}function Xx(e,t){this.v=e,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=t?.watched,this.Z=t?.unwatched,this.name=t?.name}Xx.prototype.brand=Ix,Xx.prototype.h=function(){return!0},Xx.prototype.S=function(e){var t=this,n=this.t;n!==e&&e.e===void 0&&(e.x=n,this.t=e,n===void 0?Vx(function(){var e;(e=t.W)==null||e.call(t)}):n.e=e)},Xx.prototype.U=function(e){var t=this;if(this.t!==void 0){var n=e.e,r=e.x;n!==void 0&&(n.x=r,e.e=void 0),r!==void 0&&(r.e=n,e.x=void 0),e===this.t&&(this.t=r,r===void 0&&Vx(function(){var e;(e=t.Z)==null||e.call(t)}))}},Xx.prototype.subscribe=function(e){var t=this;return sS(function(){var n=t.value;Vx(function(){return e(n)})},{name:`sub`})},Xx.prototype.valueOf=function(){return this.value},Xx.prototype.toString=function(){return this.value+``},Xx.prototype.toJSON=function(){return this.value},Xx.prototype.peek=function(){var e=this;return Vx(function(){return e.value})},Object.defineProperty(Xx.prototype,"value",{get:function(){var e=Yx(this);return e!==void 0&&(e.i=this.i),this.v},set:function(e){if(e!==this.v){if(Wx>100)throw Error(`Cycle detected`);(function(e){Ux!==0&&Wx===0&&e.l!==Kx&&(e.l=Kx,qx={S:e,v:e.v,i:e.i,o:qx})})(this),this.v=e,this.i++,Jx++,Ux++;try{for(var t=this.t;t!==void 0;t=t.x)t.t.N()}finally{Lx()}}}});function Zx(e,t){return new Xx(e,t)}function Qx(e){for(var t=e.s;t!==void 0;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function $x(e){for(var t=e.s;t!==void 0;t=t.n){var n=t.S.n;if(n!==void 0&&(t.r=n),t.S.n=t,t.i=-1,t.n===void 0){e.s=t;break}}}function eS(e){for(var t=e.s,n=void 0;t!==void 0;){var r=t.p;t.i===-1?(t.S.U(t),r!==void 0&&(r.n=t.n),t.n!==void 0&&(t.n.p=r)):n=t,t.S.n=t.r,t.r!==void 0&&(t.r=void 0),t=r}e.s=n}function tS(e,t){Xx.call(this,void 0,t),this.x=e,this.s=void 0,this.g=Jx-1,this.f=4}tS.prototype=new Xx,tS.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===Jx))return!0;if(this.g=Jx,this.f|=1,this.i>0&&!Qx(this))return this.f&=-2,!0;var e=Bx;try{$x(this),Bx=this;var t=this.x();(16&this.f||this.v!==t||this.i===0)&&(this.v=t,this.f&=-17,this.i++)}catch(e){this.v=e,this.f|=16,this.i++}return Bx=e,eS(this),this.f&=-2,!0},tS.prototype.S=function(e){if(this.t===void 0){this.f|=36;for(var t=this.s;t!==void 0;t=t.n)t.S.S(t)}Xx.prototype.S.call(this,e)},tS.prototype.U=function(e){if(this.t!==void 0&&(Xx.prototype.U.call(this,e),this.t===void 0)){this.f&=-33;for(var t=this.s;t!==void 0;t=t.n)t.S.U(t)}},tS.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var e=this.t;e!==void 0;e=e.x)e.t.N()}},Object.defineProperty(tS.prototype,"value",{get:function(){if(1&this.f)throw Error(`Cycle detected`);var e=Yx(this);if(this.h(),e!==void 0&&(e.i=this.i),16&this.f)throw this.v;return this.v}});function nS(e,t){return new tS(e,t)}function rS(e){var t=e.m;if(e.m=void 0,typeof t==`function`){Ux++;var n=Bx;Bx=void 0;try{t()}catch(t){throw e.f&=-2,e.f|=8,iS(e),t}finally{Bx=n,Lx()}}}function iS(e){for(var t=e.s;t!==void 0;t=t.n)t.S.U(t);e.x=void 0,e.s=void 0,rS(e)}function aS(e){if(Bx!==this)throw Error(`Out-of-order effect`);eS(this),Bx=e,this.f&=-2,8&this.f&&iS(this),Lx()}function oS(e,t){this.x=e,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=t?.name,zx&&zx.push(this)}oS.prototype.c=function(){var e=this.S();try{if(8&this.f||this.x===void 0)return;var t=this.x();typeof t==`function`&&(this.m=t)}finally{e()}},oS.prototype.S=function(){if(1&this.f)throw Error(`Cycle detected`);this.f|=1,this.f&=-9,rS(this),$x(this),Ux++;var e=Bx;return Bx=this,aS.bind(this,e)},oS.prototype.N=function(){2&this.f||(this.f|=2,this.u=Hx,Hx=this)},oS.prototype.d=function(){this.f|=8,1&this.f||iS(this)},oS.prototype.dispose=function(){this.d()};function sS(e,t){var n=new oS(e,t);try{n.c()}catch(e){throw n.d(),e}var r=n.d.bind(n);return r[Symbol.dispose]=r,r}function cS(e){return/^\d+$/.test(e)}var lS=class{constructor(e={}){this.data={},this.signals=new Map,this.subscriptions=new Set,this.data=e}getSignal(e){let t=this.normalizePath(e);return this.signals.has(t)||this.signals.set(t,Zx(this.get(t))),this.signals.get(t)}set(e,t){if(e==null)throw new kx(`Path cannot be null or undefined.`);if(e===`/`||e===``)return this.data=t,this.notifyAllSignals(),this;let n=this.parsePath(e),r=n.pop();this.data||={};let i=this.data;for(let t=0;t{let e=n.value;i=e,r||t(e)});return r=!1,this.subscriptions.add(a),{get value(){return i},unsubscribe:()=>{a(),this.subscriptions.delete(a)}}}dispose(){for(let e of this.subscriptions)e();this.subscriptions.clear(),this.signals.clear()}normalizePath(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e||`/`}parsePath(e){return e.split(`/`).filter(e=>e.length>0)}notifySignals(e){let t=this.normalizePath(e);Rx(()=>{this.updateSignal(t);let e=t;for(;e!==`/`&&e!==``;)e=e.substring(0,e.lastIndexOf(`/`))||`/`,this.updateSignal(e);for(let e of this.signals.keys())this.isDescendant(e,t)&&this.updateSignal(e)})}updateSignal(e){let t=this.signals.get(e);if(t){let n=this.get(e);Array.isArray(n)?t.value=[...n]:typeof n==`object`&&n?t.value={...n}:t.value=n}}notifyAllSignals(){Rx(()=>{for(let e of this.signals.keys())this.updateSignal(e)})}isDescendant(e,t){return t===`/`||t===``?e!==`/`:e.startsWith(t+`/`)}},uS=class{constructor(){this.components=new Map,this._onCreated=new Fx,this._onDeleted=new Fx,this.onCreated=this._onCreated,this.onDeleted=this._onDeleted}get(e){return this.components.get(e)}get entries(){return this.components.entries()}addComponent(e){if(this.components.has(e.id))throw new jx(`Component with id '${e.id}' already exists.`);this.components.set(e.id,e),this._onCreated.emit(e)}removeComponent(e){let t=this.components.get(e);t&&(this.components.delete(e),t.dispose(),this._onDeleted.emit(e))}dispose(){for(let e of this.components.values())e.dispose();this.components.clear(),this._onCreated.dispose(),this._onDeleted.dispose()}},dS=bx({name:hx().describe(`The name of the action, taken from the component's action.event.name property.`),surfaceId:hx().describe(`The id of the surface where the event originated.`),sourceComponentId:hx().describe(`The id of the component that triggered the event.`),timestamp:hx().datetime().describe(`An ISO 8601 timestamp of when the event occurred.`),context:Sx(vx()).describe(`A JSON object containing the key-value pairs from the component's action.event.context, after resolving all data bindings.`)}).strict(),fS=xx([bx({code:Cx(`VALIDATION_FAILED`),surfaceId:hx().describe(`The id of the surface where the error occurred.`),path:hx().describe(`The JSON pointer to the field that failed validation (e.g. '/components/0/text').`),message:hx().describe(`A short one or two sentence description of why validation failed.`)}).strict(),bx({code:hx().refine(e=>e!==`VALIDATION_FAILED`),message:hx().describe(`A short one or two sentence description of why the error occurred.`),surfaceId:hx().describe(`The id of the surface where the error occurred.`)}).passthrough()]);bx({version:Cx(`v0.9`)}).and(xx([bx({action:dS}),bx({error:fS})])),bx({version:Cx(`v0.9`),surfaces:Sx(bx({}).passthrough()).describe(`A map of surface IDs to their current data models.`)}).strict();var pS=class{constructor(e,t,n={},r=!1){this.id=e,this.catalog=t,this.theme=n,this.sendDataModel=r,this._onAction=new Fx,this._onError=new Fx,this.onAction=this._onAction,this.onError=this._onError,this.dataModel=new lS({}),this.componentsModel=new uS}async dispatchAction(e,t){if(e&&typeof e==`object`&&`event`in e&&e.event){let n={name:e.event.name,surfaceId:this.id,sourceComponentId:t,timestamp:new Date().toISOString(),context:e.event.context||{}},r=dS.safeParse(n);r.success?await this._onAction.emit(r.data):console.error(`A2UI: Invalid action payload dispatched.`,r.error.format())}}async dispatchError(e){await this._onError.emit({...e,surfaceId:this.id})}dispose(){this.dataModel.dispose(),this.componentsModel.dispose(),this._onAction.dispose(),this._onError.dispose()}},mS=class{constructor(){this.surfaces=new Map,this.surfaceUnsubscribers=new Map,this._onSurfaceCreated=new Fx,this._onSurfaceDeleted=new Fx,this._onAction=new Fx,this.onSurfaceCreated=this._onSurfaceCreated,this.onSurfaceDeleted=this._onSurfaceDeleted,this.onAction=this._onAction}addSurface(e){if(this.surfaces.has(e.id)){console.warn(`Surface ${e.id} already exists. Ignoring.`);return}this.surfaces.set(e.id,e);let t=e.onAction.subscribe(e=>this._onAction.emit(e));this.surfaceUnsubscribers.set(e.id,t),this._onSurfaceCreated.emit(e)}deleteSurface(e){let t=this.surfaces.get(e);if(t){let n=this.surfaceUnsubscribers.get(e);n&&(n.unsubscribe(),this.surfaceUnsubscribers.delete(e)),this.surfaces.delete(e),t.dispose(),this._onSurfaceDeleted.emit(e)}}getSurface(e){return this.surfaces.get(e)}get surfacesMap(){return this.surfaces}dispose(){for(let e of Array.from(this.surfaces.keys()))this.deleteSurface(e);this._onSurfaceCreated.dispose(),this._onSurfaceDeleted.dispose(),this._onAction.dispose()}},hS=class{constructor(e,t,n){this.id=e,this.type=t,this._onUpdated=new Fx,this.onUpdated=this._onUpdated,this._properties=n}get properties(){return this._properties}set properties(e){this._properties=e,this._onUpdated.emit(this)}dispose(){this._onUpdated.dispose()}get componentTree(){return{id:this.id,type:this.type,...this._properties}}},gS=Symbol(`Let zodToJsonSchema decide on which parser to use`),_S={name:void 0,$refStrategy:`root`,basePath:[`#`],effectStrategy:`input`,pipeStrategy:`all`,dateStrategy:`format:date-time`,mapStrategy:`entries`,removeAdditionalStrategy:`passthrough`,allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:`definitions`,target:`jsonSchema7`,strictUnions:!1,definitions:{},errorMessages:!1,markdownDescription:!1,patternStrategy:`escape`,applyRegexFlags:!1,emailStrategy:`format:email`,base64Strategy:`contentEncoding:base64`,nameStrategy:`ref`,openAiAnyTypeName:`OpenAiAnyType`},vS=e=>typeof e==`string`?{..._S,name:e}:{..._S,...e},yS=e=>{let t=vS(e),n=t.name===void 0?t.basePath:[...t.basePath,t.definitionPath,t.name];return{...t,flags:{hasReferencedOpenAiAnyType:!1},currentPath:n,propertyPath:void 0,seen:new Map(Object.entries(t.definitions).map(([e,n])=>[n._def,{def:n._def,path:[...t.basePath,t.definitionPath,e],jsonSchema:void 0}]))}};function bS(e,t,n,r){r?.errorMessages&&n&&(e.errorMessage={...e.errorMessage,[t]:n})}function xS(e,t,n,r,i){e[t]=n,bS(e,t,r,i)}var SS=(e,t)=>{let n=0;for(;n{};function t(e){}e.assertIs=t;function n(e){throw Error()}e.assertNever=n,e.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},e.getValidEnumValues=t=>{let n=e.objectKeys(t).filter(e=>typeof t[t[e]]!=`number`),r={};for(let e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys=typeof Object.keys==`function`?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(let n of e)if(t(n))return n},e.isInteger=typeof Number.isInteger==`function`?e=>Number.isInteger(e):e=>typeof e==`number`&&Number.isFinite(e)&&Math.floor(e)===e;function r(e,t=` | `){return e.map(e=>typeof e==`string`?`'${e}'`:e).join(t)}e.joinValues=r,e.jsonStringifyReplacer=(e,t)=>typeof t==`bigint`?t.toString():t})(CS||={});var wS;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})(wS||={});var TS=CS.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),ES=e=>{switch(typeof e){case`undefined`:return TS.undefined;case`string`:return TS.string;case`number`:return Number.isNaN(e)?TS.nan:TS.number;case`boolean`:return TS.boolean;case`function`:return TS.function;case`bigint`:return TS.bigint;case`symbol`:return TS.symbol;case`object`:return Array.isArray(e)?TS.array:e===null?TS.null:e.then&&typeof e.then==`function`&&e.catch&&typeof e.catch==`function`?TS.promise:typeof Map<`u`&&e instanceof Map?TS.map:typeof Set<`u`&&e instanceof Set?TS.set:typeof Date<`u`&&e instanceof Date?TS.date:TS.object;default:return TS.unknown}},B=CS.arrayToEnum([`invalid_type`,`invalid_literal`,`custom`,`invalid_union`,`invalid_union_discriminator`,`invalid_enum_value`,`unrecognized_keys`,`invalid_arguments`,`invalid_return_type`,`invalid_date`,`invalid_string`,`too_small`,`too_big`,`invalid_intersection_types`,`not_multiple_of`,`not_finite`]),DS=class e extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=`ZodError`,this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`)i.unionErrors.map(r);else if(i.code===`invalid_return_type`)r(i.returnTypeError);else if(i.code===`invalid_arguments`)r(i.argumentsError);else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;re.message){let t=Object.create(null),n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};DS.create=e=>new DS(e);var OS=(e,t)=>{let n;switch(e.code){case B.invalid_type:n=e.received===TS.undefined?`Required`:`Expected ${e.expected}, received ${e.received}`;break;case B.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,CS.jsonStringifyReplacer)}`;break;case B.unrecognized_keys:n=`Unrecognized key(s) in object: ${CS.joinValues(e.keys,`, `)}`;break;case B.invalid_union:n=`Invalid input`;break;case B.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${CS.joinValues(e.options)}`;break;case B.invalid_enum_value:n=`Invalid enum value. Expected ${CS.joinValues(e.options)}, received '${e.received}'`;break;case B.invalid_arguments:n=`Invalid function arguments`;break;case B.invalid_return_type:n=`Invalid function return type`;break;case B.invalid_date:n=`Invalid date`;break;case B.invalid_string:typeof e.validation==`object`?`includes`in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position==`number`&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):`startsWith`in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:`endsWith`in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:CS.assertNever(e.validation):n=e.validation===`regex`?`Invalid`:`Invalid ${e.validation}`;break;case B.too_small:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at least`:`more than`} ${e.minimum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at least`:`over`} ${e.minimum} character(s)`:e.type===`number`||e.type===`bigint`?`Number must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${e.minimum}`:e.type===`date`?`Date must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(e.minimum))}`:`Invalid input`;break;case B.too_big:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at most`:`less than`} ${e.maximum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at most`:`under`} ${e.maximum} character(s)`:e.type===`number`?`Number must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`bigint`?`BigInt must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`date`?`Date must be ${e.exact?`exactly`:e.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(e.maximum))}`:`Invalid input`;break;case B.custom:n=`Invalid input`;break;case B.invalid_intersection_types:n=`Intersection results could not be merged`;break;case B.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case B.not_finite:n=`Number must be finite`;break;default:n=t.defaultError,CS.assertNever(e)}return{message:n}},kS=OS;function AS(){return kS}var jS=e=>{let{data:t,path:n,errorMaps:r,issueData:i}=e,a=[...n,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s=``,c=r.filter(e=>!!e).slice().reverse();for(let e of c)s=e(o,{data:t,defaultError:s}).message;return{...i,path:a,message:s}};function V(e,t){let n=AS(),r=jS({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===OS?void 0:OS].filter(e=>!!e)});e.common.issues.push(r)}var MS=class e{constructor(){this.value=`valid`}dirty(){this.value===`valid`&&(this.value=`dirty`)}abort(){this.value!==`aborted`&&(this.value=`aborted`)}static mergeArray(e,t){let n=[];for(let r of t){if(r.status===`aborted`)return NS;r.status===`dirty`&&e.dirty(),n.push(r.value)}return{status:e.value,value:n}}static async mergeObjectAsync(t,n){let r=[];for(let e of n){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return e.mergeObjectSync(t,r)}static mergeObjectSync(e,t){let n={};for(let r of t){let{key:t,value:i}=r;if(t.status===`aborted`||i.status===`aborted`)return NS;t.status===`dirty`&&e.dirty(),i.status===`dirty`&&e.dirty(),t.value!==`__proto__`&&(i.value!==void 0||r.alwaysSet)&&(n[t.value]=i.value)}return{status:e.value,value:n}}},NS=Object.freeze({status:`aborted`}),PS=e=>({status:`dirty`,value:e}),FS=e=>({status:`valid`,value:e}),IS=e=>e.status===`aborted`,LS=e=>e.status===`dirty`,RS=e=>e.status===`valid`,zS=e=>typeof Promise<`u`&&e instanceof Promise,BS;(function(e){e.errToObj=e=>typeof e==`string`?{message:e}:e||{},e.toString=e=>typeof e==`string`?e:e?.message})(BS||={});var VS=class{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},HS=(e,t)=>{if(RS(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(`Validation failed but no issues detected.`);return{success:!1,get error(){if(this._error)return this._error;let t=new DS(e.common.issues);return this._error=t,this._error}}};function US(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return t.code===`invalid_enum_value`?{message:a??i.defaultError}:i.data===void 0?{message:a??r??i.defaultError}:t.code===`invalid_type`?{message:a??n??i.defaultError}:{message:i.defaultError}},description:i}}var WS=class{get description(){return this._def.description}_getType(e){return ES(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:ES(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new MS,ctx:{common:e.parent.common,data:e.data,parsedType:ES(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(zS(t))throw Error(`Synchronous parse encountered promise.`);return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ES(e)};return HS(n,this._parseSync({data:e,path:n.path,parent:n}))}"~validate"(e){let t={common:{issues:[],async:!!this[`~standard`].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ES(e)};if(!this[`~standard`].async)try{let n=this._parseSync({data:e,path:[],parent:t});return RS(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(`encountered`)&&(this[`~standard`].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>RS(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ES(e)},r=this._parse({data:e,path:n.path,parent:n});return HS(n,await(zS(r)?r:Promise.resolve(r)))}refine(e,t){let n=e=>typeof t==`string`||t===void 0?{message:t}:typeof t==`function`?t(e):t;return this._refinement((t,r)=>{let i=e(t),a=()=>r.addIssue({code:B.custom,...n(t)});return typeof Promise<`u`&&i instanceof Promise?i.then(e=>e?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(e,t){return this._refinement((n,r)=>e(n)?!0:(r.addIssue(typeof t==`function`?t(n,r):t),!1))}_refinement(e){return new CC({schema:this,typeName:H.ZodEffects,effect:{type:`refinement`,refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[`~standard`]={version:1,vendor:`zod`,validate:e=>this[`~validate`](e)}}optional(){return wC.create(this,this._def)}nullable(){return TC.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return oC.create(this)}promise(){return SC.create(this,this._def)}or(e){return lC.create([this,e],this._def)}and(e){return fC.create(this,e,this._def)}transform(e){return new CC({...US(this._def),schema:this,typeName:H.ZodEffects,effect:{type:`transform`,transform:e}})}default(e){let t=typeof e==`function`?e:()=>e;return new EC({...US(this._def),innerType:this,defaultValue:t,typeName:H.ZodDefault})}brand(){return new kC({typeName:H.ZodBranded,type:this,...US(this._def)})}catch(e){let t=typeof e==`function`?e:()=>e;return new DC({...US(this._def),innerType:this,catchValue:t,typeName:H.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return AC.create(this,e)}readonly(){return jC.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},jee=/^c[^\s-]{8,}$/i,Mee=/^[0-9a-z]+$/,Nee=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Pee=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Fee=/^[a-z0-9_-]{21}$/i,Iee=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Lee=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Ree=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,zee=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,GS,Bee=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Vee=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,Hee=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Uee=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Wee=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Gee=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,KS=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`,Kee=RegExp(`^${KS}$`);function qS(e){let t=`[0-5]\\d`;e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision??(t=`${t}(\\.\\d+)?`);let n=e.precision?`+`:`?`;return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function qee(e){return RegExp(`^${qS(e)}$`)}function Jee(e){let t=`${KS}T${qS(e)}`,n=[];return n.push(e.local?`Z?`:`Z`),e.offset&&n.push(`([+-]\\d{2}:?\\d{2})`),t=`${t}(${n.join(`|`)})`,RegExp(`^${t}$`)}function Yee(e,t){return!!((t===`v4`||!t)&&Bee.test(e)||(t===`v6`||!t)&&Hee.test(e))}function Xee(e,t){if(!Iee.test(e))return!1;try{let[n]=e.split(`.`);if(!n)return!1;let r=n.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(n.length+(4-n.length%4)%4,`=`),i=JSON.parse(atob(r));return!(typeof i!=`object`||!i||`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&i.alg!==t)}catch{return!1}}function Zee(e,t){return!!((t===`v4`||!t)&&Vee.test(e)||(t===`v6`||!t)&&Uee.test(e))}var JS=class e extends WS{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==TS.string){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:TS.string,received:t.parsedType}),NS}let t=new MS,n;for(let r of this._def.checks)if(r.kind===`min`)e.data.lengthr.value&&(n=this._getOrReturnCtx(e,n),V(n,{code:B.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),t.dirty());else if(r.kind===`length`){let i=e.data.length>r.value,a=e.data.lengthe.test(t),{validation:t,code:B.invalid_string,...BS.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(e){return this._addCheck({kind:`email`,...BS.errToObj(e)})}url(e){return this._addCheck({kind:`url`,...BS.errToObj(e)})}emoji(e){return this._addCheck({kind:`emoji`,...BS.errToObj(e)})}uuid(e){return this._addCheck({kind:`uuid`,...BS.errToObj(e)})}nanoid(e){return this._addCheck({kind:`nanoid`,...BS.errToObj(e)})}cuid(e){return this._addCheck({kind:`cuid`,...BS.errToObj(e)})}cuid2(e){return this._addCheck({kind:`cuid2`,...BS.errToObj(e)})}ulid(e){return this._addCheck({kind:`ulid`,...BS.errToObj(e)})}base64(e){return this._addCheck({kind:`base64`,...BS.errToObj(e)})}base64url(e){return this._addCheck({kind:`base64url`,...BS.errToObj(e)})}jwt(e){return this._addCheck({kind:`jwt`,...BS.errToObj(e)})}ip(e){return this._addCheck({kind:`ip`,...BS.errToObj(e)})}cidr(e){return this._addCheck({kind:`cidr`,...BS.errToObj(e)})}datetime(e){return typeof e==`string`?this._addCheck({kind:`datetime`,precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:`datetime`,precision:e?.precision===void 0?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...BS.errToObj(e?.message)})}date(e){return this._addCheck({kind:`date`,message:e})}time(e){return typeof e==`string`?this._addCheck({kind:`time`,precision:null,message:e}):this._addCheck({kind:`time`,precision:e?.precision===void 0?null:e?.precision,...BS.errToObj(e?.message)})}duration(e){return this._addCheck({kind:`duration`,...BS.errToObj(e)})}regex(e,t){return this._addCheck({kind:`regex`,regex:e,...BS.errToObj(t)})}includes(e,t){return this._addCheck({kind:`includes`,value:e,position:t?.position,...BS.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:`startsWith`,value:e,...BS.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:`endsWith`,value:e,...BS.errToObj(t)})}min(e,t){return this._addCheck({kind:`min`,value:e,...BS.errToObj(t)})}max(e,t){return this._addCheck({kind:`max`,value:e,...BS.errToObj(t)})}length(e,t){return this._addCheck({kind:`length`,value:e,...BS.errToObj(t)})}nonempty(e){return this.min(1,BS.errToObj(e))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:`trim`}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toLowerCase`}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toUpperCase`}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind===`datetime`)}get isDate(){return!!this._def.checks.find(e=>e.kind===`date`)}get isTime(){return!!this._def.checks.find(e=>e.kind===`time`)}get isDuration(){return!!this._def.checks.find(e=>e.kind===`duration`)}get isEmail(){return!!this._def.checks.find(e=>e.kind===`email`)}get isURL(){return!!this._def.checks.find(e=>e.kind===`url`)}get isEmoji(){return!!this._def.checks.find(e=>e.kind===`emoji`)}get isUUID(){return!!this._def.checks.find(e=>e.kind===`uuid`)}get isNANOID(){return!!this._def.checks.find(e=>e.kind===`nanoid`)}get isCUID(){return!!this._def.checks.find(e=>e.kind===`cuid`)}get isCUID2(){return!!this._def.checks.find(e=>e.kind===`cuid2`)}get isULID(){return!!this._def.checks.find(e=>e.kind===`ulid`)}get isIP(){return!!this._def.checks.find(e=>e.kind===`ip`)}get isCIDR(){return!!this._def.checks.find(e=>e.kind===`cidr`)}get isBase64(){return!!this._def.checks.find(e=>e.kind===`base64`)}get isBase64url(){return!!this._def.checks.find(e=>e.kind===`base64url`)}get minLength(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew JS({checks:[],typeName:H.ZodString,coerce:e?.coerce??!1,...US(e)});function Qee(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=(t.toString().split(`.`)[1]||``).length,i=n>r?n:r;return Number.parseInt(e.toFixed(i).replace(`.`,``))%Number.parseInt(t.toFixed(i).replace(`.`,``))/10**i}var YS=class e extends WS{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==TS.number){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:TS.number,received:t.parsedType}),NS}let t,n=new MS;for(let r of this._def.checks)r.kind===`int`?CS.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),V(t,{code:B.invalid_type,expected:`integer`,received:`float`,message:r.message}),n.dirty()):r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),V(t,{code:B.too_big,maximum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):r.kind===`multipleOf`?Qee(e.data,r.value)!==0&&(t=this._getOrReturnCtx(e,t),V(t,{code:B.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):r.kind===`finite`?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),V(t,{code:B.not_finite,message:r.message}),n.dirty()):CS.assertNever(r);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit(`min`,e,!0,BS.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,BS.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,BS.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,BS.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:BS.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(e){return this._addCheck({kind:`int`,message:BS.toString(e)})}positive(e){return this._addCheck({kind:`min`,value:0,inclusive:!1,message:BS.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:0,inclusive:!1,message:BS.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:0,inclusive:!0,message:BS.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:0,inclusive:!0,message:BS.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:BS.toString(t)})}finite(e){return this._addCheck({kind:`finite`,message:BS.toString(e)})}safe(e){return this._addCheck({kind:`min`,inclusive:!0,value:-(2**53-1),message:BS.toString(e)})._addCheck({kind:`max`,inclusive:!0,value:2**53-1,message:BS.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuee.kind===`int`||e.kind===`multipleOf`&&CS.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(n.kind===`finite`||n.kind===`int`||n.kind===`multipleOf`)return!0;else n.kind===`min`?(t===null||n.value>t)&&(t=n.value):n.kind===`max`&&(e===null||n.valuenew YS({checks:[],typeName:H.ZodNumber,coerce:e?.coerce||!1,...US(e)});var XS=class e extends WS{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==TS.bigint)return this._getInvalidInput(e);let t,n=new MS;for(let r of this._def.checks)r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),V(t,{code:B.too_big,type:`bigint`,maximum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):r.kind===`multipleOf`?e.data%r.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),V(t,{code:B.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):CS.assertNever(r);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:TS.bigint,received:t.parsedType}),NS}gte(e,t){return this.setLimit(`min`,e,!0,BS.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,BS.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,BS.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,BS.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:BS.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!1,message:BS.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!1,message:BS.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!0,message:BS.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!0,message:BS.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:BS.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew XS({checks:[],typeName:H.ZodBigInt,coerce:e?.coerce??!1,...US(e)});var ZS=class extends WS{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==TS.boolean){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:TS.boolean,received:t.parsedType}),NS}return FS(e.data)}};ZS.create=e=>new ZS({typeName:H.ZodBoolean,coerce:e?.coerce||!1,...US(e)});var QS=class e extends WS{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==TS.date){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:TS.date,received:t.parsedType}),NS}if(Number.isNaN(e.data.getTime()))return V(this._getOrReturnCtx(e),{code:B.invalid_date}),NS;let t=new MS,n;for(let r of this._def.checks)r.kind===`min`?e.data.getTime()r.value&&(n=this._getOrReturnCtx(e,n),V(n,{code:B.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:`date`}),t.dirty()):CS.assertNever(r);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(e,t){return this._addCheck({kind:`min`,value:e.getTime(),message:BS.toString(t)})}max(e,t){return this._addCheck({kind:`max`,value:e.getTime(),message:BS.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e==null?null:new Date(e)}get maxDate(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew QS({checks:[],coerce:e?.coerce||!1,typeName:H.ZodDate,...US(e)});var $S=class extends WS{_parse(e){if(this._getType(e)!==TS.symbol){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:TS.symbol,received:t.parsedType}),NS}return FS(e.data)}};$S.create=e=>new $S({typeName:H.ZodSymbol,...US(e)});var eC=class extends WS{_parse(e){if(this._getType(e)!==TS.undefined){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:TS.undefined,received:t.parsedType}),NS}return FS(e.data)}};eC.create=e=>new eC({typeName:H.ZodUndefined,...US(e)});var tC=class extends WS{_parse(e){if(this._getType(e)!==TS.null){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:TS.null,received:t.parsedType}),NS}return FS(e.data)}};tC.create=e=>new tC({typeName:H.ZodNull,...US(e)});var nC=class extends WS{constructor(){super(...arguments),this._any=!0}_parse(e){return FS(e.data)}};nC.create=e=>new nC({typeName:H.ZodAny,...US(e)});var rC=class extends WS{constructor(){super(...arguments),this._unknown=!0}_parse(e){return FS(e.data)}};rC.create=e=>new rC({typeName:H.ZodUnknown,...US(e)});var iC=class extends WS{_parse(e){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:TS.never,received:t.parsedType}),NS}};iC.create=e=>new iC({typeName:H.ZodNever,...US(e)});var aC=class extends WS{_parse(e){if(this._getType(e)!==TS.undefined){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:TS.void,received:t.parsedType}),NS}return FS(e.data)}};aC.create=e=>new aC({typeName:H.ZodVoid,...US(e)});var oC=class e extends WS{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==TS.array)return V(t,{code:B.invalid_type,expected:TS.array,received:t.parsedType}),NS;if(r.exactLength!==null){let e=t.data.length>r.exactLength.value,i=t.data.lengthr.maxLength.value&&(V(t,{code:B.too_big,maximum:r.maxLength.value,type:`array`,inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>r.type._parseAsync(new VS(t,e,t.path,n)))).then(e=>MS.mergeArray(n,e));let i=[...t.data].map((e,n)=>r.type._parseSync(new VS(t,e,t.path,n)));return MS.mergeArray(n,i)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:BS.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:BS.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:BS.toString(n)}})}nonempty(e){return this.min(1,e)}};oC.create=(e,t)=>new oC({type:e,minLength:null,maxLength:null,exactLength:null,typeName:H.ZodArray,...US(t)});function sC(e){if(e instanceof cC){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=wC.create(sC(r))}return new cC({...e._def,shape:()=>t})}else if(e instanceof oC)return new oC({...e._def,type:sC(e.element)});else if(e instanceof wC)return wC.create(sC(e.unwrap()));else if(e instanceof TC)return TC.create(sC(e.unwrap()));else if(e instanceof pC)return pC.create(e.items.map(e=>sC(e)));else return e}var cC=class e extends WS{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=CS.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==TS.object){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:TS.object,received:t.parsedType}),NS}let{status:t,ctx:n}=this._processInputParams(e),{shape:r,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof iC&&this._def.unknownKeys===`strip`))for(let e in n.data)i.includes(e)||a.push(e);let o=[];for(let e of i){let t=r[e],i=n.data[e];o.push({key:{status:`valid`,value:e},value:t._parse(new VS(n,i,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof iC){let e=this._def.unknownKeys;if(e===`passthrough`)for(let e of a)o.push({key:{status:`valid`,value:e},value:{status:`valid`,value:n.data[e]}});else if(e===`strict`)a.length>0&&(V(n,{code:B.unrecognized_keys,keys:a}),t.dirty());else if(e!==`strip`)throw Error(`Internal ZodObject error: invalid unknownKeys value.`)}else{let e=this._def.catchall;for(let t of a){let r=n.data[t];o.push({key:{status:`valid`,value:t},value:e._parse(new VS(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of o){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>MS.mergeObjectSync(t,e)):MS.mergeObjectSync(t,o)}get shape(){return this._def.shape()}strict(t){return BS.errToObj,new e({...this._def,unknownKeys:`strict`,...t===void 0?{}:{errorMap:(e,n)=>{let r=this._def.errorMap?.(e,n).message??n.defaultError;return e.code===`unrecognized_keys`?{message:BS.errToObj(t).message??r}:{message:r}}}})}strip(){return new e({...this._def,unknownKeys:`strip`})}passthrough(){return new e({...this._def,unknownKeys:`passthrough`})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:H.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let n={};for(let e of CS.objectKeys(t))t[e]&&this.shape[e]&&(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}omit(t){let n={};for(let e of CS.objectKeys(this.shape))t[e]||(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}deepPartial(){return sC(this)}partial(t){let n={};for(let e of CS.objectKeys(this.shape)){let r=this.shape[e];t&&!t[e]?n[e]=r:n[e]=r.optional()}return new e({...this._def,shape:()=>n})}required(t){let n={};for(let e of CS.objectKeys(this.shape))if(t&&!t[e])n[e]=this.shape[e];else{let t=this.shape[e];for(;t instanceof wC;)t=t._def.innerType;n[e]=t}return new e({...this._def,shape:()=>n})}keyof(){return yC(CS.objectKeys(this.shape))}};cC.create=(e,t)=>new cC({shape:()=>e,unknownKeys:`strip`,catchall:iC.create(),typeName:H.ZodObject,...US(t)}),cC.strictCreate=(e,t)=>new cC({shape:()=>e,unknownKeys:`strict`,catchall:iC.create(),typeName:H.ZodObject,...US(t)}),cC.lazycreate=(e,t)=>new cC({shape:e,unknownKeys:`strip`,catchall:iC.create(),typeName:H.ZodObject,...US(t)});var lC=class extends WS{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;function r(e){for(let t of e)if(t.result.status===`valid`)return t.result;for(let n of e)if(n.result.status===`dirty`)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new DS(e.ctx.common.issues));return V(t,{code:B.invalid_union,unionErrors:n}),NS}if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(r);{let e,r=[];for(let i of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:n});if(a.status===`valid`)return a;a.status===`dirty`&&!e&&(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=r.map(e=>new DS(e));return V(t,{code:B.invalid_union,unionErrors:i}),NS}}get options(){return this._def.options}};lC.create=(e,t)=>new lC({options:e,typeName:H.ZodUnion,...US(t)});var uC=e=>e instanceof _C?uC(e.schema):e instanceof CC?uC(e.innerType()):e instanceof vC?[e.value]:e instanceof bC?e.options:e instanceof xC?CS.objectValues(e.enum):e instanceof EC?uC(e._def.innerType):e instanceof eC?[void 0]:e instanceof tC?[null]:e instanceof wC?[void 0,...uC(e.unwrap())]:e instanceof TC?[null,...uC(e.unwrap())]:e instanceof kC||e instanceof jC?uC(e.unwrap()):e instanceof DC?uC(e._def.innerType):[],$ee=class e extends WS{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==TS.object)return V(t,{code:B.invalid_type,expected:TS.object,received:t.parsedType}),NS;let n=this.discriminator,r=t.data[n],i=this.optionsMap.get(r);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(V(t,{code:B.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),NS)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){let i=new Map;for(let e of n){let n=uC(e.shape[t]);if(!n.length)throw Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let r of n){if(i.has(r))throw Error(`Discriminator property ${String(t)} has duplicate value ${String(r)}`);i.set(r,e)}}return new e({typeName:H.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...US(r)})}};function dC(e,t){let n=ES(e),r=ES(t);if(e===t)return{valid:!0,data:e};if(n===TS.object&&r===TS.object){let n=CS.objectKeys(t),r=CS.objectKeys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=dC(e[n],t[n]);if(!r.valid)return{valid:!1};i[n]=r.data}return{valid:!0,data:i}}else if(n===TS.array&&r===TS.array){if(e.length!==t.length)return{valid:!1};let n=[];for(let r=0;r{if(IS(e)||IS(r))return NS;let i=dC(e.value,r.value);return i.valid?((LS(e)||LS(r))&&t.dirty(),{status:t.value,value:i.data}):(V(n,{code:B.invalid_intersection_types}),NS)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([e,t])=>r(e,t)):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};fC.create=(e,t,n)=>new fC({left:e,right:t,typeName:H.ZodIntersection,...US(n)});var pC=class e extends WS{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==TS.array)return V(n,{code:B.invalid_type,expected:TS.array,received:n.parsedType}),NS;if(n.data.lengththis._def.items.length&&(V(n,{code:B.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),t.dirty());let r=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new VS(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(r).then(e=>MS.mergeArray(t,e)):MS.mergeArray(t,r)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};pC.create=(e,t)=>{if(!Array.isArray(e))throw Error(`You must pass an array of schemas to z.tuple([ ... ])`);return new pC({items:e,typeName:H.ZodTuple,rest:null,...US(t)})};var ete=class e extends WS{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==TS.object)return V(n,{code:B.invalid_type,expected:TS.object,received:n.parsedType}),NS;let r=[],i=this._def.keyType,a=this._def.valueType;for(let e in n.data)r.push({key:i._parse(new VS(n,e,n.path,e)),value:a._parse(new VS(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?MS.mergeObjectAsync(t,r):MS.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof WS?new e({keyType:t,valueType:n,typeName:H.ZodRecord,...US(r)}):new e({keyType:JS.create(),valueType:t,typeName:H.ZodRecord,...US(n)})}},mC=class extends WS{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==TS.map)return V(n,{code:B.invalid_type,expected:TS.map,received:n.parsedType}),NS;let r=this._def.keyType,i=this._def.valueType,a=[...n.data.entries()].map(([e,t],a)=>({key:r._parse(new VS(n,e,n.path,[a,`key`])),value:i._parse(new VS(n,t,n.path,[a,`value`]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of a){let r=await n.key,i=await n.value;if(r.status===`aborted`||i.status===`aborted`)return NS;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}})}else{let e=new Map;for(let n of a){let r=n.key,i=n.value;if(r.status===`aborted`||i.status===`aborted`)return NS;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}}};mC.create=(e,t,n)=>new mC({valueType:t,keyType:e,typeName:H.ZodMap,...US(n)});var hC=class e extends WS{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==TS.set)return V(n,{code:B.invalid_type,expected:TS.set,received:n.parsedType}),NS;let r=this._def;r.minSize!==null&&n.data.sizer.maxSize.value&&(V(n,{code:B.too_big,maximum:r.maxSize.value,type:`set`,inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let i=this._def.valueType;function a(e){let n=new Set;for(let r of e){if(r.status===`aborted`)return NS;r.status===`dirty`&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let o=[...n.data.values()].map((e,t)=>i._parse(new VS(n,e,n.path,t)));return n.common.async?Promise.all(o).then(e=>a(e)):a(o)}min(t,n){return new e({...this._def,minSize:{value:t,message:BS.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:BS.toString(n)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};hC.create=(e,t)=>new hC({valueType:e,minSize:null,maxSize:null,typeName:H.ZodSet,...US(t)});var gC=class e extends WS{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==TS.function)return V(t,{code:B.invalid_type,expected:TS.function,received:t.parsedType}),NS;function n(e,n){return jS({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,AS(),OS].filter(e=>!!e),issueData:{code:B.invalid_arguments,argumentsError:n}})}function r(e,n){return jS({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,AS(),OS].filter(e=>!!e),issueData:{code:B.invalid_return_type,returnTypeError:n}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof SC){let e=this;return FS(async function(...t){let o=new DS([]),s=await e._def.args.parseAsync(t,i).catch(e=>{throw o.addIssue(n(t,e)),o}),c=await Reflect.apply(a,this,s);return await e._def.returns._def.type.parseAsync(c,i).catch(e=>{throw o.addIssue(r(c,e)),o})})}else{let e=this;return FS(function(...t){let o=e._def.args.safeParse(t,i);if(!o.success)throw new DS([n(t,o.error)]);let s=Reflect.apply(a,this,o.data),c=e._def.returns.safeParse(s,i);if(!c.success)throw new DS([r(s,c.error)]);return c.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:pC.create(t).rest(rC.create())})}returns(t){return new e({...this._def,returns:t})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(t,n,r){return new e({args:t||pC.create([]).rest(rC.create()),returns:n||rC.create(),typeName:H.ZodFunction,...US(r)})}},_C=class extends WS{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};_C.create=(e,t)=>new _C({getter:e,typeName:H.ZodLazy,...US(t)});var vC=class extends WS{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return V(t,{received:t.data,code:B.invalid_literal,expected:this._def.value}),NS}return{status:`valid`,value:e.data}}get value(){return this._def.value}};vC.create=(e,t)=>new vC({value:e,typeName:H.ZodLiteral,...US(t)});function yC(e,t){return new bC({values:e,typeName:H.ZodEnum,...US(t)})}var bC=class e extends WS{_parse(e){if(typeof e.data!=`string`){let t=this._getOrReturnCtx(e),n=this._def.values;return V(t,{expected:CS.joinValues(n),received:t.parsedType,code:B.invalid_type}),NS}if(this._cache||=new Set(this._def.values),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return V(t,{received:t.data,code:B.invalid_enum_value,options:n}),NS}return FS(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(t,n=this._def){return e.create(t,{...this._def,...n})}exclude(t,n=this._def){return e.create(this.options.filter(e=>!t.includes(e)),{...this._def,...n})}};bC.create=yC;var xC=class extends WS{_parse(e){let t=CS.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==TS.string&&n.parsedType!==TS.number){let e=CS.objectValues(t);return V(n,{expected:CS.joinValues(e),received:n.parsedType,code:B.invalid_type}),NS}if(this._cache||=new Set(CS.getValidEnumValues(this._def.values)),!this._cache.has(e.data)){let e=CS.objectValues(t);return V(n,{received:n.data,code:B.invalid_enum_value,options:e}),NS}return FS(e.data)}get enum(){return this._def.values}};xC.create=(e,t)=>new xC({values:e,typeName:H.ZodNativeEnum,...US(t)});var SC=class extends WS{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==TS.promise&&t.common.async===!1?(V(t,{code:B.invalid_type,expected:TS.promise,received:t.parsedType}),NS):FS((t.parsedType===TS.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}};SC.create=(e,t)=>new SC({type:e,typeName:H.ZodPromise,...US(t)});var CC=class extends WS{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===H.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=this._def.effect||null,i={addIssue:e=>{V(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(i.addIssue=i.addIssue.bind(i),r.type===`preprocess`){let e=r.transform(n.data,i);if(n.common.async)return Promise.resolve(e).then(async e=>{if(t.value===`aborted`)return NS;let r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return r.status===`aborted`?NS:r.status===`dirty`||t.value===`dirty`?PS(r.value):r});{if(t.value===`aborted`)return NS;let r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return r.status===`aborted`?NS:r.status===`dirty`||t.value===`dirty`?PS(r.value):r}}if(r.type===`refinement`){let e=e=>{let t=r.refinement(e,i);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(`Async refinement encountered during synchronous parse operation. Use .parseAsync instead.`);return e};if(n.common.async===!1){let r=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return r.status===`aborted`?NS:(r.status===`dirty`&&t.dirty(),e(r.value),{status:t.value,value:r.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(n=>n.status===`aborted`?NS:(n.status===`dirty`&&t.dirty(),e(n.value).then(()=>({status:t.value,value:n.value}))))}if(r.type===`transform`)if(n.common.async===!1){let e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!RS(e))return NS;let a=r.transform(e.value,i);if(a instanceof Promise)throw Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);return{status:t.value,value:a}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(e=>RS(e)?Promise.resolve(r.transform(e.value,i)).then(e=>({status:t.value,value:e})):NS);CS.assertNever(r)}};CC.create=(e,t,n)=>new CC({schema:e,typeName:H.ZodEffects,effect:t,...US(n)}),CC.createWithPreprocess=(e,t,n)=>new CC({schema:t,effect:{type:`preprocess`,transform:e},typeName:H.ZodEffects,...US(n)});var wC=class extends WS{_parse(e){return this._getType(e)===TS.undefined?FS(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};wC.create=(e,t)=>new wC({innerType:e,typeName:H.ZodOptional,...US(t)});var TC=class extends WS{_parse(e){return this._getType(e)===TS.null?FS(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};TC.create=(e,t)=>new TC({innerType:e,typeName:H.ZodNullable,...US(t)});var EC=class extends WS{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===TS.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};EC.create=(e,t)=>new EC({innerType:e,typeName:H.ZodDefault,defaultValue:typeof t.default==`function`?t.default:()=>t.default,...US(t)});var DC=class extends WS{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return zS(r)?r.then(e=>({status:`valid`,value:e.status===`valid`?e.value:this._def.catchValue({get error(){return new DS(n.common.issues)},input:n.data})})):{status:`valid`,value:r.status===`valid`?r.value:this._def.catchValue({get error(){return new DS(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};DC.create=(e,t)=>new DC({innerType:e,typeName:H.ZodCatch,catchValue:typeof t.catch==`function`?t.catch:()=>t.catch,...US(t)});var OC=class extends WS{_parse(e){if(this._getType(e)!==TS.nan){let t=this._getOrReturnCtx(e);return V(t,{code:B.invalid_type,expected:TS.nan,received:t.parsedType}),NS}return{status:`valid`,value:e.data}}};OC.create=e=>new OC({typeName:H.ZodNaN,...US(e)});var kC=class extends WS{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}},AC=class e extends WS{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?NS:e.status===`dirty`?(t.dirty(),PS(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})();{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?NS:e.status===`dirty`?(t.dirty(),{status:`dirty`,value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(t,n){return new e({in:t,out:n,typeName:H.ZodPipeline})}},jC=class extends WS{_parse(e){let t=this._def.innerType._parse(e),n=e=>(RS(e)&&(e.value=Object.freeze(e.value)),e);return zS(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}};jC.create=(e,t)=>new jC({innerType:e,typeName:H.ZodReadonly,...US(t)}),cC.lazycreate;var H;(function(e){e.ZodString=`ZodString`,e.ZodNumber=`ZodNumber`,e.ZodNaN=`ZodNaN`,e.ZodBigInt=`ZodBigInt`,e.ZodBoolean=`ZodBoolean`,e.ZodDate=`ZodDate`,e.ZodSymbol=`ZodSymbol`,e.ZodUndefined=`ZodUndefined`,e.ZodNull=`ZodNull`,e.ZodAny=`ZodAny`,e.ZodUnknown=`ZodUnknown`,e.ZodNever=`ZodNever`,e.ZodVoid=`ZodVoid`,e.ZodArray=`ZodArray`,e.ZodObject=`ZodObject`,e.ZodUnion=`ZodUnion`,e.ZodDiscriminatedUnion=`ZodDiscriminatedUnion`,e.ZodIntersection=`ZodIntersection`,e.ZodTuple=`ZodTuple`,e.ZodRecord=`ZodRecord`,e.ZodMap=`ZodMap`,e.ZodSet=`ZodSet`,e.ZodFunction=`ZodFunction`,e.ZodLazy=`ZodLazy`,e.ZodLiteral=`ZodLiteral`,e.ZodEnum=`ZodEnum`,e.ZodEffects=`ZodEffects`,e.ZodNativeEnum=`ZodNativeEnum`,e.ZodOptional=`ZodOptional`,e.ZodNullable=`ZodNullable`,e.ZodDefault=`ZodDefault`,e.ZodCatch=`ZodCatch`,e.ZodPromise=`ZodPromise`,e.ZodBranded=`ZodBranded`,e.ZodPipeline=`ZodPipeline`,e.ZodReadonly=`ZodReadonly`})(H||={}),JS.create,YS.create,OC.create,XS.create,ZS.create,QS.create,$S.create,eC.create,tC.create,nC.create,rC.create,iC.create,aC.create,oC.create,cC.create,cC.strictCreate,lC.create,$ee.create,fC.create,pC.create,ete.create,mC.create,hC.create,gC.create,_C.create,vC.create,bC.create,xC.create,SC.create,CC.create,wC.create,TC.create,CC.createWithPreprocess,AC.create;function MC(e){if(e.target!==`openAi`)return{};let t=[...e.basePath,e.definitionPath,e.openAiAnyTypeName];return e.flags.hasReferencedOpenAiAnyType=!0,{$ref:e.$refStrategy===`relative`?SS(t,e.currentPath):t.join(`/`)}}function NC(e,t){let n={type:`array`};return e.type?._def&&e.type?._def?.typeName!==H.ZodAny&&(n.items=Cw(e.type._def,{...t,currentPath:[...t.currentPath,`items`]})),e.minLength&&xS(n,`minItems`,e.minLength.value,e.minLength.message,t),e.maxLength&&xS(n,`maxItems`,e.maxLength.value,e.maxLength.message,t),e.exactLength&&(xS(n,`minItems`,e.exactLength.value,e.exactLength.message,t),xS(n,`maxItems`,e.exactLength.value,e.exactLength.message,t)),n}function PC(e,t){let n={type:`integer`,format:`int64`};if(!e.checks)return n;for(let r of e.checks)switch(r.kind){case`min`:t.target===`jsonSchema7`?r.inclusive?xS(n,`minimum`,r.value,r.message,t):xS(n,`exclusiveMinimum`,r.value,r.message,t):(r.inclusive||(n.exclusiveMinimum=!0),xS(n,`minimum`,r.value,r.message,t));break;case`max`:t.target===`jsonSchema7`?r.inclusive?xS(n,`maximum`,r.value,r.message,t):xS(n,`exclusiveMaximum`,r.value,r.message,t):(r.inclusive||(n.exclusiveMaximum=!0),xS(n,`maximum`,r.value,r.message,t));break;case`multipleOf`:xS(n,`multipleOf`,r.value,r.message,t);break}return n}function FC(){return{type:`boolean`}}function IC(e,t){return Cw(e.type._def,t)}var LC=(e,t)=>Cw(e.innerType._def,t);function RC(e,t,n){let r=n??t.dateStrategy;if(Array.isArray(r))return{anyOf:r.map((n,r)=>RC(e,t,n))};switch(r){case`string`:case`format:date-time`:return{type:`string`,format:`date-time`};case`format:date`:return{type:`string`,format:`date`};case`integer`:return zC(e,t)}}var zC=(e,t)=>{let n={type:`integer`,format:`unix-time`};if(t.target===`openApi3`)return n;for(let r of e.checks)switch(r.kind){case`min`:xS(n,`minimum`,r.value,r.message,t);break;case`max`:xS(n,`maximum`,r.value,r.message,t);break}return n};function BC(e,t){return{...Cw(e.innerType._def,t),default:e.defaultValue()}}function VC(e,t){return t.effectStrategy===`input`?Cw(e.schema._def,t):MC(t)}function HC(e){return{type:`string`,enum:Array.from(e.values)}}var UC=e=>`type`in e&&e.type===`string`?!1:`allOf`in e;function WC(e,t){let n=[Cw(e.left._def,{...t,currentPath:[...t.currentPath,`allOf`,`0`]}),Cw(e.right._def,{...t,currentPath:[...t.currentPath,`allOf`,`1`]})].filter(e=>!!e),r=t.target===`jsonSchema2019-09`?{unevaluatedProperties:!1}:void 0,i=[];return n.forEach(e=>{if(UC(e))i.push(...e.allOf),e.unevaluatedProperties===void 0&&(r=void 0);else{let t=e;if(`additionalProperties`in e&&e.additionalProperties===!1){let{additionalProperties:n,...r}=e;t=r}else r=void 0;i.push(t)}}),i.length?{allOf:i,...r}:void 0}function GC(e,t){let n=typeof e.value;return n!==`bigint`&&n!==`number`&&n!==`boolean`&&n!==`string`?{type:Array.isArray(e.value)?`array`:`object`}:t.target===`openApi3`?{type:n===`bigint`?`integer`:n,enum:[e.value]}:{type:n===`bigint`?`integer`:n,const:e.value}}var KC=void 0,qC={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(KC===void 0&&(KC=RegExp(`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,`u`)),KC),uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function JC(e,t){let n={type:`string`};if(e.checks)for(let r of e.checks)switch(r.kind){case`min`:xS(n,`minLength`,typeof n.minLength==`number`?Math.max(n.minLength,r.value):r.value,r.message,t);break;case`max`:xS(n,`maxLength`,typeof n.maxLength==`number`?Math.min(n.maxLength,r.value):r.value,r.message,t);break;case`email`:switch(t.emailStrategy){case`format:email`:QC(n,`email`,r.message,t);break;case`format:idn-email`:QC(n,`idn-email`,r.message,t);break;case`pattern:zod`:$C(n,qC.email,r.message,t);break}break;case`url`:QC(n,`uri`,r.message,t);break;case`uuid`:QC(n,`uuid`,r.message,t);break;case`regex`:$C(n,r.regex,r.message,t);break;case`cuid`:$C(n,qC.cuid,r.message,t);break;case`cuid2`:$C(n,qC.cuid2,r.message,t);break;case`startsWith`:$C(n,RegExp(`^${YC(r.value,t)}`),r.message,t);break;case`endsWith`:$C(n,RegExp(`${YC(r.value,t)}$`),r.message,t);break;case`datetime`:QC(n,`date-time`,r.message,t);break;case`date`:QC(n,`date`,r.message,t);break;case`time`:QC(n,`time`,r.message,t);break;case`duration`:QC(n,`duration`,r.message,t);break;case`length`:xS(n,`minLength`,typeof n.minLength==`number`?Math.max(n.minLength,r.value):r.value,r.message,t),xS(n,`maxLength`,typeof n.maxLength==`number`?Math.min(n.maxLength,r.value):r.value,r.message,t);break;case`includes`:$C(n,RegExp(YC(r.value,t)),r.message,t);break;case`ip`:r.version!==`v6`&&QC(n,`ipv4`,r.message,t),r.version!==`v4`&&QC(n,`ipv6`,r.message,t);break;case`base64url`:$C(n,qC.base64url,r.message,t);break;case`jwt`:$C(n,qC.jwt,r.message,t);break;case`cidr`:r.version!==`v6`&&$C(n,qC.ipv4Cidr,r.message,t),r.version!==`v4`&&$C(n,qC.ipv6Cidr,r.message,t);break;case`emoji`:$C(n,qC.emoji(),r.message,t);break;case`ulid`:$C(n,qC.ulid,r.message,t);break;case`base64`:switch(t.base64Strategy){case`format:binary`:QC(n,`binary`,r.message,t);break;case`contentEncoding:base64`:xS(n,`contentEncoding`,`base64`,r.message,t);break;case`pattern:zod`:$C(n,qC.base64,r.message,t);break}break;case`nanoid`:$C(n,qC.nanoid,r.message,t);case`toLowerCase`:case`toUpperCase`:case`trim`:break;default:(e=>{})(r)}return n}function YC(e,t){return t.patternStrategy===`escape`?ZC(e):e}var XC=new Set(`ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789`);function ZC(e){let t=``;for(let n=0;ne.format)?(e.anyOf||=[],e.format&&(e.anyOf.push({format:e.format,...e.errorMessage&&r.errorMessages&&{errorMessage:{format:e.errorMessage.format}}}),delete e.format,e.errorMessage&&(delete e.errorMessage.format,Object.keys(e.errorMessage).length===0&&delete e.errorMessage)),e.anyOf.push({format:t,...n&&r.errorMessages&&{errorMessage:{format:n}}})):xS(e,`format`,t,n,r)}function $C(e,t,n,r){e.pattern||e.allOf?.some(e=>e.pattern)?(e.allOf||=[],e.pattern&&(e.allOf.push({pattern:e.pattern,...e.errorMessage&&r.errorMessages&&{errorMessage:{pattern:e.errorMessage.pattern}}}),delete e.pattern,e.errorMessage&&(delete e.errorMessage.pattern,Object.keys(e.errorMessage).length===0&&delete e.errorMessage)),e.allOf.push({pattern:ew(t,r),...n&&r.errorMessages&&{errorMessage:{pattern:n}}})):xS(e,`pattern`,ew(t,r),n,r)}function ew(e,t){if(!t.applyRegexFlags||!e.flags)return e.source;let n={i:e.flags.includes(`i`),m:e.flags.includes(`m`),s:e.flags.includes(`s`)},r=n.i?e.source.toLowerCase():e.source,i=``,a=!1,o=!1,s=!1;for(let e=0;e({...n,[r]:Rw(e.valueType._def,{...t,currentPath:[...t.currentPath,`properties`,r]})??qC(t)}),{}),additionalProperties:t.rejectedAdditionalProperties};let n={type:`object`,additionalProperties:Rw(e.valueType._def,{...t,currentPath:[...t.currentPath,`additionalProperties`]})??t.allowedAdditionalProperties};if(t.target===`openApi3`)return n;if(e.keyType?._def.typeName===H.ZodString&&e.keyType._def.checks?.length){let{type:r,...i}=lw(e.keyType._def,t);return{...n,propertyNames:i}}else if(e.keyType?._def.typeName===H.ZodEnum)return{...n,propertyNames:{enum:e.keyType._def.values}};else if(e.keyType?._def.typeName===H.ZodBranded&&e.keyType._def.type._def.typeName===H.ZodString&&e.keyType._def.type._def.checks?.length){let{type:r,...i}=ZC(e.keyType._def,t);return{...n,propertyNames:i}}return n}function _w(e,t){return t.mapStrategy===`record`?gw(e,t):{type:`array`,maxItems:125,items:{type:`array`,items:[Rw(e.keyType._def,{...t,currentPath:[...t.currentPath,`items`,`items`,`0`]})||qC(t),Rw(e.valueType._def,{...t,currentPath:[...t.currentPath,`items`,`items`,`1`]})||qC(t)],minItems:2,maxItems:2}}}function vw(e){let t=e.values,n=Object.keys(e.values).filter(e=>typeof t[t[e]]!=`number`).map(e=>t[e]),r=Array.from(new Set(n.map(e=>typeof e)));return{type:r.length===1?r[0]===`string`?`string`:`number`:[`string`,`number`],enum:n}}function yw(e){return e.target===`openAi`?void 0:{not:qC({...e,currentPath:[...e.currentPath,`not`]})}}function bw(e){return e.target===`openApi3`?{enum:[`null`],nullable:!0}:{type:`null`}}var xw={ZodString:`string`,ZodNumber:`number`,ZodBigInt:`integer`,ZodBoolean:`boolean`,ZodNull:`null`};function Sw(e,t){if(t.target===`openApi3`)return Cw(e,t);let n=e.options instanceof Map?Array.from(e.options.values()):e.options;if(n.every(e=>e._def.typeName in xw&&(!e._def.checks||!e._def.checks.length))){let e=n.reduce((e,t)=>{let n=xw[t._def.typeName];return n&&!e.includes(n)?[...e,n]:e},[]);return{type:e.length>1?e:e[0]}}else if(n.every(e=>e._def.typeName===`ZodLiteral`&&!e.description)){let e=n.reduce((e,t)=>{let n=typeof t._def.value;switch(n){case`string`:case`number`:case`boolean`:return[...e,n];case`bigint`:return[...e,`integer`];case`object`:if(t._def.value===null)return[...e,`null`];default:return e}},[]);if(e.length===n.length){let t=e.filter((e,t,n)=>n.indexOf(e)===t);return{type:t.length>1?t:t[0],enum:n.reduce((e,t)=>e.includes(t._def.value)?e:[...e,t._def.value],[])}}}else if(n.every(e=>e._def.typeName===`ZodEnum`))return{type:`string`,enum:n.reduce((e,t)=>[...e,...t._def.values.filter(t=>!e.includes(t))],[])};return Cw(e,t)}var Cw=(e,t)=>{let n=(e.options instanceof Map?Array.from(e.options.values()):e.options).map((e,n)=>Rw(e._def,{...t,currentPath:[...t.currentPath,`anyOf`,`${n}`]})).filter(e=>!!e&&(!t.strictUnions||typeof e==`object`&&Object.keys(e).length>0));return n.length?{anyOf:n}:void 0};function ww(e,t){if([`ZodString`,`ZodNumber`,`ZodBigInt`,`ZodBoolean`,`ZodNull`].includes(e.innerType._def.typeName)&&(!e.innerType._def.checks||!e.innerType._def.checks.length))return t.target===`openApi3`?{type:xw[e.innerType._def.typeName],nullable:!0}:{type:[xw[e.innerType._def.typeName],`null`]};if(t.target===`openApi3`){let n=Rw(e.innerType._def,{...t,currentPath:[...t.currentPath]});return n&&`$ref`in n?{allOf:[n],nullable:!0}:n&&{...n,nullable:!0}}let n=Rw(e.innerType._def,{...t,currentPath:[...t.currentPath,`anyOf`,`0`]});return n&&{anyOf:[n,{type:`null`}]}}function Tw(e,t){let n={type:`number`};if(!e.checks)return n;for(let r of e.checks)switch(r.kind){case`int`:n.type=`integer`,jS(n,`type`,r.message,t);break;case`min`:t.target===`jsonSchema7`?r.inclusive?MS(n,`minimum`,r.value,r.message,t):MS(n,`exclusiveMinimum`,r.value,r.message,t):(r.inclusive||(n.exclusiveMinimum=!0),MS(n,`minimum`,r.value,r.message,t));break;case`max`:t.target===`jsonSchema7`?r.inclusive?MS(n,`maximum`,r.value,r.message,t):MS(n,`exclusiveMaximum`,r.value,r.message,t):(r.inclusive||(n.exclusiveMaximum=!0),MS(n,`maximum`,r.value,r.message,t));break;case`multipleOf`:MS(n,`multipleOf`,r.value,r.message,t);break}return n}function Ew(e,t){let n=t.target===`openAi`,r={type:`object`,properties:{}},i=[],a=e.shape();for(let e in a){let o=a[e];if(o===void 0||o._def===void 0)continue;let s=Ow(o);s&&n&&(o._def.typeName===`ZodOptional`&&(o=o._def.innerType),o.isNullable()||(o=o.nullable()),s=!1);let c=Rw(o._def,{...t,currentPath:[...t.currentPath,`properties`,e],propertyPath:[...t.currentPath,`properties`,e]});c!==void 0&&(r.properties[e]=c,s||i.push(e))}i.length&&(r.required=i);let o=Dw(e,t);return o!==void 0&&(r.additionalProperties=o),r}function Dw(e,t){if(e.catchall._def.typeName!==`ZodNever`)return Rw(e.catchall._def,{...t,currentPath:[...t.currentPath,`additionalProperties`]});switch(e.unknownKeys){case`passthrough`:return t.allowedAdditionalProperties;case`strict`:return t.rejectedAdditionalProperties;case`strip`:return t.removeAdditionalStrategy===`strict`?t.allowedAdditionalProperties:t.rejectedAdditionalProperties}}function Ow(e){try{return e.isOptional()}catch{return!0}}var kw=(e,t)=>{if(t.currentPath.toString()===t.propertyPath?.toString())return Rw(e.innerType._def,t);let n=Rw(e.innerType._def,{...t,currentPath:[...t.currentPath,`anyOf`,`1`]});return n?{anyOf:[{not:qC(t)},n]}:qC(t)},Aw=(e,t)=>{if(t.pipeStrategy===`input`)return Rw(e.in._def,t);if(t.pipeStrategy===`output`)return Rw(e.out._def,t);let n=Rw(e.in._def,{...t,currentPath:[...t.currentPath,`allOf`,`0`]});return{allOf:[n,Rw(e.out._def,{...t,currentPath:[...t.currentPath,`allOf`,n?`1`:`0`]})].filter(e=>e!==void 0)}};function jw(e,t){return Rw(e.type._def,t)}function Mw(e,t){let n={type:`array`,uniqueItems:!0,items:Rw(e.valueType._def,{...t,currentPath:[...t.currentPath,`items`]})};return e.minSize&&MS(n,`minItems`,e.minSize.value,e.minSize.message,t),e.maxSize&&MS(n,`maxItems`,e.maxSize.value,e.maxSize.message,t),n}function Nw(e,t){return e.rest?{type:`array`,minItems:e.items.length,items:e.items.map((e,n)=>Rw(e._def,{...t,currentPath:[...t.currentPath,`items`,`${n}`]})).reduce((e,t)=>t===void 0?e:[...e,t],[]),additionalItems:Rw(e.rest._def,{...t,currentPath:[...t.currentPath,`additionalItems`]})}:{type:`array`,minItems:e.items.length,maxItems:e.items.length,items:e.items.map((e,n)=>Rw(e._def,{...t,currentPath:[...t.currentPath,`items`,`${n}`]})).reduce((e,t)=>t===void 0?e:[...e,t],[])}}function Pw(e){return{not:qC(e)}}function Fw(e){return qC(e)}var Iw=(e,t)=>Rw(e.innerType._def,t),Lw=(e,t,n)=>{switch(t){case H.ZodString:return lw(e,n);case H.ZodNumber:return Tw(e,n);case H.ZodObject:return Ew(e,n);case H.ZodBigInt:return YC(e,n);case H.ZodBoolean:return XC();case H.ZodDate:return $C(e,n);case H.ZodUndefined:return Pw(n);case H.ZodNull:return bw(n);case H.ZodArray:return JC(e,n);case H.ZodUnion:case H.ZodDiscriminatedUnion:return Sw(e,n);case H.ZodIntersection:return aw(e,n);case H.ZodTuple:return Nw(e,n);case H.ZodRecord:return gw(e,n);case H.ZodLiteral:return ow(e,n);case H.ZodEnum:return rw(e);case H.ZodNativeEnum:return vw(e);case H.ZodNullable:return ww(e,n);case H.ZodOptional:return kw(e,n);case H.ZodMap:return _w(e,n);case H.ZodSet:return Mw(e,n);case H.ZodLazy:return()=>e.getter()._def;case H.ZodPromise:return jw(e,n);case H.ZodNaN:case H.ZodNever:return yw(n);case H.ZodEffects:return nw(e,n);case H.ZodAny:return qC(n);case H.ZodUnknown:return Fw(n);case H.ZodDefault:return tw(e,n);case H.ZodBranded:return ZC(e,n);case H.ZodReadonly:return Iw(e,n);case H.ZodCatch:return QC(e,n);case H.ZodPipeline:return Aw(e,n);case H.ZodFunction:case H.ZodVoid:case H.ZodSymbol:return;default:return(e=>void 0)(t)}};function Rw(e,t,n=!1){let r=t.seen.get(e);if(t.override){let i=t.override?.(e,t,r,n);if(i!==DS)return i}if(r&&!n){let e=zw(r,t);if(e!==void 0)return e}let i={def:e,path:t.currentPath,jsonSchema:void 0};t.seen.set(e,i);let a=Lw(e,e.typeName,t),o=typeof a==`function`?Rw(a(),t):a;if(o&&Bw(e,t,o),t.postProcess){let n=t.postProcess(o,e,t);return i.jsonSchema=o,n}return i.jsonSchema=o,o}var zw=(e,t)=>{switch(t.$refStrategy){case`root`:return{$ref:e.path.join(`/`)};case`relative`:return{$ref:NS(t.currentPath,e.path)};case`none`:case`seen`:return e.path.lengtht.currentPath[n]===e)?(console.warn(`Recursive reference detected at ${t.currentPath.join(`/`)}! Defaulting to any`),qC(t)):t.$refStrategy===`seen`?qC(t):void 0}},Bw=(e,t,n)=>(e.description&&(n.description=e.description,t.markdownDescription&&(n.markdownDescription=e.description)),n),Vw=(e,t)=>{let n=AS(t),r=typeof t==`object`&&t.definitions?Object.entries(t.definitions).reduce((e,[t,r])=>({...e,[t]:Rw(r._def,{...n,currentPath:[...n.basePath,n.definitionPath,t]},!0)??qC(n)}),{}):void 0,i=typeof t==`string`?t:t?.nameStrategy===`title`?void 0:t?.name,a=Rw(e._def,i===void 0?n:{...n,currentPath:[...n.basePath,n.definitionPath,i]},!1)??qC(n),o=typeof t==`object`&&t.name!==void 0&&t.nameStrategy===`title`?t.name:void 0;o!==void 0&&(a.title=o),n.flags.hasReferencedOpenAiAnyType&&(r||={},r[n.openAiAnyTypeName]||(r[n.openAiAnyTypeName]={type:[`string`,`number`,`integer`,`boolean`,`array`,`null`],items:{$ref:n.$refStrategy===`relative`?`1`:[...n.basePath,n.definitionPath,n.openAiAnyTypeName].join(`/`)}}));let s=i===void 0?r?{...a,[n.definitionPath]:r}:a:{$ref:[...n.$refStrategy===`relative`?[]:n.basePath,n.definitionPath,i].join(`/`),[n.definitionPath]:{...r,[i]:a}};return n.target===`jsonSchema7`?s.$schema=`http://json-schema.org/draft-07/schema#`:(n.target===`jsonSchema2019-09`||n.target===`openAi`)&&(s.$schema=`https://json-schema.org/draft/2019-09/schema#`),n.target===`openAi`&&(`anyOf`in s||`oneOf`in s||`allOf`in s||`type`in s&&Array.isArray(s.type))&&console.warn(`Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property.`),s},Hw=class{constructor(e,t){this.catalogs=e,this.actionHandler=t,this.model=new TS,this.actionHandler&&this.model.onAction.subscribe(this.actionHandler)}getClientCapabilities(e){let t={"v0.9":{supportedCatalogIds:this.catalogs.map(e=>e.id)}};return e?.includeInlineCatalogs&&(t[`v0.9`].inlineCatalogs=this.catalogs.map(e=>this.generateInlineCatalog(e))),t}generateInlineCatalog(e){let t={};for(let[n,r]of e.components.entries()){let e=Vw(r.schema,{target:`jsonSchema2019-09`});this.processRefs(e),t[n]={allOf:[{$ref:`common_types.json#/$defs/ComponentCommon`},{properties:{component:{const:n},...e.properties},required:[`component`,...e.required||[]]}]}}let n=[];for(let t of e.functions.values()){let e=Vw(t.schema,{target:`jsonSchema2019-09`});this.processRefs(e),n.push({name:t.name,description:t.schema.description,returnType:t.returnType,parameters:e})}let r;if(e.themeSchema){let t=Vw(e.themeSchema,{target:`jsonSchema2019-09`});this.processRefs(t),r=t.properties}return{catalogId:e.id,components:t,functions:n.length>0?n:void 0,theme:r}}processRefs(e){if(!(typeof e!=`object`||!e)){if(typeof e.description==`string`&&e.description.startsWith(`REF:`)){let t=e.description.substring(4).split(`|`),n=t[0],r=t[1]||``;for(let t of Object.keys(e))delete e[t];e.$ref=n,r&&(e.description=r);return}if(Array.isArray(e))for(let t of e)this.processRefs(t);else for(let t of Object.keys(e))this.processRefs(e[t])}}getClientDataModel(){let e={};for(let t of this.model.surfacesMap.values())t.sendDataModel&&(e[t.id]=t.dataModel.get(`/`));if(Object.keys(e).length!==0)return{version:`v0.9`,surfaces:e}}onSurfaceCreated(e){return this.model.onSurfaceCreated.subscribe(e)}onSurfaceDeleted(e){return this.model.onSurfaceDeleted.subscribe(e)}processMessages(e){for(let t of e)this.processMessage(t)}processMessage(e){let t=[`createSurface`,`updateComponents`,`updateDataModel`,`deleteSurface`].filter(t=>t in e);if(t.length>1)throw new zx(`Message contains multiple update types: ${t.join(`, `)}.`);if(`createSurface`in e){this.processCreateSurfaceMessage(e);return}if(`deleteSurface`in e){this.processDeleteSurfaceMessage(e);return}if(`updateComponents`in e){this.processUpdateComponentsMessage(e);return}if(`updateDataModel`in e){this.processUpdateDataModelMessage(e);return}}processCreateSurfaceMessage(e){let{surfaceId:t,catalogId:n,theme:r,sendDataModel:i}=e.createSurface,a=this.catalogs.find(e=>e.id===n);if(!a)throw new Hx(`Catalog not found: ${n}`);if(this.model.getSurface(t))throw new Hx(`Surface ${t} already exists.`);let o=new wS(t,a,r,i??!1);this.model.addSurface(o)}processDeleteSurfaceMessage(e){let t=e.deleteSurface;t.surfaceId&&this.model.deleteSurface(t.surfaceId)}processUpdateComponentsMessage(e){let t=e.updateComponents;if(!t.surfaceId)return;let n=this.model.getSurface(t.surfaceId);if(!n)throw new Hx(`Surface not found for message: ${t.surfaceId}`);for(let e of t.components){let{id:t,component:r,...i}=e;if(!t)throw new zx(`Component '${r}' is missing an 'id'.`);let a=n.componentsModel.get(t);if(a)if(r&&r!==a.type){n.componentsModel.removeComponent(t);let e=new ES(t,r,i);n.componentsModel.addComponent(e)}else a.properties=i;else{if(!r)throw new zx(`Cannot create component ${t} without a type.`);let e=new ES(t,r,i);n.componentsModel.addComponent(e)}}}processUpdateDataModelMessage(e){let t=e.updateDataModel;if(!t.surfaceId)return;let n=this.model.getSurface(t.surfaceId);if(!n)throw new Hx(`Surface not found for message: ${t.surfaceId}`);let r=t.path||`/`,i=t.value;n.dataModel.set(r,i)}resolvePath(e,t){return e.startsWith(`/`)?e:t?`${t.endsWith(`/`)?t:`${t}/`}${e}`:`/${e}`}},Uw=class e{constructor(e,t){this.surface=e,this.path=t,this.dataModel=e.dataModel,this.functionInvoker=e.catalog.invoker}set(e,t){let n=this.resolvePath(e);this.dataModel.set(n,t)}resolveDynamicValue(e){if(typeof e!=`object`||!e||Array.isArray(e))return e;if(`path`in e){let t=this.resolvePath(e.path);return this.dataModel.get(t)}if(`call`in e){let t=e,n={};for(let[e,r]of Object.entries(t.args))n[e]=this.resolveDynamicValue(r);let r=new AbortController,i=this.evaluateFunctionReactive(t.call,n,r.signal);return i===void 0?void 0:Ux(i)?i.peek():i}return e}subscribeDynamicValue(e,t){let n=this.resolveSignal(e),r=!0,i=n.peek(),a=vS(()=>{let e=n.value;i=e,r||t(e)});return r=!1,{get value(){return i},unsubscribe:()=>{a(),n.unsubscribe&&n.unsubscribe()}}}resolveSignal(e){if(typeof e!=`object`||!e||Array.isArray(e))return cS(e);if(`path`in e){let t=this.resolvePath(e.path);return this.dataModel.getSignal(t)}if(`call`in e){let t=e,n={};for(let[e,r]of Object.entries(t.args))n[e]=this.resolveSignal(r);if(Object.keys(n).length===0){let e=new AbortController,n=this.evaluateFunctionReactive(t.call,{},e.signal),r=n instanceof sS?n:cS(n);return r.unsubscribe=()=>e.abort(),r}let r=Object.keys(n),i=cS(void 0),a,o,s=pS(()=>{let e={};for(let t=0;t{try{let e=s.value;a&&a.abort(),o&&=(o(),void 0),a=new AbortController;let n=this.evaluateFunctionReactive(t.call,e,a.signal);Ux(n)?o=vS(()=>{i.value=n.value}):i.value=n}catch(e){this.dispatchExpressionError(e,t.call),i.value=void 0}});return i.unsubscribe=()=>{c(),o&&o(),a&&a.abort();for(let e=0;e1&&(t=t.slice(0,-1)),t===`/`&&(t=``),`${t}/${e}`}},Ww=class{constructor(e,t,n=`/`){let r=e.componentsModel.get(t);if(!r)throw new Hx(`Component not found: ${t}`);this.componentModel=r,this.surfaceComponents=e.componentsModel,this.dataContext=new Uw(e,n),this._actionDispatcher=t=>e.dispatchAction(t,this.componentModel.id)}dispatchAction(e){return this._actionDispatcher(e)}};function Gw(e){return Kw(e)}function Kw(e,t){let n=e;for(;n._def.typeName===`ZodOptional`||n._def.typeName===`ZodNullable`||n._def.typeName===`ZodDefault`;)n=n._def.innerType;if(t===`checks`)return{type:`CHECKABLE`};if(n._def.typeName===`ZodUnion`){let e=n._def.options;if(e.some(e=>e._def.typeName===`ZodObject`&&e._def.shape().event))return{type:`ACTION`};if(e.some(e=>e._def.typeName===`ZodObject`&&e._def.shape().path&&!e._def.shape().componentId))return{type:`DYNAMIC`};if(e.some(e=>e._def.typeName===`ZodObject`&&e._def.shape().componentId&&e._def.shape().path))return{type:`STRUCTURAL`}}else n._def.typeName;if(n._def.typeName===`ZodArray`)return{type:`ARRAY`,element:Kw(n._def.type)};if(n._def.typeName===`ZodObject`){let e={},t=n._def.shape();for(let[n,r]of Object.entries(t))e[n]=Kw(r,n);return{type:`OBJECT`,shape:e}}return{type:`STATIC`}}var qw=class{constructor(e,t){this.dataListeners=[],this.propsListeners=[],this.currentProps={},this.isConnected=!1,this.context=e,this.behaviorTree=Gw(t),this.behaviorTree.type!==`OBJECT`&&(this.behaviorTree={type:`OBJECT`,shape:{}}),this.resolveInitialProps()}resolveInitialProps(){let e=this.context.componentModel.properties,t=this.resolveAndBind(e,this.behaviorTree,[],!0);this.currentProps={...this.currentProps,...t}}connect(){if(this.isConnected)return;this.isConnected=!0;let e=this.context.componentModel.onUpdated.subscribe(()=>{this.rebuildAllBindings()});this.compUnsub=()=>e.unsubscribe(),this.rebuildAllBindings()}rebuildAllBindings(){this.dataListeners.forEach(e=>e()),this.dataListeners=[];let e=this.context.componentModel.properties,t=this.resolveAndBind(e,this.behaviorTree,[],!1);this.currentProps={...this.currentProps,...t},this.notify()}resolveAndBind(e,t,n,r){if(e==null)return e;switch(t.type){case`DYNAMIC`:{let t=this.context.dataContext.subscribeDynamicValue(e,e=>{this.updateDeepValue(n,e),this.notify()});return r?t.unsubscribe():this.dataListeners.push(()=>t.unsubscribe()),t.value}case`ACTION`:return()=>{let t=e=>{if(typeof e!=`object`||!e)return e;if(`path`in e||`call`in e)return this.context.dataContext.resolveDynamicValue(e);if(Array.isArray(e))return e.map(t);let n={};for(let[r,i]of Object.entries(e))n[r]=t(i);return n};this.context.dispatchAction(t(e))};case`STRUCTURAL`:if(e&&typeof e==`object`&&e.path&&e.componentId){let t=this.context.dataContext.subscribeDynamicValue({path:e.path},t=>{let r=Array.isArray(t)?t:[],i=this.context.dataContext.nested(e.path),a=r.map((t,n)=>({id:e.componentId,basePath:i.nested(String(n)).path}));this.updateDeepValue(n,a),this.notify()});r?t.unsubscribe():this.dataListeners.push(()=>t.unsubscribe());let i=Array.isArray(t.value)?t.value:[],a=this.context.dataContext.nested(e.path);return i.map((t,n)=>({id:e.componentId,basePath:a.nested(String(n)).path}))}return e;case`CHECKABLE`:{let t=Array.isArray(e)?e:[],i=t.map(()=>({valid:!0,message:``})),a=n.slice(0,-1),o=()=>{let e=i.filter(e=>!e.valid).map(e=>e.message);this.updateDeepValue([...a,`isValid`],e.length===0),this.updateDeepValue([...a,`validationErrors`],e),this.notify()};t.forEach((e,t)=>{let n=e.condition||e,a=e.message||`Validation failed`;i[t].message=a;let s=this.context.dataContext.subscribeDynamicValue(n,e=>{i[t].valid=!!e,o()});r?s.unsubscribe():this.dataListeners.push(()=>s.unsubscribe()),i[t].valid=!!s.value});let s=i.filter(e=>!e.valid).map(e=>e.message);return this.updateDeepValue([...a,`isValid`],s.length===0),this.updateDeepValue([...a,`validationErrors`],s),e}case`STATIC`:return e;case`ARRAY`:return Array.isArray(e)?e.map((e,i)=>this.resolveAndBind(e,t.element,[...n,i.toString()],r)):e;case`OBJECT`:{if(typeof e!=`object`)return e;let i={};for(let[a,o]of Object.entries(e)){let e=t.shape[a]||{type:`STATIC`};i[a]=this.resolveAndBind(o,e,[...n,a],r)}for(let[n,r]of Object.entries(t.shape))if(r.type===`DYNAMIC`){let t=`set${n.charAt(0).toUpperCase()+n.slice(1)}`,r=e[n];i[t]=e=>{r&&typeof r==`object`&&`path`in r&&this.context.dataContext.set(r.path,e)}}return i}}}updateDeepValue(e,t){this.currentProps=this.cloneAndUpdate(this.currentProps,e,t)}cloneAndUpdate(e,t,n){if(t.length===0)return n;let[r,...i]=t;if(Array.isArray(e)){let t=[...e];return t[Number(r)]=this.cloneAndUpdate(t[Number(r)],i,n),t}else return{...e||{},[r]:this.cloneAndUpdate((e||{})[r],i,n)}}dispose(){this.isConnected&&(this.isConnected=!1,this.dataListeners.forEach(e=>e()),this.dataListeners=[],this.compUnsub&&=(this.compUnsub(),void 0))}notify(){this.propsListeners.forEach(e=>e(this.currentProps))}subscribe(e){return this.propsListeners.length===0&&this.connect(),this.propsListeners.push(e),{unsubscribe:()=>{this.propsListeners=this.propsListeners.filter(t=>t!==e),this.propsListeners.length===0&&this.dispose()}}}get snapshot(){return this.currentProps}},Jw=jx({path:Ex().describe(`A JSON Pointer path to a value in the data model.`)}).describe(`REF:common_types.json#/$defs/DataBinding|A JSON Pointer path to a value in the data model.`),Yw=jx({call:Ex().describe(`The name of the function to call.`),args:Nx(kx()).describe(`Arguments passed to the function.`),returnType:Fx([`string`,`number`,`boolean`,`array`,`object`,`any`,`void`]).default(`boolean`)}).describe(`REF:common_types.json#/$defs/FunctionCall|Invokes a named function on the client.`),Xw=Mx([Ox(),Jw,Yw]).describe(`REF:common_types.json#/$defs/DynamicBoolean|A boolean value that can be a literal, a path, or a function call returning a boolean.`),Zw=Mx([Ex(),Jw,Yw]).describe(`REF:common_types.json#/$defs/DynamicString|Represents a string`),Qw=Mx([Dx(),Jw,Yw]).describe(`REF:common_types.json#/$defs/DynamicNumber|Represents a value that can be either a literal number, a path to a number in the data model, or a function call returning a number.`),$w=Mx([Ax(Ex()),Jw,Yw]).describe(`REF:common_types.json#/$defs/DynamicStringList|Represents a value that can be either a literal array of strings, a path to a string array in the data model, or a function call returning a string array.`),eT=Mx([Ex(),Dx(),Ox(),Ax(kx()),Jw,Yw]).describe(`REF:common_types.json#/$defs/DynamicValue|A value that can be a literal, a path, or a function call returning any type.`),tT=Ex().describe(`REF:common_types.json#/$defs/ComponentId|The unique identifier for a component.`),nT=Mx([Ax(tT).describe(`A static list of child component IDs.`),jx({componentId:tT,path:Ex().describe(`The path to the list of component property objects in the data model.`)}).describe(`A template for generating a dynamic list of children.`)]).describe(`REF:common_types.json#/$defs/ChildList`),rT=Mx([jx({event:jx({name:Ex(),context:Nx(eT).optional()})}).describe(`Triggers a server-side event.`),jx({functionCall:Yw}).describe(`Executes a local client-side function.`)]).describe(`REF:common_types.json#/$defs/Action`),iT=jx({condition:Xw,message:Ex().describe(`The error message to display if the check fails.`)}).describe(`REF:common_types.json#/$defs/CheckRule|A check rule consisting of a condition and an error message.`),aT=jx({checks:Ax(iT).optional().describe(`A list of checks to perform.`)}).describe(`REF:common_types.json#/$defs/Checkable|Properties for components that support client-side checks.`),oT=jx({label:Zw.optional().describe(`REF:common_types.json#/$defs/DynamicString|A short string used by assistive technologies to convey the purpose of an element.`),description:Zw.optional().describe(`REF:common_types.json#/$defs/DynamicString|Additional information provided by assistive technologies about an element.`)}).describe(`REF:common_types.json#/$defs/AccessibilityAttributes|Attributes to enhance accessibility.`),sT={ComponentId:tT,ChildList:nT,DataBinding:Jw,DynamicValue:eT,DynamicString:Zw,DynamicNumber:Qw,DynamicBoolean:Xw,DynamicStringList:$w,FunctionCall:Yw,CheckRule:iT,Checkable:aT,Action:rT,AccessibilityAttributes:oT,AnyComponent:jx({component:Ex().describe(`The type name of the component.`),id:tT.optional(),weight:Dx().optional()}).passthrough().describe(`A generic A2UI component definition.`)},cT=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),lT=o(((e,t)=>{t.exports=cT()})),U=lT();function uT(e,t){let n=(0,b.memo)(t,(e,t)=>!(e.props!==t.props||e.context.componentModel.id!==t.context.componentModel.id||e.context.dataContext.path!==t.context.dataContext.path));return{name:e.name,schema:e.schema,render:({context:t,buildChild:r})=>{let i=(0,b.useRef)(null);i.current?i.current.context!==t&&(i.current.dispose(),i.current=new qw(t,e.schema)):i.current=new qw(t,e.schema);let a=i.current,o=(0,b.useSyncExternalStore)((0,b.useCallback)(e=>{let t=a.subscribe(e);return()=>t.unsubscribe()},[a]),(0,b.useCallback)(()=>a.snapshot,[a]));return(0,b.useEffect)(()=>()=>a.dispose(),[a]),(0,U.jsx)(n,{props:o||{},buildChild:r,context:t})}}}var dT=`16px`,fT=`1px solid #ccc`,pT=e=>{switch(e){case`center`:return`center`;case`end`:return`flex-end`;case`spaceAround`:return`space-around`;case`spaceBetween`:return`space-between`;case`spaceEvenly`:return`space-evenly`;case`start`:return`flex-start`;case`stretch`:return`stretch`;default:return`flex-start`}},mT=e=>{switch(e){case`start`:return`flex-start`;case`center`:return`center`;case`end`:return`flex-end`;case`stretch`:return`stretch`;default:return`stretch`}},hT=()=>({margin:`8px`,boxSizing:`border-box`}),gT=()=>({margin:`8px`,padding:dT,border:fT,borderRadius:`8px`,boxSizing:`border-box`}),_T=class e{static{this.MAX_DEPTH=10}parse(t,n=0){if(n>e.MAX_DEPTH)throw new Vx(`Max recursion depth reached in parse`);if(!t||!t.includes("${"))return[t];let r=[],i=new vT(t);for(;!i.isAtEnd();)if(i.matches("${")){i.advance(2);let e=this.extractInterpolationContent(i),t=this.parseExpression(e,n+1);t!==null&&r.push(t)}else if(i.peek()===`\\`&&i.peek(1)===`$`&&i.peek(2)===`{`)i.advance(),r.push("${"),i.advance(2);else{let e=i.pos;for(;!i.isAtEnd()&&!(i.matches("${")||i.peek()===`\\`&&i.peek(1)===`$`&&i.peek(2)===`{`);)i.advance();r.push(i.input.substring(e,i.pos))}return r.filter(e=>e!==null&&e!==``)}extractInterpolationContent(e){let t=e.pos,n=1;for(;!e.isAtEnd()&&n>0;){let t=e.advance();if(t===`{`)n++;else if(t===`}`)n--;else if(t===`'`||t===`"`){let n=t;for(;!e.isAtEnd();){let t=e.advance();if(t===`\\`)e.advance();else if(t===n)break}}}if(n>0)throw new Vx(`Unclosed interpolation: missing '}'`);return e.input.substring(t,e.pos-1)}parseExpression(e,t=0){if(e=e.trim(),!e)return``;let n=new vT(e),r=this.parseExpressionInternal(n,t);if(!n.isAtEnd())throw new Vx(`Unexpected characters at end of expression: '${n.input.substring(n.pos)}'`);return r}parseExpressionInternal(e,t){if(e.skipWhitespace(),e.isAtEnd())return``;if(e.matches("${")){e.advance(2);let n=this.extractInterpolationContent(e);return this.parseExpression(n,t+1)}if(e.matchesString(`'`)||e.matchesString(`"`))return this.parseStringLiteral(e);if(this.isDigit(e.peek()))return this.parseNumberLiteral(e);if(e.matchesKeyword(`true`))return!0;if(e.matchesKeyword(`false`))return!1;if(e.matchesKeyword(`null`))return``;let n=this.scanPathOrIdentifier(e);return e.skipWhitespace(),e.peek()===`(`?this.parseFunctionCall(n,e,t):n?{path:n}:``}scanPathOrIdentifier(e){let t=e.pos;for(;!e.isAtEnd();){let t=e.peek();if(this.isAlnum(t)||t===`/`||t===`.`||t===`_`||t===`-`)e.advance();else break}return e.input.substring(t,e.pos)}parseFunctionCall(e,t,n){t.match(`(`),t.skipWhitespace();let r={};for(;!t.isAtEnd()&&t.peek()!==`)`;){let i=this.scanIdentifier(t);if(t.skipWhitespace(),!t.match(`:`))throw new Vx(`Expected ':' after argument name '${i}' in function '${e}'`);t.skipWhitespace(),r[i]=this.parseExpressionInternal(t,n),t.skipWhitespace(),t.peek()===`,`&&(t.advance(),t.skipWhitespace())}if(!t.match(`)`))throw new Vx(`Expected ')' after function arguments for '${e}'`);return{call:e,args:r,returnType:`any`}}scanIdentifier(e){let t=e.pos;for(;!e.isAtEnd()&&(this.isAlnum(e.peek())||e.peek()===`_`);)e.advance();return e.input.substring(t,e.pos)}parseStringLiteral(e){let t=e.advance(),n=``;for(;!e.isAtEnd();){let r=e.advance();if(r===`\\`){let t=e.advance();t===`n`?n+=` -`:t===`t`?n+=` `:t===`r`?n+=`\r`:n+=t}else if(r===t)break;else n+=r}return n}parseNumberLiteral(e){let t=e.pos;for(;!e.isAtEnd()&&(this.isDigit(e.peek())||e.peek()===`.`);)e.advance();return Number(e.input.substring(t,e.pos))}isAlnum(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`||e>=`0`&&e<=`9`}isDigit(e){return e>=`0`&&e<=`9`}},vT=class{constructor(e){this.input=e,this.pos=0}isAtEnd(){return this.pos>=this.input.length}peek(e=0){return this.pos+e>=this.input.length?`\0`:this.input[this.pos+e]}advance(e=1){let t=this.input.substring(this.pos,this.pos+e);return this.pos+=e,t}match(e){return this.peek()===e?(this.advance(),!0):!1}matches(e){return!!this.input.startsWith(e,this.pos)}matchesString(e){return this.peek()===e}matchesKeyword(e){if(this.input.startsWith(e,this.pos)){let t=this.peek(e.length);if(!/[a-zA-Z0-9_]/.test(t))return this.advance(e.length),!0}return!1}skipWhitespace(){for(;!this.isAtEnd()&&/\s/.test(this.peek());)this.advance()}},yT=365.2425,bT=6048e5,xT=864e5,ST=3600*24;ST*7,ST*yT/12*3;var CT=Symbol.for(`constructDateFrom`);function wT(e,t){return typeof e==`function`?e(t):e&&typeof e==`object`&&CT in e?e[CT](t):e instanceof Date?new e.constructor(t):new Date(t)}function TT(e,t){return wT(t||e,e)}var ET={};function DT(){return ET}function OT(e,t){let n=DT(),r=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,i=TT(e,t?.in),a=i.getDay(),o=(a=a.getTime()?r+1:n.getTime()>=s.getTime()?r:r-1}function jT(e){let t=TT(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),e-+n}function MT(e,...t){let n=wT.bind(null,e||t.find(e=>typeof e==`object`));return t.map(n)}function NT(e,t){let n=TT(e,t?.in);return n.setHours(0,0,0,0),n}function PT(e,t,n){let[r,i]=MT(n?.in,e,t),a=NT(r),o=NT(i),s=+a-jT(a),c=+o-jT(o);return Math.round((s-c)/xT)}function FT(e,t){let n=AT(e,t),r=wT(t?.in||e,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),kT(r)}function IT(e){return e instanceof Date||typeof e==`object`&&Object.prototype.toString.call(e)===`[object Date]`}function LT(e){return!(!IT(e)&&typeof e!=`number`||isNaN(+TT(e)))}function RT(e,t){let n=TT(e,t?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}var zT={lessThanXSeconds:{one:`less than a second`,other:`less than {{count}} seconds`},xSeconds:{one:`1 second`,other:`{{count}} seconds`},halfAMinute:`half a minute`,lessThanXMinutes:{one:`less than a minute`,other:`less than {{count}} minutes`},xMinutes:{one:`1 minute`,other:`{{count}} minutes`},aboutXHours:{one:`about 1 hour`,other:`about {{count}} hours`},xHours:{one:`1 hour`,other:`{{count}} hours`},xDays:{one:`1 day`,other:`{{count}} days`},aboutXWeeks:{one:`about 1 week`,other:`about {{count}} weeks`},xWeeks:{one:`1 week`,other:`{{count}} weeks`},aboutXMonths:{one:`about 1 month`,other:`about {{count}} months`},xMonths:{one:`1 month`,other:`{{count}} months`},aboutXYears:{one:`about 1 year`,other:`about {{count}} years`},xYears:{one:`1 year`,other:`{{count}} years`},overXYears:{one:`over 1 year`,other:`over {{count}} years`},almostXYears:{one:`almost 1 year`,other:`almost {{count}} years`}},BT=(e,t,n)=>{let r,i=zT[e];return r=typeof i==`string`?i:t===1?i.one:i.other.replace(`{{count}}`,t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?`in `+r:r+` ago`:r};function VT(e){return(t={})=>{let n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}var HT={date:VT({formats:{full:`EEEE, MMMM do, y`,long:`MMMM do, y`,medium:`MMM d, y`,short:`MM/dd/yyyy`},defaultWidth:`full`}),time:VT({formats:{full:`h:mm:ss a zzzz`,long:`h:mm:ss a z`,medium:`h:mm:ss a`,short:`h:mm a`},defaultWidth:`full`}),dateTime:VT({formats:{full:`{{date}} 'at' {{time}}`,long:`{{date}} 'at' {{time}}`,medium:`{{date}}, {{time}}`,short:`{{date}}, {{time}}`},defaultWidth:`full`})},UT={lastWeek:`'last' eeee 'at' p`,yesterday:`'yesterday at' p`,today:`'today at' p`,tomorrow:`'tomorrow at' p`,nextWeek:`eeee 'at' p`,other:`P`},WT=(e,t,n,r)=>UT[e];function GT(e){return(t,n)=>{let r=n?.context?String(n.context):`standalone`,i;if(r===`formatting`&&e.formattingValues){let t=e.defaultFormattingWidth||e.defaultWidth,r=n?.width?String(n.width):t;i=e.formattingValues[r]||e.formattingValues[t]}else{let t=e.defaultWidth,r=n?.width?String(n.width):e.defaultWidth;i=e.values[r]||e.values[t]}let a=e.argumentCallback?e.argumentCallback(t):t;return i[a]}}var KT={ordinalNumber:(e,t)=>{let n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+`st`;case 2:return n+`nd`;case 3:return n+`rd`}return n+`th`},era:GT({values:{narrow:[`B`,`A`],abbreviated:[`BC`,`AD`],wide:[`Before Christ`,`Anno Domini`]},defaultWidth:`wide`}),quarter:GT({values:{narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1st quarter`,`2nd quarter`,`3rd quarter`,`4th quarter`]},defaultWidth:`wide`,argumentCallback:e=>e-1}),month:GT({values:{narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],wide:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]},defaultWidth:`wide`}),day:GT({values:{narrow:[`S`,`M`,`T`,`W`,`T`,`F`,`S`],short:[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`],abbreviated:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],wide:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`]},defaultWidth:`wide`}),dayPeriod:GT({values:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`}},defaultFormattingWidth:`wide`})};function qT(e){return(t,n={})=>{let r=n.width,i=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],a=t.match(i);if(!a)return null;let o=a[0],s=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(s)?YT(s,e=>e.test(o)):JT(s,e=>e.test(o)),l;l=e.valueCallback?e.valueCallback(c):c,l=n.valueCallback?n.valueCallback(l):l;let u=t.slice(o.length);return{value:l,rest:u}}}function JT(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}function YT(e,t){for(let n=0;n{let r=t.match(e.matchPattern);if(!r)return null;let i=r[0],a=t.match(e.parsePattern);if(!a)return null;let o=e.valueCallback?e.valueCallback(a[0]):a[0];o=n.valueCallback?n.valueCallback(o):o;let s=t.slice(i.length);return{value:o,rest:s}}}var ZT={code:`en-US`,formatDistance:BT,formatLong:HT,formatRelative:WT,localize:KT,match:{ordinalNumber:XT({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:qT({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:`any`}),quarter:qT({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:qT({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:`any`}),day:qT({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:`any`}),dayPeriod:qT({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:`any`,parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:`any`})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function QT(e,t){let n=TT(e,t?.in);return PT(n,RT(n))+1}function $T(e,t){let n=TT(e,t?.in),r=kT(n)-+FT(n);return Math.round(r/bT)+1}function eE(e,t){let n=TT(e,t?.in),r=n.getFullYear(),i=DT(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??i.firstWeekContainsDate??i.locale?.options?.firstWeekContainsDate??1,o=wT(t?.in||e,0);o.setFullYear(r+1,0,a),o.setHours(0,0,0,0);let s=OT(o,t),c=wT(t?.in||e,0);c.setFullYear(r,0,a),c.setHours(0,0,0,0);let l=OT(c,t);return+n>=+s?r+1:+n>=+l?r:r-1}function tE(e,t){let n=DT(),r=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,i=eE(e,t),a=wT(t?.in||e,0);return a.setFullYear(i,0,r),a.setHours(0,0,0,0),OT(a,t)}function nE(e,t){let n=TT(e,t?.in),r=OT(n,t)-+tE(n,t);return Math.round(r/bT)+1}function rE(e,t){return(e<0?`-`:``)+Math.abs(e).toString().padStart(t,`0`)}var iE={y(e,t){let n=e.getFullYear(),r=n>0?n:1-n;return rE(t===`yy`?r%100:r,t.length)},M(e,t){let n=e.getMonth();return t===`M`?String(n+1):rE(n+1,2)},d(e,t){return rE(e.getDate(),t.length)},a(e,t){let n=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.toUpperCase();case`aaa`:return n;case`aaaaa`:return n[0];default:return n===`am`?`a.m.`:`p.m.`}},h(e,t){return rE(e.getHours()%12||12,t.length)},H(e,t){return rE(e.getHours(),t.length)},m(e,t){return rE(e.getMinutes(),t.length)},s(e,t){return rE(e.getSeconds(),t.length)},S(e,t){let n=t.length,r=e.getMilliseconds();return rE(Math.trunc(r*10**(n-3)),t.length)}},aE={am:`am`,pm:`pm`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},oE={G:function(e,t,n){let r=+(e.getFullYear()>0);switch(t){case`G`:case`GG`:case`GGG`:return n.era(r,{width:`abbreviated`});case`GGGGG`:return n.era(r,{width:`narrow`});default:return n.era(r,{width:`wide`})}},y:function(e,t,n){if(t===`yo`){let t=e.getFullYear(),r=t>0?t:1-t;return n.ordinalNumber(r,{unit:`year`})}return iE.y(e,t)},Y:function(e,t,n,r){let i=eE(e,r),a=i>0?i:1-i;return t===`YY`?rE(a%100,2):t===`Yo`?n.ordinalNumber(a,{unit:`year`}):rE(a,t.length)},R:function(e,t){return rE(AT(e),t.length)},u:function(e,t){return rE(e.getFullYear(),t.length)},Q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`Q`:return String(r);case`QQ`:return rE(r,2);case`Qo`:return n.ordinalNumber(r,{unit:`quarter`});case`QQQ`:return n.quarter(r,{width:`abbreviated`,context:`formatting`});case`QQQQQ`:return n.quarter(r,{width:`narrow`,context:`formatting`});default:return n.quarter(r,{width:`wide`,context:`formatting`})}},q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`q`:return String(r);case`qq`:return rE(r,2);case`qo`:return n.ordinalNumber(r,{unit:`quarter`});case`qqq`:return n.quarter(r,{width:`abbreviated`,context:`standalone`});case`qqqqq`:return n.quarter(r,{width:`narrow`,context:`standalone`});default:return n.quarter(r,{width:`wide`,context:`standalone`})}},M:function(e,t,n){let r=e.getMonth();switch(t){case`M`:case`MM`:return iE.M(e,t);case`Mo`:return n.ordinalNumber(r+1,{unit:`month`});case`MMM`:return n.month(r,{width:`abbreviated`,context:`formatting`});case`MMMMM`:return n.month(r,{width:`narrow`,context:`formatting`});default:return n.month(r,{width:`wide`,context:`formatting`})}},L:function(e,t,n){let r=e.getMonth();switch(t){case`L`:return String(r+1);case`LL`:return rE(r+1,2);case`Lo`:return n.ordinalNumber(r+1,{unit:`month`});case`LLL`:return n.month(r,{width:`abbreviated`,context:`standalone`});case`LLLLL`:return n.month(r,{width:`narrow`,context:`standalone`});default:return n.month(r,{width:`wide`,context:`standalone`})}},w:function(e,t,n,r){let i=nE(e,r);return t===`wo`?n.ordinalNumber(i,{unit:`week`}):rE(i,t.length)},I:function(e,t,n){let r=$T(e);return t===`Io`?n.ordinalNumber(r,{unit:`week`}):rE(r,t.length)},d:function(e,t,n){return t===`do`?n.ordinalNumber(e.getDate(),{unit:`date`}):iE.d(e,t)},D:function(e,t,n){let r=QT(e);return t===`Do`?n.ordinalNumber(r,{unit:`dayOfYear`}):rE(r,t.length)},E:function(e,t,n){let r=e.getDay();switch(t){case`E`:case`EE`:case`EEE`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`EEEEE`:return n.day(r,{width:`narrow`,context:`formatting`});case`EEEEEE`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},e:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`e`:return String(a);case`ee`:return rE(a,2);case`eo`:return n.ordinalNumber(a,{unit:`day`});case`eee`:return n.day(i,{width:`abbreviated`,context:`formatting`});case`eeeee`:return n.day(i,{width:`narrow`,context:`formatting`});case`eeeeee`:return n.day(i,{width:`short`,context:`formatting`});default:return n.day(i,{width:`wide`,context:`formatting`})}},c:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`c`:return String(a);case`cc`:return rE(a,t.length);case`co`:return n.ordinalNumber(a,{unit:`day`});case`ccc`:return n.day(i,{width:`abbreviated`,context:`standalone`});case`ccccc`:return n.day(i,{width:`narrow`,context:`standalone`});case`cccccc`:return n.day(i,{width:`short`,context:`standalone`});default:return n.day(i,{width:`wide`,context:`standalone`})}},i:function(e,t,n){let r=e.getDay(),i=r===0?7:r;switch(t){case`i`:return String(i);case`ii`:return rE(i,t.length);case`io`:return n.ordinalNumber(i,{unit:`day`});case`iii`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`iiiii`:return n.day(r,{width:`narrow`,context:`formatting`});case`iiiiii`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},a:function(e,t,n){let r=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`});case`aaa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`aaaaa`:return n.dayPeriod(r,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(r,{width:`wide`,context:`formatting`})}},b:function(e,t,n){let r=e.getHours(),i;switch(i=r===12?aE.noon:r===0?aE.midnight:r/12>=1?`pm`:`am`,t){case`b`:case`bb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`bbb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`bbbbb`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},B:function(e,t,n){let r=e.getHours(),i;switch(i=r>=17?aE.evening:r>=12?aE.afternoon:r>=4?aE.morning:aE.night,t){case`B`:case`BB`:case`BBB`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`BBBBB`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},h:function(e,t,n){if(t===`ho`){let t=e.getHours()%12;return t===0&&(t=12),n.ordinalNumber(t,{unit:`hour`})}return iE.h(e,t)},H:function(e,t,n){return t===`Ho`?n.ordinalNumber(e.getHours(),{unit:`hour`}):iE.H(e,t)},K:function(e,t,n){let r=e.getHours()%12;return t===`Ko`?n.ordinalNumber(r,{unit:`hour`}):rE(r,t.length)},k:function(e,t,n){let r=e.getHours();return r===0&&(r=24),t===`ko`?n.ordinalNumber(r,{unit:`hour`}):rE(r,t.length)},m:function(e,t,n){return t===`mo`?n.ordinalNumber(e.getMinutes(),{unit:`minute`}):iE.m(e,t)},s:function(e,t,n){return t===`so`?n.ordinalNumber(e.getSeconds(),{unit:`second`}):iE.s(e,t)},S:function(e,t){return iE.S(e,t)},X:function(e,t,n){let r=e.getTimezoneOffset();if(r===0)return`Z`;switch(t){case`X`:return cE(r);case`XXXX`:case`XX`:return lE(r);default:return lE(r,`:`)}},x:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`x`:return cE(r);case`xxxx`:case`xx`:return lE(r);default:return lE(r,`:`)}},O:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`O`:case`OO`:case`OOO`:return`GMT`+sE(r,`:`);default:return`GMT`+lE(r,`:`)}},z:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`z`:case`zz`:case`zzz`:return`GMT`+sE(r,`:`);default:return`GMT`+lE(r,`:`)}},t:function(e,t,n){return rE(Math.trunc(e/1e3),t.length)},T:function(e,t,n){return rE(+e,t.length)}};function sE(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=Math.trunc(r/60),a=r%60;return a===0?n+String(i):n+String(i)+t+rE(a,2)}function cE(e,t){return e%60==0?(e>0?`-`:`+`)+rE(Math.abs(e)/60,2):lE(e,t)}function lE(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=rE(Math.trunc(r/60),2),a=rE(r%60,2);return n+i+t+a}var uE=(e,t)=>{switch(e){case`P`:return t.date({width:`short`});case`PP`:return t.date({width:`medium`});case`PPP`:return t.date({width:`long`});default:return t.date({width:`full`})}},dE=(e,t)=>{switch(e){case`p`:return t.time({width:`short`});case`pp`:return t.time({width:`medium`});case`ppp`:return t.time({width:`long`});default:return t.time({width:`full`})}},fE={p:dE,P:(e,t)=>{let n=e.match(/(P+)(p+)?/)||[],r=n[1],i=n[2];if(!i)return uE(e,t);let a;switch(r){case`P`:a=t.dateTime({width:`short`});break;case`PP`:a=t.dateTime({width:`medium`});break;case`PPP`:a=t.dateTime({width:`long`});break;default:a=t.dateTime({width:`full`});break}return a.replace(`{{date}}`,uE(r,t)).replace(`{{time}}`,dE(i,t))}},pE=/^D+$/,mE=/^Y+$/,hE=[`D`,`DD`,`YY`,`YYYY`];function gE(e){return pE.test(e)}function _E(e){return mE.test(e)}function vE(e,t,n){let r=yE(e,t,n);if(console.warn(r),hE.includes(e))throw RangeError(r)}function yE(e,t,n){let r=e[0]===`Y`?`years`:`days of the month`;return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var bE=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,xE=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,SE=/^'([^]*?)'?$/,CE=/''/g,wE=/[a-zA-Z]/;function TE(e,t,n){let r=DT(),i=n?.locale??r.locale??ZT,a=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,o=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,s=TT(e,n?.in);if(!LT(s))throw RangeError(`Invalid time value`);let c=t.match(xE).map(e=>{let t=e[0];if(t===`p`||t===`P`){let n=fE[t];return n(e,i.formatLong)}return e}).join(``).match(bE).map(e=>{if(e===`''`)return{isToken:!1,value:`'`};let t=e[0];if(t===`'`)return{isToken:!1,value:EE(e)};if(oE[t])return{isToken:!0,value:e};if(t.match(wE))throw RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return{isToken:!1,value:e}});i.localize.preprocessor&&(c=i.localize.preprocessor(s,c));let l={firstWeekContainsDate:a,weekStartsOn:o,locale:i};return c.map(r=>{if(!r.isToken)return r.value;let a=r.value;(!n?.useAdditionalWeekYearTokens&&_E(a)||!n?.useAdditionalDayOfYearTokens&&gE(a))&&vE(a,t,String(e));let o=oE[a[0]];return o(s,a,i.localize,l)}).join(``)}function EE(e){let t=e.match(SE);return t?t[1].replace(CE,`'`):e}var DE={name:`add`,returnType:`number`,schema:jx({a:Ix(e=>e===null?void 0:e,Lx.number()),b:Ix(e=>e===null?void 0:e,Lx.number())})},OE={name:`subtract`,returnType:`number`,schema:jx({a:Ix(e=>e===null?void 0:e,Lx.number()),b:Ix(e=>e===null?void 0:e,Lx.number())})},kE={name:`multiply`,returnType:`number`,schema:jx({a:Ix(e=>e===null?void 0:e,Lx.number()),b:Ix(e=>e===null?void 0:e,Lx.number())})},AE={name:`divide`,returnType:`number`,schema:jx({a:Ix(e=>e===null?void 0:e,Lx.number()),b:Ix(e=>e===null?void 0:e,Lx.number())})},jE={name:`equals`,returnType:`boolean`,schema:jx({a:kx().refine(e=>e!==void 0,`Required`),b:kx().refine(e=>e!==void 0,`Required`)})},ME={name:`not_equals`,returnType:`boolean`,schema:jx({a:kx().refine(e=>e!==void 0,`Required`),b:kx().refine(e=>e!==void 0,`Required`)})},NE={name:`greater_than`,returnType:`boolean`,schema:jx({a:Ix(e=>e===null?void 0:e,Lx.number()),b:Ix(e=>e===null?void 0:e,Lx.number())})},PE={name:`less_than`,returnType:`boolean`,schema:jx({a:Ix(e=>e===null?void 0:e,Lx.number()),b:Ix(e=>e===null?void 0:e,Lx.number())})},FE={name:`and`,returnType:`boolean`,schema:jx({values:Ax(kx()).min(2)})},IE={name:`or`,returnType:`boolean`,schema:jx({values:Ax(kx()).min(2)})},LE={name:`not`,returnType:`boolean`,schema:jx({value:kx().refine(e=>e!==void 0,`Required`)})},RE={name:`contains`,returnType:`boolean`,schema:jx({string:Ix(e=>e===void 0?void 0:String(e),Ex()),substring:Ix(e=>e===void 0?void 0:String(e),Ex())})},zE={name:`starts_with`,returnType:`boolean`,schema:jx({string:Ix(e=>e===void 0?void 0:String(e),Ex()),prefix:Ix(e=>e===void 0?void 0:String(e),Ex())})},BE={name:`ends_with`,returnType:`boolean`,schema:jx({string:Ix(e=>e===void 0?void 0:String(e),Ex()),suffix:Ix(e=>e===void 0?void 0:String(e),Ex())})},VE={name:`required`,returnType:`boolean`,schema:jx({value:kx().refine(e=>e!==void 0,`Required`)})},HE={name:`regex`,returnType:`boolean`,schema:jx({value:Ix(e=>e===void 0?void 0:String(e),Ex()),pattern:Ix(e=>e===void 0?void 0:String(e),Ex())})},UE={name:`length`,returnType:`boolean`,schema:jx({value:kx().refine(e=>e!==void 0,`Required`),min:Lx.number().optional(),max:Lx.number().optional()}).refine(e=>e.min!==void 0||e.max!==void 0,{message:`Must provide either 'min' or 'max'`})},WE={name:`numeric`,returnType:`boolean`,schema:jx({value:Lx.number(),min:Lx.number().optional(),max:Lx.number().optional()}).refine(e=>e.min!==void 0||e.max!==void 0,{message:`Must provide either 'min' or 'max'`})},GE={name:`email`,returnType:`boolean`,schema:jx({value:Ix(e=>e===void 0?void 0:String(e),Ex())})},KE={name:`formatString`,returnType:`any`,schema:jx({value:Lx.string()})},qE={name:`formatNumber`,returnType:`string`,schema:jx({value:Lx.number(),decimals:Lx.number().optional(),grouping:Ox().default(!0)})},JE={name:`formatCurrency`,returnType:`string`,schema:jx({value:Lx.number(),currency:Lx.string(),decimals:Lx.number().optional(),grouping:Ox().default(!0)})},YE={name:`formatDate`,returnType:`string`,schema:jx({value:kx().refine(e=>e!==void 0,`Required`),format:Lx.string()})},XE={name:`pluralize`,returnType:`string`,schema:jx({value:Lx.number(),zero:Lx.string().optional(),one:Lx.string().optional(),two:Lx.string().optional(),few:Lx.string().optional(),many:Lx.string().optional(),other:Lx.string()}).passthrough()},ZE={name:`openUrl`,returnType:`void`,schema:jx({url:Ix(e=>e===void 0?void 0:String(e),Ex())})},QE=[Wx(DE,e=>e.a+e.b),Wx(OE,e=>e.a-e.b),Wx(kE,e=>e.a*e.b),Wx(AE,e=>{let t=e.a,n=e.b;if(t==null||n==null)return NaN;let r=Number(t),i=Number(n);return Number.isNaN(r)||Number.isNaN(i)?NaN:i===0?1/0:r/i}),Wx(jE,e=>e.a===e.b),Wx(ME,e=>e.a!==e.b),Wx(NE,e=>e.a>e.b),Wx(PE,e=>e.ae.values.every(e=>!!e)),Wx(IE,e=>e.values.some(e=>!!e)),Wx(LE,e=>!e.value),Wx(RE,e=>e.string.includes(e.substring)),Wx(zE,e=>e.string.startsWith(e.prefix)),Wx(BE,e=>e.string.endsWith(e.suffix)),Wx(VE,e=>{let t=e.value;return!(t==null||typeof t==`string`&&t===``||Array.isArray(t)&&t.length===0)}),Wx(HE,e=>{try{return new RegExp(e.pattern).test(e.value)}catch(t){throw new Vx(`Invalid regex pattern: ${e.pattern}`,`regex`,t)}}),Wx(UE,e=>{let t=e.value,n=0;return(typeof t==`string`||Array.isArray(t))&&(n=t.length),!(e.min!==void 0&&!isNaN(e.min)&&ne.max)}),Wx(WE,e=>!(isNaN(e.value)||e.min!==void 0&&!isNaN(e.min)&&e.valuee.max)),Wx(GE,e=>/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(e.value)),Wx(KE,(e,t)=>{let n=e.value,r=new _T().parse(n);if(r.length===0)return``;let i=r.map(e=>typeof e!=`object`||!e||Array.isArray(e)?e:t.resolveSignal(e));return pS(()=>i.map(e=>Ux(e)?e.value:e).join(``))}),Wx(qE,e=>isNaN(e.value)?``:new Intl.NumberFormat(`en-US`,{minimumFractionDigits:e.decimals,maximumFractionDigits:e.decimals,useGrouping:e.grouping}).format(e.value)),Wx(JE,e=>{if(isNaN(e.value))return``;try{return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:e.currency,minimumFractionDigits:e.decimals,maximumFractionDigits:e.decimals,useGrouping:e.grouping}).format(e.value)}catch{return e.value.toFixed(e.decimals||2)}}),Wx(YE,e=>{if(!e.value)return``;let t=new Date(e.value);if(isNaN(t.getTime()))return``;try{return e.format===`ISO`?t.toISOString():TE(t,e.format)}catch(e){return console.warn(`Error formatting date:`,e),t.toISOString()}}),Wx(XE,e=>{let t=new Intl.PluralRules(`en-US`).select(e.value);return String(e[t]||e.other||``)}),Wx(ZE,e=>{e.url&&typeof window<`u`&&window.open&&window.open(e.url,`_blank`)})],$E={accessibility:oT.optional(),weight:Dx().describe(`The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.`).optional()},eD={name:`Text`,schema:jx({...$E,text:Zw.describe(`The text content to display. While simple Markdown formatting is supported (i.e. without HTML, images, or links), utilizing dedicated UI components is generally preferred for a richer and more structured presentation.`),variant:Fx([`h1`,`h2`,`h3`,`h4`,`h5`,`caption`,`body`]).default(`body`).describe(`A hint for the base text style.`).optional()}).strict()},tD={name:`Image`,schema:jx({...$E,url:Zw.describe(`The URL of the image to display.`),description:Zw.describe(`The accessibility description of the image.`).optional(),fit:Fx([`contain`,`cover`,`fill`,`none`,`scaleDown`]).default(`fill`).describe(`Specifies how the image should be resized to fit its container. This corresponds to the CSS 'object-fit' property.`).optional(),variant:Fx([`icon`,`avatar`,`smallFeature`,`mediumFeature`,`largeFeature`,`header`]).default(`mediumFeature`).describe(`A hint for the image size and style.`).optional()}).strict()},nD=`accountCircle.add.arrowBack.arrowForward.attachFile.calendarToday.call.camera.check.close.delete.download.edit.event.error.fastForward.favorite.favoriteOff.folder.help.home.info.locationOn.lock.lockOpen.mail.menu.moreVert.moreHoriz.notificationsOff.notifications.pause.payment.person.phone.photo.play.print.refresh.rewind.search.send.settings.share.shoppingCart.skipNext.skipPrevious.star.starHalf.starOff.stop.upload.visibility.visibilityOff.volumeDown.volumeMute.volumeOff.volumeUp.warning`.split(`.`),rD={name:`Icon`,schema:jx({...$E,name:Mx([Fx(nD),jx({path:Ex()}).strict()]).describe(`The name of the icon to display.`)}).strict()},iD={name:`Video`,schema:jx({...$E,url:Zw.describe(`The URL of the video to display.`)}).strict()},aD={name:`AudioPlayer`,schema:jx({...$E,url:Zw.describe(`The URL of the audio to be played.`),description:Zw.describe(`A description of the audio, such as a title or summary.`).optional()}).strict()},oD={name:`Row`,schema:jx({...$E,children:nT.describe(`Defines the children. Use an array of strings for a fixed set of children, or a template object to generate children from a data list. Children cannot be defined inline, they must be referred to by ID.`),justify:Fx([`center`,`end`,`spaceAround`,`spaceBetween`,`spaceEvenly`,`start`,`stretch`]).default(`start`).describe(`Defines the arrangement of children along the main axis (horizontally). Use 'spaceBetween' to push items to the edges, or 'start'/'end'/'center' to pack them together.`).optional(),align:Fx([`start`,`center`,`end`,`stretch`]).default(`stretch`).describe(`Defines the alignment of children along the cross axis (vertically). This is similar to the CSS 'align-items' property, but uses camelCase values (e.g., 'start').`).optional()}).strict().describe(`A layout component that arranges its children horizontally. To create a grid layout, nest Columns within this Row.`)},sD={name:`Column`,schema:jx({...$E,children:nT.describe(`Defines the children. Use an array of strings for a fixed set of children, or a template object to generate children from a data list. Children cannot be defined inline, they must be referred to by ID.`),justify:Fx([`start`,`center`,`end`,`spaceBetween`,`spaceAround`,`spaceEvenly`,`stretch`]).default(`start`).describe(`Defines the arrangement of children along the main axis (vertically). Use 'spaceBetween' to push items to the edges (e.g. header at top, footer at bottom), or 'start'/'end'/'center' to pack them together.`).optional(),align:Fx([`center`,`end`,`start`,`stretch`]).default(`stretch`).describe(`Defines the alignment of children along the cross axis (horizontally). This is similar to the CSS 'align-items' property.`).optional()}).strict().describe(`A layout component that arranges its children vertically. To create a grid layout, nest Rows within this Column.`)},cD={name:`List`,schema:jx({...$E,children:nT.describe(`Defines the children. Use an array of strings for a fixed set of children, or a template object to generate children from a data list.`),direction:Fx([`vertical`,`horizontal`]).default(`vertical`).describe(`The direction in which the list items are laid out.`).optional(),align:Fx([`start`,`center`,`end`,`stretch`]).default(`stretch`).describe(`Defines the alignment of children along the cross axis.`).optional()}).strict()},lD={name:`Card`,schema:jx({...$E,child:tT.describe(`The ID of the single child component to be rendered inside the card. To display multiple elements, you MUST wrap them in a layout component (like Column or Row) and pass that container's ID here. Do NOT pass multiple IDs or a non-existent ID. Do NOT define the child component inline.`)}).strict()},uD={name:`Tabs`,schema:jx({...$E,tabs:Ax(jx({title:Zw.describe(`The tab title.`),child:tT.describe(`The ID of the child component. Do NOT define the component inline.`)}).strict()).min(1).describe(`An array of objects, where each object defines a tab with a title and a child component.`)}).strict()},dD={name:`Modal`,schema:jx({...$E,trigger:tT.describe(`The ID of the component that opens the modal when interacted with (e.g., a button). Do NOT define the component inline.`),content:tT.describe(`The ID of the component to be displayed inside the modal. Do NOT define the component inline.`)}).strict()},fD={name:`Divider`,schema:jx({...$E,axis:Fx([`horizontal`,`vertical`]).default(`horizontal`).describe(`The orientation of the divider.`).optional()}).strict()},pD={name:`Button`,schema:jx({...$E,child:tT.describe(`The ID of the child component. Use a 'Text' component for a labeled button. Only use an 'Icon' if the requirements explicitly ask for an icon-only button. Do NOT define the child component inline.`),variant:Fx([`default`,`primary`,`borderless`]).default(`default`).describe(`A hint for the button style. If omitted, a default button style is used. 'primary' indicates this is the main call-to-action button. 'borderless' means the button has no visual border or background, making its child content appear like a clickable link.`).optional(),action:rT,checks:aT.shape.checks}).strict()},mD={name:`TextField`,schema:jx({...$E,label:Zw.describe(`The text label for the input field.`),value:Zw.describe(`The value of the text field.`).optional(),variant:Fx([`longText`,`number`,`shortText`,`obscured`]).default(`shortText`).describe(`The type of input field to display.`).optional(),validationRegexp:Ex().describe(`A regular expression used for client-side validation of the input.`).optional(),checks:aT.shape.checks}).strict()},hD={name:`CheckBox`,schema:jx({...$E,label:Zw.describe(`The text to display next to the checkbox.`),value:Xw.describe(`The current state of the checkbox (true for checked, false for unchecked).`),checks:aT.shape.checks}).strict()},gD={name:`ChoicePicker`,schema:jx({...$E,label:Zw.describe(`The label for the group of options.`).optional(),variant:Fx([`multipleSelection`,`mutuallyExclusive`]).default(`mutuallyExclusive`).describe(`A hint for how the choice picker should be displayed and behave.`).optional(),options:Ax(jx({label:Zw.describe(`The text to display for this option.`),value:Ex().describe(`The stable value associated with this option.`)}).strict()).describe(`The list of available options to choose from.`),value:$w.describe(`The list of currently selected values. This should be bound to a string array in the data model.`),displayStyle:Fx([`checkbox`,`chips`]).default(`checkbox`).describe(`The display style of the component.`).optional(),filterable:Ox().default(!1).describe(`If true, displays a search input to filter the options.`).optional(),checks:aT.shape.checks}).strict().describe(`A component that allows selecting one or more options from a list.`)},_D={name:`Slider`,schema:jx({...$E,label:Zw.describe(`The label for the slider.`).optional(),min:Dx().default(0).describe(`The minimum value of the slider.`).optional(),max:Dx().describe(`The maximum value of the slider.`),value:Qw.describe(`The current value of the slider.`),checks:aT.shape.checks}).strict()},vD={name:`DateTimeInput`,schema:jx({...$E,value:Zw.describe(`The selected date and/or time value in ISO 8601 format. If not yet set, initialize with an empty string.`),enableDate:Ox().default(!1).describe(`If true, allows the user to select a date.`).optional(),enableTime:Ox().default(!1).describe(`If true, allows the user to select a time.`).optional(),min:Mx([Zw,Ex().date(),Ex().time(),Ex().datetime()]).describe(`The minimum allowed date/time in ISO 8601 format.`).optional(),max:Mx([Zw,Ex().date(),Ex().time(),Ex().datetime()]).describe(`The maximum allowed date/time in ISO 8601 format.`).optional(),label:Zw.describe(`The text label for the input field.`).optional(),checks:aT.shape.checks}).strict()},yD=uT(eD,({props:e})=>{let t=e.text??``,n={...hT(),display:`inline-block`};switch(e.variant){case`h1`:return(0,U.jsx)(`h1`,{style:n,children:t});case`h2`:return(0,U.jsx)(`h2`,{style:n,children:t});case`h3`:return(0,U.jsx)(`h3`,{style:n,children:t});case`h4`:return(0,U.jsx)(`h4`,{style:n,children:t});case`h5`:return(0,U.jsx)(`h5`,{style:n,children:t});case`caption`:return(0,U.jsx)(`small`,{style:{...n,color:`#666`,textAlign:`left`},children:t});default:return(0,U.jsx)(`span`,{style:n,children:t})}}),bD=uT(tD,({props:e})=>{let t=e=>e===`scaleDown`?`scale-down`:e||`fill`,n={...hT(),objectFit:t(e.fit),width:`100%`,height:`auto`,display:`block`};return e.variant===`icon`?(n.width=`24px`,n.height=`24px`):e.variant===`avatar`?(n.width=`40px`,n.height=`40px`,n.borderRadius=`50%`):e.variant===`smallFeature`?n.maxWidth=`100px`:e.variant===`largeFeature`?n.maxHeight=`400px`:e.variant===`header`&&(n.height=`200px`,n.objectFit=`cover`),(0,U.jsx)(`img`,{src:e.url,alt:e.description||``,style:n})}),xD=uT(rD,({props:e})=>{let t=typeof e.name==`string`?e.name:e.name?.path;return(0,U.jsx)(`span`,{className:`material-symbols-outlined`,style:{...hT(),fontSize:`24px`,width:`24px`,height:`24px`,display:`inline-flex`,alignItems:`center`,justifyContent:`center`},children:t})}),SD=uT(iD,({props:e})=>{let t={...hT(),width:`100%`,aspectRatio:`16/9`};return(0,U.jsx)(`video`,{src:e.url,controls:!0,style:t})}),CD=uT(aD,({props:e})=>{let t={...hT(),width:`100%`};return(0,U.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`4px`,width:`100%`},children:[e.description&&(0,U.jsx)(`span`,{style:{fontSize:`12px`,color:`#666`},children:e.description}),(0,U.jsx)(`audio`,{src:e.url,controls:!0,style:t})]})}),wD=({childList:e,buildChild:t})=>Array.isArray(e)?(0,U.jsx)(U.Fragment,{children:e.map((e,n)=>{if(e&&typeof e==`object`&&`id`in e){let r=e;return(0,U.jsx)(b.Fragment,{children:t(r.id,r.basePath)},`${r.id}-${n}`)}return typeof e==`string`?(0,U.jsx)(b.Fragment,{children:t(e)},`${e}-${n}`):null})}):null,TD=new Gx(`https://a2ui.org/specification/v0_9/basic_catalog.json`,[yD,bD,xD,SD,CD,uT(oD,({props:e,buildChild:t,context:n})=>(0,U.jsx)(`div`,{style:{display:`flex`,flexDirection:`row`,justifyContent:pT(e.justify),alignItems:mT(e.align),width:`100%`,margin:0,padding:0},children:(0,U.jsx)(wD,{childList:e.children,buildChild:t,context:n})})),uT(sD,({props:e,buildChild:t,context:n})=>(0,U.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,justifyContent:pT(e.justify),alignItems:mT(e.align),width:`100%`,margin:0,padding:0},children:(0,U.jsx)(wD,{childList:e.children,buildChild:t,context:n})})),uT(cD,({props:e,buildChild:t,context:n})=>{let r=e.direction===`horizontal`;return(0,U.jsx)(`div`,{style:{display:`flex`,flexDirection:r?`row`:`column`,alignItems:mT(e.align),overflowX:r?`auto`:`hidden`,overflowY:r?`hidden`:`auto`,width:`100%`,margin:0,padding:0},children:(0,U.jsx)(wD,{childList:e.children,buildChild:t,context:n})})}),uT(lD,({props:e,buildChild:t})=>(0,U.jsx)(`div`,{style:{...gT(),backgroundColor:`#fff`,boxShadow:`0 2px 4px rgba(0,0,0,0.1)`,width:`100%`},children:e.child?t(e.child):null})),uT(uD,({props:e,buildChild:t})=>{let[n,r]=(0,b.useState)(0),i=e.tabs||[],a=i[n];return(0,U.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,width:`100%`,margin:`8px`},children:[(0,U.jsx)(`div`,{style:{display:`flex`,borderBottom:`1px solid #ccc`,marginBottom:`8px`},children:i.map((e,t)=>(0,U.jsx)(`button`,{onClick:()=>r(t),style:{padding:`8px 16px`,border:`none`,background:`none`,borderBottom:n===t?`2px solid var(--a2ui-primary-color, #007bff)`:`none`,fontWeight:n===t?`bold`:`normal`,cursor:`pointer`,color:n===t?`var(--a2ui-primary-color, #007bff)`:`inherit`},children:e.title},t))}),(0,U.jsx)(`div`,{style:{flex:1},children:a?t(a.child):null})]})}),uT(fD,({props:e})=>{let t=e.axis===`vertical`,n={margin:`8px`,border:`none`,backgroundColor:`#ccc`};return t?(n.width=`1px`,n.height=`100%`):(n.width=`100%`,n.height=`1px`),(0,U.jsx)(`div`,{style:n})}),uT(dD,({props:e,buildChild:t})=>{let[n,r]=(0,b.useState)(!1);return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`div`,{onClick:()=>r(!0),style:{display:`inline-block`},children:e.trigger?t(e.trigger):null}),n&&(0,U.jsx)(`div`,{style:{position:`fixed`,top:0,left:0,right:0,bottom:0,backgroundColor:`rgba(0,0,0,0.5)`,display:`flex`,alignItems:`center`,justifyContent:`center`,zIndex:1e3},onClick:()=>r(!1),children:(0,U.jsxs)(`div`,{style:{backgroundColor:`#fff`,padding:`24px`,borderRadius:`8px`,maxWidth:`90%`,maxHeight:`90%`,overflow:`auto`,display:`flex`,flexDirection:`column`},onClick:e=>e.stopPropagation(),children:[(0,U.jsx)(`div`,{style:{display:`flex`,justifyContent:`flex-end`},children:(0,U.jsx)(`button`,{onClick:()=>r(!1),style:{border:`none`,background:`none`,fontSize:`20px`,cursor:`pointer`,padding:`4px`},children:`×`})}),(0,U.jsx)(`div`,{style:{flex:1},children:e.content?t(e.content):null})]})})]})}),uT(pD,({props:e,buildChild:t})=>(0,U.jsx)(`button`,{style:{margin:`8px`,padding:`8px 16px`,cursor:`pointer`,border:e.variant===`borderless`?`none`:`1px solid #ccc`,backgroundColor:e.variant===`primary`?`var(--a2ui-primary-color, #007bff)`:e.variant===`borderless`?`transparent`:`#fff`,color:e.variant===`primary`?`#fff`:`inherit`,borderRadius:`4px`,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,boxSizing:`border-box`},onClick:e.action,disabled:e.isValid===!1,children:e.child?t(e.child):null})),uT(mD,({props:e})=>{let t=t=>{e.setValue(t.target.value)},n=e.variant===`longText`,r=e.variant===`number`?`number`:e.variant===`obscured`?`password`:`text`,i={padding:`8px`,width:`100%`,border:fT,borderRadius:`8px`,boxSizing:`border-box`},a=b.useId(),o=e.validationErrors&&e.validationErrors.length>0;return(0,U.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`4px`,width:`100%`,margin:`8px`},children:[e.label&&(0,U.jsx)(`label`,{htmlFor:a,style:{fontSize:`14px`,fontWeight:`bold`},children:e.label}),n?(0,U.jsx)(`textarea`,{id:a,style:{...i,border:o?`1px solid red`:fT},value:e.value||``,onChange:t}):(0,U.jsx)(`input`,{id:a,type:r,style:{...i,border:o?`1px solid red`:fT},value:e.value||``,onChange:t}),o&&(0,U.jsx)(`span`,{style:{fontSize:`12px`,color:`red`},children:e.validationErrors[0]})]})}),uT(hD,({props:e})=>{let t=t=>{e.setValue(t.target.checked)},n=b.useId(),r=e.validationErrors&&e.validationErrors.length>0;return(0,U.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,margin:`8px`},children:[(0,U.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,U.jsx)(`input`,{id:n,type:`checkbox`,checked:!!e.value,onChange:t,style:{cursor:`pointer`,outline:r?`1px solid red`:`none`}}),e.label&&(0,U.jsx)(`label`,{htmlFor:n,style:{cursor:`pointer`,color:r?`red`:`inherit`},children:e.label})]}),r&&(0,U.jsx)(`span`,{style:{fontSize:`12px`,color:`red`,marginTop:`4px`},children:e.validationErrors?.[0]})]})}),uT(gD,({props:e,context:t})=>{let[n,r]=(0,b.useState)(``),i=Array.isArray(e.value)?e.value:[],a=e.variant===`mutuallyExclusive`,o=t=>{if(a)e.setValue([t]);else{let n=i.includes(t)?i.filter(e=>e!==t):[...i,t];e.setValue(n)}},s=(e.options||[]).filter(t=>!e.filterable||n===``||String(t.label).toLowerCase().includes(n.toLowerCase())),c={display:`flex`,flexDirection:`column`,gap:`8px`,margin:`8px`,width:`100%`},l={display:`flex`,flexDirection:e.displayStyle===`chips`?`row`:`column`,flexWrap:e.displayStyle===`chips`?`wrap`:`nowrap`,gap:`8px`};return(0,U.jsxs)(`div`,{style:c,children:[e.label&&(0,U.jsx)(`strong`,{style:{fontSize:`14px`},children:e.label}),e.filterable&&(0,U.jsx)(`input`,{type:`text`,placeholder:`Filter options...`,value:n,onChange:e=>r(e.target.value),style:{padding:`4px 8px`,border:`1px solid #ccc`,borderRadius:`8px`}}),(0,U.jsx)(`div`,{style:l,children:s.map((n,r)=>{let s=i.includes(n.value);return e.displayStyle===`chips`?(0,U.jsx)(`button`,{onClick:()=>o(n.value),style:{padding:`4px 12px`,borderRadius:`16px`,border:s?`1px solid var(--a2ui-primary-color, #007bff)`:fT,backgroundColor:s?`var(--a2ui-primary-color, #007bff)`:`#fff`,color:s?`#fff`:`inherit`,cursor:`pointer`,fontSize:`12px`},children:n.label},r):(0,U.jsxs)(`label`,{style:{display:`flex`,alignItems:`center`,gap:`8px`,cursor:`pointer`},children:[(0,U.jsx)(`input`,{type:a?`radio`:`checkbox`,checked:s,onChange:()=>o(n.value),name:a?`choice-${t.componentModel.id}`:void 0}),(0,U.jsx)(`span`,{style:{fontSize:`14px`},children:n.label})]},r)})})]})}),uT(_D,({props:e})=>{let t=t=>{e.setValue(Number(t.target.value))},n=b.useId();return(0,U.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`4px`,margin:`8px`,width:`100%`},children:[(0,U.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`},children:[e.label&&(0,U.jsx)(`label`,{htmlFor:n,style:{fontSize:`14px`,fontWeight:`bold`},children:e.label}),(0,U.jsx)(`span`,{style:{fontSize:`12px`,color:`#666`},children:e.value})]}),(0,U.jsx)(`input`,{id:n,type:`range`,min:e.min??0,max:e.max,value:e.value??0,onChange:t,style:{width:`100%`,cursor:`pointer`}})]})}),uT(vD,({props:e})=>{let t=t=>{e.setValue(t.target.value)},n=b.useId(),r=`datetime-local`;e.enableDate&&!e.enableTime&&(r=`date`),!e.enableDate&&e.enableTime&&(r=`time`);let i={padding:`8px`,width:`100%`,border:fT,borderRadius:`8px`,boxSizing:`border-box`};return(0,U.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`4px`,width:`100%`,margin:`8px`},children:[e.label&&(0,U.jsx)(`label`,{htmlFor:n,style:{fontSize:`14px`,fontWeight:`bold`},children:e.label}),(0,U.jsx)(`input`,{id:n,type:r,style:i,value:e.value||``,onChange:t,min:typeof e.min==`string`?e.min:void 0,max:typeof e.max==`string`?e.max:void 0})]})})],QE),ED=(0,b.createContext)(void 0);function DD({theme:e,children:t}){return(0,U.jsx)(ED.Provider,{value:e??{},children:t})}var OD=(0,b.memo)(({surface:e,id:t,basePath:n,compImpl:r,componentModel:i})=>{let a=r.render,o=(0,b.useMemo)(()=>new Ww(e,t,n),[e,t,n,i]);return(0,U.jsx)(a,{context:o,buildChild:(0,b.useCallback)((t,n)=>{let r=n||o.dataContext.path;return(0,U.jsx)(kD,{surface:e,id:t,basePath:r},`${t}-${r}`)},[e,o.dataContext.path])})});OD.displayName=`ResolvedChild`;var kD=(0,b.memo)(({surface:e,id:t,basePath:n})=>{let r=(0,b.useMemo)(()=>{let n=0;return{subscribe:r=>{let i=e.componentsModel.onCreated.subscribe(e=>{e.id===t&&(n++,r())}),a=e.componentsModel.onDeleted.subscribe(e=>{e===t&&(n++,r())});return()=>{i.unsubscribe(),a.unsubscribe()}},getSnapshot:()=>{let r=e.componentsModel.get(t);return r?`${r.type}-${n}`:`missing-${n}`}}},[e,t]);(0,b.useSyncExternalStore)(r.subscribe,r.getSnapshot);let i=e.componentsModel.get(t);if(!i)return(0,U.jsx)(`div`,{style:{padding:`12px 16px`,borderRadius:`8px`,background:`linear-gradient(90deg, #f3f4f6 25%, #e5e7eb 50%, #f3f4f6 75%)`,backgroundSize:`200% 100%`,animation:`a2ui-shimmer 1.5s ease-in-out infinite`,minHeight:`2rem`},children:(0,U.jsx)(`style`,{children:`@keyframes a2ui-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }`})});let a=e.catalog.components.get(i.type);return a?(0,U.jsx)(OD,{surface:e,id:t,basePath:n,componentModel:i,compImpl:a}):(0,U.jsxs)(`div`,{style:{color:`red`},children:[`Unknown component: `,i.type]})});kD.displayName=`DeferredChild`;var AD=({surface:e})=>(0,U.jsx)(kD,{surface:e,id:`root`,basePath:`/`}),jD;(function(e){e.assertEqual=e=>{};function t(e){}e.assertIs=t;function n(e){throw Error()}e.assertNever=n,e.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},e.getValidEnumValues=t=>{let n=e.objectKeys(t).filter(e=>typeof t[t[e]]!=`number`),r={};for(let e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys=typeof Object.keys==`function`?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(let n of e)if(t(n))return n},e.isInteger=typeof Number.isInteger==`function`?e=>Number.isInteger(e):e=>typeof e==`number`&&Number.isFinite(e)&&Math.floor(e)===e;function r(e,t=` | `){return e.map(e=>typeof e==`string`?`'${e}'`:e).join(t)}e.joinValues=r,e.jsonStringifyReplacer=(e,t)=>typeof t==`bigint`?t.toString():t})(jD||={});var MD;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})(MD||={});var ND=jD.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),PD=e=>{switch(typeof e){case`undefined`:return ND.undefined;case`string`:return ND.string;case`number`:return Number.isNaN(e)?ND.nan:ND.number;case`boolean`:return ND.boolean;case`function`:return ND.function;case`bigint`:return ND.bigint;case`symbol`:return ND.symbol;case`object`:return Array.isArray(e)?ND.array:e===null?ND.null:e.then&&typeof e.then==`function`&&e.catch&&typeof e.catch==`function`?ND.promise:typeof Map<`u`&&e instanceof Map?ND.map:typeof Set<`u`&&e instanceof Set?ND.set:typeof Date<`u`&&e instanceof Date?ND.date:ND.object;default:return ND.unknown}},W=jD.arrayToEnum([`invalid_type`,`invalid_literal`,`custom`,`invalid_union`,`invalid_union_discriminator`,`invalid_enum_value`,`unrecognized_keys`,`invalid_arguments`,`invalid_return_type`,`invalid_date`,`invalid_string`,`too_small`,`too_big`,`invalid_intersection_types`,`not_multiple_of`,`not_finite`]),FD=class e extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=`ZodError`,this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`)i.unionErrors.map(r);else if(i.code===`invalid_return_type`)r(i.returnTypeError);else if(i.code===`invalid_arguments`)r(i.argumentsError);else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;re.message){let t={},n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};FD.create=e=>new FD(e);var ID=(e,t)=>{let n;switch(e.code){case W.invalid_type:n=e.received===ND.undefined?`Required`:`Expected ${e.expected}, received ${e.received}`;break;case W.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,jD.jsonStringifyReplacer)}`;break;case W.unrecognized_keys:n=`Unrecognized key(s) in object: ${jD.joinValues(e.keys,`, `)}`;break;case W.invalid_union:n=`Invalid input`;break;case W.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${jD.joinValues(e.options)}`;break;case W.invalid_enum_value:n=`Invalid enum value. Expected ${jD.joinValues(e.options)}, received '${e.received}'`;break;case W.invalid_arguments:n=`Invalid function arguments`;break;case W.invalid_return_type:n=`Invalid function return type`;break;case W.invalid_date:n=`Invalid date`;break;case W.invalid_string:typeof e.validation==`object`?`includes`in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position==`number`&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):`startsWith`in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:`endsWith`in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:jD.assertNever(e.validation):n=e.validation===`regex`?`Invalid`:`Invalid ${e.validation}`;break;case W.too_small:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at least`:`more than`} ${e.minimum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at least`:`over`} ${e.minimum} character(s)`:e.type===`number`||e.type===`bigint`?`Number must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${e.minimum}`:e.type===`date`?`Date must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(e.minimum))}`:`Invalid input`;break;case W.too_big:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at most`:`less than`} ${e.maximum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at most`:`under`} ${e.maximum} character(s)`:e.type===`number`?`Number must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`bigint`?`BigInt must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`date`?`Date must be ${e.exact?`exactly`:e.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(e.maximum))}`:`Invalid input`;break;case W.custom:n=`Invalid input`;break;case W.invalid_intersection_types:n=`Intersection results could not be merged`;break;case W.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case W.not_finite:n=`Number must be finite`;break;default:n=t.defaultError,jD.assertNever(e)}return{message:n}},LD=ID;function RD(){return LD}var zD=e=>{let{data:t,path:n,errorMaps:r,issueData:i}=e,a=[...n,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s=``,c=r.filter(e=>!!e).slice().reverse();for(let e of c)s=e(o,{data:t,defaultError:s}).message;return{...i,path:a,message:s}};function G(e,t){let n=RD(),r=zD({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===ID?void 0:ID].filter(e=>!!e)});e.common.issues.push(r)}var BD=class e{constructor(){this.value=`valid`}dirty(){this.value===`valid`&&(this.value=`dirty`)}abort(){this.value!==`aborted`&&(this.value=`aborted`)}static mergeArray(e,t){let n=[];for(let r of t){if(r.status===`aborted`)return VD;r.status===`dirty`&&e.dirty(),n.push(r.value)}return{status:e.value,value:n}}static async mergeObjectAsync(t,n){let r=[];for(let e of n){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return e.mergeObjectSync(t,r)}static mergeObjectSync(e,t){let n={};for(let r of t){let{key:t,value:i}=r;if(t.status===`aborted`||i.status===`aborted`)return VD;t.status===`dirty`&&e.dirty(),i.status===`dirty`&&e.dirty(),t.value!==`__proto__`&&(i.value!==void 0||r.alwaysSet)&&(n[t.value]=i.value)}return{status:e.value,value:n}}},VD=Object.freeze({status:`aborted`}),HD=e=>({status:`dirty`,value:e}),UD=e=>({status:`valid`,value:e}),WD=e=>e.status===`aborted`,GD=e=>e.status===`dirty`,KD=e=>e.status===`valid`,qD=e=>typeof Promise<`u`&&e instanceof Promise,JD;(function(e){e.errToObj=e=>typeof e==`string`?{message:e}:e||{},e.toString=e=>typeof e==`string`?e:e?.message})(JD||={});var YD=class{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},XD=(e,t)=>{if(KD(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(`Validation failed but no issues detected.`);return{success:!1,get error(){if(this._error)return this._error;let t=new FD(e.common.issues);return this._error=t,this._error}}};function ZD(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return t.code===`invalid_enum_value`?{message:a??i.defaultError}:i.data===void 0?{message:a??r??i.defaultError}:t.code===`invalid_type`?{message:a??n??i.defaultError}:{message:i.defaultError}},description:i}}var QD=class{get description(){return this._def.description}_getType(e){return PD(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:PD(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new BD,ctx:{common:e.parent.common,data:e.data,parsedType:PD(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(qD(t))throw Error(`Synchronous parse encountered promise.`);return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:PD(e)};return XD(n,this._parseSync({data:e,path:n.path,parent:n}))}"~validate"(e){let t={common:{issues:[],async:!!this[`~standard`].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:PD(e)};if(!this[`~standard`].async)try{let n=this._parseSync({data:e,path:[],parent:t});return KD(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(`encountered`)&&(this[`~standard`].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>KD(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:PD(e)},r=this._parse({data:e,path:n.path,parent:n});return XD(n,await(qD(r)?r:Promise.resolve(r)))}refine(e,t){let n=e=>typeof t==`string`||t===void 0?{message:t}:typeof t==`function`?t(e):t;return this._refinement((t,r)=>{let i=e(t),a=()=>r.addIssue({code:W.custom,...n(t)});return typeof Promise<`u`&&i instanceof Promise?i.then(e=>e?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(e,t){return this._refinement((n,r)=>e(n)?!0:(r.addIssue(typeof t==`function`?t(n,r):t),!1))}_refinement(e){return new QO({schema:this,typeName:sk.ZodEffects,effect:{type:`refinement`,refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[`~standard`]={version:1,vendor:`zod`,validate:e=>this[`~validate`](e)}}optional(){return $O.create(this,this._def)}nullable(){return ek.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return IO.create(this)}promise(){return ZO.create(this,this._def)}or(e){return zO.create([this,e],this._def)}and(e){return HO.create(this,e,this._def)}transform(e){return new QO({...ZD(this._def),schema:this,typeName:sk.ZodEffects,effect:{type:`transform`,transform:e}})}default(e){let t=typeof e==`function`?e:()=>e;return new tk({...ZD(this._def),innerType:this,defaultValue:t,typeName:sk.ZodDefault})}brand(){return new ik({typeName:sk.ZodBranded,type:this,...ZD(this._def)})}catch(e){let t=typeof e==`function`?e:()=>e;return new nk({...ZD(this._def),innerType:this,catchValue:t,typeName:sk.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return ak.create(this,e)}readonly(){return ok.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},$D=/^c[^\s-]{8,}$/i,eO=/^[0-9a-z]+$/,tO=/^[0-9A-HJKMNP-TV-Z]{26}$/i,nO=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,rO=/^[a-z0-9_-]{21}$/i,iO=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,aO=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,oO=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,sO=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,cO,lO=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,uO=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,dO=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,fO=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,pO=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,mO=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,hO=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`,gO=RegExp(`^${hO}$`);function _O(e){let t=`[0-5]\\d`;e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision??(t=`${t}(\\.\\d+)?`);let n=e.precision?`+`:`?`;return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function vO(e){return RegExp(`^${_O(e)}$`)}function yO(e){let t=`${hO}T${_O(e)}`,n=[];return n.push(e.local?`Z?`:`Z`),e.offset&&n.push(`([+-]\\d{2}:?\\d{2})`),t=`${t}(${n.join(`|`)})`,RegExp(`^${t}$`)}function bO(e,t){return!!((t===`v4`||!t)&&lO.test(e)||(t===`v6`||!t)&&dO.test(e))}function xO(e,t){if(!iO.test(e))return!1;try{let[n]=e.split(`.`);if(!n)return!1;let r=n.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(n.length+(4-n.length%4)%4,`=`),i=JSON.parse(atob(r));return!(typeof i!=`object`||!i||`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&i.alg!==t)}catch{return!1}}function SO(e,t){return!!((t===`v4`||!t)&&uO.test(e)||(t===`v6`||!t)&&fO.test(e))}var CO=class e extends QD{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==ND.string){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:ND.string,received:t.parsedType}),VD}let t=new BD,n;for(let r of this._def.checks)if(r.kind===`min`)e.data.lengthr.value&&(n=this._getOrReturnCtx(e,n),G(n,{code:W.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),t.dirty());else if(r.kind===`length`){let i=e.data.length>r.value,a=e.data.lengthe.test(t),{validation:t,code:W.invalid_string,...JD.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(e){return this._addCheck({kind:`email`,...JD.errToObj(e)})}url(e){return this._addCheck({kind:`url`,...JD.errToObj(e)})}emoji(e){return this._addCheck({kind:`emoji`,...JD.errToObj(e)})}uuid(e){return this._addCheck({kind:`uuid`,...JD.errToObj(e)})}nanoid(e){return this._addCheck({kind:`nanoid`,...JD.errToObj(e)})}cuid(e){return this._addCheck({kind:`cuid`,...JD.errToObj(e)})}cuid2(e){return this._addCheck({kind:`cuid2`,...JD.errToObj(e)})}ulid(e){return this._addCheck({kind:`ulid`,...JD.errToObj(e)})}base64(e){return this._addCheck({kind:`base64`,...JD.errToObj(e)})}base64url(e){return this._addCheck({kind:`base64url`,...JD.errToObj(e)})}jwt(e){return this._addCheck({kind:`jwt`,...JD.errToObj(e)})}ip(e){return this._addCheck({kind:`ip`,...JD.errToObj(e)})}cidr(e){return this._addCheck({kind:`cidr`,...JD.errToObj(e)})}datetime(e){return typeof e==`string`?this._addCheck({kind:`datetime`,precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:`datetime`,precision:e?.precision===void 0?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...JD.errToObj(e?.message)})}date(e){return this._addCheck({kind:`date`,message:e})}time(e){return typeof e==`string`?this._addCheck({kind:`time`,precision:null,message:e}):this._addCheck({kind:`time`,precision:e?.precision===void 0?null:e?.precision,...JD.errToObj(e?.message)})}duration(e){return this._addCheck({kind:`duration`,...JD.errToObj(e)})}regex(e,t){return this._addCheck({kind:`regex`,regex:e,...JD.errToObj(t)})}includes(e,t){return this._addCheck({kind:`includes`,value:e,position:t?.position,...JD.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:`startsWith`,value:e,...JD.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:`endsWith`,value:e,...JD.errToObj(t)})}min(e,t){return this._addCheck({kind:`min`,value:e,...JD.errToObj(t)})}max(e,t){return this._addCheck({kind:`max`,value:e,...JD.errToObj(t)})}length(e,t){return this._addCheck({kind:`length`,value:e,...JD.errToObj(t)})}nonempty(e){return this.min(1,JD.errToObj(e))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:`trim`}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toLowerCase`}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toUpperCase`}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind===`datetime`)}get isDate(){return!!this._def.checks.find(e=>e.kind===`date`)}get isTime(){return!!this._def.checks.find(e=>e.kind===`time`)}get isDuration(){return!!this._def.checks.find(e=>e.kind===`duration`)}get isEmail(){return!!this._def.checks.find(e=>e.kind===`email`)}get isURL(){return!!this._def.checks.find(e=>e.kind===`url`)}get isEmoji(){return!!this._def.checks.find(e=>e.kind===`emoji`)}get isUUID(){return!!this._def.checks.find(e=>e.kind===`uuid`)}get isNANOID(){return!!this._def.checks.find(e=>e.kind===`nanoid`)}get isCUID(){return!!this._def.checks.find(e=>e.kind===`cuid`)}get isCUID2(){return!!this._def.checks.find(e=>e.kind===`cuid2`)}get isULID(){return!!this._def.checks.find(e=>e.kind===`ulid`)}get isIP(){return!!this._def.checks.find(e=>e.kind===`ip`)}get isCIDR(){return!!this._def.checks.find(e=>e.kind===`cidr`)}get isBase64(){return!!this._def.checks.find(e=>e.kind===`base64`)}get isBase64url(){return!!this._def.checks.find(e=>e.kind===`base64url`)}get minLength(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew CO({checks:[],typeName:sk.ZodString,coerce:e?.coerce??!1,...ZD(e)});function wO(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=(t.toString().split(`.`)[1]||``).length,i=n>r?n:r;return Number.parseInt(e.toFixed(i).replace(`.`,``))%Number.parseInt(t.toFixed(i).replace(`.`,``))/10**i}var TO=class e extends QD{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==ND.number){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:ND.number,received:t.parsedType}),VD}let t,n=new BD;for(let r of this._def.checks)r.kind===`int`?jD.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),G(t,{code:W.invalid_type,expected:`integer`,received:`float`,message:r.message}),n.dirty()):r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),G(t,{code:W.too_big,maximum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):r.kind===`multipleOf`?wO(e.data,r.value)!==0&&(t=this._getOrReturnCtx(e,t),G(t,{code:W.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):r.kind===`finite`?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),G(t,{code:W.not_finite,message:r.message}),n.dirty()):jD.assertNever(r);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit(`min`,e,!0,JD.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,JD.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,JD.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,JD.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:JD.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(e){return this._addCheck({kind:`int`,message:JD.toString(e)})}positive(e){return this._addCheck({kind:`min`,value:0,inclusive:!1,message:JD.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:0,inclusive:!1,message:JD.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:0,inclusive:!0,message:JD.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:0,inclusive:!0,message:JD.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:JD.toString(t)})}finite(e){return this._addCheck({kind:`finite`,message:JD.toString(e)})}safe(e){return this._addCheck({kind:`min`,inclusive:!0,value:-(2**53-1),message:JD.toString(e)})._addCheck({kind:`max`,inclusive:!0,value:2**53-1,message:JD.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuee.kind===`int`||e.kind===`multipleOf`&&jD.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(n.kind===`finite`||n.kind===`int`||n.kind===`multipleOf`)return!0;else n.kind===`min`?(t===null||n.value>t)&&(t=n.value):n.kind===`max`&&(e===null||n.valuenew TO({checks:[],typeName:sk.ZodNumber,coerce:e?.coerce||!1,...ZD(e)});var EO=class e extends QD{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==ND.bigint)return this._getInvalidInput(e);let t,n=new BD;for(let r of this._def.checks)r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),G(t,{code:W.too_big,type:`bigint`,maximum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):r.kind===`multipleOf`?e.data%r.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),G(t,{code:W.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):jD.assertNever(r);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:ND.bigint,received:t.parsedType}),VD}gte(e,t){return this.setLimit(`min`,e,!0,JD.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,JD.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,JD.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,JD.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:JD.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!1,message:JD.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!1,message:JD.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!0,message:JD.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!0,message:JD.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:JD.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew EO({checks:[],typeName:sk.ZodBigInt,coerce:e?.coerce??!1,...ZD(e)});var DO=class extends QD{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==ND.boolean){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:ND.boolean,received:t.parsedType}),VD}return UD(e.data)}};DO.create=e=>new DO({typeName:sk.ZodBoolean,coerce:e?.coerce||!1,...ZD(e)});var OO=class e extends QD{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==ND.date){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:ND.date,received:t.parsedType}),VD}if(Number.isNaN(e.data.getTime()))return G(this._getOrReturnCtx(e),{code:W.invalid_date}),VD;let t=new BD,n;for(let r of this._def.checks)r.kind===`min`?e.data.getTime()r.value&&(n=this._getOrReturnCtx(e,n),G(n,{code:W.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:`date`}),t.dirty()):jD.assertNever(r);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(e,t){return this._addCheck({kind:`min`,value:e.getTime(),message:JD.toString(t)})}max(e,t){return this._addCheck({kind:`max`,value:e.getTime(),message:JD.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e==null?null:new Date(e)}get maxDate(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew OO({checks:[],coerce:e?.coerce||!1,typeName:sk.ZodDate,...ZD(e)});var kO=class extends QD{_parse(e){if(this._getType(e)!==ND.symbol){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:ND.symbol,received:t.parsedType}),VD}return UD(e.data)}};kO.create=e=>new kO({typeName:sk.ZodSymbol,...ZD(e)});var AO=class extends QD{_parse(e){if(this._getType(e)!==ND.undefined){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:ND.undefined,received:t.parsedType}),VD}return UD(e.data)}};AO.create=e=>new AO({typeName:sk.ZodUndefined,...ZD(e)});var jO=class extends QD{_parse(e){if(this._getType(e)!==ND.null){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:ND.null,received:t.parsedType}),VD}return UD(e.data)}};jO.create=e=>new jO({typeName:sk.ZodNull,...ZD(e)});var MO=class extends QD{constructor(){super(...arguments),this._any=!0}_parse(e){return UD(e.data)}};MO.create=e=>new MO({typeName:sk.ZodAny,...ZD(e)});var NO=class extends QD{constructor(){super(...arguments),this._unknown=!0}_parse(e){return UD(e.data)}};NO.create=e=>new NO({typeName:sk.ZodUnknown,...ZD(e)});var PO=class extends QD{_parse(e){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:ND.never,received:t.parsedType}),VD}};PO.create=e=>new PO({typeName:sk.ZodNever,...ZD(e)});var FO=class extends QD{_parse(e){if(this._getType(e)!==ND.undefined){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:ND.void,received:t.parsedType}),VD}return UD(e.data)}};FO.create=e=>new FO({typeName:sk.ZodVoid,...ZD(e)});var IO=class e extends QD{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==ND.array)return G(t,{code:W.invalid_type,expected:ND.array,received:t.parsedType}),VD;if(r.exactLength!==null){let e=t.data.length>r.exactLength.value,i=t.data.lengthr.maxLength.value&&(G(t,{code:W.too_big,maximum:r.maxLength.value,type:`array`,inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>r.type._parseAsync(new YD(t,e,t.path,n)))).then(e=>BD.mergeArray(n,e));let i=[...t.data].map((e,n)=>r.type._parseSync(new YD(t,e,t.path,n)));return BD.mergeArray(n,i)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:JD.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:JD.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:JD.toString(n)}})}nonempty(e){return this.min(1,e)}};IO.create=(e,t)=>new IO({type:e,minLength:null,maxLength:null,exactLength:null,typeName:sk.ZodArray,...ZD(t)});function LO(e){if(e instanceof RO){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=$O.create(LO(r))}return new RO({...e._def,shape:()=>t})}else if(e instanceof IO)return new IO({...e._def,type:LO(e.element)});else if(e instanceof $O)return $O.create(LO(e.unwrap()));else if(e instanceof ek)return ek.create(LO(e.unwrap()));else if(e instanceof UO)return UO.create(e.items.map(e=>LO(e)));else return e}var RO=class e extends QD{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=jD.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==ND.object){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:ND.object,received:t.parsedType}),VD}let{status:t,ctx:n}=this._processInputParams(e),{shape:r,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof PO&&this._def.unknownKeys===`strip`))for(let e in n.data)i.includes(e)||a.push(e);let o=[];for(let e of i){let t=r[e],i=n.data[e];o.push({key:{status:`valid`,value:e},value:t._parse(new YD(n,i,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof PO){let e=this._def.unknownKeys;if(e===`passthrough`)for(let e of a)o.push({key:{status:`valid`,value:e},value:{status:`valid`,value:n.data[e]}});else if(e===`strict`)a.length>0&&(G(n,{code:W.unrecognized_keys,keys:a}),t.dirty());else if(e!==`strip`)throw Error(`Internal ZodObject error: invalid unknownKeys value.`)}else{let e=this._def.catchall;for(let t of a){let r=n.data[t];o.push({key:{status:`valid`,value:t},value:e._parse(new YD(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of o){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>BD.mergeObjectSync(t,e)):BD.mergeObjectSync(t,o)}get shape(){return this._def.shape()}strict(t){return JD.errToObj,new e({...this._def,unknownKeys:`strict`,...t===void 0?{}:{errorMap:(e,n)=>{let r=this._def.errorMap?.(e,n).message??n.defaultError;return e.code===`unrecognized_keys`?{message:JD.errToObj(t).message??r}:{message:r}}}})}strip(){return new e({...this._def,unknownKeys:`strip`})}passthrough(){return new e({...this._def,unknownKeys:`passthrough`})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:sk.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let n={};for(let e of jD.objectKeys(t))t[e]&&this.shape[e]&&(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}omit(t){let n={};for(let e of jD.objectKeys(this.shape))t[e]||(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}deepPartial(){return LO(this)}partial(t){let n={};for(let e of jD.objectKeys(this.shape)){let r=this.shape[e];t&&!t[e]?n[e]=r:n[e]=r.optional()}return new e({...this._def,shape:()=>n})}required(t){let n={};for(let e of jD.objectKeys(this.shape))if(t&&!t[e])n[e]=this.shape[e];else{let t=this.shape[e];for(;t instanceof $O;)t=t._def.innerType;n[e]=t}return new e({...this._def,shape:()=>n})}keyof(){return JO(jD.objectKeys(this.shape))}};RO.create=(e,t)=>new RO({shape:()=>e,unknownKeys:`strip`,catchall:PO.create(),typeName:sk.ZodObject,...ZD(t)}),RO.strictCreate=(e,t)=>new RO({shape:()=>e,unknownKeys:`strict`,catchall:PO.create(),typeName:sk.ZodObject,...ZD(t)}),RO.lazycreate=(e,t)=>new RO({shape:e,unknownKeys:`strip`,catchall:PO.create(),typeName:sk.ZodObject,...ZD(t)});var zO=class extends QD{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;function r(e){for(let t of e)if(t.result.status===`valid`)return t.result;for(let n of e)if(n.result.status===`dirty`)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new FD(e.ctx.common.issues));return G(t,{code:W.invalid_union,unionErrors:n}),VD}if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(r);{let e,r=[];for(let i of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:n});if(a.status===`valid`)return a;a.status===`dirty`&&!e&&(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=r.map(e=>new FD(e));return G(t,{code:W.invalid_union,unionErrors:i}),VD}}get options(){return this._def.options}};zO.create=(e,t)=>new zO({options:e,typeName:sk.ZodUnion,...ZD(t)});var BO=e=>e instanceof KO?BO(e.schema):e instanceof QO?BO(e.innerType()):e instanceof qO?[e.value]:e instanceof YO?e.options:e instanceof XO?jD.objectValues(e.enum):e instanceof tk?BO(e._def.innerType):e instanceof AO?[void 0]:e instanceof jO?[null]:e instanceof $O?[void 0,...BO(e.unwrap())]:e instanceof ek?[null,...BO(e.unwrap())]:e instanceof ik||e instanceof ok?BO(e.unwrap()):e instanceof nk?BO(e._def.innerType):[],Bee=class e extends QD{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==ND.object)return G(t,{code:W.invalid_type,expected:ND.object,received:t.parsedType}),VD;let n=this.discriminator,r=t.data[n],i=this.optionsMap.get(r);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(G(t,{code:W.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),VD)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){let i=new Map;for(let e of n){let n=BO(e.shape[t]);if(!n.length)throw Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let r of n){if(i.has(r))throw Error(`Discriminator property ${String(t)} has duplicate value ${String(r)}`);i.set(r,e)}}return new e({typeName:sk.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...ZD(r)})}};function VO(e,t){let n=PD(e),r=PD(t);if(e===t)return{valid:!0,data:e};if(n===ND.object&&r===ND.object){let n=jD.objectKeys(t),r=jD.objectKeys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=VO(e[n],t[n]);if(!r.valid)return{valid:!1};i[n]=r.data}return{valid:!0,data:i}}else if(n===ND.array&&r===ND.array){if(e.length!==t.length)return{valid:!1};let n=[];for(let r=0;r{if(WD(e)||WD(r))return VD;let i=VO(e.value,r.value);return i.valid?((GD(e)||GD(r))&&t.dirty(),{status:t.value,value:i.data}):(G(n,{code:W.invalid_intersection_types}),VD)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([e,t])=>r(e,t)):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};HO.create=(e,t,n)=>new HO({left:e,right:t,typeName:sk.ZodIntersection,...ZD(n)});var UO=class e extends QD{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==ND.array)return G(n,{code:W.invalid_type,expected:ND.array,received:n.parsedType}),VD;if(n.data.lengththis._def.items.length&&(G(n,{code:W.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),t.dirty());let r=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new YD(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(r).then(e=>BD.mergeArray(t,e)):BD.mergeArray(t,r)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};UO.create=(e,t)=>{if(!Array.isArray(e))throw Error(`You must pass an array of schemas to z.tuple([ ... ])`);return new UO({items:e,typeName:sk.ZodTuple,rest:null,...ZD(t)})};var Vee=class e extends QD{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==ND.object)return G(n,{code:W.invalid_type,expected:ND.object,received:n.parsedType}),VD;let r=[],i=this._def.keyType,a=this._def.valueType;for(let e in n.data)r.push({key:i._parse(new YD(n,e,n.path,e)),value:a._parse(new YD(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?BD.mergeObjectAsync(t,r):BD.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof QD?new e({keyType:t,valueType:n,typeName:sk.ZodRecord,...ZD(r)}):new e({keyType:CO.create(),valueType:t,typeName:sk.ZodRecord,...ZD(n)})}},WO=class extends QD{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==ND.map)return G(n,{code:W.invalid_type,expected:ND.map,received:n.parsedType}),VD;let r=this._def.keyType,i=this._def.valueType,a=[...n.data.entries()].map(([e,t],a)=>({key:r._parse(new YD(n,e,n.path,[a,`key`])),value:i._parse(new YD(n,t,n.path,[a,`value`]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of a){let r=await n.key,i=await n.value;if(r.status===`aborted`||i.status===`aborted`)return VD;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}})}else{let e=new Map;for(let n of a){let r=n.key,i=n.value;if(r.status===`aborted`||i.status===`aborted`)return VD;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}}};WO.create=(e,t,n)=>new WO({valueType:t,keyType:e,typeName:sk.ZodMap,...ZD(n)});var GO=class e extends QD{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==ND.set)return G(n,{code:W.invalid_type,expected:ND.set,received:n.parsedType}),VD;let r=this._def;r.minSize!==null&&n.data.sizer.maxSize.value&&(G(n,{code:W.too_big,maximum:r.maxSize.value,type:`set`,inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let i=this._def.valueType;function a(e){let n=new Set;for(let r of e){if(r.status===`aborted`)return VD;r.status===`dirty`&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let o=[...n.data.values()].map((e,t)=>i._parse(new YD(n,e,n.path,t)));return n.common.async?Promise.all(o).then(e=>a(e)):a(o)}min(t,n){return new e({...this._def,minSize:{value:t,message:JD.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:JD.toString(n)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};GO.create=(e,t)=>new GO({valueType:e,minSize:null,maxSize:null,typeName:sk.ZodSet,...ZD(t)});var Hee=class e extends QD{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==ND.function)return G(t,{code:W.invalid_type,expected:ND.function,received:t.parsedType}),VD;function n(e,n){return zD({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,RD(),ID].filter(e=>!!e),issueData:{code:W.invalid_arguments,argumentsError:n}})}function r(e,n){return zD({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,RD(),ID].filter(e=>!!e),issueData:{code:W.invalid_return_type,returnTypeError:n}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof ZO){let e=this;return UD(async function(...t){let o=new FD([]),s=await e._def.args.parseAsync(t,i).catch(e=>{throw o.addIssue(n(t,e)),o}),c=await Reflect.apply(a,this,s);return await e._def.returns._def.type.parseAsync(c,i).catch(e=>{throw o.addIssue(r(c,e)),o})})}else{let e=this;return UD(function(...t){let o=e._def.args.safeParse(t,i);if(!o.success)throw new FD([n(t,o.error)]);let s=Reflect.apply(a,this,o.data),c=e._def.returns.safeParse(s,i);if(!c.success)throw new FD([r(s,c.error)]);return c.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:UO.create(t).rest(NO.create())})}returns(t){return new e({...this._def,returns:t})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(t,n,r){return new e({args:t||UO.create([]).rest(NO.create()),returns:n||NO.create(),typeName:sk.ZodFunction,...ZD(r)})}},KO=class extends QD{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};KO.create=(e,t)=>new KO({getter:e,typeName:sk.ZodLazy,...ZD(t)});var qO=class extends QD{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return G(t,{received:t.data,code:W.invalid_literal,expected:this._def.value}),VD}return{status:`valid`,value:e.data}}get value(){return this._def.value}};qO.create=(e,t)=>new qO({value:e,typeName:sk.ZodLiteral,...ZD(t)});function JO(e,t){return new YO({values:e,typeName:sk.ZodEnum,...ZD(t)})}var YO=class e extends QD{_parse(e){if(typeof e.data!=`string`){let t=this._getOrReturnCtx(e),n=this._def.values;return G(t,{expected:jD.joinValues(n),received:t.parsedType,code:W.invalid_type}),VD}if(this._cache||=new Set(this._def.values),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return G(t,{received:t.data,code:W.invalid_enum_value,options:n}),VD}return UD(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(t,n=this._def){return e.create(t,{...this._def,...n})}exclude(t,n=this._def){return e.create(this.options.filter(e=>!t.includes(e)),{...this._def,...n})}};YO.create=JO;var XO=class extends QD{_parse(e){let t=jD.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==ND.string&&n.parsedType!==ND.number){let e=jD.objectValues(t);return G(n,{expected:jD.joinValues(e),received:n.parsedType,code:W.invalid_type}),VD}if(this._cache||=new Set(jD.getValidEnumValues(this._def.values)),!this._cache.has(e.data)){let e=jD.objectValues(t);return G(n,{received:n.data,code:W.invalid_enum_value,options:e}),VD}return UD(e.data)}get enum(){return this._def.values}};XO.create=(e,t)=>new XO({values:e,typeName:sk.ZodNativeEnum,...ZD(t)});var ZO=class extends QD{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==ND.promise&&t.common.async===!1?(G(t,{code:W.invalid_type,expected:ND.promise,received:t.parsedType}),VD):UD((t.parsedType===ND.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}};ZO.create=(e,t)=>new ZO({type:e,typeName:sk.ZodPromise,...ZD(t)});var QO=class extends QD{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===sk.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=this._def.effect||null,i={addIssue:e=>{G(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(i.addIssue=i.addIssue.bind(i),r.type===`preprocess`){let e=r.transform(n.data,i);if(n.common.async)return Promise.resolve(e).then(async e=>{if(t.value===`aborted`)return VD;let r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return r.status===`aborted`?VD:r.status===`dirty`||t.value===`dirty`?HD(r.value):r});{if(t.value===`aborted`)return VD;let r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return r.status===`aborted`?VD:r.status===`dirty`||t.value===`dirty`?HD(r.value):r}}if(r.type===`refinement`){let e=e=>{let t=r.refinement(e,i);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(`Async refinement encountered during synchronous parse operation. Use .parseAsync instead.`);return e};if(n.common.async===!1){let r=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return r.status===`aborted`?VD:(r.status===`dirty`&&t.dirty(),e(r.value),{status:t.value,value:r.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(n=>n.status===`aborted`?VD:(n.status===`dirty`&&t.dirty(),e(n.value).then(()=>({status:t.value,value:n.value}))))}if(r.type===`transform`)if(n.common.async===!1){let e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!KD(e))return VD;let a=r.transform(e.value,i);if(a instanceof Promise)throw Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);return{status:t.value,value:a}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(e=>KD(e)?Promise.resolve(r.transform(e.value,i)).then(e=>({status:t.value,value:e})):VD);jD.assertNever(r)}};QO.create=(e,t,n)=>new QO({schema:e,typeName:sk.ZodEffects,effect:t,...ZD(n)}),QO.createWithPreprocess=(e,t,n)=>new QO({schema:t,effect:{type:`preprocess`,transform:e},typeName:sk.ZodEffects,...ZD(n)});var $O=class extends QD{_parse(e){return this._getType(e)===ND.undefined?UD(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};$O.create=(e,t)=>new $O({innerType:e,typeName:sk.ZodOptional,...ZD(t)});var ek=class extends QD{_parse(e){return this._getType(e)===ND.null?UD(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};ek.create=(e,t)=>new ek({innerType:e,typeName:sk.ZodNullable,...ZD(t)});var tk=class extends QD{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===ND.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};tk.create=(e,t)=>new tk({innerType:e,typeName:sk.ZodDefault,defaultValue:typeof t.default==`function`?t.default:()=>t.default,...ZD(t)});var nk=class extends QD{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return qD(r)?r.then(e=>({status:`valid`,value:e.status===`valid`?e.value:this._def.catchValue({get error(){return new FD(n.common.issues)},input:n.data})})):{status:`valid`,value:r.status===`valid`?r.value:this._def.catchValue({get error(){return new FD(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};nk.create=(e,t)=>new nk({innerType:e,typeName:sk.ZodCatch,catchValue:typeof t.catch==`function`?t.catch:()=>t.catch,...ZD(t)});var rk=class extends QD{_parse(e){if(this._getType(e)!==ND.nan){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:ND.nan,received:t.parsedType}),VD}return{status:`valid`,value:e.data}}};rk.create=e=>new rk({typeName:sk.ZodNaN,...ZD(e)});var ik=class extends QD{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}},ak=class e extends QD{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?VD:e.status===`dirty`?(t.dirty(),HD(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})();{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?VD:e.status===`dirty`?(t.dirty(),{status:`dirty`,value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(t,n){return new e({in:t,out:n,typeName:sk.ZodPipeline})}},ok=class extends QD{_parse(e){let t=this._def.innerType._parse(e),n=e=>(KD(e)&&(e.value=Object.freeze(e.value)),e);return qD(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}};ok.create=(e,t)=>new ok({innerType:e,typeName:sk.ZodReadonly,...ZD(t)}),RO.lazycreate;var sk;(function(e){e.ZodString=`ZodString`,e.ZodNumber=`ZodNumber`,e.ZodNaN=`ZodNaN`,e.ZodBigInt=`ZodBigInt`,e.ZodBoolean=`ZodBoolean`,e.ZodDate=`ZodDate`,e.ZodSymbol=`ZodSymbol`,e.ZodUndefined=`ZodUndefined`,e.ZodNull=`ZodNull`,e.ZodAny=`ZodAny`,e.ZodUnknown=`ZodUnknown`,e.ZodNever=`ZodNever`,e.ZodVoid=`ZodVoid`,e.ZodArray=`ZodArray`,e.ZodObject=`ZodObject`,e.ZodUnion=`ZodUnion`,e.ZodDiscriminatedUnion=`ZodDiscriminatedUnion`,e.ZodIntersection=`ZodIntersection`,e.ZodTuple=`ZodTuple`,e.ZodRecord=`ZodRecord`,e.ZodMap=`ZodMap`,e.ZodSet=`ZodSet`,e.ZodFunction=`ZodFunction`,e.ZodLazy=`ZodLazy`,e.ZodLiteral=`ZodLiteral`,e.ZodEnum=`ZodEnum`,e.ZodEffects=`ZodEffects`,e.ZodNativeEnum=`ZodNativeEnum`,e.ZodOptional=`ZodOptional`,e.ZodNullable=`ZodNullable`,e.ZodDefault=`ZodDefault`,e.ZodCatch=`ZodCatch`,e.ZodPromise=`ZodPromise`,e.ZodBranded=`ZodBranded`,e.ZodPipeline=`ZodPipeline`,e.ZodReadonly=`ZodReadonly`})(sk||={});var Uee=CO.create;TO.create,rk.create,EO.create,DO.create,OO.create,kO.create,AO.create,jO.create,MO.create;var Wee=NO.create;PO.create,FO.create,IO.create;var ck=RO.create;RO.strictCreate,zO.create,Bee.create,HO.create,UO.create,Vee.create,WO.create,GO.create,Hee.create,KO.create,qO.create;var lk=YO.create;XO.create,ZO.create,QO.create,$O.create,ek.create,QO.createWithPreprocess,ak.create;var Gee=uT({name:`Text`,schema:ck({text:sT.DynamicString,variant:lk([`h1`,`h2`,`h3`,`h4`,`h5`,`caption`,`body`]).optional()})},({props:e})=>{let t=e.text??``;switch(e.variant){case`h1`:return(0,U.jsx)(`h1`,{children:t});case`h2`:return(0,U.jsx)(`h2`,{children:t});case`h3`:return(0,U.jsx)(`h3`,{children:t});case`h4`:return(0,U.jsx)(`h4`,{children:t});case`h5`:return(0,U.jsx)(`h5`,{children:t});case`caption`:return(0,U.jsx)(`small`,{children:t});default:return(0,U.jsx)(`span`,{children:t})}}),Kee=uT({name:`Button`,schema:ck({child:sT.ComponentId,action:sT.Action,variant:lk([`primary`,`borderless`]).optional()})},({props:e,buildChild:t})=>(0,U.jsx)(`button`,{style:{padding:`8px 16px`,cursor:`pointer`,border:e.variant===`borderless`?`none`:`1px solid #ccc`,backgroundColor:e.variant===`primary`?`#007bff`:`transparent`,color:e.variant===`primary`?`#fff`:`inherit`,borderRadius:`4px`},onClick:e.action,children:e.child?t(e.child):null})),uk=({childList:e,buildChild:t})=>Array.isArray(e)?(0,U.jsx)(U.Fragment,{children:e.map((e,n)=>{if(e&&typeof e==`object`&&`id`in e){let r=e;return(0,U.jsx)(b.Fragment,{children:t(r.id,r.basePath)},`${r.id}-${n}`)}return typeof e==`string`?(0,U.jsx)(b.Fragment,{children:t(e)},`${e}-${n}`):null})}):null,qee=ck({children:sT.ChildList,justify:lk([`center`,`end`,`spaceAround`,`spaceBetween`,`spaceEvenly`,`start`,`stretch`]).optional(),align:lk([`start`,`center`,`end`,`stretch`]).optional()}),Jee=e=>{switch(e){case`center`:return`center`;case`end`:return`flex-end`;case`spaceAround`:return`space-around`;case`spaceBetween`:return`space-between`;case`spaceEvenly`:return`space-evenly`;case`start`:return`flex-start`;case`stretch`:return`stretch`;default:return`flex-start`}},Yee=e=>{switch(e){case`start`:return`flex-start`;case`center`:return`center`;case`end`:return`flex-end`;case`stretch`:return`stretch`;default:return`stretch`}},Xee=uT({name:`Row`,schema:qee},({props:e,buildChild:t})=>(0,U.jsx)(`div`,{style:{display:`flex`,flexDirection:`row`,justifyContent:Jee(e.justify),alignItems:Yee(e.align)},children:(0,U.jsx)(uk,{childList:e.children,buildChild:t})})),Zee=ck({children:sT.ChildList,justify:lk([`start`,`center`,`end`,`spaceBetween`,`spaceAround`,`spaceEvenly`,`stretch`]).optional(),align:lk([`center`,`end`,`start`,`stretch`]).optional()}),Qee=e=>{switch(e){case`center`:return`center`;case`end`:return`flex-end`;case`spaceAround`:return`space-around`;case`spaceBetween`:return`space-between`;case`spaceEvenly`:return`space-evenly`;case`start`:return`flex-start`;case`stretch`:return`stretch`;default:return`flex-start`}},$ee=e=>{switch(e){case`start`:return`flex-start`;case`center`:return`center`;case`end`:return`flex-end`;case`stretch`:return`stretch`;default:return`stretch`}};new Gx(`https://a2ui.org/specification/v0_9/catalogs/minimal/minimal_catalog.json`,[Gee,Kee,Xee,uT({name:`Column`,schema:Zee},({props:e,buildChild:t})=>(0,U.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,justifyContent:Qee(e.justify),alignItems:$ee(e.align),gap:`8px`},children:(0,U.jsx)(uk,{childList:e.children,buildChild:t})})),uT({name:`TextField`,schema:ck({label:sT.DynamicString,value:sT.DynamicString,variant:lk([`longText`,`number`,`shortText`,`obscured`]).optional(),validationRegexp:Uee().optional()})},({props:e,context:t})=>{let n=t=>{e.setValue&&e.setValue(t.target.value)},r=e.variant===`longText`,i=e.variant===`number`?`number`:e.variant===`obscured`?`password`:`text`,a={padding:`8px`,width:`100%`,border:`1px solid #ccc`,borderRadius:`4px`,boxSizing:`border-box`},o=`textfield-${t.componentModel.id}`;return(0,U.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`4px`,width:`100%`},children:[e.label&&(0,U.jsx)(`label`,{htmlFor:o,style:{fontSize:`14px`,fontWeight:`bold`},children:e.label}),r?(0,U.jsx)(`textarea`,{id:o,style:a,value:e.value||``,onChange:n}):(0,U.jsx)(`input`,{id:o,type:i,style:a,value:e.value||``,onChange:n})]})})],[Wx({name:`capitalize`,returnType:`string`,schema:ck({value:Wee()})},e=>{let t=e.value;return typeof t==`string`?t.toUpperCase():t})]);var dk=(0,b.createContext)(null),fk=(0,b.createContext)(null);function ete({onAction:e,theme:t,catalog:n,children:r}){let i=(0,b.useRef)(e??null);i.current=e??null;let a=(0,b.useRef)(null);a.current||=new Hw([n??TD],e=>{if(i.current){let t={userAction:{name:e?.name??`unknown`,surfaceId:e?.surfaceId??`default`,sourceComponentId:e?.sourceComponentId,context:e?.context,timestamp:e?.timestamp??new Date().toISOString()}};i.current(t)}});let o=a.current,[s,c]=(0,b.useState)(0),[l,u]=(0,b.useState)(null),d=(0,b.useRef)(null);d.current||={processMessages:e=>{try{o.processMessages(e)}catch(e){console.warn(`[A2UI] processMessages error:`,e),u(e instanceof Error?e.message:String(e));return}u(null),c(e=>e+1)},dispatch:e=>{i.current&&i.current(e)},getSurface:e=>o.model.getSurface(e),clearSurfaces:()=>{let e=o.model.surfacesMap;for(let[t]of e)o.processMessages([{version:`v0.9`,deleteSurface:{surfaceId:t}}]);c(e=>e+1)}};let f=d.current,p=(0,b.useMemo)(()=>({version:s,error:l}),[s,l]);return(0,U.jsx)(dk.Provider,{value:f,children:(0,U.jsx)(fk.Provider,{value:p,children:(0,U.jsx)(DD,{theme:t,children:r})})})}function tte(){let e=(0,b.useContext)(dk);if(!e)throw Error(`useA2UIActions must be used within an A2UIProvider`);return e}function nte(){let e=(0,b.useContext)(fk);if(!e)throw Error(`useA2UIState must be used within an A2UIProvider`);return e}function pk(){let e=tte(),t=nte();return{processMessages:e.processMessages,getSurface:e.getSurface,clearSurfaces:e.clearSurfaces,version:t.version}}function mk(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t({...n,[r]:Cw(e.valueType._def,{...t,currentPath:[...t.currentPath,`properties`,r]})??MC(t)}),{}),additionalProperties:t.rejectedAdditionalProperties};let n={type:`object`,additionalProperties:Cw(e.valueType._def,{...t,currentPath:[...t.currentPath,`additionalProperties`]})??t.allowedAdditionalProperties};if(t.target===`openApi3`)return n;if(e.keyType?._def.typeName===H.ZodString&&e.keyType._def.checks?.length){let{type:r,...i}=JC(e.keyType._def,t);return{...n,propertyNames:i}}else if(e.keyType?._def.typeName===H.ZodEnum)return{...n,propertyNames:{enum:e.keyType._def.values}};else if(e.keyType?._def.typeName===H.ZodBranded&&e.keyType._def.type._def.typeName===H.ZodString&&e.keyType._def.type._def.checks?.length){let{type:r,...i}=IC(e.keyType._def,t);return{...n,propertyNames:i}}return n}function nw(e,t){return t.mapStrategy===`record`?tw(e,t):{type:`array`,maxItems:125,items:{type:`array`,items:[Cw(e.keyType._def,{...t,currentPath:[...t.currentPath,`items`,`items`,`0`]})||MC(t),Cw(e.valueType._def,{...t,currentPath:[...t.currentPath,`items`,`items`,`1`]})||MC(t)],minItems:2,maxItems:2}}}function rw(e){let t=e.values,n=Object.keys(e.values).filter(e=>typeof t[t[e]]!=`number`).map(e=>t[e]),r=Array.from(new Set(n.map(e=>typeof e)));return{type:r.length===1?r[0]===`string`?`string`:`number`:[`string`,`number`],enum:n}}function iw(e){return e.target===`openAi`?void 0:{not:MC({...e,currentPath:[...e.currentPath,`not`]})}}function aw(e){return e.target===`openApi3`?{enum:[`null`],nullable:!0}:{type:`null`}}var ow={ZodString:`string`,ZodNumber:`number`,ZodBigInt:`integer`,ZodBoolean:`boolean`,ZodNull:`null`};function sw(e,t){if(t.target===`openApi3`)return cw(e,t);let n=e.options instanceof Map?Array.from(e.options.values()):e.options;if(n.every(e=>e._def.typeName in ow&&(!e._def.checks||!e._def.checks.length))){let e=n.reduce((e,t)=>{let n=ow[t._def.typeName];return n&&!e.includes(n)?[...e,n]:e},[]);return{type:e.length>1?e:e[0]}}else if(n.every(e=>e._def.typeName===`ZodLiteral`&&!e.description)){let e=n.reduce((e,t)=>{let n=typeof t._def.value;switch(n){case`string`:case`number`:case`boolean`:return[...e,n];case`bigint`:return[...e,`integer`];case`object`:if(t._def.value===null)return[...e,`null`];default:return e}},[]);if(e.length===n.length){let t=e.filter((e,t,n)=>n.indexOf(e)===t);return{type:t.length>1?t:t[0],enum:n.reduce((e,t)=>e.includes(t._def.value)?e:[...e,t._def.value],[])}}}else if(n.every(e=>e._def.typeName===`ZodEnum`))return{type:`string`,enum:n.reduce((e,t)=>[...e,...t._def.values.filter(t=>!e.includes(t))],[])};return cw(e,t)}var cw=(e,t)=>{let n=(e.options instanceof Map?Array.from(e.options.values()):e.options).map((e,n)=>Cw(e._def,{...t,currentPath:[...t.currentPath,`anyOf`,`${n}`]})).filter(e=>!!e&&(!t.strictUnions||typeof e==`object`&&Object.keys(e).length>0));return n.length?{anyOf:n}:void 0};function lw(e,t){if([`ZodString`,`ZodNumber`,`ZodBigInt`,`ZodBoolean`,`ZodNull`].includes(e.innerType._def.typeName)&&(!e.innerType._def.checks||!e.innerType._def.checks.length))return t.target===`openApi3`?{type:ow[e.innerType._def.typeName],nullable:!0}:{type:[ow[e.innerType._def.typeName],`null`]};if(t.target===`openApi3`){let n=Cw(e.innerType._def,{...t,currentPath:[...t.currentPath]});return n&&`$ref`in n?{allOf:[n],nullable:!0}:n&&{...n,nullable:!0}}let n=Cw(e.innerType._def,{...t,currentPath:[...t.currentPath,`anyOf`,`0`]});return n&&{anyOf:[n,{type:`null`}]}}function uw(e,t){let n={type:`number`};if(!e.checks)return n;for(let r of e.checks)switch(r.kind){case`int`:n.type=`integer`,bS(n,`type`,r.message,t);break;case`min`:t.target===`jsonSchema7`?r.inclusive?xS(n,`minimum`,r.value,r.message,t):xS(n,`exclusiveMinimum`,r.value,r.message,t):(r.inclusive||(n.exclusiveMinimum=!0),xS(n,`minimum`,r.value,r.message,t));break;case`max`:t.target===`jsonSchema7`?r.inclusive?xS(n,`maximum`,r.value,r.message,t):xS(n,`exclusiveMaximum`,r.value,r.message,t):(r.inclusive||(n.exclusiveMaximum=!0),xS(n,`maximum`,r.value,r.message,t));break;case`multipleOf`:xS(n,`multipleOf`,r.value,r.message,t);break}return n}function dw(e,t){let n=t.target===`openAi`,r={type:`object`,properties:{}},i=[],a=e.shape();for(let e in a){let o=a[e];if(o===void 0||o._def===void 0)continue;let s=pw(o);s&&n&&(o._def.typeName===`ZodOptional`&&(o=o._def.innerType),o.isNullable()||(o=o.nullable()),s=!1);let c=Cw(o._def,{...t,currentPath:[...t.currentPath,`properties`,e],propertyPath:[...t.currentPath,`properties`,e]});c!==void 0&&(r.properties[e]=c,s||i.push(e))}i.length&&(r.required=i);let o=fw(e,t);return o!==void 0&&(r.additionalProperties=o),r}function fw(e,t){if(e.catchall._def.typeName!==`ZodNever`)return Cw(e.catchall._def,{...t,currentPath:[...t.currentPath,`additionalProperties`]});switch(e.unknownKeys){case`passthrough`:return t.allowedAdditionalProperties;case`strict`:return t.rejectedAdditionalProperties;case`strip`:return t.removeAdditionalStrategy===`strict`?t.allowedAdditionalProperties:t.rejectedAdditionalProperties}}function pw(e){try{return e.isOptional()}catch{return!0}}var mw=(e,t)=>{if(t.currentPath.toString()===t.propertyPath?.toString())return Cw(e.innerType._def,t);let n=Cw(e.innerType._def,{...t,currentPath:[...t.currentPath,`anyOf`,`1`]});return n?{anyOf:[{not:MC(t)},n]}:MC(t)},hw=(e,t)=>{if(t.pipeStrategy===`input`)return Cw(e.in._def,t);if(t.pipeStrategy===`output`)return Cw(e.out._def,t);let n=Cw(e.in._def,{...t,currentPath:[...t.currentPath,`allOf`,`0`]});return{allOf:[n,Cw(e.out._def,{...t,currentPath:[...t.currentPath,`allOf`,n?`1`:`0`]})].filter(e=>e!==void 0)}};function gw(e,t){return Cw(e.type._def,t)}function _w(e,t){let n={type:`array`,uniqueItems:!0,items:Cw(e.valueType._def,{...t,currentPath:[...t.currentPath,`items`]})};return e.minSize&&xS(n,`minItems`,e.minSize.value,e.minSize.message,t),e.maxSize&&xS(n,`maxItems`,e.maxSize.value,e.maxSize.message,t),n}function vw(e,t){return e.rest?{type:`array`,minItems:e.items.length,items:e.items.map((e,n)=>Cw(e._def,{...t,currentPath:[...t.currentPath,`items`,`${n}`]})).reduce((e,t)=>t===void 0?e:[...e,t],[]),additionalItems:Cw(e.rest._def,{...t,currentPath:[...t.currentPath,`additionalItems`]})}:{type:`array`,minItems:e.items.length,maxItems:e.items.length,items:e.items.map((e,n)=>Cw(e._def,{...t,currentPath:[...t.currentPath,`items`,`${n}`]})).reduce((e,t)=>t===void 0?e:[...e,t],[])}}function yw(e){return{not:MC(e)}}function bw(e){return MC(e)}var xw=(e,t)=>Cw(e.innerType._def,t),Sw=(e,t,n)=>{switch(t){case H.ZodString:return JC(e,n);case H.ZodNumber:return uw(e,n);case H.ZodObject:return dw(e,n);case H.ZodBigInt:return PC(e,n);case H.ZodBoolean:return FC();case H.ZodDate:return RC(e,n);case H.ZodUndefined:return yw(n);case H.ZodNull:return aw(n);case H.ZodArray:return NC(e,n);case H.ZodUnion:case H.ZodDiscriminatedUnion:return sw(e,n);case H.ZodIntersection:return WC(e,n);case H.ZodTuple:return vw(e,n);case H.ZodRecord:return tw(e,n);case H.ZodLiteral:return GC(e,n);case H.ZodEnum:return HC(e);case H.ZodNativeEnum:return rw(e);case H.ZodNullable:return lw(e,n);case H.ZodOptional:return mw(e,n);case H.ZodMap:return nw(e,n);case H.ZodSet:return _w(e,n);case H.ZodLazy:return()=>e.getter()._def;case H.ZodPromise:return gw(e,n);case H.ZodNaN:case H.ZodNever:return iw(n);case H.ZodEffects:return VC(e,n);case H.ZodAny:return MC(n);case H.ZodUnknown:return bw(n);case H.ZodDefault:return BC(e,n);case H.ZodBranded:return IC(e,n);case H.ZodReadonly:return xw(e,n);case H.ZodCatch:return LC(e,n);case H.ZodPipeline:return hw(e,n);case H.ZodFunction:case H.ZodVoid:case H.ZodSymbol:return;default:return(e=>void 0)(t)}};function Cw(e,t,n=!1){let r=t.seen.get(e);if(t.override){let i=t.override?.(e,t,r,n);if(i!==gS)return i}if(r&&!n){let e=ww(r,t);if(e!==void 0)return e}let i={def:e,path:t.currentPath,jsonSchema:void 0};t.seen.set(e,i);let a=Sw(e,e.typeName,t),o=typeof a==`function`?Cw(a(),t):a;if(o&&Tw(e,t,o),t.postProcess){let n=t.postProcess(o,e,t);return i.jsonSchema=o,n}return i.jsonSchema=o,o}var ww=(e,t)=>{switch(t.$refStrategy){case`root`:return{$ref:e.path.join(`/`)};case`relative`:return{$ref:SS(t.currentPath,e.path)};case`none`:case`seen`:return e.path.lengtht.currentPath[n]===e)?(console.warn(`Recursive reference detected at ${t.currentPath.join(`/`)}! Defaulting to any`),MC(t)):t.$refStrategy===`seen`?MC(t):void 0}},Tw=(e,t,n)=>(e.description&&(n.description=e.description,t.markdownDescription&&(n.markdownDescription=e.description)),n),Ew=(e,t)=>{let n=yS(t),r=typeof t==`object`&&t.definitions?Object.entries(t.definitions).reduce((e,[t,r])=>({...e,[t]:Cw(r._def,{...n,currentPath:[...n.basePath,n.definitionPath,t]},!0)??MC(n)}),{}):void 0,i=typeof t==`string`?t:t?.nameStrategy===`title`?void 0:t?.name,a=Cw(e._def,i===void 0?n:{...n,currentPath:[...n.basePath,n.definitionPath,i]},!1)??MC(n),o=typeof t==`object`&&t.name!==void 0&&t.nameStrategy===`title`?t.name:void 0;o!==void 0&&(a.title=o),n.flags.hasReferencedOpenAiAnyType&&(r||={},r[n.openAiAnyTypeName]||(r[n.openAiAnyTypeName]={type:[`string`,`number`,`integer`,`boolean`,`array`,`null`],items:{$ref:n.$refStrategy===`relative`?`1`:[...n.basePath,n.definitionPath,n.openAiAnyTypeName].join(`/`)}}));let s=i===void 0?r?{...a,[n.definitionPath]:r}:a:{$ref:[...n.$refStrategy===`relative`?[]:n.basePath,n.definitionPath,i].join(`/`),[n.definitionPath]:{...r,[i]:a}};return n.target===`jsonSchema7`?s.$schema=`http://json-schema.org/draft-07/schema#`:(n.target===`jsonSchema2019-09`||n.target===`openAi`)&&(s.$schema=`https://json-schema.org/draft/2019-09/schema#`),n.target===`openAi`&&(`anyOf`in s||`oneOf`in s||`allOf`in s||`type`in s&&Array.isArray(s.type))&&console.warn(`Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property.`),s},Dw=class{constructor(e,t){this.catalogs=e,this.actionHandler=t,this.model=new mS,this.actionHandler&&this.model.onAction.subscribe(this.actionHandler)}getClientCapabilities(e){let t={"v0.9":{supportedCatalogIds:this.catalogs.map(e=>e.id)}};return e?.includeInlineCatalogs&&(t[`v0.9`].inlineCatalogs=this.catalogs.map(e=>this.generateInlineCatalog(e))),t}generateInlineCatalog(e){let t={};for(let[n,r]of e.components.entries()){let e=Ew(r.schema,{target:`jsonSchema2019-09`});this.processRefs(e),t[n]={allOf:[{$ref:`common_types.json#/$defs/ComponentCommon`},{properties:{component:{const:n},...e.properties},required:[`component`,...e.required||[]]}]}}let n=[];for(let t of e.functions.values()){let e=Ew(t.schema,{target:`jsonSchema2019-09`});this.processRefs(e),n.push({name:t.name,description:t.schema.description,returnType:t.returnType,parameters:e})}let r;if(e.themeSchema){let t=Ew(e.themeSchema,{target:`jsonSchema2019-09`});this.processRefs(t),r=t.properties}return{catalogId:e.id,components:t,functions:n.length>0?n:void 0,theme:r}}processRefs(e){if(!(typeof e!=`object`||!e)){if(typeof e.description==`string`&&e.description.startsWith(`REF:`)){let t=e.description.substring(4).split(`|`),n=t[0],r=t[1]||``;for(let t of Object.keys(e))delete e[t];e.$ref=n,r&&(e.description=r);return}if(Array.isArray(e))for(let t of e)this.processRefs(t);else for(let t of Object.keys(e))this.processRefs(e[t])}}getClientDataModel(){let e={};for(let t of this.model.surfacesMap.values())t.sendDataModel&&(e[t.id]=t.dataModel.get(`/`));if(Object.keys(e).length!==0)return{version:`v0.9`,surfaces:e}}onSurfaceCreated(e){return this.model.onSurfaceCreated.subscribe(e)}onSurfaceDeleted(e){return this.model.onSurfaceDeleted.subscribe(e)}processMessages(e){for(let t of e)this.processMessage(t)}processMessage(e){let t=[`createSurface`,`updateComponents`,`updateDataModel`,`deleteSurface`].filter(t=>t in e);if(t.length>1)throw new Ox(`Message contains multiple update types: ${t.join(`, `)}.`);if(`createSurface`in e){this.processCreateSurfaceMessage(e);return}if(`deleteSurface`in e){this.processDeleteSurfaceMessage(e);return}if(`updateComponents`in e){this.processUpdateComponentsMessage(e);return}if(`updateDataModel`in e){this.processUpdateDataModelMessage(e);return}}processCreateSurfaceMessage(e){let{surfaceId:t,catalogId:n,theme:r,sendDataModel:i}=e.createSurface,a=this.catalogs.find(e=>e.id===n);if(!a)throw new jx(`Catalog not found: ${n}`);if(this.model.getSurface(t))throw new jx(`Surface ${t} already exists.`);let o=new pS(t,a,r,i??!1);this.model.addSurface(o)}processDeleteSurfaceMessage(e){let t=e.deleteSurface;t.surfaceId&&this.model.deleteSurface(t.surfaceId)}processUpdateComponentsMessage(e){let t=e.updateComponents;if(!t.surfaceId)return;let n=this.model.getSurface(t.surfaceId);if(!n)throw new jx(`Surface not found for message: ${t.surfaceId}`);for(let e of t.components){let{id:t,component:r,...i}=e;if(!t)throw new Ox(`Component '${r}' is missing an 'id'.`);let a=n.componentsModel.get(t);if(a)if(r&&r!==a.type){n.componentsModel.removeComponent(t);let e=new hS(t,r,i);n.componentsModel.addComponent(e)}else a.properties=i;else{if(!r)throw new Ox(`Cannot create component ${t} without a type.`);let e=new hS(t,r,i);n.componentsModel.addComponent(e)}}}processUpdateDataModelMessage(e){let t=e.updateDataModel;if(!t.surfaceId)return;let n=this.model.getSurface(t.surfaceId);if(!n)throw new jx(`Surface not found for message: ${t.surfaceId}`);let r=t.path||`/`,i=t.value;n.dataModel.set(r,i)}resolvePath(e,t){return e.startsWith(`/`)?e:t?`${t.endsWith(`/`)?t:`${t}/`}${e}`:`/${e}`}},Ow=class e{constructor(e,t){this.surface=e,this.path=t,this.dataModel=e.dataModel,this.functionInvoker=e.catalog.invoker}set(e,t){let n=this.resolvePath(e);this.dataModel.set(n,t)}resolveDynamicValue(e){if(typeof e!=`object`||!e||Array.isArray(e))return e;if(`path`in e){let t=this.resolvePath(e.path);return this.dataModel.get(t)}if(`call`in e){let t=e,n={};for(let[e,r]of Object.entries(t.args))n[e]=this.resolveDynamicValue(r);let r=new AbortController,i=this.evaluateFunctionReactive(t.call,n,r.signal);return i===void 0?void 0:Mx(i)?i.peek():i}return e}subscribeDynamicValue(e,t){let n=this.resolveSignal(e),r=!0,i=n.peek(),a=sS(()=>{let e=n.value;i=e,r||t(e)});return r=!1,{get value(){return i},unsubscribe:()=>{a(),n.unsubscribe&&n.unsubscribe()}}}resolveSignal(e){if(typeof e!=`object`||!e||Array.isArray(e))return Zx(e);if(`path`in e){let t=this.resolvePath(e.path);return this.dataModel.getSignal(t)}if(`call`in e){let t=e,n={};for(let[e,r]of Object.entries(t.args))n[e]=this.resolveSignal(r);if(Object.keys(n).length===0){let e=new AbortController,n=this.evaluateFunctionReactive(t.call,{},e.signal),r=n instanceof Xx?n:Zx(n);return r.unsubscribe=()=>e.abort(),r}let r=Object.keys(n),i=Zx(void 0),a,o,s=nS(()=>{let e={};for(let t=0;t{try{let e=s.value;a&&a.abort(),o&&=(o(),void 0),a=new AbortController;let n=this.evaluateFunctionReactive(t.call,e,a.signal);Mx(n)?o=sS(()=>{i.value=n.value}):i.value=n}catch(e){this.dispatchExpressionError(e,t.call),i.value=void 0}});return i.unsubscribe=()=>{c(),o&&o(),a&&a.abort();for(let e=0;e1&&(t=t.slice(0,-1)),t===`/`&&(t=``),`${t}/${e}`}},kw=class{constructor(e,t,n=`/`){let r=e.componentsModel.get(t);if(!r)throw new jx(`Component not found: ${t}`);this.componentModel=r,this.surfaceComponents=e.componentsModel,this.dataContext=new Ow(e,n),this._actionDispatcher=t=>e.dispatchAction(t,this.componentModel.id)}dispatchAction(e){return this._actionDispatcher(e)}};function Aw(e){return jw(e)}function jw(e,t){let n=e;for(;n._def.typeName===`ZodOptional`||n._def.typeName===`ZodNullable`||n._def.typeName===`ZodDefault`;)n=n._def.innerType;if(t===`checks`)return{type:`CHECKABLE`};if(n._def.typeName===`ZodUnion`){let e=n._def.options;if(e.some(e=>e._def.typeName===`ZodObject`&&e._def.shape().event))return{type:`ACTION`};if(e.some(e=>e._def.typeName===`ZodObject`&&e._def.shape().path&&!e._def.shape().componentId))return{type:`DYNAMIC`};if(e.some(e=>e._def.typeName===`ZodObject`&&e._def.shape().componentId&&e._def.shape().path))return{type:`STRUCTURAL`}}else n._def.typeName;if(n._def.typeName===`ZodArray`)return{type:`ARRAY`,element:jw(n._def.type)};if(n._def.typeName===`ZodObject`){let e={},t=n._def.shape();for(let[n,r]of Object.entries(t))e[n]=jw(r,n);return{type:`OBJECT`,shape:e}}return{type:`STATIC`}}var Mw=class{constructor(e,t){this.dataListeners=[],this.propsListeners=[],this.currentProps={},this.isConnected=!1,this.context=e,this.behaviorTree=Aw(t),this.behaviorTree.type!==`OBJECT`&&(this.behaviorTree={type:`OBJECT`,shape:{}}),this.resolveInitialProps()}resolveInitialProps(){let e=this.context.componentModel.properties,t=this.resolveAndBind(e,this.behaviorTree,[],!0);this.currentProps={...this.currentProps,...t}}connect(){if(this.isConnected)return;this.isConnected=!0;let e=this.context.componentModel.onUpdated.subscribe(()=>{this.rebuildAllBindings()});this.compUnsub=()=>e.unsubscribe(),this.rebuildAllBindings()}rebuildAllBindings(){this.dataListeners.forEach(e=>e()),this.dataListeners=[];let e=this.context.componentModel.properties,t=this.resolveAndBind(e,this.behaviorTree,[],!1);this.currentProps={...this.currentProps,...t},this.notify()}resolveAndBind(e,t,n,r){if(e==null)return e;switch(t.type){case`DYNAMIC`:{let t=this.context.dataContext.subscribeDynamicValue(e,e=>{this.updateDeepValue(n,e),this.notify()});return r?t.unsubscribe():this.dataListeners.push(()=>t.unsubscribe()),t.value}case`ACTION`:return()=>{let t=e=>{if(typeof e!=`object`||!e)return e;if(`path`in e||`call`in e)return this.context.dataContext.resolveDynamicValue(e);if(Array.isArray(e))return e.map(t);let n={};for(let[r,i]of Object.entries(e))n[r]=t(i);return n};this.context.dispatchAction(t(e))};case`STRUCTURAL`:if(e&&typeof e==`object`&&e.path&&e.componentId){let t=this.context.dataContext.subscribeDynamicValue({path:e.path},t=>{let r=Array.isArray(t)?t:[],i=this.context.dataContext.nested(e.path),a=r.map((t,n)=>({id:e.componentId,basePath:i.nested(String(n)).path}));this.updateDeepValue(n,a),this.notify()});r?t.unsubscribe():this.dataListeners.push(()=>t.unsubscribe());let i=Array.isArray(t.value)?t.value:[],a=this.context.dataContext.nested(e.path);return i.map((t,n)=>({id:e.componentId,basePath:a.nested(String(n)).path}))}return e;case`CHECKABLE`:{let t=Array.isArray(e)?e:[],i=t.map(()=>({valid:!0,message:``})),a=n.slice(0,-1),o=()=>{let e=i.filter(e=>!e.valid).map(e=>e.message);this.updateDeepValue([...a,`isValid`],e.length===0),this.updateDeepValue([...a,`validationErrors`],e),this.notify()};t.forEach((e,t)=>{let n=e.condition||e,a=e.message||`Validation failed`;i[t].message=a;let s=this.context.dataContext.subscribeDynamicValue(n,e=>{i[t].valid=!!e,o()});r?s.unsubscribe():this.dataListeners.push(()=>s.unsubscribe()),i[t].valid=!!s.value});let s=i.filter(e=>!e.valid).map(e=>e.message);return this.updateDeepValue([...a,`isValid`],s.length===0),this.updateDeepValue([...a,`validationErrors`],s),e}case`STATIC`:return e;case`ARRAY`:return Array.isArray(e)?e.map((e,i)=>this.resolveAndBind(e,t.element,[...n,i.toString()],r)):e;case`OBJECT`:{if(typeof e!=`object`)return e;let i={};for(let[a,o]of Object.entries(e)){let e=t.shape[a]||{type:`STATIC`};i[a]=this.resolveAndBind(o,e,[...n,a],r)}for(let[n,r]of Object.entries(t.shape))if(r.type===`DYNAMIC`){let t=`set${n.charAt(0).toUpperCase()+n.slice(1)}`,r=e[n];i[t]=e=>{r&&typeof r==`object`&&`path`in r&&this.context.dataContext.set(r.path,e)}}return i}}}updateDeepValue(e,t){this.currentProps=this.cloneAndUpdate(this.currentProps,e,t)}cloneAndUpdate(e,t,n){if(t.length===0)return n;let[r,...i]=t;if(Array.isArray(e)){let t=[...e];return t[Number(r)]=this.cloneAndUpdate(t[Number(r)],i,n),t}else return{...e||{},[r]:this.cloneAndUpdate((e||{})[r],i,n)}}dispose(){this.isConnected&&(this.isConnected=!1,this.dataListeners.forEach(e=>e()),this.dataListeners=[],this.compUnsub&&=(this.compUnsub(),void 0))}notify(){this.propsListeners.forEach(e=>e(this.currentProps))}subscribe(e){return this.propsListeners.length===0&&this.connect(),this.propsListeners.push(e),{unsubscribe:()=>{this.propsListeners=this.propsListeners.filter(t=>t!==e),this.propsListeners.length===0&&this.dispose()}}}get snapshot(){return this.currentProps}},Nw=bx({path:hx().describe(`A JSON Pointer path to a value in the data model.`)}).describe(`REF:common_types.json#/$defs/DataBinding|A JSON Pointer path to a value in the data model.`),Pw=bx({call:hx().describe(`The name of the function to call.`),args:Sx(vx()).describe(`Arguments passed to the function.`),returnType:wx([`string`,`number`,`boolean`,`array`,`object`,`any`,`void`]).default(`boolean`)}).describe(`REF:common_types.json#/$defs/FunctionCall|Invokes a named function on the client.`),Fw=xx([_x(),Nw,Pw]).describe(`REF:common_types.json#/$defs/DynamicBoolean|A boolean value that can be a literal, a path, or a function call returning a boolean.`),Iw=xx([hx(),Nw,Pw]).describe(`REF:common_types.json#/$defs/DynamicString|Represents a string`),Lw=xx([gx(),Nw,Pw]).describe(`REF:common_types.json#/$defs/DynamicNumber|Represents a value that can be either a literal number, a path to a number in the data model, or a function call returning a number.`),Rw=xx([yx(hx()),Nw,Pw]).describe(`REF:common_types.json#/$defs/DynamicStringList|Represents a value that can be either a literal array of strings, a path to a string array in the data model, or a function call returning a string array.`),zw=xx([hx(),gx(),_x(),yx(vx()),Nw,Pw]).describe(`REF:common_types.json#/$defs/DynamicValue|A value that can be a literal, a path, or a function call returning any type.`),Bw=hx().describe(`REF:common_types.json#/$defs/ComponentId|The unique identifier for a component.`),Vw=xx([yx(Bw).describe(`A static list of child component IDs.`),bx({componentId:Bw,path:hx().describe(`The path to the list of component property objects in the data model.`)}).describe(`A template for generating a dynamic list of children.`)]).describe(`REF:common_types.json#/$defs/ChildList`),Hw=xx([bx({event:bx({name:hx(),context:Sx(zw).optional()})}).describe(`Triggers a server-side event.`),bx({functionCall:Pw}).describe(`Executes a local client-side function.`)]).describe(`REF:common_types.json#/$defs/Action`),Uw=bx({condition:Fw,message:hx().describe(`The error message to display if the check fails.`)}).describe(`REF:common_types.json#/$defs/CheckRule|A check rule consisting of a condition and an error message.`),Ww=bx({checks:yx(Uw).optional().describe(`A list of checks to perform.`)}).describe(`REF:common_types.json#/$defs/Checkable|Properties for components that support client-side checks.`),Gw=bx({label:Iw.optional().describe(`REF:common_types.json#/$defs/DynamicString|A short string used by assistive technologies to convey the purpose of an element.`),description:Iw.optional().describe(`REF:common_types.json#/$defs/DynamicString|Additional information provided by assistive technologies about an element.`)}).describe(`REF:common_types.json#/$defs/AccessibilityAttributes|Attributes to enhance accessibility.`),Kw={ComponentId:Bw,ChildList:Vw,DataBinding:Nw,DynamicValue:zw,DynamicString:Iw,DynamicNumber:Lw,DynamicBoolean:Fw,DynamicStringList:Rw,FunctionCall:Pw,CheckRule:Uw,Checkable:Ww,Action:Hw,AccessibilityAttributes:Gw,AnyComponent:bx({component:hx().describe(`The type name of the component.`),id:Bw.optional(),weight:gx().optional()}).passthrough().describe(`A generic A2UI component definition.`)},qw=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),Jw=o(((e,t)=>{t.exports=qw()})),U=Jw();function Yw(e,t){let n=(0,b.memo)(t,(e,t)=>!(e.props!==t.props||e.context.componentModel.id!==t.context.componentModel.id||e.context.dataContext.path!==t.context.dataContext.path));return{name:e.name,schema:e.schema,render:({context:t,buildChild:r})=>{let i=(0,b.useRef)(null);i.current?i.current.context!==t&&(i.current.dispose(),i.current=new Mw(t,e.schema)):i.current=new Mw(t,e.schema);let a=i.current,o=(0,b.useSyncExternalStore)((0,b.useCallback)(e=>{let t=a.subscribe(e);return()=>t.unsubscribe()},[a]),(0,b.useCallback)(()=>a.snapshot,[a]));return(0,b.useEffect)(()=>()=>a.dispose(),[a]),(0,U.jsx)(n,{props:o||{},buildChild:r,context:t})}}}var Xw=`16px`,Zw=`1px solid #ccc`,Qw=e=>{switch(e){case`center`:return`center`;case`end`:return`flex-end`;case`spaceAround`:return`space-around`;case`spaceBetween`:return`space-between`;case`spaceEvenly`:return`space-evenly`;case`start`:return`flex-start`;case`stretch`:return`stretch`;default:return`flex-start`}},$w=e=>{switch(e){case`start`:return`flex-start`;case`center`:return`center`;case`end`:return`flex-end`;case`stretch`:return`stretch`;default:return`stretch`}},eT=()=>({margin:`8px`,boxSizing:`border-box`}),tT=()=>({margin:`8px`,padding:Xw,border:Zw,borderRadius:`8px`,boxSizing:`border-box`}),nT=class e{static{this.MAX_DEPTH=10}parse(t,n=0){if(n>e.MAX_DEPTH)throw new Ax(`Max recursion depth reached in parse`);if(!t||!t.includes("${"))return[t];let r=[],i=new rT(t);for(;!i.isAtEnd();)if(i.matches("${")){i.advance(2);let e=this.extractInterpolationContent(i),t=this.parseExpression(e,n+1);t!==null&&r.push(t)}else if(i.peek()===`\\`&&i.peek(1)===`$`&&i.peek(2)===`{`)i.advance(),r.push("${"),i.advance(2);else{let e=i.pos;for(;!i.isAtEnd()&&!(i.matches("${")||i.peek()===`\\`&&i.peek(1)===`$`&&i.peek(2)===`{`);)i.advance();r.push(i.input.substring(e,i.pos))}return r.filter(e=>e!==null&&e!==``)}extractInterpolationContent(e){let t=e.pos,n=1;for(;!e.isAtEnd()&&n>0;){let t=e.advance();if(t===`{`)n++;else if(t===`}`)n--;else if(t===`'`||t===`"`){let n=t;for(;!e.isAtEnd();){let t=e.advance();if(t===`\\`)e.advance();else if(t===n)break}}}if(n>0)throw new Ax(`Unclosed interpolation: missing '}'`);return e.input.substring(t,e.pos-1)}parseExpression(e,t=0){if(e=e.trim(),!e)return``;let n=new rT(e),r=this.parseExpressionInternal(n,t);if(!n.isAtEnd())throw new Ax(`Unexpected characters at end of expression: '${n.input.substring(n.pos)}'`);return r}parseExpressionInternal(e,t){if(e.skipWhitespace(),e.isAtEnd())return``;if(e.matches("${")){e.advance(2);let n=this.extractInterpolationContent(e);return this.parseExpression(n,t+1)}if(e.matchesString(`'`)||e.matchesString(`"`))return this.parseStringLiteral(e);if(this.isDigit(e.peek()))return this.parseNumberLiteral(e);if(e.matchesKeyword(`true`))return!0;if(e.matchesKeyword(`false`))return!1;if(e.matchesKeyword(`null`))return``;let n=this.scanPathOrIdentifier(e);return e.skipWhitespace(),e.peek()===`(`?this.parseFunctionCall(n,e,t):n?{path:n}:``}scanPathOrIdentifier(e){let t=e.pos;for(;!e.isAtEnd();){let t=e.peek();if(this.isAlnum(t)||t===`/`||t===`.`||t===`_`||t===`-`)e.advance();else break}return e.input.substring(t,e.pos)}parseFunctionCall(e,t,n){t.match(`(`),t.skipWhitespace();let r={};for(;!t.isAtEnd()&&t.peek()!==`)`;){let i=this.scanIdentifier(t);if(t.skipWhitespace(),!t.match(`:`))throw new Ax(`Expected ':' after argument name '${i}' in function '${e}'`);t.skipWhitespace(),r[i]=this.parseExpressionInternal(t,n),t.skipWhitespace(),t.peek()===`,`&&(t.advance(),t.skipWhitespace())}if(!t.match(`)`))throw new Ax(`Expected ')' after function arguments for '${e}'`);return{call:e,args:r,returnType:`any`}}scanIdentifier(e){let t=e.pos;for(;!e.isAtEnd()&&(this.isAlnum(e.peek())||e.peek()===`_`);)e.advance();return e.input.substring(t,e.pos)}parseStringLiteral(e){let t=e.advance(),n=``;for(;!e.isAtEnd();){let r=e.advance();if(r===`\\`){let t=e.advance();t===`n`?n+=` +`:t===`t`?n+=` `:t===`r`?n+=`\r`:n+=t}else if(r===t)break;else n+=r}return n}parseNumberLiteral(e){let t=e.pos;for(;!e.isAtEnd()&&(this.isDigit(e.peek())||e.peek()===`.`);)e.advance();return Number(e.input.substring(t,e.pos))}isAlnum(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`||e>=`0`&&e<=`9`}isDigit(e){return e>=`0`&&e<=`9`}},rT=class{constructor(e){this.input=e,this.pos=0}isAtEnd(){return this.pos>=this.input.length}peek(e=0){return this.pos+e>=this.input.length?`\0`:this.input[this.pos+e]}advance(e=1){let t=this.input.substring(this.pos,this.pos+e);return this.pos+=e,t}match(e){return this.peek()===e?(this.advance(),!0):!1}matches(e){return!!this.input.startsWith(e,this.pos)}matchesString(e){return this.peek()===e}matchesKeyword(e){if(this.input.startsWith(e,this.pos)){let t=this.peek(e.length);if(!/[a-zA-Z0-9_]/.test(t))return this.advance(e.length),!0}return!1}skipWhitespace(){for(;!this.isAtEnd()&&/\s/.test(this.peek());)this.advance()}},iT=365.2425,aT=6048e5,oT=864e5,sT=3600*24;sT*7,sT*iT/12*3;var cT=Symbol.for(`constructDateFrom`);function lT(e,t){return typeof e==`function`?e(t):e&&typeof e==`object`&&cT in e?e[cT](t):e instanceof Date?new e.constructor(t):new Date(t)}function uT(e,t){return lT(t||e,e)}var dT={};function fT(){return dT}function pT(e,t){let n=fT(),r=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,i=uT(e,t?.in),a=i.getDay(),o=(a=a.getTime()?r+1:n.getTime()>=s.getTime()?r:r-1}function gT(e){let t=uT(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),e-+n}function _T(e,...t){let n=lT.bind(null,e||t.find(e=>typeof e==`object`));return t.map(n)}function vT(e,t){let n=uT(e,t?.in);return n.setHours(0,0,0,0),n}function yT(e,t,n){let[r,i]=_T(n?.in,e,t),a=vT(r),o=vT(i),s=+a-gT(a),c=+o-gT(o);return Math.round((s-c)/oT)}function bT(e,t){let n=hT(e,t),r=lT(t?.in||e,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),mT(r)}function xT(e){return e instanceof Date||typeof e==`object`&&Object.prototype.toString.call(e)===`[object Date]`}function ST(e){return!(!xT(e)&&typeof e!=`number`||isNaN(+uT(e)))}function CT(e,t){let n=uT(e,t?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}var wT={lessThanXSeconds:{one:`less than a second`,other:`less than {{count}} seconds`},xSeconds:{one:`1 second`,other:`{{count}} seconds`},halfAMinute:`half a minute`,lessThanXMinutes:{one:`less than a minute`,other:`less than {{count}} minutes`},xMinutes:{one:`1 minute`,other:`{{count}} minutes`},aboutXHours:{one:`about 1 hour`,other:`about {{count}} hours`},xHours:{one:`1 hour`,other:`{{count}} hours`},xDays:{one:`1 day`,other:`{{count}} days`},aboutXWeeks:{one:`about 1 week`,other:`about {{count}} weeks`},xWeeks:{one:`1 week`,other:`{{count}} weeks`},aboutXMonths:{one:`about 1 month`,other:`about {{count}} months`},xMonths:{one:`1 month`,other:`{{count}} months`},aboutXYears:{one:`about 1 year`,other:`about {{count}} years`},xYears:{one:`1 year`,other:`{{count}} years`},overXYears:{one:`over 1 year`,other:`over {{count}} years`},almostXYears:{one:`almost 1 year`,other:`almost {{count}} years`}},TT=(e,t,n)=>{let r,i=wT[e];return r=typeof i==`string`?i:t===1?i.one:i.other.replace(`{{count}}`,t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?`in `+r:r+` ago`:r};function ET(e){return(t={})=>{let n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}var DT={date:ET({formats:{full:`EEEE, MMMM do, y`,long:`MMMM do, y`,medium:`MMM d, y`,short:`MM/dd/yyyy`},defaultWidth:`full`}),time:ET({formats:{full:`h:mm:ss a zzzz`,long:`h:mm:ss a z`,medium:`h:mm:ss a`,short:`h:mm a`},defaultWidth:`full`}),dateTime:ET({formats:{full:`{{date}} 'at' {{time}}`,long:`{{date}} 'at' {{time}}`,medium:`{{date}}, {{time}}`,short:`{{date}}, {{time}}`},defaultWidth:`full`})},OT={lastWeek:`'last' eeee 'at' p`,yesterday:`'yesterday at' p`,today:`'today at' p`,tomorrow:`'tomorrow at' p`,nextWeek:`eeee 'at' p`,other:`P`},kT=(e,t,n,r)=>OT[e];function AT(e){return(t,n)=>{let r=n?.context?String(n.context):`standalone`,i;if(r===`formatting`&&e.formattingValues){let t=e.defaultFormattingWidth||e.defaultWidth,r=n?.width?String(n.width):t;i=e.formattingValues[r]||e.formattingValues[t]}else{let t=e.defaultWidth,r=n?.width?String(n.width):e.defaultWidth;i=e.values[r]||e.values[t]}let a=e.argumentCallback?e.argumentCallback(t):t;return i[a]}}var jT={ordinalNumber:(e,t)=>{let n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+`st`;case 2:return n+`nd`;case 3:return n+`rd`}return n+`th`},era:AT({values:{narrow:[`B`,`A`],abbreviated:[`BC`,`AD`],wide:[`Before Christ`,`Anno Domini`]},defaultWidth:`wide`}),quarter:AT({values:{narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1st quarter`,`2nd quarter`,`3rd quarter`,`4th quarter`]},defaultWidth:`wide`,argumentCallback:e=>e-1}),month:AT({values:{narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],wide:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]},defaultWidth:`wide`}),day:AT({values:{narrow:[`S`,`M`,`T`,`W`,`T`,`F`,`S`],short:[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`],abbreviated:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],wide:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`]},defaultWidth:`wide`}),dayPeriod:AT({values:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`}},defaultFormattingWidth:`wide`})};function MT(e){return(t,n={})=>{let r=n.width,i=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],a=t.match(i);if(!a)return null;let o=a[0],s=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(s)?PT(s,e=>e.test(o)):NT(s,e=>e.test(o)),l;l=e.valueCallback?e.valueCallback(c):c,l=n.valueCallback?n.valueCallback(l):l;let u=t.slice(o.length);return{value:l,rest:u}}}function NT(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}function PT(e,t){for(let n=0;n{let r=t.match(e.matchPattern);if(!r)return null;let i=r[0],a=t.match(e.parsePattern);if(!a)return null;let o=e.valueCallback?e.valueCallback(a[0]):a[0];o=n.valueCallback?n.valueCallback(o):o;let s=t.slice(i.length);return{value:o,rest:s}}}var IT={code:`en-US`,formatDistance:TT,formatLong:DT,formatRelative:kT,localize:jT,match:{ordinalNumber:FT({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:MT({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:`any`}),quarter:MT({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:MT({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:`any`}),day:MT({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:`any`}),dayPeriod:MT({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:`any`,parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:`any`})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function LT(e,t){let n=uT(e,t?.in);return yT(n,CT(n))+1}function RT(e,t){let n=uT(e,t?.in),r=mT(n)-+bT(n);return Math.round(r/aT)+1}function zT(e,t){let n=uT(e,t?.in),r=n.getFullYear(),i=fT(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??i.firstWeekContainsDate??i.locale?.options?.firstWeekContainsDate??1,o=lT(t?.in||e,0);o.setFullYear(r+1,0,a),o.setHours(0,0,0,0);let s=pT(o,t),c=lT(t?.in||e,0);c.setFullYear(r,0,a),c.setHours(0,0,0,0);let l=pT(c,t);return+n>=+s?r+1:+n>=+l?r:r-1}function BT(e,t){let n=fT(),r=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,i=zT(e,t),a=lT(t?.in||e,0);return a.setFullYear(i,0,r),a.setHours(0,0,0,0),pT(a,t)}function VT(e,t){let n=uT(e,t?.in),r=pT(n,t)-+BT(n,t);return Math.round(r/aT)+1}function HT(e,t){return(e<0?`-`:``)+Math.abs(e).toString().padStart(t,`0`)}var UT={y(e,t){let n=e.getFullYear(),r=n>0?n:1-n;return HT(t===`yy`?r%100:r,t.length)},M(e,t){let n=e.getMonth();return t===`M`?String(n+1):HT(n+1,2)},d(e,t){return HT(e.getDate(),t.length)},a(e,t){let n=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.toUpperCase();case`aaa`:return n;case`aaaaa`:return n[0];default:return n===`am`?`a.m.`:`p.m.`}},h(e,t){return HT(e.getHours()%12||12,t.length)},H(e,t){return HT(e.getHours(),t.length)},m(e,t){return HT(e.getMinutes(),t.length)},s(e,t){return HT(e.getSeconds(),t.length)},S(e,t){let n=t.length,r=e.getMilliseconds();return HT(Math.trunc(r*10**(n-3)),t.length)}},WT={am:`am`,pm:`pm`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},GT={G:function(e,t,n){let r=+(e.getFullYear()>0);switch(t){case`G`:case`GG`:case`GGG`:return n.era(r,{width:`abbreviated`});case`GGGGG`:return n.era(r,{width:`narrow`});default:return n.era(r,{width:`wide`})}},y:function(e,t,n){if(t===`yo`){let t=e.getFullYear(),r=t>0?t:1-t;return n.ordinalNumber(r,{unit:`year`})}return UT.y(e,t)},Y:function(e,t,n,r){let i=zT(e,r),a=i>0?i:1-i;return t===`YY`?HT(a%100,2):t===`Yo`?n.ordinalNumber(a,{unit:`year`}):HT(a,t.length)},R:function(e,t){return HT(hT(e),t.length)},u:function(e,t){return HT(e.getFullYear(),t.length)},Q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`Q`:return String(r);case`QQ`:return HT(r,2);case`Qo`:return n.ordinalNumber(r,{unit:`quarter`});case`QQQ`:return n.quarter(r,{width:`abbreviated`,context:`formatting`});case`QQQQQ`:return n.quarter(r,{width:`narrow`,context:`formatting`});default:return n.quarter(r,{width:`wide`,context:`formatting`})}},q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`q`:return String(r);case`qq`:return HT(r,2);case`qo`:return n.ordinalNumber(r,{unit:`quarter`});case`qqq`:return n.quarter(r,{width:`abbreviated`,context:`standalone`});case`qqqqq`:return n.quarter(r,{width:`narrow`,context:`standalone`});default:return n.quarter(r,{width:`wide`,context:`standalone`})}},M:function(e,t,n){let r=e.getMonth();switch(t){case`M`:case`MM`:return UT.M(e,t);case`Mo`:return n.ordinalNumber(r+1,{unit:`month`});case`MMM`:return n.month(r,{width:`abbreviated`,context:`formatting`});case`MMMMM`:return n.month(r,{width:`narrow`,context:`formatting`});default:return n.month(r,{width:`wide`,context:`formatting`})}},L:function(e,t,n){let r=e.getMonth();switch(t){case`L`:return String(r+1);case`LL`:return HT(r+1,2);case`Lo`:return n.ordinalNumber(r+1,{unit:`month`});case`LLL`:return n.month(r,{width:`abbreviated`,context:`standalone`});case`LLLLL`:return n.month(r,{width:`narrow`,context:`standalone`});default:return n.month(r,{width:`wide`,context:`standalone`})}},w:function(e,t,n,r){let i=VT(e,r);return t===`wo`?n.ordinalNumber(i,{unit:`week`}):HT(i,t.length)},I:function(e,t,n){let r=RT(e);return t===`Io`?n.ordinalNumber(r,{unit:`week`}):HT(r,t.length)},d:function(e,t,n){return t===`do`?n.ordinalNumber(e.getDate(),{unit:`date`}):UT.d(e,t)},D:function(e,t,n){let r=LT(e);return t===`Do`?n.ordinalNumber(r,{unit:`dayOfYear`}):HT(r,t.length)},E:function(e,t,n){let r=e.getDay();switch(t){case`E`:case`EE`:case`EEE`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`EEEEE`:return n.day(r,{width:`narrow`,context:`formatting`});case`EEEEEE`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},e:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`e`:return String(a);case`ee`:return HT(a,2);case`eo`:return n.ordinalNumber(a,{unit:`day`});case`eee`:return n.day(i,{width:`abbreviated`,context:`formatting`});case`eeeee`:return n.day(i,{width:`narrow`,context:`formatting`});case`eeeeee`:return n.day(i,{width:`short`,context:`formatting`});default:return n.day(i,{width:`wide`,context:`formatting`})}},c:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`c`:return String(a);case`cc`:return HT(a,t.length);case`co`:return n.ordinalNumber(a,{unit:`day`});case`ccc`:return n.day(i,{width:`abbreviated`,context:`standalone`});case`ccccc`:return n.day(i,{width:`narrow`,context:`standalone`});case`cccccc`:return n.day(i,{width:`short`,context:`standalone`});default:return n.day(i,{width:`wide`,context:`standalone`})}},i:function(e,t,n){let r=e.getDay(),i=r===0?7:r;switch(t){case`i`:return String(i);case`ii`:return HT(i,t.length);case`io`:return n.ordinalNumber(i,{unit:`day`});case`iii`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`iiiii`:return n.day(r,{width:`narrow`,context:`formatting`});case`iiiiii`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},a:function(e,t,n){let r=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`});case`aaa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`aaaaa`:return n.dayPeriod(r,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(r,{width:`wide`,context:`formatting`})}},b:function(e,t,n){let r=e.getHours(),i;switch(i=r===12?WT.noon:r===0?WT.midnight:r/12>=1?`pm`:`am`,t){case`b`:case`bb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`bbb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`bbbbb`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},B:function(e,t,n){let r=e.getHours(),i;switch(i=r>=17?WT.evening:r>=12?WT.afternoon:r>=4?WT.morning:WT.night,t){case`B`:case`BB`:case`BBB`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`BBBBB`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},h:function(e,t,n){if(t===`ho`){let t=e.getHours()%12;return t===0&&(t=12),n.ordinalNumber(t,{unit:`hour`})}return UT.h(e,t)},H:function(e,t,n){return t===`Ho`?n.ordinalNumber(e.getHours(),{unit:`hour`}):UT.H(e,t)},K:function(e,t,n){let r=e.getHours()%12;return t===`Ko`?n.ordinalNumber(r,{unit:`hour`}):HT(r,t.length)},k:function(e,t,n){let r=e.getHours();return r===0&&(r=24),t===`ko`?n.ordinalNumber(r,{unit:`hour`}):HT(r,t.length)},m:function(e,t,n){return t===`mo`?n.ordinalNumber(e.getMinutes(),{unit:`minute`}):UT.m(e,t)},s:function(e,t,n){return t===`so`?n.ordinalNumber(e.getSeconds(),{unit:`second`}):UT.s(e,t)},S:function(e,t){return UT.S(e,t)},X:function(e,t,n){let r=e.getTimezoneOffset();if(r===0)return`Z`;switch(t){case`X`:return qT(r);case`XXXX`:case`XX`:return JT(r);default:return JT(r,`:`)}},x:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`x`:return qT(r);case`xxxx`:case`xx`:return JT(r);default:return JT(r,`:`)}},O:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`O`:case`OO`:case`OOO`:return`GMT`+KT(r,`:`);default:return`GMT`+JT(r,`:`)}},z:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`z`:case`zz`:case`zzz`:return`GMT`+KT(r,`:`);default:return`GMT`+JT(r,`:`)}},t:function(e,t,n){return HT(Math.trunc(e/1e3),t.length)},T:function(e,t,n){return HT(+e,t.length)}};function KT(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=Math.trunc(r/60),a=r%60;return a===0?n+String(i):n+String(i)+t+HT(a,2)}function qT(e,t){return e%60==0?(e>0?`-`:`+`)+HT(Math.abs(e)/60,2):JT(e,t)}function JT(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=HT(Math.trunc(r/60),2),a=HT(r%60,2);return n+i+t+a}var YT=(e,t)=>{switch(e){case`P`:return t.date({width:`short`});case`PP`:return t.date({width:`medium`});case`PPP`:return t.date({width:`long`});default:return t.date({width:`full`})}},XT=(e,t)=>{switch(e){case`p`:return t.time({width:`short`});case`pp`:return t.time({width:`medium`});case`ppp`:return t.time({width:`long`});default:return t.time({width:`full`})}},ZT={p:XT,P:(e,t)=>{let n=e.match(/(P+)(p+)?/)||[],r=n[1],i=n[2];if(!i)return YT(e,t);let a;switch(r){case`P`:a=t.dateTime({width:`short`});break;case`PP`:a=t.dateTime({width:`medium`});break;case`PPP`:a=t.dateTime({width:`long`});break;default:a=t.dateTime({width:`full`});break}return a.replace(`{{date}}`,YT(r,t)).replace(`{{time}}`,XT(i,t))}},QT=/^D+$/,$T=/^Y+$/,eE=[`D`,`DD`,`YY`,`YYYY`];function tE(e){return QT.test(e)}function nE(e){return $T.test(e)}function rE(e,t,n){let r=iE(e,t,n);if(console.warn(r),eE.includes(e))throw RangeError(r)}function iE(e,t,n){let r=e[0]===`Y`?`years`:`days of the month`;return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var aE=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,oE=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,sE=/^'([^]*?)'?$/,cE=/''/g,lE=/[a-zA-Z]/;function uE(e,t,n){let r=fT(),i=n?.locale??r.locale??IT,a=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,o=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,s=uT(e,n?.in);if(!ST(s))throw RangeError(`Invalid time value`);let c=t.match(oE).map(e=>{let t=e[0];if(t===`p`||t===`P`){let n=ZT[t];return n(e,i.formatLong)}return e}).join(``).match(aE).map(e=>{if(e===`''`)return{isToken:!1,value:`'`};let t=e[0];if(t===`'`)return{isToken:!1,value:dE(e)};if(GT[t])return{isToken:!0,value:e};if(t.match(lE))throw RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return{isToken:!1,value:e}});i.localize.preprocessor&&(c=i.localize.preprocessor(s,c));let l={firstWeekContainsDate:a,weekStartsOn:o,locale:i};return c.map(r=>{if(!r.isToken)return r.value;let a=r.value;(!n?.useAdditionalWeekYearTokens&&nE(a)||!n?.useAdditionalDayOfYearTokens&&tE(a))&&rE(a,t,String(e));let o=GT[a[0]];return o(s,a,i.localize,l)}).join(``)}function dE(e){let t=e.match(sE);return t?t[1].replace(cE,`'`):e}var fE={name:`add`,returnType:`number`,schema:bx({a:Tx(e=>e===null?void 0:e,Ex.number()),b:Tx(e=>e===null?void 0:e,Ex.number())})},pE={name:`subtract`,returnType:`number`,schema:bx({a:Tx(e=>e===null?void 0:e,Ex.number()),b:Tx(e=>e===null?void 0:e,Ex.number())})},mE={name:`multiply`,returnType:`number`,schema:bx({a:Tx(e=>e===null?void 0:e,Ex.number()),b:Tx(e=>e===null?void 0:e,Ex.number())})},hE={name:`divide`,returnType:`number`,schema:bx({a:Tx(e=>e===null?void 0:e,Ex.number()),b:Tx(e=>e===null?void 0:e,Ex.number())})},gE={name:`equals`,returnType:`boolean`,schema:bx({a:vx().refine(e=>e!==void 0,`Required`),b:vx().refine(e=>e!==void 0,`Required`)})},_E={name:`not_equals`,returnType:`boolean`,schema:bx({a:vx().refine(e=>e!==void 0,`Required`),b:vx().refine(e=>e!==void 0,`Required`)})},vE={name:`greater_than`,returnType:`boolean`,schema:bx({a:Tx(e=>e===null?void 0:e,Ex.number()),b:Tx(e=>e===null?void 0:e,Ex.number())})},yE={name:`less_than`,returnType:`boolean`,schema:bx({a:Tx(e=>e===null?void 0:e,Ex.number()),b:Tx(e=>e===null?void 0:e,Ex.number())})},bE={name:`and`,returnType:`boolean`,schema:bx({values:yx(vx()).min(2)})},xE={name:`or`,returnType:`boolean`,schema:bx({values:yx(vx()).min(2)})},SE={name:`not`,returnType:`boolean`,schema:bx({value:vx().refine(e=>e!==void 0,`Required`)})},CE={name:`contains`,returnType:`boolean`,schema:bx({string:Tx(e=>e===void 0?void 0:String(e),hx()),substring:Tx(e=>e===void 0?void 0:String(e),hx())})},wE={name:`starts_with`,returnType:`boolean`,schema:bx({string:Tx(e=>e===void 0?void 0:String(e),hx()),prefix:Tx(e=>e===void 0?void 0:String(e),hx())})},TE={name:`ends_with`,returnType:`boolean`,schema:bx({string:Tx(e=>e===void 0?void 0:String(e),hx()),suffix:Tx(e=>e===void 0?void 0:String(e),hx())})},EE={name:`required`,returnType:`boolean`,schema:bx({value:vx().refine(e=>e!==void 0,`Required`)})},DE={name:`regex`,returnType:`boolean`,schema:bx({value:Tx(e=>e===void 0?void 0:String(e),hx()),pattern:Tx(e=>e===void 0?void 0:String(e),hx())})},OE={name:`length`,returnType:`boolean`,schema:bx({value:vx().refine(e=>e!==void 0,`Required`),min:Ex.number().optional(),max:Ex.number().optional()}).refine(e=>e.min!==void 0||e.max!==void 0,{message:`Must provide either 'min' or 'max'`})},kE={name:`numeric`,returnType:`boolean`,schema:bx({value:Ex.number(),min:Ex.number().optional(),max:Ex.number().optional()}).refine(e=>e.min!==void 0||e.max!==void 0,{message:`Must provide either 'min' or 'max'`})},AE={name:`email`,returnType:`boolean`,schema:bx({value:Tx(e=>e===void 0?void 0:String(e),hx())})},jE={name:`formatString`,returnType:`any`,schema:bx({value:Ex.string()})},ME={name:`formatNumber`,returnType:`string`,schema:bx({value:Ex.number(),decimals:Ex.number().optional(),grouping:_x().default(!0)})},NE={name:`formatCurrency`,returnType:`string`,schema:bx({value:Ex.number(),currency:Ex.string(),decimals:Ex.number().optional(),grouping:_x().default(!0)})},PE={name:`formatDate`,returnType:`string`,schema:bx({value:vx().refine(e=>e!==void 0,`Required`),format:Ex.string()})},FE={name:`pluralize`,returnType:`string`,schema:bx({value:Ex.number(),zero:Ex.string().optional(),one:Ex.string().optional(),two:Ex.string().optional(),few:Ex.string().optional(),many:Ex.string().optional(),other:Ex.string()}).passthrough()},IE={name:`openUrl`,returnType:`void`,schema:bx({url:Tx(e=>e===void 0?void 0:String(e),hx())})},LE=[Nx(fE,e=>e.a+e.b),Nx(pE,e=>e.a-e.b),Nx(mE,e=>e.a*e.b),Nx(hE,e=>{let t=e.a,n=e.b;if(t==null||n==null)return NaN;let r=Number(t),i=Number(n);return Number.isNaN(r)||Number.isNaN(i)?NaN:i===0?1/0:r/i}),Nx(gE,e=>e.a===e.b),Nx(_E,e=>e.a!==e.b),Nx(vE,e=>e.a>e.b),Nx(yE,e=>e.ae.values.every(e=>!!e)),Nx(xE,e=>e.values.some(e=>!!e)),Nx(SE,e=>!e.value),Nx(CE,e=>e.string.includes(e.substring)),Nx(wE,e=>e.string.startsWith(e.prefix)),Nx(TE,e=>e.string.endsWith(e.suffix)),Nx(EE,e=>{let t=e.value;return!(t==null||typeof t==`string`&&t===``||Array.isArray(t)&&t.length===0)}),Nx(DE,e=>{try{return new RegExp(e.pattern).test(e.value)}catch(t){throw new Ax(`Invalid regex pattern: ${e.pattern}`,`regex`,t)}}),Nx(OE,e=>{let t=e.value,n=0;return(typeof t==`string`||Array.isArray(t))&&(n=t.length),!(e.min!==void 0&&!isNaN(e.min)&&ne.max)}),Nx(kE,e=>!(isNaN(e.value)||e.min!==void 0&&!isNaN(e.min)&&e.valuee.max)),Nx(AE,e=>/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(e.value)),Nx(jE,(e,t)=>{let n=e.value,r=new nT().parse(n);if(r.length===0)return``;let i=r.map(e=>typeof e!=`object`||!e||Array.isArray(e)?e:t.resolveSignal(e));return nS(()=>i.map(e=>Mx(e)?e.value:e).join(``))}),Nx(ME,e=>isNaN(e.value)?``:new Intl.NumberFormat(`en-US`,{minimumFractionDigits:e.decimals,maximumFractionDigits:e.decimals,useGrouping:e.grouping}).format(e.value)),Nx(NE,e=>{if(isNaN(e.value))return``;try{return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:e.currency,minimumFractionDigits:e.decimals,maximumFractionDigits:e.decimals,useGrouping:e.grouping}).format(e.value)}catch{return e.value.toFixed(e.decimals||2)}}),Nx(PE,e=>{if(!e.value)return``;let t=new Date(e.value);if(isNaN(t.getTime()))return``;try{return e.format===`ISO`?t.toISOString():uE(t,e.format)}catch(e){return console.warn(`Error formatting date:`,e),t.toISOString()}}),Nx(FE,e=>{let t=new Intl.PluralRules(`en-US`).select(e.value);return String(e[t]||e.other||``)}),Nx(IE,e=>{e.url&&typeof window<`u`&&window.open&&window.open(e.url,`_blank`)})],RE={accessibility:Gw.optional(),weight:gx().describe(`The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.`).optional()},zE={name:`Text`,schema:bx({...RE,text:Iw.describe(`The text content to display. While simple Markdown formatting is supported (i.e. without HTML, images, or links), utilizing dedicated UI components is generally preferred for a richer and more structured presentation.`),variant:wx([`h1`,`h2`,`h3`,`h4`,`h5`,`caption`,`body`]).default(`body`).describe(`A hint for the base text style.`).optional()}).strict()},BE={name:`Image`,schema:bx({...RE,url:Iw.describe(`The URL of the image to display.`),description:Iw.describe(`The accessibility description of the image.`).optional(),fit:wx([`contain`,`cover`,`fill`,`none`,`scaleDown`]).default(`fill`).describe(`Specifies how the image should be resized to fit its container. This corresponds to the CSS 'object-fit' property.`).optional(),variant:wx([`icon`,`avatar`,`smallFeature`,`mediumFeature`,`largeFeature`,`header`]).default(`mediumFeature`).describe(`A hint for the image size and style.`).optional()}).strict()},VE=`accountCircle.add.arrowBack.arrowForward.attachFile.calendarToday.call.camera.check.close.delete.download.edit.event.error.fastForward.favorite.favoriteOff.folder.help.home.info.locationOn.lock.lockOpen.mail.menu.moreVert.moreHoriz.notificationsOff.notifications.pause.payment.person.phone.photo.play.print.refresh.rewind.search.send.settings.share.shoppingCart.skipNext.skipPrevious.star.starHalf.starOff.stop.upload.visibility.visibilityOff.volumeDown.volumeMute.volumeOff.volumeUp.warning`.split(`.`),HE={name:`Icon`,schema:bx({...RE,name:xx([wx(VE),bx({path:hx()}).strict()]).describe(`The name of the icon to display.`)}).strict()},UE={name:`Video`,schema:bx({...RE,url:Iw.describe(`The URL of the video to display.`)}).strict()},WE={name:`AudioPlayer`,schema:bx({...RE,url:Iw.describe(`The URL of the audio to be played.`),description:Iw.describe(`A description of the audio, such as a title or summary.`).optional()}).strict()},GE={name:`Row`,schema:bx({...RE,children:Vw.describe(`Defines the children. Use an array of strings for a fixed set of children, or a template object to generate children from a data list. Children cannot be defined inline, they must be referred to by ID.`),justify:wx([`center`,`end`,`spaceAround`,`spaceBetween`,`spaceEvenly`,`start`,`stretch`]).default(`start`).describe(`Defines the arrangement of children along the main axis (horizontally). Use 'spaceBetween' to push items to the edges, or 'start'/'end'/'center' to pack them together.`).optional(),align:wx([`start`,`center`,`end`,`stretch`]).default(`stretch`).describe(`Defines the alignment of children along the cross axis (vertically). This is similar to the CSS 'align-items' property, but uses camelCase values (e.g., 'start').`).optional()}).strict().describe(`A layout component that arranges its children horizontally. To create a grid layout, nest Columns within this Row.`)},KE={name:`Column`,schema:bx({...RE,children:Vw.describe(`Defines the children. Use an array of strings for a fixed set of children, or a template object to generate children from a data list. Children cannot be defined inline, they must be referred to by ID.`),justify:wx([`start`,`center`,`end`,`spaceBetween`,`spaceAround`,`spaceEvenly`,`stretch`]).default(`start`).describe(`Defines the arrangement of children along the main axis (vertically). Use 'spaceBetween' to push items to the edges (e.g. header at top, footer at bottom), or 'start'/'end'/'center' to pack them together.`).optional(),align:wx([`center`,`end`,`start`,`stretch`]).default(`stretch`).describe(`Defines the alignment of children along the cross axis (horizontally). This is similar to the CSS 'align-items' property.`).optional()}).strict().describe(`A layout component that arranges its children vertically. To create a grid layout, nest Rows within this Column.`)},qE={name:`List`,schema:bx({...RE,children:Vw.describe(`Defines the children. Use an array of strings for a fixed set of children, or a template object to generate children from a data list.`),direction:wx([`vertical`,`horizontal`]).default(`vertical`).describe(`The direction in which the list items are laid out.`).optional(),align:wx([`start`,`center`,`end`,`stretch`]).default(`stretch`).describe(`Defines the alignment of children along the cross axis.`).optional()}).strict()},tte={name:`Card`,schema:bx({...RE,child:Bw.describe(`The ID of the single child component to be rendered inside the card. To display multiple elements, you MUST wrap them in a layout component (like Column or Row) and pass that container's ID here. Do NOT pass multiple IDs or a non-existent ID. Do NOT define the child component inline.`)}).strict()},JE={name:`Tabs`,schema:bx({...RE,tabs:yx(bx({title:Iw.describe(`The tab title.`),child:Bw.describe(`The ID of the child component. Do NOT define the component inline.`)}).strict()).min(1).describe(`An array of objects, where each object defines a tab with a title and a child component.`)}).strict()},YE={name:`Modal`,schema:bx({...RE,trigger:Bw.describe(`The ID of the component that opens the modal when interacted with (e.g., a button). Do NOT define the component inline.`),content:Bw.describe(`The ID of the component to be displayed inside the modal. Do NOT define the component inline.`)}).strict()},XE={name:`Divider`,schema:bx({...RE,axis:wx([`horizontal`,`vertical`]).default(`horizontal`).describe(`The orientation of the divider.`).optional()}).strict()},ZE={name:`Button`,schema:bx({...RE,child:Bw.describe(`The ID of the child component. Use a 'Text' component for a labeled button. Only use an 'Icon' if the requirements explicitly ask for an icon-only button. Do NOT define the child component inline.`),variant:wx([`default`,`primary`,`borderless`]).default(`default`).describe(`A hint for the button style. If omitted, a default button style is used. 'primary' indicates this is the main call-to-action button. 'borderless' means the button has no visual border or background, making its child content appear like a clickable link.`).optional(),action:Hw,checks:Ww.shape.checks}).strict()},QE={name:`TextField`,schema:bx({...RE,label:Iw.describe(`The text label for the input field.`),value:Iw.describe(`The value of the text field.`).optional(),variant:wx([`longText`,`number`,`shortText`,`obscured`]).default(`shortText`).describe(`The type of input field to display.`).optional(),validationRegexp:hx().describe(`A regular expression used for client-side validation of the input.`).optional(),checks:Ww.shape.checks}).strict()},$E={name:`CheckBox`,schema:bx({...RE,label:Iw.describe(`The text to display next to the checkbox.`),value:Fw.describe(`The current state of the checkbox (true for checked, false for unchecked).`),checks:Ww.shape.checks}).strict()},eD={name:`ChoicePicker`,schema:bx({...RE,label:Iw.describe(`The label for the group of options.`).optional(),variant:wx([`multipleSelection`,`mutuallyExclusive`]).default(`mutuallyExclusive`).describe(`A hint for how the choice picker should be displayed and behave.`).optional(),options:yx(bx({label:Iw.describe(`The text to display for this option.`),value:hx().describe(`The stable value associated with this option.`)}).strict()).describe(`The list of available options to choose from.`),value:Rw.describe(`The list of currently selected values. This should be bound to a string array in the data model.`),displayStyle:wx([`checkbox`,`chips`]).default(`checkbox`).describe(`The display style of the component.`).optional(),filterable:_x().default(!1).describe(`If true, displays a search input to filter the options.`).optional(),checks:Ww.shape.checks}).strict().describe(`A component that allows selecting one or more options from a list.`)},tD={name:`Slider`,schema:bx({...RE,label:Iw.describe(`The label for the slider.`).optional(),min:gx().default(0).describe(`The minimum value of the slider.`).optional(),max:gx().describe(`The maximum value of the slider.`),value:Lw.describe(`The current value of the slider.`),checks:Ww.shape.checks}).strict()},nD={name:`DateTimeInput`,schema:bx({...RE,value:Iw.describe(`The selected date and/or time value in ISO 8601 format. If not yet set, initialize with an empty string.`),enableDate:_x().default(!1).describe(`If true, allows the user to select a date.`).optional(),enableTime:_x().default(!1).describe(`If true, allows the user to select a time.`).optional(),min:xx([Iw,hx().date(),hx().time(),hx().datetime()]).describe(`The minimum allowed date/time in ISO 8601 format.`).optional(),max:xx([Iw,hx().date(),hx().time(),hx().datetime()]).describe(`The maximum allowed date/time in ISO 8601 format.`).optional(),label:Iw.describe(`The text label for the input field.`).optional(),checks:Ww.shape.checks}).strict()},rD=Yw(zE,({props:e})=>{let t=e.text??``,n={...eT(),display:`inline-block`};switch(e.variant){case`h1`:return(0,U.jsx)(`h1`,{style:n,children:t});case`h2`:return(0,U.jsx)(`h2`,{style:n,children:t});case`h3`:return(0,U.jsx)(`h3`,{style:n,children:t});case`h4`:return(0,U.jsx)(`h4`,{style:n,children:t});case`h5`:return(0,U.jsx)(`h5`,{style:n,children:t});case`caption`:return(0,U.jsx)(`small`,{style:{...n,color:`#666`,textAlign:`left`},children:t});default:return(0,U.jsx)(`span`,{style:n,children:t})}}),iD=Yw(BE,({props:e})=>{let t=e=>e===`scaleDown`?`scale-down`:e||`fill`,n={...eT(),objectFit:t(e.fit),width:`100%`,height:`auto`,display:`block`};return e.variant===`icon`?(n.width=`24px`,n.height=`24px`):e.variant===`avatar`?(n.width=`40px`,n.height=`40px`,n.borderRadius=`50%`):e.variant===`smallFeature`?n.maxWidth=`100px`:e.variant===`largeFeature`?n.maxHeight=`400px`:e.variant===`header`&&(n.height=`200px`,n.objectFit=`cover`),(0,U.jsx)(`img`,{src:e.url,alt:e.description||``,style:n})}),aD=Yw(HE,({props:e})=>{let t=typeof e.name==`string`?e.name:e.name?.path;return(0,U.jsx)(`span`,{className:`material-symbols-outlined`,style:{...eT(),fontSize:`24px`,width:`24px`,height:`24px`,display:`inline-flex`,alignItems:`center`,justifyContent:`center`},children:t})}),oD=Yw(UE,({props:e})=>{let t={...eT(),width:`100%`,aspectRatio:`16/9`};return(0,U.jsx)(`video`,{src:e.url,controls:!0,style:t})}),sD=Yw(WE,({props:e})=>{let t={...eT(),width:`100%`};return(0,U.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`4px`,width:`100%`},children:[e.description&&(0,U.jsx)(`span`,{style:{fontSize:`12px`,color:`#666`},children:e.description}),(0,U.jsx)(`audio`,{src:e.url,controls:!0,style:t})]})}),cD=({childList:e,buildChild:t})=>Array.isArray(e)?(0,U.jsx)(U.Fragment,{children:e.map((e,n)=>{if(e&&typeof e==`object`&&`id`in e){let r=e;return(0,U.jsx)(b.Fragment,{children:t(r.id,r.basePath)},`${r.id}-${n}`)}return typeof e==`string`?(0,U.jsx)(b.Fragment,{children:t(e)},`${e}-${n}`):null})}):null,lD=new Px(`https://a2ui.org/specification/v0_9/basic_catalog.json`,[rD,iD,aD,oD,sD,Yw(GE,({props:e,buildChild:t,context:n})=>(0,U.jsx)(`div`,{style:{display:`flex`,flexDirection:`row`,justifyContent:Qw(e.justify),alignItems:$w(e.align),width:`100%`,margin:0,padding:0},children:(0,U.jsx)(cD,{childList:e.children,buildChild:t,context:n})})),Yw(KE,({props:e,buildChild:t,context:n})=>(0,U.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,justifyContent:Qw(e.justify),alignItems:$w(e.align),width:`100%`,margin:0,padding:0},children:(0,U.jsx)(cD,{childList:e.children,buildChild:t,context:n})})),Yw(qE,({props:e,buildChild:t,context:n})=>{let r=e.direction===`horizontal`;return(0,U.jsx)(`div`,{style:{display:`flex`,flexDirection:r?`row`:`column`,alignItems:$w(e.align),overflowX:r?`auto`:`hidden`,overflowY:r?`hidden`:`auto`,width:`100%`,margin:0,padding:0},children:(0,U.jsx)(cD,{childList:e.children,buildChild:t,context:n})})}),Yw(tte,({props:e,buildChild:t})=>(0,U.jsx)(`div`,{style:{...tT(),backgroundColor:`#fff`,boxShadow:`0 2px 4px rgba(0,0,0,0.1)`,width:`100%`},children:e.child?t(e.child):null})),Yw(JE,({props:e,buildChild:t})=>{let[n,r]=(0,b.useState)(0),i=e.tabs||[],a=i[n];return(0,U.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,width:`100%`,margin:`8px`},children:[(0,U.jsx)(`div`,{style:{display:`flex`,borderBottom:`1px solid #ccc`,marginBottom:`8px`},children:i.map((e,t)=>(0,U.jsx)(`button`,{onClick:()=>r(t),style:{padding:`8px 16px`,border:`none`,background:`none`,borderBottom:n===t?`2px solid var(--a2ui-primary-color, #007bff)`:`none`,fontWeight:n===t?`bold`:`normal`,cursor:`pointer`,color:n===t?`var(--a2ui-primary-color, #007bff)`:`inherit`},children:e.title},t))}),(0,U.jsx)(`div`,{style:{flex:1},children:a?t(a.child):null})]})}),Yw(XE,({props:e})=>{let t=e.axis===`vertical`,n={margin:`8px`,border:`none`,backgroundColor:`#ccc`};return t?(n.width=`1px`,n.height=`100%`):(n.width=`100%`,n.height=`1px`),(0,U.jsx)(`div`,{style:n})}),Yw(YE,({props:e,buildChild:t})=>{let[n,r]=(0,b.useState)(!1);return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`div`,{onClick:()=>r(!0),style:{display:`inline-block`},children:e.trigger?t(e.trigger):null}),n&&(0,U.jsx)(`div`,{style:{position:`fixed`,top:0,left:0,right:0,bottom:0,backgroundColor:`rgba(0,0,0,0.5)`,display:`flex`,alignItems:`center`,justifyContent:`center`,zIndex:1e3},onClick:()=>r(!1),children:(0,U.jsxs)(`div`,{style:{backgroundColor:`#fff`,padding:`24px`,borderRadius:`8px`,maxWidth:`90%`,maxHeight:`90%`,overflow:`auto`,display:`flex`,flexDirection:`column`},onClick:e=>e.stopPropagation(),children:[(0,U.jsx)(`div`,{style:{display:`flex`,justifyContent:`flex-end`},children:(0,U.jsx)(`button`,{onClick:()=>r(!1),style:{border:`none`,background:`none`,fontSize:`20px`,cursor:`pointer`,padding:`4px`},children:`×`})}),(0,U.jsx)(`div`,{style:{flex:1},children:e.content?t(e.content):null})]})})]})}),Yw(ZE,({props:e,buildChild:t})=>(0,U.jsx)(`button`,{style:{margin:`8px`,padding:`8px 16px`,cursor:`pointer`,border:e.variant===`borderless`?`none`:`1px solid #ccc`,backgroundColor:e.variant===`primary`?`var(--a2ui-primary-color, #007bff)`:e.variant===`borderless`?`transparent`:`#fff`,color:e.variant===`primary`?`#fff`:`inherit`,borderRadius:`4px`,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,boxSizing:`border-box`},onClick:e.action,disabled:e.isValid===!1,children:e.child?t(e.child):null})),Yw(QE,({props:e})=>{let t=t=>{e.setValue(t.target.value)},n=e.variant===`longText`,r=e.variant===`number`?`number`:e.variant===`obscured`?`password`:`text`,i={padding:`8px`,width:`100%`,border:Zw,borderRadius:`8px`,boxSizing:`border-box`},a=b.useId(),o=e.validationErrors&&e.validationErrors.length>0;return(0,U.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`4px`,width:`100%`,margin:`8px`},children:[e.label&&(0,U.jsx)(`label`,{htmlFor:a,style:{fontSize:`14px`,fontWeight:`bold`},children:e.label}),n?(0,U.jsx)(`textarea`,{id:a,style:{...i,border:o?`1px solid red`:Zw},value:e.value||``,onChange:t}):(0,U.jsx)(`input`,{id:a,type:r,style:{...i,border:o?`1px solid red`:Zw},value:e.value||``,onChange:t}),o&&(0,U.jsx)(`span`,{style:{fontSize:`12px`,color:`red`},children:e.validationErrors[0]})]})}),Yw($E,({props:e})=>{let t=t=>{e.setValue(t.target.checked)},n=b.useId(),r=e.validationErrors&&e.validationErrors.length>0;return(0,U.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,margin:`8px`},children:[(0,U.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,U.jsx)(`input`,{id:n,type:`checkbox`,checked:!!e.value,onChange:t,style:{cursor:`pointer`,outline:r?`1px solid red`:`none`}}),e.label&&(0,U.jsx)(`label`,{htmlFor:n,style:{cursor:`pointer`,color:r?`red`:`inherit`},children:e.label})]}),r&&(0,U.jsx)(`span`,{style:{fontSize:`12px`,color:`red`,marginTop:`4px`},children:e.validationErrors?.[0]})]})}),Yw(eD,({props:e,context:t})=>{let[n,r]=(0,b.useState)(``),i=Array.isArray(e.value)?e.value:[],a=e.variant===`mutuallyExclusive`,o=t=>{if(a)e.setValue([t]);else{let n=i.includes(t)?i.filter(e=>e!==t):[...i,t];e.setValue(n)}},s=(e.options||[]).filter(t=>!e.filterable||n===``||String(t.label).toLowerCase().includes(n.toLowerCase())),c={display:`flex`,flexDirection:`column`,gap:`8px`,margin:`8px`,width:`100%`},l={display:`flex`,flexDirection:e.displayStyle===`chips`?`row`:`column`,flexWrap:e.displayStyle===`chips`?`wrap`:`nowrap`,gap:`8px`};return(0,U.jsxs)(`div`,{style:c,children:[e.label&&(0,U.jsx)(`strong`,{style:{fontSize:`14px`},children:e.label}),e.filterable&&(0,U.jsx)(`input`,{type:`text`,placeholder:`Filter options...`,value:n,onChange:e=>r(e.target.value),style:{padding:`4px 8px`,border:`1px solid #ccc`,borderRadius:`8px`}}),(0,U.jsx)(`div`,{style:l,children:s.map((n,r)=>{let s=i.includes(n.value);return e.displayStyle===`chips`?(0,U.jsx)(`button`,{onClick:()=>o(n.value),style:{padding:`4px 12px`,borderRadius:`16px`,border:s?`1px solid var(--a2ui-primary-color, #007bff)`:Zw,backgroundColor:s?`var(--a2ui-primary-color, #007bff)`:`#fff`,color:s?`#fff`:`inherit`,cursor:`pointer`,fontSize:`12px`},children:n.label},r):(0,U.jsxs)(`label`,{style:{display:`flex`,alignItems:`center`,gap:`8px`,cursor:`pointer`},children:[(0,U.jsx)(`input`,{type:a?`radio`:`checkbox`,checked:s,onChange:()=>o(n.value),name:a?`choice-${t.componentModel.id}`:void 0}),(0,U.jsx)(`span`,{style:{fontSize:`14px`},children:n.label})]},r)})})]})}),Yw(tD,({props:e})=>{let t=t=>{e.setValue(Number(t.target.value))},n=b.useId();return(0,U.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`4px`,margin:`8px`,width:`100%`},children:[(0,U.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`},children:[e.label&&(0,U.jsx)(`label`,{htmlFor:n,style:{fontSize:`14px`,fontWeight:`bold`},children:e.label}),(0,U.jsx)(`span`,{style:{fontSize:`12px`,color:`#666`},children:e.value})]}),(0,U.jsx)(`input`,{id:n,type:`range`,min:e.min??0,max:e.max,value:e.value??0,onChange:t,style:{width:`100%`,cursor:`pointer`}})]})}),Yw(nD,({props:e})=>{let t=t=>{e.setValue(t.target.value)},n=b.useId(),r=`datetime-local`;e.enableDate&&!e.enableTime&&(r=`date`),!e.enableDate&&e.enableTime&&(r=`time`);let i={padding:`8px`,width:`100%`,border:Zw,borderRadius:`8px`,boxSizing:`border-box`};return(0,U.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`4px`,width:`100%`,margin:`8px`},children:[e.label&&(0,U.jsx)(`label`,{htmlFor:n,style:{fontSize:`14px`,fontWeight:`bold`},children:e.label}),(0,U.jsx)(`input`,{id:n,type:r,style:i,value:e.value||``,onChange:t,min:typeof e.min==`string`?e.min:void 0,max:typeof e.max==`string`?e.max:void 0})]})})],LE),uD=(0,b.createContext)(void 0);function dD({theme:e,children:t}){return(0,U.jsx)(uD.Provider,{value:e??{},children:t})}var fD=(0,b.memo)(({surface:e,id:t,basePath:n,compImpl:r,componentModel:i})=>{let a=r.render,o=(0,b.useMemo)(()=>new kw(e,t,n),[e,t,n,i]);return(0,U.jsx)(a,{context:o,buildChild:(0,b.useCallback)((t,n)=>{let r=n||o.dataContext.path;return(0,U.jsx)(pD,{surface:e,id:t,basePath:r},`${t}-${r}`)},[e,o.dataContext.path])})});fD.displayName=`ResolvedChild`;var pD=(0,b.memo)(({surface:e,id:t,basePath:n})=>{let r=(0,b.useMemo)(()=>{let n=0;return{subscribe:r=>{let i=e.componentsModel.onCreated.subscribe(e=>{e.id===t&&(n++,r())}),a=e.componentsModel.onDeleted.subscribe(e=>{e===t&&(n++,r())});return()=>{i.unsubscribe(),a.unsubscribe()}},getSnapshot:()=>{let r=e.componentsModel.get(t);return r?`${r.type}-${n}`:`missing-${n}`}}},[e,t]);(0,b.useSyncExternalStore)(r.subscribe,r.getSnapshot);let i=e.componentsModel.get(t);if(!i)return(0,U.jsx)(`div`,{style:{padding:`12px 16px`,borderRadius:`8px`,background:`linear-gradient(90deg, #f3f4f6 25%, #e5e7eb 50%, #f3f4f6 75%)`,backgroundSize:`200% 100%`,animation:`a2ui-shimmer 1.5s ease-in-out infinite`,minHeight:`2rem`},children:(0,U.jsx)(`style`,{children:`@keyframes a2ui-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }`})});let a=e.catalog.components.get(i.type);return a?(0,U.jsx)(fD,{surface:e,id:t,basePath:n,componentModel:i,compImpl:a}):(0,U.jsxs)(`div`,{style:{color:`red`},children:[`Unknown component: `,i.type]})});pD.displayName=`DeferredChild`;var mD=({surface:e})=>(0,U.jsx)(pD,{surface:e,id:`root`,basePath:`/`}),hD;(function(e){e.assertEqual=e=>{};function t(e){}e.assertIs=t;function n(e){throw Error()}e.assertNever=n,e.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},e.getValidEnumValues=t=>{let n=e.objectKeys(t).filter(e=>typeof t[t[e]]!=`number`),r={};for(let e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys=typeof Object.keys==`function`?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(let n of e)if(t(n))return n},e.isInteger=typeof Number.isInteger==`function`?e=>Number.isInteger(e):e=>typeof e==`number`&&Number.isFinite(e)&&Math.floor(e)===e;function r(e,t=` | `){return e.map(e=>typeof e==`string`?`'${e}'`:e).join(t)}e.joinValues=r,e.jsonStringifyReplacer=(e,t)=>typeof t==`bigint`?t.toString():t})(hD||={});var gD;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})(gD||={});var _D=hD.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),vD=e=>{switch(typeof e){case`undefined`:return _D.undefined;case`string`:return _D.string;case`number`:return Number.isNaN(e)?_D.nan:_D.number;case`boolean`:return _D.boolean;case`function`:return _D.function;case`bigint`:return _D.bigint;case`symbol`:return _D.symbol;case`object`:return Array.isArray(e)?_D.array:e===null?_D.null:e.then&&typeof e.then==`function`&&e.catch&&typeof e.catch==`function`?_D.promise:typeof Map<`u`&&e instanceof Map?_D.map:typeof Set<`u`&&e instanceof Set?_D.set:typeof Date<`u`&&e instanceof Date?_D.date:_D.object;default:return _D.unknown}},W=hD.arrayToEnum([`invalid_type`,`invalid_literal`,`custom`,`invalid_union`,`invalid_union_discriminator`,`invalid_enum_value`,`unrecognized_keys`,`invalid_arguments`,`invalid_return_type`,`invalid_date`,`invalid_string`,`too_small`,`too_big`,`invalid_intersection_types`,`not_multiple_of`,`not_finite`]),yD=class e extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=`ZodError`,this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`)i.unionErrors.map(r);else if(i.code===`invalid_return_type`)r(i.returnTypeError);else if(i.code===`invalid_arguments`)r(i.argumentsError);else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;re.message){let t={},n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};yD.create=e=>new yD(e);var bD=(e,t)=>{let n;switch(e.code){case W.invalid_type:n=e.received===_D.undefined?`Required`:`Expected ${e.expected}, received ${e.received}`;break;case W.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,hD.jsonStringifyReplacer)}`;break;case W.unrecognized_keys:n=`Unrecognized key(s) in object: ${hD.joinValues(e.keys,`, `)}`;break;case W.invalid_union:n=`Invalid input`;break;case W.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${hD.joinValues(e.options)}`;break;case W.invalid_enum_value:n=`Invalid enum value. Expected ${hD.joinValues(e.options)}, received '${e.received}'`;break;case W.invalid_arguments:n=`Invalid function arguments`;break;case W.invalid_return_type:n=`Invalid function return type`;break;case W.invalid_date:n=`Invalid date`;break;case W.invalid_string:typeof e.validation==`object`?`includes`in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position==`number`&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):`startsWith`in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:`endsWith`in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:hD.assertNever(e.validation):n=e.validation===`regex`?`Invalid`:`Invalid ${e.validation}`;break;case W.too_small:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at least`:`more than`} ${e.minimum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at least`:`over`} ${e.minimum} character(s)`:e.type===`number`||e.type===`bigint`?`Number must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${e.minimum}`:e.type===`date`?`Date must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(e.minimum))}`:`Invalid input`;break;case W.too_big:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at most`:`less than`} ${e.maximum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at most`:`under`} ${e.maximum} character(s)`:e.type===`number`?`Number must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`bigint`?`BigInt must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`date`?`Date must be ${e.exact?`exactly`:e.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(e.maximum))}`:`Invalid input`;break;case W.custom:n=`Invalid input`;break;case W.invalid_intersection_types:n=`Intersection results could not be merged`;break;case W.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case W.not_finite:n=`Number must be finite`;break;default:n=t.defaultError,hD.assertNever(e)}return{message:n}},xD=bD;function SD(){return xD}var CD=e=>{let{data:t,path:n,errorMaps:r,issueData:i}=e,a=[...n,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s=``,c=r.filter(e=>!!e).slice().reverse();for(let e of c)s=e(o,{data:t,defaultError:s}).message;return{...i,path:a,message:s}};function G(e,t){let n=SD(),r=CD({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===bD?void 0:bD].filter(e=>!!e)});e.common.issues.push(r)}var wD=class e{constructor(){this.value=`valid`}dirty(){this.value===`valid`&&(this.value=`dirty`)}abort(){this.value!==`aborted`&&(this.value=`aborted`)}static mergeArray(e,t){let n=[];for(let r of t){if(r.status===`aborted`)return TD;r.status===`dirty`&&e.dirty(),n.push(r.value)}return{status:e.value,value:n}}static async mergeObjectAsync(t,n){let r=[];for(let e of n){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return e.mergeObjectSync(t,r)}static mergeObjectSync(e,t){let n={};for(let r of t){let{key:t,value:i}=r;if(t.status===`aborted`||i.status===`aborted`)return TD;t.status===`dirty`&&e.dirty(),i.status===`dirty`&&e.dirty(),t.value!==`__proto__`&&(i.value!==void 0||r.alwaysSet)&&(n[t.value]=i.value)}return{status:e.value,value:n}}},TD=Object.freeze({status:`aborted`}),ED=e=>({status:`dirty`,value:e}),DD=e=>({status:`valid`,value:e}),OD=e=>e.status===`aborted`,kD=e=>e.status===`dirty`,AD=e=>e.status===`valid`,jD=e=>typeof Promise<`u`&&e instanceof Promise,MD;(function(e){e.errToObj=e=>typeof e==`string`?{message:e}:e||{},e.toString=e=>typeof e==`string`?e:e?.message})(MD||={});var ND=class{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},PD=(e,t)=>{if(AD(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(`Validation failed but no issues detected.`);return{success:!1,get error(){if(this._error)return this._error;let t=new yD(e.common.issues);return this._error=t,this._error}}};function FD(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return t.code===`invalid_enum_value`?{message:a??i.defaultError}:i.data===void 0?{message:a??r??i.defaultError}:t.code===`invalid_type`?{message:a??n??i.defaultError}:{message:i.defaultError}},description:i}}var ID=class{get description(){return this._def.description}_getType(e){return vD(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:vD(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new wD,ctx:{common:e.parent.common,data:e.data,parsedType:vD(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(jD(t))throw Error(`Synchronous parse encountered promise.`);return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:vD(e)};return PD(n,this._parseSync({data:e,path:n.path,parent:n}))}"~validate"(e){let t={common:{issues:[],async:!!this[`~standard`].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:vD(e)};if(!this[`~standard`].async)try{let n=this._parseSync({data:e,path:[],parent:t});return AD(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(`encountered`)&&(this[`~standard`].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>AD(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:vD(e)},r=this._parse({data:e,path:n.path,parent:n});return PD(n,await(jD(r)?r:Promise.resolve(r)))}refine(e,t){let n=e=>typeof t==`string`||t===void 0?{message:t}:typeof t==`function`?t(e):t;return this._refinement((t,r)=>{let i=e(t),a=()=>r.addIssue({code:W.custom,...n(t)});return typeof Promise<`u`&&i instanceof Promise?i.then(e=>e?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(e,t){return this._refinement((n,r)=>e(n)?!0:(r.addIssue(typeof t==`function`?t(n,r):t),!1))}_refinement(e){return new EO({schema:this,typeName:FO.ZodEffects,effect:{type:`refinement`,refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[`~standard`]={version:1,vendor:`zod`,validate:e=>this[`~validate`](e)}}optional(){return DO.create(this,this._def)}nullable(){return OO.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return uO.create(this)}promise(){return TO.create(this,this._def)}or(e){return pO.create([this,e],this._def)}and(e){return gO.create(this,e,this._def)}transform(e){return new EO({...FD(this._def),schema:this,typeName:FO.ZodEffects,effect:{type:`transform`,transform:e}})}default(e){let t=typeof e==`function`?e:()=>e;return new kO({...FD(this._def),innerType:this,defaultValue:t,typeName:FO.ZodDefault})}brand(){return new MO({typeName:FO.ZodBranded,type:this,...FD(this._def)})}catch(e){let t=typeof e==`function`?e:()=>e;return new AO({...FD(this._def),innerType:this,catchValue:t,typeName:FO.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return NO.create(this,e)}readonly(){return PO.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},LD=/^c[^\s-]{8,}$/i,RD=/^[0-9a-z]+$/,zD=/^[0-9A-HJKMNP-TV-Z]{26}$/i,BD=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,VD=/^[a-z0-9_-]{21}$/i,HD=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,UD=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,WD=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,GD=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,KD,qD=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,JD=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,YD=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,nte=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,rte=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,ite=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,XD=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`,ate=RegExp(`^${XD}$`);function ZD(e){let t=`[0-5]\\d`;e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision??(t=`${t}(\\.\\d+)?`);let n=e.precision?`+`:`?`;return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function ote(e){return RegExp(`^${ZD(e)}$`)}function ste(e){let t=`${XD}T${ZD(e)}`,n=[];return n.push(e.local?`Z?`:`Z`),e.offset&&n.push(`([+-]\\d{2}:?\\d{2})`),t=`${t}(${n.join(`|`)})`,RegExp(`^${t}$`)}function cte(e,t){return!!((t===`v4`||!t)&&qD.test(e)||(t===`v6`||!t)&&YD.test(e))}function lte(e,t){if(!HD.test(e))return!1;try{let[n]=e.split(`.`);if(!n)return!1;let r=n.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(n.length+(4-n.length%4)%4,`=`),i=JSON.parse(atob(r));return!(typeof i!=`object`||!i||`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&i.alg!==t)}catch{return!1}}function ute(e,t){return!!((t===`v4`||!t)&&JD.test(e)||(t===`v6`||!t)&&nte.test(e))}var QD=class e extends ID{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==_D.string){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:_D.string,received:t.parsedType}),TD}let t=new wD,n;for(let r of this._def.checks)if(r.kind===`min`)e.data.lengthr.value&&(n=this._getOrReturnCtx(e,n),G(n,{code:W.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),t.dirty());else if(r.kind===`length`){let i=e.data.length>r.value,a=e.data.lengthe.test(t),{validation:t,code:W.invalid_string,...MD.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(e){return this._addCheck({kind:`email`,...MD.errToObj(e)})}url(e){return this._addCheck({kind:`url`,...MD.errToObj(e)})}emoji(e){return this._addCheck({kind:`emoji`,...MD.errToObj(e)})}uuid(e){return this._addCheck({kind:`uuid`,...MD.errToObj(e)})}nanoid(e){return this._addCheck({kind:`nanoid`,...MD.errToObj(e)})}cuid(e){return this._addCheck({kind:`cuid`,...MD.errToObj(e)})}cuid2(e){return this._addCheck({kind:`cuid2`,...MD.errToObj(e)})}ulid(e){return this._addCheck({kind:`ulid`,...MD.errToObj(e)})}base64(e){return this._addCheck({kind:`base64`,...MD.errToObj(e)})}base64url(e){return this._addCheck({kind:`base64url`,...MD.errToObj(e)})}jwt(e){return this._addCheck({kind:`jwt`,...MD.errToObj(e)})}ip(e){return this._addCheck({kind:`ip`,...MD.errToObj(e)})}cidr(e){return this._addCheck({kind:`cidr`,...MD.errToObj(e)})}datetime(e){return typeof e==`string`?this._addCheck({kind:`datetime`,precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:`datetime`,precision:e?.precision===void 0?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...MD.errToObj(e?.message)})}date(e){return this._addCheck({kind:`date`,message:e})}time(e){return typeof e==`string`?this._addCheck({kind:`time`,precision:null,message:e}):this._addCheck({kind:`time`,precision:e?.precision===void 0?null:e?.precision,...MD.errToObj(e?.message)})}duration(e){return this._addCheck({kind:`duration`,...MD.errToObj(e)})}regex(e,t){return this._addCheck({kind:`regex`,regex:e,...MD.errToObj(t)})}includes(e,t){return this._addCheck({kind:`includes`,value:e,position:t?.position,...MD.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:`startsWith`,value:e,...MD.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:`endsWith`,value:e,...MD.errToObj(t)})}min(e,t){return this._addCheck({kind:`min`,value:e,...MD.errToObj(t)})}max(e,t){return this._addCheck({kind:`max`,value:e,...MD.errToObj(t)})}length(e,t){return this._addCheck({kind:`length`,value:e,...MD.errToObj(t)})}nonempty(e){return this.min(1,MD.errToObj(e))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:`trim`}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toLowerCase`}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toUpperCase`}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind===`datetime`)}get isDate(){return!!this._def.checks.find(e=>e.kind===`date`)}get isTime(){return!!this._def.checks.find(e=>e.kind===`time`)}get isDuration(){return!!this._def.checks.find(e=>e.kind===`duration`)}get isEmail(){return!!this._def.checks.find(e=>e.kind===`email`)}get isURL(){return!!this._def.checks.find(e=>e.kind===`url`)}get isEmoji(){return!!this._def.checks.find(e=>e.kind===`emoji`)}get isUUID(){return!!this._def.checks.find(e=>e.kind===`uuid`)}get isNANOID(){return!!this._def.checks.find(e=>e.kind===`nanoid`)}get isCUID(){return!!this._def.checks.find(e=>e.kind===`cuid`)}get isCUID2(){return!!this._def.checks.find(e=>e.kind===`cuid2`)}get isULID(){return!!this._def.checks.find(e=>e.kind===`ulid`)}get isIP(){return!!this._def.checks.find(e=>e.kind===`ip`)}get isCIDR(){return!!this._def.checks.find(e=>e.kind===`cidr`)}get isBase64(){return!!this._def.checks.find(e=>e.kind===`base64`)}get isBase64url(){return!!this._def.checks.find(e=>e.kind===`base64url`)}get minLength(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew QD({checks:[],typeName:FO.ZodString,coerce:e?.coerce??!1,...FD(e)});function dte(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=(t.toString().split(`.`)[1]||``).length,i=n>r?n:r;return Number.parseInt(e.toFixed(i).replace(`.`,``))%Number.parseInt(t.toFixed(i).replace(`.`,``))/10**i}var $D=class e extends ID{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==_D.number){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:_D.number,received:t.parsedType}),TD}let t,n=new wD;for(let r of this._def.checks)r.kind===`int`?hD.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),G(t,{code:W.invalid_type,expected:`integer`,received:`float`,message:r.message}),n.dirty()):r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),G(t,{code:W.too_big,maximum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):r.kind===`multipleOf`?dte(e.data,r.value)!==0&&(t=this._getOrReturnCtx(e,t),G(t,{code:W.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):r.kind===`finite`?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),G(t,{code:W.not_finite,message:r.message}),n.dirty()):hD.assertNever(r);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit(`min`,e,!0,MD.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,MD.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,MD.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,MD.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:MD.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(e){return this._addCheck({kind:`int`,message:MD.toString(e)})}positive(e){return this._addCheck({kind:`min`,value:0,inclusive:!1,message:MD.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:0,inclusive:!1,message:MD.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:0,inclusive:!0,message:MD.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:0,inclusive:!0,message:MD.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:MD.toString(t)})}finite(e){return this._addCheck({kind:`finite`,message:MD.toString(e)})}safe(e){return this._addCheck({kind:`min`,inclusive:!0,value:-(2**53-1),message:MD.toString(e)})._addCheck({kind:`max`,inclusive:!0,value:2**53-1,message:MD.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuee.kind===`int`||e.kind===`multipleOf`&&hD.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(n.kind===`finite`||n.kind===`int`||n.kind===`multipleOf`)return!0;else n.kind===`min`?(t===null||n.value>t)&&(t=n.value):n.kind===`max`&&(e===null||n.valuenew $D({checks:[],typeName:FO.ZodNumber,coerce:e?.coerce||!1,...FD(e)});var eO=class e extends ID{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==_D.bigint)return this._getInvalidInput(e);let t,n=new wD;for(let r of this._def.checks)r.kind===`min`?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),G(t,{code:W.too_big,type:`bigint`,maximum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):r.kind===`multipleOf`?e.data%r.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),G(t,{code:W.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):hD.assertNever(r);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:_D.bigint,received:t.parsedType}),TD}gte(e,t){return this.setLimit(`min`,e,!0,MD.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,MD.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,MD.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,MD.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:MD.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!1,message:MD.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!1,message:MD.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!0,message:MD.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!0,message:MD.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:MD.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew eO({checks:[],typeName:FO.ZodBigInt,coerce:e?.coerce??!1,...FD(e)});var tO=class extends ID{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==_D.boolean){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:_D.boolean,received:t.parsedType}),TD}return DD(e.data)}};tO.create=e=>new tO({typeName:FO.ZodBoolean,coerce:e?.coerce||!1,...FD(e)});var nO=class e extends ID{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==_D.date){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:_D.date,received:t.parsedType}),TD}if(Number.isNaN(e.data.getTime()))return G(this._getOrReturnCtx(e),{code:W.invalid_date}),TD;let t=new wD,n;for(let r of this._def.checks)r.kind===`min`?e.data.getTime()r.value&&(n=this._getOrReturnCtx(e,n),G(n,{code:W.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:`date`}),t.dirty()):hD.assertNever(r);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(e,t){return this._addCheck({kind:`min`,value:e.getTime(),message:MD.toString(t)})}max(e,t){return this._addCheck({kind:`max`,value:e.getTime(),message:MD.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e==null?null:new Date(e)}get maxDate(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.valuenew nO({checks:[],coerce:e?.coerce||!1,typeName:FO.ZodDate,...FD(e)});var rO=class extends ID{_parse(e){if(this._getType(e)!==_D.symbol){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:_D.symbol,received:t.parsedType}),TD}return DD(e.data)}};rO.create=e=>new rO({typeName:FO.ZodSymbol,...FD(e)});var iO=class extends ID{_parse(e){if(this._getType(e)!==_D.undefined){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:_D.undefined,received:t.parsedType}),TD}return DD(e.data)}};iO.create=e=>new iO({typeName:FO.ZodUndefined,...FD(e)});var aO=class extends ID{_parse(e){if(this._getType(e)!==_D.null){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:_D.null,received:t.parsedType}),TD}return DD(e.data)}};aO.create=e=>new aO({typeName:FO.ZodNull,...FD(e)});var oO=class extends ID{constructor(){super(...arguments),this._any=!0}_parse(e){return DD(e.data)}};oO.create=e=>new oO({typeName:FO.ZodAny,...FD(e)});var sO=class extends ID{constructor(){super(...arguments),this._unknown=!0}_parse(e){return DD(e.data)}};sO.create=e=>new sO({typeName:FO.ZodUnknown,...FD(e)});var cO=class extends ID{_parse(e){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:_D.never,received:t.parsedType}),TD}};cO.create=e=>new cO({typeName:FO.ZodNever,...FD(e)});var lO=class extends ID{_parse(e){if(this._getType(e)!==_D.undefined){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:_D.void,received:t.parsedType}),TD}return DD(e.data)}};lO.create=e=>new lO({typeName:FO.ZodVoid,...FD(e)});var uO=class e extends ID{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==_D.array)return G(t,{code:W.invalid_type,expected:_D.array,received:t.parsedType}),TD;if(r.exactLength!==null){let e=t.data.length>r.exactLength.value,i=t.data.lengthr.maxLength.value&&(G(t,{code:W.too_big,maximum:r.maxLength.value,type:`array`,inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>r.type._parseAsync(new ND(t,e,t.path,n)))).then(e=>wD.mergeArray(n,e));let i=[...t.data].map((e,n)=>r.type._parseSync(new ND(t,e,t.path,n)));return wD.mergeArray(n,i)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:MD.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:MD.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:MD.toString(n)}})}nonempty(e){return this.min(1,e)}};uO.create=(e,t)=>new uO({type:e,minLength:null,maxLength:null,exactLength:null,typeName:FO.ZodArray,...FD(t)});function dO(e){if(e instanceof fO){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=DO.create(dO(r))}return new fO({...e._def,shape:()=>t})}else if(e instanceof uO)return new uO({...e._def,type:dO(e.element)});else if(e instanceof DO)return DO.create(dO(e.unwrap()));else if(e instanceof OO)return OO.create(dO(e.unwrap()));else if(e instanceof _O)return _O.create(e.items.map(e=>dO(e)));else return e}var fO=class e extends ID{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=hD.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==_D.object){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:_D.object,received:t.parsedType}),TD}let{status:t,ctx:n}=this._processInputParams(e),{shape:r,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof cO&&this._def.unknownKeys===`strip`))for(let e in n.data)i.includes(e)||a.push(e);let o=[];for(let e of i){let t=r[e],i=n.data[e];o.push({key:{status:`valid`,value:e},value:t._parse(new ND(n,i,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof cO){let e=this._def.unknownKeys;if(e===`passthrough`)for(let e of a)o.push({key:{status:`valid`,value:e},value:{status:`valid`,value:n.data[e]}});else if(e===`strict`)a.length>0&&(G(n,{code:W.unrecognized_keys,keys:a}),t.dirty());else if(e!==`strip`)throw Error(`Internal ZodObject error: invalid unknownKeys value.`)}else{let e=this._def.catchall;for(let t of a){let r=n.data[t];o.push({key:{status:`valid`,value:t},value:e._parse(new ND(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of o){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>wD.mergeObjectSync(t,e)):wD.mergeObjectSync(t,o)}get shape(){return this._def.shape()}strict(t){return MD.errToObj,new e({...this._def,unknownKeys:`strict`,...t===void 0?{}:{errorMap:(e,n)=>{let r=this._def.errorMap?.(e,n).message??n.defaultError;return e.code===`unrecognized_keys`?{message:MD.errToObj(t).message??r}:{message:r}}}})}strip(){return new e({...this._def,unknownKeys:`strip`})}passthrough(){return new e({...this._def,unknownKeys:`passthrough`})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:FO.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let n={};for(let e of hD.objectKeys(t))t[e]&&this.shape[e]&&(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}omit(t){let n={};for(let e of hD.objectKeys(this.shape))t[e]||(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}deepPartial(){return dO(this)}partial(t){let n={};for(let e of hD.objectKeys(this.shape)){let r=this.shape[e];t&&!t[e]?n[e]=r:n[e]=r.optional()}return new e({...this._def,shape:()=>n})}required(t){let n={};for(let e of hD.objectKeys(this.shape))if(t&&!t[e])n[e]=this.shape[e];else{let t=this.shape[e];for(;t instanceof DO;)t=t._def.innerType;n[e]=t}return new e({...this._def,shape:()=>n})}keyof(){return SO(hD.objectKeys(this.shape))}};fO.create=(e,t)=>new fO({shape:()=>e,unknownKeys:`strip`,catchall:cO.create(),typeName:FO.ZodObject,...FD(t)}),fO.strictCreate=(e,t)=>new fO({shape:()=>e,unknownKeys:`strict`,catchall:cO.create(),typeName:FO.ZodObject,...FD(t)}),fO.lazycreate=(e,t)=>new fO({shape:e,unknownKeys:`strip`,catchall:cO.create(),typeName:FO.ZodObject,...FD(t)});var pO=class extends ID{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;function r(e){for(let t of e)if(t.result.status===`valid`)return t.result;for(let n of e)if(n.result.status===`dirty`)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new yD(e.ctx.common.issues));return G(t,{code:W.invalid_union,unionErrors:n}),TD}if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(r);{let e,r=[];for(let i of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:n});if(a.status===`valid`)return a;a.status===`dirty`&&!e&&(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=r.map(e=>new yD(e));return G(t,{code:W.invalid_union,unionErrors:i}),TD}}get options(){return this._def.options}};pO.create=(e,t)=>new pO({options:e,typeName:FO.ZodUnion,...FD(t)});var mO=e=>e instanceof bO?mO(e.schema):e instanceof EO?mO(e.innerType()):e instanceof xO?[e.value]:e instanceof CO?e.options:e instanceof wO?hD.objectValues(e.enum):e instanceof kO?mO(e._def.innerType):e instanceof iO?[void 0]:e instanceof aO?[null]:e instanceof DO?[void 0,...mO(e.unwrap())]:e instanceof OO?[null,...mO(e.unwrap())]:e instanceof MO||e instanceof PO?mO(e.unwrap()):e instanceof AO?mO(e._def.innerType):[],fte=class e extends ID{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==_D.object)return G(t,{code:W.invalid_type,expected:_D.object,received:t.parsedType}),TD;let n=this.discriminator,r=t.data[n],i=this.optionsMap.get(r);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(G(t,{code:W.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),TD)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){let i=new Map;for(let e of n){let n=mO(e.shape[t]);if(!n.length)throw Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let r of n){if(i.has(r))throw Error(`Discriminator property ${String(t)} has duplicate value ${String(r)}`);i.set(r,e)}}return new e({typeName:FO.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...FD(r)})}};function hO(e,t){let n=vD(e),r=vD(t);if(e===t)return{valid:!0,data:e};if(n===_D.object&&r===_D.object){let n=hD.objectKeys(t),r=hD.objectKeys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=hO(e[n],t[n]);if(!r.valid)return{valid:!1};i[n]=r.data}return{valid:!0,data:i}}else if(n===_D.array&&r===_D.array){if(e.length!==t.length)return{valid:!1};let n=[];for(let r=0;r{if(OD(e)||OD(r))return TD;let i=hO(e.value,r.value);return i.valid?((kD(e)||kD(r))&&t.dirty(),{status:t.value,value:i.data}):(G(n,{code:W.invalid_intersection_types}),TD)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([e,t])=>r(e,t)):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};gO.create=(e,t,n)=>new gO({left:e,right:t,typeName:FO.ZodIntersection,...FD(n)});var _O=class e extends ID{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==_D.array)return G(n,{code:W.invalid_type,expected:_D.array,received:n.parsedType}),TD;if(n.data.lengththis._def.items.length&&(G(n,{code:W.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),t.dirty());let r=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new ND(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(r).then(e=>wD.mergeArray(t,e)):wD.mergeArray(t,r)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};_O.create=(e,t)=>{if(!Array.isArray(e))throw Error(`You must pass an array of schemas to z.tuple([ ... ])`);return new _O({items:e,typeName:FO.ZodTuple,rest:null,...FD(t)})};var pte=class e extends ID{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==_D.object)return G(n,{code:W.invalid_type,expected:_D.object,received:n.parsedType}),TD;let r=[],i=this._def.keyType,a=this._def.valueType;for(let e in n.data)r.push({key:i._parse(new ND(n,e,n.path,e)),value:a._parse(new ND(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?wD.mergeObjectAsync(t,r):wD.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof ID?new e({keyType:t,valueType:n,typeName:FO.ZodRecord,...FD(r)}):new e({keyType:QD.create(),valueType:t,typeName:FO.ZodRecord,...FD(n)})}},vO=class extends ID{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==_D.map)return G(n,{code:W.invalid_type,expected:_D.map,received:n.parsedType}),TD;let r=this._def.keyType,i=this._def.valueType,a=[...n.data.entries()].map(([e,t],a)=>({key:r._parse(new ND(n,e,n.path,[a,`key`])),value:i._parse(new ND(n,t,n.path,[a,`value`]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of a){let r=await n.key,i=await n.value;if(r.status===`aborted`||i.status===`aborted`)return TD;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}})}else{let e=new Map;for(let n of a){let r=n.key,i=n.value;if(r.status===`aborted`||i.status===`aborted`)return TD;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}}};vO.create=(e,t,n)=>new vO({valueType:t,keyType:e,typeName:FO.ZodMap,...FD(n)});var yO=class e extends ID{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==_D.set)return G(n,{code:W.invalid_type,expected:_D.set,received:n.parsedType}),TD;let r=this._def;r.minSize!==null&&n.data.sizer.maxSize.value&&(G(n,{code:W.too_big,maximum:r.maxSize.value,type:`set`,inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let i=this._def.valueType;function a(e){let n=new Set;for(let r of e){if(r.status===`aborted`)return TD;r.status===`dirty`&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let o=[...n.data.values()].map((e,t)=>i._parse(new ND(n,e,n.path,t)));return n.common.async?Promise.all(o).then(e=>a(e)):a(o)}min(t,n){return new e({...this._def,minSize:{value:t,message:MD.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:MD.toString(n)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};yO.create=(e,t)=>new yO({valueType:e,minSize:null,maxSize:null,typeName:FO.ZodSet,...FD(t)});var mte=class e extends ID{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==_D.function)return G(t,{code:W.invalid_type,expected:_D.function,received:t.parsedType}),TD;function n(e,n){return CD({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,SD(),bD].filter(e=>!!e),issueData:{code:W.invalid_arguments,argumentsError:n}})}function r(e,n){return CD({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,SD(),bD].filter(e=>!!e),issueData:{code:W.invalid_return_type,returnTypeError:n}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof TO){let e=this;return DD(async function(...t){let o=new yD([]),s=await e._def.args.parseAsync(t,i).catch(e=>{throw o.addIssue(n(t,e)),o}),c=await Reflect.apply(a,this,s);return await e._def.returns._def.type.parseAsync(c,i).catch(e=>{throw o.addIssue(r(c,e)),o})})}else{let e=this;return DD(function(...t){let o=e._def.args.safeParse(t,i);if(!o.success)throw new yD([n(t,o.error)]);let s=Reflect.apply(a,this,o.data),c=e._def.returns.safeParse(s,i);if(!c.success)throw new yD([r(s,c.error)]);return c.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:_O.create(t).rest(sO.create())})}returns(t){return new e({...this._def,returns:t})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(t,n,r){return new e({args:t||_O.create([]).rest(sO.create()),returns:n||sO.create(),typeName:FO.ZodFunction,...FD(r)})}},bO=class extends ID{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};bO.create=(e,t)=>new bO({getter:e,typeName:FO.ZodLazy,...FD(t)});var xO=class extends ID{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return G(t,{received:t.data,code:W.invalid_literal,expected:this._def.value}),TD}return{status:`valid`,value:e.data}}get value(){return this._def.value}};xO.create=(e,t)=>new xO({value:e,typeName:FO.ZodLiteral,...FD(t)});function SO(e,t){return new CO({values:e,typeName:FO.ZodEnum,...FD(t)})}var CO=class e extends ID{_parse(e){if(typeof e.data!=`string`){let t=this._getOrReturnCtx(e),n=this._def.values;return G(t,{expected:hD.joinValues(n),received:t.parsedType,code:W.invalid_type}),TD}if(this._cache||=new Set(this._def.values),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return G(t,{received:t.data,code:W.invalid_enum_value,options:n}),TD}return DD(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(t,n=this._def){return e.create(t,{...this._def,...n})}exclude(t,n=this._def){return e.create(this.options.filter(e=>!t.includes(e)),{...this._def,...n})}};CO.create=SO;var wO=class extends ID{_parse(e){let t=hD.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==_D.string&&n.parsedType!==_D.number){let e=hD.objectValues(t);return G(n,{expected:hD.joinValues(e),received:n.parsedType,code:W.invalid_type}),TD}if(this._cache||=new Set(hD.getValidEnumValues(this._def.values)),!this._cache.has(e.data)){let e=hD.objectValues(t);return G(n,{received:n.data,code:W.invalid_enum_value,options:e}),TD}return DD(e.data)}get enum(){return this._def.values}};wO.create=(e,t)=>new wO({values:e,typeName:FO.ZodNativeEnum,...FD(t)});var TO=class extends ID{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==_D.promise&&t.common.async===!1?(G(t,{code:W.invalid_type,expected:_D.promise,received:t.parsedType}),TD):DD((t.parsedType===_D.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}};TO.create=(e,t)=>new TO({type:e,typeName:FO.ZodPromise,...FD(t)});var EO=class extends ID{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===FO.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=this._def.effect||null,i={addIssue:e=>{G(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(i.addIssue=i.addIssue.bind(i),r.type===`preprocess`){let e=r.transform(n.data,i);if(n.common.async)return Promise.resolve(e).then(async e=>{if(t.value===`aborted`)return TD;let r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return r.status===`aborted`?TD:r.status===`dirty`||t.value===`dirty`?ED(r.value):r});{if(t.value===`aborted`)return TD;let r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return r.status===`aborted`?TD:r.status===`dirty`||t.value===`dirty`?ED(r.value):r}}if(r.type===`refinement`){let e=e=>{let t=r.refinement(e,i);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(`Async refinement encountered during synchronous parse operation. Use .parseAsync instead.`);return e};if(n.common.async===!1){let r=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return r.status===`aborted`?TD:(r.status===`dirty`&&t.dirty(),e(r.value),{status:t.value,value:r.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(n=>n.status===`aborted`?TD:(n.status===`dirty`&&t.dirty(),e(n.value).then(()=>({status:t.value,value:n.value}))))}if(r.type===`transform`)if(n.common.async===!1){let e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!AD(e))return TD;let a=r.transform(e.value,i);if(a instanceof Promise)throw Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);return{status:t.value,value:a}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(e=>AD(e)?Promise.resolve(r.transform(e.value,i)).then(e=>({status:t.value,value:e})):TD);hD.assertNever(r)}};EO.create=(e,t,n)=>new EO({schema:e,typeName:FO.ZodEffects,effect:t,...FD(n)}),EO.createWithPreprocess=(e,t,n)=>new EO({schema:t,effect:{type:`preprocess`,transform:e},typeName:FO.ZodEffects,...FD(n)});var DO=class extends ID{_parse(e){return this._getType(e)===_D.undefined?DD(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};DO.create=(e,t)=>new DO({innerType:e,typeName:FO.ZodOptional,...FD(t)});var OO=class extends ID{_parse(e){return this._getType(e)===_D.null?DD(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};OO.create=(e,t)=>new OO({innerType:e,typeName:FO.ZodNullable,...FD(t)});var kO=class extends ID{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===_D.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};kO.create=(e,t)=>new kO({innerType:e,typeName:FO.ZodDefault,defaultValue:typeof t.default==`function`?t.default:()=>t.default,...FD(t)});var AO=class extends ID{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return jD(r)?r.then(e=>({status:`valid`,value:e.status===`valid`?e.value:this._def.catchValue({get error(){return new yD(n.common.issues)},input:n.data})})):{status:`valid`,value:r.status===`valid`?r.value:this._def.catchValue({get error(){return new yD(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};AO.create=(e,t)=>new AO({innerType:e,typeName:FO.ZodCatch,catchValue:typeof t.catch==`function`?t.catch:()=>t.catch,...FD(t)});var jO=class extends ID{_parse(e){if(this._getType(e)!==_D.nan){let t=this._getOrReturnCtx(e);return G(t,{code:W.invalid_type,expected:_D.nan,received:t.parsedType}),TD}return{status:`valid`,value:e.data}}};jO.create=e=>new jO({typeName:FO.ZodNaN,...FD(e)});var MO=class extends ID{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}},NO=class e extends ID{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?TD:e.status===`dirty`?(t.dirty(),ED(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})();{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?TD:e.status===`dirty`?(t.dirty(),{status:`dirty`,value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(t,n){return new e({in:t,out:n,typeName:FO.ZodPipeline})}},PO=class extends ID{_parse(e){let t=this._def.innerType._parse(e),n=e=>(AD(e)&&(e.value=Object.freeze(e.value)),e);return jD(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}};PO.create=(e,t)=>new PO({innerType:e,typeName:FO.ZodReadonly,...FD(t)}),fO.lazycreate;var FO;(function(e){e.ZodString=`ZodString`,e.ZodNumber=`ZodNumber`,e.ZodNaN=`ZodNaN`,e.ZodBigInt=`ZodBigInt`,e.ZodBoolean=`ZodBoolean`,e.ZodDate=`ZodDate`,e.ZodSymbol=`ZodSymbol`,e.ZodUndefined=`ZodUndefined`,e.ZodNull=`ZodNull`,e.ZodAny=`ZodAny`,e.ZodUnknown=`ZodUnknown`,e.ZodNever=`ZodNever`,e.ZodVoid=`ZodVoid`,e.ZodArray=`ZodArray`,e.ZodObject=`ZodObject`,e.ZodUnion=`ZodUnion`,e.ZodDiscriminatedUnion=`ZodDiscriminatedUnion`,e.ZodIntersection=`ZodIntersection`,e.ZodTuple=`ZodTuple`,e.ZodRecord=`ZodRecord`,e.ZodMap=`ZodMap`,e.ZodSet=`ZodSet`,e.ZodFunction=`ZodFunction`,e.ZodLazy=`ZodLazy`,e.ZodLiteral=`ZodLiteral`,e.ZodEnum=`ZodEnum`,e.ZodEffects=`ZodEffects`,e.ZodNativeEnum=`ZodNativeEnum`,e.ZodOptional=`ZodOptional`,e.ZodNullable=`ZodNullable`,e.ZodDefault=`ZodDefault`,e.ZodCatch=`ZodCatch`,e.ZodPromise=`ZodPromise`,e.ZodBranded=`ZodBranded`,e.ZodPipeline=`ZodPipeline`,e.ZodReadonly=`ZodReadonly`})(FO||={});var hte=QD.create;$D.create,jO.create,eO.create,tO.create,nO.create,rO.create,iO.create,aO.create,oO.create;var gte=sO.create;cO.create,lO.create,uO.create;var IO=fO.create;fO.strictCreate,pO.create,fte.create,gO.create,_O.create,pte.create,vO.create,yO.create,mte.create,bO.create,xO.create;var LO=CO.create;wO.create,TO.create,EO.create,DO.create,OO.create,EO.createWithPreprocess,NO.create;var _te=Yw({name:`Text`,schema:IO({text:Kw.DynamicString,variant:LO([`h1`,`h2`,`h3`,`h4`,`h5`,`caption`,`body`]).optional()})},({props:e})=>{let t=e.text??``;switch(e.variant){case`h1`:return(0,U.jsx)(`h1`,{children:t});case`h2`:return(0,U.jsx)(`h2`,{children:t});case`h3`:return(0,U.jsx)(`h3`,{children:t});case`h4`:return(0,U.jsx)(`h4`,{children:t});case`h5`:return(0,U.jsx)(`h5`,{children:t});case`caption`:return(0,U.jsx)(`small`,{children:t});default:return(0,U.jsx)(`span`,{children:t})}}),vte=Yw({name:`Button`,schema:IO({child:Kw.ComponentId,action:Kw.Action,variant:LO([`primary`,`borderless`]).optional()})},({props:e,buildChild:t})=>(0,U.jsx)(`button`,{style:{padding:`8px 16px`,cursor:`pointer`,border:e.variant===`borderless`?`none`:`1px solid #ccc`,backgroundColor:e.variant===`primary`?`#007bff`:`transparent`,color:e.variant===`primary`?`#fff`:`inherit`,borderRadius:`4px`},onClick:e.action,children:e.child?t(e.child):null})),RO=({childList:e,buildChild:t})=>Array.isArray(e)?(0,U.jsx)(U.Fragment,{children:e.map((e,n)=>{if(e&&typeof e==`object`&&`id`in e){let r=e;return(0,U.jsx)(b.Fragment,{children:t(r.id,r.basePath)},`${r.id}-${n}`)}return typeof e==`string`?(0,U.jsx)(b.Fragment,{children:t(e)},`${e}-${n}`):null})}):null,yte=IO({children:Kw.ChildList,justify:LO([`center`,`end`,`spaceAround`,`spaceBetween`,`spaceEvenly`,`start`,`stretch`]).optional(),align:LO([`start`,`center`,`end`,`stretch`]).optional()}),bte=e=>{switch(e){case`center`:return`center`;case`end`:return`flex-end`;case`spaceAround`:return`space-around`;case`spaceBetween`:return`space-between`;case`spaceEvenly`:return`space-evenly`;case`start`:return`flex-start`;case`stretch`:return`stretch`;default:return`flex-start`}},xte=e=>{switch(e){case`start`:return`flex-start`;case`center`:return`center`;case`end`:return`flex-end`;case`stretch`:return`stretch`;default:return`stretch`}},Ste=Yw({name:`Row`,schema:yte},({props:e,buildChild:t})=>(0,U.jsx)(`div`,{style:{display:`flex`,flexDirection:`row`,justifyContent:bte(e.justify),alignItems:xte(e.align)},children:(0,U.jsx)(RO,{childList:e.children,buildChild:t})})),Cte=IO({children:Kw.ChildList,justify:LO([`start`,`center`,`end`,`spaceBetween`,`spaceAround`,`spaceEvenly`,`stretch`]).optional(),align:LO([`center`,`end`,`start`,`stretch`]).optional()}),wte=e=>{switch(e){case`center`:return`center`;case`end`:return`flex-end`;case`spaceAround`:return`space-around`;case`spaceBetween`:return`space-between`;case`spaceEvenly`:return`space-evenly`;case`start`:return`flex-start`;case`stretch`:return`stretch`;default:return`flex-start`}},Tte=e=>{switch(e){case`start`:return`flex-start`;case`center`:return`center`;case`end`:return`flex-end`;case`stretch`:return`stretch`;default:return`stretch`}};new Px(`https://a2ui.org/specification/v0_9/catalogs/minimal/minimal_catalog.json`,[_te,vte,Ste,Yw({name:`Column`,schema:Cte},({props:e,buildChild:t})=>(0,U.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,justifyContent:wte(e.justify),alignItems:Tte(e.align),gap:`8px`},children:(0,U.jsx)(RO,{childList:e.children,buildChild:t})})),Yw({name:`TextField`,schema:IO({label:Kw.DynamicString,value:Kw.DynamicString,variant:LO([`longText`,`number`,`shortText`,`obscured`]).optional(),validationRegexp:hte().optional()})},({props:e,context:t})=>{let n=t=>{e.setValue&&e.setValue(t.target.value)},r=e.variant===`longText`,i=e.variant===`number`?`number`:e.variant===`obscured`?`password`:`text`,a={padding:`8px`,width:`100%`,border:`1px solid #ccc`,borderRadius:`4px`,boxSizing:`border-box`},o=`textfield-${t.componentModel.id}`;return(0,U.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`4px`,width:`100%`},children:[e.label&&(0,U.jsx)(`label`,{htmlFor:o,style:{fontSize:`14px`,fontWeight:`bold`},children:e.label}),r?(0,U.jsx)(`textarea`,{id:o,style:a,value:e.value||``,onChange:n}):(0,U.jsx)(`input`,{id:o,type:i,style:a,value:e.value||``,onChange:n})]})})],[Nx({name:`capitalize`,returnType:`string`,schema:IO({value:gte()})},e=>{let t=e.value;return typeof t==`string`?t.toUpperCase():t})]);var zO=(0,b.createContext)(null),BO=(0,b.createContext)(null);function Ete({onAction:e,theme:t,catalog:n,children:r}){let i=(0,b.useRef)(e??null);i.current=e??null;let a=(0,b.useRef)(null);a.current||=new Dw([n??lD],e=>{if(i.current){let t={userAction:{name:e?.name??`unknown`,surfaceId:e?.surfaceId??`default`,sourceComponentId:e?.sourceComponentId,context:e?.context,timestamp:e?.timestamp??new Date().toISOString()}};i.current(t)}});let o=a.current,[s,c]=(0,b.useState)(0),[l,u]=(0,b.useState)(null),d=(0,b.useRef)(null);d.current||={processMessages:e=>{try{o.processMessages(e)}catch(e){console.warn(`[A2UI] processMessages error:`,e),u(e instanceof Error?e.message:String(e));return}u(null),c(e=>e+1)},dispatch:e=>{i.current&&i.current(e)},getSurface:e=>o.model.getSurface(e),clearSurfaces:()=>{let e=o.model.surfacesMap;for(let[t]of e)o.processMessages([{version:`v0.9`,deleteSurface:{surfaceId:t}}]);c(e=>e+1)}};let f=d.current,p=(0,b.useMemo)(()=>({version:s,error:l}),[s,l]);return(0,U.jsx)(zO.Provider,{value:f,children:(0,U.jsx)(BO.Provider,{value:p,children:(0,U.jsx)(dD,{theme:t,children:r})})})}function Dte(){let e=(0,b.useContext)(zO);if(!e)throw Error(`useA2UIActions must be used within an A2UIProvider`);return e}function Ote(){let e=(0,b.useContext)(BO);if(!e)throw Error(`useA2UIState must be used within an A2UIProvider`);return e}function VO(){let e=Dte(),t=Ote();return{processMessages:e.processMessages,getSurface:e.getSurface,clearSurfaces:e.clearSurfaces,version:t.version}}function HO(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t{let t=e.updateComponents;if(!t||typeof t!=`object`||Array.isArray(t))return e;let n=t.components;if(!Array.isArray(n))return e;let r=n.filter(e=>!!(e&&typeof e==`object`&&!Array.isArray(e)));if(r.some(e=>e.id===`root`))return e;let i=r.filter(e=>typeof e.id==`string`&&e.id.endsWith(`-root`));if(i.length!==1)return e;let a=i[0];return{...e,updateComponents:{...t,components:n.map(e=>e===a?{...a,id:`root`}:e)}}})}function wk(e){return String(e.type||``).toUpperCase()}function Tk(e,t){return String(e.messageId||t)}function Ek(e,t){return String(e.runId||t)}function Dk(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function Ok(e){if(Array.isArray(e))return Ck(e.filter(e=>!!(e&&typeof e==`object`)));if(e&&typeof e==`object`){let t=e.a2ui_operations;return Array.isArray(t)?Ck(t.filter(e=>!!(e&&typeof e==`object`))):[e]}return[]}function kk(e){return e==null||e===``?``:typeof e==`string`?e:JSON.stringify(e,null,2)}var Ak=class{agent;onEvent;tools=new Map;runMessageIds=new Map;pendingByRun=new Map;activeRunId=``;constructor(e){this.agent=new eb({url:e.url,agentId:e.agentId,threadId:e.threadId,fetch:e.fetch}),this.onEvent=e.onEvent}async run(e,t,n){return this.activeRunId=t,this.agent.addMessage({id:`${t}:user`,role:`user`,content:e}),this.execute({runId:t,abortController:this.controllerFor(n)})}async resume(e,t){let n=this.agent.pendingInterrupts.length>0?this.agent.pendingInterrupts:this.pendingByRun.get(this.activeRunId)||[],r=Iy(n.length>0?n:[{id:t.interruptId,reason:`approval`}],{[t.interruptId]:t.status===`resolved`?{status:`resolved`,payload:t.payload}:{status:`cancelled`}});if(!r.some(e=>e.interruptId===t.interruptId))throw Error(`AG-UI interrupt ${t.interruptId} is not pending`);return this.activeRunId=e,this.execute({runId:e,resume:r})}abort(){this.agent.abortRun()}controllerFor(e){if(!e)return;let t=new AbortController;return e.aborted&&t.abort(e.reason),e.addEventListener(`abort`,()=>t.abort(e.reason),{once:!0}),t}async execute(e){let t=`completed`,n=await this.agent.runAgent({runId:e.runId,context:[Sk],forwardedProps:{injectA2UITool:!0},resume:e.resume,abortController:e.abortController},{onEvent:({event:n})=>{let r=this.project(n,e.runId);r.status&&(t=r.status),r.events.forEach(e=>this.onEvent(e))},onRunFinishedEvent:({outcome:e})=>{t=e===`interrupt`?`interrupted`:`completed`},onRunErrorEvent:()=>{t=`failed`}}),r=this.agent.pendingInterrupts.slice();return r.length>0&&(this.pendingByRun.set(e.runId,r),t=`interrupted`),{status:t,result:n}}project(e,t){let n=wk(e),r=Ek(e,t),i=Tk(e,`${r}:assistant`),a=e,o=[];if(n===`RUN_STARTED`)o.push({type:`activity`,phase:`AG-UI 运行已创建`,status:`running`,countEvent:!1});else if(n===`TEXT_MESSAGE_START`)this.runMessageIds.set(r,i),o.push({type:`assistant_message_created`,messageId:i});else if(n===`TEXT_MESSAGE_CONTENT`)o.push({type:`text_delta`,messageId:this.runMessageIds.get(r)||i,delta:String(a.delta||``)});else if(n===`TEXT_MESSAGE_END`)o.push({type:`activity`,phase:`生成回复内容`,status:`running`});else if(n===`REASONING_MESSAGE_CONTENT`)o.push({type:`reasoning_delta`,messageId:this.runMessageIds.get(r)||i,delta:String(a.delta||``)});else if(n===`TOOL_CALL_START`){let e=String(a.toolCallId||`tool`);this.tools.set(e,{name:String(a.toolCallName||`tool`),args:``}),o.push({type:`tool_upsert`,messageId:this.runMessageIds.get(r)||`${r}:assistant`,name:String(a.toolCallName||`tool`),args:``,status:`running`})}else if(n===`TOOL_CALL_ARGS`){let e=String(a.toolCallId||`tool`),t=this.tools.get(e)||{name:`tool`,args:``};t.args+=String(a.delta||``),this.tools.set(e,t),o.push({type:`tool_upsert`,messageId:this.runMessageIds.get(r)||`${r}:assistant`,name:t.name,args:t.args,status:`running`})}else if(n===`TOOL_CALL_RESULT`){let e=String(a.toolCallId||`tool`),t=this.tools.get(e)||{name:`tool`,args:``};o.push({type:`tool_result`,messageId:this.runMessageIds.get(r)||`${r}:assistant`,name:t.name,output:String(a.content||``)})}else if(n===`ACTIVITY_SNAPSHOT`){let e=a.content,t=Dk(e),n=String(t.surfaceId||t.surface_id||a.messageId||`default`);o.push({type:`agui_activity`,messageId:this.runMessageIds.get(r)||i,surfaceId:n,messages:Ok(t.content??e)})}else if(n===`RUN_FINISHED`){let e=Dk(a.outcome);if(String(e.type||``).toLowerCase()===`interrupt`){let t=Array.isArray(e.interrupts)?e.interrupts:[];this.pendingByRun.set(r,t);for(let e of t){let t=Dk(e.metadata),n=e.toolCallId?this.tools.get(e.toolCallId):void 0,i=String(t.tool_name||t.toolName||n?.name||e.reason||`人工确认`),a=kk(t.arguments??t.tool_args??t.args??n?.args);o.push({type:`approval_requested`,messageId:this.runMessageIds.get(r)||`${r}:assistant`,approvalRequestId:e.id,protocol:`ag-ui`,name:i,args:a,...e.message?{message:e.message}:{},...t.approval_level?{approvalLevel:String(t.approval_level)}:{}})}return o.push({type:`activity`,phase:`等待人工确认`,status:`waiting`}),{events:o,status:`interrupted`}}o.push({type:`terminal`,status:`completed`})}else if(n===`RUN_ERROR`)return o.push({type:`error`,error:Error(`AG-UI 运行失败`)}),{events:o,status:`failed`};return{events:o}}},jk=new Set([`completed`,`failed`,`error`,`cancelled`,`canceled`,`aborted`,`interrupted`,`resume_failed`]);function Mk(e){if(e.EventType!==`run_status`)return null;let t=String(e.Content?.status||``).trim().toLowerCase();return jk.has(t)?t:null}function Nk(e,t){let n=String(t?.type||e||``).trim();if(n===`response.created`)return{phase:`运行已创建`,status:`running`};if(n===`response.in_progress`)return{phase:`等待运行时输出`,status:`waiting`};if(n===`response.output_item.added`){let e=t?.item;return e?.type===`function_call`?{phase:`调用工具 ${e.name||`tool`}`,status:`running`}:String(e?.type||``).includes(`reasoning`)?{phase:`生成思考过程`,status:`running`}:{phase:`生成回复内容`,status:`running`}}return n.includes(`reasoning`)?{phase:`生成思考过程`,status:`running`}:n.includes(`function_call`)||n===`response.tool_call`?{phase:`调用工具`,status:`running`}:n.includes(`tool_result`)?{phase:`收到工具结果`,status:`running`}:n.includes(`output_text`)||n.includes(`content_part`)?{phase:`生成回复内容`,status:`running`}:n===`response.completed`?{phase:`运行完成`,status:`completed`}:n===`response.failed`?{phase:`运行失败`,status:`failed`}:n===`response.incomplete`?{phase:`运行中断`,status:`failed`}:null}function Pk(){let e=globalThis.crypto;return e&&typeof e.randomUUID==`function`?`run_${e.randomUUID()}`:`run_${Date.now()}_${Math.random().toString(16).slice(2)}`}var Fk={idle:[`creating-session`,`uploading-files`,`connecting`,`error`],"creating-session":[`uploading-files`,`connecting`,`error`,`idle`],"uploading-files":[`connecting`,`error`,`idle`],connecting:[`streaming`,`error`,`idle`],streaming:[`completing`,`stopping`,`recovering`,`error`],stopping:[`cancelled`,`idle`],completing:[`idle`],recovering:[`streaming`,`error`,`idle`],error:[`connecting`,`idle`],cancelled:[`idle`]},Ik=class{_stage=`idle`;listeners=new Set;abortController=null;activeCompactionId=null;activeSessionId=null;aguiClient=null;aguiThreadSessionId=null;api;controlStateValue={phase:`idle`};lastControlCommand=null;config={agentId:`default-agent`,apiFormats:[`responses`],agentFramework:``,selectedModel:``,thinkingMode:`auto`};constructor(e){this.api=e}get stage(){return this._stage}get controlState(){return this.controlStateValue}async submitControl(e){this.lastControlCommand=e;let t;try{t=Kc(await this.api.submitControl(e))}catch(e){if(e instanceof Uc)return this.controlStateValue={phase:`contract_mismatch`,error:null,receipt:null},this.emit({type:`system_message`,content:`【系统提示】控制指令响应不符合 agent-kernel/v1 合同,已停止变更本地状态。`}),this.controlStateValue;throw e}return this.controlStateValue=this.controlStateFor(t,e),t.status===`accepted`||t.status===`duplicate`?this.emit({type:`activity`,phase:`指令已入队,等待运行时处理`,status:`waiting`,countEvent:!1}):t.status===`queue_full`?this.emit({type:`system_message`,content:`【系统提示】指令队列已满,可点击重试;重试将复用同一幂等键。`}):t.status===`unsupported`?this.emit({type:`system_message`,content:`【系统提示】运行时不支持该操作:${t.error?.message||``}`}):t.status===`persistence_uncertain`?this.emit({type:`system_message`,content:`【系统提示】指令提交结果待确认,正在查询状态…`}):t.status===`rejected`&&this.emit({type:`system_message`,content:`【系统提示】指令被拒绝:${t.error?.message||``}`}),this.controlStateValue}controlStateFor(e,t){switch(e.status){case`accepted`:case`duplicate`:return{phase:`queued`,receipt:e,error:null};case`queue_full`:return{phase:`retryable`,retryKey:t.idempotency_key,receipt:e,error:e.error};case`unsupported`:return{phase:`unsupported`,receipt:e,error:e.error};case`persistence_uncertain`:return{phase:`confirming`,retryKey:t.idempotency_key,receipt:e,error:e.error};default:return{phase:`rejected`,receipt:e,error:e.error}}}async retryControl(){let e=this.lastControlCommand;if(!e||this.controlStateValue.phase!==`retryable`&&this.controlStateValue.phase!==`confirming`)return this.controlStateValue;if(this.controlStateValue.phase===`confirming`)try{await this.api.getAgentStatus()}catch(e){console.warn(`[RunEngine] status query after persistence_uncertain failed:`,e)}return this.submitControl(e)}updateConfig(e){this.config={...e,apiFormats:[...e.apiFormats]}}emit(e){let t=`sessionId`in e?e:{...e,sessionId:this.activeSessionId};for(let e of this.listeners)e(t)}getAguiClient(e){let t=this.config.hostedChatTransport;return t?.Protocol!==`ag-ui`||!t.Endpoint?null:((!this.aguiClient||this.aguiThreadSessionId!==e)&&(this.aguiClient=new Ak({url:t.Endpoint,agentId:this.config.agentId,threadId:e,onEvent:e=>this.emit(e)}),this.aguiThreadSessionId=e),this.aguiClient)}setStage(e){let t=Fk[this._stage];t&&!t.includes(e)&&console.warn(`[RunEngine] Invalid transition: ${this._stage} → ${e}`),this._stage=e,this.emit({type:`stage_changed`,stage:e})}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}start(e){if(this._stage!==`idle`)return!1;this.abortController=new AbortController;let t=e.responsesInput!==void 0;return(async()=>{let n=e.sessionId||null;try{n||=await this.createSession(e),n||=`default-session-${Date.now()}`,this.activeSessionId=n;let r=await this.uploadFiles(e,t);this.setStage(`connecting`),this.emit({type:`activity`,phase:`连接运行时`,status:`connecting`,countEvent:!1});let i=t?`responses`:Cl({agentFramework:this.config.agentFramework,apiFormats:this.config.apiFormats}),a=gl(i),o=a.createState(),s=Pk();D.getState().setCurrentRunId(s),D.getState().setActiveInvocationId(s),D.getState().setLastSeqId(0);let c=this.config.hostedChatTransport,l=!t&&!e.executionMode&&e.attachments.length===0&&c?.Protocol===`ag-ui`?this.getAguiClient(n):null;if(l&&c){this.setStage(`streaming`),this.emit({type:`activity`,phase:`等待 AG-UI 输出`,status:`waiting`,countEvent:!1});let t=await l.run(e.text,s,this.abortController?.signal);if(t.status===`interrupted`){this.setStage(`completing`),this.emit({type:`stream_ended`});return}if(t.status!==`completed`){this.setStage(`error`),this.emit({type:`activity`,phase:`AG-UI 运行失败`,status:`failed`,countEvent:!1});return}this.setStage(`completing`),this.emit({type:`activity`,phase:`运行完成`,status:`completed`,countEvent:!1}),this.emit({type:`stream_ended`});return}let u=this.buildRequestBody(n,i,t,e,r,s),d=await this.api.runAgent(u,{signal:this.abortController?.signal});this.setStage(`streaming`),this.emit({type:`activity`,phase:`等待首个输出`,status:`waiting`,countEvent:!1});let f=`msg-${Date.now()}`,p=await Fl(d),m;if(m=p.receipt?await this.consumeKernelRunEvents(n,s,p.receipt,f):await this.consumeStream(p.stream,a,o,f,s),m.terminalStatus===`cancelled`){this.setStage(`stopping`),D.getState().stopActivity(`运行时已取消本次执行。`),this.emit({type:`activity`,phase:`运行已取消`,status:`stopped`,countEvent:!1}),this.setStage(`cancelled`);return}if(m.terminalStatus&&m.terminalStatus!==`completed`){this.setStage(`error`),this.emit({type:`activity`,phase:m.terminalStatus===`incomplete`?`运行中断`:`运行失败`,status:`failed`,countEvent:!1});return}this.setStage(`completing`),this.emit({type:`activity`,phase:`运行完成`,status:`completed`,countEvent:!1}),this.emit({type:`stream_ended`})}catch(e){if(this.failCompaction(),!(e instanceof DOMException&&e.name===`AbortError`))if(console.error(`[RunEngine] start() error:`,e),e instanceof TypeError&&e.message.includes(`fetch`)){this.setStage(`recovering`),this.emit({type:`activity`,phase:`网络异常,尝试重连`,status:`waiting`,countEvent:!1});let e=D.getState().lastSeqId,t=D.getState().activeInvocationId;if(e>0&&t&&this.activeSessionId)try{this.resumeRun({sessionId:this.activeSessionId,invocationId:t,afterSeqId:e});return}catch(e){console.warn(`[RunEngine] afterSeqId resume failed, fall back to error:`,e)}}else e instanceof Ht&&e.code===429?(this.setStage(`error`),this.emit({type:`rate_limited`,message:e.message||`请求过于频繁,请稍后重试`,sessionId:n})):(this.setStage(`error`),this.emit({type:`error`,error:e instanceof Error?e:Error(String(e))}))}finally{D.getState().setSessionStreaming(n,!1),this.setStage(`idle`),this.activeCompactionId=null,this.activeSessionId=null,e.onSettled?.(n)}})(),!0}stop(){if(this._stage===`idle`)return;this.setStage(`stopping`);let e=D.getState().currentRunId;e&&this.activeSessionId&&this.api.cancelRun(this.config.agentId,this.activeSessionId,e).catch(e=>{console.warn(`[RunEngine] cancelRun on stop failed:`,e)}),this.abortController?.abort(),this.aguiClient?.abort(),D.getState().stopActivity(e?`已向运行时发送取消请求;如果当前框架只支持协作式取消,后台可能会在下一个安全点停止。`:void 0),D.getState().setCurrentRunId(``),this.setStage(`cancelled`),this.emit({type:`system_message`,content:e?`已请求取消本次运行。`:`已停止接收本次输出;如果运行时不支持取消,后台执行可能仍会继续。`})}disconnect(){this._stage!==`idle`&&(this.abortController?.abort(),this.aguiClient?.abort(),D.getState().setSessionStreaming(this.activeSessionId,!1),D.getState().clearActivity(),this._stage=`idle`,this.activeCompactionId=null,this.activeSessionId=null)}async cancelRemote(e){try{this.activeSessionId&&await this.api.cancelRun(this.config.agentId,this.activeSessionId,e)}catch(e){console.warn(`[RunEngine] cancelRemote failed:`,e)}this.stop()}resumeRun(e){this.abortController?.abort(),this.abortController=new AbortController,this.activeSessionId=e.sessionId,D.getState().setCurrentRunId(e.invocationId),this.setStage(`connecting`),this.emit({type:`activity`,phase:`恢复运行事件订阅`,status:`connecting`,countEvent:!1}),(async()=>{let t=null;try{let n=await this.api.subscribeRunEvents({sessionId:e.sessionId,invocationId:e.invocationId,afterSeqId:e.afterSeqId},{signal:this.abortController?.signal});this.setStage(`streaming`),this.emit({type:`activity`,phase:`等待恢复事件`,status:`waiting`,countEvent:!1});let r=n.getReader(),i=new TextDecoder,a=``;for(;;){let{value:e,done:n}=await r.read();if(n)break;a+=i.decode(e,{stream:!0});let{chunks:o,remainder:s}=yl(a);a=s;for(let e of o){if(!e.trim())continue;let n=vl(e);for(let e of n)e.eventName===`__done__`||e.eventName===`__ping__`||(this.emit({type:`activity`,phase:`收到恢复事件`,status:`running`}),this.emit({type:`stream_event`,event:e.data}),t=Mk(e.data)||t)}}this.setStage(`completing`),t===`cancelled`||t===`canceled`||t===`aborted`?this.emit({type:`activity`,phase:`后台长任务已取消`,status:`stopped`,countEvent:!1}):t===`interrupted`?this.emit({type:`activity`,phase:`后台长任务已中断`,status:`stopped`,countEvent:!1}):t===`failed`||t===`error`?this.emit({type:`activity`,phase:`后台长任务失败`,status:`failed`,countEvent:!1}):t===`resume_failed`?this.emit({type:`activity`,phase:`后台长任务恢复失败`,status:`failed`,countEvent:!1}):this.emit({type:`activity`,phase:`后台长任务已完成`,status:`completed`,countEvent:!1}),this.emit({type:`stream_ended`}),e.onSessionReloadNeeded?.()}catch(e){e instanceof DOMException&&e.name===`AbortError`||console.error(`Failed to subscribe to run events:`,e)}finally{D.getState().setSessionStreaming(e.sessionId,!1),D.getState().setCurrentRunId(``),this.setStage(`idle`),this.activeSessionId=null}})()}resumeCheckpoint(e){if(this._stage!==`idle`)return!1;this.abortController=new AbortController,this.activeSessionId=e.sessionId;let t=Pk();return D.getState().setCurrentRunId(t),(async()=>{try{if(this.setStage(`connecting`),this.emit({type:`activity`,source:`restore`,phase:`从 checkpoint 恢复运行`,status:`connecting`,countEvent:!1}),this.config.checkpointResumePreviewEnabled)try{let t=(await this.api.previewCheckpointResume({agentId:this.config.agentId,sessionId:e.sessionId,runId:e.runId,checkpointId:e.checkpointId},{signal:this.abortController?.signal})).Preview?.Risk?.Level||`unknown`;this.emit({type:`activity`,source:`restore`,phase:`恢复预览完成:${String(t)} 风险`,status:`waiting`,countEvent:!1})}catch(e){console.warn(`[RunEngine] checkpoint resume preview failed:`,e)}let n=await this.api.resumeRun({agentId:this.config.agentId,sessionId:e.sessionId,runId:e.runId,checkpointId:e.checkpointId,resumeAttemptId:e.resumeAttemptId,invocationId:t},{signal:this.abortController?.signal}),r=gl(`responses`),i=r.createState();this.setStage(`streaming`),this.emit({type:`activity`,source:`restore`,phase:`等待恢复输出`,status:`waiting`,countEvent:!1});let a=`msg-${Date.now()}`,o=await this.consumeStream(n,r,i,a,t);if(o.terminalStatus&&o.terminalStatus!==`completed`){if(o.terminalStatus===`cancelled`){this.setStage(`stopping`),D.getState().stopActivity(`运行时已取消本次恢复。`),this.emit({type:`activity`,source:`restore`,phase:`恢复已取消`,status:`stopped`,countEvent:!1}),this.setStage(`cancelled`);return}this.setStage(`error`),this.emit({type:`activity`,source:`restore`,phase:o.terminalStatus===`incomplete`?`恢复中断`:`恢复失败`,status:`failed`,countEvent:!1});return}this.setStage(`completing`),this.emit({type:`activity`,source:`restore`,phase:`恢复完成`,status:`completed`,countEvent:!1}),this.emit({type:`stream_ended`})}catch(e){e instanceof DOMException&&e.name===`AbortError`||(console.error(`[RunEngine] resumeCheckpoint() error:`,e),this.setStage(`error`),this.emit({type:`error`,error:e instanceof Error?e:Error(String(e))}))}finally{D.getState().setSessionStreaming(e.sessionId,!1),D.getState().setCurrentRunId(``),this.setStage(`idle`),this.activeSessionId=null,e.onSettled?.(e.sessionId)}})(),!0}resumeAguiInterrupt(e){if(this._stage!==`idle`)return!1;let t=e.sessionId||this.aguiThreadSessionId;if(!t)return!1;let n=this.getAguiClient(t);if(!n)return!1;this.activeSessionId=t;let r=Pk();return D.getState().setCurrentRunId(r),this.setStage(`connecting`),this.emit({type:`activity`,phase:`提交人工确认`,status:`connecting`,countEvent:!1}),(async()=>{try{this.setStage(`streaming`);let t=await n.resume(r,{interruptId:e.interruptId,status:e.status,payload:e.payload}),i=e.payload&&typeof e.payload==`object`?e.payload:{},a=String(i.decision||i.type||``).toLowerCase();if(this.emit({type:`approval_resolved`,approvalRequestId:e.interruptId,decision:e.status===`cancelled`||a===`reject`||a===`rejected`?`rejected`:`approved`}),t.status===`interrupted`){this.setStage(`completing`),this.emit({type:`stream_ended`});return}if(t.status!==`completed`){this.setStage(`error`),this.emit({type:`activity`,phase:`人工确认恢复失败`,status:`failed`,countEvent:!1});return}this.setStage(`completing`),this.emit({type:`activity`,phase:`运行完成`,status:`completed`,countEvent:!1}),this.emit({type:`stream_ended`})}catch(e){this.setStage(`error`),this.emit({type:`error`,error:e instanceof Error?e:Error(String(e))})}finally{D.getState().setCurrentRunId(``),this.setStage(`idle`),this.activeSessionId=null,e.onSettled?.(t)}})(),!0}async createSession(e){this.setStage(`creating-session`);try{let t=(await this.api.createSession(this.config.agentId,{signal:this.abortController?.signal})).SessionId||null;return t&&(e.onSessionCreated?.(t),e.onSessionUpsert?.(t)),t}catch(e){return e instanceof DOMException&&e.name===`AbortError`||console.error(`Failed to create session:`,e),null}}async uploadFiles(e,t){let n=[];if(t||e.attachments.length===0)return n;this.setStage(`uploading-files`);for(let t of e.attachments){if(t.size>100*1024*1024){this.emit({type:`system_message`,content:`【系统提示】文件 ${t.name} 超过 100MB 限制,未发送。`});continue}if(t.type.startsWith(`image/`)){try{n.push({type:`input_image`,image_url:await this.imageFileToDataUrl(t)})}catch(e){this.emit({type:`system_message`,content:`【系统提示】图片 ${t.name} 读取失败,原因: ${bl(e)}`})}continue}let e=new FormData;e.append(`file`,t),e.append(`AgentId`,this.config.agentId);try{let r=await this.api.uploadFile(e,{signal:this.abortController?.signal});r?.FileData?.fileUri&&n.push({type:`input_file`,filename:r.FileData.displayName||t.name,file_url:r.FileData.fileUri})}catch(e){this.emit({type:`system_message`,content:`【系统提示】文件 ${t.name} 上传失败,原因: ${bl(e)}`})}}return n}async imageFileToDataUrl(e){let t=new Uint8Array(await e.arrayBuffer()),n=``,r=32768;for(let e=0;e0&&D.getState().setLastSeqId(o),r&&(this.emit({type:`stream_event`,event:r,sessionId:e}),r.EventType===`run_status`)){let e=String(r.Content?.status||``).toLowerCase();e!==`interrupted`&&jk.has(e)&&(a=e)}}}a===void 0&&await new Promise(e=>setTimeout(e,3e3))}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)return{terminalStatus:`cancelled`};if(o+=1,o>=6)break;await new Promise(e=>setTimeout(e,800*o))}return a===void 0&&(a=`interrupted`),{terminalStatus:a}}async consumeStream(e,t,n,r,i){let a=e.getReader(),o=new TextDecoder,s=``,c=!1;try{for(;;){let{value:e,done:l}=await a.read();if(l)break;c||(c=!0,this.emit({type:`assistant_message_created`,messageId:r,invocationId:i})),s+=o.decode(e,{stream:!0});let{chunks:u,remainder:d}=yl(s);s=d;for(let e of u){if(!e.trim())continue;if(this.isCompactionChunk(e)){let t=vl(e);for(let e of t)e.eventName.startsWith(`response.compaction`)&&this.upsertCompactionMessage({...e.data,phase:e.eventName.split(`.`).pop()});continue}let i=vl(e),o=!1,s;for(let e of i){if(e.eventName===`__done__`){o=!0;continue}let i=Nk(e.eventName,e.data);i&&this.emit({type:`activity`,...i});let a=t.parse(e,n);for(let e of a)this.dispatchAction(e,r);if(_l(a)){o=!0;let e=a.find(e=>e.type===`terminal`);s=e&&`status`in e?String(e.status||``):void 0}}if(o)return a.cancel().catch(()=>{}),{terminalStatus:s}}}}catch(e){if(!(e instanceof DOMException&&e.name===`AbortError`))throw e}return{}}isCompactionChunk(e){return e.includes(`response.compaction.start`)||e.includes(`response.compaction.done`)||e.includes(`response.compaction.failed`)}dispatchAction(e,t){switch(e.type){case`text_delta`:this.emit({type:`text_delta`,messageId:t,delta:e.text});break;case`text_final`:this.emit({type:`text_final`,messageId:t,text:e.text});break;case`reasoning_delta`:this.emit({type:`reasoning_delta`,messageId:t,delta:e.text});break;case`tool_upsert`:this.emit({type:`tool_upsert`,messageId:t,name:e.name,args:e.args,status:e.status,extra:e.extra});break;case`tool_result`:this.emit({type:`tool_result`,messageId:t,name:e.name,output:e.output});break;case`approval_request`:this.emit({type:`approval_requested`,messageId:t,approvalRequestId:e.approvalRequestId,protocol:`responses`,name:e.name||`人工确认`,args:e.args||``,message:e.message||`本次运行需要人工审批后才能继续。`});break;case`incomplete`:break;case`failed`:this.emit({type:`text_final`,messageId:t,text:`生成失败:${e.message}`});break;case`terminal`:this.emit({type:`terminal`,status:e.status});break;case`compaction`:this.emit({type:`compaction`,phase:e.phase,trigger:e.trigger,compactedUntilSeqId:e.compactedUntilSeqId});break;case`a2ui_surface_begin`:this.emit({type:`a2ui_surface_begin`,surfaceId:e.surfaceId,surface:e.surface});break;case`a2ui_surface_update`:this.emit({type:`a2ui_surface_update`,surfaceId:e.surfaceId,surface:e.surface});break;case`a2ui_surface_end`:this.emit({type:`a2ui_surface_end`,surfaceId:e.surfaceId});break;case`a2ui_interaction`:this.emit({type:`a2ui_interaction`,surfaceId:e.surfaceId,interactionId:e.interactionId,kind:e.kind,inputSchema:e.inputSchema});break}}upsertCompactionMessage(e){let t=typeof e.eventName==`string`?e.eventName.split(`.`).pop():void 0,n=String(e.phase||t||`start`);this.emit({type:`compaction`,phase:n,trigger:e.trigger?String(e.trigger):void 0,compactedUntilSeqId:e.compacted_until_seq_id?Number(e.compacted_until_seq_id):void 0}),n!==`start`&&(this.activeCompactionId=null)}failCompaction(){this.activeCompactionId&&=(this.emit({type:`compaction`,phase:`failed`}),null)}},Lk=0;function Rk(e){return Lk+=1,`${e}-${Lk}`}function zk(e){return e.map(e=>e.type===`thinking`&&e.status===`streaming`?{...e,status:`done`}:e)}function Bk(e,t){let n=[...e??[]],r=n[n.length-1];return r?.type===`thinking`&&r.status===`streaming`?(n[n.length-1]={...r,content:r.content+t},n):[...n,{id:Rk(`thinking`),type:`thinking`,content:t,status:`streaming`}]}function Vk(e,t){let n=[...zk(e??[])],r=n[n.length-1];return r?.type===`text`&&r.status===`streaming`?(n[n.length-1]={...r,content:r.content+t},n):[...n,{id:Rk(`text`),type:`text`,content:t,status:`streaming`}]}function Hk(e,t){let n=zk(e??[]);if(n.filter(e=>e.type===`text`).map(e=>e.content).join(``)===t)return n.map(e=>e.type===`text`&&e.status===`streaming`?{...e,status:`done`}:e);let r=[...n],i=r.map(e=>e.type).lastIndexOf(`text`);return i>=0&&r[i].type===`text`?(r[i]={...r[i],content:t,status:`done`},r):[...r,{id:Rk(`text`),type:`text`,content:t,status:`done`}]}function Uk(e,t,n){let r=[...zk(e??[])],i=r.findIndex(e=>e.type===`tool`&&e.toolName===t);if(i>=0&&r[i].type===`tool`){let e=r[i],t=e.status===`error`||e.status===`completed`,a=n.output!==void 0,o=n.extra&&(n.extra.approvalRequestId||n.extra.approvalStatus);if(t&&!a&&!o)return r;let s=n.extra??e.extra;return r[i]={...e,...n,extra:s},r}return[...r,{id:Rk(`tool`),type:`tool`,toolName:t,args:n.args??``,output:n.output,status:n.status??`running`,extra:n.extra}]}function Wk(e){return zk(e??[])}function Gk(e){let t=[];if(e.reasoning&&e.reasoning.trim()&&t.push({id:Rk(`thinking`),type:`thinking`,content:e.reasoning,status:`done`}),e.tools)for(let n of Object.values(e.tools))t.push({id:Rk(`tool`),type:`tool`,toolName:n.name,args:n.args??``,output:n.output,status:n.status??`completed`});return e.content&&e.content.trim()&&t.push({id:Rk(`text`),type:`text`,content:e.content,status:`done`}),t}var Kk=new Set([`resolved`,`cancelled`,`expired`]);function qk(e){return Kk.has(e)}function Jk(e,t){return`interaction:${e}:revision-${t}`}function Yk(e,t){let n=t.approved;if(typeof n==`boolean`)return n?`已同意`:`已拒绝`;let r=Object.keys(t);return r.length===0?e===`approve`?`已同意`:e===`reject`?`已拒绝`:e===`cancel`?`已取消`:`已提交`:`${e}(${r.slice(0,3).map(e=>{let n=t[e];return`${e}=${typeof n==`string`?n.length>24?`${n.slice(0,24)}…`:n:typeof n==`object`&&n?`[object]`:String(n)}`}).join(`, `)})`}var Xk=class{records=new Map;listeners=new Set;key(e,t){return`${e}${t}`}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}emit(e){for(let t of this.listeners)t(e)}get(e,t){return this.records.get(this.key(e,t))||null}listPending(e){return this.listAll(e).filter(e=>e.status===`pending`)}listAll(e){return this.all().filter(t=>t.sessionId===e)}all(){return[...this.records.values()].sort((e,t)=>String(e.createdAt).localeCompare(String(t.createdAt)))}upsert(e){let t=this.get(e.sessionId,e.interactionId),n,r;return t?qk(t.status)&&!qk(e.status)||e.revisiont.interactionId===e)||null}async respond(e){let t=this.findByInteractionId(e.interactionId);if(!t)return Qk(`rejected`,e.interactionId);if(t.status===`resolved`||t.status===`cancelled`||t.status===`expired`||t.status===`resolving`)return Qk(`duplicate`,e.interactionId);let n=e.idempotencyKey||Jk(e.interactionId,e.expectedRevision),r=this.inFlight.get(e.interactionId);if(r)return Qk(r===n?`duplicate`:`rejected`,e.interactionId);this.inFlight.set(e.interactionId,n),this.store.markResolving(t.sessionId,e.interactionId);let i=this.deps.interactionV1Enabled||t.source===`interaction_v1`;try{if(!i&&t.source===`responses`&&this.deps.legacyResponsesApproval)return this.deps.legacyResponsesApproval(e.interactionId,e.action===`approve`),this.resolveLocal(t,e,n),Qk(`accepted`,e.interactionId);if(!i&&t.source===`agui`&&this.deps.legacyAguiResume)return this.deps.legacyAguiResume(String(t.extensions.interrupt_id||e.interactionId),e.action===`cancel`?`cancelled`:`resolved`,e.response)?(this.resolveLocal(t,e,n),Qk(`accepted`,e.interactionId)):(this.store.revertToPending(t.sessionId,e.interactionId),Qk(`rejected`,e.interactionId));let r=Kc(await this.deps.submitInteraction({AgentId:this.deps.agentId,SessionId:t.sessionId,RunId:t.runId||``,InteractionId:e.interactionId,ExpectedRevision:e.expectedRevision,Action:e.action,Response:e.response,IdempotencyKey:n}));return r.status===`accepted`||r.status===`duplicate`?this.store.recordIdempotencyKey(t.sessionId,e.interactionId,n):r.status===`queue_full`?this.store.revertToPending(t.sessionId,e.interactionId):this.store.markFailed(t.sessionId,e.interactionId,{code:r.error?.code??String(r.status),message:r.error?.message??`提交未通过(${r.status})`,retryable:r.error?.retryable??!1}),r}finally{this.inFlight.delete(e.interactionId)}}resolveLocal(e,t,n){let r=t.action===`cancel`?`cancelled`:`resolved`;this.store.resolveLocally(e.sessionId,t.interactionId,{status:r,outcome:Zk[t.action],actor:`user`,responseSummary:Yk(t.action,t.response),revision:t.expectedRevision});let i=this.store.get(e.sessionId,t.interactionId);i&&this.store.upsert({...i,extensions:{...i.extensions,idempotency_key:n}})}},eA=new Set([`approval`,`structured_input`,`plan_review`,`custom`]),tA=new Set([`pending`,`resolving`,`failed`,`resolved`,`cancelled`,`expired`]),nA=new Set([`approved`,`rejected`,`submitted`,`cancelled`,`expired`]);function rA(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function iA(e){return typeof e==`string`&&e.length>0?e:null}function aA(e){let t=String(e.kind||`approval`),n=String(e.status||`pending`),r=String(e.outcome||``),i=rA(e.presentation),a=i?rA(i.a2ui):null;return{interactionId:e.interactionId,sessionId:e.sessionId,runId:iA(e.runId),kind:eA.has(t)?t:`custom`,title:typeof e.title==`string`&&e.title?e.title:`人工确认`,message:typeof e.message==`string`&&e.message?e.message:`本次运行需要人工处理后才能继续。`,requestSchema:rA(e.requestSchema),presentation:a?{a2ui:{wireVersion:String(a.wire_version??a.wireVersion??``),catalogDigest:String(a.catalog_digest??a.catalogDigest??``),messages:Array.isArray(a.messages)?a.messages.filter(e=>typeof e==`object`):[]}}:null,status:tA.has(n)?n:`pending`,revision:Number.isFinite(Number(e.revision))&&Number(e.revision)>0?Number(e.revision):1,createdAt:iA(e.createdAt)||new Date().toISOString(),expiresAt:iA(e.expiresAt),resolvedAt:iA(e.resolvedAt),actor:iA(e.actor),outcome:nA.has(r)?r:null,responseSummary:iA(e.responseSummary),source:e.source,extensions:e.extensions||{}}}var oA=new Set([`interaction.requested`,`interaction_requested`,`ksadk.interaction/v1.requested`,`InteractionRequested`]),sA=new Set([`interaction.resolved`,`interaction_resolved`,`ksadk.interaction/v1.resolved`,`InteractionResolved`,`interaction.cancelled`,`interaction.cancel`,`interaction.expired`]);function cA(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function lA(e,t){let n=cA(e);if(!n)return null;let r=String(n.event_type||n.EventType||``).trim();if(!r)return null;let i=cA(n.payload??n.Content)||{},a=cA(i.interaction)||cA(i.Interaction)||cA(i.interaction_request)||i,o=String(a.interaction_id||a.InteractionId||i.interaction_id||i.InteractionId||``);if(!o)return null;let s=String(n.session_id||a.session_id||t||``);if(!s)return null;if(oA.has(r))return aA({interactionId:o,sessionId:s,runId:a.run_id??n.run_id,kind:a.kind??`approval`,title:a.title,message:a.message??a.description,requestSchema:a.request_schema??a.RequestSchema,presentation:a.presentation,status:`pending`,revision:a.revision??1,createdAt:a.created_at??n.timestamp,expiresAt:a.expires_at,source:`interaction_v1`,extensions:a.extensions});if(sA.has(r)){let e=r===`interaction.cancelled`||r===`interaction.cancel`?`cancelled`:r===`interaction.expired`?`expired`:`resolved`,t=String(i.outcome??a.outcome??a.status??``).toLowerCase(),c=String(i.action??a.action??``).toLowerCase(),l=t;l||=c===`approve`?`approved`:c===`reject`?`rejected`:c===`submit`?`submitted`:c===`cancel`||e===`cancelled`?`cancelled`:e===`expired`?`expired`:`submitted`;let u=e===`resolved`?`resolved`:e;return aA({interactionId:o,sessionId:s,runId:a.run_id??n.run_id,kind:a.kind,title:a.title,message:a.message,requestSchema:a.request_schema,presentation:a.presentation,status:u,revision:a.revision,createdAt:a.created_at??n.timestamp,expiresAt:a.expires_at,resolvedAt:i.resolved_at??a.resolved_at??n.timestamp,actor:i.actor??a.actor??n.actor_ref,outcome:l,responseSummary:i.response_summary??a.response_summary??(c?`${c}`:void 0),source:`interaction_v1`,extensions:a.extensions})}return null}function uA(e){return!e.approvalRequestId||!e.sessionId?null:aA({interactionId:e.approvalRequestId,sessionId:e.sessionId,runId:e.runId??null,kind:`approval`,title:e.name?`审批:${e.name}`:`人工确认`,message:e.message||`本次运行需要人工审批后才能继续。`,requestSchema:e.requestSchema??null,status:`pending`,revision:1,source:`responses`,extensions:e.approvalLevel?{approval_level:e.approvalLevel}:{}})}function dA(e){return!e.interruptId||!e.sessionId?null:aA({interactionId:e.interruptId,sessionId:e.sessionId,runId:e.runId??null,kind:`approval`,title:e.name?`确认:${e.name}`:`人工确认`,message:e.message||`本次运行需要人工确认后才能继续。`,requestSchema:e.requestSchema??null,status:`pending`,revision:1,source:`agui`,extensions:{interrupt_id:e.interruptId,...e.toolCallId?{tool_call_id:e.toolCallId}:{},...e.reason?{reason:e.reason}:{}}})}function fA(e){let t=typeof e==`object`&&e?e.components:null,n=Array.isArray(t)?t:[],r=[];for(let e of n)typeof e==`object`&&e&&typeof e.id==`string`&&r.push(e.id);return r.sort()}function pA(e){let t=fA(e).join(`|`),n=2166136261,r=16777619;for(let e=0;e>>0,n=Math.imul(n,16777619)>>>0,r=r+Math.imul(i+e,2246822507)>>>0}return`fnv1a-${n.toString(16)}-${r.toString(16)}`}function mA(e,t){if(!e)return hA(null);if(e.wireVersion!==`0.9.1`||!e.messages||e.messages.length===0)return hA(e);if(e.catalogDigest){let n=pA(t);if(e.catalogDigest!==n)return`json-schema-form`}return`a2ui`}function hA(e){return e&&gA(e)?`json-schema-form`:`basic-controls`}function gA(e){return e.messages.some(e=>{let t=e.inputSchema??e.input_schema??e.schema;return typeof t==`object`&&!!t})}var _A=new Xk;function vA(e,t){let n=lA(e,t);return n&&_A.upsert(n),n}function yA(e){let t=e.sessionId||``;if(!t||!e.approvalRequestId)return null;let n=e.protocol===`ag-ui`?dA({interruptId:e.approvalRequestId,sessionId:t,name:e.name,message:e.message,reason:e.approvalLevel}):uA({approvalRequestId:e.approvalRequestId,sessionId:t,name:e.name,message:e.message,approvalLevel:e.approvalLevel});return n&&_A.upsert(n),n}var bA=[],xA=[];function SA(e){return typeof e==`string`?e.trim():``}function CA(e){let t=typeof e==`number`?e:Number(e);return Number.isFinite(t)?t:void 0}function wA(e){return typeof e==`string`||typeof e==`number`?e:void 0}function TA(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:void 0}function EA(e){return e!==null}function DA(e){return e!==null}function OA(e){return[...e].sort((e,t)=>{let n=t.seqId??-1,r=e.seqId??-1;return n===r?(Date.parse(String(t.timestamp||``))||0)-(Date.parse(String(e.timestamp||``))||0):n-r})}function kA(e){return[...e].sort((e,t)=>{let n=t.seqId??-1,r=e.seqId??-1;return n===r?(Date.parse(String(t.timestamp||``))||0)-(Date.parse(String(e.timestamp||``))||0):n-r})}function AA(e){return OA(e)[0]?.runId||``}function jA(e){let t=AA(e);return t?e.filter(e=>e.runId===t):[]}function MA(e){let t=TA(e);if(!t)return null;let n=TA(t.Metadata??t.metadata),r=TA(t.Content??t.content),i=SA(t.CheckpointId??t.checkpointId??t.checkpoint_id??n?.checkpoint_id??n?.checkpointId??r?.checkpoint_id??r?.checkpointId),a=SA(t.RunId??t.runId??t.run_id??n?.run_id??n?.runId??r?.run_id??r?.runId);return!i||!a?null:{checkpointId:i,runId:a,sessionId:SA(t.SessionId??t.sessionId??t.session_id)||void 0,invocationId:SA(t.InvocationId??t.invocationId??t.invocation_id)||void 0,seqId:CA(t.SeqId??t.seqId??t.seq_id),timestamp:wA(t.Timestamp??t.timestamp??t.CreatedAt??t.createdAt),framework:SA(t.Framework??t.framework??n?.framework??r?.framework)||void 0,frameworkRef:TA(t.FrameworkRef??t.frameworkRef??t.framework_ref??n?.framework_ref??n?.frameworkRef),phase:SA(t.Phase??t.phase??n?.phase??r?.phase)||void 0,stage:SA(t.Stage??t.stage??n?.stage??n?.title)||void 0,summary:SA(t.Summary??t.summary??n?.summary??n?.description)||void 0,nextAction:SA(t.NextAction??t.nextAction??t.next_action??n?.nextAction??n?.next_action)||void 0,status:SA(t.Status??t.status??n?.status??r?.status)||void 0,metadata:n}}function NA(e){let t=TA(e);if(!t)return null;let n=SA(t.ReceiptId??t.receiptId??t.receipt_id),r=SA(t.IdempotencyKey??t.idempotencyKey??t.idempotency_key),i=SA(t.ToolName??t.toolName??t.tool_name);return!n||!r||!i?null:{receiptId:n,idempotencyKey:r,toolName:i,toolCallId:SA(t.ToolCallId??t.toolCallId??t.tool_call_id)||void 0,runId:SA(t.RunId??t.runId??t.run_id)||void 0,checkpointId:SA(t.CheckpointId??t.checkpointId??t.checkpoint_id)||void 0,sessionId:SA(t.SessionId??t.sessionId??t.session_id)||void 0,invocationId:SA(t.InvocationId??t.invocationId??t.invocation_id)||void 0,seqId:CA(t.SeqId??t.seqId??t.seq_id),timestamp:wA(t.Timestamp??t.timestamp??t.CreatedAt??t.createdAt),status:SA(t.Status??t.status)||void 0,replayed:!!(t.Replayed??t.replayed),metadata:TA(t.Metadata??t.metadata)}}var PA=S()((e,t)=>({checkpointsBySessionId:{},toolReceiptsBySessionId:{},setSessionCheckpoints:(t,n)=>e(e=>({checkpointsBySessionId:{...e.checkpointsBySessionId,[t]:OA(jA(n.map(MA).filter(EA).map(e=>({...e,sessionId:e.sessionId||t}))))}})),upsertSessionCheckpoint:(t,n)=>{let r=MA(n);r&&e(e=>{let n=e.checkpointsBySessionId[t]||[];r.sessionId=r.sessionId||t;let i=new Map(n.map(e=>[e.checkpointId,e]));i.set(r.checkpointId,{...i.get(r.checkpointId),...r});let a=jA([...i.values()]);return{checkpointsBySessionId:{...e.checkpointsBySessionId,[t]:OA(a)}}})},getSessionCheckpoints:e=>{let n=String(e||``);return n&&t().checkpointsBySessionId[n]||bA},setSessionToolReceipts:(t,n)=>e(e=>({toolReceiptsBySessionId:{...e.toolReceiptsBySessionId,[t]:kA(n.map(NA).filter(DA).map(e=>({...e,sessionId:e.sessionId||t})))}})),getSessionToolReceipts:e=>{let n=String(e||``);return n&&t().toolReceiptsBySessionId[n]||xA},clearSessionCheckpoints:t=>e(e=>{let n=String(t||``);if(!n)return{checkpointsBySessionId:{},toolReceiptsBySessionId:{}};let r={...e.checkpointsBySessionId},i={...e.toolReceiptsBySessionId};return delete r[n],delete i[n],{checkpointsBySessionId:r,toolReceiptsBySessionId:i}})}));function FA(e){return String(e||``).replace(/\\u([0-9a-fA-F]{4})/g,(e,t)=>String.fromCharCode(Number.parseInt(t,16)))}function IA(e){let t=String(e||``).trim();for(let e=0;e<3;e+=1){if(!t)return t;let e=t[0],n=t[t.length-1];if(!(e===`{`&&n===`}`||e===`[`&&n===`]`||e===`"`&&n===`"`))return t.replace(/\\n/g,` -`).replace(/\\"/g,`"`);try{let e=JSON.parse(t);if(typeof e!=`string`)return LA(e);t=e.trim()}catch{return FA(t).replace(/\\n/g,` -`).replace(/\\"/g,`"`)}}return t}function LA(e){return typeof e==`string`?IA(e):Array.isArray(e)?e.map(e=>LA(e)):!e||typeof e!=`object`?e:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,LA(t)]))}function RA(e){return typeof e==`string`?IA(e):LA(e)}function zA(e){return e===!1?!0:typeof e==`string`?e.trim().toLowerCase()===`false`:!1}function BA(e){return e===!0?!0:typeof e==`string`?e.trim().toLowerCase()===`true`:!1}function VA(e){return e==null||e===!1?!1:typeof e==`string`?e.trim().length>0:typeof e==`object`?Object.keys(e).length>0:!0}function HA(e){return String(e?.status||``).trim().toLowerCase()===`accepted_not_extracted`}function UA(e,t=0){if(!e||t>4)return!1;if(typeof e==`string`){let n=IA(e);return n!==e&&UA(n,t+1)}if(Array.isArray(e))return e.some(e=>UA(e,t+1));if(typeof e!=`object`||HA(e))return!1;if(zA(e.ok)||zA(e.success))return!0;let n=BA(e.ok)||BA(e.success),r=String(e.status||``).trim().toLowerCase();return!n&&[`error`,`failed`,`failure`].includes(r)||!n&&(VA(e.error_type)||VA(e.error_message)||VA(e.error))?!0:Object.values(e).some(e=>UA(e,t+1))}function WA(e){return e==null||e===``?!1:UA(RA(e))}function GA(e){if(e==null||e===``)return``;let t=RA(e);return typeof t==`string`?t:JSON.stringify(t,null,2)}var KA=new Set([`completed`,`failed`,`error`,`cancelled`,`canceled`,`aborted`,`interrupted`,`resume_failed`]),qA=new Set([`tool_call`,`tool_result`,`stage_tool_call`,`stage_tool_result`]),JA={"run.started":`in_progress`,"run.progress":`in_progress`,"run.interrupted":`interrupted`,"run.completed":`completed`,"run.failed":`failed`,"run.canceled":`cancelled`};function YA(e){let t=e?.Content?.payload;return t&&typeof t==`object`?t:{}}function XA(e,t){let n=String(e||``),r=String(t||``);return n?!r||n.endsWith(r)?n:r.startsWith(n)?r:`${n}${r}`:r}function ZA(e){let t=String(e?.EventType||``),n=YA(e);return JA[t]?{...e,EventType:`run_status`,Content:{status:String(n.status||JA[t]),...n.detail?{detail:String(n.detail)}:{}}}:t===`reasoning.delta`||t===`reasoning.completed`?{...e,EventType:`reasoning`,Content:{role:`model`,parts:[{text:String(n.text||``)}]}}:t===`tool.call.begin`?{...e,EventType:`tool_call`,Metadata:{...e.Metadata||{},tool_name:n.name,tool_args:n.args,tool_call_id:n.call_id},Content:{role:`model`,parts:[]}}:t===`tool.call.end`?{...e,EventType:`tool_result`,Metadata:{...e.Metadata||{},tool_name:n.name,tool_output:n.error||n.result,tool_call_id:n.call_id},Content:{role:`model`,parts:[]}}:e}function QA(e){let t=[],n=new Map;for(let r of Array.isArray(e)?e:[]){let e=String(r?.EventType||``);if(e===`text.delta`||e===`text.completed`){let e=String(r?.InvocationId||``).trim();if(!e)continue;let t=n.get(e);n.set(e,{event:r,text:XA(t?.text,YA(r).text)});continue}t.push(ZA(r))}for(let{event:e,text:r}of n.values())t.push({...e,EventType:`assistant_stream_snapshot`,Content:{role:`model`,parts:[{text:r}]},Metadata:{...e.Metadata||{},stream_snapshot:!0}});return t.sort((e,t)=>dj(e)-dj(t))}function $A(e){let t=String(e?.EventType||``).trim(),n=YA(e);return String(e?.Content?.status||n.status||JA[t]||``).trim().toLowerCase()}function ej(e){return typeof e==`string`?e:Array.isArray(e)?e.map(e=>typeof e==`string`?e:e&&typeof e==`object`&&typeof e.text==`string`?e.text:``).join(``):``}function tj(e){let t=String(e||``).trim();return t?`/agentengine/api/v1/AttachmentContent?FileUri=${encodeURIComponent(t)}`:``}function nj(e){return String(e||``).match(/^data:([^;,]+)/)?.[1]||``}function rj(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return!n||!r||n===r?!0:n.endsWith(`/*`)?r.startsWith(n.slice(0,-1)):r.endsWith(`/*`)?n.startsWith(r.slice(0,-1)):!1}function ij(e){let t=e?.Content?.parts||[],n=[],r=new Map,i=e=>{let t=`${e.fileUri||e.url||e.name}|${e.type}`;r.has(t)||r.set(t,e)};for(let e of t){if(e?.type===`input_text`||e?.text){n.push(e.text||``);continue}if(e?.type===`input_file`&&e.inlineData){i({name:e.inlineData.displayName||`attachment`,url:`data:${e.inlineData.mimeType||`application/octet-stream`};base64,${e.inlineData.data}`,type:e.inlineData.mimeType||`application/octet-stream`});continue}if(e?.type===`input_file`&&typeof e.file_data==`string`&&e.file_data){i({name:e.filename||e.displayName||e.display_name||`attachment`,url:`data:${e.mime_type||e.mimeType||`application/octet-stream`};base64,${e.file_data}`,type:e.mime_type||e.mimeType||`application/octet-stream`});continue}if(e?.type===`input_file`&&typeof e.file_url==`string`&&e.file_url.trim()){let t=e.file_url.trim();i({name:e.filename||e.displayName||e.display_name||`attachment`,url:tj(t),type:e.mime_type||e.mimeType||`application/octet-stream`,fileUri:t});continue}if(e?.type===`input_image`||e?.type===`image_url`){let t=typeof e.image_url==`string`?e.image_url:e.image_url?.url;t&&i({name:e.filename||e.displayName||e.display_name||`uploaded_image`,url:t,type:e.mime_type||e.mimeType||nj(t)||`image/*`});continue}if(e?.type===`input_file`&&e.fileData){let t=String(e.fileData.fileUri||``).trim();i({name:e.fileData.displayName||`attachment`,url:tj(t),type:e.fileData.mimeType||`application/octet-stream`,fileUri:t})}}let a=Array.isArray(e?.Metadata?.attachments)?e.Metadata.attachments:[];for(let e of a){let t=String(e.file_uri||``).trim(),n={name:e.display_name||`attachment`,url:tj(t),type:e.mime_type||`application/octet-stream`,fileUri:t};!n.url&&!n.fileUri&&Array.from(r.values()).some(e=>e.name===n.name&&rj(e.type,n.type)&&(e.url||e.fileUri))||i(n)}let o=Array.from(r.values());return{text:n.join(``),attachments:o.length>0?o:void 0}}function aj(e){let t=e?.Metadata?.responses_output;if(!Array.isArray(t))return{};let n=Zc(),r=ll({eventName:`response.completed`,data:{response:{id:String(e.Metadata?.response_id||``),output:t}},state:n}),i=``,a={};for(let e of r){if(e.type===`reasoning_delta`){i+=e.text;continue}if(e.type===`tool_upsert`){a[e.name]={...a[e.name]||{name:e.name,args:``},name:e.name,args:e.args,status:e.status,...e.approvalRequestId?{approvalRequestId:e.approvalRequestId}:{},...e.previousResponseId?{previousResponseId:e.previousResponseId}:{},...e.serverLabel?{serverLabel:e.serverLabel}:{},...e.approvalRequestId?{approvalStatus:`pending`}:{}};continue}e.type===`tool_result`&&(a[e.name]={...a[e.name]||{name:e.name,args:``},name:e.name,output:e.output,status:WA(e.output)?`error`:`completed`})}return{...i?{reasoning:i}:{},...Object.keys(a).length>0?{tools:a}:{}}}function oj(e,t,n){return t===`running`?e===`prompt_too_long`?`检测到上下文过长,正在自动压缩历史后重试`:`正在自动压缩上下文`:n?e===`prompt_too_long`?`上下文过长,系统已自动压缩历史并重试`:`系统已自动压缩较早的对话上下文`:t===`failed`?`自动压缩上下文未完成`:e===`prompt_too_long`?`已完成上下文压缩,并继续当前回复`:`已完成上下文压缩`}function sj(e,t){return[e,t.content||``,t.reasoning||``].join(`\0`)}function cj(e){return e?.Metadata?.responses_mirror===!0||String(e?.Metadata?.responses_mirror||``).trim().toLowerCase()===`true`}function lj(e){if(e?.EventType!==`user_message`)return``;let t=ij(e),n=(t.attachments||[]).map(e=>[e.name||``,e.fileUri||``,e.url||``,e.type||``].join(``)).sort().join(``);return[String(t.text||``).trim(),n].join(`\0`)}function uj(e){return e?.EventType===`assistant_stream_snapshot`}function dj(e){let t=Number(e?.SeqId||0);if(Number.isFinite(t)&&t>0)return t;let n=Number(e?.Timestamp||0);return Number.isFinite(n)?n:0}function fj(e){if(typeof e==`string`)return e;if(e==null)return``;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function pj(e){let t=String(e?.EventType||``);if(!qA.has(t))return null;let n=String(e.Metadata?.tool_name||e.Metadata?.name||e.Metadata?.function_name||ej(e.Content?.parts)||`tool`).trim()||`tool`,r={name:n,args:``,status:`running`},i=t===`tool_result`||t===`stage_tool_result`?(()=>{let t=fj(e.Metadata?.tool_output??e.Metadata?.output??e.Metadata?.result??ej(e.Content?.parts));return{...r,output:t,status:WA(t)?`error`:`completed`}})():{...r,args:fj(e.Metadata?.tool_args??e.Metadata?.arguments??e.Metadata?.args??{})};return{id:e.EventId||String(Date.now()+Math.random()),role:`model`,content:``,timestamp:e.Timestamp||Date.now(),eventType:t,tools:{[n]:i}}}function mj(e={},t={}){let n={...e||{}};for(let[e,r]of Object.entries(t||{}))n[e]={...n[e]||{},...r||{},name:e,args:r?.args||n[e]?.args||``};return n}function hj(e={},t=``){let n=String(t||``).trim().toLowerCase(),r=n===`completed`?`completed`:KA.has(n)?`error`:``;if(!r)return e;let i=!1,a={};for(let[t,n]of Object.entries(e||{}))n?.status===`running`?(i=!0,a[t]={...n,status:r}):a[t]=n;return i?a:e}function gj(e,t){return{...e,reasoning:_j(e.reasoning,t.reasoning),tools:{...e.tools||{},...t.tools||{}},eventId:t.eventId||e.eventId,responseId:t.responseId||e.responseId,traceId:t.traceId||e.traceId,rootSpanId:t.rootSpanId||e.rootSpanId,timestamp:Math.max(Number(e.timestamp||0),Number(t.timestamp||0))||t.timestamp||e.timestamp,id:t.responseId||t.reasoning||t.tools?t.id:e.id}}function _j(e=``,t=``){let n=String(e||``),r=String(t||``);return n?!r||n.endsWith(r)?n:r.startsWith(n)?r:`${n}${r}`:r}function vj(e){return{id:e.id,role:`system`,eventType:`context_checkpoint`,status:e.status,trigger:e.trigger,compactedUntilSeqId:e.compactedUntilSeqId,summary:e.summary,historical:e.historical,timestamp:e.timestamp,content:oj(e.trigger,e.status,e.historical)}}function yj(e){let t=e?.EventType||``;if(t===`run_status`)return e.Content?.status===`failed`?{id:e.EventId||String(Date.now()+Math.random()),role:`system`,content:e.Content?.detail||`本轮运行失败。`,eventType:t,status:`failed`,timestamp:e.Timestamp||Date.now()}:e.Content?.status===`cancelled`?{id:e.EventId||String(Date.now()+Math.random()),role:`system`,content:e.Content?.detail||`本轮输出已停止。`,eventType:t,status:`cancelled`,timestamp:e.Timestamp||Date.now()}:null;if(t===`context_checkpoint`){let t=ij(e);return vj({id:e.EventId||String(Date.now()+Math.random()),timestamp:e.Timestamp||Date.now(),status:`completed`,trigger:String(e.Metadata?.trigger||`auto`),compactedUntilSeqId:Number(e.Metadata?.compacted_until_seq_id||0)||void 0,summary:t.text||void 0,historical:!0})}if(t===`reasoning`){let n=ij(e).text||ej(e.Metadata?.reasoning);return n?{id:e.EventId||String(Date.now()+Math.random()),role:`model`,content:``,reasoning:n,timestamp:e.Timestamp||Date.now(),eventType:t}:null}if(qA.has(t))return pj(e);if(t!==`user_message`&&t!==`assistant_message`&&t!==`assistant_stream_snapshot`)return null;let n=ij(e),r=t===`assistant_message`?aj(e):{};if(!n.text&&!n.attachments?.length&&!r.reasoning&&!r.tools)return null;let i=String(e.Metadata?.response_id||e.Metadata?.ResponseId||``).trim(),a=String(e.Metadata?.trace_id||e.Metadata?.TraceId||``).trim(),o=String(e.Metadata?.root_span_id||e.Metadata?.rootSpanId||e.Metadata?.RootSpanId||``).trim();return{id:e.EventId||String(Date.now()+Math.random()),role:t===`user_message`?`user`:`model`,content:n.text,timestamp:e.Timestamp||Date.now(),eventType:t,eventId:e.EventId||void 0,responseId:i||void 0,traceId:a||void 0,rootSpanId:o||void 0,attachments:n.attachments,...r}}function bj(e=[]){let t=new Map,n=new Map,r=new Set,i=new Set,a=new Set,o=new Set,s=QA(e),c=[];for(let e of s){let t=String(e?.EventId||``).trim();if(t){if(o.has(t))continue;o.add(t)}c.push(e)}let l=new Set,u=new Set,d=new Map;for(let e of c){if(e?.EventType!==`user_message`||cj(e)){if(e?.EventType===`assistant_message`){let t=String(e.InvocationId||``).trim();t&&u.add(t)}if(uj(e)){let t=String(e.InvocationId||``).trim();if(t){let n=d.get(t);(!n||dj(e)>=dj(n))&&d.set(t,e)}}continue}let t=lj(e);t&&l.add(t)}let f=c.filter(e=>{if(uj(e)){let t=String(e.InvocationId||``).trim();return t?u.has(t)?!1:d.get(t)===e:!0}if(e?.EventType!==`user_message`||!cj(e))return!0;let t=lj(e);return!t||!l.has(t)});for(let e of f){let a=String(e.InvocationId||``).trim();a&&e.EventType===`user_message`&&i.add(a),a&&[`assistant_message`,`assistant_stream_snapshot`,`reasoning`,`tool_call`,`tool_result`,`stage_tool_call`,`stage_tool_result`].includes(String(e.EventType||``))&&r.add(a),e.EventType===`run_status`&&a&&(t.set(a,String(e.Content?.status||``).trim()),n.set(a,e))}let p=[],m=new Map,h=null,g=new Map,_=e=>{let t=String(e?.responseId||``).trim(),n=t?m.get(t):void 0;if(n!==void 0){p[n]=gj(p[n],e);return}t&&m.set(t,p.length),p.push(e)},v=()=>{h&&=(_(h),null)},y=e=>{let n=String(e||``).trim();if(!n)return{};let r=g.get(n);return r?(g.delete(n),{tools:hj(r.tools,t.get(n))}):{}};for(let e of f){if(e.EventType===`run_status`)continue;let t=yj(e);if(!t)continue;let n=String(e.InvocationId||``).trim();if(n&&(t.invocationId=n),qA.has(t.eventType)){let n=String(e.InvocationId||``).trim();if(!n){v(),_(t);continue}let r=g.get(n);g.set(n,{...r||{id:t.id,role:`model`,content:``,timestamp:t.timestamp,invocationId:n},timestamp:Math.max(Number(r?.timestamp||0),Number(t.timestamp||0)),tools:mj(r?.tools,t.tools)});continue}if(t.eventType===`reasoning`){let n=String(e.InvocationId||``).trim();if(h&&n&&h.invocationId===n){h.reasoning=`${h.reasoning||``}${t.reasoning||``}`,h.timestamp=t.timestamp;continue}v(),h={...t,...n?{invocationId:n}:{}};continue}let r=t.eventType===`assistant_message`||t.eventType===`assistant_stream_snapshot`;if(r&&h){let n=String(e.InvocationId||``).trim(),r=sj(n,t);if(t.eventType===`assistant_message`&&n&&a.has(r)){h=null;continue}t.eventType===`assistant_message`&&n&&a.add(r),_({...t,...y(n),reasoning:_j(h.reasoning,t.reasoning)}),h=null;continue}if(v(),r){let n=String(e.InvocationId||``).trim(),r=sj(n,t);if(t.eventType===`assistant_message`&&n&&a.has(r))continue;t.eventType===`assistant_message`&&n&&a.add(r),_({...t,...y(n)});continue}_(t)}v();for(let[e,n]of g.entries())_({...n,tools:hj(n.tools,t.get(e))});for(let[e,a]of t.entries()){if(a!==`in_progress`||r.has(e)||!i.has(e))continue;let t=n.get(e)||{};_({id:`run-placeholder-${e}`,role:`model`,content:``,status:`running`,eventType:`run_status`,timestamp:t.Timestamp||Date.now()})}return p}function xj(e=[],t=[]){let n=[],r=new Set;for(let i of[...Array.isArray(e)?e:[],...Array.isArray(t)?t:[]]){let e=String(i?.EventId||``).trim();if(e){if(r.has(e))continue;r.add(e)}n.push(i)}return n.sort((e,t)=>{let n=Number(e?.SeqId||0),r=Number(t?.SeqId||0);return Number.isFinite(n)&&Number.isFinite(r)&&n!==r?n-r:Number(e?.Timestamp||0)-Number(t?.Timestamp||0)})}function Sj(e){return KA.has($A(e))}function Cj(e,t){let n=String(e||``),r=String(t||``);return!n||!r||n.endsWith(r)?n||r:r.startsWith(n)?r:`${n}${r}`}function wj(e,t){return e?t?Object.fromEntries([...new Set([...Object.keys(e),...Object.keys(t)])].map(n=>[n,{...e[n]||{},...t[n]||{}}])):e:t}function Tj(e,t,n){let r=bj(t).filter(e=>e.role===`model`).at(-1);if(!r)return e;let i=e.findIndex(e=>e.role===`model`&&e.invocationId===n),a=i>=0?e[i]:void 0,o=Cj(a?.content,r.content),s=Cj(a?.reasoning,r.reasoning),c=wj(a?.tools,r.tools),l={...a,...r,id:a?.id||r.id||`${n}:assistant`,invocationId:n,content:o,reasoning:s,tools:c,blocks:Gk({content:o,reasoning:s,tools:c})};return i<0?[...e,l]:e.map((e,t)=>t===i?l:e)}var Ej=new Set([`completed`]),Dj=new Set([`failed`,`error`,`cancelled`,`canceled`,`aborted`,`incomplete`]),Oj=new Map;function kj(e,t){an.getState().patchMessages(n=>n.some(t=>t.id===e)?t?n.map(n=>n.id===e?{...n,invocationId:t}:n):n:[...n,{id:e,role:`model`,content:``,timestamp:Date.now(),reasoning:``,invocationId:t}])}function Aj(e){let t=String(e||``).trim().toLowerCase(),n=Ej.has(t)?`completed`:Dj.has(t)?`error`:null;n&&an.getState().patchMessages(e=>e.map(e=>{if(!e.tools)return e;let t=!1,r=Object.fromEntries(Object.entries(e.tools).map(([e,r])=>r.status===`running`?(t=!0,[e,{...r,status:n}]):[e,r]));return t?{...e,tools:r}:e}))}function jj(e){let t=!!(e.sessionId&&Ze.getState().currentSessionId!==e.sessionId);if(t&&![`activity`,`stage_changed`,`stream_ended`,`error`,`rate_limited`,`terminal`].includes(e.type))return;let n=an.getState(),r=e=>{e&&D.getState().updateActivity({sessionId:e})};switch(e.type){case`activity`:D.getState().updateActivity({sessionId:e.sessionId,source:e.source,status:e.status,phase:e.phase,detail:e.detail,countEvent:e.countEvent});break;case`user_message_added`:D.getState().setBanner(null),n.patchMessages(t=>[...t,{id:e.messageId,role:`user`,content:``,timestamp:Date.now()}]);break;case`assistant_message_created`:kj(e.messageId,e.invocationId);break;case`text_delta`:kj(e.messageId),r(e.sessionId),n.patchMessages(t=>t.map(t=>t.id===e.messageId?{...t,content:t.content+e.delta,blocks:Vk(t.blocks,e.delta)}:t));break;case`text_final`:kj(e.messageId),r(e.sessionId),n.patchMessages(t=>t.map(t=>t.id===e.messageId?{...t,content:e.text,blocks:Hk(t.blocks,e.text)}:t));break;case`reasoning_delta`:kj(e.messageId),r(e.sessionId),n.patchMessages(t=>t.map(t=>t.id===e.messageId?{...t,reasoning:(t.reasoning||``)+e.delta,blocks:Bk(t.blocks,e.delta)}:t));break;case`tool_upsert`:kj(e.messageId),r(e.sessionId),n.patchMessages(t=>t.map(t=>{if(t.id!==e.messageId)return t;let n=t.tools?.[e.name],r=n?.approvalStatus===`approved`||n?.approvalStatus===`rejected`,i=e.status,a=n?.approvalStatus===`rejected`?`completed`:n?.status===`error`&&i!==`error`?`error`:i;return{...t,blocks:Uk(t.blocks,e.name,{args:e.args,status:a,extra:e.extra}),tools:{...t.tools||{},[e.name]:{...n||{name:e.name,args:``},name:e.name,args:e.args,status:a,...e.extra||{},...e.extra?.approvalRequestId&&!r?{approvalStatus:`pending`}:{}}}}}));break;case`tool_result`:kj(e.messageId),r(e.sessionId),n.patchMessages(t=>t.map(t=>{if(t.id!==e.messageId)return t;let n=WA(e.output)?`error`:`completed`;return{...t,blocks:Uk(t.blocks,e.name,{output:e.output,status:n}),tools:{...t.tools||{},[e.name]:{...t.tools?.[e.name]||{name:e.name,args:``},output:e.output,status:n}}}}));break;case`approval_requested`:kj(e.messageId),yA({approvalRequestId:e.approvalRequestId,protocol:e.protocol,name:e.name,message:e.message,args:e.args,approvalLevel:e.approvalLevel,sessionId:e.sessionId}),n.patchMessages(t=>t.map(t=>{if(t.id!==e.messageId)return t;let n=t.tools?.[e.approvalRequestId],r=n?.approvalStatus===`approved`||n?.approvalStatus===`rejected`,i={approvalRequestId:e.approvalRequestId,approvalProtocol:e.protocol,approvalStatus:r?n.approvalStatus:`pending`,...e.message?{approvalMessage:e.message}:{},...e.approvalLevel?{approvalLevel:e.approvalLevel}:{}},a=r?n.status:`paused`;return{...t,blocks:Uk(t.blocks,e.name,{args:e.args,status:a,extra:i}),tools:{...t.tools||{},[e.approvalRequestId]:{...n||{},name:e.name,args:e.args,status:a,...i}}}}));break;case`approval_resolved`:n.patchMessages(t=>t.map(t=>{if(!t.tools)return t;let n=!1,r=Object.fromEntries(Object.entries(t.tools).map(([t,r])=>{if(r.approvalRequestId!==e.approvalRequestId)return[t,r];n=!0;let i=e.decision===`rejected`?`completed`:r.status===`paused`?`running`:r.status;return[t,{...r,status:i,approvalStatus:e.decision}]}));return n?{...t,tools:r,blocks:t.blocks?.map(t=>{if(t.type!==`tool`||t.extra?.approvalRequestId!==e.approvalRequestId)return t;let n=e.decision===`rejected`?`completed`:t.status===`paused`?`running`:t.status;return{...t,status:n,extra:{...t.extra,approvalStatus:e.decision}}})}:t}));break;case`system_message`:n.patchMessages(t=>[...t,{id:String(Date.now()+Math.random()),role:`system`,content:e.content,timestamp:Date.now()}]);break;case`compaction`:{let t=`compaction-${Date.now()}`,r=e.phase===`start`?`running`:e.phase===`failed`?`failed`:`completed`,i=vj({id:t,timestamp:Date.now(),status:r,trigger:e.trigger,compactedUntilSeqId:e.compactedUntilSeqId});n.patchMessages(e=>e.findIndex(e=>e.id===t)<0?[...e,i]:e.map(e=>e.id===t?{...e,...i}:e));break}case`stage_changed`:e.stage===`streaming`||e.stage===`connecting`?D.getState().setSessionStreaming(e.sessionId,!0):(e.stage===`completing`||e.stage===`error`||e.stage===`cancelled`)&&D.getState().setSessionStreaming(e.sessionId,!1);break;case`stream_ended`:D.getState().setSessionStreaming(e.sessionId,!1),t||an.getState().patchMessages(e=>e.map(e=>e.role!==`model`||!e.blocks?.some(e=>e.status===`streaming`)?e:{...e,blocks:Wk(e.blocks.map(e=>e.type===`text`&&e.status===`streaming`?{...e,status:`done`}:e))})),globalThis.setTimeout(()=>{let t=D.getState();t.getSessionActivity(e.sessionId)?.status===`completed`&&t.clearSessionActivity(e.sessionId)},2400);break;case`error`:D.getState().setSessionStreaming(e.sessionId,!1),D.getState().updateActivity({sessionId:e.sessionId,status:`failed`,phase:`连接断开或生成出错`,countEvent:!1}),t||(D.getState().setBanner({kind:`error`,message:`连接断开或生成出错,请重试`,sessionId:e.sessionId}),n.patchMessages(e=>[...e,{id:String(Date.now()),role:`model`,content:`连接断开或生成出错。`,timestamp:Date.now()}]));break;case`rate_limited`:D.getState().setSessionStreaming(e.sessionId,!1),D.getState().updateActivity({sessionId:e.sessionId,status:`failed`,phase:`请求被限流`,countEvent:!1}),t||D.getState().setBanner({kind:`rate_limited`,message:e.message||`请求过于频繁,请稍后重试`,retryAfterSec:e.retryAfterSec,sessionId:e.sessionId});break;case`terminal`:t||Aj(e.status);break;case`stream_event`:{let t=e.sessionId||e.event.SessionId;vA(e.event,t||void 0);let n=e.event.SeqId;typeof n==`number`&&n>0&&D.getState().setLastSeqId(n),t&&D.getState().updateActivity({sessionId:t});let r=String(e.event.InvocationId||``).trim();if(t&&r){let n=`${t}:${r}`,i=xj(Oj.get(n)||[],[e.event]);Oj.set(n,i),an.getState().patchMessages(e=>Tj(e,i,r)),Sj(e.event)&&Oj.delete(n)}e.event.EventType===`run_checkpoint`&&t&&PA.getState().upsertSessionCheckpoint(t,e.event);{let n=$A(e.event);n===`completed`?D.getState().updateActivity({sessionId:t,status:`completed`,phase:`后台长任务已完成`,countEvent:!1}):n===`cancelled`||n===`canceled`||n===`aborted`?D.getState().updateActivity({sessionId:t,status:`stopped`,phase:`后台长任务已取消`,countEvent:!1}):(n===`failed`||n===`error`)&&D.getState().updateActivity({sessionId:t,status:`failed`,phase:`后台长任务失败`,countEvent:!1})}break}case`a2ui_surface_begin`:{let t=`a2ui-${e.surfaceId}`;an.getState().patchMessages(n=>[...n.filter(e=>e.id!==t),{id:t,role:`a2ui`,content:``,timestamp:Date.now(),a2ui:{surfaceId:e.surfaceId,surface:e.surface}}]);break}case`a2ui_surface_update`:{let t=`a2ui-${e.surfaceId}`;an.getState().patchMessages(n=>n.map(n=>n.id===t&&n.a2ui?{...n,a2ui:{...n.a2ui,surface:e.surface}}:n));break}case`a2ui_surface_end`:{let t=`a2ui-${e.surfaceId}`;an.getState().patchMessages(e=>e.map(e=>e.id===t&&e.a2ui?{...e,a2ui:{...e.a2ui,ended:!0}}:e));break}case`a2ui_interaction`:{let t=`a2ui-${e.surfaceId}`;an.getState().patchMessages(n=>n.map(n=>n.id===t&&n.a2ui?{...n,a2ui:{...n.a2ui,pendingInteraction:{interactionId:e.interactionId,kind:e.kind,inputSchema:e.inputSchema}}}:n));break}case`agui_activity`:{let t=`agui-a2ui-${e.surfaceId}`;an.getState().patchMessages(n=>{let r={surfaceId:e.surfaceId,messages:e.messages},i=!1,a=n.map(t=>{if(t.id!==e.messageId)return t;i=!0;let n=[...(t.aguiActivities||[]).filter(t=>t.surfaceId!==e.surfaceId),r];return{...t,aguiActivities:n}});if(i)return a;let o=n.find(e=>e.id===t),s={id:t,role:`a2ui`,content:``,timestamp:o?.timestamp||Date.now(),aguiActivity:r};return o?n.map(e=>e.id===t?s:e):[...n,s]});break}}}function Mj(){Oj.clear()}function Nj(e){let t=(0,b.useRef)(new Map),n=(0,b.useRef)(()=>{}),{agentId:r,apiFormats:i,agentFramework:a,selectedModel:o,selectedModelMetadata:s,thinkingMode:c,permissionMode:l,currentSessionIdRef:u,queuedDraftRef:d,onRunSettled:f,uiCapabilities:p}=e,m=(0,b.useCallback)(e=>{e.updateConfig({agentId:r,apiFormats:i,agentFramework:a,selectedModel:o,selectedModelMetadata:s,thinkingMode:p.Thinking?c:`auto`,permissionMode:l,runtimeCapabilityMatrix:p.RuntimeCapabilityMatrix,hostedChatTransport:Se(p,{requireResumableRun:!!(p.RunLifecycle?.Enabled&&p.RunLifecycle.Resume)}),checkpointResumePreviewEnabled:!!p.RunLifecycle?.CheckpointResumePreview})},[r,i,a,o,s,c,l,p]),h=(0,b.useCallback)(n=>{let r=String(n||`new-session`),i=t.current.get(r);return i?m(i):(i=new Ik(e.api),m(i),i.subscribe(jj),t.current.set(r,i)),i},[e.api,m]);(0,b.useEffect)(()=>{for(let e of t.current.values())m(e)},[m]);let g=(0,b.useCallback)(e=>{d.current.push(e),C.getState().setQueuedDrafts(t=>[...t,e])},[d]),_=(0,b.useCallback)(e=>{let i=u.current,a=h(i);if(a.stage!==`idle`)return!1;Mj(),C.getState().setMobileActionsOpen(!1),D.getState().setSessionStreaming(i,!0);let o=e.text.trim(),s=String(Date.now()),c=e.attachments.map(e=>({name:e.name,url:URL.createObjectURL(e),type:e.type||`application/octet-stream`}));(o||c.length>0)&&an.getState().patchMessages(e=>[...e,{id:s,role:`user`,content:o,timestamp:Date.now(),attachments:c.length?c:void 0}]);let l=a.start({text:e.text,attachments:e.attachments,responsesInput:e.responsesInput,previousResponseId:e.previousResponseId,executionMode:e.executionMode,sessionId:i,onSessionCreated:e=>{Ze.getState().upsertSessions([{SessionId:e,UpdatedAt:new Date().toISOString()}]),u.current=e,kt(r,e),Ze.getState().setCurrentSessionId(e),i!==e&&t.current.set(e,a)},onSessionUpsert:()=>{},onSettled:e=>{f?.(e),n.current()}});return l||D.getState().setSessionStreaming(i,!1),l},[r,u,h,f]);(0,b.useEffect)(()=>{n.current=()=>{let e=d.current.shift();if(!e){C.getState().setQueuedDrafts([]);return}C.getState().setQueuedDrafts(e=>e.slice(1)),queueMicrotask(()=>{_(e)||(d.current.unshift(e),C.getState().setQueuedDrafts(t=>[e,...t]))})}},[d,_]);let v=(0,b.useCallback)(async(e,t,n,r,i)=>{let a={text:e,attachments:t,responsesInput:n,previousResponseId:r,executionMode:i};if(h(u.current).stage!==`idle`&&D.getState().isSessionStreaming(u.current)){n===void 0&&g({text:e,attachments:t,executionMode:i});return}!_(a)&&n===void 0&&g({text:e,attachments:t,executionMode:i})},[u,g,h,_]),y=(0,b.useCallback)(()=>{h(u.current).stop()},[u,h]),x=(0,b.useCallback)(()=>{h(u.current).disconnect()},[u,h]),ee=(0,b.useCallback)(e=>{let t=h(e.sessionId);if(t.stage!==`idle`)return!1;Mj(),C.getState().setMobileActionsOpen(!1),D.getState().setSessionStreaming(e.sessionId,!0);let r=t.resumeCheckpoint({...e,onSettled:e=>{f?.(e),n.current()}});return r||D.getState().setSessionStreaming(e.sessionId,!1),r},[h,f]),te=(0,b.useCallback)(()=>{Mj()},[]);return{submitDraft:v,stopGeneration:y,disconnectRun:x,resumeCheckpoint:ee,submitAguiAction:(0,b.useCallback)(e=>{let t=e.userAction;if(!t)return!1;let n=t.context||{},r=String(n.interruptId||n.interrupt_id||``);if(!r)return!1;let i=u.current;if(!i)return!1;let a=h(i),o=n.status===`cancelled`?`cancelled`:`resolved`,s=Object.prototype.hasOwnProperty.call(n,`payload`)?n.payload:{action:t.name,sourceComponentId:t.sourceComponentId,context:n};return a.resumeAguiInterrupt({sessionId:i,interruptId:r,status:o,payload:s,onSettled:f})},[u,h,f]),respondToAguiApproval:(0,b.useCallback)(e=>{if(!e.interruptId)return!1;let t=u.current;if(!t)return!1;let n=h(t);if(n.stage!==`idle`)return!1;D.getState().setSessionStreaming(t,!0);let r=n.resumeAguiInterrupt({sessionId:t,interruptId:e.interruptId,status:`resolved`,payload:{decision:e.approve?`approve`:`reject`},onSettled:f});return r||D.getState().setSessionStreaming(t,!1),r},[u,h,f]),resetCompaction:te}}function Pj(e){return String(e||``).trim()}function Fj(e){let t=Pj(e).toLowerCase();return t===`up`||t===`down`?t:``}function Ij(e){if(!e||typeof e!=`object`)return null;let t=Fj(e.Rating||e.rating);return t?{agentId:Pj(e.AgentId||e.agentId),sessionId:Pj(e.SessionId||e.sessionId),responseId:Pj(e.ResponseId||e.responseId),eventId:Pj(e.EventId||e.eventId),rating:t,comment:String(e.Comment??e.comment??``),traceId:Pj(e.TraceId||e.traceId),rootSpanId:Pj(e.RootSpanId||e.rootSpanId),updatedAt:Pj(e.UpdatedAt||e.updatedAt)}:null}function Lj(e,t,n){return!!(e?.role===`model`&&Pj(e.responseId)&&!(t&&n))}function Rj({agentId:e,sessionId:t,message:n}){let r=Pj(n?.responseId);if(!r)throw Error(`Message missing response id`);return{AgentId:Pj(e),SessionId:Pj(t),ResponseId:r}}function zj({agentId:e,sessionId:t,message:n,rating:r,comment:i=``}){let a=Fj(r);if(!a)throw Error(`Feedback rating must be up or down`);return{...Rj({agentId:e,sessionId:t,message:n}),Rating:a,Comment:String(i||``),TraceId:Pj(n?.traceId),RootSpanId:Pj(n?.rootSpanId)}}function Bj(e,{messageId:t,rating:n,comment:r=``}){let i=e.find(e=>e.id===t),a=i?.feedback?{...i.feedback}:null,o=Fj(n);return{nextMessages:e.map(e=>e.id===t?{...e,feedback:{...e.feedback||{},responseId:Pj(e.responseId),eventId:Pj(e.eventId),rating:o,comment:String(r||``),pending:!0,error:``}}:e),previousFeedback:a}}function Vj(e,{messageId:t,feedback:n}){let r=Ij(n)||n;return e.map(e=>e.id===t?{...e,feedback:r?{...r,pending:!1,error:``}:void 0}:e)}function Hj(e,{messageId:t,previousFeedback:n}){return e.map(e=>{if(e.id!==t)return e;if(!n){let{feedback:t,...n}=e;return n}return{...e,feedback:n}})}function Uj(e,{messageId:t}){return e.map(e=>{if(e.id!==t)return e;let{feedback:n,...r}=e;return r})}function Wj(e){let{agentId:t,currentSessionId:n,isStreaming:r,api:i,submitDraft:a}=e;return{submitResponseFeedback:(0,b.useCallback)(async e=>{if(!n)return;let r=null;an.getState().patchMessages(t=>{let n=Bj(t,{messageId:e.message.id,rating:e.rating,comment:e.comment||``});return r=n.previousFeedback,n.nextMessages});try{let r=Ij((await i.upsertResponseFeedback(zj({agentId:t,sessionId:n,message:e.message,rating:e.rating,comment:e.comment||``})))?.Feedback);r&&an.getState().patchMessages(t=>Vj(t,{messageId:e.message.id,feedback:r}))}catch(t){console.error(`Failed to submit response feedback:`,t),an.getState().patchMessages(t=>Hj(t,{messageId:e.message.id,previousFeedback:r}))}},[t,n,i]),deleteResponseFeedback:(0,b.useCallback)(async e=>{if(!n)return;let r=e.feedback?{...e.feedback}:null;an.getState().patchMessages(t=>Uj(t,{messageId:e.id}));try{await i.deleteResponseFeedback(Rj({agentId:t,sessionId:n,message:e}))}catch(t){console.error(`Failed to delete response feedback:`,t),an.getState().patchMessages(t=>Hj(t,{messageId:e.id,previousFeedback:r}))}},[t,n,i]),respondToApproval:(0,b.useCallback)(e=>{!e.approvalRequestId||r||(an.getState().patchMessages(t=>t.map(t=>{let n=e.approve?`approved`:`rejected`,r=t=>e.approve&&t===`paused`?`running`:e.approve?t:`completed`;return{...t,tools:t.tools?Object.fromEntries(Object.entries(t.tools).map(([t,i])=>[t,i.approvalRequestId===e.approvalRequestId?{...i,status:r(i.status),approvalStatus:n}:i])):t.tools,blocks:t.blocks?.map(t=>t.type===`tool`&&t.extra?.approvalRequestId===e.approvalRequestId?{...t,status:r(t.status),extra:{...t.extra,approvalStatus:n}}:t)}})),a(``,[],[{type:`mcp_approval_response`,approval_request_id:e.approvalRequestId,approve:e.approve}],e.previousResponseId))},[r,a])}}function Gj(e){let[t]=(0,b.useState)(()=>new $k({agentId:e.agentId,store:_A,submitInteraction:t=>e.api.submitInteraction({...t,AgentId:e.getAgentId?.()??t.AgentId}),interactionV1Enabled:e.interactionV1Enabled,legacyResponsesApproval:e.legacyResponsesApproval,legacyAguiResume:e.legacyAguiResume}));(0,b.useEffect)(()=>{t.setInteractionV1Enabled(e.interactionV1Enabled)},[t,e.interactionV1Enabled]);let[n,r]=(0,b.useState)(0);return(0,b.useEffect)(()=>_A.subscribe(()=>r(e=>e+1)),[]),{client:t,pending:(0,b.useMemo)(()=>e.currentSessionId?_A.listAll(e.currentSessionId).filter(e=>e.status===`pending`||e.status===`resolving`||e.status===`failed`):[],[n,e.currentSessionId]),records:(0,b.useMemo)(()=>e.currentSessionId?_A.listAll(e.currentSessionId):[],[n,e.currentSessionId]),respond:(0,b.useCallback)(e=>t.respond(e),[t]),localCatalog:xk}}var Kj={running:`running`,completed:`completed`,failed:`error`,paused:`paused`,approved:`completed`,denied:`completed`},qj={paused:`pending`,approved:`approved`,denied:`rejected`};function Jj(e){if(typeof e==`number`)return e;if(typeof e==`string`){let t=Date.parse(e);if(Number.isFinite(t))return t}return Date.now()}function Yj(e){if(typeof e==`string`)return e;if(e&&typeof e==`object`){if(typeof e.text==`string`)return e.text;if(Array.isArray(e.parts))return e.parts.map(e=>e&&typeof e==`object`&&typeof e.text==`string`?e.text:``).join(``)}return``}function Xj(e){let t={},n=new Map;for(let t of e??[])t?.Name&&n.set(t.Name,(n.get(t.Name)||0)+1);for(let r of e??[]){if(!r?.Name)continue;let e=Kj[String(r.Status??`completed`).toLowerCase()]??`completed`,i={name:r.Name,args:r.Args===void 0?``:typeof r.Args==`string`?r.Args:JSON.stringify(r.Args),status:e};r.Result!==void 0&&(i.output=typeof r.Result==`string`?r.Result:JSON.stringify(r.Result)),r.ApprovalRequestId&&(i.approvalRequestId=r.ApprovalRequestId,i.approvalStatus=qj[String(r.Status??`paused`).toLowerCase()]??`pending`,i.approvalProtocol=String(r.Protocol??``).toLowerCase()===`ag-ui`?`ag-ui`:`responses`,r.ApprovalMessage&&(i.approvalMessage=String(r.ApprovalMessage)),r.ApprovalLevel&&(i.approvalLevel=String(r.ApprovalLevel))),r.ToolCallId&&(i.previousResponseId=r.ToolCallId);let a=n.get(r.Name)>1&&r.ToolCallId?r.ToolCallId:r.Name;t[a]=i}return t}function Zj(e){if(Array.isArray(e))return e.map(e=>({name:e.name||``,url:e.url||``,type:e.mime||``,fileUri:e.file_uri}))}function Qj(e){return e==null?``:typeof e==`string`?e:JSON.stringify(e)}function $j(e){if(!(!Array.isArray(e)||!e.length))return e.flatMap((e,t)=>{let n=String(e?.Type||``).toLowerCase(),r=e?.SeqId??t;if(n===`thinking`||n===`text`){let t=String(e?.Content||``);return t?[{id:`history-${n}-${r}`,type:n,content:t,status:`done`}]:[]}if(n!==`tool`)return[];let i=Kj[String(e?.Status||`completed`).toLowerCase()]??`completed`;return[{id:`history-tool-${r}`,type:`tool`,toolName:String(e?.Name||`tool`),args:Qj(e?.Args),...e?.Result===void 0?{}:{output:Qj(e.Result)},status:i,...e?.ToolCallId?{extra:{previousResponseId:String(e.ToolCallId)}}:{}}]})}function eM(e){let t=e.Role===`assistant`?`model`:e.Role||`user`,n=e.ToolEvents?.length?Xj(e.ToolEvents):void 0,r=Zj(e.Attachments),i=$j(e.Blocks),a=e.Reasoning?.length?e.Reasoning.map(e=>e.text).join(``):void 0,o={id:e.MessageId||`msg-${e.SeqId??Math.random().toString(36).slice(2)}`,role:t,content:Yj(e.Content),timestamp:Jj(e.Timestamp),eventType:t===`user`?`user_message`:`assistant_message`,reasoning:a,tools:n,attachments:r};return t===`model`&&(o.blocks=i??Gk({reasoning:a,tools:n,content:o.content})),e.MessageId&&(o.eventId=e.MessageId),e.InvocationId&&(o.invocationId=e.InvocationId),e.ResponseId&&(o.responseId=e.ResponseId),e.TraceId&&(o.traceId=e.TraceId),e.RootSpanId&&(o.rootSpanId=e.RootSpanId),o}function tM(e){return Array.isArray(e.Activities)?e.Activities.flatMap((t,n)=>{let r=String(t?.SurfaceId||``);if(!r)return[];let i=t?.Content,a=Array.isArray(i?.a2ui_operations)?i.a2ui_operations:Array.isArray(i)?i:[];return a.length?[{id:t.MessageId||`a2ui-${e.MessageId||e.SeqId||`message`}-${n}`,role:`a2ui`,content:``,timestamp:Jj(e.Timestamp),aguiActivity:{surfaceId:r,messages:Ck(a)}}]:[]}):[]}function nM(e){return e.flatMap(e=>[eM(e),...tM(e)])}var rM=class extends Error{seq;constructor(e){super(`Session event seq ${e} was received twice with conflicting content`),this.name=`SessionEventConflictError`,this.seq=e}};function iM(e){return Array.isArray(e)?`[${e.map(iM).join(`,`)}]`:e&&typeof e==`object`?`{${Object.entries(e).filter(([,e])=>e!==void 0).sort(([e],[t])=>et)).map(([e,t])=>`${JSON.stringify(e)}:${iM(t)}`).join(`,`)}}`:JSON.stringify(e)??`null`}var aM=new Set([`runtime`]),oM=class{eventsBySeq=new Map;lastSeqValue=0;accept(e){let t=Xc(e);if(!t.ok)throw t.error;let n=t.value,r=this.eventsBySeq.get(n.seq);if(r){if(iM(r)!==iM(n))throw new rM(n.seq);return}this.eventsBySeq.set(n.seq,n),this.lastSeqValue=Math.max(this.lastSeqValue,n.seq)}get lastSeq(){return this.lastSeqValue}reconnectAfterSeq(){return this.lastSeqValue}displayableEvents(){return[...this.eventsBySeq.values()].filter(e=>aM.has(e.family)).sort((e,t)=>e.seq-t.seq)}};function sM(){return new oM}var cM=500,lM=30,uM=50,dM=1800*1e3;function fM(e){return new Promise(t=>{if(e.aborted){t();return}let n=globalThis.setTimeout(t,cM);e.addEventListener(`abort`,()=>{globalThis.clearTimeout(n),t()},{once:!0})})}var pM=new Set([`in_progress`,`running`,`resuming`,`starting`]);function mM(e){let t=e.ActiveRunUpdatedAt||e.UpdatedAt,n=typeof t==`number`?t>1e11?t:t*1e3:Date.parse(String(t||``));return Number.isFinite(n)&&n<=Date.now()+dM&&Date.now()-n<=dM}function hM(e){let t=$A(e);return t?t===`completed`?{status:`completed`,phase:`后台长任务已完成`}:t===`cancelled`||t===`canceled`||t===`aborted`?{status:`stopped`,phase:`后台长任务已取消`}:t===`interrupted`?{status:`stopped`,phase:`后台长任务已中断`}:t===`failed`||t===`error`?{status:`failed`,phase:`后台长任务失败`}:t===`resume_failed`?{status:`failed`,phase:`后台长任务恢复失败`}:null:null}function gM(e){let{agentId:t,api:n,isMobile:r,resetCompaction:i,uiCapabilities:a,disconnectRun:o}=e,s=(0,b.useRef)(e.currentSessionId),c=(0,b.useRef)(e.agentId),l=(0,b.useRef)(null),u=(0,b.useRef)(sM()),d=(0,b.useRef)(0),f=(0,b.useRef)(new Map),p=(0,b.useRef)(null),m=(0,b.useRef)(null),h=(0,b.useCallback)(async(e,t,r)=>{let i=r.filter(e=>Lj(e,!1,!1));if(!i.length)return;let a=await Promise.all(i.map(async r=>{try{let i=await n.getResponseFeedback({AgentId:e,SessionId:t,ResponseId:r.responseId,EventId:r.eventId}),a=i?.Feedback?Ij(i.Feedback):null;return a?{messageId:r.id,feedback:a}:null}catch(e){return console.error(`Failed to load response feedback:`,e),null}}));if(s.current!==t)return;let o=new Map(a.filter(e=>!!e).map(e=>[e.messageId,e.feedback]));o.size&&an.getState().patchMessages(e=>e.map(e=>o.has(e.id)?{...e,feedback:o.get(e.id)}:e))},[n]),g=(0,b.useCallback)(async e=>{l.current?.abort();let t=new AbortController;l.current=t;let r=!1,i=!1,a=e.afterSeqId,o=()=>l.current===t&&s.current===e.sessionId;try{for(D.getState().setCurrentRunId(e.invocationId),D.getState().setActiveInvocationId(e.invocationId),D.getState().setSessionStreaming(e.sessionId,!0),D.getState().updateActivity({sessionId:e.sessionId,status:`running`,phase:`后台长任务运行中`,detail:e.invocationId,countEvent:!1});!i&&o();){try{let s=await n.subscribeRunEvents({sessionId:e.sessionId,invocationId:e.invocationId,afterSeqId:a},{signal:t.signal});if(!o()){t.abort();return}let c=s.getReader(),l=new TextDecoder,d=``;for(;!i&&o();){let{value:t,done:n}=await c.read();if(n)break;d+=l.decode(t,{stream:!0});let s=yl(d);d=s.remainder;for(let t of s.chunks)if(t.trim()){for(let n of vl(t)){if(n.eventName===`__ping__`){D.getState().updateActivity({sessionId:e.sessionId,status:`running`,countEvent:!1});continue}if(n.eventName===`__done__`){i=!0,r=!0;break}if(!n.data||typeof n.data!=`object`)continue;let t=n.data;if(!o())break;if(t.InvocationId&&t.InvocationId!==e.invocationId)continue;if(typeof t.seq==`number`){try{u.current.accept(t)}catch(e){console.error(`[SessionLifecycle] session event cursor conflict:`,e)}a=Math.max(a,u.current.reconnectAfterSeq()),jj({type:`stream_event`,sessionId:e.sessionId,event:t}),i||=Sj(t),r||=i;let n=hM(t);n&&D.getState().updateActivity({sessionId:e.sessionId,status:n.status,phase:n.phase,detail:e.invocationId,countEvent:!1});continue}let s=Number(t.SeqId||0);Number.isFinite(s)&&(a=Math.max(a,s)),jj({type:`stream_event`,sessionId:e.sessionId,event:t}),i||=Sj(t),r||=i;let c=hM(t);if(c&&D.getState().updateActivity({sessionId:e.sessionId,status:c.status,phase:c.phase,detail:e.invocationId,countEvent:!1}),i)break}if(i)break}}i&&c.cancel().catch(()=>{})}catch(t){if(t instanceof DOMException&&t.name===`AbortError`||!o())break;console.warn(`Run event subscription disconnected; retrying:`,t),D.getState().updateActivity({sessionId:e.sessionId,status:`waiting`,phase:`恢复连接中`,detail:e.invocationId,countEvent:!1})}!i&&o()&&await fM(t.signal)}i&&o()&&jj({type:`stream_ended`,sessionId:e.sessionId})}catch(e){e instanceof DOMException&&e.name===`AbortError`||console.error(`Failed to subscribe run events:`,e)}finally{let n=l.current===t;n&&(l.current=null),n&&s.current===e.sessionId&&(D.getState().setCurrentRunId(``),D.getState().setActiveInvocationId(``),r&&p.current?.(e.sessionId),m.current?.(c.current,e.sessionId))}},[n]),_=(0,b.useCallback)(async e=>{let t=s.current,o=++d.current;t&&t!==e&&(an.getState().setMessages([]),Ze.getState().clearSessionMessageHistory(e),PA.getState().setSessionCheckpoints(e,[]),PA.getState().setSessionToolReceipts(e,[]),D.getState().setCurrentRunId(``),D.getState().clearActivity()),s.current=e;let u=()=>s.current===e&&d.current===o;Ze.getState().setCurrentSessionId(e),Ze.getState().setSessionInitialMessageHistoryLoading(e,!0),i(),l.current?.abort(),r&&C.getState().setMobileSidebarOpen(!1);try{let t=await n.listSessionMessages(e,{limit:uM,includeReasoning:!0,includeToolEvents:!0,includeAttachments:!0});if(!u())return;let r=nM(t.Messages);an.getState().setMessages(r),Ze.getState().setSessionMessageHistory(e,{nextCursor:t.NextCursor,hasMore:t.HasMore}),h(c.current,e,r);let i=t.LatestSeqId||0;try{let t=await n.listSessionEvents(e,{limit:50});if(u())for(let n of t.Events||[])vA(n,e)}catch(e){console.warn(`[SessionLifecycle] interaction history replay failed:`,e)}let o=Ce.getState().capabilities||a;if(o.RunLifecycle.Enabled&&o.RunLifecycle.Checkpoints?(n.listSessionCheckpoints({agentId:c.current,sessionId:e}).then(t=>{u()&&PA.getState().setSessionCheckpoints(e,t.Checkpoints||[])}).catch(t=>{u()&&(console.warn(`[SessionLifecycle] checkpoint load failed:`,t),PA.getState().setSessionCheckpoints(e,[]))}),n.listToolReceipts({agentId:c.current,sessionId:e}).then(t=>{u()&&PA.getState().setSessionToolReceipts(e,t.ToolReceipts||[])}).catch(t=>{u()&&(console.warn(`[SessionLifecycle] tool receipt load failed:`,t),PA.getState().setSessionToolReceipts(e,[]))})):PA.getState().clearSessionCheckpoints(e),o.RunLifecycle.Enabled&&o.RunLifecycle.Resume)try{let t=await n.getSession(e);if(!u())return;let r=String(t.ActiveRunStatus||``).toLowerCase();t.ActiveInvocationId&&(pM.has(r)||r===``&&mM(t))&&g({sessionId:e,invocationId:t.ActiveInvocationId,afterSeqId:i})}catch(e){console.warn(`[SessionLifecycle] getSession for reconnect failed:`,e)}}catch(e){console.error(`Failed to load session messages:`,e)}finally{u()&&Ze.getState().setSessionInitialMessageHistoryLoading(e,!1)}},[n,r,h,i,g,a]),v=(0,b.useCallback)(async(e=`default-agent`,t=null)=>{try{let r=Ze.getState();r.sessionsAgentId&&r.sessionsAgentId!==e&&r.resetSessionPagination(e),Ze.getState().setLoadingSessions(!0);let i=await n.listSessions(e,{page:1,pageSize:lM});Ze.getState().upsertSessions(i.Sessions||[],{agentId:e,total:Number(i.Total??i.Sessions?.length??0),page:Number(i.Page??1),pageSize:Number(i.PageSize??lM),replace:!0});let a=Ze.getState().sessions,c=s.current,u=At(a,c||t||Ot(e));u&&u!==c?_(u):!u&&c&&(d.current+=1,l.current?.abort(),o?.(),s.current=null,Ze.getState().setCurrentSessionId(null),an.getState().setMessages([]),Ze.getState().clearSessionMessageHistory(),PA.getState().clearSessionCheckpoints(),D.getState().setCurrentRunId(``),D.getState().clearActivity())}catch(e){if(e instanceof Ut)return;console.error(`Failed to fetch sessions:`,e)}finally{Ze.getState().setLoadingSessions(!1)}},[n,o,_]),y=(0,b.useCallback)(async()=>{let e=Ze.getState();if(e.isLoadingSessions||!e.hasMoreSessions)return;let t=We({total:e.sessionsTotal,pageSize:e.sessionsPageSize||lM,loadedPages:e.loadedPages});if(!t)return;let r=e.sessionsPageSize||lM,i=e.sessionsAgentId||c.current||`default-agent`;try{Ze.getState().setLoadingSessions(!0);let a=await n.listSessions(i,{page:t,pageSize:r});Ze.getState().upsertSessions(a.Sessions||[],{agentId:i,total:Number(a.Total??e.sessionsTotal),page:Number(a.Page??t),pageSize:Number(a.PageSize??r)})}catch(e){if(e instanceof Ut)return;console.error(`Failed to load more sessions:`,e)}finally{Ze.getState().setLoadingSessions(!1)}},[n]);(0,b.useEffect)(()=>{p.current=_},[_]),(0,b.useEffect)(()=>{m.current=v},[v]);let x=(0,b.useCallback)(async()=>{try{d.current+=1,l.current?.abort();let e=(await n.createSession(t)).SessionId;e&&(Ze.getState().upsertSessions([{SessionId:e,UpdatedAt:new Date().toISOString()}]),s.current=e,Ze.getState().setCurrentSessionId(e),an.getState().setMessages([]),Ze.getState().clearSessionMessageHistory(e),PA.getState().setSessionCheckpoints(e,[]),PA.getState().setSessionToolReceipts(e,[]),D.getState().setCurrentRunId(``),D.getState().clearActivity(),r&&(C.getState().setMobileSidebarOpen(!1),C.getState().setMobileActionsOpen(!1)),v(t,e))}catch(e){if(e instanceof Ut)return;console.error(`Failed to create session:`,e)}},[t,n,v,r]),ee=(0,b.useCallback)(async e=>{try{if((await n.deleteSession(e)).Deleted===!1){C.getState().pushToast(`会话暂未删除,云端运行时仍在同步,请稍后重试。`,`error`),v(t,s.current??void 0);return}Ze.getState().removeSession(e),Ze.getState().clearSessionMessageHistory(e),s.current===e&&(d.current+=1,l.current?.abort(),o?.(),s.current=null,an.getState().setMessages([]),PA.getState().clearSessionCheckpoints(e),Ze.getState().setCurrentSessionId(null),D.getState().setCurrentRunId(``),D.getState().clearActivity(),v(t))}catch(e){if(e instanceof Ut)return;console.error(`Failed to delete session`,e),C.getState().pushToast(`删除会话失败,请稍后重试。`,`error`)}},[t,n,o,v]);return{fetchSessions:v,loadMoreSessions:y,loadSession:_,loadOlderSessionMessages:(0,b.useCallback)(async e=>{let t=Ze.getState().messageHistory[e];if(!t||!t.hasMore||t.nextCursor===null||t.isLoadingOlder)return;let r=d.current,i=Symbol(e);f.current.set(e,i);try{Ze.getState().setSessionMessageHistoryLoading(e,!0);let a=await n.listSessionMessages(e,{beforeSeqId:t.nextCursor,limit:uM,includeReasoning:!0,includeToolEvents:!0,includeAttachments:!0});if(s.current!==e||d.current!==r||f.current.get(e)!==i)return;let o=nM(a.Messages),l=new Set(o.map(e=>e.id)),u=[...o,...an.getState().messages.filter(e=>!l.has(e.id))];an.getState().setMessages(u),Ze.getState().setSessionMessageHistory(e,{nextCursor:a.NextCursor,hasMore:a.HasMore}),h(c.current,e,o)}catch(e){e instanceof Ut||console.error(`Failed to load older session messages:`,e)}finally{f.current.get(e)===i&&(f.current.delete(e),Ze.getState().setSessionMessageHistoryLoading(e,!1))}},[n,h]),createNewSession:x,deleteSession:ee,currentSessionIdRef:s,agentIdRef:c,runSubscriptionAbortRef:l}}var _M=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),vM=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),yM=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),bM=e=>{let t=yM(e);return t.charAt(0).toUpperCase()+t.slice(1)},xM={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},SM=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},CM=(0,b.createContext)({}),wM=()=>(0,b.useContext)(CM),TM=(0,b.forwardRef)(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>{let{size:l=24,strokeWidth:u=2,absoluteStrokeWidth:d=!1,color:f=`currentColor`,className:p=``}=wM()??{},m=r??d?Number(n??u)*24/Number(t??l):n??u;return(0,b.createElement)(`svg`,{ref:c,...xM,width:t??l??xM.width,height:t??l??xM.height,stroke:e??f,strokeWidth:m,className:_M(`lucide`,p,i),...!a&&!SM(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>(0,b.createElement)(e,t)),...Array.isArray(a)?a:[a]])}),EM=(e,t)=>{let n=(0,b.forwardRef)(({className:n,...r},i)=>(0,b.createElement)(TM,{ref:i,iconNode:t,className:_M(`lucide-${vM(bM(e))}`,`lucide-${e}`,n),...r}));return n.displayName=bM(e),n},DM=EM(`arrow-down`,[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]),OM=EM(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),kM=EM(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),AM=EM(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),jM=EM(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),MM=EM(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),NM=EM(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),PM=EM(`circle-stop`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`rect`,{x:`9`,y:`9`,width:`6`,height:`6`,rx:`1`,key:`1ssd4o`}]]),FM=EM(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),IM=EM(`code`,[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]),LM=EM(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),RM=EM(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),zM=EM(`earth`,[[`path`,{d:`M21.54 15H17a2 2 0 0 0-2 2v4.54`,key:`1djwo0`}],[`path`,{d:`M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17`,key:`1tzkfa`}],[`path`,{d:`M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05`,key:`14pb5j`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),BM=EM(`ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]),VM=EM(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),HM=EM(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),UM=EM(`file-code-corner`,[[`path`,{d:`M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35`,key:`1wthlu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m5 16-3 3 3 3`,key:`331omg`}],[`path`,{d:`m9 22 3-3-3-3`,key:`lsp7cz`}]]),WM=EM(`file-diff`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M9 10h6`,key:`9gxzsh`}],[`path`,{d:`M12 13V7`,key:`h0r20n`}],[`path`,{d:`M9 17h6`,key:`r8uit2`}]]),GM=EM(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),KM=EM(`folder-open`,[[`path`,{d:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`,key:`usdka0`}]]),qM=EM(`hand`,[[`path`,{d:`M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2`,key:`1fvzgz`}],[`path`,{d:`M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2`,key:`1kc0my`}],[`path`,{d:`M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8`,key:`10h0bg`}],[`path`,{d:`M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15`,key:`1s1gnw`}]]),JM=EM(`image`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}]]),YM=EM(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]),XM=EM(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),ZM=EM(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),QM=EM(`message-square-plus`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}],[`path`,{d:`M12 8v6`,key:`1ib9pf`}],[`path`,{d:`M9 11h6`,key:`1fldmi`}]]),$M=EM(`message-square-text`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}],[`path`,{d:`M7 11h10`,key:`1twpyw`}],[`path`,{d:`M7 15h6`,key:`d9of3u`}],[`path`,{d:`M7 7h8`,key:`af5zfr`}]]),eN=EM(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]),tN=EM(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),nN=EM(`panel-left-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]]),rN=EM(`panel-left`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}]]),iN=EM(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),aN=EM(`pin-off`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89`,key:`znwnzq`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11`,key:`c9qhm2`}]]),oN=EM(`pin`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z`,key:`1nkz8b`}]]),sN=EM(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),cN=EM(`refresh-ccw`,[[`path`,{d:`M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`14sxne`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}],[`path`,{d:`M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16`,key:`1hlbsb`}],[`path`,{d:`M16 16h5v5`,key:`ccwih5`}]]),lN=EM(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),uN=EM(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),dN=EM(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),fN=EM(`shield-alert`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),pN=EM(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),mN=EM(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]),hN=EM(`square-terminal`,[[`path`,{d:`m7 11 2-2-2-2`,key:`1lz0vl`}],[`path`,{d:`M11 13h4`,key:`1p7l4v`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}]]),gN=EM(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),_N=EM(`target`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`6`,key:`1vlfrh`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]),vN=EM(`thumbs-down`,[[`path`,{d:`M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z`,key:`m61m77`}],[`path`,{d:`M17 14V2`,key:`8ymqnk`}]]),yN=EM(`thumbs-up`,[[`path`,{d:`M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z`,key:`emmmcr`}],[`path`,{d:`M7 10v12`,key:`1qc93n`}]]),bN=EM(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),xN=EM(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),SN=EM(`wifi-off`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}],[`path`,{d:`M5 12.859a10 10 0 0 1 5.17-2.69`,key:`1dl1wf`}],[`path`,{d:`M19 12.859a10 10 0 0 0-2.007-1.523`,key:`4k23kn`}],[`path`,{d:`M2 8.82a15 15 0 0 1 4.177-2.643`,key:`1grhjp`}],[`path`,{d:`M22 8.82a15 15 0 0 0-11.288-3.764`,key:`z3jwby`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),CN=EM(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),wN=EM(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),TN=EM(`zap-off`,[[`path`,{d:`M10.513 4.856 13.12 2.17a.5.5 0 0 1 .86.46l-1.377 4.317`,key:`193nxd`}],[`path`,{d:`M15.656 10H20a1 1 0 0 1 .78 1.63l-1.72 1.773`,key:`27a7lr`}],[`path`,{d:`M16.273 16.273 10.88 21.83a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14H4a1 1 0 0 1-.78-1.63l4.507-4.643`,key:`1e0qe9`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),EN=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t({classGroupId:e,validator:t}),ON=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),kN=`-`,AN=[],jN=`arbitrary..`,MN=e=>{let t=FN(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return PN(e);let n=e.split(kN);return NN(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?EN(i,t):t:i||AN}return n[e]||AN}}},NN=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=NN(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(kN):e.slice(t).join(kN),s=a.length;for(let e=0;ee.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?jN+r:void 0})(),FN=e=>{let{theme:t,classGroups:n}=e;return IN(n,t)},IN=(e,t)=>{let n=ON();for(let r in e){let i=e[r];LN(i,n,r,t)}return n},LN=(e,t,n,r)=>{let i=e.length;for(let a=0;a{if(typeof e==`string`){zN(e,t,n);return}if(typeof e==`function`){BN(e,t,n,r);return}VN(e,t,n,r)},zN=(e,t,n)=>{let r=e===``?t:HN(t,e);r.classGroupId=n},BN=(e,t,n,r)=>{if(UN(e)){LN(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(DN(n,e))},VN=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e{let n=e,r=t.split(kN),i=r.length;for(let e=0;e`isThemeGetter`in e&&e.isThemeGetter===!0,WN=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},GN=`!`,KN=`:`,qN=[],JN=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),YN=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;si?a-i:void 0;return JN(t,l,c,u)};if(t){let e=t+KN,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):JN(qN,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},XN=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},ZN=e=>({cache:WN(e.cacheSize),parseClassName:YN(e),sortModifiers:XN(e),...MN(e)}),QN=/\s+/,$N=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a}=t,o=[],s=e.trim().split(QN),c=``;for(let e=s.length-1;e>=0;--e){let t=s[e],{isExternal:l,modifiers:u,hasImportantModifier:d,baseClassName:f,maybePostfixModifierPosition:p}=n(t);if(l){c=t+(c.length>0?` `+c:c);continue}let m=!!p,h=r(m?f.substring(0,p):f);if(!h){if(!m){c=t+(c.length>0?` `+c:c);continue}if(h=r(f),!h){c=t+(c.length>0?` `+c:c);continue}m=!1}let g=u.length===0?``:u.length===1?u[0]:a(u).join(`:`),_=d?g+GN:g,v=_+h;if(o.indexOf(v)>-1)continue;o.push(v);let y=i(h,m);for(let e=0;e0?` `+c:c)}return c},eP=(...e)=>{let t=0,n,r,i=``;for(;t{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r{let n,r,i,a,o=o=>(n=ZN(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=$N(e,n);return i(e,a),a};return a=o,(...e)=>a(eP(...e))},rP=[],iP=e=>{let t=t=>t[e]||rP;return t.isThemeGetter=!0,t},aP=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,oP=/^\((?:(\w[\w-]*):)?(.+)\)$/i,sP=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,cP=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,lP=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,uP=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,dP=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,fP=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,pP=e=>sP.test(e),mP=e=>!!e&&!Number.isNaN(Number(e)),hP=e=>!!e&&Number.isInteger(Number(e)),gP=e=>e.endsWith(`%`)&&mP(e.slice(0,-1)),_P=e=>cP.test(e),vP=()=>!0,yP=e=>lP.test(e)&&!uP.test(e),bP=()=>!1,xP=e=>dP.test(e),SP=e=>fP.test(e),CP=e=>!TP(e)&&!NP(e),wP=e=>VP(e,GP,bP),TP=e=>aP.test(e),EP=e=>VP(e,KP,yP),DP=e=>VP(e,qP,mP),OP=e=>VP(e,YP,vP),kP=e=>VP(e,JP,bP),AP=e=>VP(e,UP,bP),jP=e=>VP(e,WP,SP),MP=e=>VP(e,XP,xP),NP=e=>oP.test(e),PP=e=>HP(e,KP),FP=e=>HP(e,JP),IP=e=>HP(e,UP),LP=e=>HP(e,GP),RP=e=>HP(e,WP),zP=e=>HP(e,XP,!0),BP=e=>HP(e,YP,!0),VP=(e,t,n)=>{let r=aP.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},HP=(e,t,n=!1)=>{let r=oP.exec(e);return r?r[1]?t(r[1]):n:!1},UP=e=>e===`position`||e===`percentage`,WP=e=>e===`image`||e===`url`,GP=e=>e===`length`||e===`size`||e===`bg-size`,KP=e=>e===`length`,qP=e=>e===`number`,JP=e=>e===`family-name`,YP=e=>e===`number`||e===`weight`,XP=e=>e===`shadow`,ZP=nP(()=>{let e=iP(`color`),t=iP(`font`),n=iP(`text`),r=iP(`font-weight`),i=iP(`tracking`),a=iP(`leading`),o=iP(`breakpoint`),s=iP(`container`),c=iP(`spacing`),l=iP(`radius`),u=iP(`shadow`),d=iP(`inset-shadow`),f=iP(`text-shadow`),p=iP(`drop-shadow`),m=iP(`blur`),h=iP(`perspective`),g=iP(`aspect`),_=iP(`ease`),v=iP(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],x=()=>[...b(),NP,TP],ee=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],te=()=>[`auto`,`contain`,`none`],S=()=>[NP,TP,c],ne=()=>[pP,`full`,`auto`,...S()],re=()=>[hP,`none`,`subgrid`,NP,TP],C=()=>[`auto`,{span:[`full`,hP,NP,TP]},hP,NP,TP],w=()=>[hP,`auto`,NP,TP],ie=()=>[`auto`,`min`,`max`,`fr`,NP,TP],ae=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],oe=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],se=()=>[`auto`,...S()],ce=()=>[pP,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...S()],le=()=>[pP,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...S()],ue=()=>[pP,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...S()],T=()=>[e,NP,TP],E=()=>[...b(),IP,AP,{position:[NP,TP]}],de=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],fe=()=>[`auto`,`cover`,`contain`,LP,wP,{size:[NP,TP]}],pe=()=>[gP,PP,EP],me=()=>[``,`none`,`full`,l,NP,TP],he=()=>[``,mP,PP,EP],ge=()=>[`solid`,`dashed`,`dotted`,`double`],_e=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],ve=()=>[mP,gP,IP,AP],ye=()=>[``,`none`,m,NP,TP],be=()=>[`none`,mP,NP,TP],xe=()=>[`none`,mP,NP,TP],Se=()=>[mP,NP,TP],Ce=()=>[pP,`full`,...S()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[_P],breakpoint:[_P],color:[vP],container:[_P],"drop-shadow":[_P],ease:[`in`,`out`,`in-out`],font:[CP],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[_P],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[_P],shadow:[_P],spacing:[`px`,mP],text:[_P],"text-shadow":[_P],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,pP,TP,NP,g]}],container:[`container`],columns:[{columns:[mP,TP,NP,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:x()}],overflow:[{overflow:ee()}],"overflow-x":[{"overflow-x":ee()}],"overflow-y":[{"overflow-y":ee()}],overscroll:[{overscroll:te()}],"overscroll-x":[{"overscroll-x":te()}],"overscroll-y":[{"overscroll-y":te()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:ne()}],"inset-x":[{"inset-x":ne()}],"inset-y":[{"inset-y":ne()}],start:[{"inset-s":ne(),start:ne()}],end:[{"inset-e":ne(),end:ne()}],"inset-bs":[{"inset-bs":ne()}],"inset-be":[{"inset-be":ne()}],top:[{top:ne()}],right:[{right:ne()}],bottom:[{bottom:ne()}],left:[{left:ne()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[hP,`auto`,NP,TP]}],basis:[{basis:[pP,`full`,`auto`,s,...S()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[mP,pP,`auto`,`initial`,`none`,TP]}],grow:[{grow:[``,mP,NP,TP]}],shrink:[{shrink:[``,mP,NP,TP]}],order:[{order:[hP,`first`,`last`,`none`,NP,TP]}],"grid-cols":[{"grid-cols":re()}],"col-start-end":[{col:C()}],"col-start":[{"col-start":w()}],"col-end":[{"col-end":w()}],"grid-rows":[{"grid-rows":re()}],"row-start-end":[{row:C()}],"row-start":[{"row-start":w()}],"row-end":[{"row-end":w()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":ie()}],"auto-rows":[{"auto-rows":ie()}],gap:[{gap:S()}],"gap-x":[{"gap-x":S()}],"gap-y":[{"gap-y":S()}],"justify-content":[{justify:[...ae(),`normal`]}],"justify-items":[{"justify-items":[...oe(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...oe()]}],"align-content":[{content:[`normal`,...ae()]}],"align-items":[{items:[...oe(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...oe(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":ae()}],"place-items":[{"place-items":[...oe(),`baseline`]}],"place-self":[{"place-self":[`auto`,...oe()]}],p:[{p:S()}],px:[{px:S()}],py:[{py:S()}],ps:[{ps:S()}],pe:[{pe:S()}],pbs:[{pbs:S()}],pbe:[{pbe:S()}],pt:[{pt:S()}],pr:[{pr:S()}],pb:[{pb:S()}],pl:[{pl:S()}],m:[{m:se()}],mx:[{mx:se()}],my:[{my:se()}],ms:[{ms:se()}],me:[{me:se()}],mbs:[{mbs:se()}],mbe:[{mbe:se()}],mt:[{mt:se()}],mr:[{mr:se()}],mb:[{mb:se()}],ml:[{ml:se()}],"space-x":[{"space-x":S()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":S()}],"space-y-reverse":[`space-y-reverse`],size:[{size:ce()}],"inline-size":[{inline:[`auto`,...le()]}],"min-inline-size":[{"min-inline":[`auto`,...le()]}],"max-inline-size":[{"max-inline":[`none`,...le()]}],"block-size":[{block:[`auto`,...ue()]}],"min-block-size":[{"min-block":[`auto`,...ue()]}],"max-block-size":[{"max-block":[`none`,...ue()]}],w:[{w:[s,`screen`,...ce()]}],"min-w":[{"min-w":[s,`screen`,`none`,...ce()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...ce()]}],h:[{h:[`screen`,`lh`,...ce()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...ce()]}],"max-h":[{"max-h":[`screen`,`lh`,...ce()]}],"font-size":[{text:[`base`,n,PP,EP]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,BP,OP]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,gP,TP]}],"font-family":[{font:[FP,kP,t]}],"font-features":[{"font-features":[TP]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,NP,TP]}],"line-clamp":[{"line-clamp":[mP,`none`,NP,DP]}],leading:[{leading:[a,...S()]}],"list-image":[{"list-image":[`none`,NP,TP]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,NP,TP]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:T()}],"text-color":[{text:T()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...ge(),`wavy`]}],"text-decoration-thickness":[{decoration:[mP,`from-font`,`auto`,NP,EP]}],"text-decoration-color":[{decoration:T()}],"underline-offset":[{"underline-offset":[mP,`auto`,NP,TP]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:S()}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,NP,TP]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,NP,TP]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:E()}],"bg-repeat":[{bg:de()}],"bg-size":[{bg:fe()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},hP,NP,TP],radial:[``,NP,TP],conic:[hP,NP,TP]},RP,jP]}],"bg-color":[{bg:T()}],"gradient-from-pos":[{from:pe()}],"gradient-via-pos":[{via:pe()}],"gradient-to-pos":[{to:pe()}],"gradient-from":[{from:T()}],"gradient-via":[{via:T()}],"gradient-to":[{to:T()}],rounded:[{rounded:me()}],"rounded-s":[{"rounded-s":me()}],"rounded-e":[{"rounded-e":me()}],"rounded-t":[{"rounded-t":me()}],"rounded-r":[{"rounded-r":me()}],"rounded-b":[{"rounded-b":me()}],"rounded-l":[{"rounded-l":me()}],"rounded-ss":[{"rounded-ss":me()}],"rounded-se":[{"rounded-se":me()}],"rounded-ee":[{"rounded-ee":me()}],"rounded-es":[{"rounded-es":me()}],"rounded-tl":[{"rounded-tl":me()}],"rounded-tr":[{"rounded-tr":me()}],"rounded-br":[{"rounded-br":me()}],"rounded-bl":[{"rounded-bl":me()}],"border-w":[{border:he()}],"border-w-x":[{"border-x":he()}],"border-w-y":[{"border-y":he()}],"border-w-s":[{"border-s":he()}],"border-w-e":[{"border-e":he()}],"border-w-bs":[{"border-bs":he()}],"border-w-be":[{"border-be":he()}],"border-w-t":[{"border-t":he()}],"border-w-r":[{"border-r":he()}],"border-w-b":[{"border-b":he()}],"border-w-l":[{"border-l":he()}],"divide-x":[{"divide-x":he()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":he()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...ge(),`hidden`,`none`]}],"divide-style":[{divide:[...ge(),`hidden`,`none`]}],"border-color":[{border:T()}],"border-color-x":[{"border-x":T()}],"border-color-y":[{"border-y":T()}],"border-color-s":[{"border-s":T()}],"border-color-e":[{"border-e":T()}],"border-color-bs":[{"border-bs":T()}],"border-color-be":[{"border-be":T()}],"border-color-t":[{"border-t":T()}],"border-color-r":[{"border-r":T()}],"border-color-b":[{"border-b":T()}],"border-color-l":[{"border-l":T()}],"divide-color":[{divide:T()}],"outline-style":[{outline:[...ge(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[mP,NP,TP]}],"outline-w":[{outline:[``,mP,PP,EP]}],"outline-color":[{outline:T()}],shadow:[{shadow:[``,`none`,u,zP,MP]}],"shadow-color":[{shadow:T()}],"inset-shadow":[{"inset-shadow":[`none`,d,zP,MP]}],"inset-shadow-color":[{"inset-shadow":T()}],"ring-w":[{ring:he()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:T()}],"ring-offset-w":[{"ring-offset":[mP,EP]}],"ring-offset-color":[{"ring-offset":T()}],"inset-ring-w":[{"inset-ring":he()}],"inset-ring-color":[{"inset-ring":T()}],"text-shadow":[{"text-shadow":[`none`,f,zP,MP]}],"text-shadow-color":[{"text-shadow":T()}],opacity:[{opacity:[mP,NP,TP]}],"mix-blend":[{"mix-blend":[..._e(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":_e()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[mP]}],"mask-image-linear-from-pos":[{"mask-linear-from":ve()}],"mask-image-linear-to-pos":[{"mask-linear-to":ve()}],"mask-image-linear-from-color":[{"mask-linear-from":T()}],"mask-image-linear-to-color":[{"mask-linear-to":T()}],"mask-image-t-from-pos":[{"mask-t-from":ve()}],"mask-image-t-to-pos":[{"mask-t-to":ve()}],"mask-image-t-from-color":[{"mask-t-from":T()}],"mask-image-t-to-color":[{"mask-t-to":T()}],"mask-image-r-from-pos":[{"mask-r-from":ve()}],"mask-image-r-to-pos":[{"mask-r-to":ve()}],"mask-image-r-from-color":[{"mask-r-from":T()}],"mask-image-r-to-color":[{"mask-r-to":T()}],"mask-image-b-from-pos":[{"mask-b-from":ve()}],"mask-image-b-to-pos":[{"mask-b-to":ve()}],"mask-image-b-from-color":[{"mask-b-from":T()}],"mask-image-b-to-color":[{"mask-b-to":T()}],"mask-image-l-from-pos":[{"mask-l-from":ve()}],"mask-image-l-to-pos":[{"mask-l-to":ve()}],"mask-image-l-from-color":[{"mask-l-from":T()}],"mask-image-l-to-color":[{"mask-l-to":T()}],"mask-image-x-from-pos":[{"mask-x-from":ve()}],"mask-image-x-to-pos":[{"mask-x-to":ve()}],"mask-image-x-from-color":[{"mask-x-from":T()}],"mask-image-x-to-color":[{"mask-x-to":T()}],"mask-image-y-from-pos":[{"mask-y-from":ve()}],"mask-image-y-to-pos":[{"mask-y-to":ve()}],"mask-image-y-from-color":[{"mask-y-from":T()}],"mask-image-y-to-color":[{"mask-y-to":T()}],"mask-image-radial":[{"mask-radial":[NP,TP]}],"mask-image-radial-from-pos":[{"mask-radial-from":ve()}],"mask-image-radial-to-pos":[{"mask-radial-to":ve()}],"mask-image-radial-from-color":[{"mask-radial-from":T()}],"mask-image-radial-to-color":[{"mask-radial-to":T()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[mP]}],"mask-image-conic-from-pos":[{"mask-conic-from":ve()}],"mask-image-conic-to-pos":[{"mask-conic-to":ve()}],"mask-image-conic-from-color":[{"mask-conic-from":T()}],"mask-image-conic-to-color":[{"mask-conic-to":T()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:E()}],"mask-repeat":[{mask:de()}],"mask-size":[{mask:fe()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,NP,TP]}],filter:[{filter:[``,`none`,NP,TP]}],blur:[{blur:ye()}],brightness:[{brightness:[mP,NP,TP]}],contrast:[{contrast:[mP,NP,TP]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,zP,MP]}],"drop-shadow-color":[{"drop-shadow":T()}],grayscale:[{grayscale:[``,mP,NP,TP]}],"hue-rotate":[{"hue-rotate":[mP,NP,TP]}],invert:[{invert:[``,mP,NP,TP]}],saturate:[{saturate:[mP,NP,TP]}],sepia:[{sepia:[``,mP,NP,TP]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,NP,TP]}],"backdrop-blur":[{"backdrop-blur":ye()}],"backdrop-brightness":[{"backdrop-brightness":[mP,NP,TP]}],"backdrop-contrast":[{"backdrop-contrast":[mP,NP,TP]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,mP,NP,TP]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[mP,NP,TP]}],"backdrop-invert":[{"backdrop-invert":[``,mP,NP,TP]}],"backdrop-opacity":[{"backdrop-opacity":[mP,NP,TP]}],"backdrop-saturate":[{"backdrop-saturate":[mP,NP,TP]}],"backdrop-sepia":[{"backdrop-sepia":[``,mP,NP,TP]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":S()}],"border-spacing-x":[{"border-spacing-x":S()}],"border-spacing-y":[{"border-spacing-y":S()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,NP,TP]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[mP,`initial`,NP,TP]}],ease:[{ease:[`linear`,`initial`,_,NP,TP]}],delay:[{delay:[mP,NP,TP]}],animate:[{animate:[`none`,v,NP,TP]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,NP,TP]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:be()}],"rotate-x":[{"rotate-x":be()}],"rotate-y":[{"rotate-y":be()}],"rotate-z":[{"rotate-z":be()}],scale:[{scale:xe()}],"scale-x":[{"scale-x":xe()}],"scale-y":[{"scale-y":xe()}],"scale-z":[{"scale-z":xe()}],"scale-3d":[`scale-3d`],skew:[{skew:Se()}],"skew-x":[{"skew-x":Se()}],"skew-y":[{"skew-y":Se()}],transform:[{transform:[NP,TP,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:Ce()}],"translate-x":[{"translate-x":Ce()}],"translate-y":[{"translate-y":Ce()}],"translate-z":[{"translate-z":Ce()}],"translate-none":[`translate-none`],accent:[{accent:T()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:T()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,NP,TP]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scroll-m":[{"scroll-m":S()}],"scroll-mx":[{"scroll-mx":S()}],"scroll-my":[{"scroll-my":S()}],"scroll-ms":[{"scroll-ms":S()}],"scroll-me":[{"scroll-me":S()}],"scroll-mbs":[{"scroll-mbs":S()}],"scroll-mbe":[{"scroll-mbe":S()}],"scroll-mt":[{"scroll-mt":S()}],"scroll-mr":[{"scroll-mr":S()}],"scroll-mb":[{"scroll-mb":S()}],"scroll-ml":[{"scroll-ml":S()}],"scroll-p":[{"scroll-p":S()}],"scroll-px":[{"scroll-px":S()}],"scroll-py":[{"scroll-py":S()}],"scroll-ps":[{"scroll-ps":S()}],"scroll-pe":[{"scroll-pe":S()}],"scroll-pbs":[{"scroll-pbs":S()}],"scroll-pbe":[{"scroll-pbe":S()}],"scroll-pt":[{"scroll-pt":S()}],"scroll-pr":[{"scroll-pr":S()}],"scroll-pb":[{"scroll-pb":S()}],"scroll-pl":[{"scroll-pl":S()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,NP,TP]}],fill:[{fill:[`none`,...T()]}],"stroke-w":[{stroke:[mP,PP,EP,DP]}],stroke:[{stroke:[`none`,...T()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function K(...e){return ZP(hk(e))}var QP=new Set([`in_progress`,`running`,`resuming`,`starting`,`streaming`,`queued`,`pending`,`accepted`]),$P=new Set([`failed`,`error`,`resume_failed`,`interrupted`,`cancelled`,`canceled`,`aborted`,`expired`]),eF=300*1e3;function tF(e){let t=e?.UpdatedAt??e?.updated_at;if(typeof t==`string`){let e=Date.parse(t);return Number.isNaN(e)?0:e}return typeof t==`number`&&Number.isFinite(t)?t>1e11?t:t*1e3:0}function nF(e){return String(e||``).trim().toLowerCase()}function rF(e){if(!e)return``;let t=typeof e==`number`?new Date(e>1e11?e:e*1e3):new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleString(`zh-CN`,{timeZone:`Asia/Shanghai`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,hour12:!1})}function iF(e){return[e?.Title,e?.Summary,e?.FirstPrompt,e?.LastPrompt,e?.SessionId,e?.Model?.display_name,e?.Model?.id].map(nF).join(` `)}function aF(e,t={}){if(!QP.has(nF(e?.ActiveRunStatus)))return!1;let n=tF(e);if(!n)return!0;let r=Number.isFinite(Number(t.now))?Number(t.now):Date.now(),i=Number.isFinite(Number(t.activeStaleAfterMs))?Number(t.activeStaleAfterMs):eF;return r-n<=i}function oF(e=[],t=``,n={}){let r=nF(t),i=new Set(Array.isArray(n.pinnedSessionIds)?n.pinnedSessionIds:[]);return(Array.isArray(e)?e:[]).filter(e=>e?.SessionId).filter(e=>!r||iF(e).includes(r)).slice().sort((e,t)=>{let r=+!!i.has(e.SessionId),a=+!!i.has(t.SessionId);if(r!==a)return a-r;let o=+!!aF(e,n),s=+!!aF(t,n);return o===s?tF(t)-tF(e):s-o})}function sF(e,t={}){let n=aF(e,t),r=$P.has(nF(e?.ActiveRunStatus));return{running:n,failed:r,label:n||r?``:rF(e?.UpdatedAt??e?.updated_at)}}function cF({sessions:e,currentSessionId:t,onCreateNewSession:n,onSelectSession:r,onDeleteSession:i,onTogglePinSession:a,onLoadMoreSessions:o,sessionTitle:s,pinnedSessionIds:c=[],hasMoreSessions:l=!1,isLoadingSessions:u=!1,className:d}){let[f,p]=(0,b.useState)(``),m=(0,b.useMemo)(()=>oF(e,f,{pinnedSessionIds:c}),[e,c,f]),h=(0,b.useMemo)(()=>new Set(c),[c]);return(0,U.jsxs)(`div`,{className:K(`flex h-full min-h-0 flex-col bg-sidebar`,d),children:[(0,U.jsxs)(`div`,{className:`flex flex-shrink-0 flex-col gap-2 border-b border-black/[0.06] px-3 py-3 dark:border-white/[0.08]`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:n,className:`flex h-[34px] w-full items-center justify-between rounded-[10px] px-2.5 text-sm font-medium text-sidebar-text-secondary transition-colors hover:bg-sidebar-hover hover:text-sidebar-text`,children:[(0,U.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(QM,{className:`h-4 w-4`}),(0,U.jsx)(`span`,{children:`新对话`})]}),(0,U.jsx)(`span`,{className:`rounded border border-black/[0.08] px-1.5 py-0.5 text-[11px] text-sidebar-text-muted dark:border-white/[0.1]`,children:`⌘ N`})]}),(0,U.jsxs)(`label`,{className:`flex h-9 items-center gap-2 rounded-[10px] border border-black/[0.06] bg-background px-2.5 text-xs text-sidebar-text-muted focus-within:border-primary/40 dark:border-white/[0.08]`,children:[(0,U.jsx)(dN,{className:`h-3.5 w-3.5 flex-shrink-0`}),(0,U.jsx)(`input`,{value:f,onChange:e=>p(e.target.value),className:`min-w-0 flex-1 bg-transparent text-sm text-sidebar-text outline-none placeholder:text-sidebar-text-muted`,placeholder:`搜索会话、模型或摘要`})]})]}),(0,U.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-2 pb-4 pt-2 custom-scrollbar`,onScroll:e=>{if(!o||u||!l||f.trim())return;let t=e.currentTarget;t.scrollHeight-t.scrollTop-t.clientHeight<200&&o()},children:[(0,U.jsxs)(`div`,{className:`px-2.5 py-2 text-xs font-medium text-sidebar-text-muted opacity-75`,children:[`历史记录`,f.trim()?` · ${m.length}`:``]}),(0,U.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[m.length>0?m.map(e=>{let n=sF(e),o=h.has(e.SessionId),c=t===e.SessionId;return(0,U.jsxs)(`div`,{className:K(`group relative flex h-[30px] items-center gap-1 rounded-[10px] border-l-2 border-transparent px-2 text-sm leading-5 transition-colors`,c?`border-l-2 border-primary bg-primary/10 font-medium text-sidebar-text`:n.running?`cursor-pointer bg-primary/[0.035] text-sidebar-text`:`cursor-pointer text-sidebar-text-secondary hover:bg-sidebar-hover hover:text-sidebar-text`),children:[(0,U.jsxs)(`button`,{type:`button`,"aria-current":c?`page`:void 0,className:`flex min-w-0 flex-1 items-center gap-1 text-left outline-none focus-visible:ring-2 focus-visible:ring-primary/60`,onClick:()=>r(e.SessionId),children:[(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[13px]`,children:s(e)}),n.running?(0,U.jsx)(`span`,{"aria-label":`运行中`,className:`h-1.5 w-1.5 flex-shrink-0 animate-spin rounded-full border border-primary border-t-transparent`}):n.failed?(0,U.jsx)(`span`,{"aria-label":`运行失败`,title:`运行失败`,className:`h-1.5 w-1.5 flex-shrink-0 rounded-full bg-rose-500/75`}):n.label?(0,U.jsx)(`span`,{className:`flex-shrink-0 text-[11px] leading-none text-sidebar-text-muted group-hover:hidden`,children:n.label}):null]}),(0,U.jsxs)(`div`,{className:`absolute right-1 top-1/2 flex -translate-y-1/2 items-center justify-end gap-0.5 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:t=>a(e.SessionId,t),className:K(`flex h-6 w-6 items-center justify-center rounded-md text-sidebar-text-muted hover:bg-sidebar-active hover:text-sidebar-text`,o&&`text-primary opacity-100`),title:o?`取消置顶`:`置顶会话`,"aria-label":o?`取消置顶会话`:`置顶会话`,children:o?(0,U.jsx)(aN,{className:`h-3.5 w-3.5`}):(0,U.jsx)(oN,{className:`h-3.5 w-3.5`})}),(0,U.jsx)(`button`,{type:`button`,onClick:t=>i(e.SessionId,t),className:`flex h-6 w-6 items-center justify-center rounded-md text-sidebar-text-muted hover:bg-sidebar-active hover:text-rose-500`,title:`删除会话`,children:(0,U.jsx)(bN,{className:`h-3.5 w-3.5`})})]})]},e.SessionId)}):(0,U.jsx)(`div`,{className:`rounded-xl border border-dashed border-black/[0.08] px-3 py-8 text-center text-xs text-sidebar-text-muted dark:border-white/[0.1]`,children:`没有匹配的会话`}),u?(0,U.jsxs)(`div`,{className:`flex items-center justify-center gap-2 px-3 py-3 text-xs text-sidebar-text-muted`,children:[(0,U.jsx)(XM,{className:`h-3.5 w-3.5 animate-spin`}),(0,U.jsx)(`span`,{children:`加载中`})]}):null]})]}),(0,U.jsxs)(`div`,{className:`border-t border-black/[0.06] px-4 py-3 text-center dark:border-white/[0.08]`,children:[(0,U.jsx)(`div`,{className:`text-[10px] font-medium tracking-[0.14em] text-sidebar-text-muted`,children:`POWERED BY`}),(0,U.jsx)(`div`,{className:`mt-1 bg-gradient-to-r from-blue-600 to-indigo-500 bg-clip-text text-xs font-bold text-transparent dark:from-blue-400 dark:to-indigo-300`,children:`Ksyun AgentEngine`}),(0,U.jsx)(`div`,{className:`mx-auto mt-2 max-w-[13rem] text-[10px] leading-4 text-sidebar-text-muted`,children:`Agent 可能产生不准确的信息,请独立验证。`})]})]})}typeof window<`u`&&window.document&&window.document.createElement;function lF(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}function uF(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function dF(...e){return t=>{let n=!1,r=e.map(e=>{let r=uF(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;t{let{children:t,...r}=e,i=b.useMemo(()=>r,Object.values(r));return(0,U.jsx)(n.Provider,{value:i,children:t})};r.displayName=e+`Provider`;function i(r){let i=b.useContext(n);if(i)return i;if(t!==void 0)return t;throw Error(`\`${r}\` must be used within \`${e}\``)}return[r,i]}function mF(e,t=[]){let n=[];function r(t,r){let i=b.createContext(r),a=n.length;n=[...n,r];let o=t=>{let{scope:n,children:r,...o}=t,s=n?.[e]?.[a]||i,c=b.useMemo(()=>o,Object.values(o));return(0,U.jsx)(s.Provider,{value:c,children:r})};o.displayName=t+`Provider`;function s(n,o){let s=o?.[e]?.[a]||i,c=b.useContext(s);if(c)return c;if(r!==void 0)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}return[o,s]}let i=()=>{let t=n.map(e=>b.createContext(e));return function(n){let r=n?.[e]||t;return b.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return i.scopeName=e,[r,hF(i,...t)]}function hF(...e){let t=e[0];if(e.length===1)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return b.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}var gF=globalThis?.document?b.useLayoutEffect:()=>{},_F=b.useId||(()=>void 0),vF=0;function yF(e){let[t,n]=b.useState(_F());return gF(()=>{e||n(e=>e??String(vF++))},[e]),e||(t?`radix-${t}`:``)}var bF=b.useInsertionEffect||gF;function xF({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){let[i,a,o]=SF({defaultProp:t,onChange:n}),s=e!==void 0,c=s?e:i;{let t=b.useRef(e!==void 0);b.useEffect(()=>{let e=t.current;e!==s&&console.warn(`${r} is changing from ${e?`controlled`:`uncontrolled`} to ${s?`controlled`:`uncontrolled`}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),t.current=s},[s,r])}return[c,b.useCallback(t=>{if(s){let n=CF(t)?t(e):t;n!==e&&o.current?.(n)}else a(t)},[s,e,a,o])]}function SF({defaultProp:e,onChange:t}){let[n,r]=b.useState(e),i=b.useRef(n),a=b.useRef(t);return bF(()=>{a.current=t},[t]),b.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}function CF(e){return typeof e==`function`}function wF(e){let t=TF(e),n=b.forwardRef((e,n)=>{let{children:r,...i}=e,a=b.Children.toArray(r),o=a.find(DF);if(o){let e=o.props.children,r=a.map(t=>t===o?b.Children.count(e)>1?b.Children.only(null):b.isValidElement(e)?e.props.children:null:t);return(0,U.jsx)(t,{...i,ref:n,children:b.isValidElement(e)?b.cloneElement(e,void 0,r):null})}return(0,U.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function TF(e){let t=b.forwardRef((e,t)=>{let{children:n,...r}=e;if(b.isValidElement(n)){let e=kF(n),i=OF(r,n.props);return n.type!==b.Fragment&&(i.ref=t?dF(t,e):e),b.cloneElement(n,i)}return b.Children.count(n)>1?b.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var EF=Symbol(`radix.slottable`);function DF(e){return b.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===EF}function OF(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function kF(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var AF=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=wF(`Primitive.${t}`),r=b.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,U.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function jF(e,t){e&&xl.flushSync(()=>e.dispatchEvent(t))}function MF(e){let t=b.useRef(e);return b.useEffect(()=>{t.current=e}),b.useMemo(()=>(...e)=>t.current?.(...e),[])}function NF(e,t=globalThis?.document){let n=MF(e);b.useEffect(()=>{let e=e=>{e.key===`Escape`&&n(e)};return t.addEventListener(`keydown`,e,{capture:!0}),()=>t.removeEventListener(`keydown`,e,{capture:!0})},[n,t])}var PF=`DismissableLayer`,FF=`dismissableLayer.update`,IF=`dismissableLayer.pointerDownOutside`,LF=`dismissableLayer.focusOutside`,RF,zF=b.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),BF=b.forwardRef((e,t)=>{let{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:o,onDismiss:s,...c}=e,l=b.useContext(zF),[u,d]=b.useState(null),f=u?.ownerDocument??globalThis?.document,[,p]=b.useState({}),m=fF(t,e=>d(e)),h=Array.from(l.layers),[g]=[...l.layersWithOutsidePointerEventsDisabled].slice(-1),_=h.indexOf(g),v=u?h.indexOf(u):-1,y=l.layersWithOutsidePointerEventsDisabled.size>0,x=v>=_,ee=UF(e=>{let t=e.target,n=[...l.branches].some(e=>e.contains(t));!x||n||(i?.(e),o?.(e),e.defaultPrevented||s?.())},f),te=WF(e=>{let t=e.target;[...l.branches].some(e=>e.contains(t))||(a?.(e),o?.(e),e.defaultPrevented||s?.())},f);return NF(e=>{v===l.layers.size-1&&(r?.(e),!e.defaultPrevented&&s&&(e.preventDefault(),s()))},f),b.useEffect(()=>{if(u)return n&&(l.layersWithOutsidePointerEventsDisabled.size===0&&(RF=f.body.style.pointerEvents,f.body.style.pointerEvents=`none`),l.layersWithOutsidePointerEventsDisabled.add(u)),l.layers.add(u),GF(),()=>{n&&l.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=RF)}},[u,f,n,l]),b.useEffect(()=>()=>{u&&(l.layers.delete(u),l.layersWithOutsidePointerEventsDisabled.delete(u),GF())},[u,l]),b.useEffect(()=>{let e=()=>p({});return document.addEventListener(FF,e),()=>document.removeEventListener(FF,e)},[]),(0,U.jsx)(AF.div,{...c,ref:m,style:{pointerEvents:y?x?`auto`:`none`:void 0,...e.style},onFocusCapture:lF(e.onFocusCapture,te.onFocusCapture),onBlurCapture:lF(e.onBlurCapture,te.onBlurCapture),onPointerDownCapture:lF(e.onPointerDownCapture,ee.onPointerDownCapture)})});BF.displayName=PF;var VF=`DismissableLayerBranch`,HF=b.forwardRef((e,t)=>{let n=b.useContext(zF),r=b.useRef(null),i=fF(t,r);return b.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,U.jsx)(AF.div,{...e,ref:i})});HF.displayName=VF;function UF(e,t=globalThis?.document){let n=MF(e),r=b.useRef(!1),i=b.useRef(()=>{});return b.useEffect(()=>{let e=e=>{if(e.target&&!r.current){let r=function(){KF(IF,n,a,{discrete:!0})},a={originalEvent:e};e.pointerType===`touch`?(t.removeEventListener(`click`,i.current),i.current=r,t.addEventListener(`click`,i.current,{once:!0})):r()}else t.removeEventListener(`click`,i.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener(`pointerdown`,e)},0);return()=>{window.clearTimeout(a),t.removeEventListener(`pointerdown`,e),t.removeEventListener(`click`,i.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function WF(e,t=globalThis?.document){let n=MF(e),r=b.useRef(!1);return b.useEffect(()=>{let e=e=>{e.target&&!r.current&&KF(LF,n,{originalEvent:e},{discrete:!1})};return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function GF(){let e=new CustomEvent(FF);document.dispatchEvent(e)}function KF(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?jF(i,a):i.dispatchEvent(a)}var qF=`focusScope.autoFocusOnMount`,JF=`focusScope.autoFocusOnUnmount`,YF={bubbles:!1,cancelable:!0},XF=`FocusScope`,ZF=b.forwardRef((e,t)=>{let{loop:n=!1,trapped:r=!1,onMountAutoFocus:i,onUnmountAutoFocus:a,...o}=e,[s,c]=b.useState(null),l=MF(i),u=MF(a),d=b.useRef(null),f=fF(t,e=>c(e)),p=b.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;b.useEffect(()=>{if(r){let e=function(e){if(p.paused||!s)return;let t=e.target;s.contains(t)?d.current=t:iI(d.current,{select:!0})},t=function(e){if(p.paused||!s)return;let t=e.relatedTarget;t!==null&&(s.contains(t)||iI(d.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&iI(s)};document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return s&&r.observe(s,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,s,p.paused]),b.useEffect(()=>{if(s){aI.add(p);let e=document.activeElement;if(!s.contains(e)){let t=new CustomEvent(qF,YF);s.addEventListener(qF,l),s.dispatchEvent(t),t.defaultPrevented||(QF(cI(eI(s)),{select:!0}),document.activeElement===e&&iI(s))}return()=>{s.removeEventListener(qF,l),setTimeout(()=>{let t=new CustomEvent(JF,YF);s.addEventListener(JF,u),s.dispatchEvent(t),t.defaultPrevented||iI(e??document.body,{select:!0}),s.removeEventListener(JF,u),aI.remove(p)},0)}}},[s,l,u,p]);let m=b.useCallback(e=>{if(!n&&!r||p.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=$F(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&iI(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&iI(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,p.paused]);return(0,U.jsx)(AF.div,{tabIndex:-1,...o,ref:f,onKeyDown:m})});ZF.displayName=XF;function QF(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(iI(r,{select:t}),document.activeElement!==n)return}function $F(e){let t=eI(e);return[tI(t,e),tI(t.reverse(),e)]}function eI(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function tI(e,t){for(let n of e)if(!nI(n,{upTo:t}))return n}function nI(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function rI(e){return e instanceof HTMLInputElement&&`select`in e}function iI(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&rI(e)&&t&&e.select()}}var aI=oI();function oI(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=sI(e,t),e.unshift(t)},remove(t){e=sI(e,t),e[0]?.resume()}}}function sI(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function cI(e){return e.filter(e=>e.tagName!==`A`)}var lI=`Portal`,uI=b.forwardRef((e,t)=>{let{container:n,...r}=e,[i,a]=b.useState(!1);gF(()=>a(!0),[]);let o=n||i&&globalThis?.document?.body;return o?xl.createPortal((0,U.jsx)(AF.div,{...r,ref:t}),o):null});uI.displayName=lI;function dI(e,t){return b.useReducer((e,n)=>t[e][n]??e,e)}var fI=e=>{let{present:t,children:n}=e,r=pI(t),i=typeof n==`function`?n({present:r.isPresent}):b.Children.only(n),a=fF(r.ref,hI(i));return typeof n==`function`||r.isPresent?b.cloneElement(i,{ref:a}):null};fI.displayName=`Presence`;function pI(e){let[t,n]=b.useState(),r=b.useRef(null),i=b.useRef(e),a=b.useRef(`none`),[o,s]=dI(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return b.useEffect(()=>{let e=mI(r.current);a.current=o===`mounted`?e:`none`},[o]),gF(()=>{let t=r.current,n=i.current;if(n!==e){let r=a.current,o=mI(t);e?s(`MOUNT`):o===`none`||t?.display===`none`?s(`UNMOUNT`):s(n&&r!==o?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,s]),gF(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,o=a=>{let o=mI(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(s(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},c=e=>{e.target===t&&(a.current=mI(r.current))};return t.addEventListener(`animationstart`,c),t.addEventListener(`animationcancel`,o),t.addEventListener(`animationend`,o),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,c),t.removeEventListener(`animationcancel`,o),t.removeEventListener(`animationend`,o)}}else s(`ANIMATION_END`)},[t,s]),{isPresent:[`mounted`,`unmountSuspended`].includes(o),ref:b.useCallback(e=>{r.current=e?getComputedStyle(e):null,n(e)},[])}}function mI(e){return e?.animationName||`none`}function hI(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var gI=0;function _I(){b.useEffect(()=>{let e=document.querySelectorAll(`[data-radix-focus-guard]`);return document.body.insertAdjacentElement(`afterbegin`,e[0]??vI()),document.body.insertAdjacentElement(`beforeend`,e[1]??vI()),gI++,()=>{gI===1&&document.querySelectorAll(`[data-radix-focus-guard]`).forEach(e=>e.remove()),gI--}},[])}function vI(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}var yI=`right-scroll-bar-position`,bI=`width-before-scroll-bar`,xI=`with-scroll-bars-hidden`,SI=`--removed-body-scroll-bar-size`;function CI(e,t){return typeof e==`function`?e(t):e&&(e.current=t),e}function wI(e,t){var n=(0,b.useState)(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(e){var t=n.value;t!==e&&(n.value=e,n.callback(e,t))}}}})[0];return n.callback=t,n.facade}var TI=typeof window<`u`?b.useLayoutEffect:b.useEffect,EI=new WeakMap;function DI(e,t){var n=wI(t||null,function(t){return e.forEach(function(e){return CI(e,t)})});return TI(function(){var t=EI.get(n);if(t){var r=new Set(t),i=new Set(e),a=n.current;r.forEach(function(e){i.has(e)||CI(e,null)}),i.forEach(function(e){r.has(e)||CI(e,a)})}EI.set(n,e)},[e]),n}function OI(e){return e}function kI(e,t){t===void 0&&(t=OI);var n=[],r=!1;return{read:function(){if(r)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(e){var i=t(e,r);return n.push(i),function(){n=n.filter(function(e){return e!==i})}},assignSyncMedium:function(e){for(r=!0;n.length;){var t=n;n=[],t.forEach(e)}n={push:function(t){return e(t)},filter:function(){return n}}},assignMedium:function(e){r=!0;var t=[];if(n.length){var i=n;n=[],i.forEach(e),t=n}var a=function(){var n=t;t=[],n.forEach(e)},o=function(){return Promise.resolve().then(a)};o(),n={push:function(e){t.push(e),o()},filter:function(e){return t=t.filter(e),n}}}}}function AI(e){e===void 0&&(e={});var t=kI(null);return t.options=jp({async:!0,ssr:!1},e),t}var jI=function(e){var t=e.sideCar,n=Mp(e,[`sideCar`]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw Error(`Sidecar medium not found`);return b.createElement(r,jp({},n))};jI.isSideCarExport=!0;function MI(e,t){return e.useMedium(t),jI}var NI=AI(),PI=function(){},FI=b.forwardRef(function(e,t){var n=b.useRef(null),r=b.useState({onScrollCapture:PI,onWheelCapture:PI,onTouchMoveCapture:PI}),i=r[0],a=r[1],o=e.forwardProps,s=e.children,c=e.className,l=e.removeScrollBar,u=e.enabled,d=e.shards,f=e.sideCar,p=e.noRelative,m=e.noIsolation,h=e.inert,g=e.allowPinchZoom,_=e.as,v=_===void 0?`div`:_,y=e.gapMode,x=Mp(e,[`forwardProps`,`children`,`className`,`removeScrollBar`,`enabled`,`shards`,`sideCar`,`noRelative`,`noIsolation`,`inert`,`allowPinchZoom`,`as`,`gapMode`]),ee=f,te=DI([n,t]),S=jp(jp({},x),i);return b.createElement(b.Fragment,null,u&&b.createElement(ee,{sideCar:NI,removeScrollBar:l,shards:d,noRelative:p,noIsolation:m,inert:h,setCallbacks:a,allowPinchZoom:!!g,lockRef:n,gapMode:y}),o?b.cloneElement(b.Children.only(s),jp(jp({},S),{ref:te})):b.createElement(v,jp({},S,{className:c,ref:te}),s))});FI.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},FI.classNames={fullWidth:bI,zeroRight:yI};var II,LI=function(){if(II)return II;if(typeof __webpack_nonce__<`u`)return __webpack_nonce__};function RI(){if(!document)return null;var e=document.createElement(`style`);e.type=`text/css`;var t=LI();return t&&e.setAttribute(`nonce`,t),e}function zI(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function BI(e){(document.head||document.getElementsByTagName(`head`)[0]).appendChild(e)}var VI=function(){var e=0,t=null;return{add:function(n){e==0&&(t=RI())&&(zI(t,n),BI(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},HI=function(){var e=VI();return function(t,n){b.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},UI=function(){var e=HI();return function(t){var n=t.styles,r=t.dynamic;return e(n,r),null}},WI={left:0,top:0,right:0,gap:0},GI=function(e){return parseInt(e||``,10)||0},KI=function(e){var t=window.getComputedStyle(document.body),n=t[e===`padding`?`paddingLeft`:`marginLeft`],r=t[e===`padding`?`paddingTop`:`marginTop`],i=t[e===`padding`?`paddingRight`:`marginRight`];return[GI(n),GI(r),GI(i)]},qI=function(e){if(e===void 0&&(e=`margin`),typeof window>`u`)return WI;var t=KI(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},JI=UI(),YI=`data-scroll-locked`,XI=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),` - .${xI} { +`)}var WO=lD,Lte={description:Nte,value:Ite(WO)};function GO(e){return e.map(e=>{let t=e.updateComponents;if(!t||typeof t!=`object`||Array.isArray(t))return e;let n=t.components;if(!Array.isArray(n))return e;let r=n.filter(e=>!!(e&&typeof e==`object`&&!Array.isArray(e)));if(r.some(e=>e.id===`root`))return e;let i=r.filter(e=>typeof e.id==`string`&&e.id.endsWith(`-root`));if(i.length!==1)return e;let a=i[0];return{...e,updateComponents:{...t,components:n.map(e=>e===a?{...a,id:`root`}:e)}}})}function Rte(e){return String(e.type||``).toUpperCase()}function zte(e,t){return String(e.messageId||t)}function Bte(e,t){return String(e.runId||t)}function KO(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function Vte(e){if(Array.isArray(e))return GO(e.filter(e=>!!(e&&typeof e==`object`)));if(e&&typeof e==`object`){let t=e.a2ui_operations;return Array.isArray(t)?GO(t.filter(e=>!!(e&&typeof e==`object`))):[e]}return[]}function Hte(e){return e==null||e===``?``:typeof e==`string`?e:JSON.stringify(e,null,2)}var Ute=class{agent;onEvent;tools=new Map;runMessageIds=new Map;pendingByRun=new Map;activeRunId=``;constructor(e){this.agent=new Jy({url:e.url,agentId:e.agentId,threadId:e.threadId,fetch:e.fetch}),this.onEvent=e.onEvent}async run(e,t,n){return this.activeRunId=t,this.agent.addMessage({id:`${t}:user`,role:`user`,content:e}),this.execute({runId:t,abortController:this.controllerFor(n)})}async resume(e,t){let n=this.agent.pendingInterrupts.length>0?this.agent.pendingInterrupts:this.pendingByRun.get(this.activeRunId)||[],r=Ay(n.length>0?n:[{id:t.interruptId,reason:`approval`}],{[t.interruptId]:t.status===`resolved`?{status:`resolved`,payload:t.payload}:{status:`cancelled`}});if(!r.some(e=>e.interruptId===t.interruptId))throw Error(`AG-UI interrupt ${t.interruptId} is not pending`);return this.activeRunId=e,this.execute({runId:e,resume:r})}abort(){this.agent.abortRun()}controllerFor(e){if(!e)return;let t=new AbortController;return e.aborted&&t.abort(e.reason),e.addEventListener(`abort`,()=>t.abort(e.reason),{once:!0}),t}async execute(e){let t=`completed`,n=await this.agent.runAgent({runId:e.runId,context:[Lte],forwardedProps:{injectA2UITool:!0},resume:e.resume,abortController:e.abortController},{onEvent:({event:n})=>{let r=this.project(n,e.runId);r.status&&(t=r.status),r.events.forEach(e=>this.onEvent(e))},onRunFinishedEvent:({outcome:e})=>{t=e===`interrupt`?`interrupted`:`completed`},onRunErrorEvent:()=>{t=`failed`}}),r=this.agent.pendingInterrupts.slice();return r.length>0&&(this.pendingByRun.set(e.runId,r),t=`interrupted`),{status:t,result:n}}project(e,t){let n=Rte(e),r=Bte(e,t),i=zte(e,`${r}:assistant`),a=e,o=[];if(n===`RUN_STARTED`)o.push({type:`activity`,phase:`AG-UI 运行已创建`,status:`running`,countEvent:!1});else if(n===`TEXT_MESSAGE_START`)this.runMessageIds.set(r,i),o.push({type:`assistant_message_created`,messageId:i});else if(n===`TEXT_MESSAGE_CONTENT`)o.push({type:`text_delta`,messageId:this.runMessageIds.get(r)||i,delta:String(a.delta||``)});else if(n===`TEXT_MESSAGE_END`)o.push({type:`activity`,phase:`生成回复内容`,status:`running`});else if(n===`REASONING_MESSAGE_CONTENT`)o.push({type:`reasoning_delta`,messageId:this.runMessageIds.get(r)||i,delta:String(a.delta||``)});else if(n===`TOOL_CALL_START`){let e=String(a.toolCallId||`tool`);this.tools.set(e,{name:String(a.toolCallName||`tool`),args:``}),o.push({type:`tool_upsert`,messageId:this.runMessageIds.get(r)||`${r}:assistant`,name:String(a.toolCallName||`tool`),args:``,status:`running`})}else if(n===`TOOL_CALL_ARGS`){let e=String(a.toolCallId||`tool`),t=this.tools.get(e)||{name:`tool`,args:``};t.args+=String(a.delta||``),this.tools.set(e,t),o.push({type:`tool_upsert`,messageId:this.runMessageIds.get(r)||`${r}:assistant`,name:t.name,args:t.args,status:`running`})}else if(n===`TOOL_CALL_RESULT`){let e=String(a.toolCallId||`tool`),t=this.tools.get(e)||{name:`tool`,args:``};o.push({type:`tool_result`,messageId:this.runMessageIds.get(r)||`${r}:assistant`,name:t.name,output:String(a.content||``)})}else if(n===`ACTIVITY_SNAPSHOT`){let e=a.content,t=KO(e),n=String(t.surfaceId||t.surface_id||a.messageId||`default`);o.push({type:`agui_activity`,messageId:this.runMessageIds.get(r)||i,surfaceId:n,messages:Vte(t.content??e)})}else if(n===`RUN_FINISHED`){let e=KO(a.outcome);if(String(e.type||``).toLowerCase()===`interrupt`){let t=Array.isArray(e.interrupts)?e.interrupts:[];this.pendingByRun.set(r,t);for(let e of t){let t=KO(e.metadata),n=e.toolCallId?this.tools.get(e.toolCallId):void 0,i=String(t.tool_name||t.toolName||n?.name||e.reason||`人工确认`),a=Hte(t.arguments??t.tool_args??t.args??n?.args);o.push({type:`approval_requested`,messageId:this.runMessageIds.get(r)||`${r}:assistant`,approvalRequestId:e.id,protocol:`ag-ui`,name:i,args:a,...e.message?{message:e.message}:{},...t.approval_level?{approvalLevel:String(t.approval_level)}:{}})}return o.push({type:`activity`,phase:`等待人工确认`,status:`waiting`}),{events:o,status:`interrupted`}}o.push({type:`terminal`,status:`completed`})}else if(n===`RUN_ERROR`)return o.push({type:`error`,error:Error(`AG-UI 运行失败`)}),{events:o,status:`failed`};return{events:o}}},qO=class extends Error{code;status;capability;runId;cursor;cause;constructor(e,t,n={}){super(t),this.name=`ConversationClientError`,this.code=e,this.status=n.status,this.capability=n.capability,this.runId=n.runId,this.cursor=n.cursor,this.cause=n.cause}},JO=`conversation.ksadk.io/v1`,YO=/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/,Wte=new Set([`native`,`translated`,`degraded`,`unavailable`]),Gte=new Set([`user_message`,`assistant_text`,`reasoning`,`tool_call`,`approval`,`progress`,`plan`,`goal`,`artifact`,`a2ui`,`error`,`unknown`]),Kte=new Set([`append`,`replace`,`completed`]),qte=new Set([`pending`,`streaming`,`completed`,`failed`]),Jte=new Set([`public`,`internal`,`hidden`]),Yte=new Set([`apiVersion`,`kind`,`inputId`,`sessionId`,`idempotencyKey`,`parts`,`modelRef`,`reasoning`,`extensions`]),Xte=new Set([`kind`,`text`]),Zte=new Set([`kind`,`attachmentRef`,`mediaType`,`name`]),XO=`ksadk.approval`,ZO=`ksadk.collaboration`,QO=`ksadk.goal`;function $O(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function ek(e,t){return typeof e==`string`&&e.length>0&&e.length<=t}function tk(e,t,n=!1){return e==null||typeof e==`string`&&e.length<=t&&(n||e.length>0)}function nk(e,t){return Object.keys(e).every(e=>t.has(e))}function rk(e){let t=$O(e);return!t||typeof t.kind!=`string`?null:t.kind===`text`?!nk(t,Xte)||!ek(t.text,131072)?null:{kind:`text`,text:t.text}:t.kind===`attachment`?!nk(t,Zte)||!ek(t.attachmentRef,2048)||!ek(t.mediaType,256)||!tk(t.name,1024,!0)?null:{kind:`attachment`,attachmentRef:t.attachmentRef,mediaType:t.mediaType,...t.name===void 0?{}:{name:t.name}}:null}function ik(e){if(e===void 0)return{};let t=$O(e);if(!t||Object.keys(t).some(e=>!YO.test(e)||!e.includes(`.`)))return null;let n=t[XO],r=t[ZO],i=t[QO];return n!==void 0&&![`ask`,`risk`,`full`].includes(String(n))||r!==void 0&&![`default`,`plan`].includes(String(r))||i!==void 0&&!ek(i,4096)?null:{...t}}function ak(e){let t=$O(e);if(!t||!nk(t,Yte)||t.apiVersion!==JO||t.kind!==`ConversationInput`||!ek(t.inputId,256)||!ek(t.sessionId,256)||!ek(t.idempotencyKey,512)||!Array.isArray(t.parts)||t.parts.length===0||!tk(t.modelRef,256)||!tk(t.reasoning,64))return null;let n=t.parts.map(rk),r=ik(t.extensions);return n.some(e=>e===null)||r===null?null:{apiVersion:JO,kind:`ConversationInput`,inputId:t.inputId,sessionId:t.sessionId,idempotencyKey:t.idempotencyKey,parts:n,...t.modelRef===void 0?{}:{modelRef:t.modelRef},...t.reasoning===void 0?{}:{reasoning:t.reasoning},...t.extensions===void 0?{}:{extensions:r}}}function ok(e){let t=ak({...e,apiVersion:e.apiVersion||JO,kind:e.kind||`ConversationInput`});if(!t)throw new qO(`conversation_contract_mismatch`,`Conversation input does not match conversation.ksadk.io/v1.`);return t}function sk(e){let t=e.parts.map(e=>e.kind===`text`?`text`:e.mediaType.toLowerCase().startsWith(`image/`)?`attachment.image`:`attachment.file`);e.modelRef&&t.push(`model.select`),e.reasoning&&t.push(`reasoning.effort`);for(let n of Object.keys(e.extensions||{}))n===XO?t.push(`approval`):n===ZO?e.extensions?.[n]===`plan`&&t.push(`plan`):n===QO?t.push(`goal`):t.push(n);return[...new Set(t)]}function ck(e,t){if(e.sessionId!==t.sessionId)throw new qO(`conversation_session_mismatch`,`Conversation input session does not match the active surface.`);for(let n of sk(t))if(!pk(e,n))throw new qO(`conversation_input_unsupported`,`Conversation input is not declared by the active surface.`,{capability:n});return t}function lk(e){let t=$O(e);return!t||!ek(t.name,128)||!YO.test(t.name)||!Wte.has(t.mode)||!tk(t.reason,512,!0)||(t.mode===`degraded`||t.mode===`unavailable`)&&!ek(t.reason,512)?null:{name:t.name,mode:t.mode,...t.reason===void 0?{}:{reason:t.reason}}}function uk(e){if(e===void 0)return[];if(!Array.isArray(e))return null;let t=e.map(lk);if(t.some(e=>e===null))return null;let n=t;return new Set(n.map(e=>e.name)).size===n.length?n:null}function dk(e){let t=$O(e);if(!t||t.apiVersion!==JO||t.kind!==`ConversationSurface`||!ek(t.surfaceId,256)||!ek(t.sessionId,256)||!ek(t.providerRef,256))return null;let n=uk(t.inputs),r=uk(t.outputs);return!n||!r?null:{apiVersion:JO,kind:`ConversationSurface`,surfaceId:t.surfaceId,sessionId:t.sessionId,providerRef:t.providerRef,inputs:n,outputs:r}}function fk(e){let t=$O(e);if(!t||t.apiVersion!==JO||t.kindVersion!==1||!ek(t.itemId,512)||!tk(t.parentItemId,512)||!Array.isArray(t.sourceEventIds)||t.sourceEventIds.length===0||t.sourceEventIds.some(e=>typeof e!=`string`||e.length===0)||new Set(t.sourceEventIds).size!==t.sourceEventIds.length||!ek(t.sessionId,256)||!ek(t.runId,256)||!ek(t.kind,128)||!Kte.has(t.operation)||!qte.has(t.lifecycle)||t.visibility!==void 0&&!Jte.has(t.visibility)||!ek(t.payloadSchemaRef,256)||!tk(t.capabilityRef,256,!0))return null;let n=t.operation,r=t.lifecycle;if(n===`completed`&&r!==`completed`&&r!==`failed`)return null;let i=t.payload===void 0?{}:$O(t.payload),a=t.nativeRef===void 0?{}:$O(t.nativeRef);if(!i||!a)return null;let o=String(t.kind||`unknown`),s=Gte.has(o)?o:`unknown`;return{apiVersion:JO,kindVersion:1,itemId:t.itemId,...t.parentItemId===void 0?{}:{parentItemId:t.parentItemId},sourceEventIds:[...t.sourceEventIds],sessionId:t.sessionId,runId:t.runId,kind:s,operation:n,lifecycle:r,visibility:s===`unknown`&&o!==`unknown`?`hidden`:t.visibility||`public`,payloadSchemaRef:t.payloadSchemaRef,payload:s===`unknown`&&o!==`unknown`?{originalKind:o,summary:`This content type is not supported by the current renderer.`}:{...i},...t.capabilityRef===void 0?{}:{capabilityRef:t.capabilityRef},nativeRef:{...a}}}function pk(e,...t){return e.inputs.some(e=>t.includes(e.name)&&(e.mode===`native`||e.mode===`translated`))}var mk={user_message:`conversation.item.user_message/v1`,assistant_text:`conversation.item.assistant_text/v1`,reasoning:`conversation.item.reasoning/v1`,tool_call:`conversation.item.tool-call/v1`,approval:`conversation.item.approval/v1`,artifact:`conversation.item.artifact/v1`,a2ui:`conversation.item.a2ui/v1`,error:`conversation.item.error/v1`};function hk(e){return e.lifecycle===`completed`||e.lifecycle===`failed`}function gk(e){let t=mk[e.kind];return t===void 0||t===e.payloadSchemaRef}function _k(e){if(typeof e!=`string`||e.length===0)return null;try{let t=new URL(e);return t.protocol!==`http:`&&t.protocol!==`https:`||t.username||t.password?null:t.toString()}catch{return null}}function vk(e){return{id:e.itemId,parentId:e.parentItemId||null,runId:e.runId,kind:e.kind,text:typeof e.payload.text==`string`?e.payload.text:``,lifecycle:e.lifecycle}}function yk(e){return{id:e.itemId,name:typeof e.payload.name==`string`&&e.payload.name?e.payload.name:`Artifact`,mimeType:typeof e.payload.mimeType==`string`&&e.payload.mimeType?e.payload.mimeType:`application/octet-stream`,uri:_k(e.payload.uri)}}function bk(e,t){let n=e.payload[t];return typeof n==`string`&&n?n:null}function xk(e){if(e.kind===`tool_call`){let t=bk(e,`callId`);if(t)return`tool:${t}`}if(e.kind===`approval`){let t=bk(e,`interactionId`);if(t)return`approval:${t}`}if(e.kind===`a2ui`){let t=bk(e,`surfaceId`);if(t)return`a2ui:${t}`}return`item:${e.itemId}`}function Sk(e,t){let n=hk(e)&&!hk(t);return{...e,...t,itemId:e.itemId,parentItemId:e.parentItemId,sourceEventIds:[...new Set([...e.sourceEventIds,...t.sourceEventIds])],payload:{...e.payload,...t.payload},nativeRef:{...e.nativeRef,...t.nativeRef},...n?{lifecycle:e.lifecycle,operation:e.operation}:{}}}function Ck(e){let t=[],n=new Map;for(let r of e){let e=xk(r),i=n.get(e);if(i===void 0){n.set(e,t.length),t.push({key:e,item:r,sourceItemIds:[r.itemId]});continue}let a=t[i];t[i]={key:e,item:Sk(a.item,r),sourceItemIds:[...new Set([...a.sourceItemIds,r.itemId])]}}return t}function wk(e,t={}){let n=e.items.filter(e=>e.visibility===`public`||t.includeInternal===!0&&e.visibility===`internal`),r=n.filter(gk),i=n.filter(e=>!gk(e)),a=new Set([`user_message`,`assistant_text`,`reasoning`]),o=r.filter(e=>a.has(e.kind)).map(vk),s=e=>r.filter(t=>t.kind===e).map(e=>typeof e.payload.text==`string`?e.payload.text:``).join(``),c=[...r.filter(e=>e.kind===`unknown`),...i],l=r.filter(e=>e.kind===`error`),u=[...r].reverse().find(e=>(e.kind===`progress`||e.kind===`error`)&&hk(e));return{timeline:Ck(r.filter(e=>e.kind!==`progress`)),output:s(`assistant_text`),reasoning:s(`reasoning`),textItems:o,toolItems:r.filter(e=>e.kind===`tool_call`),approvalItems:r.filter(e=>e.kind===`approval`),structuredInputItems:r.filter(e=>e.kind===`progress`&&e.payloadSchemaRef===`conversation.item.structured-input/v1`),a2uiItems:r.filter(e=>e.kind===`a2ui`),artifacts:r.filter(e=>e.kind===`artifact`).map(yk),fallbacks:[...c.map(e=>({id:e.itemId,title:`Unsupported content`,detail:String(e.payload.summary||e.payload.originalKind||e.payloadSchemaRef),failed:e.lifecycle===`failed`})),...l.map(e=>({id:e.itemId,title:`Run failed`,detail:String(e.payload.error||`The agent run failed.`),failed:!0}))],runId:n.at(-1)?.runId||``,terminalStatus:u?u.lifecycle===`failed`?`failed`:`completed`:void 0}}function Tk(){return{items:[],appliedSources:[]}}function Ek(e){return e.lifecycle===`completed`||e.lifecycle===`failed`}function Dk(e,t){let n={...e,...t};typeof e.text==`string`&&typeof t.text==`string`&&(n.text=e.text+t.text);for(let r of[`data`,`operations`])Array.isArray(e[r])&&Array.isArray(t[r])&&(n[r]=[...e[r],...t[r]]);return n}function Ok(e,t){let n=t.sourceEventIds.map(e=>JSON.stringify([t.itemId,e])),r=new Set(e.appliedSources);if(n.every(e=>r.has(e)))return e;n.forEach(e=>r.add(e));let i=e.items.findIndex(e=>e.itemId===t.itemId),a=i>=0?e.items[i]:void 0;if(a&&Ek(a)&&!Ek(t))return{...e,appliedSources:[...r]};let o=[...e.items];if(!a)o.push(t);else{let e=[...new Set([...a.sourceEventIds,...t.sourceEventIds])];a.kind===t.kind?t.operation===`append`?o[i]={...t,payload:Dk(a.payload,t.payload),sourceEventIds:e}:o[i]={...t,sourceEventIds:e}:o[i]={...t,kind:`unknown`,operation:`replace`,payloadSchemaRef:`conversation.item.unknown/v1`,payload:{summary:`The content type changed for the same item and was safely degraded.`},sourceEventIds:e}}return{items:o,appliedSources:[...r]}}var kk=class{state=Tk();apply(e){let t=Ok(this.state,e);if(t===this.state)return!1;let n=t.items!==this.state.items;return this.state=t,n}applyAll(e){for(let t of e)this.apply(t)}snapshot(){return{items:this.state.items.map(e=>({...e,sourceEventIds:[...e.sourceEventIds],payload:{...e.payload},nativeRef:{...e.nativeRef}})),appliedSources:[...this.state.appliedSources]}}},Ak=8;function jk(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function Mk(e){if(e?.aborted)throw new qO(`conversation_aborted`,`Conversation request was aborted.`)}function Nk(e,t){return t?.aborted===!0||e instanceof Error&&e.name===`AbortError`}function Pk(e){let t=e.trim().replace(/\/+$/,``);if(!t)return``;if(!t.includes(`://`))return t.startsWith(`/`)?t:`/${t}`;try{let e=new URL(t);if(e.protocol!==`http:`&&e.protocol!==`https:`||e.username||e.password)throw Error(`unsafe URL`);return e.toString().replace(/\/$/,``)}catch(e){throw new qO(`conversation_contract_mismatch`,`Conversation base URL must be an HTTP(S) URL without embedded credentials.`,{cause:e})}}function Fk(e){return Math.min(200*2**Math.max(0,e-1),2e3)}function Ik(e){return new Promise(t=>{setTimeout(t,e)})}async function Lk(e,t,n){if(Mk(n),!n){await e(t);return}await new Promise((r,i)=>{let a=()=>i(new qO(`conversation_aborted`,`Conversation request was aborted.`));n.addEventListener(`abort`,a,{once:!0}),e(t).then(r,i).finally(()=>{n.removeEventListener(`abort`,a)})})}function Rk(e,t,n){let r=e.snapshot();return{cursor:t,runId:n,state:r,presentation:wk(r)}}function zk(e,t){let n,r=[];for(let t of e.split(/\r?\n/)){let e=t.endsWith(`\r`)?t.slice(0,-1):t;if(!e||e.startsWith(`:`))continue;let i=e.indexOf(`:`),a=i<0?e:e.slice(0,i),o=i<0?``:e.slice(i+1),s=o.startsWith(` `)?o.slice(1):o;if(a===`id`){if(!/^\d+$/.test(s)||!Number.isSafeInteger(Number(s)))throw new qO(`conversation_stream_error`,`Conversation stream contains an invalid replay cursor.`);n=Number(s)}else a===`data`&&r.push(s)}if(r.length===0)return;let i=r.join(` +`);if(!i||i===`[DONE]`)return;let a;try{a=JSON.parse(i)}catch(e){throw new qO(`conversation_contract_mismatch`,`Conversation stream contains invalid JSON.`,{cause:e})}let o=jk(a);if(!o||o.conversationItem===void 0){n!==void 0&&(t.cursor=Math.max(t.cursor,n));return}if(n===void 0)throw new qO(`conversation_stream_error`,`Canonical conversation items require an SSE replay cursor.`);let s=fk(o.conversationItem);if(!s)throw new qO(`conversation_contract_mismatch`,`Conversation stream item does not match conversation.ksadk.io/v1.`);if(t.runId&&t.runId!==s.runId)throw new qO(`conversation_contract_mismatch`,`Conversation stream changed canonical run identity.`,{runId:t.runId,cursor:t.cursor});t.runId=s.runId;let c=t.reducer.apply(s);t.cursor=Math.max(t.cursor,n),c&&t.options.onItem?.(s),t.options.onUpdate?.(Rk(t.reducer,t.cursor,t.runId))}async function Bk(e,t){if(!e.body)throw new qO(`conversation_stream_error`,`Conversation response has no event stream body.`);let n=e.body.getReader(),r=new TextDecoder,i=``;try{for(;;){Mk(t.options.signal);let{value:e,done:a}=await n.read();if(a)break;i+=r.decode(e,{stream:!0});let o=/\r?\n\r?\n/.exec(i);for(;o?.index!==void 0;){let e=o.index,n=o[0].length;zk(i.slice(0,e),t),i=i.slice(e+n),o=/\r?\n\r?\n/.exec(i)}}i+=r.decode(),i.trim()&&zk(i,t)}catch(e){throw e instanceof qO?e:(Nk(e,t.options.signal)&&Mk(t.options.signal),new qO(`conversation_stream_error`,`Conversation event stream was interrupted.`,{cause:e,runId:t.runId||void 0,cursor:t.cursor}))}finally{n.releaseLock()}}function Vk(e){return e.state.items.some(e=>(e.kind===`progress`||e.kind===`error`)&&(e.lifecycle===`completed`||e.lifecycle===`failed`))}var Hk=class{fetcher;baseUrl;maxReconnects;sleep;retryDelayMs;constructor(e={}){if(!Number.isInteger(e.maxReconnects??Ak)||(e.maxReconnects??Ak)<0||(e.maxReconnects??Ak)>32)throw new qO(`conversation_contract_mismatch`,`Conversation reconnect limit must be an integer from 0 to 32.`);this.fetcher=e.fetch,this.baseUrl=Pk(e.baseUrl||``),this.maxReconnects=e.maxReconnects??Ak,this.sleep=e.sleep||Ik,this.retryDelayMs=e.retryDelayMs||Fk}fetch(){if(this.fetcher)return this.fetcher;if(typeof globalThis.fetch==`function`)return globalThis.fetch.bind(globalThis);throw new qO(`conversation_http_error`,`No fetch implementation is available for the conversation client.`)}url(e){return`${this.baseUrl}${e}`}async request(e,t,n,r=`conversation_stream_error`){Mk(n);try{return await this.fetch()(e,t)}catch(e){throw e instanceof qO?e:(Nk(e,n)&&Mk(n),new qO(r,`Conversation network request failed.`,{cause:e}))}}assertOk(e){if(!e.ok)throw new qO(`conversation_http_error`,`Conversation endpoint returned HTTP ${e.status}.`,{status:e.status})}async getSurface(e,t,n={}){if(!e||!t)throw new qO(`conversation_contract_mismatch`,`Agent and session identities are required to get a conversation surface.`);let r=n.signal?{signal:n.signal}:void 0,i=await this.request(this.url(`/api/v1/agents/${encodeURIComponent(e)}/conversation-surface?sessionId=${encodeURIComponent(t)}`),r,n.signal,`conversation_http_error`);this.assertOk(i);let a;try{a=await i.json()}catch(e){throw new qO(`conversation_contract_mismatch`,`Conversation surface response is not valid JSON.`,{cause:e})}let o=jk(a),s=dk(o?.surface);if(!o||typeof o.buildId!=`string`||!o.buildId||!s)throw new qO(`conversation_contract_mismatch`,`Conversation surface response does not match conversation.ksadk.io/v1.`);return{buildId:o.buildId,surface:s}}async streamTurn(e){Mk(e.signal),ck(e.bootstrap.surface,e.input);let t={cursor:0,runId:``,reducer:new kk,options:e},n={method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":e.input.idempotencyKey},body:JSON.stringify({input:e.input}),...e.signal?{signal:e.signal}:{}},r=await this.request(this.url(`/api/v1/builds/${encodeURIComponent(e.bootstrap.buildId)}/conversation:stream`),n,e.signal);this.assertOk(r);try{await Bk(r,t)}catch(e){if(!(e instanceof qO)||e.code!==`conversation_stream_error`||!t.runId)throw e}let i=Rk(t.reducer,t.cursor,t.runId);if(Vk(i))return i;if(!t.runId)throw new qO(`conversation_run_identity_missing`,`The stream ended before a canonical item supplied its run identity.`,{cursor:t.cursor});for(let n=1;n<=this.maxReconnects;n+=1){await Lk(this.sleep,this.retryDelayMs(n),e.signal),Mk(e.signal);let r;try{r=await this.request(this.url(`/api/v1/runs/${encodeURIComponent(t.runId)}/events?after=${t.cursor}`),{method:`GET`,headers:{"Last-Event-ID":String(t.cursor)},...e.signal?{signal:e.signal}:{}},e.signal),this.assertOk(r),await Bk(r,t)}catch(e){if(e instanceof qO&&e.code===`conversation_aborted`||e instanceof qO&&e.code===`conversation_contract_mismatch`||e instanceof qO&&e.code===`conversation_http_error`&&e.status!==void 0&&e.status<500)throw e;continue}if(i=Rk(t.reducer,t.cursor,t.runId),Vk(i))return i}throw new qO(`conversation_reconnect_exhausted`,`Conversation replay stopped after the configured reconnect limit.`,{runId:t.runId,cursor:t.cursor})}},Uk=new Set([`completed`,`failed`,`error`,`cancelled`,`canceled`,`aborted`,`interrupted`,`resume_failed`]);function Wk(e){if(e.EventType!==`run_status`)return null;let t=String(e.Content?.status||``).trim().toLowerCase();return Uk.has(t)?t:null}function Gk(e,t){let n=String(t?.type||e||``).trim();if(n===`response.created`)return{phase:`运行已创建`,status:`running`};if(n===`response.in_progress`)return{phase:`等待运行时输出`,status:`waiting`};if(n===`response.output_item.added`){let e=t?.item;return e?.type===`function_call`?{phase:`调用工具 ${e.name||`tool`}`,status:`running`}:String(e?.type||``).includes(`reasoning`)?{phase:`生成思考过程`,status:`running`}:{phase:`生成回复内容`,status:`running`}}return n.includes(`reasoning`)?{phase:`生成思考过程`,status:`running`}:n.includes(`function_call`)||n===`response.tool_call`?{phase:`调用工具`,status:`running`}:n.includes(`tool_result`)?{phase:`收到工具结果`,status:`running`}:n.includes(`output_text`)||n.includes(`content_part`)?{phase:`生成回复内容`,status:`running`}:n===`response.completed`?{phase:`运行完成`,status:`completed`}:n===`response.failed`?{phase:`运行失败`,status:`failed`}:n===`response.incomplete`?{phase:`运行中断`,status:`failed`}:null}function Kk(){let e=globalThis.crypto;return e&&typeof e.randomUUID==`function`?`run_${e.randomUUID()}`:`run_${Date.now()}_${Math.random().toString(16).slice(2)}`}var qk={idle:[`creating-session`,`uploading-files`,`connecting`,`error`],"creating-session":[`uploading-files`,`connecting`,`error`,`idle`],"uploading-files":[`connecting`,`error`,`idle`],connecting:[`streaming`,`error`,`idle`],streaming:[`completing`,`stopping`,`recovering`,`error`],stopping:[`cancelled`,`idle`],completing:[`idle`],recovering:[`streaming`,`error`,`idle`],error:[`connecting`,`idle`],cancelled:[`idle`]},Jk=class{_stage=`idle`;listeners=new Set;abortController=null;activeCompactionId=null;activeSessionId=null;aguiClient=null;aguiThreadSessionId=null;api;controlStateValue={phase:`idle`};lastControlCommand=null;config={agentId:`default-agent`,apiFormats:[`responses`],agentFramework:``,selectedModel:``,thinkingMode:`auto`};constructor(e){this.api=e}get stage(){return this._stage}get controlState(){return this.controlStateValue}async submitControl(e){this.lastControlCommand=e;let t;try{t=Kc(await this.api.submitControl(e))}catch(e){if(e instanceof Uc)return this.controlStateValue={phase:`contract_mismatch`,error:null,receipt:null},this.emit({type:`system_message`,content:`【系统提示】控制指令响应不符合 agent-kernel/v1 合同,已停止变更本地状态。`}),this.controlStateValue;throw e}return this.controlStateValue=this.controlStateFor(t,e),t.status===`accepted`||t.status===`duplicate`?this.emit({type:`activity`,phase:`指令已入队,等待运行时处理`,status:`waiting`,countEvent:!1}):t.status===`queue_full`?this.emit({type:`system_message`,content:`【系统提示】指令队列已满,可点击重试;重试将复用同一幂等键。`}):t.status===`unsupported`?this.emit({type:`system_message`,content:`【系统提示】运行时不支持该操作:${t.error?.message||``}`}):t.status===`persistence_uncertain`?this.emit({type:`system_message`,content:`【系统提示】指令提交结果待确认,正在查询状态…`}):t.status===`rejected`&&this.emit({type:`system_message`,content:`【系统提示】指令被拒绝:${t.error?.message||``}`}),this.controlStateValue}controlStateFor(e,t){switch(e.status){case`accepted`:case`duplicate`:return{phase:`queued`,receipt:e,error:null};case`queue_full`:return{phase:`retryable`,retryKey:t.idempotency_key,receipt:e,error:e.error};case`unsupported`:return{phase:`unsupported`,receipt:e,error:e.error};case`persistence_uncertain`:return{phase:`confirming`,retryKey:t.idempotency_key,receipt:e,error:e.error};default:return{phase:`rejected`,receipt:e,error:e.error}}}async retryControl(){let e=this.lastControlCommand;if(!e||this.controlStateValue.phase!==`retryable`&&this.controlStateValue.phase!==`confirming`)return this.controlStateValue;if(this.controlStateValue.phase===`confirming`)try{await this.api.getAgentStatus()}catch(e){console.warn(`[RunEngine] status query after persistence_uncertain failed:`,e)}return this.submitControl(e)}updateConfig(e){this.config={...e,apiFormats:[...e.apiFormats]}}emit(e){let t=`sessionId`in e?e:{...e,sessionId:this.activeSessionId};for(let e of this.listeners)e(t)}getAguiClient(e){let t=this.config.hostedChatTransport;return t?.Protocol!==`ag-ui`||!t.Endpoint?null:((!this.aguiClient||this.aguiThreadSessionId!==e)&&(this.aguiClient=new Ute({url:t.Endpoint,agentId:this.config.agentId,threadId:e,onEvent:e=>this.emit(e)}),this.aguiThreadSessionId=e),this.aguiClient)}setStage(e){let t=qk[this._stage];t&&!t.includes(e)&&console.warn(`[RunEngine] Invalid transition: ${this._stage} → ${e}`),this._stage=e,this.emit({type:`stage_changed`,stage:e})}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}start(e){if(this._stage!==`idle`)return!1;this.abortController=new AbortController;let t=e.responsesInput!==void 0;return(async()=>{let n=e.sessionId||null;try{n||=await this.createSession(e),n||=`default-session-${Date.now()}`,this.activeSessionId=n;let r=Kk();D.getState().setCurrentRunId(r),D.getState().setActiveInvocationId(r),D.getState().setLastSeqId(0);let i=t?null:await this.getConversationBootstrap(n);if(i&&this.config.conversationClient){let t=await this.buildCanonicalConversationInput(i,n,r,e);if(this.setStage(`connecting`),this.emit({type:`activity`,phase:`连接会话运行时`,status:`connecting`,countEvent:!1}),this.setStage(`streaming`),this.emit({type:`activity`,phase:`等待会话输出`,status:`waiting`,countEvent:!1}),(await this.config.conversationClient.streamTurn({bootstrap:i,input:t,signal:this.abortController?.signal,onUpdate:e=>{e.runId&&(D.getState().setCurrentRunId(e.runId),D.getState().setActiveInvocationId(e.runId)),this.emit({type:`conversation_snapshot`,result:e,sessionId:n})}})).presentation.terminalStatus===`failed`){this.setStage(`error`),this.emit({type:`activity`,phase:`运行失败`,status:`failed`,countEvent:!1});return}this.setStage(`completing`),this.emit({type:`activity`,phase:`运行完成`,status:`completed`,countEvent:!1}),this.emit({type:`stream_ended`});return}let a=await this.uploadFiles(e,t);this.setStage(`connecting`),this.emit({type:`activity`,phase:`连接运行时`,status:`connecting`,countEvent:!1});let o=t?`responses`:Cl({agentFramework:this.config.agentFramework,apiFormats:this.config.apiFormats}),s=gl(o),c=s.createState(),l=this.config.hostedChatTransport,u=!t&&!e.executionMode&&e.attachments.length===0&&l?.Protocol===`ag-ui`?this.getAguiClient(n):null;if(u&&l){this.setStage(`streaming`),this.emit({type:`activity`,phase:`等待 AG-UI 输出`,status:`waiting`,countEvent:!1});let t=await u.run(e.text,r,this.abortController?.signal);if(t.status===`interrupted`){this.setStage(`completing`),this.emit({type:`stream_ended`});return}if(t.status!==`completed`){this.setStage(`error`),this.emit({type:`activity`,phase:`AG-UI 运行失败`,status:`failed`,countEvent:!1});return}this.setStage(`completing`),this.emit({type:`activity`,phase:`运行完成`,status:`completed`,countEvent:!1}),this.emit({type:`stream_ended`});return}let d=this.buildRequestBody(n,o,t,e,a,r),f=await this.api.runAgent(d,{signal:this.abortController?.signal});this.setStage(`streaming`),this.emit({type:`activity`,phase:`等待首个输出`,status:`waiting`,countEvent:!1});let p=`msg-${Date.now()}`,m=await Fl(f),h;if(h=m.receipt?await this.consumeKernelRunEvents(n,r,m.receipt,p):await this.consumeStream(m.stream,s,c,p,r),h.terminalStatus===`cancelled`){this.setStage(`stopping`),D.getState().stopActivity(`运行时已取消本次执行。`),this.emit({type:`activity`,phase:`运行已取消`,status:`stopped`,countEvent:!1}),this.setStage(`cancelled`);return}if(h.terminalStatus&&h.terminalStatus!==`completed`){this.setStage(`error`),this.emit({type:`activity`,phase:h.terminalStatus===`incomplete`?`运行中断`:`运行失败`,status:`failed`,countEvent:!1});return}this.setStage(`completing`),this.emit({type:`activity`,phase:`运行完成`,status:`completed`,countEvent:!1}),this.emit({type:`stream_ended`})}catch(e){if(this.failCompaction(),!(e instanceof DOMException&&e.name===`AbortError`||e instanceof qO&&e.code===`conversation_aborted`))if(console.error(`[RunEngine] start() error:`,e),e instanceof TypeError&&e.message.includes(`fetch`)){this.setStage(`recovering`),this.emit({type:`activity`,phase:`网络异常,尝试重连`,status:`waiting`,countEvent:!1});let e=D.getState().lastSeqId,t=D.getState().activeInvocationId;if(e>0&&t&&this.activeSessionId)try{this.resumeRun({sessionId:this.activeSessionId,invocationId:t,afterSeqId:e});return}catch(e){console.warn(`[RunEngine] afterSeqId resume failed, fall back to error:`,e)}}else e instanceof Ht&&e.code===429?(this.setStage(`error`),this.emit({type:`rate_limited`,message:e.message||`请求过于频繁,请稍后重试`,sessionId:n})):(this.setStage(`error`),this.emit({type:`error`,error:e instanceof Error?e:Error(String(e))}))}finally{D.getState().setSessionStreaming(n,!1),this.setStage(`idle`),this.activeCompactionId=null,this.activeSessionId=null,e.onSettled?.(n)}})(),!0}stop(){if(this._stage===`idle`)return;this.setStage(`stopping`);let e=D.getState().currentRunId;e&&this.activeSessionId&&this.api.cancelRun(this.config.agentId,this.activeSessionId,e).catch(e=>{console.warn(`[RunEngine] cancelRun on stop failed:`,e)}),this.abortController?.abort(),this.aguiClient?.abort(),D.getState().stopActivity(e?`已向运行时发送取消请求;如果当前框架只支持协作式取消,后台可能会在下一个安全点停止。`:void 0),D.getState().setCurrentRunId(``),this.setStage(`cancelled`),this.emit({type:`system_message`,content:e?`已请求取消本次运行。`:`已停止接收本次输出;如果运行时不支持取消,后台执行可能仍会继续。`})}disconnect(){this._stage!==`idle`&&(this.abortController?.abort(),this.aguiClient?.abort(),D.getState().setSessionStreaming(this.activeSessionId,!1),D.getState().clearActivity(),this._stage=`idle`,this.activeCompactionId=null,this.activeSessionId=null)}async cancelRemote(e){try{this.activeSessionId&&await this.api.cancelRun(this.config.agentId,this.activeSessionId,e)}catch(e){console.warn(`[RunEngine] cancelRemote failed:`,e)}this.stop()}resumeRun(e){this.abortController?.abort(),this.abortController=new AbortController,this.activeSessionId=e.sessionId,D.getState().setCurrentRunId(e.invocationId),this.setStage(`connecting`),this.emit({type:`activity`,phase:`恢复运行事件订阅`,status:`connecting`,countEvent:!1}),(async()=>{let t=null;try{let n=await this.api.subscribeRunEvents({sessionId:e.sessionId,invocationId:e.invocationId,afterSeqId:e.afterSeqId},{signal:this.abortController?.signal});this.setStage(`streaming`),this.emit({type:`activity`,phase:`等待恢复事件`,status:`waiting`,countEvent:!1});let r=n.getReader(),i=new TextDecoder,a=``;for(;;){let{value:e,done:n}=await r.read();if(n)break;a+=i.decode(e,{stream:!0});let{chunks:o,remainder:s}=yl(a);a=s;for(let e of o){if(!e.trim())continue;let n=vl(e);for(let e of n)e.eventName===`__done__`||e.eventName===`__ping__`||(this.emit({type:`activity`,phase:`收到恢复事件`,status:`running`}),this.emit({type:`stream_event`,event:e.data}),t=Wk(e.data)||t)}}this.setStage(`completing`),t===`cancelled`||t===`canceled`||t===`aborted`?this.emit({type:`activity`,phase:`后台长任务已取消`,status:`stopped`,countEvent:!1}):t===`interrupted`?this.emit({type:`activity`,phase:`后台长任务已中断`,status:`stopped`,countEvent:!1}):t===`failed`||t===`error`?this.emit({type:`activity`,phase:`后台长任务失败`,status:`failed`,countEvent:!1}):t===`resume_failed`?this.emit({type:`activity`,phase:`后台长任务恢复失败`,status:`failed`,countEvent:!1}):this.emit({type:`activity`,phase:`后台长任务已完成`,status:`completed`,countEvent:!1}),this.emit({type:`stream_ended`}),e.onSessionReloadNeeded?.()}catch(e){e instanceof DOMException&&e.name===`AbortError`||console.error(`Failed to subscribe to run events:`,e)}finally{D.getState().setSessionStreaming(e.sessionId,!1),D.getState().setCurrentRunId(``),this.setStage(`idle`),this.activeSessionId=null}})()}resumeCheckpoint(e){if(this._stage!==`idle`)return!1;this.abortController=new AbortController,this.activeSessionId=e.sessionId;let t=Kk();return D.getState().setCurrentRunId(t),(async()=>{try{if(this.setStage(`connecting`),this.emit({type:`activity`,source:`restore`,phase:`从 checkpoint 恢复运行`,status:`connecting`,countEvent:!1}),this.config.checkpointResumePreviewEnabled)try{let t=(await this.api.previewCheckpointResume({agentId:this.config.agentId,sessionId:e.sessionId,runId:e.runId,checkpointId:e.checkpointId},{signal:this.abortController?.signal})).Preview?.Risk?.Level||`unknown`;this.emit({type:`activity`,source:`restore`,phase:`恢复预览完成:${String(t)} 风险`,status:`waiting`,countEvent:!1})}catch(e){console.warn(`[RunEngine] checkpoint resume preview failed:`,e)}let n=await this.api.resumeRun({agentId:this.config.agentId,sessionId:e.sessionId,runId:e.runId,checkpointId:e.checkpointId,resumeAttemptId:e.resumeAttemptId,invocationId:t},{signal:this.abortController?.signal}),r=gl(`responses`),i=r.createState();this.setStage(`streaming`),this.emit({type:`activity`,source:`restore`,phase:`等待恢复输出`,status:`waiting`,countEvent:!1});let a=`msg-${Date.now()}`,o=await this.consumeStream(n,r,i,a,t);if(o.terminalStatus&&o.terminalStatus!==`completed`){if(o.terminalStatus===`cancelled`){this.setStage(`stopping`),D.getState().stopActivity(`运行时已取消本次恢复。`),this.emit({type:`activity`,source:`restore`,phase:`恢复已取消`,status:`stopped`,countEvent:!1}),this.setStage(`cancelled`);return}this.setStage(`error`),this.emit({type:`activity`,source:`restore`,phase:o.terminalStatus===`incomplete`?`恢复中断`:`恢复失败`,status:`failed`,countEvent:!1});return}this.setStage(`completing`),this.emit({type:`activity`,source:`restore`,phase:`恢复完成`,status:`completed`,countEvent:!1}),this.emit({type:`stream_ended`})}catch(e){e instanceof DOMException&&e.name===`AbortError`||(console.error(`[RunEngine] resumeCheckpoint() error:`,e),this.setStage(`error`),this.emit({type:`error`,error:e instanceof Error?e:Error(String(e))}))}finally{D.getState().setSessionStreaming(e.sessionId,!1),D.getState().setCurrentRunId(``),this.setStage(`idle`),this.activeSessionId=null,e.onSettled?.(e.sessionId)}})(),!0}resumeAguiInterrupt(e){if(this._stage!==`idle`)return!1;let t=e.sessionId||this.aguiThreadSessionId;if(!t)return!1;let n=this.getAguiClient(t);if(!n)return!1;this.activeSessionId=t;let r=Kk();return D.getState().setCurrentRunId(r),this.setStage(`connecting`),this.emit({type:`activity`,phase:`提交人工确认`,status:`connecting`,countEvent:!1}),(async()=>{try{this.setStage(`streaming`);let t=await n.resume(r,{interruptId:e.interruptId,status:e.status,payload:e.payload}),i=e.payload&&typeof e.payload==`object`?e.payload:{},a=String(i.decision||i.type||``).toLowerCase();if(this.emit({type:`approval_resolved`,approvalRequestId:e.interruptId,decision:e.status===`cancelled`||a===`reject`||a===`rejected`?`rejected`:`approved`}),t.status===`interrupted`){this.setStage(`completing`),this.emit({type:`stream_ended`});return}if(t.status!==`completed`){this.setStage(`error`),this.emit({type:`activity`,phase:`人工确认恢复失败`,status:`failed`,countEvent:!1});return}this.setStage(`completing`),this.emit({type:`activity`,phase:`运行完成`,status:`completed`,countEvent:!1}),this.emit({type:`stream_ended`})}catch(e){this.setStage(`error`),this.emit({type:`error`,error:e instanceof Error?e:Error(String(e))})}finally{D.getState().setCurrentRunId(``),this.setStage(`idle`),this.activeSessionId=null,e.onSettled?.(t)}})(),!0}async createSession(e){this.setStage(`creating-session`);try{let t=(await this.api.createSession(this.config.agentId,{signal:this.abortController?.signal})).SessionId||null;return t&&(e.onSessionCreated?.(t),e.onSessionUpsert?.(t)),t}catch(e){return e instanceof DOMException&&e.name===`AbortError`||console.error(`Failed to create session:`,e),null}}async getConversationBootstrap(e){let t=this.config.conversationClient;if(!t)return null;try{return await t.getSurface(this.config.agentId,e,{signal:this.abortController?.signal})}catch(e){if(e instanceof qO&&e.code===`conversation_http_error`&&e.status===404)return null;throw e}}async buildCanonicalConversationInput(e,t,n,r){let i=[],a=r.text.trim();a&&i.push({kind:`text`,text:a});for(let t of r.attachments){let n=t.type.startsWith(`image/`)?`attachment.image`:`attachment.file`;if(!pk(e.surface,n))throw new qO(`conversation_input_unsupported`,`Conversation attachment is not declared by the active surface.`,{capability:n})}r.attachments.length>0&&i.push(...await this.uploadCanonicalAttachments(r.attachments));let o=Lt(this.config.thinkingMode),s=ok({inputId:`input:${n}`,sessionId:t,idempotencyKey:`conversation:${n}`,parts:i,...this.config.selectedModel&&pk(e.surface,`model.select`)?{modelRef:this.config.selectedModel}:{},...o!==`auto`&&pk(e.surface,`reasoning.effort`)?{reasoning:o}:{},extensions:{...this.config.permissionMode&&pk(e.surface,`approval`)?{"ksadk.approval":this.config.permissionMode}:{},...r.executionMode===`plan`?{"ksadk.collaboration":`plan`}:{},...r.executionMode===`goal`&&a?{"ksadk.goal":a}:{}}});return ck(e.surface,s)}async uploadCanonicalAttachments(e){this.setStage(`uploading-files`);let t=[];for(let n of e){if(n.size>100*1024*1024)throw new qO(`conversation_input_unsupported`,`Conversation attachment exceeds the Hosted UI upload limit.`,{capability:n.type.startsWith(`image/`)?`attachment.image`:`attachment.file`});let e=new FormData;e.append(`file`,n),e.append(`AgentId`,this.config.agentId);let r;try{r=await this.api.uploadFile(e,{signal:this.abortController?.signal})}catch(e){throw new qO(`conversation_http_error`,`Conversation attachment upload failed.`,{cause:e})}let i=r?.FileData?.fileUri;if(!i)throw new qO(`conversation_contract_mismatch`,`Conversation attachment upload did not return an attachment reference.`);t.push({kind:`attachment`,attachmentRef:i,mediaType:r.FileData.mimeType||n.type||`application/octet-stream`,name:r.FileData.displayName||n.name})}return t}async uploadFiles(e,t){let n=[];if(t||e.attachments.length===0)return n;this.setStage(`uploading-files`);for(let t of e.attachments){if(t.size>100*1024*1024){this.emit({type:`system_message`,content:`【系统提示】文件 ${t.name} 超过 100MB 限制,未发送。`});continue}if(t.type.startsWith(`image/`)){try{n.push({type:`input_image`,image_url:await this.imageFileToDataUrl(t)})}catch(e){this.emit({type:`system_message`,content:`【系统提示】图片 ${t.name} 读取失败,原因: ${bl(e)}`})}continue}let e=new FormData;e.append(`file`,t),e.append(`AgentId`,this.config.agentId);try{let r=await this.api.uploadFile(e,{signal:this.abortController?.signal});r?.FileData?.fileUri&&n.push({type:`input_file`,filename:r.FileData.displayName||t.name,file_url:r.FileData.fileUri})}catch(e){this.emit({type:`system_message`,content:`【系统提示】文件 ${t.name} 上传失败,原因: ${bl(e)}`})}}return n}async imageFileToDataUrl(e){let t=new Uint8Array(await e.arrayBuffer()),n=``,r=32768;for(let e=0;e0&&D.getState().setLastSeqId(o),r&&(this.emit({type:`stream_event`,event:r,sessionId:e}),r.EventType===`run_status`)){let e=String(r.Content?.status||``).toLowerCase();e!==`interrupted`&&Uk.has(e)&&(a=e)}}}a===void 0&&await new Promise(e=>setTimeout(e,3e3))}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)return{terminalStatus:`cancelled`};if(o+=1,o>=6)break;await new Promise(e=>setTimeout(e,800*o))}return a===void 0&&(a=`interrupted`),{terminalStatus:a}}async consumeStream(e,t,n,r,i){let a=e.getReader(),o=new TextDecoder,s=``,c=!1;try{for(;;){let{value:e,done:l}=await a.read();if(l)break;c||(c=!0,this.emit({type:`assistant_message_created`,messageId:r,invocationId:i})),s+=o.decode(e,{stream:!0});let{chunks:u,remainder:d}=yl(s);s=d;for(let e of u){if(!e.trim())continue;if(this.isCompactionChunk(e)){let t=vl(e);for(let e of t)e.eventName.startsWith(`response.compaction`)&&this.upsertCompactionMessage({...e.data,phase:e.eventName.split(`.`).pop()});continue}let i=vl(e),o=!1,s;for(let e of i){if(e.eventName===`__done__`){o=!0;continue}let i=Gk(e.eventName,e.data);i&&this.emit({type:`activity`,...i});let a=t.parse(e,n);for(let e of a)this.dispatchAction(e,r);if(_l(a)){o=!0;let e=a.find(e=>e.type===`terminal`);s=e&&`status`in e?String(e.status||``):void 0}}if(o)return a.cancel().catch(()=>{}),{terminalStatus:s}}}}catch(e){if(!(e instanceof DOMException&&e.name===`AbortError`))throw e}return{}}isCompactionChunk(e){return e.includes(`response.compaction.start`)||e.includes(`response.compaction.done`)||e.includes(`response.compaction.failed`)}dispatchAction(e,t){switch(e.type){case`text_delta`:this.emit({type:`text_delta`,messageId:t,delta:e.text});break;case`text_final`:this.emit({type:`text_final`,messageId:t,text:e.text});break;case`reasoning_delta`:this.emit({type:`reasoning_delta`,messageId:t,delta:e.text});break;case`tool_upsert`:this.emit({type:`tool_upsert`,messageId:t,name:e.name,args:e.args,status:e.status,extra:e.extra});break;case`tool_result`:this.emit({type:`tool_result`,messageId:t,name:e.name,output:e.output});break;case`approval_request`:this.emit({type:`approval_requested`,messageId:t,approvalRequestId:e.approvalRequestId,protocol:`responses`,name:e.name||`人工确认`,args:e.args||``,message:e.message||`本次运行需要人工审批后才能继续。`});break;case`incomplete`:break;case`failed`:this.emit({type:`text_final`,messageId:t,text:`生成失败:${e.message}`});break;case`terminal`:this.emit({type:`terminal`,status:e.status});break;case`compaction`:this.emit({type:`compaction`,phase:e.phase,trigger:e.trigger,compactedUntilSeqId:e.compactedUntilSeqId});break;case`a2ui_surface_begin`:this.emit({type:`a2ui_surface_begin`,surfaceId:e.surfaceId,surface:e.surface});break;case`a2ui_surface_update`:this.emit({type:`a2ui_surface_update`,surfaceId:e.surfaceId,surface:e.surface});break;case`a2ui_surface_end`:this.emit({type:`a2ui_surface_end`,surfaceId:e.surfaceId});break;case`a2ui_interaction`:this.emit({type:`a2ui_interaction`,surfaceId:e.surfaceId,interactionId:e.interactionId,kind:e.kind,inputSchema:e.inputSchema});break}}upsertCompactionMessage(e){let t=typeof e.eventName==`string`?e.eventName.split(`.`).pop():void 0,n=String(e.phase||t||`start`);this.emit({type:`compaction`,phase:n,trigger:e.trigger?String(e.trigger):void 0,compactedUntilSeqId:e.compacted_until_seq_id?Number(e.compacted_until_seq_id):void 0}),n!==`start`&&(this.activeCompactionId=null)}failCompaction(){this.activeCompactionId&&=(this.emit({type:`compaction`,phase:`failed`}),null)}},Yk=0;function Xk(e){return Yk+=1,`${e}-${Yk}`}function Zk(e){return e.map(e=>e.type===`thinking`&&e.status===`streaming`?{...e,status:`done`}:e)}function Qk(e,t){let n=[...e??[]],r=n[n.length-1];return r?.type===`thinking`&&r.status===`streaming`?(n[n.length-1]={...r,content:r.content+t},n):[...n,{id:Xk(`thinking`),type:`thinking`,content:t,status:`streaming`}]}function $k(e,t){let n=[...Zk(e??[])],r=n[n.length-1];return r?.type===`text`&&r.status===`streaming`?(n[n.length-1]={...r,content:r.content+t},n):[...n,{id:Xk(`text`),type:`text`,content:t,status:`streaming`}]}function eA(e,t){let n=Zk(e??[]);if(n.filter(e=>e.type===`text`).map(e=>e.content).join(``)===t)return n.map(e=>e.type===`text`&&e.status===`streaming`?{...e,status:`done`}:e);let r=[...n],i=r.map(e=>e.type).lastIndexOf(`text`);return i>=0&&r[i].type===`text`?(r[i]={...r[i],content:t,status:`done`},r):[...r,{id:Xk(`text`),type:`text`,content:t,status:`done`}]}function tA(e,t,n){let r=[...Zk(e??[])],i=r.findIndex(e=>e.type===`tool`&&e.toolName===t);if(i>=0&&r[i].type===`tool`){let e=r[i],t=e.status===`error`||e.status===`completed`,a=n.output!==void 0,o=n.extra&&(n.extra.approvalRequestId||n.extra.approvalStatus);if(t&&!a&&!o)return r;let s=n.extra??e.extra;return r[i]={...e,...n,extra:s},r}return[...r,{id:Xk(`tool`),type:`tool`,toolName:t,args:n.args??``,output:n.output,status:n.status??`running`,extra:n.extra}]}function nA(e){return Zk(e??[])}function rA(e){let t=[];if(e.reasoning&&e.reasoning.trim()&&t.push({id:Xk(`thinking`),type:`thinking`,content:e.reasoning,status:`done`}),e.tools)for(let n of Object.values(e.tools))t.push({id:Xk(`tool`),type:`tool`,toolName:n.name,args:n.args??``,output:n.output,status:n.status??`completed`});return e.content&&e.content.trim()&&t.push({id:Xk(`text`),type:`text`,content:e.content,status:`done`}),t}var iA=new Set([`resolved`,`cancelled`,`expired`]);function aA(e){return iA.has(e)}function oA(e,t){return`interaction:${e}:revision-${t}`}function sA(e,t){let n=t.approved;if(typeof n==`boolean`)return n?`已同意`:`已拒绝`;let r=Object.keys(t);return r.length===0?e===`approve`?`已同意`:e===`reject`?`已拒绝`:e===`cancel`?`已取消`:`已提交`:`${e}(${r.slice(0,3).map(e=>{let n=t[e];return`${e}=${typeof n==`string`?n.length>24?`${n.slice(0,24)}…`:n:typeof n==`object`&&n?`[object]`:String(n)}`}).join(`, `)})`}var cA=class{records=new Map;listeners=new Set;key(e,t){return`${e}${t}`}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}emit(e){for(let t of this.listeners)t(e)}get(e,t){return this.records.get(this.key(e,t))||null}listPending(e){return this.listAll(e).filter(e=>e.status===`pending`)}listAll(e){return this.all().filter(t=>t.sessionId===e)}all(){return[...this.records.values()].sort((e,t)=>String(e.createdAt).localeCompare(String(t.createdAt)))}upsert(e){let t=this.get(e.sessionId,e.interactionId),n,r;return t?aA(t.status)&&!aA(e.status)||e.revisiont.interactionId===e)||null}async respond(e){let t=this.findByInteractionId(e.interactionId);if(!t)return uA(`rejected`,e.interactionId);if(t.status===`resolved`||t.status===`cancelled`||t.status===`expired`||t.status===`resolving`)return uA(`duplicate`,e.interactionId);let n=e.idempotencyKey||oA(e.interactionId,e.expectedRevision),r=this.inFlight.get(e.interactionId);if(r)return uA(r===n?`duplicate`:`rejected`,e.interactionId);this.inFlight.set(e.interactionId,n),this.store.markResolving(t.sessionId,e.interactionId);let i=this.deps.interactionV1Enabled||t.source===`interaction_v1`;try{if(!i&&t.source===`responses`&&this.deps.legacyResponsesApproval)return this.deps.legacyResponsesApproval(e.interactionId,e.action===`approve`),this.resolveLocal(t,e,n),uA(`accepted`,e.interactionId);if(!i&&t.source===`agui`&&this.deps.legacyAguiResume)return this.deps.legacyAguiResume(String(t.extensions.interrupt_id||e.interactionId),e.action===`cancel`?`cancelled`:`resolved`,e.response)?(this.resolveLocal(t,e,n),uA(`accepted`,e.interactionId)):(this.store.revertToPending(t.sessionId,e.interactionId),uA(`rejected`,e.interactionId));let r=Kc(await this.deps.submitInteraction({AgentId:this.deps.agentId,SessionId:t.sessionId,RunId:t.runId||``,InteractionId:e.interactionId,ExpectedRevision:e.expectedRevision,Action:e.action,Response:e.response,IdempotencyKey:n}));return r.status===`accepted`||r.status===`duplicate`?this.store.recordIdempotencyKey(t.sessionId,e.interactionId,n):r.status===`queue_full`?this.store.revertToPending(t.sessionId,e.interactionId):this.store.markFailed(t.sessionId,e.interactionId,{code:r.error?.code??String(r.status),message:r.error?.message??`提交未通过(${r.status})`,retryable:r.error?.retryable??!1}),r}finally{this.inFlight.delete(e.interactionId)}}resolveLocal(e,t,n){let r=t.action===`cancel`?`cancelled`:`resolved`;this.store.resolveLocally(e.sessionId,t.interactionId,{status:r,outcome:lA[t.action],actor:`user`,responseSummary:sA(t.action,t.response),revision:t.expectedRevision});let i=this.store.get(e.sessionId,t.interactionId);i&&this.store.upsert({...i,extensions:{...i.extensions,idempotency_key:n}})}},fA=new Set([`approval`,`structured_input`,`plan_review`,`custom`]),pA=new Set([`pending`,`resolving`,`failed`,`resolved`,`cancelled`,`expired`]),mA=new Set([`approved`,`rejected`,`submitted`,`cancelled`,`expired`]);function hA(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function gA(e){return typeof e==`string`&&e.length>0?e:null}function _A(e){let t=String(e.kind||`approval`),n=String(e.status||`pending`),r=String(e.outcome||``),i=hA(e.presentation),a=i?hA(i.a2ui):null;return{interactionId:e.interactionId,sessionId:e.sessionId,runId:gA(e.runId),kind:fA.has(t)?t:`custom`,title:typeof e.title==`string`&&e.title?e.title:`人工确认`,message:typeof e.message==`string`&&e.message?e.message:`本次运行需要人工处理后才能继续。`,requestSchema:hA(e.requestSchema),presentation:a?{a2ui:{wireVersion:String(a.wire_version??a.wireVersion??``),catalogDigest:String(a.catalog_digest??a.catalogDigest??``),messages:Array.isArray(a.messages)?a.messages.filter(e=>typeof e==`object`):[]}}:null,status:pA.has(n)?n:`pending`,revision:Number.isFinite(Number(e.revision))&&Number(e.revision)>0?Number(e.revision):1,createdAt:gA(e.createdAt)||new Date().toISOString(),expiresAt:gA(e.expiresAt),resolvedAt:gA(e.resolvedAt),actor:gA(e.actor),outcome:mA.has(r)?r:null,responseSummary:gA(e.responseSummary),source:e.source,extensions:e.extensions||{}}}var vA=new Set([`interaction.requested`,`interaction_requested`,`ksadk.interaction/v1.requested`,`InteractionRequested`]),yA=new Set([`interaction.resolved`,`interaction_resolved`,`ksadk.interaction/v1.resolved`,`InteractionResolved`,`interaction.cancelled`,`interaction.cancel`,`interaction.expired`]);function bA(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function xA(e,t){let n=bA(e);if(!n)return null;let r=String(n.event_type||n.EventType||``).trim();if(!r)return null;let i=bA(n.payload??n.Content)||{},a=bA(i.interaction)||bA(i.Interaction)||bA(i.interaction_request)||i,o=String(a.interaction_id||a.InteractionId||i.interaction_id||i.InteractionId||``);if(!o)return null;let s=String(n.session_id||a.session_id||t||``);if(!s)return null;if(vA.has(r))return _A({interactionId:o,sessionId:s,runId:a.run_id??n.run_id,kind:a.kind??`approval`,title:a.title,message:a.message??a.description,requestSchema:a.request_schema??a.RequestSchema,presentation:a.presentation,status:`pending`,revision:a.revision??1,createdAt:a.created_at??n.timestamp,expiresAt:a.expires_at,source:`interaction_v1`,extensions:a.extensions});if(yA.has(r)){let e=r===`interaction.cancelled`||r===`interaction.cancel`?`cancelled`:r===`interaction.expired`?`expired`:`resolved`,t=String(i.outcome??a.outcome??a.status??``).toLowerCase(),c=String(i.action??a.action??``).toLowerCase(),l=t;l||=c===`approve`?`approved`:c===`reject`?`rejected`:c===`submit`?`submitted`:c===`cancel`||e===`cancelled`?`cancelled`:e===`expired`?`expired`:`submitted`;let u=e===`resolved`?`resolved`:e;return _A({interactionId:o,sessionId:s,runId:a.run_id??n.run_id,kind:a.kind,title:a.title,message:a.message,requestSchema:a.request_schema,presentation:a.presentation,status:u,revision:a.revision,createdAt:a.created_at??n.timestamp,expiresAt:a.expires_at,resolvedAt:i.resolved_at??a.resolved_at??n.timestamp,actor:i.actor??a.actor??n.actor_ref,outcome:l,responseSummary:i.response_summary??a.response_summary??(c?`${c}`:void 0),source:`interaction_v1`,extensions:a.extensions})}return null}function SA(e){return!e.approvalRequestId||!e.sessionId?null:_A({interactionId:e.approvalRequestId,sessionId:e.sessionId,runId:e.runId??null,kind:`approval`,title:e.name?`审批:${e.name}`:`人工确认`,message:e.message||`本次运行需要人工审批后才能继续。`,requestSchema:e.requestSchema??null,status:`pending`,revision:1,source:`responses`,extensions:e.approvalLevel?{approval_level:e.approvalLevel}:{}})}function CA(e){return!e.interruptId||!e.sessionId?null:_A({interactionId:e.interruptId,sessionId:e.sessionId,runId:e.runId??null,kind:`approval`,title:e.name?`确认:${e.name}`:`人工确认`,message:e.message||`本次运行需要人工确认后才能继续。`,requestSchema:e.requestSchema??null,status:`pending`,revision:1,source:`agui`,extensions:{interrupt_id:e.interruptId,...e.toolCallId?{tool_call_id:e.toolCallId}:{},...e.reason?{reason:e.reason}:{}}})}function wA(e){let t=typeof e==`object`&&e?e.components:null,n=Array.isArray(t)?t:[],r=[];for(let e of n)typeof e==`object`&&e&&typeof e.id==`string`&&r.push(e.id);return r.sort()}function TA(e){let t=wA(e).join(`|`),n=2166136261,r=16777619;for(let e=0;e>>0,n=Math.imul(n,16777619)>>>0,r=r+Math.imul(i+e,2246822507)>>>0}return`fnv1a-${n.toString(16)}-${r.toString(16)}`}function EA(e,t){if(!e)return DA(null);if(e.wireVersion!==`0.9.1`||!e.messages||e.messages.length===0)return DA(e);if(e.catalogDigest){let n=TA(t);if(e.catalogDigest!==n)return`json-schema-form`}return`a2ui`}function DA(e){return e&&OA(e)?`json-schema-form`:`basic-controls`}function OA(e){return e.messages.some(e=>{let t=e.inputSchema??e.input_schema??e.schema;return typeof t==`object`&&!!t})}var kA=new cA;function AA(e,t){let n=xA(e,t);return n&&kA.upsert(n),n}function jA(e){let t=e.sessionId||``;if(!t||!e.approvalRequestId)return null;let n=e.protocol===`ag-ui`?CA({interruptId:e.approvalRequestId,sessionId:t,name:e.name,message:e.message,reason:e.approvalLevel}):SA({approvalRequestId:e.approvalRequestId,sessionId:t,name:e.name,message:e.message,approvalLevel:e.approvalLevel});return n&&kA.upsert(n),n}var MA=[],NA=[];function PA(e){return typeof e==`string`?e.trim():``}function FA(e){let t=typeof e==`number`?e:Number(e);return Number.isFinite(t)?t:void 0}function IA(e){return typeof e==`string`||typeof e==`number`?e:void 0}function LA(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:void 0}function RA(e){return e!==null}function zA(e){return e!==null}function BA(e){return[...e].sort((e,t)=>{let n=t.seqId??-1,r=e.seqId??-1;return n===r?(Date.parse(String(t.timestamp||``))||0)-(Date.parse(String(e.timestamp||``))||0):n-r})}function VA(e){return[...e].sort((e,t)=>{let n=t.seqId??-1,r=e.seqId??-1;return n===r?(Date.parse(String(t.timestamp||``))||0)-(Date.parse(String(e.timestamp||``))||0):n-r})}function HA(e){return BA(e)[0]?.runId||``}function UA(e){let t=HA(e);return t?e.filter(e=>e.runId===t):[]}function WA(e){let t=LA(e);if(!t)return null;let n=LA(t.Metadata??t.metadata),r=LA(t.Content??t.content),i=PA(t.CheckpointId??t.checkpointId??t.checkpoint_id??n?.checkpoint_id??n?.checkpointId??r?.checkpoint_id??r?.checkpointId),a=PA(t.RunId??t.runId??t.run_id??n?.run_id??n?.runId??r?.run_id??r?.runId);return!i||!a?null:{checkpointId:i,runId:a,sessionId:PA(t.SessionId??t.sessionId??t.session_id)||void 0,invocationId:PA(t.InvocationId??t.invocationId??t.invocation_id)||void 0,seqId:FA(t.SeqId??t.seqId??t.seq_id),timestamp:IA(t.Timestamp??t.timestamp??t.CreatedAt??t.createdAt),framework:PA(t.Framework??t.framework??n?.framework??r?.framework)||void 0,frameworkRef:LA(t.FrameworkRef??t.frameworkRef??t.framework_ref??n?.framework_ref??n?.frameworkRef),phase:PA(t.Phase??t.phase??n?.phase??r?.phase)||void 0,stage:PA(t.Stage??t.stage??n?.stage??n?.title)||void 0,summary:PA(t.Summary??t.summary??n?.summary??n?.description)||void 0,nextAction:PA(t.NextAction??t.nextAction??t.next_action??n?.nextAction??n?.next_action)||void 0,status:PA(t.Status??t.status??n?.status??r?.status)||void 0,metadata:n}}function GA(e){let t=LA(e);if(!t)return null;let n=PA(t.ReceiptId??t.receiptId??t.receipt_id),r=PA(t.IdempotencyKey??t.idempotencyKey??t.idempotency_key),i=PA(t.ToolName??t.toolName??t.tool_name);return!n||!r||!i?null:{receiptId:n,idempotencyKey:r,toolName:i,toolCallId:PA(t.ToolCallId??t.toolCallId??t.tool_call_id)||void 0,runId:PA(t.RunId??t.runId??t.run_id)||void 0,checkpointId:PA(t.CheckpointId??t.checkpointId??t.checkpoint_id)||void 0,sessionId:PA(t.SessionId??t.sessionId??t.session_id)||void 0,invocationId:PA(t.InvocationId??t.invocationId??t.invocation_id)||void 0,seqId:FA(t.SeqId??t.seqId??t.seq_id),timestamp:IA(t.Timestamp??t.timestamp??t.CreatedAt??t.createdAt),status:PA(t.Status??t.status)||void 0,replayed:!!(t.Replayed??t.replayed),metadata:LA(t.Metadata??t.metadata)}}var KA=S()((e,t)=>({checkpointsBySessionId:{},toolReceiptsBySessionId:{},setSessionCheckpoints:(t,n)=>e(e=>({checkpointsBySessionId:{...e.checkpointsBySessionId,[t]:BA(UA(n.map(WA).filter(RA).map(e=>({...e,sessionId:e.sessionId||t}))))}})),upsertSessionCheckpoint:(t,n)=>{let r=WA(n);r&&e(e=>{let n=e.checkpointsBySessionId[t]||[];r.sessionId=r.sessionId||t;let i=new Map(n.map(e=>[e.checkpointId,e]));i.set(r.checkpointId,{...i.get(r.checkpointId),...r});let a=UA([...i.values()]);return{checkpointsBySessionId:{...e.checkpointsBySessionId,[t]:BA(a)}}})},getSessionCheckpoints:e=>{let n=String(e||``);return n&&t().checkpointsBySessionId[n]||MA},setSessionToolReceipts:(t,n)=>e(e=>({toolReceiptsBySessionId:{...e.toolReceiptsBySessionId,[t]:VA(n.map(GA).filter(zA).map(e=>({...e,sessionId:e.sessionId||t})))}})),getSessionToolReceipts:e=>{let n=String(e||``);return n&&t().toolReceiptsBySessionId[n]||NA},clearSessionCheckpoints:t=>e(e=>{let n=String(t||``);if(!n)return{checkpointsBySessionId:{},toolReceiptsBySessionId:{}};let r={...e.checkpointsBySessionId},i={...e.toolReceiptsBySessionId};return delete r[n],delete i[n],{checkpointsBySessionId:r,toolReceiptsBySessionId:i}})}));function qA(e){return String(e||``).replace(/\\u([0-9a-fA-F]{4})/g,(e,t)=>String.fromCharCode(Number.parseInt(t,16)))}function JA(e){let t=String(e||``).trim();for(let e=0;e<3;e+=1){if(!t)return t;let e=t[0],n=t[t.length-1];if(!(e===`{`&&n===`}`||e===`[`&&n===`]`||e===`"`&&n===`"`))return t.replace(/\\n/g,` +`).replace(/\\"/g,`"`);try{let e=JSON.parse(t);if(typeof e!=`string`)return YA(e);t=e.trim()}catch{return qA(t).replace(/\\n/g,` +`).replace(/\\"/g,`"`)}}return t}function YA(e){return typeof e==`string`?JA(e):Array.isArray(e)?e.map(e=>YA(e)):!e||typeof e!=`object`?e:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,YA(t)]))}function XA(e){return typeof e==`string`?JA(e):YA(e)}function ZA(e){return e===!1?!0:typeof e==`string`?e.trim().toLowerCase()===`false`:!1}function QA(e){return e===!0?!0:typeof e==`string`?e.trim().toLowerCase()===`true`:!1}function $A(e){return e==null||e===!1?!1:typeof e==`string`?e.trim().length>0:typeof e==`object`?Object.keys(e).length>0:!0}function ej(e){return String(e?.status||``).trim().toLowerCase()===`accepted_not_extracted`}function tj(e,t=0){if(!e||t>4)return!1;if(typeof e==`string`){let n=JA(e);return n!==e&&tj(n,t+1)}if(Array.isArray(e))return e.some(e=>tj(e,t+1));if(typeof e!=`object`||ej(e))return!1;if(ZA(e.ok)||ZA(e.success))return!0;let n=QA(e.ok)||QA(e.success),r=String(e.status||``).trim().toLowerCase();return!n&&[`error`,`failed`,`failure`].includes(r)||!n&&($A(e.error_type)||$A(e.error_message)||$A(e.error))?!0:Object.values(e).some(e=>tj(e,t+1))}function nj(e){return e==null||e===``?!1:tj(XA(e))}function rj(e){if(e==null||e===``)return``;let t=XA(e);return typeof t==`string`?t:JSON.stringify(t,null,2)}var ij=new Set([`completed`,`failed`,`error`,`cancelled`,`canceled`,`aborted`,`interrupted`,`resume_failed`]),aj=new Set([`tool_call`,`tool_result`,`stage_tool_call`,`stage_tool_result`]),oj={"run.started":`in_progress`,"run.progress":`in_progress`,"run.interrupted":`interrupted`,"run.completed":`completed`,"run.failed":`failed`,"run.canceled":`cancelled`};function sj(e){let t=e?.Content?.payload;return t&&typeof t==`object`?t:{}}function cj(e,t){let n=String(e||``),r=String(t||``);return n?!r||n.endsWith(r)?n:r.startsWith(n)?r:`${n}${r}`:r}function lj(e){let t=String(e?.EventType||``),n=sj(e);return oj[t]?{...e,EventType:`run_status`,Content:{status:String(n.status||oj[t]),...n.detail?{detail:String(n.detail)}:{}}}:t===`reasoning.delta`||t===`reasoning.completed`?{...e,EventType:`reasoning`,Content:{role:`model`,parts:[{text:String(n.text||``)}]}}:t===`tool.call.begin`?{...e,EventType:`tool_call`,Metadata:{...e.Metadata||{},tool_name:n.name,tool_args:n.args,tool_call_id:n.call_id},Content:{role:`model`,parts:[]}}:t===`tool.call.end`?{...e,EventType:`tool_result`,Metadata:{...e.Metadata||{},tool_name:n.name,tool_output:n.error||n.result,tool_call_id:n.call_id},Content:{role:`model`,parts:[]}}:e}function uj(e){let t=[],n=new Map;for(let r of Array.isArray(e)?e:[]){let e=String(r?.EventType||``);if(e===`text.delta`||e===`text.completed`){let e=String(r?.InvocationId||``).trim();if(!e)continue;let t=n.get(e);n.set(e,{event:r,text:cj(t?.text,sj(r).text)});continue}t.push(lj(r))}for(let{event:e,text:r}of n.values())t.push({...e,EventType:`assistant_stream_snapshot`,Content:{role:`model`,parts:[{text:r}]},Metadata:{...e.Metadata||{},stream_snapshot:!0}});return t.sort((e,t)=>Cj(e)-Cj(t))}function dj(e){let t=String(e?.EventType||``).trim(),n=sj(e);return String(e?.Content?.status||n.status||oj[t]||``).trim().toLowerCase()}function fj(e){return typeof e==`string`?e:Array.isArray(e)?e.map(e=>typeof e==`string`?e:e&&typeof e==`object`&&typeof e.text==`string`?e.text:``).join(``):``}function pj(e){let t=String(e||``).trim();return t?`/agentengine/api/v1/AttachmentContent?FileUri=${encodeURIComponent(t)}`:``}function mj(e){return String(e||``).match(/^data:([^;,]+)/)?.[1]||``}function hj(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return!n||!r||n===r?!0:n.endsWith(`/*`)?r.startsWith(n.slice(0,-1)):r.endsWith(`/*`)?n.startsWith(r.slice(0,-1)):!1}function gj(e){let t=e?.Content?.parts||[],n=[],r=new Map,i=e=>{let t=`${e.fileUri||e.url||e.name}|${e.type}`;r.has(t)||r.set(t,e)};for(let e of t){if(e?.type===`input_text`||e?.text){n.push(e.text||``);continue}if(e?.type===`input_file`&&e.inlineData){i({name:e.inlineData.displayName||`attachment`,url:`data:${e.inlineData.mimeType||`application/octet-stream`};base64,${e.inlineData.data}`,type:e.inlineData.mimeType||`application/octet-stream`});continue}if(e?.type===`input_file`&&typeof e.file_data==`string`&&e.file_data){i({name:e.filename||e.displayName||e.display_name||`attachment`,url:`data:${e.mime_type||e.mimeType||`application/octet-stream`};base64,${e.file_data}`,type:e.mime_type||e.mimeType||`application/octet-stream`});continue}if(e?.type===`input_file`&&typeof e.file_url==`string`&&e.file_url.trim()){let t=e.file_url.trim();i({name:e.filename||e.displayName||e.display_name||`attachment`,url:pj(t),type:e.mime_type||e.mimeType||`application/octet-stream`,fileUri:t});continue}if(e?.type===`input_image`||e?.type===`image_url`){let t=typeof e.image_url==`string`?e.image_url:e.image_url?.url;t&&i({name:e.filename||e.displayName||e.display_name||`uploaded_image`,url:t,type:e.mime_type||e.mimeType||mj(t)||`image/*`});continue}if(e?.type===`input_file`&&e.fileData){let t=String(e.fileData.fileUri||``).trim();i({name:e.fileData.displayName||`attachment`,url:pj(t),type:e.fileData.mimeType||`application/octet-stream`,fileUri:t})}}let a=Array.isArray(e?.Metadata?.attachments)?e.Metadata.attachments:[];for(let e of a){let t=String(e.file_uri||``).trim(),n={name:e.display_name||`attachment`,url:pj(t),type:e.mime_type||`application/octet-stream`,fileUri:t};!n.url&&!n.fileUri&&Array.from(r.values()).some(e=>e.name===n.name&&hj(e.type,n.type)&&(e.url||e.fileUri))||i(n)}let o=Array.from(r.values());return{text:n.join(``),attachments:o.length>0?o:void 0}}function _j(e){let t=e?.Metadata?.responses_output;if(!Array.isArray(t))return{};let n=Zc(),r=ll({eventName:`response.completed`,data:{response:{id:String(e.Metadata?.response_id||``),output:t}},state:n}),i=``,a={};for(let e of r){if(e.type===`reasoning_delta`){i+=e.text;continue}if(e.type===`tool_upsert`){a[e.name]={...a[e.name]||{name:e.name,args:``},name:e.name,args:e.args,status:e.status,...e.approvalRequestId?{approvalRequestId:e.approvalRequestId}:{},...e.previousResponseId?{previousResponseId:e.previousResponseId}:{},...e.serverLabel?{serverLabel:e.serverLabel}:{},...e.approvalRequestId?{approvalStatus:`pending`}:{}};continue}e.type===`tool_result`&&(a[e.name]={...a[e.name]||{name:e.name,args:``},name:e.name,output:e.output,status:nj(e.output)?`error`:`completed`})}return{...i?{reasoning:i}:{},...Object.keys(a).length>0?{tools:a}:{}}}function vj(e,t,n){return t===`running`?e===`prompt_too_long`?`检测到上下文过长,正在自动压缩历史后重试`:`正在自动压缩上下文`:n?e===`prompt_too_long`?`上下文过长,系统已自动压缩历史并重试`:`系统已自动压缩较早的对话上下文`:t===`failed`?`自动压缩上下文未完成`:e===`prompt_too_long`?`已完成上下文压缩,并继续当前回复`:`已完成上下文压缩`}function yj(e,t){return[e,t.content||``,t.reasoning||``].join(`\0`)}function bj(e){return e?.Metadata?.responses_mirror===!0||String(e?.Metadata?.responses_mirror||``).trim().toLowerCase()===`true`}function xj(e){if(e?.EventType!==`user_message`)return``;let t=gj(e),n=(t.attachments||[]).map(e=>[e.name||``,e.fileUri||``,e.url||``,e.type||``].join(``)).sort().join(``);return[String(t.text||``).trim(),n].join(`\0`)}function Sj(e){return e?.EventType===`assistant_stream_snapshot`}function Cj(e){let t=Number(e?.SeqId||0);if(Number.isFinite(t)&&t>0)return t;let n=Number(e?.Timestamp||0);return Number.isFinite(n)?n:0}function wj(e){if(typeof e==`string`)return e;if(e==null)return``;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Tj(e){let t=String(e?.EventType||``);if(!aj.has(t))return null;let n=String(e.Metadata?.tool_name||e.Metadata?.name||e.Metadata?.function_name||fj(e.Content?.parts)||`tool`).trim()||`tool`,r={name:n,args:``,status:`running`},i=t===`tool_result`||t===`stage_tool_result`?(()=>{let t=wj(e.Metadata?.tool_output??e.Metadata?.output??e.Metadata?.result??fj(e.Content?.parts));return{...r,output:t,status:nj(t)?`error`:`completed`}})():{...r,args:wj(e.Metadata?.tool_args??e.Metadata?.arguments??e.Metadata?.args??{})};return{id:e.EventId||String(Date.now()+Math.random()),role:`model`,content:``,timestamp:e.Timestamp||Date.now(),eventType:t,tools:{[n]:i}}}function Ej(e={},t={}){let n={...e||{}};for(let[e,r]of Object.entries(t||{}))n[e]={...n[e]||{},...r||{},name:e,args:r?.args||n[e]?.args||``};return n}function Dj(e={},t=``){let n=String(t||``).trim().toLowerCase(),r=n===`completed`?`completed`:ij.has(n)?`error`:``;if(!r)return e;let i=!1,a={};for(let[t,n]of Object.entries(e||{}))n?.status===`running`?(i=!0,a[t]={...n,status:r}):a[t]=n;return i?a:e}function Oj(e,t){return{...e,reasoning:kj(e.reasoning,t.reasoning),tools:{...e.tools||{},...t.tools||{}},eventId:t.eventId||e.eventId,responseId:t.responseId||e.responseId,traceId:t.traceId||e.traceId,rootSpanId:t.rootSpanId||e.rootSpanId,timestamp:Math.max(Number(e.timestamp||0),Number(t.timestamp||0))||t.timestamp||e.timestamp,id:t.responseId||t.reasoning||t.tools?t.id:e.id}}function kj(e=``,t=``){let n=String(e||``),r=String(t||``);return n?!r||n.endsWith(r)?n:r.startsWith(n)?r:`${n}${r}`:r}function Aj(e){return{id:e.id,role:`system`,eventType:`context_checkpoint`,status:e.status,trigger:e.trigger,compactedUntilSeqId:e.compactedUntilSeqId,summary:e.summary,historical:e.historical,timestamp:e.timestamp,content:vj(e.trigger,e.status,e.historical)}}function jj(e){let t=e?.EventType||``;if(t===`run_status`)return e.Content?.status===`failed`?{id:e.EventId||String(Date.now()+Math.random()),role:`system`,content:e.Content?.detail||`本轮运行失败。`,eventType:t,status:`failed`,timestamp:e.Timestamp||Date.now()}:e.Content?.status===`cancelled`?{id:e.EventId||String(Date.now()+Math.random()),role:`system`,content:e.Content?.detail||`本轮输出已停止。`,eventType:t,status:`cancelled`,timestamp:e.Timestamp||Date.now()}:null;if(t===`context_checkpoint`){let t=gj(e);return Aj({id:e.EventId||String(Date.now()+Math.random()),timestamp:e.Timestamp||Date.now(),status:`completed`,trigger:String(e.Metadata?.trigger||`auto`),compactedUntilSeqId:Number(e.Metadata?.compacted_until_seq_id||0)||void 0,summary:t.text||void 0,historical:!0})}if(t===`reasoning`){let n=gj(e).text||fj(e.Metadata?.reasoning);return n?{id:e.EventId||String(Date.now()+Math.random()),role:`model`,content:``,reasoning:n,timestamp:e.Timestamp||Date.now(),eventType:t}:null}if(aj.has(t))return Tj(e);if(t!==`user_message`&&t!==`assistant_message`&&t!==`assistant_stream_snapshot`)return null;let n=gj(e),r=t===`assistant_message`?_j(e):{};if(!n.text&&!n.attachments?.length&&!r.reasoning&&!r.tools)return null;let i=String(e.Metadata?.response_id||e.Metadata?.ResponseId||``).trim(),a=String(e.Metadata?.trace_id||e.Metadata?.TraceId||``).trim(),o=String(e.Metadata?.root_span_id||e.Metadata?.rootSpanId||e.Metadata?.RootSpanId||``).trim();return{id:e.EventId||String(Date.now()+Math.random()),role:t===`user_message`?`user`:`model`,content:n.text,timestamp:e.Timestamp||Date.now(),eventType:t,eventId:e.EventId||void 0,responseId:i||void 0,traceId:a||void 0,rootSpanId:o||void 0,attachments:n.attachments,...r}}function Mj(e=[]){let t=new Map,n=new Map,r=new Set,i=new Set,a=new Set,o=new Set,s=uj(e),c=[];for(let e of s){let t=String(e?.EventId||``).trim();if(t){if(o.has(t))continue;o.add(t)}c.push(e)}let l=new Set,u=new Set,d=new Map;for(let e of c){if(e?.EventType!==`user_message`||bj(e)){if(e?.EventType===`assistant_message`){let t=String(e.InvocationId||``).trim();t&&u.add(t)}if(Sj(e)){let t=String(e.InvocationId||``).trim();if(t){let n=d.get(t);(!n||Cj(e)>=Cj(n))&&d.set(t,e)}}continue}let t=xj(e);t&&l.add(t)}let f=c.filter(e=>{if(Sj(e)){let t=String(e.InvocationId||``).trim();return t?u.has(t)?!1:d.get(t)===e:!0}if(e?.EventType!==`user_message`||!bj(e))return!0;let t=xj(e);return!t||!l.has(t)});for(let e of f){let a=String(e.InvocationId||``).trim();a&&e.EventType===`user_message`&&i.add(a),a&&[`assistant_message`,`assistant_stream_snapshot`,`reasoning`,`tool_call`,`tool_result`,`stage_tool_call`,`stage_tool_result`].includes(String(e.EventType||``))&&r.add(a),e.EventType===`run_status`&&a&&(t.set(a,String(e.Content?.status||``).trim()),n.set(a,e))}let p=[],m=new Map,h=null,g=new Map,_=e=>{let t=String(e?.responseId||``).trim(),n=t?m.get(t):void 0;if(n!==void 0){p[n]=Oj(p[n],e);return}t&&m.set(t,p.length),p.push(e)},v=()=>{h&&=(_(h),null)},y=e=>{let n=String(e||``).trim();if(!n)return{};let r=g.get(n);return r?(g.delete(n),{tools:Dj(r.tools,t.get(n))}):{}};for(let e of f){if(e.EventType===`run_status`)continue;let t=jj(e);if(!t)continue;let n=String(e.InvocationId||``).trim();if(n&&(t.invocationId=n),aj.has(t.eventType)){let n=String(e.InvocationId||``).trim();if(!n){v(),_(t);continue}let r=g.get(n);g.set(n,{...r||{id:t.id,role:`model`,content:``,timestamp:t.timestamp,invocationId:n},timestamp:Math.max(Number(r?.timestamp||0),Number(t.timestamp||0)),tools:Ej(r?.tools,t.tools)});continue}if(t.eventType===`reasoning`){let n=String(e.InvocationId||``).trim();if(h&&n&&h.invocationId===n){h.reasoning=`${h.reasoning||``}${t.reasoning||``}`,h.timestamp=t.timestamp;continue}v(),h={...t,...n?{invocationId:n}:{}};continue}let r=t.eventType===`assistant_message`||t.eventType===`assistant_stream_snapshot`;if(r&&h){let n=String(e.InvocationId||``).trim(),r=yj(n,t);if(t.eventType===`assistant_message`&&n&&a.has(r)){h=null;continue}t.eventType===`assistant_message`&&n&&a.add(r),_({...t,...y(n),reasoning:kj(h.reasoning,t.reasoning)}),h=null;continue}if(v(),r){let n=String(e.InvocationId||``).trim(),r=yj(n,t);if(t.eventType===`assistant_message`&&n&&a.has(r))continue;t.eventType===`assistant_message`&&n&&a.add(r),_({...t,...y(n)});continue}_(t)}v();for(let[e,n]of g.entries())_({...n,tools:Dj(n.tools,t.get(e))});for(let[e,a]of t.entries()){if(a!==`in_progress`||r.has(e)||!i.has(e))continue;let t=n.get(e)||{};_({id:`run-placeholder-${e}`,role:`model`,content:``,status:`running`,eventType:`run_status`,timestamp:t.Timestamp||Date.now()})}return p}function Nj(e=[],t=[]){let n=[],r=new Set;for(let i of[...Array.isArray(e)?e:[],...Array.isArray(t)?t:[]]){let e=String(i?.EventId||``).trim();if(e){if(r.has(e))continue;r.add(e)}n.push(i)}return n.sort((e,t)=>{let n=Number(e?.SeqId||0),r=Number(t?.SeqId||0);return Number.isFinite(n)&&Number.isFinite(r)&&n!==r?n-r:Number(e?.Timestamp||0)-Number(t?.Timestamp||0)})}function Pj(e){return ij.has(dj(e))}function Fj(e,t){let n=String(e||``),r=String(t||``);return!n||!r||n.endsWith(r)?n||r:r.startsWith(n)?r:`${n}${r}`}function Ij(e,t){return e?t?Object.fromEntries([...new Set([...Object.keys(e),...Object.keys(t)])].map(n=>[n,{...e[n]||{},...t[n]||{}}])):e:t}function Lj(e,t,n){let r=Mj(t).filter(e=>e.role===`model`).at(-1);if(!r)return e;let i=e.findIndex(e=>e.role===`model`&&e.invocationId===n),a=i>=0?e[i]:void 0,o=Fj(a?.content,r.content),s=Fj(a?.reasoning,r.reasoning),c=Ij(a?.tools,r.tools),l={...a,...r,id:a?.id||r.id||`${n}:assistant`,invocationId:n,content:o,reasoning:s,tools:c,blocks:rA({content:o,reasoning:s,tools:c})};return i<0?[...e,l]:e.map((e,t)=>t===i?l:e)}var Rj=`conversation_item_v1`;function zj(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function Bj(e){return typeof e==`string`&&e.trim()?e:null}function Vj(e){if(typeof e==`string`)return e;if(e==null)return``;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Hj(e){return{id:`conversation:${e.runId}:${e.itemId}`,timestamp:0,eventType:Rj,eventId:e.sourceEventIds.at(-1),runId:e.runId,itemId:e.itemId,status:e.lifecycle===`failed`?`failed`:e.lifecycle===`completed`?`completed`:`running`}}function Uj(e){return e.lifecycle===`failed`?`error`:e.lifecycle===`completed`?`done`:`streaming`}function Wj(e){let t=typeof e.payload.text==`string`?e.payload.text:``;if(e.kind===`user_message`)return{...Hj(e),role:`user`,content:t};let n=e.kind===`reasoning`?{id:`conversation-block:${e.itemId}`,type:`thinking`,content:t,status:Uj(e)}:{id:`conversation-block:${e.itemId}`,type:`text`,content:t,status:Uj(e)};return{...Hj(e),role:`model`,content:e.kind===`assistant_text`?t:``,reasoning:e.kind===`reasoning`?t:void 0,blocks:[n]}}function Gj(e){let t=Bj(e.payload.tool)||`Tool`,n=Vj(e.payload.args),r=Object.prototype.hasOwnProperty.call(e.payload,`output`)?Vj(e.payload.output):void 0,i=e.lifecycle===`failed`||e.payload.isError===!0?`error`:e.lifecycle===`completed`?`completed`:`running`;return{...Hj(e),role:`model`,content:``,blocks:[{id:`conversation-block:${e.itemId}`,type:`tool`,toolName:t,args:n,output:r,status:i}],tools:{[t]:{name:t,args:n,output:r,status:i}}}}function Kj(e){return e===`structured_input`?`structured_input`:e===`plan_review`?`plan_review`:e===`custom`?`custom`:`approval`}function qj(e){let t=Bj(e.payload.interactionId),n=e.payload.revision;if(!t||!Number.isInteger(n)||Number(n)<1)return null;let r=Vj(e.payload.detail),i=Bj(e.payload.prompt)||r,a=Kj(e.payload.interactionKind),o=e.lifecycle===`completed`;return{interactionId:t,sessionId:e.sessionId,runId:e.runId,kind:a,title:Bj(e.payload.title)||(a===`approval`?`审批:${Bj(e.payload.kind)||`操作`}`:`需要补充信息`),message:i||`运行需要人工确认。`,requestSchema:zj(e.payload.inputSchema),presentation:null,status:o?`resolved`:`pending`,revision:Number(n),createdAt:Bj(e.payload.createdAt)||``,expiresAt:Bj(e.payload.expiresAt),resolvedAt:o?Bj(e.payload.resolvedAt):null,actor:o?Bj(e.payload.actor):null,outcome:o&&[`approved`,`rejected`,`submitted`,`cancelled`,`expired`].includes(String(e.payload.outcome||``))?e.payload.outcome:null,responseSummary:o?Bj(e.payload.responseSummary):null,source:`interaction_v1`,extensions:{conversation_item_id:e.itemId}}}function Jj(e,t){let n=Bj(e.payload.kind)||`approval`,r=Vj(e.payload.detail),i=t.status===`resolved`?t.outcome===`rejected`?`rejected`:`approved`:`pending`,a=t.status===`pending`?`paused`:`completed`,o={approvalRequestId:t.interactionId,approvalStatus:i,approvalMessage:t.message};return{...Hj(e),role:`model`,content:``,blocks:[{id:`conversation-block:${e.itemId}`,type:`tool`,toolName:n,args:r,status:a,extra:o}],tools:{[n]:{name:n,args:r,status:a,approvalRequestId:t.interactionId,approvalStatus:i,approvalMessage:t.message}}}}function Yj(e){for(let t of[`createSurface`,`updateComponents`,`updateDataModel`,`deleteSurface`]){let n=Bj(zj(e[t])?.surfaceId);if(n)return n}return null}function Xj(e){let t=Array.isArray(e.payload.data)?e.payload.data:Array.isArray(e.payload.operations)?e.payload.operations:null;if(!t)return null;let n=t.map(zj);if(n.some(e=>e===null))return null;let r=n,i=Bj(e.payload.surfaceId)||r.map(Yj).find(e=>e!==null)||null;return i?{...Hj(e),role:`a2ui`,content:``,aguiActivity:{surfaceId:i,messages:r}}:null}function Zj(e,t,n,r=!1){return{...Hj(e),role:`system`,content:n?`${t}: ${n}`:t,status:r?`failed`:Hj(e).status}}function Qj(e){let t=e.presentation,n=new Map(t.textItems.map(e=>[e.id,e])),r=new Set(t.toolItems.map(e=>e.itemId)),i=new Set(t.approvalItems.map(e=>e.itemId)),a=new Set(t.structuredInputItems.map(e=>e.itemId)),o=new Set(t.a2uiItems.map(e=>e.itemId)),s=new Map(t.artifacts.map(e=>[e.id,e])),c=new Map(t.fallbacks.map(e=>[e.id,e])),l=[],u=[];for(let{item:e}of t.timeline){if(n.has(e.itemId)){l.push(Wj(e));continue}if(r.has(e.itemId)){l.push(Gj(e));continue}if(i.has(e.itemId)||a.has(e.itemId)){let t=qj(e);t?(u.push(t),l.push(Jj(e,t))):l.push(Zj(e,`Interaction unavailable`,`The server did not provide a durable interaction revision; this card is read-only.`));continue}if(o.has(e.itemId)){let t=Xj(e);l.push(t||Zj(e,`Unsupported content`,`A2UI payload is not a valid passive operation list.`));continue}let t=s.get(e.itemId);if(t){l.push(t.uri?{...Hj(e),role:`model`,content:t.name,attachments:[{name:t.name,type:t.mimeType,url:t.uri}]}:Zj(e,`Artifact unavailable`,`The artifact URI is not a safe HTTP(S) link.`));continue}let d=c.get(e.itemId);d&&l.push(Zj(e,d.title,d.detail,d.failed))}return{messages:l,interactions:u}}function $j(e,t){let n=Qj(t).messages,r=e=>e.eventType===Rj&&e.runId===t.runId,i=e.findIndex(r),a=e.filter(e=>!r(e)),o=i<0?a.length:i;return[...a.slice(0,o),...n,...a.slice(o)]}var eM=new Set([`completed`]),tM=new Set([`failed`,`error`,`cancelled`,`canceled`,`aborted`,`incomplete`]),nM=new Map;function rM(e,t){an.getState().patchMessages(n=>n.some(t=>t.id===e)?t?n.map(n=>n.id===e?{...n,invocationId:t}:n):n:[...n,{id:e,role:`model`,content:``,timestamp:Date.now(),reasoning:``,invocationId:t}])}function iM(e){let t=String(e||``).trim().toLowerCase(),n=eM.has(t)?`completed`:tM.has(t)?`error`:null;n&&an.getState().patchMessages(e=>e.map(e=>{if(!e.tools)return e;let t=!1,r=Object.fromEntries(Object.entries(e.tools).map(([e,r])=>r.status===`running`?(t=!0,[e,{...r,status:n}]):[e,r]));return t?{...e,tools:r}:e}))}function aM(e){let t=!!(e.sessionId&&Ze.getState().currentSessionId!==e.sessionId);if(t&&![`activity`,`stage_changed`,`stream_ended`,`error`,`rate_limited`,`terminal`].includes(e.type))return;let n=an.getState(),r=e=>{e&&D.getState().updateActivity({sessionId:e})};switch(e.type){case`activity`:D.getState().updateActivity({sessionId:e.sessionId,source:e.source,status:e.status,phase:e.phase,detail:e.detail,countEvent:e.countEvent});break;case`user_message_added`:D.getState().setBanner(null),n.patchMessages(t=>[...t,{id:e.messageId,role:`user`,content:``,timestamp:Date.now()}]);break;case`assistant_message_created`:rM(e.messageId,e.invocationId);break;case`text_delta`:rM(e.messageId),r(e.sessionId),n.patchMessages(t=>t.map(t=>t.id===e.messageId?{...t,content:t.content+e.delta,blocks:$k(t.blocks,e.delta)}:t));break;case`text_final`:rM(e.messageId),r(e.sessionId),n.patchMessages(t=>t.map(t=>t.id===e.messageId?{...t,content:e.text,blocks:eA(t.blocks,e.text)}:t));break;case`reasoning_delta`:rM(e.messageId),r(e.sessionId),n.patchMessages(t=>t.map(t=>t.id===e.messageId?{...t,reasoning:(t.reasoning||``)+e.delta,blocks:Qk(t.blocks,e.delta)}:t));break;case`tool_upsert`:rM(e.messageId),r(e.sessionId),n.patchMessages(t=>t.map(t=>{if(t.id!==e.messageId)return t;let n=t.tools?.[e.name],r=n?.approvalStatus===`approved`||n?.approvalStatus===`rejected`,i=e.status,a=n?.approvalStatus===`rejected`?`completed`:n?.status===`error`&&i!==`error`?`error`:i;return{...t,blocks:tA(t.blocks,e.name,{args:e.args,status:a,extra:e.extra}),tools:{...t.tools||{},[e.name]:{...n||{name:e.name,args:``},name:e.name,args:e.args,status:a,...e.extra||{},...e.extra?.approvalRequestId&&!r?{approvalStatus:`pending`}:{}}}}}));break;case`tool_result`:rM(e.messageId),r(e.sessionId),n.patchMessages(t=>t.map(t=>{if(t.id!==e.messageId)return t;let n=nj(e.output)?`error`:`completed`;return{...t,blocks:tA(t.blocks,e.name,{output:e.output,status:n}),tools:{...t.tools||{},[e.name]:{...t.tools?.[e.name]||{name:e.name,args:``},output:e.output,status:n}}}}));break;case`approval_requested`:rM(e.messageId),jA({approvalRequestId:e.approvalRequestId,protocol:e.protocol,name:e.name,message:e.message,args:e.args,approvalLevel:e.approvalLevel,sessionId:e.sessionId}),n.patchMessages(t=>t.map(t=>{if(t.id!==e.messageId)return t;let n=t.tools?.[e.approvalRequestId],r=n?.approvalStatus===`approved`||n?.approvalStatus===`rejected`,i={approvalRequestId:e.approvalRequestId,approvalProtocol:e.protocol,approvalStatus:r?n.approvalStatus:`pending`,...e.message?{approvalMessage:e.message}:{},...e.approvalLevel?{approvalLevel:e.approvalLevel}:{}},a=r?n.status:`paused`;return{...t,blocks:tA(t.blocks,e.name,{args:e.args,status:a,extra:i}),tools:{...t.tools||{},[e.approvalRequestId]:{...n||{},name:e.name,args:e.args,status:a,...i}}}}));break;case`approval_resolved`:n.patchMessages(t=>t.map(t=>{if(!t.tools)return t;let n=!1,r=Object.fromEntries(Object.entries(t.tools).map(([t,r])=>{if(r.approvalRequestId!==e.approvalRequestId)return[t,r];n=!0;let i=e.decision===`rejected`?`completed`:r.status===`paused`?`running`:r.status;return[t,{...r,status:i,approvalStatus:e.decision}]}));return n?{...t,tools:r,blocks:t.blocks?.map(t=>{if(t.type!==`tool`||t.extra?.approvalRequestId!==e.approvalRequestId)return t;let n=e.decision===`rejected`?`completed`:t.status===`paused`?`running`:t.status;return{...t,status:n,extra:{...t.extra,approvalStatus:e.decision}}})}:t}));break;case`system_message`:n.patchMessages(t=>[...t,{id:String(Date.now()+Math.random()),role:`system`,content:e.content,timestamp:Date.now()}]);break;case`compaction`:{let t=`compaction-${Date.now()}`,r=e.phase===`start`?`running`:e.phase===`failed`?`failed`:`completed`,i=Aj({id:t,timestamp:Date.now(),status:r,trigger:e.trigger,compactedUntilSeqId:e.compactedUntilSeqId});n.patchMessages(e=>e.findIndex(e=>e.id===t)<0?[...e,i]:e.map(e=>e.id===t?{...e,...i}:e));break}case`stage_changed`:e.stage===`streaming`||e.stage===`connecting`?D.getState().setSessionStreaming(e.sessionId,!0):(e.stage===`completing`||e.stage===`error`||e.stage===`cancelled`)&&D.getState().setSessionStreaming(e.sessionId,!1);break;case`stream_ended`:D.getState().setSessionStreaming(e.sessionId,!1),t||an.getState().patchMessages(e=>e.map(e=>e.role!==`model`||!e.blocks?.some(e=>e.status===`streaming`)?e:{...e,blocks:nA(e.blocks.map(e=>e.type===`text`&&e.status===`streaming`?{...e,status:`done`}:e))})),globalThis.setTimeout(()=>{let t=D.getState();t.getSessionActivity(e.sessionId)?.status===`completed`&&t.clearSessionActivity(e.sessionId)},2400);break;case`error`:D.getState().setSessionStreaming(e.sessionId,!1),D.getState().updateActivity({sessionId:e.sessionId,status:`failed`,phase:`连接断开或生成出错`,countEvent:!1}),t||(D.getState().setBanner({kind:`error`,message:`连接断开或生成出错,请重试`,sessionId:e.sessionId}),n.patchMessages(e=>[...e,{id:String(Date.now()),role:`model`,content:`连接断开或生成出错。`,timestamp:Date.now()}]));break;case`rate_limited`:D.getState().setSessionStreaming(e.sessionId,!1),D.getState().updateActivity({sessionId:e.sessionId,status:`failed`,phase:`请求被限流`,countEvent:!1}),t||D.getState().setBanner({kind:`rate_limited`,message:e.message||`请求过于频繁,请稍后重试`,retryAfterSec:e.retryAfterSec,sessionId:e.sessionId});break;case`terminal`:t||iM(e.status);break;case`stream_event`:{let t=e.sessionId||e.event.SessionId;AA(e.event,t||void 0);let n=e.event.SeqId;typeof n==`number`&&n>0&&D.getState().setLastSeqId(n),t&&D.getState().updateActivity({sessionId:t});let r=String(e.event.InvocationId||``).trim();if(t&&r){let n=`${t}:${r}`,i=Nj(nM.get(n)||[],[e.event]);nM.set(n,i),an.getState().patchMessages(e=>Lj(e,i,r)),Pj(e.event)&&nM.delete(n)}e.event.EventType===`run_checkpoint`&&t&&KA.getState().upsertSessionCheckpoint(t,e.event);{let n=dj(e.event);n===`completed`?D.getState().updateActivity({sessionId:t,status:`completed`,phase:`后台长任务已完成`,countEvent:!1}):n===`cancelled`||n===`canceled`||n===`aborted`?D.getState().updateActivity({sessionId:t,status:`stopped`,phase:`后台长任务已取消`,countEvent:!1}):(n===`failed`||n===`error`)&&D.getState().updateActivity({sessionId:t,status:`failed`,phase:`后台长任务失败`,countEvent:!1})}break}case`conversation_snapshot`:{let t=Qj(e.result);for(let e of t.interactions)kA.upsert(e);n.patchMessages(t=>$j(t,e.result)),r(e.sessionId);break}case`a2ui_surface_begin`:{let t=`a2ui-${e.surfaceId}`;an.getState().patchMessages(n=>[...n.filter(e=>e.id!==t),{id:t,role:`a2ui`,content:``,timestamp:Date.now(),a2ui:{surfaceId:e.surfaceId,surface:e.surface}}]);break}case`a2ui_surface_update`:{let t=`a2ui-${e.surfaceId}`;an.getState().patchMessages(n=>n.map(n=>n.id===t&&n.a2ui?{...n,a2ui:{...n.a2ui,surface:e.surface}}:n));break}case`a2ui_surface_end`:{let t=`a2ui-${e.surfaceId}`;an.getState().patchMessages(e=>e.map(e=>e.id===t&&e.a2ui?{...e,a2ui:{...e.a2ui,ended:!0}}:e));break}case`a2ui_interaction`:{let t=`a2ui-${e.surfaceId}`;an.getState().patchMessages(n=>n.map(n=>n.id===t&&n.a2ui?{...n,a2ui:{...n.a2ui,pendingInteraction:{interactionId:e.interactionId,kind:e.kind,inputSchema:e.inputSchema}}}:n));break}case`agui_activity`:{let t=`agui-a2ui-${e.surfaceId}`;an.getState().patchMessages(n=>{let r={surfaceId:e.surfaceId,messages:e.messages},i=!1,a=n.map(t=>{if(t.id!==e.messageId)return t;i=!0;let n=[...(t.aguiActivities||[]).filter(t=>t.surfaceId!==e.surfaceId),r];return{...t,aguiActivities:n}});if(i)return a;let o=n.find(e=>e.id===t),s={id:t,role:`a2ui`,content:``,timestamp:o?.timestamp||Date.now(),aguiActivity:r};return o?n.map(e=>e.id===t?s:e):[...n,s]});break}}}function oM(){nM.clear()}var sM=new Hk;function cM(e){let t=(0,b.useRef)(new Map),n=(0,b.useRef)(()=>{}),{agentId:r,apiFormats:i,agentFramework:a,selectedModel:o,selectedModelMetadata:s,thinkingMode:c,permissionMode:l,currentSessionIdRef:u,queuedDraftRef:d,onRunSettled:f,uiCapabilities:p}=e,m=(0,b.useCallback)(e=>{e.updateConfig({agentId:r,apiFormats:i,agentFramework:a,selectedModel:o,selectedModelMetadata:s,thinkingMode:p.Thinking?c:`auto`,permissionMode:l,runtimeCapabilityMatrix:p.RuntimeCapabilityMatrix,hostedChatTransport:Se(p,{requireResumableRun:!!(p.RunLifecycle?.Enabled&&p.RunLifecycle.Resume)}),checkpointResumePreviewEnabled:!!p.RunLifecycle?.CheckpointResumePreview,conversationClient:sM})},[r,i,a,o,s,c,l,p]),h=(0,b.useCallback)(n=>{let r=String(n||`new-session`),i=t.current.get(r);return i?m(i):(i=new Jk(e.api),m(i),i.subscribe(aM),t.current.set(r,i)),i},[e.api,m]);(0,b.useEffect)(()=>{for(let e of t.current.values())m(e)},[m]);let g=(0,b.useCallback)(e=>{d.current.push(e),C.getState().setQueuedDrafts(t=>[...t,e])},[d]),_=(0,b.useCallback)(e=>{let i=u.current,a=h(i);if(a.stage!==`idle`)return!1;oM(),C.getState().setMobileActionsOpen(!1),D.getState().setSessionStreaming(i,!0);let o=e.text.trim(),s=String(Date.now()),c=e.attachments.map(e=>({name:e.name,url:URL.createObjectURL(e),type:e.type||`application/octet-stream`}));(o||c.length>0)&&an.getState().patchMessages(e=>[...e,{id:s,role:`user`,content:o,timestamp:Date.now(),attachments:c.length?c:void 0}]);let l=a.start({text:e.text,attachments:e.attachments,responsesInput:e.responsesInput,previousResponseId:e.previousResponseId,executionMode:e.executionMode,sessionId:i,onSessionCreated:e=>{Ze.getState().upsertSessions([{SessionId:e,UpdatedAt:new Date().toISOString()}]),u.current=e,kt(r,e),Ze.getState().setCurrentSessionId(e),i!==e&&t.current.set(e,a)},onSessionUpsert:()=>{},onSettled:e=>{f?.(e),n.current()}});return l||D.getState().setSessionStreaming(i,!1),l},[r,u,h,f]);(0,b.useEffect)(()=>{n.current=()=>{let e=d.current.shift();if(!e){C.getState().setQueuedDrafts([]);return}C.getState().setQueuedDrafts(e=>e.slice(1)),queueMicrotask(()=>{_(e)||(d.current.unshift(e),C.getState().setQueuedDrafts(t=>[e,...t]))})}},[d,_]);let v=(0,b.useCallback)(async(e,t,n,r,i)=>{let a={text:e,attachments:t,responsesInput:n,previousResponseId:r,executionMode:i};if(h(u.current).stage!==`idle`&&D.getState().isSessionStreaming(u.current)){n===void 0&&g({text:e,attachments:t,executionMode:i});return}!_(a)&&n===void 0&&g({text:e,attachments:t,executionMode:i})},[u,g,h,_]),y=(0,b.useCallback)(()=>{h(u.current).stop()},[u,h]),x=(0,b.useCallback)(()=>{h(u.current).disconnect()},[u,h]),ee=(0,b.useCallback)(e=>{let t=h(e.sessionId);if(t.stage!==`idle`)return!1;oM(),C.getState().setMobileActionsOpen(!1),D.getState().setSessionStreaming(e.sessionId,!0);let r=t.resumeCheckpoint({...e,onSettled:e=>{f?.(e),n.current()}});return r||D.getState().setSessionStreaming(e.sessionId,!1),r},[h,f]),te=(0,b.useCallback)(()=>{oM()},[]);return{submitDraft:v,stopGeneration:y,disconnectRun:x,resumeCheckpoint:ee,submitAguiAction:(0,b.useCallback)(e=>{let t=e.userAction;if(!t)return!1;let n=t.context||{},r=String(n.interruptId||n.interrupt_id||``);if(!r)return!1;let i=u.current;if(!i)return!1;let a=h(i),o=n.status===`cancelled`?`cancelled`:`resolved`,s=Object.prototype.hasOwnProperty.call(n,`payload`)?n.payload:{action:t.name,sourceComponentId:t.sourceComponentId,context:n};return a.resumeAguiInterrupt({sessionId:i,interruptId:r,status:o,payload:s,onSettled:f})},[u,h,f]),respondToAguiApproval:(0,b.useCallback)(e=>{if(!e.interruptId)return!1;let t=u.current;if(!t)return!1;let n=h(t);if(n.stage!==`idle`)return!1;D.getState().setSessionStreaming(t,!0);let r=n.resumeAguiInterrupt({sessionId:t,interruptId:e.interruptId,status:`resolved`,payload:{decision:e.approve?`approve`:`reject`},onSettled:f});return r||D.getState().setSessionStreaming(t,!1),r},[u,h,f]),resetCompaction:te}}function lM(e){return String(e||``).trim()}function uM(e){let t=lM(e).toLowerCase();return t===`up`||t===`down`?t:``}function dM(e){if(!e||typeof e!=`object`)return null;let t=uM(e.Rating||e.rating);return t?{agentId:lM(e.AgentId||e.agentId),sessionId:lM(e.SessionId||e.sessionId),responseId:lM(e.ResponseId||e.responseId),eventId:lM(e.EventId||e.eventId),rating:t,comment:String(e.Comment??e.comment??``),traceId:lM(e.TraceId||e.traceId),rootSpanId:lM(e.RootSpanId||e.rootSpanId),updatedAt:lM(e.UpdatedAt||e.updatedAt)}:null}function fM(e,t,n){return!!(e?.role===`model`&&lM(e.responseId)&&!(t&&n))}function pM({agentId:e,sessionId:t,message:n}){let r=lM(n?.responseId);if(!r)throw Error(`Message missing response id`);return{AgentId:lM(e),SessionId:lM(t),ResponseId:r}}function mM({agentId:e,sessionId:t,message:n,rating:r,comment:i=``}){let a=uM(r);if(!a)throw Error(`Feedback rating must be up or down`);return{...pM({agentId:e,sessionId:t,message:n}),Rating:a,Comment:String(i||``),TraceId:lM(n?.traceId),RootSpanId:lM(n?.rootSpanId)}}function hM(e,{messageId:t,rating:n,comment:r=``}){let i=e.find(e=>e.id===t),a=i?.feedback?{...i.feedback}:null,o=uM(n);return{nextMessages:e.map(e=>e.id===t?{...e,feedback:{...e.feedback||{},responseId:lM(e.responseId),eventId:lM(e.eventId),rating:o,comment:String(r||``),pending:!0,error:``}}:e),previousFeedback:a}}function gM(e,{messageId:t,feedback:n}){let r=dM(n)||n;return e.map(e=>e.id===t?{...e,feedback:r?{...r,pending:!1,error:``}:void 0}:e)}function _M(e,{messageId:t,previousFeedback:n}){return e.map(e=>{if(e.id!==t)return e;if(!n){let{feedback:t,...n}=e;return n}return{...e,feedback:n}})}function vM(e,{messageId:t}){return e.map(e=>{if(e.id!==t)return e;let{feedback:n,...r}=e;return r})}function yM(e){let{agentId:t,currentSessionId:n,isStreaming:r,api:i,submitDraft:a}=e;return{submitResponseFeedback:(0,b.useCallback)(async e=>{if(!n)return;let r=null;an.getState().patchMessages(t=>{let n=hM(t,{messageId:e.message.id,rating:e.rating,comment:e.comment||``});return r=n.previousFeedback,n.nextMessages});try{let r=dM((await i.upsertResponseFeedback(mM({agentId:t,sessionId:n,message:e.message,rating:e.rating,comment:e.comment||``})))?.Feedback);r&&an.getState().patchMessages(t=>gM(t,{messageId:e.message.id,feedback:r}))}catch(t){console.error(`Failed to submit response feedback:`,t),an.getState().patchMessages(t=>_M(t,{messageId:e.message.id,previousFeedback:r}))}},[t,n,i]),deleteResponseFeedback:(0,b.useCallback)(async e=>{if(!n)return;let r=e.feedback?{...e.feedback}:null;an.getState().patchMessages(t=>vM(t,{messageId:e.id}));try{await i.deleteResponseFeedback(pM({agentId:t,sessionId:n,message:e}))}catch(t){console.error(`Failed to delete response feedback:`,t),an.getState().patchMessages(t=>_M(t,{messageId:e.id,previousFeedback:r}))}},[t,n,i]),respondToApproval:(0,b.useCallback)(e=>{!e.approvalRequestId||r||(an.getState().patchMessages(t=>t.map(t=>{let n=e.approve?`approved`:`rejected`,r=t=>e.approve&&t===`paused`?`running`:e.approve?t:`completed`;return{...t,tools:t.tools?Object.fromEntries(Object.entries(t.tools).map(([t,i])=>[t,i.approvalRequestId===e.approvalRequestId?{...i,status:r(i.status),approvalStatus:n}:i])):t.tools,blocks:t.blocks?.map(t=>t.type===`tool`&&t.extra?.approvalRequestId===e.approvalRequestId?{...t,status:r(t.status),extra:{...t.extra,approvalStatus:n}}:t)}})),a(``,[],[{type:`mcp_approval_response`,approval_request_id:e.approvalRequestId,approve:e.approve}],e.previousResponseId))},[r,a])}}function bM(e){let[t]=(0,b.useState)(()=>new dA({agentId:e.agentId,store:kA,submitInteraction:t=>e.api.submitInteraction({...t,AgentId:e.getAgentId?.()??t.AgentId}),interactionV1Enabled:e.interactionV1Enabled,legacyResponsesApproval:e.legacyResponsesApproval,legacyAguiResume:e.legacyAguiResume}));(0,b.useEffect)(()=>{t.setInteractionV1Enabled(e.interactionV1Enabled)},[t,e.interactionV1Enabled]);let[n,r]=(0,b.useState)(0);return(0,b.useEffect)(()=>kA.subscribe(()=>r(e=>e+1)),[]),{client:t,pending:(0,b.useMemo)(()=>e.currentSessionId?kA.listAll(e.currentSessionId).filter(e=>e.status===`pending`||e.status===`resolving`||e.status===`failed`):[],[n,e.currentSessionId]),records:(0,b.useMemo)(()=>e.currentSessionId?kA.listAll(e.currentSessionId):[],[n,e.currentSessionId]),respond:(0,b.useCallback)(e=>t.respond(e),[t]),localCatalog:WO}}var xM={running:`running`,completed:`completed`,failed:`error`,paused:`paused`,approved:`completed`,denied:`completed`},SM={paused:`pending`,approved:`approved`,denied:`rejected`};function CM(e){if(typeof e==`number`)return e;if(typeof e==`string`){let t=Date.parse(e);if(Number.isFinite(t))return t}return Date.now()}function wM(e){if(typeof e==`string`)return e;if(e&&typeof e==`object`){if(typeof e.text==`string`)return e.text;if(Array.isArray(e.parts))return e.parts.map(e=>e&&typeof e==`object`&&typeof e.text==`string`?e.text:``).join(``)}return``}function TM(e){let t={},n=new Map;for(let t of e??[])t?.Name&&n.set(t.Name,(n.get(t.Name)||0)+1);for(let r of e??[]){if(!r?.Name)continue;let e=xM[String(r.Status??`completed`).toLowerCase()]??`completed`,i={name:r.Name,args:r.Args===void 0?``:typeof r.Args==`string`?r.Args:JSON.stringify(r.Args),status:e};r.Result!==void 0&&(i.output=typeof r.Result==`string`?r.Result:JSON.stringify(r.Result)),r.ApprovalRequestId&&(i.approvalRequestId=r.ApprovalRequestId,i.approvalStatus=SM[String(r.Status??`paused`).toLowerCase()]??`pending`,i.approvalProtocol=String(r.Protocol??``).toLowerCase()===`ag-ui`?`ag-ui`:`responses`,r.ApprovalMessage&&(i.approvalMessage=String(r.ApprovalMessage)),r.ApprovalLevel&&(i.approvalLevel=String(r.ApprovalLevel))),r.ToolCallId&&(i.previousResponseId=r.ToolCallId);let a=n.get(r.Name)>1&&r.ToolCallId?r.ToolCallId:r.Name;t[a]=i}return t}function EM(e){if(Array.isArray(e))return e.map(e=>({name:e.name||``,url:e.url||``,type:e.mime||``,fileUri:e.file_uri}))}function DM(e){return e==null?``:typeof e==`string`?e:JSON.stringify(e)}function OM(e){if(!(!Array.isArray(e)||!e.length))return e.flatMap((e,t)=>{let n=String(e?.Type||``).toLowerCase(),r=e?.SeqId??t;if(n===`thinking`||n===`text`){let t=String(e?.Content||``);return t?[{id:`history-${n}-${r}`,type:n,content:t,status:`done`}]:[]}if(n!==`tool`)return[];let i=xM[String(e?.Status||`completed`).toLowerCase()]??`completed`;return[{id:`history-tool-${r}`,type:`tool`,toolName:String(e?.Name||`tool`),args:DM(e?.Args),...e?.Result===void 0?{}:{output:DM(e.Result)},status:i,...e?.ToolCallId?{extra:{previousResponseId:String(e.ToolCallId)}}:{}}]})}function kM(e){let t=e.Role===`assistant`?`model`:e.Role||`user`,n=e.ToolEvents?.length?TM(e.ToolEvents):void 0,r=EM(e.Attachments),i=OM(e.Blocks),a=e.Reasoning?.length?e.Reasoning.map(e=>e.text).join(``):void 0,o={id:e.MessageId||`msg-${e.SeqId??Math.random().toString(36).slice(2)}`,role:t,content:wM(e.Content),timestamp:CM(e.Timestamp),eventType:t===`user`?`user_message`:`assistant_message`,reasoning:a,tools:n,attachments:r};return t===`model`&&(o.blocks=i??rA({reasoning:a,tools:n,content:o.content})),e.MessageId&&(o.eventId=e.MessageId),e.InvocationId&&(o.invocationId=e.InvocationId),e.ResponseId&&(o.responseId=e.ResponseId),e.TraceId&&(o.traceId=e.TraceId),e.RootSpanId&&(o.rootSpanId=e.RootSpanId),o}function AM(e){return Array.isArray(e.Activities)?e.Activities.flatMap((t,n)=>{let r=String(t?.SurfaceId||``);if(!r)return[];let i=t?.Content,a=Array.isArray(i?.a2ui_operations)?i.a2ui_operations:Array.isArray(i)?i:[];return a.length?[{id:t.MessageId||`a2ui-${e.MessageId||e.SeqId||`message`}-${n}`,role:`a2ui`,content:``,timestamp:CM(e.Timestamp),aguiActivity:{surfaceId:r,messages:GO(a)}}]:[]}):[]}function jM(e){return e.flatMap(e=>[kM(e),...AM(e)])}var MM=class extends Error{seq;constructor(e){super(`Session event seq ${e} was received twice with conflicting content`),this.name=`SessionEventConflictError`,this.seq=e}};function NM(e){return Array.isArray(e)?`[${e.map(NM).join(`,`)}]`:e&&typeof e==`object`?`{${Object.entries(e).filter(([,e])=>e!==void 0).sort(([e],[t])=>et)).map(([e,t])=>`${JSON.stringify(e)}:${NM(t)}`).join(`,`)}}`:JSON.stringify(e)??`null`}var PM=new Set([`runtime`]),FM=class{eventsBySeq=new Map;lastSeqValue=0;accept(e){let t=Xc(e);if(!t.ok)throw t.error;let n=t.value,r=this.eventsBySeq.get(n.seq);if(r){if(NM(r)!==NM(n))throw new MM(n.seq);return}this.eventsBySeq.set(n.seq,n),this.lastSeqValue=Math.max(this.lastSeqValue,n.seq)}get lastSeq(){return this.lastSeqValue}reconnectAfterSeq(){return this.lastSeqValue}displayableEvents(){return[...this.eventsBySeq.values()].filter(e=>PM.has(e.family)).sort((e,t)=>e.seq-t.seq)}};function IM(){return new FM}var LM=500,RM=30,zM=50,BM=1800*1e3;function VM(e){return new Promise(t=>{if(e.aborted){t();return}let n=globalThis.setTimeout(t,LM);e.addEventListener(`abort`,()=>{globalThis.clearTimeout(n),t()},{once:!0})})}var HM=new Set([`in_progress`,`running`,`resuming`,`starting`]);function UM(e){let t=e.ActiveRunUpdatedAt||e.UpdatedAt,n=typeof t==`number`?t>1e11?t:t*1e3:Date.parse(String(t||``));return Number.isFinite(n)&&n<=Date.now()+BM&&Date.now()-n<=BM}function WM(e){let t=dj(e);return t?t===`completed`?{status:`completed`,phase:`后台长任务已完成`}:t===`cancelled`||t===`canceled`||t===`aborted`?{status:`stopped`,phase:`后台长任务已取消`}:t===`interrupted`?{status:`stopped`,phase:`后台长任务已中断`}:t===`failed`||t===`error`?{status:`failed`,phase:`后台长任务失败`}:t===`resume_failed`?{status:`failed`,phase:`后台长任务恢复失败`}:null:null}function GM(e){let{agentId:t,api:n,isMobile:r,resetCompaction:i,uiCapabilities:a,disconnectRun:o}=e,s=(0,b.useRef)(e.currentSessionId),c=(0,b.useRef)(e.agentId),l=(0,b.useRef)(null),u=(0,b.useRef)(IM()),d=(0,b.useRef)(0),f=(0,b.useRef)(new Map),p=(0,b.useRef)(null),m=(0,b.useRef)(null),h=(0,b.useCallback)(async(e,t,r)=>{let i=r.filter(e=>fM(e,!1,!1));if(!i.length)return;let a=await Promise.all(i.map(async r=>{try{let i=await n.getResponseFeedback({AgentId:e,SessionId:t,ResponseId:r.responseId,EventId:r.eventId}),a=i?.Feedback?dM(i.Feedback):null;return a?{messageId:r.id,feedback:a}:null}catch(e){return console.error(`Failed to load response feedback:`,e),null}}));if(s.current!==t)return;let o=new Map(a.filter(e=>!!e).map(e=>[e.messageId,e.feedback]));o.size&&an.getState().patchMessages(e=>e.map(e=>o.has(e.id)?{...e,feedback:o.get(e.id)}:e))},[n]),g=(0,b.useCallback)(async e=>{l.current?.abort();let t=new AbortController;l.current=t;let r=!1,i=!1,a=e.afterSeqId,o=()=>l.current===t&&s.current===e.sessionId;try{for(D.getState().setCurrentRunId(e.invocationId),D.getState().setActiveInvocationId(e.invocationId),D.getState().setSessionStreaming(e.sessionId,!0),D.getState().updateActivity({sessionId:e.sessionId,status:`running`,phase:`后台长任务运行中`,detail:e.invocationId,countEvent:!1});!i&&o();){try{let s=await n.subscribeRunEvents({sessionId:e.sessionId,invocationId:e.invocationId,afterSeqId:a},{signal:t.signal});if(!o()){t.abort();return}let c=s.getReader(),l=new TextDecoder,d=``;for(;!i&&o();){let{value:t,done:n}=await c.read();if(n)break;d+=l.decode(t,{stream:!0});let s=yl(d);d=s.remainder;for(let t of s.chunks)if(t.trim()){for(let n of vl(t)){if(n.eventName===`__ping__`){D.getState().updateActivity({sessionId:e.sessionId,status:`running`,countEvent:!1});continue}if(n.eventName===`__done__`){i=!0,r=!0;break}if(!n.data||typeof n.data!=`object`)continue;let t=n.data;if(!o())break;if(t.InvocationId&&t.InvocationId!==e.invocationId)continue;if(typeof t.seq==`number`){try{u.current.accept(t)}catch(e){console.error(`[SessionLifecycle] session event cursor conflict:`,e)}a=Math.max(a,u.current.reconnectAfterSeq()),aM({type:`stream_event`,sessionId:e.sessionId,event:t}),i||=Pj(t),r||=i;let n=WM(t);n&&D.getState().updateActivity({sessionId:e.sessionId,status:n.status,phase:n.phase,detail:e.invocationId,countEvent:!1});continue}let s=Number(t.SeqId||0);Number.isFinite(s)&&(a=Math.max(a,s)),aM({type:`stream_event`,sessionId:e.sessionId,event:t}),i||=Pj(t),r||=i;let c=WM(t);if(c&&D.getState().updateActivity({sessionId:e.sessionId,status:c.status,phase:c.phase,detail:e.invocationId,countEvent:!1}),i)break}if(i)break}}i&&c.cancel().catch(()=>{})}catch(t){if(t instanceof DOMException&&t.name===`AbortError`||!o())break;console.warn(`Run event subscription disconnected; retrying:`,t),D.getState().updateActivity({sessionId:e.sessionId,status:`waiting`,phase:`恢复连接中`,detail:e.invocationId,countEvent:!1})}!i&&o()&&await VM(t.signal)}i&&o()&&aM({type:`stream_ended`,sessionId:e.sessionId})}catch(e){e instanceof DOMException&&e.name===`AbortError`||console.error(`Failed to subscribe run events:`,e)}finally{let n=l.current===t;n&&(l.current=null),n&&s.current===e.sessionId&&(D.getState().setCurrentRunId(``),D.getState().setActiveInvocationId(``),r&&p.current?.(e.sessionId),m.current?.(c.current,e.sessionId))}},[n]),_=(0,b.useCallback)(async e=>{let t=s.current,o=++d.current;t&&t!==e&&(an.getState().setMessages([]),Ze.getState().clearSessionMessageHistory(e),KA.getState().setSessionCheckpoints(e,[]),KA.getState().setSessionToolReceipts(e,[]),D.getState().setCurrentRunId(``),D.getState().clearActivity()),s.current=e;let u=()=>s.current===e&&d.current===o;Ze.getState().setCurrentSessionId(e),Ze.getState().setSessionInitialMessageHistoryLoading(e,!0),i(),l.current?.abort(),r&&C.getState().setMobileSidebarOpen(!1);try{let t=await n.listSessionMessages(e,{limit:zM,includeReasoning:!0,includeToolEvents:!0,includeAttachments:!0});if(!u())return;let r=jM(t.Messages);an.getState().setMessages(r),Ze.getState().setSessionMessageHistory(e,{nextCursor:t.NextCursor,hasMore:t.HasMore}),h(c.current,e,r);let i=t.LatestSeqId||0;try{let t=await n.listSessionEvents(e,{limit:50});if(u())for(let n of t.Events||[])AA(n,e)}catch(e){console.warn(`[SessionLifecycle] interaction history replay failed:`,e)}let o=Ce.getState().capabilities||a;if(o.RunLifecycle.Enabled&&o.RunLifecycle.Checkpoints?(n.listSessionCheckpoints({agentId:c.current,sessionId:e}).then(t=>{u()&&KA.getState().setSessionCheckpoints(e,t.Checkpoints||[])}).catch(t=>{u()&&(console.warn(`[SessionLifecycle] checkpoint load failed:`,t),KA.getState().setSessionCheckpoints(e,[]))}),n.listToolReceipts({agentId:c.current,sessionId:e}).then(t=>{u()&&KA.getState().setSessionToolReceipts(e,t.ToolReceipts||[])}).catch(t=>{u()&&(console.warn(`[SessionLifecycle] tool receipt load failed:`,t),KA.getState().setSessionToolReceipts(e,[]))})):KA.getState().clearSessionCheckpoints(e),o.RunLifecycle.Enabled&&o.RunLifecycle.Resume)try{let t=await n.getSession(e);if(!u())return;let r=String(t.ActiveRunStatus||``).toLowerCase();t.ActiveInvocationId&&(HM.has(r)||r===``&&UM(t))&&g({sessionId:e,invocationId:t.ActiveInvocationId,afterSeqId:i})}catch(e){console.warn(`[SessionLifecycle] getSession for reconnect failed:`,e)}}catch(e){console.error(`Failed to load session messages:`,e)}finally{u()&&Ze.getState().setSessionInitialMessageHistoryLoading(e,!1)}},[n,r,h,i,g,a]),v=(0,b.useCallback)(async(e=`default-agent`,t=null)=>{try{let r=Ze.getState();r.sessionsAgentId&&r.sessionsAgentId!==e&&r.resetSessionPagination(e),Ze.getState().setLoadingSessions(!0);let i=await n.listSessions(e,{page:1,pageSize:RM});Ze.getState().upsertSessions(i.Sessions||[],{agentId:e,total:Number(i.Total??i.Sessions?.length??0),page:Number(i.Page??1),pageSize:Number(i.PageSize??RM),replace:!0});let a=Ze.getState().sessions,c=s.current,u=At(a,c||t||Ot(e));u&&u!==c?_(u):!u&&c&&(d.current+=1,l.current?.abort(),o?.(),s.current=null,Ze.getState().setCurrentSessionId(null),an.getState().setMessages([]),Ze.getState().clearSessionMessageHistory(),KA.getState().clearSessionCheckpoints(),D.getState().setCurrentRunId(``),D.getState().clearActivity())}catch(e){if(e instanceof Ut)return;console.error(`Failed to fetch sessions:`,e)}finally{Ze.getState().setLoadingSessions(!1)}},[n,o,_]),y=(0,b.useCallback)(async()=>{let e=Ze.getState();if(e.isLoadingSessions||!e.hasMoreSessions)return;let t=We({total:e.sessionsTotal,pageSize:e.sessionsPageSize||RM,loadedPages:e.loadedPages});if(!t)return;let r=e.sessionsPageSize||RM,i=e.sessionsAgentId||c.current||`default-agent`;try{Ze.getState().setLoadingSessions(!0);let a=await n.listSessions(i,{page:t,pageSize:r});Ze.getState().upsertSessions(a.Sessions||[],{agentId:i,total:Number(a.Total??e.sessionsTotal),page:Number(a.Page??t),pageSize:Number(a.PageSize??r)})}catch(e){if(e instanceof Ut)return;console.error(`Failed to load more sessions:`,e)}finally{Ze.getState().setLoadingSessions(!1)}},[n]);(0,b.useEffect)(()=>{p.current=_},[_]),(0,b.useEffect)(()=>{m.current=v},[v]);let x=(0,b.useCallback)(async()=>{try{d.current+=1,l.current?.abort();let e=(await n.createSession(t)).SessionId;e&&(Ze.getState().upsertSessions([{SessionId:e,UpdatedAt:new Date().toISOString()}]),s.current=e,Ze.getState().setCurrentSessionId(e),an.getState().setMessages([]),Ze.getState().clearSessionMessageHistory(e),KA.getState().setSessionCheckpoints(e,[]),KA.getState().setSessionToolReceipts(e,[]),D.getState().setCurrentRunId(``),D.getState().clearActivity(),r&&(C.getState().setMobileSidebarOpen(!1),C.getState().setMobileActionsOpen(!1)),v(t,e))}catch(e){if(e instanceof Ut)return;console.error(`Failed to create session:`,e)}},[t,n,v,r]),ee=(0,b.useCallback)(async e=>{try{if((await n.deleteSession(e)).Deleted===!1){C.getState().pushToast(`会话暂未删除,云端运行时仍在同步,请稍后重试。`,`error`),v(t,s.current??void 0);return}Ze.getState().removeSession(e),Ze.getState().clearSessionMessageHistory(e),s.current===e&&(d.current+=1,l.current?.abort(),o?.(),s.current=null,an.getState().setMessages([]),KA.getState().clearSessionCheckpoints(e),Ze.getState().setCurrentSessionId(null),D.getState().setCurrentRunId(``),D.getState().clearActivity(),v(t))}catch(e){if(e instanceof Ut)return;console.error(`Failed to delete session`,e),C.getState().pushToast(`删除会话失败,请稍后重试。`,`error`)}},[t,n,o,v]);return{fetchSessions:v,loadMoreSessions:y,loadSession:_,loadOlderSessionMessages:(0,b.useCallback)(async e=>{let t=Ze.getState().messageHistory[e];if(!t||!t.hasMore||t.nextCursor===null||t.isLoadingOlder)return;let r=d.current,i=Symbol(e);f.current.set(e,i);try{Ze.getState().setSessionMessageHistoryLoading(e,!0);let a=await n.listSessionMessages(e,{beforeSeqId:t.nextCursor,limit:zM,includeReasoning:!0,includeToolEvents:!0,includeAttachments:!0});if(s.current!==e||d.current!==r||f.current.get(e)!==i)return;let o=jM(a.Messages),l=new Set(o.map(e=>e.id)),u=[...o,...an.getState().messages.filter(e=>!l.has(e.id))];an.getState().setMessages(u),Ze.getState().setSessionMessageHistory(e,{nextCursor:a.NextCursor,hasMore:a.HasMore}),h(c.current,e,o)}catch(e){e instanceof Ut||console.error(`Failed to load older session messages:`,e)}finally{f.current.get(e)===i&&(f.current.delete(e),Ze.getState().setSessionMessageHistoryLoading(e,!1))}},[n,h]),createNewSession:x,deleteSession:ee,currentSessionIdRef:s,agentIdRef:c,runSubscriptionAbortRef:l}}var KM=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),qM=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),JM=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),YM=e=>{let t=JM(e);return t.charAt(0).toUpperCase()+t.slice(1)},XM={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},ZM=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},QM=(0,b.createContext)({}),$M=()=>(0,b.useContext)(QM),eN=(0,b.forwardRef)(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>{let{size:l=24,strokeWidth:u=2,absoluteStrokeWidth:d=!1,color:f=`currentColor`,className:p=``}=$M()??{},m=r??d?Number(n??u)*24/Number(t??l):n??u;return(0,b.createElement)(`svg`,{ref:c,...XM,width:t??l??XM.width,height:t??l??XM.height,stroke:e??f,strokeWidth:m,className:KM(`lucide`,p,i),...!a&&!ZM(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>(0,b.createElement)(e,t)),...Array.isArray(a)?a:[a]])}),tN=(e,t)=>{let n=(0,b.forwardRef)(({className:n,...r},i)=>(0,b.createElement)(eN,{ref:i,iconNode:t,className:KM(`lucide-${qM(YM(e))}`,`lucide-${e}`,n),...r}));return n.displayName=YM(e),n},nN=tN(`arrow-down`,[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]),rN=tN(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),iN=tN(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),aN=tN(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),oN=tN(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),sN=tN(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),cN=tN(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),lN=tN(`circle-stop`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`rect`,{x:`9`,y:`9`,width:`6`,height:`6`,rx:`1`,key:`1ssd4o`}]]),uN=tN(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),dN=tN(`code`,[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]),fN=tN(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),pN=tN(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),mN=tN(`earth`,[[`path`,{d:`M21.54 15H17a2 2 0 0 0-2 2v4.54`,key:`1djwo0`}],[`path`,{d:`M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17`,key:`1tzkfa`}],[`path`,{d:`M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05`,key:`14pb5j`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),hN=tN(`ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]),gN=tN(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),_N=tN(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),vN=tN(`file-code-corner`,[[`path`,{d:`M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35`,key:`1wthlu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m5 16-3 3 3 3`,key:`331omg`}],[`path`,{d:`m9 22 3-3-3-3`,key:`lsp7cz`}]]),yN=tN(`file-diff`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M9 10h6`,key:`9gxzsh`}],[`path`,{d:`M12 13V7`,key:`h0r20n`}],[`path`,{d:`M9 17h6`,key:`r8uit2`}]]),bN=tN(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),xN=tN(`folder-open`,[[`path`,{d:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`,key:`usdka0`}]]),SN=tN(`hand`,[[`path`,{d:`M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2`,key:`1fvzgz`}],[`path`,{d:`M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2`,key:`1kc0my`}],[`path`,{d:`M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8`,key:`10h0bg`}],[`path`,{d:`M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15`,key:`1s1gnw`}]]),CN=tN(`image`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}]]),wN=tN(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]),TN=tN(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),EN=tN(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),DN=tN(`message-square-plus`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}],[`path`,{d:`M12 8v6`,key:`1ib9pf`}],[`path`,{d:`M9 11h6`,key:`1fldmi`}]]),ON=tN(`message-square-text`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}],[`path`,{d:`M7 11h10`,key:`1twpyw`}],[`path`,{d:`M7 15h6`,key:`d9of3u`}],[`path`,{d:`M7 7h8`,key:`af5zfr`}]]),kN=tN(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]),AN=tN(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),jN=tN(`panel-left-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]]),MN=tN(`panel-left`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}]]),NN=tN(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),PN=tN(`pin-off`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89`,key:`znwnzq`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11`,key:`c9qhm2`}]]),FN=tN(`pin`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z`,key:`1nkz8b`}]]),IN=tN(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),LN=tN(`refresh-ccw`,[[`path`,{d:`M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`14sxne`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}],[`path`,{d:`M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16`,key:`1hlbsb`}],[`path`,{d:`M16 16h5v5`,key:`ccwih5`}]]),RN=tN(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),zN=tN(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),BN=tN(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),VN=tN(`shield-alert`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),HN=tN(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),UN=tN(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]),WN=tN(`square-terminal`,[[`path`,{d:`m7 11 2-2-2-2`,key:`1lz0vl`}],[`path`,{d:`M11 13h4`,key:`1p7l4v`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}]]),GN=tN(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),KN=tN(`target`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`6`,key:`1vlfrh`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]),qN=tN(`thumbs-down`,[[`path`,{d:`M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z`,key:`m61m77`}],[`path`,{d:`M17 14V2`,key:`8ymqnk`}]]),JN=tN(`thumbs-up`,[[`path`,{d:`M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z`,key:`emmmcr`}],[`path`,{d:`M7 10v12`,key:`1qc93n`}]]),YN=tN(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),XN=tN(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),ZN=tN(`wifi-off`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}],[`path`,{d:`M5 12.859a10 10 0 0 1 5.17-2.69`,key:`1dl1wf`}],[`path`,{d:`M19 12.859a10 10 0 0 0-2.007-1.523`,key:`4k23kn`}],[`path`,{d:`M2 8.82a15 15 0 0 1 4.177-2.643`,key:`1grhjp`}],[`path`,{d:`M22 8.82a15 15 0 0 0-11.288-3.764`,key:`z3jwby`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),QN=tN(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),$N=tN(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),eP=tN(`zap-off`,[[`path`,{d:`M10.513 4.856 13.12 2.17a.5.5 0 0 1 .86.46l-1.377 4.317`,key:`193nxd`}],[`path`,{d:`M15.656 10H20a1 1 0 0 1 .78 1.63l-1.72 1.773`,key:`27a7lr`}],[`path`,{d:`M16.273 16.273 10.88 21.83a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14H4a1 1 0 0 1-.78-1.63l4.507-4.643`,key:`1e0qe9`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),tP=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t({classGroupId:e,validator:t}),rP=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),iP=`-`,aP=[],oP=`arbitrary..`,sP=e=>{let t=uP(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return lP(e);let n=e.split(iP);return cP(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?tP(i,t):t:i||aP}return n[e]||aP}}},cP=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=cP(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(iP):e.slice(t).join(iP),s=a.length;for(let e=0;ee.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?oP+r:void 0})(),uP=e=>{let{theme:t,classGroups:n}=e;return dP(n,t)},dP=(e,t)=>{let n=rP();for(let r in e){let i=e[r];fP(i,n,r,t)}return n},fP=(e,t,n,r)=>{let i=e.length;for(let a=0;a{if(typeof e==`string`){mP(e,t,n);return}if(typeof e==`function`){hP(e,t,n,r);return}gP(e,t,n,r)},mP=(e,t,n)=>{let r=e===``?t:_P(t,e);r.classGroupId=n},hP=(e,t,n,r)=>{if(vP(e)){fP(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(nP(n,e))},gP=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e{let n=e,r=t.split(iP),i=r.length;for(let e=0;e`isThemeGetter`in e&&e.isThemeGetter===!0,yP=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},bP=`!`,xP=`:`,SP=[],CP=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),wP=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;si?a-i:void 0;return CP(t,l,c,u)};if(t){let e=t+xP,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):CP(SP,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},TP=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},EP=e=>({cache:yP(e.cacheSize),parseClassName:wP(e),sortModifiers:TP(e),...sP(e)}),DP=/\s+/,OP=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a}=t,o=[],s=e.trim().split(DP),c=``;for(let e=s.length-1;e>=0;--e){let t=s[e],{isExternal:l,modifiers:u,hasImportantModifier:d,baseClassName:f,maybePostfixModifierPosition:p}=n(t);if(l){c=t+(c.length>0?` `+c:c);continue}let m=!!p,h=r(m?f.substring(0,p):f);if(!h){if(!m){c=t+(c.length>0?` `+c:c);continue}if(h=r(f),!h){c=t+(c.length>0?` `+c:c);continue}m=!1}let g=u.length===0?``:u.length===1?u[0]:a(u).join(`:`),_=d?g+bP:g,v=_+h;if(o.indexOf(v)>-1)continue;o.push(v);let y=i(h,m);for(let e=0;e0?` `+c:c)}return c},kP=(...e)=>{let t=0,n,r,i=``;for(;t{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r{let n,r,i,a,o=o=>(n=EP(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=OP(e,n);return i(e,a),a};return a=o,(...e)=>a(kP(...e))},MP=[],NP=e=>{let t=t=>t[e]||MP;return t.isThemeGetter=!0,t},PP=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,FP=/^\((?:(\w[\w-]*):)?(.+)\)$/i,IP=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,LP=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,RP=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,zP=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,BP=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,VP=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,HP=e=>IP.test(e),UP=e=>!!e&&!Number.isNaN(Number(e)),WP=e=>!!e&&Number.isInteger(Number(e)),GP=e=>e.endsWith(`%`)&&UP(e.slice(0,-1)),KP=e=>LP.test(e),qP=()=>!0,JP=e=>RP.test(e)&&!zP.test(e),YP=()=>!1,XP=e=>BP.test(e),ZP=e=>VP.test(e),QP=e=>!eF(e)&&!cF(e),$P=e=>gF(e,bF,YP),eF=e=>PP.test(e),tF=e=>gF(e,xF,JP),nF=e=>gF(e,SF,UP),rF=e=>gF(e,wF,qP),iF=e=>gF(e,CF,YP),aF=e=>gF(e,vF,YP),oF=e=>gF(e,yF,ZP),sF=e=>gF(e,TF,XP),cF=e=>FP.test(e),lF=e=>_F(e,xF),uF=e=>_F(e,CF),dF=e=>_F(e,vF),fF=e=>_F(e,bF),pF=e=>_F(e,yF),mF=e=>_F(e,TF,!0),hF=e=>_F(e,wF,!0),gF=(e,t,n)=>{let r=PP.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},_F=(e,t,n=!1)=>{let r=FP.exec(e);return r?r[1]?t(r[1]):n:!1},vF=e=>e===`position`||e===`percentage`,yF=e=>e===`image`||e===`url`,bF=e=>e===`length`||e===`size`||e===`bg-size`,xF=e=>e===`length`,SF=e=>e===`number`,CF=e=>e===`family-name`,wF=e=>e===`number`||e===`weight`,TF=e=>e===`shadow`,EF=jP(()=>{let e=NP(`color`),t=NP(`font`),n=NP(`text`),r=NP(`font-weight`),i=NP(`tracking`),a=NP(`leading`),o=NP(`breakpoint`),s=NP(`container`),c=NP(`spacing`),l=NP(`radius`),u=NP(`shadow`),d=NP(`inset-shadow`),f=NP(`text-shadow`),p=NP(`drop-shadow`),m=NP(`blur`),h=NP(`perspective`),g=NP(`aspect`),_=NP(`ease`),v=NP(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],x=()=>[...b(),cF,eF],ee=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],te=()=>[`auto`,`contain`,`none`],S=()=>[cF,eF,c],ne=()=>[HP,`full`,`auto`,...S()],re=()=>[WP,`none`,`subgrid`,cF,eF],C=()=>[`auto`,{span:[`full`,WP,cF,eF]},WP,cF,eF],w=()=>[WP,`auto`,cF,eF],ie=()=>[`auto`,`min`,`max`,`fr`,cF,eF],ae=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],oe=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],se=()=>[`auto`,...S()],ce=()=>[HP,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...S()],le=()=>[HP,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...S()],ue=()=>[HP,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...S()],T=()=>[e,cF,eF],E=()=>[...b(),dF,aF,{position:[cF,eF]}],de=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],fe=()=>[`auto`,`cover`,`contain`,fF,$P,{size:[cF,eF]}],pe=()=>[GP,lF,tF],me=()=>[``,`none`,`full`,l,cF,eF],he=()=>[``,UP,lF,tF],ge=()=>[`solid`,`dashed`,`dotted`,`double`],_e=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],ve=()=>[UP,GP,dF,aF],ye=()=>[``,`none`,m,cF,eF],be=()=>[`none`,UP,cF,eF],xe=()=>[`none`,UP,cF,eF],Se=()=>[UP,cF,eF],Ce=()=>[HP,`full`,...S()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[KP],breakpoint:[KP],color:[qP],container:[KP],"drop-shadow":[KP],ease:[`in`,`out`,`in-out`],font:[QP],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[KP],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[KP],shadow:[KP],spacing:[`px`,UP],text:[KP],"text-shadow":[KP],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,HP,eF,cF,g]}],container:[`container`],columns:[{columns:[UP,eF,cF,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:x()}],overflow:[{overflow:ee()}],"overflow-x":[{"overflow-x":ee()}],"overflow-y":[{"overflow-y":ee()}],overscroll:[{overscroll:te()}],"overscroll-x":[{"overscroll-x":te()}],"overscroll-y":[{"overscroll-y":te()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:ne()}],"inset-x":[{"inset-x":ne()}],"inset-y":[{"inset-y":ne()}],start:[{"inset-s":ne(),start:ne()}],end:[{"inset-e":ne(),end:ne()}],"inset-bs":[{"inset-bs":ne()}],"inset-be":[{"inset-be":ne()}],top:[{top:ne()}],right:[{right:ne()}],bottom:[{bottom:ne()}],left:[{left:ne()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[WP,`auto`,cF,eF]}],basis:[{basis:[HP,`full`,`auto`,s,...S()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[UP,HP,`auto`,`initial`,`none`,eF]}],grow:[{grow:[``,UP,cF,eF]}],shrink:[{shrink:[``,UP,cF,eF]}],order:[{order:[WP,`first`,`last`,`none`,cF,eF]}],"grid-cols":[{"grid-cols":re()}],"col-start-end":[{col:C()}],"col-start":[{"col-start":w()}],"col-end":[{"col-end":w()}],"grid-rows":[{"grid-rows":re()}],"row-start-end":[{row:C()}],"row-start":[{"row-start":w()}],"row-end":[{"row-end":w()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":ie()}],"auto-rows":[{"auto-rows":ie()}],gap:[{gap:S()}],"gap-x":[{"gap-x":S()}],"gap-y":[{"gap-y":S()}],"justify-content":[{justify:[...ae(),`normal`]}],"justify-items":[{"justify-items":[...oe(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...oe()]}],"align-content":[{content:[`normal`,...ae()]}],"align-items":[{items:[...oe(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...oe(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":ae()}],"place-items":[{"place-items":[...oe(),`baseline`]}],"place-self":[{"place-self":[`auto`,...oe()]}],p:[{p:S()}],px:[{px:S()}],py:[{py:S()}],ps:[{ps:S()}],pe:[{pe:S()}],pbs:[{pbs:S()}],pbe:[{pbe:S()}],pt:[{pt:S()}],pr:[{pr:S()}],pb:[{pb:S()}],pl:[{pl:S()}],m:[{m:se()}],mx:[{mx:se()}],my:[{my:se()}],ms:[{ms:se()}],me:[{me:se()}],mbs:[{mbs:se()}],mbe:[{mbe:se()}],mt:[{mt:se()}],mr:[{mr:se()}],mb:[{mb:se()}],ml:[{ml:se()}],"space-x":[{"space-x":S()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":S()}],"space-y-reverse":[`space-y-reverse`],size:[{size:ce()}],"inline-size":[{inline:[`auto`,...le()]}],"min-inline-size":[{"min-inline":[`auto`,...le()]}],"max-inline-size":[{"max-inline":[`none`,...le()]}],"block-size":[{block:[`auto`,...ue()]}],"min-block-size":[{"min-block":[`auto`,...ue()]}],"max-block-size":[{"max-block":[`none`,...ue()]}],w:[{w:[s,`screen`,...ce()]}],"min-w":[{"min-w":[s,`screen`,`none`,...ce()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...ce()]}],h:[{h:[`screen`,`lh`,...ce()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...ce()]}],"max-h":[{"max-h":[`screen`,`lh`,...ce()]}],"font-size":[{text:[`base`,n,lF,tF]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,hF,rF]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,GP,eF]}],"font-family":[{font:[uF,iF,t]}],"font-features":[{"font-features":[eF]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,cF,eF]}],"line-clamp":[{"line-clamp":[UP,`none`,cF,nF]}],leading:[{leading:[a,...S()]}],"list-image":[{"list-image":[`none`,cF,eF]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,cF,eF]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:T()}],"text-color":[{text:T()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...ge(),`wavy`]}],"text-decoration-thickness":[{decoration:[UP,`from-font`,`auto`,cF,tF]}],"text-decoration-color":[{decoration:T()}],"underline-offset":[{"underline-offset":[UP,`auto`,cF,eF]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:S()}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,cF,eF]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,cF,eF]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:E()}],"bg-repeat":[{bg:de()}],"bg-size":[{bg:fe()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},WP,cF,eF],radial:[``,cF,eF],conic:[WP,cF,eF]},pF,oF]}],"bg-color":[{bg:T()}],"gradient-from-pos":[{from:pe()}],"gradient-via-pos":[{via:pe()}],"gradient-to-pos":[{to:pe()}],"gradient-from":[{from:T()}],"gradient-via":[{via:T()}],"gradient-to":[{to:T()}],rounded:[{rounded:me()}],"rounded-s":[{"rounded-s":me()}],"rounded-e":[{"rounded-e":me()}],"rounded-t":[{"rounded-t":me()}],"rounded-r":[{"rounded-r":me()}],"rounded-b":[{"rounded-b":me()}],"rounded-l":[{"rounded-l":me()}],"rounded-ss":[{"rounded-ss":me()}],"rounded-se":[{"rounded-se":me()}],"rounded-ee":[{"rounded-ee":me()}],"rounded-es":[{"rounded-es":me()}],"rounded-tl":[{"rounded-tl":me()}],"rounded-tr":[{"rounded-tr":me()}],"rounded-br":[{"rounded-br":me()}],"rounded-bl":[{"rounded-bl":me()}],"border-w":[{border:he()}],"border-w-x":[{"border-x":he()}],"border-w-y":[{"border-y":he()}],"border-w-s":[{"border-s":he()}],"border-w-e":[{"border-e":he()}],"border-w-bs":[{"border-bs":he()}],"border-w-be":[{"border-be":he()}],"border-w-t":[{"border-t":he()}],"border-w-r":[{"border-r":he()}],"border-w-b":[{"border-b":he()}],"border-w-l":[{"border-l":he()}],"divide-x":[{"divide-x":he()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":he()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...ge(),`hidden`,`none`]}],"divide-style":[{divide:[...ge(),`hidden`,`none`]}],"border-color":[{border:T()}],"border-color-x":[{"border-x":T()}],"border-color-y":[{"border-y":T()}],"border-color-s":[{"border-s":T()}],"border-color-e":[{"border-e":T()}],"border-color-bs":[{"border-bs":T()}],"border-color-be":[{"border-be":T()}],"border-color-t":[{"border-t":T()}],"border-color-r":[{"border-r":T()}],"border-color-b":[{"border-b":T()}],"border-color-l":[{"border-l":T()}],"divide-color":[{divide:T()}],"outline-style":[{outline:[...ge(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[UP,cF,eF]}],"outline-w":[{outline:[``,UP,lF,tF]}],"outline-color":[{outline:T()}],shadow:[{shadow:[``,`none`,u,mF,sF]}],"shadow-color":[{shadow:T()}],"inset-shadow":[{"inset-shadow":[`none`,d,mF,sF]}],"inset-shadow-color":[{"inset-shadow":T()}],"ring-w":[{ring:he()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:T()}],"ring-offset-w":[{"ring-offset":[UP,tF]}],"ring-offset-color":[{"ring-offset":T()}],"inset-ring-w":[{"inset-ring":he()}],"inset-ring-color":[{"inset-ring":T()}],"text-shadow":[{"text-shadow":[`none`,f,mF,sF]}],"text-shadow-color":[{"text-shadow":T()}],opacity:[{opacity:[UP,cF,eF]}],"mix-blend":[{"mix-blend":[..._e(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":_e()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[UP]}],"mask-image-linear-from-pos":[{"mask-linear-from":ve()}],"mask-image-linear-to-pos":[{"mask-linear-to":ve()}],"mask-image-linear-from-color":[{"mask-linear-from":T()}],"mask-image-linear-to-color":[{"mask-linear-to":T()}],"mask-image-t-from-pos":[{"mask-t-from":ve()}],"mask-image-t-to-pos":[{"mask-t-to":ve()}],"mask-image-t-from-color":[{"mask-t-from":T()}],"mask-image-t-to-color":[{"mask-t-to":T()}],"mask-image-r-from-pos":[{"mask-r-from":ve()}],"mask-image-r-to-pos":[{"mask-r-to":ve()}],"mask-image-r-from-color":[{"mask-r-from":T()}],"mask-image-r-to-color":[{"mask-r-to":T()}],"mask-image-b-from-pos":[{"mask-b-from":ve()}],"mask-image-b-to-pos":[{"mask-b-to":ve()}],"mask-image-b-from-color":[{"mask-b-from":T()}],"mask-image-b-to-color":[{"mask-b-to":T()}],"mask-image-l-from-pos":[{"mask-l-from":ve()}],"mask-image-l-to-pos":[{"mask-l-to":ve()}],"mask-image-l-from-color":[{"mask-l-from":T()}],"mask-image-l-to-color":[{"mask-l-to":T()}],"mask-image-x-from-pos":[{"mask-x-from":ve()}],"mask-image-x-to-pos":[{"mask-x-to":ve()}],"mask-image-x-from-color":[{"mask-x-from":T()}],"mask-image-x-to-color":[{"mask-x-to":T()}],"mask-image-y-from-pos":[{"mask-y-from":ve()}],"mask-image-y-to-pos":[{"mask-y-to":ve()}],"mask-image-y-from-color":[{"mask-y-from":T()}],"mask-image-y-to-color":[{"mask-y-to":T()}],"mask-image-radial":[{"mask-radial":[cF,eF]}],"mask-image-radial-from-pos":[{"mask-radial-from":ve()}],"mask-image-radial-to-pos":[{"mask-radial-to":ve()}],"mask-image-radial-from-color":[{"mask-radial-from":T()}],"mask-image-radial-to-color":[{"mask-radial-to":T()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[UP]}],"mask-image-conic-from-pos":[{"mask-conic-from":ve()}],"mask-image-conic-to-pos":[{"mask-conic-to":ve()}],"mask-image-conic-from-color":[{"mask-conic-from":T()}],"mask-image-conic-to-color":[{"mask-conic-to":T()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:E()}],"mask-repeat":[{mask:de()}],"mask-size":[{mask:fe()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,cF,eF]}],filter:[{filter:[``,`none`,cF,eF]}],blur:[{blur:ye()}],brightness:[{brightness:[UP,cF,eF]}],contrast:[{contrast:[UP,cF,eF]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,mF,sF]}],"drop-shadow-color":[{"drop-shadow":T()}],grayscale:[{grayscale:[``,UP,cF,eF]}],"hue-rotate":[{"hue-rotate":[UP,cF,eF]}],invert:[{invert:[``,UP,cF,eF]}],saturate:[{saturate:[UP,cF,eF]}],sepia:[{sepia:[``,UP,cF,eF]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,cF,eF]}],"backdrop-blur":[{"backdrop-blur":ye()}],"backdrop-brightness":[{"backdrop-brightness":[UP,cF,eF]}],"backdrop-contrast":[{"backdrop-contrast":[UP,cF,eF]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,UP,cF,eF]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[UP,cF,eF]}],"backdrop-invert":[{"backdrop-invert":[``,UP,cF,eF]}],"backdrop-opacity":[{"backdrop-opacity":[UP,cF,eF]}],"backdrop-saturate":[{"backdrop-saturate":[UP,cF,eF]}],"backdrop-sepia":[{"backdrop-sepia":[``,UP,cF,eF]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":S()}],"border-spacing-x":[{"border-spacing-x":S()}],"border-spacing-y":[{"border-spacing-y":S()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,cF,eF]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[UP,`initial`,cF,eF]}],ease:[{ease:[`linear`,`initial`,_,cF,eF]}],delay:[{delay:[UP,cF,eF]}],animate:[{animate:[`none`,v,cF,eF]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,cF,eF]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:be()}],"rotate-x":[{"rotate-x":be()}],"rotate-y":[{"rotate-y":be()}],"rotate-z":[{"rotate-z":be()}],scale:[{scale:xe()}],"scale-x":[{"scale-x":xe()}],"scale-y":[{"scale-y":xe()}],"scale-z":[{"scale-z":xe()}],"scale-3d":[`scale-3d`],skew:[{skew:Se()}],"skew-x":[{"skew-x":Se()}],"skew-y":[{"skew-y":Se()}],transform:[{transform:[cF,eF,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:Ce()}],"translate-x":[{"translate-x":Ce()}],"translate-y":[{"translate-y":Ce()}],"translate-z":[{"translate-z":Ce()}],"translate-none":[`translate-none`],accent:[{accent:T()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:T()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,cF,eF]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scroll-m":[{"scroll-m":S()}],"scroll-mx":[{"scroll-mx":S()}],"scroll-my":[{"scroll-my":S()}],"scroll-ms":[{"scroll-ms":S()}],"scroll-me":[{"scroll-me":S()}],"scroll-mbs":[{"scroll-mbs":S()}],"scroll-mbe":[{"scroll-mbe":S()}],"scroll-mt":[{"scroll-mt":S()}],"scroll-mr":[{"scroll-mr":S()}],"scroll-mb":[{"scroll-mb":S()}],"scroll-ml":[{"scroll-ml":S()}],"scroll-p":[{"scroll-p":S()}],"scroll-px":[{"scroll-px":S()}],"scroll-py":[{"scroll-py":S()}],"scroll-ps":[{"scroll-ps":S()}],"scroll-pe":[{"scroll-pe":S()}],"scroll-pbs":[{"scroll-pbs":S()}],"scroll-pbe":[{"scroll-pbe":S()}],"scroll-pt":[{"scroll-pt":S()}],"scroll-pr":[{"scroll-pr":S()}],"scroll-pb":[{"scroll-pb":S()}],"scroll-pl":[{"scroll-pl":S()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,cF,eF]}],fill:[{fill:[`none`,...T()]}],"stroke-w":[{stroke:[UP,lF,tF,nF]}],stroke:[{stroke:[`none`,...T()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function K(...e){return EF(UO(e))}var DF=new Set([`in_progress`,`running`,`resuming`,`starting`,`streaming`,`queued`,`pending`,`accepted`]),OF=new Set([`failed`,`error`,`resume_failed`,`interrupted`,`cancelled`,`canceled`,`aborted`,`expired`]),kF=300*1e3;function AF(e){let t=e?.UpdatedAt??e?.updated_at;if(typeof t==`string`){let e=Date.parse(t);return Number.isNaN(e)?0:e}return typeof t==`number`&&Number.isFinite(t)?t>1e11?t:t*1e3:0}function jF(e){return String(e||``).trim().toLowerCase()}function MF(e){if(!e)return``;let t=typeof e==`number`?new Date(e>1e11?e:e*1e3):new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleString(`zh-CN`,{timeZone:`Asia/Shanghai`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,hour12:!1})}function NF(e){return[e?.Title,e?.Summary,e?.FirstPrompt,e?.LastPrompt,e?.SessionId,e?.Model?.display_name,e?.Model?.id].map(jF).join(` `)}function PF(e,t={}){if(!DF.has(jF(e?.ActiveRunStatus)))return!1;let n=AF(e);if(!n)return!0;let r=Number.isFinite(Number(t.now))?Number(t.now):Date.now(),i=Number.isFinite(Number(t.activeStaleAfterMs))?Number(t.activeStaleAfterMs):kF;return r-n<=i}function FF(e=[],t=``,n={}){let r=jF(t),i=new Set(Array.isArray(n.pinnedSessionIds)?n.pinnedSessionIds:[]);return(Array.isArray(e)?e:[]).filter(e=>e?.SessionId).filter(e=>!r||NF(e).includes(r)).slice().sort((e,t)=>{let r=+!!i.has(e.SessionId),a=+!!i.has(t.SessionId);if(r!==a)return a-r;let o=+!!PF(e,n),s=+!!PF(t,n);return o===s?AF(t)-AF(e):s-o})}function IF(e,t={}){let n=PF(e,t),r=OF.has(jF(e?.ActiveRunStatus));return{running:n,failed:r,label:n||r?``:MF(e?.UpdatedAt??e?.updated_at)}}function LF({sessions:e,currentSessionId:t,onCreateNewSession:n,onSelectSession:r,onDeleteSession:i,onTogglePinSession:a,onLoadMoreSessions:o,sessionTitle:s,pinnedSessionIds:c=[],hasMoreSessions:l=!1,isLoadingSessions:u=!1,className:d}){let[f,p]=(0,b.useState)(``),m=(0,b.useMemo)(()=>FF(e,f,{pinnedSessionIds:c}),[e,c,f]),h=(0,b.useMemo)(()=>new Set(c),[c]);return(0,U.jsxs)(`div`,{className:K(`flex h-full min-h-0 flex-col bg-sidebar`,d),children:[(0,U.jsxs)(`div`,{className:`flex flex-shrink-0 flex-col gap-2 border-b border-black/[0.06] px-3 py-3 dark:border-white/[0.08]`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:n,className:`flex h-[34px] w-full items-center justify-between rounded-[10px] px-2.5 text-sm font-medium text-sidebar-text-secondary transition-colors hover:bg-sidebar-hover hover:text-sidebar-text`,children:[(0,U.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(DN,{className:`h-4 w-4`}),(0,U.jsx)(`span`,{children:`新对话`})]}),(0,U.jsx)(`span`,{className:`rounded border border-black/[0.08] px-1.5 py-0.5 text-[11px] text-sidebar-text-muted dark:border-white/[0.1]`,children:`⌘ N`})]}),(0,U.jsxs)(`label`,{className:`flex h-9 items-center gap-2 rounded-[10px] border border-black/[0.06] bg-background px-2.5 text-xs text-sidebar-text-muted focus-within:border-primary/40 dark:border-white/[0.08]`,children:[(0,U.jsx)(BN,{className:`h-3.5 w-3.5 flex-shrink-0`}),(0,U.jsx)(`input`,{value:f,onChange:e=>p(e.target.value),className:`min-w-0 flex-1 bg-transparent text-sm text-sidebar-text outline-none placeholder:text-sidebar-text-muted`,placeholder:`搜索会话、模型或摘要`})]})]}),(0,U.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-2 pb-4 pt-2 custom-scrollbar`,onScroll:e=>{if(!o||u||!l||f.trim())return;let t=e.currentTarget;t.scrollHeight-t.scrollTop-t.clientHeight<200&&o()},children:[(0,U.jsxs)(`div`,{className:`px-2.5 py-2 text-xs font-medium text-sidebar-text-muted opacity-75`,children:[`历史记录`,f.trim()?` · ${m.length}`:``]}),(0,U.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[m.length>0?m.map(e=>{let n=IF(e),o=h.has(e.SessionId),c=t===e.SessionId;return(0,U.jsxs)(`div`,{className:K(`group relative flex h-[30px] items-center gap-1 rounded-[10px] border-l-2 border-transparent px-2 text-sm leading-5 transition-colors`,c?`border-l-2 border-primary bg-primary/10 font-medium text-sidebar-text`:n.running?`cursor-pointer bg-primary/[0.035] text-sidebar-text`:`cursor-pointer text-sidebar-text-secondary hover:bg-sidebar-hover hover:text-sidebar-text`),children:[(0,U.jsxs)(`button`,{type:`button`,"aria-current":c?`page`:void 0,className:`flex min-w-0 flex-1 items-center gap-1 text-left outline-none focus-visible:ring-2 focus-visible:ring-primary/60`,onClick:()=>r(e.SessionId),children:[(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[13px]`,children:s(e)}),n.running?(0,U.jsx)(`span`,{"aria-label":`运行中`,className:`h-1.5 w-1.5 flex-shrink-0 animate-spin rounded-full border border-primary border-t-transparent`}):n.failed?(0,U.jsx)(`span`,{"aria-label":`运行失败`,title:`运行失败`,className:`h-1.5 w-1.5 flex-shrink-0 rounded-full bg-rose-500/75`}):n.label?(0,U.jsx)(`span`,{className:`flex-shrink-0 text-[11px] leading-none text-sidebar-text-muted group-hover:hidden`,children:n.label}):null]}),(0,U.jsxs)(`div`,{className:`absolute right-1 top-1/2 flex -translate-y-1/2 items-center justify-end gap-0.5 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:t=>a(e.SessionId,t),className:K(`flex h-6 w-6 items-center justify-center rounded-md text-sidebar-text-muted hover:bg-sidebar-active hover:text-sidebar-text`,o&&`text-primary opacity-100`),title:o?`取消置顶`:`置顶会话`,"aria-label":o?`取消置顶会话`:`置顶会话`,children:o?(0,U.jsx)(PN,{className:`h-3.5 w-3.5`}):(0,U.jsx)(FN,{className:`h-3.5 w-3.5`})}),(0,U.jsx)(`button`,{type:`button`,onClick:t=>i(e.SessionId,t),className:`flex h-6 w-6 items-center justify-center rounded-md text-sidebar-text-muted hover:bg-sidebar-active hover:text-rose-500`,title:`删除会话`,children:(0,U.jsx)(YN,{className:`h-3.5 w-3.5`})})]})]},e.SessionId)}):(0,U.jsx)(`div`,{className:`rounded-xl border border-dashed border-black/[0.08] px-3 py-8 text-center text-xs text-sidebar-text-muted dark:border-white/[0.1]`,children:`没有匹配的会话`}),u?(0,U.jsxs)(`div`,{className:`flex items-center justify-center gap-2 px-3 py-3 text-xs text-sidebar-text-muted`,children:[(0,U.jsx)(TN,{className:`h-3.5 w-3.5 animate-spin`}),(0,U.jsx)(`span`,{children:`加载中`})]}):null]})]}),(0,U.jsxs)(`div`,{className:`border-t border-black/[0.06] px-4 py-3 text-center dark:border-white/[0.08]`,children:[(0,U.jsx)(`div`,{className:`text-[10px] font-medium tracking-[0.14em] text-sidebar-text-muted`,children:`POWERED BY`}),(0,U.jsx)(`div`,{className:`mt-1 bg-gradient-to-r from-blue-600 to-indigo-500 bg-clip-text text-xs font-bold text-transparent dark:from-blue-400 dark:to-indigo-300`,children:`Ksyun AgentEngine`}),(0,U.jsx)(`div`,{className:`mx-auto mt-2 max-w-[13rem] text-[10px] leading-4 text-sidebar-text-muted`,children:`Agent 可能产生不准确的信息,请独立验证。`})]})]})}typeof window<`u`&&window.document&&window.document.createElement;function RF(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}function zF(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function BF(...e){return t=>{let n=!1,r=e.map(e=>{let r=zF(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;t{let{children:t,...r}=e,i=b.useMemo(()=>r,Object.values(r));return(0,U.jsx)(n.Provider,{value:i,children:t})};r.displayName=e+`Provider`;function i(r){let i=b.useContext(n);if(i)return i;if(t!==void 0)return t;throw Error(`\`${r}\` must be used within \`${e}\``)}return[r,i]}function UF(e,t=[]){let n=[];function r(t,r){let i=b.createContext(r),a=n.length;n=[...n,r];let o=t=>{let{scope:n,children:r,...o}=t,s=n?.[e]?.[a]||i,c=b.useMemo(()=>o,Object.values(o));return(0,U.jsx)(s.Provider,{value:c,children:r})};o.displayName=t+`Provider`;function s(n,o){let s=o?.[e]?.[a]||i,c=b.useContext(s);if(c)return c;if(r!==void 0)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}return[o,s]}let i=()=>{let t=n.map(e=>b.createContext(e));return function(n){let r=n?.[e]||t;return b.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return i.scopeName=e,[r,WF(i,...t)]}function WF(...e){let t=e[0];if(e.length===1)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return b.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}var GF=globalThis?.document?b.useLayoutEffect:()=>{},KF=b.useId||(()=>void 0),qF=0;function JF(e){let[t,n]=b.useState(KF());return GF(()=>{e||n(e=>e??String(qF++))},[e]),e||(t?`radix-${t}`:``)}var YF=b.useInsertionEffect||GF;function XF({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){let[i,a,o]=ZF({defaultProp:t,onChange:n}),s=e!==void 0,c=s?e:i;{let t=b.useRef(e!==void 0);b.useEffect(()=>{let e=t.current;e!==s&&console.warn(`${r} is changing from ${e?`controlled`:`uncontrolled`} to ${s?`controlled`:`uncontrolled`}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),t.current=s},[s,r])}return[c,b.useCallback(t=>{if(s){let n=QF(t)?t(e):t;n!==e&&o.current?.(n)}else a(t)},[s,e,a,o])]}function ZF({defaultProp:e,onChange:t}){let[n,r]=b.useState(e),i=b.useRef(n),a=b.useRef(t);return YF(()=>{a.current=t},[t]),b.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}function QF(e){return typeof e==`function`}function $F(e){let t=eI(e),n=b.forwardRef((e,n)=>{let{children:r,...i}=e,a=b.Children.toArray(r),o=a.find(nI);if(o){let e=o.props.children,r=a.map(t=>t===o?b.Children.count(e)>1?b.Children.only(null):b.isValidElement(e)?e.props.children:null:t);return(0,U.jsx)(t,{...i,ref:n,children:b.isValidElement(e)?b.cloneElement(e,void 0,r):null})}return(0,U.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function eI(e){let t=b.forwardRef((e,t)=>{let{children:n,...r}=e;if(b.isValidElement(n)){let e=iI(n),i=rI(r,n.props);return n.type!==b.Fragment&&(i.ref=t?BF(t,e):e),b.cloneElement(n,i)}return b.Children.count(n)>1?b.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var tI=Symbol(`radix.slottable`);function nI(e){return b.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===tI}function rI(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function iI(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var aI=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=$F(`Primitive.${t}`),r=b.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,U.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function oI(e,t){e&&xl.flushSync(()=>e.dispatchEvent(t))}function sI(e){let t=b.useRef(e);return b.useEffect(()=>{t.current=e}),b.useMemo(()=>(...e)=>t.current?.(...e),[])}function cI(e,t=globalThis?.document){let n=sI(e);b.useEffect(()=>{let e=e=>{e.key===`Escape`&&n(e)};return t.addEventListener(`keydown`,e,{capture:!0}),()=>t.removeEventListener(`keydown`,e,{capture:!0})},[n,t])}var lI=`DismissableLayer`,uI=`dismissableLayer.update`,dI=`dismissableLayer.pointerDownOutside`,fI=`dismissableLayer.focusOutside`,pI,mI=b.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),hI=b.forwardRef((e,t)=>{let{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:o,onDismiss:s,...c}=e,l=b.useContext(mI),[u,d]=b.useState(null),f=u?.ownerDocument??globalThis?.document,[,p]=b.useState({}),m=VF(t,e=>d(e)),h=Array.from(l.layers),[g]=[...l.layersWithOutsidePointerEventsDisabled].slice(-1),_=h.indexOf(g),v=u?h.indexOf(u):-1,y=l.layersWithOutsidePointerEventsDisabled.size>0,x=v>=_,ee=vI(e=>{let t=e.target,n=[...l.branches].some(e=>e.contains(t));!x||n||(i?.(e),o?.(e),e.defaultPrevented||s?.())},f),te=yI(e=>{let t=e.target;[...l.branches].some(e=>e.contains(t))||(a?.(e),o?.(e),e.defaultPrevented||s?.())},f);return cI(e=>{v===l.layers.size-1&&(r?.(e),!e.defaultPrevented&&s&&(e.preventDefault(),s()))},f),b.useEffect(()=>{if(u)return n&&(l.layersWithOutsidePointerEventsDisabled.size===0&&(pI=f.body.style.pointerEvents,f.body.style.pointerEvents=`none`),l.layersWithOutsidePointerEventsDisabled.add(u)),l.layers.add(u),bI(),()=>{n&&l.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=pI)}},[u,f,n,l]),b.useEffect(()=>()=>{u&&(l.layers.delete(u),l.layersWithOutsidePointerEventsDisabled.delete(u),bI())},[u,l]),b.useEffect(()=>{let e=()=>p({});return document.addEventListener(uI,e),()=>document.removeEventListener(uI,e)},[]),(0,U.jsx)(aI.div,{...c,ref:m,style:{pointerEvents:y?x?`auto`:`none`:void 0,...e.style},onFocusCapture:RF(e.onFocusCapture,te.onFocusCapture),onBlurCapture:RF(e.onBlurCapture,te.onBlurCapture),onPointerDownCapture:RF(e.onPointerDownCapture,ee.onPointerDownCapture)})});hI.displayName=lI;var gI=`DismissableLayerBranch`,_I=b.forwardRef((e,t)=>{let n=b.useContext(mI),r=b.useRef(null),i=VF(t,r);return b.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,U.jsx)(aI.div,{...e,ref:i})});_I.displayName=gI;function vI(e,t=globalThis?.document){let n=sI(e),r=b.useRef(!1),i=b.useRef(()=>{});return b.useEffect(()=>{let e=e=>{if(e.target&&!r.current){let r=function(){xI(dI,n,a,{discrete:!0})},a={originalEvent:e};e.pointerType===`touch`?(t.removeEventListener(`click`,i.current),i.current=r,t.addEventListener(`click`,i.current,{once:!0})):r()}else t.removeEventListener(`click`,i.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener(`pointerdown`,e)},0);return()=>{window.clearTimeout(a),t.removeEventListener(`pointerdown`,e),t.removeEventListener(`click`,i.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function yI(e,t=globalThis?.document){let n=sI(e),r=b.useRef(!1);return b.useEffect(()=>{let e=e=>{e.target&&!r.current&&xI(fI,n,{originalEvent:e},{discrete:!1})};return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function bI(){let e=new CustomEvent(uI);document.dispatchEvent(e)}function xI(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?oI(i,a):i.dispatchEvent(a)}var SI=`focusScope.autoFocusOnMount`,CI=`focusScope.autoFocusOnUnmount`,wI={bubbles:!1,cancelable:!0},TI=`FocusScope`,EI=b.forwardRef((e,t)=>{let{loop:n=!1,trapped:r=!1,onMountAutoFocus:i,onUnmountAutoFocus:a,...o}=e,[s,c]=b.useState(null),l=sI(i),u=sI(a),d=b.useRef(null),f=VF(t,e=>c(e)),p=b.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;b.useEffect(()=>{if(r){let e=function(e){if(p.paused||!s)return;let t=e.target;s.contains(t)?d.current=t:NI(d.current,{select:!0})},t=function(e){if(p.paused||!s)return;let t=e.relatedTarget;t!==null&&(s.contains(t)||NI(d.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&NI(s)};document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return s&&r.observe(s,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,s,p.paused]),b.useEffect(()=>{if(s){PI.add(p);let e=document.activeElement;if(!s.contains(e)){let t=new CustomEvent(SI,wI);s.addEventListener(SI,l),s.dispatchEvent(t),t.defaultPrevented||(DI(LI(kI(s)),{select:!0}),document.activeElement===e&&NI(s))}return()=>{s.removeEventListener(SI,l),setTimeout(()=>{let t=new CustomEvent(CI,wI);s.addEventListener(CI,u),s.dispatchEvent(t),t.defaultPrevented||NI(e??document.body,{select:!0}),s.removeEventListener(CI,u),PI.remove(p)},0)}}},[s,l,u,p]);let m=b.useCallback(e=>{if(!n&&!r||p.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=OI(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&NI(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&NI(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,p.paused]);return(0,U.jsx)(aI.div,{tabIndex:-1,...o,ref:f,onKeyDown:m})});EI.displayName=TI;function DI(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(NI(r,{select:t}),document.activeElement!==n)return}function OI(e){let t=kI(e);return[AI(t,e),AI(t.reverse(),e)]}function kI(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function AI(e,t){for(let n of e)if(!jI(n,{upTo:t}))return n}function jI(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function MI(e){return e instanceof HTMLInputElement&&`select`in e}function NI(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&MI(e)&&t&&e.select()}}var PI=FI();function FI(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=II(e,t),e.unshift(t)},remove(t){e=II(e,t),e[0]?.resume()}}}function II(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function LI(e){return e.filter(e=>e.tagName!==`A`)}var RI=`Portal`,zI=b.forwardRef((e,t)=>{let{container:n,...r}=e,[i,a]=b.useState(!1);GF(()=>a(!0),[]);let o=n||i&&globalThis?.document?.body;return o?xl.createPortal((0,U.jsx)(aI.div,{...r,ref:t}),o):null});zI.displayName=RI;function BI(e,t){return b.useReducer((e,n)=>t[e][n]??e,e)}var VI=e=>{let{present:t,children:n}=e,r=HI(t),i=typeof n==`function`?n({present:r.isPresent}):b.Children.only(n),a=VF(r.ref,WI(i));return typeof n==`function`||r.isPresent?b.cloneElement(i,{ref:a}):null};VI.displayName=`Presence`;function HI(e){let[t,n]=b.useState(),r=b.useRef(null),i=b.useRef(e),a=b.useRef(`none`),[o,s]=BI(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return b.useEffect(()=>{let e=UI(r.current);a.current=o===`mounted`?e:`none`},[o]),GF(()=>{let t=r.current,n=i.current;if(n!==e){let r=a.current,o=UI(t);e?s(`MOUNT`):o===`none`||t?.display===`none`?s(`UNMOUNT`):s(n&&r!==o?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,s]),GF(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,o=a=>{let o=UI(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(s(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},c=e=>{e.target===t&&(a.current=UI(r.current))};return t.addEventListener(`animationstart`,c),t.addEventListener(`animationcancel`,o),t.addEventListener(`animationend`,o),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,c),t.removeEventListener(`animationcancel`,o),t.removeEventListener(`animationend`,o)}}else s(`ANIMATION_END`)},[t,s]),{isPresent:[`mounted`,`unmountSuspended`].includes(o),ref:b.useCallback(e=>{r.current=e?getComputedStyle(e):null,n(e)},[])}}function UI(e){return e?.animationName||`none`}function WI(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var GI=0;function KI(){b.useEffect(()=>{let e=document.querySelectorAll(`[data-radix-focus-guard]`);return document.body.insertAdjacentElement(`afterbegin`,e[0]??qI()),document.body.insertAdjacentElement(`beforeend`,e[1]??qI()),GI++,()=>{GI===1&&document.querySelectorAll(`[data-radix-focus-guard]`).forEach(e=>e.remove()),GI--}},[])}function qI(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}var JI=`right-scroll-bar-position`,YI=`width-before-scroll-bar`,XI=`with-scroll-bars-hidden`,ZI=`--removed-body-scroll-bar-size`;function QI(e,t){return typeof e==`function`?e(t):e&&(e.current=t),e}function $I(e,t){var n=(0,b.useState)(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(e){var t=n.value;t!==e&&(n.value=e,n.callback(e,t))}}}})[0];return n.callback=t,n.facade}var eL=typeof window<`u`?b.useLayoutEffect:b.useEffect,tL=new WeakMap;function nL(e,t){var n=$I(t||null,function(t){return e.forEach(function(e){return QI(e,t)})});return eL(function(){var t=tL.get(n);if(t){var r=new Set(t),i=new Set(e),a=n.current;r.forEach(function(e){i.has(e)||QI(e,null)}),i.forEach(function(e){r.has(e)||QI(e,a)})}tL.set(n,e)},[e]),n}function rL(e){return e}function iL(e,t){t===void 0&&(t=rL);var n=[],r=!1;return{read:function(){if(r)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(e){var i=t(e,r);return n.push(i),function(){n=n.filter(function(e){return e!==i})}},assignSyncMedium:function(e){for(r=!0;n.length;){var t=n;n=[],t.forEach(e)}n={push:function(t){return e(t)},filter:function(){return n}}},assignMedium:function(e){r=!0;var t=[];if(n.length){var i=n;n=[],i.forEach(e),t=n}var a=function(){var n=t;t=[],n.forEach(e)},o=function(){return Promise.resolve().then(a)};o(),n={push:function(e){t.push(e),o()},filter:function(e){return t=t.filter(e),n}}}}}function aL(e){e===void 0&&(e={});var t=iL(null);return t.options=jp({async:!0,ssr:!1},e),t}var oL=function(e){var t=e.sideCar,n=Mp(e,[`sideCar`]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw Error(`Sidecar medium not found`);return b.createElement(r,jp({},n))};oL.isSideCarExport=!0;function sL(e,t){return e.useMedium(t),oL}var cL=aL(),lL=function(){},uL=b.forwardRef(function(e,t){var n=b.useRef(null),r=b.useState({onScrollCapture:lL,onWheelCapture:lL,onTouchMoveCapture:lL}),i=r[0],a=r[1],o=e.forwardProps,s=e.children,c=e.className,l=e.removeScrollBar,u=e.enabled,d=e.shards,f=e.sideCar,p=e.noRelative,m=e.noIsolation,h=e.inert,g=e.allowPinchZoom,_=e.as,v=_===void 0?`div`:_,y=e.gapMode,x=Mp(e,[`forwardProps`,`children`,`className`,`removeScrollBar`,`enabled`,`shards`,`sideCar`,`noRelative`,`noIsolation`,`inert`,`allowPinchZoom`,`as`,`gapMode`]),ee=f,te=nL([n,t]),S=jp(jp({},x),i);return b.createElement(b.Fragment,null,u&&b.createElement(ee,{sideCar:cL,removeScrollBar:l,shards:d,noRelative:p,noIsolation:m,inert:h,setCallbacks:a,allowPinchZoom:!!g,lockRef:n,gapMode:y}),o?b.cloneElement(b.Children.only(s),jp(jp({},S),{ref:te})):b.createElement(v,jp({},S,{className:c,ref:te}),s))});uL.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},uL.classNames={fullWidth:YI,zeroRight:JI};var dL,fL=function(){if(dL)return dL;if(typeof __webpack_nonce__<`u`)return __webpack_nonce__};function pL(){if(!document)return null;var e=document.createElement(`style`);e.type=`text/css`;var t=fL();return t&&e.setAttribute(`nonce`,t),e}function mL(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function hL(e){(document.head||document.getElementsByTagName(`head`)[0]).appendChild(e)}var gL=function(){var e=0,t=null;return{add:function(n){e==0&&(t=pL())&&(mL(t,n),hL(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},_L=function(){var e=gL();return function(t,n){b.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},vL=function(){var e=_L();return function(t){var n=t.styles,r=t.dynamic;return e(n,r),null}},yL={left:0,top:0,right:0,gap:0},bL=function(e){return parseInt(e||``,10)||0},xL=function(e){var t=window.getComputedStyle(document.body),n=t[e===`padding`?`paddingLeft`:`marginLeft`],r=t[e===`padding`?`paddingTop`:`marginTop`],i=t[e===`padding`?`paddingRight`:`marginRight`];return[bL(n),bL(r),bL(i)]},SL=function(e){if(e===void 0&&(e=`margin`),typeof window>`u`)return yL;var t=xL(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},CL=vL(),wL=`data-scroll-locked`,TL=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),` + .${XI} { overflow: hidden ${r}; padding-right: ${s}px ${r}; } - body[${YI}] { + body[${wL}] { overflow: hidden ${r}; overscroll-behavior: contain; ${[t&&`position: relative ${r};`,n===`margin`&&` @@ -108,70 +109,70 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs. `,n===`padding`&&`padding-right: ${s}px ${r};`].filter(Boolean).join(``)} } - .${yI} { + .${JI} { right: ${s}px ${r}; } - .${bI} { + .${YI} { margin-right: ${s}px ${r}; } - .${yI} .${yI} { + .${JI} .${JI} { right: 0 ${r}; } - .${bI} .${bI} { + .${YI} .${YI} { margin-right: 0 ${r}; } - body[${YI}] { - ${SI}: ${s}px; + body[${wL}] { + ${ZI}: ${s}px; } -`},ZI=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},QI=function(){b.useEffect(function(){return document.body.setAttribute(YI,(ZI()+1).toString()),function(){var e=ZI()-1;e<=0?document.body.removeAttribute(YI):document.body.setAttribute(YI,e.toString())}},[])},$I=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;QI();var a=b.useMemo(function(){return qI(i)},[i]);return b.createElement(JI,{styles:XI(a,!t,i,n?``:`!important`)})},eL=!1;if(typeof window<`u`)try{var tL=Object.defineProperty({},"passive",{get:function(){return eL=!0,!0}});window.addEventListener(`test`,tL,tL),window.removeEventListener(`test`,tL,tL)}catch{eL=!1}var nL=eL?{passive:!1}:!1,rL=function(e){return e.tagName===`TEXTAREA`},iL=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!rL(e)&&n[t]===`visible`)},aL=function(e){return iL(e,`overflowY`)},oL=function(e){return iL(e,`overflowX`)},sL=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),uL(e,r)){var i=dL(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},cL=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},lL=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},uL=function(e,t){return e===`v`?aL(t):oL(t)},dL=function(e,t){return e===`v`?cL(t):lL(t)},fL=function(e,t){return e===`h`&&t===`rtl`?-1:1},pL=function(e,t,n,r,i){var a=fL(e,window.getComputedStyle(t).direction),o=a*r,s=n.target,c=t.contains(s),l=!1,u=o>0,d=0,f=0;do{if(!s)break;var p=dL(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&uL(e,s)&&(d+=h,f+=m);var g=s.parentNode;s=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&s!==document.body||c&&(t.contains(s)||t===s));return(u&&(i&&Math.abs(d)<1||!i&&o>d)||!u&&(i&&Math.abs(f)<1||!i&&-o>f))&&(l=!0),l},mL=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},hL=function(e){return[e.deltaX,e.deltaY]},gL=function(e){return e&&`current`in e?e.current:e},_L=function(e,t){return e[0]===t[0]&&e[1]===t[1]},vL=function(e){return` +`},EL=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},DL=function(){b.useEffect(function(){return document.body.setAttribute(wL,(EL()+1).toString()),function(){var e=EL()-1;e<=0?document.body.removeAttribute(wL):document.body.setAttribute(wL,e.toString())}},[])},OL=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;DL();var a=b.useMemo(function(){return SL(i)},[i]);return b.createElement(CL,{styles:TL(a,!t,i,n?``:`!important`)})},kL=!1;if(typeof window<`u`)try{var AL=Object.defineProperty({},"passive",{get:function(){return kL=!0,!0}});window.addEventListener(`test`,AL,AL),window.removeEventListener(`test`,AL,AL)}catch{kL=!1}var jL=kL?{passive:!1}:!1,ML=function(e){return e.tagName===`TEXTAREA`},NL=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!ML(e)&&n[t]===`visible`)},PL=function(e){return NL(e,`overflowY`)},FL=function(e){return NL(e,`overflowX`)},IL=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),zL(e,r)){var i=BL(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},LL=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},RL=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},zL=function(e,t){return e===`v`?PL(t):FL(t)},BL=function(e,t){return e===`v`?LL(t):RL(t)},VL=function(e,t){return e===`h`&&t===`rtl`?-1:1},HL=function(e,t,n,r,i){var a=VL(e,window.getComputedStyle(t).direction),o=a*r,s=n.target,c=t.contains(s),l=!1,u=o>0,d=0,f=0;do{if(!s)break;var p=BL(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&zL(e,s)&&(d+=h,f+=m);var g=s.parentNode;s=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&s!==document.body||c&&(t.contains(s)||t===s));return(u&&(i&&Math.abs(d)<1||!i&&o>d)||!u&&(i&&Math.abs(f)<1||!i&&-o>f))&&(l=!0),l},UL=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},WL=function(e){return[e.deltaX,e.deltaY]},GL=function(e){return e&&`current`in e?e.current:e},KL=function(e,t){return e[0]===t[0]&&e[1]===t[1]},qL=function(e){return` .block-interactivity-${e} {pointer-events: none;} .allow-interactivity-${e} {pointer-events: all;} -`},yL=0,bL=[];function xL(e){var t=b.useRef([]),n=b.useRef([0,0]),r=b.useRef(),i=b.useState(yL++)[0],a=b.useState(UI)[0],o=b.useRef(e);b.useEffect(function(){o.current=e},[e]),b.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=Lp([e.lockRef.current],(e.shards||[]).map(gL),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var s=b.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=mL(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=sL(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=sL(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return pL(h,t,e,h===`h`?s:c,!0)},[]),c=b.useCallback(function(e){var n=e;if(!(!bL.length||bL[bL.length-1]!==a)){var r=`deltaY`in n?hL(n):mL(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&_L(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var c=(o.current.shards||[]).map(gL).filter(Boolean).filter(function(e){return e.contains(n.target)});(c.length>0?s(n,c[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),l=b.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:SL(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),u=b.useCallback(function(e){n.current=mL(e),r.current=void 0},[]),d=b.useCallback(function(t){l(t.type,hL(t),t.target,s(t,e.lockRef.current))},[]),f=b.useCallback(function(t){l(t.type,mL(t),t.target,s(t,e.lockRef.current))},[]);b.useEffect(function(){return bL.push(a),e.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:f}),document.addEventListener(`wheel`,c,nL),document.addEventListener(`touchmove`,c,nL),document.addEventListener(`touchstart`,u,nL),function(){bL=bL.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,c,nL),document.removeEventListener(`touchmove`,c,nL),document.removeEventListener(`touchstart`,u,nL)}},[]);var p=e.removeScrollBar,m=e.inert;return b.createElement(b.Fragment,null,m?b.createElement(a,{styles:vL(i)}):null,p?b.createElement($I,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function SL(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var CL=MI(NI,xL),wL=b.forwardRef(function(e,t){return b.createElement(FI,jp({},e,{ref:t,sideCar:CL}))});wL.classNames=FI.classNames;var TL=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},EL=new WeakMap,DL=new WeakMap,OL={},kL=0,AL=function(e){return e&&(e.host||AL(e.parentNode))},jL=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=AL(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},ML=function(e,t,n,r){var i=jL(t,Array.isArray(e)?e:[e]);OL[n]||(OL[n]=new WeakMap);var a=OL[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(EL.get(e)||0)+1,l=(a.get(e)||0)+1;EL.set(e,c),a.set(e,l),o.push(e),c===1&&i&&DL.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),kL++,function(){o.forEach(function(e){var t=EL.get(e)-1,i=a.get(e)-1;EL.set(e,t),a.set(e,i),t||(DL.has(e)||e.removeAttribute(r),DL.delete(e)),i||e.removeAttribute(n)}),kL--,kL||(EL=new WeakMap,EL=new WeakMap,DL=new WeakMap,OL={})}},NL=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||TL(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),ML(r,i,n,`aria-hidden`)):function(){return null}};function PL(e){let t=FL(e),n=b.forwardRef((e,n)=>{let{children:r,...i}=e,a=b.Children.toArray(r),o=a.find(LL);if(o){let e=o.props.children,r=a.map(t=>t===o?b.Children.count(e)>1?b.Children.only(null):b.isValidElement(e)?e.props.children:null:t);return(0,U.jsx)(t,{...i,ref:n,children:b.isValidElement(e)?b.cloneElement(e,void 0,r):null})}return(0,U.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function FL(e){let t=b.forwardRef((e,t)=>{let{children:n,...r}=e;if(b.isValidElement(n)){let e=zL(n),i=RL(r,n.props);return n.type!==b.Fragment&&(i.ref=t?dF(t,e):e),b.cloneElement(n,i)}return b.Children.count(n)>1?b.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var IL=Symbol(`radix.slottable`);function LL(e){return b.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===IL}function RL(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function zL(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var BL=`Dialog`,[VL,ote]=mF(BL),[HL,UL]=VL(BL),WL=e=>{let{__scopeDialog:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!0}=e,s=b.useRef(null),c=b.useRef(null),[l,u]=xF({prop:r,defaultProp:i??!1,onChange:a,caller:BL});return(0,U.jsx)(HL,{scope:t,triggerRef:s,contentRef:c,contentId:yF(),titleId:yF(),descriptionId:yF(),open:l,onOpenChange:u,onOpenToggle:b.useCallback(()=>u(e=>!e),[u]),modal:o,children:n})};WL.displayName=BL;var GL=`DialogTrigger`,KL=b.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=UL(GL,n),a=fF(t,i.triggerRef);return(0,U.jsx)(AF.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":i.open,"aria-controls":i.contentId,"data-state":fR(i.open),...r,ref:a,onClick:lF(e.onClick,i.onOpenToggle)})});KL.displayName=GL;var qL=`DialogPortal`,[JL,YL]=VL(qL,{forceMount:void 0}),XL=e=>{let{__scopeDialog:t,forceMount:n,children:r,container:i}=e,a=UL(qL,t);return(0,U.jsx)(JL,{scope:t,forceMount:n,children:b.Children.map(r,e=>(0,U.jsx)(fI,{present:n||a.open,children:(0,U.jsx)(uI,{asChild:!0,container:i,children:e})}))})};XL.displayName=qL;var ZL=`DialogOverlay`,QL=b.forwardRef((e,t)=>{let n=YL(ZL,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=UL(ZL,e.__scopeDialog);return a.modal?(0,U.jsx)(fI,{present:r||a.open,children:(0,U.jsx)(eR,{...i,ref:t})}):null});QL.displayName=ZL;var $L=PL(`DialogOverlay.RemoveScroll`),eR=b.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=UL(ZL,n);return(0,U.jsx)(wL,{as:$L,allowPinchZoom:!0,shards:[i.contentRef],children:(0,U.jsx)(AF.div,{"data-state":fR(i.open),...r,ref:t,style:{pointerEvents:`auto`,...r.style}})})}),tR=`DialogContent`,nR=b.forwardRef((e,t)=>{let n=YL(tR,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=UL(tR,e.__scopeDialog);return(0,U.jsx)(fI,{present:r||a.open,children:a.modal?(0,U.jsx)(rR,{...i,ref:t}):(0,U.jsx)(iR,{...i,ref:t})})});nR.displayName=tR;var rR=b.forwardRef((e,t)=>{let n=UL(tR,e.__scopeDialog),r=b.useRef(null),i=fF(t,n.contentRef,r);return b.useEffect(()=>{let e=r.current;if(e)return NL(e)},[]),(0,U.jsx)(aR,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:lF(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:lF(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()}),onFocusOutside:lF(e.onFocusOutside,e=>e.preventDefault())})}),iR=b.forwardRef((e,t)=>{let n=UL(tR,e.__scopeDialog),r=b.useRef(!1),i=b.useRef(!1);return(0,U.jsx)(aR,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),aR=b.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,...o}=e,s=UL(tR,n),c=b.useRef(null),l=fF(t,c);return _I(),(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(ZF,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,U.jsx)(BF,{role:`dialog`,id:s.contentId,"aria-describedby":s.descriptionId,"aria-labelledby":s.titleId,"data-state":fR(s.open),...o,ref:l,onDismiss:()=>s.onOpenChange(!1)})}),(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(hR,{titleId:s.titleId}),(0,U.jsx)(_R,{contentRef:c,descriptionId:s.descriptionId})]})]})}),oR=`DialogTitle`,sR=b.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=UL(oR,n);return(0,U.jsx)(AF.h2,{id:i.titleId,...r,ref:t})});sR.displayName=oR;var cR=`DialogDescription`,lR=b.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=UL(cR,n);return(0,U.jsx)(AF.p,{id:i.descriptionId,...r,ref:t})});lR.displayName=cR;var uR=`DialogClose`,dR=b.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=UL(uR,n);return(0,U.jsx)(AF.button,{type:`button`,...r,ref:t,onClick:lF(e.onClick,()=>i.onOpenChange(!1))})});dR.displayName=uR;function fR(e){return e?`open`:`closed`}var pR=`DialogTitleWarning`,[ste,mR]=pF(pR,{contentName:tR,titleName:oR,docsSlug:`dialog`}),hR=({titleId:e})=>{let t=mR(pR),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users. +`},JL=0,YL=[];function XL(e){var t=b.useRef([]),n=b.useRef([0,0]),r=b.useRef(),i=b.useState(JL++)[0],a=b.useState(vL)[0],o=b.useRef(e);b.useEffect(function(){o.current=e},[e]),b.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=Lp([e.lockRef.current],(e.shards||[]).map(GL),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var s=b.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=UL(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=IL(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=IL(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return HL(h,t,e,h===`h`?s:c,!0)},[]),c=b.useCallback(function(e){var n=e;if(!(!YL.length||YL[YL.length-1]!==a)){var r=`deltaY`in n?WL(n):UL(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&KL(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var c=(o.current.shards||[]).map(GL).filter(Boolean).filter(function(e){return e.contains(n.target)});(c.length>0?s(n,c[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),l=b.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:ZL(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),u=b.useCallback(function(e){n.current=UL(e),r.current=void 0},[]),d=b.useCallback(function(t){l(t.type,WL(t),t.target,s(t,e.lockRef.current))},[]),f=b.useCallback(function(t){l(t.type,UL(t),t.target,s(t,e.lockRef.current))},[]);b.useEffect(function(){return YL.push(a),e.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:f}),document.addEventListener(`wheel`,c,jL),document.addEventListener(`touchmove`,c,jL),document.addEventListener(`touchstart`,u,jL),function(){YL=YL.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,c,jL),document.removeEventListener(`touchmove`,c,jL),document.removeEventListener(`touchstart`,u,jL)}},[]);var p=e.removeScrollBar,m=e.inert;return b.createElement(b.Fragment,null,m?b.createElement(a,{styles:qL(i)}):null,p?b.createElement(OL,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function ZL(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var QL=sL(cL,XL),$L=b.forwardRef(function(e,t){return b.createElement(uL,jp({},e,{ref:t,sideCar:QL}))});$L.classNames=uL.classNames;var eR=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},tR=new WeakMap,nR=new WeakMap,rR={},iR=0,aR=function(e){return e&&(e.host||aR(e.parentNode))},oR=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=aR(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},sR=function(e,t,n,r){var i=oR(t,Array.isArray(e)?e:[e]);rR[n]||(rR[n]=new WeakMap);var a=rR[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(tR.get(e)||0)+1,l=(a.get(e)||0)+1;tR.set(e,c),a.set(e,l),o.push(e),c===1&&i&&nR.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),iR++,function(){o.forEach(function(e){var t=tR.get(e)-1,i=a.get(e)-1;tR.set(e,t),a.set(e,i),t||(nR.has(e)||e.removeAttribute(r),nR.delete(e)),i||e.removeAttribute(n)}),iR--,iR||(tR=new WeakMap,tR=new WeakMap,nR=new WeakMap,rR={})}},cR=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||eR(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),sR(r,i,n,`aria-hidden`)):function(){return null}};function lR(e){let t=uR(e),n=b.forwardRef((e,n)=>{let{children:r,...i}=e,a=b.Children.toArray(r),o=a.find(fR);if(o){let e=o.props.children,r=a.map(t=>t===o?b.Children.count(e)>1?b.Children.only(null):b.isValidElement(e)?e.props.children:null:t);return(0,U.jsx)(t,{...i,ref:n,children:b.isValidElement(e)?b.cloneElement(e,void 0,r):null})}return(0,U.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function uR(e){let t=b.forwardRef((e,t)=>{let{children:n,...r}=e;if(b.isValidElement(n)){let e=mR(n),i=pR(r,n.props);return n.type!==b.Fragment&&(i.ref=t?BF(t,e):e),b.cloneElement(n,i)}return b.Children.count(n)>1?b.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var dR=Symbol(`radix.slottable`);function fR(e){return b.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===dR}function pR(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function mR(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var hR=`Dialog`,[gR,Qte]=UF(hR),[_R,vR]=gR(hR),yR=e=>{let{__scopeDialog:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!0}=e,s=b.useRef(null),c=b.useRef(null),[l,u]=XF({prop:r,defaultProp:i??!1,onChange:a,caller:hR});return(0,U.jsx)(_R,{scope:t,triggerRef:s,contentRef:c,contentId:JF(),titleId:JF(),descriptionId:JF(),open:l,onOpenChange:u,onOpenToggle:b.useCallback(()=>u(e=>!e),[u]),modal:o,children:n})};yR.displayName=hR;var bR=`DialogTrigger`,xR=b.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=vR(bR,n),a=VF(t,i.triggerRef);return(0,U.jsx)(aI.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":i.open,"aria-controls":i.contentId,"data-state":VR(i.open),...r,ref:a,onClick:RF(e.onClick,i.onOpenToggle)})});xR.displayName=bR;var SR=`DialogPortal`,[CR,wR]=gR(SR,{forceMount:void 0}),TR=e=>{let{__scopeDialog:t,forceMount:n,children:r,container:i}=e,a=vR(SR,t);return(0,U.jsx)(CR,{scope:t,forceMount:n,children:b.Children.map(r,e=>(0,U.jsx)(VI,{present:n||a.open,children:(0,U.jsx)(zI,{asChild:!0,container:i,children:e})}))})};TR.displayName=SR;var ER=`DialogOverlay`,DR=b.forwardRef((e,t)=>{let n=wR(ER,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=vR(ER,e.__scopeDialog);return a.modal?(0,U.jsx)(VI,{present:r||a.open,children:(0,U.jsx)(kR,{...i,ref:t})}):null});DR.displayName=ER;var OR=lR(`DialogOverlay.RemoveScroll`),kR=b.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=vR(ER,n);return(0,U.jsx)($L,{as:OR,allowPinchZoom:!0,shards:[i.contentRef],children:(0,U.jsx)(aI.div,{"data-state":VR(i.open),...r,ref:t,style:{pointerEvents:`auto`,...r.style}})})}),AR=`DialogContent`,jR=b.forwardRef((e,t)=>{let n=wR(AR,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=vR(AR,e.__scopeDialog);return(0,U.jsx)(VI,{present:r||a.open,children:a.modal?(0,U.jsx)(MR,{...i,ref:t}):(0,U.jsx)(NR,{...i,ref:t})})});jR.displayName=AR;var MR=b.forwardRef((e,t)=>{let n=vR(AR,e.__scopeDialog),r=b.useRef(null),i=VF(t,n.contentRef,r);return b.useEffect(()=>{let e=r.current;if(e)return cR(e)},[]),(0,U.jsx)(PR,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:RF(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:RF(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()}),onFocusOutside:RF(e.onFocusOutside,e=>e.preventDefault())})}),NR=b.forwardRef((e,t)=>{let n=vR(AR,e.__scopeDialog),r=b.useRef(!1),i=b.useRef(!1);return(0,U.jsx)(PR,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),PR=b.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,...o}=e,s=vR(AR,n),c=b.useRef(null),l=VF(t,c);return KI(),(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(EI,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,U.jsx)(hI,{role:`dialog`,id:s.contentId,"aria-describedby":s.descriptionId,"aria-labelledby":s.titleId,"data-state":VR(s.open),...o,ref:l,onDismiss:()=>s.onOpenChange(!1)})}),(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(ene,{titleId:s.titleId}),(0,U.jsx)(nne,{contentRef:c,descriptionId:s.descriptionId})]})]})}),FR=`DialogTitle`,IR=b.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=vR(FR,n);return(0,U.jsx)(aI.h2,{id:i.titleId,...r,ref:t})});IR.displayName=FR;var LR=`DialogDescription`,RR=b.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=vR(LR,n);return(0,U.jsx)(aI.p,{id:i.descriptionId,...r,ref:t})});RR.displayName=LR;var zR=`DialogClose`,BR=b.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=vR(zR,n);return(0,U.jsx)(aI.button,{type:`button`,...r,ref:t,onClick:RF(e.onClick,()=>i.onOpenChange(!1))})});BR.displayName=zR;function VR(e){return e?`open`:`closed`}var HR=`DialogTitleWarning`,[$te,UR]=HF(HR,{contentName:AR,titleName:FR,docsSlug:`dialog`}),ene=({titleId:e})=>{let t=UR(HR),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users. If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component. -For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return b.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},gR=`DialogDescriptionWarning`,_R=({contentRef:e,descriptionId:t})=>{let n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${mR(gR).contentName}}.`;return b.useEffect(()=>{let r=e.current?.getAttribute(`aria-describedby`);t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},vR=WL,yR=XL,bR=QL,xR=nR,SR=sR,CR=lR,wR=dR,TR=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,ER=hk,DR=(e,t)=>n=>{if(t?.variants==null)return ER(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=TR(t)||TR(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return ER(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},OR=vR,kR=yR,AR=b.forwardRef(({className:e,...t},n)=>(0,U.jsx)(bR,{className:K(`fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,e),...t,ref:n}));AR.displayName=bR.displayName;var jR=DR(`fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500`,{variants:{side:{top:`inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top`,bottom:`inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom`,left:`inset-y-0 left-0 h-full border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left`,right:`inset-y-0 right-0 h-full border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right`}},defaultVariants:{side:`right`}}),MR=b.forwardRef(({side:e=`right`,className:t,children:n,showOverlay:r=!0,showCloseButton:i=!0,...a},o)=>(0,U.jsxs)(kR,{children:[r?(0,U.jsx)(AR,{}):null,(0,U.jsxs)(xR,{ref:o,className:K(jR({side:e}),t),...a,children:[n,i?(0,U.jsxs)(wR,{className:`absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary`,children:[(0,U.jsx)(wN,{className:`h-4 w-4`}),(0,U.jsx)(`span`,{className:`sr-only`,children:`Close`})]}):null]})]}));MR.displayName=xR.displayName;var NR=({className:e,...t})=>(0,U.jsx)(`div`,{className:K(`flex flex-col space-y-2 text-center sm:text-left`,e),...t});NR.displayName=`SheetHeader`;var PR=({className:e,...t})=>(0,U.jsx)(`div`,{className:K(`flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2`,e),...t});PR.displayName=`SheetFooter`;var FR=b.forwardRef(({className:e,...t},n)=>(0,U.jsx)(SR,{ref:n,className:K(`text-lg font-semibold text-foreground`,e),...t}));FR.displayName=SR.displayName;var IR=b.forwardRef(({className:e,...t},n)=>(0,U.jsx)(CR,{ref:n,className:K(`text-sm text-muted-foreground`,e),...t}));IR.displayName=CR.displayName;function LR(e){return String(e.Title||``).trim()||String(e.FirstPrompt||``).trim()||String(e.LastPrompt||``).trim()||String(e.Summary||``).trim()||`新对话`}function RR({uiCapabilities:e,createNewSession:t,deleteSession:n,loadSession:r,loadMoreSessions:i}){let a=Ze(e=>e.sessions),o=Ze(e=>e.currentSessionId),s=Ze(e=>e.pinnedSessionIds),c=Ze(e=>e.isLoadingSessions),l=Ze(e=>e.hasMoreSessions),u=C(e=>e.sidebarOpen),d=C(e=>e.mobileSidebarOpen),{isMobile:f}=Vt(),p=xe(e),{desktopSidebarVisible:m}=tt({isMobile:f,desktopSidebarOpen:u,mobileSidebarOpen:d});return p?f?(0,U.jsx)(OR,{open:d,onOpenChange:e=>C.getState().setMobileSidebarOpen(e),children:(0,U.jsxs)(MR,{side:`left`,className:`w-[88vw] max-w-sm border-slate-200 bg-slate-50 p-0 dark:border-slate-800 dark:bg-slate-950`,children:[(0,U.jsx)(FR,{className:`sr-only`,children:`历史记录`}),(0,U.jsx)(IR,{className:`sr-only`,children:`查看和切换历史对话。`}),(0,U.jsx)(cF,{sessions:a,currentSessionId:o,onCreateNewSession:t,onSelectSession:r,onDeleteSession:(e,t)=>{t.stopPropagation(),n(e)},onTogglePinSession:(e,t)=>{t.stopPropagation(),Ze.getState().togglePinnedSession(e)},onLoadMoreSessions:i,sessionTitle:LR,pinnedSessionIds:s,hasMoreSessions:l,isLoadingSessions:c})]})}):(0,U.jsx)(`aside`,{className:K(`flex-shrink-0 overflow-hidden border-r border-slate-200 transition-[width] duration-300 ease-in-out dark:border-slate-800`,m?`w-[280px]`:`w-0 border-r-0`),children:(0,U.jsx)(cF,{sessions:a,currentSessionId:o,onCreateNewSession:t,onSelectSession:r,onDeleteSession:(e,t)=>{t.stopPropagation(),n(e)},onTogglePinSession:(e,t)=>{t.stopPropagation(),Ze.getState().togglePinnedSession(e)},onLoadMoreSessions:i,sessionTitle:LR,pinnedSessionIds:s,hasMoreSessions:l,isLoadingSessions:c})}):null}function zR(){}function BR(e){let t=[],n=String(e||``),r=n.indexOf(`,`),i=0,a=!1;for(;!a;){r===-1&&(r=n.length,a=!0);let e=n.slice(i,r).trim();(e||!a)&&t.push(e),i=r+1,r=n.indexOf(`,`,i)}return t}function VR(e,t){let n=t||{};return(e[e.length-1]===``?[...e,``]:e).join((n.padRight?` `:``)+`,`+(n.padLeft===!1?``:` `)).trim()}var HR=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,UR=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,WR={};function GR(e,t){return((t||WR).jsx?UR:HR).test(e)}var KR=/[ \t\n\f\r]/g;function qR(e){return typeof e==`object`?e.type===`text`?JR(e.value):!1:JR(e)}function JR(e){return e.replace(KR,``)===``}var YR=class{constructor(e,t,n){this.normal=t,this.property=e,n&&(this.space=n)}};YR.prototype.normal={},YR.prototype.property={},YR.prototype.space=void 0;function XR(e,t){let n={},r={};for(let t of e)Object.assign(n,t.property),Object.assign(r,t.normal);return new YR(n,r,t)}function ZR(e){return e.toLowerCase()}var QR=class{constructor(e,t){this.attribute=t,this.property=e}};QR.prototype.attribute=``,QR.prototype.booleanish=!1,QR.prototype.boolean=!1,QR.prototype.commaOrSpaceSeparated=!1,QR.prototype.commaSeparated=!1,QR.prototype.defined=!1,QR.prototype.mustUseProperty=!1,QR.prototype.number=!1,QR.prototype.overloadedBoolean=!1,QR.prototype.property=``,QR.prototype.spaceSeparated=!1,QR.prototype.space=void 0;var $R=s({boolean:()=>tz,booleanish:()=>nz,commaOrSpaceSeparated:()=>oz,commaSeparated:()=>az,number:()=>q,overloadedBoolean:()=>rz,spaceSeparated:()=>iz}),ez=0,tz=sz(),nz=sz(),rz=sz(),q=sz(),iz=sz(),az=sz(),oz=sz();function sz(){return 2**++ez}var cz=Object.keys($R),lz=class extends QR{constructor(e,t,n,r){let i=-1;if(super(e,t),uz(this,`space`,r),typeof n==`number`)for(;++i4&&n.slice(0,4)===`data`&&Cz.test(t)){if(t.charAt(4)===`-`){let e=t.slice(5).replace(Sz,Ez);r=`data`+e.charAt(0).toUpperCase()+e.slice(1)}else{let e=t.slice(4);if(!Sz.test(e)){let n=e.replace(xz,Tz);n.charAt(0)!==`-`&&(n=`-`+n),t=`data`+n}}i=lz}return new i(r,t)}function Tz(e){return`-`+e.toLowerCase()}function Ez(e){return e.charAt(1).toUpperCase()}var Dz=XR([fz,hz,_z,vz,yz],`html`),Oz=XR([fz,gz,_z,vz,yz],`svg`);function kz(e){let t=String(e||``).trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function Az(e){return e.join(` `).trim()}var jz=o(((e,t)=>{var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,r=/\n/g,i=/^\s*/,a=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,o=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,c=/^[;\s]*/,l=/^\s+|\s+$/g,u=` -`,d=`/`,f=`*`,p=``,m=`comment`,h=`declaration`;function g(e,t){if(typeof e!=`string`)throw TypeError(`First argument must be a string`);if(!e)return[];t||={};var l=1,g=1;function v(e){var t=e.match(r);t&&(l+=t.length);var n=e.lastIndexOf(u);g=~n?e.length-n:g+e.length}function y(){var e={line:l,column:g};return function(t){return t.position=new b(e),te(),t}}function b(e){this.start=e,this.end={line:l,column:g},this.source=t.source}b.prototype.content=e;function x(n){var r=Error(t.source+`:`+l+`:`+g+`: `+n);if(r.reason=n,r.filename=t.source,r.line=l,r.column=g,r.source=e,!t.silent)throw r}function ee(t){var n=t.exec(e);if(n){var r=n[0];return v(r),e=e.slice(r.length),n}}function te(){ee(i)}function S(e){var t;for(e||=[];t=ne();)t!==!1&&e.push(t);return e}function ne(){var t=y();if(!(d!=e.charAt(0)||f!=e.charAt(1))){for(var n=2;p!=e.charAt(n)&&(f!=e.charAt(n)||d!=e.charAt(n+1));)++n;if(n+=2,p===e.charAt(n-1))return x(`End of comment missing`);var r=e.slice(2,n-2);return g+=2,v(r),e=e.slice(n),g+=2,t({type:m,comment:r})}}function re(){var e=y(),t=ee(a);if(t){if(ne(),!ee(o))return x(`property missing ':'`);var r=ee(s),i=e({type:h,property:_(t[0].replace(n,p)),value:r?_(r[0].replace(n,p)):p});return ee(c),i}}function C(){var e=[];S(e);for(var t;t=re();)t!==!1&&(e.push(t),S(e));return e}return te(),C()}function _(e){return e?e.replace(l,p):p}t.exports=g})),Mz=o((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.default=r;var n=t(jz());function r(e,t){let r=null;if(!e||typeof e!=`string`)return r;let i=(0,n.default)(e),a=typeof t==`function`;return i.forEach(e=>{if(e.type!==`declaration`)return;let{property:n,value:i}=e;a?t(n,i,e):i&&(r||={},r[n]=i)}),r}})),Nz=o((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,i=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,o=function(e){return!e||r.test(e)||t.test(e)},s=function(e,t){return t.toUpperCase()},c=function(e,t){return`${t}-`};e.camelCase=function(e,t){return t===void 0&&(t={}),o(e)?e:(e=e.toLowerCase(),e=t.reactCompat?e.replace(a,c):e.replace(i,c),e.replace(n,s))}})),Pz=o(((e,t)=>{var n=(e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}})(Mz()),r=Nz();function i(e,t){var i={};return!e||typeof e!=`string`||(0,n.default)(e,function(e,n){e&&n&&(i[(0,r.camelCase)(e,t)]=n)}),i}i.default=i,t.exports=i})),Fz=Lz(`end`),Iz=Lz(`start`);function Lz(e){return t;function t(t){let n=t&&t.position&&t.position[e]||{};if(typeof n.line==`number`&&n.line>0&&typeof n.column==`number`&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset==`number`&&n.offset>-1?n.offset:void 0}}}function Rz(e){let t=Iz(e),n=Fz(e);if(t&&n)return{start:t,end:n}}function zz(e){return!e||typeof e!=`object`?``:`position`in e||`type`in e?Vz(e.position):`start`in e||`end`in e?Vz(e):`line`in e||`column`in e?Bz(e):``}function Bz(e){return Hz(e&&e.line)+`:`+Hz(e&&e.column)}function Vz(e){return Bz(e&&e.start)+`-`+Bz(e&&e.end)}function Hz(e){return e&&typeof e==`number`?e:1}var Uz=class extends Error{constructor(e,t,n){super(),typeof t==`string`&&(n=t,t=void 0);let r=``,i={},a=!1;if(t&&(i=`line`in t&&`column`in t||`start`in t&&`end`in t?{place:t}:`type`in t?{ancestors:[t],place:t.position}:{...t}),typeof e==`string`?r=e:!i.cause&&e&&(a=!0,r=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof n==`string`){let e=n.indexOf(`:`);e===-1?i.ruleId=n:(i.source=n.slice(0,e),i.ruleId=n.slice(e+1))}if(!i.place&&i.ancestors&&i.ancestors){let e=i.ancestors[i.ancestors.length-1];e&&(i.place=e.position)}let o=i.place&&`start`in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=o?o.column:void 0,this.fatal=void 0,this.file=``,this.message=r,this.line=o?o.line:void 0,this.name=zz(i.place)||`1:1`,this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack==`string`?i.cause.stack:``,this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};Uz.prototype.file=``,Uz.prototype.name=``,Uz.prototype.reason=``,Uz.prototype.message=``,Uz.prototype.stack=``,Uz.prototype.column=void 0,Uz.prototype.line=void 0,Uz.prototype.ancestors=void 0,Uz.prototype.cause=void 0,Uz.prototype.fatal=void 0,Uz.prototype.place=void 0,Uz.prototype.ruleId=void 0,Uz.prototype.source=void 0;var cte=l(Pz(),1),Wz={}.hasOwnProperty,lte=new Map,ute=/[A-Z]/g,dte=new Set([`table`,`tbody`,`thead`,`tfoot`,`tr`]),fte=new Set([`td`,`th`]);function pte(e,t){if(!t||t.Fragment===void 0)throw TypeError("Expected `Fragment` in options");let n=t.filePath||void 0,r;if(t.development){if(typeof t.jsxDEV!=`function`)throw TypeError("Expected `jsxDEV` in options when `development: true`");r=xte(n,t.jsxDEV)}else{if(typeof t.jsx!=`function`)throw TypeError("Expected `jsx` in production options");if(typeof t.jsxs!=`function`)throw TypeError("Expected `jsxs` in production options");r=bte(n,t.jsx,t.jsxs)}let i={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:r,elementAttributeNameCase:t.elementAttributeNameCase||`react`,evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space===`svg`?Oz:Dz,stylePropertyNameCase:t.stylePropertyNameCase||`dom`,tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},a=Gz(i,e,void 0);return a&&typeof a!=`string`?a:i.create(e,i.Fragment,{children:a||void 0},void 0)}function Gz(e,t,n){if(t.type===`element`)return mte(e,t,n);if(t.type===`mdxFlowExpression`||t.type===`mdxTextExpression`)return hte(e,t);if(t.type===`mdxJsxFlowElement`||t.type===`mdxJsxTextElement`)return _te(e,t,n);if(t.type===`mdxjsEsm`)return gte(e,t);if(t.type===`root`)return vte(e,t,n);if(t.type===`text`)return yte(e,t)}function mte(e,t,n){let r=e.schema,i=r;t.tagName.toLowerCase()===`svg`&&r.space===`html`&&(i=Oz,e.schema=i),e.ancestors.push(t);let a=Yz(e,t.tagName,!1),o=Ste(e,t),s=Jz(e,t);return dte.has(t.tagName)&&(s=s.filter(function(e){return typeof e==`string`?!qR(e):!0})),Kz(e,o,a,t),qz(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function hte(e,t){if(t.data&&t.data.estree&&e.evaluater){let n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}Xz(e,t.position)}function gte(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);Xz(e,t.position)}function _te(e,t,n){let r=e.schema,i=r;t.name===`svg`&&r.space===`html`&&(i=Oz,e.schema=i),e.ancestors.push(t);let a=t.name===null?e.Fragment:Yz(e,t.name,!0),o=Cte(e,t),s=Jz(e,t);return Kz(e,o,a,t),qz(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function vte(e,t,n){let r={};return qz(r,Jz(e,t)),e.create(t,e.Fragment,r,n)}function yte(e,t){return t.value}function Kz(e,t,n,r){typeof n!=`string`&&n!==e.Fragment&&e.passNode&&(t.node=r)}function qz(e,t){if(t.length>0){let n=t.length>1?t:t[0];n&&(e.children=n)}}function bte(e,t,n){return r;function r(e,r,i,a){let o=Array.isArray(i.children)?n:t;return a?o(r,i,a):o(r,i)}}function xte(e,t){return n;function n(n,r,i,a){let o=Array.isArray(i.children),s=Iz(n);return t(r,i,a,o,{columnNumber:s?s.column-1:void 0,fileName:e,lineNumber:s?s.line:void 0},void 0)}}function Ste(e,t){let n={},r,i;for(i in t.properties)if(i!==`children`&&Wz.call(t.properties,i)){let a=wte(e,i,t.properties[i]);if(a){let[i,o]=a;e.tableCellAlignToStyle&&i===`align`&&typeof o==`string`&&fte.has(t.tagName)?r=o:n[i]=o}}if(r){let t=n.style||={};t[e.stylePropertyNameCase===`css`?`text-align`:`textAlign`]=r}return n}function Cte(e,t){let n={};for(let r of t.attributes)if(r.type===`mdxJsxExpressionAttribute`)if(r.data&&r.data.estree&&e.evaluater){let t=r.data.estree.body[0];t.type;let i=t.expression;i.type;let a=i.properties[0];a.type,Object.assign(n,e.evaluater.evaluateExpression(a.argument))}else Xz(e,t.position);else{let i=r.name,a;if(r.value&&typeof r.value==`object`)if(r.value.data&&r.value.data.estree&&e.evaluater){let t=r.value.data.estree.body[0];t.type,a=e.evaluater.evaluateExpression(t.expression)}else Xz(e,t.position);else a=r.value===null?!0:r.value;n[i]=a}return n}function Jz(e,t){let n=[],r=-1,i=e.passKeys?new Map:lte;for(;++ri?0:i+t:t>i?i:t,n=n>0?n:0,r.length<1e4)o=Array.from(r),o.unshift(t,n),e.splice(...o);else for(n&&e.splice(t,n);a0?(rB(e,e.length,0,t),e):t}var aB={}.hasOwnProperty;function oB(e){let t={},n=-1;for(;++n13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)==65535||(n&65535)==65534||n>1114111?`�`:String.fromCodePoint(n)}function cB(e){return e.replace(/[\t\n\r ]+/g,` `).replace(/^ | $/g,``).toLowerCase().toUpperCase()}var lB=vB(/[A-Za-z]/),uB=vB(/[\dA-Za-z]/),Nte=vB(/[#-'*+\--9=?A-Z^-~]/);function dB(e){return e!==null&&(e<32||e===127)}var fB=vB(/\d/),Pte=vB(/[\dA-Fa-f]/),Fte=vB(/[!-/:-@[-`{-~]/);function pB(e){return e!==null&&e<-2}function mB(e){return e!==null&&(e<0||e===32)}function hB(e){return e===-2||e===-1||e===32}var gB=vB(/\p{P}|\p{S}/u),_B=vB(/\s/);function vB(e){return t;function t(t){return t!==null&&t>-1&&e.test(String.fromCharCode(t))}}function yB(e){let t=[],n=-1,r=0,i=0;for(;++n55295&&a<57344){let t=e.charCodeAt(n+1);a<56320&&t>56319&&t<57344?(o=String.fromCharCode(a,t),i=1):o=`�`}else o=String.fromCharCode(a);o&&=(t.push(e.slice(r,n),encodeURIComponent(o)),r=n+i+1,``),i&&=(n+=i,0)}return t.join(``)+e.slice(r)}function bB(e,t,n,r){let i=r?r-1:1/0,a=0;return o;function o(r){return hB(r)?(e.enter(n),s(r)):t(r)}function s(r){return hB(r)&&a++o))return;let n=t.events.length,a=n,s,c;for(;a--;)if(t.events[a][0]===`exit`&&t.events[a][1].type===`chunkFlow`){if(s){c=t.events[a][1].end;break}s=!0}for(_(r),e=n;er;){let r=n[i];t.containerState=r[1],r[0].exit.call(t,e)}n.length=r}function v(){i.write([null]),a=void 0,i=void 0,t.containerState._closeFlow=void 0}}function Bte(e,t,n){return bB(e,e.attempt(this.parser.constructs.document,t,n),`linePrefix`,this.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)}function SB(e){if(e===null||mB(e)||_B(e))return 1;if(gB(e))return 2}function CB(e,t,n){let r=[],i=-1;for(;++i1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;let d={...e[r][1].end},f={...e[n][1].start};TB(d,-c),TB(f,c),o={type:c>1?`strongSequence`:`emphasisSequence`,start:d,end:{...e[r][1].end}},s={type:c>1?`strongSequence`:`emphasisSequence`,start:{...e[n][1].start},end:f},a={type:c>1?`strongText`:`emphasisText`,start:{...e[r][1].end},end:{...e[n][1].start}},i={type:c>1?`strong`:`emphasis`,start:{...o.start},end:{...s.end}},e[r][1].end={...o.start},e[n][1].start={...s.end},l=[],e[r][1].end.offset-e[r][1].start.offset&&(l=iB(l,[[`enter`,e[r][1],t],[`exit`,e[r][1],t]])),l=iB(l,[[`enter`,i,t],[`enter`,o,t],[`exit`,o,t],[`enter`,a,t]]),l=iB(l,CB(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),l=iB(l,[[`exit`,a,t],[`enter`,s,t],[`exit`,s,t],[`exit`,i,t]]),e[n][1].end.offset-e[n][1].start.offset?(u=2,l=iB(l,[[`enter`,e[n][1],t],[`exit`,e[n][1],t]])):u=0,rB(e,r-1,n-r+3,l),n=r+l.length-u-2;break}}for(n=-1;++n0&&hB(t)?bB(e,v,`linePrefix`,a+1)(t):v(t)}function v(t){return t===null||pB(t)?e.check(AB,h,b)(t):(e.enter(`codeFlowValue`),y(t))}function y(t){return t===null||pB(t)?(e.exit(`codeFlowValue`),v(t)):(e.consume(t),y)}function b(n){return e.exit(`codeFenced`),t(n)}function x(e,t,n){let i=0;return a;function a(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),c}function c(t){return e.enter(`codeFencedFence`),hB(t)?bB(e,l,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):l(t)}function l(t){return t===s?(e.enter(`codeFencedFenceSequence`),u(t)):n(t)}function u(t){return t===s?(i++,e.consume(t),u):i>=o?(e.exit(`codeFencedFenceSequence`),hB(t)?bB(e,d,`whitespace`)(t):d(t)):n(t)}function d(r){return r===null||pB(r)?(e.exit(`codeFencedFence`),t(r)):n(r)}}}function Qte(e,t,n){let r=this;return i;function i(t){return t===null?n(t):(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),a)}function a(e){return r.parser.lazy[r.now().line]?n(e):t(e)}}var MB={name:`codeIndented`,tokenize:ene},$te={partial:!0,tokenize:tne};function ene(e,t,n){let r=this;return i;function i(t){return e.enter(`codeIndented`),bB(e,a,`linePrefix`,5)(t)}function a(e){let t=r.events[r.events.length-1];return t&&t[1].type===`linePrefix`&&t[2].sliceSerialize(t[1],!0).length>=4?o(e):n(e)}function o(t){return t===null?c(t):pB(t)?e.attempt($te,o,c)(t):(e.enter(`codeFlowValue`),s(t))}function s(t){return t===null||pB(t)?(e.exit(`codeFlowValue`),o(t)):(e.consume(t),s)}function c(n){return e.exit(`codeIndented`),t(n)}}function tne(e,t,n){let r=this;return i;function i(t){return r.parser.lazy[r.now().line]?n(t):pB(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),i):bB(e,a,`linePrefix`,5)(t)}function a(e){let a=r.events[r.events.length-1];return a&&a[1].type===`linePrefix`&&a[2].sliceSerialize(a[1],!0).length>=4?t(e):pB(e)?i(e):n(e)}}var nne={name:`codeText`,previous:ine,resolve:rne,tokenize:ane};function rne(e){let t=e.length-4,n=3,r,i;if((e[n][1].type===`lineEnding`||e[n][1].type===`space`)&&(e[t][1].type===`lineEnding`||e[t][1].type===`space`)){for(r=n;++r=this.left.length+this.right.length)throw RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(e,t,n){let r=t||0;this.setCursor(Math.trunc(e));let i=this.right.splice(this.right.length-r,1/0);return n&&NB(this.left,n),i.reverse()}pop(){return this.setCursor(1/0),this.left.pop()}push(e){this.setCursor(1/0),this.left.push(e)}pushMany(e){this.setCursor(1/0),NB(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),NB(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e=4?t(i):e.interrupt(r.parser.constructs.flow,n,t)(i)}}function FB(e,t,n,r,i,a,o,s,c){let l=c||1/0,u=0;return d;function d(t){return t===60?(e.enter(r),e.enter(i),e.enter(a),e.consume(t),e.exit(a),f):t===null||t===32||t===41||dB(t)?n(t):(e.enter(r),e.enter(o),e.enter(s),e.enter(`chunkString`,{contentType:`string`}),h(t))}function f(n){return n===62?(e.enter(a),e.consume(n),e.exit(a),e.exit(i),e.exit(r),t):(e.enter(s),e.enter(`chunkString`,{contentType:`string`}),p(n))}function p(t){return t===62?(e.exit(`chunkString`),e.exit(s),f(t)):t===null||t===60||pB(t)?n(t):(e.consume(t),t===92?m:p)}function m(t){return t===60||t===62||t===92?(e.consume(t),p):p(t)}function h(i){return!u&&(i===null||i===41||mB(i))?(e.exit(`chunkString`),e.exit(s),e.exit(o),e.exit(r),t(i)):u999||l===null||l===91||l===93&&!c||l===94&&!s&&`_hiddenFootnoteSupport`in o.parser.constructs?n(l):l===93?(e.exit(a),e.enter(i),e.consume(l),e.exit(i),e.exit(r),t):pB(l)?(e.enter(`lineEnding`),e.consume(l),e.exit(`lineEnding`),u):(e.enter(`chunkString`,{contentType:`string`}),d(l))}function d(t){return t===null||t===91||t===93||pB(t)||s++>999?(e.exit(`chunkString`),u(t)):(e.consume(t),c||=!hB(t),t===92?f:d)}function f(t){return t===91||t===92||t===93?(e.consume(t),s++,d):d(t)}}function LB(e,t,n,r,i,a){let o;return s;function s(t){return t===34||t===39||t===40?(e.enter(r),e.enter(i),e.consume(t),e.exit(i),o=t===40?41:t,c):n(t)}function c(n){return n===o?(e.enter(i),e.consume(n),e.exit(i),e.exit(r),t):(e.enter(a),l(n))}function l(t){return t===o?(e.exit(a),c(o)):t===null?n(t):pB(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),bB(e,l,`linePrefix`)):(e.enter(`chunkString`,{contentType:`string`}),u(t))}function u(t){return t===o||t===null||pB(t)?(e.exit(`chunkString`),l(t)):(e.consume(t),t===92?d:u)}function d(t){return t===o||t===92?(e.consume(t),u):u(t)}}function RB(e,t){let n;return r;function r(i){return pB(i)?(e.enter(`lineEnding`),e.consume(i),e.exit(`lineEnding`),n=!0,r):hB(i)?bB(e,r,n?`linePrefix`:`lineSuffix`)(i):t(i)}}var pne={name:`definition`,tokenize:hne},mne={partial:!0,tokenize:gne};function hne(e,t,n){let r=this,i;return a;function a(t){return e.enter(`definition`),o(t)}function o(t){return IB.call(r,e,s,n,`definitionLabel`,`definitionLabelMarker`,`definitionLabelString`)(t)}function s(t){return i=cB(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),c):n(t)}function c(t){return mB(t)?RB(e,l)(t):l(t)}function l(t){return FB(e,u,n,`definitionDestination`,`definitionDestinationLiteral`,`definitionDestinationLiteralMarker`,`definitionDestinationRaw`,`definitionDestinationString`)(t)}function u(t){return e.attempt(mne,d,d)(t)}function d(t){return hB(t)?bB(e,f,`whitespace`)(t):f(t)}function f(a){return a===null||pB(a)?(e.exit(`definition`),r.parser.defined.push(i),t(a)):n(a)}}function gne(e,t,n){return r;function r(t){return mB(t)?RB(e,i)(t):n(t)}function i(t){return LB(e,a,n,`definitionTitle`,`definitionTitleMarker`,`definitionTitleString`)(t)}function a(t){return hB(t)?bB(e,o,`whitespace`)(t):o(t)}function o(e){return e===null||pB(e)?t(e):n(e)}}var _ne={name:`hardBreakEscape`,tokenize:vne};function vne(e,t,n){return r;function r(t){return e.enter(`hardBreakEscape`),e.consume(t),i}function i(r){return pB(r)?(e.exit(`hardBreakEscape`),t(r)):n(r)}}var yne={name:`headingAtx`,resolve:bne,tokenize:xne};function bne(e,t){let n=e.length-2,r=3,i,a;return e[r][1].type===`whitespace`&&(r+=2),n-2>r&&e[n][1].type===`whitespace`&&(n-=2),e[n][1].type===`atxHeadingSequence`&&(r===n-1||n-4>r&&e[n-2][1].type===`whitespace`)&&(n-=r+1===n?2:4),n>r&&(i={type:`atxHeadingText`,start:e[r][1].start,end:e[n][1].end},a={type:`chunkText`,start:e[r][1].start,end:e[n][1].end,contentType:`text`},rB(e,r,n-r+1,[[`enter`,i,t],[`enter`,a,t],[`exit`,a,t],[`exit`,i,t]])),e}function xne(e,t,n){let r=0;return i;function i(t){return e.enter(`atxHeading`),a(t)}function a(t){return e.enter(`atxHeadingSequence`),o(t)}function o(t){return t===35&&r++<6?(e.consume(t),o):t===null||mB(t)?(e.exit(`atxHeadingSequence`),s(t)):n(t)}function s(n){return n===35?(e.enter(`atxHeadingSequence`),c(n)):n===null||pB(n)?(e.exit(`atxHeading`),t(n)):hB(n)?bB(e,s,`whitespace`)(n):(e.enter(`atxHeadingText`),l(n))}function c(t){return t===35?(e.consume(t),c):(e.exit(`atxHeadingSequence`),s(t))}function l(t){return t===null||t===35||mB(t)?(e.exit(`atxHeadingText`),s(t)):(e.consume(t),l)}}var Sne=`address.article.aside.base.basefont.blockquote.body.caption.center.col.colgroup.dd.details.dialog.dir.div.dl.dt.fieldset.figcaption.figure.footer.form.frame.frameset.h1.h2.h3.h4.h5.h6.head.header.hr.html.iframe.legend.li.link.main.menu.menuitem.nav.noframes.ol.optgroup.option.p.param.search.section.summary.table.tbody.td.tfoot.th.thead.title.tr.track.ul`.split(`.`),zB=[`pre`,`script`,`style`,`textarea`],Cne={concrete:!0,name:`htmlFlow`,resolveTo:Ene,tokenize:Dne},wne={partial:!0,tokenize:kne},Tne={partial:!0,tokenize:One};function Ene(e){let t=e.length;for(;t--&&!(e[t][0]===`enter`&&e[t][1].type===`htmlFlow`););return t>1&&e[t-2][1].type===`linePrefix`&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function Dne(e,t,n){let r=this,i,a,o,s,c;return l;function l(e){return u(e)}function u(t){return e.enter(`htmlFlow`),e.enter(`htmlFlowData`),e.consume(t),d}function d(s){return s===33?(e.consume(s),f):s===47?(e.consume(s),a=!0,h):s===63?(e.consume(s),i=3,r.interrupt?t:T):lB(s)?(e.consume(s),o=String.fromCharCode(s),g):n(s)}function f(a){return a===45?(e.consume(a),i=2,p):a===91?(e.consume(a),i=5,s=0,m):lB(a)?(e.consume(a),i=4,r.interrupt?t:T):n(a)}function p(i){return i===45?(e.consume(i),r.interrupt?t:T):n(i)}function m(i){return i===`CDATA[`.charCodeAt(s++)?(e.consume(i),s===6?r.interrupt?t:w:m):n(i)}function h(t){return lB(t)?(e.consume(t),o=String.fromCharCode(t),g):n(t)}function g(s){if(s===null||s===47||s===62||mB(s)){let c=s===47,l=o.toLowerCase();return!c&&!a&&zB.includes(l)?(i=1,r.interrupt?t(s):w(s)):Sne.includes(o.toLowerCase())?(i=6,c?(e.consume(s),_):r.interrupt?t(s):w(s)):(i=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(s):a?v(s):y(s))}return s===45||uB(s)?(e.consume(s),o+=String.fromCharCode(s),g):n(s)}function _(i){return i===62?(e.consume(i),r.interrupt?t:w):n(i)}function v(t){return hB(t)?(e.consume(t),v):re(t)}function y(t){return t===47?(e.consume(t),re):t===58||t===95||lB(t)?(e.consume(t),b):hB(t)?(e.consume(t),y):re(t)}function b(t){return t===45||t===46||t===58||t===95||uB(t)?(e.consume(t),b):x(t)}function x(t){return t===61?(e.consume(t),ee):hB(t)?(e.consume(t),x):y(t)}function ee(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),c=t,te):hB(t)?(e.consume(t),ee):S(t)}function te(t){return t===c?(e.consume(t),c=null,ne):t===null||pB(t)?n(t):(e.consume(t),te)}function S(t){return t===null||t===34||t===39||t===47||t===60||t===61||t===62||t===96||mB(t)?x(t):(e.consume(t),S)}function ne(e){return e===47||e===62||hB(e)?y(e):n(e)}function re(t){return t===62?(e.consume(t),C):n(t)}function C(t){return t===null||pB(t)?w(t):hB(t)?(e.consume(t),C):n(t)}function w(t){return t===45&&i===2?(e.consume(t),se):t===60&&i===1?(e.consume(t),ce):t===62&&i===4?(e.consume(t),E):t===63&&i===3?(e.consume(t),T):t===93&&i===5?(e.consume(t),ue):pB(t)&&(i===6||i===7)?(e.exit(`htmlFlowData`),e.check(wne,de,ie)(t)):t===null||pB(t)?(e.exit(`htmlFlowData`),ie(t)):(e.consume(t),w)}function ie(t){return e.check(Tne,ae,de)(t)}function ae(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),oe}function oe(t){return t===null||pB(t)?ie(t):(e.enter(`htmlFlowData`),w(t))}function se(t){return t===45?(e.consume(t),T):w(t)}function ce(t){return t===47?(e.consume(t),o=``,le):w(t)}function le(t){if(t===62){let n=o.toLowerCase();return zB.includes(n)?(e.consume(t),E):w(t)}return lB(t)&&o.length<8?(e.consume(t),o+=String.fromCharCode(t),le):w(t)}function ue(t){return t===93?(e.consume(t),T):w(t)}function T(t){return t===62?(e.consume(t),E):t===45&&i===2?(e.consume(t),T):w(t)}function E(t){return t===null||pB(t)?(e.exit(`htmlFlowData`),de(t)):(e.consume(t),E)}function de(n){return e.exit(`htmlFlow`),t(n)}}function One(e,t,n){let r=this;return i;function i(t){return pB(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),a):n(t)}function a(e){return r.parser.lazy[r.now().line]?n(e):t(e)}}function kne(e,t,n){return r;function r(r){return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),e.attempt(EB,t,n)}}var Ane={name:`htmlText`,tokenize:jne};function jne(e,t,n){let r=this,i,a,o;return s;function s(t){return e.enter(`htmlText`),e.enter(`htmlTextData`),e.consume(t),c}function c(t){return t===33?(e.consume(t),l):t===47?(e.consume(t),x):t===63?(e.consume(t),y):lB(t)?(e.consume(t),S):n(t)}function l(t){return t===45?(e.consume(t),u):t===91?(e.consume(t),a=0,m):lB(t)?(e.consume(t),v):n(t)}function u(t){return t===45?(e.consume(t),p):n(t)}function d(t){return t===null?n(t):t===45?(e.consume(t),f):pB(t)?(o=d,ce(t)):(e.consume(t),d)}function f(t){return t===45?(e.consume(t),p):d(t)}function p(e){return e===62?se(e):e===45?f(e):d(e)}function m(t){return t===`CDATA[`.charCodeAt(a++)?(e.consume(t),a===6?h:m):n(t)}function h(t){return t===null?n(t):t===93?(e.consume(t),g):pB(t)?(o=h,ce(t)):(e.consume(t),h)}function g(t){return t===93?(e.consume(t),_):h(t)}function _(t){return t===62?se(t):t===93?(e.consume(t),_):h(t)}function v(t){return t===null||t===62?se(t):pB(t)?(o=v,ce(t)):(e.consume(t),v)}function y(t){return t===null?n(t):t===63?(e.consume(t),b):pB(t)?(o=y,ce(t)):(e.consume(t),y)}function b(e){return e===62?se(e):y(e)}function x(t){return lB(t)?(e.consume(t),ee):n(t)}function ee(t){return t===45||uB(t)?(e.consume(t),ee):te(t)}function te(t){return pB(t)?(o=te,ce(t)):hB(t)?(e.consume(t),te):se(t)}function S(t){return t===45||uB(t)?(e.consume(t),S):t===47||t===62||mB(t)?ne(t):n(t)}function ne(t){return t===47?(e.consume(t),se):t===58||t===95||lB(t)?(e.consume(t),re):pB(t)?(o=ne,ce(t)):hB(t)?(e.consume(t),ne):se(t)}function re(t){return t===45||t===46||t===58||t===95||uB(t)?(e.consume(t),re):C(t)}function C(t){return t===61?(e.consume(t),w):pB(t)?(o=C,ce(t)):hB(t)?(e.consume(t),C):ne(t)}function w(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),i=t,ie):pB(t)?(o=w,ce(t)):hB(t)?(e.consume(t),w):(e.consume(t),ae)}function ie(t){return t===i?(e.consume(t),i=void 0,oe):t===null?n(t):pB(t)?(o=ie,ce(t)):(e.consume(t),ie)}function ae(t){return t===null||t===34||t===39||t===60||t===61||t===96?n(t):t===47||t===62||mB(t)?ne(t):(e.consume(t),ae)}function oe(e){return e===47||e===62||mB(e)?ne(e):n(e)}function se(r){return r===62?(e.consume(r),e.exit(`htmlTextData`),e.exit(`htmlText`),t):n(r)}function ce(t){return e.exit(`htmlTextData`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),le}function le(t){return hB(t)?bB(e,ue,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):ue(t)}function ue(t){return e.enter(`htmlTextData`),o(t)}}var BB={name:`labelEnd`,resolveAll:Fne,resolveTo:Ine,tokenize:Lne},Mne={tokenize:Rne},Nne={tokenize:zne},Pne={tokenize:Bne};function Fne(e){let t=-1,n=[];for(;++t=3&&(a===null||pB(a))?(e.exit(`thematicBreak`),t(a)):n(a)}function c(t){return t===i?(e.consume(t),r++,c):(e.exit(`thematicBreakSequence`),hB(t)?bB(e,s,`whitespace`)(t):s(t))}}var UB={continuation:{tokenize:Xne},exit:Qne,name:`list`,tokenize:Yne},qne={partial:!0,tokenize:$ne},Jne={partial:!0,tokenize:Zne};function Yne(e,t,n){let r=this,i=r.events[r.events.length-1],a=i&&i[1].type===`linePrefix`?i[2].sliceSerialize(i[1],!0).length:0,o=0;return s;function s(t){let i=r.containerState.type||(t===42||t===43||t===45?`listUnordered`:`listOrdered`);if(i===`listUnordered`?!r.containerState.marker||t===r.containerState.marker:fB(t)){if(r.containerState.type||(r.containerState.type=i,e.enter(i,{_container:!0})),i===`listUnordered`)return e.enter(`listItemPrefix`),t===42||t===45?e.check(HB,n,l)(t):l(t);if(!r.interrupt||t===49)return e.enter(`listItemPrefix`),e.enter(`listItemValue`),c(t)}return n(t)}function c(t){return fB(t)&&++o<10?(e.consume(t),c):(!r.interrupt||o<2)&&(r.containerState.marker?t===r.containerState.marker:t===41||t===46)?(e.exit(`listItemValue`),l(t)):n(t)}function l(t){return e.enter(`listItemMarker`),e.consume(t),e.exit(`listItemMarker`),r.containerState.marker=r.containerState.marker||t,e.check(EB,r.interrupt?n:u,e.attempt(qne,f,d))}function u(e){return r.containerState.initialBlankLine=!0,a++,f(e)}function d(t){return hB(t)?(e.enter(`listItemPrefixWhitespace`),e.consume(t),e.exit(`listItemPrefixWhitespace`),f):n(t)}function f(n){return r.containerState.size=a+r.sliceSerialize(e.exit(`listItemPrefix`),!0).length,t(n)}}function Xne(e,t,n){let r=this;return r.containerState._closeFlow=void 0,e.check(EB,i,a);function i(n){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,bB(e,t,`listItemIndent`,r.containerState.size+1)(n)}function a(n){return r.containerState.furtherBlankLines||!hB(n)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,o(n)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(Jne,t,o)(n))}function o(i){return r.containerState._closeFlow=!0,r.interrupt=void 0,bB(e,e.attempt(UB,t,n),`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(i)}}function Zne(e,t,n){let r=this;return bB(e,i,`listItemIndent`,r.containerState.size+1);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`listItemIndent`&&i[2].sliceSerialize(i[1],!0).length===r.containerState.size?t(e):n(e)}}function Qne(e){e.exit(this.containerState.type)}function $ne(e,t,n){let r=this;return bB(e,i,`listItemPrefixWhitespace`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:5);function i(e){let i=r.events[r.events.length-1];return!hB(e)&&i&&i[1].type===`listItemPrefixWhitespace`?t(e):n(e)}}var WB={name:`setextUnderline`,resolveTo:ere,tokenize:tre};function ere(e,t){let n=e.length,r,i,a;for(;n--;)if(e[n][0]===`enter`){if(e[n][1].type===`content`){r=n;break}e[n][1].type===`paragraph`&&(i=n)}else e[n][1].type===`content`&&e.splice(n,1),!a&&e[n][1].type===`definition`&&(a=n);let o={type:`setextHeading`,start:{...e[r][1].start},end:{...e[e.length-1][1].end}};return e[i][1].type=`setextHeadingText`,a?(e.splice(i,0,[`enter`,o,t]),e.splice(a+1,0,[`exit`,e[r][1],t]),e[r][1].end={...e[a][1].end}):e[r][1]=o,e.push([`exit`,o,t]),e}function tre(e,t,n){let r=this,i;return a;function a(t){let a=r.events.length,s;for(;a--;)if(r.events[a][1].type!==`lineEnding`&&r.events[a][1].type!==`linePrefix`&&r.events[a][1].type!==`content`){s=r.events[a][1].type===`paragraph`;break}return!r.parser.lazy[r.now().line]&&(r.interrupt||s)?(e.enter(`setextHeadingLine`),i=t,o(t)):n(t)}function o(t){return e.enter(`setextHeadingLineSequence`),s(t)}function s(t){return t===i?(e.consume(t),s):(e.exit(`setextHeadingLineSequence`),hB(t)?bB(e,c,`lineSuffix`)(t):c(t))}function c(r){return r===null||pB(r)?(e.exit(`setextHeadingLine`),t(r)):n(r)}}var nre={tokenize:rre};function rre(e){let t=this,n=e.attempt(EB,r,e.attempt(this.parser.constructs.flowInitial,i,bB(e,e.attempt(this.parser.constructs.flow,i,e.attempt(cne,i)),`linePrefix`)));return n;function r(r){if(r===null){e.consume(r);return}return e.enter(`lineEndingBlank`),e.consume(r),e.exit(`lineEndingBlank`),t.currentConstruct=void 0,n}function i(r){if(r===null){e.consume(r);return}return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),t.currentConstruct=void 0,n}}var ire={resolveAll:KB()},are=GB(`string`),ore=GB(`text`);function GB(e){return{resolveAll:KB(e===`text`?sre:void 0),tokenize:t};function t(t){let n=this,r=this.parser.constructs[e],i=t.attempt(r,a,o);return a;function a(e){return c(e)?i(e):o(e)}function o(e){if(e===null){t.consume(e);return}return t.enter(`data`),t.consume(e),s}function s(e){return c(e)?(t.exit(`data`),i(e)):(t.consume(e),s)}function c(e){if(e===null)return!0;let t=r[e],i=-1;if(t)for(;++igre,contentInitial:()=>ure,disable:()=>_re,document:()=>lre,flow:()=>fre,flowInitial:()=>dre,insideSpan:()=>hre,string:()=>pre,text:()=>mre}),lre={42:UB,43:UB,45:UB,48:UB,49:UB,50:UB,51:UB,52:UB,53:UB,54:UB,55:UB,56:UB,57:UB,62:DB},ure={91:pne},dre={[-2]:MB,[-1]:MB,32:MB},fre={35:yne,42:HB,45:[WB,HB],60:Cne,61:WB,95:HB,96:jB,126:jB},pre={38:kB,92:OB},mre={[-5]:VB,[-4]:VB,[-3]:VB,33:Vne,38:kB,42:wB,60:[Ute,Ane],91:Une,92:[_ne,OB],93:BB,95:wB,96:nne},hre={null:[wB,ire]},gre={null:[42,95]},_re={null:[]};function vre(e,t,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0},i={},a=[],o=[],s=[],c={attempt:te(x),check:te(ee),consume:v,enter:y,exit:b,interrupt:te(ee,{interrupt:!0})},l={code:null,containerState:{},defineSkip:h,events:[],now:m,parser:e,previous:null,sliceSerialize:f,sliceStream:p,write:d},u=t.tokenize.call(l,c);return t.resolveAll&&a.push(t),l;function d(e){return o=iB(o,e),g(),o[o.length-1]===null?(S(t,0),l.events=CB(a,l.events,l),l.events):[]}function f(e,t){return bre(p(e),t)}function p(e){return yre(o,e)}function m(){let{_bufferIndex:e,_index:t,line:n,column:i,offset:a}=r;return{_bufferIndex:e,_index:t,line:n,column:i,offset:a}}function h(e){i[e.line]=e.column,re()}function g(){let e;for(;r._index-1){let e=o[0];typeof e==`string`?o[0]=e.slice(r):o.shift()}a>0&&o.push(e[i].slice(0,a))}return o}function bre(e,t){let n=-1,r=[],i;for(;++n{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},tne=`DialogDescriptionWarning`,nne=({contentRef:e,descriptionId:t})=>{let n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${UR(tne).contentName}}.`;return b.useEffect(()=>{let r=e.current?.getAttribute(`aria-describedby`);t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},WR=yR,GR=TR,KR=DR,qR=jR,JR=IR,YR=RR,XR=BR,ZR=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,QR=UO,rne=(e,t)=>n=>{if(t?.variants==null)return QR(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=ZR(t)||ZR(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return QR(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},$R=WR,ine=GR,ez=b.forwardRef(({className:e,...t},n)=>(0,U.jsx)(KR,{className:K(`fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,e),...t,ref:n}));ez.displayName=KR.displayName;var ane=rne(`fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500`,{variants:{side:{top:`inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top`,bottom:`inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom`,left:`inset-y-0 left-0 h-full border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left`,right:`inset-y-0 right-0 h-full border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right`}},defaultVariants:{side:`right`}}),tz=b.forwardRef(({side:e=`right`,className:t,children:n,showOverlay:r=!0,showCloseButton:i=!0,...a},o)=>(0,U.jsxs)(ine,{children:[r?(0,U.jsx)(ez,{}):null,(0,U.jsxs)(qR,{ref:o,className:K(ane({side:e}),t),...a,children:[n,i?(0,U.jsxs)(XR,{className:`absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary`,children:[(0,U.jsx)($N,{className:`h-4 w-4`}),(0,U.jsx)(`span`,{className:`sr-only`,children:`Close`})]}):null]})]}));tz.displayName=qR.displayName;var nz=({className:e,...t})=>(0,U.jsx)(`div`,{className:K(`flex flex-col space-y-2 text-center sm:text-left`,e),...t});nz.displayName=`SheetHeader`;var one=({className:e,...t})=>(0,U.jsx)(`div`,{className:K(`flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2`,e),...t});one.displayName=`SheetFooter`;var rz=b.forwardRef(({className:e,...t},n)=>(0,U.jsx)(JR,{ref:n,className:K(`text-lg font-semibold text-foreground`,e),...t}));rz.displayName=JR.displayName;var iz=b.forwardRef(({className:e,...t},n)=>(0,U.jsx)(YR,{ref:n,className:K(`text-sm text-muted-foreground`,e),...t}));iz.displayName=YR.displayName;function az(e){return String(e.Title||``).trim()||String(e.FirstPrompt||``).trim()||String(e.LastPrompt||``).trim()||String(e.Summary||``).trim()||`新对话`}function sne({uiCapabilities:e,createNewSession:t,deleteSession:n,loadSession:r,loadMoreSessions:i}){let a=Ze(e=>e.sessions),o=Ze(e=>e.currentSessionId),s=Ze(e=>e.pinnedSessionIds),c=Ze(e=>e.isLoadingSessions),l=Ze(e=>e.hasMoreSessions),u=C(e=>e.sidebarOpen),d=C(e=>e.mobileSidebarOpen),{isMobile:f}=Vt(),p=xe(e),{desktopSidebarVisible:m}=tt({isMobile:f,desktopSidebarOpen:u,mobileSidebarOpen:d});return p?f?(0,U.jsx)($R,{open:d,onOpenChange:e=>C.getState().setMobileSidebarOpen(e),children:(0,U.jsxs)(tz,{side:`left`,className:`w-[88vw] max-w-sm border-slate-200 bg-slate-50 p-0 dark:border-slate-800 dark:bg-slate-950`,children:[(0,U.jsx)(rz,{className:`sr-only`,children:`历史记录`}),(0,U.jsx)(iz,{className:`sr-only`,children:`查看和切换历史对话。`}),(0,U.jsx)(LF,{sessions:a,currentSessionId:o,onCreateNewSession:t,onSelectSession:r,onDeleteSession:(e,t)=>{t.stopPropagation(),n(e)},onTogglePinSession:(e,t)=>{t.stopPropagation(),Ze.getState().togglePinnedSession(e)},onLoadMoreSessions:i,sessionTitle:az,pinnedSessionIds:s,hasMoreSessions:l,isLoadingSessions:c})]})}):(0,U.jsx)(`aside`,{className:K(`flex-shrink-0 overflow-hidden border-r border-slate-200 transition-[width] duration-300 ease-in-out dark:border-slate-800`,m?`w-[280px]`:`w-0 border-r-0`),children:(0,U.jsx)(LF,{sessions:a,currentSessionId:o,onCreateNewSession:t,onSelectSession:r,onDeleteSession:(e,t)=>{t.stopPropagation(),n(e)},onTogglePinSession:(e,t)=>{t.stopPropagation(),Ze.getState().togglePinnedSession(e)},onLoadMoreSessions:i,sessionTitle:az,pinnedSessionIds:s,hasMoreSessions:l,isLoadingSessions:c})}):null}function cne(){}function lne(e){let t=[],n=String(e||``),r=n.indexOf(`,`),i=0,a=!1;for(;!a;){r===-1&&(r=n.length,a=!0);let e=n.slice(i,r).trim();(e||!a)&&t.push(e),i=r+1,r=n.indexOf(`,`,i)}return t}function une(e,t){let n=t||{};return(e[e.length-1]===``?[...e,``]:e).join((n.padRight?` `:``)+`,`+(n.padLeft===!1?``:` `)).trim()}var dne=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,fne=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,pne={};function oz(e,t){return((t||pne).jsx?fne:dne).test(e)}var mne=/[ \t\n\f\r]/g;function hne(e){return typeof e==`object`?e.type===`text`?sz(e.value):!1:sz(e)}function sz(e){return e.replace(mne,``)===``}var cz=class{constructor(e,t,n){this.normal=t,this.property=e,n&&(this.space=n)}};cz.prototype.normal={},cz.prototype.property={},cz.prototype.space=void 0;function lz(e,t){let n={},r={};for(let t of e)Object.assign(n,t.property),Object.assign(r,t.normal);return new cz(n,r,t)}function uz(e){return e.toLowerCase()}var dz=class{constructor(e,t){this.attribute=t,this.property=e}};dz.prototype.attribute=``,dz.prototype.booleanish=!1,dz.prototype.boolean=!1,dz.prototype.commaOrSpaceSeparated=!1,dz.prototype.commaSeparated=!1,dz.prototype.defined=!1,dz.prototype.mustUseProperty=!1,dz.prototype.number=!1,dz.prototype.overloadedBoolean=!1,dz.prototype.property=``,dz.prototype.spaceSeparated=!1,dz.prototype.space=void 0;var fz=s({boolean:()=>pz,booleanish:()=>mz,commaOrSpaceSeparated:()=>vz,commaSeparated:()=>_z,number:()=>q,overloadedBoolean:()=>hz,spaceSeparated:()=>gz}),gne=0,pz=yz(),mz=yz(),hz=yz(),q=yz(),gz=yz(),_z=yz(),vz=yz();function yz(){return 2**++gne}var bz=Object.keys(fz),xz=class extends dz{constructor(e,t,n,r){let i=-1;if(super(e,t),Sz(this,`space`,r),typeof n==`number`)for(;++i4&&n.slice(0,4)===`data`&&xne.test(t)){if(t.charAt(4)===`-`){let e=t.slice(5).replace(Az,Cne);r=`data`+e.charAt(0).toUpperCase()+e.slice(1)}else{let e=t.slice(4);if(!Az.test(e)){let n=e.replace(bne,Sne);n.charAt(0)!==`-`&&(n=`-`+n),t=`data`+n}}i=xz}return new i(r,t)}function Sne(e){return`-`+e.toLowerCase()}function Cne(e){return e.charAt(1).toUpperCase()}var Mz=lz([wz,_ne,Dz,Oz,kz],`html`),Nz=lz([wz,vne,Dz,Oz,kz],`svg`);function wne(e){let t=String(e||``).trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function Tne(e){return e.join(` `).trim()}var Ene=o(((e,t)=>{var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,r=/\n/g,i=/^\s*/,a=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,o=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,c=/^[;\s]*/,l=/^\s+|\s+$/g,u=` +`,d=`/`,f=`*`,p=``,m=`comment`,h=`declaration`;function g(e,t){if(typeof e!=`string`)throw TypeError(`First argument must be a string`);if(!e)return[];t||={};var l=1,g=1;function v(e){var t=e.match(r);t&&(l+=t.length);var n=e.lastIndexOf(u);g=~n?e.length-n:g+e.length}function y(){var e={line:l,column:g};return function(t){return t.position=new b(e),te(),t}}function b(e){this.start=e,this.end={line:l,column:g},this.source=t.source}b.prototype.content=e;function x(n){var r=Error(t.source+`:`+l+`:`+g+`: `+n);if(r.reason=n,r.filename=t.source,r.line=l,r.column=g,r.source=e,!t.silent)throw r}function ee(t){var n=t.exec(e);if(n){var r=n[0];return v(r),e=e.slice(r.length),n}}function te(){ee(i)}function S(e){var t;for(e||=[];t=ne();)t!==!1&&e.push(t);return e}function ne(){var t=y();if(!(d!=e.charAt(0)||f!=e.charAt(1))){for(var n=2;p!=e.charAt(n)&&(f!=e.charAt(n)||d!=e.charAt(n+1));)++n;if(n+=2,p===e.charAt(n-1))return x(`End of comment missing`);var r=e.slice(2,n-2);return g+=2,v(r),e=e.slice(n),g+=2,t({type:m,comment:r})}}function re(){var e=y(),t=ee(a);if(t){if(ne(),!ee(o))return x(`property missing ':'`);var r=ee(s),i=e({type:h,property:_(t[0].replace(n,p)),value:r?_(r[0].replace(n,p)):p});return ee(c),i}}function C(){var e=[];S(e);for(var t;t=re();)t!==!1&&(e.push(t),S(e));return e}return te(),C()}function _(e){return e?e.replace(l,p):p}t.exports=g})),Dne=o((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.default=r;var n=t(Ene());function r(e,t){let r=null;if(!e||typeof e!=`string`)return r;let i=(0,n.default)(e),a=typeof t==`function`;return i.forEach(e=>{if(e.type!==`declaration`)return;let{property:n,value:i}=e;a?t(n,i,e):i&&(r||={},r[n]=i)}),r}})),One=o((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,i=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,o=function(e){return!e||r.test(e)||t.test(e)},s=function(e,t){return t.toUpperCase()},c=function(e,t){return`${t}-`};e.camelCase=function(e,t){return t===void 0&&(t={}),o(e)?e:(e=e.toLowerCase(),e=t.reactCompat?e.replace(a,c):e.replace(i,c),e.replace(n,s))}})),kne=o(((e,t)=>{var n=(e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}})(Dne()),r=One();function i(e,t){var i={};return!e||typeof e!=`string`||(0,n.default)(e,function(e,n){e&&n&&(i[(0,r.camelCase)(e,t)]=n)}),i}i.default=i,t.exports=i})),Pz=Iz(`end`),Fz=Iz(`start`);function Iz(e){return t;function t(t){let n=t&&t.position&&t.position[e]||{};if(typeof n.line==`number`&&n.line>0&&typeof n.column==`number`&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset==`number`&&n.offset>-1?n.offset:void 0}}}function Ane(e){let t=Fz(e),n=Pz(e);if(t&&n)return{start:t,end:n}}function Lz(e){return!e||typeof e!=`object`?``:`position`in e||`type`in e?zz(e.position):`start`in e||`end`in e?zz(e):`line`in e||`column`in e?Rz(e):``}function Rz(e){return Bz(e&&e.line)+`:`+Bz(e&&e.column)}function zz(e){return Rz(e&&e.start)+`-`+Rz(e&&e.end)}function Bz(e){return e&&typeof e==`number`?e:1}var Vz=class extends Error{constructor(e,t,n){super(),typeof t==`string`&&(n=t,t=void 0);let r=``,i={},a=!1;if(t&&(i=`line`in t&&`column`in t||`start`in t&&`end`in t?{place:t}:`type`in t?{ancestors:[t],place:t.position}:{...t}),typeof e==`string`?r=e:!i.cause&&e&&(a=!0,r=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof n==`string`){let e=n.indexOf(`:`);e===-1?i.ruleId=n:(i.source=n.slice(0,e),i.ruleId=n.slice(e+1))}if(!i.place&&i.ancestors&&i.ancestors){let e=i.ancestors[i.ancestors.length-1];e&&(i.place=e.position)}let o=i.place&&`start`in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=o?o.column:void 0,this.fatal=void 0,this.file=``,this.message=r,this.line=o?o.line:void 0,this.name=Lz(i.place)||`1:1`,this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack==`string`?i.cause.stack:``,this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};Vz.prototype.file=``,Vz.prototype.name=``,Vz.prototype.reason=``,Vz.prototype.message=``,Vz.prototype.stack=``,Vz.prototype.column=void 0,Vz.prototype.line=void 0,Vz.prototype.ancestors=void 0,Vz.prototype.cause=void 0,Vz.prototype.fatal=void 0,Vz.prototype.place=void 0,Vz.prototype.ruleId=void 0,Vz.prototype.source=void 0;var jne=l(kne(),1),Hz={}.hasOwnProperty,Mne=new Map,Nne=/[A-Z]/g,Pne=new Set([`table`,`tbody`,`thead`,`tfoot`,`tr`]),Fne=new Set([`td`,`th`]);function Ine(e,t){if(!t||t.Fragment===void 0)throw TypeError("Expected `Fragment` in options");let n=t.filePath||void 0,r;if(t.development){if(typeof t.jsxDEV!=`function`)throw TypeError("Expected `jsxDEV` in options when `development: true`");r=Wne(n,t.jsxDEV)}else{if(typeof t.jsx!=`function`)throw TypeError("Expected `jsx` in production options");if(typeof t.jsxs!=`function`)throw TypeError("Expected `jsxs` in production options");r=Une(n,t.jsx,t.jsxs)}let i={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:r,elementAttributeNameCase:t.elementAttributeNameCase||`react`,evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space===`svg`?Nz:Mz,stylePropertyNameCase:t.stylePropertyNameCase||`dom`,tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},a=Uz(i,e,void 0);return a&&typeof a!=`string`?a:i.create(e,i.Fragment,{children:a||void 0},void 0)}function Uz(e,t,n){if(t.type===`element`)return Lne(e,t,n);if(t.type===`mdxFlowExpression`||t.type===`mdxTextExpression`)return Rne(e,t);if(t.type===`mdxJsxFlowElement`||t.type===`mdxJsxTextElement`)return Bne(e,t,n);if(t.type===`mdxjsEsm`)return zne(e,t);if(t.type===`root`)return Vne(e,t,n);if(t.type===`text`)return Hne(e,t)}function Lne(e,t,n){let r=e.schema,i=r;t.tagName.toLowerCase()===`svg`&&r.space===`html`&&(i=Nz,e.schema=i),e.ancestors.push(t);let a=qz(e,t.tagName,!1),o=Gne(e,t),s=Kz(e,t);return Pne.has(t.tagName)&&(s=s.filter(function(e){return typeof e==`string`?!hne(e):!0})),Wz(e,o,a,t),Gz(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function Rne(e,t){if(t.data&&t.data.estree&&e.evaluater){let n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}Jz(e,t.position)}function zne(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);Jz(e,t.position)}function Bne(e,t,n){let r=e.schema,i=r;t.name===`svg`&&r.space===`html`&&(i=Nz,e.schema=i),e.ancestors.push(t);let a=t.name===null?e.Fragment:qz(e,t.name,!0),o=Kne(e,t),s=Kz(e,t);return Wz(e,o,a,t),Gz(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function Vne(e,t,n){let r={};return Gz(r,Kz(e,t)),e.create(t,e.Fragment,r,n)}function Hne(e,t){return t.value}function Wz(e,t,n,r){typeof n!=`string`&&n!==e.Fragment&&e.passNode&&(t.node=r)}function Gz(e,t){if(t.length>0){let n=t.length>1?t:t[0];n&&(e.children=n)}}function Une(e,t,n){return r;function r(e,r,i,a){let o=Array.isArray(i.children)?n:t;return a?o(r,i,a):o(r,i)}}function Wne(e,t){return n;function n(n,r,i,a){let o=Array.isArray(i.children),s=Fz(n);return t(r,i,a,o,{columnNumber:s?s.column-1:void 0,fileName:e,lineNumber:s?s.line:void 0},void 0)}}function Gne(e,t){let n={},r,i;for(i in t.properties)if(i!==`children`&&Hz.call(t.properties,i)){let a=qne(e,i,t.properties[i]);if(a){let[i,o]=a;e.tableCellAlignToStyle&&i===`align`&&typeof o==`string`&&Fne.has(t.tagName)?r=o:n[i]=o}}if(r){let t=n.style||={};t[e.stylePropertyNameCase===`css`?`text-align`:`textAlign`]=r}return n}function Kne(e,t){let n={};for(let r of t.attributes)if(r.type===`mdxJsxExpressionAttribute`)if(r.data&&r.data.estree&&e.evaluater){let t=r.data.estree.body[0];t.type;let i=t.expression;i.type;let a=i.properties[0];a.type,Object.assign(n,e.evaluater.evaluateExpression(a.argument))}else Jz(e,t.position);else{let i=r.name,a;if(r.value&&typeof r.value==`object`)if(r.value.data&&r.value.data.estree&&e.evaluater){let t=r.value.data.estree.body[0];t.type,a=e.evaluater.evaluateExpression(t.expression)}else Jz(e,t.position);else a=r.value===null?!0:r.value;n[i]=a}return n}function Kz(e,t){let n=[],r=-1,i=e.passKeys?new Map:Mne;for(;++ri?0:i+t:t>i?i:t,n=n>0?n:0,r.length<1e4)o=Array.from(r),o.unshift(t,n),e.splice(...o);else for(n&&e.splice(t,n);a0?(tB(e,e.length,0,t),e):t}var rB={}.hasOwnProperty;function iB(e){let t={},n=-1;for(;++n13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)==65535||(n&65535)==65534||n>1114111?`�`:String.fromCodePoint(n)}function oB(e){return e.replace(/[\t\n\r ]+/g,` `).replace(/^ | $/g,``).toLowerCase().toUpperCase()}var sB=gB(/[A-Za-z]/),cB=gB(/[\dA-Za-z]/),nre=gB(/[#-'*+\--9=?A-Z^-~]/);function lB(e){return e!==null&&(e<32||e===127)}var uB=gB(/\d/),rre=gB(/[\dA-Fa-f]/),ire=gB(/[!-/:-@[-`{-~]/);function dB(e){return e!==null&&e<-2}function fB(e){return e!==null&&(e<0||e===32)}function pB(e){return e===-2||e===-1||e===32}var mB=gB(/\p{P}|\p{S}/u),hB=gB(/\s/);function gB(e){return t;function t(t){return t!==null&&t>-1&&e.test(String.fromCharCode(t))}}function _B(e){let t=[],n=-1,r=0,i=0;for(;++n55295&&a<57344){let t=e.charCodeAt(n+1);a<56320&&t>56319&&t<57344?(o=String.fromCharCode(a,t),i=1):o=`�`}else o=String.fromCharCode(a);o&&=(t.push(e.slice(r,n),encodeURIComponent(o)),r=n+i+1,``),i&&=(n+=i,0)}return t.join(``)+e.slice(r)}function vB(e,t,n,r){let i=r?r-1:1/0,a=0;return o;function o(r){return pB(r)?(e.enter(n),s(r)):t(r)}function s(r){return pB(r)&&a++o))return;let n=t.events.length,a=n,s,c;for(;a--;)if(t.events[a][0]===`exit`&&t.events[a][1].type===`chunkFlow`){if(s){c=t.events[a][1].end;break}s=!0}for(_(r),e=n;er;){let r=n[i];t.containerState=r[1],r[0].exit.call(t,e)}n.length=r}function v(){i.write([null]),a=void 0,i=void 0,t.containerState._closeFlow=void 0}}function lre(e,t,n){return vB(e,e.attempt(this.parser.constructs.document,t,n),`linePrefix`,this.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)}function bB(e){if(e===null||fB(e)||hB(e))return 1;if(mB(e))return 2}function xB(e,t,n){let r=[],i=-1;for(;++i1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;let d={...e[r][1].end},f={...e[n][1].start};CB(d,-c),CB(f,c),o={type:c>1?`strongSequence`:`emphasisSequence`,start:d,end:{...e[r][1].end}},s={type:c>1?`strongSequence`:`emphasisSequence`,start:{...e[n][1].start},end:f},a={type:c>1?`strongText`:`emphasisText`,start:{...e[r][1].end},end:{...e[n][1].start}},i={type:c>1?`strong`:`emphasis`,start:{...o.start},end:{...s.end}},e[r][1].end={...o.start},e[n][1].start={...s.end},l=[],e[r][1].end.offset-e[r][1].start.offset&&(l=nB(l,[[`enter`,e[r][1],t],[`exit`,e[r][1],t]])),l=nB(l,[[`enter`,i,t],[`enter`,o,t],[`exit`,o,t],[`enter`,a,t]]),l=nB(l,xB(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),l=nB(l,[[`exit`,a,t],[`enter`,s,t],[`exit`,s,t],[`exit`,i,t]]),e[n][1].end.offset-e[n][1].start.offset?(u=2,l=nB(l,[[`enter`,e[n][1],t],[`exit`,e[n][1],t]])):u=0,tB(e,r-1,n-r+3,l),n=r+l.length-u-2;break}}for(n=-1;++n0&&pB(t)?vB(e,v,`linePrefix`,a+1)(t):v(t)}function v(t){return t===null||dB(t)?e.check(OB,h,b)(t):(e.enter(`codeFlowValue`),y(t))}function y(t){return t===null||dB(t)?(e.exit(`codeFlowValue`),v(t)):(e.consume(t),y)}function b(n){return e.exit(`codeFenced`),t(n)}function x(e,t,n){let i=0;return a;function a(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),c}function c(t){return e.enter(`codeFencedFence`),pB(t)?vB(e,l,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):l(t)}function l(t){return t===s?(e.enter(`codeFencedFenceSequence`),u(t)):n(t)}function u(t){return t===s?(i++,e.consume(t),u):i>=o?(e.exit(`codeFencedFenceSequence`),pB(t)?vB(e,d,`whitespace`)(t):d(t)):n(t)}function d(r){return r===null||dB(r)?(e.exit(`codeFencedFence`),t(r)):n(r)}}}function xre(e,t,n){let r=this;return i;function i(t){return t===null?n(t):(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),a)}function a(e){return r.parser.lazy[r.now().line]?n(e):t(e)}}var AB={name:`codeIndented`,tokenize:Cre},Sre={partial:!0,tokenize:wre};function Cre(e,t,n){let r=this;return i;function i(t){return e.enter(`codeIndented`),vB(e,a,`linePrefix`,5)(t)}function a(e){let t=r.events[r.events.length-1];return t&&t[1].type===`linePrefix`&&t[2].sliceSerialize(t[1],!0).length>=4?o(e):n(e)}function o(t){return t===null?c(t):dB(t)?e.attempt(Sre,o,c)(t):(e.enter(`codeFlowValue`),s(t))}function s(t){return t===null||dB(t)?(e.exit(`codeFlowValue`),o(t)):(e.consume(t),s)}function c(n){return e.exit(`codeIndented`),t(n)}}function wre(e,t,n){let r=this;return i;function i(t){return r.parser.lazy[r.now().line]?n(t):dB(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),i):vB(e,a,`linePrefix`,5)(t)}function a(e){let a=r.events[r.events.length-1];return a&&a[1].type===`linePrefix`&&a[2].sliceSerialize(a[1],!0).length>=4?t(e):dB(e)?i(e):n(e)}}var Tre={name:`codeText`,previous:Dre,resolve:Ere,tokenize:Ore};function Ere(e){let t=e.length-4,n=3,r,i;if((e[n][1].type===`lineEnding`||e[n][1].type===`space`)&&(e[t][1].type===`lineEnding`||e[t][1].type===`space`)){for(r=n;++r=this.left.length+this.right.length)throw RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(e,t,n){let r=t||0;this.setCursor(Math.trunc(e));let i=this.right.splice(this.right.length-r,1/0);return n&&jB(this.left,n),i.reverse()}pop(){return this.setCursor(1/0),this.left.pop()}push(e){this.setCursor(1/0),this.left.push(e)}pushMany(e){this.setCursor(1/0),jB(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),jB(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e=4?t(i):e.interrupt(r.parser.constructs.flow,n,t)(i)}}function NB(e,t,n,r,i,a,o,s,c){let l=c||1/0,u=0;return d;function d(t){return t===60?(e.enter(r),e.enter(i),e.enter(a),e.consume(t),e.exit(a),f):t===null||t===32||t===41||lB(t)?n(t):(e.enter(r),e.enter(o),e.enter(s),e.enter(`chunkString`,{contentType:`string`}),h(t))}function f(n){return n===62?(e.enter(a),e.consume(n),e.exit(a),e.exit(i),e.exit(r),t):(e.enter(s),e.enter(`chunkString`,{contentType:`string`}),p(n))}function p(t){return t===62?(e.exit(`chunkString`),e.exit(s),f(t)):t===null||t===60||dB(t)?n(t):(e.consume(t),t===92?m:p)}function m(t){return t===60||t===62||t===92?(e.consume(t),p):p(t)}function h(i){return!u&&(i===null||i===41||fB(i))?(e.exit(`chunkString`),e.exit(s),e.exit(o),e.exit(r),t(i)):u999||l===null||l===91||l===93&&!c||l===94&&!s&&`_hiddenFootnoteSupport`in o.parser.constructs?n(l):l===93?(e.exit(a),e.enter(i),e.consume(l),e.exit(i),e.exit(r),t):dB(l)?(e.enter(`lineEnding`),e.consume(l),e.exit(`lineEnding`),u):(e.enter(`chunkString`,{contentType:`string`}),d(l))}function d(t){return t===null||t===91||t===93||dB(t)||s++>999?(e.exit(`chunkString`),u(t)):(e.consume(t),c||=!pB(t),t===92?f:d)}function f(t){return t===91||t===92||t===93?(e.consume(t),s++,d):d(t)}}function FB(e,t,n,r,i,a){let o;return s;function s(t){return t===34||t===39||t===40?(e.enter(r),e.enter(i),e.consume(t),e.exit(i),o=t===40?41:t,c):n(t)}function c(n){return n===o?(e.enter(i),e.consume(n),e.exit(i),e.exit(r),t):(e.enter(a),l(n))}function l(t){return t===o?(e.exit(a),c(o)):t===null?n(t):dB(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),vB(e,l,`linePrefix`)):(e.enter(`chunkString`,{contentType:`string`}),u(t))}function u(t){return t===o||t===null||dB(t)?(e.exit(`chunkString`),l(t)):(e.consume(t),t===92?d:u)}function d(t){return t===o||t===92?(e.consume(t),u):u(t)}}function IB(e,t){let n;return r;function r(i){return dB(i)?(e.enter(`lineEnding`),e.consume(i),e.exit(`lineEnding`),n=!0,r):pB(i)?vB(e,r,n?`linePrefix`:`lineSuffix`)(i):t(i)}}var Ire={name:`definition`,tokenize:Rre},Lre={partial:!0,tokenize:zre};function Rre(e,t,n){let r=this,i;return a;function a(t){return e.enter(`definition`),o(t)}function o(t){return PB.call(r,e,s,n,`definitionLabel`,`definitionLabelMarker`,`definitionLabelString`)(t)}function s(t){return i=oB(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),c):n(t)}function c(t){return fB(t)?IB(e,l)(t):l(t)}function l(t){return NB(e,u,n,`definitionDestination`,`definitionDestinationLiteral`,`definitionDestinationLiteralMarker`,`definitionDestinationRaw`,`definitionDestinationString`)(t)}function u(t){return e.attempt(Lre,d,d)(t)}function d(t){return pB(t)?vB(e,f,`whitespace`)(t):f(t)}function f(a){return a===null||dB(a)?(e.exit(`definition`),r.parser.defined.push(i),t(a)):n(a)}}function zre(e,t,n){return r;function r(t){return fB(t)?IB(e,i)(t):n(t)}function i(t){return FB(e,a,n,`definitionTitle`,`definitionTitleMarker`,`definitionTitleString`)(t)}function a(t){return pB(t)?vB(e,o,`whitespace`)(t):o(t)}function o(e){return e===null||dB(e)?t(e):n(e)}}var Bre={name:`hardBreakEscape`,tokenize:Vre};function Vre(e,t,n){return r;function r(t){return e.enter(`hardBreakEscape`),e.consume(t),i}function i(r){return dB(r)?(e.exit(`hardBreakEscape`),t(r)):n(r)}}var Hre={name:`headingAtx`,resolve:Ure,tokenize:Wre};function Ure(e,t){let n=e.length-2,r=3,i,a;return e[r][1].type===`whitespace`&&(r+=2),n-2>r&&e[n][1].type===`whitespace`&&(n-=2),e[n][1].type===`atxHeadingSequence`&&(r===n-1||n-4>r&&e[n-2][1].type===`whitespace`)&&(n-=r+1===n?2:4),n>r&&(i={type:`atxHeadingText`,start:e[r][1].start,end:e[n][1].end},a={type:`chunkText`,start:e[r][1].start,end:e[n][1].end,contentType:`text`},tB(e,r,n-r+1,[[`enter`,i,t],[`enter`,a,t],[`exit`,a,t],[`exit`,i,t]])),e}function Wre(e,t,n){let r=0;return i;function i(t){return e.enter(`atxHeading`),a(t)}function a(t){return e.enter(`atxHeadingSequence`),o(t)}function o(t){return t===35&&r++<6?(e.consume(t),o):t===null||fB(t)?(e.exit(`atxHeadingSequence`),s(t)):n(t)}function s(n){return n===35?(e.enter(`atxHeadingSequence`),c(n)):n===null||dB(n)?(e.exit(`atxHeading`),t(n)):pB(n)?vB(e,s,`whitespace`)(n):(e.enter(`atxHeadingText`),l(n))}function c(t){return t===35?(e.consume(t),c):(e.exit(`atxHeadingSequence`),s(t))}function l(t){return t===null||t===35||fB(t)?(e.exit(`atxHeadingText`),s(t)):(e.consume(t),l)}}var Gre=`address.article.aside.base.basefont.blockquote.body.caption.center.col.colgroup.dd.details.dialog.dir.div.dl.dt.fieldset.figcaption.figure.footer.form.frame.frameset.h1.h2.h3.h4.h5.h6.head.header.hr.html.iframe.legend.li.link.main.menu.menuitem.nav.noframes.ol.optgroup.option.p.param.search.section.summary.table.tbody.td.tfoot.th.thead.title.tr.track.ul`.split(`.`),LB=[`pre`,`script`,`style`,`textarea`],Kre={concrete:!0,name:`htmlFlow`,resolveTo:Yre,tokenize:Xre},qre={partial:!0,tokenize:Qre},Jre={partial:!0,tokenize:Zre};function Yre(e){let t=e.length;for(;t--&&!(e[t][0]===`enter`&&e[t][1].type===`htmlFlow`););return t>1&&e[t-2][1].type===`linePrefix`&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function Xre(e,t,n){let r=this,i,a,o,s,c;return l;function l(e){return u(e)}function u(t){return e.enter(`htmlFlow`),e.enter(`htmlFlowData`),e.consume(t),d}function d(s){return s===33?(e.consume(s),f):s===47?(e.consume(s),a=!0,h):s===63?(e.consume(s),i=3,r.interrupt?t:T):sB(s)?(e.consume(s),o=String.fromCharCode(s),g):n(s)}function f(a){return a===45?(e.consume(a),i=2,p):a===91?(e.consume(a),i=5,s=0,m):sB(a)?(e.consume(a),i=4,r.interrupt?t:T):n(a)}function p(i){return i===45?(e.consume(i),r.interrupt?t:T):n(i)}function m(i){return i===`CDATA[`.charCodeAt(s++)?(e.consume(i),s===6?r.interrupt?t:w:m):n(i)}function h(t){return sB(t)?(e.consume(t),o=String.fromCharCode(t),g):n(t)}function g(s){if(s===null||s===47||s===62||fB(s)){let c=s===47,l=o.toLowerCase();return!c&&!a&&LB.includes(l)?(i=1,r.interrupt?t(s):w(s)):Gre.includes(o.toLowerCase())?(i=6,c?(e.consume(s),_):r.interrupt?t(s):w(s)):(i=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(s):a?v(s):y(s))}return s===45||cB(s)?(e.consume(s),o+=String.fromCharCode(s),g):n(s)}function _(i){return i===62?(e.consume(i),r.interrupt?t:w):n(i)}function v(t){return pB(t)?(e.consume(t),v):re(t)}function y(t){return t===47?(e.consume(t),re):t===58||t===95||sB(t)?(e.consume(t),b):pB(t)?(e.consume(t),y):re(t)}function b(t){return t===45||t===46||t===58||t===95||cB(t)?(e.consume(t),b):x(t)}function x(t){return t===61?(e.consume(t),ee):pB(t)?(e.consume(t),x):y(t)}function ee(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),c=t,te):pB(t)?(e.consume(t),ee):S(t)}function te(t){return t===c?(e.consume(t),c=null,ne):t===null||dB(t)?n(t):(e.consume(t),te)}function S(t){return t===null||t===34||t===39||t===47||t===60||t===61||t===62||t===96||fB(t)?x(t):(e.consume(t),S)}function ne(e){return e===47||e===62||pB(e)?y(e):n(e)}function re(t){return t===62?(e.consume(t),C):n(t)}function C(t){return t===null||dB(t)?w(t):pB(t)?(e.consume(t),C):n(t)}function w(t){return t===45&&i===2?(e.consume(t),se):t===60&&i===1?(e.consume(t),ce):t===62&&i===4?(e.consume(t),E):t===63&&i===3?(e.consume(t),T):t===93&&i===5?(e.consume(t),ue):dB(t)&&(i===6||i===7)?(e.exit(`htmlFlowData`),e.check(qre,de,ie)(t)):t===null||dB(t)?(e.exit(`htmlFlowData`),ie(t)):(e.consume(t),w)}function ie(t){return e.check(Jre,ae,de)(t)}function ae(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),oe}function oe(t){return t===null||dB(t)?ie(t):(e.enter(`htmlFlowData`),w(t))}function se(t){return t===45?(e.consume(t),T):w(t)}function ce(t){return t===47?(e.consume(t),o=``,le):w(t)}function le(t){if(t===62){let n=o.toLowerCase();return LB.includes(n)?(e.consume(t),E):w(t)}return sB(t)&&o.length<8?(e.consume(t),o+=String.fromCharCode(t),le):w(t)}function ue(t){return t===93?(e.consume(t),T):w(t)}function T(t){return t===62?(e.consume(t),E):t===45&&i===2?(e.consume(t),T):w(t)}function E(t){return t===null||dB(t)?(e.exit(`htmlFlowData`),de(t)):(e.consume(t),E)}function de(n){return e.exit(`htmlFlow`),t(n)}}function Zre(e,t,n){let r=this;return i;function i(t){return dB(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),a):n(t)}function a(e){return r.parser.lazy[r.now().line]?n(e):t(e)}}function Qre(e,t,n){return r;function r(r){return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),e.attempt(wB,t,n)}}var $re={name:`htmlText`,tokenize:eie};function eie(e,t,n){let r=this,i,a,o;return s;function s(t){return e.enter(`htmlText`),e.enter(`htmlTextData`),e.consume(t),c}function c(t){return t===33?(e.consume(t),l):t===47?(e.consume(t),x):t===63?(e.consume(t),y):sB(t)?(e.consume(t),S):n(t)}function l(t){return t===45?(e.consume(t),u):t===91?(e.consume(t),a=0,m):sB(t)?(e.consume(t),v):n(t)}function u(t){return t===45?(e.consume(t),p):n(t)}function d(t){return t===null?n(t):t===45?(e.consume(t),f):dB(t)?(o=d,ce(t)):(e.consume(t),d)}function f(t){return t===45?(e.consume(t),p):d(t)}function p(e){return e===62?se(e):e===45?f(e):d(e)}function m(t){return t===`CDATA[`.charCodeAt(a++)?(e.consume(t),a===6?h:m):n(t)}function h(t){return t===null?n(t):t===93?(e.consume(t),g):dB(t)?(o=h,ce(t)):(e.consume(t),h)}function g(t){return t===93?(e.consume(t),_):h(t)}function _(t){return t===62?se(t):t===93?(e.consume(t),_):h(t)}function v(t){return t===null||t===62?se(t):dB(t)?(o=v,ce(t)):(e.consume(t),v)}function y(t){return t===null?n(t):t===63?(e.consume(t),b):dB(t)?(o=y,ce(t)):(e.consume(t),y)}function b(e){return e===62?se(e):y(e)}function x(t){return sB(t)?(e.consume(t),ee):n(t)}function ee(t){return t===45||cB(t)?(e.consume(t),ee):te(t)}function te(t){return dB(t)?(o=te,ce(t)):pB(t)?(e.consume(t),te):se(t)}function S(t){return t===45||cB(t)?(e.consume(t),S):t===47||t===62||fB(t)?ne(t):n(t)}function ne(t){return t===47?(e.consume(t),se):t===58||t===95||sB(t)?(e.consume(t),re):dB(t)?(o=ne,ce(t)):pB(t)?(e.consume(t),ne):se(t)}function re(t){return t===45||t===46||t===58||t===95||cB(t)?(e.consume(t),re):C(t)}function C(t){return t===61?(e.consume(t),w):dB(t)?(o=C,ce(t)):pB(t)?(e.consume(t),C):ne(t)}function w(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),i=t,ie):dB(t)?(o=w,ce(t)):pB(t)?(e.consume(t),w):(e.consume(t),ae)}function ie(t){return t===i?(e.consume(t),i=void 0,oe):t===null?n(t):dB(t)?(o=ie,ce(t)):(e.consume(t),ie)}function ae(t){return t===null||t===34||t===39||t===60||t===61||t===96?n(t):t===47||t===62||fB(t)?ne(t):(e.consume(t),ae)}function oe(e){return e===47||e===62||fB(e)?ne(e):n(e)}function se(r){return r===62?(e.consume(r),e.exit(`htmlTextData`),e.exit(`htmlText`),t):n(r)}function ce(t){return e.exit(`htmlTextData`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),le}function le(t){return pB(t)?vB(e,ue,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):ue(t)}function ue(t){return e.enter(`htmlTextData`),o(t)}}var RB={name:`labelEnd`,resolveAll:iie,resolveTo:aie,tokenize:oie},tie={tokenize:sie},nie={tokenize:cie},rie={tokenize:lie};function iie(e){let t=-1,n=[];for(;++t=3&&(a===null||dB(a))?(e.exit(`thematicBreak`),t(a)):n(a)}function c(t){return t===i?(e.consume(t),r++,c):(e.exit(`thematicBreakSequence`),pB(t)?vB(e,s,`whitespace`)(t):s(t))}}var qB={continuation:{tokenize:ZB},exit:$B,name:`list`,tokenize:XB},JB={partial:!0,tokenize:eV},YB={partial:!0,tokenize:QB};function XB(e,t,n){let r=this,i=r.events[r.events.length-1],a=i&&i[1].type===`linePrefix`?i[2].sliceSerialize(i[1],!0).length:0,o=0;return s;function s(t){let i=r.containerState.type||(t===42||t===43||t===45?`listUnordered`:`listOrdered`);if(i===`listUnordered`?!r.containerState.marker||t===r.containerState.marker:uB(t)){if(r.containerState.type||(r.containerState.type=i,e.enter(i,{_container:!0})),i===`listUnordered`)return e.enter(`listItemPrefix`),t===42||t===45?e.check(GB,n,l)(t):l(t);if(!r.interrupt||t===49)return e.enter(`listItemPrefix`),e.enter(`listItemValue`),c(t)}return n(t)}function c(t){return uB(t)&&++o<10?(e.consume(t),c):(!r.interrupt||o<2)&&(r.containerState.marker?t===r.containerState.marker:t===41||t===46)?(e.exit(`listItemValue`),l(t)):n(t)}function l(t){return e.enter(`listItemMarker`),e.consume(t),e.exit(`listItemMarker`),r.containerState.marker=r.containerState.marker||t,e.check(wB,r.interrupt?n:u,e.attempt(JB,f,d))}function u(e){return r.containerState.initialBlankLine=!0,a++,f(e)}function d(t){return pB(t)?(e.enter(`listItemPrefixWhitespace`),e.consume(t),e.exit(`listItemPrefixWhitespace`),f):n(t)}function f(n){return r.containerState.size=a+r.sliceSerialize(e.exit(`listItemPrefix`),!0).length,t(n)}}function ZB(e,t,n){let r=this;return r.containerState._closeFlow=void 0,e.check(wB,i,a);function i(n){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,vB(e,t,`listItemIndent`,r.containerState.size+1)(n)}function a(n){return r.containerState.furtherBlankLines||!pB(n)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,o(n)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(YB,t,o)(n))}function o(i){return r.containerState._closeFlow=!0,r.interrupt=void 0,vB(e,e.attempt(qB,t,n),`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(i)}}function QB(e,t,n){let r=this;return vB(e,i,`listItemIndent`,r.containerState.size+1);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`listItemIndent`&&i[2].sliceSerialize(i[1],!0).length===r.containerState.size?t(e):n(e)}}function $B(e){e.exit(this.containerState.type)}function eV(e,t,n){let r=this;return vB(e,i,`listItemPrefixWhitespace`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:5);function i(e){let i=r.events[r.events.length-1];return!pB(e)&&i&&i[1].type===`listItemPrefixWhitespace`?t(e):n(e)}}var tV={name:`setextUnderline`,resolveTo:nV,tokenize:rV};function nV(e,t){let n=e.length,r,i,a;for(;n--;)if(e[n][0]===`enter`){if(e[n][1].type===`content`){r=n;break}e[n][1].type===`paragraph`&&(i=n)}else e[n][1].type===`content`&&e.splice(n,1),!a&&e[n][1].type===`definition`&&(a=n);let o={type:`setextHeading`,start:{...e[r][1].start},end:{...e[e.length-1][1].end}};return e[i][1].type=`setextHeadingText`,a?(e.splice(i,0,[`enter`,o,t]),e.splice(a+1,0,[`exit`,e[r][1],t]),e[r][1].end={...e[a][1].end}):e[r][1]=o,e.push([`exit`,o,t]),e}function rV(e,t,n){let r=this,i;return a;function a(t){let a=r.events.length,s;for(;a--;)if(r.events[a][1].type!==`lineEnding`&&r.events[a][1].type!==`linePrefix`&&r.events[a][1].type!==`content`){s=r.events[a][1].type===`paragraph`;break}return!r.parser.lazy[r.now().line]&&(r.interrupt||s)?(e.enter(`setextHeadingLine`),i=t,o(t)):n(t)}function o(t){return e.enter(`setextHeadingLineSequence`),s(t)}function s(t){return t===i?(e.consume(t),s):(e.exit(`setextHeadingLineSequence`),pB(t)?vB(e,c,`lineSuffix`)(t):c(t))}function c(r){return r===null||dB(r)?(e.exit(`setextHeadingLine`),t(r)):n(r)}}var iV={tokenize:aV};function aV(e){let t=this,n=e.attempt(wB,r,e.attempt(this.parser.constructs.flowInitial,i,vB(e,e.attempt(this.parser.constructs.flow,i,e.attempt(jre,i)),`linePrefix`)));return n;function r(r){if(r===null){e.consume(r);return}return e.enter(`lineEndingBlank`),e.consume(r),e.exit(`lineEndingBlank`),t.currentConstruct=void 0,n}function i(r){if(r===null){e.consume(r);return}return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),t.currentConstruct=void 0,n}}var oV={resolveAll:uV()},sV=lV(`string`),cV=lV(`text`);function lV(e){return{resolveAll:uV(e===`text`?dV:void 0),tokenize:t};function t(t){let n=this,r=this.parser.constructs[e],i=t.attempt(r,a,o);return a;function a(e){return c(e)?i(e):o(e)}function o(e){if(e===null){t.consume(e);return}return t.enter(`data`),t.consume(e),s}function s(e){return c(e)?(t.exit(`data`),i(e)):(t.consume(e),s)}function c(e){if(e===null)return!0;let t=r[e],i=-1;if(t)for(;++ibV,contentInitial:()=>mV,disable:()=>xV,document:()=>pV,flow:()=>gV,flowInitial:()=>hV,insideSpan:()=>yV,string:()=>_V,text:()=>vV}),pV={42:qB,43:qB,45:qB,48:qB,49:qB,50:qB,51:qB,52:qB,53:qB,54:qB,55:qB,56:qB,57:qB,62:TB},mV={91:Ire},hV={[-2]:AB,[-1]:AB,32:AB},gV={35:Hre,42:GB,45:[tV,GB],60:Kre,61:tV,95:GB,96:kB,126:kB},_V={38:DB,92:EB},vV={[-5]:UB,[-4]:UB,[-3]:UB,33:zB,38:DB,42:SB,60:[fre,$re],91:VB,92:[Bre,EB],93:RB,95:SB,96:Tre},yV={null:[SB,oV]},bV={null:[42,95]},xV={null:[]};function SV(e,t,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0},i={},a=[],o=[],s=[],c={attempt:te(x),check:te(ee),consume:v,enter:y,exit:b,interrupt:te(ee,{interrupt:!0})},l={code:null,containerState:{},defineSkip:h,events:[],now:m,parser:e,previous:null,sliceSerialize:f,sliceStream:p,write:d},u=t.tokenize.call(l,c);return t.resolveAll&&a.push(t),l;function d(e){return o=nB(o,e),g(),o[o.length-1]===null?(S(t,0),l.events=xB(a,l.events,l),l.events):[]}function f(e,t){return wV(p(e),t)}function p(e){return CV(o,e)}function m(){let{_bufferIndex:e,_index:t,line:n,column:i,offset:a}=r;return{_bufferIndex:e,_index:t,line:n,column:i,offset:a}}function h(e){i[e.line]=e.column,re()}function g(){let e;for(;r._index-1){let e=o[0];typeof e==`string`?o[0]=e.slice(r):o.shift()}a>0&&o.push(e[i].slice(0,a))}return o}function wV(e,t){let n=-1,r=[],i;for(;++n0){let e=a.tokenStack[a.tokenStack.length-1];(e[1]||iV).call(a,void 0,e[0])}for(r.position={start:tV(e.length>0?e[0][1].start:{line:1,column:1,offset:0}),end:tV(e.length>0?e[e.length-2][1].end:{line:1,column:1,offset:0})},d=-1;++d0&&(r.className=[`language-`+i[0]]);let a={type:`element`,tagName:`code`,properties:r,children:[{type:`text`,value:n}]};return t.meta&&(a.data={meta:t.meta}),e.patch(t,a),a=e.applyData(t,a),a={type:`element`,tagName:`pre`,properties:{},children:[a]},e.patch(t,a),a}function lV(e,t){let n={type:`element`,tagName:`del`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function uV(e,t){let n={type:`element`,tagName:`em`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function dV(e,t){let n=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,r=String(t.identifier).toUpperCase(),i=yB(r.toLowerCase()),a=e.footnoteOrder.indexOf(r),o,s=e.footnoteCounts.get(r);s===void 0?(s=0,e.footnoteOrder.push(r),o=e.footnoteOrder.length):o=a+1,s+=1,e.footnoteCounts.set(r,s);let c={type:`element`,tagName:`a`,properties:{href:`#`+n+`fn-`+i,id:n+`fnref-`+i+(s>1?`-`+s:``),dataFootnoteRef:!0,ariaDescribedBy:[`footnote-label`]},children:[{type:`text`,value:String(o)}]};e.patch(t,c);let l={type:`element`,tagName:`sup`,properties:{},children:[c]};return e.patch(t,l),e.applyData(t,l)}function fV(e,t){let n={type:`element`,tagName:`h`+t.depth,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function pV(e,t){if(e.options.allowDangerousHtml){let n={type:`raw`,value:t.value};return e.patch(t,n),e.applyData(t,n)}}function mV(e,t){let n=t.referenceType,r=`]`;if(n===`collapsed`?r+=`[]`:n===`full`&&(r+=`[`+(t.label||t.identifier)+`]`),t.type===`imageReference`)return[{type:`text`,value:`![`+t.alt+r}];let i=e.all(t),a=i[0];a&&a.type===`text`?a.value=`[`+a.value:i.unshift({type:`text`,value:`[`});let o=i[i.length-1];return o&&o.type===`text`?o.value+=r:i.push({type:`text`,value:r}),i}function hV(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return mV(e,t);let i={src:yB(r.url||``),alt:t.alt};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`img`,properties:i,children:[]};return e.patch(t,a),e.applyData(t,a)}function gV(e,t){let n={src:yB(t.url)};t.alt!==null&&t.alt!==void 0&&(n.alt=t.alt),t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`img`,properties:n,children:[]};return e.patch(t,r),e.applyData(t,r)}function _V(e,t){let n={type:`text`,value:t.value.replace(/\r?\n|\r/g,` `)};e.patch(t,n);let r={type:`element`,tagName:`code`,properties:{},children:[n]};return e.patch(t,r),e.applyData(t,r)}function vV(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return mV(e,t);let i={href:yB(r.url||``)};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`a`,properties:i,children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}function yV(e,t){let n={href:yB(t.url)};t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`a`,properties:n,children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function bV(e,t,n){let r=e.all(t),i=n?xV(n):SV(t),a={},o=[];if(typeof t.checked==`boolean`){let e=r[0],n;e&&e.type===`element`&&e.tagName===`p`?n=e:(n={type:`element`,tagName:`p`,properties:{},children:[]},r.unshift(n)),n.children.length>0&&n.children.unshift({type:`text`,value:` `}),n.children.unshift({type:`element`,tagName:`input`,properties:{type:`checkbox`,checked:t.checked,disabled:!0},children:[]}),a.className=[`task-list-item`]}let s=-1;for(;++s0){let e=a.tokenStack[a.tokenStack.length-1];(e[1]||RV).call(a,void 0,e[0])}for(r.position={start:FV(e.length>0?e[0][1].start:{line:1,column:1,offset:0}),end:FV(e.length>0?e[e.length-2][1].end:{line:1,column:1,offset:0})},d=-1;++d0&&(r.className=[`language-`+i[0]]);let a={type:`element`,tagName:`code`,properties:r,children:[{type:`text`,value:n}]};return t.meta&&(a.data={meta:t.meta}),e.patch(t,a),a=e.applyData(t,a),a={type:`element`,tagName:`pre`,properties:{},children:[a]},e.patch(t,a),a}function UV(e,t){let n={type:`element`,tagName:`del`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function WV(e,t){let n={type:`element`,tagName:`em`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function GV(e,t){let n=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,r=String(t.identifier).toUpperCase(),i=_B(r.toLowerCase()),a=e.footnoteOrder.indexOf(r),o,s=e.footnoteCounts.get(r);s===void 0?(s=0,e.footnoteOrder.push(r),o=e.footnoteOrder.length):o=a+1,s+=1,e.footnoteCounts.set(r,s);let c={type:`element`,tagName:`a`,properties:{href:`#`+n+`fn-`+i,id:n+`fnref-`+i+(s>1?`-`+s:``),dataFootnoteRef:!0,ariaDescribedBy:[`footnote-label`]},children:[{type:`text`,value:String(o)}]};e.patch(t,c);let l={type:`element`,tagName:`sup`,properties:{},children:[c]};return e.patch(t,l),e.applyData(t,l)}function KV(e,t){let n={type:`element`,tagName:`h`+t.depth,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function qV(e,t){if(e.options.allowDangerousHtml){let n={type:`raw`,value:t.value};return e.patch(t,n),e.applyData(t,n)}}function JV(e,t){let n=t.referenceType,r=`]`;if(n===`collapsed`?r+=`[]`:n===`full`&&(r+=`[`+(t.label||t.identifier)+`]`),t.type===`imageReference`)return[{type:`text`,value:`![`+t.alt+r}];let i=e.all(t),a=i[0];a&&a.type===`text`?a.value=`[`+a.value:i.unshift({type:`text`,value:`[`});let o=i[i.length-1];return o&&o.type===`text`?o.value+=r:i.push({type:`text`,value:r}),i}function YV(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return JV(e,t);let i={src:_B(r.url||``),alt:t.alt};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`img`,properties:i,children:[]};return e.patch(t,a),e.applyData(t,a)}function XV(e,t){let n={src:_B(t.url)};t.alt!==null&&t.alt!==void 0&&(n.alt=t.alt),t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`img`,properties:n,children:[]};return e.patch(t,r),e.applyData(t,r)}function ZV(e,t){let n={type:`text`,value:t.value.replace(/\r?\n|\r/g,` `)};e.patch(t,n);let r={type:`element`,tagName:`code`,properties:{},children:[n]};return e.patch(t,r),e.applyData(t,r)}function QV(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return JV(e,t);let i={href:_B(r.url||``)};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`a`,properties:i,children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}function $V(e,t){let n={href:_B(t.url)};t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`a`,properties:n,children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function eH(e,t,n){let r=e.all(t),i=n?tH(n):nH(t),a={},o=[];if(typeof t.checked==`boolean`){let e=r[0],n;e&&e.type===`element`&&e.tagName===`p`?n=e:(n={type:`element`,tagName:`p`,properties:{},children:[]},r.unshift(n)),n.children.length>0&&n.children.unshift({type:`text`,value:` `}),n.children.unshift({type:`element`,tagName:`input`,properties:{type:`checkbox`,checked:t.checked,disabled:!0},children:[]}),a.className=[`task-list-item`]}let s=-1;for(;++s1}function CV(e,t){let n={},r=e.all(t),i=-1;for(typeof t.start==`number`&&t.start!==1&&(n.start=t.start);++i0){let r={type:`element`,tagName:`tbody`,properties:{},children:e.wrap(n,!0)},a=Iz(t.children[1]),o=Fz(t.children[t.children.length-1]);a&&o&&(r.position={start:a,end:o}),i.push(r)}let a={type:`element`,tagName:`table`,properties:{},children:e.wrap(i,!0)};return e.patch(t,a),e.applyData(t,a)}function OV(e,t,n){let r=n?n.children:void 0,i=(r?r.indexOf(t):1)===0?`th`:`td`,a=n&&n.type===`table`?n.align:void 0,o=a?a.length:t.children.length,s=-1,c=[];for(;++s0,!0),r[0]),i=r.index+r[0].length,r=n.exec(t);return a.push(NV(t.slice(i),i>0,!1)),a.join(``)}function NV(e,t,n){let r=0,i=e.length;if(t){let t=e.codePointAt(r);for(;t===AV||t===jV;)r++,t=e.codePointAt(r)}if(n){let t=e.codePointAt(i-1);for(;t===AV||t===jV;)i--,t=e.codePointAt(i-1)}return i>r?e.slice(r,i):``}function PV(e,t){let n={type:`text`,value:MV(String(t.value))};return e.patch(t,n),e.applyData(t,n)}function FV(e,t){let n={type:`element`,tagName:`hr`,properties:{},children:[]};return e.patch(t,n),e.applyData(t,n)}var IV={blockquote:oV,break:sV,code:cV,delete:lV,emphasis:uV,footnoteReference:dV,heading:fV,html:pV,imageReference:hV,image:gV,inlineCode:_V,linkReference:vV,link:yV,listItem:bV,list:CV,paragraph:wV,root:TV,strong:EV,table:DV,tableCell:kV,tableRow:OV,text:PV,thematicBreak:FV,toml:LV,yaml:LV,definition:LV,footnoteDefinition:LV};function LV(){}var RV=typeof self==`object`?self:globalThis,zV=(e,t)=>{let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o;return n(new RV[e](t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}return n(new RV[a](o),i)};return r},BV=e=>zV(new Map,e)(0),VV=``,{toString:HV}={},{keys:UV}=Object,WV=e=>{let t=typeof e;if(t!==`object`||!e)return[0,t];let n=HV.call(e).slice(8,-1);switch(n){case`Array`:return[1,VV];case`Object`:return[2,VV];case`Date`:return[3,VV];case`RegExp`:return[4,VV];case`Map`:return[5,VV];case`Set`:return[6,VV];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]},GV=([e,t])=>e===0&&(t===`function`||t===`symbol`),KV=(e,t,n,r)=>{let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=WV(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize `+s);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of UV(r))(e||!GV(WV(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(GV(WV(n))||GV(WV(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!GV(WV(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a},qV=(e,{json:t,lossy:n}={})=>{let r=[];return KV(!(t||n),!!t,new Map,r)(e),r},JV=typeof structuredClone==`function`?(e,t)=>t&&(`json`in t||`lossy`in t)?BV(qV(e,t)):structuredClone(e):(e,t)=>BV(qV(e,t));function YV(e,t){let n=[{type:`text`,value:`↩`}];return t>1&&n.push({type:`element`,tagName:`sup`,properties:{},children:[{type:`text`,value:String(t)}]}),n}function XV(e,t){return`Back to reference `+(e+1)+(t>1?`-`+t:``)}function ZV(e){let t=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,n=e.options.footnoteBackContent||YV,r=e.options.footnoteBackLabel||XV,i=e.options.footnoteLabel||`Footnotes`,a=e.options.footnoteLabelTagName||`h2`,o=e.options.footnoteLabelProperties||{className:[`sr-only`]},s=[],c=-1;for(;++c0&&d.push({type:`text`,value:` `});let e=typeof n==`string`?n:n(c,u);typeof e==`string`&&(e={type:`text`,value:e}),d.push({type:`element`,tagName:`a`,properties:{href:`#`+t+`fnref-`+l+(u>1?`-`+u:``),dataFootnoteBackref:``,ariaLabel:typeof r==`string`?r:r(c,u),className:[`data-footnote-backref`]},children:Array.isArray(e)?e:[e]})}let p=a[a.length-1];if(p&&p.type===`element`&&p.tagName===`p`){let e=p.children[p.children.length-1];e&&e.type===`text`?e.value+=` `:p.children.push({type:`text`,value:` `}),p.children.push(...d)}else a.push(...d);let m={type:`element`,tagName:`li`,properties:{id:t+`fn-`+l},children:e.wrap(a,!0)};e.patch(i,m),s.push(m)}if(s.length!==0)return{type:`element`,tagName:`section`,properties:{dataFootnotes:!0,className:[`footnotes`]},children:[{type:`element`,tagName:a,properties:{...JV(o),id:`footnote-label`},children:[{type:`text`,value:i}]},{type:`text`,value:` +`});let l={type:`element`,tagName:`li`,properties:a,children:o};return e.patch(t,l),e.applyData(t,l)}function tH(e){let t=!1;if(e.type===`list`){t=e.spread||!1;let n=e.children,r=-1;for(;!t&&++r1}function rH(e,t){let n={},r=e.all(t),i=-1;for(typeof t.start==`number`&&t.start!==1&&(n.start=t.start);++i0){let r={type:`element`,tagName:`tbody`,properties:{},children:e.wrap(n,!0)},a=Fz(t.children[1]),o=Pz(t.children[t.children.length-1]);a&&o&&(r.position={start:a,end:o}),i.push(r)}let a={type:`element`,tagName:`table`,properties:{},children:e.wrap(i,!0)};return e.patch(t,a),e.applyData(t,a)}function cH(e,t,n){let r=n?n.children:void 0,i=(r?r.indexOf(t):1)===0?`th`:`td`,a=n&&n.type===`table`?n.align:void 0,o=a?a.length:t.children.length,s=-1,c=[];for(;++s0,!0),r[0]),i=r.index+r[0].length,r=n.exec(t);return a.push(pH(t.slice(i),i>0,!1)),a.join(``)}function pH(e,t,n){let r=0,i=e.length;if(t){let t=e.codePointAt(r);for(;t===uH||t===dH;)r++,t=e.codePointAt(r)}if(n){let t=e.codePointAt(i-1);for(;t===uH||t===dH;)i--,t=e.codePointAt(i-1)}return i>r?e.slice(r,i):``}function mH(e,t){let n={type:`text`,value:fH(String(t.value))};return e.patch(t,n),e.applyData(t,n)}function hH(e,t){let n={type:`element`,tagName:`hr`,properties:{},children:[]};return e.patch(t,n),e.applyData(t,n)}var gH={blockquote:BV,break:VV,code:HV,delete:UV,emphasis:WV,footnoteReference:GV,heading:KV,html:qV,imageReference:YV,image:XV,inlineCode:ZV,linkReference:QV,link:$V,listItem:eH,list:rH,paragraph:iH,root:aH,strong:oH,table:sH,tableCell:lH,tableRow:cH,text:mH,thematicBreak:hH,toml:_H,yaml:_H,definition:_H,footnoteDefinition:_H};function _H(){}var vH=typeof self==`object`?self:globalThis,yH=(e,t)=>{let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o;return n(new vH[e](t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}return n(new vH[a](o),i)};return r},bH=e=>yH(new Map,e)(0),xH=``,{toString:SH}={},{keys:CH}=Object,wH=e=>{let t=typeof e;if(t!==`object`||!e)return[0,t];let n=SH.call(e).slice(8,-1);switch(n){case`Array`:return[1,xH];case`Object`:return[2,xH];case`Date`:return[3,xH];case`RegExp`:return[4,xH];case`Map`:return[5,xH];case`Set`:return[6,xH];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]},TH=([e,t])=>e===0&&(t===`function`||t===`symbol`),EH=(e,t,n,r)=>{let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=wH(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize `+s);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of CH(r))(e||!TH(wH(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(TH(wH(n))||TH(wH(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!TH(wH(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a},DH=(e,{json:t,lossy:n}={})=>{let r=[];return EH(!(t||n),!!t,new Map,r)(e),r},OH=typeof structuredClone==`function`?(e,t)=>t&&(`json`in t||`lossy`in t)?bH(DH(e,t)):structuredClone(e):(e,t)=>bH(DH(e,t));function kH(e,t){let n=[{type:`text`,value:`↩`}];return t>1&&n.push({type:`element`,tagName:`sup`,properties:{},children:[{type:`text`,value:String(t)}]}),n}function AH(e,t){return`Back to reference `+(e+1)+(t>1?`-`+t:``)}function jH(e){let t=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,n=e.options.footnoteBackContent||kH,r=e.options.footnoteBackLabel||AH,i=e.options.footnoteLabel||`Footnotes`,a=e.options.footnoteLabelTagName||`h2`,o=e.options.footnoteLabelProperties||{className:[`sr-only`]},s=[],c=-1;for(;++c0&&d.push({type:`text`,value:` `});let e=typeof n==`string`?n:n(c,u);typeof e==`string`&&(e={type:`text`,value:e}),d.push({type:`element`,tagName:`a`,properties:{href:`#`+t+`fnref-`+l+(u>1?`-`+u:``),dataFootnoteBackref:``,ariaLabel:typeof r==`string`?r:r(c,u),className:[`data-footnote-backref`]},children:Array.isArray(e)?e:[e]})}let p=a[a.length-1];if(p&&p.type===`element`&&p.tagName===`p`){let e=p.children[p.children.length-1];e&&e.type===`text`?e.value+=` `:p.children.push({type:`text`,value:` `}),p.children.push(...d)}else a.push(...d);let m={type:`element`,tagName:`li`,properties:{id:t+`fn-`+l},children:e.wrap(a,!0)};e.patch(i,m),s.push(m)}if(s.length!==0)return{type:`element`,tagName:`section`,properties:{dataFootnotes:!0,className:[`footnotes`]},children:[{type:`element`,tagName:a,properties:{...OH(o),id:`footnote-label`},children:[{type:`text`,value:i}]},{type:`text`,value:` `},{type:`element`,tagName:`ol`,properties:{},children:e.wrap(s,!0)},{type:`text`,value:` -`}]}}var QV=(function(e){if(e==null)return rH;if(typeof e==`function`)return nH(e);if(typeof e==`object`)return Array.isArray(e)?$V(e):eH(e);if(typeof e==`string`)return tH(e);throw Error(`Expected function, string, or object as test`)});function $V(e){let t=[],n=-1;for(;++n`:``))+`)`})}return u;function u(){let l=oH,u,d,f;if((!t||a(e,i,c[c.length-1]||void 0))&&(l=lH(n(e,c)),l[0]===!1))return l;if(`children`in e&&e.children){let t=e;if(t.children&&l[0]!==`skip`)for(d=(r?t.children.length:-1)+o,f=c.concat(t);d>-1&&d`:``))+`)`})}return u;function u(){let l=BH,u,d,f;if((!t||a(e,i,c[c.length-1]||void 0))&&(l=UH(n(e,c)),l[0]===!1))return l;if(`children`in e&&e.children){let t=e;if(t.children&&l[0]!==`skip`)for(d=(r?t.children.length:-1)+o,f=c.concat(t);d>-1&&d0&&n.push({type:`text`,value:` -`}),n}function vH(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function yH(e,t){let n=pH(e,t),r=n.one(e,void 0),i=ZV(n),a=Array.isArray(r)?{type:`root`,children:r}:r||{type:`root`,children:[]};return i&&(`children`in a,a.children.push({type:`text`,value:` -`},i)),a}function bH(e,t){return e&&`run`in e?async function(n,r){let i=yH(n,{file:r,...t});await e.run(i,r)}:function(n,r){return yH(n,{file:r,...e||t})}}function xH(e){if(e)throw e}var SH=o(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=function(e){return typeof Array.isArray==`function`?Array.isArray(e):r.call(e)===`[object Array]`},s=function(e){if(!e||r.call(e)!==`[object Object]`)return!1;var t=n.call(e,`constructor`),i=e.constructor&&e.constructor.prototype&&n.call(e.constructor.prototype,`isPrototypeOf`);if(e.constructor&&!t&&!i)return!1;for(var a in e);return a===void 0||n.call(e,a)},c=function(e,t){i&&t.name===`__proto__`?i(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},l=function(e,t){if(t===`__proto__`){if(!n.call(e,t))return;if(a)return a(e,t).value}return e[t]};t.exports=function e(){var t,n,r,i,a,u,d=arguments[0],f=1,p=arguments.length,m=!1;for(typeof d==`boolean`&&(m=d,d=arguments[1]||{},f=2),(d==null||typeof d!=`object`&&typeof d!=`function`)&&(d={});ft.length,o;r&&t.push(i);try{o=e.apply(this,t)}catch(e){let t=e;if(r&&n)throw t;return i(t)}r||(o&&o.then&&typeof o.then==`function`?o.then(a,i):o instanceof Error?i(o):a(o))}function i(e,...r){n||(n=!0,t(e,...r))}function a(e){i(null,e)}}var EH={basename:DH,dirname:OH,extname:kH,join:AH,sep:`/`};function DH(e,t){if(t!==void 0&&typeof t!=`string`)throw TypeError(`"ext" argument must be a string`);NH(e);let n=0,r=-1,i=e.length,a;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else r<0&&(a=!0,r=i+1);return r<0?``:e.slice(n,r)}if(t===e)return``;let o=-1,s=t.length-1;for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else o<0&&(a=!0,o=i+1),s>-1&&(e.codePointAt(i)===t.codePointAt(s--)?s<0&&(r=i):(s=-1,r=o));return n===r?r=o:r<0&&(r=e.length),e.slice(n,r)}function OH(e){if(NH(e),e.length===0)return`.`;let t=-1,n=e.length,r;for(;--n;)if(e.codePointAt(n)===47){if(r){t=n;break}}else r||=!0;return t<0?e.codePointAt(0)===47?`/`:`.`:t===1&&e.codePointAt(0)===47?`//`:e.slice(0,t)}function kH(e){NH(e);let t=e.length,n=-1,r=0,i=-1,a=0,o;for(;t--;){let s=e.codePointAt(t);if(s===47){if(o){r=t+1;break}continue}n<0&&(o=!0,n=t+1),s===46?i<0?i=t:a!==1&&(a=1):i>-1&&(a=-1)}return i<0||n<0||a===0||a===1&&i===n-1&&i===r+1?``:e.slice(i,n)}function AH(...e){let t=-1,n;for(;++t0&&e.codePointAt(e.length-1)===47&&(n+=`/`),t?`/`+n:n}function MH(e,t){let n=``,r=0,i=-1,a=0,o=-1,s,c;for(;++o<=e.length;){if(o2){if(c=n.lastIndexOf(`/`),c!==n.length-1){c<0?(n=``,r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf(`/`)),i=o,a=0;continue}}else if(n.length>0){n=``,r=0,i=o,a=0;continue}}t&&(n=n.length>0?n+`/..`:`..`,r=2)}else n.length>0?n+=`/`+e.slice(i+1,o):n=e.slice(i+1,o),r=o-i-1;i=o,a=0}else s===46&&a>-1?a++:a=-1}return n}function NH(e){if(typeof e!=`string`)throw TypeError(`Path must be a string. Received `+JSON.stringify(e))}var PH={cwd:FH};function FH(){return`/`}function IH(e){return!!(typeof e==`object`&&e&&`href`in e&&e.href&&`protocol`in e&&e.protocol&&e.auth===void 0)}function LH(e){if(typeof e==`string`)e=new URL(e);else if(!IH(e)){let t=TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code=`ERR_INVALID_ARG_TYPE`,t}if(e.protocol!==`file:`){let e=TypeError(`The URL must be of scheme file`);throw e.code=`ERR_INVALID_URL_SCHEME`,e}return RH(e)}function RH(e){if(e.hostname!==``){let e=TypeError(`File URL host must be "localhost" or empty on darwin`);throw e.code=`ERR_INVALID_FILE_URL_HOST`,e}let t=e.pathname,n=-1;for(;++n0){let[r,...a]=t,o=n[i][1];CH(o)&&CH(r)&&(r=(0,KH.default)(!0,o,r)),n[i]=[e,r,...a]}}}}().freeze();function YH(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `parser`")}function XH(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `compiler`")}function ZH(e,t){if(t)throw Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function QH(e){if(!CH(e)||typeof e.type!=`string`)throw TypeError("Expected node, got `"+e+"`")}function $H(e,t,n){if(!n)throw Error("`"+e+"` finished async. Use `"+t+"` instead")}function eU(e){return tU(e)?e:new BH(e)}function tU(e){return!!(e&&typeof e==`object`&&`message`in e&&`messages`in e)}function nU(e){return typeof e==`string`||rU(e)}function rU(e){return!!(e&&typeof e==`object`&&`byteLength`in e&&`byteOffset`in e)}var iU=[],aU={allowDangerousHtml:!0},oU=/^(https?|ircs?|mailto|xmpp)$/i,sU=[{from:`astPlugins`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowDangerousHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowNode`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowElement`},{from:`allowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowedElements`},{from:`className`,id:`remove-classname`},{from:`disallowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`disallowedElements`},{from:`escapeHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`includeElementIndex`,id:`#remove-includeelementindex`},{from:`includeNodeIndex`,id:`change-includenodeindex-to-includeelementindex`},{from:`linkTarget`,id:`remove-linktarget`},{from:`plugins`,id:`change-plugins-to-remarkplugins`,to:`remarkPlugins`},{from:`rawSourcePos`,id:`#remove-rawsourcepos`},{from:`renderers`,id:`change-renderers-to-components`,to:`components`},{from:`source`,id:`change-source-to-children`,to:`children`},{from:`sourcePos`,id:`#remove-sourcepos`},{from:`transformImageUri`,id:`#add-urltransform`,to:`urlTransform`},{from:`transformLinkUri`,id:`#add-urltransform`,to:`urlTransform`}];function cU(e){let t=lU(e),n=uU(e);return dU(t.runSync(t.parse(n),n),e)}function lU(e){let t=e.rehypePlugins||iU,n=e.remarkPlugins||iU,r=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...aU}:aU;return JH().use(aV).use(n).use(bH,r).use(t)}function uU(e){let t=e.children||``,n=new BH;return typeof t==`string`?n.value=t:``+t,n}function dU(e,t){let n=t.allowedElements,r=t.allowElement,i=t.components,a=t.disallowedElements,o=t.skipHtml,s=t.unwrapDisallowed,c=t.urlTransform||fU;for(let e of sU)Object.hasOwn(t,e.from)&&``+e.from+(e.to?"use `"+e.to+"` instead":`remove it`)+e.id;return uH(e,l),pte(e,{Fragment:U.Fragment,components:i,ignoreInvalidStyle:!0,jsx:U.jsx,jsxs:U.jsxs,passKeys:!0,passNode:!0});function l(e,t,i){if(e.type===`raw`&&i&&typeof t==`number`)return o?i.children.splice(t,1):i.children[t]={type:`text`,value:e.value},t;if(e.type===`element`){let t;for(t in Zz)if(Object.hasOwn(Zz,t)&&Object.hasOwn(e.properties,t)){let n=e.properties[t],r=Zz[t];(r===null||r.includes(e.tagName))&&(e.properties[t]=c(String(n||``),t,e))}}if(e.type===`element`){let o=n?!n.includes(e.tagName):a?a.includes(e.tagName):!1;if(!o&&r&&typeof t==`number`&&(o=!r(e,t,i)),o&&i&&typeof t==`number`)return s&&e.children?i.children.splice(t,1,...e.children):i.children.splice(t,1),t}}}function fU(e){let t=e.indexOf(`:`),n=e.indexOf(`?`),r=e.indexOf(`#`),i=e.indexOf(`/`);return t===-1||i!==-1&&t>i||n!==-1&&t>n||r!==-1&&t>r||oU.test(e.slice(0,t))?e:``}function pU(e,t){let n=String(e);if(typeof t!=`string`)throw TypeError(`Expected character`);let r=0,i=n.indexOf(t);for(;i!==-1;)r++,i=n.indexOf(t,i+t.length);return r}function mU(e){if(typeof e!=`string`)throw TypeError(`Expected a string`);return e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`)}function hU(e,t,n){let r=QV((n||{}).ignore||[]),i=gU(t),a=-1;for(;++a0?{type:`text`,value:a}:void 0),a===!1?r.lastIndex=n+1:(s!==n&&u.push({type:`text`,value:e.value.slice(s,n)}),Array.isArray(a)?u.push(...a):a&&u.push(a),s=n+d[0].length,l=!0),!r.global)break;d=r.exec(e.value)}return l?(s?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let n=t[0],r=n.indexOf(`)`),i=pU(e,`(`),a=pU(e,`)`);for(;r!==-1&&i>a;)e+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(`)`),a++;return[e,n]}function PU(e,t){let n=e.input.charCodeAt(e.index-1);return(e.index===0||_B(n)||gB(n))&&(!t||n!==47)}WU.peek=UU;function FU(){this.buffer()}function IU(e){this.enter({type:`footnoteReference`,identifier:``,label:``},e)}function LU(){this.buffer()}function RU(e){this.enter({type:`footnoteDefinition`,identifier:``,label:``,children:[]},e)}function zU(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=cB(this.sliceSerialize(e)).toLowerCase(),n.label=t}function BU(e){this.exit(e)}function VU(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=cB(this.sliceSerialize(e)).toLowerCase(),n.label=t}function HU(e){this.exit(e)}function UU(){return`[`}function WU(e,t,n,r){let i=n.createTracker(r),a=i.move(`[^`),o=n.enter(`footnoteReference`),s=n.enter(`reference`);return a+=i.move(n.safe(n.associationId(e),{after:`]`,before:a})),s(),o(),a+=i.move(`]`),a}function GU(){return{enter:{gfmFootnoteCallString:FU,gfmFootnoteCall:IU,gfmFootnoteDefinitionLabelString:LU,gfmFootnoteDefinition:RU},exit:{gfmFootnoteCallString:zU,gfmFootnoteCall:BU,gfmFootnoteDefinitionLabelString:VU,gfmFootnoteDefinition:HU}}}function KU(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:n,footnoteReference:WU},unsafe:[{character:`[`,inConstruct:[`label`,`phrasing`,`reference`]}]};function n(e,n,r,i){let a=r.createTracker(i),o=a.move(`[^`),s=r.enter(`footnoteDefinition`),c=r.enter(`label`);return o+=a.move(r.safe(r.associationId(e),{before:o,after:`]`})),c(),o+=a.move(`]:`),e.children&&e.children.length>0&&(a.shift(4),o+=a.move((t?` -`:` `)+r.indentLines(r.containerFlow(e,a.current()),t?JU:qU))),s(),o}}function qU(e,t,n){return t===0?e:JU(e,t,n)}function JU(e,t,n){return(n?``:` `)+e}var YU=[`autolink`,`destinationLiteral`,`destinationRaw`,`reference`,`titleQuote`,`titleApostrophe`];eW.peek=tW;function XU(){return{canContainEols:[`delete`],enter:{strikethrough:QU},exit:{strikethrough:$U}}}function ZU(){return{unsafe:[{character:`~`,inConstruct:`phrasing`,notInConstruct:YU}],handlers:{delete:eW}}}function QU(e){this.enter({type:`delete`,children:[]},e)}function $U(e){this.exit(e)}function eW(e,t,n,r){let i=n.createTracker(r),a=n.enter(`strikethrough`),o=i.move(`~~`);return o+=n.containerPhrasing(e,{...i.current(),before:o,after:`~`}),o+=i.move(`~~`),a(),o}function tW(){return`~`}function nW(e){return e.length}function rW(e,t){let n=t||{},r=(n.align||[]).concat(),i=n.stringLength||nW,a=[],o=[],s=[],c=[],l=0,u=-1;for(;++ul&&(l=e[u].length);++ac[a])&&(c[a]=e)}t.push(o)}o[u]=t,s[u]=r}let d=-1;if(typeof r==`object`&&`length`in r)for(;++dc[d]&&(c[d]=i),p[d]=i),f[d]=o}o.splice(1,0,f),s.splice(1,0,p),u=-1;let m=[];for(;++u `),a.shift(2);let o=n.indentLines(n.containerFlow(e,a.current()),sW);return i(),o}function sW(e,t,n){return`>`+(n?``:` `)+e}function cW(e,t){return lW(e,t.inConstruct,!0)&&!lW(e,t.notInConstruct,!1)}function lW(e,t,n){if(typeof t==`string`&&(t=[t]),!t||t.length===0)return n;let r=-1;for(;++ro&&(o=a):a=1,i=r+t.length,r=n.indexOf(t,i);return o}function fW(e,t){return!!(t.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function pW(e){let t=e.options.fence||"`";if(t!=="`"&&t!==`~`)throw Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function mW(e,t,n,r){let i=pW(n),a=e.value||``,o=i==="`"?`GraveAccent`:`Tilde`;if(fW(e,n)){let e=n.enter(`codeIndented`),t=n.indentLines(a,hW);return e(),t}let s=n.createTracker(r),c=i.repeat(Math.max(dW(a,i)+1,3)),l=n.enter(`codeFenced`),u=s.move(c);if(e.lang){let t=n.enter(`codeFencedLang${o}`);u+=s.move(n.safe(e.lang,{before:u,after:` `,encode:["`"],...s.current()})),t()}if(e.lang&&e.meta){let t=n.enter(`codeFencedMeta${o}`);u+=s.move(` `),u+=s.move(n.safe(e.meta,{before:u,after:` +`}),n}function QH(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function $H(e,t){let n=qH(e,t),r=n.one(e,void 0),i=jH(n),a=Array.isArray(r)?{type:`root`,children:r}:r||{type:`root`,children:[]};return i&&(`children`in a,a.children.push({type:`text`,value:` +`},i)),a}function eU(e,t){return e&&`run`in e?async function(n,r){let i=$H(n,{file:r,...t});await e.run(i,r)}:function(n,r){return $H(n,{file:r,...e||t})}}function tU(e){if(e)throw e}var nU=o(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=function(e){return typeof Array.isArray==`function`?Array.isArray(e):r.call(e)===`[object Array]`},s=function(e){if(!e||r.call(e)!==`[object Object]`)return!1;var t=n.call(e,`constructor`),i=e.constructor&&e.constructor.prototype&&n.call(e.constructor.prototype,`isPrototypeOf`);if(e.constructor&&!t&&!i)return!1;for(var a in e);return a===void 0||n.call(e,a)},c=function(e,t){i&&t.name===`__proto__`?i(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},l=function(e,t){if(t===`__proto__`){if(!n.call(e,t))return;if(a)return a(e,t).value}return e[t]};t.exports=function e(){var t,n,r,i,a,u,d=arguments[0],f=1,p=arguments.length,m=!1;for(typeof d==`boolean`&&(m=d,d=arguments[1]||{},f=2),(d==null||typeof d!=`object`&&typeof d!=`function`)&&(d={});ft.length,o;r&&t.push(i);try{o=e.apply(this,t)}catch(e){let t=e;if(r&&n)throw t;return i(t)}r||(o&&o.then&&typeof o.then==`function`?o.then(a,i):o instanceof Error?i(o):a(o))}function i(e,...r){n||(n=!0,t(e,...r))}function a(e){i(null,e)}}var oU={basename:sU,dirname:cU,extname:lU,join:uU,sep:`/`};function sU(e,t){if(t!==void 0&&typeof t!=`string`)throw TypeError(`"ext" argument must be a string`);pU(e);let n=0,r=-1,i=e.length,a;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else r<0&&(a=!0,r=i+1);return r<0?``:e.slice(n,r)}if(t===e)return``;let o=-1,s=t.length-1;for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else o<0&&(a=!0,o=i+1),s>-1&&(e.codePointAt(i)===t.codePointAt(s--)?s<0&&(r=i):(s=-1,r=o));return n===r?r=o:r<0&&(r=e.length),e.slice(n,r)}function cU(e){if(pU(e),e.length===0)return`.`;let t=-1,n=e.length,r;for(;--n;)if(e.codePointAt(n)===47){if(r){t=n;break}}else r||=!0;return t<0?e.codePointAt(0)===47?`/`:`.`:t===1&&e.codePointAt(0)===47?`//`:e.slice(0,t)}function lU(e){pU(e);let t=e.length,n=-1,r=0,i=-1,a=0,o;for(;t--;){let s=e.codePointAt(t);if(s===47){if(o){r=t+1;break}continue}n<0&&(o=!0,n=t+1),s===46?i<0?i=t:a!==1&&(a=1):i>-1&&(a=-1)}return i<0||n<0||a===0||a===1&&i===n-1&&i===r+1?``:e.slice(i,n)}function uU(...e){let t=-1,n;for(;++t0&&e.codePointAt(e.length-1)===47&&(n+=`/`),t?`/`+n:n}function fU(e,t){let n=``,r=0,i=-1,a=0,o=-1,s,c;for(;++o<=e.length;){if(o2){if(c=n.lastIndexOf(`/`),c!==n.length-1){c<0?(n=``,r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf(`/`)),i=o,a=0;continue}}else if(n.length>0){n=``,r=0,i=o,a=0;continue}}t&&(n=n.length>0?n+`/..`:`..`,r=2)}else n.length>0?n+=`/`+e.slice(i+1,o):n=e.slice(i+1,o),r=o-i-1;i=o,a=0}else s===46&&a>-1?a++:a=-1}return n}function pU(e){if(typeof e!=`string`)throw TypeError(`Path must be a string. Received `+JSON.stringify(e))}var mU={cwd:hU};function hU(){return`/`}function gU(e){return!!(typeof e==`object`&&e&&`href`in e&&e.href&&`protocol`in e&&e.protocol&&e.auth===void 0)}function _U(e){if(typeof e==`string`)e=new URL(e);else if(!gU(e)){let t=TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code=`ERR_INVALID_ARG_TYPE`,t}if(e.protocol!==`file:`){let e=TypeError(`The URL must be of scheme file`);throw e.code=`ERR_INVALID_URL_SCHEME`,e}return vU(e)}function vU(e){if(e.hostname!==``){let e=TypeError(`File URL host must be "localhost" or empty on darwin`);throw e.code=`ERR_INVALID_FILE_URL_HOST`,e}let t=e.pathname,n=-1;for(;++n0){let[r,...a]=t,o=n[i][1];rU(o)&&rU(r)&&(r=(0,EU.default)(!0,o,r)),n[i]=[e,r,...a]}}}}().freeze();function kU(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `parser`")}function AU(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `compiler`")}function jU(e,t){if(t)throw Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function MU(e){if(!rU(e)||typeof e.type!=`string`)throw TypeError("Expected node, got `"+e+"`")}function NU(e,t,n){if(!n)throw Error("`"+e+"` finished async. Use `"+t+"` instead")}function PU(e){return FU(e)?e:new bU(e)}function FU(e){return!!(e&&typeof e==`object`&&`message`in e&&`messages`in e)}function IU(e){return typeof e==`string`||LU(e)}function LU(e){return!!(e&&typeof e==`object`&&`byteLength`in e&&`byteOffset`in e)}var RU=[],zU={allowDangerousHtml:!0},BU=/^(https?|ircs?|mailto|xmpp)$/i,VU=[{from:`astPlugins`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowDangerousHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowNode`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowElement`},{from:`allowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowedElements`},{from:`className`,id:`remove-classname`},{from:`disallowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`disallowedElements`},{from:`escapeHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`includeElementIndex`,id:`#remove-includeelementindex`},{from:`includeNodeIndex`,id:`change-includenodeindex-to-includeelementindex`},{from:`linkTarget`,id:`remove-linktarget`},{from:`plugins`,id:`change-plugins-to-remarkplugins`,to:`remarkPlugins`},{from:`rawSourcePos`,id:`#remove-rawsourcepos`},{from:`renderers`,id:`change-renderers-to-components`,to:`components`},{from:`source`,id:`change-source-to-children`,to:`children`},{from:`sourcePos`,id:`#remove-sourcepos`},{from:`transformImageUri`,id:`#add-urltransform`,to:`urlTransform`},{from:`transformLinkUri`,id:`#add-urltransform`,to:`urlTransform`}];function HU(e){let t=UU(e),n=WU(e);return GU(t.runSync(t.parse(n),n),e)}function UU(e){let t=e.rehypePlugins||RU,n=e.remarkPlugins||RU,r=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...zU}:zU;return OU().use(zV).use(n).use(eU,r).use(t)}function WU(e){let t=e.children||``,n=new bU;return typeof t==`string`?n.value=t:``+t,n}function GU(e,t){let n=t.allowedElements,r=t.allowElement,i=t.components,a=t.disallowedElements,o=t.skipHtml,s=t.unwrapDisallowed,c=t.urlTransform||KU;for(let e of VU)Object.hasOwn(t,e.from)&&``+e.from+(e.to?"use `"+e.to+"` instead":`remove it`)+e.id;return WH(e,l),Ine(e,{Fragment:U.Fragment,components:i,ignoreInvalidStyle:!0,jsx:U.jsx,jsxs:U.jsxs,passKeys:!0,passNode:!0});function l(e,t,i){if(e.type===`raw`&&i&&typeof t==`number`)return o?i.children.splice(t,1):i.children[t]={type:`text`,value:e.value},t;if(e.type===`element`){let t;for(t in Yz)if(Object.hasOwn(Yz,t)&&Object.hasOwn(e.properties,t)){let n=e.properties[t],r=Yz[t];(r===null||r.includes(e.tagName))&&(e.properties[t]=c(String(n||``),t,e))}}if(e.type===`element`){let o=n?!n.includes(e.tagName):a?a.includes(e.tagName):!1;if(!o&&r&&typeof t==`number`&&(o=!r(e,t,i)),o&&i&&typeof t==`number`)return s&&e.children?i.children.splice(t,1,...e.children):i.children.splice(t,1),t}}}function KU(e){let t=e.indexOf(`:`),n=e.indexOf(`?`),r=e.indexOf(`#`),i=e.indexOf(`/`);return t===-1||i!==-1&&t>i||n!==-1&&t>n||r!==-1&&t>r||BU.test(e.slice(0,t))?e:``}function qU(e,t){let n=String(e);if(typeof t!=`string`)throw TypeError(`Expected character`);let r=0,i=n.indexOf(t);for(;i!==-1;)r++,i=n.indexOf(t,i+t.length);return r}function JU(e){if(typeof e!=`string`)throw TypeError(`Expected a string`);return e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`)}function YU(e,t,n){let r=MH((n||{}).ignore||[]),i=XU(t),a=-1;for(;++a0?{type:`text`,value:a}:void 0),a===!1?r.lastIndex=n+1:(s!==n&&u.push({type:`text`,value:e.value.slice(s,n)}),Array.isArray(a)?u.push(...a):a&&u.push(a),s=n+d[0].length,l=!0),!r.global)break;d=r.exec(e.value)}return l?(s?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let n=t[0],r=n.indexOf(`)`),i=qU(e,`(`),a=qU(e,`)`);for(;r!==-1&&i>a;)e+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(`)`),a++;return[e,n]}function mW(e,t){let n=e.input.charCodeAt(e.index-1);return(e.index===0||hB(n)||mB(n))&&(!t||n!==47)}wW.peek=CW;function hW(){this.buffer()}function gW(e){this.enter({type:`footnoteReference`,identifier:``,label:``},e)}function _W(){this.buffer()}function vW(e){this.enter({type:`footnoteDefinition`,identifier:``,label:``,children:[]},e)}function yW(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=oB(this.sliceSerialize(e)).toLowerCase(),n.label=t}function bW(e){this.exit(e)}function xW(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=oB(this.sliceSerialize(e)).toLowerCase(),n.label=t}function SW(e){this.exit(e)}function CW(){return`[`}function wW(e,t,n,r){let i=n.createTracker(r),a=i.move(`[^`),o=n.enter(`footnoteReference`),s=n.enter(`reference`);return a+=i.move(n.safe(n.associationId(e),{after:`]`,before:a})),s(),o(),a+=i.move(`]`),a}function TW(){return{enter:{gfmFootnoteCallString:hW,gfmFootnoteCall:gW,gfmFootnoteDefinitionLabelString:_W,gfmFootnoteDefinition:vW},exit:{gfmFootnoteCallString:yW,gfmFootnoteCall:bW,gfmFootnoteDefinitionLabelString:xW,gfmFootnoteDefinition:SW}}}function EW(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:n,footnoteReference:wW},unsafe:[{character:`[`,inConstruct:[`label`,`phrasing`,`reference`]}]};function n(e,n,r,i){let a=r.createTracker(i),o=a.move(`[^`),s=r.enter(`footnoteDefinition`),c=r.enter(`label`);return o+=a.move(r.safe(r.associationId(e),{before:o,after:`]`})),c(),o+=a.move(`]:`),e.children&&e.children.length>0&&(a.shift(4),o+=a.move((t?` +`:` `)+r.indentLines(r.containerFlow(e,a.current()),t?OW:DW))),s(),o}}function DW(e,t,n){return t===0?e:OW(e,t,n)}function OW(e,t,n){return(n?``:` `)+e}var kW=[`autolink`,`destinationLiteral`,`destinationRaw`,`reference`,`titleQuote`,`titleApostrophe`];PW.peek=FW;function AW(){return{canContainEols:[`delete`],enter:{strikethrough:MW},exit:{strikethrough:NW}}}function jW(){return{unsafe:[{character:`~`,inConstruct:`phrasing`,notInConstruct:kW}],handlers:{delete:PW}}}function MW(e){this.enter({type:`delete`,children:[]},e)}function NW(e){this.exit(e)}function PW(e,t,n,r){let i=n.createTracker(r),a=n.enter(`strikethrough`),o=i.move(`~~`);return o+=n.containerPhrasing(e,{...i.current(),before:o,after:`~`}),o+=i.move(`~~`),a(),o}function FW(){return`~`}function IW(e){return e.length}function LW(e,t){let n=t||{},r=(n.align||[]).concat(),i=n.stringLength||IW,a=[],o=[],s=[],c=[],l=0,u=-1;for(;++ul&&(l=e[u].length);++ac[a])&&(c[a]=e)}t.push(o)}o[u]=t,s[u]=r}let d=-1;if(typeof r==`object`&&`length`in r)for(;++dc[d]&&(c[d]=i),p[d]=i),f[d]=o}o.splice(1,0,f),s.splice(1,0,p),u=-1;let m=[];for(;++u `),a.shift(2);let o=n.indentLines(n.containerFlow(e,a.current()),VW);return i(),o}function VW(e,t,n){return`>`+(n?``:` `)+e}function HW(e,t){return UW(e,t.inConstruct,!0)&&!UW(e,t.notInConstruct,!1)}function UW(e,t,n){if(typeof t==`string`&&(t=[t]),!t||t.length===0)return n;let r=-1;for(;++ro&&(o=a):a=1,i=r+t.length,r=n.indexOf(t,i);return o}function KW(e,t){return!!(t.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function qW(e){let t=e.options.fence||"`";if(t!=="`"&&t!==`~`)throw Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function JW(e,t,n,r){let i=qW(n),a=e.value||``,o=i==="`"?`GraveAccent`:`Tilde`;if(KW(e,n)){let e=n.enter(`codeIndented`),t=n.indentLines(a,YW);return e(),t}let s=n.createTracker(r),c=i.repeat(Math.max(GW(a,i)+1,3)),l=n.enter(`codeFenced`),u=s.move(c);if(e.lang){let t=n.enter(`codeFencedLang${o}`);u+=s.move(n.safe(e.lang,{before:u,after:` `,encode:["`"],...s.current()})),t()}if(e.lang&&e.meta){let t=n.enter(`codeFencedMeta${o}`);u+=s.move(` `),u+=s.move(n.safe(e.meta,{before:u,after:` `,encode:["`"],...s.current()})),t()}return u+=s.move(` `),a&&(u+=s.move(a+` -`)),u+=s.move(c),l(),u}function hW(e,t,n){return(n?``:` `)+e}function gW(e){let t=e.options.quote||`"`;if(t!==`"`&&t!==`'`)throw Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function _W(e,t,n,r){let i=gW(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.enter(`definition`),s=n.enter(`label`),c=n.createTracker(r),l=c.move(`[`);return l+=c.move(n.safe(n.associationId(e),{before:l,after:`]`,...c.current()})),l+=c.move(`]: `),s(),!e.url||/[\0- \u007F]/.test(e.url)?(s=n.enter(`destinationLiteral`),l+=c.move(`<`),l+=c.move(n.safe(e.url,{before:l,after:`>`,...c.current()})),l+=c.move(`>`)):(s=n.enter(`destinationRaw`),l+=c.move(n.safe(e.url,{before:l,after:e.title?` `:` -`,...c.current()}))),s(),e.title&&(s=n.enter(`title${a}`),l+=c.move(` `+i),l+=c.move(n.safe(e.title,{before:l,after:i,...c.current()})),l+=c.move(i),s()),o(),l}function vW(e){let t=e.options.emphasis||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}function yW(e){return`&#x`+e.toString(16).toUpperCase()+`;`}function bW(e,t,n){let r=SB(e),i=SB(t);return r===void 0?i===void 0?n===`_`?{inside:!0,outside:!0}:{inside:!1,outside:!1}:i===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:r===1?i===void 0?{inside:!1,outside:!1}:i===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:i===void 0?{inside:!1,outside:!1}:i===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}xW.peek=SW;function xW(e,t,n,r){let i=vW(n),a=n.enter(`emphasis`),o=n.createTracker(r),s=o.move(i),c=o.move(n.containerPhrasing(e,{after:i,before:s,...o.current()})),l=c.charCodeAt(0),u=bW(r.before.charCodeAt(r.before.length-1),l,i);u.inside&&(c=yW(l)+c.slice(1));let d=c.charCodeAt(c.length-1),f=bW(r.after.charCodeAt(0),d,i);f.inside&&(c=c.slice(0,-1)+yW(d));let p=o.move(i);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},s+c+p}function SW(e,t,n){return n.options.emphasis||`*`}function CW(e,t){let n=!1;return uH(e,function(e){if(`value`in e&&/\r?\n|\r/.test(e.value)||e.type===`break`)return n=!0,!1}),!!((!e.depth||e.depth<3)&&Qz(e)&&(t.options.setext||n))}function wW(e,t,n,r){let i=Math.max(Math.min(6,e.depth||1),1),a=n.createTracker(r);if(CW(e,n)){let t=n.enter(`headingSetext`),r=n.enter(`phrasing`),o=n.containerPhrasing(e,{...a.current(),before:` +`)),u+=s.move(c),l(),u}function YW(e,t,n){return(n?``:` `)+e}function XW(e){let t=e.options.quote||`"`;if(t!==`"`&&t!==`'`)throw Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function ZW(e,t,n,r){let i=XW(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.enter(`definition`),s=n.enter(`label`),c=n.createTracker(r),l=c.move(`[`);return l+=c.move(n.safe(n.associationId(e),{before:l,after:`]`,...c.current()})),l+=c.move(`]: `),s(),!e.url||/[\0- \u007F]/.test(e.url)?(s=n.enter(`destinationLiteral`),l+=c.move(`<`),l+=c.move(n.safe(e.url,{before:l,after:`>`,...c.current()})),l+=c.move(`>`)):(s=n.enter(`destinationRaw`),l+=c.move(n.safe(e.url,{before:l,after:e.title?` `:` +`,...c.current()}))),s(),e.title&&(s=n.enter(`title${a}`),l+=c.move(` `+i),l+=c.move(n.safe(e.title,{before:l,after:i,...c.current()})),l+=c.move(i),s()),o(),l}function QW(e){let t=e.options.emphasis||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}function $W(e){return`&#x`+e.toString(16).toUpperCase()+`;`}function eG(e,t,n){let r=bB(e),i=bB(t);return r===void 0?i===void 0?n===`_`?{inside:!0,outside:!0}:{inside:!1,outside:!1}:i===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:r===1?i===void 0?{inside:!1,outside:!1}:i===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:i===void 0?{inside:!1,outside:!1}:i===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}tG.peek=nG;function tG(e,t,n,r){let i=QW(n),a=n.enter(`emphasis`),o=n.createTracker(r),s=o.move(i),c=o.move(n.containerPhrasing(e,{after:i,before:s,...o.current()})),l=c.charCodeAt(0),u=eG(r.before.charCodeAt(r.before.length-1),l,i);u.inside&&(c=$W(l)+c.slice(1));let d=c.charCodeAt(c.length-1),f=eG(r.after.charCodeAt(0),d,i);f.inside&&(c=c.slice(0,-1)+$W(d));let p=o.move(i);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},s+c+p}function nG(e,t,n){return n.options.emphasis||`*`}function rG(e,t){let n=!1;return WH(e,function(e){if(`value`in e&&/\r?\n|\r/.test(e.value)||e.type===`break`)return n=!0,!1}),!!((!e.depth||e.depth<3)&&Xz(e)&&(t.options.setext||n))}function iG(e,t,n,r){let i=Math.max(Math.min(6,e.depth||1),1),a=n.createTracker(r);if(rG(e,n)){let t=n.enter(`headingSetext`),r=n.enter(`phrasing`),o=n.containerPhrasing(e,{...a.current(),before:` `,after:` `});return r(),t(),o+` `+(i===1?`=`:`-`).repeat(o.length-(Math.max(o.lastIndexOf(`\r`),o.lastIndexOf(` `))+1))}let o=`#`.repeat(i),s=n.enter(`headingAtx`),c=n.enter(`phrasing`);a.move(o+` `);let l=n.containerPhrasing(e,{before:`# `,after:` -`,...a.current()});return/^[\t ]/.test(l)&&(l=yW(l.charCodeAt(0))+l.slice(1)),l=l?o+` `+l:o,n.options.closeAtx&&(l+=` `+o),c(),s(),l}TW.peek=EW;function TW(e){return e.value||``}function EW(){return`<`}DW.peek=OW;function DW(e,t,n,r){let i=gW(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.enter(`image`),s=n.enter(`label`),c=n.createTracker(r),l=c.move(`![`);return l+=c.move(n.safe(e.alt,{before:l,after:`]`,...c.current()})),l+=c.move(`](`),s(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(s=n.enter(`destinationLiteral`),l+=c.move(`<`),l+=c.move(n.safe(e.url,{before:l,after:`>`,...c.current()})),l+=c.move(`>`)):(s=n.enter(`destinationRaw`),l+=c.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...c.current()}))),s(),e.title&&(s=n.enter(`title${a}`),l+=c.move(` `+i),l+=c.move(n.safe(e.title,{before:l,after:i,...c.current()})),l+=c.move(i),s()),l+=c.move(`)`),o(),l}function OW(){return`!`}kW.peek=AW;function kW(e,t,n,r){let i=e.referenceType,a=n.enter(`imageReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`![`),l=n.safe(e.alt,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=[],o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function AW(){return`!`}jW.peek=MW;function jW(e,t,n){let r=e.value||``,i="`",a=-1;for(;RegExp("(^|[^`])"+i+"([^`]|$)").test(r);)i+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=` `+r+` `);++a\u007F]/.test(e.url))}PW.peek=FW;function PW(e,t,n,r){let i=gW(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.createTracker(r),s,c;if(NW(e,n)){let t=n.stack;n.stack=[],s=n.enter(`autolink`);let r=o.move(`<`);return r+=o.move(n.containerPhrasing(e,{before:r,after:`>`,...o.current()})),r+=o.move(`>`),s(),n.stack=t,r}s=n.enter(`link`),c=n.enter(`label`);let l=o.move(`[`);return l+=o.move(n.containerPhrasing(e,{before:l,after:`](`,...o.current()})),l+=o.move(`](`),c(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(c=n.enter(`destinationLiteral`),l+=o.move(`<`),l+=o.move(n.safe(e.url,{before:l,after:`>`,...o.current()})),l+=o.move(`>`)):(c=n.enter(`destinationRaw`),l+=o.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...o.current()}))),c(),e.title&&(c=n.enter(`title${a}`),l+=o.move(` `+i),l+=o.move(n.safe(e.title,{before:l,after:i,...o.current()})),l+=o.move(i),c()),l+=o.move(`)`),s(),l}function FW(e,t,n){return NW(e,n)?`<`:`[`}IW.peek=LW;function IW(e,t,n,r){let i=e.referenceType,a=n.enter(`linkReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`[`),l=n.containerPhrasing(e,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=[],o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function LW(){return`[`}function RW(e){let t=e.options.bullet||`*`;if(t!==`*`&&t!==`+`&&t!==`-`)throw Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function zW(e){let t=RW(e),n=e.options.bulletOther;if(!n)return t===`*`?`-`:`*`;if(n!==`*`&&n!==`+`&&n!==`-`)throw Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===t)throw Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+n+"`) to be different");return n}function BW(e){let t=e.options.bulletOrdered||`.`;if(t!==`.`&&t!==`)`)throw Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function VW(e){let t=e.options.rule||`*`;if(t!==`*`&&t!==`-`&&t!==`_`)throw Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function HW(e,t,n,r){let i=n.enter(`list`),a=n.bulletCurrent,o=e.ordered?BW(n):RW(n),s=e.ordered?o===`.`?`)`:`.`:zW(n),c=t&&n.bulletLastUsed?o===n.bulletLastUsed:!1;if(!e.ordered){let t=e.children?e.children[0]:void 0;if((o===`*`||o===`-`)&&t&&(!t.children||!t.children[0])&&n.stack[n.stack.length-1]===`list`&&n.stack[n.stack.length-2]===`listItem`&&n.stack[n.stack.length-3]===`list`&&n.stack[n.stack.length-4]===`listItem`&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),VW(n)===o&&t){let t=-1;for(;++t-1?t.start:1)+(n.options.incrementListMarker===!1?0:t.children.indexOf(e))+a);let o=a.length+1;(i===`tab`||i===`mixed`&&(t&&t.type===`list`&&t.spread||e.spread))&&(o=Math.ceil(o/4)*4);let s=n.createTracker(r);s.move(a+` `.repeat(o-a.length)),s.shift(o);let c=n.enter(`listItem`),l=n.indentLines(n.containerFlow(e,s.current()),u);return c(),l;function u(e,t,n){return t?(n?``:` `.repeat(o))+e:(n?a:a+` `.repeat(o-a.length))+e}}function GW(e,t,n,r){let i=n.enter(`paragraph`),a=n.enter(`phrasing`),o=n.containerPhrasing(e,r);return a(),i(),o}var KW=QV([`break`,`delete`,`emphasis`,`footnote`,`footnoteReference`,`image`,`imageReference`,`inlineCode`,`inlineMath`,`link`,`linkReference`,`mdxJsxTextElement`,`mdxTextExpression`,`strong`,`text`,`textDirective`]);function qW(e,t,n,r){return(e.children.some(function(e){return KW(e)})?n.containerPhrasing:n.containerFlow).call(n,e,r)}function JW(e){let t=e.options.strong||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}YW.peek=XW;function YW(e,t,n,r){let i=JW(n),a=n.enter(`strong`),o=n.createTracker(r),s=o.move(i+i),c=o.move(n.containerPhrasing(e,{after:i,before:s,...o.current()})),l=c.charCodeAt(0),u=bW(r.before.charCodeAt(r.before.length-1),l,i);u.inside&&(c=yW(l)+c.slice(1));let d=c.charCodeAt(c.length-1),f=bW(r.after.charCodeAt(0),d,i);f.inside&&(c=c.slice(0,-1)+yW(d));let p=o.move(i+i);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},s+c+p}function XW(e,t,n){return n.options.strong||`*`}function ZW(e,t,n,r){return n.safe(e.value,r)}function QW(e){let t=e.options.ruleRepetition||3;if(t<3)throw Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function $W(e,t,n){let r=(VW(n)+(n.options.ruleSpaces?` `:``)).repeat(QW(n));return n.options.ruleSpaces?r.slice(0,-1):r}var eG={blockquote:oW,break:uW,code:mW,definition:_W,emphasis:xW,hardBreak:uW,heading:wW,html:TW,image:DW,imageReference:kW,inlineCode:jW,link:PW,linkReference:IW,list:HW,listItem:WW,paragraph:GW,root:qW,strong:YW,text:ZW,thematicBreak:$W};function tG(){return{enter:{table:nG,tableData:oG,tableHeader:oG,tableRow:iG},exit:{codeText:sG,table:rG,tableData:aG,tableHeader:aG,tableRow:aG}}}function nG(e){let t=e._align;this.enter({type:`table`,align:t.map(function(e){return e===`none`?null:e}),children:[]},e),this.data.inTable=!0}function rG(e){this.exit(e),this.data.inTable=void 0}function iG(e){this.enter({type:`tableRow`,children:[]},e)}function aG(e){this.exit(e)}function oG(e){this.enter({type:`tableCell`,children:[]},e)}function sG(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,cG));let n=this.stack[this.stack.length-1];n.type,n.value=t,this.exit(e)}function cG(e,t){return t===`|`?t:e}function lG(e){let t=e||{},n=t.tableCellPadding,r=t.tablePipeAlign,i=t.stringLength,a=n?` `:`|`;return{unsafe:[{character:`\r`,inConstruct:`tableCell`},{character:` +`,...a.current()});return/^[\t ]/.test(l)&&(l=$W(l.charCodeAt(0))+l.slice(1)),l=l?o+` `+l:o,n.options.closeAtx&&(l+=` `+o),c(),s(),l}aG.peek=oG;function aG(e){return e.value||``}function oG(){return`<`}sG.peek=cG;function sG(e,t,n,r){let i=XW(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.enter(`image`),s=n.enter(`label`),c=n.createTracker(r),l=c.move(`![`);return l+=c.move(n.safe(e.alt,{before:l,after:`]`,...c.current()})),l+=c.move(`](`),s(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(s=n.enter(`destinationLiteral`),l+=c.move(`<`),l+=c.move(n.safe(e.url,{before:l,after:`>`,...c.current()})),l+=c.move(`>`)):(s=n.enter(`destinationRaw`),l+=c.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...c.current()}))),s(),e.title&&(s=n.enter(`title${a}`),l+=c.move(` `+i),l+=c.move(n.safe(e.title,{before:l,after:i,...c.current()})),l+=c.move(i),s()),l+=c.move(`)`),o(),l}function cG(){return`!`}lG.peek=uG;function lG(e,t,n,r){let i=e.referenceType,a=n.enter(`imageReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`![`),l=n.safe(e.alt,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=[],o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function uG(){return`!`}dG.peek=fG;function dG(e,t,n){let r=e.value||``,i="`",a=-1;for(;RegExp("(^|[^`])"+i+"([^`]|$)").test(r);)i+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=` `+r+` `);++a\u007F]/.test(e.url))}mG.peek=hG;function mG(e,t,n,r){let i=XW(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.createTracker(r),s,c;if(pG(e,n)){let t=n.stack;n.stack=[],s=n.enter(`autolink`);let r=o.move(`<`);return r+=o.move(n.containerPhrasing(e,{before:r,after:`>`,...o.current()})),r+=o.move(`>`),s(),n.stack=t,r}s=n.enter(`link`),c=n.enter(`label`);let l=o.move(`[`);return l+=o.move(n.containerPhrasing(e,{before:l,after:`](`,...o.current()})),l+=o.move(`](`),c(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(c=n.enter(`destinationLiteral`),l+=o.move(`<`),l+=o.move(n.safe(e.url,{before:l,after:`>`,...o.current()})),l+=o.move(`>`)):(c=n.enter(`destinationRaw`),l+=o.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...o.current()}))),c(),e.title&&(c=n.enter(`title${a}`),l+=o.move(` `+i),l+=o.move(n.safe(e.title,{before:l,after:i,...o.current()})),l+=o.move(i),c()),l+=o.move(`)`),s(),l}function hG(e,t,n){return pG(e,n)?`<`:`[`}gG.peek=_G;function gG(e,t,n,r){let i=e.referenceType,a=n.enter(`linkReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`[`),l=n.containerPhrasing(e,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=[],o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function _G(){return`[`}function vG(e){let t=e.options.bullet||`*`;if(t!==`*`&&t!==`+`&&t!==`-`)throw Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function yG(e){let t=vG(e),n=e.options.bulletOther;if(!n)return t===`*`?`-`:`*`;if(n!==`*`&&n!==`+`&&n!==`-`)throw Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===t)throw Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+n+"`) to be different");return n}function bG(e){let t=e.options.bulletOrdered||`.`;if(t!==`.`&&t!==`)`)throw Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function xG(e){let t=e.options.rule||`*`;if(t!==`*`&&t!==`-`&&t!==`_`)throw Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function SG(e,t,n,r){let i=n.enter(`list`),a=n.bulletCurrent,o=e.ordered?bG(n):vG(n),s=e.ordered?o===`.`?`)`:`.`:yG(n),c=t&&n.bulletLastUsed?o===n.bulletLastUsed:!1;if(!e.ordered){let t=e.children?e.children[0]:void 0;if((o===`*`||o===`-`)&&t&&(!t.children||!t.children[0])&&n.stack[n.stack.length-1]===`list`&&n.stack[n.stack.length-2]===`listItem`&&n.stack[n.stack.length-3]===`list`&&n.stack[n.stack.length-4]===`listItem`&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),xG(n)===o&&t){let t=-1;for(;++t-1?t.start:1)+(n.options.incrementListMarker===!1?0:t.children.indexOf(e))+a);let o=a.length+1;(i===`tab`||i===`mixed`&&(t&&t.type===`list`&&t.spread||e.spread))&&(o=Math.ceil(o/4)*4);let s=n.createTracker(r);s.move(a+` `.repeat(o-a.length)),s.shift(o);let c=n.enter(`listItem`),l=n.indentLines(n.containerFlow(e,s.current()),u);return c(),l;function u(e,t,n){return t?(n?``:` `.repeat(o))+e:(n?a:a+` `.repeat(o-a.length))+e}}function TG(e,t,n,r){let i=n.enter(`paragraph`),a=n.enter(`phrasing`),o=n.containerPhrasing(e,r);return a(),i(),o}var EG=MH([`break`,`delete`,`emphasis`,`footnote`,`footnoteReference`,`image`,`imageReference`,`inlineCode`,`inlineMath`,`link`,`linkReference`,`mdxJsxTextElement`,`mdxTextExpression`,`strong`,`text`,`textDirective`]);function DG(e,t,n,r){return(e.children.some(function(e){return EG(e)})?n.containerPhrasing:n.containerFlow).call(n,e,r)}function OG(e){let t=e.options.strong||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}kG.peek=AG;function kG(e,t,n,r){let i=OG(n),a=n.enter(`strong`),o=n.createTracker(r),s=o.move(i+i),c=o.move(n.containerPhrasing(e,{after:i,before:s,...o.current()})),l=c.charCodeAt(0),u=eG(r.before.charCodeAt(r.before.length-1),l,i);u.inside&&(c=$W(l)+c.slice(1));let d=c.charCodeAt(c.length-1),f=eG(r.after.charCodeAt(0),d,i);f.inside&&(c=c.slice(0,-1)+$W(d));let p=o.move(i+i);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},s+c+p}function AG(e,t,n){return n.options.strong||`*`}function jG(e,t,n,r){return n.safe(e.value,r)}function MG(e){let t=e.options.ruleRepetition||3;if(t<3)throw Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function NG(e,t,n){let r=(xG(n)+(n.options.ruleSpaces?` `:``)).repeat(MG(n));return n.options.ruleSpaces?r.slice(0,-1):r}var PG={blockquote:BW,break:WW,code:JW,definition:ZW,emphasis:tG,hardBreak:WW,heading:iG,html:aG,image:sG,imageReference:lG,inlineCode:dG,link:mG,linkReference:gG,list:SG,listItem:wG,paragraph:TG,root:DG,strong:kG,text:jG,thematicBreak:NG};function FG(){return{enter:{table:IG,tableData:BG,tableHeader:BG,tableRow:RG},exit:{codeText:VG,table:LG,tableData:zG,tableHeader:zG,tableRow:zG}}}function IG(e){let t=e._align;this.enter({type:`table`,align:t.map(function(e){return e===`none`?null:e}),children:[]},e),this.data.inTable=!0}function LG(e){this.exit(e),this.data.inTable=void 0}function RG(e){this.enter({type:`tableRow`,children:[]},e)}function zG(e){this.exit(e)}function BG(e){this.enter({type:`tableCell`,children:[]},e)}function VG(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,HG));let n=this.stack[this.stack.length-1];n.type,n.value=t,this.exit(e)}function HG(e,t){return t===`|`?t:e}function UG(e){let t=e||{},n=t.tableCellPadding,r=t.tablePipeAlign,i=t.stringLength,a=n?` `:`|`;return{unsafe:[{character:`\r`,inConstruct:`tableCell`},{character:` `,inConstruct:`tableCell`},{atBreak:!0,character:`|`,after:`[ :-]`},{character:`|`,inConstruct:`tableCell`},{atBreak:!0,character:`:`,after:`-`},{atBreak:!0,character:`-`,after:`[:|-]`}],handlers:{inlineCode:f,table:o,tableCell:c,tableRow:s}};function o(e,t,n,r){return l(u(e,n,r),e.align)}function s(e,t,n,r){let i=l([d(e,n,r)]);return i.slice(0,i.indexOf(` -`))}function c(e,t,n,r){let i=n.enter(`tableCell`),o=n.enter(`phrasing`),s=n.containerPhrasing(e,{...r,before:a,after:a});return o(),i(),s}function l(e,t){return rW(e,{align:t,alignDelimiters:r,padding:n,stringLength:i})}function u(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`table`);for(;++i0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}var VG={tokenize:YG,partial:!0};function HG(){return{document:{91:{name:`gfmFootnoteDefinition`,tokenize:KG,continuation:{tokenize:qG},exit:JG}},text:{91:{name:`gfmFootnoteCall`,tokenize:GG},93:{name:`gfmPotentialFootnoteCall`,add:`after`,tokenize:UG,resolveTo:WG}}}}function UG(e,t,n){let r=this,i=r.events.length,a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),o;for(;i--;){let e=r.events[i][1];if(e.type===`labelImage`){o=e;break}if(e.type===`gfmFootnoteCall`||e.type===`labelLink`||e.type===`label`||e.type===`image`||e.type===`link`)break}return s;function s(i){if(!o||!o._balanced)return n(i);let s=cB(r.sliceSerialize({start:o.end,end:r.now()}));return s.codePointAt(0)!==94||!a.includes(s.slice(1))?n(i):(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(i),e.exit(`gfmFootnoteCallLabelMarker`),t(i))}}function WG(e,t){let n=e.length;for(;n--;)if(e[n][1].type===`labelImage`&&e[n][0]===`enter`){e[n][1];break}e[n+1][1].type=`data`,e[n+3][1].type=`gfmFootnoteCallLabelMarker`;let r={type:`gfmFootnoteCall`,start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},i={type:`gfmFootnoteCallMarker`,start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;let a={type:`gfmFootnoteCallString`,start:Object.assign({},i.end),end:Object.assign({},e[e.length-1][1].start)},o={type:`chunkString`,contentType:`string`,start:Object.assign({},a.start),end:Object.assign({},a.end)},s=[e[n+1],e[n+2],[`enter`,r,t],e[n+3],e[n+4],[`enter`,i,t],[`exit`,i,t],[`enter`,a,t],[`enter`,o,t],[`exit`,o,t],[`exit`,a,t],e[e.length-2],e[e.length-1],[`exit`,r,t]];return e.splice(n,e.length-n+1,...s),e}function GG(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a=0,o;return s;function s(t){return e.enter(`gfmFootnoteCall`),e.enter(`gfmFootnoteCallLabelMarker`),e.consume(t),e.exit(`gfmFootnoteCallLabelMarker`),c}function c(t){return t===94?(e.enter(`gfmFootnoteCallMarker`),e.consume(t),e.exit(`gfmFootnoteCallMarker`),e.enter(`gfmFootnoteCallString`),e.enter(`chunkString`).contentType=`string`,l):n(t)}function l(s){if(a>999||s===93&&!o||s===null||s===91||mB(s))return n(s);if(s===93){e.exit(`chunkString`);let a=e.exit(`gfmFootnoteCallString`);return i.includes(cB(r.sliceSerialize(a)))?(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(s),e.exit(`gfmFootnoteCallLabelMarker`),e.exit(`gfmFootnoteCall`),t):n(s)}return mB(s)||(o=!0),a++,e.consume(s),s===92?u:l}function u(t){return t===91||t===92||t===93?(e.consume(t),a++,l):l(t)}}function KG(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a,o=0,s;return c;function c(t){return e.enter(`gfmFootnoteDefinition`)._container=!0,e.enter(`gfmFootnoteDefinitionLabel`),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),l}function l(t){return t===94?(e.enter(`gfmFootnoteDefinitionMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionMarker`),e.enter(`gfmFootnoteDefinitionLabelString`),e.enter(`chunkString`).contentType=`string`,u):n(t)}function u(t){if(o>999||t===93&&!s||t===null||t===91||mB(t))return n(t);if(t===93){e.exit(`chunkString`);let n=e.exit(`gfmFootnoteDefinitionLabelString`);return a=cB(r.sliceSerialize(n)),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),e.exit(`gfmFootnoteDefinitionLabel`),f}return mB(t)||(s=!0),o++,e.consume(t),t===92?d:u}function d(t){return t===91||t===92||t===93?(e.consume(t),o++,u):u(t)}function f(t){return t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),i.includes(a)||i.push(a),bB(e,p,`gfmFootnoteDefinitionWhitespace`)):n(t)}function p(e){return t(e)}}function qG(e,t,n){return e.check(EB,t,e.attempt(VG,t,n))}function JG(e){e.exit(`gfmFootnoteDefinition`)}function YG(e,t,n){let r=this;return bB(e,i,`gfmFootnoteDefinitionIndent`,5);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`gfmFootnoteDefinitionIndent`&&i[2].sliceSerialize(i[1],!0).length===4?t(e):n(e)}}function XG(e){let t=(e||{}).singleTilde,n={name:`strikethrough`,tokenize:i,resolveAll:r};return t??=!0,{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function r(e,t){let n=-1;for(;++n1?r(a):(e.consume(a),o++,c);if(o<2&&!t)return r(a);let l=e.exit(`strikethroughSequenceTemporary`),u=SB(a);return l._open=!u||u===2&&!!s,l._close=!s||s===2&&!!u,n(a)}}}var ZG=class{constructor(){this.map=[]}add(e,t,n){QG(this,e,t,n)}consume(e){if(this.map.sort(function(e,t){return e[0]-t[0]}),this.map.length===0)return;let t=this.map.length,n=[];for(;t>0;)--t,n.push(e.slice(this.map[t][0]+this.map[t][1]),this.map[t][2]),e.length=this.map[t][0];n.push(e.slice()),e.length=0;let r=n.pop();for(;r;){for(let t of r)e.push(t);r=n.pop()}this.map.length=0}};function QG(e,t,n,r){let i=0;if(!(n===0&&r.length===0)){for(;i-1;){let e=r.events[t][1].type;if(e===`lineEnding`||e===`linePrefix`)t--;else break}let i=t>-1?r.events[t][1].type:null,a=i===`tableHead`||i===`tableRow`?ee:c;return a===ee&&r.parser.lazy[r.now().line]?n(e):a(e)}function c(t){return e.enter(`tableHead`),e.enter(`tableRow`),l(t)}function l(e){return e===124?u(e):(o=!0,a+=1,u(e))}function u(t){return t===null?n(t):pB(t)?a>1?(a=0,r.interrupt=!0,e.exit(`tableRow`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),p):n(t):hB(t)?bB(e,u,`whitespace`)(t):(a+=1,o&&(o=!1,i+=1),t===124?(e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),o=!0,u):(e.enter(`data`),d(t)))}function d(t){return t===null||t===124||mB(t)?(e.exit(`data`),u(t)):(e.consume(t),t===92?f:d)}function f(t){return t===92||t===124?(e.consume(t),d):d(t)}function p(t){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(t):(e.enter(`tableDelimiterRow`),o=!1,hB(t)?bB(e,m,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):m(t))}function m(t){return t===45||t===58?g(t):t===124?(o=!0,e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),h):x(t)}function h(t){return hB(t)?bB(e,g,`whitespace`)(t):g(t)}function g(t){return t===58?(a+=1,o=!0,e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),_):t===45?(a+=1,_(t)):t===null||pB(t)?b(t):x(t)}function _(t){return t===45?(e.enter(`tableDelimiterFiller`),v(t)):x(t)}function v(t){return t===45?(e.consume(t),v):t===58?(o=!0,e.exit(`tableDelimiterFiller`),e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),y):(e.exit(`tableDelimiterFiller`),y(t))}function y(t){return hB(t)?bB(e,b,`whitespace`)(t):b(t)}function b(n){return n===124?m(n):n===null||pB(n)?!o||i!==a?x(n):(e.exit(`tableDelimiterRow`),e.exit(`tableHead`),t(n)):x(n)}function x(e){return n(e)}function ee(t){return e.enter(`tableRow`),te(t)}function te(n){return n===124?(e.enter(`tableCellDivider`),e.consume(n),e.exit(`tableCellDivider`),te):n===null||pB(n)?(e.exit(`tableRow`),t(n)):hB(n)?bB(e,te,`whitespace`)(n):(e.enter(`data`),S(n))}function S(t){return t===null||t===124||mB(t)?(e.exit(`data`),te(t)):(e.consume(t),t===92?ne:S)}function ne(t){return t===92||t===124?(e.consume(t),S):S(t)}}function nK(e,t){let n=-1,r=!0,i=0,a=[0,0,0,0],o=[0,0,0,0],s=!1,c=0,l,u,d,f=new ZG;for(;++nn[2]+1){let t=n[2]+1,r=n[3]-n[2]-1;e.add(t,r,[])}}e.add(n[3]+1,0,[[`exit`,o,t]])}return i!==void 0&&(a.end=Object.assign({},aK(t.events,i)),e.add(i,0,[[`exit`,a,t]]),a=void 0),a}function iK(e,t,n,r,i){let a=[],o=aK(t.events,n);i&&(i.end=Object.assign({},o),a.push([`exit`,i,t])),r.end=Object.assign({},o),a.push([`exit`,r,t]),e.add(n+1,0,a)}function aK(e,t){let n=e[t],r=n[0]===`enter`?`start`:`end`;return n[1][r]}var oK={name:`tasklistCheck`,tokenize:cK};function sK(){return{text:{91:oK}}}function cK(e,t,n){let r=this;return i;function i(t){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(t):(e.enter(`taskListCheck`),e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),a)}function a(t){return mB(t)?(e.enter(`taskListCheckValueUnchecked`),e.consume(t),e.exit(`taskListCheckValueUnchecked`),o):t===88||t===120?(e.enter(`taskListCheckValueChecked`),e.consume(t),e.exit(`taskListCheckValueChecked`),o):n(t)}function o(t){return t===93?(e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),e.exit(`taskListCheck`),s):n(t)}function s(r){return pB(r)?t(r):hB(r)?e.check({tokenize:lK},t,n)(r):n(r)}}function lK(e,t,n){return bB(e,r,`whitespace`);function r(e){return e===null?n(e):t(e)}}function uK(e){return oB([EG(),HG(),XG(e),eK(),sK()])}var dK={};function fK(e){let t=this,n=e||dK,r=t.data(),i=r.micromarkExtensions||=[],a=r.fromMarkdownExtensions||=[],o=r.toMarkdownExtensions||=[];i.push(uK(n)),a.push(hG()),o.push(gG(n))}function pK(e){hU(e,[/\r?\n|\r/g,mK])}function mK(){return{type:`break`}}function hK(){return function(e){pK(e)}}function gK(e){return e.replace(/([\s\S]*?)(?:<\/think>|$)/gi,(e,t)=>`\n> 💭 **思考过程**\n>\n${String(t||``).trim().split(` +`))}function c(e,t,n,r){let i=n.enter(`tableCell`),o=n.enter(`phrasing`),s=n.containerPhrasing(e,{...r,before:a,after:a});return o(),i(),s}function l(e,t){return LW(e,{align:t,alignDelimiters:r,padding:n,stringLength:i})}function u(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`table`);for(;++i0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}var xK={tokenize:kK,partial:!0};function SK(){return{document:{91:{name:`gfmFootnoteDefinition`,tokenize:EK,continuation:{tokenize:DK},exit:OK}},text:{91:{name:`gfmFootnoteCall`,tokenize:TK},93:{name:`gfmPotentialFootnoteCall`,add:`after`,tokenize:CK,resolveTo:wK}}}}function CK(e,t,n){let r=this,i=r.events.length,a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),o;for(;i--;){let e=r.events[i][1];if(e.type===`labelImage`){o=e;break}if(e.type===`gfmFootnoteCall`||e.type===`labelLink`||e.type===`label`||e.type===`image`||e.type===`link`)break}return s;function s(i){if(!o||!o._balanced)return n(i);let s=oB(r.sliceSerialize({start:o.end,end:r.now()}));return s.codePointAt(0)!==94||!a.includes(s.slice(1))?n(i):(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(i),e.exit(`gfmFootnoteCallLabelMarker`),t(i))}}function wK(e,t){let n=e.length;for(;n--;)if(e[n][1].type===`labelImage`&&e[n][0]===`enter`){e[n][1];break}e[n+1][1].type=`data`,e[n+3][1].type=`gfmFootnoteCallLabelMarker`;let r={type:`gfmFootnoteCall`,start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},i={type:`gfmFootnoteCallMarker`,start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;let a={type:`gfmFootnoteCallString`,start:Object.assign({},i.end),end:Object.assign({},e[e.length-1][1].start)},o={type:`chunkString`,contentType:`string`,start:Object.assign({},a.start),end:Object.assign({},a.end)},s=[e[n+1],e[n+2],[`enter`,r,t],e[n+3],e[n+4],[`enter`,i,t],[`exit`,i,t],[`enter`,a,t],[`enter`,o,t],[`exit`,o,t],[`exit`,a,t],e[e.length-2],e[e.length-1],[`exit`,r,t]];return e.splice(n,e.length-n+1,...s),e}function TK(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a=0,o;return s;function s(t){return e.enter(`gfmFootnoteCall`),e.enter(`gfmFootnoteCallLabelMarker`),e.consume(t),e.exit(`gfmFootnoteCallLabelMarker`),c}function c(t){return t===94?(e.enter(`gfmFootnoteCallMarker`),e.consume(t),e.exit(`gfmFootnoteCallMarker`),e.enter(`gfmFootnoteCallString`),e.enter(`chunkString`).contentType=`string`,l):n(t)}function l(s){if(a>999||s===93&&!o||s===null||s===91||fB(s))return n(s);if(s===93){e.exit(`chunkString`);let a=e.exit(`gfmFootnoteCallString`);return i.includes(oB(r.sliceSerialize(a)))?(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(s),e.exit(`gfmFootnoteCallLabelMarker`),e.exit(`gfmFootnoteCall`),t):n(s)}return fB(s)||(o=!0),a++,e.consume(s),s===92?u:l}function u(t){return t===91||t===92||t===93?(e.consume(t),a++,l):l(t)}}function EK(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a,o=0,s;return c;function c(t){return e.enter(`gfmFootnoteDefinition`)._container=!0,e.enter(`gfmFootnoteDefinitionLabel`),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),l}function l(t){return t===94?(e.enter(`gfmFootnoteDefinitionMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionMarker`),e.enter(`gfmFootnoteDefinitionLabelString`),e.enter(`chunkString`).contentType=`string`,u):n(t)}function u(t){if(o>999||t===93&&!s||t===null||t===91||fB(t))return n(t);if(t===93){e.exit(`chunkString`);let n=e.exit(`gfmFootnoteDefinitionLabelString`);return a=oB(r.sliceSerialize(n)),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),e.exit(`gfmFootnoteDefinitionLabel`),f}return fB(t)||(s=!0),o++,e.consume(t),t===92?d:u}function d(t){return t===91||t===92||t===93?(e.consume(t),o++,u):u(t)}function f(t){return t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),i.includes(a)||i.push(a),vB(e,p,`gfmFootnoteDefinitionWhitespace`)):n(t)}function p(e){return t(e)}}function DK(e,t,n){return e.check(wB,t,e.attempt(xK,t,n))}function OK(e){e.exit(`gfmFootnoteDefinition`)}function kK(e,t,n){let r=this;return vB(e,i,`gfmFootnoteDefinitionIndent`,5);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`gfmFootnoteDefinitionIndent`&&i[2].sliceSerialize(i[1],!0).length===4?t(e):n(e)}}function AK(e){let t=(e||{}).singleTilde,n={name:`strikethrough`,tokenize:i,resolveAll:r};return t??=!0,{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function r(e,t){let n=-1;for(;++n1?r(a):(e.consume(a),o++,c);if(o<2&&!t)return r(a);let l=e.exit(`strikethroughSequenceTemporary`),u=bB(a);return l._open=!u||u===2&&!!s,l._close=!s||s===2&&!!u,n(a)}}}var jK=class{constructor(){this.map=[]}add(e,t,n){MK(this,e,t,n)}consume(e){if(this.map.sort(function(e,t){return e[0]-t[0]}),this.map.length===0)return;let t=this.map.length,n=[];for(;t>0;)--t,n.push(e.slice(this.map[t][0]+this.map[t][1]),this.map[t][2]),e.length=this.map[t][0];n.push(e.slice()),e.length=0;let r=n.pop();for(;r;){for(let t of r)e.push(t);r=n.pop()}this.map.length=0}};function MK(e,t,n,r){let i=0;if(!(n===0&&r.length===0)){for(;i-1;){let e=r.events[t][1].type;if(e===`lineEnding`||e===`linePrefix`)t--;else break}let i=t>-1?r.events[t][1].type:null,a=i===`tableHead`||i===`tableRow`?ee:c;return a===ee&&r.parser.lazy[r.now().line]?n(e):a(e)}function c(t){return e.enter(`tableHead`),e.enter(`tableRow`),l(t)}function l(e){return e===124?u(e):(o=!0,a+=1,u(e))}function u(t){return t===null?n(t):dB(t)?a>1?(a=0,r.interrupt=!0,e.exit(`tableRow`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),p):n(t):pB(t)?vB(e,u,`whitespace`)(t):(a+=1,o&&(o=!1,i+=1),t===124?(e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),o=!0,u):(e.enter(`data`),d(t)))}function d(t){return t===null||t===124||fB(t)?(e.exit(`data`),u(t)):(e.consume(t),t===92?f:d)}function f(t){return t===92||t===124?(e.consume(t),d):d(t)}function p(t){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(t):(e.enter(`tableDelimiterRow`),o=!1,pB(t)?vB(e,m,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):m(t))}function m(t){return t===45||t===58?g(t):t===124?(o=!0,e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),h):x(t)}function h(t){return pB(t)?vB(e,g,`whitespace`)(t):g(t)}function g(t){return t===58?(a+=1,o=!0,e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),_):t===45?(a+=1,_(t)):t===null||dB(t)?b(t):x(t)}function _(t){return t===45?(e.enter(`tableDelimiterFiller`),v(t)):x(t)}function v(t){return t===45?(e.consume(t),v):t===58?(o=!0,e.exit(`tableDelimiterFiller`),e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),y):(e.exit(`tableDelimiterFiller`),y(t))}function y(t){return pB(t)?vB(e,b,`whitespace`)(t):b(t)}function b(n){return n===124?m(n):n===null||dB(n)?!o||i!==a?x(n):(e.exit(`tableDelimiterRow`),e.exit(`tableHead`),t(n)):x(n)}function x(e){return n(e)}function ee(t){return e.enter(`tableRow`),te(t)}function te(n){return n===124?(e.enter(`tableCellDivider`),e.consume(n),e.exit(`tableCellDivider`),te):n===null||dB(n)?(e.exit(`tableRow`),t(n)):pB(n)?vB(e,te,`whitespace`)(n):(e.enter(`data`),S(n))}function S(t){return t===null||t===124||fB(t)?(e.exit(`data`),te(t)):(e.consume(t),t===92?ne:S)}function ne(t){return t===92||t===124?(e.consume(t),S):S(t)}}function IK(e,t){let n=-1,r=!0,i=0,a=[0,0,0,0],o=[0,0,0,0],s=!1,c=0,l,u,d,f=new jK;for(;++nn[2]+1){let t=n[2]+1,r=n[3]-n[2]-1;e.add(t,r,[])}}e.add(n[3]+1,0,[[`exit`,o,t]])}return i!==void 0&&(a.end=Object.assign({},zK(t.events,i)),e.add(i,0,[[`exit`,a,t]]),a=void 0),a}function RK(e,t,n,r,i){let a=[],o=zK(t.events,n);i&&(i.end=Object.assign({},o),a.push([`exit`,i,t])),r.end=Object.assign({},o),a.push([`exit`,r,t]),e.add(n+1,0,a)}function zK(e,t){let n=e[t],r=n[0]===`enter`?`start`:`end`;return n[1][r]}var BK={name:`tasklistCheck`,tokenize:HK};function VK(){return{text:{91:BK}}}function HK(e,t,n){let r=this;return i;function i(t){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(t):(e.enter(`taskListCheck`),e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),a)}function a(t){return fB(t)?(e.enter(`taskListCheckValueUnchecked`),e.consume(t),e.exit(`taskListCheckValueUnchecked`),o):t===88||t===120?(e.enter(`taskListCheckValueChecked`),e.consume(t),e.exit(`taskListCheckValueChecked`),o):n(t)}function o(t){return t===93?(e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),e.exit(`taskListCheck`),s):n(t)}function s(r){return dB(r)?t(r):pB(r)?e.check({tokenize:UK},t,n)(r):n(r)}}function UK(e,t,n){return vB(e,r,`whitespace`);function r(e){return e===null?n(e):t(e)}}function WK(e){return iB([oK(),SK(),AK(e),PK(),VK()])}var GK={};function KK(e){let t=this,n=e||GK,r=t.data(),i=r.micromarkExtensions||=[],a=r.fromMarkdownExtensions||=[],o=r.toMarkdownExtensions||=[];i.push(WK(n)),a.push(YG()),o.push(XG(n))}function qK(e){YU(e,[/\r?\n|\r/g,JK])}function JK(){return{type:`break`}}function YK(){return function(e){qK(e)}}function XK(e){return e.replace(/([\s\S]*?)(?:<\/think>|$)/gi,(e,t)=>`\n> 💭 **思考过程**\n>\n${String(t||``).trim().split(` `).filter(Boolean).map(e=>`> ${e}`).join(` -`)}\n\n`)}function _K(e){return/^\s*\|(?:\s*[:\-]+\s*\|){2,}\s*$/.test(e)}function vK(e){let t=e.trim();return t.startsWith(`|`)?t.split(`|`).length>=4:!1}function yK(e){let t=e.trim();return t.startsWith(`|`)?t.replace(/^\|/,``).replace(/\|\s*$/,``).split(`|`).map(e=>e.trim()):[]}function bK(e,t=``){return`${t}| ${e.join(` | `)} |`}function xK(e){let t=e.split(` -`),n=[],r=0;for(;r{let t=[...e];for(;t.length{let t=[...e];for(;t.length=4:!1}function $K(e){let t=e.trim();return t.startsWith(`|`)?t.replace(/^\|/,``).replace(/\|\s*$/,``).split(`|`).map(e=>e.trim()):[]}function eq(e,t=``){return`${t}| ${e.join(` | `)} |`}function tq(e){let t=e.split(` +`),n=[],r=0;for(;r{let t=[...e];for(;t.length{let t=[...e];for(;t.lengthe.trimEnd()).filter(e=>e.trim().length>0):[e]}function wK(e){return vK(e)?e.replace(/\|\s*(?:\*{1,2}|_{1,2})\s*$/u,`|`):e}function TK(e){let t=e.trim();return vK(t)?t.split(`|`).slice(1,-1).length:0}function EK(e){let t=e.match(/^(\s*)/)?.[1]||``,n=TK(e);return n<2?``:`${t}| ${Array.from({length:n},()=>`---`).join(` | `)} |`}function DK(e){let t=[];for(let n of e.split(` -`)){if(/^\s*\|\s*$/.test(n))continue;let e=n.match(/^(\s*)\|\s*([^|]+)$/);if(e){t.push(`${e[1]}${e[2].trim()}`);continue}t.push(...CK(n).map(wK))}let n=[];for(let e=0;e0&&i.push(``),i.push(t),s&&c.length===0&&n.trim().length>0&&i.push(``)}return i.join(` -`)}function OK(e){let t=e.replace(/^[\u200B-\u200D\uFEFF]+/u,``),n=t.match(/^([ \t\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]*)([##]{1,6})([ \t\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]*)(\S.*)?$/u);if(!n)return t;let[,r,i,,a=``]=n,o=r.replace(/[^\t ]/gu,` `),s=i.replace(/#/gu,`#`);return a?`${o}${s} ${a}`:`${o}${s}`}function kK(e){let t=e;return t=t.split(` -`).map(e=>OK(e)).join(` +`).map(e=>e.trimEnd()).filter(e=>e.trim().length>0):[e]}function iq(e){return QK(e)?e.replace(/\|\s*(?:\*{1,2}|_{1,2})\s*$/u,`|`):e}function aq(e){let t=e.trim();return QK(t)?t.split(`|`).slice(1,-1).length:0}function oq(e){let t=e.match(/^(\s*)/)?.[1]||``,n=aq(e);return n<2?``:`${t}| ${Array.from({length:n},()=>`---`).join(` | `)} |`}function sq(e){let t=[];for(let n of e.split(` +`)){if(/^\s*\|\s*$/.test(n))continue;let e=n.match(/^(\s*)\|\s*([^|]+)$/);if(e){t.push(`${e[1]}${e[2].trim()}`);continue}t.push(...rq(n).map(iq))}let n=[];for(let e=0;e0&&i.push(``),i.push(t),s&&c.length===0&&n.trim().length>0&&i.push(``)}return i.join(` +`)}function cq(e){let t=e.replace(/^[\u200B-\u200D\uFEFF]+/u,``),n=t.match(/^([ \t\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]*)([##]{1,6})([ \t\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]*)(\S.*)?$/u);if(!n)return t;let[,r,i,,a=``]=n,o=r.replace(/[^\t ]/gu,` `),s=i.replace(/#/gu,`#`);return a?`${o}${s} ${a}`:`${o}${s}`}function lq(e){let t=e;return t=t.split(` +`).map(e=>cq(e)).join(` `),t=t.replace(/^[ \t]+(#{1,6}\s*)/gm,`$1`),t=t.replace(/([^\n#])\s*(#{1,6}\s*[^\s|])/g,`$1 $2`),t=t.replace(/^(#{1,6}\s*[^\n]+)\n(?!\n)/gm,`$1 @@ -181,31 +182,31 @@ $2`),t=t.replace(/([。;;::])\s*(\d+\.\s*)/g,`$1 $2`),t=t.replace(/([^\n\s])(\d+\.\s+)/g,`$1 $2`),t=t.replace(/([。;;::\.])\s*-(?!-)\s*/g,`$1 - `),t=t.replace(/([^\n\s-])-\s+/g,`$1 -- `),t=t.replace(/^-(?!-)(\S)/gm,`- $1`),t=DK(t),t=t.replace(/\n{3,}/g,` +- `),t=t.replace(/^-(?!-)(\S)/gm,`- $1`),t=sq(t),t=t.replace(/\n{3,}/g,` -`),t.trim()}function AK(e){return e.map((t,n)=>{if(n%2==1)return t;let r=kK(t),i=n>0,a=n{if(n%2==1)return t;let r=lq(t),i=n>0,a=n0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=NK(t,n),t in PK)return;PK[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:MK,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},FK=b.lazy(()=>J(()=>import(`./CodeBlock-DOH6MVcn.js`).then(e=>({default:e.CodeBlock})),[],import.meta.url)),IK=b.lazy(()=>J(()=>import(`./MermaidBlock-Dz4IP-Tx.js`).then(e=>({default:e.MermaidBlock})),[],import.meta.url)),LK=b.lazy(()=>J(()=>import(`./MathMessageMarkdown-BL8my1R2.js`).then(e=>({default:e.MathMessageMarkdown})),__vite__mapDeps([0,1,2,3,4]),import.meta.url));function RK(e){return/\$[^$]+\$|\$\$[^$]+\$\$/.test(e)}var zK={h1({children:e}){return(0,U.jsx)(`h1`,{className:`mb-3.5 mt-5 text-[17px] font-semibold text-foreground`,children:e})},h2({children:e}){return(0,U.jsx)(`h2`,{className:`mb-2.5 mt-4.5 text-[15px] font-semibold text-foreground`,children:e})},h3({children:e}){return(0,U.jsx)(`h3`,{className:`mb-2 mt-3.5 text-[14px] font-semibold text-foreground`,children:e})},p({children:e}){return(0,U.jsx)(`p`,{className:`mb-2.5 min-w-0 break-words leading-[1.65] text-foreground`,children:e})},ul({children:e}){return(0,U.jsx)(`ul`,{className:`mb-3 list-disc space-y-1.5 pl-5 text-foreground`,children:e})},ol({children:e}){return(0,U.jsx)(`ol`,{className:`mb-3 list-decimal space-y-1.5 pl-8 text-foreground`,children:e})},li({children:e}){return(0,U.jsx)(`li`,{className:`min-w-0 break-words pl-1 leading-6 text-foreground`,children:e})},strong({children:e}){return(0,U.jsx)(`strong`,{className:`font-semibold text-foreground`,children:e})},blockquote({children:e}){return(0,U.jsx)(`blockquote`,{className:`mb-3 border-l-2 border-border pl-4 text-text-secondary`,children:e})},code({className:e,children:t,...n}){let r=/language-(\w+)/.exec(e||``),i=String(t??``);if(!r&&!i.includes(` -`))return(0,U.jsx)(`code`,{className:`rounded-md border border-border bg-muted px-1.5 py-0.5 font-mono text-[13.5px] text-text-primary before:content-none after:content-none`,...n,children:t});let a=r?r[1]:``;return a===`mermaid`?(0,U.jsx)(b.Suspense,{fallback:(0,U.jsx)(`div`,{className:`h-32 animate-pulse rounded bg-muted`}),children:(0,U.jsx)(IK,{chart:i})}):(0,U.jsx)(b.Suspense,{fallback:(0,U.jsx)(`pre`,{className:`p-4 text-sm`,children:i}),children:(0,U.jsx)(FK,{language:a,value:i})})},table({children:e,...t}){return(0,U.jsx)(`div`,{className:`mb-3 max-w-full overflow-x-auto`,children:(0,U.jsx)(`table`,{className:`w-full min-w-max border-collapse text-sm text-foreground`,...t,children:e})})},th({children:e,...t}){return(0,U.jsx)(`th`,{className:`border-b border-border px-3 py-2 text-left font-semibold text-foreground`,...t,children:e})},td({children:e,...t}){return(0,U.jsx)(`td`,{className:`border-b border-border px-3 py-2 text-text-secondary`,...t,children:e})},a({children:e,href:t,...n}){return(0,U.jsx)(`a`,{href:t,className:`text-primary hover:underline`,target:`_blank`,rel:`noopener noreferrer`,...n,children:e})}},BK=b.memo(({content:e})=>{let t=jK(e);return(0,U.jsx)(`div`,{className:`max-w-none break-words text-[14px] leading-[1.65] [&>*:first-child]:mt-0 [&>*:last-child]:mb-0`,children:(0,U.jsx)(cU,{remarkPlugins:[fK,hK],components:zK,children:t})})}),VK=b.memo(({content:e})=>RK(e)?(0,U.jsx)(b.Suspense,{fallback:(0,U.jsx)(BK,{content:e}),children:(0,U.jsx)(LK,{content:e})}):(0,U.jsx)(BK,{content:e})),HK=/^diff --git "?a\/(.+?)"? "?b\/(.+?)"?$/;function UK(e){let t=[],n=new Map,r=null;for(let i of e.split(` -`)){let e=i.match(HK);if(e){let a=e[2],o=n.get(a);if(o){o.lines.push(i),r=o;continue}r={oldPath:e[1],path:a,lines:[i]},n.set(a,r),t.push(r);continue}r?.lines.push(i)}return t}function WK(e){let t=0,n=0;for(let r of e.lines)r.startsWith(`+`)&&!r.startsWith(`+++`)?t+=1:r.startsWith(`-`)&&!r.startsWith(`---`)&&(n+=1);return{added:t,removed:n}}function GK(e){return/^diff --git /m.test(e)}function KK(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function qK(e){let t=KK(e.properties)||{},n=Array.isArray(e.required)?new Set(e.required.map(String)):new Set,r=[];for(let[e,i]of Object.entries(t)){let t=KK(i),a=String(t?.type||``).toLowerCase(),o=a===`string`||a===`number`||a===`boolean`?a:`unknown`;r.push({name:e,title:typeof t?.title==`string`?t.title:void 0,type:o,required:n.has(e),enumValues:Array.isArray(t?.enum)?t.enum:void 0})}return r}function JK({schema:e,values:t,onChange:n,disabled:r,onSubmit:i,onCancel:a}){return(0,U.jsxs)(`div`,{className:`mt-3`,"data-testid":`interaction-schema-form`,children:[qK(e).map(e=>(0,U.jsxs)(`label`,{className:`mb-2 block text-xs text-slate-600 dark:text-slate-300`,children:[(0,U.jsxs)(`span`,{className:`mb-1 block font-medium`,children:[e.title||e.name,e.required?(0,U.jsx)(`span`,{className:`ml-0.5 text-rose-500`,children:`*`}):null]}),e.enumValues&&e.enumValues.length>0?(0,U.jsxs)(`select`,{"data-testid":`interaction-field-${e.name}`,disabled:r,value:String(t[e.name]??``),onChange:r=>n({...t,[e.name]:r.target.value}),className:`w-full rounded-md border border-amber-300/70 bg-white px-2 py-1.5 text-sm dark:border-amber-900/60 dark:bg-slate-950`,children:[(0,U.jsx)(`option`,{value:``,children:`请选择…`}),e.enumValues.map(e=>(0,U.jsx)(`option`,{value:String(e),children:String(e)},String(e)))]}):e.type===`boolean`?(0,U.jsx)(`input`,{type:`checkbox`,"data-testid":`interaction-field-${e.name}`,disabled:r,checked:!!t[e.name],onChange:r=>n({...t,[e.name]:r.target.checked}),className:`h-4 w-4`}):e.type===`number`?(0,U.jsx)(`input`,{type:`number`,"data-testid":`interaction-field-${e.name}`,disabled:r,value:t[e.name]===void 0?``:String(t[e.name]),onChange:r=>n({...t,[e.name]:r.target.value===``?void 0:Number(r.target.value)}),className:`w-full rounded-md border border-amber-300/70 bg-white px-2 py-1.5 text-sm dark:border-amber-900/60 dark:bg-slate-950`}):(0,U.jsx)(`input`,{type:`text`,"data-testid":`interaction-field-${e.name}`,disabled:r,value:String(t[e.name]??``),onChange:r=>n({...t,[e.name]:r.target.value}),className:`w-full rounded-md border border-amber-300/70 bg-white px-2 py-1.5 text-sm dark:border-amber-900/60 dark:bg-slate-950`})]},e.name)),(0,U.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[(0,U.jsx)(`button`,{type:`button`,"data-testid":`interaction-submit`,disabled:r,onClick:i,className:`inline-flex min-h-8 items-center rounded-md bg-emerald-600 px-3 py-1.5 text-xs font-semibold text-white hover:bg-emerald-500 disabled:cursor-not-allowed disabled:opacity-55`,children:`提交`}),(0,U.jsx)(`button`,{type:`button`,"data-testid":`interaction-form-cancel`,disabled:r,onClick:a,className:`inline-flex min-h-8 items-center rounded-md px-3 py-1.5 text-xs font-medium text-slate-500 underline-offset-2 hover:underline disabled:cursor-not-allowed disabled:opacity-55 dark:text-slate-400`,children:`取消本次确认`})]})]})}function YK({surfaceId:e,messages:t}){let{processMessages:n}=pk();return(0,b.useEffect)(()=>{n(t)},[t,n]),(0,U.jsx)(ate,{surfaceId:e,className:`w-full`,fallback:(0,U.jsx)(`div`,{className:`text-sm text-slate-500 dark:text-slate-400`,children:`界面内容暂不可用`}),loadingFallback:(0,U.jsx)(`div`,{className:`text-sm text-slate-500 dark:text-slate-400`,children:`正在加载界面`})})}function XK({surfaceId:e,messages:t,onAction:n}){return(0,U.jsx)(`div`,{className:`mb-3 w-full overflow-hidden rounded-lg border border-slate-200 bg-white p-3 shadow-sm dark:border-slate-700 dark:bg-slate-900`,children:(0,U.jsx)(ete,{catalog:xk,onAction:n,children:(0,U.jsx)(YK,{surfaceId:e,messages:t})})})}function ZK({a2ui:e,disabled:t,onSubmit:n,onCancel:r}){return(0,U.jsxs)(`div`,{className:`mt-3`,"data-testid":`interaction-a2ui-surface`,children:[(0,U.jsx)(XK,{surfaceId:`interaction-${e.wireVersion}`,messages:e.messages,onAction:t?void 0:e=>{let t=e.userAction?.context||{};n(typeof t.payload==`object`&&t.payload!==null?t.payload:{...t})}}),t?null:(0,U.jsx)(`button`,{type:`button`,"data-testid":`interaction-a2ui-cancel`,onClick:r,className:`mt-1 inline-flex min-h-8 items-center rounded-md px-3 py-1.5 text-xs font-medium text-slate-500 underline-offset-2 hover:underline dark:text-slate-400`,children:`取消本次确认`})]})}function QK(e){for(let t of e?.messages||[]){let e=t.inputSchema??t.input_schema??t.schema;if(typeof e==`object`&&e)return e}return null}function $K(e){if(!e.expiresAt)return!1;let t=Date.parse(e.expiresAt);return Number.isFinite(t)&&t<=Date.now()}function eq(e){let t=e.extensions.submit_error;return typeof t==`object`&&t&&`code`in t&&`message`in t?{code:String(t.code),message:String(t.message),retryable:!!t.retryable}:null}var tq={approved:`已同意`,rejected:`已拒绝`,submitted:`已提交`,cancelled:`已取消`,expired:`已过期`};function nq({interactions:e,activeIndex:t,onSelectIndex:n,onRespond:r,localCatalog:i}){let[a,o]=(0,b.useState)(``),[s,c]=(0,b.useState)({}),l=e[Math.min(t,Math.max(e.length-1,0))];if(!l)return null;let u=$K(l),d=eq(l),f=u||l.status===`resolving`,p=mA(l.presentation?.a2ui,i),m=l.requestSchema??QK(l.presentation?.a2ui)??null,h=p===`a2ui`?`a2ui`:p===`json-schema-form`&&m||l.requestSchema&&!l.presentation?`json-schema-form`:`basic-controls`,g=h===`json-schema-form`&&m||l.requestSchema,_=(e,t)=>{f||r({interactionId:l.interactionId,expectedRevision:l.revision,action:e,response:t,idempotencyKey:Jk(l.interactionId,l.revision)})};return(0,U.jsx)(`div`,{"data-testid":`interaction-tray`,"data-interaction-status":l.status,"data-interaction-count":e.length,className:`mx-auto mb-2 w-full max-w-3xl px-6`,children:(0,U.jsxs)(`div`,{className:`rounded-xl border border-amber-300/80 bg-amber-50/80 p-3 shadow-sm dark:border-amber-900/60 dark:bg-amber-950/30`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-amber-900 dark:text-amber-200`,children:[(0,U.jsx)(`span`,{"data-testid":`interaction-tray-title`,children:l.title}),e.length>1?(0,U.jsxs)(`span`,{"data-testid":`interaction-tray-count`,className:`rounded-full border border-amber-400/60 px-1.5 py-0.5 text-xs`,children:[t+1,`/`,e.length]}):null]}),e.length>1?(0,U.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,U.jsx)(`button`,{type:`button`,"data-testid":`interaction-tray-prev`,disabled:t<=0,onClick:()=>n(Math.max(t-1,0)),className:`rounded border border-amber-400/60 p-1 text-amber-900 disabled:opacity-40 dark:text-amber-200`,"aria-label":`上一条待确认`,children:(0,U.jsx)(MM,{className:`h-3.5 w-3.5`})}),(0,U.jsx)(`button`,{type:`button`,"data-testid":`interaction-tray-next`,disabled:t>=e.length-1,onClick:()=>n(Math.min(t+1,e.length-1)),className:`rounded border border-amber-400/60 p-1 text-amber-900 disabled:opacity-40 dark:text-amber-200`,"aria-label":`下一条待确认`,children:(0,U.jsx)(NM,{className:`h-3.5 w-3.5`})})]}):null]}),(0,U.jsx)(`p`,{className:`mt-2 text-sm text-slate-700 dark:text-slate-200`,"data-testid":`interaction-tray-message`,children:l.message}),u?(0,U.jsxs)(`p`,{className:`mt-2 text-xs font-medium text-rose-600 dark:text-rose-400`,"data-testid":`interaction-tray-expired`,children:[`该确认已过期(`,tq.expired,`),等待运行时继续处理。`]}):null,d?(0,U.jsxs)(`p`,{className:`mt-2 text-xs font-medium text-rose-600 dark:text-rose-400`,"data-testid":`interaction-tray-error`,children:[`提交失败(`,d.code,`):`,d.message,d.retryable?`,可重试。`:``]}):null,h===`a2ui`&&l.presentation?.a2ui?(0,U.jsx)(ZK,{a2ui:l.presentation.a2ui,disabled:f,onSubmit:e=>_(`submit`,e),onCancel:()=>_(`cancel`,{})}):h===`json-schema-form`&&g?(0,U.jsx)(JK,{schema:g,values:s,onChange:c,disabled:f,onSubmit:()=>_(`submit`,s),onCancel:()=>_(`cancel`,{})}):(0,U.jsxs)(`div`,{className:`mt-3`,"data-testid":`interaction-tray-basic`,children:[(0,U.jsx)(`input`,{type:`text`,value:a,onChange:e=>o(e.target.value),placeholder:`备注(可选)`,disabled:f,"data-testid":`interaction-tray-comment`,className:`mb-2 w-full rounded-md border border-amber-300/70 bg-white px-2 py-1.5 text-sm dark:border-amber-900/60 dark:bg-slate-950`}),(0,U.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,U.jsxs)(`button`,{type:`button`,"data-testid":`interaction-approve`,disabled:f,onClick:()=>_(`approve`,{decision:`approve`,...a?{comment:a}:{}}),className:`inline-flex min-h-8 items-center gap-1.5 rounded-md bg-emerald-600 px-3 py-1.5 text-xs font-semibold text-white shadow-sm transition hover:bg-emerald-500 disabled:cursor-not-allowed disabled:opacity-55`,children:[(0,U.jsx)(AM,{className:`h-3.5 w-3.5`}),`批准并继续`]}),(0,U.jsxs)(`button`,{type:`button`,"data-testid":`interaction-reject`,disabled:f,onClick:()=>_(`reject`,{decision:`reject`,...a?{comment:a}:{}}),className:`inline-flex min-h-8 items-center gap-1.5 rounded-md border border-slate-300 bg-white px-3 py-1.5 text-xs font-semibold text-slate-600 transition hover:border-rose-300 hover:bg-rose-50 hover:text-rose-600 disabled:cursor-not-allowed disabled:opacity-55 dark:border-slate-700 dark:bg-slate-950 dark:text-slate-300 dark:hover:border-rose-800 dark:hover:bg-rose-950/30 dark:hover:text-rose-300`,children:[(0,U.jsx)(FM,{className:`h-3.5 w-3.5`}),`拒绝`]}),(0,U.jsx)(`button`,{type:`button`,"data-testid":`interaction-cancel`,disabled:f,onClick:()=>_(`cancel`,{}),className:`inline-flex min-h-8 items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium text-slate-500 underline-offset-2 hover:underline disabled:cursor-not-allowed disabled:opacity-55 dark:text-slate-400`,children:`取消本次确认`})]})]}),l.status===`resolving`?(0,U.jsx)(`p`,{className:`mt-2 text-xs text-amber-700 dark:text-amber-300`,children:`正在提交,请稍候…`}):null]})})}function rq({outcome:e}){return(0,U.jsx)(`span`,{className:K(`rounded border px-1.5 py-0.5 text-xs font-medium`,e===`approved`?`border-emerald-300 text-emerald-700 dark:border-emerald-900 dark:text-emerald-300`:e===`rejected`?`border-rose-300 text-rose-700 dark:border-rose-900 dark:text-rose-300`:`border-slate-300 text-slate-600 dark:border-slate-700 dark:text-slate-300`),children:tq[e]||e})}function iq(e){if(!e)return``;let t=Date.parse(e);return Number.isFinite(t)?new Date(t).toLocaleString():e}function aq(e){let t=e?.properties;return typeof t!=`object`||!t?[]:Object.keys(t)}function oq({interaction:e}){let t=e.status===`resolved`||e.status===`cancelled`||e.status===`expired`,n=aq(e.requestSchema);return(0,U.jsxs)(`div`,{"data-testid":`interaction-history-anchor`,"data-interaction-id":e.interactionId,"data-interaction-status":e.status,className:`mt-2 rounded-lg border border-slate-200 bg-slate-50 px-3 py-2 text-xs text-slate-600 dark:border-slate-800 dark:bg-slate-900/60 dark:text-slate-300`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`font-medium text-slate-700 dark:text-slate-200`,children:e.title}),(0,U.jsx)(rq,{outcome:e.outcome||e.status})]}),t?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(`div`,{className:`mt-1 leading-relaxed`,children:[e.actor?(0,U.jsxs)(`span`,{children:[`操作人:`,e.actor,` · `]}):null,e.resolvedAt?(0,U.jsxs)(`span`,{children:[`决定时间:`,iq(e.resolvedAt),` · `]}):null,(0,U.jsx)(`span`,{"data-testid":`interaction-history-response-summary`,children:e.responseSummary||`响应内容已脱敏`})]}),(0,U.jsxs)(`details`,{"data-testid":`interaction-history-detail`,className:`mt-1`,children:[(0,U.jsx)(`summary`,{className:`cursor-pointer select-none text-slate-500 hover:text-slate-700 dark:text-slate-400 dark:hover:text-slate-200`,children:`查看确认快照`}),(0,U.jsxs)(`div`,{"data-testid":`interaction-history-snapshot`,className:`mt-1 rounded border border-slate-200 bg-white px-2 py-1.5 leading-relaxed dark:border-slate-800 dark:bg-slate-950`,children:[(0,U.jsxs)(`div`,{children:[`操作者:`,(0,U.jsx)(`span`,{"data-testid":`interaction-history-actor-ref`,children:e.actor||`—`})]}),(0,U.jsxs)(`div`,{children:[`决定时间:`,iq(e.resolvedAt)||`—`]}),(0,U.jsxs)(`div`,{children:[`关键参数:`,n.length>0?(0,U.jsx)(`span`,{"data-testid":`interaction-history-schema-keys`,children:n.join(`、`)}):(0,U.jsx)(`span`,{children:`无结构化参数`})]})]})]})]}):(0,U.jsxs)(`div`,{className:`mt-1`,children:[`状态:`,e.status===`pending`?`待处理(见输入区确认面板)`:`处理中…`]})]})}function sq({summary:e,children:t,defaultOpen:n=!1,streaming:r=!1}){let[i,a]=(0,b.useState)(n);return(0,U.jsxs)(`div`,{className:`mb-1.5`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>a(e=>!e),className:`flex w-full items-center gap-1.5 rounded px-1 py-1 text-left text-[13px] text-slate-500 transition-colors hover:bg-slate-100/70 dark:text-slate-400 dark:hover:bg-slate-800/40`,children:[r?(0,U.jsx)(XM,{className:`h-3.5 w-3.5 animate-spin text-slate-400`}):(0,U.jsx)(jM,{className:K(`h-3.5 w-3.5 text-slate-400 transition-transform`,i&&`rotate-90`)}),(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e})]}),i&&(0,U.jsx)(`div`,{className:`mt-1.5 border-l border-slate-200 pl-3.5 dark:border-slate-700/60`,children:t})]})}function cq({block:e}){let[t,n]=(0,b.useState)(!1),r=e.status===`streaming`,i=e.content.length,a=`${e.id}-thinking-detail`;return(0,U.jsxs)(`div`,{className:`mb-1.5 min-w-0`,children:[(0,U.jsxs)(`button`,{type:`button`,"aria-expanded":t,"aria-controls":a,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-1.5 rounded px-1 py-1 text-left text-[13px] leading-5 text-slate-400 transition-colors hover:bg-slate-100/70 hover:text-slate-500 dark:text-slate-500 dark:hover:bg-slate-800/40 dark:hover:text-slate-400`,children:[(0,U.jsx)(mN,{className:K(`h-3.5 w-3.5 shrink-0`,r&&`animate-pulse motion-reduce:animate-none`)}),(0,U.jsx)(`span`,{className:`min-w-0 truncate`,children:r?`思考中`:`已思考`}),!r&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`span`,{className:`text-slate-300 dark:text-slate-600`,children:`·`}),(0,U.jsxs)(`span`,{className:`font-mono text-xs text-slate-400 dark:text-slate-500`,children:[i,` 字`]})]}),(0,U.jsx)(jM,{className:K(`h-3.5 w-3.5 shrink-0 transition-transform`,t&&`rotate-180`)})]}),t&&e.content&&(0,U.jsx)(`div`,{id:a,className:`custom-scrollbar mt-1.5 max-h-[min(46vh,28rem)] overflow-y-auto border-l border-slate-200/80 pl-3.5 text-[12px] leading-5 text-slate-500 dark:border-slate-700/60 dark:text-slate-400 [&_h1]:!mb-2 [&_h1]:!mt-3 [&_h1]:!text-[13px] [&_h2]:!mb-1.5 [&_h2]:!mt-3 [&_h2]:!text-[12px] [&_h3]:!mb-1 [&_h3]:!mt-2.5 [&_h3]:!text-[12px] [&_li]:!text-[12px] [&_li]:!leading-5 [&_p]:!my-1.5 [&_p]:!text-[12px] [&_p]:!leading-5 [&_p]:!text-slate-500 dark:[&_p]:!text-slate-400 [&_pre]:!my-1.5`,children:(0,U.jsx)(VK,{content:e.content})})]})}function lq({block:e,tool:t,isStreaming:n,interactionRecord:r,onRespondToApproval:i,onRespondToAguiApproval:a}){let o=t?.status??e.status,s=t?.args??e.args,c=t?.output??e.output,l=e.extra||{},u=l.approvalStatus||t?.approvalStatus,d=l.approvalRequestId||t?.approvalRequestId,f=l.approvalMessage||t?.approvalMessage,p=l.approvalProtocol||t?.approvalProtocol,m=l.previousResponseId||t?.previousResponseId,h=o===`running`,g=o===`error`,_=o===`paused`,v=g?`执行失败`:u===`pending`?`等待确认`:u===`rejected`?`已拒绝`:h?u===`approved`?`已授权 · 执行中`:`正在运行`:u===`approved`?`已授权`:_?`已暂停`:`已完成`,y=g?`text-rose-500 dark:text-rose-400`:_?`text-amber-500 dark:text-amber-400`:h?`text-slate-500 dark:text-slate-400`:`text-slate-400 dark:text-slate-500`;return(0,U.jsx)(sq,{streaming:h&&!s,defaultOpen:u===`pending`||_,summary:(0,U.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(CN,{className:K(`h-3.5 w-3.5 shrink-0`,y)}),(0,U.jsx)(`span`,{className:y,children:v}),(0,U.jsx)(`span`,{className:`truncate font-medium text-slate-600 dark:text-slate-300`,children:e.toolName}),h&&s&&(0,U.jsx)(`span`,{className:`ml-0.5 animate-pulse text-slate-400`,children:`…`})]}),children:(0,U.jsxs)(`div`,{className:`flex flex-col gap-2.5 py-1 text-[13px]`,children:[d&&u===`pending`&&!r&&(0,U.jsxs)(`section`,{className:`flex flex-wrap items-center gap-x-3 gap-y-2 rounded-lg border border-slate-200/90 bg-white/70 px-2.5 py-2 font-sans text-[12px] text-slate-600 shadow-[0_1px_2px_rgba(15,23,42,0.03)] dark:border-slate-700/80 dark:bg-slate-900/30 dark:text-slate-300`,children:[(0,U.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`h-1.5 w-1.5 shrink-0 rounded-full bg-amber-400`,"aria-hidden":`true`}),(0,U.jsx)(`span`,{className:`shrink-0 font-medium text-slate-700 dark:text-slate-200`,children:`需要确认`}),(0,U.jsx)(`span`,{className:`min-w-0 truncate text-slate-500 dark:text-slate-400`,children:f||`允许后将执行此工具调用。`})]}),(0,U.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[(0,U.jsx)(`button`,{type:`button`,disabled:n,onClick:()=>p===`ag-ui`?a?.({interruptId:d||``,approve:!0}):i?.({approvalRequestId:d||``,approve:!0,previousResponseId:m}),className:`inline-flex h-7 items-center rounded-md bg-primary px-2.5 text-[12px] font-medium text-primary-foreground transition hover:bg-primary/90 disabled:opacity-55`,children:`允许执行`}),(0,U.jsx)(`button`,{type:`button`,disabled:n,onClick:()=>p===`ag-ui`?a?.({interruptId:d||``,approve:!1}):i?.({approvalRequestId:d||``,approve:!1,previousResponseId:m}),className:`inline-flex h-7 items-center rounded-md px-2 text-[12px] font-medium text-slate-500 transition hover:bg-slate-100 hover:text-rose-600 disabled:opacity-55 dark:text-slate-400 dark:hover:bg-slate-800`,children:`拒绝`})]})]}),d&&u===`pending`&&r?(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5 font-sans text-xs text-slate-500 dark:text-slate-400`,children:[(0,U.jsx)(`span`,{className:`h-1.5 w-1.5 shrink-0 rounded-full bg-amber-400`,"aria-hidden":`true`}),`请在输入区确认面板中操作。`]}):null,d&&u&&u!==`pending`&&(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5 font-sans text-xs text-slate-500 dark:text-slate-400`,children:[(0,U.jsx)(`span`,{children:u===`approved`?`已授权`:`已拒绝`}),u===`approved`&&h?(0,U.jsx)(`span`,{children:`· 工具执行中`}):null,u===`approved`&&g?(0,U.jsx)(`span`,{children:`· 工具执行失败`}):null]}),s?(0,U.jsx)(mq,{label:`入参`,value:s,tone:`input`}):null,c?uq(e.toolName,c,g):null]})})}function uq(e,t,n){if(GK(t))return(0,U.jsx)(dq,{output:t});let r=e.toLowerCase();if(r.includes(`web_search`)||r.includes(`search`)){let e=fq(t);if(e.length>0)return(0,U.jsx)(pq,{sources:e})}return(0,U.jsx)(mq,{label:`输出`,value:t,tone:n?`error`:`output`})}function dq({output:e}){let t=UK(e),[n,r]=(0,b.useState)(!1),i=n?t:t.slice(0,3);return(0,U.jsxs)(`div`,{className:`my-2 overflow-hidden rounded-xl border border-border bg-background`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b border-border px-3 py-2 text-xs font-medium text-text-secondary`,children:[(0,U.jsx)(WM,{className:`h-3.5 w-3.5 text-primary`}),(0,U.jsxs)(`span`,{children:[`改动 `,t.length,` 个文件`]})]}),(0,U.jsx)(`div`,{className:`flex flex-col`,children:i.map(e=>{let{added:t,removed:n}=WK(e);return(0,U.jsxs)(`div`,{className:`group/file-change-row flex min-w-0 items-center gap-2 px-3 py-2 text-sm transition-colors hover:bg-muted`,children:[(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-[13px] text-text-primary`,children:e.path}),(0,U.jsxs)(`span`,{className:`flex-shrink-0 text-[11px] font-mono`,children:[(0,U.jsxs)(`span`,{className:`text-emerald-600`,children:[`+`,t]}),` `,(0,U.jsxs)(`span`,{className:`text-rose-500`,children:[`−`,n]})]})]},e.path)})}),t.length>3?(0,U.jsx)(`button`,{type:`button`,onClick:()=>r(e=>!e),className:`flex w-full items-center justify-center gap-1 border-t border-border py-1.5 text-xs text-text-muted transition hover:bg-muted hover:text-text-primary`,children:n?`收起`:`展开剩余 ${t.length-3} 个文件`}):null]})}function fq(e){try{let t=JSON.parse(e),n=Array.isArray(t)?t:t?.results??t?.sources??[];return Array.isArray(n)?n.map(e=>{let t=e,n=String(t?.url??t?.link??t?.href??``),r=String(t?.title??t?.name??n);return n?{url:n,title:r}:null}).filter(e=>e!==null):[]}catch{return[]}}function pq({sources:e}){return(0,U.jsx)(`div`,{className:`mt-2 flex min-w-0`,children:(0,U.jsxs)(`span`,{className:`group/web-search-sources relative inline-flex min-w-0`,children:[(0,U.jsxs)(`button`,{type:`button`,className:`inline-flex h-7 min-w-0 items-center gap-1.5 rounded-md border border-border bg-surface px-2 text-xs text-text-secondary transition-colors hover:bg-muted hover:text-text-primary`,children:[(0,U.jsx)(zM,{className:`h-3.5 w-3.5 shrink-0`,strokeWidth:1.7}),(0,U.jsxs)(`span`,{children:[`来源 · `,e.length]})]}),(0,U.jsx)(`span`,{className:`absolute bottom-full left-0 z-30 hidden max-w-[calc(100vw-3rem)] pb-1 group-hover/web-search-sources:block`,children:(0,U.jsx)(`span`,{className:`block w-[min(26rem,calc(100vw-3rem))] rounded-xl border border-border bg-popover p-2 text-left text-text-primary shadow-2xl`,children:(0,U.jsx)(`span`,{className:`flex min-w-0 flex-col gap-1`,children:e.map((e,t)=>(0,U.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,className:`flex min-w-0 items-center gap-2 rounded-lg px-2 py-1.5 text-sm leading-5 text-text-secondary transition-colors hover:bg-muted hover:text-text-primary`,children:[(0,U.jsx)(zM,{className:`h-3.5 w-3.5 shrink-0`,strokeWidth:1.7}),(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.title})]},`${e.url}-${t}`))})})})]})})}function mq({label:e,tone:t,value:n}){return(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`div`,{className:`mb-1 text-[11px] font-semibold uppercase tracking-wide text-slate-400`,children:e}),(0,U.jsx)(`pre`,{className:K(`custom-scrollbar max-h-60 overflow-auto rounded-lg px-3 py-2 text-[12.5px] leading-relaxed whitespace-pre-wrap break-all`,t===`error`?`bg-rose-50/60 text-rose-700 dark:bg-rose-950/20 dark:text-rose-200`:t===`output`?`bg-emerald-50/40 text-emerald-800 dark:bg-emerald-950/20 dark:text-emerald-200`:`bg-slate-50 text-slate-700 dark:bg-slate-900/40 dark:text-slate-200`),children:n})]})}function hq({block:e}){return e.content?(0,U.jsx)(`div`,{className:`w-full break-words py-0.5 text-[14px] leading-[1.65]`,children:(0,U.jsx)(VK,{content:e.content})}):null}function gq({message:e,isStreaming:t,onRespondToApproval:n,onRespondToAguiApproval:r,interactionRecords:i}){return(0,U.jsx)(`div`,{className:`mb-3 min-w-0`,children:(e.blocks??[]).map(a=>{if(a.type===`thinking`)return(0,U.jsx)(cq,{block:a},a.id);if(a.type===`tool`){let o=a.extra||{},s=String(o.approvalRequestId||e.tools?.[a.toolName]?.approvalRequestId||``),c=s?i?.find(e=>e.interactionId===s):void 0;return(0,U.jsxs)(`div`,{children:[(0,U.jsx)(lq,{block:a,tool:e.tools?.[a.toolName],isStreaming:t,interactionRecord:c,onRespondToApproval:n,onRespondToAguiApproval:r}),c?(0,U.jsx)(oq,{interaction:c}):null]},a.id)}return(0,U.jsx)(hq,{block:a},a.id)})})}function _q({onRetry:e}){let t=D(e=>e.banner);if(!t)return null;let n=t.kind===`rate_limited`?(0,U.jsx)(vq,{message:t.message,retryAfterSec:t.retryAfterSec},t.createdAt||`${t.sessionId||``}:${t.retryAfterSec||0}`):null,r={rate_limited:{icon:(0,U.jsx)(TN,{className:`h-4 w-4 text-amber-500`}),bg:`border-amber-200/70 bg-amber-50/70 dark:border-amber-900/40 dark:bg-amber-950/20`,text:`text-amber-700 dark:text-amber-200`,label:n},network:{icon:(0,U.jsx)(XM,{className:`h-4 w-4 animate-spin text-text-secondary`}),bg:`border-border/70 bg-muted/60`,text:`text-text-secondary`,label:t.message||`网络异常,正在重连…`},error:{icon:(0,U.jsx)(SN,{className:`h-4 w-4 text-rose-500`}),bg:`border-rose-200/70 bg-rose-50/70 dark:border-rose-900/40 dark:bg-rose-950/20`,text:`text-rose-600 dark:text-rose-300`,label:t.message||`运行失败,请重试`}}[t.kind];return(0,U.jsxs)(`div`,{className:K(`mx-auto mb-3 flex w-full max-w-3xl items-center gap-2.5 rounded-xl border px-3.5 py-2.5 text-sm shadow-sm`,r.bg,r.text),role:`status`,children:[r.icon,(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:r.label}),t.kind===`error`&&e?(0,U.jsxs)(`button`,{type:`button`,onClick:e,className:`flex items-center gap-1 rounded-full px-2.5 py-1 text-xs font-medium text-rose-600 transition hover:bg-rose-100 dark:text-rose-300 dark:hover:bg-rose-950/40`,children:[(0,U.jsx)(lN,{className:`h-3 w-3`}),`重试`]}):null]})}function vq({message:e,retryAfterSec:t}){let[n,r]=(0,b.useState)(t||0);return(0,b.useEffect)(()=>{if(!t)return;let e=setInterval(()=>{r(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[t]),n>0?`${e}(${n}s 后可重试)`:e}async function yq(e,t=globalThis){let n=String(e??``),r=t?.navigator;if(r?.clipboard?.writeText)try{return await r.clipboard.writeText(n),!0}catch{}let i=t?.document,a=i?.body;if(!i?.createElement||!a?.appendChild||!a?.removeChild)return!1;let o=i.createElement(`textarea`);o.value=n,o.setAttribute?.(`readonly`,``),o.style&&(o.style.position=`fixed`,o.style.top=`0`,o.style.left=`-9999px`,o.style.opacity=`0`,o.style.pointerEvents=`none`);let s=i.activeElement;a.appendChild(o),o.focus?.(),o.select?.(),o.setSelectionRange?.(0,n.length);try{return typeof i.execCommand==`function`?!!i.execCommand(`copy`):!1}finally{a.removeChild(o),s?.focus?.()}}function bq(e,t,n){return Math.max(t,Math.min(n,e))}function xq({items:e=[],scrollTop:t=0,viewportHeight:n=0,overscan:r=4,defaultItemHeight:i=120,measuredHeights:a=new Map,getItemKey:o=(e,t)=>e?.id||String(t)}={}){let s=Math.max(0,Number(n)||0),c=Math.max(0,Number(t)||0),l=Math.max(0,Number(r)||0),u=Math.max(1,Number(i)||120);if(!e.length)return{startIndex:0,endIndex:0,offsetTop:0,totalHeight:0,visibleItems:[]};let d=e.map((e,t)=>{let n=o(e,t),r=Number(a.get(n));return Number.isFinite(r)&&r>0?r:u}),f=Array(e.length),p=0;for(let t=0;t{let n=g+t;return{index:n,item:e,top:f[n]||0,height:d[n]||u}})}}var Sq=140,Cq=4;function wq(e){let t=String(e||``).trim().toLowerCase();return t===`elevated`?`高风险`:t===`always`?`始终确认`:t===`confirm`?`需确认`:e||``}function Tq(e){return String(e||``).trim().toLowerCase()===`elevated`?`border-rose-200 bg-rose-50 text-rose-700 dark:border-rose-900/70 dark:bg-rose-950/30 dark:text-rose-200`:`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-900/70 dark:bg-amber-950/30 dark:text-amber-200`}function Eq({messageId:e,top:t,onMeasure:n,children:r}){let i=(0,b.useRef)(null);return(0,b.useLayoutEffect)(()=>{let r=i.current;if(!r)return;let a=()=>n(e,r.offsetHeight,t);if(a(),typeof ResizeObserver>`u`)return;let o=new ResizeObserver(a);return o.observe(r),()=>o.disconnect()},[e,n,t]),(0,U.jsx)(`div`,{ref:i,style:{position:`absolute`,top:t,left:0,right:0},children:r})}function Dq(e){let t=Math.max(0,Math.floor(e/1e3)),n=Math.floor(t/60),r=t%60;return n<=0?`${r}s`:`${n}m ${String(r).padStart(2,`0`)}s`}function Oq(e){return e<1e3?`刚刚`:e<6e4?`${Math.floor(e/1e3)} 秒前`:`${Math.floor(e/6e4)} 分钟前`}function kq(e){return!Number.isFinite(e)||!e||e<=0?``:e>=1e6?`${(e/1e6).toFixed(e>=1e7?0:1)}M`:e>=1e3?`${(e/1e3).toFixed(e>=1e5?0:1)}K`:String(Math.round(e))}function Aq({contextIndicator:e}){let t=e?.usedTokens,n=e?.contextWindowTokens,r=kq(t),i=kq(n);if(!r)return null;let a=[r,i].filter(Boolean).join(`/`);return(0,U.jsxs)(`span`,{className:`token-count-pulse hidden text-slate-400 dark:text-slate-500 sm:inline`,title:e?.label||`估算 token ${a}`,children:[`估算 token `,a]},r)}function jq({activity:e,contextIndicator:t,onStopGeneration:n,onCancelRemote:r}){let[i,a]=(0,b.useState)(()=>Date.now());(0,b.useEffect)(()=>{let e=window.setInterval(()=>a(Date.now()),1e3);return()=>window.clearInterval(e)},[]);let o=e.status===`connecting`||e.status===`running`||e.status===`waiting`,s=i-e.lastEventAt<2e4;return(0,U.jsxs)(`div`,{className:`inline-flex max-w-full items-center gap-2 rounded-full border border-slate-200/70 bg-white/90 px-2.5 py-1 text-[11px] leading-4 text-slate-500 shadow-sm shadow-slate-900/5 backdrop-blur dark:border-slate-700/60 dark:bg-slate-900/90 dark:text-slate-400`,children:[e.status===`failed`?(0,U.jsx)(PM,{className:`h-3 w-3 text-rose-500`}):e.status===`completed`?(0,U.jsx)(AM,{className:`h-3 w-3 text-emerald-500`}):e.status===`stopped`?(0,U.jsx)(pN,{className:`h-3 w-3 text-amber-500`}):(0,U.jsx)(cN,{className:`h-3 w-3 animate-spin text-slate-400`}),(0,U.jsx)(`span`,{className:`max-w-[16rem] truncate text-slate-600 dark:text-slate-300`,title:e.detail||e.phase,children:e.phase}),(0,U.jsxs)(`span`,{children:[e.source===`restore`?`恢复`:`运行`,` `,Dq(i-e.startedAt)]}),o?(0,U.jsx)(`span`,{className:K(`inline-block h-1.5 w-1.5 flex-shrink-0 rounded-full`,s?`bg-emerald-400`:`bg-slate-300 dark:bg-slate-600`),title:s?`连接存活`:`连接超时`}):null,(0,U.jsxs)(`span`,{className:`text-slate-400 dark:text-slate-500`,children:[e.eventCount,` ev`]}),(0,U.jsx)(`span`,{className:`hidden text-slate-400 dark:text-slate-500 sm:inline`,children:Oq(i-e.lastEventAt)}),(0,U.jsx)(Aq,{contextIndicator:t}),o&&(n||r)?(0,U.jsxs)(`div`,{className:`flex flex-shrink-0 gap-1`,children:[n?(0,U.jsxs)(`button`,{type:`button`,onClick:n,className:`flex items-center gap-1 rounded-full px-1.5 py-0.5 text-[11px] text-slate-400 transition hover:bg-slate-100 hover:text-slate-700 dark:text-slate-500 dark:hover:bg-slate-800 dark:hover:text-slate-200`,children:[(0,U.jsx)(PM,{className:`h-3 w-3`}),`停止`]}):null,r?(0,U.jsxs)(`button`,{type:`button`,"aria-label":`取消运行并保留恢复点`,title:`取消运行并保留最近 checkpoint`,onClick:r,className:`flex items-center gap-1 rounded-full px-1.5 py-0.5 text-[11px] text-slate-400 transition hover:bg-rose-50 hover:text-rose-600 dark:text-slate-500 dark:hover:bg-rose-950/30 dark:hover:text-rose-300`,children:[(0,U.jsx)(FM,{className:`h-3 w-3`}),`取消`]}):null]}):null]})}function Mq({agentName:e}){return(0,U.jsxs)(`div`,{className:`flex flex-col items-center justify-center min-h-[50vh] px-4`,children:[(0,U.jsx)(`div`,{className:`mb-6 h-16 w-16 rounded-2xl bg-gradient-to-br from-blue-500 to-indigo-600 - flex items-center justify-center shadow-lg shadow-blue-500/20`,children:(0,U.jsx)(kM,{className:`h-8 w-8 text-white`})}),(0,U.jsx)(`h2`,{className:`text-xl font-semibold text-slate-900 dark:text-slate-50`,children:`有什么我可以帮您的吗?`}),(0,U.jsxs)(`p`,{className:`mt-2 text-sm text-slate-500`,children:[`我是 `,e,`,由 Ksyun AgentEngine 驱动`]})]})}function Nq(){return(0,U.jsxs)(`div`,{className:`mx-auto flex w-full max-w-[44rem] flex-col gap-5 px-2 py-8`,"aria-label":`正在加载会话历史`,children:[(0,U.jsx)(`div`,{className:`h-4 w-28 animate-pulse rounded bg-slate-200/80 dark:bg-slate-800`}),(0,U.jsx)(`div`,{className:`h-20 w-4/5 animate-pulse rounded-lg bg-slate-100 dark:bg-slate-900`}),(0,U.jsx)(`div`,{className:`ml-auto h-12 w-3/5 animate-pulse rounded-lg bg-slate-100 dark:bg-slate-900`}),(0,U.jsx)(`div`,{className:`h-16 w-11/12 animate-pulse rounded-lg bg-slate-100 dark:bg-slate-900`})]})}function Pq({attachments:e,isMobile:t,onOpenAttachmentPreview:n}){return(0,U.jsx)(`div`,{className:`mb-3 flex flex-wrap gap-3`,children:e.map((e,r)=>e.type.startsWith(`image/`)?e.url?(0,U.jsx)(`button`,{type:`button`,onClick:()=>n(e),className:K(`group relative overflow-hidden rounded-xl border border-slate-200 shadow-sm dark:border-slate-700`,t?`w-full max-w-full`:`max-w-[200px]`),children:(0,U.jsx)(`img`,{src:e.url,alt:e.name,className:K(`object-cover transition group-hover:scale-[1.02]`,t?`max-h-[16rem] w-full max-w-full`:`max-h-[200px] max-w-[200px]`)})},`${e.name}-${r}`):(0,U.jsx)(`div`,{className:K(`flex items-center justify-center rounded-xl border border-dashed border-slate-300 bg-slate-50 px-4 text-sm text-slate-500 dark:border-slate-700 dark:bg-slate-900/40 dark:text-slate-400`,t?`h-28 w-full`:`h-[120px] w-[200px]`),children:e.name},`${e.name}-${r}`):(0,U.jsxs)(`div`,{className:K(`flex items-center gap-2 rounded-xl border border-slate-200 bg-slate-100 px-3 py-2 shadow-sm dark:border-slate-700 dark:bg-slate-800`,t?`w-full max-w-full`:`w-max max-w-full`),children:[(0,U.jsx)(iN,{className:`h-4 w-4 flex-shrink-0 text-blue-500`}),e.url?(0,U.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer`,className:`truncate text-sm text-slate-700 hover:underline dark:text-slate-300`,title:e.name,children:e.name}):(0,U.jsx)(`span`,{className:`truncate text-sm text-slate-700 dark:text-slate-300`,title:e.name,children:e.name})]},`${e.name}-${r}`))})}function Fq({message:e}){return(0,U.jsx)(`div`,{className:`w-full px-0 py-2 sm:px-4`,children:(0,U.jsxs)(`div`,{className:`mx-auto max-w-3xl rounded-2xl border border-amber-200/80 bg-amber-50/80 px-4 py-3 text-sm text-amber-900 shadow-sm dark:border-amber-900/60 dark:bg-amber-950/30 dark:text-amber-100`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[e.status===`running`?(0,U.jsx)(cN,{className:`h-4 w-4 animate-spin text-amber-600 dark:text-amber-300`}):e.status===`failed`?(0,U.jsx)(PM,{className:`h-4 w-4 text-rose-600 dark:text-rose-400`}):(0,U.jsx)(AM,{className:`h-4 w-4 text-emerald-600 dark:text-emerald-400`}),(0,U.jsx)(`span`,{children:e.content})]}),e.compactedUntilSeqId?(0,U.jsxs)(`div`,{className:`mt-1 text-xs text-amber-700/80 dark:text-amber-200/80`,children:[`已折叠到会话事件 #`,e.compactedUntilSeqId]}):null,e.summary?(0,U.jsxs)(`details`,{className:`mt-3 rounded-xl border border-amber-200/80 bg-white/70 px-3 py-2 dark:border-amber-900/60 dark:bg-slate-950/40`,children:[(0,U.jsx)(`summary`,{className:`cursor-pointer select-none text-xs font-medium text-amber-800 dark:text-amber-200`,children:`查看压缩摘要`}),(0,U.jsx)(`div`,{className:`mt-2 text-[13px] leading-relaxed text-slate-700 dark:text-slate-200`,children:(0,U.jsx)(VK,{content:e.summary})})]}):null]})})}function Iq({label:e,tone:t,value:n}){let[r,i]=(0,b.useState)(`idle`),a=GA(n);(0,b.useEffect)(()=>{if(r===`idle`)return;let e=window.setTimeout(()=>i(`idle`),1600);return()=>window.clearTimeout(e)},[r]);let o=async()=>{i(await yq(a)?`copied`:`failed`)};return(0,U.jsxs)(`div`,{children:[(0,U.jsxs)(`div`,{className:`mb-1 flex items-center justify-between gap-2`,children:[(0,U.jsx)(`div`,{className:K(`text-xs font-semibold uppercase`,t===`input`?`text-blue-500`:t===`error`?`text-rose-500`:`text-emerald-500`),children:e}),(0,U.jsxs)(`button`,{type:`button`,onClick:()=>{o()},className:`inline-flex items-center gap-1 rounded-lg px-2 py-1 text-[11px] font-medium text-slate-500 transition hover:bg-white hover:text-slate-900 dark:text-slate-400 dark:hover:bg-slate-900 dark:hover:text-slate-100`,children:[r===`copied`?(0,U.jsx)(AM,{className:`h-3.5 w-3.5 text-emerald-500`}):(0,U.jsx)(LM,{className:`h-3.5 w-3.5`}),r===`copied`?`已复制`:r===`failed`?`复制失败`:`复制`]})]}),(0,U.jsx)(`div`,{className:`custom-scrollbar max-h-[220px] overflow-y-auto whitespace-pre-wrap break-words rounded-xl border border-slate-200/30 bg-white/70 p-3 text-slate-600 shadow-sm dark:border-slate-800 dark:bg-slate-950/40 dark:text-slate-300 sm:max-h-[300px]`,children:a})]})}function Lq({isLastMessage:e,isStreaming:t,message:n,onDeleteFeedback:r,onSubmitFeedback:i}){let[a,o]=(0,b.useState)(!1),[s,c]=(0,b.useState)(n.feedback?.comment||``),l=Lj(n,t,e),u=!!n.feedback?.pending,d=n.feedback?.rating,f=async()=>{let e=n.content||``;e&&yq(e)};return l?(0,U.jsxs)(`div`,{className:`mt-2 flex flex-col gap-2 opacity-0 transition-opacity duration-150 group-hover:opacity-100 focus-within:opacity-100`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 text-xs text-text-muted`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>{f()},className:`inline-flex items-center gap-1 rounded-full px-2 py-1 font-medium text-text-secondary transition hover:bg-muted hover:text-text-primary`,title:`复制`,children:(0,U.jsx)(LM,{className:`h-3.5 w-3.5`})}),(0,U.jsx)(`span`,{className:`text-text-muted/60`,children:`·`}),(0,U.jsx)(`span`,{className:`font-medium`,children:`本次回复有帮助吗?`}),(0,U.jsxs)(`button`,{type:`button`,disabled:u,onClick:()=>i({message:n,rating:`up`,comment:``}),className:K(`inline-flex items-center gap-1 rounded-full border px-2.5 py-1 font-medium transition disabled:cursor-not-allowed disabled:opacity-60`,d===`up`?`border-primary/30 bg-primary/10 text-primary`:`border-border bg-background text-text-secondary hover:border-primary/30 hover:text-primary`),children:[(0,U.jsx)(yN,{className:`h-3.5 w-3.5`}),`有帮助`]}),(0,U.jsxs)(`button`,{type:`button`,disabled:u,onClick:()=>{c(n.feedback?.comment||``),o(e=>!e)},className:K(`inline-flex items-center gap-1 rounded-full border px-2.5 py-1 font-medium transition disabled:cursor-not-allowed disabled:opacity-60`,d===`down`?`border-rose-300 bg-rose-50 text-rose-600 dark:border-rose-900/70 dark:bg-rose-950/30 dark:text-rose-300`:`border-border bg-background text-text-secondary hover:border-rose-300 hover:text-rose-600`),children:[(0,U.jsx)(vN,{className:`h-3.5 w-3.5`}),`需改进`]}),n.feedback?(0,U.jsxs)(`button`,{type:`button`,disabled:u,onClick:()=>r(n),className:`inline-flex items-center gap-1 rounded-full border border-transparent px-2 py-1 font-medium text-slate-400 transition hover:border-slate-200 hover:text-slate-700 disabled:cursor-not-allowed disabled:opacity-60 dark:hover:border-slate-800 dark:hover:text-slate-200`,children:[(0,U.jsx)(bN,{className:`h-3.5 w-3.5`}),`删除反馈`]}):null,u?(0,U.jsx)(`span`,{className:`text-slate-400`,children:`提交中…`}):null]}),a?(0,U.jsxs)(`div`,{className:`max-w-xl rounded-2xl border border-rose-100 bg-rose-50/60 p-3 shadow-sm dark:border-rose-900/60 dark:bg-rose-950/20`,children:[(0,U.jsx)(`textarea`,{value:s,onChange:e=>c(e.target.value),placeholder:`可以补充哪里不准确、缺失或不符合预期。`,className:`min-h-[84px] w-full resize-y rounded-xl border border-rose-100 bg-white px-3 py-2 text-sm text-slate-700 outline-none transition placeholder:text-slate-400 focus:border-rose-300 focus:ring-2 focus:ring-rose-100 dark:border-rose-900/70 dark:bg-slate-950 dark:text-slate-100 dark:focus:border-rose-700 dark:focus:ring-rose-950`}),(0,U.jsxs)(`div`,{className:`mt-2 flex flex-wrap justify-end gap-2`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>o(!1),className:`rounded-xl px-3 py-1.5 text-xs font-semibold text-slate-500 transition hover:bg-white hover:text-slate-800 dark:text-slate-400 dark:hover:bg-slate-950 dark:hover:text-slate-100`,children:`取消`}),(0,U.jsx)(`button`,{type:`button`,disabled:u,onClick:()=>{i({message:n,rating:`down`,comment:s}),o(!1)},className:`rounded-xl bg-rose-600 px-3 py-1.5 text-xs font-semibold text-white shadow-sm transition hover:bg-rose-500 disabled:cursor-not-allowed disabled:opacity-60`,children:`提交点踩`})]})]}):d===`down`&&n.feedback?.comment?(0,U.jsxs)(`div`,{className:`max-w-xl rounded-xl border border-rose-100 bg-rose-50/50 px-3 py-2 text-xs text-rose-700 dark:border-rose-900/60 dark:bg-rose-950/20 dark:text-rose-200`,children:[`反馈:`,n.feedback.comment]}):null,n.feedback?.error?(0,U.jsx)(`div`,{className:`text-xs text-rose-600 dark:text-rose-300`,children:n.feedback.error}):null]}):null}function Rq({agentName:e,isMobile:t,isStreaming:n,isLastMessage:r,message:i,onDeleteFeedback:a,onOpenAttachmentPreview:o,onRespondToApproval:s,onRespondToAguiApproval:c,onSubmitFeedback:l,onSubmitAguiAction:u,interactionRecords:d}){return i.role===`user`?(0,U.jsx)(`div`,{className:`mb-3 flex justify-end`,children:(0,U.jsxs)(`div`,{className:`max-w-[80%] rounded-2xl bg-muted px-3 py-2 text-[14px] leading-relaxed text-foreground`,children:[i.attachments?.length?(0,U.jsx)(Pq,{attachments:i.attachments,isMobile:t,onOpenAttachmentPreview:o}):null,i.content]})}):i.role===`a2ui`&&i.aguiActivity?(0,U.jsx)(XK,{surfaceId:i.aguiActivity.surfaceId,messages:i.aguiActivity.messages,onAction:u}):(0,U.jsxs)(`div`,{className:`group mx-auto mb-3 w-full max-w-3xl px-6`,children:[(0,U.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-2 text-xs text-text-muted`,children:[(0,U.jsx)(kM,{className:`w-3.5 h-3.5`}),(0,U.jsx)(`span`,{children:e})]}),i.attachments?.length?(0,U.jsx)(Pq,{attachments:i.attachments,isMobile:t,onOpenAttachmentPreview:o}):null,i.blocks?.length?(0,U.jsx)(gq,{message:i,isStreaming:n,onRespondToApproval:s,interactionRecords:d,onRespondToAguiApproval:c}):(0,U.jsxs)(U.Fragment,{children:[i.reasoning?(0,U.jsxs)(`details`,{className:`group/details mb-3 overflow-hidden rounded-md border border-slate-200/80 bg-slate-50/60 text-sm text-slate-600 transition-colors open:bg-white dark:border-slate-700/80 dark:bg-slate-900/40 dark:text-slate-300 dark:open:bg-slate-950/30`,children:[(0,U.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center justify-between gap-3 px-3 py-2 font-medium outline-none marker:hidden`,children:[(0,U.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[n&&r&&!i.content?(0,U.jsx)(cN,{className:`h-4 w-4 animate-spin text-slate-500`}):(0,U.jsx)(AM,{className:`h-4 w-4 text-slate-400`}),(0,U.jsx)(`span`,{className:`truncate`,children:`思考过程`}),(0,U.jsx)(`span`,{className:`rounded-full bg-slate-200/70 px-2 py-0.5 text-[11px] font-medium text-slate-600 dark:bg-slate-800 dark:text-slate-300`,children:n&&r&&!i.content?`生成中`:`已完成`})]}),(0,U.jsx)(jM,{className:`h-4 w-4 flex-shrink-0 text-slate-400 transition-transform group-open/details:rotate-180`})]}),(0,U.jsx)(`div`,{className:`border-t border-slate-200/70 bg-white/70 dark:border-slate-800 dark:bg-slate-950/20`,children:(0,U.jsx)(`div`,{className:`custom-scrollbar max-h-[min(46vh,28rem)] overflow-y-auto px-4 py-3 text-[14px] leading-7 text-slate-600 dark:text-slate-300 [&_p]:my-2 [&_pre]:my-2`,children:(0,U.jsx)(VK,{content:i.reasoning})})})]}):null,i.tools?Object.values(i.tools).map((e,t)=>(0,U.jsxs)(`details`,{open:e.approvalStatus===`pending`||e.status===`paused`?!0:void 0,className:K(`group/details mb-2 overflow-hidden rounded-md border text-sm transition-colors`,e.status===`paused`?`border-amber-200/80 bg-amber-50/25 text-slate-700 dark:border-amber-900/60 dark:bg-amber-950/10 dark:text-slate-200`:e.status===`error`?`border-rose-200/80 bg-rose-50/25 text-rose-700 dark:border-rose-900/60 dark:bg-rose-950/10 dark:text-rose-200`:`border-slate-200/80 bg-slate-50/40 text-slate-600 dark:border-slate-700/80 dark:bg-slate-900/30 dark:text-slate-300`),children:[(0,U.jsx)(`summary`,{className:`flex cursor-pointer list-none items-center justify-between gap-2 px-3 py-2 font-medium`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e.status===`running`?(0,U.jsx)(cN,{className:`h-4 w-4 animate-spin text-slate-500`}):e.status===`paused`?(0,U.jsx)(pN,{className:`h-4 w-4 text-amber-500`}):e.status===`error`?(0,U.jsx)(FM,{className:`h-4 w-4 text-rose-500`}):(0,U.jsx)(AM,{className:`h-4 w-4 text-slate-400`}),(0,U.jsxs)(`span`,{children:[e.approvalStatus===`pending`?`等待审批:`:e.approvalStatus===`approved`?`已批准:`:e.approvalStatus===`rejected`?`已拒绝:`:e.status===`error`?`工具调用失败:`:`工具调用:`,e.name]})]})}),(0,U.jsxs)(`div`,{className:K(`flex flex-col gap-3 border-t px-3 py-3 font-mono text-[13px] leading-relaxed`,e.status===`paused`?`border-amber-200/70 dark:border-amber-900/60`:e.status===`error`?`border-rose-200/70 dark:border-rose-900/60`:`border-slate-200/70 dark:border-slate-800`),children:[e.approvalRequestId?(0,U.jsxs)(`div`,{className:`font-sans text-sm text-slate-700 dark:text-slate-200`,children:[(0,U.jsx)(`div`,{className:`font-medium`,children:e.approvalStatus===`approved`?`已批准该工具调用。`:e.approvalStatus===`rejected`?`已拒绝该工具调用。`:e.approvalMessage||`该工具调用需要人工确认后继续。`}),e.approvalLevel?(0,U.jsxs)(`div`,{className:K(`mt-2 inline-flex items-center rounded border px-1.5 py-0.5 text-xs font-medium`,Tq(e.approvalLevel)),children:[`审批级别:`,wq(e.approvalLevel)]}):null,e.serverLabel?(0,U.jsxs)(`div`,{className:`mt-1 text-xs text-amber-700/80 dark:text-amber-200/80`,children:[`MCP Server: `,e.serverLabel]}):null,e.approvalStatus===`pending`?(0,U.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[(0,U.jsxs)(`button`,{type:`button`,disabled:n||e.approvalStatus!==`pending`,onClick:()=>e.approvalProtocol===`ag-ui`?c?.({interruptId:e.approvalRequestId||``,approve:!0}):s({approvalRequestId:e.approvalRequestId||``,approve:!0,previousResponseId:e.previousResponseId}),className:`inline-flex min-h-8 items-center gap-1.5 rounded-md bg-emerald-600 px-3 py-1.5 text-xs font-semibold text-white shadow-sm transition hover:bg-emerald-500 disabled:cursor-not-allowed disabled:opacity-55`,children:[(0,U.jsx)(AM,{className:`h-3.5 w-3.5`}),`批准并继续`]}),(0,U.jsxs)(`button`,{type:`button`,disabled:n||e.approvalStatus!==`pending`,onClick:()=>e.approvalProtocol===`ag-ui`?c?.({interruptId:e.approvalRequestId||``,approve:!1}):s({approvalRequestId:e.approvalRequestId||``,approve:!1,previousResponseId:e.previousResponseId}),className:`inline-flex min-h-8 items-center gap-1.5 rounded-md border border-slate-300 bg-white px-3 py-1.5 text-xs font-semibold text-slate-600 transition hover:border-rose-300 hover:bg-rose-50 hover:text-rose-600 disabled:cursor-not-allowed disabled:opacity-55 dark:border-slate-700 dark:bg-slate-950 dark:text-slate-300 dark:hover:border-rose-800 dark:hover:bg-rose-950/30 dark:hover:text-rose-300`,children:[(0,U.jsx)(FM,{className:`h-3.5 w-3.5`}),`拒绝`]})]}):(0,U.jsxs)(`div`,{className:`mt-2 inline-flex items-center gap-1.5 text-xs font-medium text-slate-500 dark:text-slate-400`,children:[e.approvalStatus===`approved`?(0,U.jsx)(AM,{className:`h-3.5 w-3.5 text-emerald-500`}):(0,U.jsx)(FM,{className:`h-3.5 w-3.5 text-rose-500`}),e.approvalStatus===`approved`?`已批准`:`已拒绝`]})]}):null,e.args?(0,U.jsx)(Iq,{label:`入参 (Args)`,tone:`input`,value:e.args}):null,e.output?(0,U.jsx)(Iq,{label:`输出 (Output)`,tone:e.status===`error`?`error`:`output`,value:e.output}):null]})]},`${e.name}-${t}`)):null,i.tools?Object.values(i.tools).filter(e=>d?.some(t=>t.interactionId===e.approvalRequestId)).map(e=>(0,U.jsx)(oq,{interaction:d.find(t=>t.interactionId===e.approvalRequestId)},`anchor-${e.approvalRequestId}`)):null,(0,U.jsx)(`div`,{className:`w-full break-words`,children:i.content?(0,U.jsx)(VK,{content:i.content}):n&&r&&!i.reasoning&&!i.tools?(0,U.jsx)(`span`,{className:`ml-1 mt-2 inline-block h-4 w-2 animate-pulse rounded-sm bg-emerald-500 align-middle opacity-80 shadow-sm`}):null})]}),i.aguiActivities?.map(e=>(0,U.jsx)(XK,{surfaceId:e.surfaceId,messages:e.messages,onAction:u},e.surfaceId)),(0,U.jsx)(Lq,{isLastMessage:r,isStreaming:n,message:i,onDeleteFeedback:a,onSubmitFeedback:l})]})}function zq({agentName:e,isMobile:t,isStreaming:n,activity:r,contextIndicator:i,messages:a,isLoadingInitialHistory:o=!1,onDeleteFeedback:s,onOpenAttachmentPreview:c,onRespondToApproval:l,onRespondToAguiApproval:u,onSubmitFeedback:d,onSubmitAguiAction:f,onStopGeneration:p,onCancelRemote:m,checkpoints:h=[],onResumeCheckpoint:g,interactionRecords:_,scrollRef:v}){let[y,x]=(0,b.useState)(0),[ee,te]=(0,b.useState)(0),[S,ne]=(0,b.useState)(new Map),re=(0,b.useRef)(S);(0,b.useLayoutEffect)(()=>{let e=v.current;if(!e)return;let t=()=>{x(e.scrollTop),te(e.clientHeight)};if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(()=>t());return n.observe(e),()=>n.disconnect()},[v]);let C=(0,b.useMemo)(()=>xq({items:a,scrollTop:y,viewportHeight:ee,overscan:Cq,defaultItemHeight:Sq,measuredHeights:S,getItemKey:(e,t)=>e?.id||String(t)}),[S,a,y,ee]),w=C.visibleItems,ie=(0,b.useCallback)((e,t,n)=>{if(!e||!Number.isFinite(t)||t<=0)return;let r=re.current,i=r.get(e)??Sq;if(i===t)return;let a=new Map(r);a.set(e,t),re.current=a,ne(a);let o=v.current;o&&nx(e.currentTarget.scrollTop),className:K(`custom-scrollbar relative min-h-0 flex-1 overflow-y-auto scroll-smooth`,t?`px-3 py-3`:`px-4 py-5`),children:[(0,U.jsx)(`div`,{className:K(`mx-auto flex w-full max-w-[64rem] flex-col`,r?`pb-10 sm:pb-10`:`pb-6 sm:pb-8`),children:a.length===0&&o?(0,U.jsx)(Nq,{}):a.length===0?(0,U.jsx)(Mq,{agentName:e}):(0,U.jsx)(`div`,{style:{height:C.totalHeight},className:`relative`,children:w.map(r=>(0,U.jsx)(Eq,{messageId:r.item.id||String(r.index),top:r.top,onMeasure:ie,children:r.item.role===`system`?(0,U.jsx)(Fq,{message:r.item}):(0,U.jsx)(Rq,{agentName:e,isMobile:t,isStreaming:n,isLastMessage:r.index===a.length-1,message:r.item,onDeleteFeedback:s,onOpenAttachmentPreview:c,onRespondToApproval:l,interactionRecords:_,onRespondToAguiApproval:u,onSubmitFeedback:d,onSubmitAguiAction:f})},r.item.id||r.index))})}),(0,U.jsx)(_q,{}),y>320?(0,U.jsx)(`button`,{type:`button`,onClick:()=>{let e=v.current;e&&e.scrollTo({top:e.scrollHeight,behavior:`smooth`})},className:`sticky bottom-4 left-1/2 z-20 mx-auto flex h-9 w-9 -translate-x-1/2 items-center justify-center rounded-full border border-border bg-surface text-text-secondary shadow-[0_8px_24px_rgba(15,23,42,0.12)] transition hover:text-text-primary`,title:`回到底部`,children:(0,U.jsx)(DM,{className:`h-4 w-4`})}):null,r?(0,U.jsx)(`div`,{className:`sticky bottom-1 z-20 mx-auto flex w-full max-w-[64rem] justify-end`,children:(0,U.jsx)(jq,{activity:r,contextIndicator:i,onStopGeneration:p,onCancelRemote:m})}):null]})}var Bq=vR,Vq=yR,Hq=b.forwardRef(({className:e,...t},n)=>(0,U.jsx)(bR,{ref:n,className:K(`fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,e),...t}));Hq.displayName=bR.displayName;var Uq=b.forwardRef(({className:e,children:t,...n},r)=>(0,U.jsxs)(Vq,{children:[(0,U.jsx)(Hq,{}),(0,U.jsxs)(xR,{ref:r,className:K(`fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg`,e),...n,children:[t,(0,U.jsxs)(wR,{className:`absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground`,children:[(0,U.jsx)(wN,{className:`h-4 w-4`}),(0,U.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]}));Uq.displayName=xR.displayName;var Wq=({className:e,...t})=>(0,U.jsx)(`div`,{className:K(`flex flex-col space-y-1.5 text-center sm:text-left`,e),...t});Wq.displayName=`DialogHeader`;var Gq=({className:e,...t})=>(0,U.jsx)(`div`,{className:K(`flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2`,e),...t});Gq.displayName=`DialogFooter`;var Kq=b.forwardRef(({className:e,...t},n)=>(0,U.jsx)(SR,{ref:n,className:K(`text-lg font-semibold leading-none tracking-tight`,e),...t}));Kq.displayName=SR.displayName;var qq=b.forwardRef(({className:e,...t},n)=>(0,U.jsx)(CR,{ref:n,className:K(`text-sm text-muted-foreground`,e),...t}));qq.displayName=CR.displayName;function Jq(e,t){if(!(!t||e))return{width:`min(${t.width}px, calc(100vw - 5rem))`,height:`min(${t.height}px, calc(100vh - 9rem))`}}function Yq(e,t){if(!(!t||e))return{width:`min(${t.width+32}px, calc(100vw - 3rem))`}}function Xq({attachment:e,isMobile:t,previewImageSize:n,onClose:r,onImageLoad:i}){return(0,U.jsx)(Bq,{open:!!e?.url,onOpenChange:e=>!e&&r(),children:(0,U.jsxs)(Uq,{className:K(`gap-0 overflow-hidden border-slate-700 bg-slate-950 p-0 text-slate-100 shadow-2xl [&>button]:right-3 [&>button]:top-3 [&>button]:rounded-md [&>button]:border [&>button]:border-slate-700 [&>button]:bg-slate-900/70 [&>button]:p-1.5 [&>button]:text-slate-200 [&>button]:opacity-100`,t?`left-0 top-0 h-[var(--app-height)] max-h-[var(--app-height)] w-screen max-w-none translate-x-0 translate-y-0 rounded-none border-0`:`max-h-[calc(100vh-2rem)] max-w-[calc(100vw-2rem)] rounded-2xl`),style:Yq(t,n),children:[(0,U.jsx)(`div`,{className:`flex items-center gap-3 border-b border-slate-800 px-4 py-3 pr-16`,children:(0,U.jsx)(Kq,{className:`truncate text-sm font-medium`,children:e?.name||`附件预览`})}),(0,U.jsx)(`div`,{className:K(`flex items-center justify-center overflow-auto bg-slate-950`,t?`h-full p-4 pb-[calc(var(--safe-area-bottom)+1rem)]`:`max-h-[calc(100vh-7rem)] p-4`),children:e?e.type.startsWith(`image/`)?(0,U.jsx)(`img`,{src:e.url,alt:e.name,className:K(`object-contain`,t?`h-auto max-h-full w-full max-w-full`:`h-auto w-auto max-h-[calc(100vh-9rem)] max-w-[calc(100vw-5rem)]`),style:Jq(t,n),onLoad:e=>{let t=e.currentTarget;i({width:t.naturalWidth,height:t.naturalHeight})}}):(0,U.jsx)(`iframe`,{src:e.url,title:e.name,className:`h-full min-h-[24rem] w-full rounded-xl border border-slate-800 bg-white`}):null})]})})}function Zq(e){if(typeof e==`number`&&Number.isFinite(e)&&e>0)return e;if(typeof e==`string`&&e.trim()){let t=Number(e);if(Number.isFinite(t)&&t>0)return t}return null}function Qq(e){return/[\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]/u.test(e)}function $q(e){let t=String(e||``).trim();if(!t)return 0;let n=0,r=0;for(let e of t){if(Qq(e)){n+=1;continue}r+=1}return Math.max(1,n+Math.ceil(r/4))}function eJ(e){if(!e)return 0;if(e.role===`system`)return e.eventType===`context_checkpoint`?$q(e.summary||``):0;let t=$q(e.content||``);return e.tools&&(t+=Object.values(e.tools).reduce((e,t)=>e+$q(t?.name||``)+$q(t?.args||``)+$q(t?.output||``),0)),t}function tJ(e){return e?Zq(e.context_window_tokens)??Zq(e?.limits?.context_window_tokens):null}function nJ(e){return e?Zq(e.auto_compact_threshold_percentage)??84:84}function rJ({messages:e,draftInput:t,selectedModel:n}){let r=tJ(n);if(!r)return null;let i=[...e||[]].reverse().find(e=>e?.role===`system`&&e?.eventType===`context_checkpoint`&&e?.status===`running`);if(i){let e=eJ(i);return{label:`正在压缩上下文…`,phase:`compressing`,usedTokens:e,contextWindowTokens:r,percent:Math.min(100,Math.max(0,Math.round(e/r*100)))}}let a=(e||[]).reduce((e,t)=>e+eJ(t),0)+$q(t||``);if(a<=0)return null;let o=Math.min(100,Math.max(0,Math.round(a/r*100)));return o>=nJ(n)?{label:`估算上下文 ${o}% · 即将压缩`,phase:`warning`,percent:o,usedTokens:a,contextWindowTokens:r}:{label:`估算上下文 ${o}%`,phase:`normal`,percent:o,usedTokens:a,contextWindowTokens:r}}function iJ(e){return e.requestedSessionId===e.activeSessionId&&e.requestToken===e.activeRequestToken}function aJ({agentName:e,isMobile:t,onDeleteFeedback:n,onSubmitFeedback:r,onRespondToApproval:i,onRespondToAguiApproval:a,onSubmitAguiAction:o,onStopGeneration:s,onCancelRemote:c,checkpointResumeEnabled:l=!1,onResumeCheckpoint:u,onLoadOlderSessionMessages:d,interactionRecords:f}){let p=an(e=>e.messages),m=Ze(e=>e.currentSessionId),h=Ze(e=>e.isLoadingSessions),g=D(e=>!!(e.getSessionActivity(m)&&e.isSessionStreaming(m))),_=D(e=>e.getSessionActivity(m)),v=PA(e=>e.getSessionCheckpoints(m)),y=Ze(e=>m?e.messageHistory[m]:null),x=h||!!y?.isLoadingInitial,ee=C(e=>e.input),te=Te(e=>e.availableModels),S=Te(e=>e.selectedModel),ne=C(e=>e.previewAttachment),re=C(e=>e.previewImageSize),w=(0,b.useRef)(null),ie=(0,b.useRef)(!0),ae=(0,b.useRef)(!1),oe=(0,b.useRef)(0),se=(0,b.useRef)(g),ce=(0,b.useRef)(!1),le=(0,b.useRef)(null),ue=(0,b.useRef)(!0),T=(0,b.useMemo)(()=>te.find(e=>e.id===S)||null,[te,S]),E=(0,b.useMemo)(()=>rJ({messages:p,draftInput:ee,selectedModel:T}),[ee,p,T]);return(0,b.useEffect)(()=>{se.current=g},[g]),(0,b.useEffect)(()=>{ue.current=!0,ie.current=!0,ae.current=!1,oe.current=0,ce.current=!1,le.current=null},[m]),(0,b.useEffect)(()=>{let e=w.current;if(!e)return;let t=()=>{let t=e.scrollHeight-e.scrollTop-e.clientHeight,n=e.scrollTop{iJ({requestedSessionId:n,activeSessionId:Ze.getState().currentSessionId,requestToken:r,activeRequestToken:le.current})&&requestAnimationFrame(()=>{if(!iJ({requestedSessionId:n,activeSessionId:Ze.getState().currentSessionId,requestToken:r,activeRequestToken:le.current}))return;let e=w.current;if(!e)return;let i=e.scrollHeight-t;e.scrollTop+=i,oe.current=e.scrollTop})}).finally(()=>{le.current===r&&(le.current=null,ce.current=!1)})}if(se.current&&n){ae.current=!0,ie.current=!1;return}if(ae.current){let e=t<=12;ae.current=!e,ie.current=e;return}ie.current=t<96};return t(),e.addEventListener(`scroll`,t,{passive:!0}),()=>e.removeEventListener(`scroll`,t)},[y,m,d]),(0,b.useEffect)(()=>{let e=w.current;if(e){if(p.length>0&&ue.current){let e=Ze.getState().currentSessionId,t=w.current,n=t?t.style.scrollBehavior:``;t&&(t.style.scrollBehavior=`auto`,t.scrollTop=t.scrollHeight,oe.current=t.scrollTop);let r=0,i=t?.scrollHeight??-1,a=!1,o=0,s=()=>{a||(a=!0,t&&(t.style.scrollBehavior=n),ie.current=!0,ae.current=!1,ue.current=!1)},c=()=>{if(a)return;if(Ze.getState().currentSessionId!==e){a=!0;return}let t=w.current;if(t){if(t.scrollHeight!==i)i=t.scrollHeight,t.scrollTop=t.scrollHeight,oe.current=t.scrollTop,r=0;else if(r+=1,r>=3){s();return}o=requestAnimationFrame(c)}},l=window.setTimeout(s,2e3);return o=requestAnimationFrame(c),()=>{cancelAnimationFrame(o),window.clearTimeout(l),s()}}ie.current&&(e.scrollTop=e.scrollHeight,oe.current=e.scrollTop)}},[p,g]),(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(zq,{agentName:e,isMobile:t,isStreaming:g,activity:_,contextIndicator:E,messages:p,isLoadingInitialHistory:x,onDeleteFeedback:n,onOpenAttachmentPreview:e=>{C.getState().setPreviewAttachment(e),C.getState().setPreviewImageSize(null)},onRespondToApproval:i,onRespondToAguiApproval:a,interactionRecords:f,onSubmitFeedback:r,onSubmitAguiAction:o,onStopGeneration:s,onCancelRemote:c,checkpoints:l?v:[],onResumeCheckpoint:u,scrollRef:w}),(0,U.jsx)(Xq,{attachment:ne,isMobile:t,previewImageSize:re,onClose:()=>{C.getState().setPreviewAttachment(null),C.getState().setPreviewImageSize(null)},onImageLoad:e=>C.getState().setPreviewImageSize(e)})]})}function oJ({indicator:e}){let t=Math.max(0,Math.min(100,e.percent??0));return(0,U.jsxs)(`div`,{className:`group relative flex h-8 w-8 items-center justify-center`,children:[(0,U.jsx)(`div`,{className:K(`flex h-4 w-4 items-center justify-center rounded-full`,e.phase===`warning`||e.phase===`compressing`||t>=85?`text-red-500`:`text-[#a5abb2]`),title:e.label,children:(0,U.jsx)(`div`,{className:`flex h-3 w-3 items-center justify-center rounded-full`,style:{background:`conic-gradient(currentColor ${t*3.6}deg, #edf0f2 0deg)`},children:(0,U.jsx)(`span`,{className:`h-2 w-2 rounded-full bg-background`})})}),(0,U.jsxs)(`div`,{className:`pointer-events-auto absolute bottom-[calc(100%+0.75rem)] left-1/2 z-30 hidden w-max -translate-x-1/2 rounded-2xl border border-border/70 bg-background px-4 py-3 text-center text-sm leading-5 text-foreground shadow-[0_14px_42px_rgba(15,23,42,0.16)] group-hover:block dark:shadow-[0_14px_42px_rgba(0,0,0,0.4)]`,children:[(0,U.jsx)(`div`,{className:`mb-1 whitespace-nowrap font-light text-text-secondary`,children:`估算上下文`}),(0,U.jsxs)(`div`,{className:`whitespace-nowrap font-light`,children:[t,`% 已使用`]}),(0,U.jsx)(`div`,{className:`whitespace-nowrap font-light text-text-muted`,children:e.usedTokens&&e.contextWindowTokens?`${sJ(e.usedTokens)} / ${sJ(e.contextWindowTokens)}`:e.label})]})]})}function sJ(e){return e>=1e6?`${(e/1e6).toFixed(1)}m`:e>=1e3?`${(e/1e3).toFixed(0)}k`:String(e)}var cJ=[{value:`plan`,label:`计划模式`,description:`先分析并形成可执行计划`,icon:YM},{value:`goal`,label:`设定目标`,description:`朝可验证的停止条件持续推进`,icon:_N}],lJ={plan:`计划模式`,goal:`目标`};function uJ({attachmentsEnabled:e,mode:t,support:n,onSelectMode:r,onUpload:i}){let[a,o]=(0,b.useState)(!1),s=(0,b.useRef)(null),c=cJ.filter(e=>n[e.value]);return(0,b.useEffect)(()=>{if(!a)return;let e=e=>{s.current&&!s.current.contains(e.target)&&o(!1)},t=e=>{e.key===`Escape`&&o(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[a]),!e&&c.length===0?null:(0,U.jsxs)(`div`,{ref:s,className:`relative flex min-w-0 items-center gap-1`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>o(e=>!e),className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-xl text-text-secondary transition hover:bg-muted hover:text-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/25`,"aria-expanded":a,"aria-haspopup":`menu`,"aria-label":`添加附件或选择执行模式`,title:`添加附件或选择执行模式`,children:(0,U.jsx)(sN,{className:`h-[19px] w-[19px]`})}),t?(0,U.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>!e),className:K(`flex h-8 max-w-[8.5rem] items-center gap-1 rounded-xl px-2 text-[12px] transition`,t===`goal`?`bg-amber-50 text-amber-700 hover:bg-amber-100 dark:bg-amber-950/40 dark:text-amber-300`:`text-text-secondary hover:bg-muted hover:text-text-primary`),"aria-label":`当前执行模式:${lJ[t]}`,children:[(0,U.jsx)(`span`,{className:`truncate`,children:lJ[t]}),(0,U.jsx)(jM,{className:`h-3.5 w-3.5 shrink-0`})]}):null,a?(0,U.jsxs)(`div`,{role:`menu`,"aria-label":`附件与执行模式`,className:`absolute bottom-[calc(100%+0.65rem)] left-0 z-40 w-[min(19rem,calc(100vw-2rem))] rounded-2xl border border-border/80 bg-popover p-1.5 shadow-[0_18px_44px_rgba(15,23,42,0.16)]`,children:[e?(0,U.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:()=>{i(),o(!1)},className:`flex w-full items-center gap-2.5 rounded-xl px-2.5 py-2.5 text-left transition hover:bg-muted/70`,children:[(0,U.jsx)(xN,{className:`h-4 w-4 shrink-0 text-text-muted`}),(0,U.jsxs)(`span`,{children:[(0,U.jsx)(`span`,{className:`block text-[13px] font-medium text-text-primary`,children:`上传附件`}),(0,U.jsx)(`span`,{className:`block text-[11px] text-text-muted`,children:`添加文件或图片到当前消息`})]})]}):null,e&&c.length>0?(0,U.jsx)(`div`,{className:`my-1 h-px bg-border/70`}):null,c.map(e=>{let n=e.icon,i=t===e.value;return(0,U.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":i,onClick:()=>{r(e.value),o(!1)},className:K(`flex w-full items-center gap-2.5 rounded-xl px-2.5 py-2.5 text-left transition`,i?`bg-muted`:`hover:bg-muted/70`),children:[(0,U.jsx)(n,{className:`h-4 w-4 shrink-0 text-text-muted`}),(0,U.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`span`,{className:`block text-[13px] font-medium text-text-primary`,children:e.label}),(0,U.jsx)(`span`,{className:`block text-[11px] text-text-muted`,children:e.description})]}),i?(0,U.jsx)(AM,{className:`h-4 w-4 shrink-0 text-text-primary`}):null]},e.value)})]}):null]})}var dJ=[{value:`auto`,label:`自动`,description:`使用模型或 Agent 的默认设置`},{value:`enabled`,label:`开启`,description:`请求模型输出推理过程`},{value:`disabled`,label:`关闭`,description:`不额外请求模型推理`}],fJ={auto:`自动`,enabled:`开启`,disabled:`关闭`};function pJ({availableModels:e,selectedModel:t,thinkingEnabled:n,thinkingMode:r,onSelectModel:i,onSelectThinkingMode:a}){let[o,s]=(0,b.useState)(!1),[c,l]=(0,b.useState)(`model`),u=(0,b.useRef)(null),d=e.find(e=>e.id===t)?.display_name||t||`选择模型`,f=n?c:`model`;return(0,b.useEffect)(()=>{if(!o)return;let e=e=>{u.current&&!u.current.contains(e.target)&&s(!1)},t=e=>{e.key===`Escape`&&s(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[o]),(0,U.jsxs)(`div`,{ref:u,className:`relative`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>s(e=>!e),className:`flex h-8 max-w-[15rem] items-center gap-1.5 rounded-xl bg-muted/80 px-3 text-[13px] text-text-primary transition hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/25`,"aria-expanded":o,"aria-haspopup":`menu`,"aria-label":n?`模型 ${d},推理 ${fJ[r]}`:`模型 ${d}`,title:n?`选择模型与推理设置`:`选择模型`,children:[(0,U.jsx)(`span`,{className:`min-w-0 truncate`,children:d}),n?(0,U.jsx)(`span`,{className:`shrink-0 text-text-muted`,children:fJ[r]}):null,(0,U.jsx)(jM,{className:K(`h-3.5 w-3.5 shrink-0 text-text-muted transition-transform`,o&&`rotate-180`)})]}),o?(0,U.jsxs)(`div`,{className:`absolute bottom-[calc(100%+0.65rem)] right-0 z-40 flex items-end gap-2 sm:flex-row-reverse`,children:[(0,U.jsxs)(`div`,{role:`menu`,"aria-label":f===`model`?`选择模型`:`选择推理设置`,className:`max-h-[min(54vh,22rem)] w-[min(18rem,calc(100vw-2rem))] overflow-y-auto rounded-2xl border border-border/80 bg-popover p-1.5 shadow-[0_18px_44px_rgba(15,23,42,0.16)]`,children:[n?(0,U.jsxs)(`div`,{className:`mb-1 grid grid-cols-2 gap-1 sm:hidden`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>l(`model`),className:K(`rounded-lg px-2 py-1.5 text-xs`,f===`model`?`bg-muted text-text-primary`:`text-text-muted`),children:`模型`}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>l(`reasoning`),className:K(`rounded-lg px-2 py-1.5 text-xs`,f===`reasoning`?`bg-muted text-text-primary`:`text-text-muted`),children:`推理`})]}):null,(0,U.jsx)(`div`,{className:`px-2.5 pb-1.5 pt-1 text-[11px] font-medium text-text-muted`,children:f===`model`?`模型`:`推理设置`}),f===`model`?e.map(e=>{let n=e.id===t;return(0,U.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":n,onClick:()=>{i(e.id),s(!1)},className:K(`flex w-full items-center gap-2 rounded-xl px-2.5 py-2 text-left text-[13px] transition-colors`,n?`bg-muted text-text-primary`:`text-text-secondary hover:bg-muted/70 hover:text-text-primary`),children:[(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.display_name||e.id}),n?(0,U.jsx)(AM,{className:`h-4 w-4 shrink-0`,"aria-hidden":`true`}):null]},e.id)}):dJ.map(e=>{let t=e.value===r;return(0,U.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":t,onClick:()=>{a(e.value),s(!1)},className:K(`flex w-full items-center gap-2 rounded-xl px-2.5 py-2 text-left transition-colors`,t?`bg-muted`:`hover:bg-muted/70`),children:[(0,U.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`span`,{className:`block text-[13px] font-medium text-text-primary`,children:e.label}),(0,U.jsx)(`span`,{className:`block text-[11px] leading-4 text-text-muted`,children:e.description})]}),t?(0,U.jsx)(AM,{className:`h-4 w-4 shrink-0 text-text-primary`,"aria-hidden":`true`}):null]},e.value)})]}),(0,U.jsxs)(`div`,{className:`hidden w-[16rem] rounded-2xl border border-border/80 bg-popover p-1.5 shadow-[0_18px_44px_rgba(15,23,42,0.13)] sm:block`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>l(`model`),className:K(`flex w-full items-center gap-2 rounded-xl px-2.5 py-2.5 text-left text-[13px] transition-colors`,f===`model`?`bg-muted text-text-primary`:`text-text-secondary hover:bg-muted/70`),children:[(0,U.jsx)(`span`,{className:`font-medium`,children:`模型`}),(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-right text-text-muted`,children:d}),(0,U.jsx)(NM,{className:`h-4 w-4 shrink-0 text-text-muted`})]}),n?(0,U.jsxs)(`button`,{type:`button`,onClick:()=>l(`reasoning`),className:K(`flex w-full items-center gap-2 rounded-xl px-2.5 py-2.5 text-left text-[13px] transition-colors`,f===`reasoning`?`bg-muted text-text-primary`:`text-text-secondary hover:bg-muted/70`),children:[(0,U.jsx)(`span`,{className:`font-medium`,children:`推理`}),(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-right text-text-muted`,children:fJ[r]}),(0,U.jsx)(NM,{className:`h-4 w-4 shrink-0 text-text-muted`})]}):null]})]}):null]})}var mJ=[{value:`ask`,label:`请求批准`,description:`有副作用的操作执行前先确认`,icon:qM},{value:`risk`,label:`风险操作需确认`,description:`只对命令、写入和外部副作用确认`,icon:pN},{value:`full`,label:`完全访问`,description:`本次会话不再为默认规则弹出确认`,icon:fN}],hJ={ask:`请求批准`,risk:`风险确认`,full:`完全访问`};function gJ({approvalPolicy:e}){let[t,n]=(0,b.useState)(!1),r=(0,b.useRef)(null),i=ke(e=>e.permissionMode),a=ke(e=>e.setPermissionMode),o=i===`ask`?qM:i===`full`?fN:pN,s=(0,b.useMemo)(()=>mJ.filter(t=>!e||e.Modes.includes(t.value)),[e]);return(0,b.useEffect)(()=>{s.some(e=>e.value===i)||a(e?.DefaultMode||s[0]?.value||`risk`)},[e?.DefaultMode,i,a,s]),(0,b.useEffect)(()=>{if(!t)return;let e=e=>{r.current&&!r.current.contains(e.target)&&n(!1)},i=e=>{e.key===`Escape`&&n(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,i),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,i)}},[t]),(0,U.jsxs)(`div`,{ref:r,className:`relative`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),className:K(`flex h-8 items-center gap-1.5 rounded-xl px-2.5 text-[13px] transition hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/25`,i===`full`?`text-amber-600 dark:text-amber-400`:`text-text-secondary hover:text-text-primary`),"aria-expanded":t,"aria-haspopup":`menu`,title:`设置本次会话的工具审批规则`,children:[(0,U.jsx)(o,{className:`h-3.5 w-3.5`}),(0,U.jsx)(`span`,{children:hJ[i]}),(0,U.jsx)(jM,{className:K(`h-3.5 w-3.5 transition-transform`,t&&`rotate-180`)})]}),t?(0,U.jsxs)(`div`,{role:`menu`,"aria-label":`工具权限`,className:`absolute bottom-[calc(100%+0.6rem)] left-0 z-30 w-[19rem] rounded-2xl border border-border/80 bg-popover p-1.5 shadow-[0_12px_30px_rgba(15,23,42,0.14)]`,children:[(0,U.jsx)(`div`,{className:`px-2.5 pb-1.5 pt-1 text-[11px] text-text-muted`,children:`本次会话的默认审批规则`}),s.map(e=>{let t=e.icon,r=e.value===i;return(0,U.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":r,onClick:()=>{a(e.value),n(!1)},className:K(`flex w-full items-center gap-2.5 rounded-xl px-2.5 py-2 text-left transition-colors`,r?`bg-primary/[0.08]`:`hover:bg-muted/75`),children:[(0,U.jsx)(t,{className:K(`h-[17px] w-[17px] shrink-0`,r?`text-primary`:`text-text-muted`)}),(0,U.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`span`,{className:K(`block text-[13px] font-medium leading-5`,r?`text-text-primary`:`text-text-secondary`),children:e.label}),(0,U.jsx)(`span`,{className:`block text-[11px] leading-4 text-text-muted`,children:e.description})]}),r?(0,U.jsx)(AM,{className:`h-4 w-4 shrink-0 text-primary`,"aria-hidden":`true`}):null]},e.value)})]}):null]})}function _J({attachments:e,composerContextIndicator:t,composerMaxHeight:n,fileInputRef:r,input:i,isMobile:a,isStreaming:o,attachmentsEnabled:s=!0,approvalEnabled:c=!1,approvalPolicy:l,thinkingEnabled:u=!1,executionMode:d,executionModeSupport:f,queuedDrafts:p,onAppendAttachments:m,onInputChange:h,onSelectExecutionMode:g,onPaste:_,onRemoveAttachment:v,onStopGeneration:y,onCancelRemote:b,onSubmit:x,textareaRef:ee}){let te=d===`goal`?`描述需要持续完成的目标…`:d===`plan`?`描述需要先规划的任务…`:a?`发送消息...`:`发送消息…`,S=b?`保留恢复点并结束本次执行`:`停止生成`,ne=d===`goal`?!!i.trim():!!(i.trim()||e.length>0),re=Te(e=>e.availableModels),C=Te(e=>e.selectedModel),w=Te(e=>e.thinkingMode),ie=Te(e=>e.setSelectedModel),ae=Te(e=>e.setThinkingMode),oe=e=>e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`;return(0,U.jsx)(`div`,{className:`relative z-10 flex-shrink-0 bg-background/95 px-3 py-3 backdrop-blur sm:px-4 sm:py-3`,children:(0,U.jsxs)(`div`,{className:`mx-auto w-full max-w-[64rem]`,children:[p.length>0?(0,U.jsxs)(`div`,{className:`mb-2 rounded-2xl border border-amber-200/80 bg-amber-50/80 px-3 py-2 text-xs text-amber-900 shadow-sm dark:border-amber-900/60 dark:bg-amber-950/30 dark:text-amber-100`,children:[(0,U.jsxs)(`div`,{className:`mb-1.5 flex items-center justify-between gap-2`,children:[(0,U.jsxs)(`span`,{className:`font-semibold`,children:[`发送队列 · `,p.length]}),(0,U.jsx)(`span`,{className:`text-amber-700/75 dark:text-amber-200/75`,children:`当前回复完成后依次发送`})]}),(0,U.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[p.slice(0,3).map((e,t)=>{let n=e.text.trim()||(e.attachments.length>0?`仅附件消息`:`空消息`);return(0,U.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-background/70 px-2 py-1.5`,children:[(0,U.jsx)(`span`,{className:`flex h-5 w-5 flex-shrink-0 items-center justify-center rounded-full bg-amber-100 font-mono text-[10px] text-amber-700 dark:bg-amber-900/50 dark:text-amber-100`,children:t+1}),(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-text-secondary`,children:n}),e.attachments.length>0?(0,U.jsxs)(`span`,{className:`flex-shrink-0 rounded-full bg-amber-100 px-2 py-0.5 text-[10px] text-amber-700 dark:bg-amber-900/50 dark:text-amber-100`,children:[e.attachments.length,` 附件`]}):null]},`${t}-${n}-${e.attachments.length}`)}),p.length>3?(0,U.jsxs)(`div`,{className:`px-2 pt-0.5 text-[11px] text-amber-700/80 dark:text-amber-200/80`,children:[`还有 `,p.length-3,` 条等待发送`]}):null]})]}):null,(0,U.jsx)(`div`,{className:`relative rounded-[28px] bg-surface shadow-[0_0_0_0.5px_rgba(15,23,42,0.08),0_5px_18px_rgba(15,23,42,0.07)] dark:shadow-[0_0_0_0.5px_rgba(255,255,255,0.06),0_8px_24px_rgba(0,0,0,0.24)]`,children:(0,U.jsx)(`div`,{className:`flex items-center gap-3`,children:(0,U.jsxs)(`form`,{onSubmit:t=>{if(t.preventDefault(),o){b?b():y();return}let n=i.trim();ne&&x(n,e)},onDragOver:e=>{e.preventDefault(),e.stopPropagation()},onDrop:e=>{e.preventDefault(),e.stopPropagation(),s&&e.dataTransfer.files&&e.dataTransfer.files.length>0&&m(Array.from(e.dataTransfer.files))},className:`relative flex min-h-[116px] min-w-0 flex-1 flex-col rounded-[28px] border border-border/55 bg-background px-4 pb-3 pt-3 transition-all focus-within:border-primary/40 focus-within:ring-2 focus-within:ring-primary/15 sm:px-5`,children:[e.length>0?(0,U.jsx)(`div`,{className:`mb-1.5 flex flex-wrap gap-2`,children:e.map((e,t)=>(0,U.jsxs)(`div`,{className:K(`group relative flex items-center gap-2 rounded-xl border border-border bg-background px-3 py-2 text-xs`,a?`max-w-full`:`max-w-[14rem]`),children:[(0,U.jsx)(`span`,{className:`flex h-7 w-7 flex-shrink-0 items-center justify-center rounded-lg bg-muted text-text-muted`,children:(0,U.jsx)(iN,{className:`h-3.5 w-3.5`})}),(0,U.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`span`,{className:`block truncate font-medium text-text-primary`,children:e.name}),(0,U.jsx)(`span`,{className:`block text-[10px] text-text-muted`,children:oe(e.size)})]}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>v(t),className:`absolute -right-1.5 -top-1.5 flex h-4 w-4 items-center justify-center rounded-full border border-border bg-background text-text-muted shadow-sm transition hover:text-rose-500`,"aria-label":`移除附件 ${e.name}`,children:(0,U.jsx)(`span`,{className:`text-[11px] leading-none`,children:`×`})})]},`${e.name}-${e.size}-${t}`))}):null,(0,U.jsx)(`textarea`,{ref:ee,rows:1,value:i,onChange:h,onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),e.currentTarget.form?.requestSubmit())},onPaste:_,placeholder:te,className:K(`custom-scrollbar max-h-[176px] min-h-[62px] w-full resize-none overflow-y-auto border-0 bg-transparent px-0 pb-1 pt-1 text-[15px] leading-6 text-text-primary outline-none placeholder:text-text-muted/60`,a?`text-[16px]`:`text-[14px]`),style:{maxHeight:`${n}px`,overflowY:`auto`}}),(0,U.jsxs)(`div`,{className:`mt-auto flex min-h-8 items-center justify-between gap-2 pt-1.5`,children:[(0,U.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,U.jsx)(`input`,{ref:r,type:`file`,multiple:!0,className:`hidden`,onChange:e=>{e.target.files&&e.target.files.length>0&&(m(Array.from(e.target.files)),e.target.value=``)}}),(0,U.jsx)(uJ,{attachmentsEnabled:s,mode:d,support:f,onSelectMode:g,onUpload:()=>r.current?.click()}),c?(0,U.jsx)(gJ,{approvalPolicy:l}):null]}),(0,U.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[t?(0,U.jsx)(oJ,{indicator:t}):null,re.length>0?(0,U.jsx)(pJ,{availableModels:re,selectedModel:C,thinkingEnabled:u,thinkingMode:w,onSelectModel:ie,onSelectThinkingMode:ae}):null,(0,U.jsx)(`button`,{type:`submit`,disabled:!o&&!ne,className:K(`flex h-9 w-9 shrink-0 items-center justify-center rounded-full transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30`,o||ne?`bg-[#1f1f1f] text-white hover:opacity-80`:`bg-muted text-text-muted/45`),title:o?S:`发送消息`,children:o?(0,U.jsx)(gN,{className:`h-3.5 w-3.5 fill-current`}):(0,U.jsx)(OM,{className:`h-[18px] w-[18px]`})})]})]})]})})})]})})}function vJ(e){return[e.name,e.size,e.lastModified,e.type].join(`:`)}function yJ(e,t){let n=new Map;for(let t of e)n.set(vJ(t),t);for(let e of t)n.set(vJ(e),e);return Array.from(n.values())}function bJ(e){return Array.from(e.clipboardData.items||[]).filter(e=>e.kind===`file`).map(e=>e.getAsFile()).filter(e=>!!e)}function xJ({composerMaxHeight:e,submitDraft:t,stopGeneration:n,cancelRemote:r,isMobile:i,attachmentsEnabled:a=!0,approvalEnabled:o=!1,approvalPolicy:s,thinkingEnabled:c=!1,runtimeCapabilityMatrix:l,pendingInteractions:u,onRespondInteraction:d,localCatalog:f}){let[p,m]=(0,b.useState)(0),[h,g]=(0,b.useState)(),_=C(e=>e.input),v=C(e=>e.attachments),y=Ze(e=>e.currentSessionId),x=D(e=>!!(e.getSessionActivity(y)&&e.isSessionStreaming(y))),ee=C(e=>e.queuedDrafts),te=an(e=>e.messages),S=Te(e=>e.availableModels),ne=Te(e=>e.selectedModel),re=Te(e=>e.setThinkingMode),w=(0,b.useRef)(null),ie=(0,b.useRef)(null),ae=(0,b.useMemo)(()=>S.find(e=>e.id===ne)||null,[S,ne]),oe=(0,b.useMemo)(()=>rJ({messages:te,draftInput:_,selectedModel:ae}),[_,te,ae]),se=(0,b.useMemo)(()=>({plan:!!l?.plan?.supported,goal:!!l?.goal?.supported}),[l]),ce=h&&se[h]?h:void 0,le=(0,b.useCallback)((e,n)=>{!e&&n.length===0||(C.getState().setInput(``),C.getState().setAttachments([]),t(e,n,void 0,void 0,ce),ce===`goal`&&g(void 0))},[ce,t]);(0,b.useEffect)(()=>{ie.current&&(ie.current.style.height=`auto`,ie.current.style.height=`${Math.min(ie.current.scrollHeight,e)}px`)},[_,e]);let ue=t=>{C.getState().setInput(t.target.value),t.target.style.height=`auto`,t.target.style.height=`${Math.min(t.target.scrollHeight,e)}px`},T=e=>{!a||!e.length||C.getState().setAttachments(t=>yJ(t,e))},E=e=>{if(!a)return;let t=bJ(e);t.length&&(e.preventDefault(),e.stopPropagation(),T(t))},de=u||[],fe=Math.min(p,Math.max(de.length-1,0));return(0,b.useEffect)(()=>{c||re(`auto`)},[re,c]),(0,U.jsxs)(`div`,{className:`flex w-full flex-col justify-center`,children:[de.length>0&&d?(0,U.jsx)(nq,{interactions:de,activeIndex:fe,onSelectIndex:m,onRespond:d,localCatalog:f}):null,(0,U.jsx)(_J,{attachments:v,composerContextIndicator:oe,composerMaxHeight:e,fileInputRef:w,input:_,isMobile:i,isStreaming:x,attachmentsEnabled:a,approvalEnabled:o,approvalPolicy:s,thinkingEnabled:c,executionMode:ce,executionModeSupport:se,queuedDrafts:ee,onAppendAttachments:T,onInputChange:ue,onSelectExecutionMode:g,onPaste:E,onRemoveAttachment:e=>C.getState().setAttachments(t=>t.filter((t,n)=>n!==e)),onStopGeneration:n,onCancelRemote:r,onSubmit:le,textareaRef:ie})]})}var SJ=(0,b.lazy)(()=>J(()=>import(`./NativeTerminalPanel-DUrK0JpZ.js`).then(e=>({default:e.NativeTerminalPanel})),__vite__mapDeps([5,6]),import.meta.url));function CJ({availableModels:e,selectedModel:t,onSelectModel:n,selectedModelLabel:r,modelCatalogLoaded:i,modelSource:a,thinkingEnabled:o,thinkingMode:s,onSelectThinkingMode:c,compact:l=!1}){let u=K(`rounded-full border border-slate-200 bg-white px-3 py-2 text-sm text-slate-700 outline-none transition-colors focus:ring-1 focus:ring-blue-500 dark:border-slate-700 dark:bg-slate-900 dark:text-slate-300`,l?`w-full`:`max-w-[13rem]`),d=e.length>1?(0,U.jsx)(`select`,{value:t,onChange:e=>n(e.target.value),className:u,children:e.map(e=>(0,U.jsx)(`option`,{value:e.id,children:e.display_name||e.id},e.id))}):r?(0,U.jsx)(`span`,{className:K(u,`inline-flex max-w-full items-center`,l?`justify-start`:``),title:a||r,children:(0,U.jsx)(`span`,{className:`truncate`,children:r})}):(0,U.jsx)(`span`,{className:`text-sm text-slate-400`,children:i?`未配置模型`:`Loading models...`}),f=o?(0,U.jsxs)(`select`,{value:s,onChange:e=>c(e.target.value),className:K(u,l?``:`max-w-[9rem]`),title:`控制模型 thinking/reasoning 参数`,children:[(0,U.jsx)(`option`,{value:`auto`,children:`思考自动`}),(0,U.jsx)(`option`,{value:`enabled`,children:`开启思考`}),(0,U.jsx)(`option`,{value:`disabled`,children:`关闭思考`})]}):null;return(0,U.jsxs)(`div`,{className:K(`flex min-w-0 gap-2`,l?`w-full flex-col`:`items-center`),children:[d,f]})}function wJ({agentName:e,currentSessionId:t,isMobile:n,sidebarOpen:r,mobileSidebarOpen:i,onToggleSidebar:a,availableModels:o,selectedModel:s,onSelectModel:c,selectedModelLabel:l,modelCatalogLoaded:u,modelSource:d,thinkingEnabled:f,thinkingMode:p,onSelectThinkingMode:m,mobileActionsOpen:h,onMobileActionsOpenChange:g,workspaceEnabled:_,onOpenWorkspace:v,nativeManagementLink:y,nativeTerminal:x,nativeLauncherMode:ee=!1}){let[te,S]=(0,b.useState)(!1),ne=!!x?.Enabled,re=n?i?(0,U.jsx)(nN,{className:`h-5 w-5`}):(0,U.jsx)(rN,{className:`h-5 w-5`}):r?(0,U.jsx)(nN,{className:`h-5 w-5`}):(0,U.jsx)(rN,{className:`h-5 w-5`});return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(`header`,{className:K(`flex flex-shrink-0 items-center justify-between border-b border-black/[0.06] bg-background/95 px-3 py-2 backdrop-blur dark:border-white/[0.08] dark:bg-background/95 sm:px-4`,n?`pt-[calc(var(--safe-area-top)+0.5rem)]`:`h-12`),children:[(0,U.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[ee?null:(0,U.jsx)(`button`,{type:`button`,onClick:a,className:`rounded-lg p-2 text-slate-500 transition-colors hover:bg-slate-100 dark:hover:bg-slate-800`,"aria-label":n?`打开历史记录`:`切换侧边栏`,children:re}),(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsx)(`div`,{className:`truncate text-sm font-semibold text-slate-900 dark:text-slate-100 sm:text-base`,children:e}),(0,U.jsx)(`div`,{className:`text-[11px] text-slate-400 dark:text-slate-500`,children:ee?`原生运行时入口`:`智能体`})]})]}),n?(0,U.jsx)(`button`,{type:`button`,onClick:()=>g(!0),className:`rounded-lg p-2 text-slate-500 transition-colors hover:bg-slate-100 dark:hover:bg-slate-800`,"aria-label":`打开会话操作`,children:(0,U.jsx)(BM,{className:`h-5 w-5`})}):(0,U.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[y?(0,U.jsxs)(`a`,{href:y.href,target:`_blank`,rel:`noreferrer`,title:y.title,className:`inline-flex flex-shrink-0 items-center gap-1.5 whitespace-nowrap rounded-xl border border-slate-200 bg-slate-50 px-3 py-2 text-sm font-medium leading-none text-slate-700 transition hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-slate-700`,children:[(0,U.jsx)(VM,{className:`h-4 w-4`}),(0,U.jsx)(`span`,{children:y.label})]}):null,_?(0,U.jsxs)(`button`,{type:`button`,onClick:v,className:`inline-flex flex-shrink-0 items-center gap-1.5 whitespace-nowrap rounded-xl border border-slate-200 bg-slate-50 px-3 py-2 text-sm font-medium leading-none text-slate-700 transition hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-slate-700`,children:[(0,U.jsx)(KM,{className:`h-4 w-4`}),(0,U.jsx)(`span`,{children:`Workspace`})]}):null,ne?(0,U.jsxs)(`button`,{type:`button`,onClick:()=>S(!0),className:`inline-flex flex-shrink-0 items-center gap-1.5 whitespace-nowrap rounded-xl border border-emerald-200 bg-emerald-50 px-3 py-2 text-sm font-medium leading-none text-emerald-800 transition hover:bg-emerald-100 dark:border-emerald-900/70 dark:bg-emerald-950/40 dark:text-emerald-200`,children:[(0,U.jsx)(hN,{className:`h-4 w-4`}),(0,U.jsx)(`span`,{children:`TUI`})]}):null,!ee&&n?(0,U.jsx)(CJ,{availableModels:o,selectedModel:s,onSelectModel:c,selectedModelLabel:l,modelCatalogLoaded:u,modelSource:d,thinkingEnabled:f,thinkingMode:p,onSelectThinkingMode:m,compact:!0}):null,!ee&&t?(0,U.jsxs)(`span`,{className:`rounded bg-slate-50 px-2 py-1 text-xs font-mono text-slate-400 dark:bg-slate-800`,children:[`ID: `,t.slice(0,8)]}):null]})]}),n?(0,U.jsx)(OR,{open:h,onOpenChange:g,children:(0,U.jsxs)(MR,{side:`bottom`,className:`rounded-t-[1.75rem] border-slate-200 bg-white px-4 pb-[calc(var(--safe-area-bottom)+1rem)] pt-6 dark:border-slate-800 dark:bg-slate-900`,children:[(0,U.jsxs)(NR,{className:`text-left`,children:[(0,U.jsx)(FR,{children:`会话设置`}),(0,U.jsx)(IR,{className:`sr-only`,children:`调整当前会话的模型和 Workspace 操作。`})]}),(0,U.jsxs)(`div`,{className:`mt-6 flex flex-col gap-4`,children:[_?(0,U.jsxs)(`button`,{type:`button`,onClick:()=>{g(!1),v()},className:`inline-flex items-center gap-2 rounded-xl border border-slate-200 bg-slate-50 px-3 py-3 text-sm font-medium text-slate-700 transition hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-slate-700`,children:[(0,U.jsx)(KM,{className:`h-4 w-4`}),`工作区文件`]}):null,ne?(0,U.jsxs)(`button`,{type:`button`,onClick:()=>{g(!1),S(!0)},className:`inline-flex items-center gap-2 rounded-xl border border-emerald-200 bg-emerald-50 px-3 py-3 text-sm font-medium text-emerald-800 transition hover:bg-emerald-100 dark:border-emerald-900/70 dark:bg-emerald-950/40 dark:text-emerald-200`,children:[(0,U.jsx)(hN,{className:`h-4 w-4`}),`原生 TUI`]}):null,y?(0,U.jsxs)(`a`,{href:y.href,target:`_blank`,rel:`noreferrer`,title:y.title,onClick:()=>g(!1),className:`inline-flex items-center gap-2 rounded-xl border border-slate-200 bg-slate-50 px-3 py-3 text-sm font-medium text-slate-700 transition hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-slate-700`,children:[(0,U.jsx)(VM,{className:`h-4 w-4`}),y.label]}):null,ee?(0,U.jsx)(`div`,{className:`rounded-2xl border border-slate-200 bg-slate-50 px-3 py-3 text-sm leading-6 text-slate-600 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-300`,children:`当前运行时对话在原生管理台中进行;这里保留管理入口和 Workspace 文件操作。`}):(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(`div`,{className:`space-y-2`,children:[(0,U.jsx)(`div`,{className:`text-xs font-medium uppercase tracking-[0.12em] text-slate-400 dark:text-slate-500`,children:`模型`}),(0,U.jsx)(CJ,{availableModels:o,selectedModel:s,onSelectModel:c,selectedModelLabel:l,modelCatalogLoaded:u,modelSource:d,thinkingEnabled:f,thinkingMode:p,onSelectThinkingMode:m,compact:!0})]}),(0,U.jsxs)(`div`,{className:`space-y-2`,children:[(0,U.jsx)(`div`,{className:`text-xs font-medium uppercase tracking-[0.12em] text-slate-400 dark:text-slate-500`,children:`当前会话`}),(0,U.jsx)(`div`,{className:`rounded-2xl border border-slate-200 bg-slate-50 px-3 py-3 text-sm text-slate-600 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-300`,children:t?(0,U.jsx)(`span`,{className:`break-all font-mono`,children:t}):`新对话尚未创建会话 ID`})]})]})]})]})}):null,x&&te?(0,U.jsx)(b.Suspense,{fallback:null,children:(0,U.jsx)(SJ,{capability:x,open:te,sessionId:t,onClose:()=>S(!1)})}):null]})}var TJ=(0,b.lazy)(()=>J(()=>import(`./NativeTerminalPanel-DUrK0JpZ.js`).then(e=>({default:e.NativeTerminalPanel})),__vite__mapDeps([5,6]),import.meta.url));function EJ({productLabel:e=`原生运行时`,nativeManagementLink:t,nativeTerminal:n,workspaceEnabled:r,onOpenWorkspace:i}){let a=!!n?.Enabled,[o,s]=(0,b.useState)(!1);return(0,U.jsxs)(`section`,{className:`flex min-h-0 flex-1 overflow-y-auto bg-[radial-gradient(circle_at_top_left,rgba(14,165,233,0.12),transparent_34%),linear-gradient(135deg,#f8fafc_0%,#ffffff_48%,#f1f5f9_100%)] px-4 py-8 dark:bg-[radial-gradient(circle_at_top_left,rgba(14,165,233,0.16),transparent_34%),linear-gradient(135deg,#020617_0%,#0f172a_52%,#111827_100%)] sm:px-8`,children:[(0,U.jsx)(`div`,{className:`mx-auto flex w-full max-w-5xl flex-col justify-center`,children:(0,U.jsxs)(`div`,{className:`overflow-hidden rounded-[2rem] border border-slate-200/80 bg-white/90 shadow-xl shadow-slate-200/60 backdrop-blur dark:border-slate-800 dark:bg-slate-900/85 dark:shadow-black/30`,children:[(0,U.jsxs)(`div`,{className:`border-b border-slate-200/80 bg-slate-50/80 px-6 py-5 dark:border-slate-800 dark:bg-slate-950/40 sm:px-8`,children:[(0,U.jsxs)(`div`,{className:`inline-flex items-center gap-2 rounded-full border border-sky-200 bg-sky-50 px-3 py-1 text-xs font-medium text-sky-700 dark:border-sky-900/60 dark:bg-sky-950/50 dark:text-sky-300`,children:[(0,U.jsx)(pN,{className:`h-3.5 w-3.5`}),e,` native runtime`]}),(0,U.jsx)(`h1`,{className:`mt-5 text-2xl font-semibold tracking-tight text-slate-950 dark:text-slate-50 sm:text-3xl`,children:`对话请使用原生管理台`}),(0,U.jsx)(`p`,{className:`mt-3 max-w-2xl text-sm leading-6 text-slate-600 dark:text-slate-300 sm:text-base`,children:`当前运行时的对话状态由原生管理台承载。AgentEngine Hosted UI 在这里保留统一入口和 Workspace 文件管理,不重复实现运行时内部已有的复杂对话状态机。`})]}),(0,U.jsxs)(`div`,{className:`grid gap-4 p-6 md:grid-cols-3 sm:p-8`,children:[(0,U.jsxs)(`div`,{className:`rounded-3xl border border-slate-200 bg-white p-5 dark:border-slate-800 dark:bg-slate-900`,children:[(0,U.jsx)(`div`,{className:`flex h-11 w-11 items-center justify-center rounded-2xl bg-slate-950 text-white dark:bg-slate-100 dark:text-slate-950`,children:(0,U.jsx)($M,{className:`h-5 w-5`})}),(0,U.jsx)(`h2`,{className:`mt-4 text-base font-semibold text-slate-950 dark:text-slate-50`,children:`原生管理台`}),(0,U.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600 dark:text-slate-300`,children:`使用原生管理台处理对话、工具卡片、思考流、审批、中断和运行时历史,避免跨状态机不一致。`}),t?(0,U.jsxs)(`a`,{href:t.href,target:`_blank`,rel:`noreferrer`,title:t.title,className:`mt-5 inline-flex items-center gap-2 rounded-2xl bg-slate-950 px-4 py-2.5 text-sm font-medium text-white transition hover:bg-slate-800 dark:bg-slate-100 dark:text-slate-950 dark:hover:bg-white`,children:[(0,U.jsx)(VM,{className:`h-4 w-4`}),`打开`,t.label]}):(0,U.jsx)(`div`,{className:`mt-5 rounded-2xl border border-amber-200 bg-amber-50 px-4 py-3 text-sm leading-6 text-amber-800 dark:border-amber-900/60 dark:bg-amber-950/30 dark:text-amber-200`,children:`当前访问模式不开放原生管理入口。需要完整对话体验时,请使用 owner/private 链接或 CLI。`})]}),(0,U.jsxs)(`div`,{className:`rounded-3xl border border-slate-200 bg-white p-5 dark:border-slate-800 dark:bg-slate-900`,children:[(0,U.jsx)(`div`,{className:`flex h-11 w-11 items-center justify-center rounded-2xl bg-sky-100 text-sky-700 dark:bg-sky-950 dark:text-sky-300`,children:(0,U.jsx)(KM,{className:`h-5 w-5`})}),(0,U.jsx)(`h2`,{className:`mt-4 text-base font-semibold text-slate-950 dark:text-slate-50`,children:`Workspace 文件管理`}),(0,U.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600 dark:text-slate-300`,children:`文件浏览、上传、预览仍由 Hosted UI 提供,和原生管理台组合使用覆盖对话与工作区。`}),r?(0,U.jsxs)(`button`,{type:`button`,onClick:i,className:`mt-5 inline-flex items-center gap-2 rounded-2xl border border-slate-200 bg-slate-50 px-4 py-2.5 text-sm font-medium text-slate-800 transition hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-100 dark:hover:bg-slate-700`,children:[(0,U.jsx)(KM,{className:`h-4 w-4`}),`打开 Workspace`]}):(0,U.jsx)(`div`,{className:`mt-5 rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm leading-6 text-slate-500 dark:border-slate-800 dark:bg-slate-950/40 dark:text-slate-400`,children:`当前链接未开放 Workspace 文件管理。Owner 或 private 链接可使用该能力。`})]}),(0,U.jsxs)(`div`,{className:`rounded-3xl border border-slate-200 bg-white p-5 dark:border-slate-800 dark:bg-slate-900`,children:[(0,U.jsx)(`div`,{className:`flex h-11 w-11 items-center justify-center rounded-2xl bg-emerald-100 text-emerald-700 dark:bg-emerald-950 dark:text-emerald-300`,children:(0,U.jsx)(hN,{className:`h-5 w-5`})}),(0,U.jsx)(`h2`,{className:`mt-4 text-base font-semibold text-slate-950 dark:text-slate-50`,children:`原生 TUI`}),(0,U.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600 dark:text-slate-300`,children:`如果运行时暴露安全的 ks-terminal.v1 通道,可以在这里进入原生终端 UI;share 链接不会开放该入口。`}),a?(0,U.jsxs)(`button`,{type:`button`,onClick:()=>s(!0),className:`mt-5 inline-flex items-center gap-2 rounded-2xl border border-emerald-200 bg-emerald-50 px-4 py-2.5 text-sm font-medium text-emerald-800 transition hover:bg-emerald-100 dark:border-emerald-900/70 dark:bg-emerald-950/40 dark:text-emerald-200`,children:[(0,U.jsx)(hN,{className:`h-4 w-4`}),`打开 TUI`]}):(0,U.jsx)(`div`,{className:`mt-5 rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm leading-6 text-slate-500 dark:border-slate-800 dark:bg-slate-950/40 dark:text-slate-400`,children:`当前运行时未声明可用的浏览器 TUI 能力。`})]})]})]})}),n&&o?(0,U.jsx)(b.Suspense,{fallback:null,children:(0,U.jsx)(TJ,{capability:n,open:o,onClose:()=>s(!1)})}):null]})}var DJ=[],OJ=[];(()=>{let e=`lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o`.split(`,`).map(e=>e?parseInt(e,36):1);for(let t=0,n=0;t>1;if(e=OJ[r])t=r+1;else return!0;if(t==n)return!1}}function AJ(e){return e>=127462&&e<=127487}var jJ=8205;function MJ(e,t,n=!0,r=!0){return(n?NJ:PJ)(e,t,r)}function NJ(e,t,n){if(t==e.length)return t;t&&IJ(e.charCodeAt(t))&&LJ(e.charCodeAt(t-1))&&t--;let r=FJ(e,t);for(t+=RJ(r);t=0&&AJ(FJ(e,r));)n++,r-=2;if(n%2==0)break;t+=2}else break}return t}function PJ(e,t,n){for(;t>0;){let r=NJ(e,t-2,n);if(r=56320&&e<57344}function LJ(e){return e>=55296&&e<56320}function RJ(e){return e<65536?1:2}var zJ=class e{lineAt(e){if(e<0||e>this.length)throw RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,n){[e,t]=YJ(this,e,t);let r=[];return this.decompose(0,e,r,2),n.length&&n.decompose(0,n.length,r,3),this.decompose(t,this.length,r,1),VJ.from(r,this.length-(t-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=YJ(this,e,t);let n=[];return this.decompose(e,t,n,0),VJ.from(n,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),r=new GJ(this),i=new GJ(e);for(let e=t,a=t;;){if(r.next(e),i.next(e),e=0,r.lineBreak!=i.lineBreak||r.done!=i.done||r.value!=i.value)return!1;if(a+=r.value.length,r.done||a>=n)return!0}}iter(e=1){return new GJ(this,e)}iterRange(e,t=this.length){return new KJ(this,e,t)}iterLines(e,t){let n;if(e==null)n=this.iter();else{t??=this.lines+1;let r=this.line(e).from;n=this.iterRange(r,Math.max(r,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new qJ(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(t){if(t.length==0)throw RangeError(`A document must have at least one line`);return t.length==1&&!t[0]?e.empty:t.length<=32?new BJ(t):VJ.from(BJ.split(t,[]))}},BJ=class e extends zJ{constructor(e,t=HJ(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,n,r){for(let i=0;;i++){let a=this.text[i],o=r+a.length;if((t?n:o)>=e)return new JJ(r,o,n,a);r=o+1,n++}}decompose(t,n,r,i){let a=t<=0&&n>=this.length?this:new e(WJ(this.text,t,n),Math.min(n,this.length)-Math.max(0,t));if(i&1){let t=r.pop(),n=UJ(a.text,t.text.slice(),0,a.length);if(n.length<=32)r.push(new e(n,t.length+a.length));else{let t=n.length>>1;r.push(new e(n.slice(0,t)),new e(n.slice(t)))}}else r.push(a)}replace(t,n,r){if(!(r instanceof e))return super.replace(t,n,r);[t,n]=YJ(this,t,n);let i=UJ(this.text,UJ(r.text,WJ(this.text,0,t)),n),a=this.length+r.length-(n-t);return i.length<=32?new e(i,a):VJ.from(e.split(i,[]),a)}sliceString(e,t=this.length,n=` -`){[e,t]=YJ(this,e,t);let r=``;for(let i=0,a=0;i<=t&&ae&&a&&(r+=n),ei&&(r+=o.slice(Math.max(0,e-i),t-i)),i=s+1}return r}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(t,n){let r=[],i=-1;for(let a of t)r.push(a),i+=a.length+1,r.length==32&&(n.push(new e(r,i)),r=[],i=-1);return i>-1&&n.push(new e(r,i)),n}},VJ=class e extends zJ{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let t of e)this.lines+=t.lines}lineInner(e,t,n,r){for(let i=0;;i++){let a=this.children[i],o=r+a.length,s=n+a.lines-1;if((t?s:o)>=e)return a.lineInner(e,t,n,r);r=o+1,n=s+1}}decompose(e,t,n,r){for(let i=0,a=0;a<=t&&i=a){let i=r&(a<=e|(s>=t?2:0));a>=e&&s<=t&&!i?n.push(o):o.decompose(e-a,t-a,n,i)}a=s+1}}replace(t,n,r){if([t,n]=YJ(this,t,n),r.lines=a&&n<=s){let c=o.replace(t-a,n-a,r),l=this.lines-o.lines+c.lines;if(c.lines>4&&c.lines>l>>6){let a=this.children.slice();return a[i]=c,new e(a,this.length-(n-t)+r.length)}return super.replace(a,s,c)}a=s+1}return super.replace(t,n,r)}sliceString(e,t=this.length,n=` -`){[e,t]=YJ(this,e,t);let r=``;for(let i=0,a=0;ie&&i&&(r+=n),ea&&(r+=o.sliceString(e-a,t-a,n)),a=s+1}return r}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(t,n){if(!(t instanceof e))return 0;let r=0,[i,a,o,s]=n>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;i+=n,a+=n){if(i==o||a==s)return r;let e=this.children[i],c=t.children[a];if(e!=c)return r+e.scanIdentical(c,n);r+=e.length+1}}static from(t,n=t.reduce((e,t)=>e+t.length+1,-1)){let r=0;for(let e of t)r+=e.lines;if(r<32){let e=[];for(let n of t)n.flatten(e);return new BJ(e,n)}let i=Math.max(32,r>>5),a=i<<1,o=i>>1,s=[],c=0,l=-1,u=[];function d(t){let n;if(t.lines>a&&t instanceof e)for(let e of t.children)d(e);else t.lines>o&&(c>o||!c)?(f(),s.push(t)):t instanceof BJ&&c&&(n=u[u.length-1])instanceof BJ&&t.lines+n.lines<=32?(c+=t.lines,l+=t.length+1,u[u.length-1]=new BJ(n.text.concat(t.text),n.length+1+t.length)):(c+t.lines>i&&f(),c+=t.lines,l+=t.length+1,u.push(t))}function f(){c!=0&&(s.push(u.length==1?u[0]:e.from(u,l)),l=-1,c=u.length=0)}for(let e of t)d(e);return f(),s.length==1?s[0]:new e(s,n)}};zJ.empty=new BJ([``],0);function HJ(e){let t=-1;for(let n of e)t+=n.length+1;return t}function UJ(e,t,n=0,r=1e9){for(let i=0,a=0,o=!0;a=n&&(c>r&&(s=s.slice(0,r-i)),i0?1:(e instanceof BJ?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let n=this.nodes.length-1,r=this.nodes[n],i=this.offsets[n],a=i>>1,o=r instanceof BJ?r.text.length:r.children.length;if(a==(t>0?o:0)){if(n==0)return this.done=!0,this.value=``,this;t>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop()}else if((i&1)==(t>0?0:1)){if(this.offsets[n]+=t,e==0)return this.lineBreak=!0,this.value=` -`,this;e--}else if(r instanceof BJ){let i=r.text[a+(t<0?-1:0)];if(this.offsets[n]+=t,i.length>Math.max(0,e))return this.value=e==0?i:t>0?i.slice(e):i.slice(0,i.length-e),this;e-=i.length}else{let i=r.children[a+(t<0?-1:0)];e>i.length?(e-=i.length,this.offsets[n]+=t):(t<0&&this.offsets[n]--,this.nodes.push(i),this.offsets.push(t>0?1:(i instanceof BJ?i.text.length:i.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},KJ=class{constructor(e,t,n){this.value=``,this.done=!1,this.cursor=new GJ(e,t>n?-1:1),this.pos=t>n?e.length:0,this.from=Math.min(t,n),this.to=Math.max(t,n)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value=``,this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let n=t<0?this.pos-this.from:this.to-this.pos;e>n&&(e=n),n-=e;let{value:r}=this.cursor.next(e);return this.pos+=(r.length+e)*t,this.value=r.length<=n?r:t<0?r.slice(r.length-n):r.slice(0,n),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=``}},qJ=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value=``,this.done=!1}next(e=0){let{done:t,lineBreak:n,value:r}=this.inner.next(e);return t&&this.afterBreak?(this.value=``,this.afterBreak=!1):t?(this.done=!0,this.value=``):n?this.afterBreak?this.value=``:(this.afterBreak=!0,this.next()):(this.value=r,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<`u`&&(zJ.prototype[Symbol.iterator]=function(){return this.iter()},GJ.prototype[Symbol.iterator]=KJ.prototype[Symbol.iterator]=qJ.prototype[Symbol.iterator]=function(){return this});var JJ=class{constructor(e,t,n,r){this.from=e,this.to=t,this.number=n,this.text=r}get length(){return this.to-this.from}};function YJ(e,t,n){return t=Math.max(0,Math.min(e.length,t)),[t,Math.max(t,Math.min(e.length,n))]}function XJ(e,t,n=!0,r=!0){return MJ(e,t,n,r)}function ZJ(e){return e>=56320&&e<57344}function QJ(e){return e>=55296&&e<56320}function $J(e,t){let n=e.charCodeAt(t);if(!QJ(n)||t+1==e.length)return n;let r=e.charCodeAt(t+1);return ZJ(r)?(n-55296<<10)+(r-56320)+65536:n}function eY(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode((e>>10)+55296,(e&1023)+56320))}function tY(e){return e<65536?1:2}var nY=/\r\n?|\n/,rY=(function(e){return e[e.Simple=0]=`Simple`,e[e.TrackDel=1]=`TrackDel`,e[e.TrackBefore=2]=`TrackBefore`,e[e.TrackAfter=3]=`TrackAfter`,e})(rY||={}),iY=class e{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;te)return i+(e-r);i+=o}else{if(n!=rY.Simple&&c>=e&&(n==rY.TrackDel&&re||n==rY.TrackBefore&&re))return null;if(c>e||c==e&&t<0&&!o)return e==r||t<0?i:i+s;i+=s}r=c}if(e>r)throw RangeError(`Position ${e} is out of range for changeset of length ${r}`);return i}touchesRange(e,t=e){for(let n=0,r=0;n=0&&r<=t&&o>=e)return rt?`cover`:!0;r=o}return!1}toString(){let e=``;for(let t=0;t=0?`:`+r:``)}return e}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!=`number`))throw RangeError(`Invalid JSON representation of ChangeDesc`);return new e(t)}static create(t){return new e(t)}},aY=class e extends iY{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw RangeError(`Applying change set to a document with the wrong length`);return cY(this,(t,n,r,i,a)=>e=e.replace(r,r+(n-t),a),!1),e}mapDesc(e,t=!1){return lY(this,e,t,!0)}invert(t){let n=this.sections.slice(),r=[];for(let e=0,i=0;e=0){n[e]=o,n[e+1]=a;let s=e>>1;for(;r.length0&&sY(r,n,a.text),a.forward(e),o+=e}let c=t[e++];for(;o>1].toJSON()))}return e}static of(t,n,r){let i=[],a=[],o=0,s=null;function c(t=!1){if(!t&&!i.length)return;os||e<0||s>n)throw RangeError(`Invalid change range ${e} to ${s} (in doc of length ${n})`);let u=l?typeof l==`string`?zJ.of(l.split(r||nY)):l:zJ.empty,d=u.length;if(e==s&&d==0)return;eo&&oY(i,e-o,-1),oY(i,s-e,d),sY(a,i,u),o=s}}return l(t),c(!s),s}static empty(t){return new e(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw RangeError(`Invalid JSON representation of ChangeSet`);let n=[],r=[];for(let e=0;et&&typeof e!=`string`))throw RangeError(`Invalid JSON representation of ChangeSet`);else if(i.length==1)n.push(i[0],0);else{for(;r.length=0&&n<=0&&n==e[i+1]?e[i]+=t:i>=0&&t==0&&e[i]==0?e[i+1]+=n:r?(e[i]+=t,e[i+1]+=n):e.push(t,n)}function sY(e,t,n){if(n.length==0)return;let r=t.length-2>>1;if(r>1])),!(n||o==e.sections.length||e.sections[o+1]<0);)s=e.sections[o++],c=e.sections[o++];t(i,l,a,u,d),i=l,a=u}}}function lY(e,t,n,r=!1){let i=[],a=r?[]:null,o=new dY(e),s=new dY(t);for(let e=-1;;)if(o.done&&s.len||s.done&&o.len)throw Error(`Mismatched change set lengths`);else if(o.ins==-1&&s.ins==-1){let e=Math.min(o.len,s.len);oY(i,e,-1),o.forward(e),s.forward(e)}else if(s.ins>=0&&(o.ins<0||e==o.i||o.off==0&&(s.len=0&&e=0){let t=0,n=o.len;for(;n;)if(s.ins==-1){let e=Math.min(n,s.len);t+=e,n-=e,s.forward(e)}else if(s.ins==0&&s.lent||o.ins>=0&&o.len>t)&&(e||r.length>n),a.forward2(t),o.forward(t)}}var dY=class{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return t>=e.length?zJ.empty:e[t]}textBit(e){let{inserted:t}=this.set,n=this.i-2>>1;return n>=t.length&&!e?zJ.empty:t[n].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},fY=class e{constructor(e,t,n){this.from=e,this.to=t,this.flags=n}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(t,n=-1){let r,i;return this.empty?r=i=t.mapPos(this.from,n):(r=t.mapPos(this.from,1),i=t.mapPos(this.to,-1)),r==this.from&&i==this.to?this:new e(r,i,this.flags)}extend(e,t=e,n=0){if(e<=this.anchor&&t>=this.anchor)return Y.range(e,t,void 0,void 0,n);let r=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return Y.range(this.anchor,r,void 0,void 0,n)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!=`number`||typeof e.head!=`number`)throw RangeError(`Invalid JSON representation for SelectionRange`);return Y.range(e.anchor,e.head)}static create(t,n,r){return new e(t,n,r)}},Y=class e{constructor(e,t){this.ranges=e,this.mainIndex=t}map(t,n=-1){return t.empty?this:e.create(this.ranges.map(e=>e.map(t,n)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let n=0;ne.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!=`number`||t.main>=t.ranges.length)throw RangeError(`Invalid JSON representation for EditorSelection`);return new e(t.ranges.map(e=>fY.fromJSON(e)),t.main)}static single(t,n=t){return new e([e.range(t,n)],0)}static create(t,n=0){if(t.length==0)throw RangeError(`A selection needs at least one range`);for(let r=0,i=0;ie.from-t.from),n=t.indexOf(r);for(let r=1;ri.head?e.range(s,o):e.range(o,s))}}return new e(t,n)}};function pY(e,t){for(let n of e.ranges)if(n.to>t)throw RangeError(`Selection points outside of document`)}var mY=0,hY=class e{constructor(e,t,n,r,i){this.combine=e,this.compareInput=t,this.compare=n,this.isStatic=r,this.id=mY++,this.default=e([]),this.extensions=typeof i==`function`?i(this):i}get reader(){return this}static define(t={}){return new e(t.combine||(e=>e),t.compareInput||((e,t)=>e===t),t.compare||(t.combine?(e,t)=>e===t:gY),!!t.static,t.enables)}of(e){return new _Y([],this,0,e)}compute(e,t){if(this.isStatic)throw Error(`Can't compute a static facet`);return new _Y(e,this,1,t)}computeN(e,t){if(this.isStatic)throw Error(`Can't compute a static facet`);return new _Y(e,this,2,t)}from(e,t){return t||=e=>e,this.compute([e],n=>t(n.field(e)))}};function gY(e,t){return e==t||e.length==t.length&&e.every((e,n)=>e===t[n])}var _Y=class{constructor(e,t,n,r){this.dependencies=e,this.facet=t,this.type=n,this.value=r,this.id=mY++}dynamicSlot(e){let t=this.value,n=this.facet.compareInput,r=this.id,i=e[r]>>1,a=this.type==2,o=!1,s=!1,c=[];for(let t of this.dependencies)t==`doc`?o=!0:t==`selection`?s=!0:(e[t.id]??1)&1||c.push(e[t.id]);return{create(e){return e.values[i]=t(e),1},update(e,r){if(o&&r.docChanged||s&&(r.docChanged||r.selection)||yY(e,c)){let r=t(e);if(a?!vY(r,e.values[i],n):!n(r,e.values[i]))return e.values[i]=r,1}return 0},reconfigure:(e,o)=>{let s,c=o.config.address[r];if(c!=null){let r=MY(o,c);if(this.dependencies.every(t=>t instanceof hY?o.facet(t)===e.facet(t):t instanceof SY?o.field(t,!1)==e.field(t,!1):!0)||(a?vY(s=t(e),r,n):n(s=t(e),r)))return e.values[i]=r,0}else s=t(e);return e.values[i]=s,1}}}};function vY(e,t,n){if(e.length!=t.length)return!1;for(let r=0;re[t.id]),i=n.map(e=>e.type),a=r.filter(e=>!(e&1)),o=e[t.id]>>1;function s(e){let n=[];for(let t=0;te===t),t);return t.provide&&(n.provides=t.provide(n)),n}create(e){return(e.facet(xY).find(e=>e.field==this)?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:e=>(e.values[t]=this.create(e),1),update:(e,n)=>{let r=e.values[t],i=this.updateF(r,n);return this.compareF(r,i)?0:(e.values[t]=i,1)},reconfigure:(e,n)=>{let r=e.facet(xY),i=n.facet(xY),a;return(a=r.find(e=>e.field==this))&&a!=i.find(e=>e.field==this)?(e.values[t]=a.create(e),1):n.config.address[this.id]==null?(e.values[t]=this.create(e),1):(e.values[t]=n.field(this),0)}}}init(e){return[this,xY.of({field:this,create:e})]}get extension(){return this}},CY={lowest:4,low:3,default:2,high:1,highest:0};function wY(e){return t=>new EY(t,e)}var TY={highest:wY(CY.highest),high:wY(CY.high),default:wY(CY.default),low:wY(CY.low),lowest:wY(CY.lowest)},EY=class{constructor(e,t){this.inner=e,this.prec=t}},DY=class e{of(e){return new OY(this,e)}reconfigure(t){return e.reconfigure.of({compartment:this,extension:t})}get(e){return e.config.compartments.get(this)}},OY=class{constructor(e,t){this.compartment=e,this.inner=t}},kY=class e{constructor(e,t,n,r,i,a){for(this.base=e,this.compartments=t,this.dynamicSlots=n,this.address=r,this.staticValues=i,this.facets=a,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,n,r){let i=[],a=Object.create(null),o=new Map;for(let e of AY(t,n,o))e instanceof SY?i.push(e):(a[e.facet.id]||(a[e.facet.id]=[])).push(e);let s=Object.create(null),c=[],l=[];for(let e of i)s[e.id]=l.length<<1,l.push(t=>e.slot(t));let u=r?.config.facets;for(let e in a){let t=a[e],n=t[0].facet,i=u&&u[e]||[];if(t.every(e=>e.type==0))if(s[n.id]=c.length<<1|1,gY(i,t))c.push(r.facet(n));else{let e=n.combine(t.map(e=>e.value));c.push(r&&n.compare(e,r.facet(n))?r.facet(n):e)}else{for(let e of t)e.type==0?(s[e.id]=c.length<<1|1,c.push(e.value)):(s[e.id]=l.length<<1,l.push(t=>e.dynamicSlot(t)));s[n.id]=l.length<<1,l.push(e=>bY(e,n,t))}}return new e(t,o,l.map(e=>e(s)),s,c,a)}};function AY(e,t,n){let r=[[],[],[],[],[]],i=new Map;function a(e,o){let s=i.get(e);if(s!=null){if(s<=o)return;let t=r[s].indexOf(e);t>-1&&r[s].splice(t,1),e instanceof OY&&n.delete(e.compartment)}if(i.set(e,o),Array.isArray(e))for(let t of e)a(t,o);else if(e instanceof OY){if(n.has(e.compartment))throw RangeError(`Duplicate use of compartment in extensions`);let r=t.get(e.compartment)||e.inner;n.set(e.compartment,r),a(r,o)}else if(e instanceof EY)a(e.inner,e.prec);else if(e instanceof SY)r[o].push(e),e.provides&&a(e.provides,o);else if(e instanceof _Y)r[o].push(e),e.facet.extensions&&a(e.facet.extensions,CY.default);else{let t=e.extension;if(!t)throw Error(`Unrecognized extension value in extension set (${e}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);a(t,o)}}return a(e,CY.default),r.reduce((e,t)=>e.concat(t))}function jY(e,t){if(t&1)return 2;let n=t>>1,r=e.status[n];if(r==4)throw Error(`Cyclic dependency between fields and/or facets`);if(r&2)return r;e.status[n]=4;let i=e.computeSlot(e,e.config.dynamicSlots[n]);return e.status[n]=2|i}function MY(e,t){return t&1?e.config.staticValues[t>>1]:e.values[t>>1]}var NY=hY.define(),PY=hY.define({combine:e=>e.some(e=>e),static:!0}),FY=hY.define({combine:e=>e.length?e[0]:void 0,static:!0}),IY=hY.define(),LY=hY.define(),RY=hY.define(),zY=hY.define({combine:e=>e.length?e[0]:!1}),BY=class{constructor(e,t){this.type=e,this.value=t}static define(){return new VY}},VY=class{of(e){return new BY(this,e)}},HY=class{constructor(e){this.map=e}of(e){return new UY(this,e)}},UY=class e{constructor(e,t){this.type=e,this.value=t}map(t){let n=this.type.map(this.value,t);return n===void 0?void 0:n==this.value?this:new e(this.type,n)}is(e){return this.type==e}static define(e={}){return new HY(e.map||(e=>e))}static mapEffects(e,t){if(!e.length)return e;let n=[];for(let r of e){let e=r.map(t);e&&n.push(e)}return n}};UY.reconfigure=UY.define(),UY.appendConfig=UY.define();var WY=class e{constructor(t,n,r,i,a,o){this.startState=t,this.changes=n,this.selection=r,this.effects=i,this.annotations=a,this.scrollIntoView=o,this._doc=null,this._state=null,r&&pY(r,n.newLength),a.some(t=>t.type==e.time)||(this.annotations=a.concat(e.time.of(Date.now())))}static create(t,n,r,i,a,o){return new e(t,n,r,i,a,o)}get newDoc(){return this._doc||=this.changes.apply(this.startState.doc)}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let n=this.annotation(e.userEvent);return!!(n&&(n==t||n.length>t.length&&n.slice(0,t.length)==t&&n[t.length]==`.`))}};WY.time=BY.define(),WY.userEvent=BY.define(),WY.addToHistory=BY.define(),WY.remote=BY.define();function GY(e,t){let n=[];for(let r=0,i=0;;){let a,o;if(r=e[r]))a=e[r++],o=e[r++];else if(i=0;n--){let i=r[n](e);e=i instanceof WY?i:Array.isArray(i)&&i.length==1&&i[0]instanceof WY?i[0]:JY(t,QY(i),!1)}return e}function XY(e){let t=e.startState,n=t.facet(RY),r=e;for(let i=n.length-1;i>=0;i--){let a=n[i](e);a&&Object.keys(a).length&&(r=KY(r,qY(t,a,e.changes.newLength),!0))}return r==e?e:WY.create(t,e.changes,e.selection,r.effects,r.annotations,r.scrollIntoView)}var ZY=[];function QY(e){return e==null?ZY:Array.isArray(e)?e:[e]}var $Y=(function(e){return e[e.Word=0]=`Word`,e[e.Space=1]=`Space`,e[e.Other=2]=`Other`,e})($Y||={}),eX=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,tX;try{tX=RegExp(`[\\p{Alphabetic}\\p{Number}_]`,`u`)}catch{}function nX(e){if(tX)return tX.test(e);for(let t=0;t`€`&&(n.toUpperCase()!=n.toLowerCase()||eX.test(n)))return!0}return!1}function rX(e){return t=>{if(!/\S/.test(t))return $Y.Space;if(nX(t))return $Y.Word;for(let n=0;n-1)return $Y.Word;return $Y.Other}}var iX=class e{constructor(e,t,n,r,i,a){this.config=e,this.doc=t,this.selection=n,this.values=r,this.status=e.statusTemplate.slice(),this.computeSlot=i,a&&(a._state=this);for(let e=0;ei.set(t,e)),null),i.set(e.value.compartment,e.value.extension)):e.is(UY.reconfigure)?(n=null,r=e.value):e.is(UY.appendConfig)&&(n=null,r=QY(r).concat(e.value));let a;n?a=t.startState.values.slice():(n=kY.resolve(r,i,this),a=new e(n,this.doc,this.selection,n.dynamicSlots.map(()=>null),(e,t)=>t.reconfigure(e,this),null).values);let o=t.startState.facet(PY)?t.newSelection:t.newSelection.asSingle();new e(n,t.newDoc,o,a,(e,n)=>n.update(e,t),t)}replaceSelection(e){return typeof e==`string`&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:Y.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,n=e(t.ranges[0]),r=this.changes(n.changes),i=[n.range],a=QY(n.effects);for(let n=1;nn.spec.fromJSON(a,e)))}}return e.create({doc:t.doc,selection:Y.fromJSON(t.selection),extensions:n.extensions?i.concat([n.extensions]):i})}static create(t={}){let n=kY.resolve(t.extensions||[],new Map),r=t.doc instanceof zJ?t.doc:zJ.of((t.doc||``).split(n.staticFacet(e.lineSeparator)||nY)),i=t.selection?t.selection instanceof Y?t.selection:Y.single(t.selection.anchor,t.selection.head):Y.single(0);return pY(i,r.length),n.staticFacet(PY)||(i=i.asSingle()),new e(n,r,i,n.dynamicSlots.map(()=>null),(e,t)=>t.create(e),null)}get tabSize(){return this.facet(e.tabSize)}get lineBreak(){return this.facet(e.lineSeparator)||` -`}get readOnly(){return this.facet(zY)}phrase(t,...n){for(let n of this.facet(e.phrases))if(Object.prototype.hasOwnProperty.call(n,t)){t=n[t];break}return n.length&&(t=t.replace(/\$(\$|\d*)/g,(e,t)=>{if(t==`$`)return`$`;let r=+(t||1);return!r||r>n.length?e:n[r-1]})),t}languageDataAt(e,t,n=-1){let r=[];for(let i of this.facet(NY))for(let a of i(this,t,n))Object.prototype.hasOwnProperty.call(a,e)&&r.push(a[e]);return r}charCategorizer(e){let t=this.languageDataAt(`wordChars`,e);return rX(t.length?t[0]:``)}wordAt(e){let{text:t,from:n,length:r}=this.doc.lineAt(e),i=this.charCategorizer(e),a=e-n,o=e-n;for(;a>0;){let e=XJ(t,a,!1);if(i(t.slice(e,a))!=$Y.Word)break;a=e}for(;oe.length?e[0]:4}),iX.lineSeparator=FY,iX.readOnly=zY,iX.phrases=hY.define({compare(e,t){let n=Object.keys(e),r=Object.keys(t);return n.length==r.length&&n.every(n=>e[n]==t[n])}}),iX.languageData=NY,iX.changeFilter=IY,iX.transactionFilter=LY,iX.transactionExtender=RY,DY.reconfigure=UY.define();function aX(e,t,n={}){let r={};for(let t of e)for(let e of Object.keys(t)){let i=t[e],a=r[e];if(a===void 0)r[e]=i;else if(!(a===i||i===void 0))if(Object.hasOwnProperty.call(n,e))r[e]=n[e](a,i);else throw Error(`Config merge conflict for field `+e)}for(let e in t)r[e]===void 0&&(r[e]=t[e]);return r}var oX=class{eq(e){return this==e}range(e,t=e){return cX.create(e,t,this)}};oX.prototype.startSide=oX.prototype.endSide=0,oX.prototype.point=!1,oX.prototype.mapMode=rY.TrackDel;function sX(e,t){return e==t||e.constructor==t.constructor&&e.eq(t)}var cX=class e{constructor(e,t,n){this.from=e,this.to=t,this.value=n}static create(t,n,r){return new e(t,n,r)}};function lX(e,t){return e.from-t.from||e.value.startSide-t.value.startSide}var uX=class e{constructor(e,t,n,r){this.from=e,this.to=t,this.value=n,this.maxPoint=r}get length(){return this.to[this.to.length-1]}findIndex(e,t,n,r=0){let i=n?this.to:this.from;for(let a=r,o=i.length;;){if(a==o)return a;let r=a+o>>1,s=i[r]-e||(n?this.value[r].endSide:this.value[r].startSide)-t;if(r==a)return s>=0?a:o;s>=0?o=r:a=r+1}}between(e,t,n,r){for(let i=this.findIndex(t,-1e9,!0),a=this.findIndex(n,1e9,!1,i);if||d==f&&c.startSide>0&&c.endSide<=0)continue;(f-d||c.endSide-c.startSide)<0||(o<0&&(o=d),c.point&&(s=Math.max(s,f-d)),r.push(c),i.push(d-o),a.push(f-o))}return{mapped:r.length?new e(i,a,r,s):null,pos:o}}},dX=class e{constructor(e,t,n,r){this.chunkPos=e,this.chunk=t,this.nextLayer=n,this.maxPoint=r}static create(t,n,r,i){return new e(t,n,r,i)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(t){let{add:n=[],sort:r=!1,filterFrom:i=0,filterTo:a=this.length}=t,o=t.filter;if(n.length==0&&!o)return this;if(r&&(n=n.slice().sort(lX)),this.isEmpty)return n.length?e.of(n):this;let s=new hX(this,null,-1).goto(0),c=0,l=[],u=new pX;for(;s.value||c=0){let e=n[c++];u.addInner(e.from,e.to,e.value)||l.push(e)}else s.rangeIndex==1&&s.chunkIndexthis.chunkEnd(s.chunkIndex)||as.to||a=i&&e<=i+a.length&&a.between(i,e-i,t-i,n)===!1)return}this.nextLayer.between(e,t,n)}}iter(e=0){return gX.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return gX.from(e).goto(t)}static compare(e,t,n,r,i=-1){let a=e.filter(e=>e.maxPoint>0||!e.isEmpty&&e.maxPoint>=i),o=t.filter(e=>e.maxPoint>0||!e.isEmpty&&e.maxPoint>=i),s=mX(a,o,n),c=new vX(a,s,i),l=new vX(o,s,i);n.iterGaps((e,t,n)=>yX(c,e,l,t,n,r)),n.empty&&n.length==0&&yX(c,0,l,0,0,r)}static eq(e,t,n=0,r){r??=999999999;let i=e.filter(e=>!e.isEmpty&&t.indexOf(e)<0),a=t.filter(t=>!t.isEmpty&&e.indexOf(t)<0);if(i.length!=a.length)return!1;if(!i.length)return!0;let o=mX(i,a),s=new vX(i,o,0).goto(n),c=new vX(a,o,0).goto(n);for(;;){if(s.to!=c.to||!bX(s.active,c.active)||s.point&&(!c.point||!sX(s.point,c.point)))return!1;if(s.to>r)return!0;s.next(),c.next()}}static spans(e,t,n,r,i=-1){let a=new vX(e,null,i).goto(t),o=t,s=a.openStart;for(;;){let e=Math.min(a.to,n);if(a.point){let n=a.activeForPoint(a.to),i=a.pointFromo&&(r.span(o,e,a.active,s),s=a.openEnd(e));if(a.to>n)return s+(a.point&&a.to>n?1:0);o=a.to,a.next()}}static of(e,t=!1){let n=new pX;for(let r of e instanceof cX?[e]:t?fX(e):e)n.add(r.from,r.to,r.value);return n.finish()}static join(t){if(!t.length)return e.empty;let n=t[t.length-1];for(let r=t.length-2;r>=0;r--)for(let i=t[r];i!=e.empty;i=i.nextLayer)n=new e(i.chunkPos,i.chunk,n,Math.max(i.maxPoint,n.maxPoint));return n}};dX.empty=new dX([],[],null,-1);function fX(e){if(e.length>1)for(let t=e[0],n=1;n0)return e.slice().sort(lX);t=r}return e}dX.empty.nextLayer=dX.empty;var pX=class e{finishChunk(e){this.chunks.push(new uX(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(t,n,r){this.addInner(t,n,r)||(this.nextLayer||=new e).add(t,n,r)}addInner(e,t,n){let r=e-this.lastTo||n.startSide-this.last.endSide;if(r<=0&&(e-this.lastFrom||n.startSide-this.last.startSide)<0)throw Error("Ranges must be added sorted by `from` position and `startSide`");return r<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=n,this.lastFrom=e,this.lastTo=t,this.value.push(n),n.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let n=t.value.length-1;return this.last=t.value[n],this.lastFrom=t.from[n]+e,this.lastTo=t.to[n]+e,!0}finish(){return this.finishInner(dX.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=dX.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}};function mX(e,t,n){let r=new Map;for(let t of e)for(let e=0;e=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=r&&i.push(new hX(a,n,r,e));return i.length==1?i[0]:new e(i)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let n of this.heap)n.goto(e,t);for(let e=this.heap.length>>1;e>=0;e--)_X(this.heap,e);return this.next(),this}forward(e,t){for(let n of this.heap)n.forward(e,t);for(let e=this.heap.length>>1;e>=0;e--)_X(this.heap,e);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),_X(this.heap,0)}}};function _X(e,t){for(let n=e[t];;){let r=(t<<1)+1;if(r>=e.length)break;let i=e[r];if(r+1=0&&(i=e[r+1],r++),n.compare(i)<0)break;e[r]=n,e[t]=i,t=r}}var vX=class{constructor(e,t,n){this.minPoint=n,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=gX.from(e,t,n)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){xX(this.active,e),xX(this.activeTo,e),xX(this.activeRank,e),this.minActive=CX(this.active,this.activeTo)}addActive(e){let t=0,{value:n,to:r,rank:i}=this.cursor;for(;t0;)t++;SX(this.active,t,n),SX(this.activeTo,t,r),SX(this.activeRank,t,i),e&&SX(e,t,this.cursor.from),this.minActive=CX(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let n=this.openStart<0?[]:null;for(;;){let r=this.minActive;if(r>-1&&(this.activeTo[r]-this.cursor.from||this.active[r].endSide-this.cursor.startSide)<0){if(this.activeTo[r]>e){this.to=this.activeTo[r],this.endSide=this.active[r].endSide;break}this.removeActive(r),n&&xX(n,r)}else if(!this.cursor.value){this.to=this.endSide=1e9;break}else if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let e=this.cursor.value;if(!e.point)this.addActive(n),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from=0&&n[t]=0&&!(this.activeRank[n]e||this.activeTo[n]==e&&this.active[n].endSide>=this.point.endSide)&&t.push(this.active[n]);return t.reverse()}openEnd(e){let t=0;for(let n=this.activeTo.length-1;n>=0&&this.activeTo[n]>e;n--)t++;return t}};function yX(e,t,n,r,i,a){e.goto(t),n.goto(r);let o=r+i,s=r,c=r-t,l=!!a.boundChange;for(let t=!1;;){let r=e.to+c-n.to,i=r||e.endSide-n.endSide,u=i<0?e.to+c:n.to,d=Math.min(u,o);if(e.point||n.point?(e.point&&n.point&&sX(e.point,n.point)&&bX(e.activeForPoint(e.to),n.activeForPoint(n.to))||a.comparePoint(s,d,e.point,n.point),t=!1):(t&&a.boundChange(s),d>s&&!bX(e.active,n.active)&&a.compareRange(s,d,e.active,n.active),l&&do)break;s=u,i<=0&&e.next(),i>=0&&n.next()}}function bX(e,t){if(e.length!=t.length)return!1;for(let n=0;n=t;n--)e[n+1]=e[n];e[t]=n}function CX(e,t){let n=-1,r=1e9;for(let i=0;i=t)return r;if(r==e.length)break;i+=e.charCodeAt(r)==9?n-i%n:1,r=XJ(e,r)}return r===!0?-1:e.length}for(var EX=`ͼ`,DX=typeof Symbol>`u`?`__ͼ`:Symbol.for(EX),OX=typeof Symbol>`u`?`__styleSet`+Math.floor(Math.random()*1e8):Symbol(`styleSet`),kX=typeof globalThis<`u`?globalThis:typeof window<`u`?window:{},AX=class{constructor(e,t){this.rules=[];let{finish:n}=t||{};function r(e){return/^@/.test(e)?[e]:e.split(/,\s*/)}function i(e,t,a,o){let s=[],c=/^@(\w+)\b/.exec(e[0]),l=c&&c[1]==`keyframes`;if(c&&t==null)return a.push(e[0]+`;`);for(let n in t){let o=t[n];if(/&/.test(n))i(n.split(/,\s*/).map(t=>e.map(e=>t.replace(/&/,e))).reduce((e,t)=>e.concat(t)),o,a);else if(o&&typeof o==`object`){if(!c)throw RangeError(`The value of a property (`+n+`) should be a primitive value.`);i(r(n),o,s,l)}else o!=null&&s.push(n.replace(/_.*/,``).replace(/[A-Z]/g,e=>`-`+e.toLowerCase())+`: `+o+`;`)}(s.length||l)&&a.push((n&&!c&&!o?e.map(n):e).join(`, `)+` {`+s.join(` `)+`}`)}for(let t in e)i(r(t),e[t],this.rules)}getRules(){return this.rules.join(` -`)}static newName(){let e=kX[DX]||1;return kX[DX]=e+1,EX+e.toString(36)}static mount(e,t,n){let r=e[OX],i=n&&n.nonce;r?i&&r.setNonce(i):r=new MX(e,i),r.mount(Array.isArray(t)?t:[t],e)}},jX=new Map,MX=class{constructor(e,t){let n=e.ownerDocument||e,r=n.defaultView;if(!e.head&&e.adoptedStyleSheets&&r.CSSStyleSheet){let t=jX.get(n);if(t)return e[OX]=t;this.sheet=new r.CSSStyleSheet,jX.set(n,this)}else this.styleTag=n.createElement(`style`),t&&this.styleTag.setAttribute(`nonce`,t);this.modules=[],e[OX]=this}mount(e,t){let n=this.sheet,r=0,i=0;for(let t=0;t-1&&(this.modules.splice(o,1),i--,o=-1),o==-1){if(this.modules.splice(i++,0,a),n)for(let e=0;e`,191:`?`,192:`~`,219:`{`,220:`|`,221:`}`,222:`"`},FX=typeof navigator<`u`&&/Mac/.test(navigator.platform),IX=typeof navigator<`u`&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),LX=0;LX<10;LX++)NX[48+LX]=NX[96+LX]=String(LX);for(var LX=1;LX<=24;LX++)NX[LX+111]=`F`+LX;for(var LX=65;LX<=90;LX++)NX[LX]=String.fromCharCode(LX+32),PX[LX]=String.fromCharCode(LX);for(var RX in NX)PX.hasOwnProperty(RX)||(PX[RX]=NX[RX]);function zX(e){var t=!(FX&&e.metaKey&&e.shiftKey&&!e.ctrlKey&&!e.altKey||IX&&e.shiftKey&&e.key&&e.key.length==1||e.key==`Unidentified`)&&e.key||(e.shiftKey?PX:NX)[e.keyCode]||e.key||`Unidentified`;return t==`Esc`&&(t=`Escape`),t==`Del`&&(t=`Delete`),t==`Left`&&(t=`ArrowLeft`),t==`Up`&&(t=`ArrowUp`),t==`Right`&&(t=`ArrowRight`),t==`Down`&&(t=`ArrowDown`),t}function BX(){var e=arguments[0];typeof e==`string`&&(e=document.createElement(e));var t=1,n=arguments[1];if(n&&typeof n==`object`&&n.nodeType==null&&!Array.isArray(n)){for(var r in n)if(Object.prototype.hasOwnProperty.call(n,r)){var i=n[r];typeof i==`string`?e.setAttribute(r,i):i!=null&&(e[r]=i)}t++}for(;t2),$X={mac:QX||/Mac/.test(HX.platform),windows:/Win/.test(HX.platform),linux:/Linux|X11/.test(HX.platform),ie:qX,ie_version:GX?UX.documentMode||6:KX?+KX[1]:WX?+WX[1]:0,gecko:JX,gecko_version:JX?+(/Firefox\/(\d+)/.exec(HX.userAgent)||[0,0])[1]:0,chrome:!!YX,chrome_version:YX?+YX[1]:0,ios:QX,android:/Android\b/.test(HX.userAgent),webkit:XX,webkit_version:XX?+(/\bAppleWebKit\/(\d+)/.exec(HX.userAgent)||[0,0])[1]:0,safari:ZX,safari_version:ZX?+(/\bVersion\/(\d+(\.\d+)?)/.exec(HX.userAgent)||[0,0])[1]:0,tabSize:UX.documentElement.style.tabSize==null?`-moz-tab-size`:`tab-size`};function eZ(e,t){for(let n in e)n==`class`&&t.class?t.class+=` `+e.class:n==`style`&&t.style?t.style+=`;`+e.style:t[n]=e[n];return t}var tZ=Object.create(null);function nZ(e,t,n){if(e==t)return!0;e||=tZ,t||=tZ;let r=Object.keys(e),i=Object.keys(t);if(r.length-(n&&r.indexOf(n)>-1?1:0)!=i.length-(n&&i.indexOf(n)>-1?1:0))return!1;for(let a of r)if(a!=n&&(i.indexOf(a)==-1||e[a]!==t[a]))return!1;return!0}function rZ(e,t){for(let n=e.attributes.length-1;n>=0;n--){let r=e.attributes[n].name;t[r]??e.removeAttribute(r)}for(let n in t){let r=t[n];n==`style`?e.style.cssText=r:e.getAttribute(n)!=r&&e.setAttribute(n,r)}}function iZ(e,t,n){let r=!1;if(t)for(let i in t)n&&i in n||(r=!0,i==`style`?e.style.cssText=``:e.removeAttribute(i));if(n)for(let i in n)t&&t[i]==n[i]||(r=!0,i==`style`?e.style.cssText=n[i]:e.setAttribute(i,n[i]));return r}function aZ(e){let t=Object.create(null);for(let n=0;n0?3e8:-4e8:t>0?1e8:-1e8,new dZ(e,t,t,n,e.widget||null,!1)}static replace(e){let t=!!e.block,n,r;if(e.isBlockGap)n=-5e8,r=4e8;else{let{start:i,end:a}=fZ(e,t);n=(i?t?-3e8:-1:5e8)-1,r=(a?t?2e8:1:-6e8)+1}return new dZ(e,n,r,t,e.widget||null,!0)}static line(e){return new uZ(e)}static set(e,t=!1){return dX.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};cZ.none=dX.empty;var lZ=class e extends cZ{constructor(e){let{start:t,end:n}=fZ(e);super(t?-1:5e8,n?1:-6e8,null,e),this.tagName=e.tagName||`span`,this.attrs=e.class&&e.attributes?eZ(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||tZ}eq(t){return this==t||t instanceof e&&this.tagName==t.tagName&&nZ(this.attrs,t.attrs)}range(e,t=e){if(e>=t)throw RangeError(`Mark decorations may not be empty`);return super.range(e,t)}};lZ.prototype.point=!1;var uZ=class e extends cZ{constructor(e){super(-2e8,-2e8,null,e)}eq(t){return t instanceof e&&this.spec.class==t.spec.class&&nZ(this.spec.attributes,t.spec.attributes)}range(e,t=e){if(t!=e)throw RangeError(`Line decoration ranges must be zero-length`);return super.range(e,t)}};uZ.prototype.mapMode=rY.TrackBefore,uZ.prototype.point=!0;var dZ=class e extends cZ{constructor(e,t,n,r,i,a){super(t,n,i,e),this.block=r,this.isReplace=a,this.mapMode=r?t<=0?rY.TrackBefore:rY.TrackAfter:rY.TrackDel}get type(){return this.startSide==this.endSide?this.startSide<=0?sZ.WidgetBefore:sZ.WidgetAfter:sZ.WidgetRange}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof e&&pZ(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw RangeError(`Invalid range for replacement decoration`);if(!this.isReplace&&t!=e)throw RangeError(`Widget decorations can only have zero-length ranges`);return super.range(e,t)}};dZ.prototype.point=!0;function fZ(e,t=!1){let{inclusiveStart:n,inclusiveEnd:r}=e;return n??=e.inclusive,r??=e.inclusive,{start:n??t,end:r??t}}function pZ(e,t){return e==t||!!(e&&t&&e.compare(t))}function mZ(e,t,n,r=0){let i=n.length-1;i>=0&&n[i]+r>=e?n[i]=Math.max(n[i],t):n.push(e,t)}var hZ=class e extends oX{constructor(e,t,n){super(),this.tagName=e,this.attributes=t,this.rank=n}eq(t){return t==this||t instanceof e&&this.tagName==t.tagName&&nZ(this.attributes,t.attributes)}static create(t){return new e(t.tagName,t.attributes||tZ,t.rank==null?50:Math.max(0,Math.min(t.rank,100)))}static set(e,t=!1){return dX.of(e,t)}};hZ.prototype.startSide=hZ.prototype.endSide=-1;function gZ(e){let t;return t=e.nodeType==11?e.getSelection?e:e.ownerDocument:e,t.getSelection()}function _Z(e,t){return t?e==t||e.contains(t.nodeType==1?t:t.parentNode):!1}function vZ(e,t){if(!t.anchorNode)return!1;try{return _Z(e,t.anchorNode)}catch{return!1}}function yZ(e){return e.nodeType==3?PZ(e,0,e.nodeValue.length).getClientRects():e.nodeType==1?e.getClientRects():[]}function bZ(e,t,n,r){return n?CZ(e,t,n,r,-1)||CZ(e,t,n,r,1):!1}function xZ(e){for(var t=0;;t++)if(e=e.previousSibling,!e)return t}function SZ(e){return e.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(e.nodeName)}function CZ(e,t,n,r,i){for(;;){if(e==n&&t==r)return!0;if(t==(i<0?0:wZ(e))){if(e.nodeName==`DIV`)return!1;let n=e.parentNode;if(!n||n.nodeType!=1)return!1;t=xZ(e)+(i<0?0:1),e=n}else if(e.nodeType==1){if(e=e.childNodes[t+(i<0?-1:0)],e.nodeType==1&&e.contentEditable==`false`)return!1;t=i<0?wZ(e):0}else return!1}}function wZ(e){return e.nodeType==3?e.nodeValue.length:e.childNodes.length}function TZ(e,t){let n=t?e.left:e.right;return{left:n,right:n,top:e.top,bottom:e.bottom}}function EZ(e){let t=e.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:e.innerWidth,top:0,bottom:e.innerHeight}}function DZ(e,t){let n=t.width/e.offsetWidth,r=t.height/e.offsetHeight;return(n>.995&&n<1.005||!isFinite(n)||Math.abs(t.width-e.offsetWidth)<1)&&(n=1),(r>.995&&r<1.005||!isFinite(r)||Math.abs(t.height-e.offsetHeight)<1)&&(r=1),{scaleX:n,scaleY:r}}function OZ(e,t,n,r,i,a,o,s){let c=e.ownerDocument,l=c.defaultView||window;for(let u=e,d=!1;u&&!d;)if(u.nodeType==1){let e,f=u==c.body,p=1,m=1;if(f)e=EZ(l);else{if(/^(fixed|sticky)$/.test(getComputedStyle(u).position)&&(d=!0),u.scrollHeight<=u.clientHeight&&u.scrollWidth<=u.clientWidth){u=u.assignedSlot||u.parentNode;continue}let t=u.getBoundingClientRect();({scaleX:p,scaleY:m}=DZ(u,t)),e={left:t.left,right:t.left+u.clientWidth*p,top:t.top,bottom:t.top+u.clientHeight*m}}let h=0,g=0;if(i==`nearest`)t.top0&&t.bottom>e.bottom+g&&(g=t.bottom-e.bottom+o)):t.bottom>e.bottom-o&&(g=t.bottom-e.bottom+o,n<0&&t.top-g0&&t.right>e.right+h&&(h=t.right-e.right+a)):t.right>e.right-a&&(h=t.right-e.right+a,n<0&&t.lefte.bottom||t.lefte.right)&&(t={left:Math.max(t.left,e.left),right:Math.min(t.right,e.right),top:Math.max(t.top,e.top),bottom:Math.min(t.bottom,e.bottom)}),u=u.assignedSlot||u.parentNode}else if(u.nodeType==11)u=u.host;else break}function kZ(e,t=!0){let n=e.ownerDocument,r=null,i=null;for(let a=e.parentNode;a&&!(a==n.body||(!t||r)&&i);)if(a.nodeType==1)!i&&a.scrollHeight>a.clientHeight&&(i=a),t&&!r&&a.scrollWidth>a.clientWidth&&(r=a),a=a.assignedSlot||a.parentNode;else if(a.nodeType==11)a=a.host;else break;return{x:r,y:i}}var AZ=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:n}=e;this.set(t,Math.min(e.anchorOffset,t?wZ(t):0),n,Math.min(e.focusOffset,n?wZ(n):0))}set(e,t,n,r){this.anchorNode=e,this.anchorOffset=t,this.focusNode=n,this.focusOffset=r}},jZ=null;$X.safari&&$X.safari_version>=26&&(jZ=!1);function MZ(e){if(e.setActive)return e.setActive();if(jZ)return e.focus(jZ);let t=[];for(let n=e;n&&(t.push(n,n.scrollTop,n.scrollLeft),n!=n.ownerDocument);n=n.parentNode);if(e.focus(jZ==null?{get preventScroll(){return jZ={preventScroll:!0},!0}}:void 0),!jZ){jZ=!1;for(let e=0;eMath.max(0,e.document.documentElement.scrollHeight-e.innerHeight-4):e.scrollTop>Math.max(1,e.scrollHeight-e.clientHeight-4)}function zZ(e,t){for(let n=e,r=t;;)if(n.nodeType==3&&r>0)return{node:n,offset:r};else if(n.nodeType==1&&r>0){if(n.contentEditable==`false`)return null;n=n.childNodes[r-1],r=wZ(n)}else if(n.parentNode&&!SZ(n))r=xZ(n),n=n.parentNode;else return null}function BZ(e,t){for(let n=e,r=t;;)if(n.nodeType==3&&r=t){if(o.level==n)return a;(i<0||(r==0?e[i].level>o.level:r<0?o.fromt))&&(i=a)}}if(i<0)throw RangeError(`Index out of range`);return i}};function $Z(e,t){if(e.length!=t.length)return!1;for(let n=0;n=0;e-=3)if(YZ[e+1]==-r){let n=YZ[e+2],r=n&2?i:n&4?n&1?a:i:0;r&&(eQ[t]=eQ[YZ[e]]=r),s=e;break}}else if(YZ.length==189)break;else YZ[s++]=t,YZ[s++]=n,YZ[s++]=c;else if((o=eQ[t])==2||o==1){let e=o==i;c=+!e;for(let t=s-3;t>=0;t-=3){let n=YZ[t+2];if(n&2)break;if(e)YZ[t+2]|=2;else{if(n&4)break;YZ[t+2]|=4}}}}}function rQ(e,t,n,r){for(let i=0,a=r;i<=n.length;i++){let o=i?n[i-1].to:e,s=ic;)t==a&&(t=n[--r].from,a=r?n[r-1].to:e),eQ[--t]=u;c=o}else a=o,c++}}}function iQ(e,t,n,r,i,a,o){let s=r%2?2:1;if(r%2==i%2)for(let c=t,l=0;cc&&o.push(new QZ(c,m.from,f)),aQ(e,m.direction==UZ==!(f%2)?r:r+1,i,m.inner,m.from,m.to,o),c=m.to),p=m.to}else if(p==n||(t?eQ[p]!=s:eQ[p]==s))break;else p++;d?iQ(e,c,p,r+1,i,d,o):ct;){let n=!0,u=!1;if(!l||c>a[l-1].to){let e=eQ[c-1];e!=s&&(n=!1,u=e==16)}let d=!n&&s==1?[]:null,f=n?r:r+1,p=c;run:for(;;)if(l&&p==a[l-1].to){if(u)break run;let m=a[--l];if(!n)for(let e=m.from,n=l;;){if(e==t)break run;if(n&&a[n-1].to==e)e=a[--n].from;else if(eQ[e-1]==s)break run;else break}d?d.push(m):(m.toeQ.length;)eQ[eQ.length]=256;let r=[],i=t==UZ?0:1;return aQ(e,i,i,n,0,e.length,r),r}function sQ(e){return[new QZ(0,e,0)]}var cQ=``;function lQ(e,t,n,r,i){let a=r.head-e.from,o=QZ.find(t,a,r.bidiLevel??-1,r.assoc),s=t[o],c=s.side(i,n);if(a==c){let e=o+=i?1:-1;if(e<0||e>=t.length)return null;s=t[o=e],a=s.side(!i,n),c=s.side(i,n)}let l=XJ(e.text,a,s.forward(i,n));(ls.to)&&(l=c),cQ=e.text.slice(Math.min(a,l),Math.max(a,l));let u=o==(i?t.length-1:0)?null:t[o+(i?1:-1)];return u&&l==c&&u.level+ +!ie.some(e=>e)}),xQ=hY.define({combine:e=>e.some(e=>e)}),SQ=hY.define(),CQ=class e{constructor(e,t,n,r,i,a=!1){this.range=e,this.y=t,this.x=n,this.yMargin=r,this.xMargin=i,this.isSnapshot=a}map(t){return t.empty?this:new e(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new e(Y.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},wQ=UY.define({map:(e,t)=>e.map(t)}),TQ=UY.define();function EQ(e,t,n){let r=e.facet(mQ);r.length?r[0](t):window.onerror&&window.onerror(String(t),n,void 0,void 0,t)||(n?console.error(n+`:`,t):console.error(t))}var DQ=hY.define({combine:e=>e.length?e[0]:!0}),OQ=0,kQ=hY.define({combine(e){return e.filter((t,n)=>{for(let r=0;r{let t=[];return o&&t.push(PQ.of(t=>{let n=t.plugin(e);return n?o(n):cZ.none})),a&&t.push(a(e)),t})}static fromClass(t,n){return e.define((e,n)=>new t(e,n),n)}},jQ=class{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(!this.value){if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(t){EQ(e.state,t,`CodeMirror plugin crashed`),this.deactivate()}}else if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(t){if(EQ(e.state,t,`CodeMirror plugin crashed`),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}return this}destroy(e){if(this.value?.destroy)try{this.value.destroy()}catch(t){EQ(e.state,t,`CodeMirror plugin crashed`)}}deactivate(){this.spec=this.value=null}},MQ=hY.define(),NQ=hY.define(),PQ=hY.define(),FQ=hY.define(),IQ=hY.define(),LQ=hY.define(),RQ=hY.define();function zQ(e,t){let n=e.state.facet(RQ);if(!n.length)return n;let r=n.map(t=>t instanceof Function?t(e):t),i=[];return dX.spans(r,t.from,t.to,{point(){},span(e,n,r,a){let o=e-t.from,s=n-t.from,c=i;for(let e=r.length-1;e>=0;e--,a--){let n=r[e].spec.bidiIsolate,i;if(n??=uQ(t.text,o,s),a>0&&c.length&&(i=c[c.length-1]).to==o&&i.direction==n)i.to=s,c=i.inner;else{let e={from:o,to:s,direction:n,inner:[]};c.push(e),c=e.inner}}}}),i}var BQ=hY.define();function VQ(e){let t=0,n=0,r=0,i=0;for(let a of e.state.facet(BQ)){let o=a(e);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(n=Math.max(n,o.right)),o.top!=null&&(r=Math.max(r,o.top)),o.bottom!=null&&(i=Math.max(i,o.bottom)))}return{left:t,right:n,top:r,bottom:i}}var HQ=hY.define(),UQ=class e{constructor(e,t,n,r){this.fromA=e,this.toA=t,this.fromB=n,this.toB=r}join(t){return new e(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(e){let t=e.length,n=this;for(;t>0;t--){let r=e[t-1];if(!(r.fromA>n.toA)){if(r.toAr.push(new UQ(e,t,n,i))),this.changedRanges=r}static create(t,n,r){return new e(t,n,r)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},GQ=[],KQ=class{constructor(e,t,n=0){this.dom=e,this.length=t,this.flags=n,this.parent=null,e.cmTile=this}get breakAfter(){return this.flags&1}get children(){return GQ}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(e){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&rZ(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:``)+(this.breakAfter?`#`:``)}destroy(){this.parent=null}setDOM(e){this.dom=e,e.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e,t=this.posAtStart){let n=t;for(let t of this.children){if(t==e)return n;n+=t.length+t.breakAfter}throw RangeError(`Invalid child in posBefore`)}posAfter(e){return this.posBefore(e)+e.length}covers(e){return!0}coordsIn(e,t){return null}domPosFor(e,t){let n=xZ(this.dom),r=this.length?e>0:t>0;return new VZ(this.parent.dom,n+ +!!r,e==0||e==this.length)}markDirty(e){this.flags&=-3,e&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let e=this;e;e=e.parent)if(e instanceof YQ)return e;return null}static get(e){return e.cmTile}},qQ=class extends KQ{constructor(e){super(e,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(e){this.children.push(e),e.parent=this}sync(e){if(this.flags&2)return;super.sync(e);let t=this.dom,n=null,r,i=e?.node==t?e:null,a=0;for(let o of this.children){if(o.sync(e),a+=o.length+o.breakAfter,r=n?n.nextSibling:t.firstChild,i&&r!=o.dom&&(i.written=!0),o.dom.parentNode==t)for(;r&&r!=o.dom;)r=JQ(r);else t.insertBefore(o.dom,r);n=o.dom}for(r=n?n.nextSibling:t.firstChild,i&&r&&(i.written=!0);r;)r=JQ(r);this.length=a}};function JQ(e){let t=e.nextSibling;return e.parentNode.removeChild(e),t}var YQ=class extends qQ{constructor(e,t){super(t),this.view=e}owns(e){for(;e;e=e.parent)if(e==this)return!0;return!1}isBlock(){return!0}nearest(e){for(;;){if(!e)return null;let t=KQ.get(e);if(t&&this.owns(t))return t;e=e.parentNode}}blockTiles(e){for(let t=[],n=this,r=0,i=0;;)if(r==n.children.length){if(!t.length)return;n=n.parent,n.breakAfter&&i++,r=t.pop()}else{let a=n.children[r++];if(a instanceof XQ)t.push(r),n=a,r=0;else{let t=i+a.length,n=e(a,i);if(n!==void 0)return n;i=t+a.breakAfter}}}resolveBlock(e,t){let n,r=-1,i,a=-1;if(this.blockTiles((o,s)=>{let c=s+o.length;if(e>=s&&e<=c){if(o.isWidget()&&t>=-1&&t<=1){if(o.flags&32)return!0;o.flags&16&&(n=void 0)}(se||e==s&&(t>1?o.length:o.covers(-1)))&&(!i||!o.isWidget()&&i.isWidget())&&(i=o,a=e-s)}}),!n&&!i)throw Error(`No tile at position `+e);return n&&t<0||!i?{tile:n,offset:r}:{tile:i,offset:a}}},XQ=class e extends qQ{constructor(e,t){super(e),this.wrapper=t}isBlock(){return!0}covers(e){return this.children.length?e<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,n){let r=new e(n||document.createElement(t.tagName),t);return n||(r.flags|=4),r}},ZQ=class e extends qQ{constructor(e,t){super(e),this.attrs=t}isLine(){return!0}static start(t,n,r){let i=new e(n||document.createElement(`div`),t);return(!n||!r)&&(i.flags|=4),i}get domAttrs(){return this.attrs}resolveInline(e,t,n){let r=null,i=-1,a=null,o=-1;function s(e,c){for(let l=0,u=0;l=c&&(d.isComposite()?s(d,c-u):(!a||a.isHidden&&(t>0||n&&$Q(a,d)))&&(f>c||d.flags&32)?(a=d,o=c-u):(un&&(e=n);let r=e,i=e,a=0;e==0&&t<0||e==n&&t>=0?$X.chrome||$X.gecko||(e?(r--,a=1):i=0)?0:o.length-1];return $X.safari&&!a&&s.width==0&&(s=Array.prototype.find.call(o,e=>e.width)||s),a?TZ(s,a<0):s||null}static of(t,n){let r=new e(n||document.createTextNode(t),t);return n||(r.flags|=2),r}},n$=class e extends KQ{constructor(e,t,n,r){super(e,t,r),this.widget=n}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(e){return this.flags&48?!1:(this.flags&(e<0?64:128))>0}coordsIn(e,t){return this.coordsInWidget(e,t,!1)}coordsInWidget(e,t,n){let r=this.widget.coordsAt(this.dom,e,t);if(r)return r;if(n)return TZ(this.dom.getBoundingClientRect(),this.length?e==0:t<=0);{let t=this.dom.getClientRects(),n=null;if(!t.length)return null;let r=this.flags&16?!0:this.flags&32?!1:e>0;for(let i=r?t.length-1:0;n=t[i],!(e>0?i==0:i==t.length-1||n.top0;)if(!r.isComposite())if(i==r.length)a=!!r.breakAfter,{tile:r,index:i}=o.pop(),i++;else if(e){let t=Math.min(e,r.length-i);n&&n.skip(r,i,i+t),e-=t,i+=t}else break;else if(a){if(!e)break;n&&n.break(),e--,a=!1}else if(i==r.children.length){if(!e&&!o.length)break;n&&n.leave(r),a=!!r.breakAfter,{tile:r,index:i}=o.pop(),i++}else{let s=r.children[i],c=s.breakAfter;(t>0?s.length<=e:s.length=0;e--){let n=t.marks[e],i=r.lastChild;if(i instanceof e$&&i.mark.eq(n.mark))i.dom!=n.dom&&i.setDOM(g$(n.dom)),r=i;else{if(this.cache.reused.get(n)){let e=KQ.get(n.dom);e&&e.setDOM(g$(n.dom))}let e=e$.of(n.mark,n.dom);r.append(e),r=e}this.cache.reused.set(n,2)}let i=KQ.get(e.text);i&&this.cache.reused.set(i,2);let a=new t$(e.text,e.text.nodeValue);a.flags|=8,this.pos=e.range.toB,r.append(a)}addInlineWidget(e,t,n){let r=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);r||this.flushBuffer();let i=this.ensureMarks(t,n);!r&&!(e.flags&16)&&i.append(this.getBuffer(1)),i.append(e),this.pos+=e.length,this.afterWidget=e}addMark(e,t,n){this.flushBuffer(),this.ensureMarks(t,n).append(e),this.pos+=e.length,this.afterWidget=null}addBlockWidget(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}continueWidget(e){let t=this.afterWidget||this.lastBlock;t.length+=e,this.pos+=e}addLineStart(e,t){e||=p$;let n=ZQ.start(e,t||this.cache.find(ZQ)?.dom,!!t);this.getBlockPos().append(this.lastBlock=this.curLine=n)}addLine(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(e){this.blockPosCovered()||this.addLineStart(e)}ensureLine(e){this.curLine||this.addLineStart(e)}ensureMarks(e,t){let n=this.curLine;for(let r=e.length-1;r>=0;r--){let i=e[r],a;if(t>0&&(a=n.lastChild)&&a instanceof e$&&a.mark.eq(i))n=a,t--;else{let e=e$.of(i,this.cache.find(e$,e=>e.mark.eq(i))?.dom);n.append(e),n=e,t=0}}return n}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!d$(this.curLine,!1)||e.dom.nodeName!=`BR`&&e.isWidget()&&!($X.ios&&d$(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(v$,0,32)||new n$(v$.toDOM(),0,v$,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let e=this.wrappers.length-1;e>=0;e--)this.wrappers[e].to=this.pos){let t=e.rank*102+e.value.rank,n=new a$(e.from,e.to,e.value,t),r=this.wrappers.length;for(;r>0&&(this.wrappers[r-1].rank-n.rank||this.wrappers[r-1].to-n.to)<0;)r--;this.wrappers.splice(r,0,n)}this.wrapperPos=this.pos}getBlockPos(){this.updateBlockWrappers();let e=this.root;for(let t of this.wrappers){let n=e.lastChild;if(t.frome.wrapper.eq(t.wrapper))?.dom);e.append(n),e=n}}return e}blockPosCovered(){let e=this.lastBlock;return e!=null&&!e.breakAfter&&(!e.isWidget()||(e.flags&160)>0)}getBuffer(e){let t=2|(e<0?16:32),n=this.cache.find(r$,void 0,1);return n&&(n.flags=t),n||new r$(t)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},s$=class{constructor(e){this.skipCount=0,this.text=``,this.textOff=0,this.cursor=e.iter()}skip(e){this.textOff+e<=this.text.length?this.textOff+=e:(this.skipCount+=e-(this.text.length-this.textOff),this.text=``,this.textOff=0)}next(e){if(this.textOff==this.text.length){let{value:t,lineBreak:n,done:r}=this.cursor.next(this.skipCount);if(this.skipCount=0,r)throw Error(`Ran out of text content when drawing inline views`);this.text=t;let i=this.textOff=Math.min(e,t.length);return n?null:t.slice(0,i)}let t=Math.min(this.text.length,this.textOff+e),n=this.text.slice(this.textOff,t);return this.textOff=t,n}},c$=[n$,ZQ,t$,e$,r$,XQ,YQ];for(let e=0;e[]),this.index=c$.map(()=>0),this.reused=new Map}add(e){let t=e.constructor.bucket,n=this.buckets[t];n.length<6?n.push(e):n[this.index[t]=(this.index[t]+1)%6]=e}find(e,t,n=2){let r=e.bucket,i=this.buckets[r],a=this.index[r];for(let e=i.length-1;e>=0;e--){let o=(e+a)%i.length,s=i[o];if((!t||t(s))&&!this.reused.has(s))return i.splice(o,1),o{if(this.cache.add(e),e.isComposite())return!1},enter:e=>this.cache.add(e),leave:()=>{},break:()=>{}}}run(e,t){let n=t&&this.getCompositionContext(t.text);for(let r=0,i=0,a=0;;){let o=ar){let e=s-r;this.preserve(e,!a,!o),r=s,i+=e}if(!o)break;t&&o.fromA<=t.range.fromA&&o.toA>=t.range.toA?(this.forward(o.fromA,t.range.fromA,t.range.fromA{if(e.isWidget())if(this.openWidget)this.builder.continueWidget(n-t);else{let a=n>0||t{e.isLine()?this.builder.addLineStart(e.attrs,this.cache.maybeReuse(e)):(this.cache.add(e),e instanceof e$&&r.unshift(e.mark)),this.openWidget=!1},leave:e=>{e.isLine()?r.length&&=i=0:e instanceof e$&&(r.shift(),i=Math.min(i,r.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(e)}emit(e,t){let n=null,r=this.builder,i=0,a=dX.spans(this.decorations,e,t,{point:(e,t,a,o,s,c)=>{if(a instanceof dZ){if(this.disallowBlockEffectsFor[c]){if(a.block)throw RangeError(`Block decorations may not be specified via plugins`);if(t>this.view.state.doc.lineAt(e).to)throw RangeError(`Decorations that replace line breaks may not be specified via plugins`)}if(i=o.length,s>o.length)r.continueWidget(t-e);else{let i=a.widget||(a.block?_$.block:_$.inline),c=f$(a),l=this.cache.findWidget(i,t-e,c)||n$.of(i,this.view,t-e,c);a.block?(a.startSide>0&&r.addLineStartIfNotCovered(n),r.addBlockWidget(l)):(r.ensureLine(n),r.addInlineWidget(l,o,s))}n=null}else n=m$(n,a);t>e&&this.text.skip(t-e)},span:(e,t,i,a)=>{for(let o=e;oi,this.openMarks=a}forward(e,t,n=1){t-e<=10?this.old.advance(t-e,n,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(t-e-10,-1),this.old.advance(5,n,this.reuseWalker))}getCompositionContext(e){let t=[],n=null;for(let r=e.parentNode;;r=r.parentNode){let e=KQ.get(r);if(r==this.view.contentDOM)break;e instanceof e$?t.push(e):e?.isLine()?n=e:e instanceof XQ||(r.nodeName==`DIV`&&!n&&r!=this.view.contentDOM?n=new ZQ(r,p$):n||t.push(e$.of(new lZ({tagName:r.nodeName.toLowerCase(),attributes:aZ(r)}),r)))}return{line:n,marks:t}}};function d$(e,t){let n=e=>{for(let r of e.children)if((t?r.isText():r.length)||n(r))return!0;return!1};return n(e)}function f$(e){let t=e.isReplace?(e.startSide<0?64:0)|(e.endSide>0?128:0):e.startSide>0?32:16;return e.block&&(t|=256),t}var p$={class:`cm-line`};function m$(e,t){let n=t.spec.attributes,r=t.spec.class;return!n&&!r?e:(e||={class:`cm-line`},n&&eZ(n,e),r&&(e.class+=` `+r),e)}function h$(e){let t=[];for(let n=e.parents.length;n>1;n--){let r=n==e.parents.length?e.tile:e.parents[n].tile;r instanceof e$&&t.push(r.mark)}return t}function g$(e){let t=KQ.get(e);return t&&t.setDOM(e.cloneNode()),e}var _$=class extends oZ{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};_$.inline=new _$(`span`),_$.block=new _$(`div`);var v$=new class extends oZ{toDOM(){return document.createElement(`br`)}get isHidden(){return!0}get editable(){return!0}},y$=class{constructor(e){this.view=e,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=cZ.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new YQ(e,e.contentDOM),this.updateInner([new UQ(0,0,0,e.state.doc.length)],null)}update(e){let t=e.changedRanges;this.minWidth>0&&t.length&&(t.every(({fromA:e,toA:t})=>tthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let n=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(this.domChanged?.newSel?n=this.domChanged.newSel.head:!A$(e.changes,this.hasComposition)&&!e.selectionSet&&(n=e.state.selection.main.head));let r=n>-1?C$(this.view,e.changes,n):null;if(this.domChanged=null,this.hasComposition){let{from:n,to:r}=this.hasComposition;t=new UQ(n,r,e.changes.mapPos(n,-1),e.changes.mapPos(r,1)).addToSet(t.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,($X.ie||$X.chrome)&&!r&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let i=this.decorations,a=this.blockWrappers;this.updateDeco();let o=E$(i,this.decorations,e.changes);o.length&&(t=UQ.extendWithRanges(t,o));let s=O$(a,this.blockWrappers,e.changes);return s.length&&(t=UQ.extendWithRanges(t,s)),r&&!t.some(e=>e.fromA<=r.range.fromA&&e.toA>=r.range.toA)&&(t=r.range.addToSet(t.slice())),this.tile.flags&2&&t.length==0?!1:(this.updateInner(t,r),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t){this.view.viewState.mustMeasureContent=!0;let{observer:n}=this.view;n.ignore(()=>{if(t||e.length){let n=this.tile,r=new u$(this.view,n,this.blockWrappers,this.decorations,this.dynamicDecorationMap);t&&KQ.get(t.text)&&r.cache.reused.set(KQ.get(t.text),2),this.tile=r.run(e,t),b$(n,r.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+`px`,this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+`px`:``;let r=$X.chrome||$X.ios?{node:n.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||n.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=``});let r=[];if(this.view.viewport.from||this.view.viewport.to-1)&&vZ(n,this.view.observer.selectionRange)&&!(r&&n.contains(r));if(!(i||t||a))return;let o=this.forceSelection;this.forceSelection=!1;let s=this.view.state.selection.main,c,l;if(s.empty?l=c=this.inlineDOMNearPos(s.anchor,s.assoc||1):(l=this.inlineDOMNearPos(s.head,s.head==s.from?1:-1),c=this.inlineDOMNearPos(s.anchor,s.anchor==s.from?1:-1)),$X.gecko&&s.empty&&!this.hasComposition&&x$(c)){let e=document.createTextNode(``);this.view.observer.ignore(()=>c.node.insertBefore(e,c.node.childNodes[c.offset]||null)),c=l=new VZ(e,0),o=!0}let u=this.view.observer.selectionRange;(o||!u.focusNode||(!bZ(c.node,c.offset,u.anchorNode,u.anchorOffset)||!bZ(l.node,l.offset,u.focusNode,u.focusOffset))&&!this.suppressWidgetCursorChange(u,s))&&(this.view.observer.ignore(()=>{$X.android&&$X.chrome&&n.contains(u.focusNode)&&k$(u.focusNode,n)&&(n.blur(),n.focus({preventScroll:!0}));let e=gZ(this.view.root);if(e)if(s.empty){if($X.gecko){let e=w$(c.node,c.offset);if(e&&e!=3){let t=(e==1?zZ:BZ)(c.node,c.offset);t&&(c=new VZ(t.node,t.offset))}}e.collapse(c.node,c.offset),s.bidiLevel!=null&&e.caretBidiLevel!==void 0&&(e.caretBidiLevel=s.bidiLevel)}else if(e.extend){e.collapse(c.node,c.offset);try{e.extend(l.node,l.offset)}catch{}}else{let t=document.createRange();s.anchor>s.head&&([c,l]=[l,c]),t.setEnd(l.node,l.offset),t.setStart(c.node,c.offset),e.removeAllRanges(),e.addRange(t)}a&&this.view.root.activeElement==n&&(n.blur(),r&&r.focus())}),this.view.observer.setSelectionRange(c,l)),this.impreciseAnchor=c.precise?null:new VZ(u.anchorNode,u.anchorOffset),this.impreciseHead=l.precise?null:new VZ(u.focusNode,u.focusOffset)}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&bZ(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,n=gZ(e.root),{anchorNode:r,anchorOffset:i}=e.observer.selectionRange;if(!n||!t.empty||!t.assoc||!n.modify)return;let a=this.lineAt(t.head,t.assoc);if(!a)return;let o=a.posAtStart;if(t.head==o||t.head==o+a.length)return;let s=this.coordsAt(t.head,-1),c=this.coordsAt(t.head,1);if(!s||!c||s.bottom>c.top)return;let l=this.domAtPos(t.head+t.assoc,t.assoc);n.collapse(l.node,l.offset),n.modify(`move`,t.assoc<0?`forward`:`backward`,`lineboundary`),e.observer.readSelectionRange();let u=e.observer.selectionRange;e.docView.posFromDOM(u.anchorNode,u.anchorOffset)!=t.from&&n.collapse(r,i)}posFromDOM(e,t){let n=this.tile.nearest(e);if(!n)return this.tile.dom.compareDocumentPosition(e)&2?0:this.view.state.doc.length;let r=n.posAtStart;if(n.isComposite()){let i;if(e==n.dom)i=n.dom.childNodes[t];else{let r=wZ(e)==0?0:t==0?-1:1;for(;;){let t=e.parentNode;if(t==n.dom)break;r==0&&t.firstChild!=t.lastChild&&(r=e==t.firstChild?-1:1),e=t}i=r<0?e:e.nextSibling}if(i==n.dom.firstChild)return r;for(;i&&!KQ.get(i);)i=i.nextSibling;if(!i)return r+n.length;for(let e=0,t=r;;e++){let r=n.children[e];if(r.dom==i)return t;t+=r.length+r.breakAfter}}else if(n.isText())return e==n.dom?r+t:r+(t?n.length:0);else return r}domAtPos(e,t){let{tile:n,offset:r}=this.tile.resolveBlock(e,t);return n.isWidget()?n.domPosFor(e,t):n.domIn(r,t)}inlineDOMNearPos(e,t){let n,r=-1,i=!1,a,o=-1,s=!1;return this.tile.blockTiles((t,c)=>{if(t.isWidget()){if(t.flags&32&&c>=e)return!0;t.flags&16&&(i=!0)}else{let l=c+t.length;if(c<=e&&(n=t,r=e-c,i=l=e&&!a&&(a=t,o=e-c,s=c>e),c>e&&a)return!0}}),!n&&!a?this.domAtPos(e,t):(i&&a?n=null:s&&n&&(a=null),n&&t<0||!a?n.domIn(r,t):a.domIn(o,t))}coordsAt(e,t){let{tile:n,offset:r}=this.tile.resolveBlock(e,t);return n.isWidget()?n.widget instanceof j$?null:n.coordsInWidget(r,t,!0):n.coordsIn(r,t)}lineAt(e,t){let{tile:n}=this.tile.resolveBlock(e,t);return n.isLine()?n:null}coordsForChar(e){let{tile:t,offset:n}=this.tile.resolveBlock(e,1);if(!t.isLine())return null;function r(e,t){if(e.isComposite())for(let n of e.children){if(n.length>=t){let e=r(n,t);if(e)return e}if(t-=n.length,t<0)break}else if(e.isText()&&tMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,o=-1,s=this.view.textDirection==HZ.LTR,c=0,l=(e,u,d)=>{for(let f=0;fr);f++){let r=e.children[f],p=u+r.length,m=r.dom.getBoundingClientRect(),{height:h}=m;if(d&&!f&&(c+=m.top-d.top),r instanceof XQ)p>n&&l(r,u,m);else if(u>=n&&(c>0&&t.push(-c),t.push(h+c),c=0,a)){let e=r.dom.lastChild,t=e?yZ(e):[];if(t.length){let e=t[t.length-1],n=s?e.right-m.left:m.right-e.left;n>o&&(o=n,this.minWidth=i,this.minWidthFrom=u,this.minWidthTo=p)}}d&&f==e.children.length-1&&(c+=d.bottom-m.bottom),u=p+r.breakAfter}};return l(this.tile,0,null),t}textDirectionAt(e){let{tile:t}=this.tile.resolveBlock(e,1);return getComputedStyle(t.dom).direction==`rtl`?HZ.RTL:HZ.LTR}measureTextSize(){let e=this.tile.blockTiles(e=>{if(e.isLine()&&e.children.length&&e.length<=20){let t=0,n;for(let r of e.children){if(!r.isText()||/[^ -~]/.test(r.text))return;let e=yZ(r.dom);if(e.length!=1)return;t+=e[0].width,n=e[0].height}if(t)return{lineHeight:e.dom.getBoundingClientRect().height,charWidth:t/e.length,textHeight:n}}});if(e)return e;let t=document.createElement(`div`),n,r,i;return t.className=`cm-line`,t.style.width=`99999px`,t.style.position=`absolute`,t.textContent=`abc def ghi jkl mno pqr stu`,this.view.observer.ignore(()=>{this.tile.dom.appendChild(t);let e=yZ(t.firstChild)[0];n=t.getBoundingClientRect().height,r=e&&e.width?e.width/27:7,i=e&&e.height?e.height:n,t.remove()}),{lineHeight:n,charWidth:r,textHeight:i}}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let n=0,r=0;;r++){let i=r==t.viewports.length?null:t.viewports[r],a=i?i.from-1:this.view.state.doc.length;if(a>n){let r=(t.lineBlockAt(a).bottom-t.lineBlockAt(n).top)/this.view.scaleY;e.push(cZ.replace({widget:new j$(r),block:!0,inclusive:!0,isBlockGap:!0}).range(n,a))}if(!i)break;n=i.to+1}return cZ.set(e)}updateDeco(){let e=1,t=this.view.state.facet(PQ).map(t=>(this.dynamicDecorationMap[e++]=typeof t==`function`)?t(this.view):t),n=!1,r=this.view.state.facet(IQ).map((e,t)=>{let r=typeof e==`function`;return r&&(n=!0),r?e(this.view):e});for(r.length&&(this.dynamicDecorationMap[e++]=n,t.push(dX.join(r))),this.decorations=[this.editContextFormatting,...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];etypeof e==`function`?e(this.view):e)}scrollIntoView(e){if(e.isSnapshot){let t=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=t.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let t of this.view.state.facet(SQ))try{if(t(this.view,e.range,e))return!0}catch(e){EQ(this.view.state,e,`scroll handler`)}let{range:t}=e,n=this.coordsAt(t.head,t.assoc??(t.empty?0:t.head>t.anchor?-1:1)),r;if(!n)return;!t.empty&&(r=this.coordsAt(t.anchor,t.anchor>t.head?-1:1))&&(n={left:Math.min(n.left,r.left),top:Math.min(n.top,r.top),right:Math.max(n.right,r.right),bottom:Math.max(n.bottom,r.bottom)});let i=VQ(this.view),a={left:n.left-i.left,top:n.top-i.top,right:n.right+i.right,bottom:n.bottom+i.bottom},{offsetWidth:o,offsetHeight:s}=this.view.scrollDOM;if(OZ(this.view.scrollDOM,a,t.head1&&(n.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||n.bottome.isWidget()||e.children.some(t);return t(this.tile.resolveBlock(e,1).tile)}destroy(){b$(this.tile)}};function b$(e,t){let n=t?.get(e);if(n!=1){n??e.destroy();for(let n of e.children)b$(n,t)}}function x$(e){return e.node.nodeType==1&&e.node.firstChild&&(e.offset==0||e.node.childNodes[e.offset-1].contentEditable==`false`)&&(e.offset==e.node.childNodes.length||e.node.childNodes[e.offset].contentEditable==`false`)}function S$(e,t){let n=e.observer.selectionRange;if(!n.focusNode)return null;let r=zZ(n.focusNode,n.focusOffset),i=BZ(n.focusNode,n.focusOffset),a=r||i;if(i&&r&&i.node!=r.node){let t=KQ.get(i.node);if(!t||t.isText()&&t.text!=i.node.nodeValue)a=i;else if(e.docView.lastCompositionAfterCursor){let e=KQ.get(r.node);!e||e.isText()&&e.text!=r.node.nodeValue||(a=i)}}if(e.docView.lastCompositionAfterCursor=a!=r,!a)return null;let o=t-a.offset;return{from:o,to:o+a.node.nodeValue.length,node:a.node}}function C$(e,t,n){let r=S$(e,n);if(!r)return null;let{node:i,from:a,to:o}=r,s=i.nodeValue;if(/[\n\r]/.test(s)||e.state.doc.sliceString(r.from,r.to)!=s)return null;let c=t.invertedDesc;return{range:new UQ(c.mapPos(a),c.mapPos(o),a,o),text:i}}function w$(e,t){return e.nodeType==1?(t&&e.childNodes[t-1].contentEditable==`false`?1:0)|(t{et.from&&(n=!0)}),n}var j$=class extends oZ{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement(`div`);return e.className=`cm-gap`,this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+`px`,!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function M$(e,t,n=1){let r=e.charCategorizer(t),i=e.doc.lineAt(t),a=t-i.from;if(i.length==0)return Y.cursor(t);a==0?n=1:a==i.length&&(n=-1);let o=a,s=a;n<0?o=XJ(i.text,a,!1):s=XJ(i.text,a);let c=r(i.text.slice(o,s));for(;o>0;){let e=XJ(i.text,o,!1);if(r(i.text.slice(e,o))!=c)break;o=e}for(;se.defaultLineHeight*1.5){let t=e.viewState.heightOracle.textHeight,r=Math.floor((i-n.top-(e.defaultLineHeight-t)*.5)/t);a+=r*e.viewState.heightOracle.lineLength}let o=e.state.sliceDoc(n.from,n.to);return n.from+TX(o,a,e.state.tabSize)}function P$(e,t,n){let r=e.lineBlockAt(t);if(Array.isArray(r.type)){let e;for(let i of r.type){if(i.from>t)break;if(!(i.tot)return i;(!e||i.type==sZ.Text&&(e.type!=i.type||(n<0?i.fromt)))&&(e=i)}}return e||r}return r}function F$(e,t,n,r){let i=P$(e,t.head,t.assoc||-1),a=!r||i.type!=sZ.Text||!(e.lineWrapping||i.widgetLineBreaks)?null:e.coordsAtPos(t.assoc<0&&t.head>i.from?t.head-1:t.head);if(a){let t=e.dom.getBoundingClientRect(),r=e.textDirectionAt(i.from),o=e.posAtCoords({x:n==(r==HZ.LTR)?t.right-1:t.left+1,y:(a.top+a.bottom)/2});if(o!=null)return Y.cursor(o,n?-1:1)}return Y.cursor(n?i.to:i.from,n?-1:1)}function I$(e,t,n,r){let i=e.state.doc.lineAt(t.head),a=e.bidiSpans(i),o=e.textDirectionAt(i.from);for(let s=t,c=null;;){let t=lQ(i,a,o,s,n),l=cQ;if(!t){if(i.number==(n?e.state.doc.lines:1))return s;l=` -`,i=e.state.doc.line(i.number+(n?1:-1)),a=e.bidiSpans(i),t=e.visualLineSide(i,!n)}if(!c){if(!r)return t;c=r(l)}else if(!c(l))return s;s=t}}function L$(e,t,n){let r=e.state.charCategorizer(t),i=r(n);return e=>{let t=r(e);return i==$Y.Space&&(i=t),i==t}}function R$(e,t,n,r){let i=t.head,a=n?1:-1;if(i==(n?e.state.doc.length:0))return Y.cursor(i,t.assoc);let o=t.goalColumn,s,c=e.contentDOM.getBoundingClientRect(),l=e.coordsAtPos(i,t.assoc||((t.empty?n:t.head==t.from)?1:-1)),u=e.documentTop;if(l)o??=l.left-c.left,s=a<0?l.top:l.bottom;else{let t=e.viewState.lineBlockAt(i);o??=Math.min(c.right-c.left,e.defaultCharacterWidth*(i-t.from)),s=(a<0?t.top:t.bottom)+u}let d=c.left+o,f=e.viewState.heightOracle.textHeight>>1,p=r??f;for(let t=0;;t+=f){let r=s+(p+t)*a,i=U$(e,{x:d,y:r},!1,a);if(n?r>c.bottom:rs:u{if(t>e&&tt(e)),n.from,t.head>n.from?-1:1);return r==n.from?n:Y.cursor(r,re.viewState.docHeight)return new H$(e.state.doc.length,-1);if(l=e.elementAtHeight(c),r==null)break;if(l.type==sZ.Text){if(r<0?l.toe.viewport.to)break;let t=e.docView.coordsAt(r<0?l.from:l.to,r>0?-1:1);if(t&&(r<0?t.top<=c+a:t.bottom>=c+a))break}let t=e.viewState.heightOracle.textHeight/2;c=r>0?l.bottom+t:l.top-t}if(e.viewport.from>=l.to||e.viewport.to<=l.from){if(n)return null;if(l.type==sZ.Text){let t=N$(e,i,l,o,s);return new H$(t,t==l.from?1:-1)}}if(l.type!=sZ.Text)return c<(l.top+l.bottom)/2?new H$(l.from,1):new H$(l.to,-1);let u=e.docView.lineAt(l.from,2);return(!u||u.length!=l.length)&&(u=e.docView.lineAt(l.from,-2)),new W$(e,o,s,e.textDirectionAt(l.from)).scanTile(u,l.from)}var W$=class{constructor(e,t,n,r){this.view=e,this.x=t,this.y=n,this.baseDir=r,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to1||n.length&&(n[0].level!=this.baseDir||n[0].to+r.from>1;adjust:if(a.has(f)){let e=r+Math.floor(Math.random()*n);for(let t=0;t1)){if(n.bottomthis.y)(!c||c.top>n.top)&&(c=n),a=-1;else{let e=n.left>this.x?this.x-n.left:n.right(n+n+r)/3)return this.y=s.bottom-1,this.scan(e,t,!0);if(c&&c.top<(n+r+r)/3)return this.y=c.top+1,this.scan(e,t,!0)}let f=(o?this.dirAt(e[l],1):this.baseDir)==HZ.LTR;return{i:l,after:this.x>(d.left+d.right)/2==f}}scanText(e,t){let n=[];for(let r=0;r{let i=n[r]-t,a=n[r+1]-t;return PZ(e.dom,i,a).getClientRects()});return r.after?new H$(n[r.i+1],-1):new H$(n[r.i],1)}scanTile(e,t){if(!e.length)return new H$(t,1);if(e.children.length==1){let n=e.children[0];if(n.isText())return this.scanText(n,t);if(n.isComposite())return this.scanTile(n,t)}let n=[t];for(let r=0,i=t;r{let n=e.children[t];return n.flags&48?null:(n.dom.nodeType==1?n.dom:PZ(n.dom,0,n.length)).getClientRects()}),i=e.children[r.i],a=n[r.i];return i.isText()?this.scanText(i,a):i.isComposite()?this.scanTile(i,a):r.after?new H$(n[r.i+1],-1):new H$(a,1)}},G$=`￿`,K$=class{constructor(e,t){this.points=e,this.view=t,this.text=``,this.lineSeparator=t.state.facet(iX.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=G$}readRange(e,t){if(!e)return this;let n=e.parentNode;for(let r=e;;){this.findPointBefore(n,r);let e=this.text.length;this.readNode(r);let i=KQ.get(r),a=r.nextSibling;if(a==t){i?.breakAfter&&!a&&n!=this.view.contentDOM&&this.lineBreak();break}let o=KQ.get(a);(i&&o?i.breakAfter:(i?i.breakAfter:SZ(r))||SZ(a)&&(r.nodeName!=`BR`||i?.isWidget())&&this.text.length>e)&&!J$(a,t)&&this.lineBreak(),r=a}return this.findPointBefore(n,t),this}readTextNode(e){let t=e.nodeValue;for(let n of this.points)n.node==e&&(n.pos=this.text.length+Math.min(n.offset,t.length));for(let n=0,r=this.lineSeparator?null:/\r\n?|\n/g;;){let i=-1,a=1,o;if(this.lineSeparator?(i=t.indexOf(this.lineSeparator,n),a=this.lineSeparator.length):(o=r.exec(t))&&(i=o.index,a=o[0].length),this.append(t.slice(n,i<0?t.length:i)),i<0)break;if(this.lineBreak(),a>1)for(let t of this.points)t.node==e&&t.pos>this.text.length&&(t.pos-=a-1);n=i+a}}readNode(e){let t=KQ.get(e),n=t&&t.overrideDOMText;if(n!=null){this.findPointInside(e,n.length);for(let e=n.iter();!e.next().done;)e.lineBreak?this.lineBreak():this.append(e.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName==`BR`?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let n of this.points)n.node==e&&e.childNodes[n.offset]==t&&(n.pos=this.text.length)}findPointInside(e,t){for(let n of this.points)(e.nodeType==3?n.node==e:e.contains(n.node))&&(n.pos=this.text.length+(q$(e,n.node,n.offset)?t:0))}};function q$(e,t,n){for(;;){if(!t||n-1;let{impreciseHead:i,impreciseAnchor:a}=e.docView,o=e.state.selection;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=Z$(e.docView.tile,t,n,0))){let t=i||a?[]:n1(e),n=new K$(t,e);n.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=n.text,this.newSel=r1(t,this.bounds.from)}else{let t=e.observer.selectionRange,n=i&&i.node==t.focusNode&&i.offset==t.focusOffset||!_Z(e.contentDOM,t.focusNode)?o.main.head:e.docView.posFromDOM(t.focusNode,t.focusOffset),r=a&&a.node==t.anchorNode&&a.offset==t.anchorOffset||!_Z(e.contentDOM,t.anchorNode)?o.main.anchor:e.docView.posFromDOM(t.anchorNode,t.anchorOffset),s=e.viewport;if(($X.ios||$X.chrome)&&o.main.empty&&n!=r&&(s.from>0||s.to-1&&o.ranges.length>1)this.newSel=o.replaceRange(Y.range(r,n));else if(e.lineWrapping&&r==n&&!(o.main.empty&&o.main.head==n)&&e.inputState.lastTouchTime>Date.now()-100){let t=e.coordsAtPos(n,-1),r=0;t&&(r=e.inputState.lastTouchY<=t.bottom?-1:1),this.newSel=Y.create([Y.cursor(n,r)])}else this.newSel=Y.single(r,n)}}};function Z$(e,t,n,r){if(e.isComposite()){let i=-1,a=-1,o=-1,s=-1;for(let c=0,l=r,u=r;cn)return Z$(r,t,n,l);if(d>=t&&i==-1&&(i=c,a=l),l>n&&r.dom.parentNode==e.dom){o=c,s=u;break}u=d,l=d+r.breakAfter}return{from:a,to:s<0?r+e.length:s,startDOM:(i?e.children[i-1].dom.nextSibling:null)||e.dom.firstChild,endDOM:o=0?e.children[o].dom:null}}else if(e.isText())return{from:r,to:r+e.length,startDOM:e.dom,endDOM:e.dom.nextSibling};else return null}function Q$(e,t){let n,{newSel:r}=t,{state:i}=e,a=i.selection.main,o=e.inputState.lastKeyTime>Date.now()-100?e.inputState.lastKeyCode:-1;if(t.bounds){let{from:e,to:r}=t.bounds,s=a.from,c=null;(o===8||$X.android&&t.text.length=e&&a.to<=r&&(t.typeOver||l!=t.text)&&l.slice(0,a.from-e)==t.text.slice(0,a.from-e)&&l.slice(a.to-e)==t.text.slice(u=t.text.length-(l.length-(a.to-e)))?n={from:a.from,to:a.to,insert:zJ.of(t.text.slice(a.from-e,u).split(G$))}:(d=t1(l,t.text,s-e,c))&&($X.chrome&&o==13&&d.toB==d.from+2&&t.text.slice(d.from,d.toB)==`￿￿`&&d.toB--,n={from:e+d.from,to:e+d.toA,insert:zJ.of(t.text.slice(d.from,d.toB).split(G$))})}else r&&(!e.hasFocus&&i.facet(DQ)||i1(r,a))&&(r=null);if(!n&&!r)return!1;if(($X.mac||$X.android)&&n&&n.from==n.to&&n.from==a.head-1&&/^\. ?$/.test(n.insert.toString())&&e.contentDOM.getAttribute(`autocorrect`)==`off`?(r&&n.insert.length==2&&(r=Y.single(r.main.anchor-1,r.main.head-1)),n={from:n.from,to:n.to,insert:zJ.of([n.insert.toString().replace(`.`,` `)])}):i.doc.lineAt(a.from).toDate.now()-50?n={from:a.from,to:a.to,insert:i.toText(e.inputState.insertingText)}:$X.chrome&&n&&n.from==n.to&&n.from==a.head&&n.insert.toString()==` - `&&e.lineWrapping&&(r&&=Y.single(r.main.anchor-1,r.main.head-1),n={from:a.from,to:a.to,insert:zJ.of([` `])}),n)return $$(e,n,r,o);if(r&&!i1(r,a)){let t=!1,n=`select`;return e.inputState.lastSelectionTime>Date.now()-50&&(e.inputState.lastSelectionOrigin==`select`&&(t=!0),n=e.inputState.lastSelectionOrigin,n==`select.pointer`&&(r=B$(i.facet(LQ).map(t=>t(e)),r))),e.dispatch({selection:r,scrollIntoView:t,userEvent:n}),!0}else return!1}function $$(e,t,n,r=-1){if($X.ios&&e.inputState.flushIOSKey(t))return!0;let i=e.state.selection.main;if($X.android&&(t.to==i.to&&(t.from==i.from||t.from==i.from-1&&e.state.sliceDoc(t.from,i.from)==` `)&&t.insert.length==1&&t.insert.lines==2&&FZ(e.contentDOM,`Enter`,13)||(t.from==i.from-1&&t.to==i.to&&t.insert.length==0||r==8&&t.insert.lengthi.head)&&FZ(e.contentDOM,`Backspace`,8)||t.from==i.from&&t.to==i.to+1&&t.insert.length==0&&FZ(e.contentDOM,`Delete`,46)))return!0;let a=t.insert.toString();e.inputState.composing>=0&&e.inputState.composing++;let o,s=()=>o||=e1(e,t,n);return e.state.facet(gQ).some(n=>n(e,t.from,t.to,a,s))||e.dispatch(s()),!0}function e1(e,t,n){let r,i=e.state,a=i.selection.main,o=-1;if(t.from==t.to&&t.froma.to){let n=t.fromt(e)),r,n);t.from==s&&(o=s)}if(o>-1)r={changes:t,selection:Y.cursor(t.from+t.insert.length,-1)};else if(t.from>=a.from&&t.to<=a.to&&t.to-t.from>=(a.to-a.from)/3&&(!n||n.main.empty&&n.main.from==t.from+t.insert.length)&&e.inputState.composing<0){let n=a.fromt.to?i.sliceDoc(t.to,a.to):``;r=i.replaceSelection(e.state.toText(n+t.insert.sliceString(0,void 0,e.state.lineBreak)+o))}else{let o=i.changes(t),s=n&&n.main.to<=o.newLength?n.main:void 0;if(i.selection.ranges.length>1&&(e.inputState.composing>=0||e.inputState.compositionPendingChange)&&t.to<=a.to+10&&t.to>=a.to-10){let c=e.state.sliceDoc(t.from,t.to),l,u=n&&S$(e,n.main.head);if(u){let e=t.insert.length-(t.to-t.from);l={from:u.from,to:u.to-e}}else l=e.state.doc.lineAt(a.head);let d=a.to-t.to;r=i.changeByRange(n=>{if(n.from==a.from&&n.to==a.to)return{changes:o,range:s||n.map(o)};let r=n.to-d,u=r-c.length;if(e.state.sliceDoc(u,r)!=c||r>=l.from&&u<=l.to)return{range:n};let f=i.changes({from:u,to:r,insert:t.insert}),p=n.to-a.to;return{changes:f,range:s?Y.range(Math.max(0,s.anchor+p),Math.max(0,s.head+p)):n.map(f)}})}else r={changes:o,selection:s&&i.selection.replaceRange(s)}}let s=`input.type`;return(e.composing||e.inputState.compositionPendingChange&&e.inputState.compositionEndedAt>Date.now()-50)&&(e.inputState.compositionPendingChange=!1,s+=`.compose`,e.inputState.compositionFirstChange&&(s+=`.start`,e.inputState.compositionFirstChange=!1)),i.update(r,{userEvent:s,scrollIntoView:!0})}function t1(e,t,n,r){let i=Math.min(e.length,t.length),a=0;for(;a0&&s>0&&e.charCodeAt(o-1)==t.charCodeAt(s-1);)o--,s--;if(r==`end`){let e=Math.max(0,a-Math.min(o,s));n-=o+e-a}if(o=o?a-n:0;a-=e,s=a+(s-o),o=a}else if(s=s?a-n:0;a-=e,o=a+(o-s),s=a}return{from:a,toA:o,toB:s}}function n1(e){let t=[];if(e.root.activeElement!=e.contentDOM)return t;let{anchorNode:n,anchorOffset:r,focusNode:i,focusOffset:a}=e.observer.selectionRange;return n&&(t.push(new Y$(n,r)),(i!=n||a!=r)&&t.push(new Y$(i,a))),t}function r1(e,t){if(e.length==0)return null;let n=e[0].pos,r=e.length==2?e[1].pos:n;return n>-1&&r>-1?Y.single(n+t,r+t):null}function i1(e,t){return t.head==e.main.head&&t.anchor==e.main.anchor}var a1=class{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText=``,this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,$X.safari&&e.contentDOM.addEventListener(`input`,()=>null),$X.gecko&&V1(e.contentDOM.ownerDocument)}handleEvent(e){!v1(this.view,e)||this.ignoreDuringComposition(e)||e.type==`keydown`&&this.keydown(e)||(this.view.updateState==0?this.runHandlers(e.type,e):Promise.resolve().then(()=>this.runHandlers(e.type,e)))}runHandlers(e,t){let n=this.handlers[e];if(n){for(let e of n.observers)e(this.view,t);for(let e of n.handlers){if(t.defaultPrevented)break;if(e(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=s1(e),n=this.handlers,r=this.view.contentDOM;for(let e in t)if(e!=`scroll`){let i=!t[e].handlers.length,a=n[e];a&&i!=!a.handlers.length&&(r.removeEventListener(e,this.handleEvent),a=null),a||r.addEventListener(e,this.handleEvent,{passive:i})}for(let e in n)e!=`scroll`&&!t[e]&&r.removeEventListener(e,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&u1.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),$X.android&&$X.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let t;return $X.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&!e.shiftKey&&((t=c1.find(t=>t.keyCode==e.keyCode))&&!e.ctrlKey||l1.indexOf(e.key)>-1&&e.ctrlKey)?(this.pendingIOSKey=t||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let t=this.pendingIOSKey;return!t||t.key==`Enter`&&e&&e.from0?!0:$X.safari&&!$X.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function o1(e,t){return(n,r)=>{try{return t.call(e,r,n)}catch(e){EQ(n.state,e)}}}function s1(e){let t=Object.create(null);function n(e){return t[e]||(t[e]={observers:[],handlers:[]})}for(let t of e){let e=t.spec,r=e&&e.plugin.domEventHandlers,i=e&&e.plugin.domEventObservers;if(r)for(let e in r){let i=r[e];i&&n(e).handlers.push(o1(t.value,i))}if(i)for(let e in i){let r=i[e];r&&n(e).observers.push(o1(t.value,r))}}for(let e in y1)n(e).handlers.push(y1[e]);for(let e in b1)n(e).observers.push(b1[e]);return t}var c1=[{key:`Backspace`,keyCode:8,inputType:`deleteContentBackward`},{key:`Enter`,keyCode:13,inputType:`insertParagraph`},{key:`Enter`,keyCode:13,inputType:`insertLineBreak`},{key:`Delete`,keyCode:46,inputType:`deleteContentForward`}],l1=`dthko`,u1=[16,17,18,20,91,92,224,225],d1=6;function f1(e){return Math.max(0,e)*.7+8}function p1(e,t){return Math.max(Math.abs(e.clientX-t.clientX),Math.abs(e.clientY-t.clientY))}var m1=class{constructor(e,t,n,r){this.view=e,this.startEvent=t,this.style=n,this.mustSelect=r,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=kZ(e.contentDOM),this.atoms=e.state.facet(LQ).map(t=>t(e));let i=e.contentDOM.ownerDocument;i.addEventListener(`mousemove`,this.move=this.move.bind(this)),i.addEventListener(`mouseup`,this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(iX.allowMultipleSelections)&&h1(e,t),this.dragging=_1(e,t)&&A1(t)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&p1(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let t=0,n=0,r=0,i=0,a=this.view.win.innerWidth,o=this.view.win.innerHeight;this.scrollParents.x&&({left:r,right:a}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:i,bottom:o}=this.scrollParents.y.getBoundingClientRect());let s=VQ(this.view);e.clientX-s.left<=r+d1?t=-f1(r-e.clientX):e.clientX+s.right>=a-d1&&(t=f1(e.clientX-a)),e.clientY-s.top<=i+d1?n=-f1(i-e.clientY):e.clientY+s.bottom>=o-d1&&(n=f1(e.clientY-o)),this.setScrollSpeed(t,n)}up(e){this.dragging??this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener(`mousemove`,this.move),e.removeEventListener(`mouseup`,this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:t}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),t&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=t,t=0),(e||t)&&this.view.win.scrollBy(e,t),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:t}=this,n=B$(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!n.eq(t.state.selection,this.dragging===!1))&&this.view.dispatch({selection:n,userEvent:`select.pointer`}),this.mustSelect=!1}update(e){e.transactions.some(e=>e.isUserEvent(`input.type`))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}};function h1(e,t){let n=e.state.facet(dQ);return n.length?n[0](t):$X.mac?t.metaKey:t.ctrlKey}function g1(e,t){let n=e.state.facet(fQ);return n.length?n[0](t):$X.mac?!t.altKey:!t.ctrlKey}function _1(e,t){let{main:n}=e.state.selection;if(n.empty)return!1;let r=gZ(e.root);if(!r||r.rangeCount==0)return!0;let i=r.getRangeAt(0).getClientRects();for(let e=0;e=t.clientX&&n.top<=t.clientY&&n.bottom>=t.clientY)return!0}return!1}function v1(e,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let n=t.target,r;n!=e.contentDOM;n=n.parentNode)if(!n||n.nodeType==11||(r=KQ.get(n))&&r.isWidget()&&!r.isHidden&&r.widget.ignoreEvent(t))return!1;return!0}var y1=Object.create(null),b1=Object.create(null),x1=$X.ie&&$X.ie_version<15||$X.ios&&$X.webkit_version<604;function S1(e){let t=e.dom.parentNode;if(!t)return;let n=t.appendChild(document.createElement(`textarea`));n.style.cssText=`position: fixed; left: -10000px; top: 10px`,n.focus(),setTimeout(()=>{e.focus(),n.remove(),w1(e,n.value)},50)}function C1(e,t,n){for(let r of e.facet(t))n=r(n,e);return n}function w1(e,t){t=C1(e.state,vQ,t);let{state:n}=e,r,i=1,a=n.toText(t),o=a.lines==n.selection.ranges.length;if(I1!=null&&n.selection.ranges.every(e=>e.empty)&&I1==a.toString()){let e=-1;r=n.changeByRange(r=>{let s=n.doc.lineAt(r.from);if(s.from==e)return{range:r};e=s.from;let c=n.toText((o?a.line(i++).text:t)+n.lineBreak);return{changes:{from:s.from,insert:c},range:Y.cursor(r.from+c.length)}})}else r=o?n.changeByRange(e=>{let t=a.line(i++);return{changes:{from:e.from,to:e.to,insert:t.text},range:Y.cursor(e.from+t.length)}}):n.replaceSelection(a);e.dispatch(r,{userEvent:`input.paste`,scrollIntoView:!0})}b1.scroll=e=>{e.inputState.lastScrollTop=e.scrollDOM.scrollTop,e.inputState.lastScrollLeft=e.scrollDOM.scrollLeft},b1.wheel=b1.mousewheel=e=>{e.inputState.lastWheelEvent=Date.now()},y1.keydown=(e,t)=>(e.inputState.setSelectionOrigin(`select`),t.keyCode==27&&e.inputState.tabFocusMode!=0&&(e.inputState.tabFocusMode=Date.now()+2e3),!1),b1.touchstart=(e,t)=>{let n=e.inputState,r=t.targetTouches[0];n.lastTouchTime=Date.now(),r&&(n.lastTouchX=r.clientX,n.lastTouchY=r.clientY),n.setSelectionOrigin(`select.pointer`)},b1.touchmove=e=>{e.inputState.setSelectionOrigin(`select.pointer`)},y1.mousedown=(e,t)=>{if(e.observer.flush(),e.inputState.lastTouchTime>Date.now()-2e3)return!1;let n=null;for(let r of e.state.facet(pQ))if(n=r(e,t),n)break;if(!n&&t.button==0&&(n=j1(e,t)),n){let r=!e.hasFocus;e.inputState.startMouseSelection(new m1(e,t,n,r)),r&&e.observer.ignore(()=>{MZ(e.contentDOM);let t=e.root.activeElement;t&&!t.contains(e.contentDOM)&&t.blur()});let i=e.inputState.mouseSelection;if(i)return i.start(t),i.dragging===!1}else e.inputState.setSelectionOrigin(`select.pointer`);return!1};function T1(e,t,n,r){if(r==1)return Y.cursor(t,n);if(r==2)return M$(e.state,t,n);{let r=e.docView.lineAt(t,n),i=e.state.doc.lineAt(r?r.posAtEnd:t),a=r?r.posAtStart:i.from,o=r?r.posAtEnd:i.to;return oDate.now()-400&&Math.abs(t.clientX-e.clientX)<2&&Math.abs(t.clientY-e.clientY)<2?(O1+1)%3:1}function j1(e,t){let n=e.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),r=A1(t),i=e.state.selection;return{update(e){e.docChanged&&(n.pos=e.changes.mapPos(n.pos),i=i.map(e.changes))},get(t,a,o){let s=e.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),c,l=T1(e,s.pos,s.assoc,r);if(n.pos!=s.pos&&!a){let t=T1(e,n.pos,n.assoc,r),i=Math.min(t.from,l.from),a=Math.max(t.to,l.to);l=i1&&(c=M1(i,s.pos))?c:o?i.addRange(l):Y.create([l])}}}function M1(e,t){for(let n=0;n=t)return Y.create(e.ranges.slice(0,n).concat(e.ranges.slice(n+1)),e.mainIndex==n?0:e.mainIndex-+(e.mainIndex>n))}return null}y1.dragstart=(e,t)=>{let{selection:{main:n}}=e.state;if(t.target.draggable){let r=e.docView.tile.nearest(t.target);if(r&&r.isWidget()){let e=r.posAtStart,t=e+r.length;(e>=n.to||t<=n.from)&&(n=Y.range(e,t))}}let{inputState:r}=e;return r.mouseSelection&&(r.mouseSelection.dragging=!0),r.draggedContent=n,t.dataTransfer&&(t.dataTransfer.setData(`Text`,C1(e.state,yQ,e.state.sliceDoc(n.from,n.to))),t.dataTransfer.effectAllowed=`copyMove`),!1},y1.dragend=e=>(e.inputState.draggedContent=null,!1);function N1(e,t,n,r){if(n=C1(e.state,vQ,n),!n)return;let i=e.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:a}=e.inputState,o=r&&a&&g1(e,t)?{from:a.from,to:a.to}:null,s={from:i,insert:n},c=e.state.changes(o?[o,s]:s);e.focus(),e.dispatch({changes:c,selection:{anchor:c.mapPos(i,-1),head:c.mapPos(i,1)},userEvent:o?`move.drop`:`input.drop`}),e.inputState.draggedContent=null}y1.drop=(e,t)=>{if(!t.dataTransfer)return!1;if(e.state.readOnly)return!0;let n=t.dataTransfer.files;if(n&&n.length){let r=Array(n.length),i=0,a=()=>{++i==n.length&&N1(e,t,r.filter(e=>e!=null).join(e.state.lineBreak),!1)};for(let e=0;e{/[\x00-\x08\x0e-\x1f]{2}/.test(t.result)||(r[e]=t.result),a()},t.readAsText(n[e])}return!0}else{let n=t.dataTransfer.getData(`Text`);if(n)return N1(e,t,n,!0),!0}return!1},y1.paste=(e,t)=>{if(e.state.readOnly)return!0;e.observer.flush();let n=x1?null:t.clipboardData;return n?(w1(e,n.getData(`text/plain`)||n.getData(`text/uri-list`)),!0):(S1(e),!1)};function P1(e,t){let n=e.dom.parentNode;if(!n)return;let r=n.appendChild(document.createElement(`textarea`));r.style.cssText=`position: fixed; left: -10000px; top: 10px`,r.value=t,r.focus(),r.selectionEnd=t.length,r.selectionStart=0,setTimeout(()=>{r.remove(),e.focus()},50)}function F1(e){let t=[],n=[],r=!1;for(let r of e.selection.ranges)r.empty||(t.push(e.sliceDoc(r.from,r.to)),n.push(r));if(!t.length){let i=-1;for(let{from:r}of e.selection.ranges){let a=e.doc.lineAt(r);a.number>i&&(t.push(a.text),n.push({from:a.from,to:Math.min(e.doc.length,a.to+1)})),i=a.number}r=!0}return{text:C1(e,yQ,t.join(e.lineBreak)),ranges:n,linewise:r}}var I1=null;y1.copy=y1.cut=(e,t)=>{if(!vZ(e.contentDOM,e.observer.selectionRange))return!1;let{text:n,ranges:r,linewise:i}=F1(e.state);if(!n&&!i)return!1;I1=i?n:null,t.type==`cut`&&!e.state.readOnly&&e.dispatch({changes:r,scrollIntoView:!0,userEvent:`delete.cut`});let a=x1?null:t.clipboardData;return a?(a.clearData(),a.setData(`text/plain`,n),!0):(P1(e,n),!1)};var L1=BY.define();function R1(e,t){let n=[];for(let r of e.facet(_Q)){let i=r(e,t);i&&n.push(i)}return n.length?e.update({effects:n,annotations:L1.of(!0)}):null}function z1(e){setTimeout(()=>{let t=e.hasFocus;if(t!=e.inputState.notifiedFocused){let n=R1(e.state,t);n?e.dispatch(n):e.update([])}},10)}b1.focus=e=>{e.inputState.lastFocusTime=Date.now(),!e.scrollDOM.scrollTop&&(e.inputState.lastScrollTop||e.inputState.lastScrollLeft)&&(e.scrollDOM.scrollTop=e.inputState.lastScrollTop,e.scrollDOM.scrollLeft=e.inputState.lastScrollLeft),z1(e)},b1.blur=e=>{e.observer.clearSelectionRange(),z1(e)},b1.compositionstart=b1.compositionupdate=e=>{e.observer.editContext||(e.inputState.compositionFirstChange??(e.inputState.compositionFirstChange=!0),e.inputState.composing<0&&(e.inputState.composing=0))},b1.compositionend=e=>{e.observer.editContext||(e.inputState.composing=-1,e.inputState.compositionEndedAt=Date.now(),e.inputState.compositionPendingKey=!0,e.inputState.compositionPendingChange=e.observer.pendingRecords().length>0,e.inputState.compositionFirstChange=null,$X.chrome&&$X.android?e.observer.flushSoon():e.inputState.compositionPendingChange?Promise.resolve().then(()=>e.observer.flush()):setTimeout(()=>{e.inputState.composing<0&&e.docView.hasComposition&&e.update([])},50))},b1.contextmenu=e=>{e.inputState.lastContextMenu=Date.now()},y1.beforeinput=(e,t)=>{if((t.inputType==`insertText`||t.inputType==`insertCompositionText`)&&(e.inputState.insertingText=t.data,e.inputState.insertingTextAt=Date.now()),t.inputType==`insertReplacementText`&&e.observer.editContext){let n=t.dataTransfer?.getData(`text/plain`),r=t.getTargetRanges();if(n&&r.length){let t=r[0];return $$(e,{from:e.posAtDOM(t.startContainer,t.startOffset),to:e.posAtDOM(t.endContainer,t.endOffset),insert:e.state.toText(n)},null),!0}}let n;if($X.chrome&&$X.android&&(n=c1.find(e=>e.inputType==t.inputType))&&(e.observer.delayAndroidKey(n.key,n.keyCode),n.key==`Backspace`||n.key==`Delete`)){let t=window.visualViewport?.height||0;setTimeout(()=>{(window.visualViewport?.height||0)>t+10&&e.hasFocus&&(e.contentDOM.blur(),e.focus())},100)}return $X.ios&&t.inputType==`deleteContentForward`&&e.observer.flushSoon(),$X.safari&&t.inputType==`insertText`&&e.inputState.composing>=0&&setTimeout(()=>b1.compositionend(e,t),20),!1};var B1=new Set;function V1(e){B1.has(e)||(B1.add(e),e.addEventListener(`copy`,()=>{}),e.addEventListener(`cut`,()=>{}))}var H1=[`pre-wrap`,`normal`,`pre-line`,`break-spaces`],U1=!1;function W1(){U1=!1}var G1=class{constructor(e){this.lineWrapping=e,this.doc=zJ.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let n=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(n+=Math.max(0,Math.ceil((t-e-n*this.lineLength*.5)/this.lineLength))),this.lineHeight*n}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return H1.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let n=0;n-1,s=Math.abs(t-this.lineHeight)>.3||this.lineWrapping!=o;if(this.lineWrapping=o,this.lineHeight=t,this.charWidth=n,this.textHeight=r,this.lineLength=i,s){this.heightSamples={};for(let e=0;e0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>Y1&&(U1=!0),this.height=e)}replace(t,n,r){return e.of(r)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,n,r){let i=this,a=n.doc;for(let o=r.length-1;o>=0;o--){let{fromA:s,toA:c,fromB:l,toB:u}=r[o],d=i.lineAt(s,J1.ByPosNoHeight,n.setDoc(t),0,0),f=d.to>=c?d:i.lineAt(c,J1.ByPosNoHeight,n,0,0);for(u+=f.to-c,c=f.to;o>0&&d.from<=r[o-1].toA;)s=r[o-1].fromA,l=r[o-1].fromB,o--,sa*2){let e=t[n-1];e.break?t.splice(--n,1,e.left,null,e.right):t.splice(--n,1,e.left,e.right),r+=1+e.break,i-=e.size}else if(a>i*2){let e=t[r];e.break?t.splice(r,1,e.left,null,e.right):t.splice(r,1,e.left,e.right),r+=2+e.break,a-=e.size}else break;else if(i=i&&a(this.lineAt(0,J1.ByPos,n,r,i))}setMeasuredHeight(e){let t=e.heights[e.index++];t<0?(this.spaceAbove=-t,t=e.heights[e.index++]):this.spaceAbove=0,this.setHeight(t)}updateHeight(e,t=0,n=!1,r){return r&&r.from<=t&&r.more&&this.setMeasuredHeight(r),this.outdated=!1,this}toString(){return`block(${this.length})`}},e0=class e extends $1{constructor(e,t,n){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=n}mainBlock(e,t){return new q1(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,n,r){let i=r[0];return r.length==1&&(i instanceof e||i instanceof t0&&i.flags&4)&&Math.abs(this.length-i.length)<10?(i instanceof t0?i=new e(i.length,this.height,this.spaceAbove):i.height=this.height,this.outdated||(i.outdated=!1),i):X1.of(r)}updateHeight(e,t=0,n=!1,r){return r&&r.from<=t&&r.more?this.setMeasuredHeight(r):(n||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:``}${this.widgetHeight?`:`+this.widgetHeight:``})`}},t0=class e extends X1{constructor(e){super(e,0)}heightMetrics(e,t){let n=e.doc.lineAt(t).number,r=e.doc.lineAt(t+this.length).number,i=r-n+1,a,o=0;if(e.lineWrapping){let t=Math.min(this.height,e.lineHeight*i);a=t/i,this.length>i+1&&(o=(this.height-t)/(this.length-i-1))}else a=this.height/i;return{firstLine:n,lastLine:r,perLine:a,perChar:o}}blockAt(e,t,n,r){let{firstLine:i,lastLine:a,perLine:o,perChar:s}=this.heightMetrics(t,r);if(t.lineWrapping){let i=r+(e0){let t=r[r.length-1];t instanceof e?r[r.length-1]=new e(t.length+i):r.push(null,new e(i-1))}if(t>0){let n=r[0];n instanceof e?r[0]=new e(t+n.length):r.unshift(new e(t-1),null)}return X1.of(r)}decomposeLeft(t,n){n.push(new e(t-1),null)}decomposeRight(t,n){n.push(null,new e(this.length-t-1))}updateHeight(t,n=0,r=!1,i){let a=n+this.length;if(i&&i.from<=n+this.length&&i.more){let r=[],o=Math.max(n,i.from),s=-1;for(i.from>n&&r.push(new e(i.from-n-1).updateHeight(t,n));o<=a&&i.more;){let e=t.doc.lineAt(o).length;r.length&&r.push(null);let n=i.heights[i.index++],a=0;n<0&&(a=-n,n=i.heights[i.index++]),s==-1?s=n:Math.abs(n-s)>=Y1&&(s=-2);let c=new e0(e,n,a);c.outdated=!1,r.push(c),o+=e+1}o<=a&&r.push(null,new e(a-o).updateHeight(t,o));let c=X1.of(r);return(s<0||Math.abs(c.height-this.height)>=Y1||Math.abs(s-this.heightMetrics(t,n).perLine)>=Y1)&&(U1=!0),Z1(this,c)}else (r||this.outdated)&&(this.setHeight(t.heightForGap(n,n+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},n0=class extends X1{constructor(e,t,n){super(e.length+t+n.length,e.height+n.height,t|(e.outdated||n.outdated?2:0)),this.left=e,this.right=n,this.size=e.size+n.size}get break(){return this.flags&1}blockAt(e,t,n,r){let i=n+this.left.height;return eo))return c;let l=t==J1.ByPosNoHeight?J1.ByPosNoHeight:J1.ByPos;return s?c.join(this.right.lineAt(o,l,n,a,o)):this.left.lineAt(o,l,n,r,i).join(c)}forEachLine(e,t,n,r,i,a){let o=r+this.left.height,s=i+this.left.length+this.break;if(this.break)e=s&&this.right.forEachLine(e,t,n,o,s,a);else{let c=this.lineAt(s,J1.ByPos,n,r,i);e=e&&c.from<=t&&a(c),t>c.to&&this.right.forEachLine(c.to+1,t,n,o,s,a)}}replace(e,t,n){let r=this.left.length+this.break;if(tthis.left.length)return this.balanced(this.left,this.right.replace(e-r,t-r,n));let i=[];e>0&&this.decomposeLeft(e,i);let a=i.length;for(let e of n)i.push(e);if(e>0&&r0(i,a-1),t=n&&t.push(null)),e>n&&this.right.decomposeLeft(e-n,t)}decomposeRight(e,t){let n=this.left.length,r=n+this.break;if(e>=r)return this.right.decomposeRight(e-r,t);e2*t.size||t.size>2*e.size?X1.of(this.break?[e,null,t]:[e,t]):(this.left=Z1(this.left,e),this.right=Z1(this.right,t),this.setHeight(e.height+t.height),this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,n=!1,r){let{left:i,right:a}=this,o=t+i.length+this.break,s=null;return r&&r.from<=t+i.length&&r.more?s=i=i.updateHeight(e,t,n,r):i.updateHeight(e,t,n),r&&r.from<=o+a.length&&r.more?s=a=a.updateHeight(e,o,n,r):a.updateHeight(e,o,n),s?this.balanced(i,a):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?` `:`-`)+this.right}};function r0(e,t){let n,r;e[t]==null&&(n=e[t-1])instanceof t0&&(r=e[t+1])instanceof t0&&e.splice(t-1,3,new t0(n.length+1+r.length))}var i0=5,a0=class e{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let e=Math.min(t,this.lineEnd),n=this.nodes[this.nodes.length-1];n instanceof e0?n.length+=e-this.pos:(e>this.pos||!this.isCovered)&&this.nodes.push(new e0(e-this.pos,-1,0)),this.writtenTo=e,t>e&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,n){if(e=i0)&&this.addLineDeco(r,i,a)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenToe&&this.nodes.push(new e0(this.pos-e,-1,0)),this.writtenTo=this.pos}blankContent(e,t){let n=new t0(t-e);return this.oracle.doc.lineAt(e).to==t&&(n.flags|=4),n}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof e0)return e;let t=new e0(0,-1,0);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos+=e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,n){let r=this.ensureLine();r.length+=n,r.collapsed+=n,r.widgetHeight=Math.max(r.widgetHeight,e),r.breaks+=t,this.writtenTo=this.pos+=n}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof e0)&&!this.isCovered?this.nodes.push(new e0(0,-1,0)):(this.writtenTon.clientHeight||n.scrollWidth>n.clientWidth)&&r.overflow!=`visible`){let r=n.getBoundingClientRect();a=Math.max(a,r.left),o=Math.min(o,r.right),s=Math.max(s,r.top),c=Math.min(t==e.parentNode?i.innerHeight:c,r.bottom)}t=r.position==`absolute`||r.position==`fixed`?n.offsetParent:n.parentNode}else if(t.nodeType==11)t=t.host;else break;return{left:a-n.left,right:Math.max(a,o)-n.left,top:s-(n.top+t),bottom:Math.max(s,c)-(n.top+t)}}function l0(e){let t=e.getBoundingClientRect(),n=e.ownerDocument.defaultView||window;return t.left0&&t.top0}function u0(e,t){let n=e.getBoundingClientRect();return{left:0,right:n.right-n.left,top:t,bottom:n.bottom-(n.top+t)}}var d0=class{constructor(e,t,n,r){this.from=e,this.to=t,this.size=n,this.displaySize=r}static same(e,t){if(e.length!=t.length)return!1;for(let n=0;ntypeof e!=`function`&&e.class==`cm-lineWrapping`);this.heightOracle=new G1(n),this.stateDeco=b0(t),this.heightMap=X1.empty().applyChanges(this.stateDeco,zJ.empty,this.heightOracle.setDoc(t.doc),[new UQ(0,0,0,t.doc.length)]);for(let e=0;e<2&&(this.viewport=this.getViewport(0,null),this.updateForViewport());e++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=cZ.set(this.lineGaps.map(e=>e.draw(this,!1))),this.scrollParent=e.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let n=0;n<=1;n++){let r=n?t.head:t.anchor;if(!e.some(({from:e,to:t})=>r>=e&&r<=t)){let{from:t,to:n}=this.lineBlockAt(r);e.push(new m0(t,n))}}return this.viewports=e.sort((e,t)=>e.from-t.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?y0:new x0(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(S0(e,this.scaler))})}update(e,t=null){this.state=e.state;let n=this.stateDeco;this.stateDeco=b0(this.state);let r=e.changedRanges,i=UQ.extendWithRanges(r,o0(n,this.stateDeco,e?e.changes:aY.empty(this.state.doc.length))),a=this.heightMap.height,o=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);W1(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),i),(this.heightMap.height!=a||U1)&&(e.flags|=2),o?(this.scrollAnchorPos=e.changes.mapPos(o.from,-1),this.scrollAnchorHeight=o.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=a);let s=i.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.heads.to)||!this.viewportIsAppropriate(s))&&(s=this.getViewport(0,t));let c=s.from!=this.viewport.from||s.to!=this.viewport.to;this.viewport=s,e.flags|=this.updateForViewport(),(c||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&(e.selectionSet||e.focusChanged)&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(xQ)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:e}=this,t=e.contentDOM,n=window.getComputedStyle(t),r=this.heightOracle,i=n.whiteSpace;this.defaultTextDirection=n.direction==`rtl`?HZ.RTL:HZ.LTR;let a=this.heightOracle.mustRefreshForWrapping(i)||this.mustMeasureContent===`refresh`,o=t.getBoundingClientRect(),s=a||this.mustMeasureContent||this.contentDOMHeight!=o.height;this.contentDOMHeight=o.height,this.mustMeasureContent=!1;let c=0,l=0;if(o.width&&o.height){let{scaleX:e,scaleY:n}=DZ(t,o);(e>.005&&Math.abs(this.scaleX-e)>.005||n>.005&&Math.abs(this.scaleY-n)>.005)&&(this.scaleX=e,this.scaleY=n,c|=16,a=s=!0)}let u=(parseInt(n.paddingTop)||0)*this.scaleY,d=(parseInt(n.paddingBottom)||0)*this.scaleY;(this.paddingTop!=u||this.paddingBottom!=d)&&(this.paddingTop=u,this.paddingBottom=d,c|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(r.lineWrapping&&(s=!0),this.editorWidth=e.scrollDOM.clientWidth,c|=16);let f=kZ(this.view.contentDOM,!1).y;f!=this.scrollParent&&(this.scrollParent=f,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=RZ(this.scrollParent||e.win);let m=(this.printing?u0:c0)(t,this.paddingTop),h=m.top-this.pixelViewport.top,g=m.bottom-this.pixelViewport.bottom;this.pixelViewport=m;let _=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(_!=this.inView&&(this.inView=_,_&&(s=!0)),!this.inView&&!this.scrollTarget&&!l0(e.dom))return 0;let v=o.width;if((this.contentDOMWidth!=v||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=o.width,this.editorHeight=e.scrollDOM.clientHeight,c|=16),s){let t=e.docView.measureVisibleLineHeights(this.viewport);if(r.mustRefreshForHeights(t)&&(a=!0),a||r.lineWrapping&&Math.abs(v-this.contentDOMWidth)>r.charWidth){let{lineHeight:n,charWidth:o,textHeight:s}=e.docView.measureTextSize();a=n>0&&r.refresh(i,n,o,s,Math.max(5,v/o),t),a&&(e.docView.minWidth=0,c|=16)}h>0&&g>0?l=Math.max(h,g):h<0&&g<0&&(l=Math.min(h,g)),W1();for(let n of this.viewports){let i=n.from==this.viewport.from?t:e.docView.measureVisibleLineHeights(n);this.heightMap=(a?X1.empty().applyChanges(this.stateDeco,zJ.empty,this.heightOracle,[new UQ(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(r,0,a,new K1(n.from,i))}U1&&(c|=2)}let y=!this.viewportIsAppropriate(this.viewport,l)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return y&&(c&2&&(c|=this.updateScaler()),this.viewport=this.getViewport(l,this.scrollTarget),c|=this.updateForViewport()),(c&2||y)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(a?[]:this.lineGaps,e)),c|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),c}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let n=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),r=this.heightMap,i=this.heightOracle,{visibleTop:a,visibleBottom:o}=this,s=new m0(r.lineAt(a-n*1e3,J1.ByHeight,i,0,0).from,r.lineAt(o+(1-n)*1e3,J1.ByHeight,i,0,0).to);if(t){let{head:e}=t.range;if(es.to){let n=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),a=r.lineAt(e,J1.ByPos,i,0,0),o;o=t.y==`center`?(a.top+a.bottom)/2-n/2:t.y==`start`||t.y==`nearest`&&e=o+Math.max(10,Math.min(n,250)))&&r>a-2*1e3&&i>1,a=r<<1;if(this.defaultTextDirection!=HZ.LTR&&!n)return[];let o=[],s=(r,a,c,l)=>{if(a-rr&&ee.from>=c.from&&e.to<=c.to&&Math.abs(e.from-r)e.fromt));if(!f){if(ae.from<=a&&e.to>=a)){let e=t.moveToLineBoundary(Y.cursor(a),!1,!0).head;e>r&&(a=e)}let e=this.gapSize(c,r,a,l);f=new d0(r,a,e,n||e<2e6?e:2e6)}o.push(f)},c=t=>{if(t.length2e6)for(let n of e)n.from>=t.from&&n.fromt.from&&s(t.from,c,t,i),le.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let n=[];dX.spans(t,this.viewport.from,this.viewport.to,{span(e,t){n.push({from:e,to:t})},point(){}},20);let r=0;if(n.length!=this.visibleRanges.length)r=12;else for(let t=0;t=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||S0(this.heightMap.lineAt(e,J1.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(t=>t.top<=e&&t.bottom>=e)||S0(this.heightMap.lineAt(this.scaler.fromDOM(e),J1.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return S0(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},m0=class{constructor(e,t){this.from=e,this.to=t}};function h0(e,t,n){let r=[],i=e,a=0;return dX.spans(n,e,t,{span(){},point(e,t){e>i&&(r.push({from:i,to:e}),a+=e-i),i=t}},20),i=1)return t[t.length-1].to;let r=Math.floor(e*n);for(let e=0;;e++){let{from:n,to:i}=t[e],a=i-n;if(r<=a)return n+r;r-=a}}function _0(e,t){let n=0;for(let{from:r,to:i}of e.ranges){if(t<=i){n+=t-r;break}n+=i-r}return n/e.total}function v0(e,t){for(let n of e)if(t(n))return n}var y0={toDOM(e){return e},fromDOM(e){return e},scale:1,eq(e){return e==this}};function b0(e){let t=e.facet(PQ).filter(e=>typeof e!=`function`),n=e.facet(IQ).filter(e=>typeof e!=`function`);return n.length&&t.push(dX.join(n)),t}var x0=class e{constructor(e,t,n){let r=0,i=0,a=0;this.viewports=n.map(({from:n,to:i})=>{let a=t.lineAt(n,J1.ByPos,e,0,0).top,o=t.lineAt(i,J1.ByPos,e,0,0).bottom;return r+=o-a,{from:n,to:i,top:a,bottom:o,domTop:0,domBottom:0}}),this.scale=(7e6-r)/(t.height-r);for(let e of this.viewports)e.domTop=a+(e.top-i)*this.scale,a=e.domBottom=e.domTop+(e.bottom-e.top),i=e.bottom}toDOM(e){for(let t=0,n=0,r=0;;t++){let i=te.from==t.viewports[n].from&&e.to==t.viewports[n].to):!1}};function S0(e,t){if(t.scale==1)return e;let n=t.toDOM(e.top),r=t.toDOM(e.bottom);return new q1(e.from,e.length,n,r-n,Array.isArray(e._content)?e._content.map(e=>S0(e,t)):e._content)}var C0=hY.define({combine:e=>e.join(` `)}),w0=hY.define({combine:e=>e.indexOf(!0)>-1}),T0=AX.newName(),E0=AX.newName(),D0=AX.newName(),O0={"&light":`.`+E0,"&dark":`.`+D0};function k0(e,t,n){return new AX(t,{finish(t){return/&/.test(t)?t.replace(/&\w*/,t=>{if(t==`&`)return e;if(!n||!n[t])throw RangeError(`Unsupported selector: ${t}`);return n[t]}):e+` `+t}})}var A0=k0(`.`+T0,{"&":{position:`relative !important`,boxSizing:`border-box`,"&.cm-focused":{outline:`1px dotted #212121`},display:`flex !important`,flexDirection:`column`},".cm-scroller":{display:`flex !important`,alignItems:`flex-start !important`,fontFamily:`monospace`,lineHeight:1.4,height:`100%`,overflowX:`auto`,position:`relative`,zIndex:0,overflowAnchor:`none`},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:`block`,whiteSpace:`pre`,wordWrap:`normal`,boxSizing:`border-box`,minHeight:`100%`,padding:`4px 0`,outline:`none`,"&[contenteditable=true]":{WebkitUserModify:`read-write-plaintext-only`}},".cm-lineWrapping":{whiteSpace_fallback:`pre-wrap`,whiteSpace:`break-spaces`,wordBreak:`break-word`,overflowWrap:`anywhere`,flexShrink:1},"&light .cm-content":{caretColor:`black`},"&dark .cm-content":{caretColor:`white`},".cm-line":{display:`block`,padding:`0 2px 0 6px`},".cm-layer":{position:`absolute`,left:0,top:0,contain:`size style`,"& > *":{position:`absolute`}},"&light .cm-selectionBackground":{background:`#d9d9d9`},"&dark .cm-selectionBackground":{background:`#222`},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:`#d7d4f0`},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:`#233`},".cm-cursorLayer":{pointerEvents:`none`},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:`steps(1) cm-blink 1.2s infinite`},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:`1.2px solid black`,marginLeft:`-0.6px`,pointerEvents:`none`},".cm-cursor":{display:`none`},"&dark .cm-cursor":{borderLeftColor:`#ddd`},".cm-selectionHandle":{backgroundColor:`currentColor`,width:`1.5px`},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:`""`,backgroundColor:`inherit`,borderRadius:`50%`,width:`8px`,height:`8px`,position:`absolute`,left:`-3.25px`},".cm-selectionHandle-start::before":{top:`-8px`},".cm-selectionHandle-end::before":{bottom:`-8px`},".cm-dropCursor":{position:`absolute`},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:`block`},".cm-iso":{unicodeBidi:`isolate`},".cm-announced":{position:`fixed`,top:`-10000px`},"@media print":{".cm-announced":{display:`none`}},"&light .cm-activeLine":{backgroundColor:`#cceeff44`},"&dark .cm-activeLine":{backgroundColor:`#99eeff33`},"&light .cm-specialChar":{color:`red`},"&dark .cm-specialChar":{color:`#f78`},".cm-gutters":{flexShrink:0,display:`flex`,height:`100%`,boxSizing:`border-box`,zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:`#f5f5f5`,color:`#6c6c6c`,border:`0px solid #ddd`,"&.cm-gutters-before":{borderRightWidth:`1px`},"&.cm-gutters-after":{borderLeftWidth:`1px`}},"&dark .cm-gutters":{backgroundColor:`#333338`,color:`#ccc`},".cm-gutter":{display:`flex !important`,flexDirection:`column`,flexShrink:0,boxSizing:`border-box`,minHeight:`100%`,overflow:`hidden`},".cm-gutterElement":{boxSizing:`border-box`},".cm-lineNumbers .cm-gutterElement":{padding:`0 3px 0 5px`,minWidth:`20px`,textAlign:`right`,whiteSpace:`nowrap`},"&light .cm-activeLineGutter":{backgroundColor:`#e2f2ff`},"&dark .cm-activeLineGutter":{backgroundColor:`#222227`},".cm-panels":{boxSizing:`border-box`,position:`sticky`,left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:`#f5f5f5`,color:`black`},"&light .cm-panels-top":{borderBottom:`1px solid #ddd`},"&light .cm-panels-bottom":{borderTop:`1px solid #ddd`},"&dark .cm-panels":{backgroundColor:`#333338`,color:`white`},".cm-dialog":{padding:`2px 19px 4px 6px`,position:`relative`,"& label":{fontSize:`80%`}},".cm-dialog-close":{position:`absolute`,top:`3px`,right:`4px`,backgroundColor:`inherit`,border:`none`,font:`inherit`,fontSize:`14px`,padding:`0`},".cm-tab":{display:`inline-block`,overflow:`hidden`,verticalAlign:`bottom`},".cm-widgetBuffer":{verticalAlign:`text-top`,height:`1em`,width:0,display:`inline`},".cm-placeholder":{color:`#888`,display:`inline-block`,verticalAlign:`top`,userSelect:`none`},".cm-highlightSpace":{backgroundImage:`radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)`,backgroundPosition:`center`},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:`auto 100%`,backgroundPosition:`right 90%`,backgroundRepeat:`no-repeat`},".cm-trailingSpace":{backgroundColor:`#ff332255`},".cm-button":{verticalAlign:`middle`,color:`inherit`,fontSize:`70%`,padding:`.2em 1em`,borderRadius:`1px`},"&light .cm-button":{backgroundImage:`linear-gradient(#eff1f5, #d9d9df)`,border:`1px solid #888`,"&:active":{backgroundImage:`linear-gradient(#b4b4b4, #d0d3d6)`}},"&dark .cm-button":{backgroundImage:`linear-gradient(#393939, #111)`,border:`1px solid #888`,"&:active":{backgroundImage:`linear-gradient(#111, #333)`}},".cm-textfield":{verticalAlign:`middle`,color:`inherit`,fontSize:`70%`,border:`1px solid silver`,padding:`.2em .5em`},"&light .cm-textfield":{backgroundColor:`white`},"&dark .cm-textfield":{border:`1px solid #555`,backgroundColor:`inherit`}},O0),j0={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},M0=$X.ie&&$X.ie_version<=11,N0=class{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new AZ,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let e of t)this.queue.push(e);($X.ie&&$X.ie_version<=11||$X.ios&&e.composing)&&t.some(e=>e.type==`childList`&&e.removedNodes.length||e.type==`characterData`&&e.oldValue.length>e.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&$X.android&&e.constructor.EDIT_CONTEXT!==!1&&!($X.chrome&&$X.chrome_version<126)&&(this.editContext=new L0(e),e.state.facet(DQ)&&(e.contentDOM.editContext=this.editContext.editContext)),M0&&(this.onCharData=e=>{this.queue.push({target:e.target,type:`characterData`,oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia(`print`)),typeof ResizeObserver==`function`&&(this.resizeScroll=new ResizeObserver(()=>{this.view.docView?.lastUpdate{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent(`Event`)))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent(`Event`))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers(`scroll`,e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type==`change`||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,n)=>t!=e[n]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:n}=this,r=this.selectionRange;if(n.state.facet(DQ)?n.root.activeElement!=this.dom:!vZ(this.dom,r))return;let i=r.anchorNode&&n.docView.tile.nearest(r.anchorNode);if(i&&i.isWidget()&&i.widget.ignoreEvent(e)){t||(this.selectionChanged=!1);return}($X.ie&&$X.ie_version<=11||$X.android&&$X.chrome)&&!n.state.selection.main.empty&&r.focusNode&&bZ(r.focusNode,r.focusOffset,r.anchorNode,r.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=gZ(e.root);if(!t)return!1;let n=$X.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&I0(this.view,t)||t;if(!n||this.selectionRange.eq(n))return!1;let r=vZ(this.dom,n);return r&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let e=this.delayedAndroidKey;e&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=e.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&e.force&&FZ(this.dom,e.key,e.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(e)}(!this.delayedAndroidKey||e==`Enter`)&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,n=-1,r=!1;for(let i of e){let e=this.readMutation(i);e&&(e.typeOver&&(r=!0),t==-1?{from:t,to:n}=e:(t=Math.min(e.from,t),n=Math.max(e.to,n)))}return{from:t,to:n,typeOver:r}}readChange(){let{from:e,to:t,typeOver:n}=this.processRecords(),r=this.selectionChanged&&vZ(this.dom,this.selectionRange);if(e<0&&!r)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let i=new X$(this.view,e,t,n);return this.view.docView.domChanged={newSel:i.newSel?i.newSel.main:null},i}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return this.view.requestMeasure(),!1;let n=this.view.state,r=Q$(this.view,t);return this.view.state==n&&(t.domChanged||t.newSel&&!i1(this.view.state.selection,t.newSel.main))&&this.view.update([]),r}readMutation(e){let t=this.view.docView.tile.nearest(e.target);if(!t||t.isWidget())return null;if(t.markDirty(e.type==`attributes`),e.type==`childList`){let n=P0(t,e.previousSibling||e.target.previousSibling,-1),r=P0(t,e.nextSibling||e.target.nextSibling,1);return{from:n?t.posAfter(n):t.posAtStart,to:r?t.posBefore(r):t.posAtEnd,typeOver:!1}}else if(e.type==`characterData`)return{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue};else return null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener(`resize`,this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener(`change`,this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener(`beforeprint`,this.onPrint),e.addEventListener(`scroll`,this.onScroll),e.document.addEventListener(`selectionchange`,this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener(`scroll`,this.onScroll),e.removeEventListener(`resize`,this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener(`change`,this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener(`beforeprint`,this.onPrint),e.document.removeEventListener(`selectionchange`,this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(DQ)!=e.state.facet(DQ)&&(e.view.contentDOM.editContext=e.state.facet(DQ)?this.editContext.editContext:null))}destroy(){var e,t,n;this.stop(),(e=this.intersection)==null||e.disconnect(),(t=this.gapIntersection)==null||t.disconnect(),(n=this.resizeScroll)==null||n.disconnect();for(let e of this.scrollTargets)e.removeEventListener(`scroll`,this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function P0(e,t,n){for(;t;){let r=KQ.get(t);if(r&&r.parent==e)return r;let i=t.parentNode;t=i==e.dom?n>0?t.nextSibling:t.previousSibling:i}return null}function F0(e,t){let n=t.startContainer,r=t.startOffset,i=t.endContainer,a=t.endOffset,o=e.docView.domAtPos(e.state.selection.main.anchor,1);return bZ(o.node,o.offset,i,a)&&([n,r,i,a]=[i,a,n,r]),{anchorNode:n,anchorOffset:r,focusNode:i,focusOffset:a}}function I0(e,t){if(t.getComposedRanges){let n=t.getComposedRanges(e.root)[0];if(n)return F0(e,n)}let n=null;function r(e){e.preventDefault(),e.stopImmediatePropagation(),n=e.getTargetRanges()[0]}return e.contentDOM.addEventListener(`beforeinput`,r,!0),e.dom.ownerDocument.execCommand(`indent`),e.contentDOM.removeEventListener(`beforeinput`,r,!0),n?F0(e,n):null}var L0=class{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let t=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=n=>{let r=e.state.selection.main,{anchor:i,head:a}=r,o=this.toEditorPos(n.updateRangeStart),s=this.toEditorPos(n.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:n.updateRangeStart,editorBase:o,drifted:!1});let c=s-o>n.text.length;o==this.from&&ithis.to&&(s=i);let l=t1(e.state.sliceDoc(o,s),n.text,(c?r.from:r.to)-o,c?`end`:null);if(!l){let t=Y.single(this.toEditorPos(n.selectionStart),this.toEditorPos(n.selectionEnd));i1(t,r)||e.dispatch({selection:t,userEvent:`select`});return}let u={from:l.from+o,to:l.toA+o,insert:zJ.of(n.text.slice(l.from,l.toB).split(` -`))};if(($X.mac||$X.android)&&u.from==a-1&&/^\. ?$/.test(n.text)&&e.contentDOM.getAttribute(`autocorrect`)==`off`&&(u={from:o,to:s,insert:zJ.of([n.text.replace(`.`,` `)])}),this.pendingContextChange=u,!e.state.readOnly){let t=this.to-this.from+(u.to-u.from+u.insert.length);$$(e,u,Y.single(this.toEditorPos(n.selectionStart,t),this.toEditorPos(n.selectionEnd,t)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),u.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,n.updateRangeStart-1),Math.min(t.text.length,n.updateRangeStart+1)))&&this.handlers.compositionend(n)},this.handlers.characterboundsupdate=n=>{let r=[],i=null;for(let t=this.toEditorPos(n.rangeStart),a=this.toEditorPos(n.rangeEnd);t{let n=[];for(let e of t.getTextFormats()){let t=e.underlineStyle,r=e.underlineThickness;if(!/none/i.test(t)&&!/none/i.test(r)){let i=this.toEditorPos(e.rangeStart),a=this.toEditorPos(e.rangeEnd);if(i{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:t}=this.composing;this.composing=null,t&&this.reset(e.state)}};for(let e in this.handlers)t.addEventListener(e,this.handlers[e]);this.measureReq={read:e=>{this.editContext.updateControlBounds(e.contentDOM.getBoundingClientRect());let t=gZ(e.root);t&&t.rangeCount&&this.editContext.updateSelectionBounds(t.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,n=!1,r=this.pendingContextChange;return e.changes.iterChanges((i,a,o,s,c)=>{if(n)return;let l=c.length-(a-i);if(r&&a>=r.to)if(r.from==i&&r.to==a&&r.insert.eq(c)){r=this.pendingContextChange=null,t+=l,this.to+=l;return}else r=null,this.revertPending(e.state);if(i+=t,a+=t,a<=this.from)this.from+=l,this.to+=l;else if(ithis.to||this.to-this.from+c.length>3e4){n=!0;return}this.editContext.updateText(this.toContextPos(i),this.toContextPos(a),c.toString()),this.to+=l}t+=l}),r&&!n&&this.revertPending(e.state),!n}update(e){let t=this.pendingContextChange,n=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(n.from,n.to)&&e.transactions.some(e=>!e.isUserEvent(`input.type`)&&e.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,n=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),r=this.toContextPos(t.head);(this.editContext.selectionStart!=n||this.editContext.selectionEnd!=r)&&this.editContext.updateSelection(n,r)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let n=this.composing;return n&&n.drifted?n.editorBase+(e-n.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},R0=class e{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement(`div`),this.scrollDOM=document.createElement(`div`),this.scrollDOM.tabIndex=-1,this.scrollDOM.className=`cm-scroller`,this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement(`div`),this.announceDOM.className=`cm-announced`,this.announceDOM.setAttribute(`aria-live`,`polite`),this.dom=document.createElement(`div`),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:t}=e;this.dispatchTransactions=e.dispatchTransactions||t&&(e=>e.forEach(e=>t(e,this)))||(e=>this.update(e)),this.dispatch=this.dispatch.bind(this),this._root=e.root||IZ(e.parent)||document,this.viewState=new p0(this,e.state||iX.create(e)),e.scrollTo&&e.scrollTo.is(wQ)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(kQ).map(e=>new jQ(e));for(let e of this.plugins)e.update(this);this.observer=new N0(this),this.inputState=new a1(this),this.inputState.ensureHandlers(this.plugins),this.docView=new y$(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),document.fonts?.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent=`refresh`,this.requestMeasure()})}dispatch(...e){let t=e.length==1&&e[0]instanceof WY?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(t){if(this.updateState!=0)throw Error(`Calls to EditorView.update are not allowed while an update is in progress`);let n=!1,r=!1,i,a=this.state;for(let e of t){if(e.startState!=a)throw RangeError(`Trying to update state with a transaction that doesn't start from the previous state.`);a=e.state}if(this.destroyed){this.viewState.state=a;return}let o=this.hasFocus,s=0,c=null;t.some(e=>e.annotation(L1))?(this.inputState.notifiedFocused=o,s=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,c=R1(a,o),c||(s=1));let l=this.observer.delayedAndroidKey,u=null;if(l?(this.observer.clearDelayedAndroidKey(),u=this.observer.readChange(),(u&&!this.state.doc.eq(a.doc)||!this.state.selection.eq(a.selection))&&(u=null)):this.observer.clear(),a.facet(iX.phrases)!=this.state.facet(iX.phrases))return this.setState(a);i=WQ.create(this,a,t),i.flags|=s;let d=this.viewState.scrollTarget;try{this.updateState=2;for(let n of t){if(d&&=d.map(n.changes),n.scrollIntoView){let{main:t}=n.state.selection,{x:r,y:i}=this.state.facet(e.cursorScrollMargin);d=new CQ(t.empty?t:Y.cursor(t.head,t.head>t.anchor?-1:1),`nearest`,`nearest`,i,r)}for(let e of n.effects)e.is(wQ)&&(d=e.value.clip(this.state))}this.viewState.update(i,d),this.bidiCache=V0.update(this.bidiCache,i.changes),i.empty||(this.updatePlugins(i),this.inputState.update(i)),n=this.docView.update(i),this.state.facet(HQ)!=this.styleModules&&this.mountStyles(),r=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(n,t.some(e=>e.isUserEvent(`select.pointer`)))}finally{this.updateState=0}if(i.startState.facet(C0)!=i.state.facet(C0)&&(this.viewState.mustMeasureContent=!0),(n||r||d||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),n&&this.docViewUpdate(),!i.empty)for(let e of this.state.facet(hQ))try{e(i)}catch(e){EQ(this.state,e,`update listener`)}(c||u)&&Promise.resolve().then(()=>{c&&this.state==c.startState&&this.dispatch(c),u&&!Q$(this,u)&&l.force&&FZ(this.contentDOM,l.key,l.keyCode)})}setState(e){if(this.updateState!=0)throw Error(`Calls to EditorView.setState are not allowed while an update is in progress`);if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let e of this.plugins)e.destroy(this);this.viewState=new p0(this,e),this.plugins=e.facet(kQ).map(e=>new jQ(e)),this.pluginMap.clear();for(let e of this.plugins)e.update(this);this.docView.destroy(),this.docView=new y$(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(kQ),n=e.state.facet(kQ);if(t!=n){let r=[];for(let i of n){let n=t.indexOf(i);if(n<0)r.push(new jQ(i));else{let t=this.plugins[n];t.mustUpdate=e,r.push(t)}}for(let t of this.plugins)t.mustUpdate!=e&&t.destroy(this);this.plugins=r,this.pluginMap.clear()}else for(let t of this.plugins)t.mustUpdate=e;for(let e=0;e-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,n=this.viewState.scrollParent,r=this.viewState.getScrollOffset(),{scrollAnchorPos:i,scrollAnchorHeight:a}=this.viewState;Math.abs(r-this.viewState.scrollOffset)>1&&(a=-1),this.viewState.scrollAnchorHeight=-1;try{for(let e=0;;e++){if(a<0)if(RZ(n||this.win))i=-1,a=this.viewState.heightMap.height;else{let e=this.viewState.scrollAnchorAt(r);i=e.from,a=e.top}this.updateState=1;let o=this.viewState.measure();if(!o&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(e>5){console.warn(this.measureRequests.length?`Measure loop restarted more than 5 times`:`Viewport failed to stabilize`);break}let s=[];o&4||([this.measureRequests,s]=[s,this.measureRequests]);let c=s.map(e=>{try{return e.read(this)}catch(e){return EQ(this.state,e),B0}}),l=WQ.create(this,this.state,[]),u=!1;l.flags|=o,t?t.flags|=o:t=l,this.updateState=2,l.empty||(this.updatePlugins(l),this.inputState.update(l),this.updateAttrs(),u=this.docView.update(l),u&&this.docViewUpdate());for(let e=0;e1||e<-1)&&(n==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){r+=e,n?n.scrollTop+=e:this.win.scrollBy(0,e),a=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let e of this.state.facet(hQ))e(t)}get themeClasses(){return T0+` `+(this.state.facet(w0)?D0:E0)+` `+this.state.facet(C0)}updateAttrs(){let e=H0(this,MQ,{class:`cm-editor`+(this.hasFocus?` cm-focused `:` `)+this.themeClasses}),t={spellcheck:`false`,autocorrect:`off`,autocapitalize:`off`,writingsuggestions:`false`,translate:`no`,contenteditable:this.state.facet(DQ)?`true`:`false`,class:`cm-content`,style:`${$X.tabSize}: ${this.state.tabSize}`,role:`textbox`,"aria-multiline":`true`};this.state.readOnly&&(t[`aria-readonly`]=`true`),H0(this,NQ,t);let n=this.observer.ignore(()=>{let n=iZ(this.contentDOM,this.contentAttrs,t),r=iZ(this.dom,this.editorAttrs,e);return n||r});return this.editorAttrs=e,this.contentAttrs=t,n}showAnnouncements(t){let n=!0;for(let r of t)for(let t of r.effects)if(t.is(e.announce)){n&&(this.announceDOM.textContent=``),n=!1;let e=this.announceDOM.appendChild(document.createElement(`div`));e.textContent=t.value}}mountStyles(){this.styleModules=this.state.facet(HQ);let t=this.state.facet(e.cspNonce);AX.mount(this.root,this.styleModules.concat(A0).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw Error(`Reading the editor layout isn't allowed during an update`);this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;tt.plugin==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,n){return V$(this,e,I$(this,e,t,n))}moveByGroup(e,t){return V$(this,e,I$(this,e,t,t=>L$(this,e.head,t)))}visualLineSide(e,t){let n=this.bidiSpans(e),r=this.textDirectionAt(e.from),i=n[t?n.length-1:0];return Y.cursor(i.side(t,r)+e.from,i.forward(!t,r)?1:-1)}moveToLineBoundary(e,t,n=!0){return F$(this,e,t,n)}moveVertically(e,t,n){return V$(this,e,R$(this,e,t,n))}domAtPos(e,t=1){return this.docView.domAtPos(e,t)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){this.readMeasured();let n=U$(this,e,t);return n&&n.pos}posAndSideAtCoords(e,t=!0){return this.readMeasured(),U$(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let n=this.docView.coordsAt(e,t);if(!n||n.left==n.right)return n;let r=this.state.doc.lineAt(e),i=this.bidiSpans(r),a=i[QZ.find(i,e-r.from,-1,t)];return TZ(n,a.dir==HZ.LTR==t>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(bQ)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>z0)return sQ(e.length);let t=this.textDirectionAt(e.from),n;for(let r of this.bidiCache)if(r.from==e.from&&r.dir==t&&(r.fresh||$Z(r.isolates,n=zQ(this,e))))return r.order;n||=zQ(this,e);let r=oQ(e.text,t,n);return this.bidiCache.push(new V0(e.from,e.to,t,n,!0,r)),r}get hasFocus(){return(this.dom.ownerDocument.hasFocus()||$X.safari&&this.inputState?.lastContextMenu>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{MZ(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){return wQ.of(new CQ(typeof e==`number`?Y.cursor(e):e,t.y??`nearest`,t.x??`nearest`,t.yMargin??5,t.xMargin??5))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,n=this.viewState.scrollAnchorAt(e);return wQ.of(new CQ(Y.cursor(n.from),`start`,`start`,n.top-e,t,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e==`boolean`?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return AQ.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return AQ.define(()=>({}),{eventObservers:e})}static theme(e,t){let n=AX.newName(),r=[C0.of(n),HQ.of(k0(`.${n}`,e))];return t&&t.dark&&r.push(w0.of(!0)),r}static baseTheme(e){return TY.lowest(HQ.of(k0(`.`+T0,e,O0)))}static findFromDOM(e){let t=e.querySelector(`.cm-content`);return(t&&KQ.get(t)||KQ.get(e))?.root?.view||null}};R0.styleModule=HQ,R0.inputHandler=gQ,R0.clipboardInputFilter=vQ,R0.clipboardOutputFilter=yQ,R0.scrollHandler=SQ,R0.focusChangeEffect=_Q,R0.perLineTextDirection=bQ,R0.exceptionSink=mQ,R0.updateListener=hQ,R0.editable=DQ,R0.mouseSelectionStyle=pQ,R0.dragMovesSelection=fQ,R0.clickAddsSelectionRange=dQ,R0.decorations=PQ,R0.blockWrappers=FQ,R0.outerDecorations=IQ,R0.atomicRanges=LQ,R0.bidiIsolatedRanges=RQ,R0.cursorScrollMargin=hY.define({combine:e=>{let t=5,n=5;for(let r of e)typeof r==`number`?t=n=r:{x:t,y:n}=r;return{x:t,y:n}}}),R0.scrollMargins=BQ,R0.darkTheme=w0,R0.cspNonce=hY.define({combine:e=>e.length?e[0]:``}),R0.contentAttributes=NQ,R0.editorAttributes=MQ,R0.lineWrapping=R0.contentAttributes.of({class:`cm-lineWrapping`}),R0.announce=UY.define();var z0=4096,B0={},V0=class e{constructor(e,t,n,r,i,a){this.from=e,this.to=t,this.dir=n,this.isolates=r,this.fresh=i,this.order=a}static update(t,n){if(n.empty&&!t.some(e=>e.fresh))return t;let r=[],i=t.length?t[t.length-1].dir:HZ.LTR;for(let a=Math.max(0,t.length-10);a=0;i--){let t=r[i],a=typeof t==`function`?t(e):t;a&&eZ(a,n)}return n}var U0=$X.mac?`mac`:$X.windows?`win`:$X.linux?`linux`:`key`;function W0(e,t){let n=e.split(/-(?!$)/),r=n[n.length-1];r==`Space`&&(r=` `);let i,a,o,s;for(let e=0;ee.concat(t),[]))),n}function X0(e,t,n){return t2(Y0(e.state),t,e,n)}var Z0=null,Q0=4e3;function $0(e,t=U0){let n=Object.create(null),r=Object.create(null),i=(e,t)=>{let n=r[e];if(n==null)r[e]=t;else if(n!=t)throw Error(`Key binding `+e+` is used both as a regular binding and as a multi-stroke prefix`)},a=(e,r,a,o,s)=>{let c=n[e]||(n[e]=Object.create(null)),l=r.split(/ (?!$)/).map(e=>W0(e,t));for(let t=1;t{let r=Z0={view:t,prefix:n,scope:e};return setTimeout(()=>{Z0==r&&(Z0=null)},Q0),!0}]})}let u=l.join(` `);i(u,!1);let d=c[u]||(c[u]={preventDefault:!1,stopPropagation:!1,run:(c._any?.run)?.slice()||[]});a&&d.run.push(a),o&&(d.preventDefault=!0),s&&(d.stopPropagation=!0)};for(let r of e){let e=r.scope?r.scope.split(` `):[`editor`];if(r.any)for(let t of e){let e=n[t]||(n[t]=Object.create(null));e._any||={preventDefault:!1,stopPropagation:!1,run:[]};let{any:i}=r;for(let t in e)e[t].run.push(e=>i(e,e2))}let i=r[t]||r.key;if(i)for(let t of e)a(t,i,r.run,r.preventDefault,r.stopPropagation),r.shift&&a(t,`Shift-`+i,r.shift,r.preventDefault,r.stopPropagation)}return n}var e2=null;function t2(e,t,n,r){e2=t;let i=zX(t),a=tY($J(i,0))==i.length&&i!=` `,o=``,s=!1,c=!1,l=!1;Z0&&Z0.view==n&&Z0.scope==r&&(o=Z0.prefix+` `,u1.indexOf(t.keyCode)<0&&(c=!0,Z0=null));let u=new Set,d=e=>{if(e){for(let t of e.run)if(!u.has(t)&&(u.add(t),t(n)))return e.stopPropagation&&(l=!0),!0;e.preventDefault&&(e.stopPropagation&&(l=!0),c=!0)}return!1},f=e[r],p,m;return f&&(d(f[o+G0(i,t,!a)])?s=!0:a&&(t.altKey||t.metaKey||t.ctrlKey)&&!($X.windows&&t.ctrlKey&&t.altKey)&&!($X.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=NX[t.keyCode])&&p!=i?(d(f[o+G0(p,t,!0)])||t.shiftKey&&(m=PX[t.keyCode])!=i&&m!=p&&d(f[o+G0(m,t,!1)]))&&(s=!0):a&&t.shiftKey&&d(f[o+G0(i,t,!0)])&&(s=!0),!s&&d(f._any)&&(s=!0)),c&&(s=!0),s&&l&&t.stopPropagation(),e2=null,s}var n2=class e{constructor(e,t,n,r,i){this.className=e,this.left=t,this.top=n,this.width=r,this.height=i}draw(){let e=document.createElement(`div`);return e.className=this.className,this.adjust(e),e}update(e,t){return t.className==this.className?(this.adjust(e),!0):!1}adjust(e){e.style.left=this.left+`px`,e.style.top=this.top+`px`,this.width!=null&&(e.style.width=this.width+`px`),e.style.height=this.height+`px`}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(t,n,r){if(r.empty){let i=t.coordsAtPos(r.head,r.assoc||1);if(!i)return[];let a=r2(t);return[new e(n,i.left-a.left,i.top-a.top,null,i.bottom-i.top)]}else return Cre(t,n,r)}};function r2(e){let t=e.scrollDOM.getBoundingClientRect();return{left:(e.textDirection==HZ.LTR?t.left:t.right-e.scrollDOM.clientWidth*e.scaleX)-e.scrollDOM.scrollLeft*e.scaleX,top:t.top-e.scrollDOM.scrollTop*e.scaleY}}function i2(e,t,n,r){let i=e.coordsAtPos(t,n*2);if(!i)return r;let a=e.dom.getBoundingClientRect(),o=(i.top+i.bottom)/2,s=e.posAtCoords({x:a.left+1,y:o}),c=e.posAtCoords({x:a.right-1,y:o});return s==null||c==null?r:{from:Math.max(r.from,Math.min(s,c)),to:Math.min(r.to,Math.max(s,c))}}function Cre(e,t,n){if(n.to<=e.viewport.from||n.from>=e.viewport.to)return[];let r=Math.max(n.from,e.viewport.from),i=Math.min(n.to,e.viewport.to),a=e.textDirection==HZ.LTR,o=e.contentDOM,s=o.getBoundingClientRect(),c=r2(e),l=o.querySelector(`.cm-line`),u=l&&window.getComputedStyle(l),d=s.left+(u?parseInt(u.paddingLeft)+Math.min(0,parseInt(u.textIndent)):0),f=s.right-(u?parseInt(u.paddingRight):0),p=P$(e,r,1),m=P$(e,i,-1),h=p.type==sZ.Text?p:null,g=m.type==sZ.Text?m:null;if(h&&(e.lineWrapping||p.widgetLineBreaks)&&(h=i2(e,r,1,h)),g&&(e.lineWrapping||m.widgetLineBreaks)&&(g=i2(e,i,-1,g)),h&&g&&h.from==g.from&&h.to==g.to)return v(y(n.from,n.to,h));{let t=h?y(n.from,null,h):b(p,!1),r=g?y(null,n.to,g):b(m,!0),i=[];return(h||p).to<(g||m).from-(h&&g?1:0)||p.widgetLineBreaks>1&&t.bottom+e.defaultLineHeight/2l&&r.from=a)break;s>i&&c(Math.max(e,i),t==null&&e<=l,Math.min(s,a),n==null&&s>=u,o.dir)}if(i=r.to+1,i>=a)break}return s.length==0&&c(l,t==null,u,n==null,e.textDirection),{top:i,bottom:o,horizontal:s}}function b(e,t){let n=s.top+(t?e.top:e.bottom);return{top:n,bottom:n,horizontal:[]}}}function a2(e,t){return e.constructor==t.constructor&&e.eq(t)}var o2=class{constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement(`div`)),this.dom.classList.add(`cm-layer`),t.above&&this.dom.classList.add(`cm-layer-above`),t.class&&this.dom.classList.add(t.class),this.scale(),this.dom.setAttribute(`aria-hidden`,`true`),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(s2)!=e.state.facet(s2)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let t=0,n=e.facet(s2);for(;t!a2(e,this.drawn[t]))){let t=this.dom.firstChild,n=0;for(let r of e)r.update&&t&&r.constructor&&this.drawn[n].constructor&&r.update(t,this.drawn[n])?(t=t.nextSibling,n++):this.dom.insertBefore(r.draw(),t);for(;t;){let e=t.nextSibling;t.remove(),t=e}this.drawn=e,$X.webkit&&(this.dom.style.display=this.dom.firstChild?``:`none`)}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},s2=hY.define();function c2(e){return[AQ.define(t=>new o2(t,e)),s2.of(e)]}var l2=hY.define({combine(e){return aX(e,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function u2(e={}){return[l2.of(e),f2,m2,h2,xQ.of(!0)]}function d2(e){return e.startState.facet(l2)!=e.state.facet(l2)}var f2=c2({above:!0,markers(e){let{state:t}=e,n=t.facet(l2),r=[];for(let i of t.selection.ranges){let a=i==t.selection.main;if(i.empty||n.drawRangeCursor&&!(a&&$X.ios&&n.iosSelectionHandles)){let t=a?`cm-cursor cm-cursor-primary`:`cm-cursor cm-cursor-secondary`,n=i.empty?i:Y.cursor(i.head,i.assoc);for(let i of n2.forRange(e,t,n))r.push(i)}}return r},update(e,t){e.transactions.some(e=>e.selection)&&(t.style.animationName=t.style.animationName==`cm-blink`?`cm-blink2`:`cm-blink`);let n=d2(e);return n&&p2(e.state,t),e.docChanged||e.selectionSet||n},mount(e,t){p2(t.state,e)},class:`cm-cursorLayer`});function p2(e,t){t.style.animationDuration=e.facet(l2).cursorBlinkRate+`ms`}var m2=c2({above:!1,markers(e){let t=[],{main:n,ranges:r}=e.state.selection;for(let n of r)if(!n.empty)for(let r of n2.forRange(e,`cm-selectionBackground`,n))t.push(r);if($X.ios&&!n.empty&&e.state.facet(l2).iosSelectionHandles){for(let r of n2.forRange(e,`cm-selectionHandle cm-selectionHandle-start`,Y.cursor(n.from,1)))t.push(r);for(let r of n2.forRange(e,`cm-selectionHandle cm-selectionHandle-end`,Y.cursor(n.to,1)))t.push(r)}return t},update(e,t){return e.docChanged||e.selectionSet||e.viewportChanged||d2(e)},class:`cm-selectionLayer`}),h2=TY.highest(R0.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:`transparent !important`},caretColor:`transparent !important`},".cm-content":{caretColor:`transparent !important`,"& :focus":{caretColor:`initial !important`,"&::selection, & ::selection":{backgroundColor:`Highlight !important`}}}})),g2=UY.define({map(e,t){return e==null?null:t.mapPos(e)}}),_2=SY.define({create(){return null},update(e,t){return e!=null&&(e=t.changes.mapPos(e)),t.effects.reduce((e,t)=>t.is(g2)?t.value:e,e)}}),v2=AQ.fromClass(class{constructor(e){this.view=e,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(e){var t;let n=e.state.field(_2);n==null?this.cursor!=null&&((t=this.cursor)==null||t.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement(`div`)),this.cursor.className=`cm-dropCursor`),(e.startState.field(_2)!=n||e.docChanged||e.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:e}=this,t=e.state.field(_2),n=t!=null&&e.coordsAtPos(t);if(!n)return null;let r=e.scrollDOM.getBoundingClientRect();return{left:n.left-r.left+e.scrollDOM.scrollLeft*e.scaleX,top:n.top-r.top+e.scrollDOM.scrollTop*e.scaleY,height:n.bottom-n.top}}drawCursor(e){if(this.cursor){let{scaleX:t,scaleY:n}=this.view;e?(this.cursor.style.left=e.left/t+`px`,this.cursor.style.top=e.top/n+`px`,this.cursor.style.height=e.height/n+`px`):this.cursor.style.left=`-100000px`}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(e){this.view.state.field(_2)!=e&&this.view.dispatch({effects:g2.of(e)})}},{eventObservers:{dragover(e){this.setDropPos(this.view.posAtCoords({x:e.clientX,y:e.clientY}))},dragleave(e){(e.target==this.view.contentDOM||!this.view.contentDOM.contains(e.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function y2(){return[_2,v2]}/x/.unicode;function b2(){return S2}var x2=cZ.line({class:`cm-activeLine`}),S2=AQ.fromClass(class{constructor(e){this.decorations=this.getDeco(e)}update(e){(e.docChanged||e.selectionSet)&&(this.decorations=this.getDeco(e.view))}getDeco(e){let t=-1,n=[];for(let r of e.state.selection.ranges){let i=e.lineBlockAt(r.head);i.from>t&&(n.push(x2.range(i.from)),t=i.from)}return cZ.set(n)}},{decorations:e=>e.decorations}),C2=2e3;function w2(e,t,n){let r=Math.min(t.line,n.line),i=Math.max(t.line,n.line),a=[];if(t.off>C2||n.off>C2||t.col<0||n.col<0){let o=Math.min(t.off,n.off),s=Math.max(t.off,n.off);for(let t=r;t<=i;t++){let n=e.doc.line(t);n.length<=s&&a.push(Y.range(n.from+o,n.to+s))}}else{let o=Math.min(t.col,n.col),s=Math.max(t.col,n.col);for(let t=r;t<=i;t++){let n=e.doc.line(t),r=TX(n.text,o,e.tabSize,!0);if(r<0)a.push(Y.cursor(n.to));else{let t=TX(n.text,s,e.tabSize);a.push(Y.range(n.from+r,n.from+t))}}}return a}function T2(e,t){let n=e.coordsAtPos(e.viewport.from);return n?Math.round(Math.abs((n.left-t)/e.defaultCharacterWidth)):-1}function E2(e,t){let n=e.posAtCoords({x:t.clientX,y:t.clientY},!1),r=e.state.doc.lineAt(n),i=n-r.from,a=i>C2?-1:i==r.length?T2(e,t.clientX):wX(r.text,e.state.tabSize,n-r.from);return{line:r.number,col:a,off:i}}function D2(e,t){let n=E2(e,t),r=e.state.selection;return n?{update(e){if(e.docChanged){let t=e.changes.mapPos(e.startState.doc.line(n.line).from),i=e.state.doc.lineAt(t);n={line:i.number,col:n.col,off:Math.min(n.off,i.length)},r=r.map(e.changes)}},get(t,i,a){let o=E2(e,t);if(!o)return r;let s=w2(e.state,n,o);return s.length?a?Y.create(s.concat(r.ranges)):Y.create(s):r}}:null}function O2(e){let t=e?.eventFilter||(e=>e.altKey&&e.button==0);return R0.mouseSelectionStyle.of((e,n)=>t(n)?D2(e,n):null)}var k2={Alt:[18,e=>!!e.altKey],Control:[17,e=>!!e.ctrlKey],Shift:[16,e=>!!e.shiftKey],Meta:[91,e=>!!e.metaKey]},A2={style:`cursor: crosshair`};function j2(e={}){let[t,n]=k2[e.key||`Alt`],r=AQ.fromClass(class{constructor(e){this.view=e,this.isDown=!1}set(e){this.isDown!=e&&(this.isDown=e,this.view.update([]))}},{eventObservers:{keydown(e){this.set(e.keyCode==t||n(e))},keyup(e){(e.keyCode==t||!n(e))&&this.set(!1)},mousemove(e){this.set(n(e))}}});return[r,R0.contentAttributes.of(e=>e.plugin(r)?.isDown?A2:null)]}var M2=`-10000px`,N2=class{constructor(e,t,n,r){this.facet=t,this.createTooltipView=n,this.removeTooltipView=r,this.input=e.state.facet(t),this.tooltips=this.input.filter(e=>e);let i=null;this.tooltipViews=this.tooltips.map(e=>i=n(e,i))}update(e,t){var n;let r=e.state.facet(this.facet),i=r.filter(e=>e);if(r===this.input){for(let t of this.tooltipViews)t.update&&t.update(e);return!1}let a=[],o=t?[]:null;for(let n=0;nt[n]=e),t.length=o.length),this.input=r,this.tooltips=i,this.tooltipViews=a,!0}};function P2(e){let t=e.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:t.clientHeight,right:t.clientWidth}}var F2=hY.define({combine:e=>({position:$X.ios?`absolute`:e.find(e=>e.position)?.position||`fixed`,parent:e.find(e=>e.parent)?.parent||null,tooltipSpace:e.find(e=>e.tooltipSpace)?.tooltipSpace||P2})}),I2=new WeakMap,L2=AQ.fromClass(class{constructor(e){this.view=e,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let t=e.state.facet(F2);this.position=t.position,this.parent=t.parent,this.classes=e.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver==`function`?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new N2(e,V2,(e,t)=>this.createTooltip(e,t),e=>{this.resizeObserver&&this.resizeObserver.unobserve(e.dom),e.dom.remove()}),this.above=this.manager.tooltips.map(e=>!!e.above),this.intersectionObserver=typeof IntersectionObserver==`function`?new IntersectionObserver(e=>{Date.now()>this.lastTransaction-50&&e.length>0&&e[e.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),e.win.addEventListener(`resize`,this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement(`div`),this.container.style.position=`relative`,this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let e of this.manager.tooltipViews)this.intersectionObserver.observe(e.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(e){e.transactions.length&&(this.lastTransaction=Date.now());let t=this.manager.update(e,this.above);t&&this.observeIntersection();let n=t||e.geometryChanged,r=e.state.facet(F2);if(r.position!=this.position&&!this.madeAbsolute){this.position=r.position;for(let e of this.manager.tooltipViews)e.dom.style.position=this.position;n=!0}if(r.parent!=this.parent){this.parent&&this.container.remove(),this.parent=r.parent,this.createContainer();for(let e of this.manager.tooltipViews)this.container.appendChild(e.dom);n=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);n&&this.maybeMeasure()}createTooltip(e,t){let n=e.create(this.view),r=t?t.dom:null;if(n.dom.classList.add(`cm-tooltip`),e.arrow&&!n.dom.querySelector(`.cm-tooltip > .cm-tooltip-arrow`)){let e=document.createElement(`div`);e.className=`cm-tooltip-arrow`,n.dom.appendChild(e)}return n.dom.style.position=this.position,n.dom.style.top=M2,n.dom.style.left=`0px`,this.container.insertBefore(n.dom,r),n.mount&&n.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(n.dom),n}destroy(){var e,t,n;this.view.win.removeEventListener(`resize`,this.measureSoon);for(let t of this.manager.tooltipViews)t.dom.remove(),(e=t.destroy)==null||e.call(t);this.parent&&this.container.remove(),(t=this.resizeObserver)==null||t.disconnect(),(n=this.intersectionObserver)==null||n.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let e=1,t=1,n=!1;if(this.position==`fixed`&&this.manager.tooltipViews.length){let{dom:e}=this.manager.tooltipViews[0];if($X.safari){let t=e.getBoundingClientRect();n=Math.abs(t.top+1e4)>1||Math.abs(t.left)>1}else n=!!e.offsetParent&&e.offsetParent!=this.container.ownerDocument.body}if(n||this.position==`absolute`)if(this.parent){let n=this.parent.getBoundingClientRect();n.width&&n.height&&(e=n.width/this.parent.offsetWidth,t=n.height/this.parent.offsetHeight)}else ({scaleX:e,scaleY:t}=this.view.viewState);let r=this.view.scrollDOM.getBoundingClientRect(),i=VQ(this.view);return{visible:{left:r.left+i.left,top:r.top+i.top,right:r.right-i.right,bottom:r.bottom-i.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((e,t)=>{let n=this.manager.tooltipViews[t];return n.getCoords?n.getCoords(e.pos):this.view.coordsAtPos(e.pos)}),size:this.manager.tooltipViews.map(({dom:e})=>e.getBoundingClientRect()),space:this.view.state.facet(F2).tooltipSpace(this.view),scaleX:e,scaleY:t,makeAbsolute:n}}writeMeasure(e){if(e.makeAbsolute){this.madeAbsolute=!0,this.position=`absolute`;for(let e of this.manager.tooltipViews)e.dom.style.position=`absolute`}let{visible:t,space:n,scaleX:r,scaleY:i}=e,a=[];for(let o=0;o=Math.min(t.bottom,n.bottom)||u.rightMath.min(t.right,n.right)+.1)){l.style.top=M2;continue}let f=s.arrow?c.dom.querySelector(`.cm-tooltip-arrow`):null,p=f?7:0,m=d.right-d.left,h=I2.get(c)??d.bottom-d.top,g=c.offset||B2,_=this.view.textDirection==HZ.LTR,v=d.width>n.right-n.left?_?n.left:n.right-d.width:_?Math.max(n.left,Math.min(u.left-(f?14:0)+g.x,n.right-m)):Math.min(Math.max(n.left,u.left-m+(f?14:0)-g.x),n.right-m),y=this.above[o];!s.strictSide&&(y?u.top-h-p-g.yn.bottom)&&y==n.bottom-u.bottom>u.top-n.top&&(y=this.above[o]=!y);let b=(y?u.top-n.top:n.bottom-u.bottom)-p;if(bv&&e.topx&&(x=y?e.top-h-2-p:e.bottom+p+2);if(this.position==`absolute`?(l.style.top=(x-e.parent.top)/i+`px`,R2(l,(v-e.parent.left)/r)):(l.style.top=x/i+`px`,R2(l,v/r)),f){let e=u.left+(_?g.x:-g.x)-(v+14-7);f.style.left=e/r+`px`}c.overlap!==!0&&a.push({left:v,top:x,right:ee,bottom:x+h}),l.classList.toggle(`cm-tooltip-above`,y),l.classList.toggle(`cm-tooltip-below`,!y),c.positioned&&c.positioned(e.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let e of this.manager.tooltipViews)e.dom.style.top=M2}},{eventObservers:{scroll(){this.maybeMeasure()}}});function R2(e,t){let n=parseInt(e.style.left,10);(isNaN(n)||Math.abs(t-n)>1)&&(e.style.left=t+`px`)}var z2=R0.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:`border-box`},"&light .cm-tooltip":{border:`1px solid #bbb`,backgroundColor:`#f5f5f5`},"&light .cm-tooltip-section:not(:first-child)":{borderTop:`1px solid #bbb`},"&dark .cm-tooltip":{backgroundColor:`#333338`,color:`white`},".cm-tooltip-arrow":{height:`7px`,width:`14px`,position:`absolute`,zIndex:-1,overflow:`hidden`,"&:before, &:after":{content:`''`,position:`absolute`,width:0,height:0,borderLeft:`7px solid transparent`,borderRight:`7px solid transparent`},".cm-tooltip-above &":{bottom:`-7px`,"&:before":{borderTop:`7px solid #bbb`},"&:after":{borderTop:`7px solid #f5f5f5`,bottom:`1px`}},".cm-tooltip-below &":{top:`-7px`,"&:before":{borderBottom:`7px solid #bbb`},"&:after":{borderBottom:`7px solid #f5f5f5`,top:`1px`}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:`#333338`,borderBottomColor:`#333338`},"&:after":{borderTopColor:`transparent`,borderBottomColor:`transparent`}}}),B2={x:0,y:0},V2=hY.define({enables:[L2,z2]});function H2(e,t){let n=e.plugin(L2);if(!n)return null;let r=n.manager.tooltips.indexOf(t);return r<0?null:n.manager.tooltipViews[r]}var U2=hY.define({combine(e){let t,n;for(let r of e)t||=r.topContainer,n||=r.bottomContainer;return{topContainer:t,bottomContainer:n}}});function W2(e,t){let n=e.plugin(G2),r=n?n.specs.indexOf(t):-1;return r>-1?n.panels[r]:null}var G2=AQ.fromClass(class{constructor(e){this.input=e.state.facet(J2),this.specs=this.input.filter(e=>e),this.panels=this.specs.map(t=>t(e));let t=e.state.facet(U2);this.top=new K2(e,!0,t.topContainer),this.bottom=new K2(e,!1,t.bottomContainer),this.top.sync(this.panels.filter(e=>e.top)),this.bottom.sync(this.panels.filter(e=>!e.top));for(let e of this.panels)e.dom.classList.add(`cm-panel`),e.mount&&e.mount()}update(e){let t=e.state.facet(U2);this.top.container!=t.topContainer&&(this.top.sync([]),this.top=new K2(e.view,!0,t.topContainer)),this.bottom.container!=t.bottomContainer&&(this.bottom.sync([]),this.bottom=new K2(e.view,!1,t.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let n=e.state.facet(J2);if(n!=this.input){let t=n.filter(e=>e),r=[],i=[],a=[],o=[];for(let n of t){let t=this.specs.indexOf(n),s;t<0?(s=n(e.view),o.push(s)):(s=this.panels[t],s.update&&s.update(e)),r.push(s),(s.top?i:a).push(s)}this.specs=t,this.panels=r,this.top.sync(i),this.bottom.sync(a);for(let e of o)e.dom.classList.add(`cm-panel`),e.mount&&e.mount()}else for(let t of this.panels)t.update&&t.update(e)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:e=>R0.scrollMargins.of(t=>{let n=t.plugin(e);return n&&{top:n.top.scrollMargin(),bottom:n.bottom.scrollMargin()}})}),K2=class{constructor(e,t,n){this.view=e,this.top=t,this.container=n,this.dom=void 0,this.classes=``,this.panels=[],this.syncClasses()}sync(e){for(let t of this.panels)t.destroy&&e.indexOf(t)<0&&t.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&=(this.dom.remove(),void 0);return}if(!this.dom){this.dom=document.createElement(`div`),this.dom.className=this.top?`cm-panels cm-panels-top`:`cm-panels cm-panels-bottom`,this.dom.style[this.top?`top`:`bottom`]=`0`;let e=this.container||this.view.dom;e.insertBefore(this.dom,this.top?e.firstChild:null)}let e=this.dom.firstChild;for(let t of this.panels)if(t.dom.parentNode==this.dom){for(;e!=t.dom;)e=q2(e);e=e.nextSibling}else this.dom.insertBefore(t.dom,e);for(;e;)e=q2(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(` `))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(` `))e&&this.container.classList.add(e)}}};function q2(e){let t=e.nextSibling;return e.remove(),t}var J2=hY.define({enables:G2});function Y2(e,t){let n,r=new Promise(e=>n=e),i=e=>$2(e,t,n);e.state.field(X2,!1)?e.dispatch({effects:Z2.of(i)}):e.dispatch({effects:UY.appendConfig.of(X2.init(()=>[i]))});let a=Q2.of(i);return{close:a,result:r.then(t=>((e.win.queueMicrotask||(t=>e.win.setTimeout(t,10)))(()=>{e.state.field(X2).indexOf(i)>-1&&e.dispatch({effects:a})}),t))}}var X2=SY.define({create(){return[]},update(e,t){for(let n of t.effects)n.is(Z2)?e=[n.value].concat(e):n.is(Q2)&&(e=e.filter(e=>e!=n.value));return e},provide:e=>J2.computeN([e],t=>t.field(e))}),Z2=UY.define(),Q2=UY.define();function $2(e,t,n){let r=t.content?t.content(e,()=>o(null)):null;if(!r){if(r=BX(`form`),t.input){let e=BX(`input`,t.input);/^(text|password|number|email|tel|url)$/.test(e.type)&&e.classList.add(`cm-textfield`),e.name||=`input`,r.appendChild(BX(`label`,(t.label||``)+`: `,e))}else r.appendChild(document.createTextNode(t.label||``));r.appendChild(document.createTextNode(` `)),r.appendChild(BX(`button`,{class:`cm-button`,type:`submit`},t.submitLabel||`OK`))}let i=r.nodeName==`FORM`?[r]:r.querySelectorAll(`form`);for(let e=0;e{e.keyCode==27?(e.preventDefault(),o(null)):e.keyCode==13&&(e.preventDefault(),o(t))}),t.addEventListener(`submit`,e=>{e.preventDefault(),o(t)})}let a=BX(`div`,r,BX(`button`,{onclick:()=>o(null),"aria-label":e.state.phrase(`close`),class:`cm-dialog-close`,type:`button`},[`×`]));t.class&&(a.className=t.class),a.classList.add(`cm-dialog`);function o(t){a.contains(a.ownerDocument.activeElement)&&e.focus(),n(t)}return{dom:a,top:t.top,mount:()=>{if(t.focus){let e;e=typeof t.focus==`string`?r.querySelector(t.focus):r.querySelector(`input`)||r.querySelector(`button`),e&&`select`in e?e.select():e&&`focus`in e&&e.focus()}}}}var e4=class extends oX{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}};e4.prototype.elementClass=``,e4.prototype.toDOM=void 0,e4.prototype.mapMode=rY.TrackBefore,e4.prototype.startSide=e4.prototype.endSide=-1,e4.prototype.point=!0;var t4=hY.define(),n4=hY.define(),r4={class:``,renderEmptyElements:!1,elementStyle:``,markers:()=>dX.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:`before`},i4=hY.define();function a4(e){return[s4(),i4.of({...r4,...e})]}var o4=hY.define({combine:e=>e.some(e=>e)});function s4(e){let t=[c4];return e&&e.fixed===!1&&t.push(o4.of(!0)),t}var c4=AQ.fromClass(class{constructor(e){this.view=e,this.domAfter=null,this.prevViewport=e.viewport,this.dom=document.createElement(`div`),this.dom.className=`cm-gutters cm-gutters-before`,this.dom.setAttribute(`aria-hidden`,`true`),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+`px`,this.gutters=e.state.facet(i4).map(t=>new f4(e,t)),this.fixed=!e.state.facet(o4);for(let e of this.gutters)e.config.side==`after`?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position=`sticky`),this.syncGutters(!1),e.scrollDOM.insertBefore(this.dom,e.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement(`div`),this.domAfter.className=`cm-gutters cm-gutters-after`,this.domAfter.setAttribute(`aria-hidden`,`true`),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+`px`,this.domAfter.style.position=this.fixed?`sticky`:``,this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(e){if(this.updateGutters(e)){let t=this.prevViewport,n=e.view.viewport,r=Math.min(t.to,n.to)-Math.max(t.from,n.from);this.syncGutters(r<(n.to-n.from)*.8)}if(e.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+`px`;this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(o4)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?`sticky`:``,this.domAfter&&(this.domAfter.style.position=this.fixed?`sticky`:``)),this.prevViewport=e.view.viewport}syncGutters(e){let t=this.dom.nextSibling;e&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let n=dX.iter(this.view.state.facet(t4),this.view.viewport.from),r=[],i=this.gutters.map(e=>new d4(e,this.view.viewport,-this.view.documentPadding.top));for(let e of this.view.viewportLineBlocks)if(r.length&&(r=[]),Array.isArray(e.type)){let t=!0;for(let a of e.type)if(a.type==sZ.Text&&t){u4(n,r,a.from);for(let e of i)e.line(this.view,a,r);t=!1}else if(a.widget)for(let e of i)e.widget(this.view,a)}else if(e.type==sZ.Text){u4(n,r,e.from);for(let t of i)t.line(this.view,e,r)}else if(e.widget)for(let t of i)t.widget(this.view,e);for(let e of i)e.finish();e&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(e){let t=e.startState.facet(i4),n=e.state.facet(i4),r=e.docChanged||e.heightChanged||e.viewportChanged||!dX.eq(e.startState.facet(t4),e.state.facet(t4),e.view.viewport.from,e.view.viewport.to);if(t==n)for(let t of this.gutters)t.update(e)&&(r=!0);else{r=!0;let i=[];for(let r of n){let n=t.indexOf(r);n<0?i.push(new f4(this.view,r)):(this.gutters[n].update(e),i.push(this.gutters[n]))}for(let e of this.gutters)e.dom.remove(),i.indexOf(e)<0&&e.destroy();for(let e of i)e.config.side==`after`?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.gutters=i}return r}destroy(){for(let e of this.gutters)e.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:e=>R0.scrollMargins.of(t=>{let n=t.plugin(e);if(!n||n.gutters.length==0||!n.fixed)return null;let r=n.dom.offsetWidth*t.scaleX,i=n.domAfter?n.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==HZ.LTR?{left:r,right:i}:{right:r,left:i}})});function l4(e){return Array.isArray(e)?e:[e]}function u4(e,t,n){for(;e.value&&e.from<=n;)e.from==n&&t.push(e.value),e.next()}var d4=class{constructor(e,t,n){this.gutter=e,this.height=n,this.i=0,this.cursor=dX.iter(e.markers,t.from)}addElement(e,t,n){let{gutter:r}=this,i=(t.top-this.height)/e.scaleY,a=t.height/e.scaleY;if(this.i==r.elements.length){let t=new p4(e,a,i,n);r.elements.push(t),r.dom.appendChild(t.dom)}else r.elements[this.i].update(e,a,i,n);this.height=t.bottom,this.i++}line(e,t,n){let r=[];u4(this.cursor,r,t.from),n.length&&(r=r.concat(n));let i=this.gutter.config.lineMarker(e,t,r);i&&r.unshift(i);let a=this.gutter;r.length==0&&!a.config.renderEmptyElements||this.addElement(e,t,r)}widget(e,t){let n=this.gutter.config.widgetMarker(e,t.widget,t),r=n?[n]:null;for(let n of e.state.facet(n4)){let i=n(e,t.widget,t);i&&(r||=[]).push(i)}r&&this.addElement(e,t,r)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}},f4=class{constructor(e,t){this.view=e,this.config=t,this.elements=[],this.spacer=null,this.dom=document.createElement(`div`),this.dom.className=`cm-gutter`+(this.config.class?` `+this.config.class:``);for(let n in t.domEventHandlers)this.dom.addEventListener(n,r=>{let i=r.target,a;if(i!=this.dom&&this.dom.contains(i)){for(;i.parentNode!=this.dom;)i=i.parentNode;let e=i.getBoundingClientRect();a=(e.top+e.bottom)/2}else a=r.clientY;let o=e.lineBlockAtHeight(a-e.documentTop);t.domEventHandlers[n](e,o,r)&&r.preventDefault()});this.markers=l4(t.markers(e)),t.initialSpacer&&(this.spacer=new p4(e,0,0,[t.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+=`visibility: hidden; pointer-events: none`)}update(e){let t=this.markers;if(this.markers=l4(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let t=this.config.updateSpacer(this.spacer.markers[0],e);t!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[t])}let n=e.view.viewport;return!dX.eq(this.markers,t,n.from,n.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}},p4=class{constructor(e,t,n,r){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement(`div`),this.dom.className=`cm-gutterElement`,this.update(e,t,n,r)}update(e,t,n,r){this.height!=t&&(this.height=t,this.dom.style.height=t+`px`),this.above!=n&&(this.dom.style.marginTop=(this.above=n)?n+`px`:``),m4(this.markers,r)||this.setMarkers(e,r)}setMarkers(e,t){let n=`cm-gutterElement`,r=this.dom.firstChild;for(let i=0,a=0;;){let o=a,s=ir(e,t,n)||i(e,t,n):i}return n}})}}),v4=class extends e4{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}};function y4(e,t){return e.state.facet(_4).formatNumber(t,e.state)}var b4=i4.compute([_4],e=>({class:`cm-lineNumbers`,renderEmptyElements:!1,markers(e){return e.state.facet(h4)},lineMarker(e,t,n){return n.some(e=>e.toDOM)?null:new v4(y4(e,e.state.doc.lineAt(t.from).number))},widgetMarker:(e,t,n)=>{for(let r of e.state.facet(g4)){let i=r(e,t,n);if(i)return i}return null},lineMarkerChange:e=>e.startState.facet(_4)!=e.state.facet(_4),initialSpacer(e){return new v4(y4(e,S4(e.state.doc.lines)))},updateSpacer(e,t){let n=y4(t.view,S4(t.view.state.doc.lines));return n==e.number?e:new v4(n)},domEventHandlers:e.facet(_4).domEventHandlers,side:`before`}));function x4(e={}){return[_4.of(e),s4(),b4]}function S4(e){let t=9;for(;t{let t=[],n=-1;for(let r of e.selection.ranges){let i=e.doc.lineAt(r.head).from;i>n&&(n=i,t.push(C4.range(i)))}return dX.of(t)});function T4(){return w4}var E4=1024,D4=0,O4=class{constructor(e,t){this.from=e,this.to=t}},k4=class{constructor(e={}){this.id=D4++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw Error(`This node type doesn't define a deserialize function`)}),this.combine=e.combine||null}add(e){if(this.perNode)throw RangeError(`Can't add per-node props to node types`);return typeof e!=`function`&&(e=M4.match(e)),t=>{let n=e(t);return n===void 0?null:[this,n]}}};k4.closedBy=new k4({deserialize:e=>e.split(` `)}),k4.openedBy=new k4({deserialize:e=>e.split(` `)}),k4.group=new k4({deserialize:e=>e.split(` `)}),k4.isolate=new k4({deserialize:e=>{if(e&&e!=`rtl`&&e!=`ltr`&&e!=`auto`)throw RangeError(`Invalid value for isolate: `+e);return e||`auto`}}),k4.contextHash=new k4({perNode:!0}),k4.lookAhead=new k4({perNode:!0}),k4.mounted=new k4({perNode:!0});var A4=class{constructor(e,t,n,r=!1){this.tree=e,this.overlay=t,this.parser=n,this.bracketed=r}static get(e){return e&&e.props&&e.props[k4.mounted.id]}},j4=Object.create(null),M4=class e{constructor(e,t,n,r=0){this.name=e,this.props=t,this.id=n,this.flags=r}static define(t){let n=t.props&&t.props.length?Object.create(null):j4,r=!!t.top|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),i=new e(t.name||``,n,t.id,r);if(t.props){for(let e of t.props)if(Array.isArray(e)||(e=e(i)),e){if(e[0].perNode)throw RangeError(`Can't store a per-node prop on a node type`);n[e[0].id]=e[1]}}return i}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e==`string`){if(this.name==e)return!0;let t=this.prop(k4.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let n in e)for(let r of n.split(` `))t[r]=e[n];return e=>{for(let n=e.prop(k4.group),r=-1;r<(n?n.length:0);r++){let i=t[r<0?e.name:n[r]];if(i)return i}}}};M4.none=new M4(``,Object.create(null),0,8);var N4=class e{constructor(e){this.types=e;for(let t=0;t0;for(let e=this.cursor(a|I4.IncludeAnonymous);;){let a=!1;if(e.from<=i&&e.to>=r&&(!o&&e.type.isAnonymous||t(e)!==!1)){if(e.firstChild())continue;a=!0}for(;a&&n&&(o||!e.type.isAnonymous)&&n(e),!e.nextSibling();){if(!e.parent())return;a=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(t={}){return this.children.length<=8?this:n3(M4.none,this.children,this.positions,0,this.children.length,0,this.length,(t,n,r)=>new e(this.type,t,n,r,this.propValues),t.makeTree||((t,n,r)=>new e(M4.none,t,n,r)))}static build(e){return $4(e)}};L4.empty=new L4(M4.none,[],[],0);var R4=class e{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new e(this.buffer,this.index)}},z4=class e{constructor(e,t,n){this.buffer=e,this.length=t,this.set=n}get type(){return M4.none}toString(){let e=[];for(let t=0;t0));s=a[s+3]);return o}slice(t,n,r){let i=this.buffer,a=new Uint16Array(n-t),o=0;for(let e=t,s=0;e=t&&nt;case 1:return n<=t&&r>t;case 2:return r>t;case 4:return!0}}function V4(e,t,n,r){for(;e.from==e.to||(n<1?e.from>=t:e.from>t)||(n>-1?e.to<=t:e.to0?s.length:-1;t!=l;t+=n){let l=s[t],u=c[t]+o.from,d;if(!(!(a&I4.EnterBracketed&&l instanceof L4&&(d=A4.get(l))&&!d.overlay&&d.bracketed&&r>=u&&r<=u+l.length)&&!B4(i,r,u,u+l.length))){if(l instanceof z4){if(a&I4.ExcludeBuffers)continue;let e=l.findChild(0,l.buffer.length,n,r-u,i);if(e>-1)return new q4(new K4(o,l,t,u),null,e)}else if(a&I4.IncludeAnonymous||!l.type.isAnonymous||Q4(l)){let s;if(!(a&I4.IgnoreMounts)&&(s=A4.get(l))&&!s.overlay)return new e(s.tree,u,t,o);let c=new e(l,u,t,o);return a&I4.IncludeAnonymous||!c.type.isAnonymous?c:c.nextChild(n<0?l.children.length-1:0,n,r,i,a)}}}if(a&I4.IncludeAnonymous||!o.type.isAnonymous||(t=o.index>=0?o.index+n:n<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}prop(e){return this._tree.prop(e)}enter(t,n,r=0){let i;if(!(r&I4.IgnoreOverlays)&&(i=A4.get(this._tree))&&i.overlay){let a=t-this.from,o=r&I4.EnterBracketed&&i.bracketed;for(let{from:t,to:r}of i.overlay)if((n>0||o?t<=a:t=a:r>a))return new e(i.tree,i.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,n,r)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function W4(e,t,n,r){let i=e.cursor(),a=[];if(!i.firstChild())return a;if(n!=null){for(let e=!1;!e;)if(e=i.type.is(n),!i.nextSibling())return a}for(;;){if(r!=null&&i.type.is(r))return a;if(i.type.is(t)&&a.push(i.node),!i.nextSibling())return r==null?a:[]}}function G4(e,t,n=t.length-1){for(let r=e;n>=0;r=r.parent){if(!r)return!1;if(!r.type.isAnonymous){if(t[n]&&t[n]!=r.name)return!1;n--}}return!0}var K4=class{constructor(e,t,n,r){this.parent=e,this.buffer=t,this.index=n,this.start=r}},q4=class e extends H4{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,n){super(),this.context=e,this._parent=t,this.index=n,this.type=e.buffer.set.types[e.buffer.buffer[n]]}child(t,n,r){let{buffer:i}=this.context,a=i.findChild(this.index+4,i.buffer[this.index+3],t,n-this.context.start,r);return a<0?null:new e(this.context,this,a)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}prop(e){return this.type.prop(e)}enter(t,n,r=0){if(r&I4.ExcludeBuffers)return null;let{buffer:i}=this.context,a=i.findChild(this.index+4,i.buffer[this.index+3],n>0?1:-1,t-this.context.start,n);return a<0?null:new e(this.context,this,a)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:t}=this.context,n=t.buffer[this.index+3];return n<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new e(this.context,this._parent,n):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,n=this._parent?this._parent.index+4:0;return this.index==n?this.externalSibling(-1):new e(this.context,this._parent,t.findChild(n,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:n}=this.context,r=this.index+4,i=n.buffer[this.index+3];if(i>r){let a=n.buffer[this.index+1];e.push(n.slice(r,i,a)),t.push(0)}return new L4(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function J4(e){if(!e.length)return null;let t=0,n=e[0];for(let r=1;rn.from||i.to=t){let o=new U4(a.tree,a.overlay[0].from+e.from,-1,e);(i||=[r]).push(V4(o,t,n,!1))}}return i?J4(i):r}var Z4=class{get name(){return this.type.name}constructor(e,t=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=t&~I4.EnterBracketed,e instanceof U4)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let t=e._parent;t;t=t._parent)this.stack.unshift(t.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:n,buffer:r}=this.buffer;return this.type=t||r.set.types[r.buffer[e]],this.from=n+r.buffer[e+1],this.to=n+r.buffer[e+2],!0}yield(e){return e?e instanceof U4?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,n){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,n,this.mode));let{buffer:r}=this.buffer,i=r.findChild(this.index+4,r.buffer[this.index+3],e,t-this.buffer.start,n);return i<0?!1:(this.stack.push(this.index),this.yieldBuf(i))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,n=this.mode){return this.buffer?n&I4.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,n))}parent(){if(!this.buffer)return this.yieldNode(this.mode&I4.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&I4.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,n=this.stack.length-1;if(e<0){let e=n<0?0:this.stack[n]+4;if(this.index!=e)return this.yieldBuf(t.findChild(e,this.index,-1,0,4))}else{let e=t.buffer[this.index+3];if(e<(n<0?t.buffer.length:t.buffer[this.stack[n]+3]))return this.yieldBuf(e)}return n<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,n,{buffer:r}=this;if(r){if(e>0){if(this.index-1)for(let r=t+e,i=e<0?-1:n._tree.children.length;r!=i;r+=e){let e=n._tree.children[r];if(this.mode&I4.IncludeAnonymous||e instanceof z4||!e.type.isAnonymous||Q4(e))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to=0;){for(let a=e;a;a=a._parent)if(a.index==r){if(r==this.index)return a;t=a,n=i+1;break scan}r=this.stack[--i]}for(let e=n;e=0;i--){if(i<0)return G4(this._tree,e,r);let a=n[t.buffer[this.stack[i]]];if(!a.isAnonymous){if(e[r]&&e[r]!=a.name)return!1;r--}}return!0}};function Q4(e){return e.children.some(e=>e instanceof z4||!e.type.isAnonymous||Q4(e))}function $4(e){let{buffer:t,nodeSet:n,maxBufferLength:r=E4,reused:i=[],minRepeatType:a=n.types.length}=e,o=Array.isArray(t)?new R4(t,t.length):t,s=n.types,c=0,l=0;function u(e,t,_,v,y,b){let{id:x,start:ee,end:te,size:S}=o,ne=l,re=c;if(S<0)if(o.next(),S==-1){let t=i[x];_.push(t),v.push(ee-e);return}else if(S==-3){c=x;return}else if(S==-4){l=x;return}else throw RangeError(`Unrecognized record size: ${S}`);let C=s[x],w,ie,ae=ee-e;if(te-ee<=r&&(ie=h(o.pos-t,y))){let t=new Uint16Array(ie.size-ie.skip),r=o.pos-ie.size,i=t.length;for(;o.pos>r;)i=g(ie.start,t,i);w=new z4(t,te-ie.start,n),ae=ie.start-e}else{let e=o.pos-S;o.next();let t=[],n=[],i=x>=a?x:-1,s=0,c=te;for(;o.pos>e;)i>=0&&o.id==i&&o.size>=0?(o.end<=c-r&&(p(t,n,ee,s,o.end,c,i,ne,re),s=t.length,c=o.end),o.next()):b>2500?d(ee,e,t,n):u(ee,e,t,n,i,b+1);if(i>=0&&s>0&&s-1&&s>0){let e=f(C,re);w=n3(C,t,n,0,t.length,0,te-ee,e,e)}else w=m(C,t,n,te-ee,ne-te,re)}_.push(w),v.push(ae)}function d(e,t,i,a){let s=[],c=0,l=-1;for(;o.pos>t;){let{id:e,start:t,end:n,size:i}=o;if(i>4)o.next();else if(l>-1&&t=0;e-=3)t[n++]=s[e],t[n++]=s[e+1]-r,t[n++]=s[e+2]-r,t[n++]=n;i.push(new z4(t,s[2]-r,n)),a.push(r-e)}}function f(e,t){return(n,r,i)=>{let a=0,o=n.length-1,s,c;if(o>=0&&(s=n[o])instanceof L4){if(!o&&s.type==e&&s.length==i)return s;(c=s.prop(k4.lookAhead))&&(a=r[o]+s.length+c)}return m(e,n,r,i,a,t)}}function p(e,t,r,i,a,o,s,c,l){let u=[],d=[];for(;e.length>i;)u.push(e.pop()),d.push(t.pop()+r-a);e.push(m(n.types[s],u,d,o-a,c-o,l)),t.push(a-r)}function m(e,t,n,r,i,a,o){if(a){let e=[k4.contextHash,a];o=o?[e].concat(o):[e]}if(i>25){let e=[k4.lookAhead,i];o=o?[e].concat(o):[e]}return new L4(e,t,n,r,o)}function h(e,t){let n=o.fork(),i=0,s=0,c=0,l=n.end-r,u={size:0,start:0,skip:0};scan:for(let r=n.pos-e;n.pos>r;){let e=n.size;if(n.id==t&&e>=0){u.size=i,u.start=s,u.skip=c,c+=4,i+=4,n.next();continue}let o=n.pos-e;if(e<0||o=a?4:0,f=n.start;for(n.next();n.pos>o;){if(n.size<0)if(n.size==-3||n.size==-4)d+=4;else break scan;else n.id>=a&&(d+=4);n.next()}s=f,i+=e,c+=d}return(t<0||i==e)&&(u.size=i,u.start=s,u.skip=c),u.size>4?u:void 0}function g(e,t,n){let{id:r,start:i,end:s,size:u}=o;if(o.next(),u>=0&&r4){let r=o.pos-(u-4);for(;o.pos>r;)n=g(e,t,n)}t[--n]=a,t[--n]=s-e,t[--n]=i-e,t[--n]=r}else u==-3?c=r:u==-4&&(l=r);return n}let _=[],v=[];for(;o.pos>0;)u(e.start||0,e.bufferStart||0,_,v,-1,0);let y=e.length??(_.length?v[0]+_[0].length:0);return new L4(s[e.topID],_.reverse(),v.reverse(),y)}var e3=new WeakMap;function t3(e,t){if(!e.isAnonymous||t instanceof z4||t.type!=e)return 1;let n=e3.get(t);if(n==null){n=1;for(let r of t.children){if(r.type!=e||!(r instanceof L4)){n=1;break}n+=t3(e,r)}e3.set(t,n)}return n}function n3(e,t,n,r,i,a,o,s,c){let l=0;for(let n=r;n=u)break;m+=n}if(s==r+1){if(m>u){let e=t[r];p(e.children,e.positions,0,e.children.length,n[r]+o);continue}d.push(t[r])}else{let i=n[s-1]+t[s-1].length-l;d.push(n3(e,t,n,r,s,l,i,null,c))}f.push(l+o-a)}}return p(t,n,r,i,0),(s||c)(d,f,o)}var r3=class{constructor(){this.map=new WeakMap}setBuffer(e,t,n){let r=this.map.get(e);r||this.map.set(e,r=new Map),r.set(t,n)}getBuffer(e,t){let n=this.map.get(e);return n&&n.get(t)}set(e,t){e instanceof q4?this.setBuffer(e.context.buffer,e.index,t):e instanceof U4&&this.map.set(e.tree,t)}get(e){return e instanceof q4?this.getBuffer(e.context.buffer,e.index):e instanceof U4?this.map.get(e.tree):void 0}cursorSet(e,t){e.buffer?this.setBuffer(e.buffer.buffer,e.index,t):this.map.set(e.tree,t)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}},i3=class e{constructor(e,t,n,r,i=!1,a=!1){this.from=e,this.to=t,this.tree=n,this.offset=r,this.open=!!i|(a?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,n=[],r=!1){let i=[new e(0,t.length,t,0,!1,r)];for(let e of n)e.to>t.length&&i.push(e);return i}static applyChanges(t,n,r=128){if(!n.length)return t;let i=[],a=1,o=t.length?t[0]:null;for(let s=0,c=0,l=0;;s++){let u=s=r)for(;o&&o.from=n.from||d<=n.to||l){let t=Math.max(n.from,c)-l,r=Math.min(n.to,d)-l;n=t>=r?null:new e(t,r,n.tree,n.offset+l,s>0,!!u)}if(n&&i.push(n),o.to>d)break;o=anew O4(e.from,e.to)):[new O4(0,0)]:[new O4(0,e.length)],this.createParse(e,t||[],n)}parse(e,t,n){let r=this.startParse(e,t,n);for(;;){let e=r.advance();if(e)return e}}},o3=class{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}};function s3(e){return(t,n,r,i)=>new f3(t,e,n,r,i)}var c3=class{constructor(e,t,n,r,i,a){this.parser=e,this.parse=t,this.overlay=n,this.bracketed=r,this.target=i,this.from=a}};function l3(e){if(!e.length||e.some(e=>e.from>=e.to))throw RangeError(`Invalid inner parse ranges given: `+JSON.stringify(e))}var u3=class{constructor(e,t,n,r,i,a,o,s){this.parser=e,this.predicate=t,this.mounts=n,this.index=r,this.start=i,this.bracketed=a,this.target=o,this.prev=s,this.depth=0,this.ranges=[]}},d3=new k4({perNode:!0}),f3=class{constructor(e,t,n,r,i){this.nest=t,this.input=n,this.fragments=r,this.ranges=i,this.inner=[],this.innerDone=0,this.baseTree=null,this.stoppedAt=null,this.baseParse=e}advance(){if(this.baseParse){let e=this.baseParse.advance();if(!e)return null;if(this.baseParse=null,this.baseTree=e,this.startInner(),this.stoppedAt!=null)for(let e of this.inner)e.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let e=this.baseTree;return this.stoppedAt!=null&&(e=new L4(e.type,e.children,e.positions,e.length,e.propValues.concat([[d3,this.stoppedAt]]))),e}let e=this.inner[this.innerDone],t=e.parse.advance();if(t){this.innerDone++;let n=Object.assign(Object.create(null),e.target.props);n[k4.mounted.id]=new A4(t,e.overlay,e.parser,e.bracketed),e.target.props=n}return null}get parsedPos(){if(this.baseParse)return 0;let e=this.input.length;for(let t=this.innerDone;t=this.stoppedAt)o=!1;else if(e.hasNode(r)){if(t){let e=t.mounts.find(e=>e.frag.from<=r.from&&e.frag.to>=r.to&&e.mount.overlay);if(e)for(let n of e.mount.overlay){let i=n.from+e.pos,a=n.to+e.pos;i>=r.from&&a<=r.to&&!t.ranges.some(e=>e.fromi)&&t.ranges.push({from:i,to:a})}}o=!1}else if(n&&(a=p3(n.ranges,r.from,r.to)))o=a!=2;else if(!r.type.isAnonymous&&(i=this.nest(r,this.input))&&(r.fromnew O4(e.from-r.from,e.to-r.from)):null,!!i.bracketed,r.tree,e.length?e[0].from:r.from)),i.overlay?e.length&&(n={ranges:e,depth:0,prev:n}):o=!1}}else if(t&&(s=t.predicate(r))&&(s===!0&&(s=new O4(r.from,r.to)),s.from=0&&t.ranges[e].to==s.from?t.ranges[e]={from:t.ranges[e].from,to:s.to}:t.ranges.push(s)}if(o&&r.firstChild())t&&t.depth++,n&&n.depth++;else for(;!r.nextSibling();){if(!r.parent())break scan;if(t&&!--t.depth){let e=v3(this.ranges,t.ranges);e.length&&(l3(e),this.inner.splice(t.index,0,new c3(t.parser,t.parser.startParse(this.input,b3(t.mounts,e),e),t.ranges.map(e=>new O4(e.from-t.start,e.to-t.start)),t.bracketed,t.target,e[0].from))),t=t.prev}n&&!--n.depth&&(n=n.prev)}}}};function p3(e,t,n){for(let r of e){if(r.from>=n)break;if(r.to>t)return r.from<=t&&r.to>=n?2:1}return 0}function m3(e,t,n,r,i,a){if(t=e&&t.enter(n,1,I4.IgnoreOverlays|I4.ExcludeBuffers)))if(t.to<=e)t.next(!1)||(this.done=!0);else break}hasNode(e){if(this.moveTo(e.from),!this.done&&this.cursor.from+this.offset==e.from&&this.cursor.tree)for(let t=this.cursor.tree;;){if(t==e.tree)return!0;if(t.children.length&&t.positions[0]==0&&t.children[0]instanceof L4)t=t.children[0];else break}return!1}},_3=class{constructor(e){if(this.fragments=e,this.curTo=0,this.fragI=0,e.length){let t=this.curFrag=e[0];this.curTo=t.tree.prop(d3)??t.to,this.inner=new g3(t.tree,-t.offset)}else this.curFrag=this.inner=null}hasNode(e){for(;this.curFrag&&e.from>=this.curTo;)this.nextFrag();return this.curFrag&&this.curFrag.from<=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){if(this.fragI++,this.fragI==this.fragments.length)this.curFrag=this.inner=null;else{let e=this.curFrag=this.fragments[this.fragI];this.curTo=e.tree.prop(d3)??e.to,this.inner=new g3(e.tree,-e.offset)}}findMounts(e,t){let n=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let e=this.inner.cursor.node;e;e=e.parent){let r=e.tree?.prop(k4.mounted);if(r&&r.parser==t)for(let t=this.fragI;t=e.to)break;i.tree==this.curFrag.tree&&n.push({frag:i,pos:e.from-i.offset,mount:r})}}}return n}};function v3(e,t){let n=null,r=t;for(let i=1,a=0;i=s)break;e.to<=o||(n||(r=n=t.slice()),e.froms&&n.splice(a+1,0,new O4(s,e.to))):e.to>s?n[a--]=new O4(s,e.to):n.splice(a--,1))}}return r}function y3(e,t,n,r){let i=0,a=0,o=!1,s=!1,c=-1e9,l=[];for(;;){let u=i==e.length?1e9:o?e[i].to:e[i].from,d=a==t.length?1e9:s?t[a].to:t[a].from;if(o!=s){let e=Math.max(c,n),t=Math.min(u,d,r);enew O4(e.from+r,e.to+r)),s,c);for(let t=0,r=s;;t++){let s=t==o.length,l=s?c:o[t].from;if(l>r&&n.push(new i3(r,l,i.tree,-e,a.from>=r||a.openStart,a.to<=l||a.openEnd)),s)break;r=o[t].to}}else n.push(new i3(s,c,i.tree,-e,a.from>=e||a.openStart,a.to<=o||a.openEnd))}return n}var x3=0,S3=class e{constructor(e,t,n,r){this.name=e,this.set=t,this.base=n,this.modified=r,this.id=x3++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(t,n){let r=typeof t==`string`?t:`?`;if(t instanceof e&&(n=t),n?.base)throw Error(`Can not derive from a modified tag`);let i=new e(r,[],null,[]);if(i.set.push(i),n)for(let e of n.set)i.set.push(e);return i}static defineModifier(e){let t=new w3(e);return e=>e.modified.indexOf(t)>-1?e:w3.get(e.base||e,e.modified.concat(t).sort((e,t)=>e.id-t.id))}},C3=0,w3=class e{constructor(e){this.name=e,this.instances=[],this.id=C3++}static get(t,n){if(!n.length)return t;let r=n[0].instances.find(e=>e.base==t&&T3(n,e.modified));if(r)return r;let i=[],a=new S3(t.name,i,t,n);for(let e of n)e.instances.push(a);let o=E3(n);for(let n of t.set)if(!n.modified.length)for(let t of o)i.push(e.get(n,t));return a}};function T3(e,t){return e.length==t.length&&e.every((e,n)=>e==t[n])}function E3(e){let t=[[]];for(let n=0;nt.length-e.length)}function D3(e){let t=Object.create(null);for(let n in e){let r=e[n];Array.isArray(r)||(r=[r]);for(let e of n.split(` `))if(e){let n=[],i=2,a=e;for(let t=0;;){if(a==`...`&&t>0&&t+3==e.length){i=1;break}let r=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(a);if(!r)throw RangeError(`Invalid path: `+e);if(n.push(r[0]==`*`?``:r[0][0]==`"`?JSON.parse(r[0]):r[0]),t+=r[0].length,t==e.length)break;let o=e[t++];if(t==e.length&&o==`!`){i=0;break}if(o!=`/`)throw RangeError(`Invalid path: `+e);a=e.slice(t)}let o=n.length-1,s=n[o];if(!s)throw RangeError(`Invalid path: `+e);t[s]=new k3(r,i,o>0?n.slice(0,o):null).sort(t[s])}}return O3.add(t)}var O3=new k4({combine(e,t){let n,r,i;for(;e||t;){if(!e||t&&e.depth>=t.depth?(i=t,t=t.next):(i=e,e=e.next),n&&n.mode==i.mode&&!i.context&&!n.context)continue;let a=new k3(i.tags,i.mode,i.context);n?n.next=a:r=a,n=a}return r}}),k3=class{constructor(e,t,n,r){this.tags=e,this.mode=t,this.context=n,this.next=r}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let t=i;for(let r of e)for(let e of r.set){let r=n[e.id];if(r){t=t?t+` `+r:r;break}}return t},scope:r}}function j3(e,t){let n=null;for(let r of e){let e=r.style(t);e&&(n=n?n+` `+e:e)}return n}function M3(e,t,n,r=0,i=e.length){let a=new N3(r,Array.isArray(t)?t:[t],n);a.highlightRange(e.cursor(),r,i,``,a.highlighters),a.flush(i)}var N3=class{constructor(e,t,n){this.at=e,this.highlighters=t,this.span=n,this.class=``}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,n,r,i){let{type:a,from:o,to:s}=e;if(o>=n||s<=t)return;a.isTop&&(i=this.highlighters.filter(e=>!e.scope||e.scope(a)));let c=r,l=P3(e)||k3.empty,u=j3(i,l.tags);if(u&&(c&&(c+=` `),c+=u,l.mode==1&&(r+=(r?` `:``)+u)),this.startSpan(Math.max(t,o),c),l.opaque)return;let d=e.tree&&e.tree.prop(k4.mounted);if(d&&d.overlay){let a=e.node.enter(d.overlay[0].from+o,1),l=this.highlighters.filter(e=>!e.scope||e.scope(d.tree.type)),u=e.firstChild();for(let f=0,p=o;;f++){let m=f=h||!e.nextSibling())););if(!m||h>n)break;p=m.to+o,p>t&&(this.highlightRange(a.cursor(),Math.max(t,m.from+o),Math.min(n,p),``,l),this.startSpan(Math.min(n,p),c))}u&&e.parent()}else if(e.firstChild()){d&&(r=``);do{if(e.to<=t)continue;if(e.from>=n)break;this.highlightRange(e,t,n,r,i),this.startSpan(Math.min(n,e.to),c)}while(e.nextSibling());e.parent()}}};function P3(e){let t=e.type.prop(O3);for(;t&&t.context&&!e.matchContext(t.context);)t=t.next;return t||null}var X=S3.define,F3=X(),I3=X(),L3=X(I3),R3=X(I3),z3=X(),B3=X(z3),V3=X(z3),H3=X(),U3=X(H3),W3=X(),G3=X(),K3=X(),q3=X(K3),J3=X(),Z={comment:F3,lineComment:X(F3),blockComment:X(F3),docComment:X(F3),name:I3,variableName:X(I3),typeName:L3,tagName:X(L3),propertyName:R3,attributeName:X(R3),className:X(I3),labelName:X(I3),namespace:X(I3),macroName:X(I3),literal:z3,string:B3,docString:X(B3),character:X(B3),attributeValue:X(B3),number:V3,integer:X(V3),float:X(V3),bool:X(z3),regexp:X(z3),escape:X(z3),color:X(z3),url:X(z3),keyword:W3,self:X(W3),null:X(W3),atom:X(W3),unit:X(W3),modifier:X(W3),operatorKeyword:X(W3),controlKeyword:X(W3),definitionKeyword:X(W3),moduleKeyword:X(W3),operator:G3,derefOperator:X(G3),arithmeticOperator:X(G3),logicOperator:X(G3),bitwiseOperator:X(G3),compareOperator:X(G3),updateOperator:X(G3),definitionOperator:X(G3),typeOperator:X(G3),controlOperator:X(G3),punctuation:K3,separator:X(K3),bracket:q3,angleBracket:X(q3),squareBracket:X(q3),paren:X(q3),brace:X(q3),content:H3,heading:U3,heading1:X(U3),heading2:X(U3),heading3:X(U3),heading4:X(U3),heading5:X(U3),heading6:X(U3),contentSeparator:X(H3),list:X(H3),quote:X(H3),emphasis:X(H3),strong:X(H3),link:X(H3),monospace:X(H3),strikethrough:X(H3),inserted:X(),deleted:X(),changed:X(),invalid:X(),meta:J3,documentMeta:X(J3),annotation:X(J3),processingInstruction:X(J3),definition:S3.defineModifier(`definition`),constant:S3.defineModifier(`constant`),function:S3.defineModifier(`function`),standard:S3.defineModifier(`standard`),local:S3.defineModifier(`local`),special:S3.defineModifier(`special`)};for(let e in Z){let t=Z[e];t instanceof S3&&(t.name=e)}A3([{tag:Z.link,class:`tok-link`},{tag:Z.heading,class:`tok-heading`},{tag:Z.emphasis,class:`tok-emphasis`},{tag:Z.strong,class:`tok-strong`},{tag:Z.keyword,class:`tok-keyword`},{tag:Z.atom,class:`tok-atom`},{tag:Z.bool,class:`tok-bool`},{tag:Z.url,class:`tok-url`},{tag:Z.labelName,class:`tok-labelName`},{tag:Z.inserted,class:`tok-inserted`},{tag:Z.deleted,class:`tok-deleted`},{tag:Z.literal,class:`tok-literal`},{tag:Z.string,class:`tok-string`},{tag:Z.number,class:`tok-number`},{tag:[Z.regexp,Z.escape,Z.special(Z.string)],class:`tok-string2`},{tag:Z.variableName,class:`tok-variableName`},{tag:Z.local(Z.variableName),class:`tok-variableName tok-local`},{tag:Z.definition(Z.variableName),class:`tok-variableName tok-definition`},{tag:Z.special(Z.variableName),class:`tok-variableName2`},{tag:Z.definition(Z.propertyName),class:`tok-propertyName tok-definition`},{tag:Z.typeName,class:`tok-typeName`},{tag:Z.namespace,class:`tok-namespace`},{tag:Z.className,class:`tok-className`},{tag:Z.macroName,class:`tok-macroName`},{tag:Z.propertyName,class:`tok-propertyName`},{tag:Z.operator,class:`tok-operator`},{tag:Z.comment,class:`tok-comment`},{tag:Z.meta,class:`tok-meta`},{tag:Z.invalid,class:`tok-invalid`},{tag:Z.punctuation,class:`tok-punctuation`}]);var Y3=new k4;function X3(e){return hY.define({combine:e?t=>t.concat(e):void 0})}var Z3=new k4,Q3=class{constructor(e,t,n=[],r=``){this.data=e,this.name=r,iX.prototype.hasOwnProperty(`tree`)||Object.defineProperty(iX.prototype,"tree",{get(){return t6(this)}}),this.parser=t,this.extension=[u6.of(this),iX.languageData.of((e,t,n)=>{let r=$3(e,t,n),i=r.type.prop(Y3);if(!i)return[];let a=e.facet(i),o=r.type.prop(Z3);if(o){let i=r.resolve(t-r.from,n);for(let t of o)if(t.test(i,e)){let n=e.facet(t.facet);return t.type==`replace`?n:n.concat(a)}}return a})].concat(n)}isActiveAt(e,t,n=-1){return $3(e,t,n).type.prop(Y3)==this.data}findRegions(e){let t=e.facet(u6);if(t?.data==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let n=[],r=(e,t)=>{if(e.prop(Y3)==this.data){n.push({from:t,to:t+e.length});return}let i=e.prop(k4.mounted);if(i){if(i.tree.prop(Y3)==this.data){if(i.overlay)for(let e of i.overlay)n.push({from:e.from+t,to:e.to+t});else n.push({from:t,to:t+e.length});return}else if(i.overlay){let e=n.length;if(r(i.tree,i.overlay[0].from+t),n.length>e)return}}for(let n=0;ne.isTop?n:void 0)]}),t.name)}configure(t,n){return new e(this.data,this.parser.configure(t),n||this.name)}get allowsNesting(){return this.parser.hasWrappers()}};function t6(e){let t=e.field(Q3.state,!1);return t?t.tree:L4.empty}var n6=class{constructor(e){this.doc=e,this.cursorPos=0,this.string=``,this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){let n=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-n,t-n)}},r6=null,i6=class e{constructor(e,t,n=[],r,i,a,o,s){this.parser=e,this.state=t,this.fragments=n,this.tree=r,this.treeLen=i,this.viewport=a,this.skipped=o,this.scheduleOn=s,this.parse=null,this.tempSkipped=[]}static create(t,n,r){return new e(t,n,[],L4.empty,0,r,[],null)}startParse(){return this.parser.startParse(new n6(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=L4.empty&&this.isDone(t??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{if(typeof e==`number`){let t=Date.now()+e;e=()=>Date.now()>t}for(this.parse||=this.startParse(),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(i3.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=r6;r6=this;try{return e()}finally{r6=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=a6(e,t.from,t.to);return e}changes(t,n){let{fragments:r,tree:i,treeLen:a,viewport:o,skipped:s}=this;if(this.takeTree(),!t.empty){let e=[];if(t.iterChangedRanges((t,n,r,i)=>e.push({fromA:t,toA:n,fromB:r,toB:i})),r=i3.applyChanges(r,e),i=L4.empty,a=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){s=[];for(let e of this.skipped){let n=t.mapPos(e.from,1),r=t.mapPos(e.to,-1);ne.from&&(this.fragments=a6(this.fragments,n,r),this.skipped.splice(t--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&=(this.takeTree(),null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends a3{createParse(t,n,r){let i=r[0].from,a=r[r.length-1].to;return{parsedPos:i,advance(){let t=r6;if(t){for(let e of r)t.tempSkipped.push(e);e&&(t.scheduleOn=t.scheduleOn?Promise.all([t.scheduleOn,e]):e)}return this.parsedPos=a,new L4(M4.none,[],[],a-i)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return r6}};function a6(e,t,n){return i3.applyChanges(e,[{fromA:t,toA:n,fromB:t,toB:n}])}var o6=class e{constructor(e){this.context=e,this.tree=e.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let n=this.context.changes(t.changes,t.state),r=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),n.viewport.to);return n.work(20,r)||n.takeTree(),new e(n)}static init(t){let n=Math.min(3e3,t.doc.length),r=i6.create(t.facet(u6).parser,t,{from:0,to:n});return r.work(20,n)||r.takeTree(),new e(r)}};Q3.state=SY.define({create:o6.init,update(e,t){for(let e of t.effects)if(e.is(Q3.setState))return e.value;return t.startState.facet(u6)==t.state.facet(u6)?e.apply(t):o6.init(t.state)}});var s6=e=>{let t=setTimeout(()=>e(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<`u`&&(s6=e=>{let t=-1,n=setTimeout(()=>{t=requestIdleCallback(e,{timeout:400})},100);return()=>t<0?clearTimeout(n):cancelIdleCallback(t)});var c6=typeof navigator<`u`&&navigator.scheduling?.isInputPending?()=>navigator.scheduling.isInputPending():null,l6=AQ.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(Q3.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(Q3.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=s6(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEndr+1e3,s=i.context.work(()=>c6&&c6()||Date.now()>a,r+(o?0:1e5));this.chunkBudget-=Date.now()-t,(s||this.chunkBudget<=0)&&(i.context.takeTree(),this.view.dispatch({effects:Q3.setState.of(new o6(i.context))})),this.chunkBudget>0&&!(s&&!o)&&this.scheduleWork(),this.checkAsyncSchedule(i.context)}checkAsyncSchedule(e){e.scheduleOn&&=(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(e=>EQ(this.view.state,e)).then(()=>this.workScheduled--),null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),u6=hY.define({combine(e){return e.length?e[0]:null},enables:e=>[Q3.state,l6,R0.contentAttributes.compute([e],t=>{let n=t.facet(e);return n&&n.name?{"data-language":n.name}:{}})]}),d6=class{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}},Q=class e{constructor(e,t,n,r,i,a=void 0){this.name=e,this.alias=t,this.extensions=n,this.filename=r,this.loadFunc=i,this.support=a,this.loading=null}load(){return this.loading||=this.loadFunc().then(e=>this.support=e,e=>{throw this.loading=null,e})}static of(t){let{load:n,support:r}=t;if(!n){if(!r)throw RangeError(`Must pass either 'load' or 'support' to LanguageDescription.of`);n=()=>Promise.resolve(r)}return new e(t.name,(t.alias||[]).concat(t.name).map(e=>e.toLowerCase()),t.extensions||[],t.filename,n,r)}static matchFilename(e,t){for(let n of e)if(n.filename&&n.filename.test(t))return n;let n=/\.([^.]+)$/.exec(t);if(n){for(let t of e)if(t.extensions.indexOf(n[1])>-1)return t}return null}static matchLanguageName(e,t,n=!0){t=t.toLowerCase();for(let n of e)if(n.alias.some(e=>e==t))return n;if(n)for(let n of e)for(let e of n.alias){let r=t.indexOf(e);if(r>-1&&(e.length>2||!/\w/.test(t[r-1])&&!/\w/.test(t[r+e.length])))return n}return null}},f6=hY.define(),p6=hY.define({combine:e=>{if(!e.length)return` `;let t=e[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw Error(`Invalid indent unit: `+JSON.stringify(e[0]));return t}});function m6(e){let t=e.facet(p6);return t.charCodeAt(0)==9?e.tabSize*t.length:t.length}function h6(e,t){let n=``,r=e.tabSize,i=e.facet(p6)[0];if(i==` `){for(;t>=r;)n+=` `,t-=r;i=` `}for(let e=0;e=t?y6(e,n,t):null}var _6=class{constructor(e,t={}){this.state=e,this.options=t,this.unit=m6(e)}lineAt(e,t=1){let n=this.state.doc.lineAt(e),{simulateBreak:r,simulateDoubleBreak:i}=this.options;return r!=null&&r>=n.from&&r<=n.to?i&&r==e?{text:``,from:e}:(t<0?r-1&&(i+=a-this.countColumn(n,n.search(/\S|$/))),i}countColumn(e,t=e.length){return wX(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:n,from:r}=this.lineAt(e,t),i=this.options.overrideIndentation;if(i){let e=i(r);if(e>-1)return e}return this.countColumn(n,n.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},v6=new k4;function y6(e,t,n){let r=t.resolveStack(n),i=t.resolveInner(n,-1).resolve(n,0).enterUnfinishedNodesBefore(n);if(i!=r.node){let e=[];for(let t=i;t&&!(t.fromr.node.to||t.from==r.node.from&&t.type==r.node.type);t=t.parent)e.push(t);for(let t=e.length-1;t>=0;t--)r={node:e[t],next:r}}return b6(r,e,n)}function b6(e,t,n){for(let r=e;r;r=r.next){let e=S6(r.node);if(e)return e(w6.create(t,n,r))}return 0}function x6(e){return e.pos==e.options.simulateBreak&&e.options.simulateDoubleBreak}function S6(e){let t=e.type.prop(v6);if(t)return t;let n=e.firstChild,r;if(n&&(r=n.type.prop(k4.closedBy))){let t=e.lastChild,n=t&&r.indexOf(t.name)>-1;return e=>O6(e,!0,1,void 0,n&&!x6(e)?t.from:void 0)}return e.parent==null?C6:null}function C6(){return 0}var w6=class e extends _6{constructor(e,t,n){super(e.state,e.options),this.base=e,this.pos=t,this.context=n}get node(){return this.context.node}static create(t,n,r){return new e(t,n,r)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let t=this.state.doc.lineAt(e.from);for(;;){let n=e.resolve(t.from);for(;n.parent&&n.parent.from==n.from;)n=n.parent;if(T6(n,e))break;t=this.state.doc.lineAt(n.from)}return this.lineIndent(t.from)}continue(){return b6(this.context.next,this.base,this.pos)}};function T6(e,t){for(let n=t;n;n=n.parent)if(e==n)return!0;return!1}function E6(e){let t=e.node,n=t.childAfter(t.from),r=t.lastChild;if(!n)return null;let i=e.options.simulateBreak,a=e.state.doc.lineAt(n.from),o=i==null||i<=a.from?a.to:Math.min(a.to,i);for(let e=n.to;;){let i=t.childAfter(e);if(!i||i==r)return null;if(!i.type.isSkipped){if(i.from>=o)return null;let e=/^ */.exec(a.text.slice(n.to-a.from))[0].length;return{from:n.from,to:n.to+e}}e=i.to}}function D6({closing:e,align:t=!0,units:n=1}){return r=>O6(r,t,n,e)}function O6(e,t,n,r,i){let a=e.textAfter,o=a.match(/^\s*/)[0].length,s=r&&a.slice(o,o+r.length)==r||i==e.pos+o,c=t?E6(e):null;return c?s?e.column(c.from):e.column(c.to):e.baseIndent+(s?0:e.unit*n)}var k6=e=>e.baseIndent;function A6({except:e,units:t=1}={}){return n=>{let r=e&&e.test(n.textAfter);return n.baseIndent+(r?0:t*n.unit)}}var j6=200;function M6(){return iX.transactionFilter.of(e=>{if(!e.docChanged||!e.isUserEvent(`input.type`)&&!e.isUserEvent(`input.complete`))return e;let t=e.startState.languageDataAt(`indentOnInput`,e.startState.selection.main.head);if(!t.length)return e;let n=e.newDoc,{head:r}=e.newSelection.main,i=n.lineAt(r);if(r>i.from+j6)return e;let a=n.sliceString(i.from,r);if(!t.some(e=>e.test(a)))return e;let{state:o}=e,s=-1,c=[];for(let{head:e}of o.selection.ranges){let t=o.doc.lineAt(e);if(t.from==s)continue;s=t.from;let n=g6(o,t.from);if(n==null)continue;let r=/^\s*/.exec(t.text)[0],i=h6(o,n);r!=i&&c.push({from:t.from,to:t.from+r.length,insert:i})}return c.length?[e,{changes:c,sequential:!0}]:e})}var N6=hY.define(),P6=new k4;function F6(e){let t=e.firstChild,n=e.lastChild;return t&&t.ton)continue;if(a&&i.from=t&&r.to>n&&(a=r)}}return a}function L6(e){let t=e.lastChild;return t&&t.to==e.to&&t.type.isError}function R6(e,t,n){for(let r of e.facet(N6)){let i=r(e,t,n);if(i)return i}return I6(e,t,n)}function z6(e,t){let n=t.mapPos(e.from,1),r=t.mapPos(e.to,-1);return n>=r?void 0:{from:n,to:r}}var B6=UY.define({map:z6}),V6=UY.define({map:z6});function H6(e){let t=[];for(let{head:n}of e.state.selection.ranges)t.some(e=>e.from<=n&&e.to>=n)||t.push(e.lineBlockAt(n));return t}var U6=SY.define({create(){return cZ.none},update(e,t){t.isUserEvent(`delete`)&&t.changes.iterChangedRanges((t,n)=>e=W6(e,t,n)),e=e.map(t.changes);for(let n of t.effects)if(n.is(B6)&&!K6(e,n.value.from,n.value.to)){let{preparePlaceholder:r}=t.state.facet($6),i=r?cZ.replace({widget:new r8(r(t.state,n.value))}):n8;e=e.update({add:[i.range(n.value.from,n.value.to)]})}else n.is(V6)&&(e=e.update({filter:(e,t)=>n.value.from!=e||n.value.to!=t,filterFrom:n.value.from,filterTo:n.value.to}));return t.selection&&(e=W6(e,t.selection.main.head)),e},provide:e=>R0.decorations.from(e),toJSON(e,t){let n=[];return e.between(0,t.doc.length,(e,t)=>{n.push(e,t)}),n},fromJSON(e){if(!Array.isArray(e)||e.length%2)throw RangeError(`Invalid JSON for fold state`);let t=[];for(let n=0;n{et&&(r=!0)}),r?e.update({filterFrom:t,filterTo:n,filter:(e,r)=>e>=n||r<=t}):e}function G6(e,t,n){var r;let i=null;return(r=e.field(U6,!1))==null||r.between(t,n,(e,t)=>{(!i||i.from>e)&&(i={from:e,to:t})}),i}function K6(e,t,n){let r=!1;return e.between(t,t,(e,i)=>{e==t&&i==n&&(r=!0)}),r}function q6(e,t){return e.field(U6,!1)?t:t.concat(UY.appendConfig.of(e8()))}var J6=e=>{for(let t of H6(e)){let n=R6(e.state,t.from,t.to);if(n)return e.dispatch({effects:q6(e.state,[B6.of(n),X6(e,n)])}),!0}return!1},Y6=e=>{if(!e.state.field(U6,!1))return!1;let t=[];for(let n of H6(e)){let r=G6(e.state,n.from,n.to);r&&t.push(V6.of(r),X6(e,r,!1))}return t.length&&e.dispatch({effects:t}),t.length>0};function X6(e,t,n=!0){let r=e.state.doc.lineAt(t.from).number,i=e.state.doc.lineAt(t.to).number;return R0.announce.of(`${e.state.phrase(n?`Folded lines`:`Unfolded lines`)} ${r} ${e.state.phrase(`to`)} ${i}.`)}var Z6=[{key:`Ctrl-Shift-[`,mac:`Cmd-Alt-[`,run:J6},{key:`Ctrl-Shift-]`,mac:`Cmd-Alt-]`,run:Y6},{key:`Ctrl-Alt-[`,run:e=>{let{state:t}=e,n=[];for(let r=0;r{let t=e.state.field(U6,!1);if(!t||!t.size)return!1;let n=[];return t.between(0,e.state.doc.length,(e,t)=>{n.push(V6.of({from:e,to:t}))}),e.dispatch({effects:n}),!0}}],Q6={placeholderDOM:null,preparePlaceholder:null,placeholderText:`…`},$6=hY.define({combine(e){return aX(e,Q6)}});function e8(e){let t=[U6,s8];return e&&t.push($6.of(e)),t}function t8(e,t){let{state:n}=e,r=n.facet($6),i=t=>{let n=e.lineBlockAt(e.posAtDOM(t.target)),r=G6(e.state,n.from,n.to);r&&e.dispatch({effects:V6.of(r)}),t.preventDefault()};if(r.placeholderDOM)return r.placeholderDOM(e,i,t);let a=document.createElement(`span`);return a.textContent=r.placeholderText,a.setAttribute(`aria-label`,n.phrase(`folded code`)),a.title=n.phrase(`unfold`),a.className=`cm-foldPlaceholder`,a.onclick=i,a}var n8=cZ.replace({widget:new class extends oZ{toDOM(e){return t8(e,null)}}}),r8=class extends oZ{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return t8(e,this.value)}},i8={openText:`⌄`,closedText:`›`,markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1},a8=class extends e4{constructor(e,t){super(),this.config=e,this.open=t}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let t=document.createElement(`span`);return t.textContent=this.open?this.config.openText:this.config.closedText,t.title=e.state.phrase(this.open?`Fold line`:`Unfold line`),t}};function o8(e={}){let t={...i8,...e},n=new a8(t,!0),r=new a8(t,!1),i=AQ.fromClass(class{constructor(e){this.from=e.viewport.from,this.markers=this.buildMarkers(e)}update(e){(e.docChanged||e.viewportChanged||e.startState.facet(u6)!=e.state.facet(u6)||e.startState.field(U6,!1)!=e.state.field(U6,!1)||t6(e.startState)!=t6(e.state)||t.foldingChanged(e))&&(this.markers=this.buildMarkers(e.view))}buildMarkers(e){let t=new pX;for(let i of e.viewportLineBlocks){let a=G6(e.state,i.from,i.to)?r:R6(e.state,i.from,i.to)?n:null;a&&t.add(i.from,i.from,a)}return t.finish()}}),{domEventHandlers:a}=t;return[i,a4({class:`cm-foldGutter`,markers(e){return e.plugin(i)?.markers||dX.empty},initialSpacer(){return new a8(t,!1)},domEventHandlers:{...a,click:(e,t,n)=>{if(a.click&&a.click(e,t,n))return!0;let r=G6(e.state,t.from,t.to);if(r)return e.dispatch({effects:V6.of(r)}),!0;let i=R6(e.state,t.from,t.to);return i?(e.dispatch({effects:B6.of(i)}),!0):!1}}}),e8()]}var s8=R0.baseTheme({".cm-foldPlaceholder":{backgroundColor:`#eee`,border:`1px solid #ddd`,color:`#888`,borderRadius:`.2em`,margin:`0 1px`,padding:`0 1px`,cursor:`pointer`},".cm-foldGutter span":{padding:`0 1px`,cursor:`pointer`}}),c8=class e{constructor(e,t){this.specs=e;let n;function r(e){let t=AX.newName();return(n||=Object.create(null))[`.`+t]=e,t}let i=typeof t.all==`string`?t.all:t.all?r(t.all):void 0,a=t.scope;this.scope=a instanceof Q3?e=>e.prop(Y3)==a.data:a?e=>e==a:void 0,this.style=A3(e.map(e=>({tag:e.tag,class:e.class||r(Object.assign({},e,{tag:null}))})),{all:i}).style,this.module=n?new AX(n):null,this.themeType=t.themeType}static define(t,n){return new e(t,n||{})}},l8=hY.define(),u8=hY.define({combine(e){return e.length?[e[0]]:null}});function d8(e){let t=e.facet(l8);return t.length?t:e.facet(u8)}function f8(e,t){let n=[m8],r;return e instanceof c8&&(e.module&&n.push(R0.styleModule.of(e.module)),r=e.themeType),t?.fallback?n.push(u8.of(e)):r?n.push(l8.computeN([R0.darkTheme],t=>t.facet(R0.darkTheme)==(r==`dark`)?[e]:[])):n.push(l8.of(e)),n}var p8=class{constructor(e){this.markCache=Object.create(null),this.tree=t6(e.state),this.decorations=this.buildDeco(e,d8(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=t6(e.state),n=d8(e.state),r=n!=d8(e.startState),{viewport:i}=e.view,a=e.changes.mapPos(this.decoratedTo,1);t.length=i.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=a):(t!=this.tree||e.viewportChanged||r)&&(this.tree=t,this.decorations=this.buildDeco(e.view,n),this.decoratedTo=i.to)}buildDeco(e,t){if(!t||!this.tree.length)return cZ.none;let n=new pX;for(let{from:r,to:i}of e.visibleRanges)M3(this.tree,t,(e,t,r)=>{n.add(e,t,this.markCache[r]||(this.markCache[r]=cZ.mark({class:r})))},r,i);return n.finish()}},m8=TY.high(AQ.fromClass(p8,{decorations:e=>e.decorations})),h8=c8.define([{tag:Z.meta,color:`#404740`},{tag:Z.link,textDecoration:`underline`},{tag:Z.heading,textDecoration:`underline`,fontWeight:`bold`},{tag:Z.emphasis,fontStyle:`italic`},{tag:Z.strong,fontWeight:`bold`},{tag:Z.strikethrough,textDecoration:`line-through`},{tag:Z.keyword,color:`#708`},{tag:[Z.atom,Z.bool,Z.url,Z.contentSeparator,Z.labelName],color:`#219`},{tag:[Z.literal,Z.inserted],color:`#164`},{tag:[Z.string,Z.deleted],color:`#a11`},{tag:[Z.regexp,Z.escape,Z.special(Z.string)],color:`#e40`},{tag:Z.definition(Z.variableName),color:`#00f`},{tag:Z.local(Z.variableName),color:`#30a`},{tag:[Z.typeName,Z.namespace],color:`#085`},{tag:Z.className,color:`#167`},{tag:[Z.special(Z.variableName),Z.macroName],color:`#256`},{tag:Z.definition(Z.propertyName),color:`#00c`},{tag:Z.comment,color:`#940`},{tag:Z.invalid,color:`#f00`}]),g8=R0.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:`#328c8252`},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:`#bb555544`}}),_8=1e4,v8=`()[]{}`,y8=hY.define({combine(e){return aX(e,{afterCursor:!0,brackets:v8,maxScanDistance:_8,renderMatch:S8})}}),b8=cZ.mark({class:`cm-matchingBracket`}),x8=cZ.mark({class:`cm-nonmatchingBracket`});function S8(e){let t=[],n=e.matched?b8:x8;return t.push(n.range(e.start.from,e.start.to)),e.end&&t.push(n.range(e.end.from,e.end.to)),t}function C8(e){let t=[],n=e.facet(y8);for(let r of e.selection.ranges){if(!r.empty)continue;let i=k8(e,r.head,-1,n)||r.head>0&&k8(e,r.head-1,1,n)||n.afterCursor&&(k8(e,r.head,1,n)||r.heade.decorations}),g8];function T8(e={}){return[y8.of(e),w8]}var E8=new k4;function D8(e,t,n){let r=e.prop(t<0?k4.openedBy:k4.closedBy);if(r)return r;if(e.name.length==1){let r=n.indexOf(e.name);if(r>-1&&r%2==+(t<0))return[n[r+t]]}return null}function O8(e){let t=e.type.prop(E8);return t?t(e.node):e}function k8(e,t,n,r={}){let i=r.maxScanDistance||_8,a=r.brackets||v8,o=t6(e),s=o.resolveInner(t,n);for(let r=s;r;r=r.parent){let i=D8(r.type,n,a);if(i&&r.from0?t>=o.from&&to.from&&t<=o.to))return A8(e,t,n,r,o,i,a)}}return j8(e,t,n,o,s.type,i,a)}function A8(e,t,n,r,i,a,o){let s=r.parent,c={from:i.from,to:i.to},l=0,u=s?.cursor();if(u&&(n<0?u.childBefore(r.from):u.childAfter(r.to)))do if(n<0?u.to<=r.from:u.from>=r.to){if(l==0&&a.indexOf(u.type.name)>-1&&u.from0)return null;let l={from:n<0?t-1:t,to:n>0?t+1:t},u=e.doc.iterRange(t,n>0?e.doc.length:0),d=0;for(let e=0;!u.next().done&&e<=a;){let a=u.value;n<0&&(e+=a.length);let s=t+e*n;for(let e=n>0?0:a.length-1,t=n>0?a.length:-1;e!=t;e+=n){let t=o.indexOf(a[e]);if(!(t<0||r.resolveInner(s+e,1).type!=i))if(t%2==0==n>0)d++;else if(d==1)return{start:l,end:{from:s+e,to:s+e+1},matched:t>>1==c>>1};else d--}n>0&&(e+=a.length)}return u.done?{start:l,matched:!1}:null}function M8(e,t,n,r=0,i=0){t??(t=e.search(/[^\s\u00a0]/),t==-1&&(t=e.length));let a=i;for(let i=r;i=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.post}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPosn?e.toLowerCase():e;return r(this.string.substr(this.pos,e.length))==r(e)?(t!==!1&&(this.pos+=e.length),!0):null}else{let n=this.string.slice(this.pos).match(e);return n&&n.index>0?null:(n&&t!==!1&&(this.pos+=n[0].length),n)}}current(){return this.string.slice(this.start,this.pos)}};function wre(e){return{name:e.name||``,token:e.token,blankLine:e.blankLine||(()=>{}),startState:e.startState||(()=>!0),copyState:e.copyState||Tre,indent:e.indent||(()=>null),languageData:e.languageData||{},tokenTable:e.tokenTable||R8,mergeTokens:e.mergeTokens!==!1}}function Tre(e){if(typeof e!=`object`)return e;let t={};for(let n in e){let r=e[n];t[n]=r instanceof Array?r.slice():r}return t}var P8=new WeakMap,Ere=class e extends Q3{constructor(e){let t=X3(e.languageData),n=wre(e),r,i=new class extends a3{createParse(e,t,n){return new Ore(r,e,t,n)}};super(t,i,[],e.name),this.topNode=jre(t,this),r=this,this.streamParser=n,this.stateAfter=new k4({perNode:!0}),this.tokenTable=e.tokenTable?new U8(n.tokenTable):Are}static define(t){return new e(t)}getIndent(e){let t,{overrideIndentation:n}=e.options;n&&(t=P8.get(e.state),t!=null&&t1e4)return null;for(;i=r&&n+t.length<=i&&t.prop(e.stateAfter);if(a)return{state:e.streamParser.copyState(a),pos:n+t.length};for(let a=t.children.length-1;a>=0;a--){let o=t.children[a],s=n+t.positions[a],c=o instanceof L4&&s=t.length)return t;!i&&n==0&&t.type==e.topNode&&(i=!0);for(let a=t.children.length-1;a>=0;a--){let o=t.positions[a],s=t.children[a],c;if(on&&F8(e,i.tree,0-i.offset,n,a),s;if(o&&o.pos<=r&&(s=I8(e,i.tree,n+i.offset,o.pos+i.offset,!1)))return{state:o.state,tree:s}}return{state:e.streamParser.startState(i?m6(i):4),tree:L4.empty}}var Ore=class{constructor(e,t,n,r){this.lang=e,this.input=t,this.fragments=n,this.ranges=r,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=r[r.length-1].to;let i=i6.get(),a=r[0].from,{state:o,tree:s}=Dre(e,n,a,this.to,i?.state);this.state=o,this.parsedPos=this.chunkStart=a+s.length;for(let e=0;ee.from<=i.viewport.from&&e.to>=i.viewport.from)&&(this.state=this.lang.streamParser.startState(m6(i.state)),i.skipUntilInView(this.parsedPos,i.viewport.from),this.parsedPos=i.viewport.from),this.moveRangeIndex()}advance(){let e=i6.get(),t=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),n=Math.min(t,this.chunkStart+512);for(e&&(n=Math.min(n,e.viewport.to));this.parsedPos=t?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,t),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let t=this.input.chunk(e);if(this.input.lineChunks)t==` +`).trim();return t=XK(t),t=tq(t),(t.match(/```/g)||[]).length%2==1&&(t=`${t}\n\`\`\``),uq(t.split("```")).join("```").trim()}var fq=`modulepreload`,pq=function(e,t){return new URL(e,t).href},mq={},J=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=pq(t,n),t in mq)return;mq[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:fq,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},hq=b.lazy(()=>J(()=>import(`./CodeBlock-D6tEbvd9.js`).then(e=>({default:e.CodeBlock})),[],import.meta.url)),gq=b.lazy(()=>J(()=>import(`./MermaidBlock-CI9NjqQx.js`).then(e=>({default:e.MermaidBlock})),[],import.meta.url)),_q=b.lazy(()=>J(()=>import(`./MathMessageMarkdown-BBnihmbC.js`).then(e=>({default:e.MathMessageMarkdown})),__vite__mapDeps([0,1,2,3,4]),import.meta.url));function vq(e){return/\$[^$]+\$|\$\$[^$]+\$\$/.test(e)}var yq={h1({children:e}){return(0,U.jsx)(`h1`,{className:`mb-3.5 mt-5 text-[17px] font-semibold text-foreground`,children:e})},h2({children:e}){return(0,U.jsx)(`h2`,{className:`mb-2.5 mt-4.5 text-[15px] font-semibold text-foreground`,children:e})},h3({children:e}){return(0,U.jsx)(`h3`,{className:`mb-2 mt-3.5 text-[14px] font-semibold text-foreground`,children:e})},p({children:e}){return(0,U.jsx)(`p`,{className:`mb-2.5 min-w-0 break-words leading-[1.65] text-foreground`,children:e})},ul({children:e}){return(0,U.jsx)(`ul`,{className:`mb-3 list-disc space-y-1.5 pl-5 text-foreground`,children:e})},ol({children:e}){return(0,U.jsx)(`ol`,{className:`mb-3 list-decimal space-y-1.5 pl-8 text-foreground`,children:e})},li({children:e}){return(0,U.jsx)(`li`,{className:`min-w-0 break-words pl-1 leading-6 text-foreground`,children:e})},strong({children:e}){return(0,U.jsx)(`strong`,{className:`font-semibold text-foreground`,children:e})},blockquote({children:e}){return(0,U.jsx)(`blockquote`,{className:`mb-3 border-l-2 border-border pl-4 text-text-secondary`,children:e})},code({className:e,children:t,...n}){let r=/language-(\w+)/.exec(e||``),i=String(t??``);if(!r&&!i.includes(` +`))return(0,U.jsx)(`code`,{className:`rounded-md border border-border bg-muted px-1.5 py-0.5 font-mono text-[13.5px] text-text-primary before:content-none after:content-none`,...n,children:t});let a=r?r[1]:``;return a===`mermaid`?(0,U.jsx)(b.Suspense,{fallback:(0,U.jsx)(`div`,{className:`h-32 animate-pulse rounded bg-muted`}),children:(0,U.jsx)(gq,{chart:i})}):(0,U.jsx)(b.Suspense,{fallback:(0,U.jsx)(`pre`,{className:`p-4 text-sm`,children:i}),children:(0,U.jsx)(hq,{language:a,value:i})})},table({children:e,...t}){return(0,U.jsx)(`div`,{className:`mb-3 max-w-full overflow-x-auto`,children:(0,U.jsx)(`table`,{className:`w-full min-w-max border-collapse text-sm text-foreground`,...t,children:e})})},th({children:e,...t}){return(0,U.jsx)(`th`,{className:`border-b border-border px-3 py-2 text-left font-semibold text-foreground`,...t,children:e})},td({children:e,...t}){return(0,U.jsx)(`td`,{className:`border-b border-border px-3 py-2 text-text-secondary`,...t,children:e})},a({children:e,href:t,...n}){return(0,U.jsx)(`a`,{href:t,className:`text-primary hover:underline`,target:`_blank`,rel:`noopener noreferrer`,...n,children:e})}},bq=b.memo(({content:e})=>{let t=dq(e);return(0,U.jsx)(`div`,{className:`max-w-none break-words text-[14px] leading-[1.65] [&>*:first-child]:mt-0 [&>*:last-child]:mb-0`,children:(0,U.jsx)(HU,{remarkPlugins:[KK,YK],components:yq,children:t})})}),xq=b.memo(({content:e})=>vq(e)?(0,U.jsx)(b.Suspense,{fallback:(0,U.jsx)(bq,{content:e}),children:(0,U.jsx)(_q,{content:e})}):(0,U.jsx)(bq,{content:e})),Sq=/^diff --git "?a\/(.+?)"? "?b\/(.+?)"?$/;function Cq(e){let t=[],n=new Map,r=null;for(let i of e.split(` +`)){let e=i.match(Sq);if(e){let a=e[2],o=n.get(a);if(o){o.lines.push(i),r=o;continue}r={oldPath:e[1],path:a,lines:[i]},n.set(a,r),t.push(r);continue}r?.lines.push(i)}return t}function wq(e){let t=0,n=0;for(let r of e.lines)r.startsWith(`+`)&&!r.startsWith(`+++`)?t+=1:r.startsWith(`-`)&&!r.startsWith(`---`)&&(n+=1);return{added:t,removed:n}}function Tq(e){return/^diff --git /m.test(e)}function Eq(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function Dq(e){let t=Eq(e.properties)||{},n=Array.isArray(e.required)?new Set(e.required.map(String)):new Set,r=[];for(let[e,i]of Object.entries(t)){let t=Eq(i),a=String(t?.type||``).toLowerCase(),o=a===`string`||a===`number`||a===`boolean`?a:`unknown`;r.push({name:e,title:typeof t?.title==`string`?t.title:void 0,type:o,required:n.has(e),enumValues:Array.isArray(t?.enum)?t.enum:void 0})}return r}function Oq({schema:e,values:t,onChange:n,disabled:r,onSubmit:i,onCancel:a}){return(0,U.jsxs)(`div`,{className:`mt-3`,"data-testid":`interaction-schema-form`,children:[Dq(e).map(e=>(0,U.jsxs)(`label`,{className:`mb-2 block text-xs text-slate-600 dark:text-slate-300`,children:[(0,U.jsxs)(`span`,{className:`mb-1 block font-medium`,children:[e.title||e.name,e.required?(0,U.jsx)(`span`,{className:`ml-0.5 text-rose-500`,children:`*`}):null]}),e.enumValues&&e.enumValues.length>0?(0,U.jsxs)(`select`,{"data-testid":`interaction-field-${e.name}`,disabled:r,value:String(t[e.name]??``),onChange:r=>n({...t,[e.name]:r.target.value}),className:`w-full rounded-md border border-amber-300/70 bg-white px-2 py-1.5 text-sm dark:border-amber-900/60 dark:bg-slate-950`,children:[(0,U.jsx)(`option`,{value:``,children:`请选择…`}),e.enumValues.map(e=>(0,U.jsx)(`option`,{value:String(e),children:String(e)},String(e)))]}):e.type===`boolean`?(0,U.jsx)(`input`,{type:`checkbox`,"data-testid":`interaction-field-${e.name}`,disabled:r,checked:!!t[e.name],onChange:r=>n({...t,[e.name]:r.target.checked}),className:`h-4 w-4`}):e.type===`number`?(0,U.jsx)(`input`,{type:`number`,"data-testid":`interaction-field-${e.name}`,disabled:r,value:t[e.name]===void 0?``:String(t[e.name]),onChange:r=>n({...t,[e.name]:r.target.value===``?void 0:Number(r.target.value)}),className:`w-full rounded-md border border-amber-300/70 bg-white px-2 py-1.5 text-sm dark:border-amber-900/60 dark:bg-slate-950`}):(0,U.jsx)(`input`,{type:`text`,"data-testid":`interaction-field-${e.name}`,disabled:r,value:String(t[e.name]??``),onChange:r=>n({...t,[e.name]:r.target.value}),className:`w-full rounded-md border border-amber-300/70 bg-white px-2 py-1.5 text-sm dark:border-amber-900/60 dark:bg-slate-950`})]},e.name)),(0,U.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[(0,U.jsx)(`button`,{type:`button`,"data-testid":`interaction-submit`,disabled:r,onClick:i,className:`inline-flex min-h-8 items-center rounded-md bg-emerald-600 px-3 py-1.5 text-xs font-semibold text-white hover:bg-emerald-500 disabled:cursor-not-allowed disabled:opacity-55`,children:`提交`}),(0,U.jsx)(`button`,{type:`button`,"data-testid":`interaction-form-cancel`,disabled:r,onClick:a,className:`inline-flex min-h-8 items-center rounded-md px-3 py-1.5 text-xs font-medium text-slate-500 underline-offset-2 hover:underline disabled:cursor-not-allowed disabled:opacity-55 dark:text-slate-400`,children:`取消本次确认`})]})]})}function kq({surfaceId:e,serializedMessages:t}){let{processMessages:n}=VO();return(0,b.useEffect)(()=>{n(JSON.parse(t))},[t,n]),(0,U.jsx)(jte,{surfaceId:e,className:`w-full`,fallback:(0,U.jsx)(`div`,{className:`text-sm text-slate-500 dark:text-slate-400`,children:`界面内容暂不可用`}),loadingFallback:(0,U.jsx)(`div`,{className:`text-sm text-slate-500 dark:text-slate-400`,children:`正在加载界面`})})}function Aq({surfaceId:e,messages:t,onAction:n}){let r=JSON.stringify(t);return(0,U.jsx)(`div`,{className:`mb-3 w-full overflow-hidden rounded-lg border border-slate-200 bg-white p-3 shadow-sm dark:border-slate-700 dark:bg-slate-900`,children:(0,U.jsx)(Ete,{catalog:WO,onAction:n,children:(0,U.jsx)(kq,{surfaceId:e,serializedMessages:r})},`${e}:${r}`)})}function jq({a2ui:e,disabled:t,onSubmit:n,onCancel:r}){return(0,U.jsxs)(`div`,{className:`mt-3`,"data-testid":`interaction-a2ui-surface`,children:[(0,U.jsx)(Aq,{surfaceId:`interaction-${e.wireVersion}`,messages:e.messages,onAction:t?void 0:e=>{let t=e.userAction?.context||{};n(typeof t.payload==`object`&&t.payload!==null?t.payload:{...t})}}),t?null:(0,U.jsx)(`button`,{type:`button`,"data-testid":`interaction-a2ui-cancel`,onClick:r,className:`mt-1 inline-flex min-h-8 items-center rounded-md px-3 py-1.5 text-xs font-medium text-slate-500 underline-offset-2 hover:underline dark:text-slate-400`,children:`取消本次确认`})]})}function Mq(e){for(let t of e?.messages||[]){let e=t.inputSchema??t.input_schema??t.schema;if(typeof e==`object`&&e)return e}return null}function Nq(e){if(!e.expiresAt)return!1;let t=Date.parse(e.expiresAt);return Number.isFinite(t)&&t<=Date.now()}function Pq(e){let t=e.extensions.submit_error;return typeof t==`object`&&t&&`code`in t&&`message`in t?{code:String(t.code),message:String(t.message),retryable:!!t.retryable}:null}var Fq={approved:`已同意`,rejected:`已拒绝`,submitted:`已提交`,cancelled:`已取消`,expired:`已过期`};function Iq({interactions:e,activeIndex:t,onSelectIndex:n,onRespond:r,localCatalog:i}){let[a,o]=(0,b.useState)(``),[s,c]=(0,b.useState)({}),l=e[Math.min(t,Math.max(e.length-1,0))];if(!l)return null;let u=Nq(l),d=Pq(l),f=u||l.status===`resolving`,p=EA(l.presentation?.a2ui,i),m=l.requestSchema??Mq(l.presentation?.a2ui)??null,h=p===`a2ui`?`a2ui`:p===`json-schema-form`&&m||l.requestSchema&&!l.presentation?`json-schema-form`:`basic-controls`,g=h===`json-schema-form`&&m||l.requestSchema,_=(e,t)=>{f||r({interactionId:l.interactionId,expectedRevision:l.revision,action:e,response:t,idempotencyKey:oA(l.interactionId,l.revision)})};return(0,U.jsx)(`div`,{"data-testid":`interaction-tray`,"data-interaction-status":l.status,"data-interaction-count":e.length,className:`mx-auto mb-2 w-full max-w-3xl px-6`,children:(0,U.jsxs)(`div`,{className:`rounded-xl border border-amber-300/80 bg-amber-50/80 p-3 shadow-sm dark:border-amber-900/60 dark:bg-amber-950/30`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-amber-900 dark:text-amber-200`,children:[(0,U.jsx)(`span`,{"data-testid":`interaction-tray-title`,children:l.title}),e.length>1?(0,U.jsxs)(`span`,{"data-testid":`interaction-tray-count`,className:`rounded-full border border-amber-400/60 px-1.5 py-0.5 text-xs`,children:[t+1,`/`,e.length]}):null]}),e.length>1?(0,U.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,U.jsx)(`button`,{type:`button`,"data-testid":`interaction-tray-prev`,disabled:t<=0,onClick:()=>n(Math.max(t-1,0)),className:`rounded border border-amber-400/60 p-1 text-amber-900 disabled:opacity-40 dark:text-amber-200`,"aria-label":`上一条待确认`,children:(0,U.jsx)(sN,{className:`h-3.5 w-3.5`})}),(0,U.jsx)(`button`,{type:`button`,"data-testid":`interaction-tray-next`,disabled:t>=e.length-1,onClick:()=>n(Math.min(t+1,e.length-1)),className:`rounded border border-amber-400/60 p-1 text-amber-900 disabled:opacity-40 dark:text-amber-200`,"aria-label":`下一条待确认`,children:(0,U.jsx)(cN,{className:`h-3.5 w-3.5`})})]}):null]}),(0,U.jsx)(`p`,{className:`mt-2 text-sm text-slate-700 dark:text-slate-200`,"data-testid":`interaction-tray-message`,children:l.message}),u?(0,U.jsxs)(`p`,{className:`mt-2 text-xs font-medium text-rose-600 dark:text-rose-400`,"data-testid":`interaction-tray-expired`,children:[`该确认已过期(`,Fq.expired,`),等待运行时继续处理。`]}):null,d?(0,U.jsxs)(`p`,{className:`mt-2 text-xs font-medium text-rose-600 dark:text-rose-400`,"data-testid":`interaction-tray-error`,children:[`提交失败(`,d.code,`):`,d.message,d.retryable?`,可重试。`:``]}):null,h===`a2ui`&&l.presentation?.a2ui?(0,U.jsx)(jq,{a2ui:l.presentation.a2ui,disabled:f,onSubmit:e=>_(`submit`,e),onCancel:()=>_(`cancel`,{})}):h===`json-schema-form`&&g?(0,U.jsx)(Oq,{schema:g,values:s,onChange:c,disabled:f,onSubmit:()=>_(`submit`,s),onCancel:()=>_(`cancel`,{})}):(0,U.jsxs)(`div`,{className:`mt-3`,"data-testid":`interaction-tray-basic`,children:[(0,U.jsx)(`input`,{type:`text`,value:a,onChange:e=>o(e.target.value),placeholder:`备注(可选)`,disabled:f,"data-testid":`interaction-tray-comment`,className:`mb-2 w-full rounded-md border border-amber-300/70 bg-white px-2 py-1.5 text-sm dark:border-amber-900/60 dark:bg-slate-950`}),(0,U.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,U.jsxs)(`button`,{type:`button`,"data-testid":`interaction-approve`,disabled:f,onClick:()=>_(`approve`,{decision:`approve`,...a?{comment:a}:{}}),className:`inline-flex min-h-8 items-center gap-1.5 rounded-md bg-emerald-600 px-3 py-1.5 text-xs font-semibold text-white shadow-sm transition hover:bg-emerald-500 disabled:cursor-not-allowed disabled:opacity-55`,children:[(0,U.jsx)(aN,{className:`h-3.5 w-3.5`}),`批准并继续`]}),(0,U.jsxs)(`button`,{type:`button`,"data-testid":`interaction-reject`,disabled:f,onClick:()=>_(`reject`,{decision:`reject`,...a?{comment:a}:{}}),className:`inline-flex min-h-8 items-center gap-1.5 rounded-md border border-slate-300 bg-white px-3 py-1.5 text-xs font-semibold text-slate-600 transition hover:border-rose-300 hover:bg-rose-50 hover:text-rose-600 disabled:cursor-not-allowed disabled:opacity-55 dark:border-slate-700 dark:bg-slate-950 dark:text-slate-300 dark:hover:border-rose-800 dark:hover:bg-rose-950/30 dark:hover:text-rose-300`,children:[(0,U.jsx)(uN,{className:`h-3.5 w-3.5`}),`拒绝`]}),(0,U.jsx)(`button`,{type:`button`,"data-testid":`interaction-cancel`,disabled:f,onClick:()=>_(`cancel`,{}),className:`inline-flex min-h-8 items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium text-slate-500 underline-offset-2 hover:underline disabled:cursor-not-allowed disabled:opacity-55 dark:text-slate-400`,children:`取消本次确认`})]})]}),l.status===`resolving`?(0,U.jsx)(`p`,{className:`mt-2 text-xs text-amber-700 dark:text-amber-300`,children:`正在提交,请稍候…`}):null]})})}function Lq({outcome:e}){return(0,U.jsx)(`span`,{className:K(`rounded border px-1.5 py-0.5 text-xs font-medium`,e===`approved`?`border-emerald-300 text-emerald-700 dark:border-emerald-900 dark:text-emerald-300`:e===`rejected`?`border-rose-300 text-rose-700 dark:border-rose-900 dark:text-rose-300`:`border-slate-300 text-slate-600 dark:border-slate-700 dark:text-slate-300`),children:Fq[e]||e})}function Rq(e){if(!e)return``;let t=Date.parse(e);return Number.isFinite(t)?new Date(t).toLocaleString():e}function zq(e){let t=e?.properties;return typeof t!=`object`||!t?[]:Object.keys(t)}function Bq({interaction:e}){let t=e.status===`resolved`||e.status===`cancelled`||e.status===`expired`,n=zq(e.requestSchema);return(0,U.jsxs)(`div`,{"data-testid":`interaction-history-anchor`,"data-interaction-id":e.interactionId,"data-interaction-status":e.status,className:`mt-2 rounded-lg border border-slate-200 bg-slate-50 px-3 py-2 text-xs text-slate-600 dark:border-slate-800 dark:bg-slate-900/60 dark:text-slate-300`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`font-medium text-slate-700 dark:text-slate-200`,children:e.title}),(0,U.jsx)(Lq,{outcome:e.outcome||e.status})]}),t?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(`div`,{className:`mt-1 leading-relaxed`,children:[e.actor?(0,U.jsxs)(`span`,{children:[`操作人:`,e.actor,` · `]}):null,e.resolvedAt?(0,U.jsxs)(`span`,{children:[`决定时间:`,Rq(e.resolvedAt),` · `]}):null,(0,U.jsx)(`span`,{"data-testid":`interaction-history-response-summary`,children:e.responseSummary||`响应内容已脱敏`})]}),(0,U.jsxs)(`details`,{"data-testid":`interaction-history-detail`,className:`mt-1`,children:[(0,U.jsx)(`summary`,{className:`cursor-pointer select-none text-slate-500 hover:text-slate-700 dark:text-slate-400 dark:hover:text-slate-200`,children:`查看确认快照`}),(0,U.jsxs)(`div`,{"data-testid":`interaction-history-snapshot`,className:`mt-1 rounded border border-slate-200 bg-white px-2 py-1.5 leading-relaxed dark:border-slate-800 dark:bg-slate-950`,children:[(0,U.jsxs)(`div`,{children:[`操作者:`,(0,U.jsx)(`span`,{"data-testid":`interaction-history-actor-ref`,children:e.actor||`—`})]}),(0,U.jsxs)(`div`,{children:[`决定时间:`,Rq(e.resolvedAt)||`—`]}),(0,U.jsxs)(`div`,{children:[`关键参数:`,n.length>0?(0,U.jsx)(`span`,{"data-testid":`interaction-history-schema-keys`,children:n.join(`、`)}):(0,U.jsx)(`span`,{children:`无结构化参数`})]})]})]})]}):(0,U.jsxs)(`div`,{className:`mt-1`,children:[`状态:`,e.status===`pending`?`待处理(见输入区确认面板)`:`处理中…`]})]})}function Vq({summary:e,children:t,defaultOpen:n=!1,streaming:r=!1}){let[i,a]=(0,b.useState)(n);return(0,U.jsxs)(`div`,{className:`mb-1.5`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>a(e=>!e),className:`flex w-full items-center gap-1.5 rounded px-1 py-1 text-left text-[13px] text-slate-500 transition-colors hover:bg-slate-100/70 dark:text-slate-400 dark:hover:bg-slate-800/40`,children:[r?(0,U.jsx)(TN,{className:`h-3.5 w-3.5 animate-spin text-slate-400`}):(0,U.jsx)(oN,{className:K(`h-3.5 w-3.5 text-slate-400 transition-transform`,i&&`rotate-90`)}),(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e})]}),i&&(0,U.jsx)(`div`,{className:`mt-1.5 border-l border-slate-200 pl-3.5 dark:border-slate-700/60`,children:t})]})}function Hq({block:e}){let[t,n]=(0,b.useState)(!1),r=e.status===`streaming`,i=e.content.length,a=`${e.id}-thinking-detail`;return(0,U.jsxs)(`div`,{className:`mb-1.5 min-w-0`,children:[(0,U.jsxs)(`button`,{type:`button`,"aria-expanded":t,"aria-controls":a,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-1.5 rounded px-1 py-1 text-left text-[13px] leading-5 text-slate-400 transition-colors hover:bg-slate-100/70 hover:text-slate-500 dark:text-slate-500 dark:hover:bg-slate-800/40 dark:hover:text-slate-400`,children:[(0,U.jsx)(UN,{className:K(`h-3.5 w-3.5 shrink-0`,r&&`animate-pulse motion-reduce:animate-none`)}),(0,U.jsx)(`span`,{className:`min-w-0 truncate`,children:r?`思考中`:`已思考`}),!r&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`span`,{className:`text-slate-300 dark:text-slate-600`,children:`·`}),(0,U.jsxs)(`span`,{className:`font-mono text-xs text-slate-400 dark:text-slate-500`,children:[i,` 字`]})]}),(0,U.jsx)(oN,{className:K(`h-3.5 w-3.5 shrink-0 transition-transform`,t&&`rotate-180`)})]}),t&&e.content&&(0,U.jsx)(`div`,{id:a,className:`custom-scrollbar mt-1.5 max-h-[min(46vh,28rem)] overflow-y-auto border-l border-slate-200/80 pl-3.5 text-[12px] leading-5 text-slate-500 dark:border-slate-700/60 dark:text-slate-400 [&_h1]:!mb-2 [&_h1]:!mt-3 [&_h1]:!text-[13px] [&_h2]:!mb-1.5 [&_h2]:!mt-3 [&_h2]:!text-[12px] [&_h3]:!mb-1 [&_h3]:!mt-2.5 [&_h3]:!text-[12px] [&_li]:!text-[12px] [&_li]:!leading-5 [&_p]:!my-1.5 [&_p]:!text-[12px] [&_p]:!leading-5 [&_p]:!text-slate-500 dark:[&_p]:!text-slate-400 [&_pre]:!my-1.5`,children:(0,U.jsx)(xq,{content:e.content})})]})}function Uq({block:e,tool:t,isStreaming:n,interactionRecord:r,onRespondToApproval:i,onRespondToAguiApproval:a}){let o=t?.status??e.status,s=t?.args??e.args,c=t?.output??e.output,l=e.extra||{},u=l.approvalStatus||t?.approvalStatus,d=l.approvalRequestId||t?.approvalRequestId,f=l.approvalMessage||t?.approvalMessage,p=l.approvalProtocol||t?.approvalProtocol,m=l.previousResponseId||t?.previousResponseId,h=o===`running`,g=o===`error`,_=o===`paused`,v=g?`执行失败`:u===`pending`?`等待确认`:u===`rejected`?`已拒绝`:h?u===`approved`?`已授权 · 执行中`:`正在运行`:u===`approved`?`已授权`:_?`已暂停`:`已完成`,y=g?`text-rose-500 dark:text-rose-400`:_?`text-amber-500 dark:text-amber-400`:h?`text-slate-500 dark:text-slate-400`:`text-slate-400 dark:text-slate-500`;return(0,U.jsx)(Vq,{streaming:h&&!s,defaultOpen:u===`pending`||_,summary:(0,U.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(QN,{className:K(`h-3.5 w-3.5 shrink-0`,y)}),(0,U.jsx)(`span`,{className:y,children:v}),(0,U.jsx)(`span`,{className:`truncate font-medium text-slate-600 dark:text-slate-300`,children:e.toolName}),h&&s&&(0,U.jsx)(`span`,{className:`ml-0.5 animate-pulse text-slate-400`,children:`…`})]}),children:(0,U.jsxs)(`div`,{className:`flex flex-col gap-2.5 py-1 text-[13px]`,children:[d&&u===`pending`&&!r&&(0,U.jsxs)(`section`,{className:`flex flex-wrap items-center gap-x-3 gap-y-2 rounded-lg border border-slate-200/90 bg-white/70 px-2.5 py-2 font-sans text-[12px] text-slate-600 shadow-[0_1px_2px_rgba(15,23,42,0.03)] dark:border-slate-700/80 dark:bg-slate-900/30 dark:text-slate-300`,children:[(0,U.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`h-1.5 w-1.5 shrink-0 rounded-full bg-amber-400`,"aria-hidden":`true`}),(0,U.jsx)(`span`,{className:`shrink-0 font-medium text-slate-700 dark:text-slate-200`,children:`需要确认`}),(0,U.jsx)(`span`,{className:`min-w-0 truncate text-slate-500 dark:text-slate-400`,children:f||`允许后将执行此工具调用。`})]}),(0,U.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[(0,U.jsx)(`button`,{type:`button`,disabled:n,onClick:()=>p===`ag-ui`?a?.({interruptId:d||``,approve:!0}):i?.({approvalRequestId:d||``,approve:!0,previousResponseId:m}),className:`inline-flex h-7 items-center rounded-md bg-primary px-2.5 text-[12px] font-medium text-primary-foreground transition hover:bg-primary/90 disabled:opacity-55`,children:`允许执行`}),(0,U.jsx)(`button`,{type:`button`,disabled:n,onClick:()=>p===`ag-ui`?a?.({interruptId:d||``,approve:!1}):i?.({approvalRequestId:d||``,approve:!1,previousResponseId:m}),className:`inline-flex h-7 items-center rounded-md px-2 text-[12px] font-medium text-slate-500 transition hover:bg-slate-100 hover:text-rose-600 disabled:opacity-55 dark:text-slate-400 dark:hover:bg-slate-800`,children:`拒绝`})]})]}),d&&u===`pending`&&r?(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5 font-sans text-xs text-slate-500 dark:text-slate-400`,children:[(0,U.jsx)(`span`,{className:`h-1.5 w-1.5 shrink-0 rounded-full bg-amber-400`,"aria-hidden":`true`}),`请在输入区确认面板中操作。`]}):null,d&&u&&u!==`pending`&&(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5 font-sans text-xs text-slate-500 dark:text-slate-400`,children:[(0,U.jsx)(`span`,{children:u===`approved`?`已授权`:`已拒绝`}),u===`approved`&&h?(0,U.jsx)(`span`,{children:`· 工具执行中`}):null,u===`approved`&&g?(0,U.jsx)(`span`,{children:`· 工具执行失败`}):null]}),s?(0,U.jsx)(Jq,{label:`入参`,value:s,tone:`input`}):null,c?Wq(e.toolName,c,g):null]})})}function Wq(e,t,n){if(Tq(t))return(0,U.jsx)(Gq,{output:t});let r=e.toLowerCase();if(r.includes(`web_search`)||r.includes(`search`)){let e=Kq(t);if(e.length>0)return(0,U.jsx)(qq,{sources:e})}return(0,U.jsx)(Jq,{label:`输出`,value:t,tone:n?`error`:`output`})}function Gq({output:e}){let t=Cq(e),[n,r]=(0,b.useState)(!1),i=n?t:t.slice(0,3);return(0,U.jsxs)(`div`,{className:`my-2 overflow-hidden rounded-xl border border-border bg-background`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b border-border px-3 py-2 text-xs font-medium text-text-secondary`,children:[(0,U.jsx)(yN,{className:`h-3.5 w-3.5 text-primary`}),(0,U.jsxs)(`span`,{children:[`改动 `,t.length,` 个文件`]})]}),(0,U.jsx)(`div`,{className:`flex flex-col`,children:i.map(e=>{let{added:t,removed:n}=wq(e);return(0,U.jsxs)(`div`,{className:`group/file-change-row flex min-w-0 items-center gap-2 px-3 py-2 text-sm transition-colors hover:bg-muted`,children:[(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-[13px] text-text-primary`,children:e.path}),(0,U.jsxs)(`span`,{className:`flex-shrink-0 text-[11px] font-mono`,children:[(0,U.jsxs)(`span`,{className:`text-emerald-600`,children:[`+`,t]}),` `,(0,U.jsxs)(`span`,{className:`text-rose-500`,children:[`−`,n]})]})]},e.path)})}),t.length>3?(0,U.jsx)(`button`,{type:`button`,onClick:()=>r(e=>!e),className:`flex w-full items-center justify-center gap-1 border-t border-border py-1.5 text-xs text-text-muted transition hover:bg-muted hover:text-text-primary`,children:n?`收起`:`展开剩余 ${t.length-3} 个文件`}):null]})}function Kq(e){try{let t=JSON.parse(e),n=Array.isArray(t)?t:t?.results??t?.sources??[];return Array.isArray(n)?n.map(e=>{let t=e,n=String(t?.url??t?.link??t?.href??``),r=String(t?.title??t?.name??n);return n?{url:n,title:r}:null}).filter(e=>e!==null):[]}catch{return[]}}function qq({sources:e}){return(0,U.jsx)(`div`,{className:`mt-2 flex min-w-0`,children:(0,U.jsxs)(`span`,{className:`group/web-search-sources relative inline-flex min-w-0`,children:[(0,U.jsxs)(`button`,{type:`button`,className:`inline-flex h-7 min-w-0 items-center gap-1.5 rounded-md border border-border bg-surface px-2 text-xs text-text-secondary transition-colors hover:bg-muted hover:text-text-primary`,children:[(0,U.jsx)(mN,{className:`h-3.5 w-3.5 shrink-0`,strokeWidth:1.7}),(0,U.jsxs)(`span`,{children:[`来源 · `,e.length]})]}),(0,U.jsx)(`span`,{className:`absolute bottom-full left-0 z-30 hidden max-w-[calc(100vw-3rem)] pb-1 group-hover/web-search-sources:block`,children:(0,U.jsx)(`span`,{className:`block w-[min(26rem,calc(100vw-3rem))] rounded-xl border border-border bg-popover p-2 text-left text-text-primary shadow-2xl`,children:(0,U.jsx)(`span`,{className:`flex min-w-0 flex-col gap-1`,children:e.map((e,t)=>(0,U.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,className:`flex min-w-0 items-center gap-2 rounded-lg px-2 py-1.5 text-sm leading-5 text-text-secondary transition-colors hover:bg-muted hover:text-text-primary`,children:[(0,U.jsx)(mN,{className:`h-3.5 w-3.5 shrink-0`,strokeWidth:1.7}),(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.title})]},`${e.url}-${t}`))})})})]})})}function Jq({label:e,tone:t,value:n}){return(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`div`,{className:`mb-1 text-[11px] font-semibold uppercase tracking-wide text-slate-400`,children:e}),(0,U.jsx)(`pre`,{className:K(`custom-scrollbar max-h-60 overflow-auto rounded-lg px-3 py-2 text-[12.5px] leading-relaxed whitespace-pre-wrap break-all`,t===`error`?`bg-rose-50/60 text-rose-700 dark:bg-rose-950/20 dark:text-rose-200`:t===`output`?`bg-emerald-50/40 text-emerald-800 dark:bg-emerald-950/20 dark:text-emerald-200`:`bg-slate-50 text-slate-700 dark:bg-slate-900/40 dark:text-slate-200`),children:n})]})}function Yq({block:e}){return e.content?(0,U.jsx)(`div`,{className:`w-full break-words py-0.5 text-[14px] leading-[1.65]`,children:(0,U.jsx)(xq,{content:e.content})}):null}function Xq({message:e,isStreaming:t,onRespondToApproval:n,onRespondToAguiApproval:r,interactionRecords:i}){return(0,U.jsx)(`div`,{className:`mb-3 min-w-0`,children:(e.blocks??[]).map(a=>{if(a.type===`thinking`)return(0,U.jsx)(Hq,{block:a},a.id);if(a.type===`tool`){let o=a.extra||{},s=String(o.approvalRequestId||e.tools?.[a.toolName]?.approvalRequestId||``),c=s?i?.find(e=>e.interactionId===s):void 0;return(0,U.jsxs)(`div`,{children:[(0,U.jsx)(Uq,{block:a,tool:e.tools?.[a.toolName],isStreaming:t,interactionRecord:c,onRespondToApproval:n,onRespondToAguiApproval:r}),c?(0,U.jsx)(Bq,{interaction:c}):null]},a.id)}return(0,U.jsx)(Yq,{block:a},a.id)})})}function Zq({onRetry:e}){let t=D(e=>e.banner);if(!t)return null;let n=t.kind===`rate_limited`?(0,U.jsx)(Qq,{message:t.message,retryAfterSec:t.retryAfterSec},t.createdAt||`${t.sessionId||``}:${t.retryAfterSec||0}`):null,r={rate_limited:{icon:(0,U.jsx)(eP,{className:`h-4 w-4 text-amber-500`}),bg:`border-amber-200/70 bg-amber-50/70 dark:border-amber-900/40 dark:bg-amber-950/20`,text:`text-amber-700 dark:text-amber-200`,label:n},network:{icon:(0,U.jsx)(TN,{className:`h-4 w-4 animate-spin text-text-secondary`}),bg:`border-border/70 bg-muted/60`,text:`text-text-secondary`,label:t.message||`网络异常,正在重连…`},error:{icon:(0,U.jsx)(ZN,{className:`h-4 w-4 text-rose-500`}),bg:`border-rose-200/70 bg-rose-50/70 dark:border-rose-900/40 dark:bg-rose-950/20`,text:`text-rose-600 dark:text-rose-300`,label:t.message||`运行失败,请重试`}}[t.kind];return(0,U.jsxs)(`div`,{className:K(`mx-auto mb-3 flex w-full max-w-3xl items-center gap-2.5 rounded-xl border px-3.5 py-2.5 text-sm shadow-sm`,r.bg,r.text),role:`status`,children:[r.icon,(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:r.label}),t.kind===`error`&&e?(0,U.jsxs)(`button`,{type:`button`,onClick:e,className:`flex items-center gap-1 rounded-full px-2.5 py-1 text-xs font-medium text-rose-600 transition hover:bg-rose-100 dark:text-rose-300 dark:hover:bg-rose-950/40`,children:[(0,U.jsx)(RN,{className:`h-3 w-3`}),`重试`]}):null]})}function Qq({message:e,retryAfterSec:t}){let[n,r]=(0,b.useState)(t||0);return(0,b.useEffect)(()=>{if(!t)return;let e=setInterval(()=>{r(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[t]),n>0?`${e}(${n}s 后可重试)`:e}async function $q(e,t=globalThis){let n=String(e??``),r=t?.navigator;if(r?.clipboard?.writeText)try{return await r.clipboard.writeText(n),!0}catch{}let i=t?.document,a=i?.body;if(!i?.createElement||!a?.appendChild||!a?.removeChild)return!1;let o=i.createElement(`textarea`);o.value=n,o.setAttribute?.(`readonly`,``),o.style&&(o.style.position=`fixed`,o.style.top=`0`,o.style.left=`-9999px`,o.style.opacity=`0`,o.style.pointerEvents=`none`);let s=i.activeElement;a.appendChild(o),o.focus?.(),o.select?.(),o.setSelectionRange?.(0,n.length);try{return typeof i.execCommand==`function`?!!i.execCommand(`copy`):!1}finally{a.removeChild(o),s?.focus?.()}}function eJ(e,t,n){return Math.max(t,Math.min(n,e))}function tJ({items:e=[],scrollTop:t=0,viewportHeight:n=0,overscan:r=4,defaultItemHeight:i=120,measuredHeights:a=new Map,getItemKey:o=(e,t)=>e?.id||String(t)}={}){let s=Math.max(0,Number(n)||0),c=Math.max(0,Number(t)||0),l=Math.max(0,Number(r)||0),u=Math.max(1,Number(i)||120);if(!e.length)return{startIndex:0,endIndex:0,offsetTop:0,totalHeight:0,visibleItems:[]};let d=e.map((e,t)=>{let n=o(e,t),r=Number(a.get(n));return Number.isFinite(r)&&r>0?r:u}),f=Array(e.length),p=0;for(let t=0;t{let n=g+t;return{index:n,item:e,top:f[n]||0,height:d[n]||u}})}}var nJ=140,rJ=4;function iJ(e){let t=String(e||``).trim().toLowerCase();return t===`elevated`?`高风险`:t===`always`?`始终确认`:t===`confirm`?`需确认`:e||``}function aJ(e){return String(e||``).trim().toLowerCase()===`elevated`?`border-rose-200 bg-rose-50 text-rose-700 dark:border-rose-900/70 dark:bg-rose-950/30 dark:text-rose-200`:`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-900/70 dark:bg-amber-950/30 dark:text-amber-200`}function oJ({messageId:e,top:t,onMeasure:n,children:r}){let i=(0,b.useRef)(null);return(0,b.useLayoutEffect)(()=>{let r=i.current;if(!r)return;let a=()=>n(e,r.offsetHeight,t);if(a(),typeof ResizeObserver>`u`)return;let o=new ResizeObserver(a);return o.observe(r),()=>o.disconnect()},[e,n,t]),(0,U.jsx)(`div`,{ref:i,style:{position:`absolute`,top:t,left:0,right:0},children:r})}function sJ(e){let t=Math.max(0,Math.floor(e/1e3)),n=Math.floor(t/60),r=t%60;return n<=0?`${r}s`:`${n}m ${String(r).padStart(2,`0`)}s`}function cJ(e){return e<1e3?`刚刚`:e<6e4?`${Math.floor(e/1e3)} 秒前`:`${Math.floor(e/6e4)} 分钟前`}function lJ(e){return!Number.isFinite(e)||!e||e<=0?``:e>=1e6?`${(e/1e6).toFixed(e>=1e7?0:1)}M`:e>=1e3?`${(e/1e3).toFixed(e>=1e5?0:1)}K`:String(Math.round(e))}function uJ({contextIndicator:e}){let t=e?.usedTokens,n=e?.contextWindowTokens,r=lJ(t),i=lJ(n);if(!r)return null;let a=[r,i].filter(Boolean).join(`/`);return(0,U.jsxs)(`span`,{className:`token-count-pulse hidden text-slate-400 dark:text-slate-500 sm:inline`,title:e?.label||`估算 token ${a}`,children:[`估算 token `,a]},r)}function dJ({activity:e,contextIndicator:t,onStopGeneration:n,onCancelRemote:r}){let[i,a]=(0,b.useState)(()=>Date.now());(0,b.useEffect)(()=>{let e=window.setInterval(()=>a(Date.now()),1e3);return()=>window.clearInterval(e)},[]);let o=e.status===`connecting`||e.status===`running`||e.status===`waiting`,s=i-e.lastEventAt<2e4;return(0,U.jsxs)(`div`,{className:`inline-flex max-w-full items-center gap-2 rounded-full border border-slate-200/70 bg-white/90 px-2.5 py-1 text-[11px] leading-4 text-slate-500 shadow-sm shadow-slate-900/5 backdrop-blur dark:border-slate-700/60 dark:bg-slate-900/90 dark:text-slate-400`,children:[e.status===`failed`?(0,U.jsx)(lN,{className:`h-3 w-3 text-rose-500`}):e.status===`completed`?(0,U.jsx)(aN,{className:`h-3 w-3 text-emerald-500`}):e.status===`stopped`?(0,U.jsx)(HN,{className:`h-3 w-3 text-amber-500`}):(0,U.jsx)(LN,{className:`h-3 w-3 animate-spin text-slate-400`}),(0,U.jsx)(`span`,{className:`max-w-[16rem] truncate text-slate-600 dark:text-slate-300`,title:e.detail||e.phase,children:e.phase}),(0,U.jsxs)(`span`,{children:[e.source===`restore`?`恢复`:`运行`,` `,sJ(i-e.startedAt)]}),o?(0,U.jsx)(`span`,{className:K(`inline-block h-1.5 w-1.5 flex-shrink-0 rounded-full`,s?`bg-emerald-400`:`bg-slate-300 dark:bg-slate-600`),title:s?`连接存活`:`连接超时`}):null,(0,U.jsxs)(`span`,{className:`text-slate-400 dark:text-slate-500`,children:[e.eventCount,` ev`]}),(0,U.jsx)(`span`,{className:`hidden text-slate-400 dark:text-slate-500 sm:inline`,children:cJ(i-e.lastEventAt)}),(0,U.jsx)(uJ,{contextIndicator:t}),o&&(n||r)?(0,U.jsxs)(`div`,{className:`flex flex-shrink-0 gap-1`,children:[n?(0,U.jsxs)(`button`,{type:`button`,onClick:n,className:`flex items-center gap-1 rounded-full px-1.5 py-0.5 text-[11px] text-slate-400 transition hover:bg-slate-100 hover:text-slate-700 dark:text-slate-500 dark:hover:bg-slate-800 dark:hover:text-slate-200`,children:[(0,U.jsx)(lN,{className:`h-3 w-3`}),`停止`]}):null,r?(0,U.jsxs)(`button`,{type:`button`,"aria-label":`取消运行并保留恢复点`,title:`取消运行并保留最近 checkpoint`,onClick:r,className:`flex items-center gap-1 rounded-full px-1.5 py-0.5 text-[11px] text-slate-400 transition hover:bg-rose-50 hover:text-rose-600 dark:text-slate-500 dark:hover:bg-rose-950/30 dark:hover:text-rose-300`,children:[(0,U.jsx)(uN,{className:`h-3 w-3`}),`取消`]}):null]}):null]})}function fJ({agentName:e}){return(0,U.jsxs)(`div`,{className:`flex flex-col items-center justify-center min-h-[50vh] px-4`,children:[(0,U.jsx)(`div`,{className:`mb-6 h-16 w-16 rounded-2xl bg-gradient-to-br from-blue-500 to-indigo-600 + flex items-center justify-center shadow-lg shadow-blue-500/20`,children:(0,U.jsx)(iN,{className:`h-8 w-8 text-white`})}),(0,U.jsx)(`h2`,{className:`text-xl font-semibold text-slate-900 dark:text-slate-50`,children:`有什么我可以帮您的吗?`}),(0,U.jsxs)(`p`,{className:`mt-2 text-sm text-slate-500`,children:[`我是 `,e,`,由 Ksyun AgentEngine 驱动`]})]})}function pJ(){return(0,U.jsxs)(`div`,{className:`mx-auto flex w-full max-w-[44rem] flex-col gap-5 px-2 py-8`,"aria-label":`正在加载会话历史`,children:[(0,U.jsx)(`div`,{className:`h-4 w-28 animate-pulse rounded bg-slate-200/80 dark:bg-slate-800`}),(0,U.jsx)(`div`,{className:`h-20 w-4/5 animate-pulse rounded-lg bg-slate-100 dark:bg-slate-900`}),(0,U.jsx)(`div`,{className:`ml-auto h-12 w-3/5 animate-pulse rounded-lg bg-slate-100 dark:bg-slate-900`}),(0,U.jsx)(`div`,{className:`h-16 w-11/12 animate-pulse rounded-lg bg-slate-100 dark:bg-slate-900`})]})}function mJ({attachments:e,isMobile:t,onOpenAttachmentPreview:n}){return(0,U.jsx)(`div`,{className:`mb-3 flex flex-wrap gap-3`,children:e.map((e,r)=>e.type.startsWith(`image/`)?e.url?(0,U.jsx)(`button`,{type:`button`,onClick:()=>n(e),className:K(`group relative overflow-hidden rounded-xl border border-slate-200 shadow-sm dark:border-slate-700`,t?`w-full max-w-full`:`max-w-[200px]`),children:(0,U.jsx)(`img`,{src:e.url,alt:e.name,className:K(`object-cover transition group-hover:scale-[1.02]`,t?`max-h-[16rem] w-full max-w-full`:`max-h-[200px] max-w-[200px]`)})},`${e.name}-${r}`):(0,U.jsx)(`div`,{className:K(`flex items-center justify-center rounded-xl border border-dashed border-slate-300 bg-slate-50 px-4 text-sm text-slate-500 dark:border-slate-700 dark:bg-slate-900/40 dark:text-slate-400`,t?`h-28 w-full`:`h-[120px] w-[200px]`),children:e.name},`${e.name}-${r}`):(0,U.jsxs)(`div`,{className:K(`flex items-center gap-2 rounded-xl border border-slate-200 bg-slate-100 px-3 py-2 shadow-sm dark:border-slate-700 dark:bg-slate-800`,t?`w-full max-w-full`:`w-max max-w-full`),children:[(0,U.jsx)(NN,{className:`h-4 w-4 flex-shrink-0 text-blue-500`}),e.url?(0,U.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer`,className:`truncate text-sm text-slate-700 hover:underline dark:text-slate-300`,title:e.name,children:e.name}):(0,U.jsx)(`span`,{className:`truncate text-sm text-slate-700 dark:text-slate-300`,title:e.name,children:e.name})]},`${e.name}-${r}`))})}function hJ({message:e}){return(0,U.jsx)(`div`,{className:`w-full px-0 py-2 sm:px-4`,children:(0,U.jsxs)(`div`,{className:`mx-auto max-w-3xl rounded-2xl border border-amber-200/80 bg-amber-50/80 px-4 py-3 text-sm text-amber-900 shadow-sm dark:border-amber-900/60 dark:bg-amber-950/30 dark:text-amber-100`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[e.status===`running`?(0,U.jsx)(LN,{className:`h-4 w-4 animate-spin text-amber-600 dark:text-amber-300`}):e.status===`failed`?(0,U.jsx)(lN,{className:`h-4 w-4 text-rose-600 dark:text-rose-400`}):(0,U.jsx)(aN,{className:`h-4 w-4 text-emerald-600 dark:text-emerald-400`}),(0,U.jsx)(`span`,{children:e.content})]}),e.compactedUntilSeqId?(0,U.jsxs)(`div`,{className:`mt-1 text-xs text-amber-700/80 dark:text-amber-200/80`,children:[`已折叠到会话事件 #`,e.compactedUntilSeqId]}):null,e.summary?(0,U.jsxs)(`details`,{className:`mt-3 rounded-xl border border-amber-200/80 bg-white/70 px-3 py-2 dark:border-amber-900/60 dark:bg-slate-950/40`,children:[(0,U.jsx)(`summary`,{className:`cursor-pointer select-none text-xs font-medium text-amber-800 dark:text-amber-200`,children:`查看压缩摘要`}),(0,U.jsx)(`div`,{className:`mt-2 text-[13px] leading-relaxed text-slate-700 dark:text-slate-200`,children:(0,U.jsx)(xq,{content:e.summary})})]}):null]})})}function gJ({label:e,tone:t,value:n}){let[r,i]=(0,b.useState)(`idle`),a=rj(n);(0,b.useEffect)(()=>{if(r===`idle`)return;let e=window.setTimeout(()=>i(`idle`),1600);return()=>window.clearTimeout(e)},[r]);let o=async()=>{i(await $q(a)?`copied`:`failed`)};return(0,U.jsxs)(`div`,{children:[(0,U.jsxs)(`div`,{className:`mb-1 flex items-center justify-between gap-2`,children:[(0,U.jsx)(`div`,{className:K(`text-xs font-semibold uppercase`,t===`input`?`text-blue-500`:t===`error`?`text-rose-500`:`text-emerald-500`),children:e}),(0,U.jsxs)(`button`,{type:`button`,onClick:()=>{o()},className:`inline-flex items-center gap-1 rounded-lg px-2 py-1 text-[11px] font-medium text-slate-500 transition hover:bg-white hover:text-slate-900 dark:text-slate-400 dark:hover:bg-slate-900 dark:hover:text-slate-100`,children:[r===`copied`?(0,U.jsx)(aN,{className:`h-3.5 w-3.5 text-emerald-500`}):(0,U.jsx)(fN,{className:`h-3.5 w-3.5`}),r===`copied`?`已复制`:r===`failed`?`复制失败`:`复制`]})]}),(0,U.jsx)(`div`,{className:`custom-scrollbar max-h-[220px] overflow-y-auto whitespace-pre-wrap break-words rounded-xl border border-slate-200/30 bg-white/70 p-3 text-slate-600 shadow-sm dark:border-slate-800 dark:bg-slate-950/40 dark:text-slate-300 sm:max-h-[300px]`,children:a})]})}function _J({isLastMessage:e,isStreaming:t,message:n,onDeleteFeedback:r,onSubmitFeedback:i}){let[a,o]=(0,b.useState)(!1),[s,c]=(0,b.useState)(n.feedback?.comment||``),l=fM(n,t,e),u=!!n.feedback?.pending,d=n.feedback?.rating,f=async()=>{let e=n.content||``;e&&$q(e)};return l?(0,U.jsxs)(`div`,{className:`mt-2 flex flex-col gap-2 opacity-0 transition-opacity duration-150 group-hover:opacity-100 focus-within:opacity-100`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 text-xs text-text-muted`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>{f()},className:`inline-flex items-center gap-1 rounded-full px-2 py-1 font-medium text-text-secondary transition hover:bg-muted hover:text-text-primary`,title:`复制`,children:(0,U.jsx)(fN,{className:`h-3.5 w-3.5`})}),(0,U.jsx)(`span`,{className:`text-text-muted/60`,children:`·`}),(0,U.jsx)(`span`,{className:`font-medium`,children:`本次回复有帮助吗?`}),(0,U.jsxs)(`button`,{type:`button`,disabled:u,onClick:()=>i({message:n,rating:`up`,comment:``}),className:K(`inline-flex items-center gap-1 rounded-full border px-2.5 py-1 font-medium transition disabled:cursor-not-allowed disabled:opacity-60`,d===`up`?`border-primary/30 bg-primary/10 text-primary`:`border-border bg-background text-text-secondary hover:border-primary/30 hover:text-primary`),children:[(0,U.jsx)(JN,{className:`h-3.5 w-3.5`}),`有帮助`]}),(0,U.jsxs)(`button`,{type:`button`,disabled:u,onClick:()=>{c(n.feedback?.comment||``),o(e=>!e)},className:K(`inline-flex items-center gap-1 rounded-full border px-2.5 py-1 font-medium transition disabled:cursor-not-allowed disabled:opacity-60`,d===`down`?`border-rose-300 bg-rose-50 text-rose-600 dark:border-rose-900/70 dark:bg-rose-950/30 dark:text-rose-300`:`border-border bg-background text-text-secondary hover:border-rose-300 hover:text-rose-600`),children:[(0,U.jsx)(qN,{className:`h-3.5 w-3.5`}),`需改进`]}),n.feedback?(0,U.jsxs)(`button`,{type:`button`,disabled:u,onClick:()=>r(n),className:`inline-flex items-center gap-1 rounded-full border border-transparent px-2 py-1 font-medium text-slate-400 transition hover:border-slate-200 hover:text-slate-700 disabled:cursor-not-allowed disabled:opacity-60 dark:hover:border-slate-800 dark:hover:text-slate-200`,children:[(0,U.jsx)(YN,{className:`h-3.5 w-3.5`}),`删除反馈`]}):null,u?(0,U.jsx)(`span`,{className:`text-slate-400`,children:`提交中…`}):null]}),a?(0,U.jsxs)(`div`,{className:`max-w-xl rounded-2xl border border-rose-100 bg-rose-50/60 p-3 shadow-sm dark:border-rose-900/60 dark:bg-rose-950/20`,children:[(0,U.jsx)(`textarea`,{value:s,onChange:e=>c(e.target.value),placeholder:`可以补充哪里不准确、缺失或不符合预期。`,className:`min-h-[84px] w-full resize-y rounded-xl border border-rose-100 bg-white px-3 py-2 text-sm text-slate-700 outline-none transition placeholder:text-slate-400 focus:border-rose-300 focus:ring-2 focus:ring-rose-100 dark:border-rose-900/70 dark:bg-slate-950 dark:text-slate-100 dark:focus:border-rose-700 dark:focus:ring-rose-950`}),(0,U.jsxs)(`div`,{className:`mt-2 flex flex-wrap justify-end gap-2`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>o(!1),className:`rounded-xl px-3 py-1.5 text-xs font-semibold text-slate-500 transition hover:bg-white hover:text-slate-800 dark:text-slate-400 dark:hover:bg-slate-950 dark:hover:text-slate-100`,children:`取消`}),(0,U.jsx)(`button`,{type:`button`,disabled:u,onClick:()=>{i({message:n,rating:`down`,comment:s}),o(!1)},className:`rounded-xl bg-rose-600 px-3 py-1.5 text-xs font-semibold text-white shadow-sm transition hover:bg-rose-500 disabled:cursor-not-allowed disabled:opacity-60`,children:`提交点踩`})]})]}):d===`down`&&n.feedback?.comment?(0,U.jsxs)(`div`,{className:`max-w-xl rounded-xl border border-rose-100 bg-rose-50/50 px-3 py-2 text-xs text-rose-700 dark:border-rose-900/60 dark:bg-rose-950/20 dark:text-rose-200`,children:[`反馈:`,n.feedback.comment]}):null,n.feedback?.error?(0,U.jsx)(`div`,{className:`text-xs text-rose-600 dark:text-rose-300`,children:n.feedback.error}):null]}):null}function vJ({agentName:e,isMobile:t,isStreaming:n,isLastMessage:r,message:i,onDeleteFeedback:a,onOpenAttachmentPreview:o,onRespondToApproval:s,onRespondToAguiApproval:c,onSubmitFeedback:l,onSubmitAguiAction:u,interactionRecords:d}){return i.role===`user`?(0,U.jsx)(`div`,{className:`mb-3 flex justify-end`,children:(0,U.jsxs)(`div`,{className:`max-w-[80%] rounded-2xl bg-muted px-3 py-2 text-[14px] leading-relaxed text-foreground`,children:[i.attachments?.length?(0,U.jsx)(mJ,{attachments:i.attachments,isMobile:t,onOpenAttachmentPreview:o}):null,i.content]})}):i.role===`a2ui`&&i.aguiActivity?(0,U.jsx)(Aq,{surfaceId:i.aguiActivity.surfaceId,messages:i.aguiActivity.messages,onAction:u}):(0,U.jsxs)(`div`,{className:`group mx-auto mb-3 w-full max-w-3xl px-6`,children:[(0,U.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-2 text-xs text-text-muted`,children:[(0,U.jsx)(iN,{className:`w-3.5 h-3.5`}),(0,U.jsx)(`span`,{children:e})]}),i.attachments?.length?(0,U.jsx)(mJ,{attachments:i.attachments,isMobile:t,onOpenAttachmentPreview:o}):null,i.blocks?.length?(0,U.jsx)(Xq,{message:i,isStreaming:n,onRespondToApproval:s,interactionRecords:d,onRespondToAguiApproval:c}):(0,U.jsxs)(U.Fragment,{children:[i.reasoning?(0,U.jsxs)(`details`,{className:`group/details mb-3 overflow-hidden rounded-md border border-slate-200/80 bg-slate-50/60 text-sm text-slate-600 transition-colors open:bg-white dark:border-slate-700/80 dark:bg-slate-900/40 dark:text-slate-300 dark:open:bg-slate-950/30`,children:[(0,U.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center justify-between gap-3 px-3 py-2 font-medium outline-none marker:hidden`,children:[(0,U.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[n&&r&&!i.content?(0,U.jsx)(LN,{className:`h-4 w-4 animate-spin text-slate-500`}):(0,U.jsx)(aN,{className:`h-4 w-4 text-slate-400`}),(0,U.jsx)(`span`,{className:`truncate`,children:`思考过程`}),(0,U.jsx)(`span`,{className:`rounded-full bg-slate-200/70 px-2 py-0.5 text-[11px] font-medium text-slate-600 dark:bg-slate-800 dark:text-slate-300`,children:n&&r&&!i.content?`生成中`:`已完成`})]}),(0,U.jsx)(oN,{className:`h-4 w-4 flex-shrink-0 text-slate-400 transition-transform group-open/details:rotate-180`})]}),(0,U.jsx)(`div`,{className:`border-t border-slate-200/70 bg-white/70 dark:border-slate-800 dark:bg-slate-950/20`,children:(0,U.jsx)(`div`,{className:`custom-scrollbar max-h-[min(46vh,28rem)] overflow-y-auto px-4 py-3 text-[14px] leading-7 text-slate-600 dark:text-slate-300 [&_p]:my-2 [&_pre]:my-2`,children:(0,U.jsx)(xq,{content:i.reasoning})})})]}):null,i.tools?Object.values(i.tools).map((e,t)=>(0,U.jsxs)(`details`,{open:e.approvalStatus===`pending`||e.status===`paused`?!0:void 0,className:K(`group/details mb-2 overflow-hidden rounded-md border text-sm transition-colors`,e.status===`paused`?`border-amber-200/80 bg-amber-50/25 text-slate-700 dark:border-amber-900/60 dark:bg-amber-950/10 dark:text-slate-200`:e.status===`error`?`border-rose-200/80 bg-rose-50/25 text-rose-700 dark:border-rose-900/60 dark:bg-rose-950/10 dark:text-rose-200`:`border-slate-200/80 bg-slate-50/40 text-slate-600 dark:border-slate-700/80 dark:bg-slate-900/30 dark:text-slate-300`),children:[(0,U.jsx)(`summary`,{className:`flex cursor-pointer list-none items-center justify-between gap-2 px-3 py-2 font-medium`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e.status===`running`?(0,U.jsx)(LN,{className:`h-4 w-4 animate-spin text-slate-500`}):e.status===`paused`?(0,U.jsx)(HN,{className:`h-4 w-4 text-amber-500`}):e.status===`error`?(0,U.jsx)(uN,{className:`h-4 w-4 text-rose-500`}):(0,U.jsx)(aN,{className:`h-4 w-4 text-slate-400`}),(0,U.jsxs)(`span`,{children:[e.approvalStatus===`pending`?`等待审批:`:e.approvalStatus===`approved`?`已批准:`:e.approvalStatus===`rejected`?`已拒绝:`:e.status===`error`?`工具调用失败:`:`工具调用:`,e.name]})]})}),(0,U.jsxs)(`div`,{className:K(`flex flex-col gap-3 border-t px-3 py-3 font-mono text-[13px] leading-relaxed`,e.status===`paused`?`border-amber-200/70 dark:border-amber-900/60`:e.status===`error`?`border-rose-200/70 dark:border-rose-900/60`:`border-slate-200/70 dark:border-slate-800`),children:[e.approvalRequestId?(0,U.jsxs)(`div`,{className:`font-sans text-sm text-slate-700 dark:text-slate-200`,children:[(0,U.jsx)(`div`,{className:`font-medium`,children:e.approvalStatus===`approved`?`已批准该工具调用。`:e.approvalStatus===`rejected`?`已拒绝该工具调用。`:e.approvalMessage||`该工具调用需要人工确认后继续。`}),e.approvalLevel?(0,U.jsxs)(`div`,{className:K(`mt-2 inline-flex items-center rounded border px-1.5 py-0.5 text-xs font-medium`,aJ(e.approvalLevel)),children:[`审批级别:`,iJ(e.approvalLevel)]}):null,e.serverLabel?(0,U.jsxs)(`div`,{className:`mt-1 text-xs text-amber-700/80 dark:text-amber-200/80`,children:[`MCP Server: `,e.serverLabel]}):null,e.approvalStatus===`pending`?(0,U.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[(0,U.jsxs)(`button`,{type:`button`,disabled:n||e.approvalStatus!==`pending`,onClick:()=>e.approvalProtocol===`ag-ui`?c?.({interruptId:e.approvalRequestId||``,approve:!0}):s({approvalRequestId:e.approvalRequestId||``,approve:!0,previousResponseId:e.previousResponseId}),className:`inline-flex min-h-8 items-center gap-1.5 rounded-md bg-emerald-600 px-3 py-1.5 text-xs font-semibold text-white shadow-sm transition hover:bg-emerald-500 disabled:cursor-not-allowed disabled:opacity-55`,children:[(0,U.jsx)(aN,{className:`h-3.5 w-3.5`}),`批准并继续`]}),(0,U.jsxs)(`button`,{type:`button`,disabled:n||e.approvalStatus!==`pending`,onClick:()=>e.approvalProtocol===`ag-ui`?c?.({interruptId:e.approvalRequestId||``,approve:!1}):s({approvalRequestId:e.approvalRequestId||``,approve:!1,previousResponseId:e.previousResponseId}),className:`inline-flex min-h-8 items-center gap-1.5 rounded-md border border-slate-300 bg-white px-3 py-1.5 text-xs font-semibold text-slate-600 transition hover:border-rose-300 hover:bg-rose-50 hover:text-rose-600 disabled:cursor-not-allowed disabled:opacity-55 dark:border-slate-700 dark:bg-slate-950 dark:text-slate-300 dark:hover:border-rose-800 dark:hover:bg-rose-950/30 dark:hover:text-rose-300`,children:[(0,U.jsx)(uN,{className:`h-3.5 w-3.5`}),`拒绝`]})]}):(0,U.jsxs)(`div`,{className:`mt-2 inline-flex items-center gap-1.5 text-xs font-medium text-slate-500 dark:text-slate-400`,children:[e.approvalStatus===`approved`?(0,U.jsx)(aN,{className:`h-3.5 w-3.5 text-emerald-500`}):(0,U.jsx)(uN,{className:`h-3.5 w-3.5 text-rose-500`}),e.approvalStatus===`approved`?`已批准`:`已拒绝`]})]}):null,e.args?(0,U.jsx)(gJ,{label:`入参 (Args)`,tone:`input`,value:e.args}):null,e.output?(0,U.jsx)(gJ,{label:`输出 (Output)`,tone:e.status===`error`?`error`:`output`,value:e.output}):null]})]},`${e.name}-${t}`)):null,i.tools?Object.values(i.tools).filter(e=>d?.some(t=>t.interactionId===e.approvalRequestId)).map(e=>(0,U.jsx)(Bq,{interaction:d.find(t=>t.interactionId===e.approvalRequestId)},`anchor-${e.approvalRequestId}`)):null,(0,U.jsx)(`div`,{className:`w-full break-words`,children:i.content?(0,U.jsx)(xq,{content:i.content}):n&&r&&!i.reasoning&&!i.tools?(0,U.jsx)(`span`,{className:`ml-1 mt-2 inline-block h-4 w-2 animate-pulse rounded-sm bg-emerald-500 align-middle opacity-80 shadow-sm`}):null})]}),i.aguiActivities?.map(e=>(0,U.jsx)(Aq,{surfaceId:e.surfaceId,messages:e.messages,onAction:u},e.surfaceId)),(0,U.jsx)(_J,{isLastMessage:r,isStreaming:n,message:i,onDeleteFeedback:a,onSubmitFeedback:l})]})}function yJ({agentName:e,isMobile:t,isStreaming:n,activity:r,contextIndicator:i,messages:a,isLoadingInitialHistory:o=!1,onDeleteFeedback:s,onOpenAttachmentPreview:c,onRespondToApproval:l,onRespondToAguiApproval:u,onSubmitFeedback:d,onSubmitAguiAction:f,onStopGeneration:p,onCancelRemote:m,checkpoints:h=[],onResumeCheckpoint:g,interactionRecords:_,scrollRef:v}){let[y,x]=(0,b.useState)(0),[ee,te]=(0,b.useState)(0),[S,ne]=(0,b.useState)(new Map),re=(0,b.useRef)(S);(0,b.useLayoutEffect)(()=>{let e=v.current;if(!e)return;let t=()=>{x(e.scrollTop),te(e.clientHeight)};if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(()=>t());return n.observe(e),()=>n.disconnect()},[v]);let C=(0,b.useMemo)(()=>tJ({items:a,scrollTop:y,viewportHeight:ee,overscan:rJ,defaultItemHeight:nJ,measuredHeights:S,getItemKey:(e,t)=>e?.id||String(t)}),[S,a,y,ee]),w=C.visibleItems,ie=(0,b.useCallback)((e,t,n)=>{if(!e||!Number.isFinite(t)||t<=0)return;let r=re.current,i=r.get(e)??nJ;if(i===t)return;let a=new Map(r);a.set(e,t),re.current=a,ne(a);let o=v.current;o&&nx(e.currentTarget.scrollTop),className:K(`custom-scrollbar relative min-h-0 flex-1 overflow-y-auto scroll-smooth`,t?`px-3 py-3`:`px-4 py-5`),children:[(0,U.jsx)(`div`,{className:K(`mx-auto flex w-full max-w-[64rem] flex-col`,r?`pb-10 sm:pb-10`:`pb-6 sm:pb-8`),children:a.length===0&&o?(0,U.jsx)(pJ,{}):a.length===0?(0,U.jsx)(fJ,{agentName:e}):(0,U.jsx)(`div`,{style:{height:C.totalHeight},className:`relative`,children:w.map(r=>(0,U.jsx)(oJ,{messageId:r.item.id||String(r.index),top:r.top,onMeasure:ie,children:r.item.role===`system`?(0,U.jsx)(hJ,{message:r.item}):(0,U.jsx)(vJ,{agentName:e,isMobile:t,isStreaming:n,isLastMessage:r.index===a.length-1,message:r.item,onDeleteFeedback:s,onOpenAttachmentPreview:c,onRespondToApproval:l,interactionRecords:_,onRespondToAguiApproval:u,onSubmitFeedback:d,onSubmitAguiAction:f})},r.item.id||r.index))})}),(0,U.jsx)(Zq,{}),y>320?(0,U.jsx)(`button`,{type:`button`,onClick:()=>{let e=v.current;e&&e.scrollTo({top:e.scrollHeight,behavior:`smooth`})},className:`sticky bottom-4 left-1/2 z-20 mx-auto flex h-9 w-9 -translate-x-1/2 items-center justify-center rounded-full border border-border bg-surface text-text-secondary shadow-[0_8px_24px_rgba(15,23,42,0.12)] transition hover:text-text-primary`,title:`回到底部`,children:(0,U.jsx)(nN,{className:`h-4 w-4`})}):null,r?(0,U.jsx)(`div`,{className:`sticky bottom-1 z-20 mx-auto flex w-full max-w-[64rem] justify-end`,children:(0,U.jsx)(dJ,{activity:r,contextIndicator:i,onStopGeneration:p,onCancelRemote:m})}):null]})}var bJ=WR,xJ=GR,SJ=b.forwardRef(({className:e,...t},n)=>(0,U.jsx)(KR,{ref:n,className:K(`fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,e),...t}));SJ.displayName=KR.displayName;var CJ=b.forwardRef(({className:e,children:t,...n},r)=>(0,U.jsxs)(xJ,{children:[(0,U.jsx)(SJ,{}),(0,U.jsxs)(qR,{ref:r,className:K(`fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg`,e),...n,children:[t,(0,U.jsxs)(XR,{className:`absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground`,children:[(0,U.jsx)($N,{className:`h-4 w-4`}),(0,U.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]}));CJ.displayName=qR.displayName;var wJ=({className:e,...t})=>(0,U.jsx)(`div`,{className:K(`flex flex-col space-y-1.5 text-center sm:text-left`,e),...t});wJ.displayName=`DialogHeader`;var TJ=({className:e,...t})=>(0,U.jsx)(`div`,{className:K(`flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2`,e),...t});TJ.displayName=`DialogFooter`;var EJ=b.forwardRef(({className:e,...t},n)=>(0,U.jsx)(JR,{ref:n,className:K(`text-lg font-semibold leading-none tracking-tight`,e),...t}));EJ.displayName=JR.displayName;var DJ=b.forwardRef(({className:e,...t},n)=>(0,U.jsx)(YR,{ref:n,className:K(`text-sm text-muted-foreground`,e),...t}));DJ.displayName=YR.displayName;function OJ(e,t){if(!(!t||e))return{width:`min(${t.width}px, calc(100vw - 5rem))`,height:`min(${t.height}px, calc(100vh - 9rem))`}}function kJ(e,t){if(!(!t||e))return{width:`min(${t.width+32}px, calc(100vw - 3rem))`}}function AJ({attachment:e,isMobile:t,previewImageSize:n,onClose:r,onImageLoad:i}){return(0,U.jsx)(bJ,{open:!!e?.url,onOpenChange:e=>!e&&r(),children:(0,U.jsxs)(CJ,{className:K(`gap-0 overflow-hidden border-slate-700 bg-slate-950 p-0 text-slate-100 shadow-2xl [&>button]:right-3 [&>button]:top-3 [&>button]:rounded-md [&>button]:border [&>button]:border-slate-700 [&>button]:bg-slate-900/70 [&>button]:p-1.5 [&>button]:text-slate-200 [&>button]:opacity-100`,t?`left-0 top-0 h-[var(--app-height)] max-h-[var(--app-height)] w-screen max-w-none translate-x-0 translate-y-0 rounded-none border-0`:`max-h-[calc(100vh-2rem)] max-w-[calc(100vw-2rem)] rounded-2xl`),style:kJ(t,n),children:[(0,U.jsx)(`div`,{className:`flex items-center gap-3 border-b border-slate-800 px-4 py-3 pr-16`,children:(0,U.jsx)(EJ,{className:`truncate text-sm font-medium`,children:e?.name||`附件预览`})}),(0,U.jsx)(`div`,{className:K(`flex items-center justify-center overflow-auto bg-slate-950`,t?`h-full p-4 pb-[calc(var(--safe-area-bottom)+1rem)]`:`max-h-[calc(100vh-7rem)] p-4`),children:e?e.type.startsWith(`image/`)?(0,U.jsx)(`img`,{src:e.url,alt:e.name,className:K(`object-contain`,t?`h-auto max-h-full w-full max-w-full`:`h-auto w-auto max-h-[calc(100vh-9rem)] max-w-[calc(100vw-5rem)]`),style:OJ(t,n),onLoad:e=>{let t=e.currentTarget;i({width:t.naturalWidth,height:t.naturalHeight})}}):(0,U.jsx)(`iframe`,{src:e.url,title:e.name,className:`h-full min-h-[24rem] w-full rounded-xl border border-slate-800 bg-white`}):null})]})})}function jJ(e){if(typeof e==`number`&&Number.isFinite(e)&&e>0)return e;if(typeof e==`string`&&e.trim()){let t=Number(e);if(Number.isFinite(t)&&t>0)return t}return null}function MJ(e){return/[\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]/u.test(e)}function NJ(e){let t=String(e||``).trim();if(!t)return 0;let n=0,r=0;for(let e of t){if(MJ(e)){n+=1;continue}r+=1}return Math.max(1,n+Math.ceil(r/4))}function PJ(e){if(!e)return 0;if(e.role===`system`)return e.eventType===`context_checkpoint`?NJ(e.summary||``):0;let t=NJ(e.content||``);return e.tools&&(t+=Object.values(e.tools).reduce((e,t)=>e+NJ(t?.name||``)+NJ(t?.args||``)+NJ(t?.output||``),0)),t}function FJ(e){return e?jJ(e.context_window_tokens)??jJ(e?.limits?.context_window_tokens):null}function IJ(e){return e?jJ(e.auto_compact_threshold_percentage)??84:84}function LJ({messages:e,draftInput:t,selectedModel:n}){let r=FJ(n);if(!r)return null;let i=[...e||[]].reverse().find(e=>e?.role===`system`&&e?.eventType===`context_checkpoint`&&e?.status===`running`);if(i){let e=PJ(i);return{label:`正在压缩上下文…`,phase:`compressing`,usedTokens:e,contextWindowTokens:r,percent:Math.min(100,Math.max(0,Math.round(e/r*100)))}}let a=(e||[]).reduce((e,t)=>e+PJ(t),0)+NJ(t||``);if(a<=0)return null;let o=Math.min(100,Math.max(0,Math.round(a/r*100)));return o>=IJ(n)?{label:`估算上下文 ${o}% · 即将压缩`,phase:`warning`,percent:o,usedTokens:a,contextWindowTokens:r}:{label:`估算上下文 ${o}%`,phase:`normal`,percent:o,usedTokens:a,contextWindowTokens:r}}function RJ(e){return e.requestedSessionId===e.activeSessionId&&e.requestToken===e.activeRequestToken}function zJ({agentName:e,isMobile:t,onDeleteFeedback:n,onSubmitFeedback:r,onRespondToApproval:i,onRespondToAguiApproval:a,onSubmitAguiAction:o,onStopGeneration:s,onCancelRemote:c,checkpointResumeEnabled:l=!1,onResumeCheckpoint:u,onLoadOlderSessionMessages:d,interactionRecords:f}){let p=an(e=>e.messages),m=Ze(e=>e.currentSessionId),h=Ze(e=>e.isLoadingSessions),g=D(e=>!!(e.getSessionActivity(m)&&e.isSessionStreaming(m))),_=D(e=>e.getSessionActivity(m)),v=KA(e=>e.getSessionCheckpoints(m)),y=Ze(e=>m?e.messageHistory[m]:null),x=h||!!y?.isLoadingInitial,ee=C(e=>e.input),te=Te(e=>e.availableModels),S=Te(e=>e.selectedModel),ne=C(e=>e.previewAttachment),re=C(e=>e.previewImageSize),w=(0,b.useRef)(null),ie=(0,b.useRef)(!0),ae=(0,b.useRef)(!1),oe=(0,b.useRef)(0),se=(0,b.useRef)(g),ce=(0,b.useRef)(!1),le=(0,b.useRef)(null),ue=(0,b.useRef)(!0),T=(0,b.useMemo)(()=>te.find(e=>e.id===S)||null,[te,S]),E=(0,b.useMemo)(()=>LJ({messages:p,draftInput:ee,selectedModel:T}),[ee,p,T]);return(0,b.useEffect)(()=>{se.current=g},[g]),(0,b.useEffect)(()=>{ue.current=!0,ie.current=!0,ae.current=!1,oe.current=0,ce.current=!1,le.current=null},[m]),(0,b.useEffect)(()=>{let e=w.current;if(!e)return;let t=()=>{let t=e.scrollHeight-e.scrollTop-e.clientHeight,n=e.scrollTop{RJ({requestedSessionId:n,activeSessionId:Ze.getState().currentSessionId,requestToken:r,activeRequestToken:le.current})&&requestAnimationFrame(()=>{if(!RJ({requestedSessionId:n,activeSessionId:Ze.getState().currentSessionId,requestToken:r,activeRequestToken:le.current}))return;let e=w.current;if(!e)return;let i=e.scrollHeight-t;e.scrollTop+=i,oe.current=e.scrollTop})}).finally(()=>{le.current===r&&(le.current=null,ce.current=!1)})}if(se.current&&n){ae.current=!0,ie.current=!1;return}if(ae.current){let e=t<=12;ae.current=!e,ie.current=e;return}ie.current=t<96};return t(),e.addEventListener(`scroll`,t,{passive:!0}),()=>e.removeEventListener(`scroll`,t)},[y,m,d]),(0,b.useEffect)(()=>{let e=w.current;if(e){if(p.length>0&&ue.current){let e=Ze.getState().currentSessionId,t=w.current,n=t?t.style.scrollBehavior:``;t&&(t.style.scrollBehavior=`auto`,t.scrollTop=t.scrollHeight,oe.current=t.scrollTop);let r=0,i=t?.scrollHeight??-1,a=!1,o=0,s=()=>{a||(a=!0,t&&(t.style.scrollBehavior=n),ie.current=!0,ae.current=!1,ue.current=!1)},c=()=>{if(a)return;if(Ze.getState().currentSessionId!==e){a=!0;return}let t=w.current;if(t){if(t.scrollHeight!==i)i=t.scrollHeight,t.scrollTop=t.scrollHeight,oe.current=t.scrollTop,r=0;else if(r+=1,r>=3){s();return}o=requestAnimationFrame(c)}},l=window.setTimeout(s,2e3);return o=requestAnimationFrame(c),()=>{cancelAnimationFrame(o),window.clearTimeout(l),s()}}ie.current&&(e.scrollTop=e.scrollHeight,oe.current=e.scrollTop)}},[p,g]),(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(yJ,{agentName:e,isMobile:t,isStreaming:g,activity:_,contextIndicator:E,messages:p,isLoadingInitialHistory:x,onDeleteFeedback:n,onOpenAttachmentPreview:e=>{C.getState().setPreviewAttachment(e),C.getState().setPreviewImageSize(null)},onRespondToApproval:i,onRespondToAguiApproval:a,interactionRecords:f,onSubmitFeedback:r,onSubmitAguiAction:o,onStopGeneration:s,onCancelRemote:c,checkpoints:l?v:[],onResumeCheckpoint:u,scrollRef:w}),(0,U.jsx)(AJ,{attachment:ne,isMobile:t,previewImageSize:re,onClose:()=>{C.getState().setPreviewAttachment(null),C.getState().setPreviewImageSize(null)},onImageLoad:e=>C.getState().setPreviewImageSize(e)})]})}function BJ({indicator:e}){let t=Math.max(0,Math.min(100,e.percent??0));return(0,U.jsxs)(`div`,{className:`group relative flex h-8 w-8 items-center justify-center`,children:[(0,U.jsx)(`div`,{className:K(`flex h-4 w-4 items-center justify-center rounded-full`,e.phase===`warning`||e.phase===`compressing`||t>=85?`text-red-500`:`text-[#a5abb2]`),title:e.label,children:(0,U.jsx)(`div`,{className:`flex h-3 w-3 items-center justify-center rounded-full`,style:{background:`conic-gradient(currentColor ${t*3.6}deg, #edf0f2 0deg)`},children:(0,U.jsx)(`span`,{className:`h-2 w-2 rounded-full bg-background`})})}),(0,U.jsxs)(`div`,{className:`pointer-events-auto absolute bottom-[calc(100%+0.75rem)] left-1/2 z-30 hidden w-max -translate-x-1/2 rounded-2xl border border-border/70 bg-background px-4 py-3 text-center text-sm leading-5 text-foreground shadow-[0_14px_42px_rgba(15,23,42,0.16)] group-hover:block dark:shadow-[0_14px_42px_rgba(0,0,0,0.4)]`,children:[(0,U.jsx)(`div`,{className:`mb-1 whitespace-nowrap font-light text-text-secondary`,children:`估算上下文`}),(0,U.jsxs)(`div`,{className:`whitespace-nowrap font-light`,children:[t,`% 已使用`]}),(0,U.jsx)(`div`,{className:`whitespace-nowrap font-light text-text-muted`,children:e.usedTokens&&e.contextWindowTokens?`${VJ(e.usedTokens)} / ${VJ(e.contextWindowTokens)}`:e.label})]})]})}function VJ(e){return e>=1e6?`${(e/1e6).toFixed(1)}m`:e>=1e3?`${(e/1e3).toFixed(0)}k`:String(e)}var HJ=[{value:`plan`,label:`计划模式`,description:`先分析并形成可执行计划`,icon:wN},{value:`goal`,label:`设定目标`,description:`朝可验证的停止条件持续推进`,icon:KN}],UJ={plan:`计划模式`,goal:`目标`};function WJ({attachmentsEnabled:e,mode:t,support:n,onSelectMode:r,onUpload:i}){let[a,o]=(0,b.useState)(!1),s=(0,b.useRef)(null),c=HJ.filter(e=>n[e.value]);return(0,b.useEffect)(()=>{if(!a)return;let e=e=>{s.current&&!s.current.contains(e.target)&&o(!1)},t=e=>{e.key===`Escape`&&o(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[a]),!e&&c.length===0?null:(0,U.jsxs)(`div`,{ref:s,className:`relative flex min-w-0 items-center gap-1`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>o(e=>!e),className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-xl text-text-secondary transition hover:bg-muted hover:text-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/25`,"aria-expanded":a,"aria-haspopup":`menu`,"aria-label":`添加附件或选择执行模式`,title:`添加附件或选择执行模式`,children:(0,U.jsx)(IN,{className:`h-[19px] w-[19px]`})}),t?(0,U.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>!e),className:K(`flex h-8 max-w-[8.5rem] items-center gap-1 rounded-xl px-2 text-[12px] transition`,t===`goal`?`bg-amber-50 text-amber-700 hover:bg-amber-100 dark:bg-amber-950/40 dark:text-amber-300`:`text-text-secondary hover:bg-muted hover:text-text-primary`),"aria-label":`当前执行模式:${UJ[t]}`,children:[(0,U.jsx)(`span`,{className:`truncate`,children:UJ[t]}),(0,U.jsx)(oN,{className:`h-3.5 w-3.5 shrink-0`})]}):null,a?(0,U.jsxs)(`div`,{role:`menu`,"aria-label":`附件与执行模式`,className:`absolute bottom-[calc(100%+0.65rem)] left-0 z-40 w-[min(19rem,calc(100vw-2rem))] rounded-2xl border border-border/80 bg-popover p-1.5 shadow-[0_18px_44px_rgba(15,23,42,0.16)]`,children:[e?(0,U.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:()=>{i(),o(!1)},className:`flex w-full items-center gap-2.5 rounded-xl px-2.5 py-2.5 text-left transition hover:bg-muted/70`,children:[(0,U.jsx)(XN,{className:`h-4 w-4 shrink-0 text-text-muted`}),(0,U.jsxs)(`span`,{children:[(0,U.jsx)(`span`,{className:`block text-[13px] font-medium text-text-primary`,children:`上传附件`}),(0,U.jsx)(`span`,{className:`block text-[11px] text-text-muted`,children:`添加文件或图片到当前消息`})]})]}):null,e&&c.length>0?(0,U.jsx)(`div`,{className:`my-1 h-px bg-border/70`}):null,c.map(e=>{let n=e.icon,i=t===e.value;return(0,U.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":i,onClick:()=>{r(e.value),o(!1)},className:K(`flex w-full items-center gap-2.5 rounded-xl px-2.5 py-2.5 text-left transition`,i?`bg-muted`:`hover:bg-muted/70`),children:[(0,U.jsx)(n,{className:`h-4 w-4 shrink-0 text-text-muted`}),(0,U.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`span`,{className:`block text-[13px] font-medium text-text-primary`,children:e.label}),(0,U.jsx)(`span`,{className:`block text-[11px] text-text-muted`,children:e.description})]}),i?(0,U.jsx)(aN,{className:`h-4 w-4 shrink-0 text-text-primary`}):null]},e.value)})]}):null]})}var GJ=[{value:`auto`,label:`自动`,description:`使用模型或 Agent 的默认设置`},{value:`enabled`,label:`开启`,description:`请求模型输出推理过程`},{value:`disabled`,label:`关闭`,description:`不额外请求模型推理`}],KJ={auto:`自动`,enabled:`开启`,disabled:`关闭`};function qJ({availableModels:e,selectedModel:t,thinkingEnabled:n,thinkingMode:r,onSelectModel:i,onSelectThinkingMode:a}){let[o,s]=(0,b.useState)(!1),[c,l]=(0,b.useState)(`model`),u=(0,b.useRef)(null),d=e.find(e=>e.id===t)?.display_name||t||`选择模型`,f=n?c:`model`;return(0,b.useEffect)(()=>{if(!o)return;let e=e=>{u.current&&!u.current.contains(e.target)&&s(!1)},t=e=>{e.key===`Escape`&&s(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[o]),(0,U.jsxs)(`div`,{ref:u,className:`relative`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>s(e=>!e),className:`flex h-8 max-w-[15rem] items-center gap-1.5 rounded-xl bg-muted/80 px-3 text-[13px] text-text-primary transition hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/25`,"aria-expanded":o,"aria-haspopup":`menu`,"aria-label":n?`模型 ${d},推理 ${KJ[r]}`:`模型 ${d}`,title:n?`选择模型与推理设置`:`选择模型`,children:[(0,U.jsx)(`span`,{className:`min-w-0 truncate`,children:d}),n?(0,U.jsx)(`span`,{className:`shrink-0 text-text-muted`,children:KJ[r]}):null,(0,U.jsx)(oN,{className:K(`h-3.5 w-3.5 shrink-0 text-text-muted transition-transform`,o&&`rotate-180`)})]}),o?(0,U.jsxs)(`div`,{className:`absolute bottom-[calc(100%+0.65rem)] right-0 z-40 flex items-end gap-2 sm:flex-row-reverse`,children:[(0,U.jsxs)(`div`,{role:`menu`,"aria-label":f===`model`?`选择模型`:`选择推理设置`,className:`max-h-[min(54vh,22rem)] w-[min(18rem,calc(100vw-2rem))] overflow-y-auto rounded-2xl border border-border/80 bg-popover p-1.5 shadow-[0_18px_44px_rgba(15,23,42,0.16)]`,children:[n?(0,U.jsxs)(`div`,{className:`mb-1 grid grid-cols-2 gap-1 sm:hidden`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>l(`model`),className:K(`rounded-lg px-2 py-1.5 text-xs`,f===`model`?`bg-muted text-text-primary`:`text-text-muted`),children:`模型`}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>l(`reasoning`),className:K(`rounded-lg px-2 py-1.5 text-xs`,f===`reasoning`?`bg-muted text-text-primary`:`text-text-muted`),children:`推理`})]}):null,(0,U.jsx)(`div`,{className:`px-2.5 pb-1.5 pt-1 text-[11px] font-medium text-text-muted`,children:f===`model`?`模型`:`推理设置`}),f===`model`?e.map(e=>{let n=e.id===t;return(0,U.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":n,onClick:()=>{i(e.id),s(!1)},className:K(`flex w-full items-center gap-2 rounded-xl px-2.5 py-2 text-left text-[13px] transition-colors`,n?`bg-muted text-text-primary`:`text-text-secondary hover:bg-muted/70 hover:text-text-primary`),children:[(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.display_name||e.id}),n?(0,U.jsx)(aN,{className:`h-4 w-4 shrink-0`,"aria-hidden":`true`}):null]},e.id)}):GJ.map(e=>{let t=e.value===r;return(0,U.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":t,onClick:()=>{a(e.value),s(!1)},className:K(`flex w-full items-center gap-2 rounded-xl px-2.5 py-2 text-left transition-colors`,t?`bg-muted`:`hover:bg-muted/70`),children:[(0,U.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`span`,{className:`block text-[13px] font-medium text-text-primary`,children:e.label}),(0,U.jsx)(`span`,{className:`block text-[11px] leading-4 text-text-muted`,children:e.description})]}),t?(0,U.jsx)(aN,{className:`h-4 w-4 shrink-0 text-text-primary`,"aria-hidden":`true`}):null]},e.value)})]}),(0,U.jsxs)(`div`,{className:`hidden w-[16rem] rounded-2xl border border-border/80 bg-popover p-1.5 shadow-[0_18px_44px_rgba(15,23,42,0.13)] sm:block`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>l(`model`),className:K(`flex w-full items-center gap-2 rounded-xl px-2.5 py-2.5 text-left text-[13px] transition-colors`,f===`model`?`bg-muted text-text-primary`:`text-text-secondary hover:bg-muted/70`),children:[(0,U.jsx)(`span`,{className:`font-medium`,children:`模型`}),(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-right text-text-muted`,children:d}),(0,U.jsx)(cN,{className:`h-4 w-4 shrink-0 text-text-muted`})]}),n?(0,U.jsxs)(`button`,{type:`button`,onClick:()=>l(`reasoning`),className:K(`flex w-full items-center gap-2 rounded-xl px-2.5 py-2.5 text-left text-[13px] transition-colors`,f===`reasoning`?`bg-muted text-text-primary`:`text-text-secondary hover:bg-muted/70`),children:[(0,U.jsx)(`span`,{className:`font-medium`,children:`推理`}),(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-right text-text-muted`,children:KJ[r]}),(0,U.jsx)(cN,{className:`h-4 w-4 shrink-0 text-text-muted`})]}):null]})]}):null]})}var JJ=[{value:`ask`,label:`请求批准`,description:`有副作用的操作执行前先确认`,icon:SN},{value:`risk`,label:`风险操作需确认`,description:`只对命令、写入和外部副作用确认`,icon:HN},{value:`full`,label:`完全访问`,description:`本次会话不再为默认规则弹出确认`,icon:VN}],YJ={ask:`请求批准`,risk:`风险确认`,full:`完全访问`};function XJ({approvalPolicy:e}){let[t,n]=(0,b.useState)(!1),r=(0,b.useRef)(null),i=ke(e=>e.permissionMode),a=ke(e=>e.setPermissionMode),o=i===`ask`?SN:i===`full`?VN:HN,s=(0,b.useMemo)(()=>JJ.filter(t=>!e||e.Modes.includes(t.value)),[e]);return(0,b.useEffect)(()=>{s.some(e=>e.value===i)||a(e?.DefaultMode||s[0]?.value||`risk`)},[e?.DefaultMode,i,a,s]),(0,b.useEffect)(()=>{if(!t)return;let e=e=>{r.current&&!r.current.contains(e.target)&&n(!1)},i=e=>{e.key===`Escape`&&n(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,i),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,i)}},[t]),(0,U.jsxs)(`div`,{ref:r,className:`relative`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),className:K(`flex h-8 items-center gap-1.5 rounded-xl px-2.5 text-[13px] transition hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/25`,i===`full`?`text-amber-600 dark:text-amber-400`:`text-text-secondary hover:text-text-primary`),"aria-expanded":t,"aria-haspopup":`menu`,title:`设置本次会话的工具审批规则`,children:[(0,U.jsx)(o,{className:`h-3.5 w-3.5`}),(0,U.jsx)(`span`,{children:YJ[i]}),(0,U.jsx)(oN,{className:K(`h-3.5 w-3.5 transition-transform`,t&&`rotate-180`)})]}),t?(0,U.jsxs)(`div`,{role:`menu`,"aria-label":`工具权限`,className:`absolute bottom-[calc(100%+0.6rem)] left-0 z-30 w-[19rem] rounded-2xl border border-border/80 bg-popover p-1.5 shadow-[0_12px_30px_rgba(15,23,42,0.14)]`,children:[(0,U.jsx)(`div`,{className:`px-2.5 pb-1.5 pt-1 text-[11px] text-text-muted`,children:`本次会话的默认审批规则`}),s.map(e=>{let t=e.icon,r=e.value===i;return(0,U.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":r,onClick:()=>{a(e.value),n(!1)},className:K(`flex w-full items-center gap-2.5 rounded-xl px-2.5 py-2 text-left transition-colors`,r?`bg-primary/[0.08]`:`hover:bg-muted/75`),children:[(0,U.jsx)(t,{className:K(`h-[17px] w-[17px] shrink-0`,r?`text-primary`:`text-text-muted`)}),(0,U.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`span`,{className:K(`block text-[13px] font-medium leading-5`,r?`text-text-primary`:`text-text-secondary`),children:e.label}),(0,U.jsx)(`span`,{className:`block text-[11px] leading-4 text-text-muted`,children:e.description})]}),r?(0,U.jsx)(aN,{className:`h-4 w-4 shrink-0 text-primary`,"aria-hidden":`true`}):null]},e.value)})]}):null]})}function ZJ({attachments:e,composerContextIndicator:t,composerMaxHeight:n,fileInputRef:r,input:i,isMobile:a,isStreaming:o,attachmentsEnabled:s=!0,approvalEnabled:c=!1,approvalPolicy:l,thinkingEnabled:u=!1,executionMode:d,executionModeSupport:f,queuedDrafts:p,onAppendAttachments:m,onInputChange:h,onSelectExecutionMode:g,onPaste:_,onRemoveAttachment:v,onStopGeneration:y,onCancelRemote:b,onSubmit:x,textareaRef:ee}){let te=d===`goal`?`描述需要持续完成的目标…`:d===`plan`?`描述需要先规划的任务…`:a?`发送消息...`:`发送消息…`,S=b?`保留恢复点并结束本次执行`:`停止生成`,ne=d===`goal`?!!i.trim():!!(i.trim()||e.length>0),re=Te(e=>e.availableModels),C=Te(e=>e.selectedModel),w=Te(e=>e.thinkingMode),ie=Te(e=>e.setSelectedModel),ae=Te(e=>e.setThinkingMode),oe=e=>e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`;return(0,U.jsx)(`div`,{className:`relative z-10 flex-shrink-0 bg-background/95 px-3 py-3 backdrop-blur sm:px-4 sm:py-3`,children:(0,U.jsxs)(`div`,{className:`mx-auto w-full max-w-[64rem]`,children:[p.length>0?(0,U.jsxs)(`div`,{className:`mb-2 rounded-2xl border border-amber-200/80 bg-amber-50/80 px-3 py-2 text-xs text-amber-900 shadow-sm dark:border-amber-900/60 dark:bg-amber-950/30 dark:text-amber-100`,children:[(0,U.jsxs)(`div`,{className:`mb-1.5 flex items-center justify-between gap-2`,children:[(0,U.jsxs)(`span`,{className:`font-semibold`,children:[`发送队列 · `,p.length]}),(0,U.jsx)(`span`,{className:`text-amber-700/75 dark:text-amber-200/75`,children:`当前回复完成后依次发送`})]}),(0,U.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[p.slice(0,3).map((e,t)=>{let n=e.text.trim()||(e.attachments.length>0?`仅附件消息`:`空消息`);return(0,U.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-background/70 px-2 py-1.5`,children:[(0,U.jsx)(`span`,{className:`flex h-5 w-5 flex-shrink-0 items-center justify-center rounded-full bg-amber-100 font-mono text-[10px] text-amber-700 dark:bg-amber-900/50 dark:text-amber-100`,children:t+1}),(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-text-secondary`,children:n}),e.attachments.length>0?(0,U.jsxs)(`span`,{className:`flex-shrink-0 rounded-full bg-amber-100 px-2 py-0.5 text-[10px] text-amber-700 dark:bg-amber-900/50 dark:text-amber-100`,children:[e.attachments.length,` 附件`]}):null]},`${t}-${n}-${e.attachments.length}`)}),p.length>3?(0,U.jsxs)(`div`,{className:`px-2 pt-0.5 text-[11px] text-amber-700/80 dark:text-amber-200/80`,children:[`还有 `,p.length-3,` 条等待发送`]}):null]})]}):null,(0,U.jsx)(`div`,{className:`relative rounded-[28px] bg-surface shadow-[0_0_0_0.5px_rgba(15,23,42,0.08),0_5px_18px_rgba(15,23,42,0.07)] dark:shadow-[0_0_0_0.5px_rgba(255,255,255,0.06),0_8px_24px_rgba(0,0,0,0.24)]`,children:(0,U.jsx)(`div`,{className:`flex items-center gap-3`,children:(0,U.jsxs)(`form`,{onSubmit:t=>{if(t.preventDefault(),o){b?b():y();return}let n=i.trim();ne&&x(n,e)},onDragOver:e=>{e.preventDefault(),e.stopPropagation()},onDrop:e=>{e.preventDefault(),e.stopPropagation(),s&&e.dataTransfer.files&&e.dataTransfer.files.length>0&&m(Array.from(e.dataTransfer.files))},className:`relative flex min-h-[116px] min-w-0 flex-1 flex-col rounded-[28px] border border-border/55 bg-background px-4 pb-3 pt-3 transition-all focus-within:border-primary/40 focus-within:ring-2 focus-within:ring-primary/15 sm:px-5`,children:[e.length>0?(0,U.jsx)(`div`,{className:`mb-1.5 flex flex-wrap gap-2`,children:e.map((e,t)=>(0,U.jsxs)(`div`,{className:K(`group relative flex items-center gap-2 rounded-xl border border-border bg-background px-3 py-2 text-xs`,a?`max-w-full`:`max-w-[14rem]`),children:[(0,U.jsx)(`span`,{className:`flex h-7 w-7 flex-shrink-0 items-center justify-center rounded-lg bg-muted text-text-muted`,children:(0,U.jsx)(NN,{className:`h-3.5 w-3.5`})}),(0,U.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`span`,{className:`block truncate font-medium text-text-primary`,children:e.name}),(0,U.jsx)(`span`,{className:`block text-[10px] text-text-muted`,children:oe(e.size)})]}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>v(t),className:`absolute -right-1.5 -top-1.5 flex h-4 w-4 items-center justify-center rounded-full border border-border bg-background text-text-muted shadow-sm transition hover:text-rose-500`,"aria-label":`移除附件 ${e.name}`,children:(0,U.jsx)(`span`,{className:`text-[11px] leading-none`,children:`×`})})]},`${e.name}-${e.size}-${t}`))}):null,(0,U.jsx)(`textarea`,{ref:ee,rows:1,value:i,onChange:h,onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),e.currentTarget.form?.requestSubmit())},onPaste:_,placeholder:te,className:K(`custom-scrollbar max-h-[176px] min-h-[62px] w-full resize-none overflow-y-auto border-0 bg-transparent px-0 pb-1 pt-1 text-[15px] leading-6 text-text-primary outline-none placeholder:text-text-muted/60`,a?`text-[16px]`:`text-[14px]`),style:{maxHeight:`${n}px`,overflowY:`auto`}}),(0,U.jsxs)(`div`,{className:`mt-auto flex min-h-8 items-center justify-between gap-2 pt-1.5`,children:[(0,U.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,U.jsx)(`input`,{ref:r,type:`file`,multiple:!0,className:`hidden`,onChange:e=>{e.target.files&&e.target.files.length>0&&(m(Array.from(e.target.files)),e.target.value=``)}}),(0,U.jsx)(WJ,{attachmentsEnabled:s,mode:d,support:f,onSelectMode:g,onUpload:()=>r.current?.click()}),c?(0,U.jsx)(XJ,{approvalPolicy:l}):null]}),(0,U.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[t?(0,U.jsx)(BJ,{indicator:t}):null,re.length>0?(0,U.jsx)(qJ,{availableModels:re,selectedModel:C,thinkingEnabled:u,thinkingMode:w,onSelectModel:ie,onSelectThinkingMode:ae}):null,(0,U.jsx)(`button`,{type:`submit`,disabled:!o&&!ne,className:K(`flex h-9 w-9 shrink-0 items-center justify-center rounded-full transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30`,o||ne?`bg-[#1f1f1f] text-white hover:opacity-80`:`bg-muted text-text-muted/45`),title:o?S:`发送消息`,children:o?(0,U.jsx)(GN,{className:`h-3.5 w-3.5 fill-current`}):(0,U.jsx)(rN,{className:`h-[18px] w-[18px]`})})]})]})]})})})]})})}function QJ(e){return[e.name,e.size,e.lastModified,e.type].join(`:`)}function $J(e,t){let n=new Map;for(let t of e)n.set(QJ(t),t);for(let e of t)n.set(QJ(e),e);return Array.from(n.values())}function eY(e){return Array.from(e.clipboardData.items||[]).filter(e=>e.kind===`file`).map(e=>e.getAsFile()).filter(e=>!!e)}function tY({composerMaxHeight:e,submitDraft:t,stopGeneration:n,cancelRemote:r,isMobile:i,attachmentsEnabled:a=!0,approvalEnabled:o=!1,approvalPolicy:s,thinkingEnabled:c=!1,runtimeCapabilityMatrix:l,pendingInteractions:u,onRespondInteraction:d,localCatalog:f}){let[p,m]=(0,b.useState)(0),[h,g]=(0,b.useState)(),_=C(e=>e.input),v=C(e=>e.attachments),y=Ze(e=>e.currentSessionId),x=D(e=>!!(e.getSessionActivity(y)&&e.isSessionStreaming(y))),ee=C(e=>e.queuedDrafts),te=an(e=>e.messages),S=Te(e=>e.availableModels),ne=Te(e=>e.selectedModel),re=Te(e=>e.setThinkingMode),w=(0,b.useRef)(null),ie=(0,b.useRef)(null),ae=(0,b.useMemo)(()=>S.find(e=>e.id===ne)||null,[S,ne]),oe=(0,b.useMemo)(()=>LJ({messages:te,draftInput:_,selectedModel:ae}),[_,te,ae]),se=(0,b.useMemo)(()=>({plan:!!l?.plan?.supported,goal:!!l?.goal?.supported}),[l]),ce=h&&se[h]?h:void 0,le=(0,b.useCallback)((e,n)=>{!e&&n.length===0||(C.getState().setInput(``),C.getState().setAttachments([]),t(e,n,void 0,void 0,ce),ce===`goal`&&g(void 0))},[ce,t]);(0,b.useEffect)(()=>{ie.current&&(ie.current.style.height=`auto`,ie.current.style.height=`${Math.min(ie.current.scrollHeight,e)}px`)},[_,e]);let ue=t=>{C.getState().setInput(t.target.value),t.target.style.height=`auto`,t.target.style.height=`${Math.min(t.target.scrollHeight,e)}px`},T=e=>{!a||!e.length||C.getState().setAttachments(t=>$J(t,e))},E=e=>{if(!a)return;let t=eY(e);t.length&&(e.preventDefault(),e.stopPropagation(),T(t))},de=u||[],fe=Math.min(p,Math.max(de.length-1,0));return(0,b.useEffect)(()=>{c||re(`auto`)},[re,c]),(0,U.jsxs)(`div`,{className:`flex w-full flex-col justify-center`,children:[de.length>0&&d?(0,U.jsx)(Iq,{interactions:de,activeIndex:fe,onSelectIndex:m,onRespond:d,localCatalog:f}):null,(0,U.jsx)(ZJ,{attachments:v,composerContextIndicator:oe,composerMaxHeight:e,fileInputRef:w,input:_,isMobile:i,isStreaming:x,attachmentsEnabled:a,approvalEnabled:o,approvalPolicy:s,thinkingEnabled:c,executionMode:ce,executionModeSupport:se,queuedDrafts:ee,onAppendAttachments:T,onInputChange:ue,onSelectExecutionMode:g,onPaste:E,onRemoveAttachment:e=>C.getState().setAttachments(t=>t.filter((t,n)=>n!==e)),onStopGeneration:n,onCancelRemote:r,onSubmit:le,textareaRef:ie})]})}var nY=(0,b.lazy)(()=>J(()=>import(`./NativeTerminalPanel-Czpx2MSS.js`).then(e=>({default:e.NativeTerminalPanel})),__vite__mapDeps([5,6]),import.meta.url));function rY({availableModels:e,selectedModel:t,onSelectModel:n,selectedModelLabel:r,modelCatalogLoaded:i,modelSource:a,thinkingEnabled:o,thinkingMode:s,onSelectThinkingMode:c,compact:l=!1}){let u=K(`rounded-full border border-slate-200 bg-white px-3 py-2 text-sm text-slate-700 outline-none transition-colors focus:ring-1 focus:ring-blue-500 dark:border-slate-700 dark:bg-slate-900 dark:text-slate-300`,l?`w-full`:`max-w-[13rem]`),d=e.length>1?(0,U.jsx)(`select`,{value:t,onChange:e=>n(e.target.value),className:u,children:e.map(e=>(0,U.jsx)(`option`,{value:e.id,children:e.display_name||e.id},e.id))}):r?(0,U.jsx)(`span`,{className:K(u,`inline-flex max-w-full items-center`,l?`justify-start`:``),title:a||r,children:(0,U.jsx)(`span`,{className:`truncate`,children:r})}):(0,U.jsx)(`span`,{className:`text-sm text-slate-400`,children:i?`未配置模型`:`Loading models...`}),f=o?(0,U.jsxs)(`select`,{value:s,onChange:e=>c(e.target.value),className:K(u,l?``:`max-w-[9rem]`),title:`控制模型 thinking/reasoning 参数`,children:[(0,U.jsx)(`option`,{value:`auto`,children:`思考自动`}),(0,U.jsx)(`option`,{value:`enabled`,children:`开启思考`}),(0,U.jsx)(`option`,{value:`disabled`,children:`关闭思考`})]}):null;return(0,U.jsxs)(`div`,{className:K(`flex min-w-0 gap-2`,l?`w-full flex-col`:`items-center`),children:[d,f]})}function iY({agentName:e,currentSessionId:t,isMobile:n,sidebarOpen:r,mobileSidebarOpen:i,onToggleSidebar:a,availableModels:o,selectedModel:s,onSelectModel:c,selectedModelLabel:l,modelCatalogLoaded:u,modelSource:d,thinkingEnabled:f,thinkingMode:p,onSelectThinkingMode:m,mobileActionsOpen:h,onMobileActionsOpenChange:g,workspaceEnabled:_,onOpenWorkspace:v,nativeManagementLink:y,nativeTerminal:x,nativeLauncherMode:ee=!1}){let[te,S]=(0,b.useState)(!1),ne=!!x?.Enabled,re=n?i?(0,U.jsx)(jN,{className:`h-5 w-5`}):(0,U.jsx)(MN,{className:`h-5 w-5`}):r?(0,U.jsx)(jN,{className:`h-5 w-5`}):(0,U.jsx)(MN,{className:`h-5 w-5`});return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(`header`,{className:K(`flex flex-shrink-0 items-center justify-between border-b border-black/[0.06] bg-background/95 px-3 py-2 backdrop-blur dark:border-white/[0.08] dark:bg-background/95 sm:px-4`,n?`pt-[calc(var(--safe-area-top)+0.5rem)]`:`h-12`),children:[(0,U.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[ee?null:(0,U.jsx)(`button`,{type:`button`,onClick:a,className:`rounded-lg p-2 text-slate-500 transition-colors hover:bg-slate-100 dark:hover:bg-slate-800`,"aria-label":n?`打开历史记录`:`切换侧边栏`,children:re}),(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsx)(`div`,{className:`truncate text-sm font-semibold text-slate-900 dark:text-slate-100 sm:text-base`,children:e}),(0,U.jsx)(`div`,{className:`text-[11px] text-slate-400 dark:text-slate-500`,children:ee?`原生运行时入口`:`智能体`})]})]}),n?(0,U.jsx)(`button`,{type:`button`,onClick:()=>g(!0),className:`rounded-lg p-2 text-slate-500 transition-colors hover:bg-slate-100 dark:hover:bg-slate-800`,"aria-label":`打开会话操作`,children:(0,U.jsx)(hN,{className:`h-5 w-5`})}):(0,U.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[y?(0,U.jsxs)(`a`,{href:y.href,target:`_blank`,rel:`noreferrer`,title:y.title,className:`inline-flex flex-shrink-0 items-center gap-1.5 whitespace-nowrap rounded-xl border border-slate-200 bg-slate-50 px-3 py-2 text-sm font-medium leading-none text-slate-700 transition hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-slate-700`,children:[(0,U.jsx)(gN,{className:`h-4 w-4`}),(0,U.jsx)(`span`,{children:y.label})]}):null,_?(0,U.jsxs)(`button`,{type:`button`,onClick:v,className:`inline-flex flex-shrink-0 items-center gap-1.5 whitespace-nowrap rounded-xl border border-slate-200 bg-slate-50 px-3 py-2 text-sm font-medium leading-none text-slate-700 transition hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-slate-700`,children:[(0,U.jsx)(xN,{className:`h-4 w-4`}),(0,U.jsx)(`span`,{children:`Workspace`})]}):null,ne?(0,U.jsxs)(`button`,{type:`button`,onClick:()=>S(!0),className:`inline-flex flex-shrink-0 items-center gap-1.5 whitespace-nowrap rounded-xl border border-emerald-200 bg-emerald-50 px-3 py-2 text-sm font-medium leading-none text-emerald-800 transition hover:bg-emerald-100 dark:border-emerald-900/70 dark:bg-emerald-950/40 dark:text-emerald-200`,children:[(0,U.jsx)(WN,{className:`h-4 w-4`}),(0,U.jsx)(`span`,{children:`TUI`})]}):null,!ee&&n?(0,U.jsx)(rY,{availableModels:o,selectedModel:s,onSelectModel:c,selectedModelLabel:l,modelCatalogLoaded:u,modelSource:d,thinkingEnabled:f,thinkingMode:p,onSelectThinkingMode:m,compact:!0}):null,!ee&&t?(0,U.jsxs)(`span`,{className:`rounded bg-slate-50 px-2 py-1 text-xs font-mono text-slate-400 dark:bg-slate-800`,children:[`ID: `,t.slice(0,8)]}):null]})]}),n?(0,U.jsx)($R,{open:h,onOpenChange:g,children:(0,U.jsxs)(tz,{side:`bottom`,className:`rounded-t-[1.75rem] border-slate-200 bg-white px-4 pb-[calc(var(--safe-area-bottom)+1rem)] pt-6 dark:border-slate-800 dark:bg-slate-900`,children:[(0,U.jsxs)(nz,{className:`text-left`,children:[(0,U.jsx)(rz,{children:`会话设置`}),(0,U.jsx)(iz,{className:`sr-only`,children:`调整当前会话的模型和 Workspace 操作。`})]}),(0,U.jsxs)(`div`,{className:`mt-6 flex flex-col gap-4`,children:[_?(0,U.jsxs)(`button`,{type:`button`,onClick:()=>{g(!1),v()},className:`inline-flex items-center gap-2 rounded-xl border border-slate-200 bg-slate-50 px-3 py-3 text-sm font-medium text-slate-700 transition hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-slate-700`,children:[(0,U.jsx)(xN,{className:`h-4 w-4`}),`工作区文件`]}):null,ne?(0,U.jsxs)(`button`,{type:`button`,onClick:()=>{g(!1),S(!0)},className:`inline-flex items-center gap-2 rounded-xl border border-emerald-200 bg-emerald-50 px-3 py-3 text-sm font-medium text-emerald-800 transition hover:bg-emerald-100 dark:border-emerald-900/70 dark:bg-emerald-950/40 dark:text-emerald-200`,children:[(0,U.jsx)(WN,{className:`h-4 w-4`}),`原生 TUI`]}):null,y?(0,U.jsxs)(`a`,{href:y.href,target:`_blank`,rel:`noreferrer`,title:y.title,onClick:()=>g(!1),className:`inline-flex items-center gap-2 rounded-xl border border-slate-200 bg-slate-50 px-3 py-3 text-sm font-medium text-slate-700 transition hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-slate-700`,children:[(0,U.jsx)(gN,{className:`h-4 w-4`}),y.label]}):null,ee?(0,U.jsx)(`div`,{className:`rounded-2xl border border-slate-200 bg-slate-50 px-3 py-3 text-sm leading-6 text-slate-600 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-300`,children:`当前运行时对话在原生管理台中进行;这里保留管理入口和 Workspace 文件操作。`}):(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(`div`,{className:`space-y-2`,children:[(0,U.jsx)(`div`,{className:`text-xs font-medium uppercase tracking-[0.12em] text-slate-400 dark:text-slate-500`,children:`模型`}),(0,U.jsx)(rY,{availableModels:o,selectedModel:s,onSelectModel:c,selectedModelLabel:l,modelCatalogLoaded:u,modelSource:d,thinkingEnabled:f,thinkingMode:p,onSelectThinkingMode:m,compact:!0})]}),(0,U.jsxs)(`div`,{className:`space-y-2`,children:[(0,U.jsx)(`div`,{className:`text-xs font-medium uppercase tracking-[0.12em] text-slate-400 dark:text-slate-500`,children:`当前会话`}),(0,U.jsx)(`div`,{className:`rounded-2xl border border-slate-200 bg-slate-50 px-3 py-3 text-sm text-slate-600 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-300`,children:t?(0,U.jsx)(`span`,{className:`break-all font-mono`,children:t}):`新对话尚未创建会话 ID`})]})]})]})]})}):null,x&&te?(0,U.jsx)(b.Suspense,{fallback:null,children:(0,U.jsx)(nY,{capability:x,open:te,sessionId:t,onClose:()=>S(!1)})}):null]})}var aY=(0,b.lazy)(()=>J(()=>import(`./NativeTerminalPanel-Czpx2MSS.js`).then(e=>({default:e.NativeTerminalPanel})),__vite__mapDeps([5,6]),import.meta.url));function oY({productLabel:e=`原生运行时`,nativeManagementLink:t,nativeTerminal:n,workspaceEnabled:r,onOpenWorkspace:i}){let a=!!n?.Enabled,[o,s]=(0,b.useState)(!1);return(0,U.jsxs)(`section`,{className:`flex min-h-0 flex-1 overflow-y-auto bg-[radial-gradient(circle_at_top_left,rgba(14,165,233,0.12),transparent_34%),linear-gradient(135deg,#f8fafc_0%,#ffffff_48%,#f1f5f9_100%)] px-4 py-8 dark:bg-[radial-gradient(circle_at_top_left,rgba(14,165,233,0.16),transparent_34%),linear-gradient(135deg,#020617_0%,#0f172a_52%,#111827_100%)] sm:px-8`,children:[(0,U.jsx)(`div`,{className:`mx-auto flex w-full max-w-5xl flex-col justify-center`,children:(0,U.jsxs)(`div`,{className:`overflow-hidden rounded-[2rem] border border-slate-200/80 bg-white/90 shadow-xl shadow-slate-200/60 backdrop-blur dark:border-slate-800 dark:bg-slate-900/85 dark:shadow-black/30`,children:[(0,U.jsxs)(`div`,{className:`border-b border-slate-200/80 bg-slate-50/80 px-6 py-5 dark:border-slate-800 dark:bg-slate-950/40 sm:px-8`,children:[(0,U.jsxs)(`div`,{className:`inline-flex items-center gap-2 rounded-full border border-sky-200 bg-sky-50 px-3 py-1 text-xs font-medium text-sky-700 dark:border-sky-900/60 dark:bg-sky-950/50 dark:text-sky-300`,children:[(0,U.jsx)(HN,{className:`h-3.5 w-3.5`}),e,` native runtime`]}),(0,U.jsx)(`h1`,{className:`mt-5 text-2xl font-semibold tracking-tight text-slate-950 dark:text-slate-50 sm:text-3xl`,children:`对话请使用原生管理台`}),(0,U.jsx)(`p`,{className:`mt-3 max-w-2xl text-sm leading-6 text-slate-600 dark:text-slate-300 sm:text-base`,children:`当前运行时的对话状态由原生管理台承载。AgentEngine Hosted UI 在这里保留统一入口和 Workspace 文件管理,不重复实现运行时内部已有的复杂对话状态机。`})]}),(0,U.jsxs)(`div`,{className:`grid gap-4 p-6 md:grid-cols-3 sm:p-8`,children:[(0,U.jsxs)(`div`,{className:`rounded-3xl border border-slate-200 bg-white p-5 dark:border-slate-800 dark:bg-slate-900`,children:[(0,U.jsx)(`div`,{className:`flex h-11 w-11 items-center justify-center rounded-2xl bg-slate-950 text-white dark:bg-slate-100 dark:text-slate-950`,children:(0,U.jsx)(ON,{className:`h-5 w-5`})}),(0,U.jsx)(`h2`,{className:`mt-4 text-base font-semibold text-slate-950 dark:text-slate-50`,children:`原生管理台`}),(0,U.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600 dark:text-slate-300`,children:`使用原生管理台处理对话、工具卡片、思考流、审批、中断和运行时历史,避免跨状态机不一致。`}),t?(0,U.jsxs)(`a`,{href:t.href,target:`_blank`,rel:`noreferrer`,title:t.title,className:`mt-5 inline-flex items-center gap-2 rounded-2xl bg-slate-950 px-4 py-2.5 text-sm font-medium text-white transition hover:bg-slate-800 dark:bg-slate-100 dark:text-slate-950 dark:hover:bg-white`,children:[(0,U.jsx)(gN,{className:`h-4 w-4`}),`打开`,t.label]}):(0,U.jsx)(`div`,{className:`mt-5 rounded-2xl border border-amber-200 bg-amber-50 px-4 py-3 text-sm leading-6 text-amber-800 dark:border-amber-900/60 dark:bg-amber-950/30 dark:text-amber-200`,children:`当前访问模式不开放原生管理入口。需要完整对话体验时,请使用 owner/private 链接或 CLI。`})]}),(0,U.jsxs)(`div`,{className:`rounded-3xl border border-slate-200 bg-white p-5 dark:border-slate-800 dark:bg-slate-900`,children:[(0,U.jsx)(`div`,{className:`flex h-11 w-11 items-center justify-center rounded-2xl bg-sky-100 text-sky-700 dark:bg-sky-950 dark:text-sky-300`,children:(0,U.jsx)(xN,{className:`h-5 w-5`})}),(0,U.jsx)(`h2`,{className:`mt-4 text-base font-semibold text-slate-950 dark:text-slate-50`,children:`Workspace 文件管理`}),(0,U.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600 dark:text-slate-300`,children:`文件浏览、上传、预览仍由 Hosted UI 提供,和原生管理台组合使用覆盖对话与工作区。`}),r?(0,U.jsxs)(`button`,{type:`button`,onClick:i,className:`mt-5 inline-flex items-center gap-2 rounded-2xl border border-slate-200 bg-slate-50 px-4 py-2.5 text-sm font-medium text-slate-800 transition hover:bg-slate-100 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-100 dark:hover:bg-slate-700`,children:[(0,U.jsx)(xN,{className:`h-4 w-4`}),`打开 Workspace`]}):(0,U.jsx)(`div`,{className:`mt-5 rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm leading-6 text-slate-500 dark:border-slate-800 dark:bg-slate-950/40 dark:text-slate-400`,children:`当前链接未开放 Workspace 文件管理。Owner 或 private 链接可使用该能力。`})]}),(0,U.jsxs)(`div`,{className:`rounded-3xl border border-slate-200 bg-white p-5 dark:border-slate-800 dark:bg-slate-900`,children:[(0,U.jsx)(`div`,{className:`flex h-11 w-11 items-center justify-center rounded-2xl bg-emerald-100 text-emerald-700 dark:bg-emerald-950 dark:text-emerald-300`,children:(0,U.jsx)(WN,{className:`h-5 w-5`})}),(0,U.jsx)(`h2`,{className:`mt-4 text-base font-semibold text-slate-950 dark:text-slate-50`,children:`原生 TUI`}),(0,U.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600 dark:text-slate-300`,children:`如果运行时暴露安全的 ks-terminal.v1 通道,可以在这里进入原生终端 UI;share 链接不会开放该入口。`}),a?(0,U.jsxs)(`button`,{type:`button`,onClick:()=>s(!0),className:`mt-5 inline-flex items-center gap-2 rounded-2xl border border-emerald-200 bg-emerald-50 px-4 py-2.5 text-sm font-medium text-emerald-800 transition hover:bg-emerald-100 dark:border-emerald-900/70 dark:bg-emerald-950/40 dark:text-emerald-200`,children:[(0,U.jsx)(WN,{className:`h-4 w-4`}),`打开 TUI`]}):(0,U.jsx)(`div`,{className:`mt-5 rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm leading-6 text-slate-500 dark:border-slate-800 dark:bg-slate-950/40 dark:text-slate-400`,children:`当前运行时未声明可用的浏览器 TUI 能力。`})]})]})]})}),n&&o?(0,U.jsx)(b.Suspense,{fallback:null,children:(0,U.jsx)(aY,{capability:n,open:o,onClose:()=>s(!1)})}):null]})}var sY=[],cY=[];(()=>{let e=`lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o`.split(`,`).map(e=>e?parseInt(e,36):1);for(let t=0,n=0;t>1;if(e=cY[r])t=r+1;else return!0;if(t==n)return!1}}function uY(e){return e>=127462&&e<=127487}var dY=8205;function fY(e,t,n=!0,r=!0){return(n?pY:mY)(e,t,r)}function pY(e,t,n){if(t==e.length)return t;t&&gY(e.charCodeAt(t))&&_Y(e.charCodeAt(t-1))&&t--;let r=hY(e,t);for(t+=vY(r);t=0&&uY(hY(e,r));)n++,r-=2;if(n%2==0)break;t+=2}else break}return t}function mY(e,t,n){for(;t>0;){let r=pY(e,t-2,n);if(r=56320&&e<57344}function _Y(e){return e>=55296&&e<56320}function vY(e){return e<65536?1:2}var yY=class e{lineAt(e){if(e<0||e>this.length)throw RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,n){[e,t]=kY(this,e,t);let r=[];return this.decompose(0,e,r,2),n.length&&n.decompose(0,n.length,r,3),this.decompose(t,this.length,r,1),xY.from(r,this.length-(t-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=kY(this,e,t);let n=[];return this.decompose(e,t,n,0),xY.from(n,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),r=new TY(this),i=new TY(e);for(let e=t,a=t;;){if(r.next(e),i.next(e),e=0,r.lineBreak!=i.lineBreak||r.done!=i.done||r.value!=i.value)return!1;if(a+=r.value.length,r.done||a>=n)return!0}}iter(e=1){return new TY(this,e)}iterRange(e,t=this.length){return new EY(this,e,t)}iterLines(e,t){let n;if(e==null)n=this.iter();else{t??=this.lines+1;let r=this.line(e).from;n=this.iterRange(r,Math.max(r,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new DY(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(t){if(t.length==0)throw RangeError(`A document must have at least one line`);return t.length==1&&!t[0]?e.empty:t.length<=32?new bY(t):xY.from(bY.split(t,[]))}},bY=class e extends yY{constructor(e,t=SY(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,n,r){for(let i=0;;i++){let a=this.text[i],o=r+a.length;if((t?n:o)>=e)return new OY(r,o,n,a);r=o+1,n++}}decompose(t,n,r,i){let a=t<=0&&n>=this.length?this:new e(wY(this.text,t,n),Math.min(n,this.length)-Math.max(0,t));if(i&1){let t=r.pop(),n=CY(a.text,t.text.slice(),0,a.length);if(n.length<=32)r.push(new e(n,t.length+a.length));else{let t=n.length>>1;r.push(new e(n.slice(0,t)),new e(n.slice(t)))}}else r.push(a)}replace(t,n,r){if(!(r instanceof e))return super.replace(t,n,r);[t,n]=kY(this,t,n);let i=CY(this.text,CY(r.text,wY(this.text,0,t)),n),a=this.length+r.length-(n-t);return i.length<=32?new e(i,a):xY.from(e.split(i,[]),a)}sliceString(e,t=this.length,n=` +`){[e,t]=kY(this,e,t);let r=``;for(let i=0,a=0;i<=t&&ae&&a&&(r+=n),ei&&(r+=o.slice(Math.max(0,e-i),t-i)),i=s+1}return r}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(t,n){let r=[],i=-1;for(let a of t)r.push(a),i+=a.length+1,r.length==32&&(n.push(new e(r,i)),r=[],i=-1);return i>-1&&n.push(new e(r,i)),n}},xY=class e extends yY{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let t of e)this.lines+=t.lines}lineInner(e,t,n,r){for(let i=0;;i++){let a=this.children[i],o=r+a.length,s=n+a.lines-1;if((t?s:o)>=e)return a.lineInner(e,t,n,r);r=o+1,n=s+1}}decompose(e,t,n,r){for(let i=0,a=0;a<=t&&i=a){let i=r&(a<=e|(s>=t?2:0));a>=e&&s<=t&&!i?n.push(o):o.decompose(e-a,t-a,n,i)}a=s+1}}replace(t,n,r){if([t,n]=kY(this,t,n),r.lines=a&&n<=s){let c=o.replace(t-a,n-a,r),l=this.lines-o.lines+c.lines;if(c.lines>4&&c.lines>l>>6){let a=this.children.slice();return a[i]=c,new e(a,this.length-(n-t)+r.length)}return super.replace(a,s,c)}a=s+1}return super.replace(t,n,r)}sliceString(e,t=this.length,n=` +`){[e,t]=kY(this,e,t);let r=``;for(let i=0,a=0;ie&&i&&(r+=n),ea&&(r+=o.sliceString(e-a,t-a,n)),a=s+1}return r}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(t,n){if(!(t instanceof e))return 0;let r=0,[i,a,o,s]=n>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;i+=n,a+=n){if(i==o||a==s)return r;let e=this.children[i],c=t.children[a];if(e!=c)return r+e.scanIdentical(c,n);r+=e.length+1}}static from(t,n=t.reduce((e,t)=>e+t.length+1,-1)){let r=0;for(let e of t)r+=e.lines;if(r<32){let e=[];for(let n of t)n.flatten(e);return new bY(e,n)}let i=Math.max(32,r>>5),a=i<<1,o=i>>1,s=[],c=0,l=-1,u=[];function d(t){let n;if(t.lines>a&&t instanceof e)for(let e of t.children)d(e);else t.lines>o&&(c>o||!c)?(f(),s.push(t)):t instanceof bY&&c&&(n=u[u.length-1])instanceof bY&&t.lines+n.lines<=32?(c+=t.lines,l+=t.length+1,u[u.length-1]=new bY(n.text.concat(t.text),n.length+1+t.length)):(c+t.lines>i&&f(),c+=t.lines,l+=t.length+1,u.push(t))}function f(){c!=0&&(s.push(u.length==1?u[0]:e.from(u,l)),l=-1,c=u.length=0)}for(let e of t)d(e);return f(),s.length==1?s[0]:new e(s,n)}};yY.empty=new bY([``],0);function SY(e){let t=-1;for(let n of e)t+=n.length+1;return t}function CY(e,t,n=0,r=1e9){for(let i=0,a=0,o=!0;a=n&&(c>r&&(s=s.slice(0,r-i)),i0?1:(e instanceof bY?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let n=this.nodes.length-1,r=this.nodes[n],i=this.offsets[n],a=i>>1,o=r instanceof bY?r.text.length:r.children.length;if(a==(t>0?o:0)){if(n==0)return this.done=!0,this.value=``,this;t>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop()}else if((i&1)==(t>0?0:1)){if(this.offsets[n]+=t,e==0)return this.lineBreak=!0,this.value=` +`,this;e--}else if(r instanceof bY){let i=r.text[a+(t<0?-1:0)];if(this.offsets[n]+=t,i.length>Math.max(0,e))return this.value=e==0?i:t>0?i.slice(e):i.slice(0,i.length-e),this;e-=i.length}else{let i=r.children[a+(t<0?-1:0)];e>i.length?(e-=i.length,this.offsets[n]+=t):(t<0&&this.offsets[n]--,this.nodes.push(i),this.offsets.push(t>0?1:(i instanceof bY?i.text.length:i.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},EY=class{constructor(e,t,n){this.value=``,this.done=!1,this.cursor=new TY(e,t>n?-1:1),this.pos=t>n?e.length:0,this.from=Math.min(t,n),this.to=Math.max(t,n)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value=``,this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let n=t<0?this.pos-this.from:this.to-this.pos;e>n&&(e=n),n-=e;let{value:r}=this.cursor.next(e);return this.pos+=(r.length+e)*t,this.value=r.length<=n?r:t<0?r.slice(r.length-n):r.slice(0,n),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=``}},DY=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value=``,this.done=!1}next(e=0){let{done:t,lineBreak:n,value:r}=this.inner.next(e);return t&&this.afterBreak?(this.value=``,this.afterBreak=!1):t?(this.done=!0,this.value=``):n?this.afterBreak?this.value=``:(this.afterBreak=!0,this.next()):(this.value=r,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<`u`&&(yY.prototype[Symbol.iterator]=function(){return this.iter()},TY.prototype[Symbol.iterator]=EY.prototype[Symbol.iterator]=DY.prototype[Symbol.iterator]=function(){return this});var OY=class{constructor(e,t,n,r){this.from=e,this.to=t,this.number=n,this.text=r}get length(){return this.to-this.from}};function kY(e,t,n){return t=Math.max(0,Math.min(e.length,t)),[t,Math.max(t,Math.min(e.length,n))]}function AY(e,t,n=!0,r=!0){return fY(e,t,n,r)}function jY(e){return e>=56320&&e<57344}function MY(e){return e>=55296&&e<56320}function NY(e,t){let n=e.charCodeAt(t);if(!MY(n)||t+1==e.length)return n;let r=e.charCodeAt(t+1);return jY(r)?(n-55296<<10)+(r-56320)+65536:n}function PY(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode((e>>10)+55296,(e&1023)+56320))}function FY(e){return e<65536?1:2}var IY=/\r\n?|\n/,LY=(function(e){return e[e.Simple=0]=`Simple`,e[e.TrackDel=1]=`TrackDel`,e[e.TrackBefore=2]=`TrackBefore`,e[e.TrackAfter=3]=`TrackAfter`,e})(LY||={}),RY=class e{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;te)return i+(e-r);i+=o}else{if(n!=LY.Simple&&c>=e&&(n==LY.TrackDel&&re||n==LY.TrackBefore&&re))return null;if(c>e||c==e&&t<0&&!o)return e==r||t<0?i:i+s;i+=s}r=c}if(e>r)throw RangeError(`Position ${e} is out of range for changeset of length ${r}`);return i}touchesRange(e,t=e){for(let n=0,r=0;n=0&&r<=t&&o>=e)return rt?`cover`:!0;r=o}return!1}toString(){let e=``;for(let t=0;t=0?`:`+r:``)}return e}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!=`number`))throw RangeError(`Invalid JSON representation of ChangeDesc`);return new e(t)}static create(t){return new e(t)}},zY=class e extends RY{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw RangeError(`Applying change set to a document with the wrong length`);return HY(this,(t,n,r,i,a)=>e=e.replace(r,r+(n-t),a),!1),e}mapDesc(e,t=!1){return UY(this,e,t,!0)}invert(t){let n=this.sections.slice(),r=[];for(let e=0,i=0;e=0){n[e]=o,n[e+1]=a;let s=e>>1;for(;r.length0&&VY(r,n,a.text),a.forward(e),o+=e}let c=t[e++];for(;o>1].toJSON()))}return e}static of(t,n,r){let i=[],a=[],o=0,s=null;function c(t=!1){if(!t&&!i.length)return;os||e<0||s>n)throw RangeError(`Invalid change range ${e} to ${s} (in doc of length ${n})`);let u=l?typeof l==`string`?yY.of(l.split(r||IY)):l:yY.empty,d=u.length;if(e==s&&d==0)return;eo&&BY(i,e-o,-1),BY(i,s-e,d),VY(a,i,u),o=s}}return l(t),c(!s),s}static empty(t){return new e(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw RangeError(`Invalid JSON representation of ChangeSet`);let n=[],r=[];for(let e=0;et&&typeof e!=`string`))throw RangeError(`Invalid JSON representation of ChangeSet`);else if(i.length==1)n.push(i[0],0);else{for(;r.length=0&&n<=0&&n==e[i+1]?e[i]+=t:i>=0&&t==0&&e[i]==0?e[i+1]+=n:r?(e[i]+=t,e[i+1]+=n):e.push(t,n)}function VY(e,t,n){if(n.length==0)return;let r=t.length-2>>1;if(r>1])),!(n||o==e.sections.length||e.sections[o+1]<0);)s=e.sections[o++],c=e.sections[o++];t(i,l,a,u,d),i=l,a=u}}}function UY(e,t,n,r=!1){let i=[],a=r?[]:null,o=new GY(e),s=new GY(t);for(let e=-1;;)if(o.done&&s.len||s.done&&o.len)throw Error(`Mismatched change set lengths`);else if(o.ins==-1&&s.ins==-1){let e=Math.min(o.len,s.len);BY(i,e,-1),o.forward(e),s.forward(e)}else if(s.ins>=0&&(o.ins<0||e==o.i||o.off==0&&(s.len=0&&e=0){let t=0,n=o.len;for(;n;)if(s.ins==-1){let e=Math.min(n,s.len);t+=e,n-=e,s.forward(e)}else if(s.ins==0&&s.lent||o.ins>=0&&o.len>t)&&(e||r.length>n),a.forward2(t),o.forward(t)}}var GY=class{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return t>=e.length?yY.empty:e[t]}textBit(e){let{inserted:t}=this.set,n=this.i-2>>1;return n>=t.length&&!e?yY.empty:t[n].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},KY=class e{constructor(e,t,n){this.from=e,this.to=t,this.flags=n}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(t,n=-1){let r,i;return this.empty?r=i=t.mapPos(this.from,n):(r=t.mapPos(this.from,1),i=t.mapPos(this.to,-1)),r==this.from&&i==this.to?this:new e(r,i,this.flags)}extend(e,t=e,n=0){if(e<=this.anchor&&t>=this.anchor)return Y.range(e,t,void 0,void 0,n);let r=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return Y.range(this.anchor,r,void 0,void 0,n)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!=`number`||typeof e.head!=`number`)throw RangeError(`Invalid JSON representation for SelectionRange`);return Y.range(e.anchor,e.head)}static create(t,n,r){return new e(t,n,r)}},Y=class e{constructor(e,t){this.ranges=e,this.mainIndex=t}map(t,n=-1){return t.empty?this:e.create(this.ranges.map(e=>e.map(t,n)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let n=0;ne.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!=`number`||t.main>=t.ranges.length)throw RangeError(`Invalid JSON representation for EditorSelection`);return new e(t.ranges.map(e=>KY.fromJSON(e)),t.main)}static single(t,n=t){return new e([e.range(t,n)],0)}static create(t,n=0){if(t.length==0)throw RangeError(`A selection needs at least one range`);for(let r=0,i=0;ie.from-t.from),n=t.indexOf(r);for(let r=1;ri.head?e.range(s,o):e.range(o,s))}}return new e(t,n)}};function qY(e,t){for(let n of e.ranges)if(n.to>t)throw RangeError(`Selection points outside of document`)}var JY=0,YY=class e{constructor(e,t,n,r,i){this.combine=e,this.compareInput=t,this.compare=n,this.isStatic=r,this.id=JY++,this.default=e([]),this.extensions=typeof i==`function`?i(this):i}get reader(){return this}static define(t={}){return new e(t.combine||(e=>e),t.compareInput||((e,t)=>e===t),t.compare||(t.combine?(e,t)=>e===t:XY),!!t.static,t.enables)}of(e){return new ZY([],this,0,e)}compute(e,t){if(this.isStatic)throw Error(`Can't compute a static facet`);return new ZY(e,this,1,t)}computeN(e,t){if(this.isStatic)throw Error(`Can't compute a static facet`);return new ZY(e,this,2,t)}from(e,t){return t||=e=>e,this.compute([e],n=>t(n.field(e)))}};function XY(e,t){return e==t||e.length==t.length&&e.every((e,n)=>e===t[n])}var ZY=class{constructor(e,t,n,r){this.dependencies=e,this.facet=t,this.type=n,this.value=r,this.id=JY++}dynamicSlot(e){let t=this.value,n=this.facet.compareInput,r=this.id,i=e[r]>>1,a=this.type==2,o=!1,s=!1,c=[];for(let t of this.dependencies)t==`doc`?o=!0:t==`selection`?s=!0:(e[t.id]??1)&1||c.push(e[t.id]);return{create(e){return e.values[i]=t(e),1},update(e,r){if(o&&r.docChanged||s&&(r.docChanged||r.selection)||$Y(e,c)){let r=t(e);if(a?!QY(r,e.values[i],n):!n(r,e.values[i]))return e.values[i]=r,1}return 0},reconfigure:(e,o)=>{let s,c=o.config.address[r];if(c!=null){let r=fX(o,c);if(this.dependencies.every(t=>t instanceof YY?o.facet(t)===e.facet(t):t instanceof nX?o.field(t,!1)==e.field(t,!1):!0)||(a?QY(s=t(e),r,n):n(s=t(e),r)))return e.values[i]=r,0}else s=t(e);return e.values[i]=s,1}}}};function QY(e,t,n){if(e.length!=t.length)return!1;for(let r=0;re[t.id]),i=n.map(e=>e.type),a=r.filter(e=>!(e&1)),o=e[t.id]>>1;function s(e){let n=[];for(let t=0;te===t),t);return t.provide&&(n.provides=t.provide(n)),n}create(e){return(e.facet(tX).find(e=>e.field==this)?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:e=>(e.values[t]=this.create(e),1),update:(e,n)=>{let r=e.values[t],i=this.updateF(r,n);return this.compareF(r,i)?0:(e.values[t]=i,1)},reconfigure:(e,n)=>{let r=e.facet(tX),i=n.facet(tX),a;return(a=r.find(e=>e.field==this))&&a!=i.find(e=>e.field==this)?(e.values[t]=a.create(e),1):n.config.address[this.id]==null?(e.values[t]=this.create(e),1):(e.values[t]=n.field(this),0)}}}init(e){return[this,tX.of({field:this,create:e})]}get extension(){return this}},rX={lowest:4,low:3,default:2,high:1,highest:0};function iX(e){return t=>new oX(t,e)}var aX={highest:iX(rX.highest),high:iX(rX.high),default:iX(rX.default),low:iX(rX.low),lowest:iX(rX.lowest)},oX=class{constructor(e,t){this.inner=e,this.prec=t}},sX=class e{of(e){return new cX(this,e)}reconfigure(t){return e.reconfigure.of({compartment:this,extension:t})}get(e){return e.config.compartments.get(this)}},cX=class{constructor(e,t){this.compartment=e,this.inner=t}},lX=class e{constructor(e,t,n,r,i,a){for(this.base=e,this.compartments=t,this.dynamicSlots=n,this.address=r,this.staticValues=i,this.facets=a,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,n,r){let i=[],a=Object.create(null),o=new Map;for(let e of uX(t,n,o))e instanceof nX?i.push(e):(a[e.facet.id]||(a[e.facet.id]=[])).push(e);let s=Object.create(null),c=[],l=[];for(let e of i)s[e.id]=l.length<<1,l.push(t=>e.slot(t));let u=r?.config.facets;for(let e in a){let t=a[e],n=t[0].facet,i=u&&u[e]||[];if(t.every(e=>e.type==0))if(s[n.id]=c.length<<1|1,XY(i,t))c.push(r.facet(n));else{let e=n.combine(t.map(e=>e.value));c.push(r&&n.compare(e,r.facet(n))?r.facet(n):e)}else{for(let e of t)e.type==0?(s[e.id]=c.length<<1|1,c.push(e.value)):(s[e.id]=l.length<<1,l.push(t=>e.dynamicSlot(t)));s[n.id]=l.length<<1,l.push(e=>eX(e,n,t))}}return new e(t,o,l.map(e=>e(s)),s,c,a)}};function uX(e,t,n){let r=[[],[],[],[],[]],i=new Map;function a(e,o){let s=i.get(e);if(s!=null){if(s<=o)return;let t=r[s].indexOf(e);t>-1&&r[s].splice(t,1),e instanceof cX&&n.delete(e.compartment)}if(i.set(e,o),Array.isArray(e))for(let t of e)a(t,o);else if(e instanceof cX){if(n.has(e.compartment))throw RangeError(`Duplicate use of compartment in extensions`);let r=t.get(e.compartment)||e.inner;n.set(e.compartment,r),a(r,o)}else if(e instanceof oX)a(e.inner,e.prec);else if(e instanceof nX)r[o].push(e),e.provides&&a(e.provides,o);else if(e instanceof ZY)r[o].push(e),e.facet.extensions&&a(e.facet.extensions,rX.default);else{let t=e.extension;if(!t)throw Error(`Unrecognized extension value in extension set (${e}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);a(t,o)}}return a(e,rX.default),r.reduce((e,t)=>e.concat(t))}function dX(e,t){if(t&1)return 2;let n=t>>1,r=e.status[n];if(r==4)throw Error(`Cyclic dependency between fields and/or facets`);if(r&2)return r;e.status[n]=4;let i=e.computeSlot(e,e.config.dynamicSlots[n]);return e.status[n]=2|i}function fX(e,t){return t&1?e.config.staticValues[t>>1]:e.values[t>>1]}var pX=YY.define(),mX=YY.define({combine:e=>e.some(e=>e),static:!0}),hX=YY.define({combine:e=>e.length?e[0]:void 0,static:!0}),gX=YY.define(),_X=YY.define(),vX=YY.define(),yX=YY.define({combine:e=>e.length?e[0]:!1}),bX=class{constructor(e,t){this.type=e,this.value=t}static define(){return new xX}},xX=class{of(e){return new bX(this,e)}},SX=class{constructor(e){this.map=e}of(e){return new CX(this,e)}},CX=class e{constructor(e,t){this.type=e,this.value=t}map(t){let n=this.type.map(this.value,t);return n===void 0?void 0:n==this.value?this:new e(this.type,n)}is(e){return this.type==e}static define(e={}){return new SX(e.map||(e=>e))}static mapEffects(e,t){if(!e.length)return e;let n=[];for(let r of e){let e=r.map(t);e&&n.push(e)}return n}};CX.reconfigure=CX.define(),CX.appendConfig=CX.define();var wX=class e{constructor(t,n,r,i,a,o){this.startState=t,this.changes=n,this.selection=r,this.effects=i,this.annotations=a,this.scrollIntoView=o,this._doc=null,this._state=null,r&&qY(r,n.newLength),a.some(t=>t.type==e.time)||(this.annotations=a.concat(e.time.of(Date.now())))}static create(t,n,r,i,a,o){return new e(t,n,r,i,a,o)}get newDoc(){return this._doc||=this.changes.apply(this.startState.doc)}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let n=this.annotation(e.userEvent);return!!(n&&(n==t||n.length>t.length&&n.slice(0,t.length)==t&&n[t.length]==`.`))}};wX.time=bX.define(),wX.userEvent=bX.define(),wX.addToHistory=bX.define(),wX.remote=bX.define();function TX(e,t){let n=[];for(let r=0,i=0;;){let a,o;if(r=e[r]))a=e[r++],o=e[r++];else if(i=0;n--){let i=r[n](e);e=i instanceof wX?i:Array.isArray(i)&&i.length==1&&i[0]instanceof wX?i[0]:OX(t,MX(i),!1)}return e}function AX(e){let t=e.startState,n=t.facet(vX),r=e;for(let i=n.length-1;i>=0;i--){let a=n[i](e);a&&Object.keys(a).length&&(r=EX(r,DX(t,a,e.changes.newLength),!0))}return r==e?e:wX.create(t,e.changes,e.selection,r.effects,r.annotations,r.scrollIntoView)}var jX=[];function MX(e){return e==null?jX:Array.isArray(e)?e:[e]}var NX=(function(e){return e[e.Word=0]=`Word`,e[e.Space=1]=`Space`,e[e.Other=2]=`Other`,e})(NX||={}),PX=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,FX;try{FX=RegExp(`[\\p{Alphabetic}\\p{Number}_]`,`u`)}catch{}function IX(e){if(FX)return FX.test(e);for(let t=0;t`€`&&(n.toUpperCase()!=n.toLowerCase()||PX.test(n)))return!0}return!1}function LX(e){return t=>{if(!/\S/.test(t))return NX.Space;if(IX(t))return NX.Word;for(let n=0;n-1)return NX.Word;return NX.Other}}var RX=class e{constructor(e,t,n,r,i,a){this.config=e,this.doc=t,this.selection=n,this.values=r,this.status=e.statusTemplate.slice(),this.computeSlot=i,a&&(a._state=this);for(let e=0;ei.set(t,e)),null),i.set(e.value.compartment,e.value.extension)):e.is(CX.reconfigure)?(n=null,r=e.value):e.is(CX.appendConfig)&&(n=null,r=MX(r).concat(e.value));let a;n?a=t.startState.values.slice():(n=lX.resolve(r,i,this),a=new e(n,this.doc,this.selection,n.dynamicSlots.map(()=>null),(e,t)=>t.reconfigure(e,this),null).values);let o=t.startState.facet(mX)?t.newSelection:t.newSelection.asSingle();new e(n,t.newDoc,o,a,(e,n)=>n.update(e,t),t)}replaceSelection(e){return typeof e==`string`&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:Y.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,n=e(t.ranges[0]),r=this.changes(n.changes),i=[n.range],a=MX(n.effects);for(let n=1;nn.spec.fromJSON(a,e)))}}return e.create({doc:t.doc,selection:Y.fromJSON(t.selection),extensions:n.extensions?i.concat([n.extensions]):i})}static create(t={}){let n=lX.resolve(t.extensions||[],new Map),r=t.doc instanceof yY?t.doc:yY.of((t.doc||``).split(n.staticFacet(e.lineSeparator)||IY)),i=t.selection?t.selection instanceof Y?t.selection:Y.single(t.selection.anchor,t.selection.head):Y.single(0);return qY(i,r.length),n.staticFacet(mX)||(i=i.asSingle()),new e(n,r,i,n.dynamicSlots.map(()=>null),(e,t)=>t.create(e),null)}get tabSize(){return this.facet(e.tabSize)}get lineBreak(){return this.facet(e.lineSeparator)||` +`}get readOnly(){return this.facet(yX)}phrase(t,...n){for(let n of this.facet(e.phrases))if(Object.prototype.hasOwnProperty.call(n,t)){t=n[t];break}return n.length&&(t=t.replace(/\$(\$|\d*)/g,(e,t)=>{if(t==`$`)return`$`;let r=+(t||1);return!r||r>n.length?e:n[r-1]})),t}languageDataAt(e,t,n=-1){let r=[];for(let i of this.facet(pX))for(let a of i(this,t,n))Object.prototype.hasOwnProperty.call(a,e)&&r.push(a[e]);return r}charCategorizer(e){let t=this.languageDataAt(`wordChars`,e);return LX(t.length?t[0]:``)}wordAt(e){let{text:t,from:n,length:r}=this.doc.lineAt(e),i=this.charCategorizer(e),a=e-n,o=e-n;for(;a>0;){let e=AY(t,a,!1);if(i(t.slice(e,a))!=NX.Word)break;a=e}for(;oe.length?e[0]:4}),RX.lineSeparator=hX,RX.readOnly=yX,RX.phrases=YY.define({compare(e,t){let n=Object.keys(e),r=Object.keys(t);return n.length==r.length&&n.every(n=>e[n]==t[n])}}),RX.languageData=pX,RX.changeFilter=gX,RX.transactionFilter=_X,RX.transactionExtender=vX,sX.reconfigure=CX.define();function zX(e,t,n={}){let r={};for(let t of e)for(let e of Object.keys(t)){let i=t[e],a=r[e];if(a===void 0)r[e]=i;else if(!(a===i||i===void 0))if(Object.hasOwnProperty.call(n,e))r[e]=n[e](a,i);else throw Error(`Config merge conflict for field `+e)}for(let e in t)r[e]===void 0&&(r[e]=t[e]);return r}var BX=class{eq(e){return this==e}range(e,t=e){return HX.create(e,t,this)}};BX.prototype.startSide=BX.prototype.endSide=0,BX.prototype.point=!1,BX.prototype.mapMode=LY.TrackDel;function VX(e,t){return e==t||e.constructor==t.constructor&&e.eq(t)}var HX=class e{constructor(e,t,n){this.from=e,this.to=t,this.value=n}static create(t,n,r){return new e(t,n,r)}};function UX(e,t){return e.from-t.from||e.value.startSide-t.value.startSide}var WX=class e{constructor(e,t,n,r){this.from=e,this.to=t,this.value=n,this.maxPoint=r}get length(){return this.to[this.to.length-1]}findIndex(e,t,n,r=0){let i=n?this.to:this.from;for(let a=r,o=i.length;;){if(a==o)return a;let r=a+o>>1,s=i[r]-e||(n?this.value[r].endSide:this.value[r].startSide)-t;if(r==a)return s>=0?a:o;s>=0?o=r:a=r+1}}between(e,t,n,r){for(let i=this.findIndex(t,-1e9,!0),a=this.findIndex(n,1e9,!1,i);if||d==f&&c.startSide>0&&c.endSide<=0)continue;(f-d||c.endSide-c.startSide)<0||(o<0&&(o=d),c.point&&(s=Math.max(s,f-d)),r.push(c),i.push(d-o),a.push(f-o))}return{mapped:r.length?new e(i,a,r,s):null,pos:o}}},GX=class e{constructor(e,t,n,r){this.chunkPos=e,this.chunk=t,this.nextLayer=n,this.maxPoint=r}static create(t,n,r,i){return new e(t,n,r,i)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(t){let{add:n=[],sort:r=!1,filterFrom:i=0,filterTo:a=this.length}=t,o=t.filter;if(n.length==0&&!o)return this;if(r&&(n=n.slice().sort(UX)),this.isEmpty)return n.length?e.of(n):this;let s=new YX(this,null,-1).goto(0),c=0,l=[],u=new qX;for(;s.value||c=0){let e=n[c++];u.addInner(e.from,e.to,e.value)||l.push(e)}else s.rangeIndex==1&&s.chunkIndexthis.chunkEnd(s.chunkIndex)||as.to||a=i&&e<=i+a.length&&a.between(i,e-i,t-i,n)===!1)return}this.nextLayer.between(e,t,n)}}iter(e=0){return XX.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return XX.from(e).goto(t)}static compare(e,t,n,r,i=-1){let a=e.filter(e=>e.maxPoint>0||!e.isEmpty&&e.maxPoint>=i),o=t.filter(e=>e.maxPoint>0||!e.isEmpty&&e.maxPoint>=i),s=JX(a,o,n),c=new QX(a,s,i),l=new QX(o,s,i);n.iterGaps((e,t,n)=>$X(c,e,l,t,n,r)),n.empty&&n.length==0&&$X(c,0,l,0,0,r)}static eq(e,t,n=0,r){r??=999999999;let i=e.filter(e=>!e.isEmpty&&t.indexOf(e)<0),a=t.filter(t=>!t.isEmpty&&e.indexOf(t)<0);if(i.length!=a.length)return!1;if(!i.length)return!0;let o=JX(i,a),s=new QX(i,o,0).goto(n),c=new QX(a,o,0).goto(n);for(;;){if(s.to!=c.to||!eZ(s.active,c.active)||s.point&&(!c.point||!VX(s.point,c.point)))return!1;if(s.to>r)return!0;s.next(),c.next()}}static spans(e,t,n,r,i=-1){let a=new QX(e,null,i).goto(t),o=t,s=a.openStart;for(;;){let e=Math.min(a.to,n);if(a.point){let n=a.activeForPoint(a.to),i=a.pointFromo&&(r.span(o,e,a.active,s),s=a.openEnd(e));if(a.to>n)return s+(a.point&&a.to>n?1:0);o=a.to,a.next()}}static of(e,t=!1){let n=new qX;for(let r of e instanceof HX?[e]:t?KX(e):e)n.add(r.from,r.to,r.value);return n.finish()}static join(t){if(!t.length)return e.empty;let n=t[t.length-1];for(let r=t.length-2;r>=0;r--)for(let i=t[r];i!=e.empty;i=i.nextLayer)n=new e(i.chunkPos,i.chunk,n,Math.max(i.maxPoint,n.maxPoint));return n}};GX.empty=new GX([],[],null,-1);function KX(e){if(e.length>1)for(let t=e[0],n=1;n0)return e.slice().sort(UX);t=r}return e}GX.empty.nextLayer=GX.empty;var qX=class e{finishChunk(e){this.chunks.push(new WX(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(t,n,r){this.addInner(t,n,r)||(this.nextLayer||=new e).add(t,n,r)}addInner(e,t,n){let r=e-this.lastTo||n.startSide-this.last.endSide;if(r<=0&&(e-this.lastFrom||n.startSide-this.last.startSide)<0)throw Error("Ranges must be added sorted by `from` position and `startSide`");return r<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=n,this.lastFrom=e,this.lastTo=t,this.value.push(n),n.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let n=t.value.length-1;return this.last=t.value[n],this.lastFrom=t.from[n]+e,this.lastTo=t.to[n]+e,!0}finish(){return this.finishInner(GX.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=GX.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}};function JX(e,t,n){let r=new Map;for(let t of e)for(let e=0;e=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=r&&i.push(new YX(a,n,r,e));return i.length==1?i[0]:new e(i)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let n of this.heap)n.goto(e,t);for(let e=this.heap.length>>1;e>=0;e--)ZX(this.heap,e);return this.next(),this}forward(e,t){for(let n of this.heap)n.forward(e,t);for(let e=this.heap.length>>1;e>=0;e--)ZX(this.heap,e);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),ZX(this.heap,0)}}};function ZX(e,t){for(let n=e[t];;){let r=(t<<1)+1;if(r>=e.length)break;let i=e[r];if(r+1=0&&(i=e[r+1],r++),n.compare(i)<0)break;e[r]=n,e[t]=i,t=r}}var QX=class{constructor(e,t,n){this.minPoint=n,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=XX.from(e,t,n)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){tZ(this.active,e),tZ(this.activeTo,e),tZ(this.activeRank,e),this.minActive=rZ(this.active,this.activeTo)}addActive(e){let t=0,{value:n,to:r,rank:i}=this.cursor;for(;t0;)t++;nZ(this.active,t,n),nZ(this.activeTo,t,r),nZ(this.activeRank,t,i),e&&nZ(e,t,this.cursor.from),this.minActive=rZ(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let n=this.openStart<0?[]:null;for(;;){let r=this.minActive;if(r>-1&&(this.activeTo[r]-this.cursor.from||this.active[r].endSide-this.cursor.startSide)<0){if(this.activeTo[r]>e){this.to=this.activeTo[r],this.endSide=this.active[r].endSide;break}this.removeActive(r),n&&tZ(n,r)}else if(!this.cursor.value){this.to=this.endSide=1e9;break}else if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let e=this.cursor.value;if(!e.point)this.addActive(n),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from=0&&n[t]=0&&!(this.activeRank[n]e||this.activeTo[n]==e&&this.active[n].endSide>=this.point.endSide)&&t.push(this.active[n]);return t.reverse()}openEnd(e){let t=0;for(let n=this.activeTo.length-1;n>=0&&this.activeTo[n]>e;n--)t++;return t}};function $X(e,t,n,r,i,a){e.goto(t),n.goto(r);let o=r+i,s=r,c=r-t,l=!!a.boundChange;for(let t=!1;;){let r=e.to+c-n.to,i=r||e.endSide-n.endSide,u=i<0?e.to+c:n.to,d=Math.min(u,o);if(e.point||n.point?(e.point&&n.point&&VX(e.point,n.point)&&eZ(e.activeForPoint(e.to),n.activeForPoint(n.to))||a.comparePoint(s,d,e.point,n.point),t=!1):(t&&a.boundChange(s),d>s&&!eZ(e.active,n.active)&&a.compareRange(s,d,e.active,n.active),l&&do)break;s=u,i<=0&&e.next(),i>=0&&n.next()}}function eZ(e,t){if(e.length!=t.length)return!1;for(let n=0;n=t;n--)e[n+1]=e[n];e[t]=n}function rZ(e,t){let n=-1,r=1e9;for(let i=0;i=t)return r;if(r==e.length)break;i+=e.charCodeAt(r)==9?n-i%n:1,r=AY(e,r)}return r===!0?-1:e.length}for(var oZ=`ͼ`,sZ=typeof Symbol>`u`?`__ͼ`:Symbol.for(oZ),cZ=typeof Symbol>`u`?`__styleSet`+Math.floor(Math.random()*1e8):Symbol(`styleSet`),lZ=typeof globalThis<`u`?globalThis:typeof window<`u`?window:{},uZ=class{constructor(e,t){this.rules=[];let{finish:n}=t||{};function r(e){return/^@/.test(e)?[e]:e.split(/,\s*/)}function i(e,t,a,o){let s=[],c=/^@(\w+)\b/.exec(e[0]),l=c&&c[1]==`keyframes`;if(c&&t==null)return a.push(e[0]+`;`);for(let n in t){let o=t[n];if(/&/.test(n))i(n.split(/,\s*/).map(t=>e.map(e=>t.replace(/&/,e))).reduce((e,t)=>e.concat(t)),o,a);else if(o&&typeof o==`object`){if(!c)throw RangeError(`The value of a property (`+n+`) should be a primitive value.`);i(r(n),o,s,l)}else o!=null&&s.push(n.replace(/_.*/,``).replace(/[A-Z]/g,e=>`-`+e.toLowerCase())+`: `+o+`;`)}(s.length||l)&&a.push((n&&!c&&!o?e.map(n):e).join(`, `)+` {`+s.join(` `)+`}`)}for(let t in e)i(r(t),e[t],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let e=lZ[sZ]||1;return lZ[sZ]=e+1,oZ+e.toString(36)}static mount(e,t,n){let r=e[cZ],i=n&&n.nonce;r?i&&r.setNonce(i):r=new fZ(e,i),r.mount(Array.isArray(t)?t:[t],e)}},dZ=new Map,fZ=class{constructor(e,t){let n=e.ownerDocument||e,r=n.defaultView;if(!e.head&&e.adoptedStyleSheets&&r.CSSStyleSheet){let t=dZ.get(n);if(t)return e[cZ]=t;this.sheet=new r.CSSStyleSheet,dZ.set(n,this)}else this.styleTag=n.createElement(`style`),t&&this.styleTag.setAttribute(`nonce`,t);this.modules=[],e[cZ]=this}mount(e,t){let n=this.sheet,r=0,i=0;for(let t=0;t-1&&(this.modules.splice(o,1),i--,o=-1),o==-1){if(this.modules.splice(i++,0,a),n)for(let e=0;e`,191:`?`,192:`~`,219:`{`,220:`|`,221:`}`,222:`"`},hZ=typeof navigator<`u`&&/Mac/.test(navigator.platform),gZ=typeof navigator<`u`&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),_Z=0;_Z<10;_Z++)pZ[48+_Z]=pZ[96+_Z]=String(_Z);for(var _Z=1;_Z<=24;_Z++)pZ[_Z+111]=`F`+_Z;for(var _Z=65;_Z<=90;_Z++)pZ[_Z]=String.fromCharCode(_Z+32),mZ[_Z]=String.fromCharCode(_Z);for(var vZ in pZ)mZ.hasOwnProperty(vZ)||(mZ[vZ]=pZ[vZ]);function yZ(e){var t=!(hZ&&e.metaKey&&e.shiftKey&&!e.ctrlKey&&!e.altKey||gZ&&e.shiftKey&&e.key&&e.key.length==1||e.key==`Unidentified`)&&e.key||(e.shiftKey?mZ:pZ)[e.keyCode]||e.key||`Unidentified`;return t==`Esc`&&(t=`Escape`),t==`Del`&&(t=`Delete`),t==`Left`&&(t=`ArrowLeft`),t==`Up`&&(t=`ArrowUp`),t==`Right`&&(t=`ArrowRight`),t==`Down`&&(t=`ArrowDown`),t}function bZ(){var e=arguments[0];typeof e==`string`&&(e=document.createElement(e));var t=1,n=arguments[1];if(n&&typeof n==`object`&&n.nodeType==null&&!Array.isArray(n)){for(var r in n)if(Object.prototype.hasOwnProperty.call(n,r)){var i=n[r];typeof i==`string`?e.setAttribute(r,i):i!=null&&(e[r]=i)}t++}for(;t2),NZ={mac:MZ||/Mac/.test(SZ.platform),windows:/Win/.test(SZ.platform),linux:/Linux|X11/.test(SZ.platform),ie:DZ,ie_version:TZ?CZ.documentMode||6:EZ?+EZ[1]:wZ?+wZ[1]:0,gecko:OZ,gecko_version:OZ?+(/Firefox\/(\d+)/.exec(SZ.userAgent)||[0,0])[1]:0,chrome:!!kZ,chrome_version:kZ?+kZ[1]:0,ios:MZ,android:/Android\b/.test(SZ.userAgent),webkit:AZ,webkit_version:AZ?+(/\bAppleWebKit\/(\d+)/.exec(SZ.userAgent)||[0,0])[1]:0,safari:jZ,safari_version:jZ?+(/\bVersion\/(\d+(\.\d+)?)/.exec(SZ.userAgent)||[0,0])[1]:0,tabSize:CZ.documentElement.style.tabSize==null?`-moz-tab-size`:`tab-size`};function PZ(e,t){for(let n in e)n==`class`&&t.class?t.class+=` `+e.class:n==`style`&&t.style?t.style+=`;`+e.style:t[n]=e[n];return t}var FZ=Object.create(null);function IZ(e,t,n){if(e==t)return!0;e||=FZ,t||=FZ;let r=Object.keys(e),i=Object.keys(t);if(r.length-(n&&r.indexOf(n)>-1?1:0)!=i.length-(n&&i.indexOf(n)>-1?1:0))return!1;for(let a of r)if(a!=n&&(i.indexOf(a)==-1||e[a]!==t[a]))return!1;return!0}function LZ(e,t){for(let n=e.attributes.length-1;n>=0;n--){let r=e.attributes[n].name;t[r]??e.removeAttribute(r)}for(let n in t){let r=t[n];n==`style`?e.style.cssText=r:e.getAttribute(n)!=r&&e.setAttribute(n,r)}}function RZ(e,t,n){let r=!1;if(t)for(let i in t)n&&i in n||(r=!0,i==`style`?e.style.cssText=``:e.removeAttribute(i));if(n)for(let i in n)t&&t[i]==n[i]||(r=!0,i==`style`?e.style.cssText=n[i]:e.setAttribute(i,n[i]));return r}function zZ(e){let t=Object.create(null);for(let n=0;n0?3e8:-4e8:t>0?1e8:-1e8,new GZ(e,t,t,n,e.widget||null,!1)}static replace(e){let t=!!e.block,n,r;if(e.isBlockGap)n=-5e8,r=4e8;else{let{start:i,end:a}=KZ(e,t);n=(i?t?-3e8:-1:5e8)-1,r=(a?t?2e8:1:-6e8)+1}return new GZ(e,n,r,t,e.widget||null,!0)}static line(e){return new WZ(e)}static set(e,t=!1){return GX.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};HZ.none=GX.empty;var UZ=class e extends HZ{constructor(e){let{start:t,end:n}=KZ(e);super(t?-1:5e8,n?1:-6e8,null,e),this.tagName=e.tagName||`span`,this.attrs=e.class&&e.attributes?PZ(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||FZ}eq(t){return this==t||t instanceof e&&this.tagName==t.tagName&&IZ(this.attrs,t.attrs)}range(e,t=e){if(e>=t)throw RangeError(`Mark decorations may not be empty`);return super.range(e,t)}};UZ.prototype.point=!1;var WZ=class e extends HZ{constructor(e){super(-2e8,-2e8,null,e)}eq(t){return t instanceof e&&this.spec.class==t.spec.class&&IZ(this.spec.attributes,t.spec.attributes)}range(e,t=e){if(t!=e)throw RangeError(`Line decoration ranges must be zero-length`);return super.range(e,t)}};WZ.prototype.mapMode=LY.TrackBefore,WZ.prototype.point=!0;var GZ=class e extends HZ{constructor(e,t,n,r,i,a){super(t,n,i,e),this.block=r,this.isReplace=a,this.mapMode=r?t<=0?LY.TrackBefore:LY.TrackAfter:LY.TrackDel}get type(){return this.startSide==this.endSide?this.startSide<=0?VZ.WidgetBefore:VZ.WidgetAfter:VZ.WidgetRange}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof e&&qZ(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw RangeError(`Invalid range for replacement decoration`);if(!this.isReplace&&t!=e)throw RangeError(`Widget decorations can only have zero-length ranges`);return super.range(e,t)}};GZ.prototype.point=!0;function KZ(e,t=!1){let{inclusiveStart:n,inclusiveEnd:r}=e;return n??=e.inclusive,r??=e.inclusive,{start:n??t,end:r??t}}function qZ(e,t){return e==t||!!(e&&t&&e.compare(t))}function JZ(e,t,n,r=0){let i=n.length-1;i>=0&&n[i]+r>=e?n[i]=Math.max(n[i],t):n.push(e,t)}var YZ=class e extends BX{constructor(e,t,n){super(),this.tagName=e,this.attributes=t,this.rank=n}eq(t){return t==this||t instanceof e&&this.tagName==t.tagName&&IZ(this.attributes,t.attributes)}static create(t){return new e(t.tagName,t.attributes||FZ,t.rank==null?50:Math.max(0,Math.min(t.rank,100)))}static set(e,t=!1){return GX.of(e,t)}};YZ.prototype.startSide=YZ.prototype.endSide=-1;function XZ(e){let t;return t=e.nodeType==11?e.getSelection?e:e.ownerDocument:e,t.getSelection()}function ZZ(e,t){return t?e==t||e.contains(t.nodeType==1?t:t.parentNode):!1}function QZ(e,t){if(!t.anchorNode)return!1;try{return ZZ(e,t.anchorNode)}catch{return!1}}function $Z(e){return e.nodeType==3?mQ(e,0,e.nodeValue.length).getClientRects():e.nodeType==1?e.getClientRects():[]}function eQ(e,t,n,r){return n?rQ(e,t,n,r,-1)||rQ(e,t,n,r,1):!1}function tQ(e){for(var t=0;;t++)if(e=e.previousSibling,!e)return t}function nQ(e){return e.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(e.nodeName)}function rQ(e,t,n,r,i){for(;;){if(e==n&&t==r)return!0;if(t==(i<0?0:iQ(e))){if(e.nodeName==`DIV`)return!1;let n=e.parentNode;if(!n||n.nodeType!=1)return!1;t=tQ(e)+(i<0?0:1),e=n}else if(e.nodeType==1){if(e=e.childNodes[t+(i<0?-1:0)],e.nodeType==1&&e.contentEditable==`false`)return!1;t=i<0?iQ(e):0}else return!1}}function iQ(e){return e.nodeType==3?e.nodeValue.length:e.childNodes.length}function aQ(e,t){let n=t?e.left:e.right;return{left:n,right:n,top:e.top,bottom:e.bottom}}function oQ(e){let t=e.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:e.innerWidth,top:0,bottom:e.innerHeight}}function sQ(e,t){let n=t.width/e.offsetWidth,r=t.height/e.offsetHeight;return(n>.995&&n<1.005||!isFinite(n)||Math.abs(t.width-e.offsetWidth)<1)&&(n=1),(r>.995&&r<1.005||!isFinite(r)||Math.abs(t.height-e.offsetHeight)<1)&&(r=1),{scaleX:n,scaleY:r}}function cQ(e,t,n,r,i,a,o,s){let c=e.ownerDocument,l=c.defaultView||window;for(let u=e,d=!1;u&&!d;)if(u.nodeType==1){let e,f=u==c.body,p=1,m=1;if(f)e=oQ(l);else{if(/^(fixed|sticky)$/.test(getComputedStyle(u).position)&&(d=!0),u.scrollHeight<=u.clientHeight&&u.scrollWidth<=u.clientWidth){u=u.assignedSlot||u.parentNode;continue}let t=u.getBoundingClientRect();({scaleX:p,scaleY:m}=sQ(u,t)),e={left:t.left,right:t.left+u.clientWidth*p,top:t.top,bottom:t.top+u.clientHeight*m}}let h=0,g=0;if(i==`nearest`)t.top0&&t.bottom>e.bottom+g&&(g=t.bottom-e.bottom+o)):t.bottom>e.bottom-o&&(g=t.bottom-e.bottom+o,n<0&&t.top-g0&&t.right>e.right+h&&(h=t.right-e.right+a)):t.right>e.right-a&&(h=t.right-e.right+a,n<0&&t.lefte.bottom||t.lefte.right)&&(t={left:Math.max(t.left,e.left),right:Math.min(t.right,e.right),top:Math.max(t.top,e.top),bottom:Math.min(t.bottom,e.bottom)}),u=u.assignedSlot||u.parentNode}else if(u.nodeType==11)u=u.host;else break}function lQ(e,t=!0){let n=e.ownerDocument,r=null,i=null;for(let a=e.parentNode;a&&!(a==n.body||(!t||r)&&i);)if(a.nodeType==1)!i&&a.scrollHeight>a.clientHeight&&(i=a),t&&!r&&a.scrollWidth>a.clientWidth&&(r=a),a=a.assignedSlot||a.parentNode;else if(a.nodeType==11)a=a.host;else break;return{x:r,y:i}}var uQ=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:n}=e;this.set(t,Math.min(e.anchorOffset,t?iQ(t):0),n,Math.min(e.focusOffset,n?iQ(n):0))}set(e,t,n,r){this.anchorNode=e,this.anchorOffset=t,this.focusNode=n,this.focusOffset=r}},dQ=null;NZ.safari&&NZ.safari_version>=26&&(dQ=!1);function fQ(e){if(e.setActive)return e.setActive();if(dQ)return e.focus(dQ);let t=[];for(let n=e;n&&(t.push(n,n.scrollTop,n.scrollLeft),n!=n.ownerDocument);n=n.parentNode);if(e.focus(dQ==null?{get preventScroll(){return dQ={preventScroll:!0},!0}}:void 0),!dQ){dQ=!1;for(let e=0;eMath.max(0,e.document.documentElement.scrollHeight-e.innerHeight-4):e.scrollTop>Math.max(1,e.scrollHeight-e.clientHeight-4)}function yQ(e,t){for(let n=e,r=t;;)if(n.nodeType==3&&r>0)return{node:n,offset:r};else if(n.nodeType==1&&r>0){if(n.contentEditable==`false`)return null;n=n.childNodes[r-1],r=iQ(n)}else if(n.parentNode&&!nQ(n))r=tQ(n),n=n.parentNode;else return null}function bQ(e,t){for(let n=e,r=t;;)if(n.nodeType==3&&r=t){if(o.level==n)return a;(i<0||(r==0?e[i].level>o.level:r<0?o.fromt))&&(i=a)}}if(i<0)throw RangeError(`Index out of range`);return i}};function NQ(e,t){if(e.length!=t.length)return!1;for(let n=0;n=0;e-=3)if(kQ[e+1]==-r){let n=kQ[e+2],r=n&2?i:n&4?n&1?a:i:0;r&&(PQ[t]=PQ[kQ[e]]=r),s=e;break}}else if(kQ.length==189)break;else kQ[s++]=t,kQ[s++]=n,kQ[s++]=c;else if((o=PQ[t])==2||o==1){let e=o==i;c=+!e;for(let t=s-3;t>=0;t-=3){let n=kQ[t+2];if(n&2)break;if(e)kQ[t+2]|=2;else{if(n&4)break;kQ[t+2]|=4}}}}}function LQ(e,t,n,r){for(let i=0,a=r;i<=n.length;i++){let o=i?n[i-1].to:e,s=ic;)t==a&&(t=n[--r].from,a=r?n[r-1].to:e),PQ[--t]=u;c=o}else a=o,c++}}}function RQ(e,t,n,r,i,a,o){let s=r%2?2:1;if(r%2==i%2)for(let c=t,l=0;cc&&o.push(new MQ(c,m.from,f)),zQ(e,m.direction==CQ==!(f%2)?r:r+1,i,m.inner,m.from,m.to,o),c=m.to),p=m.to}else if(p==n||(t?PQ[p]!=s:PQ[p]==s))break;else p++;d?RQ(e,c,p,r+1,i,d,o):ct;){let n=!0,u=!1;if(!l||c>a[l-1].to){let e=PQ[c-1];e!=s&&(n=!1,u=e==16)}let d=!n&&s==1?[]:null,f=n?r:r+1,p=c;run:for(;;)if(l&&p==a[l-1].to){if(u)break run;let m=a[--l];if(!n)for(let e=m.from,n=l;;){if(e==t)break run;if(n&&a[n-1].to==e)e=a[--n].from;else if(PQ[e-1]==s)break run;else break}d?d.push(m):(m.toPQ.length;)PQ[PQ.length]=256;let r=[],i=t==CQ?0:1;return zQ(e,i,i,n,0,e.length,r),r}function VQ(e){return[new MQ(0,e,0)]}var HQ=``;function UQ(e,t,n,r,i){let a=r.head-e.from,o=MQ.find(t,a,r.bidiLevel??-1,r.assoc),s=t[o],c=s.side(i,n);if(a==c){let e=o+=i?1:-1;if(e<0||e>=t.length)return null;s=t[o=e],a=s.side(!i,n),c=s.side(i,n)}let l=AY(e.text,a,s.forward(i,n));(ls.to)&&(l=c),HQ=e.text.slice(Math.min(a,l),Math.max(a,l));let u=o==(i?t.length-1:0)?null:t[o+(i?1:-1)];return u&&l==c&&u.level+ +!ie.some(e=>e)}),t$=YY.define({combine:e=>e.some(e=>e)}),n$=YY.define(),r$=class e{constructor(e,t,n,r,i,a=!1){this.range=e,this.y=t,this.x=n,this.yMargin=r,this.xMargin=i,this.isSnapshot=a}map(t){return t.empty?this:new e(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new e(Y.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},i$=CX.define({map:(e,t)=>e.map(t)}),a$=CX.define();function o$(e,t,n){let r=e.facet(JQ);r.length?r[0](t):window.onerror&&window.onerror(String(t),n,void 0,void 0,t)||(n?console.error(n+`:`,t):console.error(t))}var s$=YY.define({combine:e=>e.length?e[0]:!0}),c$=0,l$=YY.define({combine(e){return e.filter((t,n)=>{for(let r=0;r{let t=[];return o&&t.push(m$.of(t=>{let n=t.plugin(e);return n?o(n):HZ.none})),a&&t.push(a(e)),t})}static fromClass(t,n){return e.define((e,n)=>new t(e,n),n)}},d$=class{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(!this.value){if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(t){o$(e.state,t,`CodeMirror plugin crashed`),this.deactivate()}}else if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(t){if(o$(e.state,t,`CodeMirror plugin crashed`),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}return this}destroy(e){if(this.value?.destroy)try{this.value.destroy()}catch(t){o$(e.state,t,`CodeMirror plugin crashed`)}}deactivate(){this.spec=this.value=null}},f$=YY.define(),p$=YY.define(),m$=YY.define(),h$=YY.define(),g$=YY.define(),_$=YY.define(),v$=YY.define();function y$(e,t){let n=e.state.facet(v$);if(!n.length)return n;let r=n.map(t=>t instanceof Function?t(e):t),i=[];return GX.spans(r,t.from,t.to,{point(){},span(e,n,r,a){let o=e-t.from,s=n-t.from,c=i;for(let e=r.length-1;e>=0;e--,a--){let n=r[e].spec.bidiIsolate,i;if(n??=WQ(t.text,o,s),a>0&&c.length&&(i=c[c.length-1]).to==o&&i.direction==n)i.to=s,c=i.inner;else{let e={from:o,to:s,direction:n,inner:[]};c.push(e),c=e.inner}}}}),i}var b$=YY.define();function x$(e){let t=0,n=0,r=0,i=0;for(let a of e.state.facet(b$)){let o=a(e);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(n=Math.max(n,o.right)),o.top!=null&&(r=Math.max(r,o.top)),o.bottom!=null&&(i=Math.max(i,o.bottom)))}return{left:t,right:n,top:r,bottom:i}}var S$=YY.define(),C$=class e{constructor(e,t,n,r){this.fromA=e,this.toA=t,this.fromB=n,this.toB=r}join(t){return new e(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(e){let t=e.length,n=this;for(;t>0;t--){let r=e[t-1];if(!(r.fromA>n.toA)){if(r.toAr.push(new C$(e,t,n,i))),this.changedRanges=r}static create(t,n,r){return new e(t,n,r)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},T$=[],E$=class{constructor(e,t,n=0){this.dom=e,this.length=t,this.flags=n,this.parent=null,e.cmTile=this}get breakAfter(){return this.flags&1}get children(){return T$}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(e){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&LZ(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:``)+(this.breakAfter?`#`:``)}destroy(){this.parent=null}setDOM(e){this.dom=e,e.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e,t=this.posAtStart){let n=t;for(let t of this.children){if(t==e)return n;n+=t.length+t.breakAfter}throw RangeError(`Invalid child in posBefore`)}posAfter(e){return this.posBefore(e)+e.length}covers(e){return!0}coordsIn(e,t){return null}domPosFor(e,t){let n=tQ(this.dom),r=this.length?e>0:t>0;return new xQ(this.parent.dom,n+ +!!r,e==0||e==this.length)}markDirty(e){this.flags&=-3,e&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let e=this;e;e=e.parent)if(e instanceof k$)return e;return null}static get(e){return e.cmTile}},D$=class extends E${constructor(e){super(e,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(e){this.children.push(e),e.parent=this}sync(e){if(this.flags&2)return;super.sync(e);let t=this.dom,n=null,r,i=e?.node==t?e:null,a=0;for(let o of this.children){if(o.sync(e),a+=o.length+o.breakAfter,r=n?n.nextSibling:t.firstChild,i&&r!=o.dom&&(i.written=!0),o.dom.parentNode==t)for(;r&&r!=o.dom;)r=O$(r);else t.insertBefore(o.dom,r);n=o.dom}for(r=n?n.nextSibling:t.firstChild,i&&r&&(i.written=!0);r;)r=O$(r);this.length=a}};function O$(e){let t=e.nextSibling;return e.parentNode.removeChild(e),t}var k$=class extends D${constructor(e,t){super(t),this.view=e}owns(e){for(;e;e=e.parent)if(e==this)return!0;return!1}isBlock(){return!0}nearest(e){for(;;){if(!e)return null;let t=E$.get(e);if(t&&this.owns(t))return t;e=e.parentNode}}blockTiles(e){for(let t=[],n=this,r=0,i=0;;)if(r==n.children.length){if(!t.length)return;n=n.parent,n.breakAfter&&i++,r=t.pop()}else{let a=n.children[r++];if(a instanceof A$)t.push(r),n=a,r=0;else{let t=i+a.length,n=e(a,i);if(n!==void 0)return n;i=t+a.breakAfter}}}resolveBlock(e,t){let n,r=-1,i,a=-1;if(this.blockTiles((o,s)=>{let c=s+o.length;if(e>=s&&e<=c){if(o.isWidget()&&t>=-1&&t<=1){if(o.flags&32)return!0;o.flags&16&&(n=void 0)}(se||e==s&&(t>1?o.length:o.covers(-1)))&&(!i||!o.isWidget()&&i.isWidget())&&(i=o,a=e-s)}}),!n&&!i)throw Error(`No tile at position `+e);return n&&t<0||!i?{tile:n,offset:r}:{tile:i,offset:a}}},A$=class e extends D${constructor(e,t){super(e),this.wrapper=t}isBlock(){return!0}covers(e){return this.children.length?e<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,n){let r=new e(n||document.createElement(t.tagName),t);return n||(r.flags|=4),r}},j$=class e extends D${constructor(e,t){super(e),this.attrs=t}isLine(){return!0}static start(t,n,r){let i=new e(n||document.createElement(`div`),t);return(!n||!r)&&(i.flags|=4),i}get domAttrs(){return this.attrs}resolveInline(e,t,n){let r=null,i=-1,a=null,o=-1;function s(e,c){for(let l=0,u=0;l=c&&(d.isComposite()?s(d,c-u):(!a||a.isHidden&&(t>0||n&&N$(a,d)))&&(f>c||d.flags&32)?(a=d,o=c-u):(un&&(e=n);let r=e,i=e,a=0;e==0&&t<0||e==n&&t>=0?NZ.chrome||NZ.gecko||(e?(r--,a=1):i=0)?0:o.length-1];return NZ.safari&&!a&&s.width==0&&(s=Array.prototype.find.call(o,e=>e.width)||s),a?aQ(s,a<0):s||null}static of(t,n){let r=new e(n||document.createTextNode(t),t);return n||(r.flags|=2),r}},I$=class e extends E${constructor(e,t,n,r){super(e,t,r),this.widget=n}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(e){return this.flags&48?!1:(this.flags&(e<0?64:128))>0}coordsIn(e,t){return this.coordsInWidget(e,t,!1)}coordsInWidget(e,t,n){let r=this.widget.coordsAt(this.dom,e,t);if(r)return r;if(n)return aQ(this.dom.getBoundingClientRect(),this.length?e==0:t<=0);{let t=this.dom.getClientRects(),n=null;if(!t.length)return null;let r=this.flags&16?!0:this.flags&32?!1:e>0;for(let i=r?t.length-1:0;n=t[i],!(e>0?i==0:i==t.length-1||n.top0;)if(!r.isComposite())if(i==r.length)a=!!r.breakAfter,{tile:r,index:i}=o.pop(),i++;else if(e){let t=Math.min(e,r.length-i);n&&n.skip(r,i,i+t),e-=t,i+=t}else break;else if(a){if(!e)break;n&&n.break(),e--,a=!1}else if(i==r.children.length){if(!e&&!o.length)break;n&&n.leave(r),a=!!r.breakAfter,{tile:r,index:i}=o.pop(),i++}else{let s=r.children[i],c=s.breakAfter;(t>0?s.length<=e:s.length=0;e--){let n=t.marks[e],i=r.lastChild;if(i instanceof P$&&i.mark.eq(n.mark))i.dom!=n.dom&&i.setDOM(X$(n.dom)),r=i;else{if(this.cache.reused.get(n)){let e=E$.get(n.dom);e&&e.setDOM(X$(n.dom))}let e=P$.of(n.mark,n.dom);r.append(e),r=e}this.cache.reused.set(n,2)}let i=E$.get(e.text);i&&this.cache.reused.set(i,2);let a=new F$(e.text,e.text.nodeValue);a.flags|=8,this.pos=e.range.toB,r.append(a)}addInlineWidget(e,t,n){let r=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);r||this.flushBuffer();let i=this.ensureMarks(t,n);!r&&!(e.flags&16)&&i.append(this.getBuffer(1)),i.append(e),this.pos+=e.length,this.afterWidget=e}addMark(e,t,n){this.flushBuffer(),this.ensureMarks(t,n).append(e),this.pos+=e.length,this.afterWidget=null}addBlockWidget(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}continueWidget(e){let t=this.afterWidget||this.lastBlock;t.length+=e,this.pos+=e}addLineStart(e,t){e||=q$;let n=j$.start(e,t||this.cache.find(j$)?.dom,!!t);this.getBlockPos().append(this.lastBlock=this.curLine=n)}addLine(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(e){this.blockPosCovered()||this.addLineStart(e)}ensureLine(e){this.curLine||this.addLineStart(e)}ensureMarks(e,t){let n=this.curLine;for(let r=e.length-1;r>=0;r--){let i=e[r],a;if(t>0&&(a=n.lastChild)&&a instanceof P$&&a.mark.eq(i))n=a,t--;else{let e=P$.of(i,this.cache.find(P$,e=>e.mark.eq(i))?.dom);n.append(e),n=e,t=0}}return n}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!G$(this.curLine,!1)||e.dom.nodeName!=`BR`&&e.isWidget()&&!(NZ.ios&&G$(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(Q$,0,32)||new I$(Q$.toDOM(),0,Q$,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let e=this.wrappers.length-1;e>=0;e--)this.wrappers[e].to=this.pos){let t=e.rank*102+e.value.rank,n=new z$(e.from,e.to,e.value,t),r=this.wrappers.length;for(;r>0&&(this.wrappers[r-1].rank-n.rank||this.wrappers[r-1].to-n.to)<0;)r--;this.wrappers.splice(r,0,n)}this.wrapperPos=this.pos}getBlockPos(){this.updateBlockWrappers();let e=this.root;for(let t of this.wrappers){let n=e.lastChild;if(t.frome.wrapper.eq(t.wrapper))?.dom);e.append(n),e=n}}return e}blockPosCovered(){let e=this.lastBlock;return e!=null&&!e.breakAfter&&(!e.isWidget()||(e.flags&160)>0)}getBuffer(e){let t=2|(e<0?16:32),n=this.cache.find(L$,void 0,1);return n&&(n.flags=t),n||new L$(t)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},V$=class{constructor(e){this.skipCount=0,this.text=``,this.textOff=0,this.cursor=e.iter()}skip(e){this.textOff+e<=this.text.length?this.textOff+=e:(this.skipCount+=e-(this.text.length-this.textOff),this.text=``,this.textOff=0)}next(e){if(this.textOff==this.text.length){let{value:t,lineBreak:n,done:r}=this.cursor.next(this.skipCount);if(this.skipCount=0,r)throw Error(`Ran out of text content when drawing inline views`);this.text=t;let i=this.textOff=Math.min(e,t.length);return n?null:t.slice(0,i)}let t=Math.min(this.text.length,this.textOff+e),n=this.text.slice(this.textOff,t);return this.textOff=t,n}},H$=[I$,j$,F$,P$,L$,A$,k$];for(let e=0;e[]),this.index=H$.map(()=>0),this.reused=new Map}add(e){let t=e.constructor.bucket,n=this.buckets[t];n.length<6?n.push(e):n[this.index[t]=(this.index[t]+1)%6]=e}find(e,t,n=2){let r=e.bucket,i=this.buckets[r],a=this.index[r];for(let e=i.length-1;e>=0;e--){let o=(e+a)%i.length,s=i[o];if((!t||t(s))&&!this.reused.has(s))return i.splice(o,1),o{if(this.cache.add(e),e.isComposite())return!1},enter:e=>this.cache.add(e),leave:()=>{},break:()=>{}}}run(e,t){let n=t&&this.getCompositionContext(t.text);for(let r=0,i=0,a=0;;){let o=ar){let e=s-r;this.preserve(e,!a,!o),r=s,i+=e}if(!o)break;t&&o.fromA<=t.range.fromA&&o.toA>=t.range.toA?(this.forward(o.fromA,t.range.fromA,t.range.fromA{if(e.isWidget())if(this.openWidget)this.builder.continueWidget(n-t);else{let a=n>0||t{e.isLine()?this.builder.addLineStart(e.attrs,this.cache.maybeReuse(e)):(this.cache.add(e),e instanceof P$&&r.unshift(e.mark)),this.openWidget=!1},leave:e=>{e.isLine()?r.length&&=i=0:e instanceof P$&&(r.shift(),i=Math.min(i,r.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(e)}emit(e,t){let n=null,r=this.builder,i=0,a=GX.spans(this.decorations,e,t,{point:(e,t,a,o,s,c)=>{if(a instanceof GZ){if(this.disallowBlockEffectsFor[c]){if(a.block)throw RangeError(`Block decorations may not be specified via plugins`);if(t>this.view.state.doc.lineAt(e).to)throw RangeError(`Decorations that replace line breaks may not be specified via plugins`)}if(i=o.length,s>o.length)r.continueWidget(t-e);else{let i=a.widget||(a.block?Z$.block:Z$.inline),c=K$(a),l=this.cache.findWidget(i,t-e,c)||I$.of(i,this.view,t-e,c);a.block?(a.startSide>0&&r.addLineStartIfNotCovered(n),r.addBlockWidget(l)):(r.ensureLine(n),r.addInlineWidget(l,o,s))}n=null}else n=J$(n,a);t>e&&this.text.skip(t-e)},span:(e,t,i,a)=>{for(let o=e;oi,this.openMarks=a}forward(e,t,n=1){t-e<=10?this.old.advance(t-e,n,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(t-e-10,-1),this.old.advance(5,n,this.reuseWalker))}getCompositionContext(e){let t=[],n=null;for(let r=e.parentNode;;r=r.parentNode){let e=E$.get(r);if(r==this.view.contentDOM)break;e instanceof P$?t.push(e):e?.isLine()?n=e:e instanceof A$||(r.nodeName==`DIV`&&!n&&r!=this.view.contentDOM?n=new j$(r,q$):n||t.push(P$.of(new UZ({tagName:r.nodeName.toLowerCase(),attributes:zZ(r)}),r)))}return{line:n,marks:t}}};function G$(e,t){let n=e=>{for(let r of e.children)if((t?r.isText():r.length)||n(r))return!0;return!1};return n(e)}function K$(e){let t=e.isReplace?(e.startSide<0?64:0)|(e.endSide>0?128:0):e.startSide>0?32:16;return e.block&&(t|=256),t}var q$={class:`cm-line`};function J$(e,t){let n=t.spec.attributes,r=t.spec.class;return!n&&!r?e:(e||={class:`cm-line`},n&&PZ(n,e),r&&(e.class+=` `+r),e)}function Y$(e){let t=[];for(let n=e.parents.length;n>1;n--){let r=n==e.parents.length?e.tile:e.parents[n].tile;r instanceof P$&&t.push(r.mark)}return t}function X$(e){let t=E$.get(e);return t&&t.setDOM(e.cloneNode()),e}var Z$=class extends BZ{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};Z$.inline=new Z$(`span`),Z$.block=new Z$(`div`);var Q$=new class extends BZ{toDOM(){return document.createElement(`br`)}get isHidden(){return!0}get editable(){return!0}},$$=class{constructor(e){this.view=e,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=HZ.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new k$(e,e.contentDOM),this.updateInner([new C$(0,0,0,e.state.doc.length)],null)}update(e){let t=e.changedRanges;this.minWidth>0&&t.length&&(t.every(({fromA:e,toA:t})=>tthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let n=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(this.domChanged?.newSel?n=this.domChanged.newSel.head:!u1(e.changes,this.hasComposition)&&!e.selectionSet&&(n=e.state.selection.main.head));let r=n>-1?r1(this.view,e.changes,n):null;if(this.domChanged=null,this.hasComposition){let{from:n,to:r}=this.hasComposition;t=new C$(n,r,e.changes.mapPos(n,-1),e.changes.mapPos(r,1)).addToSet(t.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(NZ.ie||NZ.chrome)&&!r&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let i=this.decorations,a=this.blockWrappers;this.updateDeco();let o=o1(i,this.decorations,e.changes);o.length&&(t=C$.extendWithRanges(t,o));let s=c1(a,this.blockWrappers,e.changes);return s.length&&(t=C$.extendWithRanges(t,s)),r&&!t.some(e=>e.fromA<=r.range.fromA&&e.toA>=r.range.toA)&&(t=r.range.addToSet(t.slice())),this.tile.flags&2&&t.length==0?!1:(this.updateInner(t,r),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t){this.view.viewState.mustMeasureContent=!0;let{observer:n}=this.view;n.ignore(()=>{if(t||e.length){let n=this.tile,r=new W$(this.view,n,this.blockWrappers,this.decorations,this.dynamicDecorationMap);t&&E$.get(t.text)&&r.cache.reused.set(E$.get(t.text),2),this.tile=r.run(e,t),e1(n,r.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+`px`,this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+`px`:``;let r=NZ.chrome||NZ.ios?{node:n.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||n.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=``});let r=[];if(this.view.viewport.from||this.view.viewport.to-1)&&QZ(n,this.view.observer.selectionRange)&&!(r&&n.contains(r));if(!(i||t||a))return;let o=this.forceSelection;this.forceSelection=!1;let s=this.view.state.selection.main,c,l;if(s.empty?l=c=this.inlineDOMNearPos(s.anchor,s.assoc||1):(l=this.inlineDOMNearPos(s.head,s.head==s.from?1:-1),c=this.inlineDOMNearPos(s.anchor,s.anchor==s.from?1:-1)),NZ.gecko&&s.empty&&!this.hasComposition&&t1(c)){let e=document.createTextNode(``);this.view.observer.ignore(()=>c.node.insertBefore(e,c.node.childNodes[c.offset]||null)),c=l=new xQ(e,0),o=!0}let u=this.view.observer.selectionRange;(o||!u.focusNode||(!eQ(c.node,c.offset,u.anchorNode,u.anchorOffset)||!eQ(l.node,l.offset,u.focusNode,u.focusOffset))&&!this.suppressWidgetCursorChange(u,s))&&(this.view.observer.ignore(()=>{NZ.android&&NZ.chrome&&n.contains(u.focusNode)&&l1(u.focusNode,n)&&(n.blur(),n.focus({preventScroll:!0}));let e=XZ(this.view.root);if(e)if(s.empty){if(NZ.gecko){let e=i1(c.node,c.offset);if(e&&e!=3){let t=(e==1?yQ:bQ)(c.node,c.offset);t&&(c=new xQ(t.node,t.offset))}}e.collapse(c.node,c.offset),s.bidiLevel!=null&&e.caretBidiLevel!==void 0&&(e.caretBidiLevel=s.bidiLevel)}else if(e.extend){e.collapse(c.node,c.offset);try{e.extend(l.node,l.offset)}catch{}}else{let t=document.createRange();s.anchor>s.head&&([c,l]=[l,c]),t.setEnd(l.node,l.offset),t.setStart(c.node,c.offset),e.removeAllRanges(),e.addRange(t)}a&&this.view.root.activeElement==n&&(n.blur(),r&&r.focus())}),this.view.observer.setSelectionRange(c,l)),this.impreciseAnchor=c.precise?null:new xQ(u.anchorNode,u.anchorOffset),this.impreciseHead=l.precise?null:new xQ(u.focusNode,u.focusOffset)}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&eQ(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,n=XZ(e.root),{anchorNode:r,anchorOffset:i}=e.observer.selectionRange;if(!n||!t.empty||!t.assoc||!n.modify)return;let a=this.lineAt(t.head,t.assoc);if(!a)return;let o=a.posAtStart;if(t.head==o||t.head==o+a.length)return;let s=this.coordsAt(t.head,-1),c=this.coordsAt(t.head,1);if(!s||!c||s.bottom>c.top)return;let l=this.domAtPos(t.head+t.assoc,t.assoc);n.collapse(l.node,l.offset),n.modify(`move`,t.assoc<0?`forward`:`backward`,`lineboundary`),e.observer.readSelectionRange();let u=e.observer.selectionRange;e.docView.posFromDOM(u.anchorNode,u.anchorOffset)!=t.from&&n.collapse(r,i)}posFromDOM(e,t){let n=this.tile.nearest(e);if(!n)return this.tile.dom.compareDocumentPosition(e)&2?0:this.view.state.doc.length;let r=n.posAtStart;if(n.isComposite()){let i;if(e==n.dom)i=n.dom.childNodes[t];else{let r=iQ(e)==0?0:t==0?-1:1;for(;;){let t=e.parentNode;if(t==n.dom)break;r==0&&t.firstChild!=t.lastChild&&(r=e==t.firstChild?-1:1),e=t}i=r<0?e:e.nextSibling}if(i==n.dom.firstChild)return r;for(;i&&!E$.get(i);)i=i.nextSibling;if(!i)return r+n.length;for(let e=0,t=r;;e++){let r=n.children[e];if(r.dom==i)return t;t+=r.length+r.breakAfter}}else if(n.isText())return e==n.dom?r+t:r+(t?n.length:0);else return r}domAtPos(e,t){let{tile:n,offset:r}=this.tile.resolveBlock(e,t);return n.isWidget()?n.domPosFor(e,t):n.domIn(r,t)}inlineDOMNearPos(e,t){let n,r=-1,i=!1,a,o=-1,s=!1;return this.tile.blockTiles((t,c)=>{if(t.isWidget()){if(t.flags&32&&c>=e)return!0;t.flags&16&&(i=!0)}else{let l=c+t.length;if(c<=e&&(n=t,r=e-c,i=l=e&&!a&&(a=t,o=e-c,s=c>e),c>e&&a)return!0}}),!n&&!a?this.domAtPos(e,t):(i&&a?n=null:s&&n&&(a=null),n&&t<0||!a?n.domIn(r,t):a.domIn(o,t))}coordsAt(e,t){let{tile:n,offset:r}=this.tile.resolveBlock(e,t);return n.isWidget()?n.widget instanceof d1?null:n.coordsInWidget(r,t,!0):n.coordsIn(r,t)}lineAt(e,t){let{tile:n}=this.tile.resolveBlock(e,t);return n.isLine()?n:null}coordsForChar(e){let{tile:t,offset:n}=this.tile.resolveBlock(e,1);if(!t.isLine())return null;function r(e,t){if(e.isComposite())for(let n of e.children){if(n.length>=t){let e=r(n,t);if(e)return e}if(t-=n.length,t<0)break}else if(e.isText()&&tMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,o=-1,s=this.view.textDirection==SQ.LTR,c=0,l=(e,u,d)=>{for(let f=0;fr);f++){let r=e.children[f],p=u+r.length,m=r.dom.getBoundingClientRect(),{height:h}=m;if(d&&!f&&(c+=m.top-d.top),r instanceof A$)p>n&&l(r,u,m);else if(u>=n&&(c>0&&t.push(-c),t.push(h+c),c=0,a)){let e=r.dom.lastChild,t=e?$Z(e):[];if(t.length){let e=t[t.length-1],n=s?e.right-m.left:m.right-e.left;n>o&&(o=n,this.minWidth=i,this.minWidthFrom=u,this.minWidthTo=p)}}d&&f==e.children.length-1&&(c+=d.bottom-m.bottom),u=p+r.breakAfter}};return l(this.tile,0,null),t}textDirectionAt(e){let{tile:t}=this.tile.resolveBlock(e,1);return getComputedStyle(t.dom).direction==`rtl`?SQ.RTL:SQ.LTR}measureTextSize(){let e=this.tile.blockTiles(e=>{if(e.isLine()&&e.children.length&&e.length<=20){let t=0,n;for(let r of e.children){if(!r.isText()||/[^ -~]/.test(r.text))return;let e=$Z(r.dom);if(e.length!=1)return;t+=e[0].width,n=e[0].height}if(t)return{lineHeight:e.dom.getBoundingClientRect().height,charWidth:t/e.length,textHeight:n}}});if(e)return e;let t=document.createElement(`div`),n,r,i;return t.className=`cm-line`,t.style.width=`99999px`,t.style.position=`absolute`,t.textContent=`abc def ghi jkl mno pqr stu`,this.view.observer.ignore(()=>{this.tile.dom.appendChild(t);let e=$Z(t.firstChild)[0];n=t.getBoundingClientRect().height,r=e&&e.width?e.width/27:7,i=e&&e.height?e.height:n,t.remove()}),{lineHeight:n,charWidth:r,textHeight:i}}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let n=0,r=0;;r++){let i=r==t.viewports.length?null:t.viewports[r],a=i?i.from-1:this.view.state.doc.length;if(a>n){let r=(t.lineBlockAt(a).bottom-t.lineBlockAt(n).top)/this.view.scaleY;e.push(HZ.replace({widget:new d1(r),block:!0,inclusive:!0,isBlockGap:!0}).range(n,a))}if(!i)break;n=i.to+1}return HZ.set(e)}updateDeco(){let e=1,t=this.view.state.facet(m$).map(t=>(this.dynamicDecorationMap[e++]=typeof t==`function`)?t(this.view):t),n=!1,r=this.view.state.facet(g$).map((e,t)=>{let r=typeof e==`function`;return r&&(n=!0),r?e(this.view):e});for(r.length&&(this.dynamicDecorationMap[e++]=n,t.push(GX.join(r))),this.decorations=[this.editContextFormatting,...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];etypeof e==`function`?e(this.view):e)}scrollIntoView(e){if(e.isSnapshot){let t=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=t.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let t of this.view.state.facet(n$))try{if(t(this.view,e.range,e))return!0}catch(e){o$(this.view.state,e,`scroll handler`)}let{range:t}=e,n=this.coordsAt(t.head,t.assoc??(t.empty?0:t.head>t.anchor?-1:1)),r;if(!n)return;!t.empty&&(r=this.coordsAt(t.anchor,t.anchor>t.head?-1:1))&&(n={left:Math.min(n.left,r.left),top:Math.min(n.top,r.top),right:Math.max(n.right,r.right),bottom:Math.max(n.bottom,r.bottom)});let i=x$(this.view),a={left:n.left-i.left,top:n.top-i.top,right:n.right+i.right,bottom:n.bottom+i.bottom},{offsetWidth:o,offsetHeight:s}=this.view.scrollDOM;if(cQ(this.view.scrollDOM,a,t.head1&&(n.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||n.bottome.isWidget()||e.children.some(t);return t(this.tile.resolveBlock(e,1).tile)}destroy(){e1(this.tile)}};function e1(e,t){let n=t?.get(e);if(n!=1){n??e.destroy();for(let n of e.children)e1(n,t)}}function t1(e){return e.node.nodeType==1&&e.node.firstChild&&(e.offset==0||e.node.childNodes[e.offset-1].contentEditable==`false`)&&(e.offset==e.node.childNodes.length||e.node.childNodes[e.offset].contentEditable==`false`)}function n1(e,t){let n=e.observer.selectionRange;if(!n.focusNode)return null;let r=yQ(n.focusNode,n.focusOffset),i=bQ(n.focusNode,n.focusOffset),a=r||i;if(i&&r&&i.node!=r.node){let t=E$.get(i.node);if(!t||t.isText()&&t.text!=i.node.nodeValue)a=i;else if(e.docView.lastCompositionAfterCursor){let e=E$.get(r.node);!e||e.isText()&&e.text!=r.node.nodeValue||(a=i)}}if(e.docView.lastCompositionAfterCursor=a!=r,!a)return null;let o=t-a.offset;return{from:o,to:o+a.node.nodeValue.length,node:a.node}}function r1(e,t,n){let r=n1(e,n);if(!r)return null;let{node:i,from:a,to:o}=r,s=i.nodeValue;if(/[\n\r]/.test(s)||e.state.doc.sliceString(r.from,r.to)!=s)return null;let c=t.invertedDesc;return{range:new C$(c.mapPos(a),c.mapPos(o),a,o),text:i}}function i1(e,t){return e.nodeType==1?(t&&e.childNodes[t-1].contentEditable==`false`?1:0)|(t{et.from&&(n=!0)}),n}var d1=class extends BZ{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement(`div`);return e.className=`cm-gap`,this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+`px`,!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function f1(e,t,n=1){let r=e.charCategorizer(t),i=e.doc.lineAt(t),a=t-i.from;if(i.length==0)return Y.cursor(t);a==0?n=1:a==i.length&&(n=-1);let o=a,s=a;n<0?o=AY(i.text,a,!1):s=AY(i.text,a);let c=r(i.text.slice(o,s));for(;o>0;){let e=AY(i.text,o,!1);if(r(i.text.slice(e,o))!=c)break;o=e}for(;se.defaultLineHeight*1.5){let t=e.viewState.heightOracle.textHeight,r=Math.floor((i-n.top-(e.defaultLineHeight-t)*.5)/t);a+=r*e.viewState.heightOracle.lineLength}let o=e.state.sliceDoc(n.from,n.to);return n.from+aZ(o,a,e.state.tabSize)}function m1(e,t,n){let r=e.lineBlockAt(t);if(Array.isArray(r.type)){let e;for(let i of r.type){if(i.from>t)break;if(!(i.tot)return i;(!e||i.type==VZ.Text&&(e.type!=i.type||(n<0?i.fromt)))&&(e=i)}}return e||r}return r}function h1(e,t,n,r){let i=m1(e,t.head,t.assoc||-1),a=!r||i.type!=VZ.Text||!(e.lineWrapping||i.widgetLineBreaks)?null:e.coordsAtPos(t.assoc<0&&t.head>i.from?t.head-1:t.head);if(a){let t=e.dom.getBoundingClientRect(),r=e.textDirectionAt(i.from),o=e.posAtCoords({x:n==(r==SQ.LTR)?t.right-1:t.left+1,y:(a.top+a.bottom)/2});if(o!=null)return Y.cursor(o,n?-1:1)}return Y.cursor(n?i.to:i.from,n?-1:1)}function g1(e,t,n,r){let i=e.state.doc.lineAt(t.head),a=e.bidiSpans(i),o=e.textDirectionAt(i.from);for(let s=t,c=null;;){let t=UQ(i,a,o,s,n),l=HQ;if(!t){if(i.number==(n?e.state.doc.lines:1))return s;l=` +`,i=e.state.doc.line(i.number+(n?1:-1)),a=e.bidiSpans(i),t=e.visualLineSide(i,!n)}if(!c){if(!r)return t;c=r(l)}else if(!c(l))return s;s=t}}function _1(e,t,n){let r=e.state.charCategorizer(t),i=r(n);return e=>{let t=r(e);return i==NX.Space&&(i=t),i==t}}function v1(e,t,n,r){let i=t.head,a=n?1:-1;if(i==(n?e.state.doc.length:0))return Y.cursor(i,t.assoc);let o=t.goalColumn,s,c=e.contentDOM.getBoundingClientRect(),l=e.coordsAtPos(i,t.assoc||((t.empty?n:t.head==t.from)?1:-1)),u=e.documentTop;if(l)o??=l.left-c.left,s=a<0?l.top:l.bottom;else{let t=e.viewState.lineBlockAt(i);o??=Math.min(c.right-c.left,e.defaultCharacterWidth*(i-t.from)),s=(a<0?t.top:t.bottom)+u}let d=c.left+o,f=e.viewState.heightOracle.textHeight>>1,p=r??f;for(let t=0;;t+=f){let r=s+(p+t)*a,i=C1(e,{x:d,y:r},!1,a);if(n?r>c.bottom:rs:u{if(t>e&&tt(e)),n.from,t.head>n.from?-1:1);return r==n.from?n:Y.cursor(r,re.viewState.docHeight)return new S1(e.state.doc.length,-1);if(l=e.elementAtHeight(c),r==null)break;if(l.type==VZ.Text){if(r<0?l.toe.viewport.to)break;let t=e.docView.coordsAt(r<0?l.from:l.to,r>0?-1:1);if(t&&(r<0?t.top<=c+a:t.bottom>=c+a))break}let t=e.viewState.heightOracle.textHeight/2;c=r>0?l.bottom+t:l.top-t}if(e.viewport.from>=l.to||e.viewport.to<=l.from){if(n)return null;if(l.type==VZ.Text){let t=p1(e,i,l,o,s);return new S1(t,t==l.from?1:-1)}}if(l.type!=VZ.Text)return c<(l.top+l.bottom)/2?new S1(l.from,1):new S1(l.to,-1);let u=e.docView.lineAt(l.from,2);return(!u||u.length!=l.length)&&(u=e.docView.lineAt(l.from,-2)),new w1(e,o,s,e.textDirectionAt(l.from)).scanTile(u,l.from)}var w1=class{constructor(e,t,n,r){this.view=e,this.x=t,this.y=n,this.baseDir=r,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to1||n.length&&(n[0].level!=this.baseDir||n[0].to+r.from>1;adjust:if(a.has(f)){let e=r+Math.floor(Math.random()*n);for(let t=0;t1)){if(n.bottomthis.y)(!c||c.top>n.top)&&(c=n),a=-1;else{let e=n.left>this.x?this.x-n.left:n.right(n+n+r)/3)return this.y=s.bottom-1,this.scan(e,t,!0);if(c&&c.top<(n+r+r)/3)return this.y=c.top+1,this.scan(e,t,!0)}let f=(o?this.dirAt(e[l],1):this.baseDir)==SQ.LTR;return{i:l,after:this.x>(d.left+d.right)/2==f}}scanText(e,t){let n=[];for(let r=0;r{let i=n[r]-t,a=n[r+1]-t;return mQ(e.dom,i,a).getClientRects()});return r.after?new S1(n[r.i+1],-1):new S1(n[r.i],1)}scanTile(e,t){if(!e.length)return new S1(t,1);if(e.children.length==1){let n=e.children[0];if(n.isText())return this.scanText(n,t);if(n.isComposite())return this.scanTile(n,t)}let n=[t];for(let r=0,i=t;r{let n=e.children[t];return n.flags&48?null:(n.dom.nodeType==1?n.dom:mQ(n.dom,0,n.length)).getClientRects()}),i=e.children[r.i],a=n[r.i];return i.isText()?this.scanText(i,a):i.isComposite()?this.scanTile(i,a):r.after?new S1(n[r.i+1],-1):new S1(a,1)}},T1=`￿`,E1=class{constructor(e,t){this.points=e,this.view=t,this.text=``,this.lineSeparator=t.state.facet(RX.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=T1}readRange(e,t){if(!e)return this;let n=e.parentNode;for(let r=e;;){this.findPointBefore(n,r);let e=this.text.length;this.readNode(r);let i=E$.get(r),a=r.nextSibling;if(a==t){i?.breakAfter&&!a&&n!=this.view.contentDOM&&this.lineBreak();break}let o=E$.get(a);(i&&o?i.breakAfter:(i?i.breakAfter:nQ(r))||nQ(a)&&(r.nodeName!=`BR`||i?.isWidget())&&this.text.length>e)&&!O1(a,t)&&this.lineBreak(),r=a}return this.findPointBefore(n,t),this}readTextNode(e){let t=e.nodeValue;for(let n of this.points)n.node==e&&(n.pos=this.text.length+Math.min(n.offset,t.length));for(let n=0,r=this.lineSeparator?null:/\r\n?|\n/g;;){let i=-1,a=1,o;if(this.lineSeparator?(i=t.indexOf(this.lineSeparator,n),a=this.lineSeparator.length):(o=r.exec(t))&&(i=o.index,a=o[0].length),this.append(t.slice(n,i<0?t.length:i)),i<0)break;if(this.lineBreak(),a>1)for(let t of this.points)t.node==e&&t.pos>this.text.length&&(t.pos-=a-1);n=i+a}}readNode(e){let t=E$.get(e),n=t&&t.overrideDOMText;if(n!=null){this.findPointInside(e,n.length);for(let e=n.iter();!e.next().done;)e.lineBreak?this.lineBreak():this.append(e.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName==`BR`?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let n of this.points)n.node==e&&e.childNodes[n.offset]==t&&(n.pos=this.text.length)}findPointInside(e,t){for(let n of this.points)(e.nodeType==3?n.node==e:e.contains(n.node))&&(n.pos=this.text.length+(D1(e,n.node,n.offset)?t:0))}};function D1(e,t,n){for(;;){if(!t||n-1;let{impreciseHead:i,impreciseAnchor:a}=e.docView,o=e.state.selection;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=j1(e.docView.tile,t,n,0))){let t=i||a?[]:I1(e),n=new E1(t,e);n.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=n.text,this.newSel=L1(t,this.bounds.from)}else{let t=e.observer.selectionRange,n=i&&i.node==t.focusNode&&i.offset==t.focusOffset||!ZZ(e.contentDOM,t.focusNode)?o.main.head:e.docView.posFromDOM(t.focusNode,t.focusOffset),r=a&&a.node==t.anchorNode&&a.offset==t.anchorOffset||!ZZ(e.contentDOM,t.anchorNode)?o.main.anchor:e.docView.posFromDOM(t.anchorNode,t.anchorOffset),s=e.viewport;if((NZ.ios||NZ.chrome)&&o.main.empty&&n!=r&&(s.from>0||s.to-1&&o.ranges.length>1)this.newSel=o.replaceRange(Y.range(r,n));else if(e.lineWrapping&&r==n&&!(o.main.empty&&o.main.head==n)&&e.inputState.lastTouchTime>Date.now()-100){let t=e.coordsAtPos(n,-1),r=0;t&&(r=e.inputState.lastTouchY<=t.bottom?-1:1),this.newSel=Y.create([Y.cursor(n,r)])}else this.newSel=Y.single(r,n)}}};function j1(e,t,n,r){if(e.isComposite()){let i=-1,a=-1,o=-1,s=-1;for(let c=0,l=r,u=r;cn)return j1(r,t,n,l);if(d>=t&&i==-1&&(i=c,a=l),l>n&&r.dom.parentNode==e.dom){o=c,s=u;break}u=d,l=d+r.breakAfter}return{from:a,to:s<0?r+e.length:s,startDOM:(i?e.children[i-1].dom.nextSibling:null)||e.dom.firstChild,endDOM:o=0?e.children[o].dom:null}}else if(e.isText())return{from:r,to:r+e.length,startDOM:e.dom,endDOM:e.dom.nextSibling};else return null}function M1(e,t){let n,{newSel:r}=t,{state:i}=e,a=i.selection.main,o=e.inputState.lastKeyTime>Date.now()-100?e.inputState.lastKeyCode:-1;if(t.bounds){let{from:e,to:r}=t.bounds,s=a.from,c=null;(o===8||NZ.android&&t.text.length=e&&a.to<=r&&(t.typeOver||l!=t.text)&&l.slice(0,a.from-e)==t.text.slice(0,a.from-e)&&l.slice(a.to-e)==t.text.slice(u=t.text.length-(l.length-(a.to-e)))?n={from:a.from,to:a.to,insert:yY.of(t.text.slice(a.from-e,u).split(T1))}:(d=F1(l,t.text,s-e,c))&&(NZ.chrome&&o==13&&d.toB==d.from+2&&t.text.slice(d.from,d.toB)==`￿￿`&&d.toB--,n={from:e+d.from,to:e+d.toA,insert:yY.of(t.text.slice(d.from,d.toB).split(T1))})}else r&&(!e.hasFocus&&i.facet(s$)||R1(r,a))&&(r=null);if(!n&&!r)return!1;if((NZ.mac||NZ.android)&&n&&n.from==n.to&&n.from==a.head-1&&/^\. ?$/.test(n.insert.toString())&&e.contentDOM.getAttribute(`autocorrect`)==`off`?(r&&n.insert.length==2&&(r=Y.single(r.main.anchor-1,r.main.head-1)),n={from:n.from,to:n.to,insert:yY.of([n.insert.toString().replace(`.`,` `)])}):i.doc.lineAt(a.from).toDate.now()-50?n={from:a.from,to:a.to,insert:i.toText(e.inputState.insertingText)}:NZ.chrome&&n&&n.from==n.to&&n.from==a.head&&n.insert.toString()==` + `&&e.lineWrapping&&(r&&=Y.single(r.main.anchor-1,r.main.head-1),n={from:a.from,to:a.to,insert:yY.of([` `])}),n)return N1(e,n,r,o);if(r&&!R1(r,a)){let t=!1,n=`select`;return e.inputState.lastSelectionTime>Date.now()-50&&(e.inputState.lastSelectionOrigin==`select`&&(t=!0),n=e.inputState.lastSelectionOrigin,n==`select.pointer`&&(r=b1(i.facet(_$).map(t=>t(e)),r))),e.dispatch({selection:r,scrollIntoView:t,userEvent:n}),!0}else return!1}function N1(e,t,n,r=-1){if(NZ.ios&&e.inputState.flushIOSKey(t))return!0;let i=e.state.selection.main;if(NZ.android&&(t.to==i.to&&(t.from==i.from||t.from==i.from-1&&e.state.sliceDoc(t.from,i.from)==` `)&&t.insert.length==1&&t.insert.lines==2&&hQ(e.contentDOM,`Enter`,13)||(t.from==i.from-1&&t.to==i.to&&t.insert.length==0||r==8&&t.insert.lengthi.head)&&hQ(e.contentDOM,`Backspace`,8)||t.from==i.from&&t.to==i.to+1&&t.insert.length==0&&hQ(e.contentDOM,`Delete`,46)))return!0;let a=t.insert.toString();e.inputState.composing>=0&&e.inputState.composing++;let o,s=()=>o||=P1(e,t,n);return e.state.facet(XQ).some(n=>n(e,t.from,t.to,a,s))||e.dispatch(s()),!0}function P1(e,t,n){let r,i=e.state,a=i.selection.main,o=-1;if(t.from==t.to&&t.froma.to){let n=t.fromt(e)),r,n);t.from==s&&(o=s)}if(o>-1)r={changes:t,selection:Y.cursor(t.from+t.insert.length,-1)};else if(t.from>=a.from&&t.to<=a.to&&t.to-t.from>=(a.to-a.from)/3&&(!n||n.main.empty&&n.main.from==t.from+t.insert.length)&&e.inputState.composing<0){let n=a.fromt.to?i.sliceDoc(t.to,a.to):``;r=i.replaceSelection(e.state.toText(n+t.insert.sliceString(0,void 0,e.state.lineBreak)+o))}else{let o=i.changes(t),s=n&&n.main.to<=o.newLength?n.main:void 0;if(i.selection.ranges.length>1&&(e.inputState.composing>=0||e.inputState.compositionPendingChange)&&t.to<=a.to+10&&t.to>=a.to-10){let c=e.state.sliceDoc(t.from,t.to),l,u=n&&n1(e,n.main.head);if(u){let e=t.insert.length-(t.to-t.from);l={from:u.from,to:u.to-e}}else l=e.state.doc.lineAt(a.head);let d=a.to-t.to;r=i.changeByRange(n=>{if(n.from==a.from&&n.to==a.to)return{changes:o,range:s||n.map(o)};let r=n.to-d,u=r-c.length;if(e.state.sliceDoc(u,r)!=c||r>=l.from&&u<=l.to)return{range:n};let f=i.changes({from:u,to:r,insert:t.insert}),p=n.to-a.to;return{changes:f,range:s?Y.range(Math.max(0,s.anchor+p),Math.max(0,s.head+p)):n.map(f)}})}else r={changes:o,selection:s&&i.selection.replaceRange(s)}}let s=`input.type`;return(e.composing||e.inputState.compositionPendingChange&&e.inputState.compositionEndedAt>Date.now()-50)&&(e.inputState.compositionPendingChange=!1,s+=`.compose`,e.inputState.compositionFirstChange&&(s+=`.start`,e.inputState.compositionFirstChange=!1)),i.update(r,{userEvent:s,scrollIntoView:!0})}function F1(e,t,n,r){let i=Math.min(e.length,t.length),a=0;for(;a0&&s>0&&e.charCodeAt(o-1)==t.charCodeAt(s-1);)o--,s--;if(r==`end`){let e=Math.max(0,a-Math.min(o,s));n-=o+e-a}if(o=o?a-n:0;a-=e,s=a+(s-o),o=a}else if(s=s?a-n:0;a-=e,o=a+(o-s),s=a}return{from:a,toA:o,toB:s}}function I1(e){let t=[];if(e.root.activeElement!=e.contentDOM)return t;let{anchorNode:n,anchorOffset:r,focusNode:i,focusOffset:a}=e.observer.selectionRange;return n&&(t.push(new k1(n,r)),(i!=n||a!=r)&&t.push(new k1(i,a))),t}function L1(e,t){if(e.length==0)return null;let n=e[0].pos,r=e.length==2?e[1].pos:n;return n>-1&&r>-1?Y.single(n+t,r+t):null}function R1(e,t){return t.head==e.main.head&&t.anchor==e.main.anchor}var z1=class{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText=``,this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,NZ.safari&&e.contentDOM.addEventListener(`input`,()=>null),NZ.gecko&&x0(e.contentDOM.ownerDocument)}handleEvent(e){!Q1(this.view,e)||this.ignoreDuringComposition(e)||e.type==`keydown`&&this.keydown(e)||(this.view.updateState==0?this.runHandlers(e.type,e):Promise.resolve().then(()=>this.runHandlers(e.type,e)))}runHandlers(e,t){let n=this.handlers[e];if(n){for(let e of n.observers)e(this.view,t);for(let e of n.handlers){if(t.defaultPrevented)break;if(e(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=V1(e),n=this.handlers,r=this.view.contentDOM;for(let e in t)if(e!=`scroll`){let i=!t[e].handlers.length,a=n[e];a&&i!=!a.handlers.length&&(r.removeEventListener(e,this.handleEvent),a=null),a||r.addEventListener(e,this.handleEvent,{passive:i})}for(let e in n)e!=`scroll`&&!t[e]&&r.removeEventListener(e,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&W1.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),NZ.android&&NZ.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let t;return NZ.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&!e.shiftKey&&((t=H1.find(t=>t.keyCode==e.keyCode))&&!e.ctrlKey||U1.indexOf(e.key)>-1&&e.ctrlKey)?(this.pendingIOSKey=t||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let t=this.pendingIOSKey;return!t||t.key==`Enter`&&e&&e.from0?!0:NZ.safari&&!NZ.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function B1(e,t){return(n,r)=>{try{return t.call(e,r,n)}catch(e){o$(n.state,e)}}}function V1(e){let t=Object.create(null);function n(e){return t[e]||(t[e]={observers:[],handlers:[]})}for(let t of e){let e=t.spec,r=e&&e.plugin.domEventHandlers,i=e&&e.plugin.domEventObservers;if(r)for(let e in r){let i=r[e];i&&n(e).handlers.push(B1(t.value,i))}if(i)for(let e in i){let r=i[e];r&&n(e).observers.push(B1(t.value,r))}}for(let e in $1)n(e).handlers.push($1[e]);for(let e in e0)n(e).observers.push(e0[e]);return t}var H1=[{key:`Backspace`,keyCode:8,inputType:`deleteContentBackward`},{key:`Enter`,keyCode:13,inputType:`insertParagraph`},{key:`Enter`,keyCode:13,inputType:`insertLineBreak`},{key:`Delete`,keyCode:46,inputType:`deleteContentForward`}],U1=`dthko`,W1=[16,17,18,20,91,92,224,225],G1=6;function K1(e){return Math.max(0,e)*.7+8}function q1(e,t){return Math.max(Math.abs(e.clientX-t.clientX),Math.abs(e.clientY-t.clientY))}var J1=class{constructor(e,t,n,r){this.view=e,this.startEvent=t,this.style=n,this.mustSelect=r,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=lQ(e.contentDOM),this.atoms=e.state.facet(_$).map(t=>t(e));let i=e.contentDOM.ownerDocument;i.addEventListener(`mousemove`,this.move=this.move.bind(this)),i.addEventListener(`mouseup`,this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(RX.allowMultipleSelections)&&Y1(e,t),this.dragging=Z1(e,t)&&u0(t)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&q1(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let t=0,n=0,r=0,i=0,a=this.view.win.innerWidth,o=this.view.win.innerHeight;this.scrollParents.x&&({left:r,right:a}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:i,bottom:o}=this.scrollParents.y.getBoundingClientRect());let s=x$(this.view);e.clientX-s.left<=r+G1?t=-K1(r-e.clientX):e.clientX+s.right>=a-G1&&(t=K1(e.clientX-a)),e.clientY-s.top<=i+G1?n=-K1(i-e.clientY):e.clientY+s.bottom>=o-G1&&(n=K1(e.clientY-o)),this.setScrollSpeed(t,n)}up(e){this.dragging??this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener(`mousemove`,this.move),e.removeEventListener(`mouseup`,this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:t}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),t&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=t,t=0),(e||t)&&this.view.win.scrollBy(e,t),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:t}=this,n=b1(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!n.eq(t.state.selection,this.dragging===!1))&&this.view.dispatch({selection:n,userEvent:`select.pointer`}),this.mustSelect=!1}update(e){e.transactions.some(e=>e.isUserEvent(`input.type`))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Y1(e,t){let n=e.state.facet(GQ);return n.length?n[0](t):NZ.mac?t.metaKey:t.ctrlKey}function X1(e,t){let n=e.state.facet(KQ);return n.length?n[0](t):NZ.mac?!t.altKey:!t.ctrlKey}function Z1(e,t){let{main:n}=e.state.selection;if(n.empty)return!1;let r=XZ(e.root);if(!r||r.rangeCount==0)return!0;let i=r.getRangeAt(0).getClientRects();for(let e=0;e=t.clientX&&n.top<=t.clientY&&n.bottom>=t.clientY)return!0}return!1}function Q1(e,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let n=t.target,r;n!=e.contentDOM;n=n.parentNode)if(!n||n.nodeType==11||(r=E$.get(n))&&r.isWidget()&&!r.isHidden&&r.widget.ignoreEvent(t))return!1;return!0}var $1=Object.create(null),e0=Object.create(null),t0=NZ.ie&&NZ.ie_version<15||NZ.ios&&NZ.webkit_version<604;function n0(e){let t=e.dom.parentNode;if(!t)return;let n=t.appendChild(document.createElement(`textarea`));n.style.cssText=`position: fixed; left: -10000px; top: 10px`,n.focus(),setTimeout(()=>{e.focus(),n.remove(),i0(e,n.value)},50)}function r0(e,t,n){for(let r of e.facet(t))n=r(n,e);return n}function i0(e,t){t=r0(e.state,QQ,t);let{state:n}=e,r,i=1,a=n.toText(t),o=a.lines==n.selection.ranges.length;if(g0!=null&&n.selection.ranges.every(e=>e.empty)&&g0==a.toString()){let e=-1;r=n.changeByRange(r=>{let s=n.doc.lineAt(r.from);if(s.from==e)return{range:r};e=s.from;let c=n.toText((o?a.line(i++).text:t)+n.lineBreak);return{changes:{from:s.from,insert:c},range:Y.cursor(r.from+c.length)}})}else r=o?n.changeByRange(e=>{let t=a.line(i++);return{changes:{from:e.from,to:e.to,insert:t.text},range:Y.cursor(e.from+t.length)}}):n.replaceSelection(a);e.dispatch(r,{userEvent:`input.paste`,scrollIntoView:!0})}e0.scroll=e=>{e.inputState.lastScrollTop=e.scrollDOM.scrollTop,e.inputState.lastScrollLeft=e.scrollDOM.scrollLeft},e0.wheel=e0.mousewheel=e=>{e.inputState.lastWheelEvent=Date.now()},$1.keydown=(e,t)=>(e.inputState.setSelectionOrigin(`select`),t.keyCode==27&&e.inputState.tabFocusMode!=0&&(e.inputState.tabFocusMode=Date.now()+2e3),!1),e0.touchstart=(e,t)=>{let n=e.inputState,r=t.targetTouches[0];n.lastTouchTime=Date.now(),r&&(n.lastTouchX=r.clientX,n.lastTouchY=r.clientY),n.setSelectionOrigin(`select.pointer`)},e0.touchmove=e=>{e.inputState.setSelectionOrigin(`select.pointer`)},$1.mousedown=(e,t)=>{if(e.observer.flush(),e.inputState.lastTouchTime>Date.now()-2e3)return!1;let n=null;for(let r of e.state.facet(qQ))if(n=r(e,t),n)break;if(!n&&t.button==0&&(n=d0(e,t)),n){let r=!e.hasFocus;e.inputState.startMouseSelection(new J1(e,t,n,r)),r&&e.observer.ignore(()=>{fQ(e.contentDOM);let t=e.root.activeElement;t&&!t.contains(e.contentDOM)&&t.blur()});let i=e.inputState.mouseSelection;if(i)return i.start(t),i.dragging===!1}else e.inputState.setSelectionOrigin(`select.pointer`);return!1};function a0(e,t,n,r){if(r==1)return Y.cursor(t,n);if(r==2)return f1(e.state,t,n);{let r=e.docView.lineAt(t,n),i=e.state.doc.lineAt(r?r.posAtEnd:t),a=r?r.posAtStart:i.from,o=r?r.posAtEnd:i.to;return oDate.now()-400&&Math.abs(t.clientX-e.clientX)<2&&Math.abs(t.clientY-e.clientY)<2?(c0+1)%3:1}function d0(e,t){let n=e.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),r=u0(t),i=e.state.selection;return{update(e){e.docChanged&&(n.pos=e.changes.mapPos(n.pos),i=i.map(e.changes))},get(t,a,o){let s=e.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),c,l=a0(e,s.pos,s.assoc,r);if(n.pos!=s.pos&&!a){let t=a0(e,n.pos,n.assoc,r),i=Math.min(t.from,l.from),a=Math.max(t.to,l.to);l=i1&&(c=f0(i,s.pos))?c:o?i.addRange(l):Y.create([l])}}}function f0(e,t){for(let n=0;n=t)return Y.create(e.ranges.slice(0,n).concat(e.ranges.slice(n+1)),e.mainIndex==n?0:e.mainIndex-+(e.mainIndex>n))}return null}$1.dragstart=(e,t)=>{let{selection:{main:n}}=e.state;if(t.target.draggable){let r=e.docView.tile.nearest(t.target);if(r&&r.isWidget()){let e=r.posAtStart,t=e+r.length;(e>=n.to||t<=n.from)&&(n=Y.range(e,t))}}let{inputState:r}=e;return r.mouseSelection&&(r.mouseSelection.dragging=!0),r.draggedContent=n,t.dataTransfer&&(t.dataTransfer.setData(`Text`,r0(e.state,$Q,e.state.sliceDoc(n.from,n.to))),t.dataTransfer.effectAllowed=`copyMove`),!1},$1.dragend=e=>(e.inputState.draggedContent=null,!1);function p0(e,t,n,r){if(n=r0(e.state,QQ,n),!n)return;let i=e.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:a}=e.inputState,o=r&&a&&X1(e,t)?{from:a.from,to:a.to}:null,s={from:i,insert:n},c=e.state.changes(o?[o,s]:s);e.focus(),e.dispatch({changes:c,selection:{anchor:c.mapPos(i,-1),head:c.mapPos(i,1)},userEvent:o?`move.drop`:`input.drop`}),e.inputState.draggedContent=null}$1.drop=(e,t)=>{if(!t.dataTransfer)return!1;if(e.state.readOnly)return!0;let n=t.dataTransfer.files;if(n&&n.length){let r=Array(n.length),i=0,a=()=>{++i==n.length&&p0(e,t,r.filter(e=>e!=null).join(e.state.lineBreak),!1)};for(let e=0;e{/[\x00-\x08\x0e-\x1f]{2}/.test(t.result)||(r[e]=t.result),a()},t.readAsText(n[e])}return!0}else{let n=t.dataTransfer.getData(`Text`);if(n)return p0(e,t,n,!0),!0}return!1},$1.paste=(e,t)=>{if(e.state.readOnly)return!0;e.observer.flush();let n=t0?null:t.clipboardData;return n?(i0(e,n.getData(`text/plain`)||n.getData(`text/uri-list`)),!0):(n0(e),!1)};function m0(e,t){let n=e.dom.parentNode;if(!n)return;let r=n.appendChild(document.createElement(`textarea`));r.style.cssText=`position: fixed; left: -10000px; top: 10px`,r.value=t,r.focus(),r.selectionEnd=t.length,r.selectionStart=0,setTimeout(()=>{r.remove(),e.focus()},50)}function h0(e){let t=[],n=[],r=!1;for(let r of e.selection.ranges)r.empty||(t.push(e.sliceDoc(r.from,r.to)),n.push(r));if(!t.length){let i=-1;for(let{from:r}of e.selection.ranges){let a=e.doc.lineAt(r);a.number>i&&(t.push(a.text),n.push({from:a.from,to:Math.min(e.doc.length,a.to+1)})),i=a.number}r=!0}return{text:r0(e,$Q,t.join(e.lineBreak)),ranges:n,linewise:r}}var g0=null;$1.copy=$1.cut=(e,t)=>{if(!QZ(e.contentDOM,e.observer.selectionRange))return!1;let{text:n,ranges:r,linewise:i}=h0(e.state);if(!n&&!i)return!1;g0=i?n:null,t.type==`cut`&&!e.state.readOnly&&e.dispatch({changes:r,scrollIntoView:!0,userEvent:`delete.cut`});let a=t0?null:t.clipboardData;return a?(a.clearData(),a.setData(`text/plain`,n),!0):(m0(e,n),!1)};var _0=bX.define();function v0(e,t){let n=[];for(let r of e.facet(ZQ)){let i=r(e,t);i&&n.push(i)}return n.length?e.update({effects:n,annotations:_0.of(!0)}):null}function y0(e){setTimeout(()=>{let t=e.hasFocus;if(t!=e.inputState.notifiedFocused){let n=v0(e.state,t);n?e.dispatch(n):e.update([])}},10)}e0.focus=e=>{e.inputState.lastFocusTime=Date.now(),!e.scrollDOM.scrollTop&&(e.inputState.lastScrollTop||e.inputState.lastScrollLeft)&&(e.scrollDOM.scrollTop=e.inputState.lastScrollTop,e.scrollDOM.scrollLeft=e.inputState.lastScrollLeft),y0(e)},e0.blur=e=>{e.observer.clearSelectionRange(),y0(e)},e0.compositionstart=e0.compositionupdate=e=>{e.observer.editContext||(e.inputState.compositionFirstChange??(e.inputState.compositionFirstChange=!0),e.inputState.composing<0&&(e.inputState.composing=0))},e0.compositionend=e=>{e.observer.editContext||(e.inputState.composing=-1,e.inputState.compositionEndedAt=Date.now(),e.inputState.compositionPendingKey=!0,e.inputState.compositionPendingChange=e.observer.pendingRecords().length>0,e.inputState.compositionFirstChange=null,NZ.chrome&&NZ.android?e.observer.flushSoon():e.inputState.compositionPendingChange?Promise.resolve().then(()=>e.observer.flush()):setTimeout(()=>{e.inputState.composing<0&&e.docView.hasComposition&&e.update([])},50))},e0.contextmenu=e=>{e.inputState.lastContextMenu=Date.now()},$1.beforeinput=(e,t)=>{if((t.inputType==`insertText`||t.inputType==`insertCompositionText`)&&(e.inputState.insertingText=t.data,e.inputState.insertingTextAt=Date.now()),t.inputType==`insertReplacementText`&&e.observer.editContext){let n=t.dataTransfer?.getData(`text/plain`),r=t.getTargetRanges();if(n&&r.length){let t=r[0];return N1(e,{from:e.posAtDOM(t.startContainer,t.startOffset),to:e.posAtDOM(t.endContainer,t.endOffset),insert:e.state.toText(n)},null),!0}}let n;if(NZ.chrome&&NZ.android&&(n=H1.find(e=>e.inputType==t.inputType))&&(e.observer.delayAndroidKey(n.key,n.keyCode),n.key==`Backspace`||n.key==`Delete`)){let t=window.visualViewport?.height||0;setTimeout(()=>{(window.visualViewport?.height||0)>t+10&&e.hasFocus&&(e.contentDOM.blur(),e.focus())},100)}return NZ.ios&&t.inputType==`deleteContentForward`&&e.observer.flushSoon(),NZ.safari&&t.inputType==`insertText`&&e.inputState.composing>=0&&setTimeout(()=>e0.compositionend(e,t),20),!1};var b0=new Set;function x0(e){b0.has(e)||(b0.add(e),e.addEventListener(`copy`,()=>{}),e.addEventListener(`cut`,()=>{}))}var S0=[`pre-wrap`,`normal`,`pre-line`,`break-spaces`],C0=!1;function w0(){C0=!1}var T0=class{constructor(e){this.lineWrapping=e,this.doc=yY.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let n=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(n+=Math.max(0,Math.ceil((t-e-n*this.lineLength*.5)/this.lineLength))),this.lineHeight*n}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return S0.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let n=0;n-1,s=Math.abs(t-this.lineHeight)>.3||this.lineWrapping!=o;if(this.lineWrapping=o,this.lineHeight=t,this.charWidth=n,this.textHeight=r,this.lineLength=i,s){this.heightSamples={};for(let e=0;e0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>k0&&(C0=!0),this.height=e)}replace(t,n,r){return e.of(r)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,n,r){let i=this,a=n.doc;for(let o=r.length-1;o>=0;o--){let{fromA:s,toA:c,fromB:l,toB:u}=r[o],d=i.lineAt(s,O0.ByPosNoHeight,n.setDoc(t),0,0),f=d.to>=c?d:i.lineAt(c,O0.ByPosNoHeight,n,0,0);for(u+=f.to-c,c=f.to;o>0&&d.from<=r[o-1].toA;)s=r[o-1].fromA,l=r[o-1].fromB,o--,sa*2){let e=t[n-1];e.break?t.splice(--n,1,e.left,null,e.right):t.splice(--n,1,e.left,e.right),r+=1+e.break,i-=e.size}else if(a>i*2){let e=t[r];e.break?t.splice(r,1,e.left,null,e.right):t.splice(r,1,e.left,e.right),r+=2+e.break,a-=e.size}else break;else if(i=i&&a(this.lineAt(0,O0.ByPos,n,r,i))}setMeasuredHeight(e){let t=e.heights[e.index++];t<0?(this.spaceAbove=-t,t=e.heights[e.index++]):this.spaceAbove=0,this.setHeight(t)}updateHeight(e,t=0,n=!1,r){return r&&r.from<=t&&r.more&&this.setMeasuredHeight(r),this.outdated=!1,this}toString(){return`block(${this.length})`}},P0=class e extends N0{constructor(e,t,n){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=n}mainBlock(e,t){return new D0(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,n,r){let i=r[0];return r.length==1&&(i instanceof e||i instanceof F0&&i.flags&4)&&Math.abs(this.length-i.length)<10?(i instanceof F0?i=new e(i.length,this.height,this.spaceAbove):i.height=this.height,this.outdated||(i.outdated=!1),i):A0.of(r)}updateHeight(e,t=0,n=!1,r){return r&&r.from<=t&&r.more?this.setMeasuredHeight(r):(n||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:``}${this.widgetHeight?`:`+this.widgetHeight:``})`}},F0=class e extends A0{constructor(e){super(e,0)}heightMetrics(e,t){let n=e.doc.lineAt(t).number,r=e.doc.lineAt(t+this.length).number,i=r-n+1,a,o=0;if(e.lineWrapping){let t=Math.min(this.height,e.lineHeight*i);a=t/i,this.length>i+1&&(o=(this.height-t)/(this.length-i-1))}else a=this.height/i;return{firstLine:n,lastLine:r,perLine:a,perChar:o}}blockAt(e,t,n,r){let{firstLine:i,lastLine:a,perLine:o,perChar:s}=this.heightMetrics(t,r);if(t.lineWrapping){let i=r+(e0){let t=r[r.length-1];t instanceof e?r[r.length-1]=new e(t.length+i):r.push(null,new e(i-1))}if(t>0){let n=r[0];n instanceof e?r[0]=new e(t+n.length):r.unshift(new e(t-1),null)}return A0.of(r)}decomposeLeft(t,n){n.push(new e(t-1),null)}decomposeRight(t,n){n.push(null,new e(this.length-t-1))}updateHeight(t,n=0,r=!1,i){let a=n+this.length;if(i&&i.from<=n+this.length&&i.more){let r=[],o=Math.max(n,i.from),s=-1;for(i.from>n&&r.push(new e(i.from-n-1).updateHeight(t,n));o<=a&&i.more;){let e=t.doc.lineAt(o).length;r.length&&r.push(null);let n=i.heights[i.index++],a=0;n<0&&(a=-n,n=i.heights[i.index++]),s==-1?s=n:Math.abs(n-s)>=k0&&(s=-2);let c=new P0(e,n,a);c.outdated=!1,r.push(c),o+=e+1}o<=a&&r.push(null,new e(a-o).updateHeight(t,o));let c=A0.of(r);return(s<0||Math.abs(c.height-this.height)>=k0||Math.abs(s-this.heightMetrics(t,n).perLine)>=k0)&&(C0=!0),j0(this,c)}else (r||this.outdated)&&(this.setHeight(t.heightForGap(n,n+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},I0=class extends A0{constructor(e,t,n){super(e.length+t+n.length,e.height+n.height,t|(e.outdated||n.outdated?2:0)),this.left=e,this.right=n,this.size=e.size+n.size}get break(){return this.flags&1}blockAt(e,t,n,r){let i=n+this.left.height;return eo))return c;let l=t==O0.ByPosNoHeight?O0.ByPosNoHeight:O0.ByPos;return s?c.join(this.right.lineAt(o,l,n,a,o)):this.left.lineAt(o,l,n,r,i).join(c)}forEachLine(e,t,n,r,i,a){let o=r+this.left.height,s=i+this.left.length+this.break;if(this.break)e=s&&this.right.forEachLine(e,t,n,o,s,a);else{let c=this.lineAt(s,O0.ByPos,n,r,i);e=e&&c.from<=t&&a(c),t>c.to&&this.right.forEachLine(c.to+1,t,n,o,s,a)}}replace(e,t,n){let r=this.left.length+this.break;if(tthis.left.length)return this.balanced(this.left,this.right.replace(e-r,t-r,n));let i=[];e>0&&this.decomposeLeft(e,i);let a=i.length;for(let e of n)i.push(e);if(e>0&&L0(i,a-1),t=n&&t.push(null)),e>n&&this.right.decomposeLeft(e-n,t)}decomposeRight(e,t){let n=this.left.length,r=n+this.break;if(e>=r)return this.right.decomposeRight(e-r,t);e2*t.size||t.size>2*e.size?A0.of(this.break?[e,null,t]:[e,t]):(this.left=j0(this.left,e),this.right=j0(this.right,t),this.setHeight(e.height+t.height),this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,n=!1,r){let{left:i,right:a}=this,o=t+i.length+this.break,s=null;return r&&r.from<=t+i.length&&r.more?s=i=i.updateHeight(e,t,n,r):i.updateHeight(e,t,n),r&&r.from<=o+a.length&&r.more?s=a=a.updateHeight(e,o,n,r):a.updateHeight(e,o,n),s?this.balanced(i,a):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?` `:`-`)+this.right}};function L0(e,t){let n,r;e[t]==null&&(n=e[t-1])instanceof F0&&(r=e[t+1])instanceof F0&&e.splice(t-1,3,new F0(n.length+1+r.length))}var R0=5,z0=class e{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let e=Math.min(t,this.lineEnd),n=this.nodes[this.nodes.length-1];n instanceof P0?n.length+=e-this.pos:(e>this.pos||!this.isCovered)&&this.nodes.push(new P0(e-this.pos,-1,0)),this.writtenTo=e,t>e&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,n){if(e=R0)&&this.addLineDeco(r,i,a)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenToe&&this.nodes.push(new P0(this.pos-e,-1,0)),this.writtenTo=this.pos}blankContent(e,t){let n=new F0(t-e);return this.oracle.doc.lineAt(e).to==t&&(n.flags|=4),n}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof P0)return e;let t=new P0(0,-1,0);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos+=e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,n){let r=this.ensureLine();r.length+=n,r.collapsed+=n,r.widgetHeight=Math.max(r.widgetHeight,e),r.breaks+=t,this.writtenTo=this.pos+=n}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof P0)&&!this.isCovered?this.nodes.push(new P0(0,-1,0)):(this.writtenTon.clientHeight||n.scrollWidth>n.clientWidth)&&r.overflow!=`visible`){let r=n.getBoundingClientRect();a=Math.max(a,r.left),o=Math.min(o,r.right),s=Math.max(s,r.top),c=Math.min(t==e.parentNode?i.innerHeight:c,r.bottom)}t=r.position==`absolute`||r.position==`fixed`?n.offsetParent:n.parentNode}else if(t.nodeType==11)t=t.host;else break;return{left:a-n.left,right:Math.max(a,o)-n.left,top:s-(n.top+t),bottom:Math.max(s,c)-(n.top+t)}}function U0(e){let t=e.getBoundingClientRect(),n=e.ownerDocument.defaultView||window;return t.left0&&t.top0}function W0(e,t){let n=e.getBoundingClientRect();return{left:0,right:n.right-n.left,top:t,bottom:n.bottom-(n.top+t)}}var G0=class{constructor(e,t,n,r){this.from=e,this.to=t,this.size=n,this.displaySize=r}static same(e,t){if(e.length!=t.length)return!1;for(let n=0;ntypeof e!=`function`&&e.class==`cm-lineWrapping`);this.heightOracle=new T0(n),this.stateDeco=e2(t),this.heightMap=A0.empty().applyChanges(this.stateDeco,yY.empty,this.heightOracle.setDoc(t.doc),[new C$(0,0,0,t.doc.length)]);for(let e=0;e<2&&(this.viewport=this.getViewport(0,null),this.updateForViewport());e++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=HZ.set(this.lineGaps.map(e=>e.draw(this,!1))),this.scrollParent=e.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let n=0;n<=1;n++){let r=n?t.head:t.anchor;if(!e.some(({from:e,to:t})=>r>=e&&r<=t)){let{from:t,to:n}=this.lineBlockAt(r);e.push(new J0(t,n))}}return this.viewports=e.sort((e,t)=>e.from-t.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?$0:new t2(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(n2(e,this.scaler))})}update(e,t=null){this.state=e.state;let n=this.stateDeco;this.stateDeco=e2(this.state);let r=e.changedRanges,i=C$.extendWithRanges(r,B0(n,this.stateDeco,e?e.changes:zY.empty(this.state.doc.length))),a=this.heightMap.height,o=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);w0(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),i),(this.heightMap.height!=a||C0)&&(e.flags|=2),o?(this.scrollAnchorPos=e.changes.mapPos(o.from,-1),this.scrollAnchorHeight=o.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=a);let s=i.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.heads.to)||!this.viewportIsAppropriate(s))&&(s=this.getViewport(0,t));let c=s.from!=this.viewport.from||s.to!=this.viewport.to;this.viewport=s,e.flags|=this.updateForViewport(),(c||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&(e.selectionSet||e.focusChanged)&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(t$)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:e}=this,t=e.contentDOM,n=window.getComputedStyle(t),r=this.heightOracle,i=n.whiteSpace;this.defaultTextDirection=n.direction==`rtl`?SQ.RTL:SQ.LTR;let a=this.heightOracle.mustRefreshForWrapping(i)||this.mustMeasureContent===`refresh`,o=t.getBoundingClientRect(),s=a||this.mustMeasureContent||this.contentDOMHeight!=o.height;this.contentDOMHeight=o.height,this.mustMeasureContent=!1;let c=0,l=0;if(o.width&&o.height){let{scaleX:e,scaleY:n}=sQ(t,o);(e>.005&&Math.abs(this.scaleX-e)>.005||n>.005&&Math.abs(this.scaleY-n)>.005)&&(this.scaleX=e,this.scaleY=n,c|=16,a=s=!0)}let u=(parseInt(n.paddingTop)||0)*this.scaleY,d=(parseInt(n.paddingBottom)||0)*this.scaleY;(this.paddingTop!=u||this.paddingBottom!=d)&&(this.paddingTop=u,this.paddingBottom=d,c|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(r.lineWrapping&&(s=!0),this.editorWidth=e.scrollDOM.clientWidth,c|=16);let f=lQ(this.view.contentDOM,!1).y;f!=this.scrollParent&&(this.scrollParent=f,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=vQ(this.scrollParent||e.win);let m=(this.printing?W0:H0)(t,this.paddingTop),h=m.top-this.pixelViewport.top,g=m.bottom-this.pixelViewport.bottom;this.pixelViewport=m;let _=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(_!=this.inView&&(this.inView=_,_&&(s=!0)),!this.inView&&!this.scrollTarget&&!U0(e.dom))return 0;let v=o.width;if((this.contentDOMWidth!=v||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=o.width,this.editorHeight=e.scrollDOM.clientHeight,c|=16),s){let t=e.docView.measureVisibleLineHeights(this.viewport);if(r.mustRefreshForHeights(t)&&(a=!0),a||r.lineWrapping&&Math.abs(v-this.contentDOMWidth)>r.charWidth){let{lineHeight:n,charWidth:o,textHeight:s}=e.docView.measureTextSize();a=n>0&&r.refresh(i,n,o,s,Math.max(5,v/o),t),a&&(e.docView.minWidth=0,c|=16)}h>0&&g>0?l=Math.max(h,g):h<0&&g<0&&(l=Math.min(h,g)),w0();for(let n of this.viewports){let i=n.from==this.viewport.from?t:e.docView.measureVisibleLineHeights(n);this.heightMap=(a?A0.empty().applyChanges(this.stateDeco,yY.empty,this.heightOracle,[new C$(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(r,0,a,new E0(n.from,i))}C0&&(c|=2)}let y=!this.viewportIsAppropriate(this.viewport,l)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return y&&(c&2&&(c|=this.updateScaler()),this.viewport=this.getViewport(l,this.scrollTarget),c|=this.updateForViewport()),(c&2||y)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(a?[]:this.lineGaps,e)),c|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),c}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let n=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),r=this.heightMap,i=this.heightOracle,{visibleTop:a,visibleBottom:o}=this,s=new J0(r.lineAt(a-n*1e3,O0.ByHeight,i,0,0).from,r.lineAt(o+(1-n)*1e3,O0.ByHeight,i,0,0).to);if(t){let{head:e}=t.range;if(es.to){let n=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),a=r.lineAt(e,O0.ByPos,i,0,0),o;o=t.y==`center`?(a.top+a.bottom)/2-n/2:t.y==`start`||t.y==`nearest`&&e=o+Math.max(10,Math.min(n,250)))&&r>a-2*1e3&&i>1,a=r<<1;if(this.defaultTextDirection!=SQ.LTR&&!n)return[];let o=[],s=(r,a,c,l)=>{if(a-rr&&ee.from>=c.from&&e.to<=c.to&&Math.abs(e.from-r)e.fromt));if(!f){if(ae.from<=a&&e.to>=a)){let e=t.moveToLineBoundary(Y.cursor(a),!1,!0).head;e>r&&(a=e)}let e=this.gapSize(c,r,a,l);f=new G0(r,a,e,n||e<2e6?e:2e6)}o.push(f)},c=t=>{if(t.length2e6)for(let n of e)n.from>=t.from&&n.fromt.from&&s(t.from,c,t,i),le.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let n=[];GX.spans(t,this.viewport.from,this.viewport.to,{span(e,t){n.push({from:e,to:t})},point(){}},20);let r=0;if(n.length!=this.visibleRanges.length)r=12;else for(let t=0;t=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||n2(this.heightMap.lineAt(e,O0.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(t=>t.top<=e&&t.bottom>=e)||n2(this.heightMap.lineAt(this.scaler.fromDOM(e),O0.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return n2(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},J0=class{constructor(e,t){this.from=e,this.to=t}};function Y0(e,t,n){let r=[],i=e,a=0;return GX.spans(n,e,t,{span(){},point(e,t){e>i&&(r.push({from:i,to:e}),a+=e-i),i=t}},20),i=1)return t[t.length-1].to;let r=Math.floor(e*n);for(let e=0;;e++){let{from:n,to:i}=t[e],a=i-n;if(r<=a)return n+r;r-=a}}function Z0(e,t){let n=0;for(let{from:r,to:i}of e.ranges){if(t<=i){n+=t-r;break}n+=i-r}return n/e.total}function Q0(e,t){for(let n of e)if(t(n))return n}var $0={toDOM(e){return e},fromDOM(e){return e},scale:1,eq(e){return e==this}};function e2(e){let t=e.facet(m$).filter(e=>typeof e!=`function`),n=e.facet(g$).filter(e=>typeof e!=`function`);return n.length&&t.push(GX.join(n)),t}var t2=class e{constructor(e,t,n){let r=0,i=0,a=0;this.viewports=n.map(({from:n,to:i})=>{let a=t.lineAt(n,O0.ByPos,e,0,0).top,o=t.lineAt(i,O0.ByPos,e,0,0).bottom;return r+=o-a,{from:n,to:i,top:a,bottom:o,domTop:0,domBottom:0}}),this.scale=(7e6-r)/(t.height-r);for(let e of this.viewports)e.domTop=a+(e.top-i)*this.scale,a=e.domBottom=e.domTop+(e.bottom-e.top),i=e.bottom}toDOM(e){for(let t=0,n=0,r=0;;t++){let i=te.from==t.viewports[n].from&&e.to==t.viewports[n].to):!1}};function n2(e,t){if(t.scale==1)return e;let n=t.toDOM(e.top),r=t.toDOM(e.bottom);return new D0(e.from,e.length,n,r-n,Array.isArray(e._content)?e._content.map(e=>n2(e,t)):e._content)}var r2=YY.define({combine:e=>e.join(` `)}),i2=YY.define({combine:e=>e.indexOf(!0)>-1}),a2=uZ.newName(),o2=uZ.newName(),s2=uZ.newName(),c2={"&light":`.`+o2,"&dark":`.`+s2};function l2(e,t,n){return new uZ(t,{finish(t){return/&/.test(t)?t.replace(/&\w*/,t=>{if(t==`&`)return e;if(!n||!n[t])throw RangeError(`Unsupported selector: ${t}`);return n[t]}):e+` `+t}})}var u2=l2(`.`+a2,{"&":{position:`relative !important`,boxSizing:`border-box`,"&.cm-focused":{outline:`1px dotted #212121`},display:`flex !important`,flexDirection:`column`},".cm-scroller":{display:`flex !important`,alignItems:`flex-start !important`,fontFamily:`monospace`,lineHeight:1.4,height:`100%`,overflowX:`auto`,position:`relative`,zIndex:0,overflowAnchor:`none`},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:`block`,whiteSpace:`pre`,wordWrap:`normal`,boxSizing:`border-box`,minHeight:`100%`,padding:`4px 0`,outline:`none`,"&[contenteditable=true]":{WebkitUserModify:`read-write-plaintext-only`}},".cm-lineWrapping":{whiteSpace_fallback:`pre-wrap`,whiteSpace:`break-spaces`,wordBreak:`break-word`,overflowWrap:`anywhere`,flexShrink:1},"&light .cm-content":{caretColor:`black`},"&dark .cm-content":{caretColor:`white`},".cm-line":{display:`block`,padding:`0 2px 0 6px`},".cm-layer":{position:`absolute`,left:0,top:0,contain:`size style`,"& > *":{position:`absolute`}},"&light .cm-selectionBackground":{background:`#d9d9d9`},"&dark .cm-selectionBackground":{background:`#222`},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:`#d7d4f0`},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:`#233`},".cm-cursorLayer":{pointerEvents:`none`},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:`steps(1) cm-blink 1.2s infinite`},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:`1.2px solid black`,marginLeft:`-0.6px`,pointerEvents:`none`},".cm-cursor":{display:`none`},"&dark .cm-cursor":{borderLeftColor:`#ddd`},".cm-selectionHandle":{backgroundColor:`currentColor`,width:`1.5px`},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:`""`,backgroundColor:`inherit`,borderRadius:`50%`,width:`8px`,height:`8px`,position:`absolute`,left:`-3.25px`},".cm-selectionHandle-start::before":{top:`-8px`},".cm-selectionHandle-end::before":{bottom:`-8px`},".cm-dropCursor":{position:`absolute`},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:`block`},".cm-iso":{unicodeBidi:`isolate`},".cm-announced":{position:`fixed`,top:`-10000px`},"@media print":{".cm-announced":{display:`none`}},"&light .cm-activeLine":{backgroundColor:`#cceeff44`},"&dark .cm-activeLine":{backgroundColor:`#99eeff33`},"&light .cm-specialChar":{color:`red`},"&dark .cm-specialChar":{color:`#f78`},".cm-gutters":{flexShrink:0,display:`flex`,height:`100%`,boxSizing:`border-box`,zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:`#f5f5f5`,color:`#6c6c6c`,border:`0px solid #ddd`,"&.cm-gutters-before":{borderRightWidth:`1px`},"&.cm-gutters-after":{borderLeftWidth:`1px`}},"&dark .cm-gutters":{backgroundColor:`#333338`,color:`#ccc`},".cm-gutter":{display:`flex !important`,flexDirection:`column`,flexShrink:0,boxSizing:`border-box`,minHeight:`100%`,overflow:`hidden`},".cm-gutterElement":{boxSizing:`border-box`},".cm-lineNumbers .cm-gutterElement":{padding:`0 3px 0 5px`,minWidth:`20px`,textAlign:`right`,whiteSpace:`nowrap`},"&light .cm-activeLineGutter":{backgroundColor:`#e2f2ff`},"&dark .cm-activeLineGutter":{backgroundColor:`#222227`},".cm-panels":{boxSizing:`border-box`,position:`sticky`,left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:`#f5f5f5`,color:`black`},"&light .cm-panels-top":{borderBottom:`1px solid #ddd`},"&light .cm-panels-bottom":{borderTop:`1px solid #ddd`},"&dark .cm-panels":{backgroundColor:`#333338`,color:`white`},".cm-dialog":{padding:`2px 19px 4px 6px`,position:`relative`,"& label":{fontSize:`80%`}},".cm-dialog-close":{position:`absolute`,top:`3px`,right:`4px`,backgroundColor:`inherit`,border:`none`,font:`inherit`,fontSize:`14px`,padding:`0`},".cm-tab":{display:`inline-block`,overflow:`hidden`,verticalAlign:`bottom`},".cm-widgetBuffer":{verticalAlign:`text-top`,height:`1em`,width:0,display:`inline`},".cm-placeholder":{color:`#888`,display:`inline-block`,verticalAlign:`top`,userSelect:`none`},".cm-highlightSpace":{backgroundImage:`radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)`,backgroundPosition:`center`},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:`auto 100%`,backgroundPosition:`right 90%`,backgroundRepeat:`no-repeat`},".cm-trailingSpace":{backgroundColor:`#ff332255`},".cm-button":{verticalAlign:`middle`,color:`inherit`,fontSize:`70%`,padding:`.2em 1em`,borderRadius:`1px`},"&light .cm-button":{backgroundImage:`linear-gradient(#eff1f5, #d9d9df)`,border:`1px solid #888`,"&:active":{backgroundImage:`linear-gradient(#b4b4b4, #d0d3d6)`}},"&dark .cm-button":{backgroundImage:`linear-gradient(#393939, #111)`,border:`1px solid #888`,"&:active":{backgroundImage:`linear-gradient(#111, #333)`}},".cm-textfield":{verticalAlign:`middle`,color:`inherit`,fontSize:`70%`,border:`1px solid silver`,padding:`.2em .5em`},"&light .cm-textfield":{backgroundColor:`white`},"&dark .cm-textfield":{border:`1px solid #555`,backgroundColor:`inherit`}},c2),d2={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},f2=NZ.ie&&NZ.ie_version<=11,p2=class{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new uQ,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let e of t)this.queue.push(e);(NZ.ie&&NZ.ie_version<=11||NZ.ios&&e.composing)&&t.some(e=>e.type==`childList`&&e.removedNodes.length||e.type==`characterData`&&e.oldValue.length>e.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&NZ.android&&e.constructor.EDIT_CONTEXT!==!1&&!(NZ.chrome&&NZ.chrome_version<126)&&(this.editContext=new _2(e),e.state.facet(s$)&&(e.contentDOM.editContext=this.editContext.editContext)),f2&&(this.onCharData=e=>{this.queue.push({target:e.target,type:`characterData`,oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia(`print`)),typeof ResizeObserver==`function`&&(this.resizeScroll=new ResizeObserver(()=>{this.view.docView?.lastUpdate{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent(`Event`)))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent(`Event`))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers(`scroll`,e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type==`change`||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,n)=>t!=e[n]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:n}=this,r=this.selectionRange;if(n.state.facet(s$)?n.root.activeElement!=this.dom:!QZ(this.dom,r))return;let i=r.anchorNode&&n.docView.tile.nearest(r.anchorNode);if(i&&i.isWidget()&&i.widget.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(NZ.ie&&NZ.ie_version<=11||NZ.android&&NZ.chrome)&&!n.state.selection.main.empty&&r.focusNode&&eQ(r.focusNode,r.focusOffset,r.anchorNode,r.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=XZ(e.root);if(!t)return!1;let n=NZ.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&g2(this.view,t)||t;if(!n||this.selectionRange.eq(n))return!1;let r=QZ(this.dom,n);return r&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let e=this.delayedAndroidKey;e&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=e.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&e.force&&hQ(this.dom,e.key,e.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(e)}(!this.delayedAndroidKey||e==`Enter`)&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,n=-1,r=!1;for(let i of e){let e=this.readMutation(i);e&&(e.typeOver&&(r=!0),t==-1?{from:t,to:n}=e:(t=Math.min(e.from,t),n=Math.max(e.to,n)))}return{from:t,to:n,typeOver:r}}readChange(){let{from:e,to:t,typeOver:n}=this.processRecords(),r=this.selectionChanged&&QZ(this.dom,this.selectionRange);if(e<0&&!r)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let i=new A1(this.view,e,t,n);return this.view.docView.domChanged={newSel:i.newSel?i.newSel.main:null},i}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return this.view.requestMeasure(),!1;let n=this.view.state,r=M1(this.view,t);return this.view.state==n&&(t.domChanged||t.newSel&&!R1(this.view.state.selection,t.newSel.main))&&this.view.update([]),r}readMutation(e){let t=this.view.docView.tile.nearest(e.target);if(!t||t.isWidget())return null;if(t.markDirty(e.type==`attributes`),e.type==`childList`){let n=m2(t,e.previousSibling||e.target.previousSibling,-1),r=m2(t,e.nextSibling||e.target.nextSibling,1);return{from:n?t.posAfter(n):t.posAtStart,to:r?t.posBefore(r):t.posAtEnd,typeOver:!1}}else if(e.type==`characterData`)return{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue};else return null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener(`resize`,this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener(`change`,this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener(`beforeprint`,this.onPrint),e.addEventListener(`scroll`,this.onScroll),e.document.addEventListener(`selectionchange`,this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener(`scroll`,this.onScroll),e.removeEventListener(`resize`,this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener(`change`,this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener(`beforeprint`,this.onPrint),e.document.removeEventListener(`selectionchange`,this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(s$)!=e.state.facet(s$)&&(e.view.contentDOM.editContext=e.state.facet(s$)?this.editContext.editContext:null))}destroy(){var e,t,n;this.stop(),(e=this.intersection)==null||e.disconnect(),(t=this.gapIntersection)==null||t.disconnect(),(n=this.resizeScroll)==null||n.disconnect();for(let e of this.scrollTargets)e.removeEventListener(`scroll`,this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function m2(e,t,n){for(;t;){let r=E$.get(t);if(r&&r.parent==e)return r;let i=t.parentNode;t=i==e.dom?n>0?t.nextSibling:t.previousSibling:i}return null}function h2(e,t){let n=t.startContainer,r=t.startOffset,i=t.endContainer,a=t.endOffset,o=e.docView.domAtPos(e.state.selection.main.anchor,1);return eQ(o.node,o.offset,i,a)&&([n,r,i,a]=[i,a,n,r]),{anchorNode:n,anchorOffset:r,focusNode:i,focusOffset:a}}function g2(e,t){if(t.getComposedRanges){let n=t.getComposedRanges(e.root)[0];if(n)return h2(e,n)}let n=null;function r(e){e.preventDefault(),e.stopImmediatePropagation(),n=e.getTargetRanges()[0]}return e.contentDOM.addEventListener(`beforeinput`,r,!0),e.dom.ownerDocument.execCommand(`indent`),e.contentDOM.removeEventListener(`beforeinput`,r,!0),n?h2(e,n):null}var _2=class{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let t=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=n=>{let r=e.state.selection.main,{anchor:i,head:a}=r,o=this.toEditorPos(n.updateRangeStart),s=this.toEditorPos(n.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:n.updateRangeStart,editorBase:o,drifted:!1});let c=s-o>n.text.length;o==this.from&&ithis.to&&(s=i);let l=F1(e.state.sliceDoc(o,s),n.text,(c?r.from:r.to)-o,c?`end`:null);if(!l){let t=Y.single(this.toEditorPos(n.selectionStart),this.toEditorPos(n.selectionEnd));R1(t,r)||e.dispatch({selection:t,userEvent:`select`});return}let u={from:l.from+o,to:l.toA+o,insert:yY.of(n.text.slice(l.from,l.toB).split(` +`))};if((NZ.mac||NZ.android)&&u.from==a-1&&/^\. ?$/.test(n.text)&&e.contentDOM.getAttribute(`autocorrect`)==`off`&&(u={from:o,to:s,insert:yY.of([n.text.replace(`.`,` `)])}),this.pendingContextChange=u,!e.state.readOnly){let t=this.to-this.from+(u.to-u.from+u.insert.length);N1(e,u,Y.single(this.toEditorPos(n.selectionStart,t),this.toEditorPos(n.selectionEnd,t)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),u.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,n.updateRangeStart-1),Math.min(t.text.length,n.updateRangeStart+1)))&&this.handlers.compositionend(n)},this.handlers.characterboundsupdate=n=>{let r=[],i=null;for(let t=this.toEditorPos(n.rangeStart),a=this.toEditorPos(n.rangeEnd);t{let n=[];for(let e of t.getTextFormats()){let t=e.underlineStyle,r=e.underlineThickness;if(!/none/i.test(t)&&!/none/i.test(r)){let i=this.toEditorPos(e.rangeStart),a=this.toEditorPos(e.rangeEnd);if(i{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:t}=this.composing;this.composing=null,t&&this.reset(e.state)}};for(let e in this.handlers)t.addEventListener(e,this.handlers[e]);this.measureReq={read:e=>{this.editContext.updateControlBounds(e.contentDOM.getBoundingClientRect());let t=XZ(e.root);t&&t.rangeCount&&this.editContext.updateSelectionBounds(t.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,n=!1,r=this.pendingContextChange;return e.changes.iterChanges((i,a,o,s,c)=>{if(n)return;let l=c.length-(a-i);if(r&&a>=r.to)if(r.from==i&&r.to==a&&r.insert.eq(c)){r=this.pendingContextChange=null,t+=l,this.to+=l;return}else r=null,this.revertPending(e.state);if(i+=t,a+=t,a<=this.from)this.from+=l,this.to+=l;else if(ithis.to||this.to-this.from+c.length>3e4){n=!0;return}this.editContext.updateText(this.toContextPos(i),this.toContextPos(a),c.toString()),this.to+=l}t+=l}),r&&!n&&this.revertPending(e.state),!n}update(e){let t=this.pendingContextChange,n=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(n.from,n.to)&&e.transactions.some(e=>!e.isUserEvent(`input.type`)&&e.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,n=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),r=this.toContextPos(t.head);(this.editContext.selectionStart!=n||this.editContext.selectionEnd!=r)&&this.editContext.updateSelection(n,r)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let n=this.composing;return n&&n.drifted?n.editorBase+(e-n.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},v2=class e{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement(`div`),this.scrollDOM=document.createElement(`div`),this.scrollDOM.tabIndex=-1,this.scrollDOM.className=`cm-scroller`,this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement(`div`),this.announceDOM.className=`cm-announced`,this.announceDOM.setAttribute(`aria-live`,`polite`),this.dom=document.createElement(`div`),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:t}=e;this.dispatchTransactions=e.dispatchTransactions||t&&(e=>e.forEach(e=>t(e,this)))||(e=>this.update(e)),this.dispatch=this.dispatch.bind(this),this._root=e.root||gQ(e.parent)||document,this.viewState=new q0(this,e.state||RX.create(e)),e.scrollTo&&e.scrollTo.is(i$)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(l$).map(e=>new d$(e));for(let e of this.plugins)e.update(this);this.observer=new p2(this),this.inputState=new z1(this),this.inputState.ensureHandlers(this.plugins),this.docView=new $$(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),document.fonts?.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent=`refresh`,this.requestMeasure()})}dispatch(...e){let t=e.length==1&&e[0]instanceof wX?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(t){if(this.updateState!=0)throw Error(`Calls to EditorView.update are not allowed while an update is in progress`);let n=!1,r=!1,i,a=this.state;for(let e of t){if(e.startState!=a)throw RangeError(`Trying to update state with a transaction that doesn't start from the previous state.`);a=e.state}if(this.destroyed){this.viewState.state=a;return}let o=this.hasFocus,s=0,c=null;t.some(e=>e.annotation(_0))?(this.inputState.notifiedFocused=o,s=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,c=v0(a,o),c||(s=1));let l=this.observer.delayedAndroidKey,u=null;if(l?(this.observer.clearDelayedAndroidKey(),u=this.observer.readChange(),(u&&!this.state.doc.eq(a.doc)||!this.state.selection.eq(a.selection))&&(u=null)):this.observer.clear(),a.facet(RX.phrases)!=this.state.facet(RX.phrases))return this.setState(a);i=w$.create(this,a,t),i.flags|=s;let d=this.viewState.scrollTarget;try{this.updateState=2;for(let n of t){if(d&&=d.map(n.changes),n.scrollIntoView){let{main:t}=n.state.selection,{x:r,y:i}=this.state.facet(e.cursorScrollMargin);d=new r$(t.empty?t:Y.cursor(t.head,t.head>t.anchor?-1:1),`nearest`,`nearest`,i,r)}for(let e of n.effects)e.is(i$)&&(d=e.value.clip(this.state))}this.viewState.update(i,d),this.bidiCache=x2.update(this.bidiCache,i.changes),i.empty||(this.updatePlugins(i),this.inputState.update(i)),n=this.docView.update(i),this.state.facet(S$)!=this.styleModules&&this.mountStyles(),r=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(n,t.some(e=>e.isUserEvent(`select.pointer`)))}finally{this.updateState=0}if(i.startState.facet(r2)!=i.state.facet(r2)&&(this.viewState.mustMeasureContent=!0),(n||r||d||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),n&&this.docViewUpdate(),!i.empty)for(let e of this.state.facet(YQ))try{e(i)}catch(e){o$(this.state,e,`update listener`)}(c||u)&&Promise.resolve().then(()=>{c&&this.state==c.startState&&this.dispatch(c),u&&!M1(this,u)&&l.force&&hQ(this.contentDOM,l.key,l.keyCode)})}setState(e){if(this.updateState!=0)throw Error(`Calls to EditorView.setState are not allowed while an update is in progress`);if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let e of this.plugins)e.destroy(this);this.viewState=new q0(this,e),this.plugins=e.facet(l$).map(e=>new d$(e)),this.pluginMap.clear();for(let e of this.plugins)e.update(this);this.docView.destroy(),this.docView=new $$(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(l$),n=e.state.facet(l$);if(t!=n){let r=[];for(let i of n){let n=t.indexOf(i);if(n<0)r.push(new d$(i));else{let t=this.plugins[n];t.mustUpdate=e,r.push(t)}}for(let t of this.plugins)t.mustUpdate!=e&&t.destroy(this);this.plugins=r,this.pluginMap.clear()}else for(let t of this.plugins)t.mustUpdate=e;for(let e=0;e-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,n=this.viewState.scrollParent,r=this.viewState.getScrollOffset(),{scrollAnchorPos:i,scrollAnchorHeight:a}=this.viewState;Math.abs(r-this.viewState.scrollOffset)>1&&(a=-1),this.viewState.scrollAnchorHeight=-1;try{for(let e=0;;e++){if(a<0)if(vQ(n||this.win))i=-1,a=this.viewState.heightMap.height;else{let e=this.viewState.scrollAnchorAt(r);i=e.from,a=e.top}this.updateState=1;let o=this.viewState.measure();if(!o&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(e>5){console.warn(this.measureRequests.length?`Measure loop restarted more than 5 times`:`Viewport failed to stabilize`);break}let s=[];o&4||([this.measureRequests,s]=[s,this.measureRequests]);let c=s.map(e=>{try{return e.read(this)}catch(e){return o$(this.state,e),b2}}),l=w$.create(this,this.state,[]),u=!1;l.flags|=o,t?t.flags|=o:t=l,this.updateState=2,l.empty||(this.updatePlugins(l),this.inputState.update(l),this.updateAttrs(),u=this.docView.update(l),u&&this.docViewUpdate());for(let e=0;e1||e<-1)&&(n==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){r+=e,n?n.scrollTop+=e:this.win.scrollBy(0,e),a=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let e of this.state.facet(YQ))e(t)}get themeClasses(){return a2+` `+(this.state.facet(i2)?s2:o2)+` `+this.state.facet(r2)}updateAttrs(){let e=S2(this,f$,{class:`cm-editor`+(this.hasFocus?` cm-focused `:` `)+this.themeClasses}),t={spellcheck:`false`,autocorrect:`off`,autocapitalize:`off`,writingsuggestions:`false`,translate:`no`,contenteditable:this.state.facet(s$)?`true`:`false`,class:`cm-content`,style:`${NZ.tabSize}: ${this.state.tabSize}`,role:`textbox`,"aria-multiline":`true`};this.state.readOnly&&(t[`aria-readonly`]=`true`),S2(this,p$,t);let n=this.observer.ignore(()=>{let n=RZ(this.contentDOM,this.contentAttrs,t),r=RZ(this.dom,this.editorAttrs,e);return n||r});return this.editorAttrs=e,this.contentAttrs=t,n}showAnnouncements(t){let n=!0;for(let r of t)for(let t of r.effects)if(t.is(e.announce)){n&&(this.announceDOM.textContent=``),n=!1;let e=this.announceDOM.appendChild(document.createElement(`div`));e.textContent=t.value}}mountStyles(){this.styleModules=this.state.facet(S$);let t=this.state.facet(e.cspNonce);uZ.mount(this.root,this.styleModules.concat(u2).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw Error(`Reading the editor layout isn't allowed during an update`);this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;tt.plugin==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,n){return x1(this,e,g1(this,e,t,n))}moveByGroup(e,t){return x1(this,e,g1(this,e,t,t=>_1(this,e.head,t)))}visualLineSide(e,t){let n=this.bidiSpans(e),r=this.textDirectionAt(e.from),i=n[t?n.length-1:0];return Y.cursor(i.side(t,r)+e.from,i.forward(!t,r)?1:-1)}moveToLineBoundary(e,t,n=!0){return h1(this,e,t,n)}moveVertically(e,t,n){return x1(this,e,v1(this,e,t,n))}domAtPos(e,t=1){return this.docView.domAtPos(e,t)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){this.readMeasured();let n=C1(this,e,t);return n&&n.pos}posAndSideAtCoords(e,t=!0){return this.readMeasured(),C1(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let n=this.docView.coordsAt(e,t);if(!n||n.left==n.right)return n;let r=this.state.doc.lineAt(e),i=this.bidiSpans(r),a=i[MQ.find(i,e-r.from,-1,t)];return aQ(n,a.dir==SQ.LTR==t>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(e$)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>y2)return VQ(e.length);let t=this.textDirectionAt(e.from),n;for(let r of this.bidiCache)if(r.from==e.from&&r.dir==t&&(r.fresh||NQ(r.isolates,n=y$(this,e))))return r.order;n||=y$(this,e);let r=BQ(e.text,t,n);return this.bidiCache.push(new x2(e.from,e.to,t,n,!0,r)),r}get hasFocus(){return(this.dom.ownerDocument.hasFocus()||NZ.safari&&this.inputState?.lastContextMenu>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{fQ(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){return i$.of(new r$(typeof e==`number`?Y.cursor(e):e,t.y??`nearest`,t.x??`nearest`,t.yMargin??5,t.xMargin??5))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,n=this.viewState.scrollAnchorAt(e);return i$.of(new r$(Y.cursor(n.from),`start`,`start`,n.top-e,t,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e==`boolean`?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return u$.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return u$.define(()=>({}),{eventObservers:e})}static theme(e,t){let n=uZ.newName(),r=[r2.of(n),S$.of(l2(`.${n}`,e))];return t&&t.dark&&r.push(i2.of(!0)),r}static baseTheme(e){return aX.lowest(S$.of(l2(`.`+a2,e,c2)))}static findFromDOM(e){let t=e.querySelector(`.cm-content`);return(t&&E$.get(t)||E$.get(e))?.root?.view||null}};v2.styleModule=S$,v2.inputHandler=XQ,v2.clipboardInputFilter=QQ,v2.clipboardOutputFilter=$Q,v2.scrollHandler=n$,v2.focusChangeEffect=ZQ,v2.perLineTextDirection=e$,v2.exceptionSink=JQ,v2.updateListener=YQ,v2.editable=s$,v2.mouseSelectionStyle=qQ,v2.dragMovesSelection=KQ,v2.clickAddsSelectionRange=GQ,v2.decorations=m$,v2.blockWrappers=h$,v2.outerDecorations=g$,v2.atomicRanges=_$,v2.bidiIsolatedRanges=v$,v2.cursorScrollMargin=YY.define({combine:e=>{let t=5,n=5;for(let r of e)typeof r==`number`?t=n=r:{x:t,y:n}=r;return{x:t,y:n}}}),v2.scrollMargins=b$,v2.darkTheme=i2,v2.cspNonce=YY.define({combine:e=>e.length?e[0]:``}),v2.contentAttributes=p$,v2.editorAttributes=f$,v2.lineWrapping=v2.contentAttributes.of({class:`cm-lineWrapping`}),v2.announce=CX.define();var y2=4096,b2={},x2=class e{constructor(e,t,n,r,i,a){this.from=e,this.to=t,this.dir=n,this.isolates=r,this.fresh=i,this.order=a}static update(t,n){if(n.empty&&!t.some(e=>e.fresh))return t;let r=[],i=t.length?t[t.length-1].dir:SQ.LTR;for(let a=Math.max(0,t.length-10);a=0;i--){let t=r[i],a=typeof t==`function`?t(e):t;a&&PZ(a,n)}return n}var C2=NZ.mac?`mac`:NZ.windows?`win`:NZ.linux?`linux`:`key`;function w2(e,t){let n=e.split(/-(?!$)/),r=n[n.length-1];r==`Space`&&(r=` `);let i,a,o,s;for(let e=0;ee.concat(t),[]))),n}function A2(e,t,n){return F2(k2(e.state),t,e,n)}var j2=null,M2=4e3;function N2(e,t=C2){let n=Object.create(null),r=Object.create(null),i=(e,t)=>{let n=r[e];if(n==null)r[e]=t;else if(n!=t)throw Error(`Key binding `+e+` is used both as a regular binding and as a multi-stroke prefix`)},a=(e,r,a,o,s)=>{let c=n[e]||(n[e]=Object.create(null)),l=r.split(/ (?!$)/).map(e=>w2(e,t));for(let t=1;t{let r=j2={view:t,prefix:n,scope:e};return setTimeout(()=>{j2==r&&(j2=null)},M2),!0}]})}let u=l.join(` `);i(u,!1);let d=c[u]||(c[u]={preventDefault:!1,stopPropagation:!1,run:(c._any?.run)?.slice()||[]});a&&d.run.push(a),o&&(d.preventDefault=!0),s&&(d.stopPropagation=!0)};for(let r of e){let e=r.scope?r.scope.split(` `):[`editor`];if(r.any)for(let t of e){let e=n[t]||(n[t]=Object.create(null));e._any||={preventDefault:!1,stopPropagation:!1,run:[]};let{any:i}=r;for(let t in e)e[t].run.push(e=>i(e,P2))}let i=r[t]||r.key;if(i)for(let t of e)a(t,i,r.run,r.preventDefault,r.stopPropagation),r.shift&&a(t,`Shift-`+i,r.shift,r.preventDefault,r.stopPropagation)}return n}var P2=null;function F2(e,t,n,r){P2=t;let i=yZ(t),a=FY(NY(i,0))==i.length&&i!=` `,o=``,s=!1,c=!1,l=!1;j2&&j2.view==n&&j2.scope==r&&(o=j2.prefix+` `,W1.indexOf(t.keyCode)<0&&(c=!0,j2=null));let u=new Set,d=e=>{if(e){for(let t of e.run)if(!u.has(t)&&(u.add(t),t(n)))return e.stopPropagation&&(l=!0),!0;e.preventDefault&&(e.stopPropagation&&(l=!0),c=!0)}return!1},f=e[r],p,m;return f&&(d(f[o+T2(i,t,!a)])?s=!0:a&&(t.altKey||t.metaKey||t.ctrlKey)&&!(NZ.windows&&t.ctrlKey&&t.altKey)&&!(NZ.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=pZ[t.keyCode])&&p!=i?(d(f[o+T2(p,t,!0)])||t.shiftKey&&(m=mZ[t.keyCode])!=i&&m!=p&&d(f[o+T2(m,t,!1)]))&&(s=!0):a&&t.shiftKey&&d(f[o+T2(i,t,!0)])&&(s=!0),!s&&d(f._any)&&(s=!0)),c&&(s=!0),s&&l&&t.stopPropagation(),P2=null,s}var I2=class e{constructor(e,t,n,r,i){this.className=e,this.left=t,this.top=n,this.width=r,this.height=i}draw(){let e=document.createElement(`div`);return e.className=this.className,this.adjust(e),e}update(e,t){return t.className==this.className?(this.adjust(e),!0):!1}adjust(e){e.style.left=this.left+`px`,e.style.top=this.top+`px`,this.width!=null&&(e.style.width=this.width+`px`),e.style.height=this.height+`px`}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(t,n,r){if(r.empty){let i=t.coordsAtPos(r.head,r.assoc||1);if(!i)return[];let a=L2(t);return[new e(n,i.left-a.left,i.top-a.top,null,i.bottom-i.top)]}else return z2(t,n,r)}};function L2(e){let t=e.scrollDOM.getBoundingClientRect();return{left:(e.textDirection==SQ.LTR?t.left:t.right-e.scrollDOM.clientWidth*e.scaleX)-e.scrollDOM.scrollLeft*e.scaleX,top:t.top-e.scrollDOM.scrollTop*e.scaleY}}function R2(e,t,n,r){let i=e.coordsAtPos(t,n*2);if(!i)return r;let a=e.dom.getBoundingClientRect(),o=(i.top+i.bottom)/2,s=e.posAtCoords({x:a.left+1,y:o}),c=e.posAtCoords({x:a.right-1,y:o});return s==null||c==null?r:{from:Math.max(r.from,Math.min(s,c)),to:Math.min(r.to,Math.max(s,c))}}function z2(e,t,n){if(n.to<=e.viewport.from||n.from>=e.viewport.to)return[];let r=Math.max(n.from,e.viewport.from),i=Math.min(n.to,e.viewport.to),a=e.textDirection==SQ.LTR,o=e.contentDOM,s=o.getBoundingClientRect(),c=L2(e),l=o.querySelector(`.cm-line`),u=l&&window.getComputedStyle(l),d=s.left+(u?parseInt(u.paddingLeft)+Math.min(0,parseInt(u.textIndent)):0),f=s.right-(u?parseInt(u.paddingRight):0),p=m1(e,r,1),m=m1(e,i,-1),h=p.type==VZ.Text?p:null,g=m.type==VZ.Text?m:null;if(h&&(e.lineWrapping||p.widgetLineBreaks)&&(h=R2(e,r,1,h)),g&&(e.lineWrapping||m.widgetLineBreaks)&&(g=R2(e,i,-1,g)),h&&g&&h.from==g.from&&h.to==g.to)return v(y(n.from,n.to,h));{let t=h?y(n.from,null,h):b(p,!1),r=g?y(null,n.to,g):b(m,!0),i=[];return(h||p).to<(g||m).from-(h&&g?1:0)||p.widgetLineBreaks>1&&t.bottom+e.defaultLineHeight/2l&&r.from=a)break;s>i&&c(Math.max(e,i),t==null&&e<=l,Math.min(s,a),n==null&&s>=u,o.dir)}if(i=r.to+1,i>=a)break}return s.length==0&&c(l,t==null,u,n==null,e.textDirection),{top:i,bottom:o,horizontal:s}}function b(e,t){let n=s.top+(t?e.top:e.bottom);return{top:n,bottom:n,horizontal:[]}}}function B2(e,t){return e.constructor==t.constructor&&e.eq(t)}var V2=class{constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement(`div`)),this.dom.classList.add(`cm-layer`),t.above&&this.dom.classList.add(`cm-layer-above`),t.class&&this.dom.classList.add(t.class),this.scale(),this.dom.setAttribute(`aria-hidden`,`true`),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(H2)!=e.state.facet(H2)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let t=0,n=e.facet(H2);for(;t!B2(e,this.drawn[t]))){let t=this.dom.firstChild,n=0;for(let r of e)r.update&&t&&r.constructor&&this.drawn[n].constructor&&r.update(t,this.drawn[n])?(t=t.nextSibling,n++):this.dom.insertBefore(r.draw(),t);for(;t;){let e=t.nextSibling;t.remove(),t=e}this.drawn=e,NZ.webkit&&(this.dom.style.display=this.dom.firstChild?``:`none`)}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},H2=YY.define();function U2(e){return[u$.define(t=>new V2(t,e)),H2.of(e)]}var W2=YY.define({combine(e){return zX(e,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function G2(e={}){return[W2.of(e),q2,Y2,X2,t$.of(!0)]}function K2(e){return e.startState.facet(W2)!=e.state.facet(W2)}var q2=U2({above:!0,markers(e){let{state:t}=e,n=t.facet(W2),r=[];for(let i of t.selection.ranges){let a=i==t.selection.main;if(i.empty||n.drawRangeCursor&&!(a&&NZ.ios&&n.iosSelectionHandles)){let t=a?`cm-cursor cm-cursor-primary`:`cm-cursor cm-cursor-secondary`,n=i.empty?i:Y.cursor(i.head,i.assoc);for(let i of I2.forRange(e,t,n))r.push(i)}}return r},update(e,t){e.transactions.some(e=>e.selection)&&(t.style.animationName=t.style.animationName==`cm-blink`?`cm-blink2`:`cm-blink`);let n=K2(e);return n&&J2(e.state,t),e.docChanged||e.selectionSet||n},mount(e,t){J2(t.state,e)},class:`cm-cursorLayer`});function J2(e,t){t.style.animationDuration=e.facet(W2).cursorBlinkRate+`ms`}var Y2=U2({above:!1,markers(e){let t=[],{main:n,ranges:r}=e.state.selection;for(let n of r)if(!n.empty)for(let r of I2.forRange(e,`cm-selectionBackground`,n))t.push(r);if(NZ.ios&&!n.empty&&e.state.facet(W2).iosSelectionHandles){for(let r of I2.forRange(e,`cm-selectionHandle cm-selectionHandle-start`,Y.cursor(n.from,1)))t.push(r);for(let r of I2.forRange(e,`cm-selectionHandle cm-selectionHandle-end`,Y.cursor(n.to,1)))t.push(r)}return t},update(e,t){return e.docChanged||e.selectionSet||e.viewportChanged||K2(e)},class:`cm-selectionLayer`}),X2=aX.highest(v2.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:`transparent !important`},caretColor:`transparent !important`},".cm-content":{caretColor:`transparent !important`,"& :focus":{caretColor:`initial !important`,"&::selection, & ::selection":{backgroundColor:`Highlight !important`}}}})),Z2=CX.define({map(e,t){return e==null?null:t.mapPos(e)}}),Q2=nX.define({create(){return null},update(e,t){return e!=null&&(e=t.changes.mapPos(e)),t.effects.reduce((e,t)=>t.is(Z2)?t.value:e,e)}}),$2=u$.fromClass(class{constructor(e){this.view=e,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(e){var t;let n=e.state.field(Q2);n==null?this.cursor!=null&&((t=this.cursor)==null||t.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement(`div`)),this.cursor.className=`cm-dropCursor`),(e.startState.field(Q2)!=n||e.docChanged||e.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:e}=this,t=e.state.field(Q2),n=t!=null&&e.coordsAtPos(t);if(!n)return null;let r=e.scrollDOM.getBoundingClientRect();return{left:n.left-r.left+e.scrollDOM.scrollLeft*e.scaleX,top:n.top-r.top+e.scrollDOM.scrollTop*e.scaleY,height:n.bottom-n.top}}drawCursor(e){if(this.cursor){let{scaleX:t,scaleY:n}=this.view;e?(this.cursor.style.left=e.left/t+`px`,this.cursor.style.top=e.top/n+`px`,this.cursor.style.height=e.height/n+`px`):this.cursor.style.left=`-100000px`}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(e){this.view.state.field(Q2)!=e&&this.view.dispatch({effects:Z2.of(e)})}},{eventObservers:{dragover(e){this.setDropPos(this.view.posAtCoords({x:e.clientX,y:e.clientY}))},dragleave(e){(e.target==this.view.contentDOM||!this.view.contentDOM.contains(e.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function e4(){return[Q2,$2]}/x/.unicode;function t4(){return r4}var n4=HZ.line({class:`cm-activeLine`}),r4=u$.fromClass(class{constructor(e){this.decorations=this.getDeco(e)}update(e){(e.docChanged||e.selectionSet)&&(this.decorations=this.getDeco(e.view))}getDeco(e){let t=-1,n=[];for(let r of e.state.selection.ranges){let i=e.lineBlockAt(r.head);i.from>t&&(n.push(n4.range(i.from)),t=i.from)}return HZ.set(n)}},{decorations:e=>e.decorations}),i4=2e3;function a4(e,t,n){let r=Math.min(t.line,n.line),i=Math.max(t.line,n.line),a=[];if(t.off>i4||n.off>i4||t.col<0||n.col<0){let o=Math.min(t.off,n.off),s=Math.max(t.off,n.off);for(let t=r;t<=i;t++){let n=e.doc.line(t);n.length<=s&&a.push(Y.range(n.from+o,n.to+s))}}else{let o=Math.min(t.col,n.col),s=Math.max(t.col,n.col);for(let t=r;t<=i;t++){let n=e.doc.line(t),r=aZ(n.text,o,e.tabSize,!0);if(r<0)a.push(Y.cursor(n.to));else{let t=aZ(n.text,s,e.tabSize);a.push(Y.range(n.from+r,n.from+t))}}}return a}function o4(e,t){let n=e.coordsAtPos(e.viewport.from);return n?Math.round(Math.abs((n.left-t)/e.defaultCharacterWidth)):-1}function s4(e,t){let n=e.posAtCoords({x:t.clientX,y:t.clientY},!1),r=e.state.doc.lineAt(n),i=n-r.from,a=i>i4?-1:i==r.length?o4(e,t.clientX):iZ(r.text,e.state.tabSize,n-r.from);return{line:r.number,col:a,off:i}}function c4(e,t){let n=s4(e,t),r=e.state.selection;return n?{update(e){if(e.docChanged){let t=e.changes.mapPos(e.startState.doc.line(n.line).from),i=e.state.doc.lineAt(t);n={line:i.number,col:n.col,off:Math.min(n.off,i.length)},r=r.map(e.changes)}},get(t,i,a){let o=s4(e,t);if(!o)return r;let s=a4(e.state,n,o);return s.length?a?Y.create(s.concat(r.ranges)):Y.create(s):r}}:null}function l4(e){let t=e?.eventFilter||(e=>e.altKey&&e.button==0);return v2.mouseSelectionStyle.of((e,n)=>t(n)?c4(e,n):null)}var u4={Alt:[18,e=>!!e.altKey],Control:[17,e=>!!e.ctrlKey],Shift:[16,e=>!!e.shiftKey],Meta:[91,e=>!!e.metaKey]},d4={style:`cursor: crosshair`};function f4(e={}){let[t,n]=u4[e.key||`Alt`],r=u$.fromClass(class{constructor(e){this.view=e,this.isDown=!1}set(e){this.isDown!=e&&(this.isDown=e,this.view.update([]))}},{eventObservers:{keydown(e){this.set(e.keyCode==t||n(e))},keyup(e){(e.keyCode==t||!n(e))&&this.set(!1)},mousemove(e){this.set(n(e))}}});return[r,v2.contentAttributes.of(e=>e.plugin(r)?.isDown?d4:null)]}var p4=`-10000px`,m4=class{constructor(e,t,n,r){this.facet=t,this.createTooltipView=n,this.removeTooltipView=r,this.input=e.state.facet(t),this.tooltips=this.input.filter(e=>e);let i=null;this.tooltipViews=this.tooltips.map(e=>i=n(e,i))}update(e,t){var n;let r=e.state.facet(this.facet),i=r.filter(e=>e);if(r===this.input){for(let t of this.tooltipViews)t.update&&t.update(e);return!1}let a=[],o=t?[]:null;for(let n=0;nt[n]=e),t.length=o.length),this.input=r,this.tooltips=i,this.tooltipViews=a,!0}};function h4(e){let t=e.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:t.clientHeight,right:t.clientWidth}}var g4=YY.define({combine:e=>({position:NZ.ios?`absolute`:e.find(e=>e.position)?.position||`fixed`,parent:e.find(e=>e.parent)?.parent||null,tooltipSpace:e.find(e=>e.tooltipSpace)?.tooltipSpace||h4})}),_4=new WeakMap,v4=u$.fromClass(class{constructor(e){this.view=e,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let t=e.state.facet(g4);this.position=t.position,this.parent=t.parent,this.classes=e.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver==`function`?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new m4(e,S4,(e,t)=>this.createTooltip(e,t),e=>{this.resizeObserver&&this.resizeObserver.unobserve(e.dom),e.dom.remove()}),this.above=this.manager.tooltips.map(e=>!!e.above),this.intersectionObserver=typeof IntersectionObserver==`function`?new IntersectionObserver(e=>{Date.now()>this.lastTransaction-50&&e.length>0&&e[e.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),e.win.addEventListener(`resize`,this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement(`div`),this.container.style.position=`relative`,this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let e of this.manager.tooltipViews)this.intersectionObserver.observe(e.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(e){e.transactions.length&&(this.lastTransaction=Date.now());let t=this.manager.update(e,this.above);t&&this.observeIntersection();let n=t||e.geometryChanged,r=e.state.facet(g4);if(r.position!=this.position&&!this.madeAbsolute){this.position=r.position;for(let e of this.manager.tooltipViews)e.dom.style.position=this.position;n=!0}if(r.parent!=this.parent){this.parent&&this.container.remove(),this.parent=r.parent,this.createContainer();for(let e of this.manager.tooltipViews)this.container.appendChild(e.dom);n=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);n&&this.maybeMeasure()}createTooltip(e,t){let n=e.create(this.view),r=t?t.dom:null;if(n.dom.classList.add(`cm-tooltip`),e.arrow&&!n.dom.querySelector(`.cm-tooltip > .cm-tooltip-arrow`)){let e=document.createElement(`div`);e.className=`cm-tooltip-arrow`,n.dom.appendChild(e)}return n.dom.style.position=this.position,n.dom.style.top=p4,n.dom.style.left=`0px`,this.container.insertBefore(n.dom,r),n.mount&&n.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(n.dom),n}destroy(){var e,t,n;this.view.win.removeEventListener(`resize`,this.measureSoon);for(let t of this.manager.tooltipViews)t.dom.remove(),(e=t.destroy)==null||e.call(t);this.parent&&this.container.remove(),(t=this.resizeObserver)==null||t.disconnect(),(n=this.intersectionObserver)==null||n.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let e=1,t=1,n=!1;if(this.position==`fixed`&&this.manager.tooltipViews.length){let{dom:e}=this.manager.tooltipViews[0];if(NZ.safari){let t=e.getBoundingClientRect();n=Math.abs(t.top+1e4)>1||Math.abs(t.left)>1}else n=!!e.offsetParent&&e.offsetParent!=this.container.ownerDocument.body}if(n||this.position==`absolute`)if(this.parent){let n=this.parent.getBoundingClientRect();n.width&&n.height&&(e=n.width/this.parent.offsetWidth,t=n.height/this.parent.offsetHeight)}else ({scaleX:e,scaleY:t}=this.view.viewState);let r=this.view.scrollDOM.getBoundingClientRect(),i=x$(this.view);return{visible:{left:r.left+i.left,top:r.top+i.top,right:r.right-i.right,bottom:r.bottom-i.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((e,t)=>{let n=this.manager.tooltipViews[t];return n.getCoords?n.getCoords(e.pos):this.view.coordsAtPos(e.pos)}),size:this.manager.tooltipViews.map(({dom:e})=>e.getBoundingClientRect()),space:this.view.state.facet(g4).tooltipSpace(this.view),scaleX:e,scaleY:t,makeAbsolute:n}}writeMeasure(e){if(e.makeAbsolute){this.madeAbsolute=!0,this.position=`absolute`;for(let e of this.manager.tooltipViews)e.dom.style.position=`absolute`}let{visible:t,space:n,scaleX:r,scaleY:i}=e,a=[];for(let o=0;o=Math.min(t.bottom,n.bottom)||u.rightMath.min(t.right,n.right)+.1)){l.style.top=p4;continue}let f=s.arrow?c.dom.querySelector(`.cm-tooltip-arrow`):null,p=f?7:0,m=d.right-d.left,h=_4.get(c)??d.bottom-d.top,g=c.offset||x4,_=this.view.textDirection==SQ.LTR,v=d.width>n.right-n.left?_?n.left:n.right-d.width:_?Math.max(n.left,Math.min(u.left-(f?14:0)+g.x,n.right-m)):Math.min(Math.max(n.left,u.left-m+(f?14:0)-g.x),n.right-m),y=this.above[o];!s.strictSide&&(y?u.top-h-p-g.yn.bottom)&&y==n.bottom-u.bottom>u.top-n.top&&(y=this.above[o]=!y);let b=(y?u.top-n.top:n.bottom-u.bottom)-p;if(bv&&e.topx&&(x=y?e.top-h-2-p:e.bottom+p+2);if(this.position==`absolute`?(l.style.top=(x-e.parent.top)/i+`px`,y4(l,(v-e.parent.left)/r)):(l.style.top=x/i+`px`,y4(l,v/r)),f){let e=u.left+(_?g.x:-g.x)-(v+14-7);f.style.left=e/r+`px`}c.overlap!==!0&&a.push({left:v,top:x,right:ee,bottom:x+h}),l.classList.toggle(`cm-tooltip-above`,y),l.classList.toggle(`cm-tooltip-below`,!y),c.positioned&&c.positioned(e.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let e of this.manager.tooltipViews)e.dom.style.top=p4}},{eventObservers:{scroll(){this.maybeMeasure()}}});function y4(e,t){let n=parseInt(e.style.left,10);(isNaN(n)||Math.abs(t-n)>1)&&(e.style.left=t+`px`)}var b4=v2.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:`border-box`},"&light .cm-tooltip":{border:`1px solid #bbb`,backgroundColor:`#f5f5f5`},"&light .cm-tooltip-section:not(:first-child)":{borderTop:`1px solid #bbb`},"&dark .cm-tooltip":{backgroundColor:`#333338`,color:`white`},".cm-tooltip-arrow":{height:`7px`,width:`14px`,position:`absolute`,zIndex:-1,overflow:`hidden`,"&:before, &:after":{content:`''`,position:`absolute`,width:0,height:0,borderLeft:`7px solid transparent`,borderRight:`7px solid transparent`},".cm-tooltip-above &":{bottom:`-7px`,"&:before":{borderTop:`7px solid #bbb`},"&:after":{borderTop:`7px solid #f5f5f5`,bottom:`1px`}},".cm-tooltip-below &":{top:`-7px`,"&:before":{borderBottom:`7px solid #bbb`},"&:after":{borderBottom:`7px solid #f5f5f5`,top:`1px`}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:`#333338`,borderBottomColor:`#333338`},"&:after":{borderTopColor:`transparent`,borderBottomColor:`transparent`}}}),x4={x:0,y:0},S4=YY.define({enables:[v4,b4]});function C4(e,t){let n=e.plugin(v4);if(!n)return null;let r=n.manager.tooltips.indexOf(t);return r<0?null:n.manager.tooltipViews[r]}var w4=YY.define({combine(e){let t,n;for(let r of e)t||=r.topContainer,n||=r.bottomContainer;return{topContainer:t,bottomContainer:n}}});function T4(e,t){let n=e.plugin(E4),r=n?n.specs.indexOf(t):-1;return r>-1?n.panels[r]:null}var E4=u$.fromClass(class{constructor(e){this.input=e.state.facet(k4),this.specs=this.input.filter(e=>e),this.panels=this.specs.map(t=>t(e));let t=e.state.facet(w4);this.top=new D4(e,!0,t.topContainer),this.bottom=new D4(e,!1,t.bottomContainer),this.top.sync(this.panels.filter(e=>e.top)),this.bottom.sync(this.panels.filter(e=>!e.top));for(let e of this.panels)e.dom.classList.add(`cm-panel`),e.mount&&e.mount()}update(e){let t=e.state.facet(w4);this.top.container!=t.topContainer&&(this.top.sync([]),this.top=new D4(e.view,!0,t.topContainer)),this.bottom.container!=t.bottomContainer&&(this.bottom.sync([]),this.bottom=new D4(e.view,!1,t.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let n=e.state.facet(k4);if(n!=this.input){let t=n.filter(e=>e),r=[],i=[],a=[],o=[];for(let n of t){let t=this.specs.indexOf(n),s;t<0?(s=n(e.view),o.push(s)):(s=this.panels[t],s.update&&s.update(e)),r.push(s),(s.top?i:a).push(s)}this.specs=t,this.panels=r,this.top.sync(i),this.bottom.sync(a);for(let e of o)e.dom.classList.add(`cm-panel`),e.mount&&e.mount()}else for(let t of this.panels)t.update&&t.update(e)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:e=>v2.scrollMargins.of(t=>{let n=t.plugin(e);return n&&{top:n.top.scrollMargin(),bottom:n.bottom.scrollMargin()}})}),D4=class{constructor(e,t,n){this.view=e,this.top=t,this.container=n,this.dom=void 0,this.classes=``,this.panels=[],this.syncClasses()}sync(e){for(let t of this.panels)t.destroy&&e.indexOf(t)<0&&t.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&=(this.dom.remove(),void 0);return}if(!this.dom){this.dom=document.createElement(`div`),this.dom.className=this.top?`cm-panels cm-panels-top`:`cm-panels cm-panels-bottom`,this.dom.style[this.top?`top`:`bottom`]=`0`;let e=this.container||this.view.dom;e.insertBefore(this.dom,this.top?e.firstChild:null)}let e=this.dom.firstChild;for(let t of this.panels)if(t.dom.parentNode==this.dom){for(;e!=t.dom;)e=O4(e);e=e.nextSibling}else this.dom.insertBefore(t.dom,e);for(;e;)e=O4(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(` `))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(` `))e&&this.container.classList.add(e)}}};function O4(e){let t=e.nextSibling;return e.remove(),t}var k4=YY.define({enables:E4});function A4(e,t){let n,r=new Promise(e=>n=e),i=e=>P4(e,t,n);e.state.field(j4,!1)?e.dispatch({effects:M4.of(i)}):e.dispatch({effects:CX.appendConfig.of(j4.init(()=>[i]))});let a=N4.of(i);return{close:a,result:r.then(t=>((e.win.queueMicrotask||(t=>e.win.setTimeout(t,10)))(()=>{e.state.field(j4).indexOf(i)>-1&&e.dispatch({effects:a})}),t))}}var j4=nX.define({create(){return[]},update(e,t){for(let n of t.effects)n.is(M4)?e=[n.value].concat(e):n.is(N4)&&(e=e.filter(e=>e!=n.value));return e},provide:e=>k4.computeN([e],t=>t.field(e))}),M4=CX.define(),N4=CX.define();function P4(e,t,n){let r=t.content?t.content(e,()=>o(null)):null;if(!r){if(r=bZ(`form`),t.input){let e=bZ(`input`,t.input);/^(text|password|number|email|tel|url)$/.test(e.type)&&e.classList.add(`cm-textfield`),e.name||=`input`,r.appendChild(bZ(`label`,(t.label||``)+`: `,e))}else r.appendChild(document.createTextNode(t.label||``));r.appendChild(document.createTextNode(` `)),r.appendChild(bZ(`button`,{class:`cm-button`,type:`submit`},t.submitLabel||`OK`))}let i=r.nodeName==`FORM`?[r]:r.querySelectorAll(`form`);for(let e=0;e{e.keyCode==27?(e.preventDefault(),o(null)):e.keyCode==13&&(e.preventDefault(),o(t))}),t.addEventListener(`submit`,e=>{e.preventDefault(),o(t)})}let a=bZ(`div`,r,bZ(`button`,{onclick:()=>o(null),"aria-label":e.state.phrase(`close`),class:`cm-dialog-close`,type:`button`},[`×`]));t.class&&(a.className=t.class),a.classList.add(`cm-dialog`);function o(t){a.contains(a.ownerDocument.activeElement)&&e.focus(),n(t)}return{dom:a,top:t.top,mount:()=>{if(t.focus){let e;e=typeof t.focus==`string`?r.querySelector(t.focus):r.querySelector(`input`)||r.querySelector(`button`),e&&`select`in e?e.select():e&&`focus`in e&&e.focus()}}}}var F4=class extends BX{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}};F4.prototype.elementClass=``,F4.prototype.toDOM=void 0,F4.prototype.mapMode=LY.TrackBefore,F4.prototype.startSide=F4.prototype.endSide=-1,F4.prototype.point=!0;var I4=YY.define(),L4=YY.define(),R4={class:``,renderEmptyElements:!1,elementStyle:``,markers:()=>GX.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:`before`},z4=YY.define();function B4(e){return[H4(),z4.of({...R4,...e})]}var V4=YY.define({combine:e=>e.some(e=>e)});function H4(e){let t=[U4];return e&&e.fixed===!1&&t.push(V4.of(!0)),t}var U4=u$.fromClass(class{constructor(e){this.view=e,this.domAfter=null,this.prevViewport=e.viewport,this.dom=document.createElement(`div`),this.dom.className=`cm-gutters cm-gutters-before`,this.dom.setAttribute(`aria-hidden`,`true`),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+`px`,this.gutters=e.state.facet(z4).map(t=>new q4(e,t)),this.fixed=!e.state.facet(V4);for(let e of this.gutters)e.config.side==`after`?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position=`sticky`),this.syncGutters(!1),e.scrollDOM.insertBefore(this.dom,e.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement(`div`),this.domAfter.className=`cm-gutters cm-gutters-after`,this.domAfter.setAttribute(`aria-hidden`,`true`),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+`px`,this.domAfter.style.position=this.fixed?`sticky`:``,this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(e){if(this.updateGutters(e)){let t=this.prevViewport,n=e.view.viewport,r=Math.min(t.to,n.to)-Math.max(t.from,n.from);this.syncGutters(r<(n.to-n.from)*.8)}if(e.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+`px`;this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(V4)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?`sticky`:``,this.domAfter&&(this.domAfter.style.position=this.fixed?`sticky`:``)),this.prevViewport=e.view.viewport}syncGutters(e){let t=this.dom.nextSibling;e&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let n=GX.iter(this.view.state.facet(I4),this.view.viewport.from),r=[],i=this.gutters.map(e=>new K4(e,this.view.viewport,-this.view.documentPadding.top));for(let e of this.view.viewportLineBlocks)if(r.length&&(r=[]),Array.isArray(e.type)){let t=!0;for(let a of e.type)if(a.type==VZ.Text&&t){G4(n,r,a.from);for(let e of i)e.line(this.view,a,r);t=!1}else if(a.widget)for(let e of i)e.widget(this.view,a)}else if(e.type==VZ.Text){G4(n,r,e.from);for(let t of i)t.line(this.view,e,r)}else if(e.widget)for(let t of i)t.widget(this.view,e);for(let e of i)e.finish();e&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(e){let t=e.startState.facet(z4),n=e.state.facet(z4),r=e.docChanged||e.heightChanged||e.viewportChanged||!GX.eq(e.startState.facet(I4),e.state.facet(I4),e.view.viewport.from,e.view.viewport.to);if(t==n)for(let t of this.gutters)t.update(e)&&(r=!0);else{r=!0;let i=[];for(let r of n){let n=t.indexOf(r);n<0?i.push(new q4(this.view,r)):(this.gutters[n].update(e),i.push(this.gutters[n]))}for(let e of this.gutters)e.dom.remove(),i.indexOf(e)<0&&e.destroy();for(let e of i)e.config.side==`after`?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.gutters=i}return r}destroy(){for(let e of this.gutters)e.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:e=>v2.scrollMargins.of(t=>{let n=t.plugin(e);if(!n||n.gutters.length==0||!n.fixed)return null;let r=n.dom.offsetWidth*t.scaleX,i=n.domAfter?n.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==SQ.LTR?{left:r,right:i}:{right:r,left:i}})});function W4(e){return Array.isArray(e)?e:[e]}function G4(e,t,n){for(;e.value&&e.from<=n;)e.from==n&&t.push(e.value),e.next()}var K4=class{constructor(e,t,n){this.gutter=e,this.height=n,this.i=0,this.cursor=GX.iter(e.markers,t.from)}addElement(e,t,n){let{gutter:r}=this,i=(t.top-this.height)/e.scaleY,a=t.height/e.scaleY;if(this.i==r.elements.length){let t=new J4(e,a,i,n);r.elements.push(t),r.dom.appendChild(t.dom)}else r.elements[this.i].update(e,a,i,n);this.height=t.bottom,this.i++}line(e,t,n){let r=[];G4(this.cursor,r,t.from),n.length&&(r=r.concat(n));let i=this.gutter.config.lineMarker(e,t,r);i&&r.unshift(i);let a=this.gutter;r.length==0&&!a.config.renderEmptyElements||this.addElement(e,t,r)}widget(e,t){let n=this.gutter.config.widgetMarker(e,t.widget,t),r=n?[n]:null;for(let n of e.state.facet(L4)){let i=n(e,t.widget,t);i&&(r||=[]).push(i)}r&&this.addElement(e,t,r)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}},q4=class{constructor(e,t){this.view=e,this.config=t,this.elements=[],this.spacer=null,this.dom=document.createElement(`div`),this.dom.className=`cm-gutter`+(this.config.class?` `+this.config.class:``);for(let n in t.domEventHandlers)this.dom.addEventListener(n,r=>{let i=r.target,a;if(i!=this.dom&&this.dom.contains(i)){for(;i.parentNode!=this.dom;)i=i.parentNode;let e=i.getBoundingClientRect();a=(e.top+e.bottom)/2}else a=r.clientY;let o=e.lineBlockAtHeight(a-e.documentTop);t.domEventHandlers[n](e,o,r)&&r.preventDefault()});this.markers=W4(t.markers(e)),t.initialSpacer&&(this.spacer=new J4(e,0,0,[t.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+=`visibility: hidden; pointer-events: none`)}update(e){let t=this.markers;if(this.markers=W4(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let t=this.config.updateSpacer(this.spacer.markers[0],e);t!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[t])}let n=e.view.viewport;return!GX.eq(this.markers,t,n.from,n.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}},J4=class{constructor(e,t,n,r){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement(`div`),this.dom.className=`cm-gutterElement`,this.update(e,t,n,r)}update(e,t,n,r){this.height!=t&&(this.height=t,this.dom.style.height=t+`px`),this.above!=n&&(this.dom.style.marginTop=(this.above=n)?n+`px`:``),Y4(this.markers,r)||this.setMarkers(e,r)}setMarkers(e,t){let n=`cm-gutterElement`,r=this.dom.firstChild;for(let i=0,a=0;;){let o=a,s=ir(e,t,n)||i(e,t,n):i}return n}})}}),$4=class extends F4{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}};function e3(e,t){return e.state.facet(Q4).formatNumber(t,e.state)}var t3=z4.compute([Q4],e=>({class:`cm-lineNumbers`,renderEmptyElements:!1,markers(e){return e.state.facet(X4)},lineMarker(e,t,n){return n.some(e=>e.toDOM)?null:new $4(e3(e,e.state.doc.lineAt(t.from).number))},widgetMarker:(e,t,n)=>{for(let r of e.state.facet(Z4)){let i=r(e,t,n);if(i)return i}return null},lineMarkerChange:e=>e.startState.facet(Q4)!=e.state.facet(Q4),initialSpacer(e){return new $4(e3(e,r3(e.state.doc.lines)))},updateSpacer(e,t){let n=e3(t.view,r3(t.view.state.doc.lines));return n==e.number?e:new $4(n)},domEventHandlers:e.facet(Q4).domEventHandlers,side:`before`}));function n3(e={}){return[Q4.of(e),H4(),t3]}function r3(e){let t=9;for(;t{let t=[],n=-1;for(let r of e.selection.ranges){let i=e.doc.lineAt(r.head).from;i>n&&(n=i,t.push(i3.range(i)))}return GX.of(t)});function o3(){return a3}var s3=1024,c3=0,l3=class{constructor(e,t){this.from=e,this.to=t}},u3=class{constructor(e={}){this.id=c3++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw Error(`This node type doesn't define a deserialize function`)}),this.combine=e.combine||null}add(e){if(this.perNode)throw RangeError(`Can't add per-node props to node types`);return typeof e!=`function`&&(e=p3.match(e)),t=>{let n=e(t);return n===void 0?null:[this,n]}}};u3.closedBy=new u3({deserialize:e=>e.split(` `)}),u3.openedBy=new u3({deserialize:e=>e.split(` `)}),u3.group=new u3({deserialize:e=>e.split(` `)}),u3.isolate=new u3({deserialize:e=>{if(e&&e!=`rtl`&&e!=`ltr`&&e!=`auto`)throw RangeError(`Invalid value for isolate: `+e);return e||`auto`}}),u3.contextHash=new u3({perNode:!0}),u3.lookAhead=new u3({perNode:!0}),u3.mounted=new u3({perNode:!0});var d3=class{constructor(e,t,n,r=!1){this.tree=e,this.overlay=t,this.parser=n,this.bracketed=r}static get(e){return e&&e.props&&e.props[u3.mounted.id]}},f3=Object.create(null),p3=class e{constructor(e,t,n,r=0){this.name=e,this.props=t,this.id=n,this.flags=r}static define(t){let n=t.props&&t.props.length?Object.create(null):f3,r=!!t.top|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),i=new e(t.name||``,n,t.id,r);if(t.props){for(let e of t.props)if(Array.isArray(e)||(e=e(i)),e){if(e[0].perNode)throw RangeError(`Can't store a per-node prop on a node type`);n[e[0].id]=e[1]}}return i}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e==`string`){if(this.name==e)return!0;let t=this.prop(u3.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let n in e)for(let r of n.split(` `))t[r]=e[n];return e=>{for(let n=e.prop(u3.group),r=-1;r<(n?n.length:0);r++){let i=t[r<0?e.name:n[r]];if(i)return i}}}};p3.none=new p3(``,Object.create(null),0,8);var m3=class e{constructor(e){this.types=e;for(let t=0;t0;for(let e=this.cursor(a|_3.IncludeAnonymous);;){let a=!1;if(e.from<=i&&e.to>=r&&(!o&&e.type.isAnonymous||t(e)!==!1)){if(e.firstChild())continue;a=!0}for(;a&&n&&(o||!e.type.isAnonymous)&&n(e),!e.nextSibling();){if(!e.parent())return;a=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(t={}){return this.children.length<=8?this:L3(p3.none,this.children,this.positions,0,this.children.length,0,this.length,(t,n,r)=>new e(this.type,t,n,r,this.propValues),t.makeTree||((t,n,r)=>new e(p3.none,t,n,r)))}static build(e){return P3(e)}};v3.empty=new v3(p3.none,[],[],0);var y3=class e{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new e(this.buffer,this.index)}},b3=class e{constructor(e,t,n){this.buffer=e,this.length=t,this.set=n}get type(){return p3.none}toString(){let e=[];for(let t=0;t0));s=a[s+3]);return o}slice(t,n,r){let i=this.buffer,a=new Uint16Array(n-t),o=0;for(let e=t,s=0;e=t&&nt;case 1:return n<=t&&r>t;case 2:return r>t;case 4:return!0}}function S3(e,t,n,r){for(;e.from==e.to||(n<1?e.from>=t:e.from>t)||(n>-1?e.to<=t:e.to0?s.length:-1;t!=l;t+=n){let l=s[t],u=c[t]+o.from,d;if(!(!(a&_3.EnterBracketed&&l instanceof v3&&(d=d3.get(l))&&!d.overlay&&d.bracketed&&r>=u&&r<=u+l.length)&&!x3(i,r,u,u+l.length))){if(l instanceof b3){if(a&_3.ExcludeBuffers)continue;let e=l.findChild(0,l.buffer.length,n,r-u,i);if(e>-1)return new O3(new D3(o,l,t,u),null,e)}else if(a&_3.IncludeAnonymous||!l.type.isAnonymous||N3(l)){let s;if(!(a&_3.IgnoreMounts)&&(s=d3.get(l))&&!s.overlay)return new e(s.tree,u,t,o);let c=new e(l,u,t,o);return a&_3.IncludeAnonymous||!c.type.isAnonymous?c:c.nextChild(n<0?l.children.length-1:0,n,r,i,a)}}}if(a&_3.IncludeAnonymous||!o.type.isAnonymous||(t=o.index>=0?o.index+n:n<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}prop(e){return this._tree.prop(e)}enter(t,n,r=0){let i;if(!(r&_3.IgnoreOverlays)&&(i=d3.get(this._tree))&&i.overlay){let a=t-this.from,o=r&_3.EnterBracketed&&i.bracketed;for(let{from:t,to:r}of i.overlay)if((n>0||o?t<=a:t=a:r>a))return new e(i.tree,i.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,n,r)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function T3(e,t,n,r){let i=e.cursor(),a=[];if(!i.firstChild())return a;if(n!=null){for(let e=!1;!e;)if(e=i.type.is(n),!i.nextSibling())return a}for(;;){if(r!=null&&i.type.is(r))return a;if(i.type.is(t)&&a.push(i.node),!i.nextSibling())return r==null?a:[]}}function E3(e,t,n=t.length-1){for(let r=e;n>=0;r=r.parent){if(!r)return!1;if(!r.type.isAnonymous){if(t[n]&&t[n]!=r.name)return!1;n--}}return!0}var D3=class{constructor(e,t,n,r){this.parent=e,this.buffer=t,this.index=n,this.start=r}},O3=class e extends C3{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,n){super(),this.context=e,this._parent=t,this.index=n,this.type=e.buffer.set.types[e.buffer.buffer[n]]}child(t,n,r){let{buffer:i}=this.context,a=i.findChild(this.index+4,i.buffer[this.index+3],t,n-this.context.start,r);return a<0?null:new e(this.context,this,a)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}prop(e){return this.type.prop(e)}enter(t,n,r=0){if(r&_3.ExcludeBuffers)return null;let{buffer:i}=this.context,a=i.findChild(this.index+4,i.buffer[this.index+3],n>0?1:-1,t-this.context.start,n);return a<0?null:new e(this.context,this,a)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:t}=this.context,n=t.buffer[this.index+3];return n<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new e(this.context,this._parent,n):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,n=this._parent?this._parent.index+4:0;return this.index==n?this.externalSibling(-1):new e(this.context,this._parent,t.findChild(n,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:n}=this.context,r=this.index+4,i=n.buffer[this.index+3];if(i>r){let a=n.buffer[this.index+1];e.push(n.slice(r,i,a)),t.push(0)}return new v3(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function k3(e){if(!e.length)return null;let t=0,n=e[0];for(let r=1;rn.from||i.to=t){let o=new w3(a.tree,a.overlay[0].from+e.from,-1,e);(i||=[r]).push(S3(o,t,n,!1))}}return i?k3(i):r}var M3=class{get name(){return this.type.name}constructor(e,t=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=t&~_3.EnterBracketed,e instanceof w3)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let t=e._parent;t;t=t._parent)this.stack.unshift(t.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:n,buffer:r}=this.buffer;return this.type=t||r.set.types[r.buffer[e]],this.from=n+r.buffer[e+1],this.to=n+r.buffer[e+2],!0}yield(e){return e?e instanceof w3?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,n){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,n,this.mode));let{buffer:r}=this.buffer,i=r.findChild(this.index+4,r.buffer[this.index+3],e,t-this.buffer.start,n);return i<0?!1:(this.stack.push(this.index),this.yieldBuf(i))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,n=this.mode){return this.buffer?n&_3.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,n))}parent(){if(!this.buffer)return this.yieldNode(this.mode&_3.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&_3.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,n=this.stack.length-1;if(e<0){let e=n<0?0:this.stack[n]+4;if(this.index!=e)return this.yieldBuf(t.findChild(e,this.index,-1,0,4))}else{let e=t.buffer[this.index+3];if(e<(n<0?t.buffer.length:t.buffer[this.stack[n]+3]))return this.yieldBuf(e)}return n<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,n,{buffer:r}=this;if(r){if(e>0){if(this.index-1)for(let r=t+e,i=e<0?-1:n._tree.children.length;r!=i;r+=e){let e=n._tree.children[r];if(this.mode&_3.IncludeAnonymous||e instanceof b3||!e.type.isAnonymous||N3(e))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to=0;){for(let a=e;a;a=a._parent)if(a.index==r){if(r==this.index)return a;t=a,n=i+1;break scan}r=this.stack[--i]}for(let e=n;e=0;i--){if(i<0)return E3(this._tree,e,r);let a=n[t.buffer[this.stack[i]]];if(!a.isAnonymous){if(e[r]&&e[r]!=a.name)return!1;r--}}return!0}};function N3(e){return e.children.some(e=>e instanceof b3||!e.type.isAnonymous||N3(e))}function P3(e){let{buffer:t,nodeSet:n,maxBufferLength:r=s3,reused:i=[],minRepeatType:a=n.types.length}=e,o=Array.isArray(t)?new y3(t,t.length):t,s=n.types,c=0,l=0;function u(e,t,_,v,y,b){let{id:x,start:ee,end:te,size:S}=o,ne=l,re=c;if(S<0)if(o.next(),S==-1){let t=i[x];_.push(t),v.push(ee-e);return}else if(S==-3){c=x;return}else if(S==-4){l=x;return}else throw RangeError(`Unrecognized record size: ${S}`);let C=s[x],w,ie,ae=ee-e;if(te-ee<=r&&(ie=h(o.pos-t,y))){let t=new Uint16Array(ie.size-ie.skip),r=o.pos-ie.size,i=t.length;for(;o.pos>r;)i=g(ie.start,t,i);w=new b3(t,te-ie.start,n),ae=ie.start-e}else{let e=o.pos-S;o.next();let t=[],n=[],i=x>=a?x:-1,s=0,c=te;for(;o.pos>e;)i>=0&&o.id==i&&o.size>=0?(o.end<=c-r&&(p(t,n,ee,s,o.end,c,i,ne,re),s=t.length,c=o.end),o.next()):b>2500?d(ee,e,t,n):u(ee,e,t,n,i,b+1);if(i>=0&&s>0&&s-1&&s>0){let e=f(C,re);w=L3(C,t,n,0,t.length,0,te-ee,e,e)}else w=m(C,t,n,te-ee,ne-te,re)}_.push(w),v.push(ae)}function d(e,t,i,a){let s=[],c=0,l=-1;for(;o.pos>t;){let{id:e,start:t,end:n,size:i}=o;if(i>4)o.next();else if(l>-1&&t=0;e-=3)t[n++]=s[e],t[n++]=s[e+1]-r,t[n++]=s[e+2]-r,t[n++]=n;i.push(new b3(t,s[2]-r,n)),a.push(r-e)}}function f(e,t){return(n,r,i)=>{let a=0,o=n.length-1,s,c;if(o>=0&&(s=n[o])instanceof v3){if(!o&&s.type==e&&s.length==i)return s;(c=s.prop(u3.lookAhead))&&(a=r[o]+s.length+c)}return m(e,n,r,i,a,t)}}function p(e,t,r,i,a,o,s,c,l){let u=[],d=[];for(;e.length>i;)u.push(e.pop()),d.push(t.pop()+r-a);e.push(m(n.types[s],u,d,o-a,c-o,l)),t.push(a-r)}function m(e,t,n,r,i,a,o){if(a){let e=[u3.contextHash,a];o=o?[e].concat(o):[e]}if(i>25){let e=[u3.lookAhead,i];o=o?[e].concat(o):[e]}return new v3(e,t,n,r,o)}function h(e,t){let n=o.fork(),i=0,s=0,c=0,l=n.end-r,u={size:0,start:0,skip:0};scan:for(let r=n.pos-e;n.pos>r;){let e=n.size;if(n.id==t&&e>=0){u.size=i,u.start=s,u.skip=c,c+=4,i+=4,n.next();continue}let o=n.pos-e;if(e<0||o=a?4:0,f=n.start;for(n.next();n.pos>o;){if(n.size<0)if(n.size==-3||n.size==-4)d+=4;else break scan;else n.id>=a&&(d+=4);n.next()}s=f,i+=e,c+=d}return(t<0||i==e)&&(u.size=i,u.start=s,u.skip=c),u.size>4?u:void 0}function g(e,t,n){let{id:r,start:i,end:s,size:u}=o;if(o.next(),u>=0&&r4){let r=o.pos-(u-4);for(;o.pos>r;)n=g(e,t,n)}t[--n]=a,t[--n]=s-e,t[--n]=i-e,t[--n]=r}else u==-3?c=r:u==-4&&(l=r);return n}let _=[],v=[];for(;o.pos>0;)u(e.start||0,e.bufferStart||0,_,v,-1,0);let y=e.length??(_.length?v[0]+_[0].length:0);return new v3(s[e.topID],_.reverse(),v.reverse(),y)}var F3=new WeakMap;function I3(e,t){if(!e.isAnonymous||t instanceof b3||t.type!=e)return 1;let n=F3.get(t);if(n==null){n=1;for(let r of t.children){if(r.type!=e||!(r instanceof v3)){n=1;break}n+=I3(e,r)}F3.set(t,n)}return n}function L3(e,t,n,r,i,a,o,s,c){let l=0;for(let n=r;n=u)break;m+=n}if(s==r+1){if(m>u){let e=t[r];p(e.children,e.positions,0,e.children.length,n[r]+o);continue}d.push(t[r])}else{let i=n[s-1]+t[s-1].length-l;d.push(L3(e,t,n,r,s,l,i,null,c))}f.push(l+o-a)}}return p(t,n,r,i,0),(s||c)(d,f,o)}var R3=class{constructor(){this.map=new WeakMap}setBuffer(e,t,n){let r=this.map.get(e);r||this.map.set(e,r=new Map),r.set(t,n)}getBuffer(e,t){let n=this.map.get(e);return n&&n.get(t)}set(e,t){e instanceof O3?this.setBuffer(e.context.buffer,e.index,t):e instanceof w3&&this.map.set(e.tree,t)}get(e){return e instanceof O3?this.getBuffer(e.context.buffer,e.index):e instanceof w3?this.map.get(e.tree):void 0}cursorSet(e,t){e.buffer?this.setBuffer(e.buffer.buffer,e.index,t):this.map.set(e.tree,t)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}},z3=class e{constructor(e,t,n,r,i=!1,a=!1){this.from=e,this.to=t,this.tree=n,this.offset=r,this.open=!!i|(a?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,n=[],r=!1){let i=[new e(0,t.length,t,0,!1,r)];for(let e of n)e.to>t.length&&i.push(e);return i}static applyChanges(t,n,r=128){if(!n.length)return t;let i=[],a=1,o=t.length?t[0]:null;for(let s=0,c=0,l=0;;s++){let u=s=r)for(;o&&o.from=n.from||d<=n.to||l){let t=Math.max(n.from,c)-l,r=Math.min(n.to,d)-l;n=t>=r?null:new e(t,r,n.tree,n.offset+l,s>0,!!u)}if(n&&i.push(n),o.to>d)break;o=anew l3(e.from,e.to)):[new l3(0,0)]:[new l3(0,e.length)],this.createParse(e,t||[],n)}parse(e,t,n){let r=this.startParse(e,t,n);for(;;){let e=r.advance();if(e)return e}}},V3=class{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}};function H3(e){return(t,n,r,i)=>new q3(t,e,n,r,i)}var U3=class{constructor(e,t,n,r,i,a){this.parser=e,this.parse=t,this.overlay=n,this.bracketed=r,this.target=i,this.from=a}};function W3(e){if(!e.length||e.some(e=>e.from>=e.to))throw RangeError(`Invalid inner parse ranges given: `+JSON.stringify(e))}var G3=class{constructor(e,t,n,r,i,a,o,s){this.parser=e,this.predicate=t,this.mounts=n,this.index=r,this.start=i,this.bracketed=a,this.target=o,this.prev=s,this.depth=0,this.ranges=[]}},K3=new u3({perNode:!0}),q3=class{constructor(e,t,n,r,i){this.nest=t,this.input=n,this.fragments=r,this.ranges=i,this.inner=[],this.innerDone=0,this.baseTree=null,this.stoppedAt=null,this.baseParse=e}advance(){if(this.baseParse){let e=this.baseParse.advance();if(!e)return null;if(this.baseParse=null,this.baseTree=e,this.startInner(),this.stoppedAt!=null)for(let e of this.inner)e.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let e=this.baseTree;return this.stoppedAt!=null&&(e=new v3(e.type,e.children,e.positions,e.length,e.propValues.concat([[K3,this.stoppedAt]]))),e}let e=this.inner[this.innerDone],t=e.parse.advance();if(t){this.innerDone++;let n=Object.assign(Object.create(null),e.target.props);n[u3.mounted.id]=new d3(t,e.overlay,e.parser,e.bracketed),e.target.props=n}return null}get parsedPos(){if(this.baseParse)return 0;let e=this.input.length;for(let t=this.innerDone;t=this.stoppedAt)o=!1;else if(e.hasNode(r)){if(t){let e=t.mounts.find(e=>e.frag.from<=r.from&&e.frag.to>=r.to&&e.mount.overlay);if(e)for(let n of e.mount.overlay){let i=n.from+e.pos,a=n.to+e.pos;i>=r.from&&a<=r.to&&!t.ranges.some(e=>e.fromi)&&t.ranges.push({from:i,to:a})}}o=!1}else if(n&&(a=J3(n.ranges,r.from,r.to)))o=a!=2;else if(!r.type.isAnonymous&&(i=this.nest(r,this.input))&&(r.fromnew l3(e.from-r.from,e.to-r.from)):null,!!i.bracketed,r.tree,e.length?e[0].from:r.from)),i.overlay?e.length&&(n={ranges:e,depth:0,prev:n}):o=!1}}else if(t&&(s=t.predicate(r))&&(s===!0&&(s=new l3(r.from,r.to)),s.from=0&&t.ranges[e].to==s.from?t.ranges[e]={from:t.ranges[e].from,to:s.to}:t.ranges.push(s)}if(o&&r.firstChild())t&&t.depth++,n&&n.depth++;else for(;!r.nextSibling();){if(!r.parent())break scan;if(t&&!--t.depth){let e=$3(this.ranges,t.ranges);e.length&&(W3(e),this.inner.splice(t.index,0,new U3(t.parser,t.parser.startParse(this.input,t6(t.mounts,e),e),t.ranges.map(e=>new l3(e.from-t.start,e.to-t.start)),t.bracketed,t.target,e[0].from))),t=t.prev}n&&!--n.depth&&(n=n.prev)}}}};function J3(e,t,n){for(let r of e){if(r.from>=n)break;if(r.to>t)return r.from<=t&&r.to>=n?2:1}return 0}function Y3(e,t,n,r,i,a){if(t=e&&t.enter(n,1,_3.IgnoreOverlays|_3.ExcludeBuffers)))if(t.to<=e)t.next(!1)||(this.done=!0);else break}hasNode(e){if(this.moveTo(e.from),!this.done&&this.cursor.from+this.offset==e.from&&this.cursor.tree)for(let t=this.cursor.tree;;){if(t==e.tree)return!0;if(t.children.length&&t.positions[0]==0&&t.children[0]instanceof v3)t=t.children[0];else break}return!1}},Q3=class{constructor(e){if(this.fragments=e,this.curTo=0,this.fragI=0,e.length){let t=this.curFrag=e[0];this.curTo=t.tree.prop(K3)??t.to,this.inner=new Z3(t.tree,-t.offset)}else this.curFrag=this.inner=null}hasNode(e){for(;this.curFrag&&e.from>=this.curTo;)this.nextFrag();return this.curFrag&&this.curFrag.from<=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){if(this.fragI++,this.fragI==this.fragments.length)this.curFrag=this.inner=null;else{let e=this.curFrag=this.fragments[this.fragI];this.curTo=e.tree.prop(K3)??e.to,this.inner=new Z3(e.tree,-e.offset)}}findMounts(e,t){let n=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let e=this.inner.cursor.node;e;e=e.parent){let r=e.tree?.prop(u3.mounted);if(r&&r.parser==t)for(let t=this.fragI;t=e.to)break;i.tree==this.curFrag.tree&&n.push({frag:i,pos:e.from-i.offset,mount:r})}}}return n}};function $3(e,t){let n=null,r=t;for(let i=1,a=0;i=s)break;e.to<=o||(n||(r=n=t.slice()),e.froms&&n.splice(a+1,0,new l3(s,e.to))):e.to>s?n[a--]=new l3(s,e.to):n.splice(a--,1))}}return r}function e6(e,t,n,r){let i=0,a=0,o=!1,s=!1,c=-1e9,l=[];for(;;){let u=i==e.length?1e9:o?e[i].to:e[i].from,d=a==t.length?1e9:s?t[a].to:t[a].from;if(o!=s){let e=Math.max(c,n),t=Math.min(u,d,r);enew l3(e.from+r,e.to+r)),s,c);for(let t=0,r=s;;t++){let s=t==o.length,l=s?c:o[t].from;if(l>r&&n.push(new z3(r,l,i.tree,-e,a.from>=r||a.openStart,a.to<=l||a.openEnd)),s)break;r=o[t].to}}else n.push(new z3(s,c,i.tree,-e,a.from>=e||a.openStart,a.to<=o||a.openEnd))}return n}var n6=0,r6=class e{constructor(e,t,n,r){this.name=e,this.set=t,this.base=n,this.modified=r,this.id=n6++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(t,n){let r=typeof t==`string`?t:`?`;if(t instanceof e&&(n=t),n?.base)throw Error(`Can not derive from a modified tag`);let i=new e(r,[],null,[]);if(i.set.push(i),n)for(let e of n.set)i.set.push(e);return i}static defineModifier(e){let t=new a6(e);return e=>e.modified.indexOf(t)>-1?e:a6.get(e.base||e,e.modified.concat(t).sort((e,t)=>e.id-t.id))}},i6=0,a6=class e{constructor(e){this.name=e,this.instances=[],this.id=i6++}static get(t,n){if(!n.length)return t;let r=n[0].instances.find(e=>e.base==t&&o6(n,e.modified));if(r)return r;let i=[],a=new r6(t.name,i,t,n);for(let e of n)e.instances.push(a);let o=s6(n);for(let n of t.set)if(!n.modified.length)for(let t of o)i.push(e.get(n,t));return a}};function o6(e,t){return e.length==t.length&&e.every((e,n)=>e==t[n])}function s6(e){let t=[[]];for(let n=0;nt.length-e.length)}function c6(e){let t=Object.create(null);for(let n in e){let r=e[n];Array.isArray(r)||(r=[r]);for(let e of n.split(` `))if(e){let n=[],i=2,a=e;for(let t=0;;){if(a==`...`&&t>0&&t+3==e.length){i=1;break}let r=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(a);if(!r)throw RangeError(`Invalid path: `+e);if(n.push(r[0]==`*`?``:r[0][0]==`"`?JSON.parse(r[0]):r[0]),t+=r[0].length,t==e.length)break;let o=e[t++];if(t==e.length&&o==`!`){i=0;break}if(o!=`/`)throw RangeError(`Invalid path: `+e);a=e.slice(t)}let o=n.length-1,s=n[o];if(!s)throw RangeError(`Invalid path: `+e);t[s]=new u6(r,i,o>0?n.slice(0,o):null).sort(t[s])}}return l6.add(t)}var l6=new u3({combine(e,t){let n,r,i;for(;e||t;){if(!e||t&&e.depth>=t.depth?(i=t,t=t.next):(i=e,e=e.next),n&&n.mode==i.mode&&!i.context&&!n.context)continue;let a=new u6(i.tags,i.mode,i.context);n?n.next=a:r=a,n=a}return r}}),u6=class{constructor(e,t,n,r){this.tags=e,this.mode=t,this.context=n,this.next=r}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let t=i;for(let r of e)for(let e of r.set){let r=n[e.id];if(r){t=t?t+` `+r:r;break}}return t},scope:r}}function f6(e,t){let n=null;for(let r of e){let e=r.style(t);e&&(n=n?n+` `+e:e)}return n}function p6(e,t,n,r=0,i=e.length){let a=new m6(r,Array.isArray(t)?t:[t],n);a.highlightRange(e.cursor(),r,i,``,a.highlighters),a.flush(i)}var m6=class{constructor(e,t,n){this.at=e,this.highlighters=t,this.span=n,this.class=``}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,n,r,i){let{type:a,from:o,to:s}=e;if(o>=n||s<=t)return;a.isTop&&(i=this.highlighters.filter(e=>!e.scope||e.scope(a)));let c=r,l=h6(e)||u6.empty,u=f6(i,l.tags);if(u&&(c&&(c+=` `),c+=u,l.mode==1&&(r+=(r?` `:``)+u)),this.startSpan(Math.max(t,o),c),l.opaque)return;let d=e.tree&&e.tree.prop(u3.mounted);if(d&&d.overlay){let a=e.node.enter(d.overlay[0].from+o,1),l=this.highlighters.filter(e=>!e.scope||e.scope(d.tree.type)),u=e.firstChild();for(let f=0,p=o;;f++){let m=f=h||!e.nextSibling())););if(!m||h>n)break;p=m.to+o,p>t&&(this.highlightRange(a.cursor(),Math.max(t,m.from+o),Math.min(n,p),``,l),this.startSpan(Math.min(n,p),c))}u&&e.parent()}else if(e.firstChild()){d&&(r=``);do{if(e.to<=t)continue;if(e.from>=n)break;this.highlightRange(e,t,n,r,i),this.startSpan(Math.min(n,e.to),c)}while(e.nextSibling());e.parent()}}};function h6(e){let t=e.type.prop(l6);for(;t&&t.context&&!e.matchContext(t.context);)t=t.next;return t||null}var X=r6.define,g6=X(),_6=X(),v6=X(_6),y6=X(_6),b6=X(),x6=X(b6),S6=X(b6),C6=X(),w6=X(C6),T6=X(),E6=X(),D6=X(),O6=X(D6),k6=X(),Z={comment:g6,lineComment:X(g6),blockComment:X(g6),docComment:X(g6),name:_6,variableName:X(_6),typeName:v6,tagName:X(v6),propertyName:y6,attributeName:X(y6),className:X(_6),labelName:X(_6),namespace:X(_6),macroName:X(_6),literal:b6,string:x6,docString:X(x6),character:X(x6),attributeValue:X(x6),number:S6,integer:X(S6),float:X(S6),bool:X(b6),regexp:X(b6),escape:X(b6),color:X(b6),url:X(b6),keyword:T6,self:X(T6),null:X(T6),atom:X(T6),unit:X(T6),modifier:X(T6),operatorKeyword:X(T6),controlKeyword:X(T6),definitionKeyword:X(T6),moduleKeyword:X(T6),operator:E6,derefOperator:X(E6),arithmeticOperator:X(E6),logicOperator:X(E6),bitwiseOperator:X(E6),compareOperator:X(E6),updateOperator:X(E6),definitionOperator:X(E6),typeOperator:X(E6),controlOperator:X(E6),punctuation:D6,separator:X(D6),bracket:O6,angleBracket:X(O6),squareBracket:X(O6),paren:X(O6),brace:X(O6),content:C6,heading:w6,heading1:X(w6),heading2:X(w6),heading3:X(w6),heading4:X(w6),heading5:X(w6),heading6:X(w6),contentSeparator:X(C6),list:X(C6),quote:X(C6),emphasis:X(C6),strong:X(C6),link:X(C6),monospace:X(C6),strikethrough:X(C6),inserted:X(),deleted:X(),changed:X(),invalid:X(),meta:k6,documentMeta:X(k6),annotation:X(k6),processingInstruction:X(k6),definition:r6.defineModifier(`definition`),constant:r6.defineModifier(`constant`),function:r6.defineModifier(`function`),standard:r6.defineModifier(`standard`),local:r6.defineModifier(`local`),special:r6.defineModifier(`special`)};for(let e in Z){let t=Z[e];t instanceof r6&&(t.name=e)}d6([{tag:Z.link,class:`tok-link`},{tag:Z.heading,class:`tok-heading`},{tag:Z.emphasis,class:`tok-emphasis`},{tag:Z.strong,class:`tok-strong`},{tag:Z.keyword,class:`tok-keyword`},{tag:Z.atom,class:`tok-atom`},{tag:Z.bool,class:`tok-bool`},{tag:Z.url,class:`tok-url`},{tag:Z.labelName,class:`tok-labelName`},{tag:Z.inserted,class:`tok-inserted`},{tag:Z.deleted,class:`tok-deleted`},{tag:Z.literal,class:`tok-literal`},{tag:Z.string,class:`tok-string`},{tag:Z.number,class:`tok-number`},{tag:[Z.regexp,Z.escape,Z.special(Z.string)],class:`tok-string2`},{tag:Z.variableName,class:`tok-variableName`},{tag:Z.local(Z.variableName),class:`tok-variableName tok-local`},{tag:Z.definition(Z.variableName),class:`tok-variableName tok-definition`},{tag:Z.special(Z.variableName),class:`tok-variableName2`},{tag:Z.definition(Z.propertyName),class:`tok-propertyName tok-definition`},{tag:Z.typeName,class:`tok-typeName`},{tag:Z.namespace,class:`tok-namespace`},{tag:Z.className,class:`tok-className`},{tag:Z.macroName,class:`tok-macroName`},{tag:Z.propertyName,class:`tok-propertyName`},{tag:Z.operator,class:`tok-operator`},{tag:Z.comment,class:`tok-comment`},{tag:Z.meta,class:`tok-meta`},{tag:Z.invalid,class:`tok-invalid`},{tag:Z.punctuation,class:`tok-punctuation`}]);var A6=new u3;function j6(e){return YY.define({combine:e?t=>t.concat(e):void 0})}var M6=new u3,N6=class{constructor(e,t,n=[],r=``){this.data=e,this.name=r,RX.prototype.hasOwnProperty(`tree`)||Object.defineProperty(RX.prototype,"tree",{get(){return I6(this)}}),this.parser=t,this.extension=[G6.of(this),RX.languageData.of((e,t,n)=>{let r=P6(e,t,n),i=r.type.prop(A6);if(!i)return[];let a=e.facet(i),o=r.type.prop(M6);if(o){let i=r.resolve(t-r.from,n);for(let t of o)if(t.test(i,e)){let n=e.facet(t.facet);return t.type==`replace`?n:n.concat(a)}}return a})].concat(n)}isActiveAt(e,t,n=-1){return P6(e,t,n).type.prop(A6)==this.data}findRegions(e){let t=e.facet(G6);if(t?.data==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let n=[],r=(e,t)=>{if(e.prop(A6)==this.data){n.push({from:t,to:t+e.length});return}let i=e.prop(u3.mounted);if(i){if(i.tree.prop(A6)==this.data){if(i.overlay)for(let e of i.overlay)n.push({from:e.from+t,to:e.to+t});else n.push({from:t,to:t+e.length});return}else if(i.overlay){let e=n.length;if(r(i.tree,i.overlay[0].from+t),n.length>e)return}}for(let n=0;ne.isTop?n:void 0)]}),t.name)}configure(t,n){return new e(this.data,this.parser.configure(t),n||this.name)}get allowsNesting(){return this.parser.hasWrappers()}};function I6(e){let t=e.field(N6.state,!1);return t?t.tree:v3.empty}var L6=class{constructor(e){this.doc=e,this.cursorPos=0,this.string=``,this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){let n=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-n,t-n)}},R6=null,z6=class e{constructor(e,t,n=[],r,i,a,o,s){this.parser=e,this.state=t,this.fragments=n,this.tree=r,this.treeLen=i,this.viewport=a,this.skipped=o,this.scheduleOn=s,this.parse=null,this.tempSkipped=[]}static create(t,n,r){return new e(t,n,[],v3.empty,0,r,[],null)}startParse(){return this.parser.startParse(new L6(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=v3.empty&&this.isDone(t??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{if(typeof e==`number`){let t=Date.now()+e;e=()=>Date.now()>t}for(this.parse||=this.startParse(),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(z3.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=R6;R6=this;try{return e()}finally{R6=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=B6(e,t.from,t.to);return e}changes(t,n){let{fragments:r,tree:i,treeLen:a,viewport:o,skipped:s}=this;if(this.takeTree(),!t.empty){let e=[];if(t.iterChangedRanges((t,n,r,i)=>e.push({fromA:t,toA:n,fromB:r,toB:i})),r=z3.applyChanges(r,e),i=v3.empty,a=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){s=[];for(let e of this.skipped){let n=t.mapPos(e.from,1),r=t.mapPos(e.to,-1);ne.from&&(this.fragments=B6(this.fragments,n,r),this.skipped.splice(t--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&=(this.takeTree(),null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends B3{createParse(t,n,r){let i=r[0].from,a=r[r.length-1].to;return{parsedPos:i,advance(){let t=R6;if(t){for(let e of r)t.tempSkipped.push(e);e&&(t.scheduleOn=t.scheduleOn?Promise.all([t.scheduleOn,e]):e)}return this.parsedPos=a,new v3(p3.none,[],[],a-i)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return R6}};function B6(e,t,n){return z3.applyChanges(e,[{fromA:t,toA:n,fromB:t,toB:n}])}var V6=class e{constructor(e){this.context=e,this.tree=e.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let n=this.context.changes(t.changes,t.state),r=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),n.viewport.to);return n.work(20,r)||n.takeTree(),new e(n)}static init(t){let n=Math.min(3e3,t.doc.length),r=z6.create(t.facet(G6).parser,t,{from:0,to:n});return r.work(20,n)||r.takeTree(),new e(r)}};N6.state=nX.define({create:V6.init,update(e,t){for(let e of t.effects)if(e.is(N6.setState))return e.value;return t.startState.facet(G6)==t.state.facet(G6)?e.apply(t):V6.init(t.state)}});var H6=e=>{let t=setTimeout(()=>e(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<`u`&&(H6=e=>{let t=-1,n=setTimeout(()=>{t=requestIdleCallback(e,{timeout:400})},100);return()=>t<0?clearTimeout(n):cancelIdleCallback(t)});var U6=typeof navigator<`u`&&navigator.scheduling?.isInputPending?()=>navigator.scheduling.isInputPending():null,W6=u$.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(N6.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(N6.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=H6(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEndr+1e3,s=i.context.work(()=>U6&&U6()||Date.now()>a,r+(o?0:1e5));this.chunkBudget-=Date.now()-t,(s||this.chunkBudget<=0)&&(i.context.takeTree(),this.view.dispatch({effects:N6.setState.of(new V6(i.context))})),this.chunkBudget>0&&!(s&&!o)&&this.scheduleWork(),this.checkAsyncSchedule(i.context)}checkAsyncSchedule(e){e.scheduleOn&&=(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(e=>o$(this.view.state,e)).then(()=>this.workScheduled--),null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),G6=YY.define({combine(e){return e.length?e[0]:null},enables:e=>[N6.state,W6,v2.contentAttributes.compute([e],t=>{let n=t.facet(e);return n&&n.name?{"data-language":n.name}:{}})]}),K6=class{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}},Q=class e{constructor(e,t,n,r,i,a=void 0){this.name=e,this.alias=t,this.extensions=n,this.filename=r,this.loadFunc=i,this.support=a,this.loading=null}load(){return this.loading||=this.loadFunc().then(e=>this.support=e,e=>{throw this.loading=null,e})}static of(t){let{load:n,support:r}=t;if(!n){if(!r)throw RangeError(`Must pass either 'load' or 'support' to LanguageDescription.of`);n=()=>Promise.resolve(r)}return new e(t.name,(t.alias||[]).concat(t.name).map(e=>e.toLowerCase()),t.extensions||[],t.filename,n,r)}static matchFilename(e,t){for(let n of e)if(n.filename&&n.filename.test(t))return n;let n=/\.([^.]+)$/.exec(t);if(n){for(let t of e)if(t.extensions.indexOf(n[1])>-1)return t}return null}static matchLanguageName(e,t,n=!0){t=t.toLowerCase();for(let n of e)if(n.alias.some(e=>e==t))return n;if(n)for(let n of e)for(let e of n.alias){let r=t.indexOf(e);if(r>-1&&(e.length>2||!/\w/.test(t[r-1])&&!/\w/.test(t[r+e.length])))return n}return null}},q6=YY.define(),J6=YY.define({combine:e=>{if(!e.length)return` `;let t=e[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw Error(`Invalid indent unit: `+JSON.stringify(e[0]));return t}});function Y6(e){let t=e.facet(J6);return t.charCodeAt(0)==9?e.tabSize*t.length:t.length}function X6(e,t){let n=``,r=e.tabSize,i=e.facet(J6)[0];if(i==` `){for(;t>=r;)n+=` `,t-=r;i=` `}for(let e=0;e=t?uie(e,n,t):null}var Q6=class{constructor(e,t={}){this.state=e,this.options=t,this.unit=Y6(e)}lineAt(e,t=1){let n=this.state.doc.lineAt(e),{simulateBreak:r,simulateDoubleBreak:i}=this.options;return r!=null&&r>=n.from&&r<=n.to?i&&r==e?{text:``,from:e}:(t<0?r-1&&(i+=a-this.countColumn(n,n.search(/\S|$/))),i}countColumn(e,t=e.length){return iZ(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:n,from:r}=this.lineAt(e,t),i=this.options.overrideIndentation;if(i){let e=i(r);if(e>-1)return e}return this.countColumn(n,n.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},$6=new u3;function uie(e,t,n){let r=t.resolveStack(n),i=t.resolveInner(n,-1).resolve(n,0).enterUnfinishedNodesBefore(n);if(i!=r.node){let e=[];for(let t=i;t&&!(t.fromr.node.to||t.from==r.node.from&&t.type==r.node.type);t=t.parent)e.push(t);for(let t=e.length-1;t>=0;t--)r={node:e[t],next:r}}return e8(r,e,n)}function e8(e,t,n){for(let r=e;r;r=r.next){let e=fie(r.node);if(e)return e(mie.create(t,n,r))}return 0}function die(e){return e.pos==e.options.simulateBreak&&e.options.simulateDoubleBreak}function fie(e){let t=e.type.prop($6);if(t)return t;let n=e.firstChild,r;if(n&&(r=n.type.prop(u3.closedBy))){let t=e.lastChild,n=t&&r.indexOf(t.name)>-1;return e=>t8(e,!0,1,void 0,n&&!die(e)?t.from:void 0)}return e.parent==null?pie:null}function pie(){return 0}var mie=class e extends Q6{constructor(e,t,n){super(e.state,e.options),this.base=e,this.pos=t,this.context=n}get node(){return this.context.node}static create(t,n,r){return new e(t,n,r)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let t=this.state.doc.lineAt(e.from);for(;;){let n=e.resolve(t.from);for(;n.parent&&n.parent.from==n.from;)n=n.parent;if(hie(n,e))break;t=this.state.doc.lineAt(n.from)}return this.lineIndent(t.from)}continue(){return e8(this.context.next,this.base,this.pos)}};function hie(e,t){for(let n=t;n;n=n.parent)if(e==n)return!0;return!1}function gie(e){let t=e.node,n=t.childAfter(t.from),r=t.lastChild;if(!n)return null;let i=e.options.simulateBreak,a=e.state.doc.lineAt(n.from),o=i==null||i<=a.from?a.to:Math.min(a.to,i);for(let e=n.to;;){let i=t.childAfter(e);if(!i||i==r)return null;if(!i.type.isSkipped){if(i.from>=o)return null;let e=/^ */.exec(a.text.slice(n.to-a.from))[0].length;return{from:n.from,to:n.to+e}}e=i.to}}function _ie({closing:e,align:t=!0,units:n=1}){return r=>t8(r,t,n,e)}function t8(e,t,n,r,i){let a=e.textAfter,o=a.match(/^\s*/)[0].length,s=r&&a.slice(o,o+r.length)==r||i==e.pos+o,c=t?gie(e):null;return c?s?e.column(c.from):e.column(c.to):e.baseIndent+(s?0:e.unit*n)}var vie=e=>e.baseIndent;function yie({except:e,units:t=1}={}){return n=>{let r=e&&e.test(n.textAfter);return n.baseIndent+(r?0:t*n.unit)}}var bie=200;function xie(){return RX.transactionFilter.of(e=>{if(!e.docChanged||!e.isUserEvent(`input.type`)&&!e.isUserEvent(`input.complete`))return e;let t=e.startState.languageDataAt(`indentOnInput`,e.startState.selection.main.head);if(!t.length)return e;let n=e.newDoc,{head:r}=e.newSelection.main,i=n.lineAt(r);if(r>i.from+bie)return e;let a=n.sliceString(i.from,r);if(!t.some(e=>e.test(a)))return e;let{state:o}=e,s=-1,c=[];for(let{head:e}of o.selection.ranges){let t=o.doc.lineAt(e);if(t.from==s)continue;s=t.from;let n=Z6(o,t.from);if(n==null)continue;let r=/^\s*/.exec(t.text)[0],i=X6(o,n);r!=i&&c.push({from:t.from,to:t.from+r.length,insert:i})}return c.length?[e,{changes:c,sequential:!0}]:e})}var n8=YY.define(),r8=new u3;function Sie(e){let t=e.firstChild,n=e.lastChild;return t&&t.ton)continue;if(a&&i.from=t&&r.to>n&&(a=r)}}return a}function wie(e){let t=e.lastChild;return t&&t.to==e.to&&t.type.isError}function i8(e,t,n){for(let r of e.facet(n8)){let i=r(e,t,n);if(i)return i}return Cie(e,t,n)}function a8(e,t){let n=t.mapPos(e.from,1),r=t.mapPos(e.to,-1);return n>=r?void 0:{from:n,to:r}}var o8=CX.define({map:a8}),s8=CX.define({map:a8});function c8(e){let t=[];for(let{head:n}of e.state.selection.ranges)t.some(e=>e.from<=n&&e.to>=n)||t.push(e.lineBlockAt(n));return t}var l8=nX.define({create(){return HZ.none},update(e,t){t.isUserEvent(`delete`)&&t.changes.iterChangedRanges((t,n)=>e=u8(e,t,n)),e=e.map(t.changes);for(let n of t.effects)if(n.is(o8)&&!Tie(e,n.value.from,n.value.to)){let{preparePlaceholder:r}=t.state.facet(m8),i=r?HZ.replace({widget:new Aie(r(t.state,n.value))}):_8;e=e.update({add:[i.range(n.value.from,n.value.to)]})}else n.is(s8)&&(e=e.update({filter:(e,t)=>n.value.from!=e||n.value.to!=t,filterFrom:n.value.from,filterTo:n.value.to}));return t.selection&&(e=u8(e,t.selection.main.head)),e},provide:e=>v2.decorations.from(e),toJSON(e,t){let n=[];return e.between(0,t.doc.length,(e,t)=>{n.push(e,t)}),n},fromJSON(e){if(!Array.isArray(e)||e.length%2)throw RangeError(`Invalid JSON for fold state`);let t=[];for(let n=0;n{et&&(r=!0)}),r?e.update({filterFrom:t,filterTo:n,filter:(e,r)=>e>=n||r<=t}):e}function d8(e,t,n){var r;let i=null;return(r=e.field(l8,!1))==null||r.between(t,n,(e,t)=>{(!i||i.from>e)&&(i={from:e,to:t})}),i}function Tie(e,t,n){let r=!1;return e.between(t,t,(e,i)=>{e==t&&i==n&&(r=!0)}),r}function f8(e,t){return e.field(l8,!1)?t:t.concat(CX.appendConfig.of(h8()))}var Eie=e=>{for(let t of c8(e)){let n=i8(e.state,t.from,t.to);if(n)return e.dispatch({effects:f8(e.state,[o8.of(n),p8(e,n)])}),!0}return!1},Die=e=>{if(!e.state.field(l8,!1))return!1;let t=[];for(let n of c8(e)){let r=d8(e.state,n.from,n.to);r&&t.push(s8.of(r),p8(e,r,!1))}return t.length&&e.dispatch({effects:t}),t.length>0};function p8(e,t,n=!0){let r=e.state.doc.lineAt(t.from).number,i=e.state.doc.lineAt(t.to).number;return v2.announce.of(`${e.state.phrase(n?`Folded lines`:`Unfolded lines`)} ${r} ${e.state.phrase(`to`)} ${i}.`)}var Oie=[{key:`Ctrl-Shift-[`,mac:`Cmd-Alt-[`,run:Eie},{key:`Ctrl-Shift-]`,mac:`Cmd-Alt-]`,run:Die},{key:`Ctrl-Alt-[`,run:e=>{let{state:t}=e,n=[];for(let r=0;r{let t=e.state.field(l8,!1);if(!t||!t.size)return!1;let n=[];return t.between(0,e.state.doc.length,(e,t)=>{n.push(s8.of({from:e,to:t}))}),e.dispatch({effects:n}),!0}}],kie={placeholderDOM:null,preparePlaceholder:null,placeholderText:`…`},m8=YY.define({combine(e){return zX(e,kie)}});function h8(e){let t=[l8,Nie];return e&&t.push(m8.of(e)),t}function g8(e,t){let{state:n}=e,r=n.facet(m8),i=t=>{let n=e.lineBlockAt(e.posAtDOM(t.target)),r=d8(e.state,n.from,n.to);r&&e.dispatch({effects:s8.of(r)}),t.preventDefault()};if(r.placeholderDOM)return r.placeholderDOM(e,i,t);let a=document.createElement(`span`);return a.textContent=r.placeholderText,a.setAttribute(`aria-label`,n.phrase(`folded code`)),a.title=n.phrase(`unfold`),a.className=`cm-foldPlaceholder`,a.onclick=i,a}var _8=HZ.replace({widget:new class extends BZ{toDOM(e){return g8(e,null)}}}),Aie=class extends BZ{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return g8(e,this.value)}},jie={openText:`⌄`,closedText:`›`,markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1},v8=class extends F4{constructor(e,t){super(),this.config=e,this.open=t}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let t=document.createElement(`span`);return t.textContent=this.open?this.config.openText:this.config.closedText,t.title=e.state.phrase(this.open?`Fold line`:`Unfold line`),t}};function Mie(e={}){let t={...jie,...e},n=new v8(t,!0),r=new v8(t,!1),i=u$.fromClass(class{constructor(e){this.from=e.viewport.from,this.markers=this.buildMarkers(e)}update(e){(e.docChanged||e.viewportChanged||e.startState.facet(G6)!=e.state.facet(G6)||e.startState.field(l8,!1)!=e.state.field(l8,!1)||I6(e.startState)!=I6(e.state)||t.foldingChanged(e))&&(this.markers=this.buildMarkers(e.view))}buildMarkers(e){let t=new qX;for(let i of e.viewportLineBlocks){let a=d8(e.state,i.from,i.to)?r:i8(e.state,i.from,i.to)?n:null;a&&t.add(i.from,i.from,a)}return t.finish()}}),{domEventHandlers:a}=t;return[i,B4({class:`cm-foldGutter`,markers(e){return e.plugin(i)?.markers||GX.empty},initialSpacer(){return new v8(t,!1)},domEventHandlers:{...a,click:(e,t,n)=>{if(a.click&&a.click(e,t,n))return!0;let r=d8(e.state,t.from,t.to);if(r)return e.dispatch({effects:s8.of(r)}),!0;let i=i8(e.state,t.from,t.to);return i?(e.dispatch({effects:o8.of(i)}),!0):!1}}}),h8()]}var Nie=v2.baseTheme({".cm-foldPlaceholder":{backgroundColor:`#eee`,border:`1px solid #ddd`,color:`#888`,borderRadius:`.2em`,margin:`0 1px`,padding:`0 1px`,cursor:`pointer`},".cm-foldGutter span":{padding:`0 1px`,cursor:`pointer`}}),y8=class e{constructor(e,t){this.specs=e;let n;function r(e){let t=uZ.newName();return(n||=Object.create(null))[`.`+t]=e,t}let i=typeof t.all==`string`?t.all:t.all?r(t.all):void 0,a=t.scope;this.scope=a instanceof N6?e=>e.prop(A6)==a.data:a?e=>e==a:void 0,this.style=d6(e.map(e=>({tag:e.tag,class:e.class||r(Object.assign({},e,{tag:null}))})),{all:i}).style,this.module=n?new uZ(n):null,this.themeType=t.themeType}static define(t,n){return new e(t,n||{})}},b8=YY.define(),x8=YY.define({combine(e){return e.length?[e[0]]:null}});function S8(e){let t=e.facet(b8);return t.length?t:e.facet(x8)}function C8(e,t){let n=[Fie],r;return e instanceof y8&&(e.module&&n.push(v2.styleModule.of(e.module)),r=e.themeType),t?.fallback?n.push(x8.of(e)):r?n.push(b8.computeN([v2.darkTheme],t=>t.facet(v2.darkTheme)==(r==`dark`)?[e]:[])):n.push(b8.of(e)),n}var Pie=class{constructor(e){this.markCache=Object.create(null),this.tree=I6(e.state),this.decorations=this.buildDeco(e,S8(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=I6(e.state),n=S8(e.state),r=n!=S8(e.startState),{viewport:i}=e.view,a=e.changes.mapPos(this.decoratedTo,1);t.length=i.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=a):(t!=this.tree||e.viewportChanged||r)&&(this.tree=t,this.decorations=this.buildDeco(e.view,n),this.decoratedTo=i.to)}buildDeco(e,t){if(!t||!this.tree.length)return HZ.none;let n=new qX;for(let{from:r,to:i}of e.visibleRanges)p6(this.tree,t,(e,t,r)=>{n.add(e,t,this.markCache[r]||(this.markCache[r]=HZ.mark({class:r})))},r,i);return n.finish()}},Fie=aX.high(u$.fromClass(Pie,{decorations:e=>e.decorations})),Iie=y8.define([{tag:Z.meta,color:`#404740`},{tag:Z.link,textDecoration:`underline`},{tag:Z.heading,textDecoration:`underline`,fontWeight:`bold`},{tag:Z.emphasis,fontStyle:`italic`},{tag:Z.strong,fontWeight:`bold`},{tag:Z.strikethrough,textDecoration:`line-through`},{tag:Z.keyword,color:`#708`},{tag:[Z.atom,Z.bool,Z.url,Z.contentSeparator,Z.labelName],color:`#219`},{tag:[Z.literal,Z.inserted],color:`#164`},{tag:[Z.string,Z.deleted],color:`#a11`},{tag:[Z.regexp,Z.escape,Z.special(Z.string)],color:`#e40`},{tag:Z.definition(Z.variableName),color:`#00f`},{tag:Z.local(Z.variableName),color:`#30a`},{tag:[Z.typeName,Z.namespace],color:`#085`},{tag:Z.className,color:`#167`},{tag:[Z.special(Z.variableName),Z.macroName],color:`#256`},{tag:Z.definition(Z.propertyName),color:`#00c`},{tag:Z.comment,color:`#940`},{tag:Z.invalid,color:`#f00`}]),Lie=v2.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:`#328c8252`},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:`#bb555544`}}),w8=1e4,T8=`()[]{}`,E8=YY.define({combine(e){return zX(e,{afterCursor:!0,brackets:T8,maxScanDistance:w8,renderMatch:Bie})}}),Rie=HZ.mark({class:`cm-matchingBracket`}),zie=HZ.mark({class:`cm-nonmatchingBracket`});function Bie(e){let t=[],n=e.matched?Rie:zie;return t.push(n.range(e.start.from,e.start.to)),e.end&&t.push(n.range(e.end.from,e.end.to)),t}function D8(e){let t=[],n=e.facet(E8);for(let r of e.selection.ranges){if(!r.empty)continue;let i=j8(e,r.head,-1,n)||r.head>0&&j8(e,r.head-1,1,n)||n.afterCursor&&(j8(e,r.head,1,n)||r.heade.decorations}),Lie];function Hie(e={}){return[E8.of(e),Vie]}var O8=new u3;function k8(e,t,n){let r=e.prop(t<0?u3.openedBy:u3.closedBy);if(r)return r;if(e.name.length==1){let r=n.indexOf(e.name);if(r>-1&&r%2==+(t<0))return[n[r+t]]}return null}function A8(e){let t=e.type.prop(O8);return t?t(e.node):e}function j8(e,t,n,r={}){let i=r.maxScanDistance||w8,a=r.brackets||T8,o=I6(e),s=o.resolveInner(t,n);for(let r=s;r;r=r.parent){let i=k8(r.type,n,a);if(i&&r.from0?t>=o.from&&to.from&&t<=o.to))return Uie(e,t,n,r,o,i,a)}}return Wie(e,t,n,o,s.type,i,a)}function Uie(e,t,n,r,i,a,o){let s=r.parent,c={from:i.from,to:i.to},l=0,u=s?.cursor();if(u&&(n<0?u.childBefore(r.from):u.childAfter(r.to)))do if(n<0?u.to<=r.from:u.from>=r.to){if(l==0&&a.indexOf(u.type.name)>-1&&u.from0)return null;let l={from:n<0?t-1:t,to:n>0?t+1:t},u=e.doc.iterRange(t,n>0?e.doc.length:0),d=0;for(let e=0;!u.next().done&&e<=a;){let a=u.value;n<0&&(e+=a.length);let s=t+e*n;for(let e=n>0?0:a.length-1,t=n>0?a.length:-1;e!=t;e+=n){let t=o.indexOf(a[e]);if(!(t<0||r.resolveInner(s+e,1).type!=i))if(t%2==0==n>0)d++;else if(d==1)return{start:l,end:{from:s+e,to:s+e+1},matched:t>>1==c>>1};else d--}n>0&&(e+=a.length)}return u.done?{start:l,matched:!1}:null}function M8(e,t,n,r=0,i=0){t??(t=e.search(/[^\s\u00a0]/),t==-1&&(t=e.length));let a=i;for(let i=r;i=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.post}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPosn?e.toLowerCase():e;return r(this.string.substr(this.pos,e.length))==r(e)?(t!==!1&&(this.pos+=e.length),!0):null}else{let n=this.string.slice(this.pos).match(e);return n&&n.index>0?null:(n&&t!==!1&&(this.pos+=n[0].length),n)}}current(){return this.string.slice(this.start,this.pos)}};function Gie(e){return{name:e.name||``,token:e.token,blankLine:e.blankLine||(()=>{}),startState:e.startState||(()=>!0),copyState:e.copyState||Kie,indent:e.indent||(()=>null),languageData:e.languageData||{},tokenTable:e.tokenTable||R8,mergeTokens:e.mergeTokens!==!1}}function Kie(e){if(typeof e!=`object`)return e;let t={};for(let n in e){let r=e[n];t[n]=r instanceof Array?r.slice():r}return t}var P8=new WeakMap,qie=class e extends N6{constructor(e){let t=j6(e.languageData),n=Gie(e),r,i=new class extends B3{createParse(e,t,n){return new Yie(r,e,t,n)}};super(t,i,[],e.name),this.topNode=Qie(t,this),r=this,this.streamParser=n,this.stateAfter=new u3({perNode:!0}),this.tokenTable=e.tokenTable?new U8(n.tokenTable):Zie}static define(t){return new e(t)}getIndent(e){let t,{overrideIndentation:n}=e.options;n&&(t=P8.get(e.state),t!=null&&t1e4)return null;for(;i=r&&n+t.length<=i&&t.prop(e.stateAfter);if(a)return{state:e.streamParser.copyState(a),pos:n+t.length};for(let a=t.children.length-1;a>=0;a--){let o=t.children[a],s=n+t.positions[a],c=o instanceof v3&&s=t.length)return t;!i&&n==0&&t.type==e.topNode&&(i=!0);for(let a=t.children.length-1;a>=0;a--){let o=t.positions[a],s=t.children[a],c;if(on&&F8(e,i.tree,0-i.offset,n,a),s;if(o&&o.pos<=r&&(s=I8(e,i.tree,n+i.offset,o.pos+i.offset,!1)))return{state:o.state,tree:s}}return{state:e.streamParser.startState(i?Y6(i):4),tree:v3.empty}}var Yie=class{constructor(e,t,n,r){this.lang=e,this.input=t,this.fragments=n,this.ranges=r,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=r[r.length-1].to;let i=z6.get(),a=r[0].from,{state:o,tree:s}=Jie(e,n,a,this.to,i?.state);this.state=o,this.parsedPos=this.chunkStart=a+s.length;for(let e=0;ee.from<=i.viewport.from&&e.to>=i.viewport.from)&&(this.state=this.lang.streamParser.startState(Y6(i.state)),i.skipUntilInView(this.parsedPos,i.viewport.from),this.parsedPos=i.viewport.from),this.moveRangeIndex()}advance(){let e=z6.get(),t=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),n=Math.min(t,this.chunkStart+512);for(e&&(n=Math.min(n,e.viewport.to));this.parsedPos=t?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,t),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let t=this.input.chunk(e);if(this.input.lineChunks)t==` `&&(t=``);else{let e=t.indexOf(` -`);e>-1&&(t=t.slice(0,e))}return e+t.length<=this.to?t:t.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,t=this.lineAfter(e),n=e+t.length;for(let e=this.rangeIndex;;){let r=this.ranges[e].to;if(r>=n||(t=t.slice(0,r-(n-t.length)),e++,e==this.ranges.length))break;let i=this.ranges[e].from,a=this.lineAfter(i);t+=a,n=i+a.length}return{line:t,end:n}}skipGapsTo(e,t,n){for(;;){let r=this.ranges[this.rangeIndex].to,i=e+t;if(n>0?r>i:r>=i)break;let a=this.ranges[++this.rangeIndex].from;t+=a-r}return t}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){r=this.skipGapsTo(t,r,1),t+=r;let e=this.chunk.length;r=this.skipGapsTo(n,r,-1),n+=r,i+=this.chunk.length-e}let a=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&i==4&&a>=0&&this.chunk[a]==e&&this.chunk[a+2]==t?this.chunk[a+2]=n:this.chunk.push(e,t,n,i),r}parseLine(e){let{line:t,end:n}=this.nextLine(),r=0,{streamParser:i}=this.lang,a=new N8(t,e?e.state.tabSize:4,e?m6(e.state):2);if(a.eol())i.blankLine(this.state,a.indentUnit);else for(;!a.eol();){let e=L8(i.token,a,this.state);if(e&&(r=this.emitToken(this.lang.tokenTable.resolve(e),this.parsedPos+a.start,this.parsedPos+a.pos,r)),a.start>1e4)break}this.parsedPos=n,this.moveRangeIndex(),this.parsedPost.start)return r}throw Error(`Stream parser failed to advance stream.`)}var R8=Object.create(null),z8=[M4.none],kre=new N4(z8),B8=[],V8=Object.create(null),H8=Object.create(null);for(let[e,t]of[[`variable`,`variableName`],[`variable-2`,`variableName.special`],[`string-2`,`string.special`],[`def`,`variableName.definition`],[`tag`,`tagName`],[`attribute`,`attributeName`],[`type`,`typeName`],[`builtin`,`variableName.standard`],[`qualifier`,`modifier`],[`error`,`invalid`],[`header`,`heading`],[`property`,`propertyName`]])H8[e]=G8(R8,t);var U8=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),H8)}resolve(e){return e?this.table[e]||(this.table[e]=G8(this.extra,e)):0}},Are=new U8(R8);function W8(e,t){B8.indexOf(e)>-1||(B8.push(e),console.warn(t))}function G8(e,t){let n=[];for(let r of t.split(` `)){let t=[];for(let n of r.split(`.`)){let r=e[n]||Z[n];r?typeof r==`function`?t.length?t=t.map(r):W8(n,`Modifier ${n} used at start of tag`):t.length?W8(n,`Tag ${n} used as modifier`):t=Array.isArray(r)?r:[r]:W8(n,`Unknown highlighting tag ${n}`)}for(let e of t)n.push(e)}if(!n.length)return 0;let r=t.replace(/ /g,`_`),i=r+` `+n.map(e=>e.id),a=V8[i];if(a)return a.id;let o=V8[i]=M4.define({id:z8.length,name:r,props:[D3({[r]:n})]});return z8.push(o),o.id}function jre(e,t){let n=M4.define({id:z8.length,name:`Document`,props:[Y3.add(()=>e),v6.add(()=>e=>t.getIndent(e))],top:!0});return z8.push(n),n}HZ.RTL,HZ.LTR;var Mre=e=>{let{state:t}=e,n=t.doc.lineAt(t.selection.main.from),r=q8(e.state,n.from);return r.line?Nre(e):r.block?Fre(e):!1};function K8(e,t){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let i=e(t,n);return i?(r(n.update(i)),!0):!1}}var Nre=K8(Rre,0),Pre=K8(Y8,0),Fre=K8((e,t)=>Y8(e,t,Lre(t)),0);function q8(e,t){let n=e.languageDataAt(`commentTokens`,t,1);return n.length?n[0]:{}}var J8=50;function Ire(e,{open:t,close:n},r,i){let a=e.sliceDoc(r-J8,r),o=e.sliceDoc(i,i+J8),s=/\s*$/.exec(a)[0].length,c=/^\s*/.exec(o)[0].length,l=a.length-s;if(a.slice(l-t.length,l)==t&&o.slice(c,c+n.length)==n)return{open:{pos:r-s,margin:s&&1},close:{pos:i+c,margin:c&&1}};let u,d;i-r<=2*J8?u=d=e.sliceDoc(r,i):(u=e.sliceDoc(r,r+J8),d=e.sliceDoc(i-J8,i));let f=/^\s*/.exec(u)[0].length,p=/\s*$/.exec(d)[0].length,m=d.length-p-n.length;return u.slice(f,f+t.length)==t&&d.slice(m,m+n.length)==n?{open:{pos:r+f+t.length,margin:+!!/\s/.test(u.charAt(f+t.length))},close:{pos:i-p-n.length,margin:+!!/\s/.test(d.charAt(m-1))}}:null}function Lre(e){let t=[];for(let n of e.selection.ranges){let r=e.doc.lineAt(n.from),i=n.to<=r.to?r:e.doc.lineAt(n.to);i.from>r.from&&i.from==n.to&&(i=n.to==r.to+1?r:e.doc.lineAt(n.to-1));let a=t.length-1;a>=0&&t[a].to>r.from?t[a].to=i.to:t.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:i.to})}return t}function Y8(e,t,n=t.selection.ranges){let r=n.map(e=>q8(t,e.from).block);if(!r.every(e=>e))return null;let i=n.map((e,n)=>Ire(t,r[n],e.from,e.to));if(e!=2&&!i.every(e=>e))return{changes:t.changes(n.map((e,t)=>i[t]?[]:[{from:e.from,insert:r[t].open+` `},{from:e.to,insert:` `+r[t].close}]))};if(e!=1&&i.some(e=>e)){let e=[];for(let t=0,n;ti&&(e==a||a>c.from)){i=c.from;let e=/^\s*/.exec(c.text)[0].length,t=e==c.length,n=c.text.slice(e,e+s.length)==s?e:-1;ee.comment<0&&(!e.empty||e.single))){let e=[];for(let{line:t,token:n,indent:i,empty:a,single:o}of r)(o||!a)&&e.push({from:t.from+i,insert:n+` `});let n=t.changes(e);return{changes:n,selection:t.selection.map(n,1)}}else if(e!=1&&r.some(e=>e.comment>=0)){let e=[];for(let{line:t,comment:n,token:i}of r)if(n>=0){let r=t.from+n,a=r+i.length;t.text[a-t.from]==` `&&a++,e.push({from:r,to:a})}return{changes:e}}return null}var X8=BY.define(),zre=BY.define(),Bre=hY.define(),Z8=hY.define({combine(e){return aX(e,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(n,r)=>e(n,r)||t(n,r)})}}),Q8=SY.define({create(){return c5.empty},update(e,t){let n=t.state.facet(Z8),r=t.annotation(X8);if(r){let i=n5.fromTransaction(t,r.selection),a=r.side,o=a==0?e.undone:e.done;return o=i?r5(o,o.length,n.minDepth,i):o5(o,t.startState.selection),new c5(a==0?r.rest:o,a==0?o:r.rest)}let i=t.annotation(zre);if((i==`full`||i==`before`)&&(e=e.isolate()),t.annotation(WY.addToHistory)===!1)return t.changes.empty?e:e.addMapping(t.changes.desc);let a=n5.fromTransaction(t),o=t.annotation(WY.time),s=t.annotation(WY.userEvent);return a?e=e.addChanges(a,o,s,n,t):t.selection&&(e=e.addSelection(t.startState.selection,o,s,n.newGroupDelay)),(i==`full`||i==`after`)&&(e=e.isolate()),e},toJSON(e){return{done:e.done.map(e=>e.toJSON()),undone:e.undone.map(e=>e.toJSON())}},fromJSON(e){return new c5(e.done.map(n5.fromJSON),e.undone.map(n5.fromJSON))}});function Vre(e={}){return[Q8,Z8.of(e),R0.domEventHandlers({beforeinput(e,t){let n=e.inputType==`historyUndo`?e5:e.inputType==`historyRedo`?t5:null;return n?(e.preventDefault(),n(t)):!1}})]}function $8(e,t){return function({state:n,dispatch:r}){if(!t&&n.readOnly)return!1;let i=n.field(Q8,!1);if(!i)return!1;let a=i.pop(e,n,t);return a?(r(a),!0):!1}}var e5=$8(0,!1),t5=$8(1,!1),Hre=$8(0,!0),Ure=$8(1,!0),n5=class e{constructor(e,t,n,r,i){this.changes=e,this.effects=t,this.mapped=n,this.startSelection=r,this.selectionsAfter=i}setSelAfter(t){return new e(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){return{changes:this.changes?.toJSON(),mapped:this.mapped?.toJSON(),startSelection:this.startSelection?.toJSON(),selectionsAfter:this.selectionsAfter.map(e=>e.toJSON())}}static fromJSON(t){return new e(t.changes&&aY.fromJSON(t.changes),[],t.mapped&&iY.fromJSON(t.mapped),t.startSelection&&Y.fromJSON(t.startSelection),t.selectionsAfter.map(Y.fromJSON))}static fromTransaction(t,n){let r=a5;for(let e of t.startState.facet(Bre)){let n=e(t);n.length&&(r=r.concat(n))}return!r.length&&t.changes.empty?null:new e(t.changes.invert(t.startState.doc),r,void 0,n||t.startState.selection,a5)}static selection(t){return new e(void 0,a5,void 0,void 0,t)}};function r5(e,t,n,r){let i=t+1>n+20?t-n-1:0,a=e.slice(i,t);return a.push(r),a}function Wre(e,t){let n=[],r=!1;return e.iterChangedRanges((e,t)=>n.push(e,t)),t.iterChangedRanges((e,t,i,a)=>{for(let e=0;e=t&&i<=o&&(r=!0)}}),r}function Gre(e,t){return e.ranges.length==t.ranges.length&&e.ranges.filter((e,n)=>e.empty!=t.ranges[n].empty).length===0}function i5(e,t){return e.length?t.length?e.concat(t):e:t}var a5=[],Kre=200;function o5(e,t){if(e.length){let n=e[e.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-Kre));return r.length&&r[r.length-1].eq(t)?e:(r.push(t),r5(e,e.length-1,1e9,n.setSelAfter(r)))}else return[n5.selection([t])]}function qre(e){let t=e[e.length-1],n=e.slice();return n[e.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),n}function s5(e,t){if(!e.length)return e;let n=e.length,r=a5;for(;n;){let i=Jre(e[n-1],t,r);if(i.changes&&!i.changes.empty||i.effects.length){let t=e.slice(0,n);return t[n-1]=i,t}else t=i.mapped,n--,r=i.selectionsAfter}return r.length?[n5.selection(r)]:a5}function Jre(e,t,n){let r=i5(e.selectionsAfter.length?e.selectionsAfter.map(e=>e.map(t)):a5,n);if(!e.changes)return n5.selection(r);let i=e.changes.map(t),a=t.mapDesc(e.changes,!0),o=e.mapped?e.mapped.composeDesc(a):a;return new n5(i,UY.mapEffects(e.effects,t),o,e.startSelection.map(a),r)}var Yre=/^(input\.type|delete)($|\.)/,c5=class e{constructor(e,t,n=0,r=void 0){this.done=e,this.undone=t,this.prevTime=n,this.prevUserEvent=r}isolate(){return this.prevTime?new e(this.done,this.undone):this}addChanges(t,n,r,i,a){let o=this.done,s=o[o.length-1];return o=s&&s.changes&&!s.changes.empty&&t.changes&&(!r||Yre.test(r))&&(!s.selectionsAfter.length&&n-this.prevTime0&&n-this.prevTimen.empty?e.moveByChar(n,t):f5(n,t))}function m5(e){return e.textDirectionAt(e.state.selection.main.head)==HZ.LTR}var h5=e=>p5(e,!m5(e)),g5=e=>p5(e,m5(e));function _5(e,t){return d5(e,n=>n.empty?e.moveByGroup(n,t):f5(n,t))}var Zre=e=>_5(e,!m5(e)),Qre=e=>_5(e,m5(e));typeof Intl<`u`&&Intl.Segmenter;function $re(e,t,n){if(t.type.prop(n))return!0;let r=t.to-t.from;return r&&(r>2||/[^\s,.;:]/.test(e.sliceDoc(t.from,t.to)))||t.firstChild}function v5(e,t,n){let r=t6(e).resolveInner(t.head),i=n?k4.closedBy:k4.openedBy;for(let a=t.head;;){let t=n?r.childAfter(a):r.childBefore(a);if(!t)break;$re(e,t,i)?r=t:a=n?t.to:t.from}let a=r.type.prop(i),o,s;return s=a&&(o=n?k8(e,r.from,1):k8(e,r.to,-1))&&o.matched?n?o.end.to:o.end.from:n?r.to:r.from,Y.cursor(s,n?-1:1)}var eie=e=>d5(e,t=>v5(e.state,t,!m5(e))),tie=e=>d5(e,t=>v5(e.state,t,m5(e)));function y5(e,t){return d5(e,n=>{if(!n.empty)return f5(n,t);let r=e.moveVertically(n,t);return r.head==n.head?e.moveToLineBoundary(n,t):r})}var b5=e=>y5(e,!1),x5=e=>y5(e,!0);function S5(e){let t=e.scrollDOM.clientHeightr.empty?e.moveVertically(r,t,n.height):f5(r,t));if(i.eq(r.selection))return!1;let a;if(n.selfScroll){let t=e.coordsAtPos(r.selection.main.head),o=e.scrollDOM.getBoundingClientRect(),s=o.top+n.marginTop,c=o.bottom-n.marginBottom;t&&t.top>s&&t.bottomC5(e,!1),T5=e=>C5(e,!0);function E5(e,t,n){let r=e.lineBlockAt(t.head),i=e.moveToLineBoundary(t,n);if(i.head==t.head&&i.head!=(n?r.to:r.from)&&(i=e.moveToLineBoundary(t,n,!1)),!n&&i.head==r.from&&r.length){let n=/^\s*/.exec(e.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length;n&&t.head!=r.from+n&&(i=Y.cursor(r.from+n))}return i}var nie=e=>d5(e,t=>E5(e,t,!0)),rie=e=>d5(e,t=>E5(e,t,!1)),iie=e=>d5(e,t=>E5(e,t,!m5(e))),aie=e=>d5(e,t=>E5(e,t,m5(e))),oie=e=>d5(e,t=>Y.cursor(e.lineBlockAt(t.head).from,1)),sie=e=>d5(e,t=>Y.cursor(e.lineBlockAt(t.head).to,-1));function cie(e,t,n){let r=!1,i=l5(e.selection,t=>{let i=k8(e,t.head,-1)||k8(e,t.head,1)||t.head>0&&k8(e,t.head-1,1)||t.headcie(e,t,!1);function D5(e,t){let n=l5(e.state.selection,e=>{let n=t(e);return Y.range(e.anchor,n.head,n.goalColumn,n.bidiLevel||void 0,n.assoc)});return n.eq(e.state.selection)?!1:(e.dispatch(u5(e.state,n)),!0)}function O5(e,t){return D5(e,n=>e.moveByChar(n,t))}var k5=e=>O5(e,!m5(e)),A5=e=>O5(e,m5(e));function j5(e,t){return D5(e,n=>e.moveByGroup(n,t))}var uie=e=>j5(e,!m5(e)),die=e=>j5(e,m5(e)),fie=e=>D5(e,t=>v5(e.state,t,!m5(e))),pie=e=>D5(e,t=>v5(e.state,t,m5(e)));function M5(e,t){return D5(e,n=>e.moveVertically(n,t))}var N5=e=>M5(e,!1),P5=e=>M5(e,!0);function F5(e,t){return D5(e,n=>e.moveVertically(n,t,S5(e).height))}var I5=e=>F5(e,!1),L5=e=>F5(e,!0),mie=e=>D5(e,t=>E5(e,t,!0)),hie=e=>D5(e,t=>E5(e,t,!1)),gie=e=>D5(e,t=>E5(e,t,!m5(e))),_ie=e=>D5(e,t=>E5(e,t,m5(e))),vie=e=>D5(e,t=>Y.cursor(e.lineBlockAt(t.head).from)),yie=e=>D5(e,t=>Y.cursor(e.lineBlockAt(t.head).to)),R5=({state:e,dispatch:t})=>(t(u5(e,{anchor:0})),!0),z5=({state:e,dispatch:t})=>(t(u5(e,{anchor:e.doc.length})),!0),B5=({state:e,dispatch:t})=>(t(u5(e,{anchor:e.selection.main.anchor,head:0})),!0),V5=({state:e,dispatch:t})=>(t(u5(e,{anchor:e.selection.main.anchor,head:e.doc.length})),!0),bie=({state:e,dispatch:t})=>(t(e.update({selection:{anchor:0,head:e.doc.length},userEvent:`select`})),!0),xie=({state:e,dispatch:t})=>{let n=X5(e).map(({from:t,to:n})=>Y.range(t,Math.min(n+1,e.doc.length)));return t(e.update({selection:Y.create(n),userEvent:`select`})),!0},Sie=({state:e,dispatch:t})=>{let n=l5(e.selection,t=>{let n=t6(e),r=n.resolveStack(t.from,1);if(t.empty){let e=n.resolveStack(t.from,-1);e.node.from>=r.node.from&&e.node.to<=r.node.to&&(r=e)}for(let e=r;e;e=e.next){let{node:n}=e;if((n.from=t.to||n.to>t.to&&n.from<=t.from)&&e.next)return Y.range(n.to,n.from)}return t});return n.eq(e.selection)?!1:(t(u5(e,n)),!0)};function H5(e,t){let{state:n}=e,r=n.selection,i=n.selection.ranges.slice();for(let r of n.selection.ranges){let a=n.doc.lineAt(r.head);if(t?a.to0)for(let n=r;;){let r=e.moveVertically(n,t);if(r.heada.to){i.some(e=>e.head==r.head)||i.push(r);break}else if(r.head==n.head)break;else n=r}}return i.length==r.ranges.length?!1:(e.dispatch(u5(n,Y.create(i,i.length-1))),!0)}var Cie=e=>H5(e,!1),wie=e=>H5(e,!0),Tie=({state:e,dispatch:t})=>{let n=e.selection,r=null;return n.ranges.length>1?r=Y.create([n.main]):n.main.empty||(r=Y.create([Y.cursor(n.main.head)])),r?(t(u5(e,r)),!0):!1};function U5(e,t){if(e.state.readOnly)return!1;let n=`delete.selection`,{state:r}=e,i=r.changeByRange(r=>{let{from:i,to:a}=r;if(i==a){let o=t(r);oi&&(n=`delete.forward`,o=W5(e,o,!0)),i=Math.min(i,o),a=Math.max(a,o)}else i=W5(e,i,!1),a=W5(e,a,!0);return i==a?{range:r}:{changes:{from:i,to:a},range:Y.cursor(i,it(e)))r.between(t,t,(e,r)=>{et&&(t=n?r:e)});return t}var G5=(e,t,n)=>U5(e,r=>{let i=r.from,{state:a}=e,o=a.doc.lineAt(i),s,c;if(n&&!t&&i>o.from&&iG5(e,!1,!0),q5=e=>G5(e,!0,!1),J5=(e,t)=>U5(e,n=>{let r=n.head,{state:i}=e,a=i.doc.lineAt(r),o=i.charCategorizer(r);for(let e=null;;){if(r==(t?a.to:a.from)){r==n.head&&a.number!=(t?i.doc.lines:1)&&(r+=t?1:-1);break}let s=XJ(a.text,r-a.from,t)+a.from,c=a.text.slice(Math.min(r,s)-a.from,Math.max(r,s)-a.from),l=o(c);if(e!=null&&l!=e)break;(c!=` `||r!=n.head)&&(e=l),r=s}return r}),Y5=e=>J5(e,!1),Eie=e=>J5(e,!0),Die=e=>U5(e,t=>{let n=e.lineBlockAt(t.head).to;return t.headU5(e,t=>{let n=e.moveToLineBoundary(t,!1).head;return t.head>n?n:Math.max(0,t.head-1)}),kie=e=>U5(e,t=>{let n=e.moveToLineBoundary(t,!0).head;return t.head{if(e.readOnly)return!1;let n=e.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:zJ.of([``,``])},range:Y.cursor(e.from)}));return t(e.update(n,{scrollIntoView:!0,userEvent:`input`})),!0},jie=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(t=>{if(!t.empty||t.from==0||t.from==e.doc.length)return{range:t};let n=t.from,r=e.doc.lineAt(n),i=n==r.from?n-1:XJ(r.text,n-r.from,!1)+r.from,a=n==r.to?n+1:XJ(r.text,n-r.from,!0)+r.from;return{changes:{from:i,to:a,insert:e.doc.slice(n,a).append(e.doc.slice(i,n))},range:Y.cursor(a)}});return n.changes.empty?!1:(t(e.update(n,{scrollIntoView:!0,userEvent:`move.character`})),!0)};function X5(e){let t=[],n=-1;for(let r of e.selection.ranges){let i=e.doc.lineAt(r.from),a=e.doc.lineAt(r.to);if(!r.empty&&r.to==a.from&&(a=e.doc.lineAt(r.to-1)),n>=i.number){let e=t[t.length-1];e.to=a.to,e.ranges.push(r)}else t.push({from:i.from,to:a.to,ranges:[r]});n=a.number+1}return t}function Z5(e,t,n){if(e.readOnly)return!1;let r=[],i=[];for(let t of X5(e)){if(n?t.to==e.doc.length:t.from==0)continue;let a=e.doc.lineAt(n?t.to+1:t.from-1),o=a.length+1;if(n){r.push({from:t.to,to:a.to},{from:t.from,insert:a.text+e.lineBreak});for(let n of t.ranges)i.push(Y.range(Math.min(e.doc.length,n.anchor+o),Math.min(e.doc.length,n.head+o)))}else{r.push({from:a.from,to:t.from},{from:t.to,insert:e.lineBreak+a.text});for(let e of t.ranges)i.push(Y.range(e.anchor-o,e.head-o))}}return r.length?(t(e.update({changes:r,scrollIntoView:!0,selection:Y.create(i,e.selection.mainIndex),userEvent:`move.line`})),!0):!1}var Mie=({state:e,dispatch:t})=>Z5(e,t,!1),Nie=({state:e,dispatch:t})=>Z5(e,t,!0);function Q5(e,t,n){if(e.readOnly)return!1;let r=[];for(let t of X5(e))n?r.push({from:t.from,insert:e.doc.slice(t.from,t.to)+e.lineBreak}):r.push({from:t.to,insert:e.lineBreak+e.doc.slice(t.from,t.to)});let i=e.changes(r);return t(e.update({changes:i,selection:e.selection.map(i,n?1:-1),scrollIntoView:!0,userEvent:`input.copyline`})),!0}var Pie=({state:e,dispatch:t})=>Q5(e,t,!1),Fie=({state:e,dispatch:t})=>Q5(e,t,!0),Iie=e=>{if(e.state.readOnly)return!1;let{state:t}=e,n=t.changes(X5(t).map(({from:e,to:n})=>(e>0?e--:n{let n;if(e.lineWrapping){let r=e.lineBlockAt(t.head),i=e.coordsAtPos(t.head,t.assoc||1);i&&(n=r.bottom+e.documentTop-i.bottom+e.defaultLineHeight/2)}return e.moveVertically(t,!0,n)}).map(n);return e.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:`delete.line`}),!0};function Lie(e,t){if(/\(\)|\[\]|\{\}/.test(e.sliceDoc(t-1,t+1)))return{from:t,to:t};let n=t6(e).resolveInner(t),r=n.childBefore(t),i=n.childAfter(t),a;return r&&i&&r.to<=t&&i.from>=t&&(a=r.type.prop(k4.closedBy))&&a.indexOf(i.name)>-1&&e.doc.lineAt(r.to).from==e.doc.lineAt(i.from).from&&!/\S/.test(e.sliceDoc(r.to,i.from))?{from:r.to,to:i.from}:null}var $5=e7(!1),Rie=e7(!0);function e7(e){return({state:t,dispatch:n})=>{if(t.readOnly)return!1;let r=t.changeByRange(n=>{let{from:r,to:i}=n,a=t.doc.lineAt(r),o=!e&&r==i&&Lie(t,r);e&&(r=i=(i<=a.to?a:t.doc.lineAt(i)).to);let s=new _6(t,{simulateBreak:r,simulateDoubleBreak:!!o}),c=g6(s,r);for(c??=wX(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize);ia.from&&r{let i=[];for(let a=r.from;a<=r.to;){let o=e.doc.lineAt(a);o.number>n&&(r.empty||r.to>o.from)&&(t(o,i,r),n=o.number),a=o.to+1}let a=e.changes(i);return{changes:i,range:Y.range(a.mapPos(r.anchor,1),a.mapPos(r.head,1))}})}var zie=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=Object.create(null),r=new _6(e,{overrideIndentation:e=>n[e]??-1}),i=t7(e,(t,i,a)=>{let o=g6(r,t.from);if(o==null)return;/\S/.test(t.text)||(o=0);let s=/^\s*/.exec(t.text)[0],c=h6(e,o);(s!=c||a.frome.readOnly?!1:(t(e.update(t7(e,(t,n)=>{n.push({from:t.from,insert:e.facet(p6)})}),{userEvent:`input.indent`})),!0),r7=({state:e,dispatch:t})=>e.readOnly?!1:(t(e.update(t7(e,(t,n)=>{let r=/^\s*/.exec(t.text)[0];if(!r)return;let i=wX(r,e.tabSize),a=0,o=h6(e,Math.max(0,i-m6(e)));for(;a(e.setTabFocusMode(),!0),Vie=[{key:`Ctrl-b`,run:h5,shift:k5,preventDefault:!0},{key:`Ctrl-f`,run:g5,shift:A5},{key:`Ctrl-p`,run:b5,shift:N5},{key:`Ctrl-n`,run:x5,shift:P5},{key:`Ctrl-a`,run:oie,shift:vie},{key:`Ctrl-e`,run:sie,shift:yie},{key:`Ctrl-d`,run:q5},{key:`Ctrl-h`,run:K5},{key:`Ctrl-k`,run:Die},{key:`Ctrl-Alt-h`,run:Y5},{key:`Ctrl-o`,run:Aie},{key:`Ctrl-t`,run:jie},{key:`Ctrl-v`,run:T5}],Hie=[{key:`ArrowLeft`,run:h5,shift:k5,preventDefault:!0},{key:`Mod-ArrowLeft`,mac:`Alt-ArrowLeft`,run:Zre,shift:uie,preventDefault:!0},{mac:`Cmd-ArrowLeft`,run:iie,shift:gie,preventDefault:!0},{key:`ArrowRight`,run:g5,shift:A5,preventDefault:!0},{key:`Mod-ArrowRight`,mac:`Alt-ArrowRight`,run:Qre,shift:die,preventDefault:!0},{mac:`Cmd-ArrowRight`,run:aie,shift:_ie,preventDefault:!0},{key:`ArrowUp`,run:b5,shift:N5,preventDefault:!0},{mac:`Cmd-ArrowUp`,run:R5,shift:B5},{mac:`Ctrl-ArrowUp`,run:w5,shift:I5},{key:`ArrowDown`,run:x5,shift:P5,preventDefault:!0},{mac:`Cmd-ArrowDown`,run:z5,shift:V5},{mac:`Ctrl-ArrowDown`,run:T5,shift:L5},{key:`PageUp`,run:w5,shift:I5},{key:`PageDown`,run:T5,shift:L5},{key:`Home`,run:rie,shift:hie,preventDefault:!0},{key:`Mod-Home`,run:R5,shift:B5},{key:`End`,run:nie,shift:mie,preventDefault:!0},{key:`Mod-End`,run:z5,shift:V5},{key:`Enter`,run:$5,shift:$5},{key:`Mod-a`,run:bie},{key:`Backspace`,run:K5,shift:K5,preventDefault:!0},{key:`Delete`,run:q5,preventDefault:!0},{key:`Mod-Backspace`,mac:`Alt-Backspace`,run:Y5,preventDefault:!0},{key:`Mod-Delete`,mac:`Alt-Delete`,run:Eie,preventDefault:!0},{mac:`Mod-Backspace`,run:Oie,preventDefault:!0},{mac:`Mod-Delete`,run:kie,preventDefault:!0}].concat(Vie.map(e=>({mac:e.key,run:e.run,shift:e.shift}))),Uie=[{key:`Alt-ArrowLeft`,mac:`Ctrl-ArrowLeft`,run:eie,shift:fie},{key:`Alt-ArrowRight`,mac:`Ctrl-ArrowRight`,run:tie,shift:pie},{key:`Alt-ArrowUp`,run:Mie},{key:`Shift-Alt-ArrowUp`,run:Pie},{key:`Alt-ArrowDown`,run:Nie},{key:`Shift-Alt-ArrowDown`,run:Fie},{key:`Mod-Alt-ArrowUp`,run:Cie},{key:`Mod-Alt-ArrowDown`,run:wie},{key:`Escape`,run:Tie},{key:`Mod-Enter`,run:Rie},{key:`Alt-l`,mac:`Ctrl-l`,run:xie},{key:`Mod-i`,run:Sie,preventDefault:!0},{key:`Mod-[`,run:r7},{key:`Mod-]`,run:n7},{key:`Mod-Alt-\\`,run:zie},{key:`Shift-Mod-k`,run:Iie},{key:`Shift-Mod-\\`,run:lie},{key:`Mod-/`,run:Mre},{key:`Alt-A`,run:Pre},{key:`Ctrl-m`,mac:`Shift-Alt-m`,run:Bie}].concat(Hie),Wie={key:`Tab`,run:n7,shift:r7},Gie=`#e5c07b`,i7=`#e06c75`,Kie=`#56b6c2`,qie=`#ffffff`,a7=`#abb2bf`,o7=`#7d8799`,Jie=`#61afef`,Yie=`#98c379`,s7=`#d19a66`,Xie=`#c678dd`,Zie=`#21252b`,c7=`#2c313a`,l7=`#282c34`,u7=`#353a42`,Qie=`#3E4451`,d7=`#528bff`,f7=[R0.theme({"&":{color:a7,backgroundColor:l7},".cm-content":{caretColor:d7},".cm-cursor, .cm-dropCursor":{borderLeftColor:d7},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Qie},".cm-panels":{backgroundColor:Zie,color:a7},".cm-panels.cm-panels-top":{borderBottom:`2px solid black`},".cm-panels.cm-panels-bottom":{borderTop:`2px solid black`},".cm-searchMatch":{backgroundColor:`#72a1ff59`,outline:`1px solid #457dff`},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:`#6199ff2f`},".cm-activeLine":{backgroundColor:`#6699ff0b`},".cm-selectionMatch":{backgroundColor:`#aafe661a`},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:`#bad0f847`},".cm-gutters":{backgroundColor:l7,color:o7,border:`none`},".cm-activeLineGutter":{backgroundColor:c7},".cm-foldPlaceholder":{backgroundColor:`transparent`,border:`none`,color:`#ddd`},".cm-tooltip":{border:`none`,backgroundColor:u7},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:`transparent`,borderBottomColor:`transparent`},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:u7,borderBottomColor:u7},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:c7,color:a7}}},{dark:!0}),f8(c8.define([{tag:Z.keyword,color:Xie},{tag:[Z.name,Z.deleted,Z.character,Z.propertyName,Z.macroName],color:i7},{tag:[Z.function(Z.variableName),Z.labelName],color:Jie},{tag:[Z.color,Z.constant(Z.name),Z.standard(Z.name)],color:s7},{tag:[Z.definition(Z.name),Z.separator],color:a7},{tag:[Z.typeName,Z.className,Z.number,Z.changed,Z.annotation,Z.modifier,Z.self,Z.namespace],color:Gie},{tag:[Z.operator,Z.operatorKeyword,Z.url,Z.escape,Z.regexp,Z.link,Z.special(Z.string)],color:Kie},{tag:[Z.meta,Z.comment],color:o7},{tag:Z.strong,fontWeight:`bold`},{tag:Z.emphasis,fontStyle:`italic`},{tag:Z.strikethrough,textDecoration:`line-through`},{tag:Z.link,color:o7,textDecoration:`underline`},{tag:Z.heading,fontWeight:`bold`,color:i7},{tag:[Z.atom,Z.bool,Z.special(Z.variableName)],color:s7},{tag:[Z.processingInstruction,Z.string,Z.inserted],color:Yie},{tag:Z.invalid,color:qie}]))],p7=typeof String.prototype.normalize==`function`?e=>e.normalize(`NFKD`):e=>e,m7=class{constructor(e,t,n=0,r=e.length,i,a){this.test=a,this.value={from:0,to:0,precise:!1},this.done=!1,this.matches=[],this.buffer=``,this.bufferPos=0,this.iter=e.iterRange(n,r),this.bufferStart=n,this.normalize=i?e=>i(p7(e)):p7,this.query=this.normalize(t)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return $J(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let t=eY(e),n=this.bufferStart+this.bufferPos;this.bufferPos+=tY(e);let r=this.normalize(t);if(r.length)for(let e=0,i=n,a=!0;;e++){let n=r.charCodeAt(e),o=this.match(n,i,a,this.bufferPos+this.bufferStart,e==r.length-1);if(o)return this.value=o,this;if(e==r.length-1)break;a&&ethis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine=``:this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let t=this.matchPos<=this.to&&this.re.exec(this.curLine);if(t){let n=this.curLineStart+t.index,r=n+t[0].length;if(this.matchPos=x7(this.text,r+ +(n==r)),n==this.curLineStart+this.curLine.length&&this.nextLine(),(nthis.value.to)&&(!this.test||this.test(n,r,t)))return this.value={from:n,to:r,precise:!0,match:t},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=r||i.to<=n){let i=new e(n,t.sliceString(n,r));return v7.set(t,i),i}if(i.from==n&&i.to==r)return i;let{text:a,from:o}=i;return o>n&&(a=t.sliceString(n,o)+a,o=n),i.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,t=this.re.exec(this.flat.text);if(t&&!t[0]&&t.index==e&&(this.re.lastIndex=e+1,t=this.re.exec(this.flat.text)),t){let e=this.flat.from+t.index,n=e+t[0].length;if((this.flat.to>=this.to||t.index+t[0].length<=this.flat.text.length-10)&&(!this.test||this.test(e,n,t)))return this.value={from:e,to:n,precise:!0,match:t},this.matchPos=x7(this.text,n+ +(e==n)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=y7.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}};typeof Symbol<`u`&&(_7.prototype[Symbol.iterator]=b7.prototype[Symbol.iterator]=function(){return this});function $ie(e){try{return new RegExp(e,g7),!0}catch{return!1}}function x7(e,t){if(t>=e.length)return t;let n=e.lineAt(t),r;for(;t=56320&&r<57344;)t++;return t}var eae=e=>{let{state:t}=e,n=String(t.doc.lineAt(e.state.selection.main.head).number),{close:r,result:i}=Y2(e,{label:t.phrase(`Go to line`),input:{type:`text`,name:`line`,value:n},focus:!0,submitLabel:t.phrase(`go`)});return i.then(n=>{let i=n&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(n.elements.line.value);if(!i){e.dispatch({effects:r});return}let a=t.doc.lineAt(t.selection.main.head),[,o,s,c,l]=i,u=c?+c.slice(1):0,d=s?+s:a.number;if(s&&l){let e=d/100;o&&(e=e*(o==`-`?-1:1)+a.number/t.doc.lines),d=Math.round(t.doc.lines*e)}else s&&o&&(d=d*(o==`-`?-1:1)+a.number);let f=t.doc.line(Math.max(1,Math.min(t.doc.lines,d))),p=Y.cursor(f.from+Math.max(0,Math.min(u,f.length)));e.dispatch({effects:[r,R0.scrollIntoView(p.from,{y:`center`})],selection:p})}),!0},S7={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},C7=hY.define({combine(e){return aX(e,S7,{highlightWordAroundCursor:(e,t)=>e||t,minSelectionLength:Math.min,maxMatches:Math.min})}});function tae(e){let t=[oae,aae];return e&&t.push(C7.of(e)),t}var nae=cZ.mark({class:`cm-selectionMatch`}),rae=cZ.mark({class:`cm-selectionMatch cm-selectionMatch-main`});function w7(e,t,n,r){return(n==0||e(t.sliceDoc(n-1,n))!=$Y.Word)&&(r==t.doc.length||e(t.sliceDoc(r,r+1))!=$Y.Word)}function iae(e,t,n,r){return e(t.sliceDoc(n,n+1))==$Y.Word&&e(t.sliceDoc(r-1,r))==$Y.Word}var aae=AQ.fromClass(class{constructor(e){this.decorations=this.getDeco(e)}update(e){(e.selectionSet||e.docChanged||e.viewportChanged)&&(this.decorations=this.getDeco(e.view))}getDeco(e){let t=e.state.facet(C7),{state:n}=e,r=n.selection;if(r.ranges.length>1)return cZ.none;let i=r.main,a,o=null;if(i.empty){if(!t.highlightWordAroundCursor)return cZ.none;let e=n.wordAt(i.head);if(!e)return cZ.none;o=n.charCategorizer(i.head),a=n.sliceDoc(e.from,e.to)}else{let e=i.to-i.from;if(e200)return cZ.none;if(t.wholeWords){if(a=n.sliceDoc(i.from,i.to),o=n.charCategorizer(i.head),!(w7(o,n,i.from,i.to)&&iae(o,n,i.from,i.to)))return cZ.none}else if(a=n.sliceDoc(i.from,i.to),!a)return cZ.none}let s=[];for(let r of e.visibleRanges){let e=new m7(n.doc,a,r.from,r.to);for(;!e.next().done;){let{from:r,to:a}=e.value;if((!o||w7(o,n,r,a))&&(i.empty&&r<=i.from&&a>=i.to?s.push(rae.range(r,a)):(r>=i.to||a<=i.from)&&s.push(nae.range(r,a)),s.length>t.maxMatches))return cZ.none}}return cZ.set(s)}},{decorations:e=>e.decorations}),oae=R0.baseTheme({".cm-selectionMatch":{backgroundColor:`#99ff7780`},".cm-searchMatch .cm-selectionMatch":{backgroundColor:`transparent`}}),sae=({state:e,dispatch:t})=>{let{selection:n}=e,r=Y.create(n.ranges.map(t=>e.wordAt(t.head)||Y.cursor(t.head)),n.mainIndex);return r.eq(n)?!1:(t(e.update({selection:r})),!0)};function cae(e,t){let{main:n,ranges:r}=e.selection,i=e.wordAt(n.head),a=i&&i.from==n.from&&i.to==n.to;for(let n=!1,i=new m7(e.doc,t,r[r.length-1].to);;)if(i.next(),i.done){if(n)return null;i=new m7(e.doc,t,0,Math.max(0,r[r.length-1].from-1)),n=!0}else{if(n&&r.some(e=>e.from==i.value.from))continue;if(a){let t=e.wordAt(i.value.from);if(!t||t.from!=i.value.from||t.to!=i.value.to)continue}return i.value}}var lae=({state:e,dispatch:t})=>{let{ranges:n}=e.selection;if(n.some(e=>e.from===e.to))return sae({state:e,dispatch:t});let r=e.sliceDoc(n[0].from,n[0].to);if(e.selection.ranges.some(t=>e.sliceDoc(t.from,t.to)!=r))return!1;let i=cae(e,r);return i?(t(e.update({selection:e.selection.addRange(Y.range(i.from,i.to),!1),effects:R0.scrollIntoView(i.to)})),!0):!1},T7=hY.define({combine(e){return aX(e,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new Cae(e),scrollToMatch:e=>R0.scrollIntoView(e)})}}),E7=class{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||``,this.valid=!!this.search&&(!this.regexp||$ie(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord,this.test=e.test}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(e,t)=>t==`n`?` -`:t==`r`?`\r`:t==`t`?` `:`\\`)}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new hae(this):new fae(this)}getCursor(e,t=0,n){let r=e.doc?e:iX.create({doc:e});return n??=r.doc.length,this.regexp?k7(this,r,t,n):O7(this,r,t,n)}},D7=class{constructor(e){this.spec=e}};function uae(e,t,n){return(r,i,a,o)=>n&&!n(r,i,a,o)?!1:e(r>=o&&i<=o+a.length?a.slice(r-o,i-o):t.doc.sliceString(r,i),t,r,i)}function O7(e,t,n,r){let i;return e.wholeWord&&(i=dae(t.doc,t.charCategorizer(t.selection.main.head))),e.test&&(i=uae(e.test,t,i)),new m7(t.doc,e.unquoted,n,r,e.caseSensitive?void 0:e=>e.toLowerCase(),i)}function dae(e,t){return(n,r,i,a)=>((a>n||a+i.length=t)return null;r.push(n.value)}return r}highlight(e,t,n,r){let i=O7(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(n+this.spec.unquoted.length,e.doc.length));for(;!i.next().done;)r(i.value.from,i.value.to)}};function pae(e,t,n){return(r,i,a)=>(!n||n(r,i,a))&&e(a[0],t,r,i)}function k7(e,t,n,r){let i;return e.wholeWord&&(i=mae(t.charCategorizer(t.selection.main.head))),e.test&&(i=pae(e.test,t,i)),new _7(t.doc,e.search,{ignoreCase:!e.caseSensitive,test:i},n,r)}function A7(e,t){return e.slice(XJ(e,t,!1),t)}function j7(e,t){return e.slice(t,XJ(e,t))}function mae(e){return(t,n,r)=>!r[0].length||(e(A7(r.input,r.index))!=$Y.Word||e(j7(r.input,r.index))!=$Y.Word)&&(e(j7(r.input,r.index+r[0].length))!=$Y.Word||e(A7(r.input,r.index+r[0].length))!=$Y.Word)}var hae=class extends D7{nextMatch(e,t,n){let r=k7(this.spec,e,n,e.doc.length).next();return r.done&&(r=k7(this.spec,e,0,t).next()),r.done?null:r.value}prevMatchInRange(e,t,n){for(let r=1;;r++){let i=Math.max(t,n-r*1e4),a=k7(this.spec,e,i,n),o=null;for(;!a.next().done;)o=a.value;if(o&&(i==t||o.from>i+10))return o;if(i==t)return null}}prevMatch(e,t,n){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,n,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(t,n)=>{if(n==`&`)return e.match[0];if(n==`$`)return`$`;for(let t=n.length;t>0;t--){let r=+n.slice(0,t);if(r>0&&r=t)return null;r.push(n.value)}return r}highlight(e,t,n,r){let i=k7(this.spec,e,Math.max(0,t-250),Math.min(n+250,e.doc.length));for(;!i.next().done;)r(i.value.from,i.value.to)}},M7=UY.define(),N7=UY.define(),P7=SY.define({create(e){return new F7(V7(e).create(),null)},update(e,t){for(let n of t.effects)n.is(M7)?e=new F7(n.value.create(),e.panel):n.is(N7)&&(e=new F7(e.query,n.value?B7:null));return e},provide:e=>J2.from(e,e=>e.panel)}),F7=class{constructor(e,t){this.query=e,this.panel=t}},gae=cZ.mark({class:`cm-searchMatch`}),_ae=cZ.mark({class:`cm-searchMatch cm-searchMatch-selected`}),vae=AQ.fromClass(class{constructor(e){this.view=e,this.decorations=this.highlight(e.state.field(P7))}update(e){let t=e.state.field(P7);(t!=e.startState.field(P7)||e.docChanged||e.selectionSet||e.viewportChanged)&&(this.decorations=this.highlight(t))}highlight({query:e,panel:t}){if(!t||!e.spec.valid)return cZ.none;let{view:n}=this,r=new pX;for(let t=0,i=n.visibleRanges,a=i.length;ti[t+1].from-500;)s=i[++t].to;e.highlight(n.state,o,s,(e,t)=>{let i=n.state.selection.ranges.some(n=>n.from==e&&n.to==t);r.add(e,t,i?_ae:gae)})}return r.finish()}},{decorations:e=>e.decorations});function I7(e){return t=>{let n=t.state.field(P7,!1);return n&&n.query.spec.valid?e(t,n):W7(t)}}var L7=I7((e,{query:t})=>{let{to:n}=e.state.selection.main,r=t.nextMatch(e.state,n,n);if(!r)return!1;let i=Y.single(r.from,r.to),a=e.state.facet(T7);return e.dispatch({selection:i,effects:[Y7(e,r),a.scrollToMatch(i.main,e)],userEvent:`select.search`}),U7(e),!0}),R7=I7((e,{query:t})=>{let{state:n}=e,{from:r}=n.selection.main,i=t.prevMatch(n,r,r);if(!i)return!1;let a=Y.single(i.from,i.to),o=e.state.facet(T7);return e.dispatch({selection:a,effects:[Y7(e,i),o.scrollToMatch(a.main,e)],userEvent:`select.search`}),U7(e),!0}),yae=I7((e,{query:t})=>{let n=t.matchAll(e.state,1e3);return!n||!n.length?!1:(e.dispatch({selection:Y.create(n.map(e=>Y.range(e.from,e.to))),userEvent:`select.search.matches`}),!0)}),bae=({state:e,dispatch:t})=>{let n=e.selection;if(n.ranges.length>1||n.main.empty)return!1;let{from:r,to:i}=n.main,a=[],o=0;for(let t=new m7(e.doc,e.sliceDoc(r,i));!t.next().done;){if(a.length>1e3)return!1;t.value.from==r&&(o=a.length),a.push(Y.range(t.value.from,t.value.to))}return t(e.update({selection:Y.create(a,o),userEvent:`select.search.matches`})),!0},z7=I7((e,{query:t})=>{let{state:n}=e,{from:r,to:i}=n.selection.main;if(n.readOnly)return!1;let a=t.nextMatch(n,r,r);if(!a)return!1;let o=a,s=[],c,l,u=[];o.precise?o.from==r&&o.to==i&&(l=n.toText(t.getReplacement(o)),s.push({from:o.from,to:o.to,insert:l}),u.push(R0.announce.of(n.phrase(`replaced match on line $`,n.doc.lineAt(r).number)+`.`))):o=t.nextMatch(n,o.from,o.to);let d=e.state.changes(s);return o&&(c=Y.single(o.from,o.to).map(d),u.push(Y7(e,o)),u.push(n.facet(T7).scrollToMatch(c.main,e))),e.dispatch({changes:d,selection:c,effects:u,userEvent:`input.replace`}),!0}),xae=I7((e,{query:t})=>{if(e.state.readOnly)return!1;let n=[];for(let r of t.matchAll(e.state,1e9)){let{from:e,to:i,precise:a}=r;a&&n.push({from:e,to:i,insert:t.getReplacement(r)})}if(!n.length)return!1;let r=e.state.phrase(`replaced $ matches`,n.length)+`.`;return e.dispatch({changes:n,effects:R0.announce.of(r),userEvent:`input.replace.all`}),!0});function B7(e){return e.state.facet(T7).createPanel(e)}function V7(e,t){let n=e.selection.main,r=n.empty||n.to>n.from+100?``:e.sliceDoc(n.from,n.to);if(t&&!r)return t;let i=e.facet(T7);return new E7({search:t?.literal??i.literal?r:r.replace(/\n/g,`\\n`),caseSensitive:t?.caseSensitive??i.caseSensitive,literal:t?.literal??i.literal,regexp:t?.regexp??i.regexp,wholeWord:t?.wholeWord??i.wholeWord})}function H7(e){let t=W2(e,B7);return t&&t.dom.querySelector(`[main-field]`)}function U7(e){let t=H7(e);t&&t==e.root.activeElement&&t.select()}var W7=e=>{let t=e.state.field(P7,!1);if(t&&t.panel){let n=H7(e);if(n&&n!=e.root.activeElement){let r=V7(e.state,t.query.spec);r.valid&&e.dispatch({effects:M7.of(r)}),n.focus(),n.select()}}else e.dispatch({effects:[N7.of(!0),t?M7.of(V7(e.state,t.query.spec)):UY.appendConfig.of(Tae)]});return!0},G7=e=>{let t=e.state.field(P7,!1);if(!t||!t.panel)return!1;let n=W2(e,B7);return n&&n.dom.contains(e.root.activeElement)&&e.focus(),e.dispatch({effects:N7.of(!1)}),!0},Sae=[{key:`Mod-f`,run:W7,scope:`editor search-panel`},{key:`F3`,run:L7,shift:R7,scope:`editor search-panel`,preventDefault:!0},{key:`Mod-g`,run:L7,shift:R7,scope:`editor search-panel`,preventDefault:!0},{key:`Escape`,run:G7,scope:`editor search-panel`},{key:`Mod-Shift-l`,run:bae},{key:`Mod-Alt-g`,run:eae},{key:`Mod-d`,run:lae,preventDefault:!0}],Cae=class{constructor(e){this.view=e;let t=this.query=e.state.field(P7).query.spec;this.commit=this.commit.bind(this),this.searchField=BX(`input`,{value:t.search,placeholder:K7(e,`Find`),"aria-label":K7(e,`Find`),class:`cm-textfield`,name:`search`,form:``,"main-field":`true`,onchange:this.commit,onkeyup:this.commit}),this.replaceField=BX(`input`,{value:t.replace,placeholder:K7(e,`Replace`),"aria-label":K7(e,`Replace`),class:`cm-textfield`,name:`replace`,form:``,onchange:this.commit,onkeyup:this.commit}),this.caseField=BX(`input`,{type:`checkbox`,name:`case`,form:``,checked:t.caseSensitive,onchange:this.commit}),this.reField=BX(`input`,{type:`checkbox`,name:`re`,form:``,checked:t.regexp,onchange:this.commit}),this.wordField=BX(`input`,{type:`checkbox`,name:`word`,form:``,checked:t.wholeWord,onchange:this.commit});function n(e,t,n){return BX(`button`,{class:`cm-button`,name:e,onclick:t,type:`button`},n)}this.dom=BX(`div`,{onkeydown:e=>this.keydown(e),class:`cm-search`},[this.searchField,n(`next`,()=>L7(e),[K7(e,`next`)]),n(`prev`,()=>R7(e),[K7(e,`previous`)]),n(`select`,()=>yae(e),[K7(e,`all`)]),BX(`label`,null,[this.caseField,K7(e,`match case`)]),BX(`label`,null,[this.reField,K7(e,`regexp`)]),BX(`label`,null,[this.wordField,K7(e,`by word`)]),...e.state.readOnly?[]:[BX(`br`),this.replaceField,n(`replace`,()=>z7(e),[K7(e,`replace`)]),n(`replaceAll`,()=>xae(e),[K7(e,`replace all`)])],BX(`button`,{name:`close`,onclick:()=>G7(e),"aria-label":K7(e,`close`),type:`button`},[`×`])])}commit(){let e=new E7({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:M7.of(e)}))}keydown(e){X0(this.view,e,`search-panel`)?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?R7:L7)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),z7(this.view))}update(e){for(let t of e.transactions)for(let e of t.effects)e.is(M7)&&!e.value.eq(this.query)&&this.setQuery(e.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(T7).top}};function K7(e,t){return e.state.phrase(t)}var q7=30,J7=/[\s\.,:;?!]/;function Y7(e,{from:t,to:n}){let r=e.state.doc.lineAt(t),i=e.state.doc.lineAt(n).to,a=Math.max(r.from,t-q7),o=Math.min(i,n+q7),s=e.state.sliceDoc(a,o);if(a!=r.from){for(let e=0;es.length-q7;e--)if(!J7.test(s[e-1])&&J7.test(s[e])){s=s.slice(0,e);break}}return R0.announce.of(`${e.state.phrase(`current match`)}. ${s} ${e.state.phrase(`on line`)} ${r.number}.`)}var wae=R0.baseTheme({".cm-panel.cm-search":{padding:`2px 6px 4px`,position:`relative`,"& [name=close]":{position:`absolute`,top:`0`,right:`4px`,backgroundColor:`inherit`,border:`none`,font:`inherit`,padding:0,margin:0},"& input, & button, & label":{margin:`.2em .6em .2em 0`},"& input[type=checkbox]":{marginRight:`.2em`},"& label":{fontSize:`80%`,whiteSpace:`pre`}},"&light .cm-searchMatch":{backgroundColor:`#ffff0054`},"&dark .cm-searchMatch":{backgroundColor:`#00ffff8a`},"&light .cm-searchMatch-selected":{backgroundColor:`#ff6a0054`},"&dark .cm-searchMatch-selected":{backgroundColor:`#ff00ff8a`}}),Tae=[P7,TY.low(vae),wae],X7=class{constructor(e,t,n,r){this.state=e,this.pos=t,this.explicit=n,this.view=r,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let t=t6(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)<0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){let t=this.state.doc.lineAt(this.pos),n=Math.max(t.from,this.pos-250),r=t.text.slice(n-t.from,this.pos-t.from),i=r.search(t9(e,!1));return i<0?null:{from:n+i,to:this.pos,text:r.slice(i)}}get aborted(){return this.abortListeners==null}addEventListener(e,t,n){e==`abort`&&this.abortListeners&&(this.abortListeners.push(t),n&&n.onDocChange&&(this.abortOnDocChange=!0))}};function Z7(e){let t=Object.keys(e).join(``),n=/\w/.test(t);return n&&(t=t.replace(/\w/g,``)),`[${n?`\\w`:``}${t.replace(/[^\w\s]/g,`\\$&`)}]`}function Eae(e){let t=Object.create(null),n=Object.create(null);for(let{label:r}of e){t[r[0]]=!0;for(let e=1;etypeof e==`string`?{label:e}:e),[n,r]=t.every(e=>/^\w+$/.test(e.label))?[/\w*$/,/\w+$/]:Eae(t);return e=>{let i=e.matchBefore(r);return i||e.explicit?{from:i?i.from:e.pos,options:t,validFor:n}:null}}function Dae(e,t){return n=>{for(let t=t6(n.state).resolveInner(n.pos,-1);t;t=t.parent){if(e.indexOf(t.name)>-1)return null;if(t.type.isTop)break}return t(n)}}var $7=class{constructor(e,t,n,r){this.completion=e,this.source=t,this.match=n,this.score=r}};function e9(e){return e.selection.main.from}function t9(e,t){let{source:n}=e,r=t&&n[0]!=`^`,i=n[n.length-1]!=`$`;return!r&&!i?e:RegExp(`${r?`^`:``}(?:${n})${i?`$`:``}`,e.flags??(e.ignoreCase?`i`:``))}var n9=BY.define();function Oae(e,t,n,r){let{main:i}=e.selection,a=n-i.from,o=r-i.from;return{...e.changeByRange(s=>{if(s!=i&&n!=r&&e.sliceDoc(s.from+a,s.from+o)!=e.sliceDoc(n,r))return{range:s};let c=e.toText(t);return{changes:{from:s.from+a,to:r==i.from?s.to:s.from+o,insert:c},range:Y.cursor(s.from+a+c.length)}}),scrollIntoView:!0,userEvent:`input.complete`}}var r9=new WeakMap;function kae(e){if(!Array.isArray(e))return e;let t=r9.get(e);return t||r9.set(e,t=Q7(e)),t}var i9=UY.define(),a9=UY.define(),Aae=class{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let t=0;t=48&&c<=57||c>=97&&c<=122?2:+(c>=65&&c<=90):(v=eY(c))==v.toLowerCase()?v==v.toUpperCase()?0:2:1;(!r||y==1&&h||_==0&&y!=0)&&(t[u]==c||n[u]==c&&(d=!0)?a[u++]=r:a.length&&(g=!1)),_=y,r+=tY(c)}return u==s&&a[0]==0&&g?this.result(-100+(d?-200:0),a,e):f==s&&p==0?this.ret(-200-e.length+(m==e.length?0:-100),[0,m]):o>-1?this.ret(-700-e.length,[o,o+this.pattern.length]):f==s?this.ret(-900-e.length,[p,m]):u==s?this.result(-100+(d?-200:0)+-700+(g?0:-1100),a,e):t.length==2?null:this.result((r[0]?-700:0)+-200+-1100,r,e)}result(e,t,n){let r=[],i=0;for(let e of t){let t=e+(this.astral?tY($J(n,e)):1);i&&r[i-1]==e?r[i-1]=t:(r[i++]=e,r[i++]=t)}return this.ret(e-n.length,r)}},jae=class{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>``,optionClass:()=>``,aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:Mae,filterStrict:!1,compareCompletions:(e,t)=>(e.sortText||e.label).localeCompare(t.sortText||t.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,t)=>e&&t,closeOnBlur:(e,t)=>e&&t,icons:(e,t)=>e&&t,tooltipClass:(e,t)=>n=>s9(e(n),t(n)),optionClass:(e,t)=>n=>s9(e(n),t(n)),addToOptions:(e,t)=>e.concat(t),filterStrict:(e,t)=>e||t})}});function s9(e,t){return e?t?e+` `+t:e:t}function Mae(e,t,n,r,i,a){let o=e.textDirection==HZ.RTL,s=o,c=!1,l=`top`,u,d,f=t.left-i.left,p=i.right-t.right,m=r.right-r.left,h=r.bottom-r.top;if(s&&f=h||e>t.top?u=n.bottom-t.top:(l=`bottom`,u=t.bottom-n.top)}let g=(t.bottom-t.top)/a.offsetHeight,_=(t.right-t.left)/a.offsetWidth;return{style:`${l}: ${u/g}px; max-width: ${d/_}px`,class:`cm-completionInfo-`+(c?o?`left-narrow`:`right-narrow`:s?`left`:`right`)}}var c9=UY.define();function Nae(e){let t=e.addToOptions.slice();return e.icons&&t.push({render(e){let t=document.createElement(`div`);return t.classList.add(`cm-completionIcon`),e.type&&t.classList.add(...e.type.split(/\s+/g).map(e=>`cm-completionIcon-`+e)),t.setAttribute(`aria-hidden`,`true`),t},position:20}),t.push({render(e,t,n,r){let i=document.createElement(`span`);i.className=`cm-completionLabel`;let a=e.displayLabel||e.label,o=0;for(let e=0;eo&&i.appendChild(document.createTextNode(a.slice(o,t)));let s=i.appendChild(document.createElement(`span`));s.appendChild(document.createTextNode(a.slice(t,n))),s.className=`cm-completionMatchedText`,o=n}return oe.position-t.position).map(e=>e.render)}function l9(e,t,n){if(e<=n)return{from:0,to:e};if(t<0&&(t=0),t<=e>>1){let e=Math.floor(t/n);return{from:e*n,to:(e+1)*n}}let r=Math.ceil((e-t)/n);return{from:e-r*n,to:e-(r-1)*n}}var Pae=class{constructor(e,t,n){this.view=e,this.stateField=t,this.applyCompletion=n,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:e=>this.placeInfo(e),key:this},this.space=null,this.currentClass=``;let r=e.state.field(t),{options:i,selected:a}=r.open,o=e.state.facet(o9);this.optionContent=Nae(o),this.optionClass=o.optionClass,this.tooltipClass=o.tooltipClass,this.range=l9(i.length,a,o.maxRenderedOptions),this.dom=document.createElement(`div`),this.dom.className=`cm-tooltip-autocomplete`,this.updateTooltipClass(e.state),this.dom.addEventListener(`mousedown`,n=>{let{options:r}=e.state.field(t).open;for(let t=n.target,i;t&&t!=this.dom;t=t.parentNode)if(t.nodeName==`LI`&&(i=/-(\d+)$/.exec(t.id))&&+i[1]this.list.lastChild.getBoundingClientRect().bottom?this.range.to:null;t!=null&&(e.dispatch({effects:c9.of(t)}),n.preventDefault())}}),this.dom.addEventListener(`focusout`,t=>{let n=e.state.field(this.stateField,!1);n&&n.tooltip&&e.state.facet(o9).closeOnBlur&&t.relatedTarget!=e.contentDOM&&e.dispatch({effects:a9.of(null)})}),this.showOptions(i,r.id)}mount(){this.updateSel()}showOptions(e,t){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,t,this.range)),this.list.addEventListener(`scroll`,()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){let t=e.state.field(this.stateField),n=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),t!=n){let{options:r,selected:i,disabled:a}=t.open;(!n.open||n.open.options!=r)&&(this.range=l9(r.length,i,e.state.facet(o9).maxRenderedOptions),this.showOptions(r,t.id)),this.updateSel(),a!=n.open?.disabled&&this.dom.classList.toggle(`cm-tooltip-autocomplete-disabled`,!!a)}}updateTooltipClass(e){let t=this.tooltipClass(e);if(t!=this.currentClass){for(let e of this.currentClass.split(` `))e&&this.dom.classList.remove(e);for(let e of t.split(` `))e&&this.dom.classList.add(e);this.currentClass=t}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),t=e.open;(t.selected>-1&&t.selected=this.range.to)&&(this.range=l9(t.options.length,t.selected,this.view.state.facet(o9).maxRenderedOptions),this.showOptions(t.options,e.id));let n=this.updateSelectedOption(t.selected);if(n){this.destroyInfo();let{completion:r}=t.options[t.selected],{info:i}=r;if(!i)return;let a=typeof i==`string`?document.createTextNode(i):i(r);if(!a)return;`then`in a?a.then(t=>{t&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(t,r)}).catch(e=>EQ(this.view.state,e,`completion info`)):(this.addInfoPane(a,r),n.setAttribute(`aria-describedby`,this.info.id))}}addInfoPane(e,t){this.destroyInfo();let n=this.info=document.createElement(`div`);if(n.className=`cm-tooltip cm-completionInfo`,n.id=`cm-completionInfo-`+Math.floor(Math.random()*65535).toString(16),e.nodeType!=null)n.appendChild(e),this.infoDestroy=null;else{let{dom:t,destroy:r}=e;n.appendChild(t),this.infoDestroy=r||null}this.dom.appendChild(n),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let t=null;for(let n=this.list.firstChild,r=this.range.from;n;n=n.nextSibling,r++)n.nodeName!=`LI`||!n.id?r--:r==e?n.hasAttribute(`aria-selected`)||(n.setAttribute(`aria-selected`,`true`),t=n):n.hasAttribute(`aria-selected`)&&(n.removeAttribute(`aria-selected`),n.removeAttribute(`aria-describedby`));return t&&Iae(this.list,t),t}measureInfo(){let e=this.dom.querySelector(`[aria-selected]`);if(!e||!this.info)return null;let t=this.dom.getBoundingClientRect(),n=this.info.getBoundingClientRect(),r=e.getBoundingClientRect(),i=this.space;if(!i){let e=this.dom.ownerDocument.documentElement;i={left:0,top:0,right:e.clientWidth,bottom:e.clientHeight}}return r.top>Math.min(i.bottom,t.bottom)-10||r.bottom{e.target==r&&e.preventDefault()});let i=null;for(let a=n.from;an.from||n.from==0))if(i=e,typeof c!=`string`&&c.header)r.appendChild(c.header(c));else{let t=r.appendChild(document.createElement(`completion-section`));t.textContent=e}}let l=r.appendChild(document.createElement(`li`));l.id=t+`-`+a,l.setAttribute(`role`,`option`);let u=this.optionClass(o);u&&(l.className=u);for(let e of this.optionContent){let t=e(o,this.view.state,this.view,s);t&&l.appendChild(t)}}return n.from&&r.classList.add(`cm-completionListIncompleteTop`),n.tonew Pae(n,e,t)}function Iae(e,t){let n=e.getBoundingClientRect(),r=t.getBoundingClientRect(),i=n.height/e.offsetHeight;r.topn.bottom&&(e.scrollTop+=(r.bottom-n.bottom)/i)}function u9(e){return(e.boost||0)*100+(e.apply?10:0)+(e.info?5:0)+ +!!e.type}function Lae(e,t){let n=[],r=null,i=null,a=e=>{n.push(e);let{section:t}=e.completion;if(t){r||=[];let e=typeof t==`string`?t:t.name;r.some(t=>t.name==e)||r.push(typeof t==`string`?{name:e}:t)}},o=t.facet(o9);for(let r of e)if(r.hasResult()){let e=r.result.getMatch;if(r.result.filter===!1)for(let t of r.result.options)a(new $7(t,r.source,e?e(t):[],1e9-n.length));else{let n=t.sliceDoc(r.from,r.to),s,c=o.filterStrict?new jae(n):new Aae(n);for(let t of r.result.options)if(s=c.match(t.label)){let n=t.displayLabel?e?e(t,s.matched):[]:s.matched,o=s.score+(t.boost||0);if(a(new $7(t,r.source,n,o)),typeof t.section==`object`&&t.section.rank===`dynamic`){let{name:e}=t.section;i||=Object.create(null),i[e]=Math.max(o,i[e]||-1e9)}}}}if(r){let e=Object.create(null),t=0,a=(e,t)=>(e.rank===`dynamic`&&t.rank===`dynamic`?i[t.name]-i[e.name]:0)||(typeof e.rank==`number`?e.rank:1e9)-(typeof t.rank==`number`?t.rank:1e9)||(e.namet.score-e.score||l(e.completion,t.completion))){let t=e.completion;!c||c.label!=t.label||c.detail!=t.detail||c.type!=null&&t.type!=null&&c.type!=t.type||c.apply!=t.apply||c.boost!=t.boost?s.push(e):u9(e.completion)>u9(c)&&(s[s.length-1]=e),c=e.completion}return s}var Rae=class e{constructor(e,t,n,r,i,a){this.options=e,this.attrs=t,this.tooltip=n,this.timestamp=r,this.selected=i,this.disabled=a}setSelected(t,n){return t==this.selected||t>=this.options.length?this:new e(this.options,d9(n,t),this.tooltip,this.timestamp,t,this.disabled)}static build(t,n,r,i,a,o){if(i&&!o&&t.some(e=>e.isPending))return i.setDisabled();let s=Lae(t,n);if(!s.length)return i&&t.some(e=>e.isPending)?i.setDisabled():null;let c=n.facet(o9).selectOnOpen?0:-1;if(i&&i.selected!=c&&i.selected!=-1){let e=i.options[i.selected].completion;for(let t=0;tt.hasResult()?Math.min(e,t.from):e,1e8),create:Gae,above:a.aboveCursor},i?i.timestamp:Date.now(),c,!1)}map(t){return new e(this.options,this.attrs,{...this.tooltip,pos:t.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new e(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}},zae=class e{constructor(e,t,n){this.active=e,this.id=t,this.open=n}static start(){return new e(Uae,`cm-ac-`+Math.floor(Math.random()*2e6).toString(36),null)}update(t){let{state:n}=t,r=n.facet(o9),i=(r.override||n.languageDataAt(`autocomplete`,e9(n)).map(kae)).map(e=>(this.active.find(t=>t.source==e)||new p9(e,+!!this.active.some(e=>e.state!=0))).update(t,r));i.length==this.active.length&&i.every((e,t)=>e==this.active[t])&&(i=this.active);let a=this.open,o=t.effects.some(e=>e.is(h9));a&&t.docChanged&&(a=a.map(t.changes)),t.selection||i.some(e=>e.hasResult()&&t.changes.touchesRange(e.from,e.to))||!Bae(i,this.active)||o?a=Rae.build(i,n,this.id,a,r,o):a&&a.disabled&&!i.some(e=>e.isPending)&&(a=null),!a&&i.every(e=>!e.isPending)&&i.some(e=>e.hasResult())&&(i=i.map(e=>e.hasResult()?new p9(e.source,0):e));for(let e of t.effects)e.is(c9)&&(a&&=a.setSelected(e.value,this.id));return i==this.active&&a==this.open?this:new e(i,this.id,a)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?Vae:Hae}};function Bae(e,t){if(e==t)return!0;for(let n=0,r=0;;){for(;n-1&&(n[`aria-activedescendant`]=e+`-`+t),n}var Uae=[];function f9(e,t){if(e.isUserEvent(`input.complete`)){let n=e.annotation(n9);if(n&&t.activateOnCompletion(n))return 12}let n=e.isUserEvent(`input.type`);return n&&t.activateOnTyping?5:n?1:e.isUserEvent(`delete.backward`)?2:e.selection?8:e.docChanged?16:0}var p9=class e{constructor(e,t,n=!1){this.source=e,this.state=t,this.explicit=n}hasResult(){return!1}get isPending(){return this.state==1}update(t,n){let r=f9(t,n),i=this;(r&8||r&16&&this.touches(t))&&(i=new e(i.source,0)),r&4&&i.state==0&&(i=new e(this.source,1)),i=i.updateFor(t,r);for(let n of t.effects)if(n.is(i9))i=new e(i.source,1,n.value);else if(n.is(a9))i=new e(i.source,0);else if(n.is(h9))for(let e of n.value)e.source==i.source&&(i=e);return i}updateFor(e,t){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(e9(e.state))}},m9=class e extends p9{constructor(e,t,n,r,i,a){super(e,3,t),this.limit=n,this.result=r,this.from=i,this.to=a}hasResult(){return!0}updateFor(t,n){if(!(n&3))return this.map(t.changes);let r=this.result;r.map&&!t.changes.empty&&(r=r.map(r,t.changes));let i=t.changes.mapPos(this.from),a=t.changes.mapPos(this.to,1),o=e9(t.state);if(o>a||!r||n&2&&(e9(t.startState)==this.from||oe.map(t))}}),g9=SY.define({create(){return zae.start()},update(e,t){return e.update(t)},provide:e=>[V2.from(e,e=>e.tooltip),R0.contentAttributes.from(e,e=>e.attrs)]});function _9(e,t){let n=t.completion.apply||t.completion.label,r=e.state.field(g9).active.find(e=>e.source==t.source);return r instanceof m9?(typeof n==`string`?e.dispatch({...Oae(e.state,n,r.from,r.to),annotations:n9.of(t.completion)}):n(e,t.completion,r.from,r.to),!0):!1}var Gae=Fae(g9,_9);function v9(e,t=`option`){return n=>{let r=n.state.field(g9,!1);if(!r||!r.open||r.open.disabled||Date.now()-r.open.timestamp-1?r.open.selected+i*(e?1:-1):e?0:o-1;return s<0?s=t==`page`?0:o-1:s>=o&&(s=t==`page`?o-1:0),n.dispatch({effects:c9.of(s)}),!0}}var Kae=e=>{let t=e.state.field(g9,!1);return e.state.readOnly||!t||!t.open||t.open.selected<0||t.open.disabled||Date.now()-t.open.timestampe.state.field(g9,!1)?(e.dispatch({effects:i9.of(!0)}),!0):!1,qae=e=>{let t=e.state.field(g9,!1);return!t||!t.active.some(e=>e.state!=0)?!1:(e.dispatch({effects:a9.of(null)}),!0)},Jae=class{constructor(e,t){this.active=e,this.context=t,this.time=Date.now(),this.updates=[],this.done=void 0}},Yae=50,Xae=1e3,Zae=AQ.fromClass(class{constructor(e){this.view=e,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let t of e.state.field(g9).active)t.isPending&&this.startQuery(t)}update(e){let t=e.state.field(g9),n=e.state.facet(o9);if(!e.selectionSet&&!e.docChanged&&e.startState.field(g9)==t)return;let r=e.transactions.some(e=>{let t=f9(e,n);return t&8||(e.selection||e.docChanged)&&!(t&3)});for(let t=0;tYae&&Date.now()-n.time>Xae){for(let e of n.context.abortListeners)try{e()}catch(e){EQ(this.view.state,e)}n.context.abortListeners=null,this.running.splice(t--,1)}else n.updates.push(...e.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),e.transactions.some(e=>e.effects.some(e=>e.is(i9)))&&(this.pendingStart=!0);let i=this.pendingStart?50:n.activateOnTypingDelay;if(this.debounceUpdate=t.active.some(e=>e.isPending&&!this.running.some(t=>t.active.source==e.source))?setTimeout(()=>this.startUpdate(),i):-1,this.composing!=0)for(let t of e.transactions)t.isUserEvent(`input.type`)?this.composing=2:this.composing==2&&t.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:e}=this.view,t=e.field(g9);for(let e of t.active)e.isPending&&!this.running.some(t=>t.active.source==e.source)&&this.startQuery(e);this.running.length&&t.open&&t.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(o9).updateSyncTime))}startQuery(e){let{state:t}=this.view,n=new X7(t,e9(t),e.explicit,this.view),r=new Jae(e,n);this.running.push(r),Promise.resolve(e.source(n)).then(e=>{r.context.aborted||(r.done=e||null,this.scheduleAccept())},e=>{this.view.dispatch({effects:a9.of(null)}),EQ(this.view.state,e)})}scheduleAccept(){this.running.every(e=>e.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(o9).updateSyncTime))}accept(){this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],t=this.view.state.facet(o9),n=this.view.state.field(g9);for(let r=0;re.source==i.active.source);if(a&&a.isPending)if(i.done==null){let n=new p9(i.active.source,0);for(let e of i.updates)n=n.update(e,t);n.isPending||e.push(n)}else this.startQuery(a)}(e.length||n.open&&n.open.disabled)&&this.view.dispatch({effects:h9.of(e)})}},{eventHandlers:{blur(e){let t=this.view.state.field(g9,!1);if(t&&t.tooltip&&this.view.state.facet(o9).closeOnBlur){let n=t.open&&H2(this.view,t.open.tooltip);(!n||!n.dom.contains(e.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:a9.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:i9.of(!1)}),20),this.composing=0}}}),Qae=typeof navigator==`object`&&/Win/.test(navigator.platform),$ae=TY.highest(R0.domEventHandlers({keydown(e,t){let n=t.state.field(g9,!1);if(!n||!n.open||n.open.disabled||n.open.selected<0||e.key.length>1||e.ctrlKey&&!(Qae&&e.altKey)||e.metaKey)return!1;let r=n.open.options[n.open.selected],i=n.active.find(e=>e.source==r.source),a=r.completion.commitCharacters||i.result.commitCharacters;return a&&a.indexOf(e.key)>-1&&_9(t,r),!1}})),b9=R0.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:`monospace`,whiteSpace:`nowrap`,overflow:`hidden auto`,maxWidth_fallback:`700px`,maxWidth:`min(700px, 95vw)`,minWidth:`250px`,maxHeight:`10em`,height:`100%`,listStyle:`none`,margin:0,padding:0,"& > li, & > completion-section":{padding:`1px 3px`,lineHeight:1.2},"& > li":{overflowX:`hidden`,textOverflow:`ellipsis`,cursor:`pointer`},"& > completion-section":{display:`list-item`,borderBottom:`1px solid silver`,paddingLeft:`0.5em`,opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:`#17c`,color:`white`},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:`#777`},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:`#347`,color:`white`},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:`#444`},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:`"···"`,opacity:.5,display:`block`,textAlign:`center`,cursor:`pointer`},".cm-tooltip.cm-completionInfo":{position:`absolute`,padding:`3px 9px`,width:`max-content`,maxWidth:`400px`,boxSizing:`border-box`,whiteSpace:`pre-line`},".cm-completionInfo.cm-completionInfo-left":{right:`100%`},".cm-completionInfo.cm-completionInfo-right":{left:`100%`},".cm-completionInfo.cm-completionInfo-left-narrow":{right:`30px`},".cm-completionInfo.cm-completionInfo-right-narrow":{left:`30px`},"&light .cm-snippetField":{backgroundColor:`#00000022`},"&dark .cm-snippetField":{backgroundColor:`#ffffff22`},".cm-snippetFieldPosition":{verticalAlign:`text-top`,width:0,height:`1.15em`,display:`inline-block`,margin:`0 -0.7px -.7em`,borderLeft:`1.4px dotted #888`},".cm-completionMatchedText":{textDecoration:`underline`},".cm-completionDetail":{marginLeft:`0.5em`,fontStyle:`italic`},".cm-completionIcon":{fontSize:`90%`,width:`.8em`,display:`inline-block`,textAlign:`center`,paddingRight:`.6em`,opacity:`0.6`,boxSizing:`content-box`},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:`'ƒ'`}},".cm-completionIcon-class":{"&:after":{content:`'○'`}},".cm-completionIcon-interface":{"&:after":{content:`'◌'`}},".cm-completionIcon-variable":{"&:after":{content:`'𝑥'`}},".cm-completionIcon-constant":{"&:after":{content:`'𝐶'`}},".cm-completionIcon-type":{"&:after":{content:`'𝑡'`}},".cm-completionIcon-enum":{"&:after":{content:`'∪'`}},".cm-completionIcon-property":{"&:after":{content:`'□'`}},".cm-completionIcon-keyword":{"&:after":{content:`'🔑︎'`}},".cm-completionIcon-namespace":{"&:after":{content:`'▢'`}},".cm-completionIcon-text":{"&:after":{content:`'abc'`,fontSize:`50%`,verticalAlign:`middle`}}}),eoe=class{constructor(e,t,n,r){this.field=e,this.line=t,this.from=n,this.to=r}},toe=class e{constructor(e,t,n){this.field=e,this.from=t,this.to=n}map(t){let n=t.mapPos(this.from,-1,rY.TrackDel),r=t.mapPos(this.to,1,rY.TrackDel);return n==null||r==null?null:new e(this.field,n,r)}},noe=class e{constructor(e,t){this.lines=e,this.fieldPositions=t}instantiate(e,t){let n=[],r=[t],i=e.doc.lineAt(t),a=/^\s*/.exec(i.text)[0];for(let i of this.lines){if(n.length){let n=a,o=/^\t*/.exec(i)[0].length;for(let t=0;tnew toe(e.field,r[e.line]+e.from,r[e.line]+e.to))}}static parse(t){let n=[],r=[],i=[],a;for(let e of t.split(/\r\n?|\n/)){for(;a=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(e);){let t=a[1]?+a[1]:null,o=a[2]||a[3]||``,s=-1,c=o.replace(/\\[{}]/g,e=>e[1]);for(let e=0;e=s&&e.field++}for(let e of i)if(e.line==r.length&&e.from>a.index){let t=a[2]?3+(a[1]||``).length:2;e.from-=t,e.to-=t}i.push(new eoe(s,r.length,a.index,a.index+c.length)),e=e.slice(0,a.index)+o+e.slice(a.index+a[0].length)}e=e.replace(/\\([{}])/g,(e,t,n)=>{for(let e of i)e.line==r.length&&e.from>n&&(e.from--,e.to--);return t}),r.push(e)}return new e(r,i)}},roe=cZ.widget({widget:new class extends oZ{toDOM(){let e=document.createElement(`span`);return e.className=`cm-snippetFieldPosition`,e}ignoreEvent(){return!1}}}),ioe=cZ.mark({class:`cm-snippetField`}),x9=class e{constructor(e,t){this.ranges=e,this.active=t,this.deco=cZ.set(e.map(e=>(e.from==e.to?roe:ioe).range(e.from,e.to)),!0)}map(t){let n=[];for(let e of this.ranges){let r=e.map(t);if(!r)return null;n.push(r)}return new e(n,this.active)}selectionInsideField(e){return e.ranges.every(e=>this.ranges.some(t=>t.field==this.active&&t.from<=e.from&&t.to>=e.to))}},S9=UY.define({map(e,t){return e&&e.map(t)}}),aoe=UY.define(),C9=SY.define({create(){return null},update(e,t){for(let n of t.effects){if(n.is(S9))return n.value;if(n.is(aoe)&&e)return new x9(e.ranges,n.value)}return e&&t.docChanged&&(e=e.map(t.changes)),e&&t.selection&&!e.selectionInsideField(t.selection)&&(e=null),e},provide:e=>R0.decorations.from(e,e=>e?e.deco:cZ.none)});function w9(e,t){return Y.create(e.filter(e=>e.field==t).map(e=>Y.range(e.from,e.to)))}function ooe(e){let t=noe.parse(e);return(e,n,r,i)=>{let{text:a,ranges:o}=t.instantiate(e.state,r),{main:s}=e.state.selection,c={changes:{from:r,to:i==s.from?s.to:i,insert:zJ.of(a)},scrollIntoView:!0,annotations:n?[n9.of(n),WY.userEvent.of(`input.complete`)]:void 0};if(o.length&&(c.selection=w9(o,0)),o.some(e=>e.field>0)){let t=new x9(o,0),n=c.effects=[S9.of(t)];e.state.field(C9,!1)===void 0&&n.push(UY.appendConfig.of([C9,coe,uoe,b9]))}e.dispatch(e.state.update(c))}}function T9(e){return({state:t,dispatch:n})=>{let r=t.field(C9,!1);if(!r||e<0&&r.active==0)return!1;let i=r.active+e,a=e>0&&!r.ranges.some(t=>t.field==i+e);return n(t.update({selection:w9(r.ranges,i),effects:S9.of(a?null:new x9(r.ranges,i)),scrollIntoView:!0})),!0}}var soe=[{key:`Tab`,run:T9(1),shift:T9(-1)},{key:`Escape`,run:({state:e,dispatch:t})=>e.field(C9,!1)?(t(e.update({effects:S9.of(null)})),!0):!1}],E9=hY.define({combine(e){return e.length?e[0]:soe}}),coe=TY.highest(q0.compute([E9],e=>e.facet(E9)));function loe(e,t){return{...t,apply:ooe(e)}}var uoe=R0.domEventHandlers({mousedown(e,t){let n=t.state.field(C9,!1),r;if(!n||(r=t.posAtCoords({x:e.clientX,y:e.clientY}))==null)return!1;let i=n.ranges.find(e=>e.from<=r&&e.to>=r);return!i||i.field==n.active?!1:(t.dispatch({selection:w9(n.ranges,i.field),effects:S9.of(n.ranges.some(e=>e.field>i.field)?new x9(n.ranges,i.field):null),scrollIntoView:!0}),!0)}}),D9={brackets:[`(`,`[`,`{`,`'`,`"`],before:`)]}:;>`,stringPrefixes:[]},O9=UY.define({map(e,t){return t.mapPos(e,-1,rY.TrackAfter)??void 0}}),k9=new class extends oX{};k9.startSide=1,k9.endSide=-1;var A9=SY.define({create(){return dX.empty},update(e,t){if(e=e.map(t.changes),t.selection){let n=t.state.doc.lineAt(t.selection.main.head);e=e.update({filter:e=>e>=n.from&&e<=n.to})}for(let n of t.effects)n.is(O9)&&(e=e.update({add:[k9.range(n.value,n.value+1)]}));return e}});function doe(){return[poe,A9]}var j9=`()[]{}<>«»»«[]{}`;function M9(e){for(let t=0;t<16;t+=2)if(j9.charCodeAt(t)==e)return j9.charAt(t+1);return eY(e<128?e:e+1)}function N9(e,t){return e.languageDataAt(`closeBrackets`,t)[0]||D9}var foe=typeof navigator==`object`&&/Android\b/.test(navigator.userAgent),poe=R0.inputHandler.of((e,t,n,r)=>{if((foe?e.composing:e.compositionStarted)||e.state.readOnly)return!1;let i=e.state.selection.main;if(r.length>2||r.length==2&&tY($J(r,0))==1||t!=i.from||n!=i.to)return!1;let a=hoe(e.state,r);return a?(e.dispatch(a),!0):!1}),moe=[{key:`Backspace`,run:({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=N9(e,e.selection.main.head).brackets||D9.brackets,r=null,i=e.changeByRange(t=>{if(t.empty){let r=goe(e.doc,t.head);for(let i of n)if(i==r&&F9(e.doc,t.head)==M9($J(i,0)))return{changes:{from:t.head-i.length,to:t.head+i.length},range:Y.cursor(t.head-i.length)}}return{range:r=t}});return r||t(e.update(i,{scrollIntoView:!0,userEvent:`delete.backward`})),!r}}];function hoe(e,t){let n=N9(e,e.selection.main.head),r=n.brackets||D9.brackets;for(let i of r){let a=M9($J(i,0));if(t==i)return a==i?yoe(e,i,r.indexOf(i+i+i)>-1,n):_oe(e,i,a,n.before||D9.before);if(t==a&&P9(e,e.selection.main.from))return voe(e,i,a)}return null}function P9(e,t){let n=!1;return e.field(A9).between(0,e.doc.length,e=>{e==t&&(n=!0)}),n}function F9(e,t){let n=e.sliceString(t,t+2);return n.slice(0,tY($J(n,0)))}function goe(e,t){let n=e.sliceString(t-2,t);return tY($J(n,0))==n.length?n:n.slice(1)}function _oe(e,t,n,r){let i=null,a=e.changeByRange(a=>{if(!a.empty)return{changes:[{insert:t,from:a.from},{insert:n,from:a.to}],effects:O9.of(a.to+t.length),range:Y.range(a.anchor+t.length,a.head+t.length)};let o=F9(e.doc,a.head);return!o||/\s/.test(o)||r.indexOf(o)>-1?{changes:{insert:t+n,from:a.head},effects:O9.of(a.head+t.length),range:Y.cursor(a.head+t.length)}:{range:i=a}});return i?null:e.update(a,{scrollIntoView:!0,userEvent:`input.type`})}function voe(e,t,n){let r=null,i=e.changeByRange(t=>t.empty&&F9(e.doc,t.head)==n?{changes:{from:t.head,to:t.head+n.length,insert:n},range:Y.cursor(t.head+n.length)}:r={range:t});return r?null:e.update(i,{scrollIntoView:!0,userEvent:`input.type`})}function yoe(e,t,n,r){let i=r.stringPrefixes||D9.stringPrefixes,a=null,o=e.changeByRange(r=>{if(!r.empty)return{changes:[{insert:t,from:r.from},{insert:t,from:r.to}],effects:O9.of(r.to+t.length),range:Y.range(r.anchor+t.length,r.head+t.length)};let o=r.head,s=F9(e.doc,o),c;if(s==t){if(I9(e,o))return{changes:{insert:t+t,from:o},effects:O9.of(o+t.length),range:Y.cursor(o+t.length)};if(P9(e,o)){let r=n&&e.sliceDoc(o,o+t.length*3)==t+t+t?t+t+t:t;return{changes:{from:o,to:o+r.length,insert:r},range:Y.cursor(o+r.length)}}}else if(n&&e.sliceDoc(o-2*t.length,o)==t+t&&(c=L9(e,o-2*t.length,i))>-1&&I9(e,c))return{changes:{insert:t+t+t+t,from:o},effects:O9.of(o+t.length),range:Y.cursor(o+t.length)};else if(e.charCategorizer(o)(s)!=$Y.Word&&L9(e,o,i)>-1&&!boe(e,o,t,i))return{changes:{insert:t+t,from:o},effects:O9.of(o+t.length),range:Y.cursor(o+t.length)};return{range:a=r}});return a?null:e.update(o,{scrollIntoView:!0,userEvent:`input.type`})}function I9(e,t){let n=t6(e).resolveInner(t+1);return n.parent&&n.from==t}function boe(e,t,n,r){let i=t6(e).resolveInner(t,-1),a=r.reduce((e,t)=>Math.max(e,t.length),0);for(let o=0;o<5;o++){let o=e.sliceDoc(i.from,Math.min(i.to,i.from+n.length+a)),s=o.indexOf(n);if(!s||s>-1&&r.indexOf(o.slice(0,s))>-1){let t=i.firstChild;for(;t&&t.from==i.from&&t.to-t.from>n.length+s;){if(e.sliceDoc(t.to-n.length,t.to)==n)return!1;t=t.firstChild}return!0}let c=i.to==t&&i.parent;if(!c)break;i=c}return!1}function L9(e,t,n){let r=e.charCategorizer(t);if(r(e.sliceDoc(t-1,t))!=$Y.Word)return t;for(let i of n){let n=t-i.length;if(e.sliceDoc(n,t)==i&&r(e.sliceDoc(n-1,n))!=$Y.Word)return n}return-1}function xoe(e={}){return[$ae,g9,o9.of(e),Zae,Soe,b9]}var R9=[{key:`Ctrl-Space`,run:y9},{mac:"Alt-`",run:y9},{mac:`Alt-i`,run:y9},{key:`Escape`,run:qae},{key:`ArrowDown`,run:v9(!0)},{key:`ArrowUp`,run:v9(!1)},{key:`PageDown`,run:v9(!0,`page`)},{key:`PageUp`,run:v9(!1,`page`)},{key:`Enter`,run:Kae}],Soe=TY.highest(q0.computeN([o9],e=>e.facet(o9).defaultKeymap?[R9]:[]));function $(e){return new d6(Ere.define(e))}function z9(e){return J(()=>import(`./dist-BE7bu-DL.js`).then(t=>t.sql({dialect:t[e]})),__vite__mapDeps([7,8]),import.meta.url)}var Coe=[Q.of({name:`C`,extensions:[`c`,`h`,`ino`],load(){return J(()=>import(`./dist-DmldrHd_.js`).then(e=>e.cpp()),__vite__mapDeps([9,8]),import.meta.url)}}),Q.of({name:`C++`,alias:[`cpp`],extensions:[`cpp`,`c++`,`cc`,`cxx`,`hpp`,`h++`,`hh`,`hxx`],load(){return J(()=>import(`./dist-DmldrHd_.js`).then(e=>e.cpp()),__vite__mapDeps([9,8]),import.meta.url)}}),Q.of({name:`CQL`,alias:[`cassandra`],extensions:[`cql`],load(){return z9(`Cassandra`)}}),Q.of({name:`CSS`,extensions:[`css`],load(){return J(()=>import(`./dist-B7seoj3d.js`).then(e=>e.i).then(e=>e.css()),__vite__mapDeps([10,8]),import.meta.url)}}),Q.of({name:`Go`,extensions:[`go`],load(){return J(()=>import(`./dist-CSh_DE14.js`).then(e=>e.go()),__vite__mapDeps([11,8]),import.meta.url)}}),Q.of({name:`HTML`,alias:[`xhtml`],extensions:[`html`,`htm`,`handlebars`,`hbs`],load(){return J(()=>import(`./dist-BjU6y-A2.js`).then(e=>e.html()),__vite__mapDeps([12,10,8,13]),import.meta.url)}}),Q.of({name:`Java`,extensions:[`java`],load(){return J(()=>import(`./dist-8hqcx0sU.js`).then(e=>e.java()),__vite__mapDeps([14,8]),import.meta.url)}}),Q.of({name:`JavaScript`,alias:[`ecmascript`,`js`,`node`],extensions:[`js`,`mjs`,`cjs`],load(){return J(()=>import(`./dist-DnfXs8Vn.js`).then(e=>e.t).then(e=>e.javascript()),__vite__mapDeps([13,8]),import.meta.url)}}),Q.of({name:`Jinja`,extensions:[`j2`,`jinja`,`jinja2`],load(){return J(()=>import(`./dist-BX8z72IC.js`).then(e=>e.jinja()),__vite__mapDeps([15,12,10,8,13]),import.meta.url)}}),Q.of({name:`JSON`,alias:[`json5`],extensions:[`json`,`map`],load(){return J(()=>import(`./dist-BVDffZ0U.js`).then(e=>e.json()),__vite__mapDeps([16,8]),import.meta.url)}}),Q.of({name:`JSX`,extensions:[`jsx`],load(){return J(()=>import(`./dist-DnfXs8Vn.js`).then(e=>e.t).then(e=>e.javascript({jsx:!0})),__vite__mapDeps([13,8]),import.meta.url)}}),Q.of({name:`LESS`,extensions:[`less`],load(){return J(()=>import(`./dist-DNp6rLRA.js`).then(e=>e.less()),__vite__mapDeps([17,10,8]),import.meta.url)}}),Q.of({name:`Liquid`,extensions:[`liquid`],load(){return J(()=>import(`./dist-ngtN0DJB.js`).then(e=>e.liquid()),__vite__mapDeps([18,12,10,8,13]),import.meta.url)}}),Q.of({name:`MariaDB SQL`,load(){return z9(`MariaSQL`)}}),Q.of({name:`Markdown`,extensions:[`md`,`markdown`,`mkd`],load(){return J(()=>import(`./dist-CttYUqzS.js`).then(e=>e.markdown()),__vite__mapDeps([19,12,10,8,13]),import.meta.url)}}),Q.of({name:`MS SQL`,load(){return z9(`MSSQL`)}}),Q.of({name:`MySQL`,load(){return z9(`MySQL`)}}),Q.of({name:`PHP`,extensions:[`php`,`php3`,`php4`,`php5`,`php7`,`phtml`],load(){return J(()=>import(`./dist-CXYYBw3_.js`).then(e=>e.php()),__vite__mapDeps([20,12,10,8,13]),import.meta.url)}}),Q.of({name:`PLSQL`,extensions:[`pls`],load(){return z9(`PLSQL`)}}),Q.of({name:`PostgreSQL`,load(){return z9(`PostgreSQL`)}}),Q.of({name:`Python`,extensions:[`BUILD`,`bzl`,`py`,`pyw`],filename:/^(BUCK|BUILD)$/,load(){return J(()=>import(`./dist-dDdADKFA.js`).then(e=>e.python()),__vite__mapDeps([21,8]),import.meta.url)}}),Q.of({name:`Rust`,extensions:[`rs`],load(){return J(()=>import(`./dist-DUX-id_F.js`).then(e=>e.rust()),__vite__mapDeps([22,8]),import.meta.url)}}),Q.of({name:`Sass`,extensions:[`sass`],load(){return J(()=>import(`./dist-dydu68Fl.js`).then(e=>e.sass({indented:!0})),__vite__mapDeps([23,10,8]),import.meta.url)}}),Q.of({name:`SCSS`,extensions:[`scss`],load(){return J(()=>import(`./dist-dydu68Fl.js`).then(e=>e.sass()),__vite__mapDeps([23,10,8]),import.meta.url)}}),Q.of({name:`SQL`,extensions:[`sql`],load(){return z9(`StandardSQL`)}}),Q.of({name:`SQLite`,load(){return z9(`SQLite`)}}),Q.of({name:`TSX`,extensions:[`tsx`],load(){return J(()=>import(`./dist-DnfXs8Vn.js`).then(e=>e.t).then(e=>e.javascript({jsx:!0,typescript:!0})),__vite__mapDeps([13,8]),import.meta.url)}}),Q.of({name:`TypeScript`,alias:[`ts`],extensions:[`ts`,`mts`,`cts`],load(){return J(()=>import(`./dist-DnfXs8Vn.js`).then(e=>e.t).then(e=>e.javascript({typescript:!0})),__vite__mapDeps([13,8]),import.meta.url)}}),Q.of({name:`WebAssembly`,extensions:[`wat`,`wast`],load(){return J(()=>import(`./dist-ClxGviKw.js`).then(e=>e.wast()),__vite__mapDeps([24,8]),import.meta.url)}}),Q.of({name:`XML`,alias:[`rss`,`wsdl`,`xsd`],extensions:[`xml`,`xsl`,`xsd`,`svg`],load(){return J(()=>import(`./dist-Bf2M8m3N.js`).then(e=>e.xml()),__vite__mapDeps([25,8]),import.meta.url)}}),Q.of({name:`YAML`,alias:[`yml`],extensions:[`yaml`,`yml`],load(){return J(()=>import(`./dist-W-TIVntx.js`).then(e=>e.yaml()),__vite__mapDeps([26,8]),import.meta.url)}}),Q.of({name:`APL`,extensions:[`dyalog`,`apl`],load(){return J(()=>import(`./apl-CnwPGSsG.js`).then(e=>$(e.apl)),[],import.meta.url)}}),Q.of({name:`PGP`,alias:[`asciiarmor`],extensions:[`asc`,`pgp`,`sig`],load(){return J(()=>import(`./asciiarmor-qTkVPQu6.js`).then(e=>$(e.asciiArmor)),[],import.meta.url)}}),Q.of({name:`ASN.1`,extensions:[`asn`,`asn1`],load(){return J(()=>import(`./asn1-Dr8qZg38.js`).then(e=>$(e.asn1({}))),[],import.meta.url)}}),Q.of({name:`Asterisk`,filename:/^extensions\.conf$/i,load(){return J(()=>import(`./asterisk-Bja0s6e1.js`).then(e=>$(e.asterisk)),[],import.meta.url)}}),Q.of({name:`Brainfuck`,extensions:[`b`,`bf`],load(){return J(()=>import(`./brainfuck-D5EjA2JK.js`).then(e=>$(e.brainfuck)),[],import.meta.url)}}),Q.of({name:`Cobol`,extensions:[`cob`,`cpy`],load(){return J(()=>import(`./cobol-B_OZ4V-R.js`).then(e=>$(e.cobol)),[],import.meta.url)}}),Q.of({name:`C#`,alias:[`csharp`,`cs`],extensions:[`cs`],load(){return J(()=>import(`./clike-DHH8Ad3s.js`).then(e=>$(e.csharp)),[],import.meta.url)}}),Q.of({name:`Clojure`,extensions:[`clj`,`cljc`,`cljx`],load(){return J(()=>import(`./clojure-BflJGmDX.js`).then(e=>$(e.clojure)),[],import.meta.url)}}),Q.of({name:`ClojureScript`,extensions:[`cljs`],load(){return J(()=>import(`./clojure-BflJGmDX.js`).then(e=>$(e.clojure)),[],import.meta.url)}}),Q.of({name:`Closure Stylesheets (GSS)`,extensions:[`gss`],load(){return J(()=>import(`./css-CYpP4FRV.js`).then(e=>$(e.gss)),[],import.meta.url)}}),Q.of({name:`CMake`,extensions:[`cmake`,`cmake.in`],filename:/^CMakeLists\.txt$/,load(){return J(()=>import(`./cmake-CyVbuzPu.js`).then(e=>$(e.cmake)),[],import.meta.url)}}),Q.of({name:`CoffeeScript`,alias:[`coffee`,`coffee-script`],extensions:[`coffee`],load(){return J(()=>import(`./coffeescript-B2pKbFk8.js`).then(e=>$(e.coffeeScript)),[],import.meta.url)}}),Q.of({name:`Common Lisp`,alias:[`lisp`],extensions:[`cl`,`lisp`,`el`],load(){return J(()=>import(`./commonlisp-CcllspGY.js`).then(e=>$(e.commonLisp)),[],import.meta.url)}}),Q.of({name:`Cypher`,extensions:[`cyp`,`cypher`],load(){return J(()=>import(`./cypher-p9eYesGn.js`).then(e=>$(e.cypher)),[],import.meta.url)}}),Q.of({name:`Cython`,extensions:[`pyx`,`pxd`,`pxi`],load(){return J(()=>import(`./python-BqYw9LYJ.js`).then(e=>$(e.cython)),[],import.meta.url)}}),Q.of({name:`Crystal`,extensions:[`cr`],load(){return J(()=>import(`./crystal-M5-qzICs.js`).then(e=>$(e.crystal)),[],import.meta.url)}}),Q.of({name:`D`,extensions:[`d`],load(){return J(()=>import(`./d-BhMjBjQP.js`).then(e=>$(e.d)),[],import.meta.url)}}),Q.of({name:`Dart`,extensions:[`dart`],load(){return J(()=>import(`./clike-DHH8Ad3s.js`).then(e=>$(e.dart)),[],import.meta.url)}}),Q.of({name:`diff`,extensions:[`diff`,`patch`],load(){return J(()=>import(`./diff-ChtP43wD.js`).then(e=>$(e.diff)),[],import.meta.url)}}),Q.of({name:`Dockerfile`,filename:/^Dockerfile$/,load(){return J(()=>import(`./dockerfile-BLkNEvjs.js`).then(e=>$(e.dockerFile)),__vite__mapDeps([27,28]),import.meta.url)}}),Q.of({name:`DTD`,extensions:[`dtd`],load(){return J(()=>import(`./dtd-DTF72YNO.js`).then(e=>$(e.dtd)),[],import.meta.url)}}),Q.of({name:`Dylan`,extensions:[`dylan`,`dyl`,`intr`],load(){return J(()=>import(`./dylan-C6jEEEk-.js`).then(e=>$(e.dylan)),[],import.meta.url)}}),Q.of({name:`EBNF`,load(){return J(()=>import(`./ebnf-D4c0_ac3.js`).then(e=>$(e.ebnf)),[],import.meta.url)}}),Q.of({name:`ECL`,extensions:[`ecl`],load(){return J(()=>import(`./ecl-BSZaIHnp.js`).then(e=>$(e.ecl)),[],import.meta.url)}}),Q.of({name:`edn`,extensions:[`edn`],load(){return J(()=>import(`./clojure-BflJGmDX.js`).then(e=>$(e.clojure)),[],import.meta.url)}}),Q.of({name:`Eiffel`,extensions:[`e`],load(){return J(()=>import(`./eiffel-BEjRio4Q.js`).then(e=>$(e.eiffel)),[],import.meta.url)}}),Q.of({name:`Elm`,extensions:[`elm`],load(){return J(()=>import(`./elm-Cshzl8qu.js`).then(e=>$(e.elm)),[],import.meta.url)}}),Q.of({name:`Erlang`,extensions:[`erl`],load(){return J(()=>import(`./erlang-DaB2Rkuy.js`).then(e=>$(e.erlang)),[],import.meta.url)}}),Q.of({name:`Esper`,load(){return J(()=>import(`./sql-DcCJ9jop.js`).then(e=>$(e.esper)),[],import.meta.url)}}),Q.of({name:`Factor`,extensions:[`factor`],load(){return J(()=>import(`./factor-D7LVTn2l.js`).then(e=>$(e.factor)),__vite__mapDeps([29,28]),import.meta.url)}}),Q.of({name:`FCL`,load(){return J(()=>import(`./fcl-ClOhbFR7.js`).then(e=>$(e.fcl)),[],import.meta.url)}}),Q.of({name:`Forth`,extensions:[`forth`,`fth`,`4th`],load(){return J(()=>import(`./forth-Cezjo90N.js`).then(e=>$(e.forth)),[],import.meta.url)}}),Q.of({name:`Fortran`,extensions:[`f`,`for`,`f77`,`f90`,`f95`],load(){return J(()=>import(`./fortran-Bt6PBEDR.js`).then(e=>$(e.fortran)),[],import.meta.url)}}),Q.of({name:`F#`,alias:[`fsharp`],extensions:[`fs`],load(){return J(()=>import(`./mllike-B45xgp2S.js`).then(e=>$(e.fSharp)),[],import.meta.url)}}),Q.of({name:`Gas`,extensions:[`s`],load(){return J(()=>import(`./gas-BHEdbvp9.js`).then(e=>$(e.gas)),[],import.meta.url)}}),Q.of({name:`Gherkin`,extensions:[`feature`],load(){return J(()=>import(`./gherkin-oBAE_ms0.js`).then(e=>$(e.gherkin)),[],import.meta.url)}}),Q.of({name:`Groovy`,extensions:[`groovy`,`gradle`],filename:/^Jenkinsfile$/,load(){return J(()=>import(`./groovy-BC3IOsC8.js`).then(e=>$(e.groovy)),[],import.meta.url)}}),Q.of({name:`Haskell`,extensions:[`hs`],load(){return J(()=>import(`./haskell-BRsoo5mP.js`).then(e=>$(e.haskell)),[],import.meta.url)}}),Q.of({name:`Haxe`,extensions:[`hx`],load(){return J(()=>import(`./haxe-DIz0ZZqd.js`).then(e=>$(e.haxe)),[],import.meta.url)}}),Q.of({name:`HXML`,extensions:[`hxml`],load(){return J(()=>import(`./haxe-DIz0ZZqd.js`).then(e=>$(e.hxml)),[],import.meta.url)}}),Q.of({name:`HTTP`,load(){return J(()=>import(`./http-CLVgA2GD.js`).then(e=>$(e.http)),[],import.meta.url)}}),Q.of({name:`IDL`,extensions:[`pro`],load(){return J(()=>import(`./idl-BUZw3wgd.js`).then(e=>$(e.idl)),[],import.meta.url)}}),Q.of({name:`JSON-LD`,alias:[`jsonld`],extensions:[`jsonld`],load(){return J(()=>import(`./javascript-9Tg8ixDm.js`).then(e=>$(e.jsonld)),[],import.meta.url)}}),Q.of({name:`Julia`,extensions:[`jl`],load(){return J(()=>import(`./julia-CQfgDRfP.js`).then(e=>$(e.julia)),[],import.meta.url)}}),Q.of({name:`Kotlin`,extensions:[`kt`,`kts`],load(){return J(()=>import(`./clike-DHH8Ad3s.js`).then(e=>$(e.kotlin)),[],import.meta.url)}}),Q.of({name:`LiveScript`,alias:[`ls`],extensions:[`ls`],load(){return J(()=>import(`./livescript-BXxG0Yva.js`).then(e=>$(e.liveScript)),[],import.meta.url)}}),Q.of({name:`Lua`,extensions:[`lua`],load(){return J(()=>import(`./lua-CiA1ziua.js`).then(e=>$(e.lua)),[],import.meta.url)}}),Q.of({name:`mIRC`,extensions:[`mrc`],load(){return J(()=>import(`./mirc-C9zpzAZU.js`).then(e=>$(e.mirc)),[],import.meta.url)}}),Q.of({name:`Mathematica`,extensions:[`m`,`nb`,`wl`,`wls`],load(){return J(()=>import(`./mathematica-u8YMmbU0.js`).then(e=>$(e.mathematica)),[],import.meta.url)}}),Q.of({name:`Modelica`,extensions:[`mo`],load(){return J(()=>import(`./modelica-CqHI_q-D.js`).then(e=>$(e.modelica)),[],import.meta.url)}}),Q.of({name:`MUMPS`,extensions:[`mps`],load(){return J(()=>import(`./mumps-CW_TBmxz.js`).then(e=>$(e.mumps)),[],import.meta.url)}}),Q.of({name:`Mbox`,extensions:[`mbox`],load(){return J(()=>import(`./mbox-BEMVcqjs.js`).then(e=>$(e.mbox)),[],import.meta.url)}}),Q.of({name:`Nginx`,filename:/nginx.*\.conf$/i,load(){return J(()=>import(`./nginx-BMaDbqW3.js`).then(e=>$(e.nginx)),[],import.meta.url)}}),Q.of({name:`NSIS`,extensions:[`nsh`,`nsi`],load(){return J(()=>import(`./nsis-AQ_alPln.js`).then(e=>$(e.nsis)),__vite__mapDeps([30,28]),import.meta.url)}}),Q.of({name:`NTriples`,extensions:[`nt`,`nq`],load(){return J(()=>import(`./ntriples-d28e9m0E.js`).then(e=>$(e.ntriples)),[],import.meta.url)}}),Q.of({name:`Objective-C`,alias:[`objective-c`,`objc`],extensions:[`m`],load(){return J(()=>import(`./clike-DHH8Ad3s.js`).then(e=>$(e.objectiveC)),[],import.meta.url)}}),Q.of({name:`Objective-C++`,alias:[`objective-c++`,`objc++`],extensions:[`mm`],load(){return J(()=>import(`./clike-DHH8Ad3s.js`).then(e=>$(e.objectiveCpp)),[],import.meta.url)}}),Q.of({name:`OCaml`,extensions:[`ml`,`mli`,`mll`,`mly`],load(){return J(()=>import(`./mllike-B45xgp2S.js`).then(e=>$(e.oCaml)),[],import.meta.url)}}),Q.of({name:`Octave`,extensions:[`m`],load(){return J(()=>import(`./octave-D2Q8cUp1.js`).then(e=>$(e.octave)),[],import.meta.url)}}),Q.of({name:`Oz`,extensions:[`oz`],load(){return J(()=>import(`./oz-BwTct_5T.js`).then(e=>$(e.oz)),[],import.meta.url)}}),Q.of({name:`Pascal`,extensions:[`p`,`pas`],load(){return J(()=>import(`./pascal-Dp_KdFgX.js`).then(e=>$(e.pascal)),[],import.meta.url)}}),Q.of({name:`Perl`,extensions:[`pl`,`pm`],load(){return J(()=>import(`./perl-CdEHsPfU.js`).then(e=>$(e.perl)),[],import.meta.url)}}),Q.of({name:`Pig`,extensions:[`pig`],load(){return J(()=>import(`./pig-AF4Hwhju.js`).then(e=>$(e.pig)),[],import.meta.url)}}),Q.of({name:`PowerShell`,extensions:[`ps1`,`psd1`,`psm1`],load(){return J(()=>import(`./powershell-CzG71I4L.js`).then(e=>$(e.powerShell)),[],import.meta.url)}}),Q.of({name:`Properties files`,alias:[`ini`,`properties`],extensions:[`properties`,`ini`,`in`],load(){return J(()=>import(`./properties-C357ku5U.js`).then(e=>$(e.properties)),[],import.meta.url)}}),Q.of({name:`ProtoBuf`,extensions:[`proto`],load(){return J(()=>import(`./protobuf-D1ij_kNL.js`).then(e=>$(e.protobuf)),[],import.meta.url)}}),Q.of({name:`Pug`,alias:[`jade`],extensions:[`pug`,`jade`],load(){return J(()=>import(`./pug-Bugr-47h.js`).then(e=>$(e.pug)),__vite__mapDeps([31,32]),import.meta.url)}}),Q.of({name:`Puppet`,extensions:[`pp`],load(){return J(()=>import(`./puppet-B4hC2X4m.js`).then(e=>$(e.puppet)),[],import.meta.url)}}),Q.of({name:`Q`,extensions:[`q`],load(){return J(()=>import(`./q-B9NhS7L_.js`).then(e=>$(e.q)),[],import.meta.url)}}),Q.of({name:`R`,alias:[`rscript`],extensions:[`r`,`R`],load(){return J(()=>import(`./r-DADKenSm.js`).then(e=>$(e.r)),[],import.meta.url)}}),Q.of({name:`RPM Changes`,load(){return J(()=>import(`./rpm-gpDK5sbt.js`).then(e=>$(e.rpmChanges)),[],import.meta.url)}}),Q.of({name:`RPM Spec`,extensions:[`spec`],load(){return J(()=>import(`./rpm-gpDK5sbt.js`).then(e=>$(e.rpmSpec)),[],import.meta.url)}}),Q.of({name:`Ruby`,alias:[`jruby`,`macruby`,`rake`,`rb`,`rbx`],extensions:[`rb`],filename:/^(Gemfile|Rakefile)$/,load(){return J(()=>import(`./ruby-DsYpTuWg.js`).then(e=>$(e.ruby)),[],import.meta.url)}}),Q.of({name:`SAS`,extensions:[`sas`],load(){return J(()=>import(`./sas-C2OyD2Y6.js`).then(e=>$(e.sas)),[],import.meta.url)}}),Q.of({name:`Scala`,extensions:[`scala`],load(){return J(()=>import(`./clike-DHH8Ad3s.js`).then(e=>$(e.scala)),[],import.meta.url)}}),Q.of({name:`Scheme`,extensions:[`scm`,`ss`],load(){return J(()=>import(`./scheme-CyDdOh7e.js`).then(e=>$(e.scheme)),[],import.meta.url)}}),Q.of({name:`Shell`,alias:[`bash`,`sh`,`zsh`],extensions:[`sh`,`ksh`,`bash`],filename:/^PKGBUILD$/,load(){return J(()=>import(`./shell-Du5Qg9im.js`).then(e=>$(e.shell)),[],import.meta.url)}}),Q.of({name:`Sieve`,extensions:[`siv`,`sieve`],load(){return J(()=>import(`./sieve-BAxa3IjF.js`).then(e=>$(e.sieve)),[],import.meta.url)}}),Q.of({name:`Smalltalk`,extensions:[`st`],load(){return J(()=>import(`./smalltalk-BLp5-jwC.js`).then(e=>$(e.smalltalk)),[],import.meta.url)}}),Q.of({name:`Solr`,load(){return J(()=>import(`./solr-BBopId9w.js`).then(e=>$(e.solr)),[],import.meta.url)}}),Q.of({name:`SML`,extensions:[`sml`,`sig`,`fun`,`smackspec`],load(){return J(()=>import(`./mllike-B45xgp2S.js`).then(e=>$(e.sml)),[],import.meta.url)}}),Q.of({name:`SPARQL`,alias:[`sparul`],extensions:[`rq`,`sparql`],load(){return J(()=>import(`./sparql-Dz-mlCAC.js`).then(e=>$(e.sparql)),[],import.meta.url)}}),Q.of({name:`Spreadsheet`,alias:[`excel`,`formula`],load(){return J(()=>import(`./spreadsheet-CTIncYxj.js`).then(e=>$(e.spreadsheet)),[],import.meta.url)}}),Q.of({name:`Squirrel`,extensions:[`nut`],load(){return J(()=>import(`./clike-DHH8Ad3s.js`).then(e=>$(e.squirrel)),[],import.meta.url)}}),Q.of({name:`Stylus`,extensions:[`styl`],load(){return J(()=>import(`./stylus-DLLZ8dgm.js`).then(e=>$(e.stylus)),[],import.meta.url)}}),Q.of({name:`Swift`,extensions:[`swift`],load(){return J(()=>import(`./swift-DKB6_1j6.js`).then(e=>$(e.swift)),[],import.meta.url)}}),Q.of({name:`sTeX`,load(){return J(()=>import(`./stex-sDrdk2BW.js`).then(e=>$(e.stex)),[],import.meta.url)}}),Q.of({name:`LaTeX`,alias:[`tex`],extensions:[`text`,`ltx`,`tex`],load(){return J(()=>import(`./stex-sDrdk2BW.js`).then(e=>$(e.stex)),[],import.meta.url)}}),Q.of({name:`SystemVerilog`,extensions:[`v`,`sv`,`svh`],load(){return J(()=>import(`./verilog-D-x6ne0Z.js`).then(e=>$(e.verilog)),[],import.meta.url)}}),Q.of({name:`Tcl`,extensions:[`tcl`],load(){return J(()=>import(`./tcl-BGfruO1u.js`).then(e=>$(e.tcl)),[],import.meta.url)}}),Q.of({name:`Textile`,extensions:[`textile`],load(){return J(()=>import(`./textile-DWBqthVk.js`).then(e=>$(e.textile)),[],import.meta.url)}}),Q.of({name:`TiddlyWiki`,load(){return J(()=>import(`./tiddlywiki-VlUiK86J.js`).then(e=>$(e.tiddlyWiki)),[],import.meta.url)}}),Q.of({name:`Tiki wiki`,load(){return J(()=>import(`./tiki-CxVlf5KZ.js`).then(e=>$(e.tiki)),[],import.meta.url)}}),Q.of({name:`TOML`,extensions:[`toml`],load(){return J(()=>import(`./toml-LvoKBwCs.js`).then(e=>$(e.toml)),[],import.meta.url)}}),Q.of({name:`Troff`,extensions:[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`],load(){return J(()=>import(`./troff-C2dAgh7P.js`).then(e=>$(e.troff)),[],import.meta.url)}}),Q.of({name:`TTCN`,extensions:[`ttcn`,`ttcn3`,`ttcnpp`],load(){return J(()=>import(`./ttcn-BePYh-hG.js`).then(e=>$(e.ttcn)),[],import.meta.url)}}),Q.of({name:`TTCN_CFG`,extensions:[`cfg`],load(){return J(()=>import(`./ttcn-cfg-CY0aot7Q.js`).then(e=>$(e.ttcnCfg)),[],import.meta.url)}}),Q.of({name:`Turtle`,extensions:[`ttl`],load(){return J(()=>import(`./turtle-BDLWE2cD.js`).then(e=>$(e.turtle)),[],import.meta.url)}}),Q.of({name:`Web IDL`,extensions:[`webidl`],load(){return J(()=>import(`./webidl-D5jiJvOU.js`).then(e=>$(e.webIDL)),[],import.meta.url)}}),Q.of({name:`VB.NET`,extensions:[`vb`],load(){return J(()=>import(`./vb-BthdM_4N.js`).then(e=>$(e.vb)),[],import.meta.url)}}),Q.of({name:`VBScript`,extensions:[`vbs`],load(){return J(()=>import(`./vbscript-D9f6rSsU.js`).then(e=>$(e.vbScript)),[],import.meta.url)}}),Q.of({name:`Velocity`,extensions:[`vtl`],load(){return J(()=>import(`./velocity-CqftRsjg.js`).then(e=>$(e.velocity)),[],import.meta.url)}}),Q.of({name:`Verilog`,extensions:[`v`],load(){return J(()=>import(`./verilog-D-x6ne0Z.js`).then(e=>$(e.verilog)),[],import.meta.url)}}),Q.of({name:`VHDL`,extensions:[`vhd`,`vhdl`],load(){return J(()=>import(`./vhdl-CMrOq2q1.js`).then(e=>$(e.vhdl)),[],import.meta.url)}}),Q.of({name:`XQuery`,extensions:[`xy`,`xquery`,`xq`,`xqm`,`xqy`],load(){return J(()=>import(`./xquery-fj_R-kMw.js`).then(e=>$(e.xQuery)),[],import.meta.url)}}),Q.of({name:`Yacas`,extensions:[`ys`],load(){return J(()=>import(`./yacas-CXXgtw0p.js`).then(e=>$(e.yacas)),[],import.meta.url)}}),Q.of({name:`Z80`,extensions:[`z80`],load(){return J(()=>import(`./z80-CL1naaMV.js`).then(e=>$(e.z80)),[],import.meta.url)}}),Q.of({name:`MscGen`,extensions:[`mscgen`,`mscin`,`msc`],load(){return J(()=>import(`./mscgen-qgSLujhx.js`).then(e=>$(e.mscgen)),[],import.meta.url)}}),Q.of({name:`Xù`,extensions:[`xu`],load(){return J(()=>import(`./mscgen-qgSLujhx.js`).then(e=>$(e.xu)),[],import.meta.url)}}),Q.of({name:`MsGenny`,extensions:[`msgenny`],load(){return J(()=>import(`./mscgen-qgSLujhx.js`).then(e=>$(e.msgenny)),[],import.meta.url)}}),Q.of({name:`Vue`,extensions:[`vue`],load(){return J(()=>import(`./dist-Dq9gLD7L.js`).then(e=>e.vue()),__vite__mapDeps([33,12,10,8,13]),import.meta.url)}}),Q.of({name:`Angular Template`,load(){return J(()=>import(`./dist-BytlxIDT.js`).then(e=>e.angular()),__vite__mapDeps([34,12,10,8,13]),import.meta.url)}})];function B9(e){let t=String(e||``).split(`/`).pop()||``,n=t.lastIndexOf(`.`);return n>=0?t.slice(n):``}function V9(e){return Q.matchFilename(Coe,`file${e}`)}function H9({content:e,path:t,readOnly:n=!1,onSave:r,onDirtyChange:i,onContentChange:a,getContentRef:o}){let s=(0,b.useRef)(null),c=(0,b.useRef)(null),l=(0,b.useRef)(new DY),u=(0,b.useRef)(new DY),d=(0,b.useRef)(new DY),f=(0,b.useRef)(!1),p=(0,b.useRef)(r),m=(0,b.useRef)(i),h=(0,b.useRef)(a);(0,b.useEffect)(()=>{p.current=r,m.current=i,h.current=a},[r,i,a]);let g=(0,b.useCallback)(e=>{f.current!==e&&(f.current=e,m.current?.(e))},[]);return(0,b.useEffect)(()=>{if(!s.current)return;let r=document.documentElement.classList.contains(`dark`),i=q0.of([{key:`Mod-s`,run:e=>{let t=e.state.doc.toString();return p.current?.(t),g(!1),!0},preventDefault:!0}]),a=new R0({state:iX.create({doc:e,extensions:[x4(),T4(),Vre(),o8(),u2(),y2(),iX.allowMultipleSelections.of(!0),M6(),f8(h8,{fallback:!0}),T8(),doe(),xoe(),O2(),j2(),b2(),tae(),q0.of([...moe,...Uie,...Sae,...Xre,...Z6,...R9,Wie]),i,R0.updateListener.of(e=>{e.docChanged&&(g(!0),h.current?.(e.state.doc.toString()))}),d.current.of(iX.readOnly.of(n)),l.current.of([]),u.current.of(r?f7:[]),R0.theme({"&":{height:`100%`},".cm-scroller":{overflow:`auto`}})]}),parent:s.current});c.current=a,o&&(o.current=()=>a.state.doc.toString());let f=V9(B9(t));return f&&f.load().then(e=>{c.current&&c.current.dispatch({effects:l.current.reconfigure(e)})}).catch(()=>{}),()=>{a.destroy(),c.current=null,o&&(o.current=null)}},[]),(0,b.useEffect)(()=>{let t=c.current;if(!t)return;let n=t.state.doc.toString();n!==e&&(t.dispatch({changes:{from:0,to:n.length,insert:e}}),g(!1))},[e,g]),(0,b.useEffect)(()=>{let e=c.current;if(!e)return;let n=V9(B9(t));n?n.load().then(e=>{c.current&&c.current.dispatch({effects:l.current.reconfigure(e)})}).catch(()=>{}):e.dispatch({effects:l.current.reconfigure([])})},[t]),(0,b.useEffect)(()=>{let e=c.current;e&&e.dispatch({effects:d.current.reconfigure(iX.readOnly.of(n))})},[n]),(0,b.useEffect)(()=>{let e=new MutationObserver(()=>{let e=c.current;if(!e)return;let t=document.documentElement.classList.contains(`dark`);e.dispatch({effects:u.current.reconfigure(t?f7:[])})});return e.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}),()=>e.disconnect()},[]),(0,U.jsx)(`div`,{ref:s,className:`h-full w-full overflow-hidden [&_.cm-editor]:h-full [&_.cm-scroller]:auto`})}function U9({content:e,objectUrl:t,kind:n,filename:r,path:i}){return n===`markdown`?(0,U.jsx)(VK,{content:e||``}):n===`image`&&t?(0,U.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,U.jsx)(`img`,{src:t,alt:r,className:`max-h-[70vh] max-w-full rounded object-contain`})}):n===`pdf`&&t?(0,U.jsx)(`iframe`,{src:t,title:r,className:`h-full w-full border-0`}):(n===`text`||n===`code`)&&e!==null?(0,U.jsx)(H9,{content:e,path:i||r,readOnly:!0,onSave:()=>{},onDirtyChange:()=>{},getContentRef:{current:()=>e||``}}):(0,U.jsx)(`div`,{className:`flex h-full items-center justify-center px-6 text-center`,children:(0,U.jsx)(`div`,{className:`w-full max-w-md rounded-2xl border border-dashed border-slate-300 bg-slate-50 px-5 py-5 text-slate-500 dark:border-slate-700 dark:bg-slate-900 dark:text-slate-400`,children:`该文件类型暂不支持在线预览,请直接下载查看。`})})}function W9(e){return e.replace(/&/g,`&`).replace(/"/g,`"`).replace(//g,`>`)}function woe(e){let t=e.endsWith(`/`)?e:`${e}/`;if(typeof window>`u`)return`'self'`;try{return new URL(t,window.location.origin).toString()}catch{return`'self'`}}function G9(...e){return Array.from(new Set(e.filter(e=>!!e))).join(` `)}function Toe(e){let t=e?woe(e):void 0,n=G9(`'unsafe-inline'`,`'unsafe-eval'`,`'self'`,`https:`,t),r=G9(`'self'`,`https:`,t);return[`default-src 'none'`,`script-src ${n}`,`style-src 'unsafe-inline' data: ${r}`,`img-src data: blob: ${r}`,`font-src data: ${r}`,`media-src data: blob: ${r}`,`worker-src blob:`,`connect-src 'none'`,`form-action 'none'`,`base-uri 'self'`].join(`; `)}function Eoe(e){try{let t=new URL(e,window.location.href);return[`http:`,`https:`,`mailto:`].includes(t.protocol)}catch{return!1}}function K9(e,t={}){let{channelId:n,basePath:r}=typeof t==`string`?{channelId:t}:t,i=Toe(r),a=` - + +
diff --git a/ksadk/studio/agent_lifecycle.py b/ksadk/studio/agent_lifecycle.py index e160a21e..52fbe615 100644 --- a/ksadk/studio/agent_lifecycle.py +++ b/ksadk/studio/agent_lifecycle.py @@ -24,28 +24,34 @@ def delete_framework_agent(studio: Any, agent_id: str, *, purge: bool) -> None: status_code=409, details={"agentId": agent_id, "runIds": running}, ) + builds = studio.builds.list_for_agent(agent_id) + removed_bindings = studio.plugin_compositions.unbind_builds(builds) trash_directory = None - if not purge: - timestamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%S%fZ") - trash_directory = studio.workspace.resolve( - Path(".agentkit/trash/agents") / f"{agent_id}-{timestamp}" + try: + if not purge: + timestamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%S%fZ") + trash_directory = studio.workspace.resolve( + Path(".agentkit/trash/agents") / f"{agent_id}-{timestamp}" + ) + trash_directory.mkdir(parents=True, exist_ok=False) + studio.event_store.delete_agent( + agent_id, + purge=purge, + trash_directory=trash_directory, ) - trash_directory.mkdir(parents=True, exist_ok=False) - studio.event_store.delete_agent( - agent_id, - purge=purge, - trash_directory=trash_directory, - ) - studio.builds.delete_for_agent( - agent_id, - purge=purge, - trash_directory=trash_directory, - ) - studio.drafts.delete( - agent_id, - purge=purge, - trash_directory=trash_directory, - ) + studio.builds.delete_for_agent( + agent_id, + purge=purge, + trash_directory=trash_directory, + ) + studio.drafts.delete( + agent_id, + purge=purge, + trash_directory=trash_directory, + ) + except Exception: + studio.plugin_compositions.restore_bindings(removed_bindings) + raise __all__ = ["delete_framework_agent"] diff --git a/ksadk/studio/api.py b/ksadk/studio/api.py index d291b366..def8d2b2 100644 --- a/ksadk/studio/api.py +++ b/ksadk/studio/api.py @@ -3,10 +3,12 @@ from __future__ import annotations import asyncio +import base64 import hmac import json import os import secrets +import time from collections.abc import AsyncIterator from contextlib import asynccontextmanager from pathlib import Path @@ -18,8 +20,18 @@ from fastapi.staticfiles import StaticFiles from starlette.background import BackgroundTask +from ksadk.api.client import AgentEngineAPIError +from ksadk.conversations.contracts import ( + ConversationAttachmentPart, + ConversationTextPart, + validate_conversation_input, +) +from ksadk.conversations.projector import project_conversation_item +from ksadk.events.canonical import parse_runtime_event_lenient +from ksadk.scheduler.contracts import ScheduledTask from ksadk.studio.api_catalog_routes import register_catalog_routes from ksadk.studio.api_contracts import ( + AgentScheduleRequest, AuthoringCommitRequest, BuildRequest, CloudAgentVersionRollbackRequest, @@ -27,6 +39,7 @@ CloudChatMessageRequest, ContextPreviewRequest, ConversationAuthoringRequest, + ConversationTurnRequest, CreateAgentRequest, ImportRootRequest, InteractionSubmitRequest, @@ -65,6 +78,7 @@ sse as _sse, ) from ksadk.studio.api_memory_routes import register_memory_routes +from ksadk.studio.api_plugin_routes import register_plugin_routes from ksadk.studio.codex_manifest import CodexAgentManifest from ksadk.studio.contracts import ( AgentAppearance, @@ -85,6 +99,117 @@ } _LOCAL_HOSTS = {"127.0.0.1", "::1", "localhost", "testserver"} +# RuntimeEvent/v2 itself is snake_case. Some pre-existing cloud SessionEvent +# projections, however, serialized the *envelope* with the REST camelCase +# convention. This is a narrow transport normalizer, not a provider payload +# rewrite: only fields owned by the frozen RuntimeEvent envelope/content +# contracts are translated before strict parsing. +_RUNTIME_EVENT_WIRE_ALIASES = { + "schemaVersion": "schema_version", + "eventId": "event_id", + "runId": "run_id", + "runSeq": "run_seq", + "scopeId": "scope_id", + "parentScopeId": "parent_scope_id", + "eventType": "event_type", + "itemId": "item_id", + "itemKind": "item_kind", + "interactionId": "interaction_id", + "interactionKind": "interaction_kind", + "continuationId": "continuation_id", + "resumeAttemptId": "resume_attempt_id", + "outputRefs": "output_refs", + "inputTokens": "input_tokens", + "outputTokens": "output_tokens", + "totalTokens": "total_tokens", + "cachedTokens": "cached_tokens", + "reasoningTokens": "reasoning_tokens", +} +_SOURCE_WIRE_ALIASES = { + "nativeEventId": "native_event_id", + "nativeCursor": "native_cursor", + "nativeRunId": "native_run_id", + "nativeItemId": "native_item_id", +} +_CONTENT_WIRE_ALIASES = { + "contentType": "content_type", + "partId": "part_id", + "callId": "call_id", + "artifactId": "artifact_id", + "mimeType": "mime_type", + "isError": "is_error", +} + + +def _normalize_cloud_runtime_event_wire(value: dict[str, Any]) -> dict[str, Any]: + """Normalize only historic REST casing at the RuntimeEvent boundary.""" + + normalized = { + _RUNTIME_EVENT_WIRE_ALIASES.get(key, key): item for key, item in value.items() + } + source = normalized.get("source") + if isinstance(source, dict): + normalized["source"] = { + _SOURCE_WIRE_ALIASES.get(key, key): item for key, item in source.items() + } + + def normalize_content(content: Any) -> Any: + if not isinstance(content, dict): + return content + return {_CONTENT_WIRE_ALIASES.get(key, key): item for key, item in content.items()} + + normalized["update"] = normalize_content(normalized.get("update")) + for key in ("initial", "snapshot"): + snapshot = normalized.get(key) + if not isinstance(snapshot, dict): + continue + parts = snapshot.get("parts") + if isinstance(parts, list): + normalized[key] = { + **snapshot, + "parts": [normalize_content(part) for part in parts], + } + return normalized + + +def _cloud_event_conversation_item( + event: dict[str, Any], *, session_id: str +) -> dict[str, Any] | None: + """Project a complete cloud RuntimeEvent without inventing a browser item. + + Cloud SessionEvent history has a compatibility envelope around the runtime + payload. Keep the source event untouched, but add the same typed + ConversationItem that local Studio streams use whenever the nested event + validates against RuntimeEvent/v2. A malformed or older envelope is still + observable to diagnostics, never guessed into an actionable chat card. + """ + + payload = event.get("payload") if isinstance(event.get("payload"), dict) else event + content = payload.get("content") if isinstance(payload.get("content"), dict) else {} + candidates = ( + content.get("runtime_event"), + content.get("runtimeEvent"), + payload.get("runtime_event"), + payload.get("runtimeEvent"), + event.get("runtime_event"), + event.get("runtimeEvent"), + ) + raw_event = next((candidate for candidate in candidates if isinstance(candidate, dict)), None) + if raw_event is None: + return None + try: + runtime_event = parse_runtime_event_lenient( + _normalize_cloud_runtime_event_wire(raw_event) + ) + item = project_conversation_item( + runtime_event, # type: ignore[arg-type] + session_id=session_id, + run_id=runtime_event.run_id, + ) + except (TypeError, ValueError): + return None + return item.model_dump(by_alias=True, exclude_none=True, mode="json") + def create_studio_app( root: Path | str, @@ -101,9 +226,13 @@ def create_studio_app( @asynccontextmanager async def lifespan(_app: FastAPI) -> AsyncIterator[None]: try: + await studio.start() await studio.run_service.recover_interrupted() + await studio.scheduler.start_if_available() yield finally: + await studio.scheduler.stop() + await studio.aclose() studio.credentials.clear_session() app = FastAPI( @@ -117,7 +246,82 @@ async def lifespan(_app: FastAPI) -> AsyncIterator[None]: app.state.studio_service = studio app.state.session_token = session_secret app.state.csrf_token = csrf_secret + + def _stream_studio_run( + build_id: str, + *, + user_input: str, + session_id: str | None, + model: str | None, + sandbox: str | None, + reasoning_effort: str | None = None, + approval_mode: str | None = None, + collaboration_mode: str | None = None, + goal_objective: str | None = None, + runtime_input: Any = None, + idempotency_key: str, + ) -> StreamingResponse: + """Create an observer-only SSE response for one durable Studio run.""" + + queue: asyncio.Queue = asyncio.Queue() + + def observe(event): + queue.put_nowait(event) + + # The Operation owns the runtime task. The SSE response is only one + # observer, so refreshing or switching chats cannot cancel the Run. + operation = studio.submit_studio_run( + build_id, + user_input, + session_id=session_id, + model=model, + sandbox=sandbox, + reasoning_effort=reasoning_effort, + approval_mode=approval_mode, + collaboration_mode=collaboration_mode, + goal_objective=goal_objective, + runtime_input=runtime_input, + idempotency_key=idempotency_key, + on_event=observe, + ) + + async def render(): + while True: + try: + event = await asyncio.wait_for(queue.get(), timeout=0.1) + except TimeoutError: + event = None + if event is not None: + data = json.dumps( + event.data, + ensure_ascii=False, + separators=(",", ":"), + ) + yield f"id: {event.id}\nevent: {event.type}\ndata: {data}\n\n" + current = studio.operations.get(operation.id) + if ( + current.status + in { + OperationStatus.SUCCEEDED, + OperationStatus.FAILED, + OperationStatus.CANCELLED, + OperationStatus.INTERRUPTED, + } + and queue.empty() + ): + if current.status == OperationStatus.FAILED: + data = json.dumps(current.error or {}, ensure_ascii=False) + yield f"event: run.failed\ndata: {data}\n\n" + break + + return StreamingResponse( + render(), + media_type="text/event-stream", + headers={"Cache-Control": "no-store", "X-Accel-Buffering": "no"}, + ) + static_root = Path(__file__).with_name("static") + _studio_startup_epoch = str(int(time.time())) shared_web = StudioSharedWebBridge(studio) app.state.shared_web_bridge = shared_web app.mount("/static", StaticFiles(directory=static_root), name="studio-static") @@ -212,6 +416,39 @@ async def local_security(request: Request, call_next): async def studio_error_handler(request: Request, exc: StudioError): return _error_response(exc, request) + @app.exception_handler(AgentEngineAPIError) + async def agentengine_api_error_handler(request: Request, exc: AgentEngineAPIError): + http_status = exc.details.get("http_status", 502) + status_code = ( + http_status if isinstance(http_status, int) and 400 <= http_status < 600 else 502 + ) + return _error_response( + StudioError( + "CLOUD_API_ERROR", + exc.message or "云端服务返回错误", + status_code=status_code, + details={"api_code": exc.code, "raw_code": exc.raw_code}, + ), + request, + ) + + @app.exception_handler(Exception) + async def generic_error_handler(request: Request, exc: Exception): + # Catch-all for bare Exception raises from the API client (e.g. HTTP + # errors, JSON parse failures) so they surface as structured JSON + # instead of opaque 500s. StudioError and AgentEngineAPIError are + # handled by their own dedicated handlers above. + if isinstance(exc, StudioError): + return _error_response(exc, request) + return _error_response( + StudioError( + "INTERNAL_ERROR", + "Studio 内部错误,请根据请求 ID 查看本地诊断日志。", + status_code=500, + ), + request, + ) + @app.exception_handler(RequestValidationError) async def validation_error_handler(request: Request, exc: RequestValidationError): first = exc.errors()[0] if exc.errors() else {} @@ -229,7 +466,24 @@ async def validation_error_handler(request: Request, exc: RequestValidationError @app.get("/") async def index(): path = static_root / "index.html" - response = FileResponse(path, media_type="text/html") + html = path.read_text(encoding="utf-8") + # Inject a startup-scoped version so a restarted Studio with a rebuilt + # bundle always wins over a stale browser tab. The bundle filenames + # are already content-hashed; this only defeats cached index.html. + if "?v=" not in html: + import re + + def _add_version(match: "re.Match[str]") -> str: + attr, path_part = match.group(1), match.group(2) + return f'{attr}="/static/assets/{path_part}?v={_studio_startup_epoch}"' + + html = re.sub( + r'(src|href)="/static/assets/([^"]+)"', + _add_version, + html, + ) + response = Response(content=html, media_type="text/html") + response.headers["Cache-Control"] = "no-store" if security_enabled: response.set_cookie( "agentkit_studio_session", @@ -324,6 +578,7 @@ async def openai_responses(payload: dict[str, Any]): "CollaborationMode": collaboration_mode, "GoalObjective": goal_objective, "ReasoningEffort": reasoning_effort, + "ModelExplicit": bool(str(payload.get("model") or "").strip()), } bridge_payload["Model"] = shared_web.select_model( bridge_payload["AgentId"], @@ -491,6 +746,7 @@ async def bootstrap(): "deployment": True, "cloudRebuild": False, "reactChat": True, + "scheduler": studio.scheduler.availability(), }, "runtimes": studio.runtime_catalog(), "importableProject": studio.detect_importable_project(), @@ -504,6 +760,111 @@ async def get_settings(): async def update_settings(payload: dict[str, Any]): return studio.update_settings(payload) + @app.get("/api/v1/schedules") + async def list_schedules(): + return { + "items": studio.scheduler.list_tasks(), + "availability": studio.scheduler.availability(), + } + + @app.post("/api/v1/schedules", status_code=201) + async def create_schedule(payload: ScheduledTask): + studio.validate_schedule_build( + payload.target.agent_version_ref, + agent_id=payload.target.agent_id, + ) + return studio.scheduler.create_task(payload) + + @app.get("/api/v1/schedules/{task_id}") + async def get_schedule(task_id: str): + return studio.scheduler.get_task(task_id) + + @app.put("/api/v1/schedules/{task_id}") + async def update_schedule(task_id: str, payload: ScheduledTask): + studio.validate_schedule_build( + payload.target.agent_version_ref, + agent_id=payload.target.agent_id, + ) + return studio.scheduler.update_task(task_id, payload) + + @app.delete("/api/v1/schedules/{task_id}", status_code=204) + async def delete_schedule(task_id: str): + studio.scheduler.delete_task(task_id) + return Response(status_code=204) + + @app.post("/api/v1/schedules/{task_id}:run", status_code=202) + async def run_schedule_now(task_id: str): + return await studio.scheduler.run_now(task_id) + + @app.get("/api/v1/schedules/{task_id}/occurrences") + async def list_schedule_occurrences(task_id: str, limit: int = Query(default=50, ge=1, le=200)): + return {"items": studio.scheduler.list_occurrences(task_id, limit=limit)} + + @app.get("/api/v1/schedule-occurrences") + async def list_all_schedule_occurrences( + limit: int = Query(default=200, ge=1, le=500), + ): + return {"items": studio.scheduler.list_all_occurrences(limit=limit)} + + @app.get("/api/v1/agents/{agent_id}/schedules") + async def list_agent_schedules(agent_id: str): + return { + "items": studio.list_agent_schedules(agent_id), + "availability": studio.scheduler.availability(), + } + + @app.post("/api/v1/agents/{agent_id}/schedules", status_code=201) + async def create_agent_schedule(agent_id: str, payload: AgentScheduleRequest): + return await studio.create_agent_schedule( + agent_id, + display_name=payload.display_name, + prompt=payload.prompt, + schedule=payload.schedule, + enabled=payload.enabled, + continuity=payload.continuity, + session_id=payload.session_id, + ) + + @app.get("/api/v1/agents/{agent_id}/schedules/{task_id}") + async def get_agent_schedule(agent_id: str, task_id: str): + return studio.get_agent_schedule(agent_id, task_id) + + @app.put("/api/v1/agents/{agent_id}/schedules/{task_id}") + async def update_agent_schedule( + agent_id: str, + task_id: str, + payload: AgentScheduleRequest, + ): + return studio.update_agent_schedule( + agent_id, + task_id, + display_name=payload.display_name, + prompt=payload.prompt, + schedule=payload.schedule, + enabled=payload.enabled, + continuity=payload.continuity, + session_id=payload.session_id, + ) + + @app.delete("/api/v1/agents/{agent_id}/schedules/{task_id}", status_code=204) + async def delete_agent_schedule(agent_id: str, task_id: str): + studio.get_agent_schedule(agent_id, task_id) + studio.scheduler.delete_task(task_id) + return Response(status_code=204) + + @app.post("/api/v1/agents/{agent_id}/schedules/{task_id}:run", status_code=202) + async def run_agent_schedule_now(agent_id: str, task_id: str): + return await studio.run_agent_schedule_now(agent_id, task_id) + + @app.get("/api/v1/agents/{agent_id}/schedules/{task_id}/occurrences") + async def list_agent_schedule_occurrences( + agent_id: str, + task_id: str, + limit: int = Query(default=50, ge=1, le=200), + ): + studio.get_agent_schedule(agent_id, task_id) + return {"items": studio.scheduler.list_occurrences(task_id, limit=limit)} + @app.post("/api/v1/workspaces:open") async def open_workspace(payload: WorkspaceOpenRequest): # This endpoint only reconnects to the daemon's already-bound root. Do @@ -580,57 +941,117 @@ async def stream_run( "Codex Studio 只支持只读本地运行", status_code=422, ) - - queue: asyncio.Queue = asyncio.Queue() - - def observe(event): - queue.put_nowait(event) - - # The Operation owns the runtime task. The SSE response is only one - # observer, so refreshing or switching chats cannot cancel the Run. - operation = studio.submit_studio_run( + return _stream_studio_run( build_id, - payload.input.content, + user_input=payload.input.content, session_id=payload.session_id, model=payload.model, sandbox=payload.sandbox, idempotency_key=key, - on_event=observe, ) - async def render(): - while True: - try: - event = await asyncio.wait_for(queue.get(), timeout=0.1) - except TimeoutError: - event = None - if event is not None: - data = json.dumps( - event.data, - ensure_ascii=False, - separators=(",", ":"), - ) - yield f"id: {event.id}\nevent: {event.type}\ndata: {data}\n\n" - current = studio.operations.get(operation.id) - if ( - current.status - in { - OperationStatus.SUCCEEDED, - OperationStatus.FAILED, - OperationStatus.CANCELLED, - OperationStatus.INTERRUPTED, - } - and queue.empty() - ): - if current.status == OperationStatus.FAILED: - data = json.dumps(current.error or {}, ensure_ascii=False) - yield f"event: run.failed\ndata: {data}\n\n" - break + @app.get("/api/v1/builds/{build_id}/conversation-surface") + async def get_conversation_surface( + build_id: str, + session_id: str = Query(alias="sessionId", min_length=1, max_length=256), + ): + return studio.conversation_surface(build_id, session_id=session_id) - return StreamingResponse( - render(), - media_type="text/event-stream", - headers={"Cache-Control": "no-store", "X-Accel-Buffering": "no"}, + @app.get("/api/v1/agents/{agent_id}/conversation-surface") + async def get_agent_conversation_surface( + agent_id: str, + session_id: str = Query(alias="sessionId", min_length=1, max_length=256), + ): + """Resolve the immutable Build and its composer contract atomically. + + The browser selects an Agent, not a mutable Draft or a Build id. This + route gives it the same current-Build decision used by chat and local + Scheduler authoring, so controls cannot be rendered from a stale or + unrelated Build. + """ + + build = await studio.ensure_current_build(agent_id) + return { + "buildId": build.id, + "surface": studio.conversation_surface( + build.id, + session_id=session_id, + ), + } + + @app.post("/api/v1/builds/{build_id}/conversation:stream") + async def stream_conversation_turn( + build_id: str, + payload: ConversationTurnRequest, + idempotency_key: str | None = Header(default=None, alias="Idempotency-Key"), + ): + key = _require_idempotency_key(idempotency_key) + conversation_input = payload.input + if conversation_input.idempotency_key != key: + raise StudioError( + "CONVERSATION_IDEMPOTENCY_MISMATCH", + "ConversationInput 的幂等键必须与请求头一致", + status_code=422, + ) + surface = studio.conversation_surface( + build_id, + session_id=conversation_input.session_id, + ) + try: + validate_conversation_input(surface, conversation_input) + except ValueError as exc: + raise StudioError( + "CONVERSATION_INPUT_UNSUPPORTED", + "当前 Agent 不支持此会话输入", + status_code=422, + details={"reason": str(exc), "surfaceId": surface.surface_id}, + ) from exc + text_parts = [ + part.text for part in conversation_input.parts if isinstance(part, ConversationTextPart) + ] + runtime_parts: list[dict[str, str]] = [ + {"type": "text", "text": value} for value in text_parts + ] + attachment_names: list[str] = [] + for part in conversation_input.parts: + if not isinstance(part, ConversationAttachmentPart): + continue + stored = studio.conversation_attachments.resolve(part.attachment_ref) + if part.media_type.lower() != stored.media_type.lower(): + raise StudioError( + "CONVERSATION_ATTACHMENT_METADATA_MISMATCH", + "会话附件类型与已上传内容不一致", + status_code=422, + details={"attachmentRef": part.attachment_ref}, + ) + encoded = base64.b64encode(stored.path.read_bytes()).decode("ascii") + data_url = f"data:{stored.media_type};base64,{encoded}" + attachment_names.append(part.name or stored.name) + if stored.media_type.startswith("image/"): + runtime_parts.append({"type": "image", "url": data_url}) + else: + runtime_parts.append( + { + "type": "input_file", + "filename": part.name or stored.name, + "file_data": data_url, + } + ) + display_input = "\n".join(text_parts).strip() + if not display_input: + display_input = "请处理本轮附件:" + "、".join(attachment_names) + return _stream_studio_run( + build_id, + user_input=display_input, + session_id=conversation_input.session_id, + model=conversation_input.model_ref, + sandbox=payload.sandbox, + reasoning_effort=conversation_input.reasoning, + approval_mode=conversation_input.approval_mode, + collaboration_mode=conversation_input.collaboration_mode, + goal_objective=conversation_input.goal_objective, + runtime_input=runtime_parts if attachment_names else None, + idempotency_key=key, ) @app.post("/api/v1/agents", status_code=201) @@ -644,6 +1065,15 @@ async def create_agent(payload: CreateAgentRequest): runtime=payload.runtime, ) + @app.post("/api/v1/conversation-attachments", status_code=201) + async def upload_conversation_attachment(file: UploadFile = File(...)): + content = await file.read(studio.conversation_attachments.MAX_BYTES + 1) + return studio.conversation_attachments.store( + content, + filename=file.filename or "attachment", + media_type=file.content_type or "application/octet-stream", + ) + @app.post("/api/v1/assets/agent-avatars", status_code=201) async def upload_agent_avatar(request: Request): declared_size = request.headers.get("Content-Length") @@ -955,6 +1385,8 @@ async def submit_run_interaction( interaction_id, name=payload.name, data=payload.data, + expected_revision=payload.expected_revision, + idempotency_key=payload.idempotency_key, ) @app.get("/api/v1/runs/{run_id}/context") @@ -1312,9 +1744,7 @@ async def list_cloud_chat_sessions( ): """List Server-owned sessions for this local deployment receipt only.""" - return await studio.cloud.list_cloud_chat_sessions( - deployment_id, page=page, size=size - ) + return await studio.cloud.list_cloud_chat_sessions(deployment_id, page=page, size=size) @app.get("/api/v1/deployments/{deployment_id}/cloud-chat/models") async def list_cloud_chat_models(deployment_id: str): @@ -1331,9 +1761,7 @@ async def create_cloud_chat_session(deployment_id: str): return await studio.cloud.create_cloud_chat_session(deployment_id) - @app.get( - "/api/v1/deployments/{deployment_id}/cloud-chat/sessions/{session_id}/messages" - ) + @app.get("/api/v1/deployments/{deployment_id}/cloud-chat/sessions/{session_id}/messages") async def list_cloud_chat_messages( deployment_id: str, session_id: str, @@ -1347,9 +1775,7 @@ async def list_cloud_chat_messages( limit=limit, ) - @app.get( - "/api/v1/deployments/{deployment_id}/cloud-chat/sessions/{session_id}/events" - ) + @app.get("/api/v1/deployments/{deployment_id}/cloud-chat/sessions/{session_id}/events") async def list_cloud_chat_events( deployment_id: str, session_id: str, @@ -1363,9 +1789,7 @@ async def list_cloud_chat_events( limit=limit, ) - @app.get( - "/api/v1/deployments/{deployment_id}/cloud-chat/sessions/{session_id}/events/stream" - ) + @app.get("/api/v1/deployments/{deployment_id}/cloud-chat/sessions/{session_id}/events/stream") async def stream_cloud_chat_events( request: Request, deployment_id: str, @@ -1399,9 +1823,7 @@ async def event_stream() -> AsyncIterator[str]: if not isinstance(event, dict): continue event_payload = ( - event.get("payload") - if isinstance(event.get("payload"), dict) - else event + event.get("payload") if isinstance(event.get("payload"), dict) else event ) seq = int( event_payload.get("seq") @@ -1427,25 +1849,44 @@ async def event_stream() -> AsyncIterator[str]: if isinstance(event_payload.get("content"), dict) else {} ) - status = str( - event_payload.get("status") or content.get("status") or "" - ).lower() + status = str(event_payload.get("status") or content.get("status") or "").lower() event_is_terminal = event_type in { - "run.completed", "run.complete", "run.succeeded", - "run.failed", "run.cancelled", "run.expired", "run.error", + "run.completed", + "run.complete", + "run.succeeded", + "run.failed", + "run.cancelled", + "run.expired", + "run.error", } or ( event_type in {"run_status", "run.status"} - and status in { - "completed", "complete", "succeeded", "success", - "failed", "cancelled", "canceled", "expired", "error", "aborted", + and status + in { + "completed", + "complete", + "succeeded", + "success", + "failed", + "cancelled", + "canceled", + "expired", + "error", + "aborted", } ) terminal = terminal or event_is_terminal emitted = True + projected_event = dict(event) + conversation_item = _cloud_event_conversation_item( + event, + session_id=session_id, + ) + if conversation_item is not None: + projected_event["conversationItem"] = conversation_item yield ( (f"id: {seq}\n" if seq else "") + "event: session.event\n" - + f"data: {json.dumps(event, ensure_ascii=False)}\n\n" + + f"data: {json.dumps(projected_event, ensure_ascii=False)}\n\n" ) if terminal or payload.get("session_deleted"): break @@ -1465,9 +1906,7 @@ async def event_stream() -> AsyncIterator[str]: status_code=204, ) async def delete_cloud_chat_session(deployment_id: str, session_id: str): - await studio.cloud.delete_cloud_chat_session( - deployment_id, session_id=session_id - ) + await studio.cloud.delete_cloud_chat_session(deployment_id, session_id=session_id) return Response(status_code=204) @app.post( @@ -1594,5 +2033,6 @@ async def operation_events( runtime_model_catalog=runtime_model_catalog, ) register_memory_routes(app, studio) + register_plugin_routes(app, studio) return app diff --git a/ksadk/studio/api_catalog_routes.py b/ksadk/studio/api_catalog_routes.py index c094cd09..11d3b302 100644 --- a/ksadk/studio/api_catalog_routes.py +++ b/ksadk/studio/api_catalog_routes.py @@ -89,6 +89,11 @@ async def catalog_models(): async def catalog_runtimes(): return {"items": studio.runtime_catalog(), "nextCursor": None} + @app.get("/api/v1/agent-providers") + async def agent_providers(): + await studio.start() + return {"items": studio.agent_provider_catalog(), "nextCursor": None} + @app.get("/api/v1/catalog/resources/{resource_id}") async def get_catalog_resource(resource_id: str): return studio.catalog.get(resource_id) diff --git a/ksadk/studio/api_contracts.py b/ksadk/studio/api_contracts.py index 00dfeea3..f02b15be 100644 --- a/ksadk/studio/api_contracts.py +++ b/ksadk/studio/api_contracts.py @@ -6,8 +6,10 @@ from pydantic import Field, SecretStr, field_validator +from ksadk.conversations.contracts import ConversationInput from ksadk.evaluation import EvaluationConfig as PublicEvaluationConfig from ksadk.evaluation import TargetRef +from ksadk.scheduler.contracts import ScheduleSpec from ksadk.studio.contracts import ( AgentBindings, AgentSpec, @@ -78,7 +80,7 @@ class MessageInput(ContractModel): class QuickAuthoringRequest(ContractModel): name: str = Field(min_length=1, max_length=128) slug: str | None = Field(default=None, min_length=1, max_length=63) - runtime_type: Literal["codex", "adk", "langgraph"] + runtime_type: Literal["codex", "adk", "langgraph", "plugin"] template: Literal["blank", "research"] = "blank" description: str = Field(default="", max_length=1024) spec: AgentSpec | None = None @@ -135,9 +137,40 @@ class RunRequest(ContractModel): sandbox: str | None = None +class ConversationTurnRequest(ContractModel): + """A capability-gated local Studio turn. + + Unlike the compatibility ``RunRequest`` this request deliberately contains + only the provider-neutral ConversationInput. The server resolves the + active Build's ConversationSurface and rejects undeclared intent before it + reaches a framework-specific runtime request. + """ + + input: ConversationInput + sandbox: str | None = None + + +class AgentScheduleRequest(ContractModel): + """Browser-safe authoring input for one local ``ScheduledTask``. + + Stable Agent/Build/Kernel target fields are intentionally absent. Studio + resolves those from the active local Runtime binding and refuses creation + when it cannot prove that binding. + """ + + display_name: str = Field(min_length=1, max_length=128) + prompt: str = Field(min_length=1, max_length=32_768) + schedule: ScheduleSpec + enabled: bool = True + continuity: Literal["new_session", "continue_session"] = "new_session" + session_id: str | None = Field(default=None, min_length=1, max_length=256) + + class InteractionSubmitRequest(ContractModel): name: str = Field(min_length=1, max_length=64) data: dict[str, Any] = Field(default_factory=dict) + expected_revision: int = Field(alias="expectedRevision", ge=1) + idempotency_key: str = Field(alias="idempotencyKey", min_length=1, max_length=256) class CloudChatMessageRequest(ContractModel): diff --git a/ksadk/studio/api_plugin_routes.py b/ksadk/studio/api_plugin_routes.py new file mode 100644 index 00000000..5412182e --- /dev/null +++ b/ksadk/studio/api_plugin_routes.py @@ -0,0 +1,480 @@ +"""Studio lifecycle API for DSH plugins and the Codex compatibility bridge.""" + +from __future__ import annotations + +import asyncio +import hashlib +import os +from pathlib import Path +from typing import Any, Callable +from urllib.parse import urlencode, urlparse +from uuid import uuid4 + +from fastapi import FastAPI, Query, Response +from pydantic import BaseModel, ConfigDict, Field, field_validator + +from ksadk.plugins.bridges.codex import ( + CodexAppServerPluginBridge, + CodexBridgeHost, + CodexPluginApprovalRequired, + CodexPluginDetail, + CodexPluginInventory, + CodexPluginNotFoundError, +) +from ksadk.plugins.bridges.dsh import ( + DshBridgeHost, + DshHostUnavailableError, + DshPluginApprovalRequired, + DshPluginInventory, + DshPluginMutationError, + DshPluginNotFoundError, + DshProfilePluginBridge, +) +from ksadk.plugins.dsh_toolchain import DshToolchainError, DshToolchainManager +from ksadk.studio.errors import StudioError +from ksadk.studio.service import StudioService + + +class CodexPluginInstallRequest(BaseModel): + model_config = ConfigDict(extra="forbid", populate_by_name=True) + marketplace_name: str | None = Field( + default=None, alias="marketplaceName", min_length=1, max_length=256 + ) + accept_undeclared_permissions: bool = Field(default=False, alias="acceptUndeclaredPermissions") + + +class DshPluginInstallRequest(BaseModel): + model_config = ConfigDict(extra="forbid", populate_by_name=True) + source: str = Field(min_length=1, max_length=2048) + accept_host_permissions: bool = Field(default=False, alias="acceptHostPermissions") + + @field_validator("source") + @classmethod + def validate_source(cls, value: str) -> str: + normalized = value.strip() + if not normalized or any(character in value for character in ("\x00", "\r", "\n")): + raise ValueError("source must be one package, Git URL, or absolute local path") + return normalized + + +class DshPluginUpdateRequest(BaseModel): + model_config = ConfigDict(extra="forbid", populate_by_name=True) + accept_host_permissions: bool = Field(default=False, alias="acceptHostPermissions") + + +def _studio_codex_home(studio: StudioService) -> tuple[Path, str]: + configured = os.environ.get("KSADK_CODEX_HOME", "").strip() + if configured: + return Path(configured).expanduser(), "explicit" + return studio.workspace.root / ".agentkit" / "codex-home", "workspace-isolated" + + +def _studio_dsh_options(studio: StudioService) -> tuple[Path, str, tuple[str, ...] | None, str]: + configured_home = os.environ.get("KSADK_DSH_HOME", "").strip() + home = ( + Path(configured_home).expanduser() + if configured_home + else studio.workspace.root / ".agentkit" / "dsh-home" + ) + configured_bin = os.environ.get("KSADK_DSH_BIN", "").strip() + if configured_bin: + command = (str(Path(configured_bin).expanduser()),) + else: + try: + command = DshToolchainManager().require_command() + except (DshToolchainError, OSError, ValueError): + # Keep the bridge's established PATH lookup when the optional + # pinned toolchain has not been installed or is unusable. + command = None + profile = os.environ.get("KSADK_DSH_PROFILE", "").strip() or "studio" + return home, profile, command, "explicit" if configured_home else "workspace-isolated" + + +def _public_host(kind: str, host: Any | None, *, home_mode: str) -> dict[str, Any]: + codex = kind == "codex" + return { + "hostId": "codex-app-server" if codex else "deepseek-harness", + "available": host is not None, + "status": "available" if host is not None else "unavailable", + "version": host.version if host is not None else None, + "protocol": host.protocol + if host is not None + else ("codex.app-server/v1" if codex else "dsh.profile/v1"), + "homeMode": home_mode, + } + + +def _public_codex_source(source: BaseModel) -> dict[str, Any]: + raw = source.model_dump(by_alias=True, mode="json") + source_type = str(raw.get("type") or "remote") + payload: dict[str, Any] = {"type": source_type} + if source_type == "local": + payload["name"] = Path(str(raw.get("path") or "plugin")).name or "plugin" + elif source_type == "git": + payload["name"] = Path(urlparse(str(raw.get("url") or "")).path.rstrip("/")).name + for key in ("refName", "sha"): + if raw.get(key): + payload[key] = raw[key] + elif source_type == "npm": + payload.update(package=raw.get("package"), version=raw.get("version")) + return payload + + +def _public_codex_inventory( + inventory: CodexPluginInventory, *, host: CodexBridgeHost, home_mode: str +) -> dict[str, Any]: + return { + "ecosystem": "codex", + "integrationMode": "bridged", + "pluginId": inventory.plugin_id, + "resolvedVersion": inventory.version, + "distributionName": inventory.name, + "displayName": inventory.name, + "marketplaceName": inventory.marketplace_name, + "source": _public_codex_source(inventory.source), + "installed": inventory.installed, + "state": "enabled" if inventory.enabled else "disabled", + "enabled": inventory.enabled, + "availability": inventory.availability, + "permissions": [], + "permissionsDeclared": False, + "riskDisclosures": list(inventory.risk_disclosures), + "isolation": "host-managed", + "runtimeState": None, + "host": _public_host("codex", host, home_mode=home_mode), + } + + +def _public_codex_detail( + detail: CodexPluginDetail, *, host: CodexBridgeHost, home_mode: str +) -> dict[str, Any]: + return { + "item": _public_codex_inventory(detail.inventory, host=host, home_mode=home_mode), + "description": detail.description, + "capabilities": { + "skills": list(detail.skills), + "mcpServers": list(detail.mcp_servers), + "hooks": list(detail.hooks), + "apps": list(detail.apps), + "scheduledTasks": list(detail.scheduled_tasks), + }, + } + + +def _public_dsh_inventory( + inventory: DshPluginInventory, + *, + host: DshBridgeHost, + home_mode: str, + runtime_state: dict[str, Any] | None = None, +) -> dict[str, Any]: + client = inventory.client_bundle + return { + "ecosystem": "dsh", + "integrationMode": "bridged", + "pluginId": inventory.name, + "resolvedVersion": inventory.version, + "distributionName": inventory.name, + "displayName": inventory.display_name, + "description": inventory.description, + "profile": inventory.profile, + "source": {"type": "host-profile", "name": inventory.name}, + "installed": True, + "state": "enabled" if inventory.enabled else "disabled", + "enabled": inventory.enabled, + "permissions": [], + "permissionsDeclared": False, + "riskDisclosures": list(inventory.risk_disclosures), + "isolation": "host-managed", + "runtimeState": runtime_state, + "clientBundle": ( + { + "platform": client.platform, + "digest": client.digest, + "contentBytes": client.content_bytes, + "external": list(client.external), + "inject": list(client.inject), + "compatible": client.compatible, + "incompatibilityReason": client.incompatibility_reason or None, + } + if client is not None + else None + ), + "host": _public_host("dsh", host, home_mode=home_mode), + } + + +def _public_dsh_client_bundle(inventory: DshPluginInventory) -> dict[str, Any] | None: + client = inventory.client_bundle + if client is None: + return None + query = urlencode({"pluginName": inventory.name, "digest": client.digest}) + return { + "pluginId": inventory.name, + "enabled": inventory.enabled, + "compatible": client.compatible, + "digest": client.digest, + "contentBytes": client.content_bytes, + "external": list(client.external), + "inject": list(client.inject), + "incompatibilityReason": client.incompatibility_reason or None, + "url": f"/api/v1/plugin-ecosystems/dsh/client-bundle?{query}", + } + + +def _codex_error(error: Exception) -> StudioError: + if isinstance(error, CodexPluginNotFoundError): + return StudioError( + "CODEX_PLUGIN_NOT_FOUND", "Codex 插件不存在或来源不唯一", status_code=404 + ) + if isinstance(error, CodexPluginApprovalRequired): + return StudioError( + "CODEX_PLUGIN_RISK_CONFIRMATION_REQUIRED", + "安装 Codex 插件前必须确认宿主权限风险", + status_code=422, + ) + return StudioError("CODEX_PLUGIN_HOST_UNAVAILABLE", "Codex 插件宿主当前不可用", status_code=503) + + +def _dsh_error(error: Exception) -> StudioError: + if isinstance(error, DshPluginNotFoundError): + return StudioError("DSH_PLUGIN_NOT_FOUND", "DSH 插件未安装", status_code=404) + if isinstance(error, DshPluginApprovalRequired): + return StudioError( + "DSH_PLUGIN_RISK_CONFIRMATION_REQUIRED", + "安装或升级 DSH 插件前必须确认宿主权限风险", + status_code=422, + ) + if isinstance(error, DshPluginMutationError): + return StudioError( + "DSH_PLUGIN_MUTATION_FAILED", "DSH 插件操作失败,原 Profile 已保留", status_code=409 + ) + if isinstance(error, (DshHostUnavailableError, OSError)): + return StudioError("DSH_PLUGIN_HOST_UNAVAILABLE", "DSH 插件宿主当前不可用", status_code=503) + return StudioError("DSH_PLUGIN_OPERATION_FAILED", "DSH 插件操作失败", status_code=422) + + +def register_plugin_routes(app: FastAPI, studio: StudioService) -> None: + """Register only DSH Profile and Codex App Server lifecycle routes.""" + + codex_home, codex_mode = _studio_codex_home(studio) + dsh_home, dsh_profile, dsh_command, dsh_mode = _studio_dsh_options(studio) + + def public_dsh(item: DshPluginInventory, host: DshBridgeHost) -> dict[str, Any]: + return _public_dsh_inventory( + item, + host=host, + home_mode=dsh_mode, + runtime_state=studio.dsh_provider_runtime_state(item.name), + ) + + def call_dsh(operation: Callable[[DshProfilePluginBridge], Any]) -> Any: + try: + with DshProfilePluginBridge( + dsh_home=dsh_home, profile=dsh_profile, dsh_command=dsh_command + ) as bridge: + return bridge.host, operation(bridge) + except Exception as error: + raise _dsh_error(error) from None + + @app.get("/api/v1/plugin-ecosystems/codex/plugins") + async def list_codex_plugins( + installed_only: bool = Query(default=False), force_refetch: bool = Query(default=False) + ): + try: + async with CodexAppServerPluginBridge(codex_home=codex_home) as bridge: + items = await bridge.list_plugins(force_refetch=force_refetch) + visible = [item for item in items if item.installed or not installed_only] + return { + "ecosystem": "codex", + "integrationMode": "bridged", + "host": _public_host("codex", bridge.host, home_mode=codex_mode), + "items": [ + _public_codex_inventory(item, host=bridge.host, home_mode=codex_mode) + for item in visible + ], + } + except Exception: + return { + "ecosystem": "codex", + "integrationMode": "bridged", + "host": _public_host("codex", None, home_mode=codex_mode), + "items": [], + "error": { + "code": "CODEX_PLUGIN_HOST_UNAVAILABLE", + "message": "Codex 插件宿主当前不可用", + }, + } + + @app.get("/api/v1/plugin-ecosystems/codex/plugins/{plugin_id}") + async def get_codex_plugin( + plugin_id: str, marketplace_name: str | None = Query(default=None, max_length=256) + ): + try: + async with CodexAppServerPluginBridge(codex_home=codex_home) as bridge: + detail = await bridge.read_plugin(plugin_id, marketplace_name=marketplace_name) + return _public_codex_detail(detail, host=bridge.host, home_mode=codex_mode) + except Exception as error: + raise _codex_error(error) from None + + @app.post("/api/v1/plugin-ecosystems/codex/plugins/{plugin_id}:install") + async def install_codex_plugin(plugin_id: str, payload: CodexPluginInstallRequest): + if not payload.accept_undeclared_permissions: + raise _codex_error(CodexPluginApprovalRequired("approval required")) + try: + async with CodexAppServerPluginBridge(codex_home=codex_home) as bridge: + result = await bridge.install_plugin( + plugin_id, + marketplace_name=payload.marketplace_name, + accept_undeclared_permissions=True, + install_attempt_id=f"studio-{uuid4().hex}", + ) + return { + "item": _public_codex_inventory( + result.inventory, host=bridge.host, home_mode=codex_mode + ), + "authPolicy": result.auth_policy, + "appsNeedingAuth": list(result.apps_needing_auth), + } + except Exception as error: + raise _codex_error(error) from None + + @app.delete("/api/v1/plugin-ecosystems/codex/plugins/{plugin_id}", status_code=204) + async def uninstall_codex_plugin(plugin_id: str): + try: + async with CodexAppServerPluginBridge(codex_home=codex_home) as bridge: + await bridge.uninstall_plugin(plugin_id) + return Response(status_code=204) + except Exception as error: + raise _codex_error(error) from None + + @app.get("/api/v1/plugin-ecosystems/dsh/plugins") + async def list_dsh_plugins(): + try: + host, items = await asyncio.to_thread(call_dsh, lambda bridge: bridge.list_plugins()) + return { + "ecosystem": "dsh", + "integrationMode": "bridged", + "profile": dsh_profile, + "host": _public_host("dsh", host, home_mode=dsh_mode), + "items": [public_dsh(item, host) for item in items], + } + except StudioError as error: + return { + "ecosystem": "dsh", + "integrationMode": "bridged", + "profile": dsh_profile, + "host": _public_host("dsh", None, home_mode=dsh_mode), + "items": [], + "error": {"code": error.code, "message": error.message}, + } + + @app.get("/api/v1/plugin-ecosystems/dsh/profile") + async def get_dsh_profile_projection(): + host, result = await asyncio.to_thread( + call_dsh, lambda bridge: (bridge.project_profile(), bridge.list_plugins()) + ) + projection, items = result + bundles = [ + projected + for item in items + if item.enabled + for projected in [_public_dsh_client_bundle(item)] + if projected is not None + ] + graph_hash = hashlib.sha256(projection.config_digest.encode("utf-8")) + for bundle in bundles: + for value in (str(bundle["pluginId"]), str(bundle["digest"])): + encoded = value.encode("utf-8") + graph_hash.update(f"{len(encoded)}:".encode("ascii")) + graph_hash.update(encoded) + return { + "host": _public_host("dsh", host, home_mode=dsh_mode), + "profile": projection.model_dump(mode="json", by_alias=True), + "clientGraphDigest": f"sha256:{graph_hash.hexdigest()}", + "clientBundles": bundles, + } + + @app.get("/api/v1/plugin-ecosystems/dsh/client-bundle") + async def get_dsh_client_bundle( + plugin_name: str = Query(alias="pluginName", min_length=1, max_length=256), + digest: str = Query(pattern=r"^sha256:[0-9a-f]{64}$"), + ): + _, content = await asyncio.to_thread( + call_dsh, + lambda bridge: bridge.read_client_bundle(plugin_name, expected_digest=digest), + ) + return Response( + content=content, + media_type="application/javascript; charset=utf-8", + headers={ + "Cache-Control": "private, max-age=31536000, immutable", + "ETag": f'"{digest}"', + "X-Content-Type-Options": "nosniff", + }, + ) + + @app.post("/api/v1/plugin-ecosystems/dsh/plugins:install", status_code=201) + async def install_dsh_plugin(payload: DshPluginInstallRequest): + if not payload.accept_host_permissions: + raise _dsh_error(DshPluginApprovalRequired("approval required")) + host, item = await asyncio.to_thread( + call_dsh, + lambda bridge: bridge.install_plugin(payload.source, accept_host_permissions=True), + ) + await studio.refresh_dsh_provider_registrations() + return {"item": public_dsh(item, host)} + + async def mutate_dsh(plugin_name: str, operation: str): + def action(bridge: DshProfilePluginBridge): + if operation == "enable": + return bridge.set_enabled(plugin_name, enabled=True) + if operation == "disable": + return bridge.set_enabled(plugin_name, enabled=False) + if operation == "uninstall": + return bridge.uninstall_plugin(plugin_name) + return bridge.get_plugin(plugin_name) + + return await asyncio.to_thread(call_dsh, action) + + @app.post("/api/v1/plugin-ecosystems/dsh/plugins/{plugin_name:path}:enable") + async def enable_dsh_plugin(plugin_name: str): + host, item = await mutate_dsh(plugin_name, "enable") + await studio.refresh_dsh_provider_registrations() + return {"item": public_dsh(item, host)} + + @app.post("/api/v1/plugin-ecosystems/dsh/plugins/{plugin_name:path}:disable") + async def disable_dsh_plugin(plugin_name: str): + host, item = await mutate_dsh(plugin_name, "disable") + await studio.refresh_dsh_provider_registrations() + return {"item": public_dsh(item, host)} + + @app.post("/api/v1/plugin-ecosystems/dsh/plugins/{plugin_name:path}:update") + async def update_dsh_plugin(plugin_name: str, payload: DshPluginUpdateRequest): + if not payload.accept_host_permissions: + raise _dsh_error(DshPluginApprovalRequired("approval required")) + host, item = await asyncio.to_thread( + call_dsh, + lambda bridge: bridge.update_plugin(plugin_name, accept_host_permissions=True), + ) + await studio.refresh_dsh_provider_registrations() + return {"item": public_dsh(item, host)} + + @app.get("/api/v1/plugin-ecosystems/dsh/plugins/{plugin_name:path}") + async def get_dsh_plugin(plugin_name: str): + host, item = await mutate_dsh(plugin_name, "get") + return {"item": public_dsh(item, host)} + + @app.delete("/api/v1/plugin-ecosystems/dsh/plugins/{plugin_name:path}", status_code=204) + async def uninstall_dsh_plugin(plugin_name: str): + await mutate_dsh(plugin_name, "uninstall") + await studio.refresh_dsh_provider_registrations() + return Response(status_code=204) + + +__all__ = [ + "CodexPluginInstallRequest", + "DshPluginInstallRequest", + "DshPluginUpdateRequest", + "register_plugin_routes", +] diff --git a/ksadk/studio/attachment_store.py b/ksadk/studio/attachment_store.py new file mode 100644 index 00000000..25a331d1 --- /dev/null +++ b/ksadk/studio/attachment_store.py @@ -0,0 +1,187 @@ +"""Bounded, content-addressed local attachments for ConversationInput.""" + +from __future__ import annotations + +import hashlib +import json +import re +from dataclasses import dataclass +from pathlib import Path + +from ksadk.studio.errors import StudioError, not_found +from ksadk.studio.workspace import Workspace + +_ATTACHMENT_REF = re.compile(r"^attachment://sha256/(?P[0-9a-f]{64})$") +_SAFE_FILENAME = re.compile(r"[^A-Za-z0-9._-]+") +_TEXT_MEDIA_TYPES = { + "application/json", + "application/toml", + "application/xml", + "application/x-httpd-php", + "application/x-sh", + "application/x-yaml", +} +_TEXT_SUFFIXES = { + ".csv", + ".css", + ".go", + ".html", + ".ini", + ".java", + ".js", + ".json", + ".jsx", + ".log", + ".md", + ".py", + ".rs", + ".sh", + ".toml", + ".ts", + ".tsx", + ".txt", + ".xml", + ".yaml", + ".yml", +} + + +@dataclass(frozen=True) +class StoredConversationAttachment: + attachment_ref: str + path: Path + name: str + media_type: str + size: int + digest: str + + +class ConversationAttachmentStore: + """Persist only the small image/text inputs supported by local Studio.""" + + MAX_BYTES = 1_500_000 + + def __init__(self, workspace: Workspace) -> None: + self.workspace = workspace + self.root = self.workspace.resolve(".agentkit/assets/conversation-attachments") + self.root.mkdir(parents=True, exist_ok=True) + + def store(self, content: bytes, *, filename: str, media_type: str) -> dict[str, object]: + if not content: + raise StudioError( + "CONVERSATION_ATTACHMENT_EMPTY", + "会话附件不能为空", + status_code=422, + field="file", + ) + if len(content) > self.MAX_BYTES: + raise StudioError( + "CONVERSATION_ATTACHMENT_TOO_LARGE", + "会话附件不能超过 1.5 MiB", + status_code=413, + field="file", + details={"maxBytes": self.MAX_BYTES}, + ) + normalized_type = media_type.split(";", 1)[0].strip().lower() + safe_name = _SAFE_FILENAME.sub("-", Path(filename).name).strip(".-")[:160] + safe_name = safe_name or "attachment" + if not self._supported(content, filename=safe_name, media_type=normalized_type): + raise StudioError( + "CONVERSATION_ATTACHMENT_TYPE_UNSUPPORTED", + "会话附件仅支持图片或 UTF-8 文本、代码文件", + status_code=415, + field="file", + ) + + digest = hashlib.sha256(content).hexdigest() + content_path = self.root / f"{digest}.bin" + metadata_path = self.root / f"{digest}.json" + if not content_path.is_file(): + self.workspace.atomic_write_bytes(content_path, content) + if not metadata_path.is_file(): + self.workspace.atomic_write_text( + metadata_path, + json.dumps( + { + "digest": digest, + "name": safe_name, + "mediaType": normalized_type or "application/octet-stream", + "size": len(content), + }, + ensure_ascii=False, + sort_keys=True, + separators=(",", ":"), + ) + + "\n", + ) + # The reference identifies content, so its persisted metadata is the + # authority as well. Returning a second upload's conflicting name or + # media type would create a ref that immediately fails on resolution. + stored = self.resolve(f"attachment://sha256/{digest}") + return { + "attachmentRef": stored.attachment_ref, + "name": stored.name, + "mediaType": stored.media_type, + "size": stored.size, + "digest": stored.digest, + } + + def resolve(self, attachment_ref: str) -> StoredConversationAttachment: + match = _ATTACHMENT_REF.fullmatch(attachment_ref) + if match is None: + raise not_found("conversation-attachment", attachment_ref) + digest = match.group("digest") + content_path = self.root / f"{digest}.bin" + metadata_path = self.root / f"{digest}.json" + if not content_path.is_file() or not metadata_path.is_file(): + raise not_found("conversation-attachment", attachment_ref) + try: + metadata = json.loads(metadata_path.read_text(encoding="utf-8")) + content = content_path.read_bytes() + content_size = len(content) + except (OSError, json.JSONDecodeError) as exc: + raise StudioError( + "CONVERSATION_ATTACHMENT_CORRUPT", + "会话附件元数据损坏", + status_code=409, + details={"attachmentRef": attachment_ref}, + ) from exc + actual_digest = hashlib.sha256(content).hexdigest() + if ( + metadata.get("digest") != digest + or actual_digest != digest + or int(metadata.get("size") or -1) != content_size + ): + raise StudioError( + "CONVERSATION_ATTACHMENT_CORRUPT", + "会话附件完整性校验失败", + status_code=409, + details={"attachmentRef": attachment_ref}, + ) + return StoredConversationAttachment( + attachment_ref=attachment_ref, + path=content_path, + name=str(metadata.get("name") or "attachment"), + media_type=str(metadata.get("mediaType") or "application/octet-stream"), + size=content_size, + digest=digest, + ) + + @staticmethod + def _supported(content: bytes, *, filename: str, media_type: str) -> bool: + if media_type.startswith("image/"): + return True + if ( + media_type.startswith("text/") + or media_type in _TEXT_MEDIA_TYPES + or Path(filename).suffix.lower() in _TEXT_SUFFIXES + ): + try: + content.decode("utf-8") + except UnicodeDecodeError: + return False + return True + return False + + +__all__ = ["ConversationAttachmentStore", "StoredConversationAttachment"] diff --git a/ksadk/studio/authoring.py b/ksadk/studio/authoring.py index eb9f84ea..53895950 100644 --- a/ksadk/studio/authoring.py +++ b/ksadk/studio/authoring.py @@ -694,6 +694,16 @@ def _tree_digest(root: Path, *, exclude: set[str] | None = None) -> str: ignored.add(".git") entries: list[dict[str, Any]] = [] for path in sorted(root.rglob("*"), key=lambda item: item.as_posix()): + relative = path.relative_to(root).as_posix() + # Studio state and VCS internals may legitimately contain symlinks + # (for example managed Node dependencies). They are outside the + # imported project contract, so prune them before applying the + # source-tree symlink safety check. + if any( + relative == ignored_dir or relative.startswith(ignored_dir + "/") + for ignored_dir in (".agentkit", ".git") + ): + continue if path.is_symlink(): raise StudioError( "AUTHORING_SOURCE_UNSAFE", @@ -703,10 +713,6 @@ def _tree_digest(root: Path, *, exclude: set[str] | None = None) -> str: ) if not path.is_file() or path.name in ignored: continue - # 跳过 .agentkit / .git 目录下的文件 - relative = path.relative_to(root).as_posix() - if any(relative.startswith(ignored_dir + "/") for ignored_dir in (".agentkit", ".git")): - continue content = path.read_bytes() entries.append( { diff --git a/ksadk/studio/authoring_coordinator.py b/ksadk/studio/authoring_coordinator.py index 94129f29..3b0fe850 100644 --- a/ksadk/studio/authoring_coordinator.py +++ b/ksadk/studio/authoring_coordinator.py @@ -278,7 +278,6 @@ def create( resolved = (spec or default_agent_spec(template, description=description)).model_copy( deep=True ) - canonical_runtime = self.backend.runtime_ref(agent_id, runtime_type) proposed_runtime = resolved.runtime if proposed_runtime is not None and proposed_runtime.type != runtime_type: raise StudioError( @@ -291,7 +290,18 @@ def create( "specRuntimeType": proposed_runtime.type, }, ) - if proposed_runtime is not None: + if runtime_type == "plugin": + if proposed_runtime is None or proposed_runtime.provider_ref is None: + raise StudioError( + "AGENT_PROVIDER_REFERENCE_REQUIRED", + "外部 AgentProvider 必须选择一个已安装的精确版本", + status_code=422, + field="spec.runtime.providerRef", + ) + canonical_runtime = proposed_runtime.model_copy(deep=True) + else: + canonical_runtime = self.backend.runtime_ref(agent_id, runtime_type) + if proposed_runtime is not None and runtime_type != "plugin": if runtime_type == "codex" and proposed_runtime.version: canonical_runtime.version = proposed_runtime.version elif runtime_type in {"adk", "langgraph"}: diff --git a/ksadk/studio/builder.py b/ksadk/studio/builder.py index d8143080..071ac654 100644 --- a/ksadk/studio/builder.py +++ b/ksadk/studio/builder.py @@ -10,7 +10,14 @@ from pathlib import Path from uuid import uuid4 +from ksadk.plugins.bundle_security import assert_bundle_security +from ksadk.plugins.contracts import CompositionProfile, PluginLock, plugin_lock_digest +from ksadk.plugins.resolver import ResolvedComposition from ksadk.studio.capabilities import canonical_json, compute_bundle_digest, sha256_digest +from ksadk.studio.compatibility_report import ( + build_bundle_compatibility_report, + compatibility_facts_digest, +) from ksadk.studio.compiler import AgentCompiler from ksadk.studio.contracts import ( AgentDraft, @@ -24,6 +31,7 @@ hosted_kernel_requirement_digest, ) from ksadk.studio.repository import BuildRepository +from ksadk.studio.soul import render_soul_markdown from ksadk.studio.workspace import Workspace _ZIP_TIMESTAMP = (1980, 1, 1, 0, 0, 0) @@ -43,29 +51,46 @@ def __init__( self.compiler = compiler or AgentCompiler(workspace) self.repository = repository or BuildRepository(workspace) - def build(self, draft: AgentDraft) -> BuildRecord: + def build( + self, + draft: AgentDraft, + *, + composition: ResolvedComposition | None = None, + ) -> BuildRecord: LOGGER.info( "bundle build started: agent=%s revision=%s", draft.metadata.id, draft.metadata.revision, ) compiled = self.compiler.compile(draft) - # Bundle v2 always carries a lock. Phase 1 deliberately supports no - # user-selectable plugin factories yet, so the only valid lock is the - # explicit empty set. This makes admission deterministic without - # pulling the Phase 2 PluginHost into a deployed runtime. - plugin_lock = {"lockFormat": "agentkit.plugin-lock/v1", "plugins": []} - plugin_lock_digest = sha256_digest(canonical_json(plugin_lock)) + # Bundle v2 already carries a deterministic empty lock. P2-00A now + # validates that wire shape through PluginLock while deliberately not + # resolving or loading a PluginHost before P2-02/P2-03. + parsed_plugin_lock = composition.plugin_lock if composition else PluginLock() + plugin_lock = parsed_plugin_lock.model_dump( + by_alias=True, + exclude_none=True, + mode="json", + ) + plugin_lock_digest_value = plugin_lock_digest(parsed_plugin_lock) + composition_profile = composition.profile if composition else None + composition_profile_digest_value = composition.profile_digest if composition else None runtime_type, source_digest, runtime_lock = self._runtime_snapshot(draft, compiled) - resolved_digest = sha256_digest( - canonical_json( - { - "definitionDigest": compiled.resolved.resolved_digest, - "runtime": runtime_lock, - "sourceDigest": source_digest, - } - ) + compatibility_facts_digest_value = compatibility_facts_digest( + draft=draft, + composition=composition, + runtime_lock=runtime_lock, ) + resolved_digest_payload = { + "compatibilityFactsDigest": compatibility_facts_digest_value, + "definitionDigest": compiled.resolved.resolved_digest, + "runtime": runtime_lock, + "sourceDigest": source_digest, + } + if composition is not None: + resolved_digest_payload["compositionProfileDigest"] = composition_profile_digest_value + resolved_digest_payload["pluginLockDigest"] = plugin_lock_digest_value + resolved_digest = sha256_digest(canonical_json(resolved_digest_payload)) short_digest = resolved_digest.removeprefix("sha256:")[:20] build_id = f"build_{short_digest}" final_dir = self.workspace.resolve(Path("dist") / draft.metadata.id / build_id) @@ -98,13 +123,32 @@ def build(self, draft: AgentDraft) -> BuildRecord: runtime_lock=runtime_lock, resolved_digest=resolved_digest, plugin_lock=plugin_lock, + composition_profile=composition_profile, + composition_profile_digest_value=composition_profile_digest_value, hosted_kernel_requirement=hosted_kernel_requirement, hosted_kernel_requirement_digest_value=hosted_kernel_requirement_digest_value, + compatibility_facts_digest_value=compatibility_facts_digest_value, + ) + self._write_json( + bundle_root / "compatibility-report.json", + build_bundle_compatibility_report( + draft=draft, + composition=composition, + runtime_lock=runtime_lock, + resolved_digest=resolved_digest, + facts_digest=compatibility_facts_digest_value, + plugin_lock_digest=plugin_lock_digest_value, + composition_profile_digest=composition_profile_digest_value, + ), ) self._write_json( bundle_root / "hosted-kernel-requirements.json", hosted_kernel_requirement, ) + # Secrets are references at every declarative boundary. Scan the + # final materialized Bundle before its file manifest/digest are + # sealed, so an accidental literal cannot become a deployable ZIP. + assert_bundle_security(bundle_root) # The manifest is a complete content declaration. Write this # auxiliary checksum file first, then include it in the manifest # entries; otherwise a Server-side full-membership check correctly @@ -118,12 +162,21 @@ def build(self, draft: AgentDraft) -> BuildRecord: resolved_digest=resolved_digest, runtime_type=runtime_type, source_digest=source_digest, - plugin_lock_digest=plugin_lock_digest, + plugin_lock_digest=plugin_lock_digest_value, + composition_mode="composed" if composition is not None else "legacy", + composition_profile_digest=composition_profile_digest_value, hosted_kernel_requirement_digest=hosted_kernel_requirement_digest_value, files=files, ) manifest.bundle_digest = compute_bundle_digest(manifest) - self._write_json(bundle_root / "manifest.json", manifest.model_dump(by_alias=True)) + # Keep the on-disk manifest on the same ``exclude_none`` wire + # projection used by ``compute_bundle_digest``. New v2 archives + # always state whether they select legacy or composed execution; + # only historical archives may omit that discriminator. + self._write_json( + bundle_root / "manifest.json", + manifest.model_dump(by_alias=True, exclude_none=True), + ) archive = staging / "agent-bundle.zip" self._write_zip(bundle_root, archive) final_dir.parent.mkdir(parents=True, exist_ok=True) @@ -166,8 +219,11 @@ def _write_payload( runtime_lock: dict, resolved_digest: str, plugin_lock: dict, + composition_profile: CompositionProfile | None, + composition_profile_digest_value: str | None, hosted_kernel_requirement: dict, hosted_kernel_requirement_digest_value: str, + compatibility_facts_digest_value: str, ) -> None: definition_digest = compiled.resolved.resolved_digest resolved_payload = compiled.resolved.model_dump( @@ -186,14 +242,30 @@ def _write_payload( self._write_json(root / "agentkit.lock", dependency_lock) self._write_json(root / "runtime-lock.json", runtime_lock) self._write_json(root / "plugin-lock.json", plugin_lock) + if composition_profile is not None: + # A resolved profile is an immutable composition input, not a + # second editable Agent spec. It is only written once its + # deterministic lock has already been resolved by PluginRegistry. + self._write_json( + root / "composition-profile.json", + composition_profile.model_dump( + by_alias=True, + exclude_none=True, + mode="json", + ), + ) instructions = root / "instructions" instructions.mkdir() (instructions / "system.md").write_text( - draft.spec.instructions.system.rstrip() + "\n", encoding="utf-8" + compiled.resolved.instructions.system.rstrip() + "\n", encoding="utf-8" ) (instructions / "task.md").write_text( - draft.spec.instructions.task.rstrip() + "\n", encoding="utf-8" + compiled.resolved.instructions.task.rstrip() + "\n", encoding="utf-8" ) + if compiled.resolved.soul is not None: + (instructions / "soul.md").write_text( + render_soul_markdown(compiled.resolved.soul), encoding="utf-8" + ) for skill in compiled.resolved.capabilities.skills: source = self.workspace.resolve( Path("capabilities/skills") / skill["name"], @@ -238,25 +310,33 @@ def _write_payload( "components": components, }, ) - self._write_json( - root / "provenance.json", - { - "format": "agentkit.provenance/v1", - "agentId": draft.metadata.id, - "sourceRevision": draft.metadata.revision, - "sourceDigest": compiled.resolved.source_digest, - "definitionDigest": definition_digest, - "resolvedDigest": resolved_digest, - "compilerVersion": compiled.resolved.compiler_version, - "runtimeContract": "agentkit.runtime/v1", - "hostedKernel": { - "requirementsPath": "hosted-kernel-requirements.json", - "requirementDigest": hosted_kernel_requirement_digest_value, - "contractSet": hosted_kernel_requirement["kernelContract"]["set"], - "contractDigest": hosted_kernel_requirement["kernelContract"]["digest"], - }, + provenance = { + "format": "agentkit.provenance/v1", + "agentId": draft.metadata.id, + "sourceRevision": draft.metadata.revision, + "sourceDigest": compiled.resolved.source_digest, + "definitionDigest": definition_digest, + "resolvedDigest": resolved_digest, + "compilerVersion": compiled.resolved.compiler_version, + "runtimeContract": "agentkit.runtime/v1", + "compatibility": { + "reportPath": "compatibility-report.json", + "factsDigest": compatibility_facts_digest_value, }, - ) + "hostedKernel": { + "requirementsPath": "hosted-kernel-requirements.json", + "requirementDigest": hosted_kernel_requirement_digest_value, + "contractSet": hosted_kernel_requirement["kernelContract"]["set"], + "contractDigest": hosted_kernel_requirement["kernelContract"]["digest"], + }, + } + if composition_profile is not None: + provenance["composition"] = { + "profilePath": "composition-profile.json", + "profileDigest": composition_profile_digest_value, + "pluginLockDigest": sha256_digest(canonical_json(plugin_lock)), + } + self._write_json(root / "provenance.json", provenance) def _runtime_snapshot(self, draft: AgentDraft, compiled) -> tuple[str, str, dict]: runtime = draft.spec.runtime @@ -269,9 +349,7 @@ def _runtime_snapshot(self, draft: AgentDraft, compiled) -> tuple[str, str, dict content = path.read_bytes() relative = path.relative_to(source_root).as_posix() digest = f"sha256:{hashlib.sha256(content).hexdigest()}" - source_files.append( - {"path": relative, "sha256": digest, "size": len(content)} - ) + source_files.append({"path": relative, "sha256": digest, "size": len(content)}) source_digest = sha256_digest(canonical_json(source_files)) bound_models = [ item.model for item in self.compiler.catalog.resolve_models(draft.spec.bindings) @@ -290,9 +368,11 @@ def _runtime_snapshot(self, draft: AgentDraft, compiled) -> tuple[str, str, dict "model": compiled.resolved.model.model, "models": list(dict.fromkeys(bound_models)), } - return runtime_type, source_digest, { - key: value for key, value in lock.items() if value is not None - } + return ( + runtime_type, + source_digest, + {key: value for key, value in lock.items() if value is not None}, + ) def _copy_runtime_source(self, bundle_root: Path, draft: AgentDraft) -> None: runtime = draft.spec.runtime diff --git a/ksadk/studio/codex_agent_service.py b/ksadk/studio/codex_agent_service.py index 4030614b..4faa296b 100644 --- a/ksadk/studio/codex_agent_service.py +++ b/ksadk/studio/codex_agent_service.py @@ -377,9 +377,17 @@ def delete(self, agent_id: str, *, purge: bool = False) -> None: def detail(self, agent_id: str | None = None) -> dict: snapshot = self.studio.codex_manifests.load(agent_id) _mcp_bindings, unresolved_mcp = self._mcp_bindings(snapshot.manifest) + builds_view: list[dict] = [] + for item in self._builds(snapshot.manifest.name): + view = self.build_view(item) + try: + view["isCurrent"] = self.studio.codex_builder.is_current(item) + except Exception: + view["isCurrent"] = True + builds_view.append(view) return { "draft": self._project(snapshot), - "builds": [self.build_view(item) for item in self._builds(snapshot.manifest.name)], + "builds": builds_view, "validation": {"valid": True, "level": "build", "diagnostics": []}, "manifestSha256": snapshot.manifest_sha256, "sourcePath": self.studio.workspace.relative(snapshot.source_path), @@ -505,6 +513,7 @@ def _project( system=manifest.prompt, task=manifest.task_prompt or "", ) + draft.spec.soul = manifest.soul draft.spec.bindings.model_profile_id = bindings[0] draft.spec.bindings.model_profile_ids = bindings[1] draft.spec.bindings.skills = skill_bindings @@ -527,6 +536,7 @@ def _project( system=manifest.prompt, task=manifest.task_prompt or "", ), + soul=manifest.soul, bindings=AgentBindings( model_profile_id=default_profile, model_profile_ids=profiles, @@ -576,6 +586,7 @@ def _manifest( models=models if len(models) > 1 else None, prompt=prompt, task_prompt=task_prompt, + soul=spec.soul, skills=skill_ids or None, mcp_servers=mcp_servers or None, sandbox=spec.execution.sandbox, diff --git a/ksadk/studio/codex_builder.py b/ksadk/studio/codex_builder.py index 35b1606b..509cd709 100644 --- a/ksadk/studio/codex_builder.py +++ b/ksadk/studio/codex_builder.py @@ -51,6 +51,13 @@ class CodexBuildRecord(ContractModel): # New builds always persist a mapping (possibly empty), so run resolution # never consults mutable Catalog state after the build has been created. model_profiles: dict[str, dict[str, Any]] | None = None + # Resource ids and model names are different namespaces. Keep the exact + # Studio bindings separately so currentness checks never compare a model + # name (``glm-5.2``) with a Catalog id (``model:provider:glm-5-2:live``). + # ``None`` only allows older local records to be read and rejected as + # stale with an actionable rebuild; Phase 2 has not shipped yet, so the + # deployment path does not carry a legacy identity-migration branch. + model_profile_ids: list[str] | None = None created_at: datetime @@ -272,7 +279,12 @@ def build( allowed_models=snapshot.manifest.allowed_models, ignore_missing=True, ) - build_id = self._build_id(snapshot.manifest_sha256, model_profiles) + model_profile_ids = self._bound_model_profile_ids(snapshot.manifest.name) + build_id = self._build_id( + snapshot.manifest_sha256, + model_profiles, + model_profile_ids=model_profile_ids, + ) try: existing = self.repository.get(build_id) except StudioError as exc: @@ -337,6 +349,7 @@ def build( proxy_mode=current_proxy_mode(), runtime_lock=lock, model_profiles=model_profiles, + model_profile_ids=model_profile_ids, created_at=datetime.now(timezone.utc), ) return self.repository.save(record) @@ -347,29 +360,41 @@ def is_current(self, record: CodexBuildRecord) -> bool: return False if record.model_profiles is None: return True - try: - current_profiles = self._model_profile_snapshot( - snapshot.manifest.name, - allowed_models=snapshot.manifest.allowed_models, - ) - except StudioError as exc: - if exc.code == "RESOURCE_NOT_FOUND": - # A completed Build owns its connection snapshot. A later - # Catalog cleanup must not make that immutable Build - # undeployable; launch resolution reads the snapshot instead. - return True - raise + if record.model_profile_ids is None: + return False + draft = self.drafts.get(record.agent_name) if self.drafts is not None else None + if draft is None: + return not record.model_profiles + + bound_ids = set(self._bound_model_profile_ids(record.agent_name)) + if set(record.model_profile_ids) != bound_ids: + return False + current_profiles = self._model_profile_snapshot( + snapshot.manifest.name, + allowed_models=snapshot.manifest.allowed_models, + ignore_missing=True, + ) + # Provider-discovered Catalog entries are process-local. A restart may + # temporarily remove them, but the Build still owns an immutable, + # runnable connection snapshot and must remain deployable. + if bound_ids and not current_profiles: + return True return record.model_profiles == current_profiles @staticmethod def _build_id( manifest_sha256: str, model_profiles: dict[str, dict[str, Any]], + *, + model_profile_ids: list[str] | None = None, ) -> str: - if not model_profiles: + if not model_profiles and not model_profile_ids: return f"build_{manifest_sha256[:20]}" fingerprint = json.dumps( - model_profiles, + { + "profiles": model_profiles, + "resourceIds": sorted(model_profile_ids or []), + }, ensure_ascii=False, sort_keys=True, separators=(",", ":"), @@ -417,10 +442,24 @@ def _model_profile_snapshot( by_alias=True, exclude_defaults=True, exclude_none=True, + exclude={"metadata", "discovery"}, mode="json", ) return profiles + def _bound_model_profile_ids(self, agent_id: str) -> list[str]: + if self.drafts is None: + return [] + draft = self.drafts.get(agent_id) + if draft is None: + return [] + bindings = draft.spec.bindings + resource_ids = list(getattr(bindings, "model_profile_ids", []) or []) + default_id = getattr(bindings, "model_profile_id", None) + if not resource_ids and default_id: + resource_ids = [default_id] + return list(dict.fromkeys(resource_ids)) + @staticmethod def _runtime_lock(artifact_path: Path) -> dict: if artifact_path.suffix == ".zip": diff --git a/ksadk/studio/codex_manifest.py b/ksadk/studio/codex_manifest.py index 0eacbcb9..12cdb23c 100644 --- a/ksadk/studio/codex_manifest.py +++ b/ksadk/studio/codex_manifest.py @@ -13,8 +13,9 @@ from pydantic import BaseModel, ConfigDict, Field, ValidationError, model_validator from ksadk.builders.managed_runtime_builder import serialize_managed_runtime_manifest -from ksadk.studio.contracts import ContextSpec, MemorySpec +from ksadk.studio.contracts import ContextSpec, MemorySpec, SoulDocument from ksadk.studio.errors import StudioError, not_found +from ksadk.studio.soul import soul_digest as compute_soul_digest from ksadk.studio.workspace import Workspace @@ -43,6 +44,12 @@ class CodexAgentManifest(BaseModel): # Codex Runtime 最终仍消费合并后的 base_instructions;该字段用于在 AgentVersion / # Build 中保留任务契约来源,避免为了运行投影而破坏 PromptSection 审计。 task_prompt: str | None = Field(default=None, max_length=32768) + # Soul remains reviewed source in the ManagedRuntime manifest. Runtime + # launch deterministically compiles it before ``prompt``; these provenance + # fields prevent a Draft-only Soul from masquerading as deployed behavior. + soul: SoulDocument | None = None + soul_source: Literal["AgentSpec.soul"] | None = None + soul_digest: str | None = Field(default=None, pattern=r"^sha256:[0-9a-f]{64}$") skills: list[str] | None = None mcp_servers: list[dict[str, Any]] | None = None sandbox: str | None = None @@ -98,6 +105,17 @@ def validate_models(self) -> "CodexAgentManifest": mcp_seen.add(name) mcp_deduped.append(server) self.mcp_servers = mcp_deduped + if self.soul is None: + if self.soul_source is not None or self.soul_digest is not None: + raise ValueError("soul source/digest require a SoulDocument") + else: + expected_digest = compute_soul_digest(self.soul) + if self.soul_source not in {None, "AgentSpec.soul"}: + raise ValueError("soul_source must identify AgentSpec.soul") + if self.soul_digest not in {None, expected_digest}: + raise ValueError("soul_digest does not match the SoulDocument") + self.soul_source = "AgentSpec.soul" + self.soul_digest = expected_digest return self @property @@ -113,6 +131,8 @@ def normalized_manifest_bytes(manifest: CodexAgentManifest) -> bytes: payload["context"] = manifest.context.model_dump(mode="python", by_alias=True) if manifest.memory is not None: payload["memory"] = manifest.memory.model_dump(mode="python", by_alias=True) + if manifest.soul is not None: + payload["soul"] = manifest.soul.model_dump(mode="python", by_alias=True) return serialize_managed_runtime_manifest(payload) diff --git a/ksadk/studio/codex_run.py b/ksadk/studio/codex_run.py index af73e718..69a4739f 100644 --- a/ksadk/studio/codex_run.py +++ b/ksadk/studio/codex_run.py @@ -12,9 +12,10 @@ from ksadk.runtime import RuntimeLaunchContext from ksadk.studio.codex_builder import CodexBuildRepository from ksadk.studio.codex_manifest import CodexAgentManifest, CodexManifestRepository -from ksadk.studio.contracts import ModelSpec +from ksadk.studio.contracts import Instructions, ModelSpec from ksadk.studio.errors import StudioError from ksadk.studio.run_service import StudioRunSpec +from ksadk.studio.soul import compose_system_instruction from ksadk.studio.workspace import Workspace from ksadk.tools.gateway import normalize_tool_approval_mode @@ -87,18 +88,22 @@ def resolve( if runtime_env: launch_config["env"] = runtime_env agent_task = str(manifest.task_prompt or "").strip() + agent_system = compose_system_instruction( + Instructions(system=manifest.prompt), + manifest.soul, + ).system # PCM 策略从不可变 Manifest 读取(方案 §5.1:Build 锁定后 sidecar 修改不影响旧 Build) # manifest.context/memory 由 _manifest() 从 AgentSpec 写入,随 Build 进入 Artifact resolved_context = manifest.context resolved_memory = manifest.memory - base_instructions = manifest.prompt + base_instructions = agent_system if agent_task: - base_instructions = f"{manifest.prompt}\n\n{agent_task}" + base_instructions = f"{agent_system}\n\n{agent_task}" request_config: dict[str, Any] = { # Codex 原生只接收 base_instructions,因此运行前合并;PCM 证据仍使用下面 # 两个独立来源生成 agent_identity / agent_policy 的分段 hash。 "base_instructions": base_instructions, - "agent_system": manifest.prompt, + "agent_system": agent_system, "agent_task": agent_task, "cwd": str(project_dir), "skills": skills, @@ -136,6 +141,13 @@ def resolve( } if approval_profile: request_config["tool_approval_mode"] = approval_profile + if manifest.soul is not None: + request_config.update( + { + "soul_source": manifest.soul_source, + "soul_digest": manifest.soul_digest, + } + ) return StudioRunSpec( launch_context=RuntimeLaunchContext( runtime_type="codex", diff --git a/ksadk/studio/compatibility_report.py b/ksadk/studio/compatibility_report.py new file mode 100644 index 00000000..1b5f4895 --- /dev/null +++ b/ksadk/studio/compatibility_report.py @@ -0,0 +1,445 @@ +"""Deterministic build-time compatibility report for AgentBundle v2. + +The report contains only immutable, already-resolved facts. It deliberately +does not inspect environment variables, import plugin entrypoints, or claim +that a process is healthy. Runtime readiness remains an Activation concern. +""" + +from __future__ import annotations + +import hashlib +import json +from collections.abc import Callable, Mapping +from typing import Any + +from ksadk.plugins.contracts import LockedCapability, PluginLockEntry, PluginManifest +from ksadk.plugins.resolver import ( + PluginResolutionError, + ResolvedComposition, + version_satisfies, +) +from ksadk.studio.contracts import AgentDraft + +COMPATIBILITY_REPORT_FORMAT = "agentkit.compatibility-report/v1" +CURRENT_KERNEL_API_VERSION = "1.0.0" +CURRENT_RUNTIME_CONTRACT = "agentkit.runtime/v1" +SUPPORTED_RUNTIME_PROTOCOLS = (CURRENT_RUNTIME_CONTRACT,) + + +def compatibility_facts_digest( + *, + draft: AgentDraft, + composition: ResolvedComposition | None, + runtime_lock: Mapping[str, Any], +) -> str: + """Address every static input that can change a compatibility conclusion.""" + + payload: dict[str, Any] = { + "allowedPermissions": sorted(set(draft.spec.security.allowed_permissions)), + "runtime": { + "type": str(runtime_lock.get("type") or ""), + "version": str(runtime_lock.get("version") or ""), + }, + "composition": None, + } + if composition is not None: + payload["composition"] = { + "profileDigest": composition.profile_digest, + "pluginLockDigest": composition.plugin_lock_digest, + "manifests": [ + manifest.model_dump( + by_alias=True, + exclude_none=True, + mode="json", + ) + for manifest in sorted( + composition.manifests, + key=lambda item: (item.metadata.id, item.metadata.version), + ) + ], + } + canonical = json.dumps( + payload, + ensure_ascii=False, + sort_keys=True, + separators=(",", ":"), + ).encode("utf-8") + return f"sha256:{hashlib.sha256(canonical).hexdigest()}" + + +def build_bundle_compatibility_report( + *, + draft: AgentDraft, + composition: ResolvedComposition | None, + runtime_lock: Mapping[str, Any], + resolved_digest: str, + facts_digest: str, + plugin_lock_digest: str, + composition_profile_digest: str | None, +) -> dict[str, Any]: + """Project auditable static compatibility without reading host secrets.""" + + bundle = { + "bundleFormat": "agentkit.bundle/v2", + "compatibilityFactsDigest": facts_digest, + "resolvedDigest": resolved_digest, + "pluginLockDigest": plugin_lock_digest, + **( + {"compositionProfileDigest": composition_profile_digest} + if composition_profile_digest is not None + else {} + ), + } + allowed_permissions = sorted(set(draft.spec.security.allowed_permissions)) + if composition is None: + return _legacy_report( + bundle=bundle, + runtime_lock=runtime_lock, + allowed_permissions=allowed_permissions, + ) + + manifests = {manifest.metadata.id: manifest for manifest in composition.manifests} + locked = {entry.id: entry for entry in composition.plugin_lock.plugins} + blockers: list[dict[str, str]] = [] + + def block(code: str, subject: str, reason: str) -> None: + blockers.append({"code": code, "subject": subject, "reason": reason}) + + permission_items: list[dict[str, Any]] = [] + protocol_items: list[dict[str, Any]] = [] + kernel_items: list[dict[str, str]] = [] + capability_items: list[dict[str, str]] = [] + + for entry in composition.plugin_lock.plugins: + manifest = manifests.get(entry.id) + if manifest is None: + block( + "plugin_manifest_facts_missing", + entry.id, + "The exact manifest used to resolve this lock entry is unavailable.", + ) + permission_items.append( + { + "pluginId": entry.id, + "required": [], + "unapproved": [], + "status": "blocked", + } + ) + protocol_items.append( + { + "pluginId": entry.id, + "required": [], + "supported": list(SUPPORTED_RUNTIME_PROTOCOLS), + "status": "blocked", + } + ) + kernel_items.append( + { + "pluginId": entry.id, + "required": "unknown", + "resolved": CURRENT_KERNEL_API_VERSION, + "status": "blocked", + } + ) + for capability in entry.provides: + capability_items.append( + _capability_item(entry, capability, mode="unknown", status="blocked") + ) + continue + + _append_manifest_conclusions( + entry=entry, + manifest=manifest, + allowed_permissions=allowed_permissions, + permission_items=permission_items, + protocol_items=protocol_items, + kernel_items=kernel_items, + capability_items=capability_items, + block=block, + ) + + provider_ref = composition.profile.agent_provider.ref + provider_id, requested_version = _plugin_ref_parts(provider_ref) + provider_entry = locked.get(provider_id) + provider_manifest = manifests.get(provider_id) + if provider_entry is None: + block( + "agent_provider_lock_missing", + provider_id, + "The CompositionProfile AgentProvider has no exact PluginLock entry.", + ) + elif provider_entry.version != requested_version: + block( + "agent_provider_version_mismatch", + provider_id, + ( + f"Profile requests {requested_version}, but the lock resolves " + f"{provider_entry.version}." + ), + ) + + blockers.sort(key=lambda item: (item["code"], item["subject"], item["reason"])) + blocked_subjects = {item["subject"] for item in blockers} + overall = "blocked" if blockers else "compatible" + provider_status = "blocked" if provider_id in blocked_subjects else "compatible" + + return { + "format": COMPATIBILITY_REPORT_FORMAT, + "scope": "build-time-static", + "overallStatus": overall, + "bundle": bundle, + "host": { + "kind": _host_kind(provider_manifest), + "kernelApiVersion": CURRENT_KERNEL_API_VERSION, + "runtimeContract": CURRENT_RUNTIME_CONTRACT, + "readiness": "notEvaluated", + "status": overall, + }, + "provider": _provider_conclusion( + provider_ref=provider_ref, + provider_id=provider_id, + requested_version=requested_version, + entry=provider_entry, + manifest=provider_manifest, + status=provider_status, + ), + "kernelApi": sorted(kernel_items, key=lambda item: item["pluginId"]), + "protocols": sorted(protocol_items, key=lambda item: item["pluginId"]), + "permissions": { + "allowed": allowed_permissions, + "plugins": sorted(permission_items, key=lambda item: item["pluginId"]), + "status": ( + "blocked" + if any(item["status"] == "blocked" for item in permission_items) + else "compatible" + ), + }, + "capabilities": sorted( + capability_items, + key=lambda item: (item["definition"], item["slot"], item["owner"]), + ), + "blockingReasons": blockers, + } + + +def _legacy_report( + *, + bundle: dict[str, Any], + runtime_lock: Mapping[str, Any], + allowed_permissions: list[str], +) -> dict[str, Any]: + runtime_type = str(runtime_lock.get("type") or "") + version = str(runtime_lock.get("version") or "") + return { + "format": COMPATIBILITY_REPORT_FORMAT, + "scope": "build-time-static", + "overallStatus": "compatible", + "bundle": bundle, + "host": { + "kind": "legacy-runtime", + "kernelApiVersion": CURRENT_KERNEL_API_VERSION, + "runtimeContract": CURRENT_RUNTIME_CONTRACT, + "readiness": "notEvaluated", + "status": "compatible", + }, + "provider": { + "ref": None, + "id": runtime_type or "builtin.legacy", + "hostRuntime": runtime_type or "unknown", + "isolation": "legacy", + "source": "builtin", + "digest": None, + "version": { + "requested": version or None, + "resolved": version or None, + "status": "compatible" if version else "unknown", + }, + "status": "compatible", + }, + "kernelApi": [], + "protocols": [ + { + "pluginId": runtime_type or "builtin.legacy", + "required": [CURRENT_RUNTIME_CONTRACT], + "supported": list(SUPPORTED_RUNTIME_PROTOCOLS), + "status": "compatible", + } + ], + "permissions": { + "allowed": allowed_permissions, + "plugins": [], + "status": "compatible", + }, + "capabilities": [], + "blockingReasons": [], + } + + +def _append_manifest_conclusions( + *, + entry: PluginLockEntry, + manifest: PluginManifest, + allowed_permissions: list[str], + permission_items: list[dict[str, Any]], + protocol_items: list[dict[str, Any]], + kernel_items: list[dict[str, str]], + capability_items: list[dict[str, str]], + block: Callable[[str, str, str], None], +) -> None: + if ( + manifest.metadata.id != entry.id + or manifest.metadata.version != entry.version + or manifest.spec.provenance.digest != entry.digest + ): + block( + "plugin_manifest_lock_mismatch", + entry.id, + "Resolved manifest identity or digest does not match the PluginLock entry.", + ) + + required_permissions = sorted(set(manifest.spec.permissions)) + unapproved = sorted(set(required_permissions) - set(allowed_permissions)) + permission_status = "blocked" if unapproved else "compatible" + permission_items.append( + { + "pluginId": entry.id, + "required": required_permissions, + "unapproved": unapproved, + "status": permission_status, + } + ) + if unapproved: + block( + "plugin_permission_unapproved", + entry.id, + "Unapproved permissions: " + ", ".join(unapproved), + ) + + protocols = sorted(set(manifest.spec.compatibility.runtime_protocols)) + protocol_status = ( + "compatible" if not protocols or CURRENT_RUNTIME_CONTRACT in protocols else "blocked" + ) + protocol_items.append( + { + "pluginId": entry.id, + "required": protocols, + "supported": list(SUPPORTED_RUNTIME_PROTOCOLS), + "status": protocol_status, + } + ) + if protocol_status == "blocked": + block( + "runtime_protocol_incompatible", + entry.id, + f"Plugin accepts {', '.join(protocols)}, host provides {CURRENT_RUNTIME_CONTRACT}.", + ) + + kernel_constraint = manifest.spec.compatibility.kernel_api + try: + kernel_compatible = version_satisfies( + CURRENT_KERNEL_API_VERSION, + kernel_constraint, + ) + except PluginResolutionError: + kernel_compatible = False + kernel_items.append( + { + "pluginId": entry.id, + "required": kernel_constraint, + "resolved": CURRENT_KERNEL_API_VERSION, + "status": "compatible" if kernel_compatible else "blocked", + } + ) + if not kernel_compatible: + block( + "kernel_api_incompatible", + entry.id, + f"Plugin requires {kernel_constraint}, host provides {CURRENT_KERNEL_API_VERSION}.", + ) + + offers = {(offer.definition, offer.slot): offer for offer in manifest.spec.provides} + for capability in entry.provides: + offer = offers.get((capability.definition, capability.slot)) + status = "compatible" if capability.owner == entry.id and offer is not None else "blocked" + capability_items.append( + _capability_item( + entry, + capability, + mode=offer.mode if offer is not None else "unknown", + status=status, + ) + ) + if status == "blocked": + block( + "capability_lock_mismatch", + entry.id, + f"Locked capability {capability.definition} at {capability.slot} " + "does not match the resolved manifest owner.", + ) + + +def _capability_item( + entry: PluginLockEntry, + capability: LockedCapability, + *, + mode: str, + status: str, +) -> dict[str, str]: + return { + "definition": capability.definition, + "slot": capability.slot, + "owner": capability.owner, + "version": entry.version, + "mode": mode, + "status": status, + } + + +def _provider_conclusion( + *, + provider_ref: str, + provider_id: str, + requested_version: str, + entry: PluginLockEntry | None, + manifest: PluginManifest | None, + status: str, +) -> dict[str, Any]: + return { + "ref": provider_ref, + "id": provider_id, + "hostRuntime": manifest.spec.runtime if manifest is not None else "unknown", + "isolation": manifest.spec.isolation if manifest is not None else "unknown", + "source": entry.source if entry is not None else "unknown", + "digest": entry.digest if entry is not None else None, + "version": { + "requested": requested_version, + "resolved": entry.version if entry is not None else None, + "status": ( + "compatible" + if entry is not None and entry.version == requested_version + else "blocked" + ), + }, + "status": status, + } + + +def _host_kind(provider: PluginManifest | None) -> str: + if provider is not None and provider.spec.domain == "runtime-native": + return "runtime-native" + return "composition-host" + + +def _plugin_ref_parts(value: str) -> tuple[str, str]: + plugin_id, version = value.removeprefix("plugin://").rsplit("@", 1) + return plugin_id, version + + +__all__ = [ + "COMPATIBILITY_REPORT_FORMAT", + "CURRENT_KERNEL_API_VERSION", + "CURRENT_RUNTIME_CONTRACT", + "build_bundle_compatibility_report", + "compatibility_facts_digest", +] diff --git a/ksadk/studio/compiler.py b/ksadk/studio/compiler.py index cf48f87f..c88afac1 100644 --- a/ksadk/studio/compiler.py +++ b/ksadk/studio/compiler.py @@ -20,6 +20,7 @@ ) from ksadk.studio.errors import StudioError from ksadk.studio.resource_catalog import LocalResourceCatalog +from ksadk.studio.soul import compose_system_instruction from ksadk.studio.validator import AgentValidator from ksadk.studio.workspace import Workspace @@ -72,7 +73,11 @@ def compile(self, draft: AgentDraft) -> CompileResult: resolved = ResolvedAgentSpec( agent_id=draft.metadata.id, source_revision=draft.metadata.revision, - instructions=materialized.spec.instructions, + instructions=compose_system_instruction( + materialized.spec.instructions, + materialized.spec.soul, + ), + soul=materialized.spec.soul, model=self.resolver.resolve_model(materialized.spec.model), capabilities=ResolvedCapabilities( skills=skills, diff --git a/ksadk/studio/contracts.py b/ksadk/studio/contracts.py index bf21529c..5e56dba8 100644 --- a/ksadk/studio/contracts.py +++ b/ksadk/studio/contracts.py @@ -43,6 +43,28 @@ class Instructions(ContractModel): task: str = Field(default="", max_length=32768) +class SoulDocument(ContractModel): + """Reviewed identity/boundary source that compiles ahead of task prompts. + + This is deliberately an immutable revision input, not a mutable memory + file. Runtime may read the compiled snapshot but cannot promote a new + SoulDocument from a conversation. + """ + + schema_version: Literal["agentkit.soul/v1"] = "agentkit.soul/v1" + identity: str = Field(min_length=1, max_length=4096) + principles: list[str] = Field(default_factory=list, max_length=64) + boundaries: list[str] = Field(default_factory=list, max_length=64) + tone: str | None = Field(default=None, max_length=1024) + + @field_validator("principles", "boundaries") + @classmethod + def validate_nonempty_items(cls, value: list[str]) -> list[str]: + if any(not item.strip() for item in value): + raise ValueError("soul principles and boundaries must not contain empty items") + return value + + class ModelParameters(ContractModel): # 三者 None=未配置:请求 payload 一律不携带该字段,使用服务端默认, # 规避各模型族对 temperature/max_tokens 的硬约束(如 kimi 只接受默认温度)。 @@ -292,6 +314,13 @@ class MemoryWriteSpec(ContractModel): flush_before_compaction: bool = True +MemoryScope = Literal["tenant", "workspace", "agent", "user"] + + +def _default_memory_scopes() -> list[MemoryScope]: + return ["workspace", "agent", "user"] + + class MemorySpec(ContractModel): """AgentVersion 级 Memory 策略(方案 §5.1 / §10)。Build 只存 providerRef,不存凭证。""" @@ -299,9 +328,7 @@ class MemorySpec(ContractModel): provider_ref: str = Field(default="local-default", max_length=128) recall: MemoryRecallSpec = Field(default_factory=MemoryRecallSpec) write: MemoryWriteSpec = Field(default_factory=MemoryWriteSpec) - scopes: list[Literal["tenant", "workspace", "agent", "user"]] = Field( - default_factory=lambda: ["workspace", "agent", "user"] - ) + scopes: list[MemoryScope] = Field(default_factory=_default_memory_scopes) class NetworkPolicy(ContractModel): @@ -329,12 +356,17 @@ class RuntimeRef(ContractModel): project entrypoint that is snapshotted by its Build. """ - type: Literal["codex", "adk", "langgraph"] + type: Literal["codex", "adk", "langgraph", "harness", "plugin"] project_path: str | None = Field(default=None, min_length=1, max_length=1024) entry_point: str | None = Field(default=None, min_length=1, max_length=1024) agent_variable: str = Field(default="root_agent", min_length=1, max_length=256) version: str | None = Field(default=None, min_length=1, max_length=64) detection: Literal["declared", "auto"] = "declared" + provider_ref: str | None = Field(default=None, min_length=12, max_length=256) + provider_config: dict[str, Any] = Field( + default_factory=dict, + exclude_if=lambda value: not value, + ) @field_validator("project_path", "entry_point") @classmethod @@ -352,8 +384,32 @@ def validate_relative_path(cls, value: str | None) -> str | None: raise ValueError("Runtime 路径必须是工作区内的相对路径") return normalized + @field_validator("provider_ref") + @classmethod + def validate_provider_ref(cls, value: str | None) -> str | None: + if value is None: + return None + if not re.fullmatch( + r"plugin://[a-z0-9]+(?:[._-][a-z0-9]+)*@" + r"\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?", + value, + ): + raise ValueError("Provider 引用必须固定为 plugin://@") + return value + + @field_validator("provider_config") + @classmethod + def validate_provider_config(cls, value: dict[str, Any]) -> dict[str, Any]: + _reject_clear_runtime_secrets(value) + return value + @model_validator(mode="after") def validate_framework_source(self) -> "RuntimeRef": + if self.type == "plugin": + if not self.provider_ref: + raise ValueError("plugin Runtime 必须配置 providerRef") + elif self.provider_ref is not None or self.provider_config: + raise ValueError("只有 plugin Runtime 可以配置 providerRef/providerConfig") if self.type in {"adk", "langgraph"}: if not self.project_path: raise ValueError(f"{self.type} Runtime 必须配置 projectPath") @@ -362,10 +418,39 @@ def validate_framework_source(self) -> "RuntimeRef": return self +_RUNTIME_SECRET_KEY = re.compile( + r"(?:secret|password|token|api[_-]?key)", re.IGNORECASE +) +_RUNTIME_SECRET_REF_PREFIXES = ( + "secret://", + "env://", + "credential://", + "vault://", +) + + +def _reject_clear_runtime_secrets(value: Any, *, path: str = "providerConfig") -> None: + """Provider config is revision data: it may only retain secret references.""" + + if isinstance(value, dict): + for key, child in value.items(): + child_path = f"{path}.{key}" + if _RUNTIME_SECRET_KEY.search(str(key)) and child is not None: + if not isinstance(child, str) or not child.startswith( + _RUNTIME_SECRET_REF_PREFIXES + ): + raise ValueError(f"{child_path} 必须保存 Secret 引用,不能保存明文") + _reject_clear_runtime_secrets(child, path=child_path) + elif isinstance(value, list): + for index, child in enumerate(value): + _reject_clear_runtime_secrets(child, path=f"{path}[{index}]") + + class AgentSpec(ContractModel): description: str = Field(default="", max_length=1024) runtime: RuntimeRef | None = None instructions: Instructions = Field(default_factory=Instructions) + soul: SoulDocument | None = None model: ModelSpec | None = None capabilities: CapabilitiesSpec = Field(default_factory=CapabilitiesSpec) bindings: AgentBindings = Field(default_factory=AgentBindings) @@ -498,6 +583,7 @@ class ResolvedAgentSpec(ContractModel): source_revision: int compiler_version: str = "1" instructions: Instructions + soul: SoulDocument | None = None model: ResolvedModel capabilities: ResolvedCapabilities execution: ExecutionSpec @@ -545,11 +631,44 @@ class BundleManifest(ContractModel): source_digest: str = "" runtime_contract: Literal["agentkit.runtime/v1"] = "agentkit.runtime/v1" plugin_lock_digest: str = "" + # A v0.8.2 bundle already used the v2 envelope without a composition. + # Keep that wire shape readable as the explicit legacy execution profile; + # newly built bundles write ``composition_mode`` so consumers never need + # to infer whether PluginHost admission is required from missing files. + composition_mode: Literal["legacy", "composed"] | None = None + composition_profile_digest: str | None = None hosted_kernel_requirement_digest: str = "" files: list[FileEntry] created_at: str = "1970-01-01T00:00:00Z" bundle_digest: str = "" + @model_validator(mode="after") + def validate_composition_mode(self) -> "BundleManifest": + if self.composition_mode == "composed" and not self.composition_profile_digest: + raise ValueError("composed Bundle v2 requires compositionProfileDigest") + if self.composition_mode == "legacy" and self.composition_profile_digest: + raise ValueError("legacy Bundle v2 cannot declare compositionProfileDigest") + return self + + @property + def execution_profile(self) -> Literal["legacy", "composed"]: + """Normalize historical v2 manifests without rewriting their bytes. + + ``compositionMode`` was added after the v0.8.2 envelope. Its absence + remains a backward-compatible projection: an embedded composition + digest is composed; its absence selects the established runtime path. + """ + + if self.composition_mode is not None: + return self.composition_mode + return "composed" if self.composition_profile_digest else "legacy" + + +# ``BundleManifest`` is the existing, installed source type. The explicit +# name documents that its ``agentkit.bundle/v2`` branch is the Phase 2 +# AgentBundleManifest/v2 contract; it is an alias, not a parallel manifest. +AgentBundleManifest = BundleManifest + class BuildRecord(ContractModel): id: str diff --git a/ksadk/studio/dsh_provider_registration.py b/ksadk/studio/dsh_provider_registration.py new file mode 100644 index 00000000..981ce007 --- /dev/null +++ b/ksadk/studio/dsh_provider_registration.py @@ -0,0 +1,768 @@ +"""Managed DSH AgentProvider registration for the normal Studio lifecycle. + +Studio treats the selected DSH Profile as the installed/enabled source of +truth, then starts each AgentProvider contribution in its own fixed-command +sidecar. Only descriptor-fenced, ready registrations enter Studio's selector; +ordinary client-only DSH bundles remain visible to plugin management without +being mistaken for AgentProviders. +""" + +from __future__ import annotations + +import asyncio +import json +import os +import shutil +import tempfile +from collections.abc import Callable, Mapping, Sequence +from dataclasses import dataclass +from pathlib import Path +from typing import Any, Literal + +from pydantic import BaseModel, ConfigDict + +from ksadk.plugins.bridges.dsh import ( + DshPluginInventory, + DshProfilePluginBridge, + DshProfileProjection, +) +from ksadk.plugins.contracts import CompositionProfile, PluginManifest +from ksadk.plugins.dsh_toolchain import DshToolchainManager +from ksadk.plugins.host import ManagedPlugin, PluginHostError +from ksadk.plugins.providers.codex_dsh import ( + SHIPPED_CODEX_DSH_PACKAGE, + SHIPPED_CODEX_PROVIDER_VERSION, + KsADKCodexDshBridgeFactory, + shipped_codex_dsh_bundle, + shipped_codex_dsh_host_command, +) +from ksadk.plugins.providers.dsh import ( + DshAgentProviderFactory, + DshAgentProviderHost, + DshAgentProviderRegistration, +) +from ksadk.plugins.providers.harness_dsh import ( + SHIPPED_HARNESS_DSH_PACKAGE, + SHIPPED_HARNESS_PROVIDER_VERSION, + KsADKHarnessDshBridgeFactory, + shipped_harness_dsh_bundle, + shipped_harness_dsh_host_command, +) + +_PROFILE_FILES = ("package.json", "cordis.patch.yml", "index.mjs") +_MAX_PACKAGE_JSON_BYTES = 2 * 1024 * 1024 +_DSH_PLATFORM_BUNDLES = frozenset({"@deepseek-ai/dsh-base"}) +_SHIPPED_PROVIDER_PACKAGES = frozenset({SHIPPED_CODEX_DSH_PACKAGE, SHIPPED_HARNESS_DSH_PACKAGE}) + + +class StudioDshProviderRegistrationError(RuntimeError): + """A selected DSH Profile could not produce trustworthy registrations.""" + + def __init__(self, code: str, message: str) -> None: + super().__init__(message) + self.code = code + + +class StudioDshProviderStatus(BaseModel): + """Lifecycle evidence for one installed DSH Profile package.""" + + model_config = ConfigDict(extra="forbid", frozen=True) + + package_name: str + package_version: str + display_name: str = "" + state: Literal["installed", "enabled", "ready", "bound", "failed", "disposed"] + provider_ref: str | None = None + error_code: str | None = None + + +class StudioDshProviderInventory(BaseModel): + model_config = ConfigDict(extra="forbid", frozen=True) + + state: Literal["stopped", "starting", "ready", "bound", "failed", "disposed"] + profile: str + profile_digest: str | None = None + providers: tuple[str, ...] = () + packages: tuple[StudioDshProviderStatus, ...] = () + error_code: str | None = None + + +@dataclass(frozen=True) +class StudioDshProviderRegistrations: + manifests: Mapping[str, PluginManifest] + factories: Mapping[str, Any] + inventory: StudioDshProviderInventory + + +@dataclass(frozen=True) +class _ProfileSnapshot: + projection: DshProfileProjection + packages: tuple[DshPluginInventory, ...] + + +BridgeFactory = Callable[..., DshProfilePluginBridge] +HostFactory = Callable[..., DshAgentProviderHost] + + +class _FreshDshAgentProviderFactory: + """Give every PluginHost graph an independently owned provider process.""" + + def __init__( + self, + command: Sequence[str], + *, + projection: DshProfileProjection, + cwd: Path, + environment: Mapping[str, str], + registration: DshAgentProviderRegistration, + host_factory: HostFactory, + ) -> None: + self._command = tuple(command) + self._projection = projection + self._cwd = cwd + self._environment = dict(environment) + self._registration = registration + self._host_factory = host_factory + + async def stage( + self, + manifest: PluginManifest, + *, + profile: CompositionProfile, + services: Mapping[str, Any], + ) -> ManagedPlugin: + host = self._host_factory( + self._command, + projection=self._projection, + cwd=self._cwd, + environment=self._environment, + ) + try: + current = await host.registration() + if current != self._registration: + raise PluginHostError( + "dsh_provider_registration_changed", + "DSH provider registration changed after Studio discovery", + ) + return await DshAgentProviderFactory(host, current).stage( + manifest, + profile=profile, + services=services, + ) + except BaseException: + await host.dispose() + raise + + +class StudioDshProviderRegistrationManager: + """Own Profile discovery, provider preflight, registration, and disposal.""" + + def __init__( + self, + workspace: Path, + *, + dsh_home: Path, + profile: str = "studio", + dsh_command: Sequence[str] | None = None, + node_command: Sequence[str] | None = None, + cordis_module: Path | None = None, + bridge_factory: BridgeFactory = DshProfilePluginBridge, + host_factory: HostFactory = DshAgentProviderHost, + ) -> None: + self._workspace = workspace.resolve() + self._dsh_home = dsh_home.expanduser().resolve() + self._profile = profile + self._dsh_command = tuple(dsh_command) if dsh_command is not None else None + self._node_command = tuple(node_command) if node_command is not None else None + self._cordis_module = cordis_module.resolve() if cordis_module is not None else None + self._bridge_factory = bridge_factory + self._host_factory = host_factory + self._lock = asyncio.Lock() + self._hosts: dict[str, DshAgentProviderHost] = {} + self._registrations: StudioDshProviderRegistrations | None = None + self._inventory = StudioDshProviderInventory(state="stopped", profile=profile) + + @classmethod + def discover(cls, workspace: Path) -> "StudioDshProviderRegistrationManager | None": + """Discover an initialized managed Profile without downloading tools.""" + + configured_home = os.environ.get("KSADK_DSH_HOME", "").strip() + home = ( + Path(configured_home).expanduser() + if configured_home + else workspace / ".agentkit" / "dsh-home" + ) + profile = os.environ.get("KSADK_DSH_PROFILE", "").strip() or "studio" + configured_bin = os.environ.get("KSADK_DSH_BIN", "").strip() + manifest = home / "profiles" / profile / "package.json" + if not manifest.is_file(): + return None + try: + payload = json.loads(manifest.read_text(encoding="utf-8")) + except (OSError, UnicodeError, json.JSONDecodeError): + return None + dsh = payload.get("dsh") if isinstance(payload, dict) else None + profile_payload = dsh.get("profile") if isinstance(dsh, dict) else None + bundles = profile_payload.get("bundles") if isinstance(profile_payload, dict) else None + if not isinstance(bundles, list) or any(not isinstance(item, str) for item in bundles): + return None + command = (str(Path(configured_bin).expanduser()),) if configured_bin else None + return cls(workspace, dsh_home=home, profile=profile, dsh_command=command) + + @classmethod + def discover_or_create_workspace_default( + cls, workspace: Path + ) -> "StudioDshProviderRegistrationManager | None": + """Discover DSH or prepare the isolated first-run Studio Profile. + + The default is deliberately narrower than :meth:`discover`: only the + Studio-owned ``.agentkit/dsh-home`` and ``studio`` Profile qualify for + automatic official-provider bootstrap. Explicit DSH homes/profiles + are user-owned and are never mutated by Studio startup. + """ + + configured_home = os.environ.get("KSADK_DSH_HOME", "").strip() + configured_profile = os.environ.get("KSADK_DSH_PROFILE", "").strip() + if configured_home or configured_profile: + return cls.discover(workspace) + root = workspace.resolve() + home = root / ".agentkit" / "dsh-home" + configured_bin = os.environ.get("KSADK_DSH_BIN", "").strip() + if configured_bin: + command: Sequence[str] | None = (str(Path(configured_bin).expanduser()),) + else: + try: + command = DshToolchainManager().require_command() + except Exception: + # DSH is optional. A missing toolchain must not make the + # normal Studio/legacy Codex path unavailable. + return None + return cls(root, dsh_home=home, profile="studio", dsh_command=command) + + @property + def inventory(self) -> StudioDshProviderInventory: + return self._inventory + + @property + def _owns_workspace_default_profile(self) -> bool: + configured_home = os.environ.get("KSADK_DSH_HOME", "").strip() + configured_profile = os.environ.get("KSADK_DSH_PROFILE", "").strip() + expected_home = (self._workspace / ".agentkit" / "dsh-home").resolve() + return ( + not configured_home + and not configured_profile + and self._profile == "studio" + and self._dsh_home == expected_home + ) + + async def bootstrap_official_codex_provider( + self, + ) -> Literal["installed", "already_enabled", "disabled", "skipped"]: + """Apply the wheel-owned Codex default once for the Studio Profile. + + This method never enables an existing disabled package and never + mutates an explicit/user-owned DSH Profile. The marker also preserves + an explicit uninstall across future Studio starts. + """ + + if not self._owns_workspace_default_profile: + return "skipped" + async with self._lock: + return await asyncio.to_thread(self._bootstrap_official_codex_provider_sync) + + def _bootstrap_official_codex_provider_sync( + self, + ) -> Literal["installed", "already_enabled", "disabled", "skipped"]: + """Perform the blocking DSH package mutation outside the event loop.""" + + if not self._owns_workspace_default_profile: + return "skipped" + marker = self._default_marker_path + marker_payload = self._read_default_marker(marker) + command = self._dsh_command or DshToolchainManager().require_command() + shipped = shipped_codex_dsh_bundle() + with self._bridge_factory( + dsh_home=self._dsh_home, + profile=self._profile, + dsh_command=command, + cwd=self._workspace, + ) as bridge: + installed = {item.name: item for item in bridge.list_plugins()} + current = installed.get(SHIPPED_CODEX_DSH_PACKAGE) + if current is None: + if marker_payload.get("codexProviderApplied") is True: + return "skipped" + current = bridge.install_plugin(str(shipped.root), accept_host_permissions=True) + if current.name != SHIPPED_CODEX_DSH_PACKAGE: + raise StudioDshProviderRegistrationError( + "codex_dsh_package_mismatch", + "the official Codex install returned a different package", + ) + result: Literal["installed", "already_enabled", "disabled"] = "installed" + else: + result = "already_enabled" if current.enabled else "disabled" + if current.version != SHIPPED_CODEX_PROVIDER_VERSION: + raise StudioDshProviderRegistrationError( + "codex_dsh_bundle_not_active", + "the official Codex DSH Bundle version is not supported", + ) + if not current.enabled and result == "installed": + current = bridge.set_enabled(SHIPPED_CODEX_DSH_PACKAGE, enabled=True) + if not current.enabled: + raise StudioDshProviderRegistrationError( + "codex_dsh_enable_failed", + "the official Codex DSH Bundle did not become enabled", + ) + self._verify_shipped_bundle_bytes(SHIPPED_CODEX_DSH_PACKAGE) + if marker_payload.get("codexProviderApplied") is not True: + self._write_default_marker( + marker, + { + "version": 1, + "codexProviderApplied": True, + "codexProviderVersion": SHIPPED_CODEX_PROVIDER_VERSION, + }, + ) + return result + + @property + def _default_marker_path(self) -> Path: + return self._workspace / ".agentkit" / "official-dsh-defaults.json" + + @staticmethod + def _read_default_marker(path: Path) -> dict[str, object]: + try: + payload = json.loads(path.read_text(encoding="utf-8")) if path.is_file() else {} + except (OSError, UnicodeError, json.JSONDecodeError) as error: + raise StudioDshProviderRegistrationError( + "dsh_default_marker_invalid", + "the Studio official DSH defaults marker is unreadable", + ) from error + if not isinstance(payload, dict): + raise StudioDshProviderRegistrationError( + "dsh_default_marker_invalid", + "the Studio official DSH defaults marker is invalid", + ) + return payload + + @staticmethod + def _write_default_marker(path: Path, payload: Mapping[str, object]) -> None: + path.parent.mkdir(parents=True, exist_ok=True, mode=0o700) + descriptor, temporary = tempfile.mkstemp(prefix=f".{path.name}.", dir=path.parent) + try: + with os.fdopen(descriptor, "w", encoding="utf-8") as handle: + json.dump(payload, handle, ensure_ascii=False, sort_keys=True) + handle.write("\n") + handle.flush() + os.fsync(handle.fileno()) + os.chmod(temporary, 0o600) + os.replace(temporary, path) + finally: + try: + os.unlink(temporary) + except FileNotFoundError: + pass + + @property + def host_pid(self) -> int | None: + return next(iter(self.host_pids), None) + + @property + def host_pids(self) -> tuple[int, ...]: + return tuple(host.pid for host in self._hosts.values() if host.pid is not None) + + async def start(self) -> StudioDshProviderRegistrations: + async with self._lock: + if self._registrations is not None: + return self._registrations + if self._inventory.state == "disposed": + raise StudioDshProviderRegistrationError( + "dsh_provider_manager_disposed", + "Studio DSH provider registration manager is disposed", + ) + self._inventory = StudioDshProviderInventory(state="starting", profile=self._profile) + try: + snapshot = await asyncio.to_thread(self._discover_profile) + result = await self._register_snapshot(snapshot) + except BaseException as error: + await self._dispose_hosts() + code = str(getattr(error, "code", "dsh_provider_registration_failed")) + self._inventory = StudioDshProviderInventory( + state="failed", profile=self._profile, error_code=code + ) + if isinstance(error, (asyncio.CancelledError, KeyboardInterrupt, SystemExit)): + raise + raise StudioDshProviderRegistrationError( + code, + "managed DSH Profile could not be projected safely", + ) from error + self._registrations = result + self._inventory = result.inventory + return result + + async def refresh(self) -> StudioDshProviderRegistrations: + async with self._lock: + if self._inventory.state == "disposed": + raise StudioDshProviderRegistrationError( + "dsh_provider_manager_disposed", + "Studio DSH provider registration manager is disposed", + ) + self._registrations = None + await self._dispose_hosts() + self._inventory = StudioDshProviderInventory(state="stopped", profile=self._profile) + return await self.start() + + def mark_bound(self, provider_refs: Sequence[str]) -> None: + if self._registrations is None or self._inventory.state != "ready": + raise StudioDshProviderRegistrationError( + "dsh_provider_registration_not_ready", + "DSH provider registrations cannot be bound before preflight", + ) + expected = tuple(self._registrations.manifests) + if tuple(provider_refs) != expected: + raise StudioDshProviderRegistrationError( + "dsh_provider_registration_mismatch", + "Studio did not bind the exact ready DSH provider registration set", + ) + packages = tuple( + item.model_copy(update={"state": "bound"}) + if item.state == "ready" and item.provider_ref in expected + else item + for item in self._inventory.packages + ) + self._inventory = self._inventory.model_copy( + update={"state": "bound", "packages": packages} + ) + + async def aclose(self) -> None: + async with self._lock: + self._registrations = None + await self._dispose_hosts() + packages = tuple( + item.model_copy(update={"state": "disposed"}) + if item.state in {"ready", "bound"} + else item + for item in self._inventory.packages + ) + self._inventory = StudioDshProviderInventory( + state="disposed", + profile=self._profile, + profile_digest=self._inventory.profile_digest, + packages=packages, + ) + + def _discover_profile(self) -> _ProfileSnapshot: + command = self._dsh_command or DshToolchainManager().require_command() + with self._bridge_factory( + dsh_home=self._dsh_home, + profile=self._profile, + dsh_command=command, + cwd=self._workspace, + ) as bridge: + packages = bridge.list_plugins() + projection = bridge.project_profile() + enabled = {item.name for item in packages if item.enabled} + projected = set(projection.bundles) + if not enabled.issubset(projected) or projected - enabled - _DSH_PLATFORM_BUNDLES: + raise StudioDshProviderRegistrationError( + "dsh_provider_profile_inventory_mismatch", + "DSH installed inventory and projected Profile disagree", + ) + return _ProfileSnapshot(projection=projection, packages=packages) + + async def _register_snapshot( + self, snapshot: _ProfileSnapshot + ) -> StudioDshProviderRegistrations: + manifests: dict[str, PluginManifest] = {} + factories: dict[str, Any] = {} + statuses = [ + StudioDshProviderStatus( + package_name=item.name, + package_version=item.version, + display_name=item.display_name, + state="enabled" if item.enabled else "installed", + ) + for item in snapshot.packages + ] + provider_packages: dict[str, str] = {} + for index, package in enumerate(snapshot.packages): + if not package.enabled: + continue + host: DshAgentProviderHost | None = None + try: + registration, factory, host = await self._register_package( + package, snapshot.projection + ) + if registration is None or factory is None or host is None: + continue + descriptor = registration.descriptor + provider_ref = f"plugin://{descriptor.provider_id}@{descriptor.provider_version}" + prior_package = provider_packages.get(provider_ref) + if prior_package is not None: + await host.dispose() + prior_host = self._hosts.pop(prior_package, None) + if prior_host is not None: + await prior_host.dispose() + manifests.pop(provider_ref, None) + factories.pop(provider_ref, None) + statuses[index] = statuses[index].model_copy( + update={ + "state": "failed", + "provider_ref": provider_ref, + "error_code": "dsh_provider_registration_conflict", + } + ) + for prior_index, status in enumerate(statuses): + if status.package_name == prior_package: + statuses[prior_index] = status.model_copy( + update={ + "state": "failed", + "error_code": "dsh_provider_registration_conflict", + } + ) + break + continue + provider_packages[provider_ref] = package.name + manifests[provider_ref] = registration.manifest + factories[provider_ref] = factory + self._hosts[package.name] = host + statuses[index] = statuses[index].model_copy( + update={ + "state": "ready", + "provider_ref": provider_ref, + "display_name": descriptor.display_name, + } + ) + except BaseException as error: + if host is not None: + try: + await host.dispose() + except BaseException: + pass + if isinstance(error, (asyncio.CancelledError, KeyboardInterrupt, SystemExit)): + raise + statuses[index] = statuses[index].model_copy( + update={ + "state": "failed", + "error_code": str( + getattr(error, "code", "dsh_provider_registration_failed") + ), + } + ) + inventory = StudioDshProviderInventory( + state="ready", + profile=self._profile, + profile_digest=snapshot.projection.config_digest, + providers=tuple(manifests), + packages=tuple(statuses), + ) + return StudioDshProviderRegistrations( + manifests=manifests, factories=factories, inventory=inventory + ) + + async def _register_package( + self, + package: DshPluginInventory, + projection: DshProfileProjection, + ) -> tuple[ + DshAgentProviderRegistration | None, + Any | None, + DshAgentProviderHost | None, + ]: + if package.name in _SHIPPED_PROVIDER_PACKAGES: + error_prefix = ( + "codex_dsh" if package.name == SHIPPED_CODEX_DSH_PACKAGE else "harness_dsh" + ) + expected_version = ( + SHIPPED_CODEX_PROVIDER_VERSION + if package.name == SHIPPED_CODEX_DSH_PACKAGE + else SHIPPED_HARNESS_PROVIDER_VERSION + ) + if package.version != expected_version: + raise StudioDshProviderRegistrationError( + f"{error_prefix}_bundle_not_active", + "the exact shipped DSH AgentProvider Bundle is not active", + ) + self._verify_shipped_bundle_bytes(package.name) + command = ( + shipped_codex_dsh_host_command() + if package.name == SHIPPED_CODEX_DSH_PACKAGE + else shipped_harness_dsh_host_command() + ) + cwd = self._workspace + environment: dict[str, str] = {} + else: + entry = self._provider_host_entry(package.name) + if entry is None: + return None, None, None + command = (*self._resolve_node_command(), str(entry)) + cwd = self._profile_root + environment = {"KSADK_DSH_CORDIS_MODULE": str(self._resolve_cordis_module())} + host = self._host_factory( + command, + projection=projection, + cwd=cwd, + environment=environment, + ) + try: + registration = await host.registration() + if registration.descriptor.plugin_name != package.name: + raise PluginHostError( + "dsh_provider_package_mismatch", + "DSH provider descriptor does not match its installed package", + ) + provider_inventory = await host.inventory() + if provider_inventory.state != "ready": + raise PluginHostError( + "dsh_provider_inventory_not_ready", + "DSH AgentProvider inventory is not ready", + ) + if package.name == SHIPPED_CODEX_DSH_PACKAGE: + factory: Any = KsADKCodexDshBridgeFactory(host, registration, owns_host=False) + elif package.name == SHIPPED_HARNESS_DSH_PACKAGE: + factory: Any = KsADKHarnessDshBridgeFactory(host, registration, owns_host=False) + else: + factory = _FreshDshAgentProviderFactory( + command, + projection=projection, + cwd=cwd, + environment=environment, + registration=registration, + host_factory=self._host_factory, + ) + return registration, factory, host + except BaseException: + await host.dispose() + raise + + @property + def _profile_root(self) -> Path: + return self._dsh_home / "profiles" / self._profile + + def _provider_host_entry(self, package_name: str) -> Path | None: + package_root = self._profile_root / "node_modules" + for segment in package_name.split("/"): + package_root /= segment + manifest_path = package_root / "package.json" + try: + if manifest_path.stat().st_size > _MAX_PACKAGE_JSON_BYTES: + raise ValueError("package.json is too large") + payload = json.loads(manifest_path.read_text(encoding="utf-8")) + except (OSError, UnicodeError, json.JSONDecodeError, ValueError) as error: + raise PluginHostError( + "dsh_provider_package_invalid", + "installed DSH provider package.json is invalid", + ) from error + exports = payload.get("exports") if isinstance(payload, dict) else None + if not isinstance(exports, dict) or "./provider-host" not in exports: + return None + relative = exports.get("./provider-host") + if not isinstance(relative, str) or not relative.startswith("./"): + raise PluginHostError( + "dsh_provider_host_export_invalid", + "DSH provider-host export must be one relative file", + ) + try: + resolved_root = package_root.resolve(strict=True) + entry = (resolved_root / relative).resolve(strict=True) + except (OSError, RuntimeError) as error: + raise PluginHostError( + "dsh_provider_host_unavailable", + "DSH provider-host export is unavailable", + ) from error + if not entry.is_relative_to(resolved_root) or not entry.is_file(): + raise PluginHostError( + "dsh_provider_host_export_invalid", + "DSH provider-host export escapes its installed package", + ) + return entry + + def _resolve_node_command(self) -> tuple[str, ...]: + if self._node_command is not None: + if not self._node_command: + raise PluginHostError("dsh_provider_node_unavailable", "Node command is empty") + return self._node_command + configured = os.environ.get("NODE", "").strip() or "node" + resolved = shutil.which(configured) + if resolved is None: + raise PluginHostError("dsh_provider_node_unavailable", "Node executable is unavailable") + return (str(Path(resolved).resolve()),) + + def _resolve_cordis_module(self) -> Path: + if self._cordis_module is not None: + return self._cordis_module + return DshToolchainManager().resolve_module_entry("@deepseek-ai/cordis") + + async def _dispose_hosts(self) -> None: + hosts = tuple(self._hosts.values()) + self._hosts.clear() + for host in hosts: + try: + await host.dispose() + except BaseException: + pass + + def _verify_shipped_bundle_bytes(self, package_name: str) -> None: + if package_name == SHIPPED_CODEX_DSH_PACKAGE: + shipped = shipped_codex_dsh_bundle().root + error_prefix = "codex_dsh" + elif package_name == SHIPPED_HARNESS_DSH_PACKAGE: + shipped = shipped_harness_dsh_bundle().root + error_prefix = "harness_dsh" + else: # pragma: no cover - callers use the closed official allowlist + raise ValueError(f"unsupported shipped DSH package {package_name!r}") + installed = self._profile_root / "node_modules" + for segment in package_name.split("/"): + installed /= segment + try: + matches = all( + (installed / name).read_bytes().rstrip() == (shipped / name).read_bytes().rstrip() + for name in _PROFILE_FILES + ) + except OSError as error: + raise StudioDshProviderRegistrationError( + f"{error_prefix}_bundle_unreadable", + "the installed DSH AgentProvider Bundle cannot be verified", + ) from error + if not matches: + raise StudioDshProviderRegistrationError( + f"{error_prefix}_bundle_digest_mismatch", + "the installed DSH AgentProvider Bundle differs from the wheel-owned Bundle", + ) + + +def merge_provider_registrations( + *registrations: StudioDshProviderRegistrations, +) -> tuple[dict[str, PluginManifest], dict[str, Any]]: + """Merge registration sources without last-writer-wins ambiguity.""" + + manifests: dict[str, PluginManifest] = {} + factories: dict[str, Any] = {} + for item in registrations: + if item.manifests.keys() != item.factories.keys(): + raise StudioDshProviderRegistrationError( + "dsh_provider_registration_partial", + "provider manifests and factories must have identical exact references", + ) + for provider_ref, manifest in item.manifests.items(): + if provider_ref in manifests and ( + manifests[provider_ref] != manifest + or factories[provider_ref] is not item.factories[provider_ref] + ): + raise StudioDshProviderRegistrationError( + "dsh_provider_registration_conflict", + "multiple DSH registrations disagree for one exact provider reference", + ) + manifests[provider_ref] = manifest + factories[provider_ref] = item.factories[provider_ref] + return manifests, factories + + +__all__ = [ + "StudioDshProviderInventory", + "StudioDshProviderRegistrationError", + "StudioDshProviderRegistrationManager", + "StudioDshProviderRegistrations", + "StudioDshProviderStatus", + "merge_provider_registrations", +] diff --git a/ksadk/studio/event_store.py b/ksadk/studio/event_store.py index 3742dd15..bbf86e5c 100644 --- a/ksadk/studio/event_store.py +++ b/ksadk/studio/event_store.py @@ -43,16 +43,64 @@ def append(self, run_id: str, event_type: str, data: dict) -> RunEvent: stored in the run JSON so the Studio events timeline survives restarts. Runs that never call ``append`` keep ``set(run_payload) == {"record"}``. """ + return self.append_many(run_id, [(event_type, data)])[0] + + def append_many( + self, + run_id: str, + entries: list[tuple[str, dict[str, Any]]], + ) -> list[RunEvent]: + """Persist one logical Studio transition with a single file replace.""" record, events = self._read(run_id) - event = RunEvent( - id=len(events) + 1, + appended: list[RunEvent] = [] + for event_type, data in entries: + event = RunEvent( + id=len(events) + 1, + run_id=run_id, + type=event_type, + data=data, + ) + events.append(event) + appended.append(event) + if appended: + self._write(record, events) + return appended + + def append_interaction_resolution( + self, + run_id: str, + *, + resolved_type: str, + resolved_data: dict[str, Any], + action_data: dict[str, Any], + ) -> tuple[RunEvent, RunEvent, dict[str, Any]]: + """Atomically persist a terminal interaction and its replay receipt.""" + record, events = self._read(run_id) + resolution_event_id = len(events) + 1 + action_event_id = resolution_event_id + 1 + receipt = { + "runId": run_id, + "interactionId": str(action_data.get("interactionId") or ""), + "status": "resolved", + "revision": int(action_data.get("revision") or 0), + "resolutionEventId": resolution_event_id, + "eventId": action_event_id, + } + resolved = RunEvent( + id=resolution_event_id, + run_id=run_id, + type=resolved_type, + data=resolved_data, + ) + action = RunEvent( + id=action_event_id, run_id=run_id, - type=event_type, - data=data, + type="a2ui.action", + data={**action_data, "receipt": receipt}, ) - events.append(event) + events.extend((resolved, action)) self._write(record, events) - return event + return resolved, action, receipt def events(self, run_id: str, *, after: int = 0) -> list[RunEvent]: _, events = self._read(run_id) diff --git a/ksadk/studio/framework_run.py b/ksadk/studio/framework_run.py index a9cd9357..7c2c33f8 100644 --- a/ksadk/studio/framework_run.py +++ b/ksadk/studio/framework_run.py @@ -8,6 +8,7 @@ from typing import Any from ksadk.detection.detector import FrameworkDetector +from ksadk.plugins.bundle_security import BundleSecurityError, assert_bundle_security from ksadk.runtime import RuntimeLaunchContext from ksadk.studio.capabilities import compute_bundle_digest from ksadk.studio.contracts import BundleManifest @@ -120,9 +121,11 @@ def resolve( raise StudioError("BUILD_NOT_READY", "Build 尚未生成制品", status_code=409) artifact_root = self.workspace.resolve(build.artifact_path, must_exist=True).parent bundle_root = artifact_root / "agent-bundle" - self._verify_bundle_integrity( - bundle_root, expected_bundle_digest=build.bundle_digest - ) + self._verify_bundle_integrity(bundle_root, expected_bundle_digest=build.bundle_digest) + # v1 artifacts predate the no-literal-secret Bundle admission rule and + # must stay runnable. Every v2 bundle is checked again before local + # execution, including an externally restored but integrity-valid ZIP. + self._verify_bundle_security(bundle_root) project_dir = bundle_root / "runtime" if not project_dir.is_dir(): raise StudioError( @@ -301,6 +304,37 @@ def _verify_bundle_integrity( }, ) + @staticmethod + def _verify_bundle_security(bundle_dir: Path) -> None: + try: + manifest = BundleManifest.model_validate_json( + (bundle_dir / "manifest.json").read_text(encoding="utf-8") + ) + except (OSError, ValueError): + # Integrity verification reports the canonical error for a malformed + # manifest; do not mask it with a second diagnostic path. + return + if manifest.bundle_format != "agentkit.bundle/v2": + return + try: + assert_bundle_security(bundle_dir) + except BundleSecurityError as exc: + raise StudioError( + "BUILD_ARTIFACT_INVALID", + "Bundle 包含不允许的明文凭证或本机路径", + status_code=422, + details={ + "securityFindings": [ + { + "path": finding.path, + "kind": finding.kind, + **({"field": finding.field} if finding.field else {}), + } + for finding in exc.findings + ] + }, + ) from exc + __all__ = ["FrameworkRunSpecResolver"] @@ -309,7 +343,6 @@ def _resolved_memory_enabled(resolved: Any) -> bool: memory = resolved.get("memory") if isinstance(resolved, dict) else {} return bool(memory.get("enabled", False)) if isinstance(memory, dict) else False - memory = resolved.get("memory") if isinstance(resolved, dict) else {} if not isinstance(memory, dict) or not memory.get("enabled", False): return False diff --git a/ksadk/studio/hosted_kernel.py b/ksadk/studio/hosted_kernel.py index f80050b4..e8c047b4 100644 --- a/ksadk/studio/hosted_kernel.py +++ b/ksadk/studio/hosted_kernel.py @@ -21,7 +21,7 @@ AGENT_KERNEL_V1_CONTRACT_SET = "agent-kernel/v1" # This mirrors contracts/agent-kernel/v1/manifest.json. A Studio test compares # the two, so a frozen-contract update cannot leave packaged preflight stale. -AGENT_KERNEL_V1_CONTRACT_DIGEST = "47e1003e03d97abeba232cc3e03a14b9cbcf78b1109870ccd2ce371f073b6211" +AGENT_KERNEL_V1_CONTRACT_DIGEST = "b610a25aae957306b9f84a2cc2c948b30d1ce6218585cfd2a91f96736b92d102" HOSTED_KERNEL_REQUIREMENTS_PATH = "hosted-kernel-requirements.json" HOSTED_KERNEL_REQUIREMENTS_FORMAT = "agentkit.hosted-kernel-requirements/v1" HOSTED_KERNEL_RUNTIME_CONTRACT = "agentkit.runtime/v1" diff --git a/ksadk/studio/operations.py b/ksadk/studio/operations.py index d91147b9..0e205f2c 100644 --- a/ksadk/studio/operations.py +++ b/ksadk/studio/operations.py @@ -12,6 +12,7 @@ from pydantic import ValidationError +from ksadk.api import AgentEngineAPIError from ksadk.studio.contracts import ( Operation, OperationEvent, @@ -108,10 +109,19 @@ async def _run( "exceptionType": type(exc).__name__, } # TypeError carries only Python call-shape information and is safe - # to surface to the local operator. Do not expose arbitrary - # exception text: it may include provider request data. + # to surface to the local operator. AgentEngineAPIError carries + # a structured server-side Action API message (not credentials), + # so surface it to help the operator diagnose a failed deployment. if isinstance(exc, TypeError): operation.error["exceptionMessage"] = str(exc) + elif isinstance(exc, StudioError): + operation.error["code"] = exc.code + operation.error["message"] = exc.message + elif isinstance(exc, AgentEngineAPIError): + operation.error["code"] = f"AGENT_ENGINE_API_ERROR_{exc.code}" + operation.error["message"] = exc.message + if exc.details: + operation.error["details"] = exc.details operation.completed_at = datetime.now(timezone.utc) self._save_record(operation) self.append(operation_id, "operation.failed", operation.error) diff --git a/ksadk/studio/plugin_composition.py b/ksadk/studio/plugin_composition.py new file mode 100644 index 00000000..c39b2597 --- /dev/null +++ b/ksadk/studio/plugin_composition.py @@ -0,0 +1,301 @@ +"""Studio Agent revision -> immutable PluginHost composition binding. + +This is the production build seam for Phase 2. It admits built-in providers +or one exact AgentProvider registration emitted by the active DSH host, +then delegates the deterministic Profile/Lock construction to +``CompositionCompiler``. Legacy ADK/LangGraph drafts intentionally bypass +this module and retain their established source-build behavior. +""" + +from __future__ import annotations + +from collections.abc import Mapping +from copy import deepcopy + +from ksadk.plugins.builtins import ( + BUILTIN_PLUGIN_VERSION, + CORE_RENDERER_PLUGIN_ID, + READ_ONLY_CONTEXT_PLUGIN_ID, + SQLITE_SESSION_STORE_PLUGIN_ID, + WORKSPACE_MCP_PLUGIN_ID, + WORKSPACE_SKILL_PLUGIN_ID, + builtin_capability_manifests, +) +from ksadk.plugins.composition import ( + CompositionCompileError, + CompositionCompiler, + CompositionPolicy, + PluginCapabilitySelection, + ResourcePluginMaterialization, + RuntimePluginSelection, +) +from ksadk.plugins.contracts import PluginManifest +from ksadk.plugins.providers.legacy_catalog import ( + BUILTIN_PROVIDER_VERSION, + KSADK_HARNESS_AGENT_PROVIDER_PLUGIN_ID, + builtin_agent_provider_manifests, +) +from ksadk.plugins.resolver import PluginRegistry, ResolvedComposition +from ksadk.studio.contracts import AgentDraft, CapabilityBinding +from ksadk.studio.errors import StudioError +from ksadk.studio.resource_catalog import LocalResourceCatalog +from ksadk.studio.workspace import Workspace + +_COMPOSED_RUNTIME_TYPES = frozenset({"harness", "plugin"}) +_PROVIDER_DEFINITION = "agent.provider/v1" +_PROVIDER_SLOT = "agent.execution" + + +def _plugin_ref(plugin_id: str, version: str) -> str: + return f"plugin://{plugin_id}@{version}" + + +def _selection( + plugin_id: str, + definition: str, + slot: str, + *, + config: Mapping[str, object] | None = None, +) -> PluginCapabilitySelection: + return PluginCapabilitySelection( + ref=_plugin_ref(plugin_id, BUILTIN_PLUGIN_VERSION), + definition=definition, + slot=slot, + config=deepcopy(dict(config or {})), + ) + + +class StudioPluginCompositionCompiler: + """Bind a Studio revision to installed/built-in provider manifests.""" + + def __init__( + self, + workspace: Workspace, + catalog: LocalResourceCatalog, + *, + provider_manifests: Mapping[str, PluginManifest] | None = None, + ) -> None: + self._workspace = workspace + self._catalog = catalog + self._provider_manifests = dict(provider_manifests or {}) + + def replace_provider_registrations( + self, provider_manifests: Mapping[str, PluginManifest] + ) -> None: + """Bind the exact startup registration snapshot before any build.""" + + self._provider_manifests = dict(provider_manifests) + + @staticmethod + def required_for(draft: AgentDraft) -> bool: + runtime = draft.spec.runtime + return runtime is not None and runtime.type in _COMPOSED_RUNTIME_TYPES + + def compile_if_required(self, draft: AgentDraft) -> ResolvedComposition | None: + if not self.required_for(draft): + return None + return self.compile(draft) + + def compile(self, draft: AgentDraft) -> ResolvedComposition: + runtime = draft.spec.runtime + if runtime is None or runtime.type not in _COMPOSED_RUNTIME_TYPES: + raise StudioError( + "PLUGIN_COMPOSITION_NOT_REQUIRED", + "当前 Runtime 继续使用既有构建链,不应声明 PluginHost composition", + status_code=422, + field="spec.runtime.type", + ) + + manifests = [ + *builtin_agent_provider_manifests(), + *builtin_capability_manifests(), + ] + harness_ref = _plugin_ref( + KSADK_HARNESS_AGENT_PROVIDER_PLUGIN_ID, + BUILTIN_PROVIDER_VERSION, + ) + harness_manifest = self._provider_manifests.get(harness_ref) + if runtime.type == "harness": + if harness_manifest is None: + raise StudioError( + "AGENT_PROVIDER_NOT_REGISTERED", + "KsADK Harness 尚未由受管理 DSH Profile 完成预检与注册", + status_code=503, + field="spec.runtime.type", + ) + manifests.append(harness_manifest) + providers: dict[str, RuntimePluginSelection] = {} + if runtime.type == "plugin": + assert runtime.provider_ref is not None # RuntimeRef validates this boundary. + external = self._registered_provider(runtime.provider_ref, draft) + manifests.append(external) + providers[runtime.provider_ref] = RuntimePluginSelection( + provider_ref=runtime.provider_ref, + ) + + policy = CompositionPolicy( + runtimes={"harness": RuntimePluginSelection(provider_ref=harness_ref)}, + providers=providers, + session_store=_selection( + SQLITE_SESSION_STORE_PLUGIN_ID, + "session.event-store/v1", + "session.events", + ), + resource_materializations=self._resource_materializations(draft), + context_contributors={ + "workspace_rules": _selection( + READ_ONLY_CONTEXT_PLUGIN_ID, + "context.contributor/v1", + "context.bundle", + config={ + "paths": ["instructions/soul.md"] + if draft.spec.soul is not None + else [], + "maxChars": draft.spec.context.max_input_tokens * 4, + }, + ) + }, + renderers=( + _selection( + CORE_RENDERER_PLUGIN_ID, + "session.item.renderer/v1", + "renderer.core", + ), + ), + default_runtime="harness", + ) + try: + return CompositionCompiler( + PluginRegistry(manifests), self._catalog, policy + ).compile(draft) + except CompositionCompileError as error: + raise StudioError( + error.code.upper(), + str(error), + status_code=422, + field=error.field, + ) from error + + def bind_build(self, composition: ResolvedComposition, *, agent_id: str, build_id: str) -> None: + """Keep the API seam while DSH owns package/Profile references.""" + + del composition, agent_id, build_id + + def unbind_builds(self, builds: list[object]) -> tuple[tuple[str, str, str], ...]: + """Remove exact Bundle bindings before deleting an Agent. + + The returned tokens let the caller restore protection if its filesystem + deletion transaction fails after the receipt updates. + """ + + del builds + return () + + def restore_bindings(self, bindings: tuple[tuple[str, str, str], ...]) -> None: + """Best-effort-safe rollback for a failed Agent deletion.""" + + del bindings + + @staticmethod + def build_reference(agent_id: str, build_id: str) -> str: + return f"bundle://{agent_id}@{build_id}" + + def _registered_provider(self, provider_ref: str, draft: AgentDraft) -> PluginManifest: + plugin_id, version = provider_ref.removeprefix("plugin://").rsplit("@", 1) + if plugin_id == KSADK_HARNESS_AGENT_PROVIDER_PLUGIN_ID: + raise StudioError( + "AGENT_PROVIDER_REFERENCE_RESERVED", + "Harness Runtime 必须选择受管理的默认 Provider 引用", + status_code=422, + field="spec.runtime.providerRef", + ) + manifest = self._provider_manifests.get(provider_ref) + if manifest is None: + raise StudioError( + "AGENT_PROVIDER_NOT_REGISTERED", + "所选 AgentProvider 尚未由当前 DSH Profile 完成预检与注册", + status_code=422, + field="spec.runtime.providerRef", + ) + if ( + manifest.metadata.id != plugin_id + or manifest.metadata.version != version + ): + raise StudioError( + "AGENT_PROVIDER_REGISTRATION_MISMATCH", + "DSH AgentProvider 注册信息与精确引用不一致", + status_code=409, + field="spec.runtime.providerRef", + ) + offers = [ + offer + for offer in manifest.spec.provides + if offer.definition == _PROVIDER_DEFINITION + ] + if ( + len(offers) != 1 + or offers[0].slot != _PROVIDER_SLOT + or offers[0].mode != "unique" + ): + raise StudioError( + "AGENT_PROVIDER_MANIFEST_INVALID", + "插件必须唯一提供 agent.provider/v1 的 agent.execution 槽位", + status_code=422, + field="spec.runtime.providerRef", + ) + if manifest.spec.isolation != "sidecar": + raise StudioError( + "AGENT_PROVIDER_ISOLATION_INVALID", + "DSH AgentProvider 必须使用 sidecar 隔离", + status_code=422, + field="spec.runtime.providerRef", + ) + missing_permissions = sorted( + set(manifest.spec.permissions) + - set(draft.spec.security.allowed_permissions) + ) + if missing_permissions: + raise StudioError( + "AGENT_PROVIDER_PERMISSION_DENIED", + "Agent 未批准 Provider 请求的权限", + status_code=422, + field="spec.security.allowedPermissions", + details={"missingPermissions": missing_permissions}, + ) + return manifest + + def _resource_materializations( + self, draft: AgentDraft + ) -> dict[str, ResourcePluginMaterialization]: + materializations: dict[str, ResourcePluginMaterialization] = {} + groups: tuple[tuple[str, list[CapabilityBinding]], ...] = ( + ("mcp", draft.spec.bindings.mcp_servers), + ("skill", draft.spec.bindings.skills), + ) + for kind, bindings in groups: + for binding in bindings: + if not binding.enabled: + continue + # Catalog lookup is deliberate even though CompositionCompiler + # repeats the final kind/readiness check: it makes this product + # materializer fail at the authoritative Studio resource seam. + descriptor = self._catalog.get(binding.resource_id) + if descriptor.kind != kind: + raise StudioError( + "RESOURCE_KIND_INVALID", + f"{kind.upper()} binding 引用了错误类型的资源", + status_code=422, + field=f"spec.bindings.{kind}", + details={"resourceId": binding.resource_id}, + ) + plugin_id = ( + WORKSPACE_MCP_PLUGIN_ID if kind == "mcp" else WORKSPACE_SKILL_PLUGIN_ID + ) + materializations[binding.resource_id] = ResourcePluginMaterialization( + kind=kind, # type: ignore[arg-type] + plugin_ref=_plugin_ref(plugin_id, BUILTIN_PLUGIN_VERSION), + config=deepcopy(binding.config), + ) + return materializations + +__all__ = ["StudioPluginCompositionCompiler"] diff --git a/ksadk/studio/plugin_kernel_adapter.py b/ksadk/studio/plugin_kernel_adapter.py new file mode 100644 index 00000000..e6671286 --- /dev/null +++ b/ksadk/studio/plugin_kernel_adapter.py @@ -0,0 +1,128 @@ +"""AgentKernel adapter for an immutable Studio PluginHost Build.""" + +from __future__ import annotations + +from typing import Any + +from ksadk.kernel.contracts import InjectPayload, SteerPayload +from ksadk.kernel.errors import UnsupportedControlError +from ksadk.runtime import ( + BaseRuntime, + CancelResult, + CheckpointDescriptor, + PauseResult, + ResumePayload, + ResumeTarget, + RunHandle, + RuntimeAdapter, + StartRequest, +) +from ksadk.studio.run_service import StudioRunSpec + + +class _PluginKernelRuntime(BaseRuntime): + def __init__(self, runtime_type: str) -> None: + self.runtime_type = runtime_type + + def native_capabilities(self) -> dict[str, Any]: + return { + "provider_owned": True, + "runtime_adapter": True, + "session_continuity": {"durable": False, "scope": "process"}, + } + + +class StudioPluginKernelAdapter(RuntimeAdapter): + """Lazily bind one Worker run to its profile-fenced provider activation.""" + + def __init__(self, plugin_runtime: Any, spec: StudioRunSpec) -> None: + super().__init__(_PluginKernelRuntime(spec.launch_context.runtime_type)) + self._plugin_runtime = plugin_runtime + self._spec = spec + self._delegate: RuntimeAdapter | None = None + + async def start(self, request: StartRequest) -> RunHandle: + delegate = await self._plugin_runtime.kernel_adapter( + self._spec, + session_id=request.session_id, + ) + if not isinstance(delegate, RuntimeAdapter): + raise RuntimeError("AgentProvider returned an invalid RuntimeAdapter") + self._delegate = delegate + metadata = dict(request.metadata) + if not metadata.get("invocation_id") and metadata.get("run_id"): + metadata["invocation_id"] = metadata["run_id"] + return await delegate.start(request.model_copy(update={"metadata": metadata})) + + def stream(self, handle: RunHandle): # type: ignore[no-untyped-def] + return self._require_delegate().stream(handle) + + async def cancel(self, handle: RunHandle) -> CancelResult: + return await self._require_delegate().cancel(handle) + + async def pause(self, handle: RunHandle) -> PauseResult: + return await self._require_delegate().pause(handle) + + async def submit(self, handle: RunHandle, payload: ResumePayload) -> None: + await self._require_delegate().submit(handle, payload) + + async def resume( + self, + handle: RunHandle, + target: ResumeTarget, + payload: ResumePayload | None, + ) -> RunHandle: + return await self._require_delegate().resume(handle, target, payload) + + async def attach(self, handle: RunHandle) -> RunHandle: + delegate = await self._plugin_runtime.kernel_adapter( + self._spec, + session_id=handle.session_id, + ) + if not isinstance(delegate, RuntimeAdapter): + raise RuntimeError("AgentProvider returned an invalid RuntimeAdapter") + self._delegate = delegate + return await delegate.attach(handle) + + async def steer(self, handle: RunHandle, payload: SteerPayload) -> None: + await self._require_delegate().steer(handle, payload) + + async def inject(self, handle: RunHandle, payload: InjectPayload) -> None: + await self._require_delegate().inject(handle, payload) + + async def checkpoint(self, handle: RunHandle) -> CheckpointDescriptor: + return await self._require_delegate().checkpoint(handle) + + async def durable_restore(self, handle: RunHandle) -> RunHandle: + delegate = await self._plugin_runtime.kernel_adapter( + self._spec, + session_id=handle.session_id, + ) + if not isinstance(delegate, RuntimeAdapter): + raise RuntimeError("AgentProvider returned an invalid RuntimeAdapter") + self._delegate = delegate + return await delegate.durable_restore(handle) + + def is_handle_attached(self, handle: RunHandle) -> bool: + return self._delegate is not None and self._delegate.is_handle_attached(handle) + + async def close(self, handle: RunHandle) -> None: + await self._require_delegate().close(handle) + + def capabilities(self): # type: ignore[no-untyped-def] + # Before ``start`` the provider activation is async and not yet bound. + # Keep admission conservative; enqueue remains available and the live + # execution delegates supported controls after binding. + if self._delegate is None: + return super().capabilities() + return self._delegate.capabilities() + + def _require_delegate(self) -> RuntimeAdapter: + if self._delegate is None: + raise UnsupportedControlError( + "PluginHost RuntimeAdapter has not started a provider activation" + ) + return self._delegate + + +__all__ = ["StudioPluginKernelAdapter"] diff --git a/ksadk/studio/plugin_runtime.py b/ksadk/studio/plugin_runtime.py new file mode 100644 index 00000000..ac499ae8 --- /dev/null +++ b/ksadk/studio/plugin_runtime.py @@ -0,0 +1,652 @@ +"""Local Studio execution for immutable PluginHost AgentBundle v2 builds.""" + +from __future__ import annotations + +import asyncio +import json +from collections.abc import Mapping, Sequence +from dataclasses import dataclass +from pathlib import Path +from typing import Any, cast + +from ksadk.harness.reasoner import ( + HarnessReasoner, + HarnessReasoningTurn, + HarnessToolCall, +) +from ksadk.plugins.builtins import ( + builtin_capability_factories, + builtin_capability_manifests, +) +from ksadk.plugins.bundle import PluginBundleError, PluginBundleResolver, ResolvedPluginBundle +from ksadk.plugins.contracts import CompositionProfile, PluginManifest +from ksadk.plugins.host import PluginHost, PluginHostError +from ksadk.plugins.providers.harness import ( + HarnessTurnResult, + KsADKHarnessProviderFactory, +) +from ksadk.plugins.providers.legacy import ( + LegacyBundleAdapter, + LegacyBundleCompatibilityError, + LegacyHarnessSource, +) +from ksadk.plugins.providers.legacy_catalog import ( + KSADK_HARNESS_AGENT_PROVIDER_PLUGIN_ID, + builtin_agent_provider_manifests, + legacy_harness_agent_provider_manifest, +) +from ksadk.plugins.resolver import PluginRegistry +from ksadk.runtime import RuntimeLaunchContext +from ksadk.sessions.base import BaseSessionService +from ksadk.studio.contracts import ( + BuildRecord, + NetworkPolicy, + ResolvedModel, +) +from ksadk.studio.errors import StudioError +from ksadk.studio.model_client import OpenAICompatibleModelClient +from ksadk.studio.plugin_kernel_adapter import StudioPluginKernelAdapter +from ksadk.studio.repository import BuildRepository +from ksadk.studio.run_service import StudioRunSpec +from ksadk.studio.workspace import Workspace + +_COMPOSED_RUNTIME_TYPES = frozenset({"harness", "plugin"}) + + +@dataclass(frozen=True) +class StudioPluginTurnResult: + """Normalized result retained at the Studio/third-party boundary.""" + + output_text: str + session_id: str + usage: Mapping[str, Any] + metadata: Mapping[str, Any] + raw: Any + + +@dataclass +class _HostEntry: + agent_id: str + bundle: ResolvedPluginBundle + host: PluginHost + + +class _StudioHarnessReasoner: + """Bind the Harness loop to the immutable Studio model/network policy.""" + + def __init__( + self, + client: OpenAICompatibleModelClient, + *, + model: ResolvedModel, + network_policy: NetworkPolicy, + timeout_seconds: int, + max_attempts: int, + backoff_seconds: float, + ) -> None: + self._client = client + self._model = model + self._network_policy = network_policy + self._timeout_seconds = timeout_seconds + self._max_attempts = max_attempts + self._backoff_seconds = backoff_seconds + + async def complete( + self, + *, + model: str, + prompt: str, + messages: Sequence[dict[str, Any]], + tools: Sequence[Any], + ) -> HarnessReasoningTurn: + del prompt + if model != self._model.model: + raise PluginHostError( + "harness_model_not_bound", + f"Harness requested unbound model {model!r}", + ) + response = await self._client.complete( + self._model, + messages=[dict(message) for message in messages], + network_policy=self._network_policy, + timeout_seconds=self._timeout_seconds, + max_attempts=self._max_attempts, + backoff_seconds=self._backoff_seconds, + tools=[dict(tool.openai_schema) for tool in tools], + allow_empty=bool(tools), + ) + calls: list[HarnessToolCall] = [] + for call in response.tool_calls: + try: + arguments = json.loads(call.arguments or "{}") + except json.JSONDecodeError as error: + raise PluginHostError( + "harness_tool_arguments_invalid", + f"model emitted invalid arguments for tool {call.name!r}", + ) from error + if not isinstance(arguments, dict): + raise PluginHostError( + "harness_tool_arguments_invalid", + f"model emitted non-object arguments for tool {call.name!r}", + ) + calls.append( + HarnessToolCall( + call_id=call.id, + name=call.name, + arguments=arguments, + ) + ) + return HarnessReasoningTurn( + final_text=response.content or None, + tool_calls=tuple(calls), + ) + + +class StudioPluginRuntime: + """Resolve, activate, and retain composed providers for Studio sessions.""" + + def __init__( + self, + workspace: Workspace, + *, + build_repository: BuildRepository, + session_service: BaseSessionService, + model_client: OpenAICompatibleModelClient, + secret_resolver: Any, + harness_reasoner: HarnessReasoner | None = None, + provider_manifests: Mapping[str, PluginManifest] | None = None, + provider_factories: Mapping[str, Any] | None = None, + legacy_harness_sources: Sequence[LegacyHarnessSource] = (), + ) -> None: + self.workspace = workspace + self.builds = build_repository + self._session_service = session_service + self._model_client = model_client + self._secret_resolver = secret_resolver + self._harness_reasoner = harness_reasoner + self._provider_manifests = dict(provider_manifests or {}) + self._provider_factories = dict(provider_factories or {}) + self._legacy_bundles = LegacyBundleAdapter(legacy_harness_sources) + self._lock = asyncio.Lock() + self._hosts: dict[str, _HostEntry] = {} + + def replace_provider_registrations( + self, + provider_manifests: Mapping[str, PluginManifest], + provider_factories: Mapping[str, Any], + ) -> None: + """Bind one startup snapshot before any provider activation exists.""" + + manifests = dict(provider_manifests) + factories = dict(provider_factories) + if manifests.keys() != factories.keys(): + raise ValueError( + "plugin provider manifests and factories must use the same exact references" + ) + if self._hosts: + raise RuntimeError("cannot replace provider registrations after activation") + self._provider_manifests = manifests + self._provider_factories = factories + + @property + def active_activation_count(self) -> int: + return sum(entry.host.activation_count for entry in self._hosts.values()) + + def resolve(self, build_id: str, *, model: str | None = None) -> StudioRunSpec: + build = self.builds.get(build_id) + runtime_type = build.runtime_type.strip().lower() + if runtime_type not in _COMPOSED_RUNTIME_TYPES: + raise StudioError( + "BUILD_RUNTIME_UNSUPPORTED", + "Build 不是 PluginHost Harness/Provider Runtime", + status_code=422, + details={"buildId": build_id, "runtimeType": runtime_type}, + ) + bundle_root = self._bundle_root(build) + bundle = self._resolve_bundle(bundle_root) + self._preflight_bundle(bundle) + selected_model = self._select_model(build, model) + resolved = bundle.resolved_agent_spec + instructions = resolved.get("instructions") + instructions = instructions if isinstance(instructions, Mapping) else {} + return StudioRunSpec( + launch_context=RuntimeLaunchContext( + runtime_type=runtime_type, + project_dir=bundle_root, + config={"plugin_bundle_digest": bundle.bundle_digest}, + ), + build_id=build.id, + agent_id=build.agent_id, + model=selected_model, + request_config={ + "agent_system": str(instructions.get("system") or ""), + "agent_task": str(instructions.get("task") or ""), + "plugin_bundle_digest": bundle.bundle_digest, + }, + manifest_sha256=build.resolved_digest, + plugin_bundle_root=bundle_root, + ) + + async def execute( + self, + spec: StudioRunSpec, + request: Mapping[str, Any], + *, + session_id: str, + ) -> StudioPluginTurnResult: + if spec.plugin_bundle_root is None: + raise PluginHostError( + "plugin_bundle_unavailable", "Studio run has no PluginHost Bundle" + ) + entry = await self._host_for(spec.plugin_bundle_root) + if entry.agent_id != spec.agent_id: + raise PluginHostError( + "plugin_bundle_agent_mismatch", + "Studio run Agent does not match its immutable PluginHost Bundle", + ) + activation = await entry.host.open_activation( + entry.bundle, + activation_key=session_id, + ) + raw = await activation.execute(dict(request)) + return _normalize_result(raw, session_id=session_id) + + def kernel_adapter_provider(self, spec: StudioRunSpec): # type: ignore[no-untyped-def] + """Return a lazy, Build-pinned adapter factory for Scheduler Kernel.""" + + if spec.plugin_bundle_root is None: + raise StudioError( + "PLUGIN_RUNTIME_UNAVAILABLE", + "Studio Build 没有 PluginHost Bundle", + status_code=409, + ) + return lambda: StudioPluginKernelAdapter(self, spec) + + async def kernel_adapter( + self, + spec: StudioRunSpec, + *, + session_id: str, + ) -> Any: + """Bind a Scheduler run to the provider-owned activation adapter.""" + + if spec.plugin_bundle_root is None: + raise StudioError( + "PLUGIN_RUNTIME_UNAVAILABLE", + "Studio Build 没有 PluginHost Bundle", + status_code=409, + ) + entry = await self._host_for(spec.plugin_bundle_root) + if entry.agent_id != spec.agent_id: + raise PluginHostError( + "plugin_bundle_agent_mismatch", + "Studio run Agent does not match its immutable PluginHost Bundle", + ) + activation = await entry.host.open_activation( + entry.bundle, + activation_key=session_id, + ) + return await activation.runtime_adapter() + + async def close_session(self, session_id: str) -> None: + async with self._lock: + entries = tuple(self._hosts.values()) + for entry in entries: + await entry.host.close_activation(session_id) + + async def aclose(self) -> None: + async with self._lock: + entries = tuple(self._hosts.values()) + self._hosts.clear() + for entry in entries: + await entry.host.dispose() + + async def _host_for(self, bundle_root: Path) -> _HostEntry: + # Re-resolve every turn. This deliberately rechecks enabled receipts and + # package digests rather than trusting a previously healthy child. + bundle = self._resolve_bundle(bundle_root) + key = bundle.bundle_digest + async with self._lock: + existing = self._hosts.get(key) + if existing is not None: + return existing + + registry, factories, permissions = self._runtime_components(bundle) + verified = ( + bundle + if bundle.manifest.bundle_format == "agentkit.bundle/v1" + else PluginBundleResolver(registry).resolve(bundle_root) + ) + services: dict[str, Any] = { + "session_service": self._session_service, + # Providers resolve credential *references* at activation time. + # The DSH discovery host never receives this service. + "credential_resolver": self._secret_resolver, + } + provider_id, _provider_version = _parse_plugin_ref( + verified.composition.profile.agent_provider.ref + ) + if provider_id == KSADK_HARNESS_AGENT_PROVIDER_PLUGIN_ID: + services["harness_reasoner"] = ( + self._harness_reasoner or self._bound_harness_reasoner(verified) + ) + host = PluginHost( + registry, + factories, + allowed_permissions=permissions, + services=services, + ) + try: + await host.apply(verified.composition.profile) + except BaseException: + await host.dispose() + raise + candidate = _HostEntry( + agent_id=verified.manifest.agent_id, + bundle=verified, + host=host, + ) + stale = [ + (digest, entry) + for digest, entry in self._hosts.items() + if entry.agent_id == candidate.agent_id and digest != key + ] + self._hosts[key] = candidate + for digest, entry in stale: + self._hosts.pop(digest, None) + await entry.host.dispose() + return candidate + + def _resolve_bundle(self, bundle_root: Path) -> ResolvedPluginBundle: + registered_ids = { + manifest.metadata.id for manifest in self._provider_manifests.values() + } + try: + manifest, selection = self._legacy_bundles.select_from_bundle( + bundle_root, + registered_provider_ids=registered_ids, + ) + except LegacyBundleCompatibilityError as error: + code = ( + "AGENT_PROVIDER_NOT_REGISTERED" + if error.code == "agent_provider_not_registered" + else "PLUGIN_BUNDLE_INVALID" + ) + raise StudioError( + code, + "Harness Bundle 兼容性校验失败", + status_code=409, + details={"reason": error.code}, + ) from error + if selection is not None and selection.route == "legacy": + assert selection.manifest is not None + profile = CompositionProfile.model_validate( + { + "agentProvider": { + "ref": ( + f"plugin://{selection.manifest.metadata.id}" + f"@{selection.manifest.metadata.version}" + ) + } + } + ) + registry = PluginRegistry( + [selection.manifest, *builtin_capability_manifests()] + ) + try: + resolved = json.loads( + (bundle_root / "resolved-agent-spec.json").read_text(encoding="utf-8") + ) + except (OSError, UnicodeError, json.JSONDecodeError) as error: + raise StudioError( + "PLUGIN_BUNDLE_INVALID", + "Legacy Harness Bundle 缺少 resolved Agent spec", + status_code=409, + details={"reason": "legacy_resolved_spec_invalid"}, + ) from error + if not isinstance(resolved, dict): + raise StudioError( + "PLUGIN_BUNDLE_INVALID", + "Legacy Harness resolved Agent spec 必须是对象", + status_code=409, + details={"reason": "legacy_resolved_spec_invalid"}, + ) + return ResolvedPluginBundle( + root=bundle_root, + manifest=manifest, + resolved_agent_spec=resolved, + composition=registry.resolve(profile), + ) + profile = self._read_profile(bundle_root) + manifests = [ + *builtin_agent_provider_manifests(), + *builtin_capability_manifests(), + ] + external = self._external_manifest(profile) + if external is not None: + manifests.append(external) + try: + return PluginBundleResolver(PluginRegistry(manifests)).resolve(bundle_root) + except PluginBundleError as error: + raise StudioError( + "PLUGIN_BUNDLE_INVALID", + "PluginHost Bundle 校验失败", + status_code=409, + details={"reason": error.code}, + ) from error + + def _runtime_components( + self, + bundle: ResolvedPluginBundle, + ) -> tuple[PluginRegistry, dict[str, Any], frozenset[str]]: + manifests: list[PluginManifest] = [ + *builtin_agent_provider_manifests(), + *builtin_capability_manifests(), + ] + factories = builtin_capability_factories( + state_root=self.workspace.resolve(".agentkit/plugin-runtime/state"), + secret_resolver=self._secret_resolver.resolve, + ) + provider_id, provider_version = _parse_plugin_ref( + bundle.composition.profile.agent_provider.ref + ) + provider_ref = f"plugin://{provider_id}@{provider_version}" + if bundle.manifest.bundle_format == "agentkit.bundle/v1": + manifest = legacy_harness_agent_provider_manifest() + factory = KsADKHarnessProviderFactory(session_service=self._session_service) + else: + manifest = self._provider_manifests.get(provider_ref) + factory = self._provider_factories.get(provider_ref) + if manifest is None or factory is None: + raise StudioError( + "AGENT_PROVIDER_NOT_REGISTERED", + "AgentProvider 尚未由当前 DSH Profile 完成预检与注册", + status_code=409, + details={"provider": provider_ref}, + ) + manifests.append(manifest) + factories[provider_id] = factory + + builtin_ids = { + manifest.metadata.id + for manifest in ( + *builtin_agent_provider_manifests(), + *builtin_capability_manifests(), + ) + } + allowed = { + permission + for manifest in manifests + if manifest.metadata.id in builtin_ids + for permission in manifest.spec.permissions + } + security = bundle.resolved_agent_spec.get("security") + if isinstance(security, Mapping): + raw = security.get("allowedPermissions") or security.get("allowed_permissions") or [] + if isinstance(raw, Sequence) and not isinstance(raw, (str, bytes)): + allowed.update(str(item) for item in raw) + return PluginRegistry(manifests), factories, frozenset(allowed) + + def _preflight_bundle(self, bundle: ResolvedPluginBundle) -> None: + """Reject an unusable composition before a Run or Schedule is admitted. + + Provider activation is intentionally lazy, but permission and graph + admission are deterministic from the immutable Bundle. Delaying this + check until ``RuntimeAdapter.start`` lets an accepted Inbox message + repeatedly create PENDING Runs that can never become runnable. + """ + + registry, factories, permissions = self._runtime_components(bundle) + host = PluginHost( + registry, + factories, + allowed_permissions=permissions, + ) + try: + host.preflight(bundle.composition.profile) + except PluginHostError as error: + code = ( + "PLUGIN_PERMISSION_DENIED" + if error.code == "plugin_permission_denied" + else "PLUGIN_RUNTIME_PREFLIGHT_FAILED" + ) + raise StudioError( + code, + "Agent 插件组合未通过运行前检查", + status_code=409, + details={"reason": error.code}, + ) from error + + def _bound_harness_reasoner(self, bundle: ResolvedPluginBundle) -> HarnessReasoner: + spec = bundle.resolved_agent_spec + model = ResolvedModel.model_validate(spec.get("model")) + security = spec.get("security") + security = security if isinstance(security, Mapping) else {} + network = NetworkPolicy.model_validate(security.get("network") or {}) + execution = spec.get("execution") + execution = execution if isinstance(execution, Mapping) else {} + retry = execution.get("retry") + retry = retry if isinstance(retry, Mapping) else {} + return _StudioHarnessReasoner( + self._model_client, + model=model, + network_policy=network, + timeout_seconds=int( + execution.get("timeoutSeconds") or execution.get("timeout_seconds") or 120 + ), + max_attempts=int( + retry.get("maxAttempts") or retry.get("max_attempts") or 2 + ), + backoff_seconds=float( + retry.get("backoffSeconds") or retry.get("backoff_seconds") or 1 + ), + ) + + def _external_manifest(self, profile: CompositionProfile) -> PluginManifest | None: + plugin_id, version = _parse_plugin_ref(profile.agent_provider.ref) + builtin_ids = { + manifest.metadata.id for manifest in builtin_agent_provider_manifests() + } + if plugin_id in builtin_ids: + return None + provider_ref = f"plugin://{plugin_id}@{version}" + manifest = self._provider_manifests.get(provider_ref) + if manifest is None: + raise StudioError( + "AGENT_PROVIDER_NOT_REGISTERED", + "AgentProvider 尚未由当前 DSH Profile 完成预检与注册", + status_code=409, + details={"provider": provider_ref}, + ) + return manifest + + def _read_profile(self, bundle_root: Path) -> CompositionProfile: + try: + return cast( + CompositionProfile, + CompositionProfile.model_validate_json( + (bundle_root / "composition-profile.json").read_text( + encoding="utf-8" + ) + ), + ) + except (OSError, UnicodeError, ValueError) as error: + raise StudioError( + "PLUGIN_BUNDLE_INVALID", + "PluginHost Bundle 缺少有效的 Composition Profile", + status_code=409, + ) from error + + def _bundle_root(self, build: BuildRecord) -> Path: + if not build.artifact_path: + raise StudioError("BUILD_NOT_READY", "Build 尚未生成制品", status_code=409) + archive = cast( + Path, + self.workspace.resolve(build.artifact_path, must_exist=True), + ) + bundle_root = archive.parent / "agent-bundle" + if not bundle_root.is_dir(): + raise StudioError( + "PLUGIN_BUNDLE_UNAVAILABLE", + "Build 缺少可运行的 PluginHost Bundle", + status_code=409, + ) + return bundle_root + + @staticmethod + def _select_model(build: BuildRecord, requested: str | None) -> str: + allowed = [ + str(item) for item in build.runtime_lock.get("models") or [] if str(item) + ] + default = str(build.runtime_lock.get("model") or "").strip() + if default and default not in allowed: + allowed.insert(0, default) + selected = str(requested or default).strip() + if not selected: + raise StudioError( + "AGENT_MODEL_REQUIRED", "Build 没有绑定可运行模型", status_code=422 + ) + if allowed and selected not in allowed: + raise StudioError( + "MODEL_NOT_BOUND", + "请求模型未绑定到当前 Agent Build", + status_code=422, + details={"model": selected, "allowedModels": allowed}, + ) + return selected + +def _parse_plugin_ref(value: str) -> tuple[str, str]: + plugin_id, version = value.removeprefix("plugin://").rsplit("@", 1) + return plugin_id, version + + +def _normalize_result(raw: Any, *, session_id: str) -> StudioPluginTurnResult: + if isinstance(raw, HarnessTurnResult): + return StudioPluginTurnResult( + output_text=raw.output_text, + session_id=raw.session_id, + usage=dict(raw.usage), + metadata=dict(raw.metadata), + raw=raw, + ) + if not isinstance(raw, Mapping): + raise PluginHostError( + "provider_result_invalid", "AgentProvider result must be an object" + ) + output_text = str(raw.get("outputText") or raw.get("output_text") or raw.get("output") or "") + if not output_text: + raise PluginHostError( + "provider_result_invalid", "AgentProvider result must contain outputText" + ) + usage = raw.get("usage") if isinstance(raw.get("usage"), Mapping) else {} + metadata = raw.get("metadata") if isinstance(raw.get("metadata"), Mapping) else {} + return StudioPluginTurnResult( + output_text=output_text, + session_id=str(raw.get("sessionId") or raw.get("session_id") or session_id), + usage=dict(usage), + metadata=dict(metadata), + raw=raw, + ) + + +__all__ = ["StudioPluginRuntime", "StudioPluginTurnResult"] diff --git a/ksadk/studio/resource_catalog.py b/ksadk/studio/resource_catalog.py index 3c46d0c4..f791ddee 100644 --- a/ksadk/studio/resource_catalog.py +++ b/ksadk/studio/resource_catalog.py @@ -338,7 +338,12 @@ async def discover_provider_models( if not catalog: if cached is not None: return cached[1], cached[2] - catalog = [normalize_model_metadata({"id": current_model or "glm-5.1"})] + # No provider response and no cache: return an empty catalog so the + # UI can guide the user to configure a provider instead of showing + # a phantom default model. + self._provider_models = {} + self._provider_catalog_cache[cache_key] = (now, [], source) + return [], source descriptors: list[ResourceDescriptor] = [] for item in catalog: diff --git a/ksadk/studio/run_service.py b/ksadk/studio/run_service.py index 0b6e7bed..054d6b47 100644 --- a/ksadk/studio/run_service.py +++ b/ksadk/studio/run_service.py @@ -3,15 +3,22 @@ from __future__ import annotations import asyncio +import hashlib +import json import logging import time from collections.abc import Callable, Mapping from dataclasses import asdict, dataclass, field from datetime import datetime, timezone +from pathlib import Path from typing import Any from uuid import uuid4 from ksadk.agui.a2ui_projection import project_a2ui_operations +from ksadk.conversations.projector import ( + project_conversation_item, + project_interaction_conversation_item, +) from ksadk.events.canonical import ( ContinuationCreated, ContinuationResumed, @@ -22,6 +29,7 @@ ItemFailed, ItemStarted, ItemUpdated, + OutputRef, RunCanceled, RunCompleted, RunFailed, @@ -32,7 +40,9 @@ SourceRef, UsageReported, dump_runtime_event, + parse_runtime_event, ) +from ksadk.events.canonical_store import session_event_to_runtime_event from ksadk.events.content import ( ContentSnapshot, DataContent, @@ -73,6 +83,7 @@ class StudioRunSpec: model: str | None = None request_config: Mapping[str, Any] = field(default_factory=dict) manifest_sha256: str = "" + plugin_bundle_root: Path | None = None class StudioRunService: @@ -86,6 +97,7 @@ def __init__( event_store: RunEventStore | None = None, session_service: BaseSessionService | None = None, runtime_events: RuntimeEventStore | None = None, + plugin_runtime: Any | None = None, ) -> None: self.workspace = workspace self.executor = executor @@ -94,10 +106,18 @@ def __init__( project_dir=str(workspace.root) ) self.runtime_events = runtime_events or RuntimeEventStore(self.session_service) + self.plugin_runtime = plugin_runtime self._active_handles: dict[str, Any] = {} self._cancel_flags: dict[str, bool] = {} - self._control_queues: dict[str, asyncio.Queue[tuple[str, ResumePayload | None]]] = {} + self._control_queues: dict[ + str, + asyncio.Queue[tuple[str, ResumePayload | None, asyncio.Future[None] | None]], + ] = {} self._waiting_modes: dict[str, str] = {} + # Interaction resolution appends to one run-level event file. Serialise + # every decision for that run, not only identical interaction ids, so + # two concurrently visible cards cannot overwrite each other's receipt. + self._interaction_locks: dict[str, asyncio.Lock] = {} async def recover_interrupted(self) -> None: """Settle local runs left active across a Studio restart. @@ -173,11 +193,21 @@ async def run( if on_event is not None: on_event(created) - from ksadk.kernel.ingress import kernel_route_active - - if kernel_route_active(): + kernel_runtime = self._kernel_runtime_for_spec(spec) + if kernel_runtime is not None: return await self._kernel_run( - spec, user_input, record=record, on_event=on_event + spec, + user_input, + record=record, + on_event=on_event, + kernel_runtime=kernel_runtime, + ) + if spec.plugin_bundle_root is not None: + return await self._plugin_run( + spec, + user_input, + record=record, + on_event=on_event, ) started = time.monotonic() @@ -187,18 +217,32 @@ async def run( async def persist(runtime_event: RuntimeEvent) -> RunEvent: persisted = await self.runtime_events.append_one(record.session_id, runtime_event) - event_type, data = project_runtime_event(persisted) + event_type, data = project_runtime_event( + persisted, + session_id=record.session_id, + public_run_id=record.id, + ) + if isinstance(persisted, InteractionRequested): + data["revision"] = 1 + conversation_item = data.get("conversationItem") + if isinstance(conversation_item, dict): + item_payload = conversation_item.get("payload") + if isinstance(item_payload, dict): + item_payload["revision"] = 1 stored = self.event_store.append(record.id, event_type, data) if on_event is not None: on_event(stored) return stored handle = None - final_text = "" - streamed_final = "" + completed_text_by_item: dict[tuple[str, str], str] = {} + streamed_text_by_item: dict[tuple[str, str], str] = {} + terminal_output_refs: tuple[OutputRef, ...] = () runtime_duration_ms: int | None = None item_phases: dict[tuple[str, str], str | None] = {} - control_queue: asyncio.Queue[tuple[str, ResumePayload | None]] = asyncio.Queue() + control_queue: asyncio.Queue[ + tuple[str, ResumePayload | None, asyncio.Future[None] | None] + ] = asyncio.Queue() self._control_queues[run_id] = control_queue try: tool_approval_mode = str(spec.request_config.get("tool_approval_mode") or "") @@ -250,10 +294,13 @@ async def persist(runtime_event: RuntimeEvent) -> RunEvent: == "final_answer" ): text = event.update.text if isinstance(event.update, TextContent) else "" + item_key = (event.scope_id, event.item_id) if event.op == "replace": - streamed_final = text + streamed_text_by_item[item_key] = text else: - streamed_final += text + streamed_text_by_item[item_key] = ( + streamed_text_by_item.get(item_key, "") + text + ) elif ( isinstance(event, ItemCompleted) and event.item_kind == "message" @@ -262,10 +309,11 @@ async def persist(runtime_event: RuntimeEvent) -> RunEvent: ) == "final_answer" ): - for part in event.snapshot.parts: - if isinstance(part, TextContent): - final_text = part.text - break + completed_text_by_item[(event.scope_id, event.item_id)] = "".join( + part.text + for part in event.snapshot.parts + if isinstance(part, TextContent) + ) elif isinstance(event, UsageReported): record.usage = Usage( input_tokens=event.input_tokens, @@ -318,6 +366,7 @@ async def persist(runtime_event: RuntimeEvent) -> RunEvent: elif isinstance(event, RunCompleted): terminal_seen = True record.status = RunStatus.COMPLETED + terminal_output_refs = event.output_refs raw_duration = event.source.metadata.get("duration_ms") if raw_duration is None: metrics = event.source.metadata.get("metrics") @@ -331,7 +380,7 @@ async def persist(runtime_event: RuntimeEvent) -> RunEvent: record.status = RunStatus.COMPLETED break - command, resume_payload = await control_queue.get() + command, resume_payload, submit_ack = await control_queue.get() if command == "cancel" or self._cancel_flags.get(run_id): raise asyncio.CancelledError() if command != "resume": @@ -342,11 +391,18 @@ async def persist(runtime_event: RuntimeEvent) -> RunEvent: if native_thread_id else ResumeTarget(kind="invocation_id", id=handle.run_id) ) - handle = await self.executor.resume( - handle, - target, - resume_payload, - ) + try: + handle = await self.executor.resume( + handle, + target, + resume_payload, + ) + except Exception as exc: + if submit_ack is not None and not submit_ack.done(): + submit_ack.set_exception(exc) + raise + if submit_ack is not None and not submit_ack.done(): + submit_ack.set_result(None) self._active_handles[run_id] = handle record.runtime_handle = handle.model_dump(mode="json") record.status = RunStatus.RUNNING @@ -360,7 +416,17 @@ async def persist(runtime_event: RuntimeEvent) -> RunEvent: if on_event is not None: on_event(resumed) self.event_store.save(record) - record.output = final_text or streamed_final + text_by_item = {**streamed_text_by_item, **completed_text_by_item} + if terminal_output_refs: + terminal_parts = [ + text_by_item.get((ref.scope_id, ref.item_id), "") + for ref in terminal_output_refs + ] + record.output = "\n\n".join(part for part in terminal_parts if part) + else: + completed_parts = [part for part in completed_text_by_item.values() if part] + fallback_parts = [part for part in streamed_text_by_item.values() if part] + record.output = "\n\n".join(completed_parts or fallback_parts) except asyncio.CancelledError: cancel_result = "task_cancelled" if handle is not None and self.executor.is_attached(handle): @@ -440,6 +506,229 @@ async def persist(runtime_event: RuntimeEvent) -> RunEvent: async def _sync_trace(self, record: RunRecord) -> None: self.event_store.trace_store.sync(record, await self.events(record.id)) + async def _plugin_run( + self, + spec: StudioRunSpec, + user_input: str, + *, + record: RunRecord, + on_event: Callable[[RunEvent], None] | None, + ) -> RunRecord: + """Execute a composed Build without translating it into ADK/LangGraph. + + PluginHost retains the activation under the Studio session id. Harness + providers write canonical RuntimeEvents directly; providers that only + implement the minimum request/result protocol receive a canonical + envelope here so Studio still has one durable conversation/event model. + """ + + started = time.monotonic() + record.status = RunStatus.RUNNING + record.started_at = datetime.now(timezone.utc) + record.runtime_handle = { + "provider": "pluginhost", + "bundleDigest": str(spec.request_config.get("plugin_bundle_digest") or ""), + "activationKey": record.session_id, + } + self.event_store.save(record) + rows_before = await self.session_service.get_events(record.session_id) + after_seq = max((int(row.seq_id or 0) for row in rows_before), default=0) + + async def publish(events: list[RuntimeEvent]) -> None: + for runtime_event in events: + event_type, data = project_runtime_event( + runtime_event, + session_id=record.session_id, + ) + stored = self.event_store.append(record.id, event_type, data) + if on_event is not None: + on_event(stored) + + try: + if self.plugin_runtime is None: + raise StudioError( + "PLUGIN_RUNTIME_UNAVAILABLE", + "Studio 尚未配置 PluginHost Runtime", + status_code=503, + ) + request_metadata = { + key: value + for key, value in { + "tool_approval_mode": spec.request_config.get("tool_approval_mode"), + "collaboration_mode": spec.request_config.get("collaboration_mode"), + "goal_objective": spec.request_config.get("goal_objective"), + "reasoning_effort": spec.request_config.get("effort"), + }.items() + if value not in {None, ""} + } + result = await self.plugin_runtime.execute( + spec, + { + "user_id": "local-user", + "session_id": record.session_id, + "invocation_id": record.id, + "messages": [{"role": "user", "content": user_input}], + "model": spec.model, + "request_metadata": request_metadata, + }, + session_id=record.session_id, + ) + if result.session_id != record.session_id: + raise StudioError( + "PLUGIN_SESSION_MISMATCH", + "AgentProvider 返回了不同的 Session", + status_code=502, + details={ + "expected": record.session_id, + "actual": result.session_id, + }, + ) + canonical = await self._plugin_events_after( + record.session_id, + after_seq=after_seq, + run_id=record.id, + ) + if not canonical: + canonical = await self._persist_plugin_result_events( + record, + result.output_text, + usage=result.usage, + ) + await publish(canonical) + record.output = result.output_text + record.status = RunStatus.COMPLETED + _apply_plugin_usage(record, result.usage) + except asyncio.CancelledError: + record.status = RunStatus.CANCELLED + record.error = {"code": "RUN_CANCELLED", "message": "运行已取消"} + cancelled = await self.runtime_events.append_one( + record.session_id, + RunCanceled( + **_plugin_event_envelope(record, "run.canceled"), + status="canceled", + reason="cancelled", + ), + ) + await publish([cancelled]) + raise + except Exception as exc: # noqa: BLE001 - plugin boundary is typed below + record.status = RunStatus.FAILED + code = str(getattr(exc, "code", "PLUGIN_RUNTIME_FAILED")) + record.error = {"code": code, "message": str(exc)} + canonical = await self._plugin_events_after( + record.session_id, + after_seq=after_seq, + run_id=record.id, + ) + if canonical: + await publish(canonical) + else: + failed = await self.runtime_events.append_one( + record.session_id, + RunFailed( + **_plugin_event_envelope(record, "run.failed"), + status="failed", + error=ErrorInfo( + code=code, + message=str(exc), + source="pluginhost", + scope_id=record.id, + ), + ), + ) + await publish([failed]) + finally: + record.completed_at = datetime.now(timezone.utc) + record.duration_ms = int((time.monotonic() - started) * 1000) + record.duration_source = "studio" + self.event_store.save(record) + await self._sync_trace(record) + return record + + async def _plugin_events_after( + self, + session_id: str, + *, + after_seq: int, + run_id: str, + ) -> list[RuntimeEvent]: + rows = await self.session_service.get_events( + session_id, + after_seq_id=after_seq, + ) + events: list[RuntimeEvent] = [] + for row in rows: + event = session_event_to_runtime_event(row) + if event is not None and event.run_id == run_id: + events.append(event) + return events + + async def _persist_plugin_result_events( + self, + record: RunRecord, + output_text: str, + *, + usage: Mapping[str, Any], + ) -> list[RuntimeEvent]: + item_id = f"{record.id}:assistant" + part_id = f"{record.id}:text" + snapshot = ContentSnapshot( + parts=(TextContent(part_id=part_id, text=output_text),) + ) + events: list[RuntimeEvent] = [ + RunStarted( + **_plugin_event_envelope(record, "run.started"), + status="running", + ), + ItemStarted( + **_plugin_event_envelope(record, "item.started"), + item_id=item_id, + item_kind="message", + phase="final_answer", + ), + ItemUpdated( + **_plugin_event_envelope(record, "item.updated"), + item_id=item_id, + item_kind="message", + op="append", + update=TextContent(part_id=part_id, text=output_text), + ), + ItemCompleted( + **_plugin_event_envelope(record, "item.completed"), + item_id=item_id, + item_kind="message", + snapshot=snapshot, + ), + ] + normalized = _normalized_plugin_usage(usage) + if normalized["reported"]: + events.append( + UsageReported( + **_plugin_event_envelope(record, "usage.reported"), + input_tokens=normalized["input_tokens"], + output_tokens=normalized["output_tokens"], + total_tokens=normalized["total_tokens"], + cached_tokens=normalized["cached_tokens"], + reasoning_tokens=normalized["reasoning_tokens"], + ) + ) + events.append( + RunCompleted( + **_plugin_event_envelope(record, "run.completed"), + status="completed", + output_refs=( + OutputRef( + scope_id=record.id, + item_id=item_id, + part_id=part_id, + ), + ), + ) + ) + return [ + await self.runtime_events.append_one(record.session_id, event) + for event in events + ] async def _kernel_run( self, @@ -448,6 +737,7 @@ async def _kernel_run( *, record: RunRecord, on_event: Callable[[RunEvent], None] | None, + kernel_runtime: Any, ) -> RunRecord: """kernel 路径(灰度 opt-in):Studio run -> AgentControlCommand -> receipt。 @@ -464,9 +754,15 @@ async def _kernel_run( trusted = _kernel_ingress.trusted_context( source_kind="studio", source_ref=record.id, + # The Worker polls the concrete Kernel Runtime instance, not + # whichever synthetic ``local-agent`` happened to be inferred + # from a Studio request. A Studio Build may use the Kernel + # path only after ``_kernel_runtime_for_spec`` established that + # it is this Runtime's exact Agent/Runtime binding. + tenant_id=str(kernel_runtime.config.tenant_id), + agent_instance_id=str(kernel_runtime.config.agent_instance_id), session_id=record.session_id, operations=("enqueue",), - launch_context=spec.launch_context, ) idempotency_key = str( (spec.request_config or {}).get("idempotency_key") or record.id @@ -513,6 +809,7 @@ async def _kernel_run( self.event_store.save(record) await self._sync_trace(record) return record + except Exception as exc: # noqa: BLE001 logger.exception("Studio kernel ingress failed for run %s", record.id) record.status = RunStatus.FAILED @@ -526,12 +823,62 @@ async def _kernel_run( await self._sync_trace(record) return record + @staticmethod + def _kernel_runtime_for_spec(spec: StudioRunSpec) -> Any | None: + """Return the active Kernel Runtime only for its bound Studio Build. + + An in-process AgentKernel owns one concrete RuntimeAdapter factory and + its immutable startup defaults. Merely observing that a Kernel is + enabled is therefore insufficient: sending an arbitrary Studio Build + through it can silently execute the default Adapter instead. When the + binding is not exact, the existing direct Studio path remains the + compatible local behaviour; it is safer than manufacturing a false + AgentControl/Scheduler success. + """ + + from ksadk.kernel.bootstrap import get_agent_kernel_runtime + from ksadk.kernel.ingress import kernel_route_active + + if not kernel_route_active(): + return None + runtime = get_agent_kernel_runtime() + if runtime is None: + return None + active_context = getattr(runtime.config, "launch_context", None) + if active_context is None: + return None + if str(getattr(active_context, "runtime_type", "")).strip().lower() != ( + spec.launch_context.runtime_type.strip().lower() + ): + return None + try: + active_project = Path(active_context.project_dir).resolve() + build_project = Path(spec.launch_context.project_dir).resolve() + except (OSError, TypeError, ValueError): + return None + if active_project != build_project: + return None + defaults = getattr(runtime.config, "start_request_defaults", {}) or {} + bound_agent_id = str( + defaults.get("agent_id") or runtime.config.agent_instance_id + ).strip() + if bound_agent_id != spec.agent_id: + return None + declared_instance = str( + (spec.launch_context.config or {}).get("agent_instance_id") or "" + ).strip() + if declared_instance and declared_instance != str( + runtime.config.agent_instance_id + ): + return None + return runtime + async def cancel_run(self, run_id: str) -> dict[str, str]: """Request cancellation; the flag and executor perform the actual stop.""" self._cancel_flags[run_id] = True queue = self._control_queues.get(run_id) if queue is not None: - queue.put_nowait(("cancel", None)) + queue.put_nowait(("cancel", None, None)) handle = self._active_handles.get(run_id) if handle is not None and self.executor.is_attached(handle): try: @@ -582,7 +929,7 @@ async def resume_run(self, run_id: str) -> dict[str, str]: "Studio 进程已重启,当前暂停点无法恢复", status_code=409, ) - queue.put_nowait(("resume", ResumePayload(kind="free_text", data="继续运行"))) + queue.put_nowait(("resume", ResumePayload(kind="free_text", data="继续运行"), None)) return {"runId": run_id, "status": "resuming"} async def submit_interaction( @@ -592,28 +939,76 @@ async def submit_interaction( *, name: str, data: dict[str, Any] | None = None, + expected_revision: int, + idempotency_key: str, ) -> dict[str, Any]: - record = self.event_store.get(run_id) - if record.status != RunStatus.WAITING_INPUT: - raise StudioError( - "INTERACTION_NOT_PENDING", - "该 Run 当前没有等待中的交互", - status_code=409, + lock = self._interaction_locks.setdefault(run_id, asyncio.Lock()) + payload_data = dict(data or {}) + digest = hashlib.sha256( + json.dumps( + {"name": name, "data": payload_data}, + ensure_ascii=False, + sort_keys=True, + separators=(",", ":"), + ).encode("utf-8") + ).hexdigest() + async with lock: + return await self._submit_interaction_locked( + run_id, + interaction_id, + name=name, + data=payload_data, + expected_revision=expected_revision, + idempotency_key=idempotency_key, + request_digest=digest, ) - prior = [ - event - for event in self.event_store.events(run_id) - if event.type == "a2ui.action" - and str(event.data.get("interactionId") or event.data.get("interaction_id") or "") - == interaction_id - ] - if prior: - return {"runId": run_id, "interactionId": interaction_id, "status": "resolved"} + + async def _submit_interaction_locked( + self, + run_id: str, + interaction_id: str, + *, + name: str, + data: dict[str, Any], + expected_revision: int, + idempotency_key: str, + request_digest: str, + ) -> dict[str, Any]: + events = self.event_store.events(run_id) + prior = next( + ( + event + for event in reversed(events) + if event.type == "a2ui.action" + and str(event.data.get("interactionId") or "") == interaction_id + and _interaction_revision(event.data) > 0 + ), + None, + ) + if prior is not None: + if str(prior.data.get("idempotencyKey") or "") != idempotency_key: + raise StudioError( + "INTERACTION_ALREADY_RESOLVED", + "该交互已由其他请求处理", + status_code=409, + ) + if str(prior.data.get("requestDigest") or "") != request_digest: + raise StudioError( + "INTERACTION_IDEMPOTENCY_CONFLICT", + "同一幂等键不能提交不同内容", + status_code=409, + ) + record = self.event_store.get(run_id) + if record.status == RunStatus.WAITING_INPUT: + record.status = RunStatus.RUNNING + self.event_store.save(record) + self._waiting_modes.pop(run_id, None) + return dict(prior.data.get("receipt") or {}) interaction = next( ( event - for event in reversed(self.event_store.events(run_id)) + for event in reversed(events) if event.type == "a2ui.interaction" and str(event.data.get("interactionId") or event.data.get("interaction_id") or "") == interaction_id @@ -622,8 +1017,29 @@ async def submit_interaction( ) if interaction is None: raise StudioError("INTERACTION_NOT_FOUND", "交互请求不存在", status_code=404) + revision = _interaction_revision(interaction.data) + if revision < 1: + raise StudioError( + "INTERACTION_READ_ONLY", + "交互请求缺少权威 revision,只能查看不能操作", + status_code=409, + ) + if expected_revision != revision: + raise StudioError( + "INTERACTION_REVISION_MISMATCH", + "交互版本已变化,请刷新后重试", + status_code=409, + details={"expectedRevision": expected_revision, "actualRevision": revision}, + ) + record = self.event_store.get(run_id) + if record.status != RunStatus.WAITING_INPUT: + raise StudioError( + "INTERACTION_NOT_PENDING", + "该 Run 当前没有等待中的交互", + status_code=409, + ) kind = str(interaction.data.get("kind") or "form") - payload_data = {"decision": name, **dict(data or {})} + payload_data = {"decision": name, **data} payload = ResumePayload( kind="approval_decision" if kind == "approval" else "hitl_answer", call_id=interaction_id, @@ -636,7 +1052,7 @@ async def submit_interaction( raise StudioError("INTERACTION_EXPIRED", "运行时交互已失效", status_code=409) try: await self.executor.submit(handle, payload) - except (RuntimeError, ValueError) as exc: + except Exception as exc: # noqa: BLE001 - provider errors are user-safe here raise StudioError( "INTERACTION_SUBMIT_FAILED", str(exc), @@ -646,45 +1062,54 @@ async def submit_interaction( queue = self._control_queues.get(run_id) if queue is None: raise StudioError("INTERACTION_EXPIRED", "运行时交互已失效", status_code=409) - queue.put_nowait(("resume", payload)) + submit_ack = asyncio.get_running_loop().create_future() + queue.put_nowait(("resume", payload, submit_ack)) + try: + await submit_ack + except Exception as exc: # noqa: BLE001 - provider errors are user-safe here + raise StudioError( + "INTERACTION_SUBMIT_FAILED", + str(exc), + status_code=409, + ) from exc else: raise StudioError("INTERACTION_EXPIRED", "运行时交互已失效", status_code=409) - resolved = self.event_store.append( - run_id, - "approval.resolved" if kind == "approval" else "interaction.resolved", - { - "runId": run_id, - "interactionId": interaction_id, - "callId": interaction_id, - "name": name, - "data": dict(data or {}), - }, - ) - action = self.event_store.append( + next_revision = revision + 1 + resolved_data = { + "runId": run_id, + "interactionId": interaction_id, + "callId": interaction_id, + "name": name, + "data": data, + "revision": next_revision, + "expectedRevision": expected_revision, + "idempotencyKey": idempotency_key, + } + action_data = { + "runId": run_id, + "surfaceId": str( + interaction.data.get("surfaceId") or interaction.data.get("surface_id") or "" + ), + "interactionId": interaction_id, + "actionId": f"action-{interaction_id}", + "name": name, + "data": data, + "revision": next_revision, + "expectedRevision": expected_revision, + "idempotencyKey": idempotency_key, + "requestDigest": request_digest, + } + _, _, receipt = self.event_store.append_interaction_resolution( run_id, - "a2ui.action", - { - "runId": run_id, - "surfaceId": str( - interaction.data.get("surfaceId") or interaction.data.get("surface_id") or "" - ), - "interactionId": interaction_id, - "actionId": f"action-{interaction_id}", - "name": name, - "data": dict(data or {}), - }, + resolved_type=("approval.resolved" if kind == "approval" else "interaction.resolved"), + resolved_data=resolved_data, + action_data=action_data, ) record.status = RunStatus.RUNNING self.event_store.save(record) self._waiting_modes.pop(run_id, None) - return { - "runId": run_id, - "interactionId": interaction_id, - "status": "resolved", - "eventId": action.id, - "resolutionEventId": resolved.id, - } + return receipt async def _capture_pcm_evidence( self, @@ -831,6 +1256,7 @@ def _persist_approval_surface( "surfaceId": surface_id, "interactionId": approval_id, "kind": "approval", + "revision": 1, "inputSchema": { "type": "object", "properties": { @@ -881,7 +1307,96 @@ def _native_session_metadata( return {} -def project_runtime_event(event: RuntimeEvent) -> tuple[str, dict[str, Any]]: +def _plugin_event_envelope(record: RunRecord, event_type: str) -> dict[str, Any]: + return { + "schema_version": 2, + "event_id": f"{record.id}:{event_type}", + "seq": 0, + "timestamp": time.time(), + "run_id": record.id, + "scope_id": record.id, + "source": SourceRef( + framework="ksadk", + metadata={ + "runtime": "pluginhost", + "agent_id": record.agent_id, + "session_id": record.session_id, + "build_id": record.build_id, + }, + ), + } + + +def _normalized_plugin_usage(usage: Mapping[str, Any]) -> dict[str, Any]: + def number(*keys: str) -> int: + for key in keys: + value = usage.get(key) + if value is not None: + try: + return max(0, int(value)) + except (TypeError, ValueError): + return 0 + return 0 + + normalized = { + "input_tokens": number("input_tokens", "inputTokens", "prompt_tokens"), + "output_tokens": number( + "output_tokens", "outputTokens", "completion_tokens" + ), + "total_tokens": number("total_tokens", "totalTokens"), + "cached_tokens": number("cached_tokens", "cachedTokens"), + "reasoning_tokens": number("reasoning_tokens", "reasoningTokens"), + } + if not normalized["total_tokens"]: + normalized["total_tokens"] = ( + normalized["input_tokens"] + normalized["output_tokens"] + ) + normalized["reported"] = bool(usage) and any( + key in usage + for key in ( + "input_tokens", + "inputTokens", + "prompt_tokens", + "output_tokens", + "outputTokens", + "completion_tokens", + "total_tokens", + "totalTokens", + ) + ) + return normalized + + +def _interaction_revision(data: Mapping[str, Any]) -> int: + """Treat malformed or historical interaction revisions as read-only.""" + + try: + return max(0, int(data.get("revision") or 0)) + except (TypeError, ValueError): + return 0 + + +def _apply_plugin_usage(record: RunRecord, usage: Mapping[str, Any]) -> None: + normalized = _normalized_plugin_usage(usage) + if not normalized["reported"]: + return + record.usage = Usage( + input_tokens=normalized["input_tokens"], + output_tokens=normalized["output_tokens"], + total_tokens=normalized["total_tokens"], + cached_input_tokens=normalized["cached_tokens"], + reasoning_output_tokens=normalized["reasoning_tokens"], + reported=True, + source="pluginhost", + ) + + +def project_runtime_event( + event: RuntimeEvent, + *, + session_id: str | None = None, + public_run_id: str | None = None, +) -> tuple[str, dict[str, Any]]: """Project the canonical RuntimeEvent into Studio's persisted event view. 公开承诺字段(契约声明见 ``ksadk/events/projections.py``,执行形态为 @@ -1045,7 +1560,18 @@ def project_runtime_event(event: RuntimeEvent) -> tuple[str, dict[str, Any]]: payload = {} _attach_studio_identity(payload, event) + if public_run_id and public_run_id != event.run_id: + payload["runtimeRunId"] = event.run_id + payload["runId"] = public_run_id payload["runtimeEvent"] = dump_runtime_event(event) + # Additive only: legacy Studio/Web consumers keep reading the established + # event type and payload keys. New surfaces may opt into this typed, + # identity-aware representation without reconstructing one from text. + payload["conversationItem"] = project_conversation_item( + event, + session_id=session_id, + run_id=public_run_id, + ).model_dump(by_alias=True, exclude_none=True, mode="json") return projected, payload @@ -1122,6 +1648,44 @@ def _studio_envelope_projection(envelope) -> tuple[str, dict[str, Any]] | None: """Session envelope -> Studio RunEvent 投影;cursor 仍用 envelope.seq。""" payload = envelope.payload or {} + # Kernel RuntimeEvent is persisted as a typed runtime/v2 SessionEvent + # envelope. Reuse the exact same projector as the direct Studio path so + # a consumer receives its additive ConversationItem regardless of which + # ingress delivered the Run. Legacy event families retain the historical + # text-only fallback below. + if envelope.family == "runtime" and envelope.family_version == 2: + try: + runtime_event = parse_runtime_event(payload) + except (TypeError, ValueError): + # A damaged/unknown runtime payload must not make old Studio + # subscriptions fail. Preserve its event type for legacy + # observability while refusing to invent a typed conversation item. + return envelope.event_type, {"runId": envelope.run_id or ""} + return project_runtime_event(runtime_event, session_id=envelope.session_id) + if envelope.family == "interaction" and envelope.family_version == 1: + conversation_item = project_interaction_conversation_item(envelope) + if conversation_item is None: + # Keep a malformed durable fact observable without reusing an + # actionable legacy event name. Existing Studio reducers turn + # ``approval.requested`` into a submit button, so emitting that + # name without an authoritative revision would bypass the typed + # ConversationItem fail-closed boundary. + payload = envelope.payload or {} + return envelope.event_type, { + "runId": envelope.run_id or str(payload.get("run_id") or ""), + "itemId": str(payload.get("interaction_id") or envelope.event_id), + "interactionReadOnly": True, + } + projected = _project_interaction_envelope_legacy(envelope) + if projected is None: + return None + event_type, data = projected + data["conversationItem"] = conversation_item.model_dump( + by_alias=True, + exclude_none=True, + mode="json", + ) + return event_type, data if envelope.event_type == "run.completed": return "run.completed", { "runId": envelope.run_id or "", @@ -1131,3 +1695,70 @@ def _studio_envelope_projection(envelope) -> tuple[str, dict[str, Any]] | None: if text: return "message.delta", {"delta": text} return None + + +def _project_interaction_envelope_legacy( + envelope, +) -> tuple[str, dict[str, Any]] | None: + """Keep established Studio event names while Interaction/v1 owns truth.""" + + payload = envelope.payload or {} + interaction_id = str(payload.get("interaction_id") or "") + interaction_kind = str(payload.get("kind") or "") + revision = payload.get("revision") + request = payload.get("request") + request = request if isinstance(request, Mapping) else {} + presentation = request.get("presentation") + presentation = presentation if isinstance(presentation, Mapping) else {} + common: dict[str, Any] = { + "runId": envelope.run_id or str(payload.get("run_id") or ""), + "itemId": interaction_id, + "interactionId": interaction_id, + } + # Expose the value as received for legacy/read-only diagnostics. Only the + # typed ConversationItem validates it as an authoritative writable token. + if revision is not None: + common["revision"] = revision + + if envelope.event_type == "interaction.requested": + if interaction_kind == "approval": + return "approval.requested", { + **common, + "approvalId": interaction_id, + "callId": "", + "kind": str(presentation.get("title") or interaction_kind), + "detail": presentation.get("description"), + } + return "a2ui.interaction", { + **common, + "kind": interaction_kind or "form", + "inputSchema": ( + dict(request.get("request_schema")) + if isinstance(request.get("request_schema"), Mapping) + else {} + ), + } + if envelope.event_type in { + "interaction.resolved", + "interaction.cancelled", + "interaction.expired", + }: + outcome = str( + payload.get("outcome") + or ( + "cancelled" + if envelope.event_type == "interaction.cancelled" + else "expired" + if envelope.event_type == "interaction.expired" + else "" + ) + ) + if interaction_kind == "approval": + return "approval.resolved", { + **common, + "approvalId": interaction_id, + "callId": "", + "decision": outcome, + } + return "a2ui.action", {**common, "name": outcome} + return None diff --git a/ksadk/studio/runtime_source.py b/ksadk/studio/runtime_source.py index 5a011a5b..8c6cbf65 100644 --- a/ksadk/studio/runtime_source.py +++ b/ksadk/studio/runtime_source.py @@ -30,7 +30,15 @@ def materialize_generated_runtime_source( """ runtime = draft.spec.runtime - if runtime is None or runtime.type == "codex" or not runtime.project_path: + # Only the two legacy Python-framework runtimes own generated source. + # Harness and externally installed AgentProviders are bundle compositions; + # treating either as the ``else`` branch here would silently generate a + # LangGraph project and change the selected provider's execution model. + if ( + runtime is None + or runtime.type not in {"adk", "langgraph"} + or not runtime.project_path + ): return root = workspace.resolve(runtime.project_path) marker = root / _GENERATED_MARKER diff --git a/ksadk/studio/scheduler_runtime.py b/ksadk/studio/scheduler_runtime.py new file mode 100644 index 00000000..34b0bd5e --- /dev/null +++ b/ksadk/studio/scheduler_runtime.py @@ -0,0 +1,374 @@ +"""Build-pinned AgentKernel runtimes owned by the local Studio scheduler. + +The ordinary Studio conversation path may keep using its historical direct +RuntimeExecutor or an independently enabled HTTP Kernel. Scheduler Lite owns +neither of those lifecycles. Instead it lazily starts one in-process Kernel +runtime for each immutable Build referenced by a local scheduled task. + +This is intentionally a registry rather than another process-global Kernel: +one AgentKernelWorker has one concrete RuntimeAdapter factory, so reusing a +single global worker for multiple Studio Builds can execute the wrong Agent. +The registry keeps ``Build -> instance -> Runtime`` exact and dispatches every +occurrence through that runtime's AgentControl Inbox and canonical +SessionEvent log. +""" + +from __future__ import annotations + +import asyncio +import hashlib +from collections.abc import Callable +from dataclasses import dataclass +from uuid import uuid4 + +from ksadk.kernel.bootstrap import ( + AgentKernelRuntime, + AgentKernelRuntimeConfig, + build_agent_kernel_runtime, +) +from ksadk.kernel.contracts import ( + AgentControlCommand, + AgentControlPermit, + AgentControlReceipt, + SessionEventSubscription, +) +from ksadk.kernel.ingress import trusted_context +from ksadk.runtime import RuntimeAdapter +from ksadk.scheduler.contracts import ScheduledTaskTarget, ScheduleOccurrence +from ksadk.sessions.base import BaseSessionService +from ksadk.studio.run_service import StudioRunSpec + +ResolveBuild = Callable[[str], StudioRunSpec] +ResolveAdapterProvider = Callable[ + [StudioRunSpec], Callable[[], RuntimeAdapter] +] + + +class StudioSchedulerRuntimeError(RuntimeError): + """Stable local scheduling failure safe to persist on an occurrence.""" + + def __init__(self, code: str, message: str) -> None: + super().__init__(message) + self.code = code + + +@dataclass(frozen=True) +class StudioScheduledRuntimeTarget: + """Server-owned immutable routing facts persisted on ScheduledTask/v1.""" + + build_id: str + agent_id: str + tenant_id: str + agent_instance_id: str + + +@dataclass +class _RuntimeEntry: + target: StudioScheduledRuntimeTarget + spec: StudioRunSpec + runtime: AgentKernelRuntime + + +class StudioScheduledKernelRegistry: + """Own exact per-Build Kernel runtimes for one Studio process. + + The registry does not register anything in ``ksadk.kernel.ingress`` and + therefore cannot redirect normal conversations or hosted HTTP traffic. + Scheduler dispatch uses :meth:`submit` and :meth:`read_events` directly, + while still crossing the frozen AgentControl permit/admission boundary. + """ + + def __init__( + self, + *, + resolve_build: ResolveBuild, + resolve_adapter_provider: ResolveAdapterProvider, + session_service: BaseSessionService, + runtime_executor: object | None = None, + tenant_id: str = "local-studio", + workspace_id: str = "studio-scheduler", + poll_interval: float = 0.05, + lease_ttl_seconds: float = 30.0, + ) -> None: + self._resolve_build = resolve_build + self._resolve_adapter_provider = resolve_adapter_provider + self._session_service = session_service + self._runtime_executor = runtime_executor + self._tenant_id = tenant_id + self._workspace_id = workspace_id + self._poll_interval = poll_interval + self._lease_ttl_seconds = lease_ttl_seconds + self._owner_id = uuid4().hex + self._entries_by_build: dict[str, _RuntimeEntry] = {} + self._build_by_instance: dict[str, str] = {} + self._lock = asyncio.Lock() + self._started = False + + @property + def started(self) -> bool: + return self._started + + @property + def active_runtime_count(self) -> int: + return len(self._entries_by_build) + + async def start(self) -> None: + self._started = True + + async def ensure_build( + self, + build_id: str, + *, + expected_agent_id: str | None = None, + ) -> StudioScheduledRuntimeTarget: + """Start or return the exact Runtime owned by one immutable Build.""" + + normalized = str(build_id).strip() + if not normalized: + raise StudioSchedulerRuntimeError( + "SCHEDULER_BUILD_REQUIRED", + "定时任务缺少不可变 Build 标识", + ) + if not self._started: + raise StudioSchedulerRuntimeError( + "SCHEDULER_RUNTIME_NOT_STARTED", + "Studio Scheduler Runtime 尚未启动", + ) + existing = self._entries_by_build.get(normalized) + if existing is not None: + self._require_agent(existing.spec, expected_agent_id) + return existing.target + + async with self._lock: + existing = self._entries_by_build.get(normalized) + if existing is not None: + self._require_agent(existing.spec, expected_agent_id) + return existing.target + try: + spec = self._resolve_build(normalized) + except Exception as error: + raise StudioSchedulerRuntimeError( + "SCHEDULER_BUILD_UNAVAILABLE", + f"定时任务绑定的 Build {normalized!r} 不可用", + ) from error + if spec.build_id != normalized: + raise StudioSchedulerRuntimeError( + "SCHEDULER_BUILD_MISMATCH", + "Build 解析结果与定时任务绑定不一致", + ) + self._require_agent(spec, expected_agent_id) + try: + adapter_provider = self._resolve_adapter_provider(spec) + except Exception as error: + raise StudioSchedulerRuntimeError( + "SCHEDULER_PROVIDER_UNAVAILABLE", + f"Build {normalized!r} 的 AgentProvider 不可用", + ) from error + + # ``build_agent_kernel_runtime`` asks the provider once to snapshot + # capabilities. Retain that exact adapter for the first worker or + # recovery acquisition instead of constructing and discarding a + # resource-owning Codex/Harness adapter during registration. + retained_first_adapter: RuntimeAdapter | None = None + first_adapter_borrowed = False + + def checked_adapter_provider() -> RuntimeAdapter: + nonlocal retained_first_adapter, first_adapter_borrowed + if retained_first_adapter is not None and not first_adapter_borrowed: + first_adapter_borrowed = True + adapter = retained_first_adapter + retained_first_adapter = None + return adapter + adapter = adapter_provider() + if not isinstance(adapter, RuntimeAdapter): + raise StudioSchedulerRuntimeError( + "SCHEDULER_PROVIDER_INVALID", + "AgentProvider 没有返回 RuntimeAdapter", + ) + if retained_first_adapter is None and not first_adapter_borrowed: + retained_first_adapter = adapter + return adapter + + instance_id = self._instance_id(normalized) + config = AgentKernelRuntimeConfig( + agent_instance_id=instance_id, + authority_mode="local", + driver="memory", + durability_tier="ephemeral", + adapter_provider=checked_adapter_provider, + session_service=self._session_service, + runtime_executor=self._runtime_executor, + launch_context=spec.launch_context, + start_request_defaults=self._start_defaults(spec), + tenant_id=self._tenant_id, + workspace_id=self._workspace_id, + poll_interval=self._poll_interval, + lease_ttl_seconds=self._lease_ttl_seconds, + activation_id=f"studio-scheduler:{self._owner_id}:{instance_id}", + runtime_type=spec.launch_context.runtime_type, + bundle_digest=spec.manifest_sha256 or normalized, + ) + runtime = build_agent_kernel_runtime(config) + try: + await runtime.start() + except Exception: + await runtime.close() + raise + target = StudioScheduledRuntimeTarget( + build_id=normalized, + agent_id=spec.agent_id, + tenant_id=self._tenant_id, + agent_instance_id=instance_id, + ) + self._entries_by_build[normalized] = _RuntimeEntry( + target=target, + spec=spec, + runtime=runtime, + ) + self._build_by_instance[instance_id] = normalized + return target + + async def ensure_target( + self, target: ScheduledTaskTarget + ) -> StudioScheduledRuntimeTarget: + build_id = str(target.agent_version_ref or "").strip() + exact = await self.ensure_build( + build_id, + expected_agent_id=target.agent_id, + ) + if ( + target.tenant_id != exact.tenant_id + or target.agent_instance_id != exact.agent_instance_id + ): + raise StudioSchedulerRuntimeError( + "SCHEDULER_TARGET_MISMATCH", + "定时任务目标与不可变 Build 的 Kernel 身份不一致", + ) + return exact + + def runtime_for_build(self, build_id: str) -> AgentKernelRuntime: + entry = self._entries_by_build.get(str(build_id)) + if entry is None: + raise StudioSchedulerRuntimeError( + "SCHEDULER_TARGET_UNAVAILABLE", + "定时任务目标 Kernel 未注册", + ) + return entry.runtime + + async def submit( + self, + command: AgentControlCommand, + permit: AgentControlPermit, + ) -> AgentControlReceipt: + entry = self._entry_for_instance(command.agent_instance_id) + if command.tenant_id != entry.target.tenant_id: + raise StudioSchedulerRuntimeError( + "SCHEDULER_TARGET_MISMATCH", + "AgentControl tenant 与 Build Kernel 不一致", + ) + if await self._session_service.get_session(command.session_id) is None: + await self._session_service.create_session( + agent_id=entry.target.agent_id, + user_id=command.tenant_id, + session_id=command.session_id, + ) + return await entry.runtime.kernel.submit(command, permit=permit) + + async def read_events( + self, occurrence: ScheduleOccurrence + ) -> tuple[tuple[int, object], ...]: + target = occurrence.target + if target is None: + return () + await self.ensure_target(target) + entry = self._entry_for_instance(target.agent_instance_id) + trusted = trusted_context( + source_kind="scheduler", + source_ref=occurrence.occurrence_id, + tenant_id=target.tenant_id, + agent_instance_id=target.agent_instance_id, + session_id=occurrence.session_id, + operations=("subscribe_events",), + ) + cursor = occurrence.last_event_seq + if cursor is None: + cursor = occurrence.accepted_seq or 0 + subscription = SessionEventSubscription( + tenant_id=trusted.tenant_id, + agent_instance_id=trusted.agent_instance_id, + session_id=occurrence.session_id, + authorization_ref=trusted.permit.permit_id, + after_seq=cursor, + ) + result: list[tuple[int, object]] = [] + stream = entry.runtime.kernel.subscribe( + subscription, + permit=trusted.permit, + timeout=0.05, + ) + try: + async for envelope in stream: + result.append((int(envelope.seq), envelope)) + if len(result) >= 100: + break + finally: + await stream.aclose() + return tuple(result) + + async def close(self) -> None: + async with self._lock: + entries = list(self._entries_by_build.values()) + self._entries_by_build.clear() + self._build_by_instance.clear() + self._started = False + first_error: BaseException | None = None + for entry in reversed(entries): + try: + await entry.runtime.close() + except BaseException as error: # cleanup must continue for other Builds + if first_error is None: + first_error = error + if first_error is not None: + raise first_error + + def _entry_for_instance(self, instance_id: str) -> _RuntimeEntry: + build_id = self._build_by_instance.get(str(instance_id)) + entry = self._entries_by_build.get(build_id or "") + if entry is None: + raise StudioSchedulerRuntimeError( + "SCHEDULER_TARGET_UNAVAILABLE", + "定时任务目标 Kernel 未注册", + ) + return entry + + def _instance_id(self, build_id: str) -> str: + digest = hashlib.sha256(build_id.encode("utf-8")).hexdigest()[:24] + return f"studio-schedule-{digest}" + + @staticmethod + def _require_agent(spec: StudioRunSpec, expected_agent_id: str | None) -> None: + if expected_agent_id and spec.agent_id != expected_agent_id: + raise StudioSchedulerRuntimeError( + "SCHEDULER_AGENT_MISMATCH", + "定时任务 Agent 与不可变 Build 不一致", + ) + + @staticmethod + def _start_defaults(spec: StudioRunSpec) -> dict[str, object]: + defaults: dict[str, object] = { + "agent_id": spec.agent_id, + "config": dict(spec.request_config), + } + if spec.model: + defaults["model"] = spec.model + defaults["allowed_models"] = [spec.model] + return defaults + + +__all__ = [ + "ResolveAdapterProvider", + "ResolveBuild", + "StudioScheduledKernelRegistry", + "StudioScheduledRuntimeTarget", + "StudioSchedulerRuntimeError", +] diff --git a/ksadk/studio/scheduler_service.py b/ksadk/studio/scheduler_service.py new file mode 100644 index 00000000..67a70fe9 --- /dev/null +++ b/ksadk/studio/scheduler_service.py @@ -0,0 +1,211 @@ +"""Studio-facing lifecycle for the local Scheduler Lite backend. + +This service owns only local scheduling intent and occurrence history. It +does not silently start a second runtime or submit prompts directly: when the +local AgentKernel route is unavailable it reports that condition explicitly. +""" + +from __future__ import annotations + +from datetime import datetime, timezone +from typing import TYPE_CHECKING + +from ksadk.kernel.ingress import kernel_route_active +from ksadk.scheduler import ( + AgentControlSchedulerDispatcher, + SchedulerDispatchError, + SchedulerEngine, + SchedulerSQLiteStore, + next_schedule_time, +) +from ksadk.scheduler.contracts import ScheduledTask, ScheduledTaskTarget, ScheduleOccurrence +from ksadk.studio.errors import StudioError, not_found +from ksadk.studio.workspace import Workspace + +if TYPE_CHECKING: + from ksadk.studio.scheduler_runtime import StudioScheduledKernelRegistry + + +class StudioSchedulerService: + """CRUD and explicit local process lifecycle for ``ScheduledTask/v1``.""" + + def __init__( + self, + workspace: Workspace, + *, + runtime_registry: StudioScheduledKernelRegistry | None = None, + ) -> None: + self.workspace = workspace + self.runtime_registry = runtime_registry + self.store = SchedulerSQLiteStore( + workspace.resolve(".agentkit/scheduler/scheduler.sqlite3") + ) + dispatcher = ( + AgentControlSchedulerDispatcher( + runtime_registry.submit, + event_reader=runtime_registry.read_events, + target_preparer=self._prepare_target, + ) + if runtime_registry is not None + else AgentControlSchedulerDispatcher() + ) + self.engine = SchedulerEngine( + self.store, + dispatcher, + # Keep the local monitor alive when Studio starts before a Runtime. + # It observes availability on every scan and never claims work while + # the trusted Kernel route is absent. + tick_guard=self._runtime_available, + ) + + def availability(self) -> dict[str, object]: + active = self._runtime_available() + engine = self.engine.status() + return { + "available": active, + "scope": "local_studio_process", + "alwaysOn": False, + "reason": "agent_kernel_route_inactive" if not active else None, + "triggerActive": bool(active and engine["running"]), + "store": "sqlite", + **engine, + } + + def list_tasks(self) -> list[ScheduledTask]: + return [task for task, _generation in self.store.list_tasks()] + + def get_task(self, task_id: str) -> ScheduledTask: + item = self.store.get_task(task_id) + if item is None: + raise not_found("schedule", task_id) + return item[0] + + def list_occurrences(self, task_id: str, *, limit: int = 50) -> list[ScheduleOccurrence]: + # A deleted task intentionally retains occurrence history, so query the + # history table directly rather than requiring a live task row. + return self.store.list_occurrences(task_id, limit=limit) + + def list_all_occurrences(self, *, limit: int = 200) -> list[ScheduleOccurrence]: + return self.store.list_all_occurrences(limit=limit) + + def create_task(self, task: ScheduledTask) -> ScheduledTask: + if self.store.get_task(task.task_id) is not None: + raise StudioError( + "SCHEDULE_ALREADY_EXISTS", + "该定时任务已存在", + status_code=409, + details={"id": task.task_id}, + ) + prepared = self._prepare(task) + self.store.put_task(prepared, generation=1) + return prepared + + def update_task(self, task_id: str, task: ScheduledTask) -> ScheduledTask: + if task.task_id != task_id: + raise StudioError( + "SCHEDULE_ID_IMMUTABLE", + "定时任务 ID 不可修改", + status_code=422, + field="taskId", + ) + existing = self.store.get_task(task_id) + if existing is None: + raise not_found("schedule", task_id) + old, generation = existing + prepared = self._prepare( + task.model_copy(update={"created_at": old.created_at}), + reset_next_run=True, + ) + self.store.put_task(prepared, generation=generation + 1) + return prepared + + def delete_task(self, task_id: str) -> None: + if not self.store.delete_task(task_id): + raise not_found("schedule", task_id) + + async def run_now(self, task_id: str) -> ScheduleOccurrence: + self._require_kernel_route() + try: + return await self.engine.run_now(task_id) + except KeyError as exc: + raise not_found("schedule", task_id) from exc + except SchedulerDispatchError as exc: + raise StudioError( + exc.code, + exc.detail, + status_code=409 if exc.code in {"TASK_DISABLED", "CONCURRENCY_FORBID"} else 422, + ) from exc + + async def tick(self) -> list[ScheduleOccurrence]: + self._require_kernel_route() + return await self.engine.tick() + + async def start_if_available(self) -> bool: + # The monitor is process-local and cheap. Starting it unconditionally + # is what lets a Runtime launched after Studio startup begin scheduling + # without a daemon restart. The engine's tick_guard is the fail-closed + # admission boundary while no Kernel route exists. + if self.runtime_registry is not None: + await self.runtime_registry.start() + await self.engine.start() + return self._runtime_available() + + async def stop(self) -> None: + try: + await self.engine.stop() + finally: + if self.runtime_registry is not None: + await self.runtime_registry.close() + + def _prepare(self, task: ScheduledTask, *, reset_next_run: bool = False) -> ScheduledTask: + now = datetime.now(timezone.utc) + next_run_at = task.next_run_at + if reset_next_run or next_run_at is None: + next_run_at = next_schedule_time( + task.schedule, + after=now, + anchor_at=task.created_at, + ) + if task.enabled and next_run_at is None: + raise StudioError( + "SCHEDULE_NOT_FUTURE", + "启用的单次任务必须指定未来的触发时间", + status_code=422, + field="schedule.at", + ) + return task.model_copy(update={"next_run_at": next_run_at, "updated_at": now}) + + def _runtime_available(self) -> bool: + if self.runtime_registry is not None: + return self.runtime_registry.started + return kernel_route_active() + + def _require_kernel_route(self) -> None: + if not self._runtime_available(): + raise StudioError( + "SCHEDULER_RUNTIME_UNAVAILABLE", + "本地 Agent Kernel 未启用,定时任务不会伪装为已运行", + status_code=409, + ) + + async def _prepare_target(self, target: ScheduledTaskTarget) -> object: + """Resolve the build-pinned Kernel target, preserving typed failures. + + StudioScheduledKernelRegistry.ensure_target raises + StudioSchedulerRuntimeError (for example SCHEDULER_BUILD_UNAVAILABLE + when agent_version_ref is not a real immutable Build id). Without this + adapter the SchedulerEngine generic except Exception collapses every such + failure into an opaque DISPATCH_FAILED occurrence, hiding the real reason. + Re-raise it as a SchedulerDispatchError so the durable occurrence keeps + the actionable error code instead of the catch-all. + """ + + from ksadk.studio.scheduler_runtime import StudioSchedulerRuntimeError + + try: + return await self.runtime_registry.ensure_target(target) # type: ignore[union-attr] + except StudioSchedulerRuntimeError as error: + raise SchedulerDispatchError(error.code, str(error)) from error + + +__all__ = ["StudioSchedulerService"] diff --git a/ksadk/studio/service.py b/ksadk/studio/service.py index e853d278..cb02e5f8 100644 --- a/ksadk/studio/service.py +++ b/ksadk/studio/service.py @@ -4,8 +4,11 @@ import asyncio import hashlib +import json import logging import os +import zipfile +from collections.abc import Mapping, Sequence from dataclasses import dataclass from pathlib import Path from typing import Any, Callable, Literal, cast @@ -13,6 +16,7 @@ from uuid import uuid4 from ksadk.api import AgentEngineClient +from ksadk.conversations.contracts import ConversationCapability, ConversationSurface from ksadk.evaluation import ( EvaluationConfig as PublicEvaluationConfig, ) @@ -39,10 +43,22 @@ from ksadk.events.store import RuntimeEventStore from ksadk.observability.session_log import SessionLogError, export_session_log from ksadk.observability.trajectory import encode_sse, project_trajectory_event +from ksadk.plugins.contracts import PluginManifest +from ksadk.plugins.providers.legacy import LegacyHarnessSource +from ksadk.plugins.providers.legacy_catalog import ( + KSADK_HARNESS_AGENT_PROVIDER_PLUGIN_ID, +) from ksadk.runtime import RuntimeExecutor, build_default_runtime_registry +from ksadk.scheduler.contracts import ( + ScheduleCommandTemplate, + ScheduledTask, + ScheduledTaskTarget, + ScheduleSpec, +) from ksadk.sessions.local_service import LocalSessionService from ksadk.studio.agent_avatar_assets import AgentAvatarAssetStore from ksadk.studio.agent_lifecycle import delete_framework_agent +from ksadk.studio.attachment_store import ConversationAttachmentStore from ksadk.studio.authoring_coordinator import StudioAuthoringCoordinator from ksadk.studio.builder import AgentBundleBuilder from ksadk.studio.capabilities import builtin_tool_contracts @@ -84,6 +100,10 @@ RuntimeRef, ToolContract, ) +from ksadk.studio.dsh_provider_registration import ( + StudioDshProviderRegistrationError, + StudioDshProviderRegistrationManager, +) from ksadk.studio.errors import StudioError from ksadk.studio.event_store import RunEventStore from ksadk.studio.framework_run import FrameworkRunSpecResolver @@ -91,11 +111,19 @@ from ksadk.studio.model_client import CredentialResolver, OpenAICompatibleModelClient from ksadk.studio.model_profile_service import test_model_profile_connection from ksadk.studio.operations import OperationManager +from ksadk.studio.plugin_composition import StudioPluginCompositionCompiler +from ksadk.studio.plugin_runtime import StudioPluginRuntime from ksadk.studio.repository import AgentDraftRepository, BuildRepository, load_yaml_file from ksadk.studio.resource_catalog import LocalResourceCatalog -from ksadk.studio.run_service import StudioRunService +from ksadk.studio.run_service import StudioRunService, StudioRunSpec from ksadk.studio.runtime_catalog import inspect_runtime_catalog from ksadk.studio.runtime_source import materialize_generated_runtime_source +from ksadk.studio.scheduler_runtime import ( + StudioScheduledKernelRegistry, + StudioSchedulerRuntimeError, +) +from ksadk.studio.scheduler_service import StudioSchedulerService +from ksadk.studio.soul import soul_digest from ksadk.studio.templates import ( compose_blank_agent, compose_research_agent, @@ -129,11 +157,34 @@ def __init__( cloud_gateway: CloudDeploymentGateway | None = None, codex_runtime_inspector: RuntimeInspector | None = None, runtime_executor: RuntimeExecutor | None = None, + harness_reasoner: Any | None = None, + plugin_provider_manifests: Mapping[str, PluginManifest] | None = None, + plugin_provider_factories: Mapping[str, Any] | None = None, + legacy_harness_sources: Sequence[LegacyHarnessSource] = (), + dsh_provider_registration_manager: StudioDshProviderRegistrationManager | None = None, ) -> None: + provider_manifests = dict(plugin_provider_manifests or {}) + provider_factories = dict(plugin_provider_factories or {}) + if provider_manifests.keys() != provider_factories.keys(): + raise ValueError( + "plugin provider manifests and factories must use the same exact references" + ) self.workspace = Workspace(root) self.workspace.initialize() + self._startup_provider_manifests = provider_manifests + self._startup_provider_factories = provider_factories + self._active_provider_manifests = dict(provider_manifests) + self._dsh_provider_registration_manager = ( + dsh_provider_registration_manager + or StudioDshProviderRegistrationManager.discover_or_create_workspace_default( + self.workspace.root + ) + ) + self._start_lock = asyncio.Lock() + self._started = False self._apply_persisted_settings() self.avatar_assets = AgentAvatarAssetStore(self.workspace) + self.conversation_attachments = ConversationAttachmentStore(self.workspace) self.drafts = AgentDraftRepository(self.workspace) self.catalog = LocalResourceCatalog(self.workspace) self.builds = BuildRepository(self.workspace) @@ -147,6 +198,11 @@ def __init__( ), repository=self.builds, ) + self.plugin_compositions = StudioPluginCompositionCompiler( + self.workspace, + self.catalog, + provider_manifests=provider_manifests, + ) self.event_store = RunEventStore(self.workspace) self.session_service = LocalSessionService(project_dir=str(self.workspace.root)) self.runtime_events = RuntimeEventStore(self.session_service) @@ -194,6 +250,28 @@ def __init__( credential_resolver=self.credentials ) self.model_client = runtime_model_client + self.plugin_runs = StudioPluginRuntime( + self.workspace, + build_repository=self.builds, + session_service=self.session_service, + model_client=self.model_client, + secret_resolver=self.credentials, + harness_reasoner=harness_reasoner, + provider_manifests=provider_manifests, + provider_factories=provider_factories, + legacy_harness_sources=legacy_harness_sources, + ) + self.run_service.plugin_runtime = self.plugin_runs + self.scheduler_runtimes = StudioScheduledKernelRegistry( + resolve_build=self.resolve_run_spec, + resolve_adapter_provider=self._scheduler_adapter_provider, + session_service=self.session_service, + runtime_executor=self.runtime_executor, + ) + self.scheduler = StudioSchedulerService( + self.workspace, + runtime_registry=self.scheduler_runtimes, + ) self.mcp_runtime = MCPRuntimeAdapter(self.workspace, credentials=self.credentials) self._cloud_gateway_override = cloud_gateway self.cloud = CloudDeploymentService( @@ -202,15 +280,535 @@ def __init__( build_repository=self.builds, ) self.operations = OperationManager(self.workspace) - self.evaluation_storage = EvaluationStorage( - self.workspace.resolve(".agentkit/evaluations") - ) + self.evaluation_storage = EvaluationStorage(self.workspace.resolve(".agentkit/evaluations")) self.authoring = StudioAuthoringCoordinator(self) self.codex_agents = CodexAgentService(self) + async def start(self) -> None: + """Bind ready managed DSH registrations before build or execution.""" + + async with self._start_lock: + if self._started: + return + await self._bootstrap_official_dsh_defaults() + manifests, factories, manager_refs = await self._provider_snapshot(refresh=False) + self.plugin_compositions.replace_provider_registrations(manifests) + self.plugin_runs.replace_provider_registrations(manifests, factories) + self._active_provider_manifests = manifests + manager = self._dsh_provider_registration_manager + if manager is not None and manager_refs is not None: + manager.mark_bound(manager_refs) + self._started = True + + async def refresh_dsh_provider_registrations(self) -> None: + """Rebind the exact current DSH Profile and release stale activations.""" + + async with self._start_lock: + if self._dsh_provider_registration_manager is None: + self._dsh_provider_registration_manager = ( + StudioDshProviderRegistrationManager.discover_or_create_workspace_default( + self.workspace.root + ) + ) + await self._bootstrap_official_dsh_defaults() + if self._started: + await self.plugin_runs.aclose() + manifests, factories, manager_refs = await self._provider_snapshot(refresh=True) + self.plugin_compositions.replace_provider_registrations(manifests) + self.plugin_runs.replace_provider_registrations(manifests, factories) + self._active_provider_manifests = manifests + manager = self._dsh_provider_registration_manager + if manager is not None and manager_refs is not None: + manager.mark_bound(manager_refs) + self._started = True + + async def _bootstrap_official_dsh_defaults(self) -> None: + manager = self._dsh_provider_registration_manager + if manager is None: + return + try: + result = await manager.bootstrap_official_codex_provider() + except Exception as error: # optional DSH must fail closed to legacy paths + logging.getLogger(__name__).warning( + "official DSH provider bootstrap skipped: %s", error + ) + return + if result in {"installed", "already_enabled"}: + logging.getLogger(__name__).info("official Codex DSH provider bootstrap: %s", result) + + async def _provider_snapshot( + self, *, refresh: bool + ) -> tuple[dict[str, PluginManifest], dict[str, Any], tuple[str, ...] | None]: + manifests = dict(self._startup_provider_manifests) + factories = dict(self._startup_provider_factories) + manager = self._dsh_provider_registration_manager + if manager is None: + return manifests, factories, None + try: + registrations = await (manager.refresh() if refresh else manager.start()) + except StudioDshProviderRegistrationError as error: + logging.getLogger(__name__).warning( + "DSH AgentProvider discovery failed closed: %s", error.code + ) + return manifests, factories, None + if registrations.manifests.keys() != registrations.factories.keys(): + logging.getLogger(__name__).warning( + "DSH AgentProvider discovery returned a partial registration set" + ) + return manifests, factories, None + for provider_ref, manifest in registrations.manifests.items(): + if provider_ref in manifests and ( + manifests[provider_ref] != manifest + or factories[provider_ref] is not registrations.factories[provider_ref] + ): + logging.getLogger(__name__).warning( + "DSH AgentProvider registration conflicts with startup provider: %s", + provider_ref, + ) + return ( + dict(self._startup_provider_manifests), + dict(self._startup_provider_factories), + None, + ) + manifests[provider_ref] = manifest + factories[provider_ref] = registrations.factories[provider_ref] + return manifests, factories, tuple(registrations.manifests) + + def agent_provider_catalog(self) -> list[dict[str, Any]]: + """Return only external providers that reached Studio's bound selector.""" + + reserved = { + KSADK_HARNESS_AGENT_PROVIDER_PLUGIN_ID, + } + package_by_ref: dict[str, str] = {} + display_name_by_ref: dict[str, str] = {} + manager = self._dsh_provider_registration_manager + if manager is not None: + package_by_ref = { + item.provider_ref: item.package_name + for item in manager.inventory.packages + if item.state == "bound" and item.provider_ref is not None + } + display_name_by_ref = { + item.provider_ref: item.display_name + for item in manager.inventory.packages + if item.state == "bound" and item.provider_ref is not None and item.display_name + } + items = [] + for provider_ref, manifest in sorted(self._active_provider_manifests.items()): + if manifest.metadata.id in reserved: + continue + items.append( + { + "providerRef": provider_ref, + "pluginId": package_by_ref.get(provider_ref, manifest.metadata.id), + "resolvedVersion": manifest.metadata.version, + "displayName": display_name_by_ref.get(provider_ref, manifest.metadata.id), + "state": "enabled", + "compatible": True, + "selectable": True, + "reason": None, + "permissions": list(manifest.spec.permissions), + "isolation": manifest.spec.isolation, + "configSchemaDeclared": manifest.spec.config_schema is not None, + "secretFields": list(manifest.spec.secret_fields), + } + ) + return items + + def dsh_provider_runtime_state(self, package_name: str) -> dict[str, Any] | None: + """Project one manager-owned package lifecycle state for plugin APIs.""" + + manager = self._dsh_provider_registration_manager + if manager is None: + return None + status = next( + (item for item in manager.inventory.packages if item.package_name == package_name), + None, + ) + if status is None: + return None + return { + "state": status.state, + "providerRef": status.provider_ref, + "errorCode": status.error_code, + } + def runtime_catalog(self) -> list[dict]: return inspect_runtime_catalog(self.runtime_executor) + def _scheduler_adapter_provider(self, spec: StudioRunSpec): # type: ignore[no-untyped-def] + if spec.plugin_bundle_root is not None: + return self.plugin_runs.kernel_adapter_provider(spec) + return lambda: self.runtime_executor.create_adapter(spec.launch_context) + + def resolve_run_spec( + self, + build_id: str, + *, + model: str | None = None, + sandbox: str | None = None, + approval_mode: str | None = None, + ) -> StudioRunSpec: + """Resolve one immutable Build through its only compatible resolver.""" + + try: + return self.codex_runs.resolve( + build_id, + model=model, + sandbox=sandbox, + approval_mode=approval_mode, + ) + except Exception as exc: + if getattr(exc, "status_code", None) != 404: + raise + framework_build = self.builds.get(build_id) + runtime_type = framework_build.runtime_type.strip().lower() + if runtime_type in {"harness", "plugin"}: + return self.plugin_runs.resolve(build_id, model=model) + return self.framework_runs.resolve( + build_id, + model=model, + approval_mode=approval_mode, + ) + + def validate_schedule_build( + self, + build_ref: str | None, + *, + agent_id: str | None = None, + ) -> None: + """Reject a ScheduledTask target build that is not a real immutable Build. + + The agent-scoped authoring path resolves the Build server-side via + :meth:`ensure_current_build`, so this guard is primarily for the raw + ``/api/v1/schedules`` surface that accepts a caller-supplied + ``agent_version_ref``. A version name or tag (for example "v1") is + not an immutable Build id and must fail at admission with an actionable + error instead of collapsing into a later opaque DISPATCH_FAILED. + """ + ref = (build_ref or "").strip() + if not ref: + raise StudioError( + "SCHEDULE_BUILD_REQUIRED", + "定时任务必须绑定一个已成功构建的 Build id(不能为空或使用版本名)", + status_code=422, + field="target.agentVersionRef", + ) + try: + spec = self.resolve_run_spec(ref) + except StudioError as error: + if error.status_code == 404: + raise StudioError( + "SCHEDULE_BUILD_UNAVAILABLE", + f"定时任务绑定的 Build {ref!r} 不可用:请使用已成功构建的 Build id,而非版本名", + status_code=422, + field="target.agentVersionRef", + details={"buildId": ref}, + ) from error + raise + except Exception as error: + raise StudioError( + "SCHEDULE_BUILD_UNAVAILABLE", + f"定时任务绑定的 Build {ref!r} 不可用:{error}", + status_code=422, + field="target.agentVersionRef", + details={"buildId": ref}, + ) from error + if agent_id and spec.agent_id != agent_id: + raise StudioError( + "SCHEDULE_AGENT_MISMATCH", + "定时任务绑定的 Build 与所选 Agent 不一致", + status_code=422, + field="target.agentVersionRef", + details={"buildId": ref, "agentId": agent_id}, + ) + + def conversation_surface( + self, + build_id: str, + *, + session_id: str, + ) -> ConversationSurface: + """Describe the actual local composer contract for one Build/session. + + This is intentionally conservative. It derives the declaration from + the resolved Build, rather than guessing support from a model name or + sending provider-specific fields to every Runtime. + """ + + spec = self.resolve_run_spec(build_id) + runtime_type = spec.launch_context.runtime_type.strip().lower() + runtime_mode: Literal["native", "translated"] = ( + "native" if runtime_type == "codex" else "translated" + ) + inputs = [ConversationCapability(name="text", mode="native")] + if spec.model: + inputs.append(ConversationCapability(name="model.select", mode=runtime_mode)) + inputs.append(ConversationCapability(name="approval", mode=runtime_mode)) + if runtime_type == "codex": + inputs.extend( + ( + # Studio projects image data URLs to native Codex ImageInput. + ConversationCapability(name="attachment.image", mode="native"), + # Bounded UTF-8/code attachments are made model-visible as + # deterministic text parts by the Responses compatibility + # adapter. Binary files remain unavailable in Phase 2. + ConversationCapability(name="attachment.file", mode="translated"), + ConversationCapability(name="reasoning.effort", mode="native"), + ConversationCapability(name="goal", mode="native"), + ConversationCapability(name="plan", mode="native"), + ) + ) + + outputs = [ + ConversationCapability(name="text", mode="native"), + ConversationCapability(name="streaming", mode=runtime_mode), + ] + if runtime_type == "codex": + outputs.extend( + ( + ConversationCapability(name="reasoning", mode="native"), + ConversationCapability(name="tool.inspect", mode="native"), + ConversationCapability(name="approval", mode="native"), + ConversationCapability(name="goal", mode="native"), + ConversationCapability(name="plan", mode="native"), + ConversationCapability(name="cancel", mode="native"), + ) + ) + return ConversationSurface( + surface_id=f"studio.build.{spec.build_id}", + session_id=session_id, + provider_ref=f"studio.runtime.{runtime_type}", + inputs=tuple(inputs), + outputs=tuple(outputs), + ) + + async def ensure_current_build(self, agent_id: str): + """Return the Build that is eligible for a local Studio turn. + + This is deliberately one shared resolver for Web chat and Scheduler + authoring. A Scheduler must never select a mutable Draft or a stale + Codex manifest merely because a UI happened to show it as an Agent. + """ + + await self.start() + if self.is_codex_agent(agent_id): + self.codex_agent_detail(agent_id) + builds = [ + record + for record in self.codex_builds.list() + if record.agent_name == agent_id and self.codex_builder.is_current(record) + ] + if builds: + return builds[0] + return await asyncio.to_thread(self.codex_builder.build, agent_id) + draft = self.drafts.get(agent_id) + composition_required = self.plugin_compositions.required_for(draft) + for record in self.builds.list_for_agent(agent_id): + if record.status == BuildStatus.SUCCEEDED: + if composition_required and ( + record.source_revision != draft.metadata.revision + or not self._build_has_composition(record) + ): + continue + if composition_required: + composition = self.plugin_compositions.compile_if_required(draft) + if composition is None: # pragma: no cover - guarded by required_for + raise StudioError( + "PLUGIN_COMPOSITION_REQUIRED", + "当前 Agent 需要插件组合,但无法生成 Composition", + status_code=409, + ) + self.plugin_compositions.bind_build( + composition, + agent_id=draft.metadata.id, + build_id=record.id, + ) + return record + if draft.spec.model is None and not draft.spec.bindings.model_profile_id: + raise StudioError( + "AGENT_MODEL_REQUIRED", + "当前 Agent 未绑定 Model Profile,请先在 Agent 配置中选择模型;" + "API Key 只提供访问凭证,不会自动绑定模型。", + status_code=422, + field="spec.bindings.modelProfileId", + ) + return await asyncio.to_thread(self._build_agent_bundle, draft) + + def _build_agent_bundle(self, draft: AgentDraft): + composition = self.plugin_compositions.compile_if_required(draft) + record = self.builder.build(draft, composition=composition) + if composition is not None: + self.plugin_compositions.bind_build( + composition, + agent_id=draft.metadata.id, + build_id=record.id, + ) + return record + + def _build_has_composition(self, record: Any) -> bool: + """Reject stale pre-Phase-2 builds for a composed runtime. + + This check is intentionally scoped to Harness/plugin runtimes. Legacy + ADK/LangGraph build selection retains its existing behavior. + """ + + if not record.artifact_path: + return False + try: + archive = self.workspace.resolve(record.artifact_path, must_exist=True) + with zipfile.ZipFile(archive) as bundle: + manifest = json.loads(bundle.read("manifest.json")) + names = frozenset(bundle.namelist()) + return bool( + isinstance(manifest, dict) + and manifest.get("compositionProfileDigest") + and "composition-profile.json" in names + and "plugin-lock.json" in names + ) + except (KeyError, OSError, UnicodeError, ValueError, zipfile.BadZipFile): + return False + + async def create_agent_schedule( + self, + agent_id: str, + *, + display_name: str, + prompt: str, + schedule: ScheduleSpec, + enabled: bool = True, + continuity: Literal["new_session", "continue_session"] = "new_session", + session_id: str | None = None, + ) -> ScheduledTask: + """Create a local-only schedule for the Kernel Runtime that owns it. + + The browser provides only human intent (prompt/calendar/continuity). + The trusted Studio process resolves the immutable Build and concrete + Kernel instance. Thus a task cannot be pointed at another Agent + Instance, smuggle a permit reference, or claim cloud scheduling. + """ + + await self.start() + build = await self.ensure_current_build(agent_id) + spec = self.resolve_run_spec(build.id) + await self.scheduler_runtimes.start() + try: + target = await self.scheduler_runtimes.ensure_build( + build.id, + expected_agent_id=agent_id, + ) + runtime = self.scheduler_runtimes.runtime_for_build(build.id) + except StudioSchedulerRuntimeError as error: + raise StudioError( + error.code, + str(error), + status_code=409, + details={"agentId": agent_id, "buildId": build.id}, + ) from error + if continuity == "continue_session" and not session_id: + raise StudioError( + "SCHEDULE_SESSION_REQUIRED", + "继续会话的定时任务必须选择一个已有会话。", + status_code=422, + field="sessionId", + ) + if continuity == "continue_session": + self._require_schedule_continuation(runtime, spec.launch_context.runtime_type) + task = ScheduledTask( + task_id=f"sched-{uuid4().hex[:20]}", + display_name=display_name, + target=ScheduledTaskTarget( + agent_id=agent_id, + tenant_id=target.tenant_id, + agent_instance_id=target.agent_instance_id, + agent_version_ref=str(build.id), + session_id=session_id, + # This is an opaque local authority marker, never a browser + # supplied credential. The dispatcher obtains a short-lived + # in-process permit at the AgentControl ingress boundary. + authorization_ref="runtime://local-kernel-ingress", + ), + schedule=schedule, + command=ScheduleCommandTemplate(payload={"content": prompt}), + enabled=enabled, + continuity=continuity, + ) + return self.scheduler.create_task(task) + + @staticmethod + def _require_schedule_continuation(runtime: Any, runtime_type: str) -> None: + """Fail closed unless the bound Provider can preserve one conversation. + + Harness owns process-local Session history without exposing the generic + checkpoint ``resume`` verb. Codex and external adapters must declare + the typed resume capability. An older Runtime that lacks either proof + remains usable for normal conversations and ``new_session`` schedules; + only the optional follow-up mode is rejected. + """ + + if runtime_type.strip().lower() == "harness": + return + kernel = getattr(runtime, "kernel", None) + describe = getattr(kernel, "capabilities", None) + matrix = describe() if callable(describe) else None + resume = getattr(matrix, "resume", None) + if not bool(getattr(resume, "supported", False)): + raise StudioError( + "SCHEDULE_CONTINUATION_UNAVAILABLE", + "当前 Runtime 未声明可恢复的会话续接能力;可改用新会话定时任务。", + status_code=409, + field="continuity", + details={"runtimeType": runtime_type}, + ) + + def list_agent_schedules(self, agent_id: str) -> list[ScheduledTask]: + return [task for task in self.scheduler.list_tasks() if task.target.agent_id == agent_id] + + def get_agent_schedule(self, agent_id: str, task_id: str) -> ScheduledTask: + task = self.scheduler.get_task(task_id) + if task.target.agent_id != agent_id: + from ksadk.studio.errors import not_found + + raise not_found("schedule", task_id) + return task + + def update_agent_schedule( + self, + agent_id: str, + task_id: str, + *, + display_name: str, + prompt: str, + schedule: ScheduleSpec, + enabled: bool, + continuity: Literal["new_session", "continue_session"], + session_id: str | None, + ) -> ScheduledTask: + existing = self.get_agent_schedule(agent_id, task_id) + if continuity == "continue_session" and not session_id: + raise StudioError( + "SCHEDULE_SESSION_REQUIRED", + "继续会话的定时任务必须选择一个已有会话。", + status_code=422, + field="sessionId", + ) + task = existing.model_copy( + update={ + "display_name": display_name, + "schedule": schedule, + "command": ScheduleCommandTemplate(payload={"content": prompt}), + "enabled": enabled, + "continuity": continuity, + "target": existing.target.model_copy(update={"session_id": session_id}), + } + ) + return self.scheduler.update_task(task_id, task) + + async def run_agent_schedule_now(self, agent_id: str, task_id: str): + self.get_agent_schedule(agent_id, task_id) + return await self.scheduler.run_now(task_id) + def codex_manifest_state(self, agent_id: str | None = None) -> dict: return self.codex_agents.manifest_state(agent_id) @@ -315,9 +913,17 @@ async def delete_session(self, session_id: str) -> None: status_code=409, details={"sessionId": session_id}, ) + await self.plugin_runs.close_session(session_id) await self.session_service.delete_session(session_id) self.event_store.delete_session(session_id) + async def aclose(self) -> None: + """Release local provider activations and supervised plugin processes.""" + + await self.plugin_runs.aclose() + if self._dsh_provider_registration_manager is not None: + await self._dsh_provider_registration_manager.aclose() + async def _require_runtime_session(self, session_id: str) -> None: if await self.session_service.get_session_metadata(session_id) is None: raise StudioError( @@ -842,12 +1448,36 @@ def list_agents(self, *, query: str = "", limit: int = 50) -> list[AgentDraft]: def agent_detail(self, agent_id: str) -> dict: if self.is_codex_agent(agent_id): - return self.codex_agent_detail(agent_id) + detail = self.codex_agent_detail(agent_id) + detail["soulProjection"] = self._soul_projection(detail["draft"]) + return detail draft = self.drafts.get(agent_id) return { "draft": draft, "builds": self.builds.list_for_agent(agent_id)[:10], "validation": self.validator.validate(draft), + "soulProjection": self._soul_projection(draft), + } + + @staticmethod + def _soul_projection(draft: AgentDraft) -> dict[str, object]: + """Describe the reviewed Soul source without claiming runtime learning.""" + + soul = draft.spec.soul + runtime_type = draft.spec.runtime.type if draft.spec.runtime is not None else "" + compile_target = { + "codex": "managed-runtime.base_instructions", + "plugin": "instructions/soul.md", + }.get(runtime_type, "resolved-agent-spec.instructions.system") + return { + "present": soul is not None, + "source": "AgentSpec.soul", + "sourceRevision": draft.metadata.revision, + "schemaVersion": soul.schema_version if soul is not None else "agentkit.soul/v1", + "digest": soul_digest(soul) if soul is not None else None, + "digestAlgorithm": "sha256-canonical-json", + "compileTarget": compile_target, + "compileOrder": "before-instructions.system", } def create_studio_agent( @@ -1000,32 +1630,11 @@ def submit_studio_build( revision: int, idempotency_key: str, ) -> Operation: - runtime_type = self.agent_runtime_type(agent_id) - runtime = next( - (item for item in self.runtime_catalog() if item["runtimeType"] == runtime_type), - None, - ) - if runtime is None: - from ksadk.studio.errors import StudioError - - raise StudioError( - "RUNTIME_NOT_REGISTERED", - "Agent 引用的 RuntimeAdapter 未注册", - status_code=422, - details={"runtimeType": runtime_type}, - ) - if runtime["status"] != "ready": - from ksadk.studio.errors import StudioError - - raise StudioError( - "RUNTIME_DEPENDENCY_MISSING", - f"{runtime['displayName']} Runtime 依赖未安装", - status_code=422, - details={ - "runtimeType": runtime_type, - "installCommand": runtime["installCommand"], - }, - ) + # Codex build admission already runs the injected runtime inspector and + # pins its result into the immutable build. Checking package metadata + # first would reject an explicitly supplied RuntimeExecutor/inspector + # (including an out-of-process Codex runtime) merely because the local + # Studio interpreter does not have the optional wheel installed. if self.is_codex_agent(agent_id): detail = self.agent_detail(agent_id) if revision != detail["draft"].metadata.revision: @@ -1040,6 +1649,12 @@ def submit_studio_build( idempotency_key=idempotency_key, agent_id=agent_id, ) + + # A framework Build compiles and seals source/configuration only. Its + # optional Runtime dependency belongs to run preflight, and may live in + # a different process or deployment image. Rejecting the Build from + # this Studio interpreter's package metadata would make portable + # bundles impossible and incorrectly couple authoring to execution. return self.submit_build( agent_id, revision=revision, @@ -1271,8 +1886,7 @@ def selected_for_materialization( resolved.model_profile_ids = [ resource_id for resource_id in resolved.model_profile_ids - if resource_id in known - or resource_id not in current.model_profile_ids + if resource_id in known or resource_id not in current.model_profile_ids ] resolved.skills = selected_for_materialization( candidate.skills, @@ -1356,7 +1970,7 @@ def submit_build( snapshot = draft.model_copy(deep=True) async def runner(_operation_id: str): - return await asyncio.to_thread(self.builder.build, snapshot) + return await asyncio.to_thread(self._build_agent_bundle, snapshot) return self.operations.submit( kind=OperationKind.BUILD, @@ -1420,21 +2034,13 @@ async def run_build( ): """Execute any immutable Studio Build through the canonical executor.""" - try: - spec = self.codex_runs.resolve( - build_id, - model=model, - sandbox=sandbox, - approval_mode=approval_mode, - ) - except Exception as exc: - if getattr(exc, "status_code", None) != 404: - raise - spec = self.framework_runs.resolve( - build_id, - model=model, - approval_mode=approval_mode, - ) + await self.start() + spec = self.resolve_run_spec( + build_id, + model=model, + sandbox=sandbox, + approval_mode=approval_mode, + ) if collaboration_mode or goal_objective or reasoning_effort: from dataclasses import replace @@ -1660,12 +2266,14 @@ def evaluation_catalog(self) -> dict[str, list[dict]]: evalset = load_evalset(path) except (EvalSetParseError, OSError): continue - evalsets.append({ - "path": path.relative_to(self.workspace.root).as_posix(), - "name": evalset.name, - "caseCount": len(evalset.cases), - "contentDigest": evalset.content_digest, - }) + evalsets.append( + { + "path": path.relative_to(self.workspace.root).as_posix(), + "name": evalset.name, + "caseCount": len(evalset.cases), + "contentDigest": evalset.content_digest, + } + ) evalsets.sort(key=lambda item: item["path"]) return {"builds": builds, "evalsets": evalsets} @@ -1840,9 +2448,7 @@ def submit_deployment( # this outbound control-plane request only, never in the Build or # deployment receipt. launch = self.codex_runs.resolve(build_id) - runtime_environment = dict( - (launch.launch_context.config or {}).get("env") or {} - ) + runtime_environment = dict((launch.launch_context.config or {}).get("env") or {}) # Retrying a YAML deployment must update the Agent that the prior # receipt already created. CreateAgent can have succeeded before # a downstream Runtime-Service start failed; creating again would @@ -2026,14 +2632,10 @@ def deployment_operation_scope(self) -> dict[str, str]: workspace_identity = str(self.workspace.root.resolve()) region = ( - os.environ.get("AGENTENGINE_REGION") - or os.environ.get("KSYUN_REGION") - or "cn-beijing-6" + os.environ.get("AGENTENGINE_REGION") or os.environ.get("KSYUN_REGION") or "cn-beijing-6" ).strip() access_key = ( - os.environ.get("KSYUN_ACCESS_KEY") - or os.environ.get("KS3_ACCESS_KEY") - or "unsigned" + os.environ.get("KSYUN_ACCESS_KEY") or os.environ.get("KS3_ACCESS_KEY") or "unsigned" ).strip() def opaque(value: str) -> str: @@ -2060,29 +2662,19 @@ def get_settings(self) -> dict[str, Any]: "AGENTENGINE_REGION", os.environ.get("KSYUN_REGION", "cn-beijing-6") ), "cloudBucket": os.environ.get("KS3_BUCKET", ""), - "cloudAccountId": ( - os.environ.get("KSYUN_ACCOUNT_ID", "").strip() - ), + "cloudAccountId": (os.environ.get("KSYUN_ACCOUNT_ID", "").strip()), # AK/SK 不回显(避免本地 UI 回传 secret);只暴露配置状态。 # 已配置 = 启动环境或已持久化 settings 里 AK+SK 齐全。 "cloudAccountConfigured": bool( - ( - os.environ.get("KSYUN_ACCESS_KEY") - or os.environ.get("KS3_ACCESS_KEY", "") - ).strip() + (os.environ.get("KSYUN_ACCESS_KEY") or os.environ.get("KS3_ACCESS_KEY", "")).strip() and ( - os.environ.get("KSYUN_SECRET_KEY") - or os.environ.get("KS3_SECRET_KEY", "") + os.environ.get("KSYUN_SECRET_KEY") or os.environ.get("KS3_SECRET_KEY", "") ).strip() ), "cloudSignedAccountConfigured": bool( - ( - os.environ.get("KSYUN_ACCESS_KEY") - or os.environ.get("KS3_ACCESS_KEY", "") - ).strip() + (os.environ.get("KSYUN_ACCESS_KEY") or os.environ.get("KS3_ACCESS_KEY", "")).strip() and ( - os.environ.get("KSYUN_SECRET_KEY") - or os.environ.get("KS3_SECRET_KEY", "") + os.environ.get("KSYUN_SECRET_KEY") or os.environ.get("KS3_SECRET_KEY", "") ).strip() ), "traceContent": os.environ.get("KSADK_STUDIO_TRACE_CONTENT", "1") != "0", @@ -2191,9 +2783,7 @@ def _configured_cloud_gateway() -> CloudDeploymentGateway: secret_key = ( os.environ.get("KSYUN_SECRET_KEY") or os.environ.get("KS3_SECRET_KEY", "") ).strip() - region = os.environ.get( - "AGENTENGINE_REGION", os.environ.get("KSYUN_REGION", "") - ).strip() + region = os.environ.get("AGENTENGINE_REGION", os.environ.get("KSYUN_REGION", "")).strip() if not all((access_key, secret_key, region)): return UnavailableCloudGateway() control_client = AgentEngineClient( diff --git a/ksadk/studio/shared_web.py b/ksadk/studio/shared_web.py index 1d726a27..59ce4be6 100644 --- a/ksadk/studio/shared_web.py +++ b/ksadk/studio/shared_web.py @@ -9,7 +9,16 @@ from typing import Any from uuid import uuid4 -from ksadk.studio.contracts import BuildStatus, OperationStatus, RunRecord, RunStatus +from ksadk.conversations.contracts import ( + APPROVAL_MODE_EXTENSION, + COLLABORATION_MODE_EXTENSION, + GOAL_OBJECTIVE_EXTENSION, + ConversationAttachmentPart, + ConversationInput, + ConversationTextPart, + validate_conversation_input, +) +from ksadk.studio.contracts import OperationStatus, RunRecord, RunStatus from ksadk.studio.errors import StudioError, not_found from ksadk.studio.service import StudioService from ksadk.tools.gateway import tool_approval_capability @@ -247,12 +256,38 @@ async def stream_run(self, payload: dict[str, Any]) -> AsyncIterator[str]: prompt = self._input_text(payload) runtime_input = self._runtime_input(payload) model = self._select_model(agent_id, str(payload.get("Model") or "")) + model_explicit = bool(payload.get("ModelExplicit", str(payload.get("Model") or ""))) approval_mode = str(payload.get("ApprovalMode") or "") collaboration_mode = str(payload.get("CollaborationMode") or "") goal_objective = str(payload.get("GoalObjective") or "") reasoning_effort = str(payload.get("ReasoningEffort") or "") + try: + build = await self._ensure_build(agent_id) + self._validate_conversation_turn( + build_id=build.id, + session_id=session_id, + invocation_id=invocation_id, + prompt=prompt, + runtime_input=runtime_input, + model=model if model_explicit else "", + approval_mode=approval_mode, + collaboration_mode=collaboration_mode, + goal_objective=goal_objective, + reasoning_effort=reasoning_effort, + ) + except StudioError as exc: + # StreamingResponse starts the HTTP response before advancing this + # generator. Preflight failures therefore belong in the stream; + # raising here would turn an actionable Studio error into Starlette's + # "response already started" RuntimeError. + yield self._failed_sse(invocation_id, exc.message) + return + except Exception: + yield self._failed_sse(invocation_id, "本地 Agent 运行失败") + return execution = asyncio.create_task( self._execute_run( + build=build, agent_id=agent_id, session_id=session_id, invocation_id=invocation_id, @@ -355,17 +390,34 @@ async def invoke_response(self, payload: dict[str, Any]) -> dict[str, Any]: session_id = str(payload.get("SessionId") or f"ses_{uuid4().hex}") invocation_id = str(payload.get("InvocationId") or f"resp_{uuid4().hex}") model = self._select_model(agent_id, str(payload.get("Model") or "")) + model_explicit = bool(payload.get("ModelExplicit", str(payload.get("Model") or ""))) approval_mode = str(payload.get("ApprovalMode") or "") collaboration_mode = str(payload.get("CollaborationMode") or "") goal_objective = str(payload.get("GoalObjective") or "") reasoning_effort = str(payload.get("ReasoningEffort") or "") + build = await self._ensure_build(agent_id) + prompt = self._input_text(payload) + runtime_input = self._runtime_input(payload) + self._validate_conversation_turn( + build_id=build.id, + session_id=session_id, + invocation_id=invocation_id, + prompt=prompt, + runtime_input=runtime_input, + model=model if model_explicit else "", + approval_mode=approval_mode, + collaboration_mode=collaboration_mode, + goal_objective=goal_objective, + reasoning_effort=reasoning_effort, + ) try: run = await self._execute_run( + build=build, agent_id=agent_id, session_id=session_id, invocation_id=invocation_id, - prompt=self._input_text(payload), - runtime_input=self._runtime_input(payload), + prompt=prompt, + runtime_input=runtime_input, model=model, approval_mode=approval_mode, collaboration_mode=collaboration_mode, @@ -383,6 +435,7 @@ async def invoke_response(self, payload: dict[str, Any]) -> dict[str, Any]: async def _execute_run( self, *, + build: Any = None, agent_id: str, session_id: str, invocation_id: str, @@ -394,7 +447,17 @@ async def _execute_run( goal_objective: str = "", reasoning_effort: str = "", ) -> RunRecord: - build = await self._ensure_build(agent_id) + if build is None: + build = await self._ensure_build(agent_id) + bound_agent = str( + getattr(build, "agent_name", None) or getattr(build, "agent_id", "") + ) + if bound_agent != agent_id: + raise StudioError( + "CONVERSATION_BUILD_MISMATCH", + "会话 Build 不属于当前 Agent", + status_code=409, + ) def observe(event: Any) -> None: if event.type == "run.created": @@ -659,29 +722,94 @@ def _response_payload( } async def _ensure_build(self, agent_id: str): - if self.studio.is_codex_agent(agent_id): - self.studio.codex_agent_detail(agent_id) - builds = [ - record - for record in self.studio.codex_builds.list() - if record.agent_name == agent_id and self.studio.codex_builder.is_current(record) - ] - if builds: - return builds[0] - return await asyncio.to_thread(self.studio.codex_builder.build, agent_id) - for record in self.studio.builds.list_for_agent(agent_id): - if record.status == BuildStatus.SUCCEEDED: - return record - draft = self.studio.drafts.get(agent_id) - if draft.spec.model is None and not draft.spec.bindings.model_profile_id: + return await self.studio.ensure_current_build(agent_id) + + def _validate_conversation_turn( + self, + *, + build_id: str, + session_id: str, + invocation_id: str, + prompt: str, + runtime_input: Any, + model: str, + approval_mode: str, + collaboration_mode: str, + goal_objective: str, + reasoning_effort: str, + ) -> None: + """Revalidate compatibility requests against the active Surface. + + `/v1/responses` and the legacy RunAgent action remain supported wire + shapes, but neither may smuggle provider-only input past the shared + ConversationInput contract. + """ + + surface = self.studio.conversation_surface(build_id, session_id=session_id) + parts: list[ConversationTextPart | ConversationAttachmentPart] = [ + ConversationTextPart(text=prompt) + ] + for index, item in enumerate(runtime_input if isinstance(runtime_input, list) else []): + if not isinstance(item, dict): + continue + kind = str(item.get("type") or "") + if kind in {"image", "input_image"}: + media_type = self._data_url_media_type( + str(item.get("url") or item.get("image_url") or ""), + fallback="image/*", + ) + parts.append( + ConversationAttachmentPart( + attachment_ref=f"attachment://inline/{invocation_id}/{index}", + media_type=media_type, + name=str(item.get("filename") or "image"), + ) + ) + elif kind == "input_file": + parts.append( + ConversationAttachmentPart( + attachment_ref=f"attachment://inline/{invocation_id}/{index}", + media_type=self._data_url_media_type( + str(item.get("file_data") or item.get("file_url") or ""), + fallback="application/octet-stream", + ), + name=str(item.get("filename") or "attachment"), + ) + ) + conversation_input = ConversationInput( + input_id=invocation_id, + session_id=session_id, + idempotency_key=f"responses:{invocation_id}", + parts=tuple(parts), + model_ref=model or None, + reasoning=reasoning_effort or None, + extensions={ + key: value + for key, value in ( + (APPROVAL_MODE_EXTENSION, approval_mode or None), + (COLLABORATION_MODE_EXTENSION, collaboration_mode or None), + (GOAL_OBJECTIVE_EXTENSION, goal_objective or None), + ) + if value is not None + }, + ) + try: + validate_conversation_input(surface, conversation_input) + except ValueError as exc: raise StudioError( - "AGENT_MODEL_REQUIRED", - "当前 Agent 未绑定 Model Profile,请先在 Agent 配置中选择模型;" - "API Key 只提供访问凭证,不会自动绑定模型。", + "CONVERSATION_INPUT_UNSUPPORTED", + "当前 Agent 不支持此会话输入", status_code=422, - field="spec.bindings.modelProfileId", - ) - return await asyncio.to_thread(self.studio.builder.build, draft) + details={"reason": str(exc), "surfaceId": surface.surface_id}, + ) from exc + + @staticmethod + def _data_url_media_type(value: str, *, fallback: str) -> str: + if value.startswith("data:"): + media_type = value[5:].split(";", 1)[0].strip().lower() + if media_type: + return media_type + return fallback def _sessions(self, agent_id: str) -> list[dict[str, Any]]: grouped: dict[str, list[RunRecord]] = {} @@ -939,7 +1067,7 @@ def _runtime_input(payload: dict[str, Any]) -> list[dict[str, str]]: if not isinstance(content, list): continue items: list[dict[str, str]] = [] - has_image = False + has_attachment = False for part in content: if not isinstance(part, dict): continue @@ -954,8 +1082,19 @@ def _runtime_input(payload: dict[str, Any]) -> list[dict[str, str]]: ) if url: items.append({"type": "image", "url": url}) - has_image = True - if items and has_image: + has_attachment = True + elif kind == "input_file": + data = str(part.get("file_data") or part.get("file_url") or "") + if data: + items.append( + { + "type": "input_file", + "file_data": data, + "filename": str(part.get("filename") or "attachment"), + } + ) + has_attachment = True + if items and has_attachment: return items return [] diff --git a/ksadk/studio/soul.py b/ksadk/studio/soul.py new file mode 100644 index 00000000..3eda7c26 --- /dev/null +++ b/ksadk/studio/soul.py @@ -0,0 +1,52 @@ +"""Deterministic SoulDocument rendering and prompt compilation helpers.""" +from __future__ import annotations + +import hashlib +import json + +from ksadk.studio.contracts import Instructions, SoulDocument + + +def render_soul_markdown(soul: SoulDocument) -> str: + """Render a portable ``soul.md`` snapshot without executable directives.""" + + lines = ["# Soul", "", "## Identity", soul.identity.strip()] + if soul.principles: + lines.extend(["", "## Principles", *[f"- {item.strip()}" for item in soul.principles]]) + if soul.boundaries: + lines.extend(["", "## Boundaries", *[f"- {item.strip()}" for item in soul.boundaries]]) + if soul.tone: + lines.extend(["", "## Tone", soul.tone.strip()]) + return "\n".join(lines).rstrip() + "\n" + + +def soul_digest(soul: SoulDocument) -> str: + """Content-address the reviewed structured source, not rendered whitespace.""" + + payload = soul.model_dump(by_alias=True, exclude_none=True, mode="json") + canonical = json.dumps( + payload, ensure_ascii=False, sort_keys=True, separators=(",", ":") + ).encode("utf-8") + return f"sha256:{hashlib.sha256(canonical).hexdigest()}" + + +def compose_system_instruction( + instructions: Instructions, soul: SoulDocument | None +) -> Instructions: + """Put the reviewed identity before mutable task-specific system guidance.""" + + if soul is None: + return instructions + soul_section = render_soul_markdown(soul).rstrip() + system = "\n\n".join( + part + for part in ( + soul_section, + instructions.system.strip(), + ) + if part + ) + return instructions.model_copy(update={"system": system}) + + +__all__ = ["compose_system_instruction", "render_soul_markdown", "soul_digest"] diff --git a/ksadk/studio/static/assets/index-BLpcdrgW.css b/ksadk/studio/static/assets/index-BLpcdrgW.css deleted file mode 100644 index 808b46fe..00000000 --- a/ksadk/studio/static/assets/index-BLpcdrgW.css +++ /dev/null @@ -1 +0,0 @@ -.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 .5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#555;--xy-background-pattern-lines-color-default:#333;--xy-background-pattern-cross-color-default:#333;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 .5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;color:var(--xy-node-color,var(--xy-node-color-default));text-align:center;border:var(--xy-node-border,var(--xy-node-border-default));background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));padding:10px;font-size:12px}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var(--xy-controls-button-background-color-hover-props,var(--xy-controls-button-background-color-hover,var(--xy-controls-button-background-color-hover-default)));color:var(--xy-controls-button-color-hover-props,var(--xy-controls-button-color-hover,var(--xy-controls-button-color-hover-default)))}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)))}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}.evaluation-page__create{align-items:start}.evaluation-page__create>.studio-form-field{min-width:0}.evaluation-page__field--wide{grid-column:1/-1}.evaluation-page__fail-fast{box-sizing:border-box;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);align-items:center;min-height:42px;padding:8px 10px}.evaluation-page__fail-fast input{margin-top:0}.evaluation-page__evaluator-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.evaluation-page__evaluator-options .checkbox-row{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);min-width:0;padding:8px 10px}.evaluation-page__evaluator-options small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.evaluation-page__evalset-picker{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;min-height:36px;display:grid}.evaluation-page__evalset-picker>.button{cursor:pointer;min-height:36px}.evaluation-page__evalset-path{min-width:0;color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--font-size-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.evaluation-page__metrics{border-block:1px solid var(--border);grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:16px;display:grid}.evaluation-page__metrics>div{border-right:1px solid var(--border);min-height:72px;padding:12px 18px}.evaluation-page__metrics>div:last-child{border-right:0}.evaluation-page__metrics span,.evaluation-page__metrics small{color:var(--text-tertiary);font-size:var(--font-size-meta);display:block}.evaluation-page__metrics strong{font-size:var(--font-size-subtitle);font-weight:var(--font-weight-semibold);margin-top:3px;display:block}.evaluation-page__run-list,.evaluation-detail-page__report{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);overflow:hidden}.evaluation-page__run-list>.studio-data-table{border:0;border-radius:0}.evaluation-detail-page__overview{border-block:1px solid var(--border);grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:20px;display:grid}.evaluation-detail-page__overview>div{border-right:1px solid var(--border);min-width:0;min-height:88px;padding:16px 20px}.evaluation-detail-page__overview>div:last-child{border-right:0}.evaluation-detail-page__overview span,.evaluation-detail-page__overview small{color:var(--text-tertiary);font-size:var(--font-size-meta);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.evaluation-detail-page__overview strong{font-size:var(--font-size-subtitle);margin:6px 0;display:block}.evaluation-detail-page__pending{border-block:1px solid var(--border);min-height:72px;color:var(--text-secondary);align-items:center;gap:12px;padding:16px;display:flex}.evaluation-detail-page__pending strong,.evaluation-detail-page__pending span{display:block}.evaluation-detail-page__pending span{color:var(--text-tertiary);font-size:var(--font-size-meta);margin-top:3px}.evaluation-page__panel-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;min-height:58px;padding:10px 16px;display:flex}.evaluation-page__panel-header strong,.evaluation-page__panel-header span{display:block}.evaluation-page__panel-header>div>span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.evaluation-page__detail-empty{min-height:300px;color:var(--text-tertiary);text-align:center;align-content:center;place-items:center;gap:8px;padding:32px;display:grid}.evaluation-page__detail-empty strong{color:var(--text-primary)}.evaluation-page__snapshot{border-bottom:1px solid var(--border);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;display:grid}.evaluation-page__snapshot>div{border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-width:0;padding:12px 16px}.evaluation-page__snapshot dt{color:var(--text-tertiary);font-size:var(--font-size-caption)}.evaluation-page__snapshot dd{text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-meta);margin:3px 0 0;overflow:hidden}.evaluation-page__dataset{border-bottom:1px solid var(--border)}.evaluation-page__dataset-heading{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;min-height:62px;padding:12px 16px;display:flex}.evaluation-page__dataset-heading h2,.evaluation-page__dataset-heading p{margin:0}.evaluation-page__dataset-heading h2{font-size:var(--font-size-control)}.evaluation-page__dataset-heading p,.evaluation-page__dataset-heading>span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:3px}.evaluation-page__dataset-summary{grid-template-columns:minmax(150px,.8fr) 90px 110px minmax(220px,1.4fr);margin:0;display:grid}.evaluation-page__dataset-summary>div{border-right:1px solid var(--border);min-width:0;padding:11px 16px}.evaluation-page__dataset-summary>div:last-child{border-right:0}.evaluation-page__dataset-summary dt{color:var(--text-tertiary);font-size:var(--font-size-caption)}.evaluation-page__dataset-summary dd{font-size:var(--font-size-meta);text-overflow:ellipsis;white-space:nowrap;margin:3px 0 0;overflow:hidden}.evaluation-page__case-layout{grid-template-columns:minmax(230px,.65fr) minmax(280px,1fr);min-height:380px;display:grid}.evaluation-page__case-list{border-right:1px solid var(--border);overflow:auto}.evaluation-page__case-list>button{border:0;border-bottom:1px solid var(--border);width:100%;min-height:64px;color:var(--text-primary);text-align:left;cursor:pointer;background:0 0;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;display:flex}.evaluation-page__case-list>button:hover,.evaluation-page__case-list>button.active{background:var(--hover)}.evaluation-page__case-list span,.evaluation-page__case-list strong,.evaluation-page__case-list small{display:block}.evaluation-page__case-list .evaluation-page__case-preview{text-overflow:ellipsis;white-space:nowrap;max-width:210px;overflow:hidden}.evaluation-page__case-list small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:3px}.evaluation-page__case-list>button>span:last-child{text-align:right}.evaluation-page__case-detail{min-width:0;overflow:auto}.evaluation-page__case-detail section+section{border-top:1px solid var(--border)}.evaluation-page__case-detail>section{padding:16px}.evaluation-page__case-detail h3{font-size:var(--font-size-control);margin:0 0 8px}.evaluation-page__case-detail pre{border-radius:var(--radius-control);max-height:190px;color:var(--code-text);background:var(--code-bg);font-family:var(--font-mono);font-size:var(--font-size-caption);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:10px;overflow:auto}.evaluation-page__turns{gap:18px;display:grid}.evaluation-page__turns article{border-left:2px solid var(--border-strong);gap:9px;padding-left:12px;display:grid}.evaluation-page__turns article>strong{font-family:var(--font-mono);font-size:var(--font-size-caption)}.evaluation-page__turns article>div>span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-bottom:5px;display:block}.evaluation-page__expected-tools{flex-wrap:wrap;gap:6px;display:flex}.evaluation-page__expected-tools code{border:1px solid var(--border);border-radius:var(--radius-control);color:var(--text-secondary);background:var(--surface-subtle);font-size:var(--font-size-caption);padding:3px 7px}.evaluation-page__assertions{border-block:1px solid var(--border)}.evaluation-page__assertions>div{border-bottom:1px solid var(--border);grid-template-columns:minmax(135px,.8fr) minmax(120px,1.2fr) auto;align-items:center;gap:12px;min-height:48px;padding:8px 0;display:grid}.evaluation-page__assertions>div:last-child{border-bottom:0}.evaluation-page__assertions strong,.evaluation-page__assertions small{display:block}.evaluation-page__assertions small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.evaluation-page__assertions code{max-height:88px;color:var(--text-secondary);font-size:var(--font-size-caption);white-space:pre-wrap;overflow-wrap:anywhere;overflow:auto}.evaluation-page__section-title{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.evaluation-page__section-title>span,.evaluation-page__muted{color:var(--text-tertiary);font-size:var(--font-size-caption)}.evaluation-page__case-evidence details>summary{color:var(--text-secondary);font-size:var(--font-size-meta);font-weight:var(--font-weight-medium);cursor:pointer}.evaluation-page__case-evidence h4{color:var(--text-tertiary);font-size:var(--font-size-caption);margin:14px 0 7px}.evaluation-page__evidence{gap:7px;display:grid}.evaluation-page__evidence>div{font-size:var(--font-size-meta);grid-template-columns:minmax(110px,1fr) auto 50px;align-items:center;gap:8px;display:grid}@media (width<=1180px){.evaluation-detail-page__overview,.evaluation-page__dataset-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.evaluation-page__dataset-summary>div:nth-child(2){border-right:0}.evaluation-page__dataset-summary>div:nth-child(-n+2){border-bottom:1px solid var(--border)}}@media (width<=760px){.evaluation-detail-page>.page-header{flex-direction:column;gap:12px}.evaluation-detail-page>.page-header>div:first-child,.evaluation-detail-page>.page-header>.header-actions{width:100%}.evaluation-detail-page>.page-header>.header-actions{flex-wrap:wrap;margin-left:0}.evaluation-detail-page>.page-header p{overflow-wrap:anywhere}.evaluation-page__metrics,.evaluation-detail-page__overview,.evaluation-page__snapshot,.evaluation-page__case-layout{grid-template-columns:1fr}.evaluation-page__metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.evaluation-page__dataset-summary,.evaluation-page__assertions>div{grid-template-columns:1fr}.evaluation-page__dataset-summary>div{border-right:0;border-bottom:1px solid var(--border)}.evaluation-page__dataset-summary>div:last-child{border-bottom:0}.evaluation-detail-page__overview>div,.evaluation-page__snapshot>div,.evaluation-page__case-list{border-right:0;border-bottom:1px solid var(--border)}.evaluation-page__metrics>div{border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.evaluation-page__metrics>div:nth-child(2n){border-right:0}.evaluation-page__metrics>div:nth-child(n+3){border-bottom:0}.evaluation-page__evaluator-options{grid-template-columns:1fr}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--font-sans:"PingFang SC", "Noto Sans CJK SC", "Microsoft YaHei UI", "Microsoft YaHei", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", "SFMono-Regular", Consolas, monospace;--font-size-nano:9px;--font-size-micro:10px;--font-size-fine:11px;--font-size-caption:12px;--font-size-meta:13px;--font-size-control:14px;--font-size-body:15px;--font-size-subtitle:16px;--font-size-card-metric:18px;--font-size-section-title:20px;--font-size-page-title:26px;--font-size-metric:28px;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--line-height-none:1;--line-height-code-compact:1.55;--line-height-caption:1.5;--line-height-control:1.55;--line-height-body:1.6;--line-height-tight:1.35;--line-height-editor:1.72;--line-height-title:1.4;--canvas:#f8fafc;--sidebar:#fff;--surface:#fff;--surface-subtle:#f1f5f9;--surface-raised:#fff;--surface-sunken:#f5f7fa;--surface-hover:#eef2f7;--hover:#eef2f7;--selected:#e0edff;--text:#1e293b;--text-primary:#1e293b;--text-label:#334155;--text-secondary:#475569;--text-tertiary:#64748b;--text-faint:#94a3b8;--text-disabled:#94a3b8;--border:#e2e8f0;--border-card:#dce3ec;--border-strong:#cad4e0;--accent:#2167d5;--accent-strong:#1857b4;--accent-soft:#eaf3ff;--accent-hover:#def;--accent-active:#cfe4fc;--accent-border:#bfd7f3;--button-primary-bg:#4d8fe8;--button-primary-bg-hover:#5d9ef1;--button-primary-bg-active:#3e7fd3;--button-primary-text:#fff;--success:#28745a;--success-soft:#ecf7f1;--info:#3e6f9f;--info-soft:#eef4fa;--warning:#8a641f;--warning-text:#765314;--warning-soft:#fbf5e8;--edge:#28745a;--edge-soft:#ecf7f1;--edge-border:#bfe2d2;--cloud:#2167d5;--cloud-soft:#eaf3ff;--cloud-border:#bfd7f3;--route:#8a641f;--route-soft:#fbf5e8;--danger:#b5473c;--danger-soft:#fff1ef;--code-bg:#f6f8fb;--code-text:#263548;--code-token-comment:#7a8798;--code-token-punctuation:#596579;--code-token-property:#356b8c;--code-token-number:#9a5b1c;--code-token-string:#24745b;--code-token-operator:#5b6677;--code-token-keyword:#81529b;--code-token-function:#1d609b;--code-token-class:#9b4e73;--code-token-variable:#8a6120;--radius-control:6px;--radius-surface:8px;--radius-small:4px;--radius-badge:4px;--radius-indicator:2px;--radius-circle:50%;--radius-pill:999px;--radius-message:12px 12px 2px 12px;--control-height:42px;--button-height:40px;--button-height-small:34px;--status-height:24px;--shadow-overlay:0 20px 48px #0f172a24;--shadow-focus:0 0 0 3px #2563eb24;--shadow-focus-subtle:0 0 0 3px #2563eb1a;--shadow-control:0 1px 2px #0f172a0f, 0 1px 3px #0f172a0d;--shadow-toast:0 12px 32px #0f172a1f;--motion-fast:.12s;--motion-base:.18s;--ease:cubic-bezier(.2, 0, 0, 1)}*{box-sizing:border-box}html{background:var(--canvas);scroll-behavior:smooth;min-height:100%}body{min-height:100%;color:var(--text);background:var(--canvas);font-family:var(--font-sans);font-size:var(--font-size-body);font-weight:var(--font-weight-regular);line-height:var(--line-height-body);letter-spacing:0;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}button,input,select,textarea{color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;letter-spacing:0}button{-webkit-tap-highlight-color:transparent}h1,h2,h3,p{text-wrap:pretty}svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.75px;flex:none}[hidden]{display:none!important}.skip-link{z-index:200;border-radius:var(--radius-control);color:var(--accent);background:var(--surface);box-shadow:var(--shadow-overlay);padding:8px 12px;position:fixed;top:8px;left:8px;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}:focus-visible{outline-offset:2px;outline:2px solid #4e6f9e59}.app-shell{min-height:100dvh}.sidebar{z-index:40;border-right:1px solid var(--border);background:var(--sidebar);flex-direction:column;width:248px;display:flex;position:fixed;inset:0 auto 0 0}.product{border-bottom:1px solid var(--border);align-items:center;gap:10px;height:64px;padding:0 18px;display:flex}.product-mark{border:1px solid var(--border-strong);border-radius:var(--radius-surface);width:32px;height:32px;color:var(--accent);background:var(--surface);font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);place-items:center;display:grid}.product-copy{min-width:0;line-height:var(--line-height-none);align-items:baseline;gap:4px;display:flex}.product-copy strong{font-size:var(--font-size-subtitle);font-weight:var(--font-weight-semibold)}.product-copy span{color:var(--text-secondary);font-size:var(--font-size-control)}.preview-label{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-left:auto}.workspace-switcher{border-radius:var(--radius-surface);cursor:pointer;text-align:left;width:auto;min-height:60px;transition:border-color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);background:0 0;border:1px solid #0000;align-items:center;gap:10px;margin:10px 8px 6px;padding:9px 10px;display:flex}.workspace-switcher:hover{background:var(--hover);border-color:#0000}.workspace-mark{border-radius:var(--radius-control);width:30px;height:30px;color:var(--accent);background:var(--accent-soft);place-items:center;display:grid}.workspace-mark svg{width:16px;height:16px}.workspace-copy{flex:1;min-width:0}.workspace-copy strong,.workspace-copy span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.workspace-copy strong{font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.workspace-copy span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption);margin-top:2px}.workspace-chevron{width:14px;color:var(--text-tertiary)}.primary-nav{flex:1;padding:8px 10px 14px;overflow-y:auto}.nav-group+.nav-group{margin-top:20px}.nav-label{color:var(--text-tertiary);font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);margin:0 10px 7px}.nav-item{width:100%;min-height:var(--button-height);border-radius:var(--radius-control);color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-control);text-align:left;transition:color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);background:0 0;border:0;align-items:center;gap:10px;padding:8px 11px;display:flex;position:relative}.nav-item:hover{color:var(--text);background:var(--hover)}.nav-item.active{color:var(--accent);background:var(--accent-soft);font-weight:var(--font-weight-semibold)}.nav-item.active:before{content:"";border-radius:var(--radius-indicator);background:var(--accent);width:2px;height:20px;position:absolute;left:0}.nav-item svg{width:17px;height:17px;color:var(--text-secondary)}.nav-item.active svg{color:var(--accent)}.sidebar-footer{border-top:1px solid var(--border);background:#fffffff5;align-items:center;gap:10px;height:68px;padding:9px 14px;display:flex}.user-avatar{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);width:34px;height:34px;font-size:var(--font-size-meta);font-weight:var(--font-weight-semibold);place-items:center;display:grid}.studio-tooltip{z-index:90;border:1px solid var(--border-strong);border-radius:var(--radius-control);max-width:min(360px,100vw - 24px);color:var(--text);background:var(--surface);box-shadow:var(--shadow-overlay);font-size:var(--font-size-caption);line-height:var(--line-height-caption);overflow-wrap:anywhere;padding:7px 9px}.user-copy{flex:1;min-width:0}.user-copy strong,.user-copy span{display:block}.user-copy strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.user-copy span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.app-main{min-height:100dvh;margin-left:248px}.global-header{z-index:30;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff0;align-items:center;gap:10px;height:64px;padding:0 28px;display:flex;position:sticky;top:0}.breadcrumb{font-size:var(--font-size-control);font-weight:var(--font-weight-medium);align-items:center;gap:8px;display:flex}.breadcrumb .muted{color:var(--text-tertiary);font-weight:var(--font-weight-regular)}.breadcrumb svg{width:13px;color:var(--text-tertiary)}.header-spacer,.toolbar-spacer{flex:1}.global-context{align-items:center;gap:8px;min-width:0;display:flex}.context-field{color:var(--text-tertiary);font-size:var(--font-size-meta);align-items:center;gap:6px;display:inline-flex}.context-field .studio-select-trigger{width:auto;min-width:132px;max-width:220px;min-height:34px}.runtime-badge{min-width:0;max-width:180px;color:var(--text-secondary);font-size:var(--font-size-meta);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.runtime-indicator{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);cursor:pointer;min-height:36px;font-size:var(--font-size-meta);align-items:center;gap:7px;padding:6px 11px;display:inline-flex}.runtime-indicator:hover{background:var(--surface-subtle)}.runtime-indicator svg{width:13px;color:var(--text-tertiary)}.runtime-state{color:var(--text-tertiary)}.status-dot{border-radius:var(--radius-circle);background:var(--text-tertiary);flex:none;width:7px;height:7px;display:inline-block}.status-dot.success{background:var(--success)}.status-dot.info{background:var(--info)}.status-dot.warning{background:var(--warning)}.status-dot.danger{background:var(--danger)}.status-dot.neutral{background:var(--text-tertiary)}.mobile-menu{display:none!important}.view{min-height:calc(100dvh - 64px);display:none}.view.active{display:block}.page-container{width:min(1520px,100%);margin:0 auto;padding:40px 48px 64px}.page-header{align-items:flex-start;gap:24px;min-height:76px;margin-bottom:30px;display:flex}.page-header>div:first-child{min-width:0}.page-header h1{font-size:var(--font-size-page-title);font-weight:var(--font-weight-semibold);line-height:var(--line-height-title);margin:0}.page-header p{max-width:68ch;color:var(--text-secondary);font-size:var(--font-size-body);line-height:var(--line-height-body);margin:6px 0 0}.page-header>.button,.page-header>.header-actions{margin-left:auto}.header-actions{align-items:center;gap:8px;display:flex}.button,.icon-button{min-height:var(--button-height);border-radius:var(--radius-control);cursor:pointer;font-size:var(--font-size-control);font-weight:var(--font-weight-medium);white-space:nowrap;transition:color var(--motion-fast) var(--ease), border-color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease), transform var(--motion-fast) var(--ease);border:1px solid #0000;justify-content:center;align-items:center;gap:7px;padding:7px 15px;display:inline-flex}.button svg,.icon-button svg{width:16px;height:16px}.button:hover,.icon-button:hover{text-decoration:none}.button:active,.icon-button:active{transform:translateY(1px)}.button:disabled,.icon-button:disabled{color:var(--text-disabled);border-color:var(--border);background:var(--surface-subtle);cursor:not-allowed;transform:none}.button.accent{border-color:var(--accent-border);color:var(--accent);background:var(--accent-soft)}.button.accent:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent)}.button.accent:active:not(:disabled){background:var(--accent-active)}.button.secondary,.icon-button.secondary{border-color:var(--border-strong);color:var(--text);background:var(--surface)}.button.secondary:hover:not(:disabled),.icon-button.secondary:hover:not(:disabled){background:var(--hover)}.button.tertiary,.icon-button.tertiary{color:var(--text-secondary);background:0 0}.button.tertiary:hover:not(:disabled),.icon-button.tertiary:hover:not(:disabled){color:var(--text);background:var(--hover)}.button.danger{color:var(--danger);background:var(--danger-soft);border-color:#f1d6d2}.button.danger:hover:not(:disabled){border-color:var(--danger);background:#fecaca}.button.small{min-height:var(--button-height-small);font-size:var(--font-size-meta);padding:5px 11px}.button.compact{min-height:var(--button-height-small);padding:4px 8px}.icon-button{width:40px;padding:0}.text-button{color:var(--accent);cursor:pointer;font-size:var(--font-size-meta);background:0 0;border:0;padding:2px}.text-button:hover{text-underline-offset:3px;text-decoration:underline}.overview-strip{border-block:1px solid var(--border);grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:30px;display:grid}.overview-item{flex-direction:column;justify-content:center;min-height:116px;padding:18px 22px;display:flex;position:relative}.overview-item+.overview-item:before{content:"";background:var(--border);width:1px;position:absolute;inset:22px auto 22px 0}.overview-item>span{color:var(--text-secondary);font-size:var(--font-size-control)}.overview-item strong{min-height:30px;font-size:var(--font-size-metric);font-weight:var(--font-weight-medium);font-variant-numeric:tabular-nums;align-items:center;gap:8px;margin-top:4px;display:flex}.overview-item small{color:var(--text-tertiary);font-size:var(--font-size-meta)}.environment-overview strong{font-size:var(--font-size-subtitle)}.content-section{min-width:0}.section-toolbar{align-items:center;gap:10px;min-height:46px;margin-bottom:12px;display:flex}.search-field{width:min(360px,100%);position:relative}.search-field svg{width:16px;height:16px;color:var(--text-tertiary);pointer-events:none;position:absolute;top:12px;left:12px}.search-field input{padding-left:38px}.sync-state{color:var(--text-tertiary);font-size:var(--font-size-meta)}input,textarea,select{border:1px solid var(--border-strong);border-radius:var(--radius-control);width:100%;color:var(--text);background:var(--surface);transition:border-color var(--motion-fast) var(--ease), box-shadow var(--motion-fast) var(--ease)}input,select{height:var(--control-height);font-size:var(--font-size-body);padding:0 12px}textarea{min-height:104px;font-size:var(--font-size-body);line-height:var(--line-height-body);resize:vertical;padding:12px 13px}input::placeholder,textarea::placeholder{color:var(--text-tertiary)}input:hover,textarea:hover,select:hover{border-color:#c1c9d4}input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:var(--shadow-focus);outline:0}input:disabled,textarea:disabled,select:disabled{color:var(--text-secondary);background:var(--surface-subtle)}.compact-select{width:156px}.table-surface{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);position:relative;overflow:hidden}.studio-data-table{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);min-width:0;overflow:hidden}.studio-data-table-scroll{min-width:0;overflow:auto}.studio-data-table table{table-layout:auto}.studio-data-table th{z-index:1;white-space:nowrap;position:sticky;top:0}.studio-data-table td{min-width:0}.studio-data-table tbody tr.is-interactive{cursor:pointer}.studio-data-table tbody tr.is-interactive:focus-visible{z-index:1;outline:2px solid var(--accent);outline-offset:-2px;position:relative}.studio-data-table-state{min-height:248px;color:var(--text-secondary);text-align:center;align-content:center;place-items:center;gap:7px;padding:32px;display:grid}.studio-data-table-state strong{color:var(--text-primary);font-size:var(--font-size-section-title)}.studio-data-table-state>span:not(.empty-icon){max-width:52ch;color:var(--text-tertiary);font-size:var(--font-size-caption)}.studio-data-table-state.is-error>svg{color:var(--danger)}.studio-data-table-state .button{margin-top:8px}.studio-data-table-pagination{border-top:1px solid var(--border);min-height:50px;color:var(--text-tertiary);background:var(--surface-subtle);font-size:var(--font-size-caption);justify-content:space-between;align-items:center;gap:16px;padding:9px 14px;display:flex}.studio-data-table-pagination>div{gap:6px;display:flex}table{border-collapse:collapse;table-layout:fixed;width:100%}th,td{border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}th{height:46px;color:var(--text-secondary);background:var(--surface-subtle);font-size:var(--font-size-meta);font-weight:var(--font-weight-medium);padding:0 16px}td{min-height:62px;font-size:var(--font-size-control);padding:15px 16px}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fbfcfd}.actions-column{text-align:right;width:268px}td.actions-column{white-space:nowrap}.agent-cell{align-items:center;gap:10px;min-width:0;display:flex}.agent-avatar{--agent-avatar-color:#426ea8;border:1px solid color-mix(in srgb, var(--agent-avatar-color) 26%, var(--border));border-radius:var(--radius-surface);width:40px;height:40px;color:var(--agent-avatar-color);background:color-mix(in srgb, var(--agent-avatar-color) 12%, var(--surface));flex:none;place-items:center;display:grid;overflow:hidden}.agent-avatar svg{width:18px;height:18px}.agent-avatar img{object-fit:cover;width:100%;height:100%;display:block}.agent-avatar-xs{border-radius:7px;width:22px;height:22px}.agent-avatar-sm{border-radius:9px;width:30px;height:30px}.agent-avatar-lg{border-radius:13px;width:46px;height:46px}.agent-avatar-xs svg{width:12px;height:12px}.agent-avatar-sm svg,.agent-avatar-md svg{width:16px;height:16px}.agent-avatar-lg svg{width:22px;height:22px}.agent-appearance-editor{border-block:1px solid var(--border);grid-template-columns:minmax(210px,.8fr) minmax(280px,1.2fr) auto;align-items:center;gap:18px;padding:16px 0;display:grid}.agent-appearance-preview{align-items:center;gap:12px;min-width:0;display:flex}.agent-appearance-preview>div{min-width:0}.agent-appearance-preview strong,.agent-appearance-preview span{display:block}.agent-appearance-preview strong{font-size:var(--font-size-control)}.agent-appearance-preview span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.agent-appearance-controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;min-width:0;display:grid}.appearance-choice-group>span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-bottom:6px;display:block}.appearance-choice-group>div{flex-wrap:wrap;gap:6px;display:flex}.appearance-choice-group button{border:1px solid var(--border);width:30px;height:30px;color:var(--text-secondary);background:var(--surface);border-radius:9px;place-items:center;padding:0;display:grid}.appearance-choice-group button:hover,.appearance-choice-group button.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.appearance-choice-group.color button:before{border:2px solid var(--surface);border-radius:var(--radius-circle);background:var(--appearance-swatch);width:16px;height:16px;box-shadow:0 0 0 1px color-mix(in srgb, var(--appearance-swatch) 40%, var(--border));content:""}.appearance-choice-group.color button.active:before{box-shadow:0 0 0 2px var(--surface), 0 0 0 3px var(--appearance-swatch)}.agent-appearance-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.agent-appearance-editor>.studio-field-error{grid-column:1/-1;margin:-8px 0 0}.avatar-crop-dialog{width:min(560px,100vw - 40px)}.avatar-crop-stage{border-radius:var(--radius-surface);background:var(--surface-inverse);height:min(420px,52vh);min-height:300px;position:relative;overflow:hidden}.avatar-zoom-control{color:var(--text-secondary);font-size:var(--font-size-meta);grid-template-columns:auto minmax(0,1fr);align-items:center;gap:14px;margin-top:16px;display:grid}.agent-cell-copy{min-width:0}.agent-cell-copy strong,.agent-cell-copy span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.agent-cell-copy strong{font-weight:var(--font-weight-medium)}.agent-cell-copy span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption);margin-top:2px}.resource-counts{color:var(--text-secondary);font-size:var(--font-size-meta);flex-wrap:wrap;gap:5px;display:flex}.resource-counts span{border-radius:var(--radius-badge);background:var(--surface-subtle);padding:2px 6px}.resource-origin{color:var(--text-tertiary);font-size:var(--font-size-caption);line-height:var(--line-height-caption);margin-top:3px;display:block}.mono{font-family:var(--font-mono);font-size:var(--font-size-meta)}.truncate{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.status-badge{min-height:var(--status-height);border-radius:var(--radius-pill);font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);white-space:nowrap;align-items:center;gap:5px;padding:2px 7px;display:inline-flex}.studio-select-trigger{width:100%;min-width:0;min-height:var(--control-height);border:1px solid var(--border-strong);border-radius:var(--radius-control);color:var(--text);background:var(--surface);font:inherit;text-align:left;cursor:pointer;transition:border-color var(--motion-fast) var(--ease), box-shadow var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);justify-content:space-between;align-items:center;gap:10px;padding:0 11px;display:inline-flex}.studio-select-trigger.compact-select{flex:0 0 156px;width:156px}.studio-select-trigger:hover:not(:disabled){border-color:var(--accent-border);background:var(--hover)}.studio-select-trigger:focus-visible,.studio-select-trigger[data-state=open]{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.studio-select-trigger:disabled{color:var(--text-tertiary);background:var(--surface-subtle);cursor:not-allowed}.studio-select-chevron{color:var(--text-tertiary);flex:none;display:inline-flex}.studio-select-content{z-index:1800;width:var(--radix-select-trigger-width);max-height:min(360px, var(--radix-select-content-available-height));border:1px solid var(--border-strong);border-radius:var(--radius-surface);background:var(--surface-raised);box-shadow:var(--shadow-overlay);overflow:hidden}.studio-select-viewport{padding:5px}.studio-select-item{border-radius:var(--radius-badge);min-height:38px;color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;align-items:center;gap:10px;padding:7px 34px 7px 10px;display:flex;position:relative}.studio-select-item[data-highlighted]{color:var(--text);background:var(--hover)}.studio-select-item[data-state=checked]{color:var(--accent);background:var(--accent-soft)}.studio-select-item[data-disabled]{opacity:.45;cursor:not-allowed}.studio-select-item-copy,.studio-select-item-copy>span,.studio-select-item-copy small{min-width:0;display:block}.studio-select-item-copy>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.studio-select-item-copy small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.studio-select-check{display:inline-flex;position:absolute;right:10px}.studio-select-scroll{height:24px;color:var(--text-tertiary);background:var(--surface);place-items:center;display:grid}.status-badge.neutral{color:var(--text-secondary);background:var(--hover)}.status-badge.success,.status-badge.SUCCEEDED,.status-badge.COMPLETED,.status-badge.READY{color:var(--success);background:var(--success-soft)}.status-badge.info,.status-badge.RUNNING,.status-badge.QUEUED{color:var(--info);background:var(--info-soft)}.status-badge.warning,.status-badge.WAITING,.status-badge.PAUSED,.status-badge.INTERRUPTED{color:var(--warning);background:var(--warning-soft)}.status-badge.danger,.status-badge.FAILED,.status-badge.CANCELLED,.status-badge.TIMED_OUT{color:var(--danger);background:var(--danger-soft)}.table-empty,.empty-page-state{text-align:center;align-content:center;place-items:center;min-height:310px;padding:36px;display:grid}.empty-icon{border:1px solid var(--border);border-radius:var(--radius-surface);width:44px;height:44px;color:var(--accent);background:var(--surface-subtle);place-items:center;margin-bottom:14px;display:grid}.empty-icon svg{width:20px;height:20px}.table-empty h2,.empty-page-state h2,.chat-empty h2{font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold);margin:0}.table-empty p,.empty-page-state p,.chat-empty p{max-width:50ch;color:var(--text-secondary);font-size:var(--font-size-body);line-height:var(--line-height-body);margin:6px 0 18px}.capability-cell{max-width:360px}.cell-clamp{-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;max-width:100%;color:var(--text-secondary);font-size:var(--font-size-meta);line-height:var(--line-height-caption);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.create-shell{min-height:calc(100dvh - 64px)}.create-header{border-bottom:1px solid var(--border);background:var(--surface);grid-template-columns:200px minmax(0,1fr) 200px;align-items:start;gap:32px;min-height:124px;padding:26px max(40px,50% - 720px) 24px;display:grid}.create-heading{text-align:left}.create-heading .eyebrow{color:var(--accent);font-size:var(--font-size-meta);font-weight:var(--font-weight-semibold)}.create-heading h1{font-size:var(--font-size-page-title);font-weight:var(--font-weight-semibold);line-height:var(--line-height-title);margin:5px 0 0}.create-heading p{color:var(--text-secondary);font-size:var(--font-size-control);line-height:var(--line-height-control);margin:6px 0 0}.draft-state{color:var(--text-secondary);font-size:var(--font-size-meta);justify-self:end;align-items:center;gap:7px;padding-top:6px;display:flex}.wizard-layout{grid-template-columns:220px minmax(720px,1fr) 290px;gap:32px;width:min(1520px,100%);min-height:calc(100dvh - 188px);margin:0 auto;padding:34px 40px 64px;display:grid}.quick-create{grid-template-columns:minmax(620px,1fr) 360px;align-items:start;gap:22px;width:min(1180px,100% - 80px);margin:32px auto 64px;display:grid}.quick-create-form,.manifest-preview{border:1px solid var(--border);background:var(--surface);border-radius:10px;box-shadow:0 1px 2px #1f2a370a}.quick-create-form{padding:24px}.agent-edit-section{gap:20px;display:grid}.agent-edit-section[hidden]{display:none}.agent-edit-section-heading{border-bottom:1px solid var(--border);align-items:flex-start;gap:12px;padding-bottom:14px;display:flex}.agent-edit-section-heading h3,.agent-edit-section-heading p{margin:0}.agent-edit-section-heading p{color:var(--text-tertiary);font-size:var(--font-size-meta);margin-top:4px}.quick-runtime-strip{border:1px solid var(--border);background:var(--surface-subtle);border-radius:8px;align-items:center;gap:11px;min-height:54px;margin:-8px -8px 24px;padding:9px 10px;display:flex}.runtime-logo{border:1px solid var(--accent-border);width:34px;height:34px;color:var(--accent);background:var(--accent-soft);border-radius:8px;flex:none;place-items:center;display:grid}.runtime-logo svg{width:17px;height:17px}.quick-runtime-strip>div{flex:1;min-width:0}.quick-runtime-strip strong,.quick-runtime-strip span{display:block}.quick-runtime-strip strong{font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.quick-runtime-strip div span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption);margin-top:1px}.quick-create-heading{margin-bottom:22px}.quick-create-heading .eyebrow{color:var(--accent);font-size:var(--font-size-caption);font-weight:var(--font-weight-semibold);letter-spacing:.04em;text-transform:uppercase}.quick-create-heading h2{font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold);margin:5px 0 0}.quick-create-heading p{color:var(--text-secondary);font-size:var(--font-size-meta);margin:5px 0 0}.quick-create-form .field{margin-bottom:18px}.quick-create-form textarea{resize:vertical;font-size:var(--font-size-control);line-height:var(--line-height-editor)}.quick-model-binding-field .field-heading{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.quick-model-bindings{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;display:grid}.quick-model-option{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);cursor:pointer;grid-template-columns:16px minmax(0,1fr);gap:8px;min-width:0;padding:10px 11px;display:grid}.quick-model-option:has(input:checked){border-color:var(--accent-border);background:var(--accent-soft)}.quick-model-option input{width:15px;height:15px;accent-color:var(--accent);margin:2px 0 0;padding:0}.quick-model-option strong,.quick-model-option small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.quick-model-option strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.quick-model-option small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.quick-create-actions{border-top:1px solid var(--border);align-items:center;gap:20px;margin-top:6px;padding-top:18px;display:flex}.checkbox-row{cursor:pointer;flex:1;align-items:flex-start;gap:9px;min-width:0;display:flex}.checkbox-row input{width:16px;height:16px;accent-color:var(--accent);flex:none;margin-top:4px;padding:0}.checkbox-row strong,.checkbox-row small{display:block}.checkbox-row strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.checkbox-row small{color:var(--text-tertiary);font-size:var(--font-size-caption)}.manifest-preview{position:sticky;top:88px;overflow:hidden}.manifest-preview>.code-viewer{border:0;border-bottom:1px solid var(--border);border-radius:0;min-height:430px;max-height:590px}.manifest-contract{border-top:1px solid var(--border);gap:7px;padding:13px 14px;display:grid}.manifest-contract span{color:var(--text-secondary);font-size:var(--font-size-caption);align-items:center;gap:7px;display:flex}.manifest-contract svg{color:var(--success)}.quick-capability-bindings{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}@media (width<=1100px){.quick-capability-bindings{grid-template-columns:minmax(0,1fr)}}.wizard-steps{flex-direction:column;align-self:start;gap:6px;display:flex}.wizard-step{border-radius:var(--radius-control);width:100%;min-height:68px;color:var(--text-secondary);cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:12px;padding:10px 12px;display:flex}.wizard-step:hover{background:var(--hover)}.wizard-step.active{color:var(--text);background:var(--selected)}.wizard-step.completed .step-number{border-color:var(--success);color:var(--success);background:var(--success-soft)}.step-number{border:1px solid var(--border-strong);border-radius:var(--radius-circle);background:var(--surface);width:30px;height:30px;font-size:var(--font-size-meta);font-variant-numeric:tabular-nums;flex:none;place-items:center;display:grid}.wizard-step.active .step-number{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.wizard-step strong,.wizard-step small{display:block}.wizard-step strong{font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.wizard-step small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:3px}.wizard-content{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);align-self:start;min-width:0}.wizard-panel{padding:28px 36px 16px;display:none}.wizard-panel.active{display:block}.panel-heading{align-items:flex-start;gap:12px;margin-bottom:22px;display:flex}.panel-index{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-meta);margin-top:3px}.panel-heading>div{min-width:0}.panel-heading h2{font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold);line-height:var(--line-height-title);margin:0}.panel-heading p{color:var(--text-secondary);font-size:var(--font-size-control);line-height:var(--line-height-control);margin:5px 0 0}.panel-heading>.button{margin-left:auto}.field{min-width:0;margin-bottom:24px}.field label{font-size:var(--font-size-control);font-weight:var(--font-weight-medium);align-items:center;gap:7px;margin-bottom:8px;display:flex}.required-mark{border-radius:var(--radius-badge);color:var(--danger);background:var(--danger-soft);font-size:var(--font-size-caption);font-weight:var(--font-weight-regular);padding:1px 5px}.field-footer{color:var(--text-tertiary);font-size:var(--font-size-meta);justify-content:space-between;gap:12px;margin-top:8px;display:flex}.helper{color:var(--text-tertiary);font-size:var(--font-size-meta);margin-top:7px;display:block}.form-grid{gap:0 20px;display:grid}.form-grid.two-columns{grid-template-columns:repeat(2,minmax(0,1fr))}.template-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.template-card{border:1px solid var(--border);border-radius:var(--radius-surface);min-height:94px;color:var(--text);background:var(--surface);cursor:pointer;text-align:left;transition:border-color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease), transform var(--motion-fast) var(--ease);grid-template-columns:38px minmax(0,1fr);align-items:center;gap:12px;padding:16px 42px 16px 16px;display:grid;position:relative}.template-card:hover{border-color:var(--accent-border);background:var(--surface-subtle)}.template-card:active{transform:translateY(1px)}.template-card.selected{border-color:var(--accent);background:var(--accent-soft)}.template-card>span:not(.template-icon,.choice-check){min-width:0}.template-card strong,.template-card small{display:block}.template-card strong{font-size:var(--font-size-body);font-weight:var(--font-weight-semibold)}.template-card small{color:var(--text-secondary);font-size:var(--font-size-meta);line-height:var(--line-height-control);margin-top:3px}.template-card .choice-check{display:none}.template-card.selected .choice-check{display:grid}.template-icon{border:1px solid var(--border);border-radius:var(--radius-control);width:38px;height:38px;color:var(--accent);background:var(--surface);place-items:center;display:grid}.template-icon svg{width:16px;height:16px}.template-specific{border-top:1px solid var(--border);padding-top:24px}.choice-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.choice-card{border:1px solid var(--border);border-radius:var(--radius-surface);min-height:136px;color:var(--text);background:var(--surface);cursor:pointer;text-align:left;transition:border-color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);flex-direction:column;align-items:flex-start;padding:16px;display:flex;position:relative}.choice-card:hover{border-color:var(--accent-border);background:var(--surface-subtle)}.choice-card strong{font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);margin-top:4px}.choice-card>span:not(.choice-check){color:var(--text-secondary);font-size:var(--font-size-meta);line-height:var(--line-height-control);margin-top:7px}.choice-card small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:auto}.choice-check{border-radius:var(--radius-circle);width:20px;height:20px;color:var(--accent);background:var(--surface);place-items:center;display:none;position:absolute;top:10px;right:10px}.choice-card.selected .choice-check{display:grid}.choice-check svg{width:11px;height:11px}.capability-section{border-top:1px solid var(--border);padding:16px 0}.capability-section:first-of-type{border-top:0;padding-top:0}.capability-heading{align-items:center;gap:10px;margin-bottom:14px;display:flex}.capability-icon{border:1px solid var(--border);border-radius:var(--radius-control);width:36px;height:36px;color:var(--accent);background:var(--surface-subtle);place-items:center;display:grid}.capability-icon svg{width:15px;height:15px}.capability-heading>div{flex:1;min-width:0}.capability-heading h3,.capability-heading p{margin:0}.capability-heading h3{font-size:var(--font-size-body);font-weight:var(--font-weight-semibold)}.capability-heading p{color:var(--text-tertiary);font-size:var(--font-size-meta);margin-top:2px}.model-profile-control{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.model-profile-control+.helper{margin-top:8px;display:block}.required-badge,.recommended-badge{border-radius:var(--radius-badge);font-size:var(--font-size-caption);padding:3px 7px}.required-badge{color:var(--danger);background:var(--danger-soft)}.recommended-badge{color:var(--accent);background:var(--accent-soft)}.segmented-control{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-subtle);grid-template-columns:repeat(3,minmax(86px,1fr));width:max-content;padding:3px;display:inline-grid}.segmented-control button{min-height:var(--button-height-small);border-radius:var(--radius-badge);color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-meta);font-weight:var(--font-weight-medium);transition:color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);background:0 0;border:0;padding:5px 14px}.segmented-control button:hover{color:var(--text)}.segmented-control button.selected{color:var(--accent);background:var(--surface);box-shadow:var(--shadow-control)}.policy-description{color:var(--text-tertiary);font-size:var(--font-size-meta);margin:8px 0 14px}.resource-detail-list{border-top:1px solid var(--border);margin-top:8px;display:grid}.resource-detail-item{border-bottom:1px solid var(--border);align-items:center;gap:10px;min-height:56px;padding:10px 4px;display:flex}.resource-detail-item-copy,.skill-candidate-copy{flex:1;min-width:0}.resource-detail-item-copy strong,.resource-detail-item-copy span,.skill-candidate-copy strong,.skill-candidate-copy span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.resource-detail-item-copy strong,.skill-candidate-copy strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.resource-detail-item-copy span,.skill-candidate-copy span{color:var(--text-tertiary);font-size:var(--font-size-caption);white-space:normal;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;max-height:2.6em;margin-top:2px;display:-webkit-box}.resource-source{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption)}.compact-resource-list{flex-wrap:wrap;gap:6px;display:flex}.compact-resource{border:1px solid var(--border);border-radius:var(--radius-control);min-height:32px;color:var(--text-secondary);background:var(--surface-subtle);font-size:var(--font-size-meta);align-items:center;gap:6px;padding:5px 9px;display:inline-flex}.compact-resource svg{width:13px;height:13px}.inline-alert{border-radius:var(--radius-control);font-size:var(--font-size-control);border:1px solid;align-items:flex-start;gap:10px;margin:10px 0;padding:13px 14px;display:flex}.inline-alert>svg{width:16px;height:16px;margin-top:1px}.inline-alert strong,.inline-alert p{margin:0;display:block}.inline-alert p{font-size:var(--font-size-meta);line-height:var(--line-height-control);margin-top:2px}.inline-alert.warning{color:var(--warning);background:var(--warning-soft);border-color:#eee2c9}.inline-alert.error{color:var(--danger);background:var(--danger-soft);border-color:#f1d6d2}.prompt-status{color:var(--text-tertiary);font-size:var(--font-size-meta);align-items:center;gap:7px;margin:-12px 0 18px 30px;display:flex}.prompt-editor{font-size:var(--font-size-control);line-height:var(--line-height-editor)}.review-block{border-top:1px solid var(--border);padding:18px 0}.review-block:first-of-type{border-top:0;padding-top:0}.review-title{color:var(--text-secondary);font-size:var(--font-size-meta);justify-content:space-between;margin-bottom:12px;display:flex}.review-agent{align-items:flex-start;gap:12px;display:flex}.review-agent>div{min-width:0}.review-agent strong,.review-agent span{display:block}.review-agent strong{font-size:var(--font-size-subtitle);font-weight:var(--font-weight-semibold)}.review-agent span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption);margin-top:2px}.review-agent p{max-width:64ch;color:var(--text-secondary);font-size:var(--font-size-control);line-height:var(--line-height-control);margin:8px 0 0}.review-capabilities{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.review-capability{border-radius:var(--radius-control);background:var(--surface-subtle);align-items:center;gap:10px;min-height:62px;padding:11px 12px;display:flex}.review-capability>svg{width:15px;height:15px;color:var(--accent)}.review-capability strong,.review-capability span{display:block}.review-capability strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.review-capability span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.prompt-preview{border-left:2px solid var(--accent-border);max-height:144px;color:var(--text-secondary);background:var(--surface-subtle);font-size:var(--font-size-meta);line-height:var(--line-height-control);white-space:pre-wrap;padding:14px;overflow:hidden}.post-create-option{border:1px solid var(--accent-border);border-radius:var(--radius-control);background:var(--accent-soft);cursor:pointer;align-items:flex-start;gap:10px;min-height:70px;margin:16px 0 4px;padding:14px;display:flex}.post-create-option input{width:16px;height:16px;accent-color:var(--accent);margin-top:2px}.post-create-option strong,.post-create-option small{display:block}.post-create-option strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.post-create-option small{color:var(--text-secondary);font-size:var(--font-size-caption);margin-top:2px}.wizard-actions{border-top:1px solid var(--border);background:#fffffff5;align-items:center;gap:10px;min-height:72px;padding:0 30px;display:flex}.wizard-progress{color:var(--text-tertiary);font-size:var(--font-size-meta);text-align:center;flex:1}.wizard-summary-content dl,.detail-aside dl{margin:0}.wizard-summary-content dl>div,.detail-aside dl>div{min-height:var(--button-height);border-bottom:1px solid var(--border);font-size:var(--font-size-meta);justify-content:space-between;align-items:center;gap:12px;display:flex}.wizard-summary-content dt,.detail-aside dt{color:var(--text-secondary)}.wizard-summary-content dd,.detail-aside dd{font-weight:var(--font-weight-medium);text-align:right;text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.summary-divider,.aside-divider{background:var(--border);height:1px;margin:18px 0}.summary-note{align-items:flex-start;gap:10px;padding:10px 0;display:flex}.summary-note>svg{width:15px;height:15px;color:var(--accent);margin-top:1px}.summary-note strong,.summary-note p{margin:0}.summary-note strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-medium);display:block}.summary-note p{color:var(--text-tertiary);font-size:var(--font-size-caption);line-height:var(--line-height-caption);margin-top:2px}.codex-capability-notice{margin-bottom:20px}.codex-disabled-capabilities.codex-disabled{opacity:.55;pointer-events:none;filter:grayscale(.4)}.authoring-mode-tabs{border:1px solid var(--border);background:var(--surface-subtle);border-radius:14px;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 40px 22px;padding:6px;display:grid}.authoring-mode-tabs button{min-width:0;color:var(--text-secondary);text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:10px;align-items:center;gap:10px;padding:12px 14px;display:flex}.authoring-mode-tabs button:hover,.authoring-mode-tabs button.active{color:var(--text);border-color:var(--border);background:var(--surface);box-shadow:var(--shadow-control)}.authoring-mode-tabs svg{width:20px;height:20px;color:var(--accent);flex:none}.authoring-mode-tabs span{gap:2px;min-width:0;display:grid}.authoring-mode-tabs strong,.authoring-mode-tabs small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.authoring-mode-tabs small{color:var(--text-tertiary);font-size:var(--font-size-caption)}.authoring-mode-panel{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-control);border-radius:16px;margin:0 40px 40px;padding:28px}.authoring-panel-heading{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:24px;display:flex}.authoring-panel-heading h2{font-size:var(--font-size-section-title);margin:5px 0 6px}.authoring-panel-heading p{color:var(--text-secondary);margin:0}.conversation-authoring-layout,.authoring-inspect-grid{grid-template-columns:minmax(0,1.1fr) minmax(380px,.9fr);align-items:stretch;gap:16px;display:grid}.authoring-chat-column,.authoring-input-card,.authoring-inspection-card{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);gap:14px;min-width:0;padding:18px;display:grid}.authoring-chat-column{grid-template-rows:minmax(180px,1fr) auto auto auto}.authoring-composer-actions{justify-content:flex-end;display:flex}.authoring-transcript{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-subtle);flex-direction:column;gap:8px;min-height:0;max-height:none;padding:14px;display:flex;overflow:auto}.authoring-message{border-radius:var(--radius-control);background:var(--surface);border:1px solid var(--border);max-width:92%;padding:10px 13px}.authoring-message span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.authoring-message p{white-space:pre-wrap;font-size:var(--font-size-control);margin:4px 0 0}.authoring-composer{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px;display:grid}.authoring-composer textarea{resize:vertical;min-height:64px;max-height:200px}.authoring-inspection-card{grid-template-rows:auto auto auto 1fr auto}.authoring-preview-heading{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-sunken);align-items:center;gap:10px;min-height:48px;padding:9px 11px;display:flex}.authoring-preview-heading>div{flex:1;min-width:0}.authoring-preview-heading strong,.authoring-preview-heading span{display:block}.authoring-preview-heading strong{color:var(--text-primary);font-family:var(--font-mono);font-size:var(--font-size-meta)}.authoring-preview-heading div span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.authoring-inspection-card .code-viewer{min-height:160px}.skill-discovery-list{gap:10px;min-height:160px;display:grid}.skill-candidate{border:1px solid var(--border);cursor:default;border-radius:10px;grid-template-columns:auto auto minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:13px;display:grid}.skill-candidate:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.skill-candidate.invalid{opacity:.65}.skill-candidate small{color:var(--text-tertiary)}.skill-preview-button{white-space:nowrap}.skill-preview-layout{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);grid-template-columns:minmax(210px,.72fr) minmax(0,1.6fr);min-height:520px;display:grid;overflow:hidden}.skill-preview-sidebar{border-right:1px solid var(--border);background:var(--surface-subtle);min-width:0;min-height:0;padding:8px;overflow:auto}.skill-file-tree{gap:2px;display:grid}.skill-tree-row{width:100%;min-width:0;min-height:32px;padding:5px 8px 5px calc(8px + var(--skill-depth,0) * 14px);border-radius:var(--radius-control);color:var(--text-secondary);text-align:left;background:0 0;border:0;grid-template-columns:16px 16px minmax(0,1fr);align-items:center;gap:6px;display:grid}.skill-tree-row:hover{color:var(--text-primary);background:var(--surface-hover)}.skill-tree-row.active{color:var(--accent-strong);background:var(--accent-soft)}.skill-tree-row span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.skill-tree-spacer{width:16px}.skill-preview-pane{background:var(--surface);flex-direction:column;min-width:0;min-height:0;display:flex}.skill-preview-header{border-bottom:1px solid var(--border);background:var(--surface-subtle);justify-content:space-between;align-items:center;gap:12px;min-height:48px;padding:9px 14px;display:flex}.skill-preview-header strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.skill-preview-header span{color:var(--text-tertiary);font-size:var(--font-size-caption);flex:none}.skill-preview-content{background:var(--surface-raised);flex:1;min-height:0;overflow:auto}.skill-file-state{min-height:160px;color:var(--text-tertiary);font-size:var(--font-size-meta);text-align:center;place-items:center;padding:24px;display:grid}.skill-preview-content>.code-viewer{border:0;border-radius:0;min-height:100%}.code-viewer{border:1px solid var(--border);border-radius:var(--radius-surface);min-width:0;color:var(--code-text);background:var(--code-bg);flex-direction:column;display:flex;overflow:hidden}.code-viewer-toolbar{border-bottom:1px solid var(--border);min-height:42px;color:var(--text-secondary);background:var(--surface-sunken);font-size:var(--font-size-caption);justify-content:space-between;align-items:center;gap:12px;padding:6px 8px 6px 13px;display:flex}.code-viewer-toolbar>div:first-child{align-items:baseline;gap:8px;min-width:0;display:flex}.code-viewer-toolbar strong{min-width:0;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.code-viewer-toolbar span{color:var(--text-tertiary);text-transform:lowercase;flex:none}.code-viewer-actions{flex:none;gap:2px;display:flex}.code-viewer-actions .icon-button{width:28px;height:28px;min-height:28px}.code-viewer-scroll{background:var(--code-bg);scrollbar-gutter:stable;flex:1;min-width:0;min-height:0;overflow:auto}.code-viewer-pre,.code-viewer-fallback{width:max-content;min-width:100%;color:var(--code-text);font-family:var(--font-mono);font-size:var(--font-size-caption);line-height:var(--line-height-code-compact);tab-size:2;margin:0;padding:12px 0;background:0 0!important}.code-viewer-fallback{padding-inline:14px}.code-viewer-line{grid-template-columns:auto minmax(max-content,1fr);min-height:22px;display:grid}.code-viewer-line:hover{background:color-mix(in srgb, var(--accent-soft) 46%, transparent)}.code-viewer-line-number{z-index:1;width:52px;color:var(--text-faint);background:var(--code-bg);text-align:right;-webkit-user-select:none;user-select:none;padding:0 12px 0 8px;position:sticky;left:0}.code-viewer-line-content{white-space:pre;min-width:0;padding-right:18px}.code-viewer[data-wrap=true] .code-viewer-pre,.code-viewer[data-wrap=true] .code-viewer-fallback{white-space:pre-wrap;width:100%;min-width:0}.code-viewer[data-wrap=true] .code-viewer-line{grid-template-columns:auto minmax(0,1fr)}.code-viewer[data-wrap=true] .code-viewer-line-content{white-space:pre-wrap;overflow-wrap:anywhere}.markdown-preview-shell{min-height:100%;padding:0 24px 32px}.markdown-frontmatter{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-sunken);max-width:820px;margin:18px auto 0;overflow:hidden}.markdown-frontmatter summary{color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);padding:9px 12px}.markdown-frontmatter[open] summary{border-bottom:1px solid var(--border)}.markdown-frontmatter .code-viewer{border:0;border-radius:0;max-height:260px}.markdown-frontmatter .code-viewer-toolbar{display:none}.markdown-preview{max-width:820px;color:var(--text-primary);font-size:var(--font-size-body);line-height:var(--line-height-editor);overflow-wrap:anywhere;margin:0 auto;padding-top:24px}.markdown-preview h1,.markdown-preview h2,.markdown-preview h3,.markdown-preview h4{color:var(--text-primary);line-height:var(--line-height-tight);margin:1.45em 0 .55em}.markdown-preview h1{border-bottom:1px solid var(--border);font-size:var(--font-size-page-title);padding-bottom:.35em}.markdown-preview h2{font-size:var(--font-size-section-title)}.markdown-preview h3{font-size:var(--font-size-subtitle)}.markdown-preview h1:first-child,.markdown-preview h2:first-child,.markdown-preview h3:first-child{margin-top:0}.markdown-preview p,.markdown-preview ul,.markdown-preview ol,.markdown-preview blockquote{margin:.72em 0}.markdown-preview a{color:var(--accent-strong);text-underline-offset:3px;text-decoration-thickness:1px}.markdown-preview :not(pre)>code{border:1px solid var(--border);border-radius:var(--radius-small);color:var(--text-primary);background:var(--surface-sunken);font-family:var(--font-mono);font-size:var(--font-size-meta);padding:.15em .36em}.markdown-preview .code-viewer{margin:1em 0}.markdown-preview blockquote{border-left:3px solid var(--accent-border);color:var(--text-secondary);padding:.15em 0 .15em 1em}.markdown-preview hr{border:0;border-top:1px solid var(--border);margin:1.5em 0}.markdown-table-scroll{border:1px solid var(--border);border-radius:var(--radius-control);max-width:100%;margin:1em 0;overflow:auto}.markdown-preview table{border-collapse:collapse;width:100%}.markdown-preview th,.markdown-preview td{border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;padding:8px 10px}.markdown-preview th{background:var(--surface-sunken);font-weight:var(--font-weight-semibold)}.markdown-preview tr:last-child td{border-bottom:0}.skill-preview-truncated{border-top:1px solid var(--border);color:var(--warning-text);background:var(--warning-soft);font-size:var(--font-size-caption);padding:8px 14px}@media (width<=1100px){.authoring-mode-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.conversation-authoring-layout,.authoring-inspect-grid{grid-template-columns:minmax(0,1fr)}}@media (width<=720px){.authoring-mode-tabs,.authoring-mode-panel{margin-inline:16px}.authoring-mode-tabs{grid-template-columns:minmax(0,1fr)}.authoring-mode-panel{padding:18px}}.authoring-credential-banner{border:1px solid var(--danger);border-radius:var(--radius-control);background:var(--danger-soft);color:var(--danger);align-items:center;gap:10px;margin:10px 0 4px;padding:10px 12px;display:flex}.authoring-credential-banner svg{flex:none;width:18px;height:18px}.authoring-credential-banner-copy{flex-direction:column;flex:auto;gap:2px;min-width:0;display:flex}.authoring-credential-banner-copy strong{font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.authoring-credential-banner-copy span{font-size:var(--font-size-caption);color:var(--text-secondary)}.authoring-credential-banner .button{flex:none}.detail-header .button.compact{margin:-6px 0 12px}.detail-title-row{align-items:center;gap:12px;display:flex}.detail-layout{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:36px;display:grid}.detail-main{min-width:0}.detail-section{border-top:1px solid var(--border);padding:24px 0}.detail-section:first-child{border-top:0;padding-top:0}.section-heading{align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.section-heading h2,.section-heading p{margin:0}.section-heading-copy{min-width:0}.section-heading h2{font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold)}.section-heading p{color:var(--text-tertiary);font-size:var(--font-size-meta);margin-top:3px}.readonly-field+.readonly-field{margin-top:14px}.readonly-field>span{color:var(--text-secondary);font-size:var(--font-size-meta);margin-bottom:6px;display:block}.readonly-field pre{border:1px solid var(--border);border-radius:var(--radius-control);max-height:260px;color:var(--text-secondary);background:var(--surface-subtle);font-family:var(--font-sans);font-size:var(--font-size-control);line-height:var(--line-height-editor);white-space:pre-wrap;margin:0;padding:14px;overflow:auto}.binding-groups{gap:12px;display:grid}.binding-group{border-bottom:1px solid var(--border);grid-template-columns:90px minmax(0,1fr);gap:12px;padding:12px 0;display:grid}.binding-group>span{color:var(--text-secondary);font-size:var(--font-size-meta)}.binding-items{flex-wrap:wrap;gap:6px;display:flex}.detail-aside{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);padding:20px;position:sticky;top:80px}.aside-title{font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);margin-bottom:10px}.build-state{align-items:flex-start;gap:9px;display:flex}.build-state .status-dot{margin-top:6px}.build-state strong,.build-state span{display:block}.build-state strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.build-state span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.session-status{background:var(--border-strong);border-radius:50%;flex:none;width:5px;height:5px}.session-status.running{background:var(--success);box-shadow:0 0 0 3px var(--success-soft)}.message{min-width:0;max-width:100%}.chat-empty{text-align:center;align-content:center;place-items:center;min-height:100%;padding:30px;display:grid}.suggestion-list{gap:7px;width:min(620px,100%);display:grid}.suggestion-list button{border:1px solid var(--border);border-radius:var(--radius-control);min-height:44px;color:var(--text-secondary);background:var(--surface);cursor:pointer;font-size:var(--font-size-control);text-align:left;padding:10px 14px}.suggestion-list button:hover{border-color:var(--accent-border);color:var(--text);background:var(--accent-soft)}.message{width:100%;max-width:790px;margin:0 auto 22px}.message-meta{color:var(--text-tertiary);font-size:var(--font-size-caption);align-items:center;gap:8px;margin-bottom:7px;display:flex}.message-meta strong{color:var(--text-secondary);font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.message-content{min-width:0;max-width:100%;color:var(--text);font-size:var(--font-size-body);line-height:var(--line-height-editor);overflow-wrap:anywhere}.plain-message{white-space:pre-wrap}ksadk-message{min-width:0;max-width:100%;display:block}.message.user .message-content{border:1px solid var(--accent-border);border-radius:var(--radius-message);background:var(--accent-soft);width:fit-content;max-width:86%;margin-left:auto;padding:10px 12px}.message.user .message-meta{justify-content:flex-end}.message.assistant .message-content{padding-left:0}.message.error .message-content{border-radius:var(--radius-control);color:var(--danger);background:var(--danger-soft);border:1px solid #f1d6d2;padding:10px 12px}.message.status .message-content{border-left:2px solid var(--border-strong);color:var(--text-secondary);background:var(--surface-subtle);padding:8px 11px}.message-actions{align-items:center;gap:8px;margin-top:10px;display:flex}.message-actions .button{color:var(--text);background:var(--surface)}.message-loading{gap:5px;padding:8px 0;display:inline-flex}.message-loading i{border-radius:var(--radius-circle);background:var(--accent);opacity:.35;width:6px;height:6px;animation:typing 1.2s infinite var(--ease)}.message-loading i:nth-child(2){animation-delay:.14s}.message-loading i:nth-child(3){animation-delay:.28s}@keyframes typing{0%,60%,to{opacity:.25;transform:translateY(0)}30%{opacity:.8;transform:translateY(-2px)}}.message-model{color:var(--text-tertiary);background:var(--surface-subtle);font-family:var(--font-mono);font-size:var(--font-size-caption);border-radius:999px;padding:1px 6px}.inspector-title{color:var(--text-secondary);font-size:var(--font-size-meta);font-weight:var(--font-weight-medium);margin-bottom:8px}.observability-page{width:100%;max-width:none;padding-bottom:28px}.trace-page-header{min-height:60px;margin-bottom:16px}.trace-target,.trace-standard-label{min-height:var(--button-height-small);border:1px solid var(--border);border-radius:var(--radius-control);color:var(--text-secondary);background:var(--surface);font-size:var(--font-size-meta);white-space:nowrap;align-items:center;gap:7px;padding:5px 10px;display:inline-flex}.trace-toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;display:flex}.trace-search-field{flex:260px;width:min(380px,100%);min-width:220px;max-width:380px}.trace-standard-label{font-family:var(--font-mono);font-size:var(--font-size-caption);background:0 0;border-color:#0000;margin-left:auto}.trace-metrics{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:14px;display:grid}.trace-metrics>div{flex-direction:column;justify-content:center;min-width:0;min-height:82px;padding:13px 18px;display:flex;position:relative}.trace-metrics>div+div:before{content:"";background:var(--border);width:1px;position:absolute;inset:15px auto 15px 0}.trace-metrics span,.trace-metrics small{color:var(--text-tertiary);font-size:var(--font-size-caption)}.trace-metrics strong{min-width:0;font-family:var(--font-mono);font-size:var(--font-size-subtitle);font-weight:var(--font-weight-semibold);text-overflow:ellipsis;white-space:nowrap;margin:2px 0;overflow:hidden}.trace-workbench{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);grid-template-columns:minmax(220px,260px) minmax(340px,1fr) minmax(300px,360px);min-width:0;height:max(520px,100dvh - 350px);min-height:0;display:grid;overflow:hidden;box-shadow:0 10px 32px #0f172a0d}.trace-workbench.detail-expanded{grid-template-columns:minmax(360px,1fr) minmax(440px,1.15fr)}.trace-workbench.detail-route{grid-template-columns:minmax(420px,1.22fr) minmax(340px,.78fr)}.trace-workbench.detail-route.detail-expanded{grid-template-columns:minmax(0,1fr)}.trace-workbench.detail-route.detail-expanded .trace-span-panel{display:none}.trace-workbench.detail-route.detail-collapsed{grid-template-columns:minmax(0,1fr)}.trace-panel-header>.trace-view-tabs{flex:none;grid-template-columns:repeat(2,minmax(64px,1fr));min-width:max-content}.trace-workbench.detail-route.detail-collapsed .trace-detail-panel{display:none}.trace-list-panel,.trace-span-panel,.trace-detail-panel{background:var(--surface);flex-direction:column;min-width:0;min-height:0;display:flex}.trace-detail-panel.is-collapsed{display:none}.trace-detail-panel.is-collapsed .trace-panel-header{border-bottom:0}.trace-list-panel,.trace-span-panel{border-right:1px solid var(--border)}.trace-panel-header{border-bottom:1px solid var(--border);background:var(--surface-subtle);align-items:center;gap:10px;min-height:58px;padding:9px 13px;display:flex}.trace-panel-header>div{flex:1;min-width:0}.trace-panel-header strong,.trace-panel-header span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.trace-panel-header strong{font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.trace-panel-header span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:1px}.trace-panel-header .trace-detail-actions{flex:none;justify-content:flex-end;align-items:center;gap:4px;min-width:max-content;display:flex}.trace-span-header>.button{flex:none}.trace-detail-reopen{white-space:nowrap}.trace-list-page{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);min-width:0;overflow:hidden;box-shadow:0 10px 32px #0f172a0d}.trace-list-page>.studio-data-table{border:0;border-radius:0}.trace-list-page-header,.trace-list-pagination{min-height:54px;color:var(--text-secondary);background:var(--surface-subtle);justify-content:space-between;align-items:center;gap:16px;padding:10px 16px;display:flex}.trace-list-page-header{border-bottom:1px solid var(--border)}.trace-list-page-header>div{gap:2px;min-width:0;display:grid}.trace-list-page-header strong{color:var(--text-primary);font-size:var(--font-size-control)}.trace-list-page-header span,.trace-list-pagination>span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.trace-table-status{align-items:center;gap:7px;display:inline-flex}.trace-table-open{max-width:340px;color:var(--text-primary);text-align:left;background:0 0;border:0;gap:2px;padding:0;display:grid}.trace-table-open strong,.trace-table-open span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.trace-table-open span{color:var(--text-tertiary);font-family:var(--font-mono)}.trace-table-open:hover strong{color:var(--accent-strong)}.trace-table-agent{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:9px}.trace-table-agent>span{min-width:0;color:inherit;gap:2px;font-family:inherit;display:grid}.trace-table-agent small{color:var(--text-tertiary);font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.trace-list-pagination{border-top:0}.trace-list-pagination>div{gap:6px;display:flex}.trace-detail-actions .button span{margin-top:0}.trace-list{flex:1;min-height:0;padding:7px;overflow-y:auto}.trace-list-item{border-radius:var(--radius-control);width:100%;min-width:0;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;grid-template-columns:8px minmax(0,1fr);gap:9px;padding:10px 9px;display:grid}.trace-list-item:hover{background:var(--hover)}.trace-list-item.active{background:var(--selected)}.trace-list-status{border-radius:var(--radius-circle);background:var(--text-tertiary);width:7px;height:7px;margin-top:7px}.trace-list-status.COMPLETED{background:var(--success)}.trace-list-status.FAILED,.trace-list-status.CANCELLED{background:var(--danger)}.trace-list-copy,.trace-list-copy>span{min-width:0}.trace-list-copy strong,.trace-list-copy span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.trace-list-copy strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.trace-list-copy>span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption);margin-top:1px}.trace-list-meta{color:var(--text-secondary);font-family:var(--font-sans);font-size:var(--font-size-caption);justify-content:space-between;gap:8px;margin-top:5px;display:flex}.trace-empty,.trace-stage-empty{min-height:100%;color:var(--text-tertiary);text-align:center;align-content:center;place-items:center;gap:8px;padding:24px;display:grid}.trace-empty svg,.trace-stage-empty svg{width:28px;height:28px}.trace-empty strong{color:var(--text-secondary);font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.trace-empty span,.trace-stage-empty p{max-width:40ch;font-size:var(--font-size-meta);margin:0}.trace-stage-empty.compact{min-height:160px}.trace-axis{border-bottom:1px solid var(--border);min-height:34px;color:var(--text-tertiary);background:var(--surface);font-family:var(--font-mono);font-size:var(--font-size-caption);grid-template-columns:minmax(230px,.8fr) repeat(3,minmax(40px,.4fr)) 76px;align-items:center;padding:0 11px;display:grid}.trace-axis span:nth-child(n+2){text-align:right}.trace-span-tree{background-image:linear-gradient(to right, transparent 49.8%, var(--border) 50%, transparent 50.2%);background-position:230px 0;background-repeat:no-repeat;background-size:calc(100% - 306px) 100%;flex:1;min-width:0;min-height:0;overflow:auto}.trace-span-row{border:0;border-bottom:1px solid var(--border);width:100%;min-width:620px;min-height:46px;color:inherit;cursor:pointer;text-align:left;background:0 0;grid-template-columns:minmax(230px,.8fr) minmax(240px,1.2fr) 76px;align-items:center;gap:10px;padding:4px 11px;display:grid}.trace-span-row:hover{background:var(--hover)}.trace-span-row.active{background:var(--selected)}.trace-span-name{align-items:center;gap:7px;min-width:0;display:flex}.trace-span-guides{align-self:stretch;gap:6px;display:inline-flex}.trace-span-guide{border-right:1px solid var(--border-strong);width:8px}.trace-span-name-copy{min-width:0}.trace-span-name-copy strong,.trace-span-name-copy span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.trace-span-name-copy strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.trace-span-name-copy span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption)}.trace-span-status{border-radius:var(--radius-circle);background:var(--text-tertiary);flex:none;width:7px;height:7px}.trace-span-status.OK{background:var(--success)}.trace-span-status.ERROR{background:var(--danger)}.trace-waterfall-track{border-inline:1px solid var(--border);background:repeating-linear-gradient(to right, transparent 0 24.8%, var(--border) 25%);height:18px;position:relative}.trace-waterfall-bar{top:4px;left:var(--span-left);width:max(3px, var(--span-width));border:1px solid var(--accent-border);border-radius:var(--radius-indicator);background:var(--accent-soft);height:10px;position:absolute}.trace-span-row[data-kind=CLIENT] .trace-waterfall-bar{background:var(--warning-soft);border-color:#d9c78c}.trace-span-row[data-status=ERROR] .trace-waterfall-bar{background:var(--danger-soft);border-color:#f1d6d2}.trace-span-duration{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--font-size-caption);text-align:right;white-space:nowrap}.trace-tabs{border-bottom:1px solid var(--border);gap:3px;padding:7px;display:flex;overflow-x:auto}.trace-tabs button{border-radius:var(--radius-control);min-height:30px;color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-caption);white-space:nowrap;background:0 0;border:0;padding:4px 7px}.trace-tabs button:hover{color:var(--text);background:var(--hover)}.trace-tabs button.active{color:var(--accent);background:var(--accent-soft);font-weight:var(--font-weight-medium)}.trace-detail-body{flex:1;min-height:0;overflow:auto}.trace-detail-body.raw-active{overflow:hidden}.trace-trajectory-layout{grid-template-columns:minmax(0,1fr) minmax(240px,32%);min-height:420px;display:grid}.trajectory-selection{border-left:1px solid var(--border);background:var(--surface-subtle);min-width:0;overflow:auto}@media (width<=1040px){.trace-trajectory-layout{grid-template-columns:1fr}.trajectory-selection{border-top:1px solid var(--border);border-left:0;min-height:180px}}.trajectory-view{background:var(--surface);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.trajectory-toolbar{border-bottom:1px solid var(--border);background:var(--surface-subtle);align-items:center;gap:10px;min-height:52px;padding:8px 12px;display:flex}.trajectory-summary-value{min-width:0;font-family:var(--font-mono);font-size:var(--font-size-meta);text-overflow:ellipsis;white-space:nowrap;margin-right:auto;overflow:hidden}.trajectory-status{color:var(--text-tertiary);font-size:var(--font-size-meta);padding:14px}.trajectory-status.error{color:var(--danger)}.trajectory-ledger{flex:1;min-height:0;overflow:auto}.trajectory-timeline{border-bottom:1px solid var(--border);background:var(--surface-subtle);gap:6px;padding:10px 12px;display:grid}.trajectory-lane{grid-template-columns:44px minmax(0,1fr);align-items:center;gap:8px;min-width:0;display:grid}.trajectory-lane>span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.trajectory-lane>div{background:var(--surface-sunken);border-radius:3px;height:10px;position:relative;overflow:hidden}.trajectory-lane i{background:var(--text-faint);border-radius:2px;min-width:3px;position:absolute;top:1px;bottom:1px}.trajectory-lane i[data-category=assistant]{background:var(--accent)}.trajectory-lane i[data-category=tool]{background:var(--warning)}.trajectory-lane i[data-category=user]{background:var(--success)}.trajectory-column-header,.trajectory-row{grid-template-columns:26px minmax(180px,1fr) minmax(76px,88px)}.trajectory-column-header[data-usage=true],.trajectory-row[data-usage=true]{grid-template-columns:26px minmax(180px,1fr) repeat(3,minmax(54px,72px)) minmax(76px,88px)}.trajectory-column-header{border-bottom:1px solid var(--border);min-width:520px;color:var(--text-tertiary);background:var(--surface-subtle);font-size:var(--font-size-caption);gap:9px;padding:7px 12px;display:grid}.trajectory-column-header span:first-child{grid-column:1/3}.trajectory-column-header span:not(:first-child){text-align:right}.trajectory-group-label{border-bottom:1px solid var(--border-subtle);min-width:520px;color:var(--text-secondary);background:var(--surface);font-size:var(--font-size-caption);font-weight:var(--font-weight-semibold);padding:9px 12px 6px}.trajectory-turn-header{border-bottom:1px solid var(--border);background:var(--surface-subtle);justify-content:space-between;align-items:center;min-width:520px;padding:10px 12px;display:flex}.trajectory-turn-header strong{font-size:var(--font-size-meta)}.trajectory-turn-header span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.trajectory-row{border:0;border-bottom:1px solid var(--border-subtle);width:100%;min-width:520px;min-height:54px;color:var(--text);cursor:pointer;text-align:left;background:0 0;align-items:center;gap:9px;padding:8px 12px;display:grid}.trajectory-row:hover,.trajectory-row:focus-visible,.trajectory-row[aria-pressed=true],.trajectory-system-row[aria-pressed=true]{background:var(--hover);outline:none}.trajectory-row[aria-pressed=true],.trajectory-system-row[aria-pressed=true]{background:var(--accent-soft)}.trajectory-row-icon{border-radius:var(--radius-control);width:24px;height:24px;color:var(--text-secondary);background:var(--surface-subtle);justify-content:center;align-items:center;display:inline-flex}.trajectory-row[data-category=tool] .trajectory-row-icon{color:var(--warning)}.trajectory-row[data-category=assistant] .trajectory-row-icon{color:var(--accent)}.trajectory-row[data-category=user] .trajectory-row-icon{color:var(--success)}.trajectory-row[data-category=approval] .trajectory-row-icon{color:var(--warning)}.trajectory-row-copy{flex-direction:column;min-width:0;display:flex}.trajectory-row-copy strong,.trajectory-row-copy small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.trajectory-row-copy strong{font-size:var(--font-size-meta)}.trajectory-row-copy small,.trajectory-row-metric,.trajectory-row-duration{color:var(--text-tertiary);font-size:var(--font-size-caption)}.trajectory-row-metric,.trajectory-row-duration{font-family:var(--font-mono);text-align:right}.trajectory-latest{box-shadow:var(--shadow-medium);position:absolute;bottom:16px;right:16px}.trajectory-system-events{border-top:1px solid var(--border);display:grid}.trajectory-system-events>button{border:0;border-bottom:1px solid var(--border-subtle);min-height:36px;color:var(--text-tertiary);font-size:var(--font-size-caption);text-align:left;background:0 0;align-items:center;gap:7px;padding:7px 12px;display:flex}.trajectory-system-events>button:hover{background:var(--hover)}.trajectory-system-row{font-family:var(--font-mono);padding-left:34px!important}.trajectory-detail{flex:1;align-content:start;min-height:0;display:grid;overflow:auto}.trajectory-detail-tabs{z-index:1;border-bottom:1px solid var(--border);background:var(--surface);gap:2px;display:flex;position:sticky;top:0;overflow-x:auto}.trajectory-detail-heading{border-bottom:1px solid var(--border);background:var(--surface);gap:3px;padding:12px;display:grid}.trajectory-detail-heading strong{color:var(--text);font-size:var(--font-size-meta)}.trajectory-detail-heading span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.trajectory-detail-tabs button{color:var(--text-tertiary);font-size:var(--font-size-caption);white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;padding:8px 10px}.trajectory-detail-tabs button[aria-selected=true]{border-bottom-color:var(--accent);color:var(--text)}.trajectory-detail h3{font-size:var(--font-size-meta);margin:0 0 6px}.trajectory-detail>section{border-bottom:1px solid var(--border-subtle);padding:12px}.trajectory-detail p,.trajectory-detail pre{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--font-size-caption);white-space:pre-wrap;word-break:break-word;margin:0;overflow:auto}.trace-detail-grid,.trace-kv-list{margin:0;padding:12px}.trace-detail-grid>div{border-bottom:1px solid var(--border);grid-template-columns:108px minmax(0,1fr);gap:10px;min-width:0;padding:8px 0;display:grid}.trace-kv-row{border-bottom:1px solid var(--border);grid-template-columns:minmax(130px,.7fr) minmax(0,1.3fr);gap:14px;min-width:0;padding:8px 0;display:grid}.trace-detail-grid dt{color:var(--text-tertiary);font-size:var(--font-size-caption)}.trace-kv-key{min-width:0;color:var(--text-tertiary);font-size:var(--font-size-caption);overflow-wrap:anywhere}.trace-detail-grid dd,.trace-kv-value{overflow-wrap:anywhere;min-width:0;font-family:var(--font-mono);font-size:var(--font-size-caption);margin:0}.trace-event-list{gap:9px;padding:12px;display:grid}.trace-event-card{border-left:2px solid var(--accent-border);background:var(--surface-subtle);padding:9px 10px}.trace-event-card strong,.trace-event-card span{display:block}.trace-event-card strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.trace-event-card span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption);margin-top:2px}.trace-raw{min-height:100%;color:var(--text);background:var(--surface);font-family:var(--font-mono);font-size:var(--font-size-caption);line-height:var(--line-height-code-compact);flex-direction:column;padding:0;display:flex;overflow:hidden}.trace-detail-body.raw-active .trace-raw{box-sizing:border-box;overscroll-behavior:contain;scrollbar-gutter:stable both-edges;width:100%;height:100%;min-height:0;max-height:100%;overflow:auto}.trace-raw-toolbar{border-bottom:1px solid var(--border);min-height:42px;color:var(--text-tertiary);background:var(--surface-subtle);font-family:var(--font-sans);font-size:var(--font-size-caption);flex:none;justify-content:space-between;align-items:center;gap:12px;padding:6px 10px 6px 14px;display:flex}.trace-raw-toolbar>div{gap:3px;display:flex}.trace-raw-toolbar button{border-radius:var(--radius-control);min-height:28px;color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-caption);background:0 0;border:0;padding:3px 8px}.trace-raw-toolbar button:hover,.trace-raw-toolbar button.active{color:var(--accent);background:var(--accent-soft)}.trace-raw-tree{scrollbar-gutter:stable;flex:1;min-height:0;padding:10px 8px 24px;overflow:auto}.trace-raw-loading{min-height:220px;color:var(--text-tertiary);font-family:var(--font-sans);place-items:center;display:grid}.otlp-json{min-width:max-content;color:var(--text);background:var(--surface);white-space:pre-wrap;overflow-wrap:anywhere;padding:2px 8px 18px}.otlp-json-children{border-left:1px solid var(--border);margin:0;padding:0 0 0 18px;list-style:none}.otlp-json-row{min-height:24px;padding:2px 0}.otlp-json-toggle{border-radius:var(--radius-control);width:18px;height:18px;color:var(--text-tertiary);cursor:pointer;font-size:var(--font-size-caption);line-height:var(--line-height-none);-webkit-user-select:none;user-select:none;vertical-align:-1px;background:0 0;border:0;place-items:center;margin:0 3px 0 -2px;padding:0;display:inline-grid}.otlp-json-toggle:hover,.otlp-json-toggle:focus-visible{color:var(--accent);background:var(--accent-soft);outline:none}.otlp-json-expand:after{content:"›"}.otlp-json-collapse:after{content:"⌄";transform:translateY(-1px)}.otlp-json-collapsed{color:var(--text-disabled);margin-left:5px}.otlp-json-collapsed:after{content:"…"}.otlp-json-key{color:var(--accent);font-weight:var(--font-weight-medium);margin-right:5px}.otlp-json-key-clickable{cursor:pointer}.otlp-json-string{color:var(--success)}.otlp-json-number{color:var(--warning)}.otlp-json-boolean{color:var(--danger)}.otlp-json-null{color:var(--text-disabled);font-style:italic}.otlp-json-other,.otlp-json-punctuation{color:var(--text-secondary)}.observability-overview{border:1px solid var(--border);background:var(--surface);border-radius:12px;grid-template-columns:minmax(560px,.95fr) minmax(420px,1.05fr);gap:0;margin-bottom:12px;display:grid;overflow:hidden}.overview-metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:0;padding:10px 8px;display:grid}.overview-metric-card{min-width:0;box-shadow:none;background:0 0;border:0;border-radius:0;flex-direction:column;justify-content:center;gap:1px;padding:7px 13px;display:flex;position:relative}.overview-metric-card+.overview-metric-card{border-left:1px solid color-mix(in srgb, var(--border) 78%, transparent)}.overview-metric-label{color:var(--text-tertiary);align-items:center;gap:6px;display:flex}.overview-metric-label>span{width:20px;height:20px;color:var(--accent);background:var(--accent-soft);border-radius:6px;place-items:center;display:grid}.overview-metric-label small{font-size:var(--font-size-fine)}.overview-metric-card strong{font-size:var(--font-size-card-metric);font-weight:var(--font-weight-semibold);color:var(--text);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;margin-top:3px;overflow:hidden}.overview-metric-card.success strong{color:var(--success)}.overview-metric-card.success .overview-metric-label>span{color:var(--success);background:var(--success-soft)}.overview-metric-card p{font-size:var(--font-size-fine);color:var(--text-tertiary);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.overview-chart-card{border:0;border-left:1px solid var(--border);background:color-mix(in srgb, var(--surface-subtle) 34%, var(--surface));min-width:0;box-shadow:none;border-radius:0;padding:9px 14px 7px}.overview-chart-header{justify-content:space-between;align-items:baseline;margin-bottom:2px;display:flex}.overview-chart-header strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-semibold)}.overview-chart-header small{font-size:var(--font-size-caption);color:var(--text-tertiary)}.overview-chart{width:100%;height:82px;display:block}.overview-chart-legend{font-size:var(--font-size-fine);color:var(--text-secondary);justify-content:flex-end;align-items:center;gap:16px;margin-top:0;display:flex}.overview-chart-legend span{vertical-align:middle;border-radius:2px;width:14px;height:3px;margin-right:5px;display:inline-block}.legend-runs{background:var(--accent)}.legend-success{background:var(--success)}@media (width<=1100px){.observability-overview{grid-template-columns:minmax(0,1fr)}.overview-chart-card{border-top:1px solid var(--border);border-left:0}}.overview-range-tabs{border-radius:var(--radius-control);background:var(--surface-subtle);border:0;gap:2px;padding:1px;display:inline-flex}.overview-range-tabs button{color:var(--text-secondary);font-size:var(--font-size-caption);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:2px 8px}.overview-range-tabs button.active{background:var(--surface);color:var(--text);font-weight:var(--font-weight-medium);box-shadow:var(--shadow-control)}.build-workspace{grid-template-columns:280px minmax(0,1fr);gap:24px;display:grid}.build-summary{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);align-self:start;padding:18px}.build-summary>div{border-bottom:1px solid var(--border);min-height:56px;padding:8px 0}.build-summary>div:last-child{border-bottom:0}.build-summary span,.build-summary strong{display:block}.build-summary>div>span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.build-summary>div>strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium);margin-top:4px}.build-log{border-radius:var(--radius-surface);background:var(--code-bg);border:1px solid #2f3744;overflow:hidden}.log-header{color:#adb8c6;min-height:48px;font-size:var(--font-size-meta);border-bottom:1px solid #394250;justify-content:space-between;align-items:center;gap:12px;padding:0 14px;display:flex}.log-header span:last-child{font-family:var(--font-mono);font-size:var(--font-size-caption)}.build-log pre{min-height:340px;max-height:560px;color:var(--code-text);font-family:var(--font-mono);font-size:var(--font-size-meta);line-height:var(--line-height-editor);white-space:pre-wrap;margin:0;padding:14px;overflow:auto}.empty-state{text-align:center;border:1px dashed var(--border-strong);border-radius:var(--radius-surface);background:var(--surface-subtle);flex-direction:column;align-items:center;gap:12px;max-width:420px;margin:24px auto;padding:48px 24px;display:flex}.empty-state .empty-icon{border-radius:var(--radius-circle);background:var(--accent-soft);width:48px;height:48px;color:var(--accent);place-items:center;display:grid}.empty-state .empty-icon svg{width:24px;height:24px}.empty-state h2{font-size:var(--font-size-section-title);margin:0}.empty-state p{color:var(--text-secondary);font-size:var(--font-size-control);margin:0}.studio-form-field{gap:7px;min-width:0;display:grid}.studio-field-label{color:var(--text-primary);font-size:var(--font-size-control);font-weight:var(--font-weight-semibold);align-items:baseline;gap:8px;display:flex}.studio-field-requirement{color:var(--text-tertiary);font-size:var(--font-size-meta);font-weight:var(--font-weight-regular)}.studio-field-requirement.generated{border-radius:var(--radius-pill);background:var(--surface-subtle);padding:1px 6px}.studio-field-control{min-width:0}.studio-field-hint,.studio-field-error{font-size:var(--font-size-meta);line-height:var(--line-height-body);margin:0}.studio-field-hint{color:var(--text-tertiary)}.studio-field-error{color:var(--danger)}.studio-form-field.has-error :is(input,textarea,button[role=combobox]){border-color:var(--danger)}.generated-id-control{grid-template-columns:minmax(0,1fr) 36px;align-items:center;gap:6px;display:grid}.generated-id-control input{min-width:0;font-family:var(--font-mono);background:var(--surface-subtle)}.studio-multi-select{gap:8px;min-width:0;display:grid}.studio-multi-select-summary{min-height:22px;color:var(--text-secondary);font-size:var(--font-size-meta);justify-content:space-between;align-items:center;gap:12px;display:flex}.studio-multi-select-selection{flex-wrap:wrap;gap:6px;min-width:0;display:flex}.studio-selection-chip{border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface-subtle);max-width:100%;min-height:27px;color:var(--text-primary);font-size:var(--font-size-meta);align-items:center;gap:5px;padding:3px 5px 3px 9px;display:inline-flex}.studio-selection-chip>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.studio-selection-chip button{border-radius:var(--radius-circle);width:20px;height:20px;color:var(--text-tertiary);background:0 0;border:0;flex:none;place-items:center;padding:0;display:grid}.studio-selection-chip button:hover{background:var(--surface-hover);color:var(--text-primary)}.studio-multi-select-trigger{width:100%;min-height:var(--control-height);border:1px solid var(--border-strong);border-radius:var(--radius-control);background:var(--surface);color:var(--text-secondary);font-family:inherit;font-size:var(--font-size-control);justify-content:space-between;align-items:center;gap:12px;padding:0 12px;display:flex}.studio-multi-select-trigger:hover,.studio-multi-select-trigger[aria-expanded=true]{border-color:var(--accent);color:var(--text-primary)}.studio-multi-select-popover{z-index:150;border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface-raised);width:min(430px,100vw - 24px);box-shadow:var(--shadow-overlay);overflow:hidden}.studio-command-search{border-bottom:1px solid var(--border);min-height:44px;color:var(--text-tertiary);align-items:center;gap:8px;padding:0 12px;display:flex}.studio-command-search input{min-width:0;color:var(--text-primary);background:0 0;border:0;outline:0;flex:1;padding:0}.studio-multi-select-tools{border-bottom:1px solid var(--border);min-height:36px;color:var(--text-tertiary);font-size:var(--font-size-meta);justify-content:space-between;align-items:center;padding:0 10px;display:flex}.studio-multi-select-tools button{border-radius:var(--radius-control);color:var(--text-secondary);background:0 0;border:0;padding:3px 7px}.studio-multi-select-tools button.selected{background:var(--accent-soft);color:var(--accent-strong)}.studio-command-list{max-height:min(340px,100dvh - 180px);padding:6px;overflow-y:auto}.studio-command-list [cmdk-empty]{color:var(--text-tertiary);text-align:center;font-size:var(--font-size-meta);padding:28px 16px}.studio-command-list [cmdk-item]{border-radius:var(--radius-control);min-height:52px;color:var(--text-primary);cursor:pointer;align-items:center;gap:10px;padding:7px 9px;display:flex}.studio-command-list [cmdk-item][data-selected=true]{background:var(--surface-hover)}.studio-command-list [cmdk-item][data-disabled=true]{opacity:.46;cursor:not-allowed}.studio-option-check{border:1px solid var(--border-strong);width:18px;height:18px;color:var(--surface);border-radius:5px;flex:none;place-items:center;display:grid}.studio-option-check[aria-checked=true]{border-color:var(--accent);background:var(--accent)}.studio-option-copy{gap:2px;min-width:0;display:grid}.studio-option-copy :is(strong,small){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.studio-option-copy strong{font-size:var(--font-size-control)}.studio-option-copy small{color:var(--text-tertiary);font-size:var(--font-size-meta)}.studio-file-dropzone{border:1px dashed var(--border-strong);border-radius:var(--radius-surface);background:var(--surface-subtle);min-height:104px;color:var(--text-secondary);cursor:pointer;transition:border-color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:12px;padding:16px;display:grid}.studio-file-dropzone:hover,.studio-file-dropzone.dragging{border-color:var(--accent);background:var(--accent-soft)}.studio-file-dropzone.rejected{border-color:var(--danger);background:var(--danger-soft)}.studio-file-dropzone.has-file{cursor:default;border-style:solid}.studio-file-icon{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);width:42px;height:42px;color:var(--accent-strong);place-items:center;display:grid}.studio-file-copy{gap:4px;min-width:0;display:grid}.studio-file-copy strong,.studio-file-copy small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.studio-file-copy strong{color:var(--text-primary);font-size:var(--font-size-control)}.studio-file-copy small{color:var(--text-tertiary);font-size:var(--font-size-meta)}.studio-file-actions{gap:4px;display:flex}.python-tool-source-mode{margin-bottom:10px}.python-tool-example{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-subtle);margin-bottom:18px;overflow:hidden}.python-tool-example-trigger{width:100%;min-height:54px;color:var(--text-secondary);cursor:pointer;text-align:left;background:0 0;border:0;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 12px;display:grid}.python-tool-example-trigger:hover{color:var(--text-primary);background:var(--surface-hover)}.python-tool-example-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.python-tool-example-trigger>span{min-width:0}.python-tool-example-trigger strong,.python-tool-example-trigger small{display:block}.python-tool-example-trigger strong{color:var(--text-primary);font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.python-tool-example-trigger small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.python-tool-example-chevron{transition:transform var(--duration-fast) var(--ease-standard)}.python-tool-example-trigger[aria-expanded=true] .python-tool-example-chevron{transform:rotate(180deg)}.python-tool-example-panel{border-top:1px solid var(--border);padding:0 10px 11px}.python-tool-example-panel .code-viewer{max-height:320px;margin-top:10px}.python-tool-example-rules{color:var(--text-secondary);font-size:var(--font-size-caption);line-height:var(--line-height-body);gap:5px;margin:10px 2px 0;padding-left:18px;display:grid}.python-tool-inspection-summary{border:1px solid var(--success);border-radius:var(--radius-control);background:var(--success-soft);min-height:36px;color:var(--success);font-size:var(--font-size-meta);align-items:center;gap:8px;padding:8px 10px;display:flex}.studio-scroll-area{min-width:0;min-height:0;position:relative;overflow:hidden}.studio-scroll-viewport{width:100%;height:100%}.studio-scrollbar{touch-action:none;-webkit-user-select:none;user-select:none;background:0 0;width:10px;padding:2px}.studio-scrollbar.horizontal{width:auto;height:10px}.studio-scroll-thumb{border-radius:var(--radius-pill);background:var(--border-strong);flex:1;position:relative}.studio-scroll-corner{background:var(--surface-subtle)}.overlay{z-index:100;position:fixed;inset:0}.overlay-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#1f2a3752;position:absolute;inset:0}.drawer{background:var(--surface);width:min(620px,100%);box-shadow:var(--shadow-overlay);animation:drawer-in var(--motion-base) var(--ease);grid-template-rows:auto minmax(0,1fr) auto;display:grid;position:fixed;inset:0 0 0 auto}.drawer.compact{width:min(380px,100%)}.drawer.compact .drawer-body{padding:14px}.create-rail-panel{min-width:0}.studio-dialog{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);width:min(520px,100vw - 40px);max-height:min(760px,100dvh - 40px);box-shadow:var(--shadow-overlay);grid-template-rows:auto minmax(0,1fr) auto;display:grid;position:fixed;inset:50% auto auto 50%;overflow:hidden;transform:translate(-50%,-50%)}.studio-dialog-header,.studio-dialog-footer{align-items:flex-start;gap:12px;padding:18px 20px;display:flex}.studio-dialog-header{border-bottom:1px solid var(--border)}.studio-dialog-header>div{flex:1;min-width:0}.studio-dialog-header h2,.studio-dialog-header p{margin:0}.studio-dialog-header h2{font-size:var(--font-size-section-title)}.studio-dialog-header p{color:var(--text-secondary);font-size:var(--font-size-meta);margin-top:5px}.studio-dialog-body{min-height:0;padding:20px;overflow:auto}.studio-dialog-footer{border-top:1px solid var(--border);justify-content:flex-end;align-items:center}@keyframes drawer-in{0%{opacity:0;transform:translate(16px)}}.drawer-header{border-bottom:1px solid var(--border);align-items:flex-start;gap:12px;min-height:82px;padding:20px 24px;display:flex}.drawer-header>div{flex:1;min-width:0}.drawer-header h2,.drawer-header p{margin:0}.drawer-header h2{font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold)}.drawer-header p{color:var(--text-secondary);font-size:var(--font-size-meta);margin-top:4px}.drawer-body{min-height:0;padding:24px;overflow-y:auto}.drawer-footer{border-top:1px solid var(--border);justify-content:flex-end;align-items:center;gap:8px;min-height:72px;padding:0 24px;display:flex}.drawer-footer-spacer{flex:1}.confirm-dialog{border-radius:10px;grid-template-rows:auto auto;grid-template-columns:38px minmax(0,1fr);gap:14px;width:min(440px,100% - 40px);padding:22px;overflow:visible}.confirm-dialog .studio-dialog-icon{grid-area:1/1}.confirm-dialog .studio-dialog-header{border:0;grid-area:1/2;padding:0}.confirm-dialog .studio-dialog-footer{border:0;grid-area:2/1/auto/-1;padding:0}.confirm-icon{border-radius:50%;place-items:center;width:36px;height:36px;display:grid}.confirm-icon.danger{color:var(--danger);background:var(--danger-soft)}.confirm-icon svg{width:18px;height:18px}.confirm-dialog h2,.confirm-dialog p{margin:0}.confirm-dialog h2{font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold)}.confirm-dialog p{color:var(--text-secondary);font-size:var(--font-size-meta);line-height:var(--line-height-body);margin-top:5px}.confirm-dialog .studio-dialog-footer{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}.credential-profile{border-top:1px solid var(--border);margin-bottom:20px}.credential-profile>div{border-bottom:1px solid var(--border);grid-template-columns:104px minmax(0,1fr);align-items:center;gap:16px;min-height:48px;display:grid}.credential-profile span{color:var(--text-secondary);font-size:var(--font-size-meta)}.credential-profile strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.credential-profile code{min-width:0;font-family:var(--font-mono);font-size:var(--font-size-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.credential-status{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-subtle);align-items:flex-start;gap:10px;margin-bottom:22px;padding:14px;display:flex}.credential-status .status-dot{margin-top:7px}.credential-status strong,.credential-status p{margin:0;display:block}.credential-status strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.credential-status p{color:var(--text-secondary);font-size:var(--font-size-meta);margin-top:2px}.credential-status.configured{background:var(--success-soft);border-color:#d5e9df}.credential-status.missing{background:var(--warning-soft);border-color:#eee2c9}.callout{border-radius:var(--radius-control);color:var(--accent);background:var(--accent-soft);align-items:flex-start;gap:10px;padding:14px;display:flex}.callout>svg{width:16px;height:16px;margin-top:2px}.callout strong,.callout p{margin:0}.callout strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium);display:block}.callout p{color:var(--text-secondary);font-size:var(--font-size-caption);margin-top:2px}.code-tabs{border-bottom:1px solid var(--border);gap:18px;margin-top:22px;display:flex}.code-tabs button{min-height:var(--button-height-small);color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-meta);background:0 0;border:0;border-bottom:2px solid #0000;padding:0 2px}.code-tabs button.active{border-color:var(--accent);color:var(--text);font-weight:var(--font-weight-medium)}.api-contract{border-top:1px solid var(--border);margin-top:18px}.api-contract>div{border-bottom:1px solid var(--border);grid-template-columns:82px minmax(0,1fr);align-items:center;gap:12px;min-height:46px;display:grid}.api-contract span{color:var(--text-secondary);font-size:var(--font-size-meta)}.api-contract code{font-family:var(--font-mono);font-size:var(--font-size-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.toast-region{z-index:120;gap:8px;width:min(380px,100% - 36px);display:grid;position:fixed;bottom:18px;right:18px}.toast{border:1px solid var(--border);border-radius:var(--radius-surface);color:var(--text);background:var(--surface);box-shadow:var(--shadow-toast);animation:toast-in var(--motion-base) var(--ease);align-items:flex-start;gap:9px;padding:13px 14px;display:flex}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}}.toast>svg{width:15px;height:15px;margin-top:2px}.toast.success>svg{color:var(--success)}.toast.error>svg{color:var(--danger)}.toast strong,.toast p{margin:0}.toast strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-medium);display:block}.toast p{color:var(--text-secondary);font-size:var(--font-size-caption);margin-top:2px}@media (width>=1280px) and (width<=1599px){.page-container{padding-inline:32px}.create-header{grid-template-columns:180px minmax(0,1fr) 180px;padding-inline:32px}.wizard-layout{grid-template-columns:200px minmax(680px,1fr);padding-inline:32px}}@media (width<=1279px){.sidebar{width:220px}.app-main{margin-left:220px}.global-header{padding-inline:20px}.page-container{padding-inline:24px}.create-header{grid-template-columns:auto minmax(0,1fr);gap:18px;padding:22px 24px}.create-header .draft-state{display:none}.quick-create{grid-template-columns:minmax(0,1fr);width:calc(100% - 48px);margin-top:24px}.manifest-preview{position:static}.manifest-preview>.code-viewer{min-height:280px;max-height:420px}.wizard-layout{grid-template-columns:minmax(0,1fr);padding-inline:24px}.wizard-steps{display:none}.trace-workbench{grid-template-columns:250px minmax(0,1fr);height:auto;min-height:620px;overflow:visible}.trace-span-panel{border-right:0}.trace-detail-panel{border-top:1px solid var(--border);grid-column:1/-1;min-height:360px}}body.create-mode{background:var(--surface);overflow-x:hidden}body.create-mode .global-context{display:none}.create-shell{background:var(--surface)}.create-header{grid-template-columns:212px minmax(0,1fr) auto;align-items:center;gap:28px;min-height:104px;padding:18px max(28px,50% - 680px)}.create-header>.button{justify-self:start}.create-heading h1{margin-top:3px}.create-heading p{margin-top:4px}.create-workbench{background:var(--surface);grid-template-columns:212px minmax(0,1fr);width:min(1360px,100%);min-height:calc(100dvh - 168px);margin:0 auto;display:grid}.create-rail{border-right:1px solid var(--border);background:var(--surface-subtle);align-self:start;min-height:calc(100dvh - 64px);padding:24px 14px;position:sticky;top:64px}.create-rail-label{color:var(--text-tertiary);font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);margin:0 10px 8px}.create-rail-divider{background:var(--border);height:1px;margin:18px 10px}.authoring-mode-tabs{background:0 0;border:0;border-radius:0;grid-template-columns:minmax(0,1fr);gap:4px;margin:0;padding:0;display:grid}.authoring-mode-tabs button{border-radius:var(--radius-control);border:0;gap:10px;min-height:54px;padding:9px 10px}.authoring-mode-tabs button:hover,.authoring-mode-tabs button.active{background:var(--selected);box-shadow:none;border-color:#0000}.authoring-mode-tabs svg{width:17px;height:17px}.authoring-mode-tabs strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.wizard-step-label[hidden],.wizard-steps[hidden]{display:none!important}.wizard-steps{gap:3px}.wizard-step{gap:10px;min-height:62px;padding:9px 10px}.step-number{width:28px;height:28px}.wizard-step.completed .step-number{color:#0000;position:relative}.wizard-step.completed .step-number:before{content:"✓";color:var(--success);font-size:var(--font-size-meta);position:absolute}.create-stage{background:var(--surface);min-width:0}.wizard-layout{width:100%;min-height:calc(100dvh - 168px);padding:0;display:block}.wizard-content{background:var(--surface);border:0;border-radius:0;width:min(100%,1040px);min-height:calc(100dvh - 168px)}.wizard-panel{min-height:calc(100dvh - 240px);padding:34px 48px 96px}.panel-heading{margin-bottom:28px}.wizard-actions{z-index:18;border-top-color:var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);min-height:68px;padding:0 36px;position:sticky;bottom:0;box-shadow:0 -8px 20px #1f2a370a}.wizard-error-summary{z-index:19;margin:0 36px;position:sticky;bottom:68px}.summary-count{border-radius:var(--radius-badge);min-width:20px;height:20px;color:var(--accent);background:var(--accent-soft);font-size:var(--font-size-caption);place-items:center;display:inline-grid}.resource-detail-item .capability-icon,.capability-heading .capability-icon{background:0 0;border:0;width:26px;height:26px}.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:var(--danger);box-shadow:0 0 0 3px #b5473c14}.route-inspector-section{background:var(--surface-subtle)}.runtime-resource-page,.orchestration-page{max-width:var(--studio-page-max,1760px)}.runtime-overview-grid{border-block:1px solid var(--border);grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:34px;display:grid}.runtime-metric{border-right:1px solid var(--border);flex-direction:column;justify-content:center;min-width:0;min-height:124px;padding:20px 22px;display:flex}.runtime-metric:last-child{border-right:0}.runtime-metric>span,.runtime-metric small{color:var(--text-tertiary);font-size:var(--font-size-meta)}.runtime-metric strong{color:var(--text);font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold);text-overflow:ellipsis;white-space:nowrap;margin:6px 0 2px;overflow:hidden}.runtime-metric.edge strong{color:var(--edge)}.runtime-metric.cloud strong{color:var(--cloud)}.runtime-resource-section{padding-bottom:56px}.runtime-resource-groups{border-top:1px solid var(--border);grid-template-columns:repeat(2,minmax(0,1fr));gap:0 32px;display:grid}.runtime-resource-group{border-bottom:1px solid var(--border);min-width:0;padding:22px 0}.runtime-resource-group>header{align-items:center;gap:10px;min-height:42px;margin-bottom:8px;display:flex}.runtime-group-icon{border-radius:var(--radius-control);width:32px;height:32px;color:var(--accent);background:var(--accent-soft);place-items:center;display:grid}.runtime-resource-group header strong,.runtime-resource-group header small{display:block}.runtime-resource-group header strong{font-size:var(--font-size-body);font-weight:var(--font-weight-semibold)}.runtime-resource-group header small{color:var(--text-tertiary);font-size:var(--font-size-caption)}.runtime-resource-list{border-top:1px solid var(--border)}.runtime-resource-row{border-bottom:1px solid var(--border);grid-template-columns:8px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:58px;display:grid}.resource-state{border-radius:var(--radius-circle);background:var(--text-disabled);width:7px;height:7px}.resource-state.ready{background:var(--edge)}.resource-state.warning{background:var(--route)}.runtime-resource-row>span:nth-child(2){min-width:0}.runtime-resource-row strong,.runtime-resource-row small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.runtime-resource-row strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.runtime-resource-row small,.runtime-resource-empty{color:var(--text-tertiary);font-size:var(--font-size-caption)}.runtime-resource-empty{padding:16px 0}.orchestration-workbench{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:36px;padding-bottom:64px;display:grid}.orchestration-canvas{min-width:0}.orchestration-graph{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);width:100%;height:clamp(380px,48dvh,500px);position:relative;overflow:hidden}.orchestration-graph .react-flow__renderer{cursor:grab}.orchestration-graph .react-flow__renderer:active{cursor:grabbing}.pipeline-node-card{border:1px solid var(--border-strong);border-radius:var(--radius-surface);background:var(--surface);width:100%;height:100%;box-shadow:var(--shadow-control);transition:border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-standard);flex-direction:row;justify-content:center;align-items:center;gap:10px;padding:13px;display:flex}.pipeline-node-icon{border-radius:var(--radius-control);width:32px;height:32px;color:var(--accent);background:var(--accent-soft);flex:0 0 32px;place-items:center;display:grid}.pipeline-node-card>span:nth-of-type(2){min-width:0}.pipeline-node-card strong,.pipeline-node-card small{display:block}.pipeline-node-card strong{max-width:100%;font-size:var(--font-size-control);font-weight:var(--font-weight-semibold);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pipeline-node-card small{color:var(--text-secondary);font-size:var(--font-size-caption);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;overflow:hidden}.pipeline-node-card .react-flow__handle{border:2px solid var(--surface);background:var(--accent);opacity:0;width:7px;height:7px;transition:opacity var(--duration-fast) var(--ease-standard)}.react-flow__node.selected .pipeline-node-card .react-flow__handle,.pipeline-node-card:hover .react-flow__handle{opacity:1}.orchestration-graph .react-flow__edge-text{fill:var(--text-tertiary);stroke:none;font-family:var(--font-mono);font-size:var(--font-size-caption);font-weight:var(--font-weight-medium)}.orchestration-graph .react-flow__edge-textbg{fill:var(--surface);fill-opacity:.94;stroke:var(--border);stroke-width:.7px;rx:5px;ry:5px}.orchestration-graph .react-flow__controls{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);box-shadow:var(--shadow-control);overflow:hidden}.orchestration-graph .react-flow__controls-button{border-color:var(--border);width:30px;height:30px;color:var(--text-secondary);background:var(--surface)}.orchestration-graph .react-flow__controls-button:hover{color:var(--text);background:var(--surface-subtle)}.orchestration-aside{border-block:1px solid var(--border);padding:20px 0}.orchestration-aside-section{min-width:0}.orchestration-aside dl{margin:8px 0 0}.orchestration-aside dl>div{border-bottom:1px solid var(--border);min-height:42px;font-size:var(--font-size-meta);justify-content:space-between;align-items:center;gap:12px;display:flex}.orchestration-aside dt{color:var(--text-secondary)}.orchestration-aside dd{max-width:170px;font-weight:var(--font-weight-medium);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.dispatch-log{margin-top:8px}.dispatch-log-row{border-bottom:1px solid var(--border);grid-template-columns:8px minmax(0,1fr);align-items:center;gap:10px;min-height:54px;display:grid}.dispatch-status{border-radius:var(--radius-circle);background:var(--text-disabled);width:7px;height:7px}.dispatch-status.completed,.dispatch-status.succeeded{background:var(--edge)}.dispatch-status.running{background:var(--route)}.dispatch-status.failed{background:var(--danger)}.dispatch-log-row strong,.dispatch-log-row small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.dispatch-log-row strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.dispatch-log-row small,.dispatch-log-empty{color:var(--text-tertiary);font-size:var(--font-size-caption)}.dispatch-log-empty{padding:16px 0}.orchestration-empty{text-align:center;align-content:center;place-items:center;min-height:420px;display:grid}.orchestration-empty h2,.orchestration-empty p{margin:0}.orchestration-empty h2{font-size:var(--font-size-section-title);margin-top:12px}.orchestration-empty p{max-width:52ch;color:var(--text-secondary);font-size:var(--font-size-control);margin:6px 0 18px}.authoring-mode-panel{width:min(100%,1040px);box-shadow:none;border:0;border-radius:0;margin:0;padding:34px 48px 64px}.quick-create{width:min(100%,1040px);margin:0;padding:34px 48px 64px}@media (width<=1279px){.create-workbench{grid-template-columns:212px minmax(0,1fr)}.create-header{grid-template-columns:212px minmax(0,1fr) auto;gap:20px;padding:18px 24px}.create-header .draft-state,.wizard-steps{display:flex}.wizard-panel{padding-inline:36px}.quick-create{width:100%;padding-inline:36px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}.settings-group{border-bottom:1px solid var(--border);margin-bottom:24px;padding-bottom:20px}.settings-group:last-child{border-bottom:0}.settings-group h3{font-size:var(--font-size-control);font-weight:var(--font-weight-semibold);margin:0 0 12px}.settings-credential{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;padding:10px 12px;display:flex}.settings-credential span{flex-direction:column;gap:2px;min-width:0;display:flex}.settings-credential small{color:var(--text-tertiary);font-size:var(--font-size-caption)}.settings-empty{color:var(--text-tertiary);font-size:var(--font-size-meta)}.inspector-title-spaced{margin-top:12px}.a2ui-surface{border:1px solid var(--border-card);border-radius:calc(var(--radius-surface) + 2px);background:var(--surface);margin:12px 0;overflow:hidden;box-shadow:0 1px 2px #1f2a3708}.a2ui-surface.pending{border-color:var(--border-strong)}.a2ui-card{padding:14px}.a2ui-card h3,.a2ui-card p,.a2ui-text,.a2ui-form strong{margin:0}.a2ui-card h3{color:var(--text-primary);font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.a2ui-card p,.a2ui-text{color:var(--text-secondary);font-size:var(--font-size-meta);line-height:var(--line-height-body);margin-top:6px}.a2ui-card-content,.a2ui-layout.column{gap:10px;margin-top:12px;display:grid}.a2ui-form{gap:10px;padding:14px;display:grid}.a2ui-card-content .a2ui-form{padding:0}.a2ui-layout.row,.a2ui-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.a2ui-field{color:var(--text-label);font-size:var(--font-size-meta);gap:5px;display:grid}.a2ui-field>legend{color:var(--text-primary);font-size:var(--font-size-control);font-weight:var(--font-weight-medium);padding:0}.a2ui-field-description{color:var(--text-tertiary);font-size:var(--font-size-meta);line-height:var(--line-height-body);margin:0}.a2ui-field input,.a2ui-field select{border:1px solid var(--border);border-radius:var(--radius-control);min-height:38px;color:var(--text-primary);background:var(--surface);padding:8px 10px}.a2ui-options{border:0;margin:0;padding:0}.a2ui-choice-list{gap:3px;margin-top:2px;display:grid}.a2ui-choice{min-height:36px;color:var(--text-primary);cursor:pointer;transition:background var(--motion-fast) var(--ease);border-radius:10px;align-items:flex-start;gap:10px;padding:6px 8px;display:flex;position:relative}.a2ui-choice:hover,.a2ui-choice.selected{background:var(--surface-subtle)}.a2ui-choice>input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.a2ui-choice-index,.a2ui-other-icon{border-radius:var(--radius-circle);width:24px;height:24px;color:var(--text-tertiary);background:var(--surface-subtle);font-size:var(--font-size-caption);font-weight:var(--font-weight-semibold);flex:none;place-items:center;display:grid}.a2ui-choice.selected .a2ui-choice-index{color:var(--surface);background:var(--text-primary)}.a2ui-choice-copy{min-width:0;line-height:var(--line-height-control);flex:1;padding-top:1px}.a2ui-choice-copy strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.a2ui-choice-copy small{color:var(--text-tertiary);font-size:var(--font-size-meta);line-height:inherit;margin-left:8px}.a2ui-other{background:color-mix(in srgb, var(--surface-subtle) 72%, transparent);border-radius:10px;align-items:center;gap:10px;min-height:36px;padding:5px 8px;display:flex}.a2ui-other.active{background:var(--surface-subtle)}.a2ui-other-icon{border:1px solid var(--border);background:var(--surface)}.a2ui-other input{min-width:0;min-height:26px;box-shadow:none;font-size:var(--font-size-meta);background:0 0;border:0;flex:1;padding:0}.a2ui-other input:focus{box-shadow:none;border:0}.a2ui-approval{border-top:1px solid color-mix(in srgb, var(--border) 72%, transparent);background:color-mix(in srgb, var(--surface-subtle) 48%, transparent);justify-content:space-between;align-items:center;gap:16px;padding:10px 14px;display:flex}.a2ui-approval-summary,.a2ui-resolved{color:var(--text-secondary);font-size:var(--font-size-meta);align-items:center;gap:7px;display:flex}.a2ui-approval-summary svg{color:var(--text-tertiary)}.a2ui-form-actions{justify-content:flex-end;gap:8px;margin-top:2px;display:flex}.a2ui-actions button,.a2ui-form button,.a2ui-layout button{border:1px solid var(--text-primary);min-height:32px;color:var(--surface);background:var(--text-primary);cursor:pointer;font-size:var(--font-size-meta);font-weight:var(--font-weight-medium);border-radius:9px;justify-content:center;align-items:center;gap:6px;padding:6px 12px;display:inline-flex}.a2ui-actions button.secondary{border-color:var(--border);color:var(--text-secondary);background:0 0}.a2ui-actions button:disabled,.a2ui-form button:disabled,.a2ui-layout button:disabled{opacity:.55;cursor:not-allowed}.a2ui-resolved,.a2ui-unsupported{border-top:1px solid var(--border);color:var(--text-tertiary);font-size:var(--font-size-caption);padding:10px 16px}.pcm-policy-card{border:1px solid var(--border);background:var(--surface-subtle);border-radius:12px;margin-top:18px}.pcm-policy-card>summary{cursor:pointer;align-items:center;min-height:56px;padding:10px 14px;list-style:none;display:flex}.pcm-policy-card>summary::-webkit-details-marker{display:none}.pcm-policy-card>summary span,.pcm-policy-card>summary strong,.pcm-policy-card>summary small{display:block}.pcm-policy-card>summary small{color:var(--text-tertiary);margin-top:3px}.pcm-policy-body{padding:0 14px 14px}.generated-prompt-card{background:var(--surface);margin-top:0}.generated-prompt-card>summary{justify-content:space-between;gap:18px;min-height:72px}.generated-prompt-card>summary span{min-width:0}.generated-prompt-card>summary small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.generated-prompt-card>summary em{color:var(--primary);font-size:var(--font-size-meta);flex:none;font-style:normal}.generated-prompt-card>summary em:after{content:"展开编辑"}.generated-prompt-card[open]>summary em:after{content:"收起编辑"}.generated-prompt-body{border-top:1px solid var(--border);padding-top:14px}.behavior-design-review{border:1px solid var(--border-card);background:var(--surface);border-radius:12px;gap:12px;padding:16px;display:grid}.behavior-design-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.behavior-design-heading strong,.behavior-design-heading p{margin:0;display:block}.behavior-design-heading p{color:var(--text-tertiary);font-size:var(--font-size-meta);margin-top:4px}.behavior-summary-main{background:var(--primary-soft);border-radius:10px;padding:14px}.behavior-summary-main>span{color:var(--text-tertiary);font-size:var(--font-size-caption);font-weight:var(--font-weight-semibold);margin-bottom:6px;display:block}.behavior-summary-main strong{color:var(--text-primary);line-height:var(--line-height-code-compact);margin:0;display:block}.behavior-boundary-summary{border:1px solid var(--border);background:var(--surface-subtle);border-radius:10px;align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.behavior-boundary-summary>svg{color:var(--success);flex:none;margin-top:2px}.behavior-boundary-summary strong,.behavior-boundary-summary p{margin:0;display:block}.behavior-boundary-summary p,.behavior-boundary-summary ul{color:var(--text-secondary);font-size:var(--font-size-meta);line-height:var(--line-height-caption);margin-top:4px}.behavior-boundary-summary ul{gap:4px;margin-bottom:0;padding-left:18px;display:grid}.pcm-memory-toggle{border:1px solid var(--border-card);background:var(--surface);border-radius:10px;align-items:flex-start;gap:10px;margin:14px 0;padding:12px;display:flex}.pcm-memory-toggle input{margin-top:3px}.pcm-memory-toggle span,.pcm-memory-toggle strong,.pcm-memory-toggle small{display:block}.pcm-memory-toggle small{color:var(--text-tertiary);line-height:var(--line-height-caption);margin-top:3px}.pcm-review-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.pcm-review-summary span{color:var(--text-tertiary);background:var(--surface-subtle);border-radius:9px;padding:10px 12px}.pcm-review-summary strong{color:var(--text-primary);margin-top:4px;display:block}@keyframes text-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.text-shimmer{background:linear-gradient(90deg, var(--text-tertiary) 0%, var(--text-tertiary) 35%, var(--text-primary) 50%, var(--text-tertiary) 65%, var(--text-tertiary) 100%);color:#0000;background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:2.4s linear infinite text-shimmer;display:inline-block}@media (prefers-reduced-motion:reduce){.text-shimmer{color:var(--text-tertiary);background:0 0;-webkit-background-clip:unset;background-clip:unset;animation:none}}.authoring-stage-hint{font-size:var(--font-size-caption);line-height:var(--line-height-caption);margin:4px 0 0}.authoring-stage{align-items:baseline;gap:var(--spacing-2,8px);flex-wrap:wrap;display:flex}.authoring-stage-elapsed{color:var(--text-tertiary);font-size:var(--font-size-caption,12px);font-variant-numeric:tabular-nums}.authoring-stage-tip{color:var(--text-tertiary);font-size:var(--font-size-caption,12px);line-height:var(--line-height-caption,1.5);flex-basis:100%}:root.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--canvas:#141922;--sidebar:#171d28;--surface:#1d2532;--surface-subtle:#242e3d;--surface-raised:#222c3a;--surface-sunken:#151c27;--surface-hover:#2a3648;--hover:#2a3648;--selected:#253d5e;--text:#edf3fa;--text-primary:#edf3fa;--text-label:#dce6f1;--text-secondary:#bcc8d6;--text-tertiary:#91a2b6;--text-faint:#718398;--text-disabled:#687b91;--border:#323e50;--border-card:#39475a;--border-strong:#46566c;--accent:#78aaf2;--accent-strong:#a5c9fb;--accent-soft:#233b5b;--accent-hover:#2a4a70;--accent-active:#325983;--accent-border:#4773a5;--button-primary-bg:#5d9ef1;--button-primary-bg-hover:#70acf5;--button-primary-bg-active:#4a89df;--button-primary-text:#fff;--success:#78c7a8;--success-soft:#203a33;--info:#8eb9e5;--info-soft:#23394f;--warning:#e4bf76;--warning-text:#f0cb82;--warning-soft:#413722;--edge:#78c7a8;--edge-soft:#203a33;--edge-border:#326b58;--cloud:#78aaf2;--cloud-soft:#233b5b;--cloud-border:#3b6798;--route:#e4bf76;--route-soft:#413722;--danger:#f09a90;--danger-soft:#4a2b29;--code-bg:#17202c;--code-text:#d8e2ee;--code-token-comment:#8393a8;--code-token-punctuation:#aebac8;--code-token-property:#8fc1d8;--code-token-number:#e1b46d;--code-token-string:#84c8a6;--code-token-operator:#b7c3cf;--code-token-keyword:#c89bdc;--code-token-function:#86b9ed;--code-token-class:#e39db9;--code-token-variable:#dfbd7a;--shadow-overlay:0 24px 56px #00000061;--shadow-focus:0 0 0 3px #78aaf23d;--shadow-focus-subtle:0 0 0 3px #78aaf22e;--shadow-control:0 1px 2px #0000004d, 0 1px 3px #00000038;--shadow-toast:0 16px 38px #00000057}:root.dark .sidebar-footer,:root.dark .global-header,:root.dark .wizard-actions{background:#171d28f0}:root.dark tbody tr:hover{background:var(--hover)}:root.dark input:hover,:root.dark textarea:hover,:root.dark select:hover{border-color:var(--border-strong)}:root.dark .quick-create-form,:root.dark .manifest-preview{box-shadow:0 1px 2px #0000003d}.appearance-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.appearance-option{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);cursor:pointer;min-width:0;min-height:76px;transition:border-color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px;display:grid}.appearance-option:hover{border-color:var(--border-strong);background:var(--hover)}.appearance-option.selected{border-color:var(--accent-border);background:var(--accent-soft)}.appearance-option>svg{width:18px;height:18px;color:var(--accent)}.appearance-option>span{min-width:0}.appearance-option strong,.appearance-option small{display:block}.appearance-option strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.appearance-option small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.appearance-option input{width:16px;height:16px;accent-color:var(--accent);margin:0}.appearance-note{color:var(--text-tertiary);font-size:var(--font-size-caption);margin:10px 0 0}@media (width<=1023px){.appearance-options{grid-template-columns:minmax(0,1fr)}.appearance-option{min-height:58px}}html,body{width:100%;min-width:0;max-width:100%}body{overflow-x:hidden}.app-shell{--studio-app-rail:60px;--studio-content-gutter:40px;--studio-page-max:1760px;--studio-workbench-max:1360px;width:100%;min-width:0}.app-shell .sidebar{width:var(--studio-app-rail)}.app-shell main,.app-shell .page-container{min-width:0}.app-shell .page-container{width:min(100%, var(--studio-page-max));padding-inline:var(--studio-content-gutter);margin-inline:auto}.app-shell .page-container[data-layout=document],.app-shell .page-container[data-layout=workbench],.app-shell .page-container[data-layout=data]{max-width:var(--studio-page-max)}.app-shell .resources-page .actions-column,.app-shell .agents-page .actions-column{width:108px}@media (width<=1180px){.app-shell .resources-page .resource-source-column,.app-shell .resources-page .resource-detail-column,.app-shell .agents-page .agent-capabilities-column,.app-shell .agents-page .agent-revision-column{display:none}.app-shell .resources-page .studio-data-table table,.app-shell .agents-page .studio-data-table table{table-layout:fixed;width:100%;min-width:0!important}.app-shell .resources-page .resource-name-column{width:31%}.app-shell .resources-page .resource-capability-column{width:43%}.app-shell .resources-page .resource-status-column{width:15%}.app-shell .agents-page .agent-name-column{width:46%}.app-shell .agents-page .agent-runtime-column,.app-shell .agents-page .agent-build-column{width:20%}.app-shell .resources-page .studio-data-table td,.app-shell .resources-page .studio-data-table th,.app-shell .agents-page .studio-data-table td,.app-shell .agents-page .studio-data-table th{padding-inline:10px}}.app-shell .data-scroll-region{overscroll-behavior-inline:contain;min-width:0;max-width:100%;overflow-x:auto}.app-shell .data-scroll-region>table{min-width:720px}.app-shell .runtime-overview-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.app-shell[data-rail=compact] .product-copy,.app-shell[data-rail=compact] .preview-label,.app-shell[data-rail=compact] .workspace-copy,.app-shell[data-rail=compact] .workspace-chevron,.app-shell[data-rail=compact] .nav-label,.app-shell[data-rail=compact] .nav-item>span,.app-shell[data-rail=compact] .user-copy{display:none}.app-shell[data-rail=compact] .product{justify-content:center;padding-inline:0}.app-shell[data-rail=compact] .workspace-switcher,.app-shell[data-rail=compact] .nav-item{justify-content:center;width:44px;margin-inline:8px;padding-inline:0}.app-shell[data-rail=compact] .sidebar-footer{flex-direction:column;justify-content:center;padding-inline:8px}.compact-create-rail-trigger{display:none}.app-shell[data-view=conversations]{height:100dvh;min-height:0;overflow:hidden}.app-shell[data-view=conversations] .app-main{grid-template-rows:64px minmax(0,1fr);height:100%;min-height:0;display:grid}.app-shell[data-view=conversations] #mainContent,.app-shell[data-view=conversations] .chat-wrap{height:100%}.app-shell[data-view=conversations] main,.app-shell[data-view=conversations] .chat-wrap,.app-shell[data-view=conversations] .chat-host{min-height:0;overflow:hidden}.create-shell[data-scroll-mode=workbench]{height:calc(100dvh - 64px);min-height:0;overflow:hidden}.create-shell[data-scroll-mode=workbench] .create-header{height:104px;min-height:0}.create-shell[data-scroll-mode=workbench] .create-workbench{height:calc(100% - 104px);min-height:0}.create-shell[data-scroll-mode=workbench] .create-rail,.create-shell[data-scroll-mode=workbench] .create-stage,.create-shell[data-scroll-mode=workbench] .authoring-mode-panel,.create-shell[data-scroll-mode=workbench] .conversation-authoring-layout,.create-shell[data-scroll-mode=workbench] .authoring-chat-column,.create-shell[data-scroll-mode=workbench] .authoring-inspection-card{min-height:0}.create-shell[data-scroll-mode=workbench] .create-rail{height:100%;position:relative;top:auto;overflow-y:auto}.create-shell[data-scroll-mode=workbench] .create-stage{height:100%;overflow:hidden}.create-shell[data-scroll-mode=workbench] .authoring-mode-panel{flex-direction:column;height:100%;display:flex;overflow:hidden}.create-shell[data-scroll-mode=workbench] .authoring-panel-heading{flex:none}.create-shell[data-scroll-mode=workbench] .conversation-authoring-layout{flex:1;overflow:hidden}.create-shell[data-scroll-mode=workbench] .authoring-chat-column{grid-template-rows:minmax(0,1fr) auto auto auto;overflow:hidden}.create-shell[data-scroll-mode=workbench] .authoring-transcript,.create-shell[data-scroll-mode=workbench] .authoring-inspection-card{overflow-y:auto}.create-shell[data-scroll-mode=workbench] .authoring-inspection-card>.button:last-child{box-shadow:0 -8px 16px var(--surface);position:sticky;bottom:0}.create-shell[data-scroll-mode=document]{min-height:calc(100dvh - 64px);overflow:visible}.app-shell .page-container[data-layout=data][data-scroll-mode=data]{flex-direction:column;height:calc(100dvh - 64px);min-height:0;display:flex;overflow:hidden}.app-shell .page-container[data-layout=data]>.page-header{flex:none}.app-shell .data-page-body{overscroll-behavior-block:contain;scrollbar-gutter:stable;flex:1;min-height:0;overflow-y:auto}.app-shell .data-page-body.table-data-body{flex-direction:column;display:flex;overflow:hidden}.app-shell .table-data-body>.overview-strip,.app-shell .table-data-body>.section-toolbar{flex:none}.app-shell .table-data-body>.content-section{flex-direction:column;flex:1;min-height:0;display:flex}.app-shell .table-data-body .content-section>.section-toolbar{flex:none}.app-shell .table-data-body .studio-data-table{flex-direction:column;flex:1;min-height:0;display:flex}.app-shell .table-data-body .studio-data-table-scroll{flex:1;min-height:0}.app-shell .table-data-body .data-scroll-region{overscroll-behavior:contain;flex:1;min-height:0;overflow:auto}.app-shell .table-data-body .data-scroll-region thead th{z-index:4;box-shadow:inset 0 -1px var(--border);position:sticky;top:0}.app-shell .data-page-body .section-toolbar,.app-shell .data-page-body .trace-toolbar{z-index:12;background:var(--surface-subtle);position:sticky;top:0}.app-shell .observability-page[data-scroll-mode=workbench]{flex-direction:column;height:calc(100dvh - 64px);min-height:0;padding-block:24px;display:flex;overflow:hidden}.app-shell .observability-page[data-scroll-mode=workbench] .observability-overview{flex:none;display:grid}.app-shell .observability-page[data-scroll-mode=workbench] .observability-body{scrollbar-gutter:stable;flex:1;min-height:0;display:block;overflow-y:auto}.app-shell .observability-page[data-scroll-mode=workbench] .trace-workbench{height:clamp(620px,100dvh - 180px,760px);min-height:620px;overflow:hidden}.app-shell .trace-workbench.detail-route{grid-template-columns:minmax(420px,1.22fr) minmax(340px,.78fr)}.app-shell .trace-workbench.detail-route.detail-collapsed,.app-shell .trace-workbench.detail-route.detail-expanded{grid-template-columns:minmax(0,1fr)}.app-shell .observability-page[data-scroll-mode=workbench] .trace-list,.app-shell .observability-page[data-scroll-mode=workbench] .trace-span-tree,.app-shell .observability-page[data-scroll-mode=workbench] .trace-detail-body{min-height:0;overflow:auto}.overlay .drawer{border-radius:var(--radius-surface);width:min(560px,100vw - 32px);max-height:calc(100dvh - 32px);inset:16px 16px 16px auto;overflow:hidden}.overlay .drawer.wide{width:min(840px,100vw - 32px)}.overlay .drawer.compact{width:min(380px,100vw - 32px)}.overlay .drawer-header,.overlay .drawer-footer{flex:none}.overlay .drawer-body{min-height:0;overflow-y:auto}@media (width<=1023px){.app-shell{--studio-app-rail:60px;--studio-content-gutter:16px}.app-shell .product-copy,.app-shell .preview-label,.app-shell .workspace-copy,.app-shell .workspace-chevron,.app-shell .nav-label,.app-shell .nav-item>span,.app-shell .user-copy,.app-shell .global-context,.app-shell .runtime-state{display:none}.app-shell .product{justify-content:center;padding-inline:0}.app-shell .workspace-switcher,.app-shell .nav-item{justify-content:center;width:44px;margin-inline:8px;padding-inline:0}.app-shell .primary-nav{padding-inline:0}.app-shell .sidebar-footer{flex-direction:column;justify-content:center;padding-inline:8px}.app-shell .global-header{padding-inline:16px}.app-shell .breadcrumb{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.app-shell .page-container{padding-inline:var(--studio-content-gutter)}.app-shell .overview-strip,.app-shell .observability-overview,.app-shell .orchestration-workbench,.app-shell .runtime-resource-groups{grid-template-columns:minmax(0,1fr)}.app-shell .create-header{min-height:104px;padding:16px var(--studio-content-gutter);grid-template-columns:minmax(0,1fr) auto;gap:16px}.app-shell .create-header>.button:first-child,.app-shell .create-header .draft-state{display:none}.app-shell .compact-create-rail-trigger{display:inline-flex}.app-shell .create-workbench{width:100%;min-width:0;display:block}.app-shell .create-stage,.app-shell .authoring-mode-panel,.app-shell .quick-create{width:100%;max-width:none}.app-shell .trace-workbench.detail-route{grid-template-columns:minmax(0,1fr);height:auto;min-height:620px;overflow:visible}.app-shell .trace-workbench.detail-route .trace-span-panel,.app-shell .trace-workbench.detail-route .trace-detail-panel{grid-column:1/-1}.app-shell .trace-workbench.detail-route .trace-detail-panel{border-top:1px solid var(--border);min-height:480px}.skill-preview-layout{grid-template-columns:minmax(0,1fr)}.skill-preview-sidebar{border-right:0;border-bottom:1px solid var(--border);max-height:220px}.markdown-preview-shell{padding-inline:16px}}@media (width>=1024px) and (width<=1439px){.app-shell{--studio-app-rail:60px;--studio-content-gutter:24px}.app-shell .product-copy,.app-shell .preview-label,.app-shell .workspace-copy,.app-shell .workspace-chevron,.app-shell .nav-label,.app-shell .nav-item>span,.app-shell .user-copy,.app-shell .global-context{display:none}.app-shell .product{justify-content:center;padding-inline:0}.app-shell .workspace-switcher,.app-shell .nav-item{justify-content:center;width:44px;margin-inline:8px;padding-inline:0}.app-shell .primary-nav{padding-inline:0}.app-shell .sidebar-footer{flex-direction:column;justify-content:center;padding-inline:8px}.app-shell .overview-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.app-shell .orchestration-workbench{grid-template-columns:minmax(0,1fr)}.app-shell[data-view=create] .create-workbench{grid-template-columns:196px minmax(0,1fr)}.app-shell[data-view=create] .create-header{grid-template-columns:196px minmax(0,1fr) auto}.app-shell[data-view=create] .conversation-authoring-layout,.app-shell[data-view=create] .authoring-inspect-grid{grid-template-columns:minmax(0,1fr)}.app-shell[data-view=create] .create-shell[data-scroll-mode=workbench] .conversation-authoring-layout{grid-template-rows:repeat(2,minmax(0,1fr))}}@media (width>=768px) and (width<=1439px){.app-shell .orchestration-aside{grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr);gap:28px;display:grid}.app-shell .orchestration-aside>.aside-divider{display:none}}@media (width<=1439px){.app-shell .trace-detail-expand{display:inline-flex}.app-shell .trace-workbench.detail-expanded{grid-template-columns:minmax(0,1fr)}.app-shell .trace-workbench.detail-expanded .trace-list-panel,.app-shell .trace-workbench.detail-expanded .trace-span-panel{display:none}.app-shell .trace-workbench.detail-expanded .trace-detail-panel{border-top:0;grid-column:1/-1;min-height:620px;display:flex}.app-shell .orchestration-aside{width:auto;position:static}.app-shell .chat-run-panel{z-index:48;width:min(420px, calc(100vw - var(--studio-app-rail)));height:auto;box-shadow:var(--shadow-overlay);position:fixed;top:64px;bottom:0;right:0}}@media (width>=1024px){.app-shell[data-rail=expanded]{--studio-app-rail:216px}.app-shell[data-rail=expanded] .product-copy,.app-shell[data-rail=expanded] .workspace-copy{display:flex}.app-shell[data-rail=expanded] .nav-label,.app-shell[data-rail=expanded] .nav-item>span{display:inline}.app-shell[data-rail=expanded] .product{justify-content:flex-start;padding-inline:18px}.app-shell[data-rail=expanded] .workspace-switcher,.app-shell[data-rail=expanded] .nav-item{justify-content:flex-start;width:auto;margin-inline:0;padding-inline:13px}.app-shell[data-rail=expanded] .primary-nav{padding-inline:10px}.app-shell[data-rail=expanded] .sidebar-footer{flex-direction:row;justify-content:space-between;padding-inline:12px}}@media (prefers-reduced-motion:reduce){.app-shell .create-rail{transition-duration:0s!important}.overlay .drawer{animation:none!important}}:root{--studio-outline-surface:var(--border-card);--studio-outline-inset:var(--border)}.app-shell{--studio-app-rail:80px;--studio-content-gutter:28px;background:var(--canvas);min-height:100dvh}.navigation-rail{width:var(--studio-app-rail);background:var(--canvas);padding:12px 10px;overflow:hidden}.app-shell[data-rail=expanded]{--studio-app-rail:216px}.navigation-rail .product-mark{background:var(--accent);color:#fff;border-radius:var(--radius-rail);flex:0 0 36px;width:36px;height:36px}.navigation-rail .workspace-mark{flex:0 0 36px;width:36px;height:36px}.navigation-rail .workspace-switcher,.navigation-rail .nav-item,.navigation-rail .icon-button,.navigation-rail .user-avatar{border-radius:var(--radius-rail)}.navigation-rail .workspace-switcher,.navigation-rail .nav-item,.navigation-rail .icon-button{background:0 0}.navigation-rail .nav-item{min-height:48px}.navigation-rail .nav-item svg{flex:0 0 20px;width:20px;height:20px}.navigation-rail .icon-button{width:40px;min-width:40px;height:40px}.navigation-rail .nav-item:hover,.navigation-rail .workspace-switcher:hover,.navigation-rail .icon-button:hover{background:var(--surface)}.navigation-rail .nav-item.active{background:var(--accent-soft);color:var(--accent)}.navigation-rail .nav-label{color:var(--text-faint)}.app-shell[data-rail=compact] .product,.app-shell[data-rail=compact] .workspace-switcher,.app-shell[data-rail=compact] .nav-item{justify-content:center;width:48px;margin-inline:auto;padding-inline:0}.app-shell[data-rail=compact] .nav-item{height:44px;min-height:44px}.app-shell[data-rail=compact] .nav-group+.nav-group{margin-top:6px}.app-shell[data-rail=compact] .primary-nav{padding-inline:0}.app-shell[data-rail=compact] .sidebar-footer{flex-direction:column;gap:6px;height:auto;padding:8px 0 12px}.global-header{background:var(--canvas);min-height:70px;padding:0 28px}.header-identity,.header-identity-inline{min-width:0}.header-identity{gap:1px;line-height:1.2;display:grid}.header-identity-inline{align-items:center;gap:8px;display:flex}.header-identity strong,.header-identity h1,.header-identity-inline strong,.header-identity-inline h1{color:var(--text);font-size:var(--font-size-card-metric);font-weight:600;line-height:inherit;margin:0}.header-identity span,.header-identity-inline span{color:var(--text-tertiary)}.header-actions,#pageHeaderTools,#pageHeaderActions{align-items:center;gap:8px;display:flex}.header-actions{min-width:0;margin-left:auto}.page-header-page-actions{white-space:nowrap;flex:none;min-width:max-content}.page-header-page-actions>*{flex:none}.page-header-page-actions>.tag,.page-header-page-actions>.badge{white-space:nowrap;width:max-content;min-width:max-content}.page-header-tools{flex:440px;min-width:0;max-width:440px}.page-header-tools .header-search-field{flex:220px;width:220px;min-width:140px}.page-header-tools .segmented-control.compact{flex:0 0 176px;grid-template-columns:repeat(2,minmax(0,1fr));width:176px;min-width:176px}.header-agent-selector{flex:0 240px;width:240px;min-width:180px}.header-agent-selector.conversation-target-selector{border-radius:var(--radius-pill);flex:0 248px;width:248px;min-width:220px;max-width:260px;min-height:36px;padding-inline:14px 11px}.header-agent-selector>span:first-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.header-actions>.tag,.header-actions>.badge,.header-actions>.global-refresh-button{white-space:nowrap;flex:none;width:max-content;min-width:max-content}.header-actions>.global-refresh-button{width:34px;min-width:34px}.button:disabled,.icon-button:disabled{cursor:not-allowed;opacity:.48}.app-main,.app-shell main{background:var(--canvas)}.page-container{width:100%;min-width:0;margin:0 auto;padding:10px 28px 28px}.page-container[data-layout=document]{max-width:var(--studio-page-max,1760px);overflow:visible}.page-container[data-layout=workbench]{max-width:var(--studio-page-max,1760px);height:calc(100dvh - 70px);min-height:0;overflow:hidden}.block,.table-section,.trace-list-page,.authoring-mode-panel,.wizard-content,.agent-editor,.empty-state{border-radius:var(--radius-block);background:var(--surface)}:where(.block:not(.runtime-resource-group),.table-section,.trace-list-page,.wizard-content,.agent-editor,.authoring-mode-panel,.studio-data-table,.stat-strip>*,.page-tabs,.chat-session-sidebar,.chat-conversation,.chat-run-panel,.trace-run-panel,.trace-span-panel,.trace-detail-panel,.studio-dialog,.drawer,.data-page-body>.empty-state){outline:1px solid var(--studio-outline-surface);outline-offset:-1px}:where(.authoring-chat-column,.authoring-input-card,.authoring-inspection-card,.pipeline-node-card,.capability-empty-state,.code-viewer,.a2ui-surface,.appearance-option,.orchestration-graph .react-flow__controls,.more-actions-menu,.studio-select-content,.studio-multi-select-popover,.composer-action-menu,.composer-command-menu,.studio-tooltip){outline:1px solid var(--studio-outline-inset);outline-offset:-1px}.trace-list-page>.studio-data-table,.agents-catalog-section>.studio-data-table,.runtime-resource-group,.skill-preview-content>.code-viewer{outline:0}.block-head,.section-heading,.authoring-panel-heading,.trace-panel-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.panel-heading{justify-content:flex-start;align-items:flex-start;gap:12px;display:flex}.button,.icon-button,button,input,textarea,select{border-radius:var(--radius-control)}.button,.icon-button{min-height:34px}.button:not(.accent),.icon-button,.segmented-control,.search-field{background:var(--surface)}:where(.button:not(.accent):not(.tertiary),.icon-button.secondary,.global-header .icon-button,.block>.icon-button,.segmented-control){outline:1px solid var(--studio-outline-inset);outline-offset:-1px}.navigation-rail .icon-button{outline:0}:where(.button:not(.accent):not(.tertiary),.icon-button.secondary,.global-header .icon-button,.block>.icon-button,.segmented-control button):focus-visible{outline:2px solid color-mix(in oklab, var(--accent) 55%, transparent);outline-offset:2px}:where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),textarea,select),:is(.studio-select-trigger,.studio-multi-select-trigger){background:var(--surface-sunken);outline:1px solid color-mix(in srgb, var(--border-strong) 72%, transparent);outline-offset:-1px;transition:color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease), outline-color var(--motion-fast) var(--ease)}:where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),textarea,select):hover:not(:disabled),:is(.studio-select-trigger,.studio-multi-select-trigger):hover:not(:disabled){background:var(--surface-hover)}:is(input,textarea,select):focus,.studio-select-trigger:focus-visible,.studio-select-trigger[data-state=open],.studio-multi-select-trigger:focus-visible,.studio-multi-select-trigger[aria-expanded=true]{outline:2px solid color-mix(in srgb, var(--accent) 62%, transparent);outline-offset:-2px;background:var(--surface)}.search-field{background:var(--surface-sunken);outline:1px solid color-mix(in srgb, var(--border-strong) 72%, transparent);outline-offset:-1px;transition:background var(--motion-fast) var(--ease), outline-color var(--motion-fast) var(--ease)}.search-field:hover{background:var(--surface-hover)}.search-field:focus-within{background:var(--surface);outline:2px solid color-mix(in srgb, var(--accent) 62%, transparent);outline-offset:-2px}.search-field input,.search-field input:hover,.search-field input:focus{background:0 0;outline:0}.studio-form-field.has-error :is(input,textarea,button[role=combobox],.studio-multi-select-trigger){outline:1px solid var(--danger);outline-offset:-1px}.studio-form-field+.studio-form-field,.studio-form-field+.form-grid,.form-grid+.studio-form-field,.field+.field{margin-top:22px}.block .button:not(.accent),.block .icon-button,.table-section .button:not(.accent),.table-section .icon-button{background:var(--surface-subtle)}.button.accent{background:var(--button-primary-bg);color:var(--button-primary-text)}.button.accent:hover:not(:disabled){background:var(--button-primary-bg-hover);color:var(--button-primary-text)}.button.accent:active:not(:disabled){background:var(--button-primary-bg-active);color:var(--button-primary-text)}.button.danger,.danger{color:var(--danger)}.tag,.badge{border-radius:var(--radius-chip);background:var(--surface-subtle);min-height:24px;color:var(--text-secondary);font-size:var(--font-size-caption);align-items:center;gap:6px;padding:3px 9px;font-weight:500;display:inline-flex}.badge[data-state=ready],.badge[data-state=success]{background:var(--success-soft);color:var(--success-deep)}.badge[data-state=pending],.badge[data-state=running],.badge[data-state=warning]{background:var(--warning-soft);color:var(--warning-deep)}.badge[data-state=failed],.badge[data-state=error]{background:var(--danger-soft);color:var(--danger-deep)}.stat-strip{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px;display:grid}.stat-strip>*{border-radius:var(--radius-card);background:var(--surface);min-width:0;padding:16px 18px}.stat-strip>.emphasis{background:var(--accent-soft)}.stat-strip span,.stat-strip small,.stat-strip strong{display:block}.stat-strip span,.stat-strip small{color:var(--text-tertiary);font-size:var(--font-size-caption)}.stat-strip strong{color:var(--text);margin:4px 0;font-size:24px;line-height:1.2}.stat-strip .emphasis strong{color:var(--accent)}.stat-strip [data-state=ready] strong,.stat-strip [data-state=ready]{color:var(--success-deep)}.stat-strip [data-state=running] strong,.stat-strip [data-state=pending] strong{color:var(--warning-deep)}.stat-strip [data-state=failed] strong,.stat-strip [data-state=failed]{color:var(--danger-deep)}.stat-strip.compact-summary{border-block:1px solid var(--border);background:var(--surface);grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-bottom:16px;overflow:hidden}.stat-strip.compact-summary>*{background:0 0;border:0;border-radius:0;min-height:72px;padding:12px 16px 13px}.stat-strip.compact-summary>*+*{border-left:1px solid var(--border)}.stat-strip.compact-summary strong{margin:3px 0 0;font-size:20px}.stat-strip.compact-summary .runtime-summary strong,.runtime-status-summary strong{align-items:center;gap:8px;display:inline-flex}.stat-strip.compact-summary .summary-status-dot,.runtime-status-summary .summary-status-dot{background:var(--text-disabled);border-radius:50%;flex:none;width:7px;height:7px;display:inline-block}.runtime-summary[data-state=ready] .summary-status-dot,.runtime-status-summary [data-state=ready] .summary-status-dot{background:var(--success)}.runtime-summary[data-state=pending] .summary-status-dot,.runtime-status-summary [data-state=pending] .summary-status-dot{background:var(--warning)}.runtime-summary[data-state=failed] .summary-status-dot,.runtime-status-summary [data-state=failed] .summary-status-dot{background:var(--danger)}.compact-status-alert{border-left:3px solid var(--danger);border-radius:var(--radius-control);color:var(--danger-deep);background:var(--danger-soft);font-size:var(--font-size-caption);align-items:center;gap:10px;margin-top:-4px;padding:10px 14px;display:flex}.compact-status-alert span{color:var(--text-secondary)}.agents-page .table-data-body{gap:24px;display:grid}.agents-section-heading,.agents-catalog-header{justify-content:space-between;align-items:flex-end;gap:16px;min-width:0;display:flex}.agents-section-heading{margin-bottom:12px;padding-inline:2px}.agents-section-heading h2,.agents-section-heading p,.agents-catalog-header h2,.agents-catalog-header p{margin:0}.agents-section-heading h2,.agents-catalog-header h2{color:var(--text);font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold)}.agents-section-heading p,.agents-catalog-header p{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:3px}.agents-page .stat-strip{margin-bottom:0}.agents-catalog-section{padding:0;overflow:hidden}.agents-catalog-header{min-height:76px;padding:16px 18px 14px}.agents-catalog-meta{color:var(--text-secondary);font-size:var(--font-size-caption);white-space:nowrap;align-items:center;gap:12px;display:flex}.agents-catalog-meta .sync-state{padding-left:12px;position:relative}.agents-catalog-meta .sync-state:before{content:"";border-radius:var(--radius-circle);background:var(--success);width:6px;height:6px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.agents-catalog-section .section-toolbar{background:var(--surface-subtle);min-height:58px;margin:0;padding:9px 18px}.agents-catalog-section .section-toolbar .search-field{flex:420px;width:min(520px,100%)}.agents-catalog-section>.studio-data-table{border-radius:0}.page-tabs{border-radius:var(--radius-inset);background:var(--surface);gap:6px;margin-bottom:16px;padding:4px;display:flex}.page-tabs button,.segmented-control button{min-height:32px;color:var(--text-secondary);background:0 0;padding:0 12px}.page-tabs button.active,.page-tabs button[aria-selected=true],.segmented-control button.selected{background:var(--accent-soft);color:var(--accent)}.studio-data-table{border-collapse:separate;border-spacing:0;background:var(--surface);width:100%}.studio-data-table thead th{z-index:1;border-bottom:1px solid var(--border);background:var(--surface);height:42px;color:var(--text-tertiary);font-size:var(--font-size-caption);font-weight:500;position:sticky;top:0}.studio-data-table tbody tr:hover{background:var(--surface-subtle)}.studio-data-table td,.studio-data-table th{padding-inline:14px}.row-actions{justify-content:flex-end;gap:6px;display:flex}.more-actions-menu,.studio-select-content,.studio-tooltip,[role=dialog]{z-index:120;border-radius:var(--radius-inset);background:var(--surface);padding:6px}.more-actions-item{border-radius:var(--radius-chip);min-width:150px;color:var(--text-secondary);cursor:pointer;outline:none;padding:8px 10px}.empty-state{text-align:center;align-content:center;place-items:center;gap:8px;min-height:280px;padding:36px;display:grid}.empty-state.inline{min-height:180px}.empty-state h2,.empty-state p{margin:0}.empty-state p{max-width:520px;color:var(--text-tertiary)}.create-shell .create-workbench{width:100%;max-width:79rem;min-height:calc(100dvh - var(--header-height));grid-template-columns:212px minmax(0,1fr);align-items:stretch;margin-inline:auto;display:grid}.create-shell .create-rail{top:var(--header-height);width:212px;min-height:calc(100dvh - var(--header-height));background:var(--surface-subtle);border-radius:0;align-self:start;padding:24px 14px;position:sticky}.create-shell .create-rail-panel{gap:8px;min-height:0;display:grid}.create-shell .authoring-mode-tabs,.create-shell .wizard-steps{background:0 0;border-radius:0;grid-template-columns:minmax(0,1fr);align-items:stretch;gap:4px;min-height:0;padding:0;display:grid}.create-shell .authoring-mode-tabs button,.create-shell .wizard-step{border-radius:var(--radius-control);min-width:0;transition:color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease), transform var(--motion-fast) var(--ease);background:0 0;padding:10px 12px}.create-shell .authoring-mode-tabs button{color:var(--text-secondary)}.create-shell .authoring-mode-tabs button:hover:not(.active),.create-shell .wizard-step:hover:not(:disabled):not(.active){color:var(--text);background:var(--surface)}.create-shell .authoring-mode-tabs button:active,.create-shell .wizard-step:active:not(:disabled){transform:translateY(1px)}.create-shell .wizard-step{gap:6px;min-height:54px;padding-inline:8px}.create-shell .wizard-step .step-number{flex:0 0 24px;width:24px;height:24px}.create-shell .wizard-step>span:last-child,.create-shell .wizard-step strong,.create-shell .wizard-step small,.create-shell .authoring-mode-tabs strong,.create-shell .authoring-mode-tabs small{text-overflow:clip;white-space:normal;min-width:0;overflow:visible}.create-shell .authoring-mode-tabs button.active,.create-shell .wizard-step.active{background:var(--accent-soft);color:var(--accent)}.create-shell .authoring-mode-tabs button.active:hover,.create-shell .wizard-step.active:hover:not(:disabled){background:var(--accent-hover);color:var(--accent)}.create-shell .create-stage{border-radius:var(--radius-block);background:var(--surface);min-width:0}.create-shell .wizard-step{align-items:flex-start;padding-block:0;position:relative}.create-shell .wizard-step:not(:last-child):after{content:"";background:var(--border);width:1.5px;position:absolute;top:28px;bottom:-8px;left:20px}.create-shell .wizard-step.completed:not(:last-child):after{background:var(--accent)}.create-shell .wizard-step.active .step-number,.create-shell .wizard-step.completed .step-number{background:var(--accent);color:var(--surface)}.create-shell .wizard-actions{gap:14px}.create-shell .wizard-progress{flex:none}.create-shell .wizard-flow-actions{flex:none;align-items:center;gap:8px;display:flex}.create-shell .summary-chips{flex:auto;align-items:baseline;gap:14px;min-width:0;margin:0;display:flex;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 30px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 30px),#0000)}.create-shell .summary-chips>div{font-size:var(--font-size-caption);flex:none;align-items:baseline;gap:6px;display:flex}.create-shell .summary-chips dt{color:var(--text-faint)}.create-shell .summary-chips dd{max-width:12ch;color:var(--text);font-weight:var(--font-weight-semibold);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.create-shell .template-card .template-icon,.create-shell .capability-heading .capability-icon{display:none}.create-shell .template-card{grid-template-columns:minmax(0,1fr)}.create-shell .wizard-layout,.create-shell .wizard-content,.create-shell .authoring-mode-panel{width:100%;max-width:none;margin:0}.create-shell[data-layout=document] .create-stage,.create-shell[data-layout=document] .wizard-content,.create-shell[data-layout=document] .authoring-mode-panel{min-height:calc(100dvh - 12rem)}.create-shell .authoring-mode-panel{padding:clamp(24px,3vw,48px)}.create-shell .authoring-panel-heading{align-items:flex-start;margin-bottom:28px}.conversation-authoring-layout,.authoring-inspect-grid{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:18px}.authoring-chat-column,.authoring-input-card,.authoring-inspection-card{border-radius:var(--radius-inset);background:var(--surface-subtle);flex-direction:column;align-items:stretch;gap:18px;min-width:0;padding:20px;display:flex}.authoring-section-heading{grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:11px;display:grid}.authoring-section-index{border-radius:var(--radius-chip);width:28px;height:28px;color:var(--accent);background:var(--accent-soft);font-family:var(--font-mono);font-size:var(--font-size-caption);font-variant-numeric:tabular-nums;place-items:center;display:grid}.authoring-section-heading>div{min-width:0}.authoring-section-heading strong,.authoring-section-heading p{margin:0;display:block}.authoring-section-heading strong{color:var(--text);font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.authoring-section-heading p{color:var(--text-tertiary);font-size:var(--font-size-caption);line-height:var(--line-height-caption);margin-top:2px}.authoring-section-heading>.badge{place-self:start}.authoring-input-card .field,.authoring-inspection-card .field,.authoring-chat-column .field{margin-bottom:0}.authoring-transcript{background:var(--surface);flex:1;min-height:240px}.authoring-inspection-card .code-viewer{flex:1;min-height:192px}.authoring-card-actions{justify-content:flex-end;align-items:center;gap:8px;margin-top:auto;padding-top:2px;display:flex}.authoring-card-actions .button{min-width:132px}.create-shell[data-layout=workbench] .create-workbench{grid-template-rows:minmax(0,1fr);grid-template-columns:212px minmax(0,1fr);gap:0;height:100%;min-height:0;display:grid;overflow:hidden}.create-shell[data-layout=workbench] .create-rail{grid-area:1/1}.create-shell[data-layout=workbench] .create-stage{grid-area:1/2}.create-shell[data-layout=workbench] .create-stage,.create-shell[data-layout=workbench] .authoring-mode-panel,.create-shell[data-layout=workbench] .conversation-authoring-layout,.create-shell[data-layout=workbench] .authoring-chat-column,.create-shell[data-layout=workbench] .authoring-inspection-card{min-height:0}.create-shell[data-layout=workbench] .create-stage,.create-shell[data-layout=workbench] .authoring-mode-panel{height:100%;overflow:hidden}.create-shell[data-layout=workbench] .authoring-mode-panel{grid-template-rows:auto minmax(0,1fr);padding:20px 24px;display:grid}.create-shell[data-layout=workbench] .authoring-panel-heading{margin-bottom:16px}.create-shell[data-layout=workbench] .conversation-authoring-layout{contain:layout paint;height:100%;overflow:hidden}.create-shell[data-layout=workbench] .authoring-inspection-card{height:100%;overflow-y:auto}.create-shell[data-layout=workbench] .authoring-chat-column{height:100%;overflow:hidden}.create-shell[data-layout=workbench] .authoring-transcript{flex:auto;height:auto;min-height:0;max-height:none;overflow-y:auto}.create-shell[data-authoring-mode=conversation] .authoring-inspection-card .code-viewer{flex:none;min-height:156px}.create-shell[data-authoring-mode=conversation] .conversation-authoring-layout{grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);gap:16px}.conversation-chat,.conversation-draft-rail{border:1px solid var(--border);border-radius:var(--radius-inset);background:var(--surface);min-width:0;min-height:0}.conversation-chat{grid-template-rows:auto minmax(160px,1fr) auto auto;gap:12px;padding:18px;display:grid}.conversation-chat-header,.conversation-draft-rail-heading,.conversation-review-heading,.conversation-draft-title{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.conversation-chat-header strong,.conversation-draft-rail-heading strong,.conversation-review-heading strong,.conversation-draft-title strong{color:var(--text);font-size:var(--font-size-control);font-weight:var(--font-weight-semibold);display:block}.conversation-chat-header p,.conversation-draft-rail-heading p,.conversation-review-heading p,.conversation-draft-title p,.conversation-empty-state p,.conversation-draft-empty p,.conversation-message p{color:var(--text-secondary);font-size:var(--font-size-control);margin:3px 0 0;line-height:1.55}.conversation-context-state{border-radius:var(--radius-chip);color:var(--text-tertiary);background:var(--surface-subtle);font-size:var(--font-size-caption);white-space:nowrap;flex:none;padding:4px 8px}.conversation-transcript{scrollbar-gutter:stable both-edges;flex-direction:column;gap:10px;min-height:0;padding:8px 2px;display:flex;overflow-y:auto}.conversation-empty-state,.conversation-draft-empty{min-height:100%;color:var(--text-tertiary);text-align:center;align-content:center;place-items:center;padding:28px;display:grid}.conversation-empty-state svg,.conversation-draft-empty svg{color:var(--accent);margin-bottom:9px}.conversation-empty-state strong,.conversation-draft-empty strong{color:var(--text);font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.conversation-empty-state p,.conversation-draft-empty p{max-width:360px}.conversation-message{border:1px solid var(--border);background:var(--surface-subtle);border-radius:14px;width:fit-content;max-width:min(88%,640px);padding:10px 13px}.conversation-message.user{border-color:color-mix(in srgb, var(--accent) 24%, var(--border));background:var(--accent-soft);border-bottom-right-radius:4px;align-self:flex-end}.conversation-message.assistant{border-bottom-left-radius:4px;align-self:flex-start}.conversation-message.assistant strong{color:var(--text);font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.conversation-message p{white-space:pre-wrap}.conversation-thinking{border-radius:var(--radius-control);min-width:0;color:var(--text-secondary);background:var(--surface-subtle);align-self:flex-start;align-items:center;gap:8px;padding:7px 10px;display:inline-flex}.conversation-thinking .authoring-stage{gap:6px;min-width:0}.conversation-thinking-orb{align-items:center;gap:3px;height:18px;padding:0 2px;display:inline-flex}.conversation-thinking-orb i{background:var(--accent);border-radius:999px;width:4px;height:4px;animation:1.15s ease-in-out infinite conversation-thinking-pulse}.conversation-thinking-orb i:nth-child(2){animation-delay:.14s}.conversation-thinking-orb i:nth-child(3){animation-delay:.28s}@keyframes conversation-thinking-pulse{0%,65%,to{opacity:.35;transform:translateY(0)}32%{opacity:1;transform:translateY(-4px)}}.conversation-composer{border:1px solid var(--border-strong,var(--border));background:var(--surface);box-shadow:0 8px 22px color-mix(in srgb, var(--ink) 7%, transparent);border-radius:16px;padding:10px 12px 8px}.conversation-composer:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft), 0 8px 22px color-mix(in srgb, var(--ink) 7%, transparent)}.conversation-composer textarea{resize:vertical;width:100%;min-height:66px;max-height:180px;color:var(--text);font:inherit;font-size:var(--font-size-control);background:0 0;border:0;outline:0;padding:2px 0;line-height:1.55;display:block}.conversation-composer textarea::placeholder{color:var(--text-tertiary)}.conversation-composer-footer{justify-content:space-between;align-items:center;gap:12px;margin-top:5px;display:flex}.conversation-composer-footer>span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.conversation-composer-footer b{color:var(--border)}.conversation-send-button{width:32px;height:32px;color:var(--accent-foreground,#fff);background:var(--accent);cursor:pointer;border:0;border-radius:10px;flex:none;place-items:center;transition:transform .14s,opacity .14s;display:grid}.conversation-send-button:not(:disabled):hover{transform:translateY(-1px)}.conversation-send-button:disabled{cursor:default;opacity:.42}.conversation-settings{border-top:1px solid var(--border)}.conversation-settings summary{color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-caption);justify-content:space-between;align-items:center;gap:12px;padding:10px 2px 0;list-style:none;display:flex}.conversation-settings summary::-webkit-details-marker{display:none}.conversation-settings summary span{color:var(--text);font-weight:var(--font-weight-semibold)}.conversation-settings summary small{color:var(--text-tertiary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.conversation-settings summary:after{content:"⌄";color:var(--text-tertiary);font-size:15px}.conversation-settings[open] summary:after{transform:rotate(180deg)}.conversation-settings-body{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding-top:14px;display:grid}.conversation-settings-body>.field,.conversation-settings-body>.form-field,.conversation-settings-body>.conversation-runtime-note{margin:0}.conversation-settings-body .conversation-runtime-note{align-self:center}.conversation-draft-rail{flex-direction:column;gap:16px;padding:18px;display:flex;overflow-y:auto}.conversation-draft-rail-heading{border-bottom:1px solid var(--border);padding-bottom:13px}.conversation-draft-rail-heading .badge{flex:none}.conversation-draft-summary{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-subtle);gap:14px;padding:14px;display:grid}.conversation-draft-title{justify-content:flex-start}.conversation-draft-title svg{color:var(--accent);flex:none;margin-top:2px}.conversation-draft-title>div{min-width:0}.conversation-draft-title p{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.conversation-preview-section{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);gap:6px;padding:11px 12px;display:grid}.conversation-preview-section span{color:var(--text-tertiary);font-size:var(--font-size-caption);font-weight:var(--font-weight-semibold)}.conversation-preview-section p{-webkit-line-clamp:6;color:var(--text-secondary);font-size:var(--font-size-control);white-space:pre-wrap;-webkit-box-orient:vertical;margin:0;line-height:1.58;display:-webkit-box;overflow:hidden}.conversation-draft-tags{flex-wrap:wrap;gap:6px;display:flex}.conversation-draft-tags span{border-radius:var(--radius-chip);color:var(--text-secondary);background:var(--surface);font-size:var(--font-size-caption);padding:3px 7px}.conversation-draft-summary .button{justify-content:center;width:100%}.conversation-review-form{gap:16px;min-width:0;display:grid}.conversation-review-heading{align-items:center}.conversation-review-heading .button{flex:none}.create-shell[data-layout=workbench] .conversation-chat,.create-shell[data-layout=workbench] .conversation-draft-rail{height:100%;min-height:0}@media (width<=1180px){.create-shell[data-authoring-mode=conversation] .conversation-authoring-layout{grid-template-columns:minmax(0,1fr)}.create-shell[data-layout=workbench] .conversation-chat,.create-shell[data-layout=workbench] .conversation-draft-rail{height:auto}}@media (width<=720px){.conversation-context-state{display:none}.conversation-settings-body{grid-template-columns:minmax(0,1fr)}.conversation-composer-footer>span{display:none}}@media (prefers-reduced-motion:reduce){.conversation-thinking-orb i{animation:none}.conversation-send-button{transition:none}}.runtime-trend-bars{align-items:end;gap:5px;height:150px;padding-top:14px;display:flex}.runtime-trend-bar{min-width:4px;height:max(4px, var(--bar-height));border-radius:var(--radius-chip) var(--radius-chip) 0 0;background:var(--accent-soft);flex:1}.runtime-trend-bar[data-peak=true]{background:var(--accent)}.chart-axis{color:var(--text-tertiary);font-size:var(--font-size-caption);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;padding-top:7px;display:flex}.observability-page .observability-body{grid-template-rows:auto auto minmax(0,1fr);gap:12px;height:100%;min-height:0;display:grid;overflow:hidden}.observability-page .stat-strip{margin-bottom:0}.trace-list-page,.trace-workbench{min-height:0;overflow:hidden}.observability-page .trace-list-page{align-self:start}.trace-workbench{background:0 0;grid-template-columns:minmax(220px,.7fr) minmax(420px,1.65fr) minmax(320px,1fr);gap:12px;display:grid}.trace-run-panel,.trace-span-panel,.trace-detail-panel{border-radius:var(--radius-block);background:var(--surface);min-width:0;min-height:0;overflow:hidden}.trace-run-list,.trace-span-tree,.trace-detail-body{min-height:0;overflow:auto}.trace-workbench.detail-expanded .trace-run-panel,.trace-workbench.detail-expanded .trace-span-panel{display:none}.trace-workbench.detail-expanded .trace-detail-panel{grid-column:1/-1}.trace-run-list>button{text-align:left;background:0 0;gap:6px;width:100%;padding:12px;display:grid}.trace-run-list>button:hover,.trace-run-list>button.active{background:var(--surface-subtle)}.trace-run-identity,.trace-run-meta{justify-content:space-between;align-items:center;gap:8px;display:flex}.trace-run-identity>span,.trace-run-identity strong,.trace-run-identity small{min-width:0;display:block}.trace-run-identity small,.trace-run-meta{color:var(--text-tertiary);font-size:var(--font-size-caption)}@media (width<=1180px){.trace-workbench{grid-template-columns:minmax(190px,.65fr) minmax(360px,1.4fr) minmax(280px,1fr)}.conversation-authoring-layout,.authoring-inspect-grid{grid-template-columns:minmax(0,1fr)}.header-search-field{width:190px}.create-shell[data-layout=workbench] .authoring-mode-panel{grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden}.create-shell[data-layout=workbench] .conversation-authoring-layout{align-content:start;height:100%;overflow:hidden auto}.create-shell[data-layout=workbench] .authoring-chat-column,.create-shell[data-layout=workbench] .authoring-inspection-card{height:auto;overflow:visible}}@media (width<=900px){.app-shell,.app-shell[data-rail=expanded]{--studio-app-rail:72px;--studio-content-gutter:16px}.page-container,.global-header{padding-inline:16px}.trace-workbench{grid-template-columns:190px minmax(360px,1fr)}.trace-detail-panel{z-index:80;position:fixed;inset:86px 16px 16px 76px}.create-shell .authoring-mode-tabs button small,.create-shell .wizard-step small{display:none}}@media (width<=640px){.stat-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.page-tabs{overflow-x:auto}.create-shell .authoring-mode-panel{padding:20px}.authoring-chat-column,.authoring-input-card,.authoring-inspection-card{padding:16px}.authoring-section-heading{grid-template-columns:auto minmax(0,1fr)}.authoring-section-heading>.badge{grid-column:2}.authoring-card-actions .button{width:100%}.app-shell[data-rail=compact] .nav-group+.nav-group{margin-top:0}.header-search-field,#pageHeaderTools .segmented-control,.create-shell .create-rail{display:none}.compact-create-rail-trigger{display:inline-grid}.trace-workbench{grid-template-columns:1fr}.observability-page .observability-body{flex-direction:column;display:flex;overflow-y:auto}.observability-page .trace-list-page{flex:none;min-height:300px}.trace-run-panel{display:none}.trace-detail-panel{inset:78px 8px 8px}}.studio-field-label-row{align-items:center;gap:6px;min-width:0;display:flex}.field-help-trigger{width:24px;min-width:24px;height:24px;color:var(--text-tertiary);background:0 0;place-items:center;padding:0;display:inline-grid}.field-help-trigger:hover{color:var(--accent);background:var(--accent-soft)}.field-help-tooltip{max-width:320px;line-height:1.55}.studio-field-requirement.required{color:var(--text-tertiary);font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.studio-field-footer,.studio-field-footer .field-footer{color:var(--text-tertiary);font-size:var(--font-size-caption);justify-content:space-between;align-items:center;gap:12px;display:flex}.create-shell[data-editing=true] .create-workbench{grid-template-columns:minmax(0,1fr);max-width:1080px}.create-shell[data-editing=true] .create-stage{grid-column:1}.create-shell[data-editing=true] .quick-create{max-width:980px;margin-inline:auto}.chat-run-error{border-radius:var(--radius-inset);background:var(--danger-soft);max-width:760px;color:var(--text);grid-template-columns:28px minmax(0,1fr);gap:10px;padding:14px;display:grid}.chat-run-error-icon{border-radius:var(--radius-chip);width:28px;height:28px;color:var(--danger);background:var(--surface);place-items:center;display:grid}.chat-run-error-icon svg{width:17px;height:17px}.chat-run-error-copy,.chat-run-error-copy>strong,.chat-run-error-copy>p{min-width:0;margin:0}.chat-run-error-copy>p{color:var(--text-secondary);margin-top:4px}.chat-run-error-actions{gap:8px;margin-top:12px;display:flex}.chat-run-error-detail{color:var(--text-tertiary);margin-top:10px}.chat-run-error-detail summary{cursor:pointer;width:fit-content;font-size:var(--font-size-caption)}.chat-run-error-detail pre{border-radius:var(--radius-control);background:var(--code-bg);max-height:180px;color:var(--code-text);white-space:pre-wrap;word-break:break-word;margin:8px 0 0;padding:10px;overflow:auto}.chat-model-trigger.missing{color:var(--warning-deep);background:var(--warning-soft)}.settings-layout{grid-template-columns:128px minmax(0,1fr);align-items:start;gap:24px;display:grid}.settings-section-nav{gap:4px;display:grid;position:sticky;top:0}.settings-section-nav button{min-height:36px;color:var(--text-secondary);text-align:left;background:0 0;padding:0 10px}.settings-section-nav button:hover,.settings-section-nav button.active{background:var(--accent-soft);color:var(--accent)}.settings-sections,.settings-group{min-width:0}.settings-group{scroll-margin-top:8px}.runtime-trend-empty{min-height:92px;color:var(--text-tertiary);text-align:center;place-content:center;gap:4px;display:grid}.runtime-trend-empty strong{color:var(--text);font-size:var(--font-size-control)}.runtime-status-summary{border-block:1px solid var(--border);background:var(--surface);grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:12px;display:grid;overflow:hidden}.runtime-status-summary>div{min-width:0;min-height:68px;padding:11px 16px 12px;position:relative}.runtime-status-summary>div+div{border-left:1px solid var(--border)}.runtime-status-summary .stat-label{color:var(--text-tertiary);font-size:var(--font-size-caption);display:block}.runtime-status-summary .stat-value{color:var(--text);margin-top:4px;font-size:20px}.runtime-status-summary [data-state=failed]{background:var(--danger-soft)}.runtime-status-summary [data-state=failed] .stat-value{color:var(--danger-deep)}.runtime-status-summary .text-button{position:absolute;bottom:12px;right:14px}.runtime-metric-summary{grid-template-columns:repeat(3,minmax(0,1fr))!important}.runtime-trend.is-empty{padding-bottom:10px}.runtime-trend.is-empty .runtime-trend-empty{min-height:58px}.runtime-resource-toolbar{margin-block:14px 10px}.table-data-body .section-toolbar{flex-wrap:wrap}.table-data-body .section-toolbar .search-field{flex:280px;min-width:240px}.runtime-resource-group>header .text-button{white-space:nowrap;align-items:center;gap:3px;margin-left:auto;display:inline-flex}.runtime-resource-group{background:0 0;border-radius:0;position:relative}.runtime-resource-group:before{content:"";background:var(--border);height:1px;position:absolute;inset:0 0 auto}@media (width>=1680px){.app-shell .page-container.runtime-resource-page{max-width:var(--studio-page-max,1760px)}.app-shell .create-shell[data-layout=document],.app-shell .create-shell[data-layout=workbench][data-authoring-mode=conversation]{max-width:1480px}.create-shell .create-workbench,.create-shell[data-layout=workbench] .create-workbench{max-width:88rem}}.capability-empty-state{border-radius:var(--radius-inset);background:var(--surface-subtle);min-height:104px;color:var(--text-secondary);justify-content:space-between;align-items:center;gap:16px;padding:16px;display:flex}.build-progress,.build-artifact,.build-log{margin-top:12px}.build-workspace{grid-template-columns:minmax(0,1fr);gap:0}.stat-strip.build-summary{background:0 0;grid-template-columns:repeat(5,minmax(0,1fr));width:100%;padding:0}.stat-strip.build-summary>div{border-radius:var(--radius-card);background:var(--surface);padding:16px 18px}.build-stage-list{grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin:20px 0 0;padding:0;list-style:none;display:grid}.build-stage-list li{grid-template-columns:30px minmax(0,1fr);gap:8px;min-width:0;padding-right:14px;display:grid;position:relative}.build-stage-list li:not(:last-child):after{content:"";background:var(--border);height:1px;position:absolute;top:14px;left:28px;right:0}.build-stage-icon{z-index:1;border-radius:var(--radius-chip);width:28px;height:28px;color:var(--text-tertiary);background:var(--surface-subtle);place-items:center;display:grid;position:relative}.build-stage-list li[data-state=completed] .build-stage-icon{color:var(--success-deep);background:var(--success-soft)}.build-stage-list li[data-state=active] .build-stage-icon{color:var(--accent);background:var(--accent-soft)}.build-stage-list li[data-state=failed] .build-stage-icon{color:var(--danger);background:var(--danger-soft)}.build-stage-list strong,.build-stage-list small{display:block}.build-stage-list strong{color:var(--text);font-size:var(--font-size-control)}.build-stage-list small{color:var(--text-tertiary);margin-top:3px;line-height:1.45}.build-artifact-grid{gap:2px;margin:16px 0 0;display:grid}.build-artifact-grid>div{border-radius:var(--radius-control);grid-template-columns:150px minmax(0,1fr);align-items:center;min-width:0;min-height:44px;padding:0 10px;display:grid}.build-artifact-grid>div:hover{background:var(--surface-subtle)}.build-artifact-grid dt{color:var(--text-tertiary)}.build-artifact-grid dd{justify-content:space-between;align-items:center;gap:8px;min-width:0;margin:0;display:flex}.build-artifact-grid code{min-width:0;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}details.build-log{padding:0;overflow:hidden}details.build-log>summary{cursor:pointer;min-height:48px;color:var(--text-secondary);justify-content:space-between;align-items:center;gap:12px;padding:0 16px;display:flex}details.build-log>summary small{color:var(--text-tertiary)}details.build-log>pre{min-height:220px;max-height:420px}.pipeline-node-card>span:last-child,.pipeline-node-card strong,.pipeline-node-card small{min-width:0}.pipeline-node-card strong,.pipeline-node-card small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (width<=1023px){.create-shell .create-workbench,.create-shell[data-layout=workbench] .create-workbench{grid-template-columns:minmax(0,1fr);max-width:none}.create-shell .create-stage,.create-shell[data-layout=workbench] .create-stage{grid-column:1}.global-header{min-height:70px;padding-inline:16px}.header-actions{scrollbar-width:none;max-width:calc(100% - 210px);overflow-x:auto}.header-actions::-webkit-scrollbar{display:none}.header-identity,.header-identity-inline{max-width:200px}.header-search-field{width:176px}.header-agent-selector,.header-identity-inline .mono{display:none}.build-stage-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 0}.stat-strip.build-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.build-stage-list li:nth-child(2):after{display:none}}@media (width<=760px){.settings-layout{grid-template-columns:minmax(0,1fr)}.settings-section-nav{grid-template-columns:repeat(5,max-content);position:static;overflow-x:auto}.settings-section-nav button{text-align:center}.capability-empty-state{flex-direction:column;align-items:flex-start}}.create-shell[data-editing=true] .quick-create{grid-template-columns:minmax(0,1fr) 340px;gap:20px;width:100%;max-width:1080px;padding:28px 32px 56px}.create-shell[data-editing=true] .quick-create>*,.create-shell[data-editing=true] .quick-create-form,.create-shell[data-editing=true] .manifest-preview{min-width:0}.agent-appearance-editor{grid-template-columns:minmax(190px,.8fr) minmax(0,1.2fr);align-items:start}.agent-appearance-preview span{overflow-wrap:anywhere}.agent-appearance-actions{grid-column:1/-1;justify-content:flex-start}.stat-strip .stat-foot{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}@media (width<=1500px){.create-shell[data-editing=true] .quick-create{grid-template-columns:minmax(0,1fr);max-width:920px}.create-shell[data-editing=true] .manifest-preview{position:static}.create-shell[data-editing=true] .manifest-preview>.code-viewer{min-height:280px;max-height:420px}}@media (width<=1180px){.stat-strip,.stat-strip.build-summary,.observability-page .stat-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.two-columns,.agent-appearance-editor{grid-template-columns:minmax(0,1fr)}.agent-appearance-actions{grid-column:1}}:root{--radius-block:16px;--radius-card:14px;--radius-inset:12px;--radius-chip:8px;--studio-outline-surface:var(--border-card);--studio-outline-inset:var(--border)}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 58%, transparent);outline-offset:2px}.page-header-actions,.page-header-tools{align-items:center;gap:8px;display:flex}.page-header-actions{margin-left:8px}.delivery-page{width:min(100%, var(--studio-page-max,1760px));max-width:var(--studio-page-max,1760px);min-width:0;margin:0 auto;padding:24px 28px 32px}.delivery-page[data-layout=document]{overflow:visible}.delivery-intro{justify-content:space-between;align-items:end;gap:20px;margin:0 0 18px;display:flex}.delivery-intro h1,.delivery-intro h2,.delivery-block h2{color:var(--text);font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);margin:0}.delivery-intro p,.delivery-block p{color:var(--text-tertiary);font-size:var(--font-size-meta);margin:6px 0 0}.delivery-block,.delivery-empty-state{border-radius:var(--radius-block);background:var(--surface);outline:1px solid var(--studio-outline-surface);outline-offset:-1px}.delivery-block{padding:20px}.delivery-block+.delivery-block{margin-top:16px}.delivery-stat-strip{border-radius:var(--radius-card);background:var(--surface);outline:1px solid var(--studio-outline-surface);outline-offset:-1px;grid-template-columns:repeat(4,minmax(0,1fr));display:grid;overflow:hidden}.delivery-stat-strip>div{min-width:0;padding:16px}.delivery-stat-strip>div+div{outline:1px solid var(--studio-outline-inset);outline-offset:-1px}.delivery-stat-strip .stat-label,.delivery-stat-strip small{color:var(--text-tertiary);font-size:var(--font-size-caption);display:block}.delivery-stat-strip strong{color:var(--text);font-size:var(--font-size-card-metric);text-overflow:ellipsis;white-space:nowrap;margin-top:6px;display:block;overflow:hidden}.delivery-stat-strip.compact-delivery-summary>div{min-height:72px;padding:12px 16px 13px}.delivery-stat-strip.compact-delivery-summary strong{margin-top:3px;font-size:20px}.delivery-next-step{border-left:3px solid var(--border-strong);border-radius:var(--radius-control);background:var(--surface-subtle);justify-content:space-between;align-items:center;gap:20px;margin-top:16px;padding:14px 16px;display:flex}.delivery-next-step[data-state=ready]{border-left-color:var(--success);background:var(--success-soft)}.delivery-next-step[data-state=failed]{border-left-color:var(--danger);background:var(--danger-soft)}.delivery-next-step span,.delivery-next-step strong{display:block}.delivery-next-step span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.delivery-next-step strong{color:var(--text);font-size:var(--font-size-body);margin-top:3px}.delivery-detail-disclosure{margin-top:16px}.delivery-detail-disclosure>summary{cursor:pointer;color:var(--text-secondary);font-size:var(--font-size-body);font-weight:var(--font-weight-medium)}.delivery-detail-disclosure .delivery-fact-chain{grid-template-columns:repeat(2,minmax(0,1fr))}.delivery-section-heading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;display:flex}.delivery-section-heading>span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.delivery-fact-chain{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;display:grid}.delivery-fact-step{border-radius:var(--radius-inset);background:var(--surface-subtle);outline:1px solid var(--studio-outline-inset);outline-offset:-1px;min-width:0;padding:14px}.delivery-fact-step[data-state=ready]{background:var(--success-soft)}.delivery-fact-step[data-state=failed]{background:var(--danger-soft)}.delivery-fact-step[data-state=pending]{background:var(--warning-soft)}.delivery-fact-step span,.delivery-fact-step code{color:var(--text-tertiary);font-size:var(--font-size-caption);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.delivery-fact-step strong{color:var(--text);font-size:var(--font-size-body);margin:4px 0;display:block}.delivery-status-badge{border-radius:var(--radius-chip);background:var(--surface-subtle);min-height:24px;color:var(--text-secondary);font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);align-items:center;padding:2px 8px;display:inline-flex}.delivery-status-badge[data-state=ready]{background:var(--success-soft);color:var(--success)}.delivery-status-badge[data-state=failed]{background:var(--danger-soft);color:var(--danger)}.delivery-status-badge[data-state=pending]{background:var(--warning-soft);color:var(--warning-text)}.delivery-empty-state{justify-items:start;gap:8px;padding:28px;display:grid}.delivery-empty-state h2{color:var(--text);font-size:var(--font-size-card-metric);margin:0}.delivery-empty-state p{color:var(--text-tertiary);margin:0}.delivery-empty-actions{flex-wrap:wrap;gap:8px;margin-top:4px;display:flex}.delivery-table-scroll{border-radius:var(--radius-inset);outline:1px solid var(--studio-outline-inset);outline-offset:-1px;margin-top:16px;overflow-x:auto}.delivery-table{table-layout:fixed;border-collapse:collapse;background:var(--surface);width:100%;min-width:820px;font-size:var(--font-size-meta)}.delivery-table th,.delivery-table td{border-bottom:1px solid var(--studio-outline-inset);color:var(--text-secondary);text-align:left;vertical-align:middle;padding:12px 14px}.delivery-table th{color:var(--text-tertiary);font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);letter-spacing:.02em}.delivery-table tbody tr:last-child td{border-bottom:0}.delivery-table td code{color:var(--text);font-size:var(--font-size-caption)}.delivery-table td small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:3px;display:block}.delivery-row-actions{white-space:nowrap;justify-content:flex-end;gap:6px;display:flex}.delivery-table th:first-child{width:25%}.delivery-table th:nth-child(2){width:11%}.delivery-table th:nth-child(3){width:16%}.delivery-table th:nth-child(4){width:15%}.delivery-table th:nth-child(5){width:19%}.delivery-table th:last-child{width:14%}.delivery-updated-at{color:var(--text-tertiary);font-size:var(--font-size-caption);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.delivery-agent-identity{min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;gap:3px;padding:0;display:grid}.delivery-agent-identity:hover strong{color:var(--accent)}.delivery-agent-identity:focus-visible{border-radius:var(--radius-control);outline:2px solid var(--accent);outline-offset:3px}.delivery-agent-identity strong,.delivery-agent-identity code{text-overflow:ellipsis;white-space:nowrap;max-width:280px;overflow:hidden}.delivery-agent-identity strong{color:var(--text)}.deployment-detail-heading{align-items:center;gap:10px;display:flex}.deployment-version-history{gap:12px;margin-top:22px;display:grid}.deployment-version-history h3,.deployment-version-history p{margin:0}.deployment-version-history p{color:var(--text-tertiary);font-size:var(--font-size-meta)}.deployment-version-list{border:1px solid var(--border);border-radius:var(--radius-inset);background:var(--surface);width:100%;min-width:0;max-width:100%;max-height:430px;display:grid;overflow:hidden auto}.deployment-version-header,.deployment-version-option{text-align:left;grid-template-columns:minmax(96px,1fr) 88px 64px minmax(136px,auto);align-items:center;column-gap:16px;width:100%;min-width:0;padding:8px 12px;display:grid}.deployment-version-header{z-index:1;border-bottom:1px solid var(--border);min-height:34px;color:var(--text-tertiary);background:var(--surface-subtle);font-size:var(--font-size-caption);position:sticky;top:0}.deployment-version-option{border:0;border-bottom:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:0;outline:0;min-height:44px}.deployment-version-option:last-child{border-bottom:0}.deployment-version-option:hover:not(:disabled){background:var(--surface-hover)}.deployment-version-option[data-selected=true]{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.deployment-version-option[data-current=true]{cursor:default;background:var(--surface-subtle)}.deployment-version-option:disabled{opacity:1}.deployment-version-name{min-width:0;color:var(--text);font-size:var(--font-size-meta);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.deployment-version-state,.deployment-version-traffic,.deployment-version-time{min-width:0;color:var(--text-tertiary);font-size:var(--font-size-caption);white-space:nowrap}.deployment-version-state[data-state=current]{color:var(--success-deep)}.deployment-version-state[data-state=available]{color:var(--accent-strong)}.deployment-version-time{text-overflow:ellipsis;overflow:hidden}.deployment-version-empty{padding:14px 12px}.more-actions-menu{border-radius:var(--radius-inset);background:var(--surface);outline:1px solid var(--studio-outline-surface);outline-offset:-1px;min-width:176px;padding:4px}.more-actions-item{border-radius:var(--radius-chip);min-height:34px;color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-meta);outline:none;align-items:center;padding:0 10px;display:flex}.more-actions-item[data-highlighted]{background:var(--surface-subtle);color:var(--text)}.more-actions-item.danger{color:var(--danger)}.more-actions-item[data-disabled]{cursor:not-allowed;opacity:.45}.more-actions-separator{background:var(--border);height:1px;margin:4px 2px}@media (width<=900px){.delivery-page{padding:20px}.delivery-stat-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.delivery-fact-chain{grid-template-columns:1fr}}@media (width<=1180px){.stat-strip.compact-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-strip.compact-summary>:nth-child(odd){border-left:0}.stat-strip.compact-summary>:nth-child(n+3){border-top:1px solid var(--border)}.stat-strip.compact-summary.runtime-metric-summary{grid-template-columns:repeat(3,minmax(0,1fr))!important}.stat-strip.compact-summary.runtime-metric-summary>*{border-top:0}.stat-strip.compact-summary.runtime-metric-summary>:not(:first-child){border-left:1px solid var(--border)}}@media (width<=620px){.delivery-page{padding:16px}.delivery-intro{flex-direction:column;align-items:start}.delivery-stat-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.delivery-next-step{flex-direction:column;align-items:flex-start}.page-header-actions{max-width:100%;overflow-x:auto}.runtime-status-summary{grid-template-columns:1fr}.runtime-status-summary>div+div{border-top:1px solid var(--border);border-left:0}.stat-strip.compact-summary,.stat-strip.compact-summary.runtime-metric-summary{grid-template-columns:repeat(2,minmax(0,1fr))!important}.stat-strip.compact-summary.runtime-metric-summary>:last-child{border-top:1px solid var(--border);border-left:0;grid-column:1/-1}.compact-status-alert{flex-direction:column;align-items:flex-start;gap:3px}.table-data-body .section-toolbar{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.table-data-body .section-toolbar .search-field{grid-column:1/-1;width:100%;min-width:0}.table-data-body .section-toolbar .compact-select{width:100%;min-width:0}}.observability-overview:not(.has-trend){grid-template-columns:minmax(0,1fr)}@media (width<=620px){.overview-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));padding:0}.overview-metric-card{min-height:68px;padding:10px 12px}.overview-metric-card:nth-child(odd){border-left:0}.overview-metric-card:nth-child(n+3){border-top:1px solid var(--border)}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.chat-wrap{flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.chat-host{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.chat-host>*{min-width:0;min-height:0}.chat-agent-empty{margin:auto}.studio-chat-shell{background:var(--surface);grid-template-columns:232px minmax(0,1fr);width:100%;min-width:0;height:100%;min-height:0;display:grid;overflow:hidden}.chat-session-sidebar{border-right:1px solid color-mix(in srgb, var(--border) 66%, transparent);background:var(--surface);grid-template-rows:48px auto minmax(0,1fr);min-width:0;min-height:0;display:grid;overflow:hidden}.chat-session-header,.chat-conversation-header{border-bottom:1px solid color-mix(in srgb, var(--border) 62%, transparent);align-items:center;gap:8px;min-width:0;height:48px;padding:0 12px;display:flex}.chat-session-header{border-bottom-color:#0000}.chat-session-header>div,.chat-conversation-header>div{flex:1;min-width:0}.chat-session-header strong,.chat-session-header span,.chat-conversation-header strong,.chat-conversation-header span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.chat-session-header strong,.chat-conversation-header strong{color:var(--text);font-size:var(--font-size-body);font-weight:var(--font-weight-medium)}.chat-session-header span,.chat-conversation-header span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.chat-session-search{padding:2px 8px 5px}.chat-session-search input{border-radius:var(--radius-control);background:color-mix(in srgb, var(--surface-subtle) 72%, var(--surface));width:100%;height:30px;font-size:var(--font-size-meta);border-color:#0000;padding:0 9px}.chat-session-search input:focus{border-color:var(--accent-border);background:var(--surface)}.chat-session-list{overscroll-behavior:contain;min-height:0;padding:2px 7px 14px;overflow-y:auto}.chat-session-item{min-width:0;min-height:34px;color:var(--text-secondary);transition:color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);border-radius:7px;margin-bottom:1px;display:block;position:relative}.chat-session-item:hover,.chat-session-item:focus-within{color:var(--text);background:var(--hover)}.chat-session-item.active{color:var(--text);background:color-mix(in srgb, var(--text) 6%, var(--surface))}.chat-session-item.running:not(.active){background:color-mix(in srgb, var(--accent) 4%, var(--surface))}.chat-session-main{width:100%;min-width:0;min-height:34px;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:0 9px;display:grid}.chat-session-main strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--font-size-meta);font-weight:var(--font-weight-regular);display:block;overflow:hidden}.chat-session-main .session-status{border:1px solid color-mix(in srgb, var(--text-tertiary) 72%, transparent);width:6px;height:6px;transition:opacity var(--motion-fast) var(--ease);background:0 0;border-radius:50%;margin:0}.chat-session-main .session-status.running{border-color:var(--accent);background:0 0;border-top-color:#0000;animation:.8s linear infinite chat-running-ring}.chat-session-main .session-status.failed{border-color:var(--danger);background:var(--danger)}.chat-session-main .session-status.paused{border-color:var(--warning);background:0 0}.chat-session-main .session-status.waiting_input{border-color:var(--warning);background:var(--warning)}.chat-session-delete{width:26px;height:26px;color:var(--text-tertiary);cursor:pointer;opacity:0;transition:opacity var(--motion-fast) var(--ease), transform var(--motion-fast) var(--ease);background:0 0;border:0;border-radius:7px;place-items:center;padding:0;display:grid;position:absolute;top:50%;right:7px;transform:translateY(-50%)scale(.92)}.chat-session-item:hover .chat-session-delete,.chat-session-item:focus-within .chat-session-delete{opacity:1;transform:translateY(-50%)scale(1)}.chat-session-delete:hover{color:var(--danger);background:var(--danger-soft)}.chat-session-delete:disabled{display:none}.chat-list-loading,.chat-sidebar-empty{color:var(--text-tertiary);font-size:var(--font-size-meta);align-items:center;gap:8px;margin:16px;display:flex}.chat-sidebar-empty{line-height:1.55;display:block}.cloud-chat-shell .message-content>:first-child{margin-top:0}.cloud-chat-shell .message-content>:last-child{margin-bottom:0}.cloud-chat-shell .message.pending{opacity:.72}.cloud-chat-pending{color:var(--text-secondary);font-size:var(--font-size-meta);align-items:center;gap:8px;padding:8px 12px;display:flex}.chat-list-loading svg{animation:1.2s ease-in-out infinite chat-running-pulse}@keyframes agentkit-spin{to{transform:rotate(360deg)}}.animate-spin{transform-origin:50%;animation:.8s linear infinite agentkit-spin!important}.cloud-chat-run-warning{border:1px solid color-mix(in srgb, var(--warning) 44%, var(--border));border-radius:var(--radius-md);max-width:800px;color:var(--warning-deep);background:var(--warning-soft);font-size:var(--font-size-meta);align-items:center;gap:7px;margin:0 auto 12px;padding:9px 11px;display:flex}.cloud-chat-run-warning svg{flex:none}.cloud-interaction-card{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);justify-content:space-between;align-items:center;gap:16px;margin-top:10px;padding:12px 14px;display:flex}.cloud-interaction-card>div:first-child{gap:3px;min-width:0;display:grid}.cloud-interaction-card strong{font-size:var(--font-size-meta)}.cloud-interaction-card span{color:var(--text-secondary);font-size:var(--font-size-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cloud-interaction-actions{flex:none;gap:8px;display:flex}.cloud-interaction-actions button{align-items:center;gap:5px;display:inline-flex}.chat-conversation{background:var(--surface);grid-template-rows:48px minmax(0,1fr) auto;min-width:0;min-height:0;display:grid;overflow:hidden}.chat-conversation-header{background:var(--surface);padding:0 20px}.agent-avatar.small{flex:none;width:30px;height:30px}.chat-message-list{overscroll-behavior:contain;min-width:0;min-height:0;padding:26px max(24px,50% - 384px) 18px;scroll-padding-bottom:24px;overflow:hidden auto}.chat-message-list .message{width:100%;max-width:768px;margin:0 auto 26px}.chat-message-list .message-meta{margin-bottom:6px}.chat-message-list .message.user .message-meta{justify-content:flex-end}.chat-message-list .message.user .message-content{width:fit-content;max-width:min(78%,600px);color:var(--text);background:var(--surface-subtle);border:0;border-radius:16px 16px 5px;margin-left:auto;padding:9px 13px}.chat-message-list .message.assistant .message-content{color:var(--text);padding:0}.chat-message-list .message.assistant.error .message-content{border:1px solid color-mix(in srgb, var(--danger) 35%, transparent);border-radius:var(--radius-control);color:var(--danger);background:var(--danger-soft);padding:10px 12px}.chat-empty{width:min(620px,100%);min-height:100%;color:var(--text-secondary);text-align:center;align-content:center;place-items:center;gap:10px;margin:0 auto;display:grid}.chat-empty-icon{width:40px;height:40px;color:var(--text-secondary);background:var(--surface-subtle);border-radius:12px;place-items:center;display:grid}.chat-empty h2{color:var(--text);font-size:var(--font-size-section-title);font-weight:var(--font-weight-medium);margin:0}.chat-empty p{max-width:520px;color:var(--text-tertiary);font-size:var(--font-size-meta);line-height:var(--line-height-body);margin:0 0 12px}.chat-empty .suggestion-list button{background:var(--surface-subtle);border-color:#0000}.chat-empty .suggestion-list button:hover{border-color:var(--border);color:var(--text);background:var(--hover)}.chat-markdown{min-width:0;color:var(--text);font-size:var(--font-size-body);line-height:var(--line-height-editor);overflow-wrap:anywhere}.chat-markdown>:first-child{margin-top:0}.chat-markdown>:last-child{margin-bottom:0}.chat-markdown p,.chat-markdown ul,.chat-markdown ol,.chat-markdown blockquote,.chat-markdown pre,.chat-markdown table{margin:0 0 12px}.chat-markdown ul,.chat-markdown ol{padding-left:22px}.chat-markdown li+li{margin-top:4px}.chat-markdown h1,.chat-markdown h2,.chat-markdown h3{color:var(--text);font-weight:var(--font-weight-semibold);line-height:var(--line-height-title);margin:20px 0 8px}.chat-markdown h1{font-size:var(--font-size-section-title)}.chat-markdown h2,.chat-markdown h3{font-size:var(--font-size-subtitle)}.chat-markdown a{color:var(--accent);text-underline-offset:2px}.chat-markdown code{color:var(--code-text);background:var(--code-bg);font-family:var(--font-mono);font-size:var(--font-size-meta);border-radius:4px;padding:1px 4px}.chat-markdown pre{background:var(--code-bg);border-radius:10px;max-width:100%;padding:12px 14px;overflow:auto}.chat-markdown pre code{background:0 0;padding:0}.chat-markdown table{border-collapse:collapse;max-width:100%;display:block;overflow-x:auto}.chat-markdown th,.chat-markdown td{border:1px solid var(--border);text-align:left;padding:6px 9px}.chat-markdown blockquote{border-left:2px solid var(--border-strong);color:var(--text-secondary);padding-left:12px}.chat-markdown.streaming>:last-child:after{content:"";vertical-align:-.12em;background:var(--accent);border-radius:2px;width:2px;height:1em;margin-left:3px;animation:.9s steps(2,end) infinite chat-stream-caret;display:inline-block}.streaming-turn{animation:chat-message-enter .18s var(--ease)}.chat-processing-group{color:var(--text-tertiary);font-size:var(--font-size-meta);margin:0 0 10px}.chat-processing-group>summary{cursor:pointer;border-radius:6px;align-items:center;gap:6px;width:fit-content;max-width:100%;min-height:28px;padding:2px 4px;list-style:none;display:flex}.chat-processing-group>summary::-webkit-details-marker{display:none}.chat-activity-card>summary::-webkit-details-marker{display:none}.chat-processing-group>summary:hover{color:var(--text-secondary);background:var(--hover)}.chat-processing-group>summary>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.chat-processing-icon{flex:none}.details-chevron{transition:transform var(--motion-fast) var(--ease);flex:none}details[open]>summary .details-chevron{transform:rotate(180deg)}.chat-processing-content{border-left:1px solid var(--border);max-width:720px;margin:4px 0 2px 10px;padding-left:12px}.chat-reasoning-content{color:var(--text-secondary);font-size:var(--font-size-meta);line-height:var(--line-height-body);white-space:pre-wrap;padding:5px 0 9px}.chat-activity-card{color:var(--text-secondary);font-size:var(--font-size-meta)}.chat-activity-card>summary,.chat-activity-row{cursor:pointer;border-radius:6px;align-items:center;gap:7px;min-height:30px;padding:3px 4px;list-style:none;display:flex}.chat-activity-row{cursor:default}.chat-activity-icon{flex:none;place-items:center;width:18px;display:grid}.chat-activity-copy{flex:1;align-items:baseline;gap:6px;min-width:0;display:flex}.chat-activity-copy small{color:var(--text-tertiary);font-size:var(--font-size-caption)}.chat-activity-copy strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:var(--font-weight-regular);overflow:hidden}.chat-activity-status{color:var(--text-tertiary);font-size:var(--font-size-caption);flex:none}.chat-activity-status.failed{color:var(--danger)}.chat-activity-status.waiting{color:var(--warning)}.chat-activity-card pre{max-height:220px;color:var(--code-text);background:var(--code-bg);font-family:var(--font-mono);font-size:var(--font-size-caption);line-height:var(--line-height-control);white-space:pre-wrap;border-radius:8px;margin:4px 4px 8px 29px;padding:9px 10px;overflow:auto}.chat-activity-loading{color:var(--text-tertiary);font-size:var(--font-size-caption);align-items:center;gap:6px;margin-bottom:8px;display:inline-flex}.chat-composer-wrap{background:var(--surface);border-top:0;padding:10px max(24px,50% - 400px) 8px}.chat-pending-interactions{border:1px solid color-mix(in srgb, var(--accent-border) 62%, var(--border));background:color-mix(in srgb, var(--accent-soft) 42%, var(--surface));border-radius:12px;max-width:800px;margin:0 auto 10px;padding:10px;box-shadow:0 8px 24px #18589b14}.chat-pending-interactions-heading{color:var(--text);align-items:center;gap:7px;margin:0 2px 8px;display:flex}.chat-pending-interactions-heading svg{color:var(--accent)}.chat-pending-interactions-heading span{color:var(--text-secondary);font-size:var(--font-size-caption)}.runtime-mode-bar{border:1px solid var(--border);width:min(800px,100%);min-height:42px;color:var(--text-secondary);background:color-mix(in srgb, var(--surface) 96%, transparent);border-radius:14px;align-items:center;gap:9px;margin:0 auto 7px;padding:6px 7px 6px 11px;display:flex;box-shadow:0 2px 7px #0000000a}.runtime-mode-bar.goal{border-color:color-mix(in srgb, var(--accent) 24%, var(--border))}.runtime-mode-bar.paused{background:var(--surface-subtle)}.runtime-mode-icon{width:25px;height:25px;color:var(--accent-strong);background:var(--accent-soft);border-radius:8px;flex:none;place-items:center;display:grid}.runtime-mode-copy{flex:1;min-width:0}.runtime-mode-copy>span{align-items:baseline;gap:6px;min-width:0;display:flex}.runtime-mode-copy strong{color:var(--text);font-size:var(--font-size-meta);font-weight:var(--font-weight-medium);flex:none}.runtime-mode-copy span span{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--font-size-meta);overflow:hidden}.runtime-mode-copy small{color:var(--text-tertiary);font-size:var(--font-size-caption);align-items:center;gap:3px;margin-top:1px;display:flex}.runtime-mode-actions{align-items:center;gap:2px;display:flex}.runtime-mode-actions button{width:29px;height:29px;color:var(--text-secondary);background:0 0;border:0;border-radius:9px;place-items:center;padding:0;display:grid}.runtime-mode-actions button:hover{color:var(--text);background:var(--surface-hover)}.runtime-mode-actions button:focus-visible{box-shadow:var(--shadow-focus-subtle);outline:none}.chat-composer{border:1px solid var(--border);background:color-mix(in srgb, var(--surface) 94%, transparent);max-width:800px;transition:border-color var(--motion-fast) var(--ease), box-shadow var(--motion-fast) var(--ease);border-radius:16px;margin:0 auto;position:relative;overflow:visible;box-shadow:0 2px 7px #0000000f}.composer-file-input{opacity:0;pointer-events:none;width:1px;height:1px;position:fixed}.chat-attachment-list{gap:7px;padding:9px 10px 2px;display:flex;overflow-x:auto}.chat-attachment-chip{border:1px solid var(--border);background:var(--surface-subtle);border-radius:10px;grid-template-columns:34px minmax(0,1fr) 22px;align-items:center;gap:7px;min-width:0;max-width:210px;padding:5px 5px 5px 6px;display:grid;position:relative}.chat-attachment-chip img,.chat-attachment-icon{width:34px;height:34px;color:var(--text-secondary);background:var(--surface);object-fit:cover;border-radius:7px;place-items:center;display:grid}.chat-attachment-copy{min-width:0}.chat-attachment-copy strong,.chat-attachment-copy small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.chat-attachment-copy strong{color:var(--text);font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.chat-attachment-copy small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:1px}.chat-attachment-chip>button{width:22px;height:22px;color:var(--text-tertiary);background:0 0;border:0;border-radius:6px;place-items:center;padding:0;display:grid}.chat-attachment-chip>button:hover{color:var(--text);background:var(--surface-hover)}.chat-composer textarea{width:100%;min-height:42px;max-height:160px;color:var(--text);box-shadow:none;resize:none;background:0 0;border:0;border-radius:0;padding:11px 13px 4px;overflow-y:auto}.chat-composer textarea:hover,.chat-composer textarea:focus{box-shadow:none;border:0}.chat-composer-footer{align-items:center;gap:7px;min-height:34px;padding:1px 6px 6px 10px;display:flex}.chat-plus-trigger,.chat-mode-chip{height:28px;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;display:inline-flex}.chat-plus-trigger{border-radius:9px;width:28px;padding:0}.chat-mode-chip{color:var(--accent-strong);background:var(--accent-soft);font-size:var(--font-size-meta);border-radius:9px;gap:5px;padding:0 8px}.chat-plus-trigger:hover,.chat-plus-trigger[data-state=open]{color:var(--text);background:var(--surface-subtle)}.chat-plus-trigger:focus-visible,.chat-mode-chip:focus-visible{box-shadow:var(--shadow-focus-subtle);outline:none}.composer-action-menu{z-index:1250;border:1px solid var(--border-strong);width:min(310px,100vw - 24px);color:var(--text);background:var(--surface);box-shadow:var(--shadow-overlay);transform-origin:var(--radix-dropdown-menu-content-transform-origin);animation:chat-approval-menu-enter .15s var(--ease);border-radius:14px;padding:7px}.composer-action-heading{color:var(--text-tertiary);font-size:var(--font-size-caption);padding:5px 9px;display:block}.composer-action-item{cursor:pointer;border-radius:9px;outline:none;grid-template-columns:22px minmax(0,1fr) 18px;align-items:center;gap:9px;min-height:48px;padding:6px 9px;display:grid}.composer-action-item[data-highlighted]{background:var(--surface-subtle)}.composer-action-item>span{min-width:0}.composer-action-item strong,.composer-action-item small{display:block}.composer-action-item strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.composer-action-item small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.composer-action-check{color:var(--accent)}.composer-action-separator{background:var(--border);height:1px;margin:5px 7px}.composer-command-menu{z-index:100;border:1px solid var(--border-strong);width:min(520px,100%);color:var(--text);background:var(--surface);box-shadow:var(--shadow-overlay);animation:chat-approval-menu-enter .14s var(--ease);border-radius:14px;padding:7px;position:absolute;bottom:calc(100% + 9px);left:0}.composer-command-menu [cmdk-list]{gap:2px;display:grid}.composer-command-menu [cmdk-item]{cursor:pointer;border-radius:9px;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:50px;padding:6px 9px;display:grid}.composer-command-menu [cmdk-item][data-active=true],.composer-command-menu [cmdk-item][data-selected=true]{background:var(--surface-subtle)}.composer-command-menu [cmdk-item]>span{min-width:0}.composer-command-menu strong,.composer-command-menu small{display:block}.composer-command-menu strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.composer-command-menu small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.composer-command-menu kbd{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption)}.chat-approval-trigger{height:28px;color:var(--text-secondary);font-size:var(--font-size-meta);cursor:pointer;transition:color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);background:0 0;border:0;border-radius:9px;flex:none;align-items:center;gap:6px;padding:0 8px;display:inline-flex}.chat-approval-trigger:hover,.chat-approval-trigger[data-state=open]{color:var(--text);background:var(--surface-subtle)}.chat-approval-trigger:focus-visible{box-shadow:var(--shadow-focus-subtle);outline:none}.chat-approval-trigger.full{color:var(--danger)}.chat-composer-spacer{flex:1;min-width:8px}.chat-model-trigger{min-width:0;max-width:200px;height:28px;color:var(--text-secondary);font-size:var(--font-size-meta);cursor:pointer;background:0 0;border:0;border-radius:9px;align-items:center;gap:5px;padding:0 7px;display:inline-flex}.chat-model-trigger span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.chat-model-trigger:hover,.chat-model-trigger[data-state=open]{color:var(--text);background:color-mix(in srgb, var(--text) 5%, transparent)}.chat-model-trigger:disabled{opacity:.72;cursor:default}.chat-context-ring{border-radius:var(--radius-circle);width:25px;height:25px;color:var(--text-secondary);cursor:help;outline:none;flex:none;place-items:center;display:grid;position:relative}.chat-context-ring:focus-visible{box-shadow:var(--shadow-focus-subtle)}.chat-context-ring svg{width:23px;height:23px;transform:rotate(-90deg)}.chat-context-track,.chat-context-value{fill:none;stroke-width:2.25px}.chat-context-track{stroke:color-mix(in srgb, var(--text-tertiary) 24%, transparent)}.chat-context-value{stroke:currentColor}.chat-context-ring.unknown .chat-context-value{opacity:.55}.chat-context-tooltip{z-index:1300;border:1px solid var(--border-card);width:max-content;min-width:190px;max-width:min(270px,100vw - 32px);color:var(--text);background:var(--surface);box-shadow:var(--shadow-overlay);opacity:0;visibility:hidden;pointer-events:none;transform-origin:bottom;transition:opacity var(--motion-fast) var(--ease), transform var(--motion-fast) var(--ease), visibility var(--motion-fast) var(--ease);border-radius:12px;gap:3px;padding:11px 13px;display:grid;position:absolute;bottom:calc(100% + 10px);right:-54px;transform:translateY(4px)scale(.98)}.chat-context-tooltip:after{content:"";border-right:1px solid var(--border-card);border-bottom:1px solid var(--border-card);background:var(--surface);width:9px;height:9px;position:absolute;bottom:-5px;right:61px;transform:rotate(45deg)}.chat-context-tooltip>span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.chat-context-tooltip>strong{font-size:var(--font-size-subtitle);font-weight:var(--font-weight-semibold)}.chat-context-tooltip>small{color:var(--text-secondary);font-size:var(--font-size-meta);white-space:nowrap}.chat-context-ring:hover .chat-context-tooltip,.chat-context-ring:focus .chat-context-tooltip,.chat-context-ring:focus-within .chat-context-tooltip{opacity:1;visibility:visible;transform:translateY(0)scale(1)}.chat-model-menu{z-index:1200;border:1px solid var(--border);min-width:230px;max-width:min(360px,100vw - 24px);color:var(--text);background:color-mix(in srgb, var(--surface) 98%, transparent);box-shadow:var(--shadow-overlay);transform-origin:var(--radix-dropdown-menu-content-transform-origin);animation:chat-approval-menu-enter .15s var(--ease);border-radius:14px;padding:7px}.chat-model-menu-heading{color:var(--text-tertiary);font-size:var(--font-size-caption);padding:5px 9px 7px}.chat-model-option{cursor:pointer;min-height:36px;font-size:var(--font-size-control);border-radius:8px;outline:none;grid-template-columns:minmax(0,1fr) 18px;align-items:center;gap:12px;padding:0 9px;display:grid}.chat-model-option>span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chat-model-option[data-highlighted]{background:color-mix(in srgb, var(--text) 6%, transparent)}.chat-model-option[data-state=checked]{font-weight:var(--font-weight-medium)}.chat-model-option [data-radix-collection-item]{color:var(--text)}.chat-send-button{width:32px;height:32px;color:var(--surface);background:var(--text);cursor:pointer;transition:opacity var(--motion-fast) var(--ease), transform var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);border:0;border-radius:50%;flex:none;place-items:center;padding:0;display:grid}.chat-send-button:hover{opacity:.84;transform:scale(1.04)}.chat-send-button:disabled{opacity:.35;cursor:not-allowed}.chat-send-button.pause{color:var(--surface);background:var(--text);animation:chat-control-enter .16s var(--ease)}.chat-approval-menu{z-index:1200;border:1px solid var(--border-strong);width:min(420px,100vw - 24px);color:var(--text);background:color-mix(in srgb, var(--surface) 98%, transparent);box-shadow:var(--shadow-overlay);transform-origin:var(--radix-dropdown-menu-content-transform-origin);animation:chat-approval-menu-enter .15s var(--ease);border-radius:16px;padding:8px}.chat-approval-menu-heading{min-height:36px;color:var(--text-tertiary);font-size:var(--font-size-caption);justify-content:space-between;align-items:baseline;gap:16px;padding:4px 10px 8px;display:flex}.chat-approval-menu-heading strong{color:var(--text-secondary);font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.chat-approval-option{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:11px;outline:none;grid-template-columns:28px minmax(0,1fr) 22px;align-items:center;gap:8px;min-height:64px;padding:8px 10px;display:grid}.chat-approval-option[data-highlighted]{background:var(--surface-subtle)}.chat-approval-option[data-state=checked]{background:color-mix(in srgb, var(--accent-soft) 58%, var(--surface))}.chat-approval-option.full[data-state=checked]{background:color-mix(in srgb, var(--danger-soft) 64%, var(--surface))}.chat-approval-option-icon{color:var(--text-tertiary);align-self:start;place-items:center;padding-top:2px;display:grid}.chat-approval-option.full .chat-approval-option-icon,.chat-approval-option.full .chat-approval-option-copy strong,.chat-approval-option.full .chat-approval-indicator{color:var(--danger)}.chat-approval-option-copy{min-width:0}.chat-approval-option-copy strong,.chat-approval-option-copy small{display:block}.chat-approval-option-copy strong{color:var(--text);font-size:var(--font-size-control);font-weight:var(--font-weight-medium);margin-bottom:3px}.chat-approval-option-copy small{color:var(--text-tertiary);font-size:var(--font-size-caption);line-height:var(--line-height-body)}.chat-approval-indicator{color:var(--accent);place-items:center;display:grid}@keyframes chat-message-enter{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@keyframes chat-control-enter{0%{opacity:.55;transform:scale(.84)}to{opacity:1;transform:scale(1)}}@keyframes chat-stream-caret{0%,42%{opacity:1}43%,to{opacity:.2}}@keyframes chat-running-ring{to{transform:rotate(360deg)}}@keyframes chat-approval-menu-enter{0%{opacity:0;transform:translateY(4px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@media (width<=1023px){.studio-chat-shell{grid-template-columns:204px minmax(0,1fr)}.chat-session-header{padding:0 8px}.chat-message-list,.chat-composer-wrap{padding-left:18px;padding-right:18px}.chat-message-list .message.user .message-content{max-width:88%}}@media (width>=1920px){.studio-chat-shell{grid-template-columns:248px minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){.streaming-turn,.chat-send-button.pause,.chat-markdown.streaming>:last-child:after,.chat-session-main .session-status.running,.chat-approval-menu,.chat-model-menu{animation:none}}.inline-alert.success{border-color:var(--edge-border);background:var(--success-soft);color:var(--success)}.skill-selection-toolbar{color:var(--text-secondary);font-size:var(--font-size-meta);justify-content:space-between;align-items:center;gap:12px;margin-top:14px;display:flex}.skill-selection-actions{gap:6px;display:inline-flex}.skill-import-state{font-weight:var(--font-weight-medium);display:block}.skill-import-state.succeeded{color:var(--success)}.skill-import-state.failed{color:var(--danger)}.skill-import-state.pending{color:var(--accent-strong)}.chat-loading{color:var(--text-tertiary);font-size:var(--font-size-control);flex:1;justify-content:center;align-items:center;display:flex}.chat-run-panel{border-left:1px solid var(--border-card);background:var(--surface);flex-direction:column;flex-shrink:0;width:360px;height:100%;min-height:0;display:flex;overflow:hidden}.chat-run-head{border-bottom:1px solid var(--border-card);align-items:center;gap:6px;min-height:48px;padding:7px 12px 7px 16px;display:flex}.chat-run-title{font-size:var(--font-size-meta);font-weight:var(--font-weight-semibold);color:var(--text);align-items:center;gap:6px;display:inline-flex}.chat-run-head-spacer{flex:1}.chat-run-empty{font-size:var(--font-size-meta);color:var(--text-tertiary);line-height:var(--line-height-body);text-align:center;flex:1;justify-content:center;align-items:center;gap:8px;padding:32px 28px;display:flex}.chat-run-scroll{scrollbar-gutter:stable;flex:1;min-width:0;min-height:0;overflow-y:auto}.chat-run-overview{border-bottom:1px solid var(--border-card);background:linear-gradient(180deg, var(--surface-subtle), var(--surface));padding:16px}.chat-run-status-row{align-items:center;gap:10px;display:flex}.chat-run-state-icon{background:var(--surface);width:30px;height:30px;color:var(--text-tertiary);box-shadow:inset 0 0 0 1px var(--border-card);border-radius:9px;flex:none;place-items:center;display:grid}.chat-run-state-icon.running{color:var(--info)}.chat-run-state-icon.completed{color:var(--success)}.chat-run-state-icon.failed{color:var(--danger)}.chat-run-identity{flex:1;min-width:0}.chat-run-identity strong,.chat-run-identity span{display:block}.chat-run-identity strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-semibold);color:var(--text)}.chat-run-identity span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-micro);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;overflow:hidden}.chat-run-state{border-radius:var(--radius-pill);background:var(--surface);color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-nano);font-weight:var(--font-weight-semibold);letter-spacing:.03em;box-shadow:inset 0 0 0 1px var(--border-card);padding:3px 7px}.chat-run-state.running{color:var(--info);background:var(--info-soft)}.chat-run-state.completed{color:var(--success);background:var(--success-soft)}.chat-run-state.failed{color:var(--danger);background:var(--danger-soft)}.chat-run-error{border:1px solid color-mix(in srgb, var(--danger) 32%, transparent);background:var(--danger-soft);color:var(--danger);border-radius:9px;align-items:flex-start;gap:8px;margin-top:12px;padding:10px;display:flex}.chat-run-error>svg{flex:none;margin-top:1px}.chat-run-error strong,.chat-run-error span{display:block}.chat-run-error strong{font-size:var(--font-size-caption)}.chat-run-error span{color:var(--text-secondary);font-size:var(--font-size-fine);line-height:var(--line-height-caption);overflow-wrap:anywhere;margin-top:2px}.chat-run-route{min-width:0;color:var(--text-tertiary);font-size:var(--font-size-micro);white-space:nowrap;align-items:center;gap:7px;margin-top:14px;display:flex;overflow:hidden}.chat-run-route svg{color:var(--text-secondary);flex:none}.chat-run-route span{text-overflow:ellipsis;overflow:hidden}.chat-run-route i{background:var(--border-strong);flex:none;width:13px;height:1px}.chat-run-section{border-bottom:1px solid var(--border-card);padding:14px 16px}.chat-run-section-title{font-size:var(--font-size-caption);font-weight:var(--font-weight-semibold);color:var(--text-secondary);justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.chat-run-section-title small{color:var(--text-faint);font-size:var(--font-size-micro);font-weight:var(--font-weight-regular)}.chat-run-metrics{border:1px solid var(--border-card);border-radius:10px;grid-template-columns:repeat(2,minmax(0,1fr));display:grid;overflow:hidden}.chat-run-metrics>div{background:var(--surface-subtle);grid-template-columns:14px minmax(0,1fr);gap:2px 6px;min-width:0;padding:10px;display:grid}.chat-run-metrics>div:nth-child(odd){border-right:1px solid var(--border-card)}.chat-run-metrics>div:nth-child(-n+2){border-bottom:1px solid var(--border-card)}.chat-run-metrics svg{color:var(--text-faint);grid-row:1/span 2;margin-top:1px}.chat-run-metrics span{color:var(--text-tertiary);font-size:var(--font-size-micro)}.chat-run-metrics strong{color:var(--text);font-family:var(--font-mono);font-size:var(--font-size-fine);font-weight:var(--font-weight-medium);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pcm-run-health{border:1px solid var(--border-card);background:var(--surface-subtle);border-radius:10px;align-items:flex-start;gap:9px;padding:10px;display:flex}.pcm-run-health>svg{flex:none;margin-top:1px}.pcm-run-health.healthy>svg{color:var(--success)}.pcm-run-health.adjusted>svg{color:var(--warning)}.pcm-run-health.pending>svg{color:var(--text-faint)}.pcm-run-health div{min-width:0}.pcm-run-health strong,.pcm-run-health span{display:block}.pcm-run-health strong{color:var(--text);font-size:var(--font-size-fine)}.pcm-run-health span{color:var(--text-tertiary);font-size:var(--font-size-micro);margin-top:3px}.pcm-run-signal-list{flex-direction:column;gap:5px;margin-top:8px;display:flex}.pcm-run-signal{background:color-mix(in srgb, var(--surface-subtle) 72%, transparent);border-radius:8px;overflow:hidden}.pcm-run-signal>summary{cursor:pointer;grid-template-columns:14px minmax(0,1fr) 14px;align-items:flex-start;gap:8px;padding:8px;list-style:none;display:grid}.pcm-run-signal>summary::-webkit-details-marker{display:none}.pcm-run-signal>summary:hover{background:color-mix(in srgb, var(--surface-hover) 64%, transparent)}.pcm-run-signal>summary:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}.pcm-run-signal>summary>svg:first-child{color:var(--accent-strong);margin-top:1px}.pcm-run-signal>summary>div{min-width:0}.pcm-run-signal>summary strong,.pcm-run-signal>summary span{display:block}.pcm-run-signal>summary strong{color:var(--text-secondary);font-size:var(--font-size-micro);font-weight:var(--font-weight-semibold)}.pcm-run-signal>summary span{color:var(--text-faint);font-size:var(--font-size-micro);margin-top:2px;line-height:1.45}.pcm-run-signal-chevron{color:var(--text-faint);margin-top:1px;transition:transform .16s}.pcm-run-signal[open] .pcm-run-signal-chevron{transform:rotate(180deg)}.pcm-run-signal-static{background:color-mix(in srgb, var(--surface-subtle) 72%, transparent);border-radius:8px;grid-template-columns:14px minmax(0,1fr);align-items:flex-start;gap:8px;padding:8px;display:grid}.pcm-run-signal-static>svg{color:var(--accent-strong);margin-top:1px}.pcm-run-signal-static.attention>svg{color:var(--warning)}.pcm-run-signal-static strong,.pcm-run-signal-static span{display:block}.pcm-run-signal-static strong{color:var(--text-secondary);font-size:var(--font-size-micro);font-weight:var(--font-weight-semibold)}.pcm-run-signal-static span{color:var(--text-faint);font-size:var(--font-size-micro);margin-top:2px;line-height:1.45}.pcm-run-signal-details{border-top:1px solid var(--border-card);padding:4px 8px 8px 30px}.pcm-run-signal-details>div{border-bottom:1px solid color-mix(in srgb, var(--border-card) 65%, transparent);grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:7px 0;display:grid}.pcm-run-signal-details>div:last-of-type{border-bottom:0}.pcm-run-signal-details span,.pcm-run-signal-details strong,.pcm-run-signal-details small{display:block}.pcm-run-signal-details strong{color:var(--text-secondary);font-size:var(--font-size-micro)}.pcm-run-signal-details small{color:var(--text-faint);font-size:var(--font-size-micro);margin-top:2px}.pcm-run-signal-details em{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-micro);font-style:normal}.pcm-run-signal-details p{color:var(--text-faint);font-size:var(--font-size-micro);margin:6px 0 0;line-height:1.5}.pcm-run-signal-details>.pcm-run-prompt-section{display:block}.pcm-run-prompt-section pre{border:1px solid var(--border-card);background:var(--surface-raised);max-height:180px;color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--font-size-micro);white-space:pre-wrap;word-break:break-word;border-radius:6px;margin:7px 0 0;padding:8px;line-height:1.5;overflow:auto}.trace-pcm-evidence{gap:10px;padding:2px;display:grid}.trace-pcm-evidence>section{border:1px solid var(--border-card);background:color-mix(in srgb, var(--surface-subtle) 72%, transparent);border-radius:9px;padding:12px}.trace-pcm-evidence h3{color:var(--text);font-size:var(--font-size-fine);margin:0}.trace-pcm-evidence p{color:var(--text-tertiary);font-size:var(--font-size-micro);margin:5px 0 9px;line-height:1.5}.trace-pcm-evidence dl{margin:0}.trace-pcm-evidence dl>div{border-bottom:1px solid color-mix(in srgb, var(--border-card) 64%, transparent);grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:6px 0;display:grid}.trace-pcm-evidence dl>div:last-child{border-bottom:0}.trace-pcm-evidence dt{color:var(--text-secondary);font-size:var(--font-size-micro)}.trace-pcm-evidence dd{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-micro);margin:0}.trace-pcm-evidence small{color:var(--text-faint);font-size:var(--font-size-micro);overflow-wrap:anywhere;margin-top:8px;display:block}.chat-run-waterfall{flex-direction:column;gap:7px;display:flex}.chat-run-waterfall-row{grid-template-columns:minmax(76px,.8fr) minmax(82px,1fr) 42px;align-items:center;gap:7px;min-width:0;display:grid}.chat-run-waterfall-label{color:var(--text-secondary);font-size:var(--font-size-micro);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chat-run-waterfall-track{border-radius:var(--radius-pill);background:var(--surface-sunken);height:5px;position:relative;overflow:hidden}.chat-run-waterfall-track i{border-radius:var(--radius-pill);background:var(--accent);opacity:.72;min-width:3px;position:absolute;top:0;bottom:0}.chat-run-waterfall-track i.failed{background:var(--danger)}.chat-run-waterfall-row small{color:var(--text-faint);font-family:var(--font-mono);font-size:var(--font-size-nano);text-align:right}.chat-run-inline-empty{color:var(--text-faint);font-size:var(--font-size-fine);padding:8px 0}.chat-run-events-section{border-bottom:0}.chat-run-timeline{overscroll-behavior:contain;flex-direction:column;gap:0;display:flex;overflow-y:auto}.chat-run-event{grid-template-columns:24px minmax(0,1fr);gap:8px;padding:6px 0 10px;display:grid;position:relative}.chat-run-event:not(:last-child):before{content:"";background:var(--border-card);width:1px;position:absolute;top:27px;bottom:-1px;left:11px}.chat-run-event-icon{z-index:1;background:var(--surface-subtle);width:24px;height:24px;color:var(--text-tertiary);box-shadow:inset 0 0 0 1px var(--border-card);border-radius:7px;place-items:center;display:grid;position:relative}.chat-run-event.failed .chat-run-event-icon{color:var(--danger);background:var(--danger-soft)}.chat-run-event.running .chat-run-event-icon{color:var(--info)}.chat-run-event.usage .chat-run-event-icon{color:var(--success)}.chat-run-event-copy{min-width:0;padding-top:2px}.chat-run-event-copy>div{justify-content:space-between;align-items:baseline;gap:8px;min-width:0;display:flex}.chat-run-event-copy strong{min-width:0;font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);color:var(--text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chat-run-event-copy small{font-size:var(--font-size-nano);color:var(--text-tertiary);font-family:var(--font-mono);flex:none}.chat-run-event-copy details{margin-top:3px}.chat-run-event-copy summary{width:max-content;color:var(--text-faint);font-size:var(--font-size-micro);cursor:pointer;list-style:none}.chat-run-event-copy summary::-webkit-details-marker{display:none}.chat-run-event-copy details[open] summary{color:var(--accent-strong)}.chat-run-event-copy pre{border:1px solid var(--border-card);background:var(--surface-subtle);max-height:180px;color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--font-size-micro);line-height:var(--line-height-code-compact);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px;margin:7px 0 0;padding:8px 9px;overflow:auto}.chat-run-footer{border-top:1px solid var(--border-card);background:color-mix(in srgb, var(--surface) 94%, transparent);flex:none;padding:10px 12px}.chat-run-footer .btn{justify-content:center;width:100%;min-height:34px}.chat-workbench-host{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.copy-btn{width:20px;height:20px;color:var(--text-faint);cursor:pointer;transition:all var(--motion-fast) var(--ease);background:0 0;border:0;border-radius:5px;flex-shrink:0;place-items:center;display:inline-grid}.copy-btn:hover{background:var(--accent-soft);color:var(--accent-strong)}.copy-btn.copy-visible{opacity:1}.trace-kv-row{padding-right:26px;position:relative}.trace-kv-copy{opacity:0;position:absolute;top:6px;right:0}.trace-kv-row:hover .trace-kv-copy{opacity:1}.io-stack{flex-direction:column;gap:10px;display:flex}.io-block{border:1px solid var(--border-card);border-left:3px solid var(--text-faint);border-radius:var(--radius-control);background:var(--surface);padding:9px 12px}.io-block.io-message{border-left-color:var(--accent)}.io-block.io-thinking{border-left-color:#a1a1aa}.io-block.io-tool{border-left-color:#71717a}.io-head{font-size:var(--font-size-meta);font-weight:var(--font-weight-semibold);color:var(--text);align-items:center;gap:8px;display:flex}.io-label{align-items:center;gap:5px;display:inline-flex}.io-meta{font-size:var(--font-size-caption);font-weight:var(--font-weight-regular);color:var(--text-faint)}.io-text{font-size:var(--font-size-meta);line-height:var(--line-height-editor);color:var(--text-label);white-space:pre-wrap;word-break:break-word;-webkit-user-select:text;user-select:text;max-height:260px;margin-top:6px;overflow-y:auto}.io-expand{font-size:var(--font-size-meta);color:var(--accent-strong);cursor:pointer;background:0 0;border:0;margin-top:6px;padding:0}.io-expand:hover{text-decoration:underline}:root:not(.dark){--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--kc-accent-border:#ccecff;--kc-accent-fill:#f0f9ff;--kc-accent-fill-strong:#f3faff;--kc-user-bubble:#ecf4ff;--kc-user-bubble-border:#cce2fb;--kc-think-border:#d8e8f2;--kc-think-fill:#f7fbfe;--kc-think-hover:#edf8ff;--kc-think-divider:#e1edf4;--kc-code-fill:#f6f8fa;--kc-composer-border:#b9c6cf;--kc-graph-fill:#fbfcfd;--kc-graph-dot:#dce5eb;--kc-node-border:#bdc8cf;--kc-edge:#7f919d;--kc-rail-fill:#f8fafc}:root.dark{--kc-accent-border:color-mix(in srgb, var(--accent) 36%, var(--border));--kc-accent-fill:color-mix(in srgb, var(--accent-soft) 72%, var(--surface));--kc-accent-fill-strong:color-mix(in srgb, var(--accent-soft) 54%, var(--surface));--kc-user-bubble:color-mix(in srgb, var(--accent-soft) 80%, var(--surface));--kc-user-bubble-border:color-mix(in srgb, var(--accent) 35%, var(--border));--kc-think-border:color-mix(in srgb, var(--accent) 30%, var(--border));--kc-think-fill:color-mix(in srgb, var(--accent-soft) 32%, var(--surface));--kc-think-hover:color-mix(in srgb, var(--accent-soft) 54%, var(--surface));--kc-think-divider:color-mix(in srgb, var(--accent) 20%, var(--border));--kc-code-fill:var(--code-bg);--kc-composer-border:var(--border-strong);--kc-graph-fill:color-mix(in srgb, var(--surface) 86%, var(--canvas));--kc-graph-dot:color-mix(in srgb, var(--border-strong) 72%, transparent);--kc-node-border:var(--border-strong);--kc-edge:var(--text-tertiary);--kc-rail-fill:var(--surface-subtle)}html,body{background:var(--canvas);min-width:0}body{font-size:14px;overflow-x:auto}*{scrollbar-color:var(--border-strong) transparent;scrollbar-width:thin}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);background-clip:padding-box;border:2px solid #0000;border-radius:3px;min-height:40px;transition:background-color .16s}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary);background-clip:padding-box}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline-offset:2px;outline:2px solid #0091ea94}.app-shell{--studio-app-rail:216px;background:var(--canvas);min-width:0}.app-shell[data-rail=compact]{--studio-app-rail:80px}.app-shell .sidebar,.navigation-rail{width:var(--studio-app-rail);border-right:1px solid var(--rail-divider);background:var(--sidebar)}.app-shell .app-main{min-width:0;margin-left:var(--studio-app-rail)}.global-header{border-bottom:1px solid var(--rail-divider);background:var(--surface);min-height:64px}.global-header .crumb{border:1px solid var(--border);background:var(--surface);min-height:28px;color:var(--text-secondary);border-radius:4px;outline:none;padding:0 8px}.global-header .crumb:hover{border-color:var(--border-strong);background:var(--surface-subtle);color:var(--text)}@media (width<=1440px){.global-header{padding-inline:16px}.header-actions>.tag,.header-actions>.badge{display:none}}.page-container{max-width:var(--studio-page-max,1760px);padding:24px}.page-container[data-layout=document]{max-width:var(--studio-page-max,1760px)}.page-container[data-layout=workbench]{height:calc(100dvh - 64px)}.navigation-rail{padding:12px 10px}.navigation-rail .product{height:48px;padding:0 8px}.navigation-rail .product-mark{background:var(--accent);border-radius:6px;width:32px;height:32px}.navigation-rail .workspace-switcher{border:1px solid var(--border);background:var(--surface);border-radius:4px;min-height:48px;margin:8px 0}.navigation-rail .workspace-switcher:hover{border-color:var(--accent-border);background:var(--accent-soft)}.navigation-rail .primary-nav{padding:6px 0 12px}.navigation-rail .nav-group+.nav-group{margin-top:10px}.navigation-rail .nav-label{color:var(--text-faint);margin:0 0 3px;padding:0 10px;font-size:12px;font-weight:500;line-height:22px;display:block}.navigation-rail .nav-item{box-sizing:border-box;width:100%;min-height:34px;color:var(--text-secondary);border:1px solid #0000;border-radius:4px;margin:0;padding:0 10px}.app-shell[data-rail=expanded] .navigation-rail .nav-item{min-width:100%}.navigation-rail .nav-item svg{flex-basis:18px;width:18px;height:18px}.navigation-rail .nav-item:hover{background:var(--surface-hover);color:var(--text)}.navigation-rail .nav-item.active{background:var(--accent-soft);color:var(--accent-strong);border-color:#0000;position:relative}.navigation-rail .nav-item.active:before{content:"";background:var(--accent);border-radius:0 2px 2px 0;width:3px;height:18px;position:absolute;left:-1px}.navigation-rail .sidebar-footer{border-top:1px solid var(--rail-divider)}.app-shell[data-rail=compact] .navigation-rail .workspace-switcher,.app-shell[data-rail=compact] .navigation-rail .nav-item{width:44px;min-width:44px;height:36px;min-height:36px}:where(.block:not(.runtime-resource-group),.table-section,.trace-list-page,.wizard-content,.agent-editor,.authoring-mode-panel,.studio-data-table,.stat-strip>*,.page-tabs,.chat-session-sidebar,.chat-conversation,.chat-run-panel,.trace-run-panel,.trace-span-panel,.trace-detail-panel,.data-page-body>.empty-state,.orchestration-canvas,.orchestration-aside){border:1px solid var(--border-card);background:var(--surface);border-radius:6px;outline:none}:where(.authoring-chat-column,.authoring-input-card,.authoring-inspection-card,.pipeline-node-card,.capability-empty-state,.code-viewer,.a2ui-surface,.appearance-option,.more-actions-menu,.studio-select-content,.studio-multi-select-popover,.composer-action-menu,.composer-command-menu,.studio-tooltip){border:1px solid var(--border);border-radius:4px;outline:none}.block{padding:20px 24px}.section-heading,.block-head,.agents-catalog-header,.runtime-resource-group>header{gap:12px}.section-heading h2,.agents-catalog-header h2,.agents-section-heading h2{letter-spacing:0;font-size:16px;line-height:24px}.section-heading p,.agents-catalog-header p,.agents-section-heading p{color:var(--text-tertiary);font-size:12px;line-height:18px}.stat-strip{gap:16px;margin-bottom:16px}.stat-strip>*{min-height:112px;padding:18px 20px}.stat-strip>.emphasis{border-color:var(--kc-accent-border);background:var(--kc-accent-fill)}.stat-strip strong{font-size:24px}.button,.icon-button,button,input,textarea,select,.studio-select-trigger,.studio-multi-select-trigger,.search-field{border-radius:4px}button{appearance:none;color:inherit;cursor:pointer;background:0 0;border:0;outline:none;margin:0;padding:0}button:disabled{cursor:not-allowed}.button,.icon-button{border:1px solid #0000;outline:none;min-height:36px;box-shadow:none!important}.button:not(.accent):not(.tertiary),.button.secondary,.icon-button.secondary,.global-header .icon-button,.segmented-control,.page-tabs{border:1px solid var(--border-strong);background:var(--surface)}.segmented-control,.page-tabs{border-color:var(--border)}.page-tabs button,.segmented-control button{border:1px solid #0000;border-radius:3px}.page-tabs button:hover:not(:disabled),.segmented-control button:hover:not(:disabled){background:var(--surface-subtle);color:var(--text)}.page-tabs button.active,.page-tabs button[aria-selected=true],.segmented-control button.selected,.segmented-control button[aria-selected=true]{border-color:var(--kc-accent-border);background:var(--kc-accent-fill);color:var(--accent-strong)}.button:not(.accent):not(.tertiary):hover:not(:disabled),.button.secondary:hover:not(:disabled),.icon-button.secondary:hover:not(:disabled),.global-header .icon-button:hover:not(:disabled){border-color:var(--accent-border);background:var(--accent-soft);color:var(--accent-strong)}.button.accent,.primary-button{border:1px solid var(--button-primary-bg);background:var(--button-primary-bg);color:var(--button-primary-text);border-radius:4px}.button.accent:hover:not(:disabled),.primary-button:hover:not(:disabled){border-color:var(--button-primary-bg-hover);background:var(--button-primary-bg-hover)}.button.tertiary,.icon-button.tertiary,.text-button{background:0 0;border:1px solid #0000}.button.tertiary:hover:not(:disabled),.icon-button.tertiary:hover:not(:disabled),.text-button:hover:not(:disabled){background:var(--surface-hover);color:var(--accent-strong)}:where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),textarea,select,.studio-select-trigger,.studio-multi-select-trigger){border:1px solid var(--border-strong);background:var(--surface);outline:none;box-shadow:none!important}:where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),textarea,select,.studio-select-trigger,.studio-multi-select-trigger):hover:not(:disabled){border-color:color-mix(in srgb, var(--border-strong) 74%, var(--text-tertiary));background:var(--surface)}:where(input,textarea,select):focus,.studio-select-trigger:focus-visible,.studio-select-trigger[data-state=open],.studio-multi-select-trigger:focus-visible,.studio-multi-select-trigger[aria-expanded=true]{border-color:var(--accent);outline-offset:0;background:var(--surface);outline:2px solid #0091ea29}.search-field{border:1px solid var(--border-strong);background:var(--surface);outline:none;min-height:36px}.search-field:focus-within{border-color:var(--accent);outline-offset:0;background:var(--surface);outline:2px solid #0091ea29}.choice-card,.suggestion-list button{border:1px solid var(--border);box-shadow:none}.choice-card:hover,.suggestion-list button:hover{border-color:var(--border-strong)}.choice-card.selected{border-color:var(--kc-accent-border);background:var(--kc-accent-fill)}.chat-session-main{border:1px solid #0000}.search-field input,.search-field input:hover,.search-field input:focus{background:0 0;border:0;outline:0}.studio-field-label-row{align-items:center;gap:5px;min-height:24px}.studio-field-label{min-height:24px;color:var(--text-label);align-items:center;font-size:14px;font-weight:500}.studio-field-requirement.required{color:var(--danger)}.field-help-trigger{width:16px;height:16px;color:var(--text-tertiary);background:0 0;border:0;padding:0}.field-help-trigger:hover{color:var(--accent)}.form-grid.two-columns>.studio-form-field>.studio-field-control{align-self:start}.form-grid.two-columns>.studio-form-field,.form-grid.two-columns>.studio-form-field+.studio-form-field{align-self:start;margin-top:0}.form-grid.two-columns>.studio-form-field>.studio-field-control>:is(input:not([type=checkbox]):not([type=radio]),.studio-select-trigger,.studio-multi-select-trigger){min-height:40px}.conversation-settings-body>.studio-form-field{grid-template-rows:24px minmax(40px,auto) auto;align-content:start;align-self:start;gap:6px;min-width:0;display:grid}.conversation-settings-body>.studio-form-field>.studio-field-label-row,.conversation-review-form .studio-field-label-row{min-height:24px}.conversation-settings-body>.studio-form-field>.studio-field-control,.conversation-settings-body>.studio-form-field>.studio-field-control>:is(.studio-select-trigger,.studio-multi-select,.studio-multi-select-trigger){width:100%;min-width:0}.conversation-settings-body>.studio-form-field>.studio-field-footer{align-items:flex-start;min-height:18px}.conversation-settings-body .conversation-runtime-note{background:var(--surface-subtle);border-radius:4px;grid-column:1/-1;margin:0;padding:10px 12px}.conversation-chat:has(.conversation-settings[open]){grid-template-rows:auto minmax(96px,220px) auto auto;overflow-y:auto}.conversation-draft-rail.is-empty{align-self:start;overflow:hidden;height:fit-content!important}.conversation-draft-rail.is-empty .conversation-draft-empty{min-height:136px;padding:20px}.conversation-review-form .form-grid.two-columns{align-items:start}@media (width>=1181px){.conversation-authoring-layout[data-draft-state=empty]{grid-template-columns:minmax(0,1fr) minmax(248px,.42fr)}.conversation-authoring-layout[data-draft-state=review]{grid-template-columns:minmax(480px,1fr) minmax(480px,.92fr)}}.quick-runtime-strip .runtime-logo,.agent-appearance-preview .agent-avatar,.appearance-choice-group button{place-items:center;line-height:0;display:inline-grid}.runtime-logo>svg,.agent-avatar>svg,.appearance-choice-group button>svg{margin:auto;display:block}.agent-edit-nav{border:1px solid var(--border);background:var(--surface-subtle);border-radius:6px;gap:4px;margin-bottom:14px;padding:3px;display:flex}.agent-edit-nav button{min-height:32px;color:var(--text-secondary);font-size:var(--font-size-meta);border:1px solid #0000;border-radius:4px;flex:1;padding:0 12px}.agent-edit-nav button:hover:not(.active){background:var(--surface-hover);color:var(--text)}.agent-edit-nav button.active{border-color:var(--kc-accent-border);background:var(--surface);color:var(--accent-strong)}.agent-version-boundary{margin-bottom:18px}.studio-tooltip{color:#fff;background:#27313a;max-width:280px;padding:8px 10px;font-size:12px;line-height:18px;box-shadow:0 4px 14px #202d3833!important}.studio-tooltip-arrow{fill:#27313a}.tag,.badge{border:1px solid #0000;border-radius:4px;min-height:22px;padding:2px 7px;font-size:12px;line-height:16px}.badge[data-state=ready],.badge[data-state=success]{border-color:color-mix(in srgb, var(--success) 38%, var(--border));background:var(--success-soft);color:var(--success-deep)}.badge[data-state=pending],.badge[data-state=running],.badge[data-state=warning]{border-color:color-mix(in srgb, var(--warning) 38%, var(--border));background:var(--warning-soft);color:var(--warning-deep)}.badge[data-state=failed],.badge[data-state=error]{border-color:color-mix(in srgb, var(--danger) 38%, var(--border));background:var(--danger-soft);color:var(--danger-deep)}.studio-data-table{overflow:hidden}.studio-data-table-scroll{overflow:auto}.studio-data-table table{border-collapse:separate;border-spacing:0}.studio-data-table thead th{border-bottom:1px solid var(--border-card);background:var(--surface-subtle);height:40px;color:var(--text-tertiary);font-size:12px;font-weight:500}.studio-data-table tbody tr{height:56px}.studio-data-table tbody td{border-bottom:1px solid var(--border)}.studio-data-table tbody tr:last-child td{border-bottom:0}.studio-data-table tbody tr:hover,.studio-data-table tbody tr:focus-visible{background:color-mix(in srgb, var(--accent-soft) 48%, var(--surface))}.studio-data-table-pagination{border-top:1px solid var(--border);background:var(--surface);min-height:48px;padding:8px 16px}.studio-data-table-state{min-height:180px}.studio-data-table-state.is-loading{place-items:stretch stretch;gap:10px;padding:16px;display:grid}.studio-table-skeleton{gap:12px;display:grid}.studio-table-skeleton-row{border-bottom:1px solid var(--border);grid-template-columns:1.2fr .8fr .7fr .6fr;align-items:center;gap:20px;min-height:44px;padding:0 8px;display:grid}.studio-table-skeleton-row i{background:linear-gradient(90deg, var(--surface-subtle) 20%, var(--surface) 40%, var(--surface-subtle) 60%);background-size:220% 100%;border-radius:2px;height:12px;animation:1.3s ease-in-out infinite studio-skeleton-wave}.studio-table-loading-copy{color:var(--text-tertiary);justify-content:center;align-items:center;gap:6px;font-size:12px;display:inline-flex}.empty-state{border-color:var(--border-card);background:var(--surface)}.empty-state .empty-icon{border:1px solid var(--kc-accent-border);color:var(--accent);background:var(--accent-soft);border-radius:6px}.studio-select-content,.studio-multi-select-popover,.more-actions-menu,.composer-action-menu,.composer-command-menu,.chat-model-menu,.chat-approval-menu{border-color:var(--border-strong);background:var(--surface);box-shadow:var(--shadow-overlay)!important}.overlay-backdrop{background:#1e2a3461}.studio-dialog,.drawer{border:1px solid var(--border-card);border-radius:6px;box-shadow:0 14px 40px #202d3833!important}.studio-dialog-header,.drawer-header,.studio-dialog-footer,.drawer-footer{border-color:var(--border)}.studio-chat-shell{border:1px solid var(--border-card);background:var(--surface);border-radius:6px}.chat-session-sidebar{border:0;border-right:1px solid var(--border-card);background:var(--surface);border-radius:0}.chat-session-header,.chat-conversation-header{border-bottom:1px solid var(--border);height:56px}.chat-session-header h2,.chat-conversation-header h1{min-width:0;color:var(--text);font-size:14px;font-weight:var(--font-weight-semibold);text-overflow:ellipsis;white-space:nowrap;margin:0;line-height:1.5;overflow:hidden}.chat-session-header>h2,.chat-conversation-header h1{flex:1}.chat-session-mobile-trigger,.chat-session-mobile-close,.chat-session-backdrop{display:none}.chat-session-header-actions{flex:none;align-items:center;gap:4px;display:flex}.chat-session-search{border-bottom:1px solid var(--border);padding:8px 12px}.chat-session-search input{height:32px}.chat-session-item{border:1px solid #0000;border-radius:4px}.chat-session-item:hover,.chat-session-item:focus-within{background:var(--surface-hover)}.chat-session-item.active{border-color:var(--kc-accent-border);background:var(--accent-soft)}.chat-session-item.running:not(.active){background:color-mix(in srgb, var(--accent) 4%, var(--surface));border-color:#0000}.chat-session-skeleton{gap:8px;padding:4px 1px;display:grid}.chat-session-skeleton i{background:linear-gradient(90deg, var(--surface-subtle) 20%, var(--surface-hover) 50%, var(--surface-subtle) 80%);background-size:220% 100%;border-radius:4px;height:36px;animation:1.25s ease-in-out infinite studio-skeleton-wave}.chat-message-list{background:var(--surface);padding:28px max(32px,50% - 410px) 20px}.chat-message-list .message{max-width:820px;margin-bottom:28px}.chat-message-list .message-meta{color:var(--text-tertiary);font-size:12px}.chat-message-list .message.user .message-content{border:1px solid var(--kc-user-bubble-border);background:var(--kc-user-bubble);border-radius:8px 8px 2px;max-width:min(72%,560px);padding:12px}.chat-message-list .message.assistant .message-content{max-width:760px;padding:0}.chat-message-list .message.assistant.error .message-content{background:0 0;border:0;max-width:760px;padding:0}.chat-markdown{color:var(--text);font-size:14px;line-height:1.75}.chat-markdown h1,.chat-markdown h2,.chat-markdown h3{letter-spacing:0}.chat-markdown code{border:1px solid var(--border);background:var(--kc-code-fill);border-radius:3px}.chat-markdown pre{border:1px solid var(--border);border-radius:4px}.chat-code-block{border:1px solid var(--border);background:var(--kc-code-fill);border-radius:6px;margin:0 0 12px;overflow:hidden}.chat-code-header{border-bottom:1px solid var(--border);min-height:34px;color:var(--text-tertiary);background:var(--surface-subtle);font-family:var(--font-mono);text-transform:lowercase;justify-content:space-between;align-items:center;gap:12px;padding:0 10px 0 12px;font-size:12px;display:flex}.chat-code-header button{min-height:28px;color:var(--text-secondary);font-family:var(--font-sans);background:0 0;border-radius:4px;align-items:center;gap:5px;padding:0 7px;font-size:12px;display:inline-flex}.chat-code-header button:hover{color:var(--text);background:var(--surface-hover)}.chat-code-block pre,.chat-markdown .chat-code-block pre{border:0;border-radius:0;margin:0}.chat-markdown blockquote{border-left:3px solid var(--kc-accent-border)}.chat-processing-group{background:0 0;border:0;max-width:640px;margin-bottom:12px}.chat-processing-group>summary{width:fit-content;min-height:28px;color:var(--text-tertiary);border-radius:4px;padding:3px 4px}.chat-processing-group>summary:hover{background:var(--kc-think-hover);color:var(--accent-strong)}.chat-processing-icon{color:var(--accent)}.chat-processing-content{border-top:0;border-left:1px solid var(--kc-think-divider);max-width:none;margin:4px 0 0 7px;padding:0 0 2px 16px}.chat-reasoning-content{color:var(--text-secondary);border-left:0;padding:4px 0 10px;font-size:13px;line-height:1.65}.chat-activity-card>summary,.chat-activity-row{border-bottom:0;border-radius:4px;min-height:30px;padding:3px 4px}.chat-activity-card:last-child>summary,.chat-activity-card:last-child .chat-activity-row{border-bottom:0}.chat-activity-card>summary:hover{color:var(--accent-strong);background:0 0}.chat-composer-wrap{border-top:1px solid var(--border);background:var(--surface);padding:12px max(32px,50% - 426px) 16px}.chat-composer{border:1px solid var(--kc-composer-border);background:var(--surface);border-radius:12px;max-width:820px;box-shadow:0 2px 8px #202d3812!important}.chat-composer:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #0091ea21!important}.chat-composer textarea,.chat-composer textarea:hover,.chat-composer textarea:focus{background:0 0;border-radius:12px 12px 0 0;min-height:64px;padding:13px 14px 5px;font-size:14px;line-height:1.55;box-shadow:none!important;border:0!important;outline:0!important}.chat-composer-footer{border-top:0;min-height:36px;padding:2px 8px 8px 10px}.cloud-chat-composer-footer{justify-content:space-between;padding-top:7px}.cloud-chat-composer-tools{align-items:center;gap:6px;min-width:0;display:flex}.cloud-chat-composer-tools label.icon-button{cursor:pointer;flex:none;display:inline-grid}.cloud-chat-composer-tools select{max-width:180px;height:30px;color:var(--text-secondary);font-size:var(--font-size-meta);background-color:#0000;border:0;border-radius:7px;padding:0 26px 0 9px}.cloud-chat-composer-tools select:hover,.cloud-chat-composer-tools select:focus{color:var(--text);background-color:var(--surface-hover);outline:0}.cloud-chat-attachments{flex-wrap:wrap;gap:6px;padding:4px 10px 8px;display:flex}.cloud-chat-attachments>span{border:1px solid var(--border);max-width:240px;color:var(--text-secondary);background:var(--surface-subtle);font-size:var(--font-size-caption);text-overflow:ellipsis;white-space:nowrap;border-radius:7px;align-items:center;gap:5px;padding:5px 7px;display:inline-flex;overflow:hidden}.cloud-chat-attachments button{color:var(--text-tertiary);background:0 0;border:0;place-items:center;padding:0;display:grid}.chat-composer-footer,.cloud-chat-composer-footer{border-top:0;justify-content:flex-start;gap:5px;min-width:0;min-height:36px;padding:2px 8px 8px 10px}.chat-composer .chat-plus-trigger{border-radius:6px;width:32px;height:32px}.chat-composer .chat-mode-chip,.chat-composer .chat-approval-trigger,.chat-composer .chat-model-trigger{border-radius:6px;height:32px}.chat-approval-trigger{max-width:164px;padding-inline:9px}.chat-model-summary-trigger{background:var(--surface-subtle);gap:7px;max-width:min(300px,42vw);padding-inline:10px}.chat-model-summary-trigger b{color:var(--text-tertiary);font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);flex:none}.chat-model-reasoning-menu{width:min(270px,100vw - 24px);padding:6px}.chat-model-settings-row{cursor:pointer;border-radius:10px;outline:0;grid-template-columns:minmax(0,1fr) minmax(0,auto) 18px;align-items:center;gap:10px;min-height:42px;padding:7px 9px;display:grid}.chat-model-settings-row[data-highlighted],.chat-model-settings-row[data-state=open]{background:var(--surface-subtle)}.chat-model-settings-row strong{font-weight:var(--font-weight-semibold)}.chat-model-settings-row>span{color:var(--text-tertiary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chat-model-settings-row>svg{color:var(--text-tertiary)}.chat-model-submenu{width:min(280px,100vw - 24px);max-height:min(520px,100vh - 40px);overflow-y:auto}.chat-reasoning-submenu{width:min(320px,100vw - 24px)}.chat-reasoning-option{cursor:pointer;border-radius:8px;outline:0;grid-template-columns:minmax(0,1fr) 18px;align-items:center;gap:10px;min-height:48px;padding:7px 9px;display:grid}.chat-reasoning-option[data-highlighted]{background:var(--surface-subtle)}.chat-reasoning-option>span:first-child,.chat-reasoning-option strong,.chat-reasoning-option small{min-width:0;display:block}.chat-reasoning-option strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.chat-reasoning-option small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.chat-composer .chat-send-button{width:34px;height:34px;color:var(--button-primary-text);background:var(--button-primary-bg);border:0;border-radius:6px;margin-left:1px}.chat-composer .chat-send-button:hover:not(:disabled){color:var(--button-primary-text);background:var(--button-primary-bg-hover)}@media (width<=720px){html,body,.app-shell{overflow-x:clip}.chat-composer-wrap{padding-inline:10px}.chat-approval-trigger span{text-overflow:ellipsis;white-space:nowrap;max-width:80px;overflow:hidden}.chat-model-summary-trigger{max-width:38vw}}.chat-composer-disclaimer{max-width:820px;color:var(--text-tertiary);text-align:center;margin:7px auto 0;font-size:12px;line-height:1.5}.chat-run-error{border:1px solid color-mix(in srgb, var(--danger) 32%, var(--border));border-radius:8px;max-width:760px;margin-top:0}.a2ui-surface{background:var(--surface);margin:12px 0;padding:16px}.a2ui-card,.a2ui-form{border:1px solid var(--border);background:var(--surface);border-radius:4px;padding:16px}.a2ui-card-content .a2ui-form{border:0;padding:0}.a2ui-choice,.a2ui-other{background:var(--surface);border:1px solid #0000;border-radius:4px}.a2ui-choice:hover,.a2ui-choice.selected,.a2ui-other.active{border-color:var(--kc-accent-border);background:var(--kc-accent-fill-strong)}.a2ui-choice-index,.a2ui-other-icon{border:1px solid var(--border-strong);background:var(--surface);border-radius:50%;width:22px;height:22px}.a2ui-choice.selected .a2ui-choice-index{border-color:var(--accent);background:var(--accent);color:#fff}.a2ui-approval{border:1px solid var(--kc-accent-border);background:var(--kc-accent-fill-strong);border-radius:4px}.a2ui-actions button,.a2ui-form button,.a2ui-layout button{border:1px solid var(--accent);background:var(--accent);border-radius:4px}.a2ui-actions button.secondary{border-color:var(--border-strong);background:var(--surface)}.a2ui-actions button.secondary:hover:not(:disabled){border-color:var(--accent-border);background:var(--accent-soft);color:var(--accent-strong)}.orchestration-workbench{gap:16px}.orchestration-graph{border:1px solid var(--border);background-color:var(--kc-graph-fill);background-image:radial-gradient(var(--kc-graph-dot) .8px, transparent .8px);background-size:16px 16px;border-radius:4px}.orchestration-graph .react-flow__node-pipeline{border-radius:4px}.pipeline-node-card{border-color:var(--kc-node-border);background:var(--surface);border-radius:4px;gap:8px;padding:10px;box-shadow:0 1px 2px #202d380d!important}.react-flow__node.selected .pipeline-node-card,.pipeline-node-card:hover{border-color:var(--accent);box-shadow:0 0 0 2px #0091ea21!important}.pipeline-node-icon{width:30px;height:30px;color:var(--accent-strong);background:var(--accent-soft);border-radius:4px;flex-basis:30px}.orchestration-graph .react-flow__edge-path{stroke:var(--kc-edge);stroke-width:1.25px}.orchestration-graph .react-flow__edge-textbg{fill:var(--surface);stroke:var(--border);stroke-width:1px;rx:3px;ry:3px}.orchestration-graph .react-flow__controls{border:1px solid var(--border-strong);border-radius:4px;box-shadow:0 2px 8px #202d381a!important}.orchestration-graph .react-flow__controls-button{border-bottom:1px solid var(--border)}.orchestration-graph .react-flow__controls-button:last-child{border-bottom:0}.orchestration-aside{padding:18px}.runtime-resource-section{background:0 0;border:0;padding:0}.runtime-resource-groups{gap:16px}.runtime-resource-group{border:1px solid var(--border-card);background:var(--surface);border-radius:6px;padding:20px}.runtime-resource-group:before{display:none}.delivery-table-scroll{contain:inline-size paint;overscroll-behavior-inline:contain;max-width:100%}.settings-credential,.build-artifact-grid>div,details.build-log,.build-progress,.build-artifact,.deployment-card,.resource-detail-card,.trace-run-list>button,.trace-span-tree>button{border:1px solid var(--border);background:var(--surface);border-radius:4px}.settings-credential:hover,.build-artifact-grid>div:hover,.trace-run-list>button:hover,.trace-run-list>button.active,.trace-span-tree>button:hover,.trace-span-tree>button.active{border-color:var(--kc-accent-border);background:var(--kc-accent-fill-strong)}.build-stage-list li:not(:last-child):after{background:var(--border-strong);height:1px}.create-shell .create-stage{border:1px solid var(--border-card);border-radius:6px}.create-shell .create-rail{border-right:1px solid var(--border);background:var(--kc-rail-fill)}.create-shell .authoring-mode-tabs button,.create-shell .wizard-step{box-shadow:none;border:1px solid #0000}.create-shell .authoring-mode-tabs button:hover:not(.active),.create-shell .wizard-step:hover:not(.active){border-color:var(--border);background:var(--surface)}.create-shell .authoring-mode-tabs button.active,.create-shell .wizard-step.active{border-color:var(--kc-accent-border);background:var(--kc-accent-fill);color:var(--accent-strong)}.create-shell .wizard-step .step-number{border:1px solid var(--border-strong);border-radius:50%}.create-shell .wizard-step.active .step-number,.create-shell .wizard-step.completed .step-number{border-color:var(--accent);background:var(--accent);color:#fff}.create-shell .template-card{border:1px solid var(--border);background:var(--surface);box-shadow:none;border-radius:6px;outline:none}.create-shell .template-card:hover:not(.selected){border-color:var(--border-strong);background:var(--surface)}.create-shell .template-card.selected{border-color:var(--kc-accent-border);background:var(--kc-accent-fill)}.create-shell .template-card:focus-visible,.create-shell .authoring-mode-tabs button:focus-visible,.create-shell .wizard-step:focus-visible{outline-offset:2px;outline:2px solid #0091ea5c}.manifest-preview,.code-viewer{border-color:var(--border-card)}@keyframes studio-skeleton-wave{0%{background-position:100% 0}to{background-position:-100% 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=1023px){#pageHeaderActions>.tag{display:none}.app-shell,.app-shell[data-rail=expanded],.app-shell[data-rail=compact]{--studio-app-rail:216px}.app-shell[data-rail=compact]{--studio-app-rail:80px}.app-shell .sidebar{width:var(--studio-app-rail);flex-direction:column;height:auto;position:fixed;inset:0 auto 0 0;overflow:hidden}.app-shell .app-main{margin-left:var(--studio-app-rail);padding-bottom:0}.app-shell .sidebar .product,.app-shell .sidebar .workspace-switcher,.app-shell .sidebar .nav-label,.app-shell .sidebar .sidebar-footer{display:flex}.app-shell[data-rail=compact] .sidebar .product-copy,.app-shell[data-rail=compact] .sidebar .workspace-copy,.app-shell[data-rail=compact] .sidebar .nav-label,.app-shell[data-rail=compact] .sidebar .nav-item>span{display:none}.app-shell .global-header{min-height:64px}.app-shell .header-agent-selector,.app-shell .header-identity-inline .mono{display:inline-flex}.create-shell .create-workbench,.create-shell[data-layout=workbench] .create-workbench,.agent-detail-layout,.detail-layout,.orchestration-workbench,.conversation-authoring-layout,.authoring-inspect-grid{grid-template-columns:minmax(0,1fr)!important}}@media (width<=720px){.app-shell,.app-shell[data-rail=expanded],.app-shell[data-rail=compact]{--studio-app-rail:56px}.app-shell .sidebar{width:56px;padding:8px 6px}.app-shell .app-main{margin-left:56px}.app-shell .sidebar .product{width:44px;height:48px;margin-inline:0}.app-shell .sidebar .product-mark,.app-shell .sidebar .workspace-mark{flex-basis:34px;width:34px;height:34px}.app-shell .sidebar .workspace-switcher,.app-shell .sidebar .nav-item{width:44px;min-height:44px;margin-inline:0}.app-shell .sidebar .nav-item{height:44px}.app-shell .sidebar .sidebar-footer{width:44px;margin-inline:0;padding-inline:2px}.app-shell .global-header{min-height:56px;padding-inline:12px}.app-shell[data-view=agent-detail] .header-identity-inline{flex:auto;gap:6px;min-width:0;max-width:none}.app-shell[data-view=agent-detail] .header-identity-inline .mono,.app-shell[data-view=agent-detail] .header-identity-inline .agent-avatar{display:none}.app-shell[data-view=agent-detail] .header-identity-inline h1{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.app-shell[data-view=conversations] .global-header{height:56px}.app-shell[data-view=conversations] .global-header .header-identity span,.app-shell[data-view=conversations] .global-refresh-button,.app-shell[data-view=conversations] .conversation-run-detail,.app-shell[data-view=conversations] .global-header .badge{display:none}.app-shell[data-view=conversations] .global-header .header-actions{max-width:calc(100% - 64px);overflow:visible}.app-shell[data-view=conversations] .conversation-target-selector{width:min(180px,54vw);display:inline-flex}.app-shell[data-view=conversations] main,.app-shell[data-view=conversations] .chat-wrap,.app-shell[data-view=conversations] .chat-host{height:calc(100dvh - 56px)}.studio-chat-shell,.cloud-chat-shell{border-left:0;border-right:0;border-radius:0;display:block;position:relative}.studio-chat-shell .chat-session-sidebar{z-index:42;border-right:1px solid var(--border-card);width:min(304px,100% - 28px);box-shadow:var(--shadow-overlay);transition:transform var(--motion-base) var(--ease);position:absolute;inset:0 auto 0 0;transform:translate(-104%)}.studio-chat-shell.sessions-open .chat-session-sidebar{transform:translate(0)}.chat-session-backdrop{z-index:41;opacity:0;visibility:hidden;pointer-events:none;width:100%;height:100%;transition:opacity var(--motion-base) var(--ease), visibility var(--motion-base) var(--ease);background:#090e167a;padding:0;display:block;position:absolute;inset:0}.studio-chat-shell.sessions-open .chat-session-backdrop{opacity:1;visibility:visible;pointer-events:auto}.chat-conversation{grid-template-rows:52px minmax(0,1fr) auto;width:100%;height:100%}.chat-conversation-header{height:52px;padding-inline:10px 12px}.chat-session-mobile-trigger,.chat-session-mobile-close{width:40px;min-width:40px;height:40px;display:inline-grid}.chat-session-main{min-height:44px;padding-right:42px}.chat-session-delete{opacity:1;width:32px;height:32px;transform:translateY(-50%)}.chat-message-list{width:100%;padding:20px 12px 12px}.chat-message-list .message{max-width:100%;margin-bottom:22px}.chat-message-list .message.user .message-content{max-width:88%}.chat-message-list .message.assistant .message-content,.chat-run-error{max-width:100%}.chat-composer-wrap{padding:8px 8px 10px}.chat-composer,.chat-composer-disclaimer{max-width:100%}.chat-composer-footer,.cloud-chat-composer-footer{gap:4px;padding-inline:7px}.chat-composer .chat-approval-trigger{width:36px;padding-inline:0}.chat-composer .chat-plus-trigger,.chat-composer .chat-mode-chip,.chat-composer .chat-approval-trigger,.chat-composer .chat-model-trigger,.chat-composer .chat-send-button{min-height:36px}.chat-composer .chat-plus-trigger,.chat-composer .chat-send-button{width:36px}.chat-attachment-chip{grid-template-columns:34px minmax(0,1fr) 28px}.chat-attachment-chip>button{width:28px;height:28px}.chat-composer .chat-approval-trigger>span,.chat-composer .chat-approval-trigger>.lucide-chevron-down{display:none}.chat-model-summary-trigger{max-width:min(116px,31vw)}.chat-model-summary-trigger b{display:none}.chat-context-tooltip{right:-88px}.chat-context-tooltip:after{right:95px}.chat-composer-disclaimer{text-align:left;padding-inline:8px}.chat-run-error{grid-template-columns:minmax(0,1fr)}.chat-run-error-icon{display:none}.chat-run-error-actions{flex-wrap:wrap}.app-shell[data-view=create] .header-identity-inline{flex:auto;max-width:156px}.app-shell[data-view=create] .header-actions{flex:none;gap:4px;max-width:none;overflow:visible}.app-shell[data-view=create] #pageHeaderActions{gap:4px}.app-shell[data-view=create] #pageHeaderActions>.tag,.app-shell[data-view=create] #pageHeaderActions>.button.secondary{display:none}.app-shell[data-view=create] #pageHeaderActions>.button,.app-shell[data-view=create] #pageHeaderActions>.compact-create-rail-trigger,#pageHeaderActions .button{justify-content:center;width:40px;min-width:40px;height:40px;padding:0}#pageHeaderActions .button>span{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-shell[data-view=deployments] #pageHeaderActions>.button.secondary,.app-shell[data-view=agent-detail] #pageHeaderActions>.button.secondary{display:none}.create-shell,.create-shell .create-workbench,.create-shell .create-stage,.create-shell .wizard-layout,.create-shell .wizard-content{max-width:100%;overflow-x:clip}.create-shell .wizard-panel{padding:24px 16px 80px}.create-shell .panel-heading{margin-bottom:22px}.create-shell .template-grid,.create-shell .choice-grid,.create-shell .form-grid.two-columns,.create-shell .review-capabilities{grid-template-columns:minmax(0,1fr)}.create-shell .template-card{grid-template-columns:auto minmax(0,1fr);min-height:88px}.create-shell .wizard-actions{gap:8px;min-height:60px;padding:0 10px}.create-shell .wizard-actions .summary-chips{display:none}.create-shell .wizard-actions .summary-toggle{width:40px;min-width:40px;height:40px;padding:0}.create-shell .wizard-actions .summary-toggle>span,.create-shell .wizard-actions .wizard-progress{display:none}.create-shell .wizard-actions>.button:first-child{width:40px;min-width:40px;height:40px;padding:0}.create-shell .wizard-actions>.button:first-child>span{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.create-shell .wizard-flow-actions{gap:6px;margin-left:auto}} diff --git a/ksadk/studio/static/assets/index-CXcKPd6_.js b/ksadk/studio/static/assets/index-CXcKPd6_.js new file mode 100644 index 00000000..9859c529 --- /dev/null +++ b/ksadk/studio/static/assets/index-CXcKPd6_.js @@ -0,0 +1,281 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PrismRenderer-IYN-ffww.js","assets/rolldown-runtime-hePW80VL.js","assets/react-vendor-BNmTiJ-I.js"])))=>i.map(i=>d[i]); +import{n as e,r as t,t as n}from"./rolldown-runtime-hePW80VL.js";import{i as r,n as i,r as a,t as o}from"./react-vendor-BNmTiJ-I.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var s=t(r(),1),c=i(),l=`modulepreload`,u=function(e){return`/static/`+e},d={},f=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=u(t,n),t=s(t),t in d)return;d[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:l,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},p=``,m=window.fetch.bind(window);function h(e){return e.startsWith(`/api/v1/`)||e===`/v1/responses`||e.startsWith(`/v1/responses/`)}async function g(e,t={}){let n=String(t.method||(e instanceof Request?e.method:`GET`)).toUpperCase(),r=new URL(e instanceof Request?e.url:String(e),window.location.href),i=new Headers(t.headers||(e instanceof Request?e.headers:void 0));p&&r.origin===window.location.origin&&h(r.pathname)&&![`GET`,`HEAD`,`OPTIONS`].includes(n)&&i.set(`X-CSRF-Token`,p);let a=e instanceof Request?e.clone():e,o={...t,headers:i,credentials:t.credentials||`same-origin`},s=await m(e,o);if(s.status!==403||[`GET`,`HEAD`,`OPTIONS`].includes(n)||r.origin!==window.location.origin||!h(r.pathname))return s;let c=``;try{c=(await s.clone().json())?.error?.code||``}catch{return s}if(c!==`CSRF_TOKEN_INVALID`)return s;let l=await m(`/api/v1/system/bootstrap`,{credentials:`same-origin`});return!l.ok||(p=(await l.json()).csrfToken||``,!p)?s:(i.set(`X-CSRF-Token`,p),m(a,{...o,headers:i}))}async function _(){let e=window.location.hash.match(/(?:^#|&)session=([^&]+)/);if(e){let t=await m(`/api/v1/system/session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:decodeURIComponent(e[1])}),credentials:`same-origin`});if(!t.ok)throw Error(`本地 Studio 会话已失效,请重新启动服务。`);p=(await t.json()).csrfToken||``,window.history.replaceState(null,``,`${window.location.pathname}${window.location.search}`);return}let t=await m(`/api/v1/system/bootstrap`,{credentials:`same-origin`});t.ok&&(p=(await t.json()).csrfToken||``)}var v=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),y=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),b=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),x=e=>{let t=b(e);return t.charAt(0).toUpperCase()+t.slice(1)},S={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},C=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},w=(0,s.createContext)({}),T=()=>(0,s.useContext)(w),E=(0,s.forwardRef)(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...c},l)=>{let{size:u=24,strokeWidth:d=2,absoluteStrokeWidth:f=!1,color:p=`currentColor`,className:m=``}=T()??{},h=r??f?Number(n??d)*24/Number(t??u):n??d;return(0,s.createElement)(`svg`,{ref:l,...S,width:t??u??S.width,height:t??u??S.height,stroke:e??p,strokeWidth:h,className:v(`lucide`,m,i),...!a&&!C(c)&&{"aria-hidden":`true`},...c},[...o.map(([e,t])=>(0,s.createElement)(e,t)),...Array.isArray(a)?a:[a]])}),D=(e,t)=>{let n=(0,s.forwardRef)(({className:n,...r},i)=>(0,s.createElement)(E,{ref:i,iconNode:t,className:v(`lucide-${y(x(e))}`,`lucide-${e}`,n),...r}));return n.displayName=x(e),n},O=D(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),k=D(`archive`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8`,key:`1s80jp`}],[`path`,{d:`M10 12h4`,key:`a56b0p`}]]),A=D(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),j=D(`arrow-right`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),M=D(`book-open`,[[`path`,{d:`M12 5v16`,key:`1f6ucr`}],[`path`,{d:`M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z`,key:`1fyvmf`}]]),N=D(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),P=D(`box`,[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]),F=D(`boxes`,[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`,key:`lc1i9w`}],[`path`,{d:`m7 16.5-4.74-2.85`,key:`1o9zyk`}],[`path`,{d:`m7 16.5 5-3`,key:`va8pkn`}],[`path`,{d:`M7 16.5v5.17`,key:`jnp8gn`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`,key:`8zsnat`}],[`path`,{d:`m17 16.5-5-3`,key:`8arw3v`}],[`path`,{d:`m17 16.5 4.74-2.85`,key:`8rfmw`}],[`path`,{d:`M17 16.5v5.17`,key:`k6z78m`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`,key:`1xygjf`}],[`path`,{d:`M12 8 7.26 5.15`,key:`1vbdud`}],[`path`,{d:`m12 8 4.74-2.85`,key:`3rx089`}],[`path`,{d:`M12 13.5V8`,key:`1io7kd`}]]),I=D(`braces`,[[`path`,{d:`M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1`,key:`ezmyqa`}],[`path`,{d:`M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1`,key:`e1hn23`}]]),L=D(`brain-circuit`,[[`path`,{d:`M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z`,key:`l5xja`}],[`path`,{d:`M9 13a4.5 4.5 0 0 0 3-4`,key:`10igwf`}],[`path`,{d:`M6.003 5.125A3 3 0 0 0 6.401 6.5`,key:`105sqy`}],[`path`,{d:`M3.477 10.896a4 4 0 0 1 .585-.396`,key:`ql3yin`}],[`path`,{d:`M6 18a4 4 0 0 1-1.967-.516`,key:`2e4loj`}],[`path`,{d:`M12 13h4`,key:`1ku699`}],[`path`,{d:`M12 18h6a2 2 0 0 1 2 2v1`,key:`105ag5`}],[`path`,{d:`M12 8h8`,key:`1lhi5i`}],[`path`,{d:`M16 8V5a2 2 0 0 1 2-2`,key:`u6izg6`}],[`circle`,{cx:`16`,cy:`13`,r:`.5`,key:`ry7gng`}],[`circle`,{cx:`18`,cy:`3`,r:`.5`,key:`1aiba7`}],[`circle`,{cx:`20`,cy:`21`,r:`.5`,key:`yhc1fs`}],[`circle`,{cx:`20`,cy:`8`,r:`.5`,key:`1e43v0`}]]),R=D(`brain`,[[`path`,{d:`M12 18V5`,key:`adv99a`}],[`path`,{d:`M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4`,key:`1e3is1`}],[`path`,{d:`M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5`,key:`1gqd8o`}],[`path`,{d:`M17.997 5.125a4 4 0 0 1 2.526 5.77`,key:`iwvgf7`}],[`path`,{d:`M18 18a4 4 0 0 0 2-7.464`,key:`efp6ie`}],[`path`,{d:`M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517`,key:`1gq6am`}],[`path`,{d:`M6 18a4 4 0 0 1-2-7.464`,key:`k1g0md`}],[`path`,{d:`M6.003 5.125a4 4 0 0 0-2.526 5.77`,key:`q97ue3`}]]),z=D(`calendar-clock`,[[`path`,{d:`M16 14v2.2l1.6 1`,key:`fo4ql5`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`path`,{d:`M21 7.338V5a2 2 0 00-2-2H5a2 2 0 00-2 2v14a2 2 0 002 2h2.338`,key:`7hb8p4`}],[`path`,{d:`M3 9h5.859`,key:`numkqi`}],[`path`,{d:`M8 2v3`,key:`1ioesn`}],[`circle`,{cx:`16`,cy:`16`,r:`6`,key:`qoo3c4`}]]),B=D(`chart-spline`,[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`,key:`c24i48`}],[`path`,{d:`M7 16c.5-2 1.5-7 4-7 2 0 2 3 4 3 2.5 0 4.5-5 5-7`,key:`lw07rv`}]]),V=D(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),H=D(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),ee=D(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),te=D(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),ne=D(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),U=D(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),re=D(`circle-check-big`,[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),ie=D(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),ae=D(`circle-dot`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}]]),oe=D(`circle-off`,[[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M8.35 2.69A10 10 0 0 1 21.3 15.65`,key:`1pfsoa`}],[`path`,{d:`M19.08 19.08A10 10 0 1 1 4.92 4.92`,key:`1ablyi`}]]),se=D(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),ce=D(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),le=D(`clipboard-check`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`m9 14 2 2 4-4`,key:`df797q`}]]),ue=D(`clock-3`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6h4`,key:`135r8i`}]]),de=D(`cloud-upload`,[[`path`,{d:`M12 13v8`,key:`1l5pq0`}],[`path`,{d:`M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242`,key:`1pljnt`}],[`path`,{d:`m8 17 4-4 4 4`,key:`1quai1`}]]),W=D(`code-xml`,[[`path`,{d:`m18 16 4-4-4-4`,key:`1inbqp`}],[`path`,{d:`m6 8-4 4 4 4`,key:`15zrgr`}],[`path`,{d:`m14.5 4-5 16`,key:`e7oirm`}]]),fe=D(`code`,[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]),pe=D(`coins`,[[`path`,{d:`M13.744 17.736a6 6 0 1 1-7.48-7.48`,key:`bq4yh3`}],[`path`,{d:`M15 6h1v4`,key:`11y1tn`}],[`path`,{d:`m6.134 14.768.866-.5 2 3.464`,key:`17snzx`}],[`circle`,{cx:`16`,cy:`8`,r:`6`,key:`14bfc9`}]]),me=D(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),he=D(`corner-down-left`,[[`path`,{d:`M20 4v7a4 4 0 0 1-4 4H4`,key:`6o5b7l`}],[`path`,{d:`m9 10-5 5 5 5`,key:`1kshq7`}]]),ge=D(`cpu`,[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]),_e=D(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),ve=D(`ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]),ye=D(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),be=D(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),xe=D(`file-box`,[[`path`,{d:`M14 2v5a1 1 0 001 1h5`,key:`9v5fu7`}],[`path`,{d:`M14.692 22H18a2 2 0 002-2V8a2.4 2.4 0 00-.706-1.706l-3.588-3.588A2.4 2.4 0 0014 2H6a2 2 0 00-2 2v3.804`,key:`1ne0j7`}],[`path`,{d:`M2.264 13.752 7 16.5l4.737-2.748`,key:`t73mg3`}],[`path`,{d:`M2.995 13.014A2 2 0 002 14.744v3.516a2 2 0 00.996 1.73l3 1.74a2 2 0 002.008 0l3-1.74A2 2 0 0012 18.26v-3.517a2 2 0 00-.995-1.73l-3-1.742a2 2 0 00-1.892-.064z`,key:`h4qck`}],[`path`,{d:`M7 16.5V22`,key:`1i1gou`}]]),Se=D(`file-code-corner`,[[`path`,{d:`M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35`,key:`1wthlu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m5 16-3 3 3 3`,key:`331omg`}],[`path`,{d:`m9 22 3-3-3-3`,key:`lsp7cz`}]]),Ce=D(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),we=D(`file-up`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`m15 15-3-3-3 3`,key:`15xj92`}]]),Te=D(`folder-closed`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}],[`path`,{d:`M2 10h20`,key:`1ir3d8`}]]),Ee=D(`folder`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),De=D(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),Oe=D(`git-branch`,[[`path`,{d:`M15 6a9 9 0 0 0-9 9V3`,key:`1cii5b`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}]]),ke=D(`hand`,[[`path`,{d:`M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2`,key:`1fvzgz`}],[`path`,{d:`M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2`,key:`1kc0my`}],[`path`,{d:`M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8`,key:`10h0bg`}],[`path`,{d:`M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15`,key:`1s1gnw`}]]),Ae=D(`image-plus`,[[`path`,{d:`M16 5h6`,key:`1vod17`}],[`path`,{d:`M19 2v6`,key:`4bpg5p`}],[`path`,{d:`M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5`,key:`1ue2ih`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}]]),je=D(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),Me=D(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]),Ne=D(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),Pe=D(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),Fe=D(`message-square-plus`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}],[`path`,{d:`M12 8v6`,key:`1ib9pf`}],[`path`,{d:`M9 11h6`,key:`1fldmi`}]]),Ie=D(`message-square`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}]]),Le=D(`messages-square`,[[`path`,{d:`M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z`,key:`1n2ejm`}],[`path`,{d:`M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1`,key:`1qfcsi`}]]),Re=D(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]),ze=D(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),Be=D(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),Ve=D(`network`,[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`4q2zg0`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`8cvhb9`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`,key:`1egb70`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`,key:`1jsf9p`}],[`path`,{d:`M12 12V8`,key:`2874zd`}]]),He=D(`package-check`,[[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`path`,{d:`m16 17 2 2 4-4`,key:`uh5qu3`}],[`path`,{d:`M21 11.127V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.729l7 4a2 2 0 0 0 2 .001l1.32-.753`,key:`kpkbpo`}],[`path`,{d:`M3.29 7 12 12l8.71-5`,key:`19ckod`}],[`path`,{d:`m7.5 4.27 8.997 5.148`,key:`9yrvtv`}]]),Ue=D(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),We=D(`panel-left-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]]),Ge=D(`panel-left-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m14 9 3 3-3 3`,key:`8010ee`}]]),Ke=D(`panel-right`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}]]),qe=D(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),Je=D(`pause`,[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]),Ye=D(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),Xe=D(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),Ze=D(`plug`,[[`path`,{d:`M12 22v-5`,key:`1ega77`}],[`path`,{d:`M15 8V2`,key:`18g5xt`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`,key:`1xoxul`}],[`path`,{d:`M9 8V2`,key:`14iosj`}]]),Qe=D(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),$e=D(`puzzle`,[[`path`,{d:`M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z`,key:`w46dr5`}]]),et=D(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),tt=D(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),nt=D(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),rt=D(`server-cog`,[[`path`,{d:`m10.852 14.772-.383.923`,key:`11vil6`}],[`path`,{d:`M13.148 14.772a3 3 0 1 0-2.296-5.544l-.383-.923`,key:`1v3clb`}],[`path`,{d:`m13.148 9.228.383-.923`,key:`t2zzyc`}],[`path`,{d:`m13.53 15.696-.382-.924a3 3 0 1 1-2.296-5.544`,key:`1bxfiv`}],[`path`,{d:`m14.772 10.852.923-.383`,key:`k9m8cz`}],[`path`,{d:`m14.772 13.148.923.383`,key:`1xvhww`}],[`path`,{d:`M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5`,key:`tn8das`}],[`path`,{d:`M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5`,key:`1g2pve`}],[`path`,{d:`M6 18h.01`,key:`uhywen`}],[`path`,{d:`M6 6h.01`,key:`1utrut`}],[`path`,{d:`m9.228 10.852-.923-.383`,key:`1wtb30`}],[`path`,{d:`m9.228 13.148-.923.383`,key:`1a830x`}]]),it=D(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),at=D(`shield-alert`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),ot=D(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),st=D(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]),ct=D(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]),lt=D(`square-pen`,[[`path`,{d:`M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`,key:`1m0v6g`}],[`path`,{d:`M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z`,key:`ohrbg2`}]]),ut=D(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),dt=D(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),ft=D(`target`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`6`,key:`1vlfrh`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]),pt=D(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),mt=D(`text-wrap`,[[`path`,{d:`m16 16-3 3 3 3`,key:`117b85`}],[`path`,{d:`M3 12h14.5a1 1 0 0 1 0 7H13`,key:`18xa6z`}],[`path`,{d:`M3 19h6`,key:`1ygdsz`}],[`path`,{d:`M3 5h18`,key:`1u36vt`}]]),ht=D(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),gt=D(`undo-2`,[[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}],[`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11`,key:`f3b9sd`}]]),_t=D(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),vt=D(`workflow`,[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`,key:`by2w9f`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`,key:`xkn7yn`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`,key:`1cgmvn`}]]),yt=D(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),bt=D(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),xt=D(`zap`,[[`path`,{d:`M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z`,key:`1v7up4`}]]),G=o(),St={bot:N,sparkles:ct,search:tt,code:W,workflow:Ve};function Ct({name:e,appearance:t,template:n,size:r=`md`,className:i=``}){let a=St[t?.icon||(n===`research`?`search`:`bot`)],o={"--agent-avatar-color":t?.color||(n===`research`?`#2d7c68`:`#426ea8`)};return(0,G.jsx)(`span`,{className:`agent-avatar agent-avatar-${r}${i?` ${i}`:``}`,style:o,role:`img`,"aria-label":`${e}头像`,children:t?.imageUrl?(0,G.jsx)(`img`,{src:t.imageUrl,alt:``,draggable:!1}):(0,G.jsx)(a,{"aria-hidden":!0,size:r===`lg`?22:r===`xs`?12:16})})}var wt=Object.defineProperty,Tt=(e,t)=>wt(e,`name`,{value:t,configurable:!0}),Et=!!(typeof window<`u`&&window.document&&window.document.createElement);function K(e,t,{checkForDefaultPrevented:n=!0}={}){return Tt(function(r){if(e?.(r),n===!1||!r||!r.defaultPrevented)return t?.(r)},`handleEvent`)}Tt(K,`composeEventHandlers`);function Dt(e){if(!Et)throw Error(`Cannot access window outside of the DOM`);return e?.ownerDocument?.defaultView??window}Tt(Dt,`getOwnerWindow`);function Ot(e){if(!Et)throw Error(`Cannot access document outside of the DOM`);return e?.ownerDocument??document}Tt(Ot,`getOwnerDocument`);function kt(e,t=!1){let{activeElement:n}=Ot(e);if(!n?.nodeName)return null;if(At(n)&&n.contentDocument)return kt(n.contentDocument.body,t);if(t){let e=n.getAttribute(`aria-activedescendant`);if(e){let t=Ot(n).getElementById(e);if(t)return t}}return n}Tt(kt,`getActiveElement`);function At(e){return e.tagName===`IFRAME`}Tt(At,`isFrame`);var jt=Object.defineProperty,Mt=(e,t)=>jt(e,`name`,{value:t,configurable:!0});function Nt(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}Mt(Nt,`setRef`);function Pt(...e){return t=>{let n=!1,r=e.map(e=>{let r=Nt(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;tIt(e,`name`,{value:t,configurable:!0});function Rt(e,t){let n=s.createContext(t);n.displayName=e+`Context`;let r=Lt(e=>{let{children:t,...r}=e,i=s.useMemo(()=>r,Object.values(r));return(0,G.jsx)(n.Provider,{value:i,children:t})},`Provider`);r.displayName=e+`Provider`;function i(r,i={}){let{optional:a=!1}=i,o=s.useContext(n);if(o)return o;if(t!==void 0)return t;if(!a)throw Error(`\`${r}\` must be used within \`${e}\``)}return Lt(i,`useContext`),[r,i]}Lt(Rt,`createContext`);function zt(e,t=[]){let n=[];function r(t,r){let i=s.createContext(r);i.displayName=t+`Context`;let a=n.length;n=[...n,r];let o=Lt(t=>{let{scope:n,children:r,...o}=t,c=n?.[e]?.[a]||i,l=s.useMemo(()=>o,Object.values(o));return(0,G.jsx)(c.Provider,{value:l,children:r})},`Provider`);o.displayName=t+`Provider`;function c(n,o,c={}){let{optional:l=!1}=c,u=o?.[e]?.[a]||i,d=s.useContext(u);if(d)return d;if(r!==void 0)return r;if(!l)throw Error(`\`${n}\` must be used within \`${t}\``)}return Lt(c,`useContext`),[o,c]}Lt(r,`createContext`);let i=Lt(()=>{let t=n.map(e=>s.createContext(e));return Lt(function(n){let r=n?.[e]||t;return s.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])},`useScope`)},`createScope`);return i.scopeName=e,[r,Bt(i,...t)]}Lt(zt,`createContextScope`);function Bt(...e){let t=e[0];if(e.length===1)return t;let n=Lt(()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return Lt(function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return s.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])},`useComposedScopes`)},`createScope`);return n.scopeName=t.scopeName,n}Lt(Bt,`composeContextScopes`);var Vt=globalThis?.document?s.useLayoutEffect:()=>{},Ht=Object.defineProperty,Ut=(e,t)=>Ht(e,`name`,{value:t,configurable:!0}),Wt=s.useId||(()=>void 0),Gt=0;function Kt(e){let[t,n]=s.useState(Wt());return Vt(()=>{e||n(e=>e??String(Gt++))},[e]),e||(t?`radix-${t}`:``)}Ut(Kt,`useId`);var qt=Object.defineProperty,Jt=(e,t)=>qt(e,`name`,{value:t,configurable:!0}),Yt=s.useEffectEvent,Xt=s.useInsertionEffect;function Zt(e){if(typeof Yt==`function`)return Yt(e);let t=s.useRef(()=>{throw Error(`Cannot call an event handler while rendering.`)});return typeof Xt==`function`?Xt(()=>{t.current=e}):Vt(()=>{t.current=e}),s.useMemo(()=>((...e)=>t.current?.(...e)),[])}Jt(Zt,`useEffectEvent`);var Qt=Object.defineProperty,$t=(e,t)=>Qt(e,`name`,{value:t,configurable:!0}),en=s.useInsertionEffect||Vt;function tn({prop:e,defaultProp:t,onChange:n=$t(()=>{},`onChange`),caller:r}){let[i,a,o]=nn({defaultProp:t,onChange:n}),c=e!==void 0;return[c?e:i,s.useCallback(t=>{if(c){let n=rn(t)?t(e):t;n!==e&&o.current?.(n)}else a(t)},[c,e,a,o])]}$t(tn,`useControllableState`);function nn({defaultProp:e,onChange:t}){let[n,r]=s.useState(e),i=s.useRef(n),a=s.useRef(t);return en(()=>{a.current=t},[t]),s.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}$t(nn,`useUncontrolledState`);function rn(e){return typeof e==`function`}$t(rn,`isFunction`);var an=Symbol(`RADIX:SYNC_STATE`);function on(e,t,n,r){let{prop:i,defaultProp:a,onChange:o,caller:c}=t,l=i!==void 0,u=Zt(o),d=[{...n,state:a}];r&&d.push(r);let[f,p]=s.useReducer((t,n)=>{if(n.type===an)return{...t,state:n.state};let r=e(t,n);return l&&!Object.is(r.state,t.state)&&u(r.state),r},...d),m=f.state,h=s.useRef(m);s.useEffect(()=>{h.current!==m&&(h.current=m,l||u(m))},[m,h,l]);let g=s.useMemo(()=>i===void 0?f:{...f,state:i},[f,i]);return s.useEffect(()=>{l&&!Object.is(i,f.state)&&p({type:an,state:i})},[i,f.state,l]),[g,p]}$t(on,`useControllableStateReducer`);var sn=t(a(),1),cn=Object.defineProperty,ln=(e,t)=>cn(e,`name`,{value:t,configurable:!0});function un(e){let t=s.forwardRef((t,n)=>{let{children:r,...i}=t,a=null,o=!1,c=[];vn(r)&&typeof Sn==`function`&&(r=Sn(r._payload)),s.Children.forEach(r,e=>{if(gn(e)){o=!0;let t=e,n=`child`in t.props?t.props.child:t.props.children;vn(n)&&typeof Sn==`function`&&(n=Sn(n._payload)),a=pn(t,n),c.push(a?.props?.children)}else c.push(e)}),a?a=s.cloneElement(a,void 0,c):!o&&s.Children.count(r)===1&&s.isValidElement(r)&&(a=r);let l=a?hn(a):void 0,u=Ft(n,l);if(!a){if(r||r===0)throw Error(o?xn(e):bn(e));return r}let d=mn(i,a.props??{});return a.type!==s.Fragment&&(d.ref=n?u:l),s.cloneElement(a,d)});return t.displayName=`${e}.Slot`,t}ln(un,`createSlot`);var dn=Symbol.for(`radix.slottable`);function fn(e){let t=ln(e=>`child`in e?e.children(e.child):e.children,`Slottable`);return t.displayName=`${e}.Slottable`,t.__radixId=dn,t}ln(fn,`createSlottable`);var pn=ln((e,t)=>{if(`child`in e.props){let t=e.props.child;return s.isValidElement(t)?s.cloneElement(t,void 0,e.props.children(t.props.children)):null}return s.isValidElement(t)?t:null},`getSlottableElementFromSlottable`);function mn(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}ln(mn,`mergeProps`);function hn(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}ln(hn,`getElementRef`);function gn(e){return s.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===dn}ln(gn,`isSlottable`);var _n=Symbol.for(`react.lazy`);function vn(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===_n&&`_payload`in e&&yn(e._payload)}ln(vn,`isLazyComponent`);function yn(e){return typeof e==`object`&&!!e&&`then`in e}ln(yn,`isPromiseLike`);var bn=ln(e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,`createSlotError`),xn=ln(e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,`createSlottableError`),Sn=s.use,Cn=Object.defineProperty,wn=(e,t)=>Cn(e,`name`,{value:t,configurable:!0}),Tn=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=un(`Primitive.${t}`),r=s.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,G.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function En(e,t){e&&sn.flushSync(()=>e.dispatchEvent(t))}wn(En,`dispatchDiscreteCustomEvent`);var Dn=Object.defineProperty,On=(e,t)=>Dn(e,`name`,{value:t,configurable:!0});function kn(e){let t=s.useRef(e);return s.useEffect(()=>{t.current=e}),s.useMemo(()=>((...e)=>t.current?.(...e)),[])}On(kn,`useCallbackRef`);var An=Object.defineProperty,jn=(e,t)=>An(e,`name`,{value:t,configurable:!0}),Mn=`dismissableLayer.update`,Nn=`dismissableLayer.pointerDownOutside`,Pn=`dismissableLayer.focusOutside`,Fn,In=s.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),Ln=s.forwardRef(jn(function(e,t){let{disableOutsidePointerEvents:n=!1,deferPointerDownOutside:r=!1,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:o,onInteractOutside:c,onDismiss:l,...u}=e,d=s.useContext(In),[f,p]=s.useState(null),m=f?.ownerDocument??globalThis?.document,[,h]=s.useState({}),g=Ft(t,p),_=Array.from(d.layers),[v]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),y=v?_.indexOf(v):-1,b=f?_.indexOf(f):-1,x=d.layersWithOutsidePointerEventsDisabled.size>0,S=b>=y,C=s.useRef(!1),w=Bn(e=>{a?.(e),c?.(e),e.defaultPrevented||l?.()},{ownerDocument:m,deferPointerDownOutside:r,isDeferredPointerDownOutsideRef:C,dismissableSurfaces:d.dismissableSurfaces,shouldHandlePointerDownOutside:s.useCallback(e=>{if(!(e instanceof Node))return!1;let t=[...d.branches].some(t=>t.contains(e));return S&&!t},[d.branches,S])}),T=Vn(e=>{if(r&&C.current)return;let t=e.target;[...d.branches].some(e=>e.contains(t))||(o?.(e),c?.(e),e.defaultPrevented||l?.())},m),E=f?b===_.length-1:!1,D=kn(e=>{e.key===`Escape`&&(i?.(e),!e.defaultPrevented&&l&&(e.preventDefault(),l()))});return s.useEffect(()=>{if(E)return m.addEventListener(`keydown`,D,{capture:!0}),()=>m.removeEventListener(`keydown`,D,{capture:!0})},[m,E,D]),s.useEffect(()=>{if(f)return n&&(d.layersWithOutsidePointerEventsDisabled.size===0&&(Fn=m.body.style.pointerEvents,m.body.style.pointerEvents=`none`),d.layersWithOutsidePointerEventsDisabled.add(f)),d.layers.add(f),Hn(),()=>{n&&(d.layersWithOutsidePointerEventsDisabled.delete(f),d.layersWithOutsidePointerEventsDisabled.size===0&&(m.body.style.pointerEvents=Fn))}},[f,m,n,d]),s.useEffect(()=>()=>{f&&(d.layers.delete(f),d.layersWithOutsidePointerEventsDisabled.delete(f),Hn())},[f,d]),s.useEffect(()=>{let e=jn(()=>h({}),`handleUpdate`);return document.addEventListener(Mn,e),()=>document.removeEventListener(Mn,e)},[]),(0,G.jsx)(Tn.div,{...u,ref:g,style:{pointerEvents:x?S?`auto`:`none`:void 0,...e.style},onFocusCapture:K(e.onFocusCapture,T.onFocusCapture),onBlurCapture:K(e.onBlurCapture,T.onBlurCapture),onPointerDownCapture:K(e.onPointerDownCapture,w.onPointerDownCapture)})},`DismissableLayer`));function Rn(){let e=s.useContext(In),[t,n]=s.useState(null);return s.useEffect(()=>{if(t)return e.dismissableSurfaces.add(t),()=>{e.dismissableSurfaces.delete(t)}},[t,e.dismissableSurfaces]),n}jn(Rn,`useDismissableLayerSurface`);var zn=jn(()=>!0,`IS_TRUE`);function Bn(e,t){let{ownerDocument:n=globalThis?.document,deferPointerDownOutside:r=!1,isDeferredPointerDownOutsideRef:i,dismissableSurfaces:a,shouldHandlePointerDownOutside:o=zn}=t,c=kn(e),l=s.useRef(!1),u=s.useRef(!1),d=s.useRef(new Map),f=s.useRef(()=>{});return s.useEffect(()=>{function e(){u.current=!1,i.current=!1,d.current.clear()}jn(e,`resetOutsideInteraction`);function t(){return Array.from(d.current.values()).some(Boolean)}jn(t,`isOutsideInteractionIntercepted`);function s(e){if(!u.current)return;let t=e.target;t instanceof Node&&[...a].some(e=>e.contains(t))||d.current.set(e.type,!0),e.type===`click`&&window.setTimeout(()=>{u.current&&f.current()},0)}jn(s,`handleInteractionCapture`);function p(e){u.current&&d.current.set(e.type,!1)}jn(p,`handleInteractionBubble`);let m=jn(a=>{if(a.target&&!l.current){let s=function(){n.removeEventListener(`click`,f.current);let r=t();e(),r||Un(Nn,c,p,{discrete:!0})};if(jn(s,`handleAndDispatchPointerDownOutsideEvent`),!o(a.target)){n.removeEventListener(`click`,f.current),e(),l.current=!1;return}let p={originalEvent:a};u.current=!0,i.current=r&&a.button===0,d.current.clear(),!r||a.button!==0?s():(n.removeEventListener(`click`,f.current),f.current=s,n.addEventListener(`click`,f.current,{once:!0}))}else n.removeEventListener(`click`,f.current),e();l.current=!1},`handlePointerDown`),h=[`pointerup`,`mousedown`,`mouseup`,`touchstart`,`touchend`,`click`];for(let e of h)n.addEventListener(e,s,!0),n.addEventListener(e,p);let g=window.setTimeout(()=>{n.addEventListener(`pointerdown`,m)},0);return()=>{window.clearTimeout(g),n.removeEventListener(`pointerdown`,m),n.removeEventListener(`click`,f.current);for(let e of h)n.removeEventListener(e,s,!0),n.removeEventListener(e,p)}},[n,c,r,i,a,o]),{onPointerDownCapture:jn(()=>l.current=!0,`onPointerDownCapture`)}}jn(Bn,`usePointerDownOutside`);function Vn(e,t=globalThis?.document){let n=kn(e),r=s.useRef(!1);return s.useEffect(()=>{let e=jn(e=>{e.target&&!r.current&&Un(Pn,n,{originalEvent:e},{discrete:!1})},`handleFocus`);return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:jn(()=>r.current=!0,`onFocusCapture`),onBlurCapture:jn(()=>r.current=!1,`onBlurCapture`)}}jn(Vn,`useFocusOutside`);function Hn(){let e=new CustomEvent(Mn);document.dispatchEvent(e)}jn(Hn,`dispatchUpdate`);function Un(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?En(i,a):i.dispatchEvent(a)}jn(Un,`handleAndDispatchCustomEvent`);var Wn=Object.defineProperty,Gn=(e,t)=>Wn(e,`name`,{value:t,configurable:!0}),Kn=`focusScope.autoFocusOnMount`,qn=`focusScope.autoFocusOnUnmount`,Jn={bubbles:!1,cancelable:!0},Yn=s.forwardRef(Gn(function(e,t){let{loop:n=!1,trapped:r=!1,onMountAutoFocus:i,onUnmountAutoFocus:a,...o}=e,[c,l]=s.useState(null),u=kn(i),d=kn(a),f=s.useRef(null),p=Ft(t,l),m=s.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;s.useEffect(()=>{if(r){let e=function(e){if(m.paused||!c)return;let t=e.target;c.contains(t)?f.current=t:nr(f.current,{select:!0})},t=function(e){if(m.paused||!c)return;let t=e.relatedTarget;t!==null&&(c.contains(t)||nr(f.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&nr(c)};Gn(e,`handleFocusIn`),Gn(t,`handleFocusOut`),Gn(n,`handleMutations`),document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return c&&r.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,c,m.paused]),s.useEffect(()=>{if(c){rr.add(m);let e=document.activeElement;if(!c.contains(e)){let t=new CustomEvent(Kn,Jn);c.addEventListener(Kn,u),c.dispatchEvent(t),t.defaultPrevented||(Xn(or(Qn(c)),{select:!0}),document.activeElement===e&&nr(c))}return()=>{c.removeEventListener(Kn,u),setTimeout(()=>{let t=new CustomEvent(qn,Jn);c.addEventListener(qn,d),c.dispatchEvent(t),t.defaultPrevented||nr(e??document.body,{select:!0}),c.removeEventListener(qn,d),rr.remove(m)},0)}}},[c,u,d,m]);let h=s.useCallback(e=>{if(!n&&!r||m.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=Zn(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&nr(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&nr(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,m.paused]);return(0,G.jsx)(Tn.div,{tabIndex:-1,...o,ref:p,onKeyDown:h})},`FocusScope`));function Xn(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(nr(r,{select:t}),document.activeElement!==n)return}Gn(Xn,`focusFirst`);function Zn(e){let t=Qn(e);return[$n(t,e),$n(t.reverse(),e)]}Gn(Zn,`getTabbableEdges`);function Qn(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:Gn(e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP},`acceptNode`)});for(;n.nextNode();)t.push(n.currentNode);return t}Gn(Qn,`getTabbableCandidates`);function $n(e,t){let n=typeof t.checkVisibility==`function`&&t.checkVisibility({checkVisibilityCSS:!0});for(let r of e)if(!(n?!r.checkVisibility({checkVisibilityCSS:!0}):er(r,{upTo:t})))return r}Gn($n,`findVisible`);function er(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}Gn(er,`isHidden`);function tr(e){return e instanceof HTMLInputElement&&`select`in e}Gn(tr,`isSelectableInput`);function nr(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&tr(e)&&t&&e.select()}}Gn(nr,`focus`);var rr=ir();function ir(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=ar(e,t),e.unshift(t)},remove(t){e=ar(e,t),e[0]?.resume()}}}Gn(ir,`createFocusScopesStack`);function ar(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}Gn(ar,`arrayRemove`);function or(e){return e.filter(e=>e.tagName!==`A`)}Gn(or,`removeLinks`);var sr=Object.defineProperty,cr=s.forwardRef(((e,t)=>sr(e,`name`,{value:t,configurable:!0}))(function(e,t){let{container:n,...r}=e,[i,a]=s.useState(!1);Vt(()=>a(!0),[]);let o=n||i&&globalThis?.document?.body;return o?sn.createPortal((0,G.jsx)(Tn.div,{...r,ref:t}),o):null},`Portal`)),lr=Object.defineProperty,ur=(e,t)=>lr(e,`name`,{value:t,configurable:!0});function dr(e,t){return s.useReducer((e,n)=>t[e][n]??e,e)}ur(dr,`useStateMachine`);var fr=ur(e=>{let{present:t,children:n}=e,r=pr(t),i=typeof n==`function`?n({present:r.isPresent}):s.Children.only(n),a=hr(r.ref,_r(i));return typeof n==`function`||r.isPresent?s.cloneElement(i,{ref:a}):null},`Presence`);function pr(e){let[t,n]=s.useState(),r=s.useRef(null),i=s.useRef(e),a=s.useRef(`none`),o=s.useRef(void 0),[c,l]=dr(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return s.useEffect(()=>{c===`mounted`?(a.current=o.current??gr(r.current),o.current=void 0):a.current=`none`},[c]),Vt(()=>{let t=r.current,n=i.current;if(n!==e){let r=a.current,s=gr(t);e?(o.current=s,l(`MOUNT`)):s===`none`||t?.display===`none`?l(`UNMOUNT`):l(n&&r!==s?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,l]),Vt(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,o=ur(a=>{let o=gr(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(l(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},`handleAnimationEnd`),s=ur(e=>{e.target===t&&(a.current=gr(r.current))},`handleAnimationStart`);return t.addEventListener(`animationstart`,s),t.addEventListener(`animationcancel`,o),t.addEventListener(`animationend`,o),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,s),t.removeEventListener(`animationcancel`,o),t.removeEventListener(`animationend`,o)}}l(`ANIMATION_END`)},[t,l]),{isPresent:[`mounted`,`unmountSuspended`].includes(c),ref:s.useCallback(e=>{if(e){let t=getComputedStyle(e);r.current=t,o.current=gr(t)}else r.current=null;n(e)},[])}}ur(pr,`usePresence`);function mr(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}ur(mr,`setRef`);function hr(...e){let t=s.useRef(e);return t.current=e,s.useCallback(e=>{let n=t.current,r=!1,i=n.map(t=>{let n=mr(t,e);return!r&&typeof n==`function`&&(r=!0),n});if(r)return()=>{for(let e=0;evr(e,`name`,{value:t,configurable:!0}),br=0,xr=null;function Sr(e){return Cr(),e.children}yr(Sr,`FocusGuards`);function Cr(){s.useEffect(()=>{xr||={start:wr(),end:wr()};let{start:e,end:t}=xr;return document.body.firstElementChild!==e&&document.body.insertAdjacentElement(`afterbegin`,e),document.body.lastElementChild!==t&&document.body.insertAdjacentElement(`beforeend`,t),br++,()=>{br===1&&(xr?.start.remove(),xr?.end.remove(),xr=null),br=Math.max(0,br-1)}},[])}yr(Cr,`useFocusGuards`);function wr(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}yr(wr,`createFocusGuard`);var Tr=function(e,t){return Tr=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Tr(e,t)};function Er(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Class extends value `+String(t)+` is not a constructor or null`);Tr(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var Dr=function(){return Dr=Object.assign||function(e){for(var t,n=1,r=arguments.length;n`u`)return ti;var t=ri(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},ai=ei(),oi=`data-scroll-locked`,si=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),` + .${Mr} { + overflow: hidden ${r}; + padding-right: ${s}px ${r}; + } + body[${oi}] { + overflow: hidden ${r}; + overscroll-behavior: contain; + ${[t&&`position: relative ${r};`,n===`margin`&&` + padding-left: ${i}px; + padding-top: ${a}px; + padding-right: ${o}px; + margin-left:0; + margin-top:0; + margin-right: ${s}px ${r}; + `,n===`padding`&&`padding-right: ${s}px ${r};`].filter(Boolean).join(``)} + } + + .${Ar} { + right: ${s}px ${r}; + } + + .${jr} { + margin-right: ${s}px ${r}; + } + + .${Ar} .${Ar} { + right: 0 ${r}; + } + + .${jr} .${jr} { + margin-right: 0 ${r}; + } + + body[${oi}] { + ${Nr}: ${s}px; + } +`},ci=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},li=function(){s.useEffect(function(){return document.body.setAttribute(oi,(ci()+1).toString()),function(){var e=ci()-1;e<=0?document.body.removeAttribute(oi):document.body.setAttribute(oi,e.toString())}},[])},ui=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;li();var a=s.useMemo(function(){return ii(i)},[i]);return s.createElement(ai,{styles:si(a,!t,i,n?``:`!important`)})},di=!1;if(typeof window<`u`)try{var fi=Object.defineProperty({},"passive",{get:function(){return di=!0,!0}});window.addEventListener(`test`,fi,fi),window.removeEventListener(`test`,fi,fi)}catch{di=!1}var pi=di?{passive:!1}:!1,mi=function(e){return e.tagName===`TEXTAREA`},hi=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!mi(e)&&n[t]===`visible`)},gi=function(e){return hi(e,`overflowY`)},_i=function(e){return hi(e,`overflowX`)},vi=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),xi(e,r)){var i=Si(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},yi=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},bi=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},xi=function(e,t){return e===`v`?gi(t):_i(t)},Si=function(e,t){return e===`v`?yi(t):bi(t)},Ci=function(e,t){return e===`h`&&t===`rtl`?-1:1},wi=function(e,t,n,r,i){var a=Ci(e,window.getComputedStyle(t).direction),o=a*r,s=n.target,c=t.contains(s),l=!1,u=o>0,d=0,f=0;do{if(!s)break;var p=Si(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&xi(e,s)&&(d+=h,f+=m);var g=s.parentNode;s=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&s!==document.body||c&&(t.contains(s)||t===s));return(u&&(i&&Math.abs(d)<1||!i&&o>d)||!u&&(i&&Math.abs(f)<1||!i&&-o>f))&&(l=!0),l},Ti=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Ei=function(e){return[e.deltaX,e.deltaY]},Di=function(e){return e&&`current`in e?e.current:e},Oi=function(e,t){return e[0]===t[0]&&e[1]===t[1]},ki=function(e){return` + .block-interactivity-${e} {pointer-events: none;} + .allow-interactivity-${e} {pointer-events: all;} +`},Ai=0,ji=[];function Mi(e){var t=s.useRef([]),n=s.useRef([0,0]),r=s.useRef(),i=s.useState(Ai++)[0],a=s.useState(ei)[0],o=s.useRef(e);s.useEffect(function(){o.current=e},[e]),s.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=kr([e.lockRef.current],(e.shards||[]).map(Di),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var c=s.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=Ti(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=vi(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=vi(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return wi(h,t,e,h===`h`?s:c,!0)},[]),l=s.useCallback(function(e){var n=e;if(!(!ji.length||ji[ji.length-1]!==a)){var r=`deltaY`in n?Ei(n):Ti(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&Oi(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var s=(o.current.shards||[]).map(Di).filter(Boolean).filter(function(e){return e.contains(n.target)});(s.length>0?c(n,s[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),u=s.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:Ni(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),d=s.useCallback(function(e){n.current=Ti(e),r.current=void 0},[]),f=s.useCallback(function(t){u(t.type,Ei(t),t.target,c(t,e.lockRef.current))},[]),p=s.useCallback(function(t){u(t.type,Ti(t),t.target,c(t,e.lockRef.current))},[]);s.useEffect(function(){return ji.push(a),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:p}),document.addEventListener(`wheel`,l,pi),document.addEventListener(`touchmove`,l,pi),document.addEventListener(`touchstart`,d,pi),function(){ji=ji.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,l,pi),document.removeEventListener(`touchmove`,l,pi),document.removeEventListener(`touchstart`,d,pi)}},[]);var m=e.removeScrollBar,h=e.inert;return s.createElement(s.Fragment,null,h?s.createElement(a,{styles:ki(i)}):null,m?s.createElement(ui,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Ni(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var Pi=Ur(Wr,Mi),Fi=s.forwardRef(function(e,t){return s.createElement(Kr,Dr({},e,{ref:t,sideCar:Pi}))});Fi.classNames=Kr.classNames;var Ii=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},Li=new WeakMap,Ri=new WeakMap,zi={},Bi=0,Vi=function(e){return e&&(e.host||Vi(e.parentNode))},Hi=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=Vi(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},Ui=function(e,t,n,r){var i=Hi(t,Array.isArray(e)?e:[e]);zi[n]||(zi[n]=new WeakMap);var a=zi[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(Li.get(e)||0)+1,l=(a.get(e)||0)+1;Li.set(e,c),a.set(e,l),o.push(e),c===1&&i&&Ri.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),Bi++,function(){o.forEach(function(e){var t=Li.get(e)-1,i=a.get(e)-1;Li.set(e,t),a.set(e,i),t||(Ri.has(e)||e.removeAttribute(r),Ri.delete(e)),i||e.removeAttribute(n)}),Bi--,Bi||(Li=new WeakMap,Li=new WeakMap,Ri=new WeakMap,zi={})}},Wi=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||Ii(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),Ui(r,i,n,`aria-hidden`)):function(){return null}},Gi=Object.defineProperty,Ki=(e,t)=>Gi(e,`name`,{value:t,configurable:!0}),qi=`Dialog`,[Ji,Yi]=zt(qi),[Xi,Zi]=Ji(qi),Qi=Ki(e=>{let{__scopeDialog:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!0}=e,c=s.useRef(null),l=s.useRef(null),[u,d]=tn({prop:r,defaultProp:i??!1,onChange:a,caller:qi}),[f,p]=s.useState(0),[m,h]=s.useState(0);return(0,G.jsx)(Xi,{scope:t,triggerRef:c,contentRef:l,contentId:Kt(),titleId:Kt(),descriptionId:Kt(),titlePresent:f>0,descriptionPresent:m>0,setTitleCount:p,setDescriptionCount:h,open:u,onOpenChange:d,onOpenToggle:s.useCallback(()=>d(e=>!e),[d]),modal:o,children:n})},`Dialog`),$i=`DialogPortal`,[ea,ta]=Ji($i,{forceMount:void 0}),na=Ki(e=>{let{__scopeDialog:t,forceMount:n,children:r,container:i}=e,a=Zi($i,t);return(0,G.jsx)(ea,{scope:t,forceMount:n,children:s.Children.map(r,e=>(0,G.jsx)(fr,{present:n||a.open,children:(0,G.jsx)(cr,{asChild:!0,container:i,children:e})}))})},`DialogPortal`),ra=`DialogOverlay`,ia=s.forwardRef(Ki(function(e,t){let n=ta(ra,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Zi(ra,e.__scopeDialog);return a.modal?(0,G.jsx)(fr,{present:r||a.open,children:(0,G.jsx)(oa,{...i,ref:t})}):null},`DialogOverlay`)),aa=un(`DialogOverlay.RemoveScroll`),oa=s.forwardRef(Ki(function(e,t){let{__scopeDialog:n,...r}=e,i=Zi(ra,n),a=Ft(t,Rn());return(0,G.jsx)(Fi,{as:aa,allowPinchZoom:!0,shards:[i.contentRef],children:(0,G.jsx)(Tn.div,{"data-state":va(i.open),...r,ref:a,style:{pointerEvents:`auto`,...r.style}})})},`DialogOverlayImpl`)),sa=`DialogContent`,ca=s.forwardRef(Ki(function(e,t){let n=ta(sa,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Zi(sa,e.__scopeDialog);return(0,G.jsx)(fr,{present:r||a.open,children:a.modal?(0,G.jsx)(la,{...i,ref:t}):(0,G.jsx)(ua,{...i,ref:t})})},`DialogContent`)),la=s.forwardRef(Ki(function(e,t){let n=Zi(sa,e.__scopeDialog),r=s.useRef(null),i=Ft(t,n.contentRef,r);return s.useEffect(()=>{let e=r.current;if(e)return Wi(e)},[]),(0,G.jsx)(da,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,onCloseAutoFocus:K(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:K(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()}),onFocusOutside:K(e.onFocusOutside,e=>e.preventDefault())})},`DialogContentModal`)),ua=s.forwardRef(Ki(function(e,t){let n=Zi(sa,e.__scopeDialog),r=s.useRef(!1),i=s.useRef(!1);return(0,G.jsx)(da,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})},`DialogContentNonModal`)),da=s.forwardRef(Ki(function(e,t){let{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,...o}=e,s=Zi(sa,n);return Cr(),(0,G.jsx)(G.Fragment,{children:(0,G.jsx)(Yn,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,G.jsx)(Ln,{role:`dialog`,id:s.contentId,"aria-describedby":s.descriptionPresent?s.descriptionId:void 0,"aria-labelledby":s.titlePresent?s.titleId:void 0,"data-state":va(s.open),...o,ref:t,deferPointerDownOutside:!0,onDismiss:()=>s.onOpenChange(!1)})})})},`DialogContentImpl`)),fa=`DialogTitle`,pa=s.forwardRef(Ki(function(e,t){let{__scopeDialog:n,...r}=e,i=Zi(fa,n),{setTitleCount:a}=i;return Vt(()=>(a(e=>e+1),()=>a(e=>e-1)),[a]),(0,G.jsx)(Tn.h2,{id:i.titleId,...r,ref:t})},`DialogTitle`)),ma=`DialogDescription`,ha=s.forwardRef(Ki(function(e,t){let{__scopeDialog:n,...r}=e,i=Zi(ma,n),{setDescriptionCount:a}=i;return Vt(()=>(a(e=>e+1),()=>a(e=>e-1)),[a]),(0,G.jsx)(Tn.p,{id:i.descriptionId,...r,ref:t})},`DialogDescription`)),ga=`DialogClose`,_a=s.forwardRef(Ki(function(e,t){let{__scopeDialog:n,...r}=e,i=Zi(ga,n);return(0,G.jsx)(Tn.button,{type:`button`,...r,ref:t,onClick:K(e.onClick,()=>i.onOpenChange(!1))})},`DialogClose`));function va(e){return e?`open`:`closed`}Ki(va,`getState`);var ya=[],ba=new Map,xa=[`.skip-link`,`.sidebar`,`.global-header`,`#mainContent`];function Sa(e){if(e){for(let e of document.querySelectorAll(xa.join(`,`)))ba.has(e)||ba.set(e,e.hasAttribute(`inert`)),e.setAttribute(`inert`,``);return}for(let[e,t]of ba)e.isConnected&&!t&&e.removeAttribute(`inert`);ba.clear()}function Ca(e){if(e.key!==`Escape`||!ya.length)return;let t=ya[ya.length-1];e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),t.disabled||t.close()}function wa(e){return ya.length||(document.addEventListener(`keydown`,Ca,!0),Sa(!0)),ya.push(e),()=>{let t=ya.lastIndexOf(e);t>=0&&ya.splice(t,1),ya.length||(document.removeEventListener(`keydown`,Ca,!0),Sa(!1))}}function Ta({open:e,onOpenChange:t,closeDisabled:n=!1,children:r}){return(0,G.jsx)(Qi,{open:e,onOpenChange:e=>{!e&&n||t(e)},children:r})}function Ea({open:e,className:t,closeDisabled:n=!1,role:r=`dialog`,onRequestClose:i,children:a}){let o=(0,s.useRef)(null),c=(0,s.useRef)({close:i,disabled:n});return c.current.close=i,c.current.disabled=n,(0,s.useEffect)(()=>{if(e)return o.current=document.activeElement instanceof HTMLElement?document.activeElement:null,wa(c.current)},[e]),(0,G.jsx)(na,{children:(0,G.jsxs)(`div`,{className:`overlay`,children:[(0,G.jsx)(ia,{className:`overlay-backdrop`}),(0,G.jsx)(ca,{className:t,role:r,"aria-busy":n||void 0,onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation()},onPointerDownOutside:e=>{n&&e.preventDefault()},onCloseAutoFocus:e=>{let t=o.current;t?.isConnected&&(e.preventDefault(),t.focus())},children:a})]})})}function Da({open:e,onOpenChange:t,title:n,description:r,icon:i,footer:a,children:o,closeDisabled:s=!1,showClose:c=!0,className:l,role:u=`dialog`}){return(0,G.jsx)(Ta,{open:e,onOpenChange:t,closeDisabled:s,children:(0,G.jsxs)(Ea,{open:e,className:`studio-dialog${l?` ${l}`:``}`,closeDisabled:s,role:u,onRequestClose:()=>t(!1),children:[i?(0,G.jsx)(`div`,{className:`studio-dialog-icon`,children:i}):null,(0,G.jsxs)(`header`,{className:`studio-dialog-header`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(pa,{children:n}),r?(0,G.jsx)(ha,{children:r}):null]}),c?(0,G.jsx)(_a,{asChild:!0,children:(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`关闭`,disabled:s,children:(0,G.jsx)(bt,{size:16})})}):null]}),o?(0,G.jsx)(`div`,{className:`studio-dialog-body`,children:o}):null,a?(0,G.jsx)(`footer`,{className:`studio-dialog-footer`,children:a}):null]})})}function Oa({open:e,onOpenChange:t,title:n,subtitle:r,wide:i=!1,compact:a=!1,closeDisabled:o=!1,footer:s,children:c}){return(0,G.jsx)(Ta,{open:e,onOpenChange:t,closeDisabled:o,children:(0,G.jsxs)(Ea,{open:e,className:`drawer${i?` wide`:``}${a?` compact`:``}`,closeDisabled:o,onRequestClose:()=>t(!1),children:[(0,G.jsxs)(`header`,{className:`drawer-header`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(pa,{children:n}),r?(0,G.jsx)(ha,{children:r}):null]}),(0,G.jsx)(_a,{asChild:!0,children:(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`关闭`,disabled:o,children:(0,G.jsx)(bt,{size:16})})})]}),(0,G.jsx)(`div`,{className:`drawer-body`,children:c}),s?(0,G.jsx)(`footer`,{className:`drawer-footer`,children:s}):null]})})}function ka({title:e,description:t,confirmText:n=`确认`,danger:r=!0,busy:i=!1,onConfirm:a,onCancel:o}){return(0,G.jsx)(Da,{open:!0,onOpenChange:e=>{!e&&!i&&o()},title:e,description:t,closeDisabled:i,showClose:!1,role:`alertdialog`,className:`confirm-dialog`,icon:(0,G.jsx)(`span`,{className:`confirm-icon${r?` danger`:``}`,style:r?void 0:{background:`var(--accent-soft)`,color:`var(--accent-strong)`},children:r?(0,G.jsx)(U,{size:18}):(0,G.jsx)(je,{size:18})}),footer:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(_a,{asChild:!0,children:(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,disabled:i,children:`取消`})}),(0,G.jsx)(`button`,{className:`button ${r?`danger`:`accent`}`,type:`button`,onClick:a,disabled:i,children:i?`处理中…`:n})]})})}var Aa=Object.defineProperty,ja=(e,t)=>Aa(e,`name`,{value:t,configurable:!0});function Ma(e){let t=e+`CollectionProvider`,[n,r]=zt(t),[i,a]=n(t,{collectionRef:{current:null},itemMap:new Map}),o=ja(e=>{let{scope:t,children:n}=e,r=s.useRef(null),a=s.useRef(new Map).current;return(0,G.jsx)(i,{scope:t,itemMap:a,collectionRef:r,children:n})},`CollectionProvider`);o.displayName=t;let c=e+`CollectionSlot`,l=un(c),u=s.forwardRef((e,t)=>{let{scope:n,children:r}=e,i=Ft(t,a(c,n).collectionRef);return(0,G.jsx)(l,{ref:i,children:r})});u.displayName=c;let d=e+`CollectionItemSlot`,f=`data-radix-collection-item`,p=un(d),m=s.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=s.useRef(null),c=Ft(t,o),l=a(d,n);return s.useEffect(()=>(l.itemMap.set(o,{ref:o,...i}),()=>void l.itemMap.delete(o))),(0,G.jsx)(p,{[f]:``,ref:c,children:r})});m.displayName=d;function h(t){let n=a(e+`CollectionConsumer`,t);return s.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${f}]`));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])}return ja(h,`useCollection`),[{Provider:o,Slot:u,ItemSlot:m},h,r]}ja(Ma,`createCollection`);var Na=new WeakMap,Pa=class e extends Map{static{ja(this,`OrderedDict`)}#e;constructor(e){super(e),this.#e=[...super.keys()],Na.set(this,!0)}set(e,t){return Na.get(this)&&(this.has(e)?this.#e[this.#e.indexOf(e)]=e:this.#e.push(e)),super.set(e,t),this}insert(e,t,n){let r=this.has(t),i=this.#e.length,a=La(e),o=a>=0?a:i+a,s=o<0||o>=i?-1:o;if(s===this.size||r&&s===this.size-1||s===-1)return this.set(t,n),this;let c=this.size+ +!r;a<0&&o++;let l=[...this.#e],u,d=!1;for(let e=o;e=this.size&&(r=this.size-1),this.at(r)}keyFrom(e,t){let n=this.indexOf(e);if(n===-1)return;let r=n+t;return r<0&&(r=0),r>=this.size&&(r=this.size-1),this.keyAt(r)}find(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return r;n++}}findIndex(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return n;n++}return-1}filter(t,n){let r=[],i=0;for(let e of this)Reflect.apply(t,n,[e,i,this])&&r.push(e),i++;return new e(r)}map(t,n){let r=[],i=0;for(let e of this)r.push([e[0],Reflect.apply(t,n,[e,i,this])]),i++;return new e(r)}reduce(...e){let[t,n]=e,r=0,i=n??this.at(0);for(let n of this)i=r===0&&e.length===1?n:Reflect.apply(t,this,[i,n,r,this]),r++;return i}reduceRight(...e){let[t,n]=e,r=n??this.at(-1);for(let n=this.size-1;n>=0;n--){let i=this.at(n);r=n===this.size-1&&e.length===1?i:Reflect.apply(t,this,[r,i,n,this])}return r}toSorted(t){let n=[...this.entries()].sort(t);return new e(n)}toReversed(){let t=new e;for(let e=this.size-1;e>=0;e--){let n=this.keyAt(e),r=this.get(n);t.set(n,r)}return t}toSpliced(...t){let n=[...this.entries()];return n.splice(...t),new e(n)}slice(t,n){let r=new e,i=this.size-1;if(t===void 0)return r;t<0&&(t+=this.size),n!==void 0&&n>0&&(i=n-1);for(let e=t;e<=i;e++){let t=this.keyAt(e),n=this.get(t);r.set(t,n)}return r}every(e,t){let n=0;for(let r of this){if(!Reflect.apply(e,t,[r,n,this]))return!1;n++}return!0}some(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return!0;n++}return!1}};function Fa(e,t){if(`at`in Array.prototype)return Array.prototype.at.call(e,t);let n=Ia(e,t);return n===-1?void 0:e[n]}ja(Fa,`at`);function Ia(e,t){let n=e.length,r=La(t),i=r>=0?r:n+r;return i<0||i>=n?-1:i}ja(Ia,`toSafeIndex`);function La(e){return e!==e||e===0?0:Math.trunc(e)}ja(La,`toSafeInteger`);function Ra(e){let t=e+`CollectionProvider`,[n,r]=zt(t),[i,a]=n(t,{collectionElement:null,collectionRef:{current:null},collectionRefObject:{current:null},itemMap:new Pa,setItemMap:ja(()=>void 0,`setItemMap`)}),o=ja(({state:e,...t})=>e?(0,G.jsx)(l,{...t,state:e}):(0,G.jsx)(c,{...t}),`CollectionProvider`);o.displayName=t;let c=ja(e=>{let t=g();return(0,G.jsx)(l,{...e,state:t})},`CollectionInit`);c.displayName=t+`Init`;let l=ja(e=>{let{scope:t,children:n,state:r}=e,a=s.useRef(null),[o,c]=s.useState(null),l=Ft(a,c),[u,d]=r;return s.useEffect(()=>{if(!o)return;let e=Ha(()=>{});return e.observe(o,{childList:!0,subtree:!0}),()=>{e.disconnect()}},[o]),(0,G.jsx)(i,{scope:t,itemMap:u,setItemMap:d,collectionRef:l,collectionRefObject:a,collectionElement:o,children:n})},`CollectionProviderImpl`);l.displayName=t+`Impl`;let u=e+`CollectionSlot`,d=un(u),f=s.forwardRef((e,t)=>{let{scope:n,children:r}=e,i=Ft(t,a(u,n).collectionRef);return(0,G.jsx)(d,{ref:i,children:r})});f.displayName=u;let p=e+`CollectionItemSlot`,m=un(p),h=s.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=s.useRef(null),[c,l]=s.useState(null),u=Ft(t,o,l),{setItemMap:d}=a(p,n),f=s.useRef(i);za(f.current,i)||(f.current=i);let h=f.current;return s.useEffect(()=>{let e=h;return d(t=>c?t.has(c)?t.set(c,{...e,element:c}).toSorted(Va):(t.set(c,{...e,element:c}),t.toSorted(Va)):t),()=>{d(e=>!c||!e.has(c)?e:(e.delete(c),new Pa(e)))}},[c,h,d]),(0,G.jsx)(m,{"data-radix-collection-item":``,ref:u,children:r})});h.displayName=p;function g(){return s.useState(new Pa)}ja(g,`useInitCollection`);function _(t){let{itemMap:n}=a(e+`CollectionConsumer`,t);return n}return ja(_,`useCollection`),[{Provider:o,Slot:f,ItemSlot:h},{createCollectionScope:r,useCollection:_,useInitCollection:g}]}ja(Ra,`createCollection`);function za(e,t){if(e===t)return!0;if(typeof e!=`object`||typeof t!=`object`||e==null||t==null)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||e[r]!==t[r])return!1;return!0}ja(za,`shallowEqual`);function Ba(e,t){return!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}ja(Ba,`isElementPreceding`);function Va(e,t){return!e[1].element||!t[1].element?0:Ba(e[1].element,t[1].element)?-1:1}ja(Va,`sortByDocumentPosition`);function Ha(e){return new MutationObserver(t=>{for(let n of t)if(n.type===`childList`){e();return}})}ja(Ha,`getChildListObserver`);var Ua=Object.defineProperty,Wa=(e,t)=>Ua(e,`name`,{value:t,configurable:!0}),Ga=s.createContext(void 0);function Ka(e){let t=s.useContext(Ga);return e||t||`ltr`}Wa(Ka,`useDirection`);var qa=[`top`,`right`,`bottom`,`left`],Ja=Math.min,Ya=Math.max,Xa=Math.round,Za=Math.floor,Qa=e=>({x:e,y:e}),$a={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function eo(e,t,n){return Ya(e,Ja(t,n))}function to(e,t){return typeof e==`function`?e(t):e}function no(e){return e.split(`-`)[0]}function ro(e){return e.split(`-`)[1]}function io(e){return e===`x`?`y`:`x`}function ao(e){return e===`y`?`height`:`width`}function oo(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function so(e){return io(oo(e))}function co(e,t,n){n===void 0&&(n=!1);let r=ro(e),i=so(e),a=ao(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=vo(o)),[o,vo(o)]}function lo(e){let t=vo(e);return[uo(e),t,uo(t)]}function uo(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var fo=[`left`,`right`],po=[`right`,`left`],mo=[`top`,`bottom`],ho=[`bottom`,`top`];function go(e,t,n){switch(e){case`top`:case`bottom`:return n?t?po:fo:t?fo:po;case`left`:case`right`:return t?mo:ho;default:return[]}}function _o(e,t,n,r){let i=ro(e),a=go(no(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(uo)))),a}function vo(e){let t=no(e);return $a[t]+e.slice(t.length)}function yo(e){return{top:e.top??0,right:e.right??0,bottom:e.bottom??0,left:e.left??0}}function bo(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:yo(e)}function xo(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function So(e,t,n){let{reference:r,floating:i}=e,a=oo(t),o=so(t),s=ao(o),c=no(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}let m=ro(t);return m&&(p[o]+=f*(m===`end`?1:-1)*(n&&l?-1:1)),p}async function Co(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=to(t,e),p=bo(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=xo(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=xo(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var wo=50,To=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:Co},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=So(l,r,c),f=r,p=0,m={};for(let n=0;n({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=to(e,t)||{};if(l==null)return{};let d=bo(u),f={x:n,y:r},p=so(i),m=ao(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=Ja(d[_],T),D=Ja(d[v],T),O=C-h[m]-D,k=C/2-h[m]/2+w,A=eo(E,k,O),j=!c.arrow&&ro(i)!=null&&k!==A&&a.reference[m]/2-(ke<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(u!==`alignment`||_===oo(t)||T.every(e=>oo(e.placement)!==_||e.overflows[0]>0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=oo(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o}if(r!==n)return{reset:{placement:n}}}return{}}}};function Oo(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function ko(e){return qa.some(t=>e[t]>=0)}var Ao=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=to(e,t);switch(i){case`referenceHidden`:{let e=Oo(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:ko(e)}}}case`escaped`:{let e=Oo(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:ko(e)}}}default:return{}}}}},jo=new Set([`left`,`top`]);async function Mo(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=no(n),s=ro(n),c=oo(n)===`y`,l=jo.has(o)?-1:1,u=a&&c?-1:1,d=to(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var No=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await Mo(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},Po=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=to(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=oo(i),p=io(f),m=u[p],h=u[f],g=(e,t)=>eo(t+d[e===`y`?`top`:`left`],t,t-d[e===`y`?`bottom`:`right`]);o&&(m=g(p,m)),s&&(h=g(f,h));let _=c.fn({...t,[p]:m,[f]:h});return{..._,data:{x:_.x-n,y:_.y-r,enabled:{[p]:o,[f]:s}}}}}},Fo=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=to(e,t),u={x:n,y:r},d=oo(i),f=io(d),p=u[f],m=u[d],h=to(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:h.mainAxis??0,crossAxis:h.crossAxis??0};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=jo.has(no(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);mr&&(m=r)}return{[f]:p,[d]:m}}}},Io=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){let{placement:n,rects:r,platform:i,elements:a}=t,{apply:o=()=>{},...s}=to(e,t),c=await i.detectOverflow(t,s),l=no(n),u=ro(n),d=oo(n)===`y`,{width:f,height:p}=r.floating,m,h;l===`top`||l===`bottom`?(m=l,h=u===(await(i.isRTL==null?void 0:i.isRTL(a.floating))?`start`:`end`)?`left`:`right`):(h=l,m=u===`end`?`top`:`bottom`);let g=p-c.top-c.bottom,_=f-c.left-c.right,v=Ja(p-c[m],g),y=Ja(f-c[h],_),b=t.middlewareData.shift,x=!b,S=v,C=y;b!=null&&b.enabled.x&&(C=_),b!=null&&b.enabled.y&&(S=g),x&&!u&&(d?C=f-2*Ya(c.left,c.right):S=p-2*Ya(c.top,c.bottom)),await o({...t,availableWidth:C,availableHeight:S});let w=await i.getDimensions(a.floating);return f!==w.width||p!==w.height?{reset:{rects:!0}}:{}}}};function Lo(){return typeof window<`u`}function Ro(e){return Vo(e)?(e.nodeName||``).toLowerCase():`#document`}function zo(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Bo(e){return((Vo(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Vo(e){return Lo()?e instanceof Node||e instanceof zo(e).Node:!1}function Ho(e){return Lo()?e instanceof Element||e instanceof zo(e).Element:!1}function Uo(e){return Lo()?e instanceof HTMLElement||e instanceof zo(e).HTMLElement:!1}function Wo(e){return!Lo()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof zo(e).ShadowRoot}function Go(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=ns(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function Ko(e){return/^(table|td|th)$/.test(Ro(e))}function qo(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var Jo=/transform|translate|scale|rotate|perspective|filter/,Yo=/paint|layout|strict|content/,Xo=e=>!!e&&e!==`none`,Zo;function Qo(e){let t=Ho(e)?ns(e):e;return Xo(t.transform)||Xo(t.translate)||Xo(t.scale)||Xo(t.rotate)||Xo(t.perspective)||!es()&&(Xo(t.backdropFilter)||Xo(t.filter))||Jo.test(t.willChange||``)||Yo.test(t.contain||``)}function $o(e){let t=is(e);for(;Uo(t)&&!ts(t);){if(Qo(t))return t;if(qo(t))return null;t=is(t)}return null}function es(){return Zo??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Zo}function ts(e){return/^(html|body|#document)$/.test(Ro(e))}function ns(e){return zo(e).getComputedStyle(e)}function rs(e){return Ho(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function is(e){if(Ro(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Wo(e)&&e.host||Bo(e);return Wo(t)?t.host:t}function as(e){let t=is(e);return ts(t)?(e.ownerDocument||e).body:Uo(t)&&Go(t)?t:as(t)}function os(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=as(e),i=r===e.ownerDocument?.body,a=zo(r);if(i){let e=ss(a);return t.concat(a,a.visualViewport||[],Go(r)?r:[],e&&n?os(e):[])}return t.concat(r,os(r,[],n))}function ss(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function cs(e){let t=ns(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=Uo(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=Xa(n)!==a||Xa(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function ls(e){return Ho(e)?e:e.contextElement}function us(e){let t=ls(e);if(!Uo(t))return Qa(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=cs(t),o=(a?Xa(n.width):n.width)/r,s=(a?Xa(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var ds=Qa(0);function fs(e){let t=zo(e);return!es()||!t.visualViewport?ds:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function ps(e,t,n){return t===void 0&&(t=!1),!!n&&t&&n===zo(e)}function ms(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=ls(e),o=Qa(1);t&&(r?Ho(r)&&(o=us(r)):o=us(e));let s=ps(a,n,r)?fs(a):Qa(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a&&r){let e=zo(a),t=Ho(r)?zo(r):r,n=e,i=ss(n);for(;i&&t!==n;){let e=us(i),t=i.getBoundingClientRect(),r=ns(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=zo(i),i=ss(n)}}return xo({width:u,height:d,x:c,y:l})}function hs(e,t){let n=rs(e).scrollLeft;return t?t.left+n:ms(Bo(e)).left+n}function gs(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-hs(e,n),y:n.top+t.scrollTop}}function _s(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=Bo(r),s=t?qo(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=Qa(1),u=Qa(0),d=Uo(r);if((d||!a)&&((Ro(r)!==`body`||Go(o))&&(c=rs(r)),d)){let e=ms(r);l=us(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?gs(o,c):Qa(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function vs(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function ys(e){let t=rs(e),n=e.ownerDocument.body,r=Ya(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=Ya(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight),a=-t.scrollLeft+hs(e),o=-t.scrollTop;return ns(n).direction===`rtl`&&(a+=Ya(e.clientWidth,n.clientWidth)-r),{width:r,height:i,x:a,y:o}}var bs=25;function xs(e,t,n){n===void 0&&(n=`viewport`);let r=n===`layoutViewport`,i=zo(e),a=Bo(e),o=i.visualViewport,s=a.clientWidth,c=a.clientHeight,l=0,u=0;if(o){let e=!es()||t===`fixed`;r?e||(l=-o.offsetLeft,u=-o.offsetTop):(s=o.width,c=o.height,e&&(l=o.offsetLeft,u=o.offsetTop))}if(hs(a)<=0){let e=a.ownerDocument,t=e.body,n=getComputedStyle(t),r=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,i=Math.abs(a.clientWidth-t.clientWidth-r),o=getComputedStyle(a).scrollbarGutter===`stable both-edges`?i/2:i;o<=bs&&(s-=o)}return{width:s,height:c,x:l,y:u}}function Ss(e,t){let n=ms(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=us(e);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function Cs(e,t,n){let r;if(t===`viewport`||t===`layoutViewport`)r=xs(e,n,t);else if(t===`document`)r=ys(Bo(e));else if(Ho(t))r=Ss(t,n);else{let n=fs(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return xo(r)}function ws(e,t){let n=t.get(e);if(n)return n;let r=os(e,[],!1).filter(e=>Ho(e)&&Ro(e)!==`body`),i=null,a=ns(e).position===`fixed`,o=a?is(e):e;for(;Ho(o)&&!ts(o);){let e=ns(o),t=Qo(o),n=i?i.position:a?`fixed`:``;!t&&(n===`fixed`||n===`absolute`&&e.position===`static`)?r=r.filter(e=>e!==o):i=e,o=is(o)}return t.set(e,r),r}function Ts(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?qo(t)?[]:ws(t,this._c):[].concat(n),r],o=Cs(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e{s(!1,1e-7)},1e3)}y=!1}try{r=new IntersectionObserver(b,{...v,root:a.ownerDocument})}catch{r=new IntersectionObserver(b,v)}r.observe(e)}let c=zo(e),l=()=>s(n);return c.addEventListener(`resize`,l),s(!0),()=>{c.removeEventListener(`resize`,l),o()}}function Is(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=ls(e),u=i||a?[...l?os(l):[],...t?os(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n),a&&e.addEventListener(`resize`,n)});let d=l&&s?Fs(l,n,a):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?ms(e):null;c&&g();function g(){let t=ms(e);h&&!Ps(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var Ls=No,Rs=Po,zs=Do,Bs=Io,Vs=Ao,Hs=Eo,Us=Fo,Ws=(e,t,n)=>{let r=new Map,i=n??{},a={...Ns,...i.platform,_c:r};return To(e,t,{...i,platform:a})},Gs=typeof document<`u`?s.useLayoutEffect:function(){};function Ks(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`function`&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e==`object`){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!Ks(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){let n=i[r];if(!(n===`_owner`&&e.$$typeof)&&!Ks(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function qs(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Js(e,t){let n=qs(e);return Math.round(t*n)/n}function Ys(e){let t=s.useRef(e);return Gs(()=>{t.current=e}),t}function Xs(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:c=!0,whileElementsMounted:l,open:u}=e,[d,f]=s.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,m]=s.useState(r);Ks(p,r)||m(r);let[h,g]=s.useState(null),[_,v]=s.useState(null),y=s.useCallback(e=>{e!==C.current&&(C.current=e,g(e))},[]),b=s.useCallback(e=>{e!==w.current&&(w.current=e,v(e))},[]),x=a||h,S=o||_,C=s.useRef(null),w=s.useRef(null),T=s.useRef(d),E=l!=null,D=Ys(l),O=Ys(i),k=Ys(u),A=s.useCallback(()=>{if(!C.current||!w.current)return;let e={placement:t,strategy:n,middleware:p};O.current&&(e.platform=O.current),Ws(C.current,w.current,e).then(e=>{let t={...e,isPositioned:k.current!==!1};j.current&&!Ks(T.current,t)&&(T.current=t,sn.flushSync(()=>{f(t)}))})},[p,t,n,O,k]);Gs(()=>{u===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,f(e=>({...e,isPositioned:!1})))},[u]);let j=s.useRef(!1);Gs(()=>(j.current=!0,()=>{j.current=!1}),[]),Gs(()=>{if(x&&(C.current=x),S&&(w.current=S),x&&S){if(D.current)return D.current(x,S,A);A()}},[x,S,A,D,E]);let M=s.useMemo(()=>({reference:C,floating:w,setReference:y,setFloating:b}),[y,b]),N=s.useMemo(()=>({reference:x,floating:S}),[x,S]),P=s.useMemo(()=>{let e={position:n,left:0,top:0};if(!N.floating)return e;let t=Js(N.floating,d.x),r=Js(N.floating,d.y);return c?{...e,transform:`translate(`+t+`px, `+r+`px)`,...qs(N.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,c,N.floating,d.x,d.y]);return s.useMemo(()=>({...d,update:A,refs:M,elements:N,floatingStyles:P}),[d,A,M,N,P])}var Zs=e=>{function t(e){return{}.hasOwnProperty.call(e,`current`)}return{name:`arrow`,options:e,fn(n){let{element:r,padding:i}=typeof e==`function`?e(n):e;return r&&t(r)?r.current==null?{}:Hs({element:r.current,padding:i}).fn(n):r?Hs({element:r,padding:i}).fn(n):{}}}},Qs=(e,t)=>{let n=Ls(e);return{name:n.name,fn:n.fn,options:[e,t]}},$s=(e,t)=>{let n=Rs(e);return{name:n.name,fn:n.fn,options:[e,t]}},ec=(e,t)=>({fn:Us(e).fn,options:[e,t]}),tc=(e,t)=>{let n=zs(e);return{name:n.name,fn:n.fn,options:[e,t]}},nc=(e,t)=>{let n=Bs(e);return{name:n.name,fn:n.fn,options:[e,t]}},rc=(e,t)=>{let n=Vs(e);return{name:n.name,fn:n.fn,options:[e,t]}},ic=(e,t)=>{let n=Zs(e);return{name:n.name,fn:n.fn,options:[e,t]}},ac=Object.defineProperty,oc=s.forwardRef(((e,t)=>ac(e,`name`,{value:t,configurable:!0}))(function(e,t){let{children:n,width:r=10,height:i=5,...a}=e;return(0,G.jsx)(Tn.svg,{...a,ref:t,width:r,height:i,viewBox:`0 0 30 10`,preserveAspectRatio:`none`,children:e.asChild?n:(0,G.jsx)(`polygon`,{points:`0,0 30,0 15,10`})})},`Arrow`)),sc=Object.defineProperty,cc=(e,t)=>sc(e,`name`,{value:t,configurable:!0});function lc(e){let[t,n]=s.useState(void 0);return Vt(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=e.offsetWidth,a=e.offsetHeight;n({width:i,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}n(void 0)},[e]),t}cc(lc,`useSize`);var uc=Object.defineProperty,dc=(e,t)=>uc(e,`name`,{value:t,configurable:!0}),fc=`Popper`,[pc,mc]=zt(fc),[hc,gc]=pc(fc),_c=dc(e=>{let{__scopePopper:t,children:n}=e,[r,i]=s.useState(null),[a,o]=s.useState(void 0);return(0,G.jsx)(hc,{scope:t,anchor:r,onAnchorChange:i,placementState:a,setPlacementState:o,children:n})},`Popper`),vc=`PopperAnchor`,yc=s.forwardRef(dc(function(e,t){let{__scopePopper:n,virtualRef:r,...i}=e,a=gc(vc,n),o=s.useRef(null),c=a.onAnchorChange,l=Ft(t,s.useCallback(e=>{o.current=e,e&&c(e)},[c])),u=s.useRef(null);s.useEffect(()=>{if(!r)return;let e=u.current;u.current=r.current,e!==u.current&&c(u.current)});let d=a.placementState&&kc(a.placementState),f=d?.[0],p=d?.[1];return r?null:(0,G.jsx)(Tn.div,{"data-radix-popper-side":f,"data-radix-popper-align":p,...i,ref:l})},`PopperAnchor`)),bc=`PopperContent`,[xc,Sc]=pc(bc),Cc=s.forwardRef(dc(function(e,t){let{__scopePopper:n,side:r=`bottom`,sideOffset:i=0,align:a=`center`,alignOffset:o=0,arrowPadding:c=0,avoidCollisions:l=!0,collisionBoundary:u=[],collisionPadding:d=0,sticky:f=`partial`,hideWhenDetached:p=!1,updatePositionStrategy:m=`optimized`,onPlaced:h,...g}=e,_=gc(bc,n),[v,y]=s.useState(null),b=Ft(t,y),[x,S]=s.useState(null),C=lc(x),w=C?.width??0,T=C?.height??0,E=r+(a===`center`?``:`-`+a),D=typeof d==`number`?d:{top:0,right:0,bottom:0,left:0,...d},O=Array.isArray(u)?u:[u],k=O.length>0,A={padding:D,boundary:O.filter(Dc),altBoundary:k},{refs:j,floatingStyles:M,placement:N,isPositioned:P,middlewareData:F}=Xs({strategy:`fixed`,placement:E,whileElementsMounted:dc((...e)=>Is(...e,{animationFrame:m===`always`}),`whileElementsMounted`),elements:{reference:_.anchor},middleware:[Qs({mainAxis:i+T,alignmentAxis:o}),l&&$s({mainAxis:!0,crossAxis:!1,limiter:f===`partial`?ec():void 0,...A}),l&&tc({...A}),nc({...A,apply:dc(({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--radix-popper-available-width`,`${n}px`),o.setProperty(`--radix-popper-available-height`,`${r}px`),o.setProperty(`--radix-popper-anchor-width`,`${i}px`),o.setProperty(`--radix-popper-anchor-height`,`${a}px`)},`apply`)}),x&&ic({element:x,padding:c}),Oc({arrowWidth:w,arrowHeight:T}),p&&rc({strategy:`referenceHidden`,...A,boundary:k?A.boundary:void 0})]}),I=_.setPlacementState;Vt(()=>(I(N),()=>{I(void 0)}),[N,I]);let[L,R]=kc(N),z=kn(h);Vt(()=>{P&&z?.()},[P,z]);let B=F.arrow?.x,V=F.arrow?.y,H=F.arrow?.centerOffset!==0,[ee,te]=s.useState();return Vt(()=>{v&&te(window.getComputedStyle(v).zIndex)},[v]),(0,G.jsx)(`div`,{ref:j.setFloating,"data-radix-popper-content-wrapper":``,style:{...M,transform:P?M.transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:ee,"--radix-popper-transform-origin":[F.transformOrigin?.x,F.transformOrigin?.y].join(` `),...F.hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}},dir:e.dir,children:(0,G.jsx)(xc,{scope:n,placedSide:L,placedAlign:R,onArrowChange:S,arrowX:B,arrowY:V,shouldHideArrow:H,children:(0,G.jsx)(Tn.div,{"data-side":L,"data-align":R,...g,ref:b,style:{...g.style,animation:P?g.style?.animation:`none`}})})})},`PopperContent`)),wc=`PopperArrow`,Tc={top:`bottom`,right:`left`,bottom:`top`,left:`right`},Ec=s.forwardRef(dc(function(e,t){let{__scopePopper:n,...r}=e,i=Sc(wc,n),a=Tc[i.placedSide];return(0,G.jsx)(`span`,{ref:i.onArrowChange,style:{position:`absolute`,left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[i.placedSide],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[i.placedSide],visibility:i.shouldHideArrow?`hidden`:void 0},children:(0,G.jsx)(oc,{...r,ref:t,style:{...r.style,display:`block`}})})},`PopperArrow`));function Dc(e){return e!==null}dc(Dc,`isNotNull`);var Oc=dc(e=>({name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=kc(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}}),`transformOrigin`);function kc(e){let[t,n=`center`]=e.split(`-`);return[t,n]}dc(kc,`getSideAndAlignFromPlacement`);var Ac=_c,jc=yc,Mc=Cc,Nc=Ec,Pc=Object.defineProperty,Fc=(e,t)=>Pc(e,`name`,{value:t,configurable:!0}),Ic=!1;function Lc(){let[e,t]=s.useState(Ic);return s.useEffect(()=>{Ic||(Ic=!0,t(!0))},[]),e}Fc(Lc,`useIsHydrated`);var Rc=s.useSyncExternalStore;function zc(){return()=>{}}Fc(zc,`subscribe`);function Bc(){return Rc(zc,()=>!0,()=>!1)}Fc(Bc,`useIsHydratedModern`);var Vc=typeof Rc==`function`?Bc:Lc,Hc=Object.defineProperty,Uc=(e,t)=>Hc(e,`name`,{value:t,configurable:!0}),Wc=`rovingFocusGroup.onEntryFocus`,Gc={bubbles:!1,cancelable:!0},Kc=`RovingFocusGroup`,[qc,Jc,Yc]=Ma(Kc),[Xc,Zc]=zt(Kc,[Yc]),[Qc,$c]=Xc(Kc),el=s.forwardRef(Uc(function(e,t){return(0,G.jsx)(qc.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,G.jsx)(qc.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,G.jsx)(tl,{...e,ref:t})})})},`RovingFocusGroup`)),tl=s.forwardRef(Uc(function(e,t){let{__scopeRovingFocusGroup:n,orientation:r,loop:i=!1,dir:a,currentTabStopId:o,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:l,onEntryFocus:u,preventScrollOnEntryFocus:d=!1,...f}=e,p=s.useRef(null),m=Ft(t,p),h=Ka(a),[g,_]=tn({prop:o,defaultProp:c??null,onChange:l,caller:Kc}),[v,y]=s.useState(!1),b=kn(u),x=Jc(n),S=s.useRef(!1),[C,w]=s.useState(0);return s.useEffect(()=>{let e=p.current;if(e)return e.addEventListener(Wc,b),()=>e.removeEventListener(Wc,b)},[b]),(0,G.jsx)(Qc,{scope:n,orientation:r,dir:h,loop:i,currentTabStopId:g,onItemFocus:s.useCallback(e=>_(e),[_]),onItemShiftTab:s.useCallback(()=>y(!0),[]),onFocusableItemAdd:s.useCallback(()=>w(e=>e+1),[]),onFocusableItemRemove:s.useCallback(()=>w(e=>e-1),[]),children:(0,G.jsx)(Tn.div,{tabIndex:v||C===0?-1:0,"data-orientation":r,...f,ref:m,style:{outline:`none`,...e.style},onMouseDown:K(e.onMouseDown,()=>{S.current=!0}),onFocus:K(e.onFocus,e=>{let t=!S.current;if(e.target===e.currentTarget&&t&&!v){let t=new CustomEvent(Wc,Gc);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=x().filter(e=>e.focusable);sl([e.find(e=>e.active),e.find(e=>e.id===g),...e].filter(Boolean).map(e=>e.ref.current),d)}}S.current=!1}),onBlur:K(e.onBlur,()=>y(!1))})})},`RovingFocusGroupImpl`)),nl=`RovingFocusGroupItem`,rl=s.forwardRef(Uc(function(e,t){let{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:a,children:o,...c}=e,l=Kt(),u=a||l,d=$c(nl,n),f=d.currentTabStopId===u,p=Jc(n),{onFocusableItemAdd:m,onFocusableItemRemove:h,currentTabStopId:g}=d,_=Vc();return Vt(()=>{if(!(!_||!r))return m(),()=>h()},[_,r,m,h]),s.useEffect(()=>{if(!(_||!r))return m(),()=>h()},[_,r,m,h]),(0,G.jsx)(qc.ItemSlot,{scope:n,id:u,focusable:r,active:i,children:(0,G.jsx)(Tn.span,{tabIndex:f?0:-1,"data-orientation":d.orientation,...c,ref:t,onMouseDown:K(e.onMouseDown,e=>{r?d.onItemFocus(u):e.preventDefault()}),onFocus:K(e.onFocus,()=>d.onItemFocus(u)),onKeyDown:K(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){d.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=ol(e,d.orientation,d.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=p().filter(e=>e.focusable).map(e=>e.ref.current);if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=d.loop?cl(n,r+1):n.slice(r+1)}setTimeout(()=>sl(n))}}),children:typeof o==`function`?o({isCurrentTabStop:f,hasTabStop:g!=null}):o})})},`RovingFocusGroupItem`)),il={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function al(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}Uc(al,`getDirectionAwareKey`);function ol(e,t,n){let r=al(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return il[r]}Uc(ol,`getFocusIntent`);function sl(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}Uc(sl,`focusFirst`);function cl(e,t){return e.map((n,r)=>e[(t+r)%e.length])}Uc(cl,`wrapArray`);var ll=el,ul=rl,dl=Object.defineProperty,fl=(e,t)=>dl(e,`name`,{value:t,configurable:!0}),pl=[`Enter`,` `],ml=[`ArrowDown`,`PageUp`,`Home`],hl=[`ArrowUp`,`PageDown`,`End`],gl=[...ml,...hl],_l={ltr:[...pl,`ArrowRight`],rtl:[...pl,`ArrowLeft`]},vl={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]},yl=`Menu`,[bl,xl,Sl]=Ma(yl),[Cl,wl]=zt(yl,[Sl,mc,Zc]),Tl=mc(),El=Zc(),[Dl,Ol]=Cl(yl),[kl,Al]=Cl(yl),jl=fl(e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,c=Tl(t),[l,u]=s.useState(null),d=s.useRef(!1),f=kn(a),p=Ka(i);return s.useEffect(()=>{let e=fl(()=>{d.current=!0,document.addEventListener(`pointerdown`,t,{capture:!0,once:!0}),document.addEventListener(`pointermove`,t,{capture:!0,once:!0})},`handleKeyDown`),t=fl(()=>d.current=!1,`handlePointer`);return document.addEventListener(`keydown`,e,{capture:!0}),()=>{document.removeEventListener(`keydown`,e,{capture:!0}),document.removeEventListener(`pointerdown`,t,{capture:!0}),document.removeEventListener(`pointermove`,t,{capture:!0})}},[]),s.useEffect(()=>{if(!n)return;let e=fl(()=>f(!1),`handleBlur`);return window.addEventListener(`blur`,e),()=>window.removeEventListener(`blur`,e)},[n,f]),(0,G.jsx)(Ac,{...c,children:(0,G.jsx)(Dl,{scope:t,open:n,onOpenChange:f,content:l,onContentChange:u,children:(0,G.jsx)(kl,{scope:t,onClose:s.useCallback(()=>f(!1),[f]),isUsingKeyboardRef:d,dir:p,modal:o,children:r})})})},`Menu`),Ml=s.forwardRef(fl(function(e,t){let{__scopeMenu:n,...r}=e,i=Tl(n);return(0,G.jsx)(jc,{...i,...r,ref:t})},`MenuAnchor`)),Nl=`MenuPortal`,[Pl,Fl]=Cl(Nl,{forceMount:void 0}),Il=fl(e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=Ol(Nl,t);return(0,G.jsx)(Pl,{scope:t,forceMount:n,children:(0,G.jsx)(fr,{present:n||a.open,children:(0,G.jsx)(cr,{asChild:!0,container:i,children:r})})})},`MenuPortal`),Ll=`MenuContent`,[Rl,zl]=Cl(Ll),Bl=s.forwardRef(fl(function(e,t){let n=Fl(Ll,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=Ol(Ll,e.__scopeMenu),o=Al(Ll,e.__scopeMenu);return(0,G.jsx)(bl.Provider,{scope:e.__scopeMenu,children:(0,G.jsx)(fr,{present:r||a.open,children:(0,G.jsx)(bl.Slot,{scope:e.__scopeMenu,children:o.modal?(0,G.jsx)(Vl,{...i,ref:t}):(0,G.jsx)(Hl,{...i,ref:t})})})})},`MenuContent`)),Vl=s.forwardRef(fl(function(e,t){let n=Ol(Ll,e.__scopeMenu),r=s.useRef(null),i=Ft(t,r);return s.useEffect(()=>{let e=r.current;if(e)return Wi(e)},[]),(0,G.jsx)(Wl,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:K(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})},`MenuRootContentModal`)),Hl=s.forwardRef(fl(function(e,t){let n=Ol(Ll,e.__scopeMenu);return(0,G.jsx)(Wl,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})},`MenuRootContentNonModal`)),Ul=un(`MenuContent.ScrollLock`),Wl=s.forwardRef(fl(function(e,t){let{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:o,disableOutsidePointerEvents:c,onEntryFocus:l,onEscapeKeyDown:u,onPointerDownOutside:d,onFocusOutside:f,onInteractOutside:p,onDismiss:m,disableOutsideScroll:h,...g}=e,_=Ol(Ll,n),v=Al(Ll,n),y=Tl(n),b=El(n),x=xl(n),[S,C]=s.useState(null),w=s.useRef(null),T=Ft(t,w,_.onContentChange),E=s.useRef(0),D=s.useRef(``),O=s.useRef(0),k=s.useRef(null),A=s.useRef(`right`),j=s.useRef(0),M=h?Fi:s.Fragment,N=h?{as:Ul,allowPinchZoom:!0}:void 0,P=fl(e=>{let t=D.current+e,n=x().filter(e=>!e.disabled),r=document.activeElement,i=n.find(e=>e.ref.current===r)?.textValue,a=bu(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;fl((function e(t){D.current=t,window.clearTimeout(E.current),t!==``&&(E.current=window.setTimeout(()=>e(``),1e3))}),`updateSearch`)(t),o&&setTimeout(()=>o.focus())},`handleTypeaheadSearch`);s.useEffect(()=>()=>window.clearTimeout(E.current),[]),Cr();let F=s.useCallback(e=>A.current===k.current?.side&&Su(e,k.current?.area),[]);return(0,G.jsx)(Rl,{scope:n,searchRef:D,onItemEnter:s.useCallback(e=>{F(e)&&e.preventDefault()},[F]),onItemLeave:s.useCallback(e=>{F(e)||(w.current?.focus(),C(null))},[F]),onTriggerLeave:s.useCallback(e=>{F(e)&&e.preventDefault()},[F]),pointerGraceTimerRef:O,onPointerGraceIntentChange:s.useCallback(e=>{k.current=e},[]),children:(0,G.jsx)(M,{...N,children:(0,G.jsx)(Yn,{asChild:!0,trapped:i,onMountAutoFocus:K(a,e=>{e.preventDefault(),w.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:o,children:(0,G.jsx)(Ln,{asChild:!0,disableOutsidePointerEvents:c,onEscapeKeyDown:u,onPointerDownOutside:d,onFocusOutside:f,onInteractOutside:p,onDismiss:m,children:(0,G.jsx)(ll,{asChild:!0,...b,dir:v.dir,orientation:`vertical`,loop:r,currentTabStopId:S,onCurrentTabStopIdChange:C,onEntryFocus:K(l,e=>{v.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,G.jsx)(Mc,{role:`menu`,"aria-orientation":`vertical`,"data-state":hu(_.open),"data-radix-menu-content":``,dir:v.dir,...y,...g,ref:T,style:{outline:`none`,...g.style},onKeyDown:K(g.onKeyDown,e=>{let t=e.target.closest(`[data-radix-menu-content]`)===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=e.key.length===1;t&&(e.key===`Tab`&&e.preventDefault(),!n&&r&&P(e.key));let i=w.current;if(e.target!==i||!gl.includes(e.key))return;e.preventDefault();let a=x().filter(e=>!e.disabled).map(e=>e.ref.current);hl.includes(e.key)&&a.reverse(),vu(a)}),onBlur:K(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(E.current),D.current=``)}),onPointerMove:K(e.onPointerMove,Cu(e=>{let t=e.target,n=j.current!==e.clientX;if(e.currentTarget.contains(t)&&n){let t=e.clientX>j.current?`right`:`left`;A.current=t,j.current=e.clientX}}))})})})})})})},`MenuContentImpl`)),Gl=s.forwardRef(fl(function(e,t){let{__scopeMenu:n,...r}=e;return(0,G.jsx)(Tn.div,{role:`group`,...r,ref:t})},`MenuGroup`)),Kl=s.forwardRef(fl(function(e,t){let{__scopeMenu:n,...r}=e;return(0,G.jsx)(Tn.div,{...r,ref:t})},`MenuLabel`)),ql=`MenuItem`,Jl=`menu.itemSelect`,Yl=s.forwardRef(fl(function(e,t){let{disabled:n=!1,onSelect:r,...i}=e,a=s.useRef(null),o=Al(ql,e.__scopeMenu),c=zl(ql,e.__scopeMenu),l=Ft(t,a),u=s.useRef(!1),d=fl(()=>{let e=a.current;if(!n&&e){let t=new CustomEvent(Jl,{bubbles:!0,cancelable:!0});e.addEventListener(Jl,e=>r?.(e),{once:!0}),En(e,t),t.defaultPrevented?u.current=!1:o.onClose()}},`handleSelect`);return(0,G.jsx)(Xl,{...i,ref:l,disabled:n,onClick:K(e.onClick,d),onPointerDown:t=>{e.onPointerDown?.(t),u.current=!0},onPointerUp:K(e.onPointerUp,e=>{u.current||e.currentTarget?.click()}),onKeyDown:K(e.onKeyDown,e=>{n||e.target!==e.currentTarget||(c.searchRef.current===``||e.key!==` `)&&pl.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})},`MenuItem`)),Xl=s.forwardRef(fl(function(e,t){let{__scopeMenu:n,disabled:r=!1,textValue:i,...a}=e,o=zl(ql,n),c=El(n),l=s.useRef(null),u=Ft(t,l),[d,f]=s.useState(!1),[p,m]=s.useState(``);return s.useEffect(()=>{let e=l.current;e&&m((e.textContent??``).trim())},[a.children]),(0,G.jsx)(bl.ItemSlot,{scope:n,disabled:r,textValue:i??p,children:(0,G.jsx)(ul,{asChild:!0,...c,focusable:!r,children:(0,G.jsx)(Tn.div,{role:`menuitem`,"data-highlighted":d?``:void 0,"aria-disabled":r||void 0,"data-disabled":r?``:void 0,...a,ref:u,onPointerMove:K(e.onPointerMove,Cu(e=>{r?o.onItemLeave(e):(o.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:K(e.onPointerLeave,Cu(e=>o.onItemLeave(e))),onFocus:K(e.onFocus,()=>f(!0)),onBlur:K(e.onBlur,()=>f(!1))})})})},`MenuItemImpl`)),[Zl,Ql]=Cl(`MenuRadioGroup`,{value:void 0,onValueChange:fl(()=>{},`onValueChange`)}),$l=s.forwardRef(fl(function(e,t){let{value:n,onValueChange:r,...i}=e,a=kn(r);return(0,G.jsx)(Zl,{scope:e.__scopeMenu,value:n,onValueChange:a,children:(0,G.jsx)(Gl,{...i,ref:t})})},`MenuRadioGroup`)),eu=`MenuRadioItem`,tu=s.forwardRef(fl(function(e,t){let{value:n,...r}=e,i=Ql(eu,e.__scopeMenu),a=n===i.value;return(0,G.jsx)(ru,{scope:e.__scopeMenu,checked:a,children:(0,G.jsx)(Yl,{role:`menuitemradio`,"aria-checked":a,...r,ref:t,"data-state":_u(a),onSelect:K(r.onSelect,()=>i.onValueChange?.(n),{checkForDefaultPrevented:!1})})})},`MenuRadioItem`)),nu=`MenuItemIndicator`,[ru,iu]=Cl(nu,{checked:!1}),au=s.forwardRef(fl(function(e,t){let{__scopeMenu:n,forceMount:r,...i}=e,a=iu(nu,n);return(0,G.jsx)(fr,{present:r||gu(a.checked)||a.checked===!0,children:(0,G.jsx)(Tn.span,{...i,ref:t,"data-state":_u(a.checked)})})},`MenuItemIndicator`)),ou=s.forwardRef(fl(function(e,t){let{__scopeMenu:n,...r}=e;return(0,G.jsx)(Tn.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})},`MenuSeparator`)),su=`MenuSub`,[cu,lu]=Cl(su),uu=fl(e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:i}=e,a=Ol(su,t),o=Tl(t),[c,l]=s.useState(null),[u,d]=s.useState(null),f=kn(i);return s.useEffect(()=>(a.open===!1&&f(!1),()=>f(!1)),[a.open,f]),(0,G.jsx)(Ac,{...o,children:(0,G.jsx)(Dl,{scope:t,open:r,onOpenChange:f,content:u,onContentChange:d,children:(0,G.jsx)(cu,{scope:t,contentId:Kt(),triggerId:Kt(),trigger:c,onTriggerChange:l,children:n})})})},`MenuSub`),du=`MenuSubTrigger`,fu=s.forwardRef(fl(function(e,t){let n=Ol(du,e.__scopeMenu),r=Al(du,e.__scopeMenu),i=lu(du,e.__scopeMenu),a=zl(du,e.__scopeMenu),o=s.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:l}=a,u={__scopeMenu:e.__scopeMenu},d=s.useCallback(()=>{o.current&&window.clearTimeout(o.current),o.current=null},[]);s.useEffect(()=>d,[d]),s.useEffect(()=>{let e=c.current;return()=>{window.clearTimeout(e),l(null)}},[c,l]);let f=Ft(t,i.onTriggerChange);return(0,G.jsx)(Ml,{asChild:!0,...u,children:(0,G.jsx)(Xl,{id:i.triggerId,"aria-haspopup":`menu`,"aria-expanded":n.open,"aria-controls":n.open?i.contentId:void 0,"data-state":hu(n.open),...e,ref:f,onClick:t=>{e.onClick?.(t),!(e.disabled||t.defaultPrevented)&&(t.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:K(e.onPointerMove,Cu(t=>{a.onItemEnter(t),!t.defaultPrevented&&!e.disabled&&!n.open&&!o.current&&(a.onPointerGraceIntentChange(null),o.current=window.setTimeout(()=>{n.onOpenChange(!0),d()},100))})),onPointerLeave:K(e.onPointerLeave,Cu(e=>{d();let t=n.content?.getBoundingClientRect();if(t){let r=n.content?.dataset.side,i=r===`right`,o=i?-5:5,s=t[i?`left`:`right`],l=t[i?`right`:`left`];a.onPointerGraceIntentChange({area:[{x:e.clientX+o,y:e.clientY},{x:s,y:t.top},{x:l,y:t.top},{x:l,y:t.bottom},{x:s,y:t.bottom}],side:r}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>a.onPointerGraceIntentChange(null),300)}else{if(a.onTriggerLeave(e),e.defaultPrevented)return;a.onPointerGraceIntentChange(null)}})),onKeyDown:K(e.onKeyDown,t=>{e.disabled||t.target!==t.currentTarget||(a.searchRef.current===``||t.key!==` `)&&_l[r.dir].includes(t.key)&&(n.onOpenChange(!0),n.content?.focus(),t.preventDefault())})})})},`MenuSubTrigger`)),pu=`MenuSubContent`,mu=s.forwardRef(fl(function(e,t){let n=Fl(Ll,e.__scopeMenu),{forceMount:r=n.forceMount,align:i=`start`,...a}=e,o=Ol(Ll,e.__scopeMenu),c=Al(Ll,e.__scopeMenu),l=lu(pu,e.__scopeMenu),u=s.useRef(null),d=Ft(t,u);return(0,G.jsx)(bl.Provider,{scope:e.__scopeMenu,children:(0,G.jsx)(fr,{present:r||o.open,children:(0,G.jsx)(bl.Slot,{scope:e.__scopeMenu,children:(0,G.jsx)(Wl,{id:l.contentId,"aria-labelledby":l.triggerId,...a,ref:d,align:i,side:c.dir===`rtl`?`left`:`right`,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{c.isUsingKeyboardRef.current&&u.current?.focus(),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:K(e.onFocusOutside,e=>{e.target!==l.trigger&&o.onOpenChange(!1)}),onEscapeKeyDown:K(e.onEscapeKeyDown,e=>{c.onClose(),e.preventDefault()}),onKeyDown:K(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),n=vl[c.dir].includes(e.key);t&&n&&(o.onOpenChange(!1),l.trigger?.focus(),e.preventDefault())})})})})})},`MenuSubContent`));function hu(e){return e?`open`:`closed`}fl(hu,`getOpenState`);function gu(e){return e===`indeterminate`}fl(gu,`isIndeterminate`);function _u(e){return gu(e)?`indeterminate`:e?`checked`:`unchecked`}fl(_u,`getCheckedState`);function vu(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}fl(vu,`focusFirst`);function yu(e,t){return e.map((n,r)=>e[(t+r)%e.length])}fl(yu,`wrapArray`);function bu(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=yu(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}fl(bu,`getNextMatch`);function xu(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}fl(xu,`isPointInPolygon`);function Su(e,t){return t?xu({x:e.clientX,y:e.clientY},t):!1}fl(Su,`isPointerInGraceArea`);function Cu(e){return t=>t.pointerType===`mouse`?e(t):void 0}fl(Cu,`whenMouse`);var wu=jl,Tu=Ml,Eu=Il,Du=Bl,Ou=Kl,ku=Yl,Au=$l,ju=tu,Mu=au,Nu=ou,Pu=uu,Fu=fu,Iu=mu,Lu=Object.defineProperty,Ru=(e,t)=>Lu(e,`name`,{value:t,configurable:!0}),zu=`DropdownMenu`,[Bu,Vu]=zt(zu,[wl]),Hu=wl(),[Uu,Wu]=Bu(zu),Gu=Ru(e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:o,modal:c=!0}=e,l=Hu(t),u=s.useRef(null),[d,f]=tn({prop:i,defaultProp:a??!1,onChange:o,caller:zu});return(0,G.jsx)(Uu,{scope:t,triggerId:Kt(),triggerRef:u,contentId:Kt(),open:d,onOpenChange:f,onOpenToggle:s.useCallback(()=>f(e=>!e),[f]),modal:c,children:(0,G.jsx)(wu,{...l,open:d,onOpenChange:f,dir:r,modal:c,children:n})})},`DropdownMenu`),Ku=`DropdownMenuTrigger`,qu=s.forwardRef(Ru(function(e,t){let{__scopeDropdownMenu:n,disabled:r=!1,...i}=e,a=Wu(Ku,n),o=Hu(n),s=Ft(t,a.triggerRef);return(0,G.jsx)(Tu,{asChild:!0,...o,children:(0,G.jsx)(Tn.button,{type:`button`,id:a.triggerId,"aria-haspopup":`menu`,"aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":a.open?`open`:`closed`,"data-disabled":r?``:void 0,disabled:r,...i,ref:s,onPointerDown:K(e.onPointerDown,e=>{!r&&e.button===0&&e.ctrlKey===!1&&(a.onOpenToggle(),a.open||e.preventDefault())}),onKeyDown:K(e.onKeyDown,e=>{r||([`Enter`,` `].includes(e.key)&&a.onOpenToggle(),e.key===`ArrowDown`&&a.onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(e.key)&&e.preventDefault())})})})},`DropdownMenuTrigger`)),Ju=Ru(e=>{let{__scopeDropdownMenu:t,...n}=e,r=Hu(t);return(0,G.jsx)(Eu,{...r,...n})},`DropdownMenuPortal`),Yu=`DropdownMenuContent`,Xu=s.forwardRef(Ru(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Wu(Yu,n),a=Hu(n),o=s.useRef(!1);return(0,G.jsx)(Du,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:K(e.onCloseAutoFocus,e=>{o.current||i.triggerRef.current?.focus(),o.current=!1,e.preventDefault()}),onInteractOutside:K(e.onInteractOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;(!i.modal||r)&&(o.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})},`DropdownMenuContent`)),Zu=s.forwardRef(Ru(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Hu(n);return(0,G.jsx)(Ou,{...i,...r,ref:t})},`DropdownMenuLabel`)),Qu=s.forwardRef(Ru(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Hu(n);return(0,G.jsx)(ku,{...i,...r,ref:t})},`DropdownMenuItem`)),$u=s.forwardRef(Ru(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Hu(n);return(0,G.jsx)(Au,{...i,...r,ref:t})},`DropdownMenuRadioGroup`)),ed=s.forwardRef(Ru(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Hu(n);return(0,G.jsx)(ju,{...i,...r,ref:t})},`DropdownMenuRadioItem`)),td=s.forwardRef(Ru(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Hu(n);return(0,G.jsx)(Mu,{...i,...r,ref:t})},`DropdownMenuItemIndicator`)),nd=s.forwardRef(Ru(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Hu(n);return(0,G.jsx)(Nu,{...i,...r,ref:t})},`DropdownMenuSeparator`)),rd=Ru(e=>{let{__scopeDropdownMenu:t,children:n,open:r,onOpenChange:i,defaultOpen:a}=e,o=Hu(t),[s,c]=tn({prop:r,defaultProp:a??!1,onChange:i,caller:`DropdownMenuSub`});return(0,G.jsx)(Pu,{...o,open:s,onOpenChange:c,children:n})},`DropdownMenuSub`),id=s.forwardRef(Ru(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Hu(n);return(0,G.jsx)(Fu,{...i,...r,ref:t})},`DropdownMenuSubTrigger`)),ad=s.forwardRef(Ru(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Hu(n);return(0,G.jsx)(Iu,{...i,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})},`DropdownMenuSubContent`)),od=Gu,sd=qu,cd=Ju,ld=Xu,ud=Zu,dd=Qu,fd=$u,pd=ed,md=td,hd=nd,gd=rd,_d=id,vd=ad;function yd({items:e,label:t=`更多操作`}){let n=e.findIndex(e=>e.danger);return(0,G.jsxs)(od,{children:[(0,G.jsx)(sd,{asChild:!0,children:(0,G.jsx)(`button`,{className:`icon-button more-actions-trigger`,type:`button`,"aria-label":t,title:t,children:(0,G.jsx)(ve,{size:16})})}),(0,G.jsx)(cd,{children:(0,G.jsx)(ld,{className:`more-actions-menu`,align:`end`,sideOffset:6,collisionPadding:12,children:e.map((e,t)=>(0,G.jsxs)(s.Fragment,{children:[t===n&&t>0&&(0,G.jsx)(hd,{className:`more-actions-separator`}),(0,G.jsx)(dd,{className:`more-actions-item${e.danger?` danger`:``}`,disabled:e.disabled,onSelect:e.onSelect,children:e.label})]},e.label))})})]})}function bd({targetId:e,children:t}){let[n,r]=(0,s.useState)(null);return(0,s.useLayoutEffect)(()=>{r(document.getElementById(e))},[e]),n?(0,sn.createPortal)(t,n):(0,G.jsx)(G.Fragment,{children:t})}function xd({children:e}){return(0,G.jsx)(bd,{targetId:`pageHeaderTools`,children:e})}function Sd({children:e}){return(0,G.jsx)(bd,{targetId:`pageHeaderActions`,children:e})}function Cd(e){return wd(e)||typeof e==`function`||Td(e)}function wd(e){return typeof e==`function`&&(()=>{let t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function Td(e){return typeof e==`object`&&typeof e.$$typeof==`symbol`&&[`react.memo`,`react.forward_ref`].includes(e.$$typeof.description)}function Ed(e,t){return e==null?null:Cd(e)?s.createElement(e,t):e}function Dd(e){if(`cell`in e&&e.cell){let t=e.cell,n=t.column.columnDef,r=t,i=n;return r.getIsAggregated?.()?Ed(i.aggregatedCell??n.cell,t.getContext()):r.getIsPlaceholder?.()?null:Ed(n.cell,t.getContext())}return`header`in e&&e.header?Ed(e.header.column.columnDef.header,e.header.getContext()):`footer`in e&&e.footer?Ed(e.footer.column.columnDef.footer,e.footer.getContext()):null}function Od({update:e,notify:t,unwatched:n}){return{link:r,unlink:i,propagate:a,checkDirty:o,shallowPropagate:s};function r(e,t,n){let r=t.depsTail;if(r!==void 0&&r.dep===e)return;let i=r===void 0?t.deps:r.nextDep;if(i!==void 0&&i.dep===e){i.version=n,t.depsTail=i;return}let a=e.subsTail;if(a!==void 0&&a.version===n&&a.sub===t)return;let o=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:i,prevSub:a,nextSub:void 0};i!==void 0&&(i.prevDep=o),r===void 0?t.deps=o:r.nextDep=o,a===void 0?e.subs=o:a.nextSub=o}function i(e,t=e.sub){let r=e.dep,i=e.prevDep,a=e.nextDep,o=e.nextSub,s=e.prevSub;return a===void 0?t.depsTail=i:a.prevDep=i,i===void 0?t.deps=a:i.nextDep=a,o===void 0?r.subsTail=s:o.prevSub=s,s===void 0?(r.subs=o)===void 0&&n(r):s.nextSub=o,a}function a(e){let n=e.nextSub,r;top:do{let i=e.sub,a=i.flags;if(a&60?a&12?a&4?!(a&48)&&c(e,i)?(i.flags=a|40,a&=1):a=0:i.flags=a&-9|32:a=0:i.flags=a|32,a&2&&t(i),a&1){let t=i.subs;if(t!==void 0){let i=(e=t).nextSub;i!==void 0&&(r={value:n,prev:r},n=i);continue}}if((e=n)!==void 0){n=e.nextSub;continue}for(;r!==void 0;)if(e=r.value,r=r.prev,e!==void 0){n=e.nextSub;continue top}break}while(!0)}function o(t,n){let r,i=0,a=!1;top:do{let o=t.dep,c=o.flags;if(n.flags&16)a=!0;else if((c&17)==17){if(e(o)){let e=o.subs;e.nextSub!==void 0&&s(e),a=!0}}else if((c&33)==33){(t.nextSub!==void 0||t.prevSub!==void 0)&&(r={value:t,prev:r}),t=o.deps,n=o,++i;continue}if(!a){let e=t.nextDep;if(e!==void 0){t=e;continue}}for(;i--;){let i=n.subs,o=i.nextSub!==void 0;if(o?(t=r.value,r=r.prev):t=i,a){if(e(n)){o&&s(i),n=t.sub;continue}a=!1}else n.flags&=-33;n=t.sub;let c=t.nextDep;if(c!==void 0){t=c;continue top}}return a}while(!0)}function s(e){do{let n=e.sub,r=n.flags;(r&48)==32&&(n.flags=r|16,(r&6)==2&&t(n))}while((e=e.nextSub)!==void 0)}function c(e,t){let n=t.depsTail;for(;n!==void 0;){if(n===e)return!0;n=n.prevDep}return!1}}function kd(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}var Ad=[],jd=0,{link:Md,unlink:Nd,propagate:Pd,checkDirty:Fd,shallowPropagate:Id}=Od({update(e){return e._update()},notify(e){Ad[Rd++]=e,e.flags&=-3},unwatched(e){e.depsTail!==void 0&&(e.depsTail=void 0,e.flags=17,Hd(e))}}),Ld=0,Rd=0,zd,Bd=0;function Vd(e){try{++Bd,e()}finally{--Bd||Ud()}}function Hd(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=Nd(n,e)}function Ud(){if(!(Bd>0)){for(;Ld{i.get(),n.current?t.next?.(i._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){let a=zd,o=t?.compare??Object.is;if(n)zd=i,++jd,i.depsTail=void 0;else if(e===void 0)return!1;n&&(i.flags=5);try{let t=i._snapshot,a=typeof e==`function`?e(t):e===void 0&&n?r(t):e;return t===void 0||!o(t,a)?(i._snapshot=a,!0):!1}finally{zd=a,n&&(i.flags&=-5),Hd(i)}}};return n?(i.flags=17,i.get=function(){let e=i.flags;if(e&16||e&32&&Fd(i.deps,i)){if(i._update()){let e=i.subs;e!==void 0&&Id(e)}}else e&32&&(i.flags=e&-33);return zd!==void 0&&Md(i,zd,jd),i._snapshot}):i.set=function(e){if(i._update(e)){let e=i.subs;e!==void 0&&(Pd(e),Id(e),Ud())}},i}function Gd(e){let t=()=>{let t=zd;zd=n,++jd,n.depsTail=void 0,n.flags=6;try{return e()}finally{zd=t,n.flags&=-5,Hd(n)}},n={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:6,notify(){let e=this.flags;e&16||e&32&&Fd(this.deps,this)?t():this.flags=2},stop(){this.flags=0,this.depsTail=void 0,Hd(this)}};return t(),n}function Kd(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();let n=qd(e);if(n.length!==qd(t).length)return!1;for(let r=0;r{var t=r();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:n,a=t.useState,o=t.useEffect,s=t.useLayoutEffect,c=t.useDebugValue;function l(e,t){var n=t(),r=a({inst:{value:n,getSnapshot:t}}),i=r[0].inst,l=r[1];return s(function(){i.value=n,i.getSnapshot=t,u(i)&&l({inst:i})},[e,n,t]),o(function(){return u(i)&&l({inst:i}),e(function(){u(i)&&l({inst:i})})},[e]),c(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;e.useSyncExternalStore=t.useSyncExternalStore===void 0?f:t.useSyncExternalStore})),Yd=n(((e,t)=>{t.exports=Jd()})),Xd=n((e=>{var t=r(),n=Yd();function i(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var a=typeof Object.is==`function`?Object.is:i,o=n.useSyncExternalStore,s=t.useRef,c=t.useEffect,l=t.useMemo,u=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var d=s(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=l(function(){function e(e){if(!o){if(o=!0,s=e,e=r(e),i!==void 0&&f.hasValue){var t=f.value;if(i(t,e))return c=t}return c=e}if(t=c,a(s,e))return t;var n=r(e);return i!==void 0&&i(t,n)?(s=e,t):(s=e,c=n)}var o=!1,s,c,l=n===void 0?null:n;return[function(){return e(t())},l===null?void 0:function(){return e(l())}]},[t,n,r,i]);var p=o(e,d[0],d[1]);return c(function(){f.hasValue=!0,f.value=p},[p]),u(p),p}})),Zd=t(n(((e,t)=>{t.exports=Xd()}))(),1);function Qd(e,t){return e===t}function $d(e,t=e=>e,n){let r=n?.compare??Qd,i=(0,s.useCallback)(t=>{let{unsubscribe:n}=e.subscribe(t);return n},[e]),a=(0,s.useCallback)(()=>e.get(),[e]);return(0,Zd.useSyncExternalStoreWithSelector)(i,a,a,t,r)}function ef(e){let t=$d(e.source,e.selector,{compare:Kd});return typeof e.children==`function`?e.children(t):e.children}function tf(e){let t=e;return Object.defineProperty(e,"state",{get(){return e.get()}}),`set`in e&&(t.setState=e.set.bind(e)),t}function nf(e){let{createAtom:t,batch:n}=e,r=t(0);return{createOptionsStore:!1,wrapExternalAtoms:!1,addSubscription:()=>{throw Error(`Feature not supported in current reactivity implementation`)},unmount:()=>{throw Error(`Feature not supported in current reactivity implementation`)},schedule:e.schedule??(e=>queueMicrotask(e)),batch:n,untrack:e=>e(),createReadonlyAtom:(e,n)=>{let i=n?.compare??Object.is,a=!1,o,s=()=>{let t=e();return(!a||!i(o,t))&&(o=t,a=!0),o},c=t(()=>(r.get(),s()),{compare:i});return{get:s,subscribe:c.subscribe.bind(c)}},createWritableAtom:(e,n)=>t(e,{compare:n?.compare}),commit:()=>{r.set(e=>e+1)}}}function rf(e,t=Object.is){let n=!1,r;return{get:e.get,markCommitted:e=>{r=e,n=!0},subscribe:i=>e.subscribe(e=>{(!n||!t(r,e))&&i(e)})}}function af(){return nf({createAtom:Wd,batch:Vd})}function of(e,t){return typeof e==`function`?e(t):e}function sf(e){if(Array.isArray(e))return e.map(sf);if(e&&typeof e==`object`){let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)return e;let n=t===null?cf():{},r=Object.keys(e);for(let t=0;tObject.prototype.propertyIsEnumerable.call(e,t))}var ff=3;function pf(e,t){return mf(e,t,ff)}function mf(e,t,n){if(Object.is(e,t))return!0;if(n<=0||!uf(e)||!uf(t)||(Array.isArray(e)||Array.isArray(t))&&(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length))return!1;let r=df(e),i=df(t);if(r.length!==i.length)return!1;let a=e,o=t;for(let e=0;e{let t=of(n,e);return r(e,t)?e:t})}function gf(e,t){let n=[],r=e=>{e.forEach(e=>{n.push(e);let i=t(e);i.length&&r(i)})};return r(e),n}var _f=({fn:e,memoDeps:t,onAfterCompare:n,onAfterUpdate:r,onBeforeCompare:i,onBeforeUpdate:a})=>{let o=[],s;return c=>{i?.();let l=t?.(c),u=!l||l.length!==o?.length;if(!u&&l){for(let e=0;e{if(!t){t=!0;return}e()}}function yf({feature:e,fnName:t,objectId:n,onAfterUpdate:r,table:i,...a}){let o=()=>{if(!r)return;let{schedule:e,untrack:t}=i._reactivity;e(()=>t(()=>r()))},s={onAfterUpdate:()=>{o()}};return _f({...a,...s})}function bf(e,t=`_`){let[n,r]=e.split(t);return{fnKey:r,fnName:`${n}.${r}`,parentName:n}}function xf(e,t,n){for(let[r,{fn:i,memoDeps:a}]of Object.entries(n)){let{fnKey:n,fnName:o}=bf(r);t[n]=a?yf({memoDeps:a,fn:i,fnName:o,table:t,feature:e}):i}}function Sf(e,t,n,r){for(let[i,{fn:a,memoDeps:o}]of Object.entries(r)){let{fnKey:r,fnName:s}=bf(i);if(o){let i=`_memo_${r}`;t[r]=function(...t){if(!this[i]){let t=this;this[i]=yf({memoDeps:e=>o(t,e),fn:(...e)=>a(t,...e),fnName:s,objectId:t.id,table:n,feature:e})}return this[i](...t)}}else t[r]=function(...e){return a(this,...e)}}}function Cf(e,t,n,...r){return e[t]?.(...r)??n(e,...r)}function wf(e){return e.row.getValue(e.column.id)}function Tf(e){return e.getValue()??e.table.options.renderFallbackValue}function Ef(e){return{table:e.table,column:e.column,row:e.row,cell:e,getValue:()=>e.getValue(),renderValue:()=>e.renderValue()}}var Df={assignCellPrototype:(e,t)=>{Sf(`coreCellsFeature`,e,t,{cell_getValue:{fn:e=>wf(e)},cell_renderValue:{fn:e=>Tf(e)},cell_getContext:{fn:e=>Ef(e),memoDeps:e=>[e]}})}};function Of(e){if(!e._headerPrototype){e._headerPrototype={table:e};let t=Object.values(e._features);for(let n=0;nCf(e,`getIsVisible`,jf)):(lf(t,e.id)?t[e.id]:void 0)??!0}function Mf(e){return e.getAllLeafColumns().filter(e=>Cf(e,`getIsVisible`,jf))}function Nf(e,t=1){let n=t;for(let r=0;r0&&Lf(s,t-1,n,r,i,a)}function Rf(e){for(let t=0;t{let n=t;for(let t=0;te[i.accessorKey]}if(!s)throw Error();let l=Bf(e),u=Object.create(l);u.accessorFn=c,u.columnDef=i,u.columns=[],u.depth=n,u.id=`${String(s)}`,u.parent=r;let d=e._columnInstanceInitFns;for(let e=0;e{let r=[];if(!t?.length)r=n;else{let e=new Map;for(let t=0;t!n.includes(e.id));if(r===`remove`)return i;let a=new Map;for(let e=0;ee.getFlatColumns())]}function Gf(e){if(e.columns.length){let t=e.columns.flatMap(e=>e.getLeafColumns());return Cf(e.table,`getOrderColumns`,Hf)(t)}return[e]}function Kf(e){return{header:e=>{let t=e.header.column.columnDef;return t.accessorKey?t.accessorKey:t.accessorFn?t.id:null},cell:e=>e.renderValue()?.toString?.()??null,...Object.values(e._features).reduce((e,t)=>Object.assign(e,t.getDefaultColumnDef?.()),{}),...e.options.defaultColumn}}function qf(e,t,n,r=0){let i=Array(t.length);for(let a=0;ae.getFlatColumns())}function Xf(e){let t=cf(),n=e.getAllFlatColumns();for(let e=0;ee.getLeafColumns());return Cf(e,`getOrderColumns`,Hf)(t)}function Qf(e){let t=cf(),n=e.getAllLeafColumns();for(let e=0;e{Sf(`coreColumnsFeature`,e,t,{column_getFlatColumns:{fn:e=>Wf(e),memoDeps:e=>[e.table.options.columns]},column_getLeafColumns:{fn:e=>Gf(e),memoDeps:e=>[e.table.atoms.columnOrder?.get(),e.table.atoms.grouping?.get(),e.table.options.columns,e.table.options.groupedColumnMode]}})},constructTableAPIs:e=>{xf(`coreColumnsFeature`,e,{table_getDefaultColumnDef:{fn:()=>Kf(e),memoDeps:()=>[e.options.defaultColumn]},table_getAllColumns:{fn:()=>Jf(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumns:{fn:()=>Yf(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumnsById:{fn:()=>Xf(e),memoDeps:()=>[e.options.columns]},table_getAllLeafColumns:{fn:()=>Zf(e),memoDeps:()=>[e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode]},table_getAllLeafColumnsById:{fn:()=>Qf(e),memoDeps:()=>[e.getAllLeafColumns()]},table_getColumn:{fn:t=>$f(e,t)}})}};function tp(e,t){for(let n=0;n!t.includes(e.id)&&!n.includes(e.id));return zf(r,[...o,...c,...s],e)}function ap(e){return[...e.getHeaderGroups()].reverse()}function op(e){let t=e.getHeaderGroups(),n=[];for(let e=0;e{Sf(`coreHeadersFeature`,e,t,{header_getLeafHeaders:{fn:e=>np(e),memoDeps:e=>[e.column.table.options.columns]},header_getContext:{fn:e=>rp(e),memoDeps:e=>[e.column.table.options.columns]}})},constructTableAPIs:e=>{xf(`coreHeadersFeature`,e,{table_getHeaderGroups:{fn:()=>ip(e),memoDeps:()=>[e.options.columns,e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.atoms.columnPinning?.get(),e.atoms.columnVisibility?.get(),e.options.groupedColumnMode]},table_getFooterGroups:{fn:()=>ap(e),memoDeps:()=>[e.getHeaderGroups()]},table_getFlatHeaders:{fn:()=>op(e),memoDeps:()=>[e.getHeaderGroups()]},table_getLeafHeaders:{fn:()=>sp(e),memoDeps:()=>[e.getHeaderGroups()]}})}};function lp(e){if(!e._rowPrototype){e._rowPrototype={table:e};let t=Object.values(e._features);for(let n=0;n{let s=lp(e),c=Object.create(s);c._displayIndexCache=-1,c._uniqueValuesCache=cf(),c._valuesCache=cf(),c.depth=i,c.id=t,c.index=r,c.original=n,c.parentId=o,c.subRows=a??[];let l=e._rowInstanceInitFns;for(let e=0;efp(e))}function mp(e){e.atoms.expanded&&(e.options.autoResetAll??e.options.autoResetExpanded??!e.options.manualExpanding)&&e._reactivity.schedule(()=>hp(e))}function hp(e,t){let n=e.initialState.expanded;hf(e,`expanded`,t?cf():n===!0||Object.assign(cf(),sf(n??{})))}var gp=0;function _p(e){if(e.options.autoResetAll??e.options.autoResetPageIndex??!e.options.manualPagination){if((e.atoms.pagination?.get()?.pageIndex??gp)===gp)return;bp(e,!0)}}function vp(e,t){hf(e,`pagination`,t)}function yp(e,t){vp(e,n=>{let r=of(t,n.pageIndex),i=e.options.pageCount===void 0||e.options.pageCount===-1?2**53-1:e.options.pageCount-1;return r=Math.max(0,Math.min(r,i)),{...n,pageIndex:r}})}function bp(e,t){yp(e,t?gp:e.initialState.pagination?.pageIndex??gp)}function xp(e,t){hf(e,`sorting`,t)}function Sp(e,t){xp(e,t?[]:sf(e.initialState.sorting??[]))}function Cp(e){e.atoms.sorting&&(e.options.autoResetAll??e.options.autoResetSorting??!1)&&Sp(e)}function wp(){return e=>yf({feature:`coreRowModelsFeature`,table:e,fnName:`table.getCoreRowModel`,memoDeps:()=>[e.options.data],fn:()=>Ep(e,e.options.data),onAfterUpdate:vf(()=>{mp(e),_p(e),Cp(e),pp(e)})})}function Tp(e,t,n,r=0,i){let a=[];for(let o=0;o{xf(`coreRowModelsFeature`,e,{table_getCoreRowModel:{fn:()=>Dp(e)},table_getPreFilteredRowModel:{fn:()=>Op(e)},table_getFilteredRowModel:{fn:()=>kp(e)},table_getPreGroupedRowModel:{fn:()=>Ap(e)},table_getGroupedRowModel:{fn:()=>jp(e)},table_getPreSortedRowModel:{fn:()=>Mp(e)},table_getSortedRowModel:{fn:()=>Np(e)},table_getPreExpandedRowModel:{fn:()=>Pp(e)},table_getExpandedRowModel:{fn:()=>Fp(e)},table_getPrePaginatedRowModel:{fn:()=>Ip(e)},table_getPaginatedRowModel:{fn:()=>Lp(e)},table_getRowModel:{fn:()=>Rp(e)}})}};function Bp(e){if(!e._cellPrototype){e._cellPrototype={table:e};let t=Object.values(e._features);for(let n=0;n{t._displayIndexCache=e.length,e.push(t),t.subRows.length&&t.getIsExpanded?.()&&t.subRows.forEach(n)};return t.forEach(n),e}for(let e=0;ee.subRows)}function Jp(e){let t=e.getCoreRowModel().flatRows,n=0;for(let e=0;e{Sf(`coreRowsFeature`,e,t,{row_getDisplayIndex:{fn:e=>Hp(e)},row_getAllCellsByColumnId:{fn:e=>Qp(e),memoDeps:e=>[e.getAllCells()]},row_getAllCells:{fn:e=>Zp(e),memoDeps:e=>[e.table.getAllLeafColumns()]},row_getLeafRows:{fn:e=>qp(e),memoDeps:e=>[e.subRows]},row_getParentRow:{fn:e=>Yp(e)},row_getParentRows:{fn:e=>Xp(e)},row_getUniqueValues:{fn:(e,t)=>Gp(e,t)},row_getValue:{fn:(e,t)=>Wp(e,t)},row_renderValue:{fn:(e,t)=>Kp(e,t)}})},constructTableAPIs:e=>{xf(`coreRowsFeature`,e,{table_getRowsInDisplayOrder:{fn:()=>Up(e),memoDeps:()=>[e.getPrePaginatedRowModel().rows,e.options.paginateExpandedRows,e.options.paginateExpandedRows===!1?e.atoms.expanded?.get():void 0]},table_getRowId:{fn:(t,n,r)=>$p(t,e,n,r)},table_getRow:{fn:(t,n)=>em(e,t,n)},table_getMaxSubRowDepth:{fn:()=>Jp(e),memoDeps:()=>[e.getCoreRowModel()]}})}};function nm(e,t,n=(e,t)=>e===t){let r=t===void 0?e.options.state:t;e._reactivity.batch(()=>{if(r)for(let t in r){let i=e.baseAtoms[t];if(!i)continue;let a=r[t],o=a===void 0?e.initialState[t]:a;n(e._reactivity.untrack(()=>i.get()),o)||i.set(()=>o)}})}function rm(e,t,n=(e,t)=>e===t){e._reactivity.batch(()=>{nm(e,t,n),e._reactivity.commit?.()})}function im(e){let t=sf(e.initialState);e._reactivity.batch(()=>{let n=Object.keys(t);for(let r=0;rr):e.options=r,n?.syncExternalState!==!1&&rm(e,r.state??null)}var sm={coreCellsFeature:Df,coreColumnsFeature:ep,coreHeadersFeature:cp,coreRowModelsFeature:zp,coreRowsFeature:tm,coreTablesFeature:{constructTableAPIs:e=>{xf(`coreTablesFeature`,e,{table_reset:{fn:()=>im(e)},table_setOptions:{fn:t=>om(e,t)}})}}};function cm(){return{accessor:(e,t)=>typeof e==`function`?{...t,accessorFn:e}:{...t,accessorKey:e},columns:e=>e,display:e=>e,group:e=>e}}function lm(e){return e}function um(e,t={}){return Object.values(e).forEach(e=>{t=e.getInitialState?.(t)??t}),sf(t)}function dm(e){let t=e.features.coreReactivityFeature,{aggregationFns:n,columnMeta:r,coreRowModel:i,expandedRowModel:a,facetedMinMaxValues:o,facetedRowModel:s,facetedUniqueValues:c,filterFns:l,filterMeta:u,filteredRowModel:d,groupedRowModel:f,paginatedRowModel:p,sortFns:m,sortedRowModel:h,tableMeta:g,..._}=e.features,v={_cellInstanceInitFns:[],_columnInstanceInitFns:[],_features:{...sm,..._},_headerGroupInstanceInitFns:[],_headerInstanceInitFns:[],_reactivity:t,_rowInstanceInitFns:[],_rowModelFns:{aggregationFns:n,filterFns:l,sortFns:m},_rowModels:{},atoms:{},baseAtoms:{}},y=Object.values(v._features),b={...y.reduce((e,t)=>Object.assign(e,t.getDefaultTableOptions?.(v)),{}),...e};if(t.wrapExternalAtoms&&b.atoms)for(let[e,n]of Object.entries(b.atoms)){let r=n,i=t.createWritableAtom(r.get(),{debugName:`externalAtom/${e}`});b.atoms[e]=i;let a=!1,o=r.subscribe(e=>{a||i.set(e)}),s=i.subscribe(e=>{a=!0,r.set(e),a=!1});t.addSubscription(o),t.addSubscription(s)}t.createOptionsStore?(v.optionsStore=t.createWritableAtom(b,{debugName:`table/optionsStore`}),Object.defineProperty(v,"options",{configurable:!0,enumerable:!0,get(){return v.optionsStore.get()},set(e){v.optionsStore.set(()=>e)}})):v.options=b,v.initialState=um(v._features,v.options.initialState);let x=Object.keys(v.initialState);for(let e=0;e{let e=v.options,t=e.atoms?.[n],r=t?t.get():v.baseAtoms[n].get();if(t)return r;let i=e.state;if(i&&lf(i,n)){let e=i[n];return e===void 0?v.initialState[n]:e}return r},{debugName:`table/atoms/${n}`})}nm(v),v.store=tf(t.createReadonlyAtom(()=>{let e={};for(let t=0;t`u`?s.useEffect:s.useLayoutEffect;function pm(e,t){let[{table:n,rootSource:r}]=(0,s.useState)(()=>{let t=dm({...e,features:{coreReactivityFeature:af(),...e.features}});return t.Subscribe=(e=>ef({...e,source:e.source??t.store})),t.FlexRender=Dd,{table:t,rootSource:rf(t.store,Kd)}}),i=n;om(i,t=>({...t,...e}),{syncExternalState:!1});let a=i.options.state,o=r.get(),c=$d(r,t,{compare:Kd});return fm(()=>{r.markCommitted(o),rm(i,a??null,Kd)}),(0,s.useMemo)(()=>({...n,options:e,state:c}),[n,e,c])}var mm=lm({});function hm(e){return typeof e==`number`?`${e}px`:e}function gm(e){return e instanceof Element&&!!e.closest(`button, a, input, select, textarea, [role='button']`)}function _m({columns:e,data:t,getRowId:n,caption:r,minWidth:i=880,loading:a=!1,error:o=``,onRetry:c,empty:l={title:`没有数据`},pagination:u,onRowActivate:d,rowAriaLabel:f}){let p=(0,s.useMemo)(()=>cm(),[]),m=pm({features:mm,columns:(0,s.useMemo)(()=>p.columns(e.map(e=>p.display({id:e.id,header:()=>e.header,cell:t=>e.cell(t.row.original)}))),[e,p]),data:t,getRowId:n}),h=(e,t)=>{!d||e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),d(t))},g=u&&t.length?u.pageIndex*u.pageSize+1:0,_=u?Math.min(u.pageIndex*u.pageSize+t.length,u.total):0;return(0,G.jsxs)(`div`,{className:`studio-data-table`,"aria-busy":a||void 0,"data-state":a?`loading`:o?`error`:t.length?`ready`:`empty`,children:[(0,G.jsxs)(`div`,{className:`studio-data-table-scroll data-scroll-region`,children:[!a&&!o&&(0,G.jsxs)(`table`,{style:{minWidth:hm(i)},children:[r&&(0,G.jsx)(`caption`,{className:`sr-only`,children:r}),(0,G.jsx)(`thead`,{children:m.getHeaderGroups().map(t=>(0,G.jsx)(`tr`,{children:t.headers.map((t,n)=>{let r=e[n],i={width:hm(r?.width),minWidth:hm(r?.minWidth)};return(0,G.jsx)(`th`,{className:r?.headerClassName,style:i,children:t.isPlaceholder?null:(0,G.jsx)(m.FlexRender,{header:t})},t.id)})},t.id))}),(0,G.jsx)(`tbody`,{children:m.getRowModel().rows.map(t=>(0,G.jsx)(`tr`,{className:d?`is-interactive`:void 0,tabIndex:d?0:void 0,"aria-label":f?.(t.original),onKeyDown:e=>h(e,t.original),onClick:e=>{d&&!gm(e.target)&&d(t.original)},children:t.getAllCells().map((t,n)=>(0,G.jsx)(`td`,{className:e[n]?.className,children:(0,G.jsx)(m.FlexRender,{cell:t})},t.id))},t.id))})]}),a&&(0,G.jsxs)(`div`,{className:`studio-data-table-state is-loading`,role:`status`,children:[(0,G.jsx)(`span`,{className:`sr-only`,children:`正在加载`}),(0,G.jsx)(`div`,{className:`studio-table-skeleton`,"aria-hidden":`true`,children:[0,1,2,3].map(e=>(0,G.jsxs)(`div`,{className:`studio-table-skeleton-row`,children:[(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{})]},e))}),(0,G.jsxs)(`span`,{className:`studio-table-loading-copy`,children:[(0,G.jsx)(Ne,{className:`animate-spin`,size:14}),` 正在加载`]})]}),!a&&o&&(0,G.jsxs)(`div`,{className:`studio-data-table-state is-error`,role:`alert`,children:[(0,G.jsx)(U,{size:20}),(0,G.jsx)(`strong`,{children:`加载失败`}),(0,G.jsx)(`span`,{children:o}),c&&(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:c,children:`重新加载`})]}),!a&&!o&&t.length===0&&(0,G.jsxs)(`div`,{className:`studio-data-table-state empty-state${l.action?``:` inline`}`,children:[l.icon&&(0,G.jsx)(`span`,{className:`empty-icon`,children:l.icon}),(0,G.jsx)(`h2`,{children:l.title}),l.description&&(0,G.jsx)(`p`,{children:l.description}),l.action]})]}),u&&!a&&!o&&(0,G.jsxs)(`footer`,{className:`studio-data-table-pagination`,children:[(0,G.jsxs)(`span`,{children:[`第 `,u.pageIndex+1,` 页 · `,g,`–`,_,` / `,u.total,` 条`]}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:u.pageIndex<=0,onClick:u.onPreviousPage,children:[(0,G.jsx)(ee,{size:14}),`上一页`]}),(0,G.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:!u.hasNextPage,onClick:u.onNextPage,children:[`下一页`,(0,G.jsx)(te,{size:14})]})]})]})]})}var vm=Object.defineProperty,ym=(e,t)=>vm(e,`name`,{value:t,configurable:!0});function bm(e,[t,n]){return Math.min(n,Math.max(t,e))}ym(bm,`clamp`);var xm=Object.defineProperty,Sm=(e,t)=>xm(e,`name`,{value:t,configurable:!0});function Cm(e){let t=s.useRef({value:e,previous:e});return s.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}Sm(Cm,`usePrevious`);var wm=Object.defineProperty,Tm=(e,t)=>wm(e,`name`,{value:t,configurable:!0}),Em=Object.freeze({position:`absolute`,border:0,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,wordWrap:`normal`}),Dm=s.forwardRef(Tm(function(e,t){return(0,G.jsx)(Tn.span,{...e,ref:t,style:{...Em,...e.style}})},`VisuallyHidden`)),Om=Object.defineProperty,km=(e,t)=>Om(e,`name`,{value:t,configurable:!0}),Am=[` `,`Enter`,`ArrowUp`,`ArrowDown`],jm=[` `,`Enter`],Mm=`Select`,[Nm,Pm,Fm]=Ma(Mm),[Im,Lm]=zt(Mm,[Fm,mc]),Rm=mc(),[zm,Bm]=Im(Mm),[Vm,Hm]=Im(Mm);function Um(e){let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:c,onValueChange:l,dir:u,name:d,autoComplete:f,disabled:p,required:m,form:h,internal_do_not_use_render:g}=e,_=Rm(t),[v,y]=s.useState(null),[b,x]=s.useState(null),[S,C]=s.useState(!1),w=Ka(u),[T,E]=tn({prop:r,defaultProp:i??!1,onChange:a,caller:Mm}),[D,O]=tn({prop:o,defaultProp:c,onChange:l,caller:Mm}),k=s.useRef(null),A=s.useRef(D);s.useEffect(()=>{let e=h?v?.ownerDocument.getElementById(h):v?.form;if(e instanceof HTMLFormElement){let t=km(()=>O(A.current),`reset`);return e.addEventListener(`reset`,t),()=>e.removeEventListener(`reset`,t)}},[h,v,O]);let j=!v||!!h||!!v.closest(`form`),[M,N]=s.useState(new Set),P=Kt(),F=Array.from(M).map(e=>e.props.value).join(`;`),I=s.useCallback(e=>{N(t=>new Set(t).add(e))},[]),L=s.useCallback(e=>{N(t=>{let n=new Set(t);return n.delete(e),n})},[]),R={required:m,trigger:v,onTriggerChange:y,valueNode:b,onValueNodeChange:x,valueNodeHasChildren:S,onValueNodeHasChildrenChange:C,contentId:P,value:D,onValueChange:O,open:T,onOpenChange:E,dir:w,triggerPointerDownPosRef:k,disabled:p,name:d,autoComplete:f,form:h,nativeOptions:M,nativeSelectKey:F,isFormControl:j};return(0,G.jsx)(Ac,{..._,children:(0,G.jsx)(zm,{scope:t,...R,children:(0,G.jsx)(Nm.Provider,{scope:t,children:(0,G.jsx)(Vm,{scope:t,onNativeOptionAdd:I,onNativeOptionRemove:L,children:Ah(g)?g(R):n})})})})}km(Um,`SelectProvider`);var Wm=km(e=>{let{__scopeSelect:t,children:n,...r}=e;return(0,G.jsx)(Um,{__scopeSelect:t,...r,internal_do_not_use_render:({isFormControl:e})=>(0,G.jsxs)(G.Fragment,{children:[n,e?(0,G.jsx)(kh,{__scopeSelect:t}):null]})})},`Select`),Gm=`SelectTrigger`,Km=s.forwardRef(km(function(e,t){let{__scopeSelect:n,disabled:r=!1,...i}=e,a=Rm(n),o=Bm(Gm,n),c=o.disabled||r,l=Ft(t,o.onTriggerChange),u=Pm(n),d=s.useRef(`touch`),[f,p,m]=Mh(e=>{let t=u().filter(e=>!e.disabled),n=Nh(t,e,t.find(e=>e.value===o.value));n!==void 0&&o.onValueChange(n.value)}),h=km(e=>{c||(o.onOpenChange(!0),m()),e&&(o.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})},`handleOpen`);return(0,G.jsx)(jc,{asChild:!0,...a,children:(0,G.jsx)(Tn.button,{type:`button`,role:`combobox`,"aria-controls":o.open?o.contentId:void 0,"aria-expanded":o.open,"aria-required":o.required,"aria-autocomplete":`none`,dir:o.dir,"data-state":o.open?`open`:`closed`,disabled:c,"data-disabled":c?``:void 0,"data-placeholder":jh(o.value)?``:void 0,...i,ref:l,onClick:K(i.onClick,e=>{e.currentTarget.focus(),d.current!==`mouse`&&h(e)}),onPointerDown:K(i.onPointerDown,e=>{d.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(h(e),e.preventDefault())}),onKeyDown:K(i.onKeyDown,e=>{let t=f.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&p(e.key),!(t&&e.key===` `)&&Am.includes(e.key)&&(h(),e.preventDefault())})})})},`SelectTrigger`)),qm=`SelectValue`,Jm=s.forwardRef(km(function(e,t){let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...c}=e,l=Bm(qm,n),{onValueNodeHasChildrenChange:u}=l,d=a!==void 0,f=Ft(t,l.onValueNodeChange);Vt(()=>{u(d)},[u,d]);let p=jh(l.value);return(0,G.jsx)(Tn.span,{...c,asChild:!p&&c.asChild,ref:f,style:{pointerEvents:`none`},children:(0,G.jsx)(s.Fragment,{children:p?o:a},p?`placeholder`:`value`)})},`SelectValue`)),Ym=s.forwardRef(km(function(e,t){let{__scopeSelect:n,children:r,...i}=e;return(0,G.jsx)(Tn.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})},`SelectIcon`)),[Xm,Zm]=Im(`SelectPortal`,{forceMount:void 0}),Qm=km(e=>{let{__scopeSelect:t,forceMount:n,...r}=e;return(0,G.jsx)(Xm,{scope:e.__scopeSelect,forceMount:n,children:(0,G.jsx)(cr,{asChild:!0,...r})})},`SelectPortal`),$m=`SelectContent`,eh=s.forwardRef(km(function(e,t){let n=Zm($m,e.__scopeSelect),{forceMount:r=n.forceMount,...i}=e,a=Bm($m,e.__scopeSelect),[o,c]=s.useState();return Vt(()=>{c(new DocumentFragment)},[]),(0,G.jsx)(fr,{present:r||a.open,children:({present:e})=>e?(0,G.jsx)(oh,{...i,ref:t}):(0,G.jsx)(th,{...i,fragment:o})})},`SelectContent`)),th=s.forwardRef(km(function(e,t){let{__scopeSelect:n,children:r,fragment:i}=e;return i?sn.createPortal((0,G.jsx)(rh,{scope:n,children:(0,G.jsx)(Nm.Slot,{scope:n,children:(0,G.jsx)(`div`,{ref:t,children:r})})}),i):null},`SelectContentFragment`)),nh=10,[rh,ih]=Im($m),ah=un(`SelectContent.RemoveScroll`),oh=s.forwardRef(km(function(e,t){let{__scopeSelect:n}=e,{position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:o,side:c,sideOffset:l,align:u,alignOffset:d,arrowPadding:f,collisionBoundary:p,collisionPadding:m,sticky:h,hideWhenDetached:g,avoidCollisions:_,...v}=e,y=Bm($m,n),[b,x]=s.useState(null),[S,C]=s.useState(null),w=Ft(t,x),[T,E]=s.useState(null),[D,O]=s.useState(null),k=Pm(n),[A,j]=s.useState(!1),M=s.useRef(!1);s.useEffect(()=>{if(b)return Wi(b)},[b]),Cr();let N=s.useCallback(e=>{let[t,...n]=k().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&S&&(S.scrollTop=0),n===r&&S&&(S.scrollTop=S.scrollHeight),n?.focus(),document.activeElement!==i))return},[k,S]),P=s.useCallback(()=>N([T,b]),[N,T,b]);s.useEffect(()=>{A&&P()},[A,P]);let{onOpenChange:F,triggerPointerDownPosRef:I}=y;s.useEffect(()=>{if(b){let e={x:0,y:0},t=km(t=>{e={x:Math.abs(Math.round(t.pageX)-(I.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(I.current?.y??0))}},`handlePointerMove`),n=km(n=>{e.x<=10&&e.y<=10?n.preventDefault():n.composedPath().includes(b)||F(!1),document.removeEventListener(`pointermove`,t),I.current=null},`handlePointerUp`);return I.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[b,F,I]),s.useEffect(()=>{let e=km(()=>F(!1),`close`);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[F]);let[L,R]=Mh(e=>{let t=k().filter(e=>!e.disabled),n=Nh(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current?.focus())}),z=s.useCallback((e,t,n)=>{let r=!M.current&&!n;(y.value!==void 0&&y.value===t||r)&&(E(e),r&&(M.current=!0))},[y.value]),B=s.useCallback(()=>b?.focus(),[b]),V=s.useCallback((e,t,n)=>{let r=!M.current&&!n;(y.value!==void 0&&y.value===t||r)&&O(e)},[y.value]),H=r===`popper`?ch:sh,ee=H===ch?{side:c,sideOffset:l,align:u,alignOffset:d,arrowPadding:f,collisionBoundary:p,collisionPadding:m,sticky:h,hideWhenDetached:g,avoidCollisions:_}:{};return(0,G.jsx)(rh,{scope:n,content:b,viewport:S,onViewportChange:C,itemRefCallback:z,selectedItem:T,onItemLeave:B,itemTextRefCallback:V,focusSelectedItem:P,selectedItemText:D,position:r,isPositioned:A,searchRef:L,children:(0,G.jsx)(Fi,{as:ah,allowPinchZoom:!0,children:(0,G.jsx)(Yn,{asChild:!0,trapped:y.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:K(i,e=>{y.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,G.jsx)(Ln,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>y.onOpenChange(!1),children:(0,G.jsx)(H,{role:`listbox`,id:y.contentId,"data-state":y.open?`open`:`closed`,dir:y.dir,onContextMenu:e=>e.preventDefault(),...v,...ee,onPlaced:()=>j(!0),ref:w,style:{display:`flex`,flexDirection:`column`,outline:`none`,...v.style},onKeyDown:K(v.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&R(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=k().filter(e=>!e.disabled).map(e=>e.ref.current);if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>N(t)),e.preventDefault()}})})})})})})},`SelectContentImpl`)),sh=s.forwardRef(km(function(e,t){let{__scopeSelect:n,onPlaced:r,...i}=e,a=Bm($m,n),o=ih($m,n),[c,l]=s.useState(null),[u,d]=s.useState(null),f=Ft(t,d),p=Pm(n),m=s.useRef(!1),h=s.useRef(!0),{viewport:g,selectedItem:_,selectedItemText:v,focusSelectedItem:y}=o,b=s.useCallback(()=>{if(a.trigger&&a.valueNode&&c&&u&&g&&_&&v){let e=a.trigger.getBoundingClientRect(),t=u.getBoundingClientRect(),n=a.valueNode.getBoundingClientRect(),i=v.getBoundingClientRect();if(a.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,o=e.left-a,s=e.width+o,l=Math.max(s,t.width),u=window.innerWidth-nh,d=bm(a,[nh,Math.max(nh,u-l)]);c.style.minWidth=s+`px`,c.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,s=e.width+o,l=Math.max(s,t.width),u=window.innerWidth-nh,d=bm(a,[nh,Math.max(nh,u-l)]);c.style.minWidth=s+`px`,c.style.right=d+`px`}let o=p(),s=window.innerHeight-nh*2,l=g.scrollHeight,d=window.getComputedStyle(u),f=parseInt(d.borderTopWidth,10),h=parseInt(d.paddingTop,10),y=parseInt(d.borderBottomWidth,10),b=parseInt(d.paddingBottom,10),x=f+h+l+b+y,S=Math.min(_.offsetHeight*5,x),C=window.getComputedStyle(g),w=parseInt(C.paddingTop,10),T=parseInt(C.paddingBottom,10),E=e.top+e.height/2-nh,D=s-E,O=_.offsetHeight/2,k=_.offsetTop+O,A=f+h+k,j=x-A;if(A<=E){let e=o.length>0&&_===o[o.length-1].ref.current;c.style.bottom=`0px`;let t=u.clientHeight-g.offsetTop-g.offsetHeight,n=A+Math.max(D,O+(e?T:0)+t+y);c.style.height=n+`px`}else{let e=o.length>0&&_===o[0].ref.current;c.style.top=`0px`;let t=Math.max(E,f+g.offsetTop+(e?w:0)+O)+j;c.style.height=t+`px`,g.scrollTop=A-E+g.offsetTop}c.style.margin=`${nh}px 0`,c.style.minHeight=S+`px`,c.style.maxHeight=s+`px`,r?.(),requestAnimationFrame(()=>m.current=!0)}},[p,a.trigger,a.valueNode,c,u,g,_,v,a.dir,r]);Vt(()=>b(),[b]);let[x,S]=s.useState();Vt(()=>{u&&S(window.getComputedStyle(u).zIndex)},[u]);let C=s.useCallback(e=>{e&&h.current===!0&&(b(),y?.(),h.current=!1)},[b,y]);return(0,G.jsx)(lh,{scope:n,contentWrapper:c,shouldExpandOnScrollRef:m,onScrollButtonChange:C,children:(0,G.jsx)(`div`,{ref:l,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:x},children:(0,G.jsx)(Tn.div,{...i,ref:f,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})},`SelectItemAlignedPosition`)),ch=s.forwardRef(km(function(e,t){let{__scopeSelect:n,align:r=`start`,collisionPadding:i=nh,...a}=e,o=Rm(n);return(0,G.jsx)(Mc,{...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})},`SelectPopperPosition`)),[lh,uh]=Im($m,{}),dh=`SelectViewport`,fh=s.forwardRef(km(function(e,t){let{__scopeSelect:n,nonce:r,...i}=e,a=ih(dh,n),o=uh(dh,n),c=Ft(t,a.onViewportChange),l=s.useRef(0);return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`},nonce:r}),(0,G.jsx)(Nm.Slot,{scope:n,children:(0,G.jsx)(Tn.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:c,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:K(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=o;if(r?.current&&n){let e=Math.abs(l.current-t.scrollTop);if(e>0){let r=window.innerHeight-nh*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o0?s:0,n.style.justifyContent=`flex-end`)}}}l.current=t.scrollTop})})})]})},`SelectViewport`)),[ph,mh]=Im(`SelectGroup`),hh=`SelectItem`,[gh,_h]=Im(hh),vh=s.forwardRef(km(function(e,t){let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...o}=e,c=Bm(hh,n),l=ih(hh,n),u=c.value===r,[d,f]=s.useState(a??``),[p,m]=s.useState(!1),h=Ft(t,kn(e=>l.itemRefCallback?.(e,r,i))),g=Kt(),_=s.useRef(`touch`),v=km(()=>{i||(c.onValueChange(r),c.onOpenChange(!1))},`handleSelect`);return(0,G.jsx)(gh,{scope:n,value:r,disabled:i,textId:g,isSelected:u,onItemTextChange:s.useCallback(e=>{f(t=>t||(e?.textContent??``).trim())},[]),children:(0,G.jsx)(Nm.ItemSlot,{scope:n,value:r,disabled:i,textValue:d,children:(0,G.jsx)(Tn.div,{role:`option`,"aria-labelledby":g,"data-highlighted":p?``:void 0,"aria-selected":u&&p,"data-state":u?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...o,ref:h,onFocus:K(o.onFocus,()=>m(!0)),onBlur:K(o.onBlur,()=>m(!1)),onClick:K(o.onClick,()=>{_.current!==`mouse`&&v()}),onPointerUp:K(o.onPointerUp,()=>{_.current===`mouse`&&v()}),onPointerDown:K(o.onPointerDown,e=>{_.current=e.pointerType}),onPointerMove:K(o.onPointerMove,e=>{_.current=e.pointerType,i?l.onItemLeave?.():_.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:K(o.onPointerLeave,e=>{e.currentTarget===document.activeElement&&l.onItemLeave?.()}),onKeyDown:K(o.onKeyDown,e=>{i||e.target!==e.currentTarget||(l.searchRef?.current===``||e.key!==` `)&&(jm.includes(e.key)&&v(),e.key===` `&&e.preventDefault())})})})})},`SelectItem`)),yh=`SelectItemText`,bh=s.forwardRef(km(function(e,t){let{__scopeSelect:n,className:r,style:i,...a}=e,o=Bm(yh,n),c=ih(yh,n),l=_h(yh,n),u=Hm(yh,n),[d,f]=s.useState(null),p=kn(e=>c.itemTextRefCallback?.(e,l.value,l.disabled)),m=Ft(t,f,l.onItemTextChange,p),h=d?.textContent,g=s.useMemo(()=>(0,G.jsx)(`option`,{value:l.value,disabled:l.disabled,children:h},l.value),[l.disabled,l.value,h]),{onNativeOptionAdd:_,onNativeOptionRemove:v}=u;return Vt(()=>(_(g),()=>v(g)),[_,v,g]),(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Tn.span,{id:l.textId,...a,ref:m}),l.isSelected&&o.valueNode&&!o.valueNodeHasChildren&&!jh(o.value)?sn.createPortal(a.children,o.valueNode):null]})},`SelectItemText`)),xh=`SelectItemIndicator`,Sh=s.forwardRef(km(function(e,t){let{__scopeSelect:n,...r}=e;return _h(xh,n).isSelected?(0,G.jsx)(Tn.span,{"aria-hidden":!0,...r,ref:t}):null},`SelectItemIndicator`)),Ch=`SelectScrollUpButton`,wh=s.forwardRef(km(function(e,t){let n=ih(Ch,e.__scopeSelect),r=uh(Ch,e.__scopeSelect),[i,a]=s.useState(!1),o=Ft(t,r.onScrollButtonChange);return Vt(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollTop>0;a(e)};km(e,`handleScroll`);let t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,G.jsx)(Dh,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null},`SelectScrollUpButton`)),Th=`SelectScrollDownButton`,Eh=s.forwardRef(km(function(e,t){let n=ih(Th,e.__scopeSelect),r=uh(Th,e.__scopeSelect),[i,a]=s.useState(!1),o=Ft(t,r.onScrollButtonChange);return Vt(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight,n=Math.ceil(t.scrollTop)t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,G.jsx)(Dh,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null},`SelectScrollDownButton`)),Dh=s.forwardRef(km(function(e,t){let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=ih(`SelectScrollButton`,n),o=s.useRef(null),c=Pm(n),l=s.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return s.useEffect(()=>()=>l(),[l]),Vt(()=>{c().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[c]),(0,G.jsx)(Tn.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:K(i.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:K(i.onPointerMove,()=>{a.onItemLeave?.(),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:K(i.onPointerLeave,()=>{l()})})},`SelectScrollButtonImpl`)),Oh=`SelectBubbleInput`,kh=s.forwardRef(km(function({__scopeSelect:e,...t},n){let r=Bm(Oh,e),{value:i,onValueChange:a,required:o,disabled:c,name:l,autoComplete:u,form:d}=r,{nativeOptions:f,nativeSelectKey:p}=r,m=s.useRef(null),h=Ft(n,m),g=i??``,_=Cm(g),v=Array.from(f).some(e=>(e.props.value??``)===``);return s.useEffect(()=>{let e=m.current;if(!e)return;let t=window.HTMLSelectElement.prototype,n=Object.getOwnPropertyDescriptor(t,`value`).set;if(_!==g&&n){let t=new Event(`change`,{bubbles:!0});n.call(e,g),e.dispatchEvent(t)}},[_,g]),(0,G.jsxs)(Tn.select,{"aria-hidden":!0,required:o,tabIndex:-1,name:l,autoComplete:u,disabled:c,form:d,onChange:e=>a(e.target.value),...t,style:{...Em,...t.style},ref:h,defaultValue:g,children:[jh(i)&&!v?(0,G.jsx)(`option`,{value:``}):null,Array.from(f)]},p)},`SelectBubbleInput`));function Ah(e){return typeof e==`function`}km(Ah,`isFunction`);function jh(e){return e===``||e===void 0}km(jh,`shouldShowPlaceholder`);function Mh(e){let t=kn(e),n=s.useRef(``),r=s.useRef(0),i=s.useCallback(e=>{let i=n.current+e;t(i),km((function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))}),`updateSearch`)(i)},[t]),a=s.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return s.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}km(Mh,`useTypeaheadSearch`);function Nh(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=Ph(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.textValue.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}km(Nh,`findNextItem`);function Ph(e,t){return e.map((n,r)=>e[(t+r)%e.length])}km(Ph,`wrapArray`);function Fh({id:e,ariaLabel:t,value:n,placeholder:r=`请选择`,options:i,disabled:a=!1,className:o=``,onValueChange:c}){let[l,u]=(0,s.useState)(!1),d=i.find(e=>e.value===n);return(0,G.jsxs)(Wm,{value:n||void 0,open:l,disabled:a,onOpenChange:u,onValueChange:e=>{u(!1),c(e)},children:[(0,G.jsxs)(Km,{id:e,className:`studio-select-trigger${o?` ${o}`:``}`,"aria-label":t,title:d?.label||r,children:[(0,G.jsx)(Jm,{placeholder:r,children:d?.label}),(0,G.jsx)(Ym,{className:`studio-select-chevron`,children:(0,G.jsx)(H,{size:15})})]}),(0,G.jsx)(Qm,{children:(0,G.jsxs)(eh,{className:`studio-select-content`,position:`popper`,sideOffset:5,collisionPadding:10,children:[(0,G.jsx)(wh,{className:`studio-select-scroll`,children:(0,G.jsx)(ne,{size:14})}),(0,G.jsx)(fh,{className:`studio-select-viewport`,children:i.map(e=>(0,G.jsxs)(vh,{value:e.value,disabled:e.disabled,className:`studio-select-item`,children:[(0,G.jsx)(bh,{children:(0,G.jsxs)(`span`,{className:`studio-select-item-copy`,children:[(0,G.jsx)(`span`,{children:e.label}),e.description&&(0,G.jsx)(`small`,{children:e.description})]})}),(0,G.jsx)(Sh,{className:`studio-select-check`,children:(0,G.jsx)(V,{size:14})})]},e.value))}),(0,G.jsx)(Eh,{className:`studio-select-scroll`,children:(0,G.jsx)(H,{size:14})})]})})]})}function Ih(e){return e.spec?.runtime?.type===`codex`}function Lh({agents:e,runtimeReady:t,runtimeChecked:n=!0,workspaceName:r,onCreate:i,onDetail:a,onChat:o,onBuild:c,onChanged:l}){let[u,d]=(0,s.useState)(``),[f,p]=(0,s.useState)(``),[m,h]=(0,s.useState)(0),[_,v]=(0,s.useState)(0),[y,b]=(0,s.useState)(null),[x,S]=(0,s.useState)(!1),[C,w]=(0,s.useState)(``);(0,s.useEffect)(()=>{Promise.all([g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()),g(`/api/v1/catalog/models`).then(e=>e.json()).catch(()=>null)]).then(([e,t])=>{let n=e.items||[],r=n.filter(e=>e.kind===`model`);t?.items?.length&&(r=[...r.filter(e=>e.source===`local`||e.source===`market`),...t.items]),h(r.filter(e=>e.status===`ready`).length),v(n.filter(e=>[`tool`,`mcp`,`skill`].includes(e.kind)&&e.status===`ready`).length)}).catch(()=>{})},[]);let T=(0,s.useMemo)(()=>e.filter(e=>{let t=!!e.builds?.some(e=>e.status===`SUCCEEDED`),n=u.trim().toLowerCase();return(!n||e.metadata.name.toLowerCase().includes(n)||e.metadata.id.toLowerCase().includes(n))&&(!f||f===`built`&&t||f===`draft`&&!t)}),[e,u,f]),E=(0,s.useMemo)(()=>[{id:`agent`,header:`Agent`,minWidth:220,className:`agent-name-column`,headerClassName:`agent-name-column`,cell:e=>{let t=e.metadata.labels?.[`agentkit.ksyun.com/template`]||`blank`;return(0,G.jsxs)(`div`,{className:`agent-cell`,children:[(0,G.jsx)(Ct,{name:e.metadata.name,appearance:e.metadata.appearance,template:t}),(0,G.jsxs)(`div`,{className:`agent-cell-copy`,children:[(0,G.jsx)(`strong`,{children:e.metadata.name}),(0,G.jsx)(`span`,{children:e.metadata.id})]})]})}},{id:`template`,header:`运行时`,minWidth:100,className:`agent-runtime-column`,headerClassName:`agent-runtime-column`,cell:e=>{let t=e.spec?.runtime?.type||e.metadata.labels?.[`agentkit.ksyun.com/framework`]||`adk`;return(0,G.jsx)(`span`,{className:`tag mono`,children:t})}},{id:`capabilities`,header:`能力`,minWidth:170,className:`agent-capabilities-column`,headerClassName:`agent-capabilities-column`,cell:e=>{let t=e.spec?.bindings||{};return(0,G.jsxs)(`div`,{className:`resource-counts`,children:[(0,G.jsxs)(`span`,{children:[t.tools?.length||0,` Tool`]}),(0,G.jsxs)(`span`,{children:[t.mcpServers?.length||0,` MCP`]}),(0,G.jsxs)(`span`,{children:[t.skills?.length||0,` Skill`]})]})}},{id:`revision`,header:`Revision`,width:84,className:`agent-revision-column`,headerClassName:`agent-revision-column`,cell:e=>(0,G.jsxs)(`span`,{className:`mono`,children:[`r`,e.metadata.revision]})},{id:`build`,header:`最近校验 / 构建`,width:108,className:`agent-build-column`,headerClassName:`agent-build-column`,cell:e=>e.builds?.some(e=>e.status===`SUCCEEDED`)?(0,G.jsx)(`span`,{className:`badge`,"data-state":`ready`,children:Ih(e)?`声明已校验`:`已构建`}):(0,G.jsx)(`span`,{className:`badge`,"data-state":`idle`,children:`草稿`})},{id:`actions`,header:`操作`,minWidth:108,className:`actions-column agent-actions-column`,headerClassName:`actions-column agent-actions-column`,cell:e=>(0,G.jsxs)(`div`,{className:`row-actions`,children:[(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>o(e.metadata.id),children:`会话`}),(0,G.jsx)(yd,{label:`${e.metadata.name} 的更多操作`,items:[{label:`配置`,onSelect:()=>a(e.metadata.id)},{label:Ih(e)?`校验声明`:`构建`,onSelect:c}]}),(0,G.jsx)(`button`,{className:`icon-button danger-ghost`,type:`button`,"aria-label":`删除 ${e.metadata.name}`,title:`删除`,onClick:()=>b(e),children:(0,G.jsx)(ht,{size:15})})]})}],[c,o,a]);async function D(){if(y){S(!0),w(``);try{let e=await g(`/api/v1/agents/${encodeURIComponent(y.metadata.id)}`,{method:`DELETE`});if(!e.ok){let t=await e.text().catch(()=>``),n=`删除失败(${e.status})`;try{n=JSON.parse(t)?.error?.message||n}catch{}throw Error(n)}}catch(e){w(e.message||`删除失败`)}S(!1),b(null),l()}}return(0,G.jsxs)(`div`,{className:`page-container agents-page`,"data-layout":`data`,children:[(0,G.jsx)(Sd,{children:(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,disabled:!t,onClick:i,children:[(0,G.jsx)(Qe,{size:16}),(0,G.jsx)(`span`,{children:`创建 Agent`})]})}),(0,G.jsxs)(`div`,{className:`data-page-body table-data-body`,children:[C&&(0,G.jsx)(`div`,{className:`form-error`,style:{marginBottom:16},children:C}),(0,G.jsxs)(`section`,{className:`agents-overview-section`,"aria-labelledby":`agents-overview-title`,title:r||`本地工作区`,children:[(0,G.jsx)(`h2`,{id:`agents-overview-title`,className:`sr-only`,children:`工作区概览`}),(0,G.jsxs)(`div`,{className:`stat-strip compact-summary`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`Agent`}),(0,G.jsx)(`strong`,{className:`stat-value`,children:e.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`可用模型`}),(0,G.jsx)(`strong`,{className:`stat-value`,children:m})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`能力资源`}),(0,G.jsx)(`strong`,{className:`stat-value`,children:_})]}),(0,G.jsxs)(`div`,{className:`runtime-summary`,"data-state":n?t?`ready`:`failed`:`pending`,children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`本地 Runtime`}),(0,G.jsxs)(`strong`,{className:`stat-value`,children:[(0,G.jsx)(`span`,{className:`summary-status-dot`}),n?t?`正常`:`连接失败`:`检查中`]})]})]}),n&&!t&&(0,G.jsxs)(`div`,{className:`compact-status-alert`,role:`alert`,children:[(0,G.jsx)(`strong`,{children:`本地 Runtime 连接失败`}),(0,G.jsx)(`span`,{children:`请确认本地服务正在运行,然后刷新页面。`})]})]}),(0,G.jsxs)(`section`,{className:`agents-catalog-section block`,"aria-labelledby":`agents-catalog-title`,children:[(0,G.jsxs)(`header`,{className:`agents-catalog-header`,children:[(0,G.jsx)(`h2`,{id:`agents-catalog-title`,children:`Agent 列表`}),(0,G.jsxs)(`div`,{className:`agents-catalog-meta`,children:[(0,G.jsx)(`span`,{children:T.length===e.length?`${e.length} 个 Agent`:`${T.length} / ${e.length} 个 Agent`}),(0,G.jsx)(`span`,{className:`sync-state`,children:`已同步`})]})]}),(0,G.jsxs)(`div`,{className:`section-toolbar`,children:[(0,G.jsxs)(`div`,{className:`search-field`,children:[(0,G.jsx)(tt,{size:15}),(0,G.jsx)(`input`,{type:`search`,placeholder:`搜索 Agent 名称或 ID`,"aria-label":`搜索 Agent`,value:u,onChange:e=>d(e.target.value)})]}),(0,G.jsx)(Fh,{className:`compact-select`,ariaLabel:`筛选 Agent 状态`,value:f||`__all__`,options:[{value:`__all__`,label:`全部状态`},{value:`built`,label:`已构建`},{value:`draft`,label:`草稿`}],onValueChange:e=>p(e===`__all__`?``:e)})]}),(0,G.jsx)(_m,{columns:E,data:T,getRowId:e=>e.metadata.id,caption:`Agent 列表`,minWidth:0,onRowActivate:e=>a(e.metadata.id),rowAriaLabel:e=>`${e.metadata.name} ${e.metadata.id}`,empty:{icon:(0,G.jsx)(N,{size:24}),title:u||f?`没有匹配的 Agent`:`还没有 Agent`,description:u||f?`调整搜索词或状态筛选。`:`创建第一个可运行的 Agent。`,action:!u&&!f?(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:i,children:[(0,G.jsx)(Qe,{size:16}),(0,G.jsx)(`span`,{children:`创建 Agent`})]}):void 0}})]})]}),y&&(0,G.jsx)(ka,{title:`确认删除 Agent「${y.metadata.name}」?`,description:`Agent ID:${y.metadata.id}。删除后其配置与 Revision 将移除,此操作不可撤销。`,confirmText:`确认删除`,busy:x,onConfirm:D,onCancel:()=>b(null)})]})}var Rh=e=>e.type===`checkbox`,zh=e=>e.type===`file`,Bh=e=>e instanceof Date,Vh=e=>e==null,Hh=e=>typeof e==`object`,Uh=e=>!Vh(e)&&!Array.isArray(e)&&Hh(e)&&!Bh(e),Wh=e=>Uh(e)&&e.target?Rh(e.target)?e.target.checked:zh(e.target)?e.target.files:e.target.value:e,Gh=(e,t)=>t.split(`.`).some((t,n,r)=>!isNaN(Number(t))&&e.has(r.slice(0,n).join(`.`))),Kh=e=>{let t=e.constructor&&e.constructor.prototype;return Uh(t)&&t.hasOwnProperty(`isPrototypeOf`)},qh=typeof window<`u`&&window.HTMLElement!==void 0&&typeof document<`u`;function Jh(e){if(e instanceof Date)return new Date(e);let t=typeof FileList<`u`&&e instanceof FileList;if(qh&&(e instanceof Blob||t))return e;let n=Array.isArray(e);if(!n&&!(Uh(e)&&Kh(e)))return e;let r=n?[]:Object.create(Object.getPrototypeOf(e));for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=Jh(e[t]));return r}var Yh={BLUR:`blur`,FOCUS_OUT:`focusout`,CHANGE:`change`,SUBMIT:`submit`,TRIGGER:`trigger`,VALID:`valid`},Xh={onBlur:`onBlur`,onChange:`onChange`,onSubmit:`onSubmit`,onTouched:`onTouched`,all:`all`},Zh={max:`max`,min:`min`,maxLength:`maxLength`,minLength:`minLength`,pattern:`pattern`,required:`required`,validate:`validate`},Qh=`root`,$h=[`__proto__`,`constructor`,`prototype`],eg=/^\w*$/,tg=e=>eg.test(e),ng=e=>e===void 0,rg=/[.[\]'"]/,ig=e=>e.split(rg).filter(Boolean),q=(e,t,n)=>{if(!t||!Uh(e))return n;let r=tg(t)?[t]:ig(t);if(r.some(e=>$h.includes(e)))return n;let i=r.reduce((e,t)=>Vh(e)?void 0:e[t],e);return ng(i)||i===e?ng(e[t])?n:e[t]:i},ag=e=>typeof e==`boolean`,og=e=>typeof e==`function`,sg=(e,t,n)=>{let r=-1,i=tg(t)?[t]:ig(t),a=i.length,o=a-1;for(;++r{let i={};for(let a in e)Object.defineProperty(i,a,{get:()=>{let i=a;return t._proxyFormState[i]!==Xh.all&&(t._proxyFormState[i]=!r||Xh.all),n&&(n[i]=!0),e[i]}});return i},ug=qh?s.useLayoutEffect:s.useEffect,dg=e=>Vh(e)||!Hh(e),fg=(e,t)=>t.length===0&&!Array.isArray(e)&&!Kh(e);function pg(e,t,n=new WeakMap){if(e===t)return!0;if(dg(e)||dg(t))return Object.is(e,t);if(Bh(e)&&Bh(t))return Object.is(e.getTime(),t.getTime());let r=Object.keys(e),i=Object.keys(t);if(r.length!==i.length)return!1;if(fg(e,r)||fg(t,i))return Object.is(e,t);if(!r.length&&Array.isArray(e)!==Array.isArray(t))return!1;let a=n.get(e);if(a&&a.has(t))return!0;if(a)a.add(t);else{let r=new WeakSet;r.add(t),n.set(e,r)}for(let i of r){let r=e[i];if(!(i in t))return!1;if(i!==`ref`){let e=t[i];if(Bh(r)&&Bh(e)||(Uh(r)||Array.isArray(r))&&(Uh(e)||Array.isArray(e))?!pg(r,e,n):!Object.is(r,e))return!1}}return!0}function mg(){let e=s.useRef(!1),t=s.useRef(void 0);return{resyncIfNeeded:s.useCallback((n,r,i)=>{if(n&&e.current){let e=r();pg(t.current,e)||i(e)}e.current=!0},[]),snapshot:s.useCallback((e,n)=>{e&&(t.current=Jh(n()))},[])}}var hg=e=>typeof e==`string`,gg=(e,t,n,r,i)=>hg(e)?(r&&t.watch.add(e),q(n,e,i)):Array.isArray(e)?e.map(e=>(r&&t.watch.add(e),q(n,e))):(r&&(t.watchAll=!0),n),_g=e=>({isOnSubmit:!e||e===Xh.onSubmit,isOnBlur:e===Xh.onBlur,isOnChange:e===Xh.onChange,isOnAll:e===Xh.all,isOnTouch:e===Xh.onTouched}),vg=(e,t,n)=>{if(n)return!1;if(t.watchAll||t.watch.has(e))return!0;for(let n of t.watch)if(e.startsWith(n)&&e.charAt(n.length)===`.`)return!0;return!1},yg=(e,t,n,r)=>{for(let i of n||Object.keys(e)){if(i===`_f`)continue;let a=n?q(e,i):e[i];if(a){let{_f:e}=a;if(e){if(e.refs&&e.refs[0]&&t(e.refs[0],i)&&!r||e.ref&&t(e.ref,e.name)&&!r)return!0;if(yg(a,t))break}else if((Uh(a)||Array.isArray(a))&&yg(a,t))break}}},bg=(e,t,n)=>{let r=q(e,n),i=Array.isArray(r)?r:[];return sg(i,Qh,t[n]),sg(e,n,i),e},xg=e=>Uh(e)&&!Object.keys(e).length,Sg=e=>{if(!qh)return!1;let t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},Cg=e=>e.type===`radio`,wg=e=>e instanceof RegExp,Tg=(e,t,n,r,i)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[r]:i||!0}}:{},Eg={value:!1,isValid:!1},Dg={value:!0,isValid:!0},Og=e=>{if(Array.isArray(e)){if(e.length>1){let t=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!ng(e[0].attributes.value)?ng(e[0].value)||e[0].value===``?Dg:{value:e[0].value,isValid:!0}:Dg:Eg}return Eg},kg={isValid:!1,value:null},Ag=e=>Array.isArray(e)?e.reduce((e,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:e,kg):kg;function jg(e,t,n=`validate`){if(hg(e)||Array.isArray(e)&&e.every(hg)||ag(e)&&!e)return{type:n,message:hg(e)?e:``,ref:t}}var Mg=e=>Uh(e)&&!wg(e)?e:{value:e,message:``},Ng=async(e,t,n,r,i,a)=>{let{ref:o,refs:s,required:c,maxLength:l,minLength:u,min:d,max:f,pattern:p,validate:m,name:h,valueAsNumber:g,mount:_}=e._f,v=q(n,h);if(!_||t.has(h))return{};let y=s?s[0]:o,b=e=>{if(i&&y.reportValidity){let t=ag(e)?``:e||``;s?s.forEach(e=>e.setCustomValidity(t)):y.setCustomValidity(t),y.reportValidity()}},x={},S=Cg(o),C=Rh(o),w=S||C,T=(g||zh(o))&&ng(o.value)&&ng(v)||Sg(o)&&o.value===``||v===``||Array.isArray(v)&&!v.length,E=Tg.bind(null,h,r,x),D=(e,t,n,r=Zh.maxLength,i=Zh.minLength)=>{let a=e?t:n;x[h]={type:e?r:i,message:a,ref:o,...E(e?r:i,a)}};if(a?!Array.isArray(v)||!v.length:c&&(!w&&(T||Vh(v))||ag(v)&&!v||C&&!Og(s).isValid||S&&!Ag(s).isValid)){let{value:e,message:t}=hg(c)?{value:!!c,message:c}:Mg(c);if(e&&(x[h]={type:Zh.required,message:t,ref:y,...E(Zh.required,t)},!r))return b(t),x}if(!T&&(!Vh(d)||!Vh(f))){let e,t,n=Mg(f),i=Mg(d);if(!Vh(v)&&!Bh(v)&&!isNaN(v)){let r=o.valueAsNumber||v&&+v;Vh(n.value)||(e=r>n.value),Vh(i.value)||(t=rnew Date(new Date().toDateString()+` `+e),s=o.type==`time`,c=o.type==`week`;hg(n.value)&&v&&(e=s?a(v)>a(n.value):c?v>n.value:r>new Date(n.value)),hg(i.value)&&v&&(t=s?a(v)+e.value,i=!Vh(t.value)&&v.length<+t.value;if((n||i)&&(D(n,e.message,t.message),!r))return b(x[h].message),x}if(p&&!T&&hg(v)){let{value:e,message:t}=Mg(p);if(wg(e)&&!v.match(e)&&(x[h]={type:Zh.pattern,message:t,ref:o,...E(Zh.pattern,t)},!r))return b(t),x}if(m){if(og(m)){let e=jg(await m(v,n),y);if(e&&(x[h]={...e,...E(Zh.validate,e.message)},!r))return b(e.message),x}else if(Uh(m)){let e={};for(let t in m){if(!xg(e)&&!r)break;let i=jg(await m[t](v,n),y,t);i&&(e={...i,...E(t,i.message)},b(i.message),r&&(x[h]=e))}if(!xg(e)&&(x[h]={ref:y,...e},!r))return x}}return b(!0),x},Pg=e=>Array.isArray(e)?e:[e],Fg=e=>Array.isArray(e)?e.filter(Boolean):[];function Ig(e,t){let n=t.length-1,r=0;for(;r$h.includes(String(e))))return e;let r=n.length===1?e:Ig(e,n),i=n.length-1,a=n[i];return r&&delete r[a],i!==0&&(Uh(r)&&xg(r)||Array.isArray(r)&&Lg(r))&&Rg(e,n.slice(0,-1)),e}var zg=e=>{let t={};for(let n of Object.keys(e))if(Hh(e[n])&&e[n]!==null&&!Bh(e[n])){let r=zg(e[n]);for(let e of Object.keys(r))t[`${n}.${e}`]=r[e]}else t[n]=e[n];return t},Bg=s.createContext(null);Bg.displayName=`HookFormContext`;var Vg=({children:e,watch:t,getValues:n,getFieldState:r,setError:i,clearErrors:a,setValue:o,setValues:c,trigger:l,formState:u,resetField:d,reset:f,resetDefaultValues:p,handleSubmit:m,unregister:h,control:g,register:_,setFocus:v,subscribe:y})=>{let b=s.useMemo(()=>({watch:t,getValues:n,getFieldState:r,setError:i,clearErrors:a,setValue:o,setValues:c,trigger:l,formState:u,resetField:d,reset:f,resetDefaultValues:p,handleSubmit:m,unregister:h,control:g,register:_,setFocus:v,subscribe:y}),[a,g,u,r,n,m,_,f,p,d,i,v,o,c,y,l,h,t]);return s.createElement(Bg.Provider,{value:b},s.createElement(cg.Provider,{value:b.control},e))},Hg=()=>{let e=[];return{get observers(){return e},next:t=>{for(let n of e)n.next&&n.next(t)},subscribe:t=>(e.push(t),{unsubscribe:()=>{e=e.filter(e=>e!==t)}}),unsubscribe:()=>{e=[]}}};function Ug(e,t){let n={};for(let r in e)if(e.hasOwnProperty(r)){let i=e[r],a=t[r];if(i&&Uh(i)&&a){let e=Ug(i,a);Uh(e)&&(n[r]=e)}else e[r]&&(n[r]=a)}return n}var Wg=e=>e.type===`select-multiple`,Gg=e=>Cg(e)||Rh(e),Kg=e=>Sg(e)&&e.isConnected;function qg(e){return Array.isArray(e)||Uh(e)}function Jg(e,t,n=``,r=[]){for(let i in e){let a=n?`${n}.${i}`:i,o=e[i];qg(o)&&qg(q(t,a))?Jg(o,t,a,r):r.push(a)}return r}var Yg=e=>{for(let t in e)if(og(e[t]))return!0;return!1};function Xg(e){return Array.isArray(e)||Uh(e)&&!Yg(e)}function Zg(e){return!!(e&&`_f`in e)}function Qg(e){return Array.isArray(e)?!e.some(e=>!ng(e)):!Object.keys(e).length}function $g(e,t){Array.isArray(e)?e[t]=void 0:delete e[t]}function e_(e,t={},n){for(let r in e){let i=e[r],a=n&&n[r];Xg(i)&&(!Array.isArray(i)||!Zg(a))?(t[r]=Array.isArray(i)?[]:{},e_(i,t[r],a),Qg(t[r])&&$g(t,r)):ng(i)||(t[r]=!0)}return t}function t_(e,t,n,r){n||=e_(t,{},r);for(let i in e){let a=e[i],o=r&&r[i];Xg(a)&&(!Array.isArray(a)||!Zg(o))?(ng(t)||dg(n[i])?n[i]=e_(a,Array.isArray(a)?[]:{},o):t_(a,Vh(t)?{}:t[i],n[i],o),Qg(n[i])&&$g(n,i)):pg(a,t[i])?$g(n,i):n[i]=!0}return n}var n_=(e,{valueAsNumber:t,valueAsDate:n,setValueAs:r})=>ng(e)?e:t?e===``?NaN:e&&+e:n&&hg(e)?new Date(e):r?r(e):e;function r_(e){let t=e.ref;return zh(t)?t.files:Cg(t)?Ag(e.refs).value:Wg(t)?[...t.selectedOptions].map(({value:e})=>e):Rh(t)?Og(e.refs).value:n_(t.value,e)}var i_=(e,t,n,r)=>{let i={};for(let n of e){let e=q(t,n);e&&sg(i,n,e._f)}return{criteriaMode:n,names:[...e],fields:i,shouldUseNativeValidation:r}},a_=e=>ng(e)?e:wg(e)?e.source:Uh(e)?wg(e.value)?e.value.source:e.value:e,o_=`AsyncFunction`,s_=e=>{if(!e||!e.validate)return!1;if(og(e.validate))return e.validate.constructor.name===o_;if(Uh(e.validate)){for(let t in e.validate)if(e.validate[t].constructor.name===o_)return!0}return!1},c_=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate);function l_(e,t,n){let r=q(e,n);if(r||tg(n))return{error:r,name:n};let i=n.split(`.`);for(;i.length;){let r=i.join(`.`),a=q(t,r),o=q(e,r);if(a&&!Array.isArray(a)&&n!==r)return{name:n};if(o&&o.type)return{name:r,error:o};if(o&&o.root&&o.root.type)return{name:`${r}.root`,error:o.root};i.pop()}return{name:n}}var u_=(e,t,n,r)=>{n(e);let i=Object.keys(e).filter(e=>e!==`name`);return!i.length||r&&i.length>=Object.keys(t).length||i.find(e=>t[e]===(!r||Xh.all))},d_=(e,t,n)=>!e||!t||e===t||Pg(e).some(e=>e&&(n?e===t||e.startsWith(t+`.`):e.startsWith(t)||t.startsWith(e))),f_=(e,t,n,r,i)=>i.isOnAll?!1:!n&&i.isOnTouch?!(t||e):(n?r.isOnBlur:i.isOnBlur)?!e:!(n?r.isOnChange:i.isOnChange)||e,p_=(e,t)=>{let n=q(e,t);!Fg(n).length&&!n?.root&&Rg(e,t)},m_={mode:Xh.onSubmit,reValidateMode:Xh.onChange,shouldFocusError:!0},h_=`form`,g_=(e,t)=>{for(let n in e)n in t||delete e[n];Object.assign(e,t)},__={submitCount:0,isDirty:!1,isReady:!1,isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{}};function v_(e={}){let t={...m_,...e},n={...Jh(__),isLoading:og(t.defaultValues),errors:t.errors||{},disabled:t.disabled||!1},r={},i=(Uh(t.defaultValues)||Uh(t.values))&&Jh(t.defaultValues||t.values)||{},a=t.shouldUnregister?{}:Jh(i),o={action:!1,actionArrayLengths:new Map,mount:!1,watch:!1,keepIsValid:!1},s={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set,registerName:new Set},c={},l={},u=0,d=_g(t.mode),f=_g(t.reValidateMode),p={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},m={...p},h={...m},g={array:Hg(),state:Hg()},_=0,v=t.criteriaMode===Xh.all,y=(e,t)=>n=>{clearTimeout(l[e]),l[e]=setTimeout(t,n)},b=async e=>{if(!o.keepIsValid&&!t.disabled&&(m.isValid||h.isValid||e)){let e=++_,i;t.resolver?(i=xg((await j()).errors),e===_&&x()):i=await P({fields:r,onlyCheckValid:!0,eventType:Yh.VALID}),e===_&&i!==n.isValid&&g.state.next({isValid:i})}},x=(e,r)=>{!t.disabled&&(m.isValidating||m.validatingFields||h.isValidating||h.validatingFields)&&((e||Array.from(s.mount)).forEach(e=>{e&&(r?sg(n.validatingFields,e,r):Rg(n.validatingFields,e))}),g.state.next({validatingFields:n.validatingFields,isValidating:!xg(n.validatingFields)}))},S=()=>{n.dirtyFields=t_(i,a,void 0,r)},C=(e,i=[],s,c,l=!0,u=!0)=>{if(c&&s&&!t.disabled){if(o.action=!0,!o.actionArrayLengths.has(e)){let t=q(r,e);o.actionArrayLengths.set(e,Array.isArray(t)?t.length:0)}if(u&&Array.isArray(q(r,e))){let t=s(q(r,e),c.argA,c.argB);l&&sg(r,e,t)}if(u&&Array.isArray(q(n.errors,e))){let t=q(n.errors,e),r=t.root,i=s(t,c.argA,c.argB)||t;r&&(i.root=r),l&&sg(n.errors,e,i),p_(n.errors,e)}if((m.touchedFields||h.touchedFields)&&u&&Array.isArray(q(n.touchedFields,e))){let t=s(q(n.touchedFields,e),c.argA,c.argB);l&&sg(n.touchedFields,e,t)}(m.dirtyFields||h.dirtyFields)&&S(),g.state.next({name:e,isDirty:I(e,i),dirtyFields:n.dirtyFields,errors:n.errors,isValid:n.isValid})}else sg(a,e,i)},w=(e,t)=>{sg(n.errors,e,t),n.errors={...n.errors},g.state.next({errors:n.errors})},T=e=>{n.errors=e,g.state.next({errors:n.errors,isValid:!1})},E=e=>{let t=tg(e)?[e]:ig(e),n=a,r=i;for(let e=0;e{if(!o.actionArrayLengths.size)return!1;let t=tg(e)?[e]:ig(e),n=a,r=``,i=-1,s=0;for(let e=0;e=n.length)return i===-1?!1:e!==i||+a{let d=q(r,t);if(d){if(E(t)||D(t))return;let r=ng(q(a,t)),f=q(a,t,ng(l)?q(i,t):l);ng(f)||u&&u.defaultChecked||c?sg(a,t,c?f:r_(d._f)):z(t,f),o.mount&&!o.action&&(b(),r&&n.isDirty&&(m.isDirty||h.isDirty)&&(I()||(n.isDirty=!1,g.state.next({...n}))),e.shouldUnregister&&r&&!ng(q(a,t))&&vg(t,s)&&(o.watch=!0))}},k=(e,o,s,c,l)=>{let u=!1,d=!1,f={name:e};if(!t.disabled||c===!0){if(!s||c){let t=pg(q(i,e),o);(m.isDirty||h.isDirty)&&(d=n.isDirty,n.isDirty=f.isDirty=!t||I(),u=d!==f.isDirty),d=!!q(n.dirtyFields,e),t===n.isDirty?t?Rg(n.dirtyFields,e):sg(n.dirtyFields,e,!0):g_(n.dirtyFields,t_(i,a,void 0,r)),f.dirtyFields=n.dirtyFields,u||=(m.dirtyFields||h.dirtyFields)&&d!==!t}if(s){let t=q(n.touchedFields,e);t||(sg(n.touchedFields,e,s),f.touchedFields=n.touchedFields,u||=(m.touchedFields||h.touchedFields)&&t!==s)}u&&l&&g.state.next(f)}return u?f:{}},A=(e,r,i,a)=>{let o=q(n.errors,e),s=(m.isValid||h.isValid)&&ag(r)&&n.isValid!==r;if(t.delayError&&i?(c[e]=y(e,()=>w(e,i)),c[e](t.delayError)):(clearTimeout(l[e]),delete c[e],i?sg(n.errors,e,i):Rg(n.errors,e),n.errors={...n.errors}),(i?!pg(o,i):o)||!xg(a)||s){let t={...a,...s&&ag(r)?{isValid:r}:{},errors:n.errors,name:e};n={...n,...t},g.state.next(t)}},j=async e=>(x(e,!0),await t.resolver(a,t.context,i_(e||s.mount,r,t.criteriaMode,t.shouldUseNativeValidation))),M=async e=>{let{errors:t}=await j(e);if(x(e),e){for(let r of e){let e=q(t,r);e?s.array.has(r)&&Uh(e)&&!Object.keys(e).some(e=>!Number.isNaN(Number(e)))?bg(n.errors,{[r]:e},r):sg(n.errors,r,e):Rg(n.errors,r)}n.errors={...n.errors}}else n.errors=t;return t},N=async({name:t,eventType:r})=>{if(e.validate){let i=await e.validate({formValues:a,formState:n,name:t,eventType:r});if(Uh(i))for(let e in i){let t=i[e];t&&oe(`${h_}.${e}`,{message:hg(t.message)?t.message:``,type:t.type||Zh.validate})}else hg(i)||!i?oe(h_,{message:i||``,type:Zh.validate}):ae(h_);return i}return!0},P=async({fields:r,onlyCheckValid:i,name:o,eventType:c,context:l={valid:!0,runRootValidation:!1}})=>{if(e.validate&&(l.runRootValidation=!0,!await N({name:o,eventType:c})&&(l.valid=!1,i)))return l.valid;for(let o in r){let u=r[o];if(u){let{_f:r,...d}=u;if(r){let o=s.array.has(r.name),c=u._f&&s_(u._f),d=m.validatingFields||m.isValidating||h.validatingFields||h.isValidating;c&&d&&x([r.name],!0);let f=await Ng(u,s.disabled,a,v,t.shouldUseNativeValidation&&!i,o);if(c&&d&&x([r.name]),f[r.name]&&(l.valid=!1,i)||(!i&&(q(f,r.name)?o?bg(n.errors,f,r.name):sg(n.errors,r.name,f[r.name]):Rg(n.errors,r.name)),e.shouldUseNativeValidation&&f[r.name]))break}!xg(d)&&await P({context:l,onlyCheckValid:i,fields:d,name:o,eventType:c})}}return l.valid},F=()=>{for(let e of s.unMount){let t=q(r,e);t&&(t._f.refs?t._f.refs.every(e=>!Kg(e)):!Kg(t._f.ref))&&ue(e)}s.unMount=new Set},I=(e,t)=>(e&&t&&sg(a,e,t),!pg(o.mount?a:i,i)),L=(e,t,n)=>gg(e,s,{...o.mount?a:ng(t)||hg(e)?i:t},n,t),R=e=>Fg(q(o.mount?a:i,e,t.shouldUnregister?q(i,e,[]):[])),z=(e,t,n={},i=!1,o=!1,s=!1)=>{let c=q(r,e),l=t;if(c){let n=c._f;n&&(!n.disabled&&sg(a,e,n_(t,n)),l=Sg(n.ref)&&Vh(t)?``:t,Wg(n.ref)?[...n.ref.options].forEach(e=>e.selected=l.includes(e.value)):n.refs?Rh(n.ref)?n.refs.forEach(e=>{(!e.defaultChecked||!e.disabled)&&(e.checked=Array.isArray(l)?!!l.find(t=>t===e.value):l===e.value||!!l)}):n.refs.forEach(e=>e.checked=e.value===l):zh(n.ref)?n.ref.value=``:(n.ref.value=l,!n.ref.type&&!o&&!s&&g.state.next({name:e,values:i?a:Jh(a)})))}(n.shouldDirty||n.shouldTouch)&&k(e,l,n.shouldTouch,n.shouldDirty,!o),n.shouldValidate&&U(e,{delayError:n.delayError})},B=(e,t,n,i=!1,o=!1,c=!1)=>{s.array.has(e)&&g.array.next({name:e,values:i?a:Jh(a)});for(let a in t){if(!t.hasOwnProperty(a))return;let l=t[a],u=e+`.`+a,d=q(r,u);(s.array.has(e)||Uh(l)||d&&!d._f)&&!Bh(l)?B(u,l,n,i,o,c):z(u,l,n,i,o,c)}},V=(e,t,i,c,l=!1)=>{let u=q(r,e),d=s.array.has(e),f=c?t:Jh(t),p=pg(q(a,e),f);if(p||sg(a,e,f),d)g.array.next({name:e,values:c?a:Jh(a)}),(m.isDirty||m.dirtyFields||h.isDirty||h.dirtyFields)&&i.shouldDirty&&(S(),l||g.state.next({name:e,dirtyFields:n.dirtyFields,isDirty:I(e,f)}));else{let t=Array.isArray(f)&&!f.length||xg(f),n=!p&&!l;!u||u._f||Vh(f)||t?z(e,f,i,c,l,n):B(e,f,i,c,l,n)}if(!p&&!l){let t=vg(e,s),r=c?a:Jh(a);g.state.next({...t&&n,name:o.mount||t?e:void 0,values:r})}},H=(e,t,n={})=>V(e,t,n,!1),ee=(e,t={})=>{let r=og(e)?e(a):e;if(!pg(a,r)){a={...a,...r};let e=zg(r);for(let n of s.mount)n in e&&V(n,e[n],t,!0,!0);g.state.next({...n,name:void 0,type:void 0,...u?{values:a}:{}}),t.shouldValidate&&b()}},te=async i=>{o.mount=!0;let l=i.target,p=l.name,_=!0,y=q(r,p),S=e=>{_=Number.isNaN(e)||Bh(e)&&isNaN(e.getTime())||pg(e,q(a,p,e))};if(y){let o,C,w=l.type?r_(y._f):Wh(i),T=i.type===Yh.BLUR||i.type===Yh.FOCUS_OUT,E=!c_(y._f)&&!e.validate&&!t.resolver&&!q(n.errors,p)&&!y._f.deps,D=E||f_(T,q(n.touchedFields,p),n.isSubmitted,f,d),O=vg(p,s,T);if(sg(a,p,w),T){if(!l||!l.readOnly){y._f.onBlur&&y._f.onBlur(i);let e=c[p];e&&e(0)}}else y._f.onChange&&y._f.onChange(i);let M=k(p,w,T),F=!xg(M)||O;if(!T&&g.state.next({name:p,type:i.type,...u?{values:Jh(a)}:{}}),D)return(!E||!n.isValid)&&(m.isValid||h.isValid)&&(t.mode===`onBlur`?T&&b():T||b()),F&&g.state.next({name:p,...O?{}:M});if(!t.resolver&&e.validate&&await N({name:p,eventType:i.type}),!T&&O&&g.state.next({...n}),t.resolver){let{errors:e}=await j([p]);if(x([p]),S(w),!_){!xg(M)&&g.state.next(M);return}let t=l_(n.errors,r,p),i=l_(e,r,t.name||p);o=i.error,p=i.name,C=xg(e)}else x([p],!0),o=(await Ng(y,s.disabled,a,v,t.shouldUseNativeValidation))[p],x([p]),S(w),_&&(o?C=!1:(m.isValid||h.isValid)&&(C=await P({fields:r,onlyCheckValid:!0,name:p,eventType:i.type})));_&&(y._f.deps&&(!Array.isArray(y._f.deps)||y._f.deps.length>0)&&U(y._f.deps),A(p,C,o,M))}},ne=(e,t)=>{if(q(n.errors,t)&&e.focus)return e.focus(),1},U=async(e,i={})=>{let a,o,u=Pg(e);if(t.resolver){let t=await M(ng(e)?e:u);a=xg(t),o=e?!u.some(e=>q(t,e)):a}else e?(o=(await Promise.all(u.map(async e=>{let t=q(r,e);return await P({fields:t&&t._f?{[e]:t}:t,eventType:Yh.TRIGGER})}))).every(Boolean),!(!o&&!n.isValid)&&b()):o=a=await P({fields:r,name:e,eventType:Yh.TRIGGER});if(i.delayError&&t.delayError&&hg(e)){let r=q(n.errors,e);r?(Rg(n.errors,e),c[e]=y(e,()=>w(e,r)),c[e](t.delayError)):(clearTimeout(l[e]),delete c[e])}return g.state.next({...!hg(e)||(m.isValid||h.isValid)&&a!==n.isValid?{}:{name:e},...t.resolver||!e?{isValid:a}:{},errors:n.errors}),i.shouldFocus&&!o&&yg(r,ne,e?u:s.mount),o},re=(e,t)=>{let r={...o.mount?a:i};return t&&(r=Ug(t.dirtyFields?n.dirtyFields:n.touchedFields,r)),ng(e)?r:hg(e)?q(r,e):e.map(e=>q(r,e))},ie=(e,t)=>({invalid:!!q((t||n).errors,e),isDirty:!!q((t||n).dirtyFields,e),error:q((t||n).errors,e),isValidating:!!q(n.validatingFields,e),isTouched:!!q((t||n).touchedFields,e)}),ae=e=>{let t=e?Pg(e):void 0;t?.forEach(e=>Rg(n.errors,e)),t?t.forEach(e=>{g.state.next({name:e,errors:n.errors})}):(n.errors={},g.state.next({errors:n.errors}))},oe=(e,t,i)=>{let a=(q(r,e,{_f:{}})._f||{}).ref,{ref:o,message:s,type:c,...l}=q(n.errors,e)||{};sg(n.errors,e,{...l,...t,ref:a}),g.state.next({name:e,errors:n.errors,isValid:!1}),i&&i.shouldFocus&&a&&a.focus&&a.focus()},se=(e,t)=>{if(og(e)){u++;let{unsubscribe:n}=g.state.subscribe({next:n=>`values`in n&&e(n.values||L(void 0,t),n)}),r=!1;return{unsubscribe:()=>{r||(r=!0,u--,n())}}}return L(e,t,!0)},ce=e=>{let t=!!e.formState?.values;t&&u++;let{unsubscribe:r}=g.state.subscribe({next:t=>{if(d_(e.name,t.name,e.exact)&&u_(t,e.formState||m,ye,e.reRenderRoot)){let r={...a};e.callback({values:r,...n,...t,defaultValues:i})}}});if(!t)return r;let o=!1;return()=>{o||(o=!0,u--,r())}},le=e=>(o.mount=!0,h={...h,...e.formState},ce({...e,formState:{...p,...e.formState}})),ue=(e,o={})=>{for(let c of e?Pg(e):s.mount)s.mount.delete(c),s.array.delete(c),o.keepValue||(Rg(r,c),Rg(a,c)),!o.keepError&&Rg(n.errors,c),!o.keepDirty&&Rg(n.dirtyFields,c),!o.keepTouched&&Rg(n.touchedFields,c),!o.keepIsValidating&&Rg(n.validatingFields,c),!t.shouldUnregister&&!o.keepDefaultValue&&Rg(i,c);g.state.next({values:Jh(a)}),g.state.next({...n,...o.keepDirty?{isDirty:I()}:{}}),!o.keepIsValid&&b()},de=({disabled:e,name:t})=>{if(ag(e)&&o.mount||e||s.disabled.has(t)){let n=s.disabled.has(t)!==!!e;e?s.disabled.add(t):s.disabled.delete(t),n&&o.mount&&!o.action&&b()}},W=(e,n={})=>{let a=q(r,e),c=ag(n.disabled)||ag(t.disabled),l=!s.registerName.has(e)&&a&&a._f&&!a._f.mount;return sg(r,e,{...a||{},_f:{...a&&a._f?a._f:{ref:{name:e}},name:e,mount:!0,...n}}),s.mount.add(e),a&&!l?de({disabled:ag(n.disabled)?n.disabled:t.disabled,name:e}):O(e,!0,n.value),{...c?{disabled:n.disabled||t.disabled}:{},...t.progressive?{required:!!n.required,min:a_(n.min),max:a_(n.max),minLength:a_(n.minLength),maxLength:a_(n.maxLength),pattern:a_(n.pattern)}:{},name:e,onChange:te,onBlur:te,ref:c=>{if(c){s.registerName.add(e),W(e,n),s.registerName.delete(e),a=q(r,e);let t=ng(c.value)&&c.querySelectorAll&&c.querySelectorAll(`input,select,textarea`)[0]||c,o=Gg(t),l=a._f.refs||[];if(o?l.find(e=>e===t):t===a._f.ref)return;let u={...a._f};o?(u.refs=[...l.filter(Kg),t,...Array.isArray(q(i,e))?[{}]:[]],u.ref={type:t.type,name:e}):(u.ref=t,delete u.refs),sg(r,e,{_f:u}),O(e,!1,void 0,t)}else a=q(r,e,{}),a._f&&(a._f.mount=!1),(t.shouldUnregister||n.shouldUnregister)&&!(Gh(s.array,e)&&o.action)&&s.unMount.add(e)}}},fe=()=>t.shouldFocusError&&!t.shouldUseNativeValidation&&yg(r,ne,s.mount),pe=e=>{ag(e)&&(g.state.next({disabled:e}),yg(r,(t,n)=>{let i=q(r,n);i&&(t.disabled=i._f.disabled||e,Array.isArray(i._f.refs)&&i._f.refs.forEach(t=>{t.disabled=i._f.disabled||e}))},0,!1))},me=(e,i)=>async o=>{let c,l;o&&(o.preventDefault&&o.preventDefault(),o.persist&&o.persist());let u=Jh(a);if(g.state.next({isSubmitting:!0}),t.resolver){let{errors:e,values:t}=await j();x(),n.errors=e,u=Jh(t)}else await P({fields:r,eventType:Yh.SUBMIT});if(s.disabled.size)for(let e of s.disabled)Rg(u,e);if(Rg(n.errors,Qh),xg(n.errors)){g.state.next({errors:{}});try{c=await e(u,o)}catch(e){l=e}}else i&&await i({...n.errors},o),fe(),setTimeout(fe);if(g.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:xg(n.errors)&&!l,submitCount:n.submitCount+1,errors:n.errors}),l)throw l;return c},he=(e,t={})=>{q(r,e)&&(ng(t.defaultValue)?H(e,Jh(q(i,e))):(H(e,t.defaultValue),sg(i,e,Jh(t.defaultValue))),t.keepTouched||Rg(n.touchedFields,e),t.keepDirty||(Rg(n.dirtyFields,e),n.isDirty=t.defaultValue?I(e,Jh(q(i,e))):I()),t.keepError||(Rg(n.errors,e),m.isValid&&b()),g.state.next({...n}))},ge=(e,c={})=>{let l=e?Jh(e):i,u=Jh(l),d=xg(e),f=u,p=r;if(c.keepDefaultValues||(i=l),!c.keepValues){if(c.keepDirtyValues){let e=new Set([...s.mount,...Jg(t_(i,a,void 0,p),n.dirtyFields)]);for(let t of Array.from(e)){let e=q(n.dirtyFields,t),r=q(a,t),i=q(f,t);e&&!ng(r)?sg(f,t,r):!e&&!ng(i)&&H(t,i)}}else{if(qh&&ng(e))for(let e of s.mount){let t=q(r,e);if(t&&t._f){let e=Array.isArray(t._f.refs)?t._f.refs[0]:t._f.ref;if(Sg(e)){let t=e.closest(`form`);if(t){t.reset();break}}}}if(c.keepFieldsRef)for(let e of s.mount)H(e,q(f,e));else r={}}if(t.shouldUnregister){if(a=c.keepDefaultValues?Jh(i):{},c.keepFieldsRef)for(let e of s.mount)sg(a,e,q(f,e))}else a=Jh(f);g.array.next({values:{...f}}),g.state.next({name:void 0,type:void 0,values:{...f}})}s={mount:c.keepDirtyValues?s.mount:new Set,unMount:new Set,array:new Set,registerName:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:``},o.mount=!m.isValid||!!c.keepIsValid||!!c.keepDirtyValues||!t.shouldUnregister&&!xg(f),o.watch=!!t.shouldUnregister,o.keepIsValid=!!c.keepIsValid,o.action=!1,o.actionArrayLengths.clear(),c.keepErrors||(n.errors={}),g.state.next({submitCount:c.keepSubmitCount?n.submitCount:0,isDirty:d?!1:c.keepDirty?n.isDirty:c.keepValues?I():!!(c.keepDefaultValues&&!pg(e,i)),isSubmitted:c.keepIsSubmitted?n.isSubmitted:!1,dirtyFields:d?{}:c.keepDirtyValues?c.keepDefaultValues&&a?t_(i,a,void 0,p):n.dirtyFields:c.keepDefaultValues&&e?t_(i,e,void 0,p):c.keepDirty?n.dirtyFields:{},touchedFields:c.keepTouched?n.touchedFields:{},errors:c.keepErrors?n.errors:{},isSubmitSuccessful:c.keepIsSubmitSuccessful?n.isSubmitSuccessful:!1,isSubmitting:!1,defaultValues:i})},_e=(e,n)=>ge(og(e)?e(a):e,{...t.resetOptions,...n}),ve=(e,t={})=>{let n=q(r,e),i=n&&n._f;if(i){let e=i.refs?i.refs[0]:i.ref;e.focus&&setTimeout(()=>{e.focus(),t.shouldSelect&&og(e.select)&&e.select()})}},ye=e=>{let{name:t,type:r,values:i,...a}=e;n={...n,...a}};g.state.subscribe({next:ye});let be={control:{register:W,unregister:ue,getFieldState:ie,handleSubmit:me,setError:oe,_subscribe:ce,_runSchema:j,_updateIsValidating:x,_focusError:fe,_getWatch:L,_getDirty:I,_setValid:b,_setFieldArray:C,_setDisabledField:de,_setErrors:T,_getFieldArray:R,_reset:ge,_resetDefaultValues:()=>og(t.defaultValues)&&t.defaultValues().then(e=>{_e(e,t.resetOptions),g.state.next({isLoading:!1})}),_removeUnmounted:F,_disableForm:pe,_subjects:g,_proxyFormState:m,get _fields(){return r},get _formValues(){return a},get _state(){return o},set _state(e){o=e},get _defaultValues(){return i},get _names(){return s},set _names(e){s=e},get _formState(){return n},get _options(){return t},set _options(e){t={...t,...e},d=_g(t.mode),f=_g(t.reValidateMode)}},subscribe:le,trigger:U,register:W,handleSubmit:me,watch:se,setValue:H,setValues:ee,getValues:re,reset:_e,resetField:he,resetDefaultValues:(e,t={})=>{if(i=Jh(e),!t.keepDirty){let e=t_(i,a,void 0,r);n.dirtyFields=e,n.isDirty=!xg(e)}t.keepIsValid||b(),g.state.next({...n,defaultValues:i})},clearErrors:ae,unregister:ue,setError:oe,setFocus:ve,getFieldState:ie};return{...be,formControl:be}}function y_(e={}){let t=s.useRef(void 0),n=s.useRef(void 0),r=s.useRef(e.formControl),[i,a]=s.useState(()=>({...Jh(__),isLoading:og(e.defaultValues),errors:e.errors||{},disabled:e.disabled||!1,defaultValues:og(e.defaultValues)?void 0:e.defaultValues}));if(!t.current||e.formControl&&r.current!==e.formControl){if(r.current=e.formControl,e.formControl)t.current={...e.formControl,formState:i},e.defaultValues&&!og(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{let{formControl:n,...r}=v_(e);t.current={...r,formState:i}}}let o=t.current.control;o._options=e;let{resyncIfNeeded:c,snapshot:l}=mg();return ug(()=>{let e=()=>({...o._formState,defaultValues:o._defaultValues});c(!0,e,a);let t=o._subscribe({formState:o._proxyFormState,callback:()=>a({...o._formState,defaultValues:o._defaultValues}),reRenderRoot:!0});return a(e=>({...e,isReady:!0})),o._formState.isReady=!0,()=>{t(),l(!0,e)}},[o,c,l]),s.useEffect(()=>o._disableForm(e.disabled),[o,e.disabled]),s.useEffect(()=>{e.mode&&(o._options.mode=e.mode),e.reValidateMode&&(o._options.reValidateMode=e.reValidateMode)},[o,e.mode,e.reValidateMode]),s.useEffect(()=>{e.errors&&(o._setErrors(e.errors),o._focusError())},[o,e.errors]),s.useEffect(()=>{e.shouldUnregister&&o._subjects.state.next({values:o._getWatch()})},[o,e.shouldUnregister]),s.useEffect(()=>{if(o._proxyFormState.isDirty){let e=o._getDirty();e!==i.isDirty&&o._subjects.state.next({isDirty:e})}},[o,i.isDirty]),s.useEffect(()=>{e.values&&!pg(e.values,n.current)?(o._reset(e.values,{keepFieldsRef:!0,...o._options.resetOptions}),o._options.resetOptions?.keepIsValid||o._setValid(),n.current=e.values,a(e=>({...e}))):o._resetDefaultValues()},[o,e.values]),s.useEffect(()=>{o._state.mount||(o._setValid(),o._state.mount=!0),o._state.watch&&(o._state.watch=!1,o._subjects.state.next({...o._formState})),o._removeUnmounted()}),t.current.formState=s.useMemo(()=>lg(i,o),[o,i]),t.current}var b_=(e,t,n)=>{if(e&&`reportValidity`in e){let r=q(n,t);e.setCustomValidity(r&&r.message||``),e.reportValidity()}},x_=(e,t)=>{for(let n in t.fields){let r=t.fields[n];r&&r.ref&&`reportValidity`in r.ref?b_(r.ref,n,e):r&&r.refs&&r.refs.forEach(t=>b_(t,n,e))}},S_=(e,t)=>{t.shouldUseNativeValidation&&x_(e,t);let n={};for(let r in e){let i=q(t.fields,r),a=Object.assign(e[r]||{},{ref:i&&i.refs?i.refs[0]:i&&i.ref});if(C_(t.names||Object.keys(e),r)){let e=Object.assign({},q(n,r));sg(e,`root`,a),sg(n,r,e)}else sg(n,r,a)}return n},C_=(e,t)=>{let n=w_(t).replace(/[.*+?^${}()|\\]/g,`\\$&`);return e.some(e=>w_(e).match(`^${n}\\.\\d+`))};function w_(e){return e.replace(/[\[\]]/g,``)}function T_(){return T_=Object.assign?Object.assign.bind():function(e){for(var t=1;t0){var s=r.errors.reduce(function(e,t){return t.lengthe([...A_]))}function J(e,t=``,n=`success`){let r=`${n}:${e}:${t}`;if(A_.some(e=>e.toastKey===r))return;let i={key:++j_,toastKey:r,title:e,message:t,type:n};A_=[...A_,i],N_(),window.setTimeout(()=>{A_=A_.filter(e=>e.key!==i.key),N_()},n===`error`?7e3:3600)}function P_(){let[e,t]=(0,s.useState)(A_);return(0,s.useEffect)(()=>{let e=e=>t(e);return M_.add(e),()=>{M_.delete(e)}},[]),(0,G.jsx)(`div`,{className:`toast-region`,"aria-live":`polite`,"aria-atomic":`true`,children:e.map(e=>(0,G.jsxs)(`div`,{className:`toast ${e.type}`,children:[e.type===`error`?(0,G.jsx)(U,{size:15}):(0,G.jsx)(V,{size:15}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:e.title}),e.message?(0,G.jsx)(`p`,{children:e.message}):null]})]},e.key))})}var F_=n(((e,t)=>{var n=!1,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_;function v(){if(!n){n=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),v=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(m=/\b(iPhone|iP[ao]d)/.exec(e),h=/\b(iP[ao]d)/.exec(e),f=/Android/i.exec(e),g=/FBAN\/\w+;/i.exec(e),_=/Mobile/i.exec(e),p=!!/Win64/.exec(e),t){r=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,r&&document&&document.documentMode&&(r=document.documentMode);var y=/(?:Trident\/(\d+.\d+))/.exec(e);c=y?parseFloat(y[1])+4:r,i=t[2]?parseFloat(t[2]):NaN,a=t[3]?parseFloat(t[3]):NaN,o=t[4]?parseFloat(t[4]):NaN,o?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),s=t&&t[1]?parseFloat(t[1]):NaN):s=NaN}else r=i=a=s=o=NaN;if(v){if(v[1]){var b=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);l=!b||parseFloat(b[1].replace(`_`,`.`))}else l=!1;u=!!v[2],d=!!v[3]}else l=u=d=!1}}var y={ie:function(){return v()||r},ieCompatibilityMode:function(){return v()||c>r},ie64:function(){return y.ie()&&p},firefox:function(){return v()||i},opera:function(){return v()||a},webkit:function(){return v()||o},safari:function(){return y.webkit()},chrome:function(){return v()||s},windows:function(){return v()||u},osx:function(){return v()||l},linux:function(){return v()||d},iphone:function(){return v()||m},mobile:function(){return v()||m||h||f||_},nativeApp:function(){return v()||g},android:function(){return v()||f},ipad:function(){return v()||h}};t.exports=y})),I_=n(((e,t)=>{var n=!!(typeof window<`u`&&window.document&&window.document.createElement);t.exports={canUseDOM:n,canUseWorkers:typeof Worker<`u`,canUseEventListeners:n&&!!(window.addEventListener||window.attachEvent),canUseViewport:n&&!!window.screen,isInWorker:!n}})),L_=n(((e,t)=>{var n=I_(),r;n.canUseDOM&&(r=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature(``,``)!==!0);function i(e,t){if(!n.canUseDOM||t&&!(`addEventListener`in document))return!1;var i=`on`+e,a=i in document;if(!a){var o=document.createElement(`div`);o.setAttribute(i,`return;`),a=typeof o[i]==`function`}return!a&&r&&e===`wheel`&&(a=document.implementation.hasFeature(`Events.wheel`,`3.0`)),a}t.exports=i})),R_=n(((e,t)=>{var n=F_(),r=L_(),i=10,a=40,o=800;function s(e){var t=0,n=0,r=0,s=0;return`detail`in e&&(n=e.detail),`wheelDelta`in e&&(n=-e.wheelDelta/120),`wheelDeltaY`in e&&(n=-e.wheelDeltaY/120),`wheelDeltaX`in e&&(t=-e.wheelDeltaX/120),`axis`in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),r=t*i,s=n*i,`deltaY`in e&&(s=e.deltaY),`deltaX`in e&&(r=e.deltaX),(r||s)&&e.deltaMode&&(e.deltaMode==1?(r*=a,s*=a):(r*=o,s*=o)),r&&!t&&(t=r<1?-1:1),s&&!n&&(n=s<1?-1:1),{spinX:t,spinY:n,pixelX:r,pixelY:s}}s.getEventType=function(){return n.firefox()?`DOMMouseScroll`:r(`wheel`)?`wheel`:`mousewheel`},t.exports=s})),z_=t(n(((e,t)=>{t.exports=R_()}))(),1);function B_(e,t,n,r,i,a){a===void 0&&(a=0);var o=ev(e,t,a),s=o.width,c=o.height,l=Math.min(s,n),u=Math.min(c,r);return l>u*i?{width:u*i,height:u}:{width:l,height:l/i}}function V_(e){return e.width>e.height?e.width/e.naturalWidth:e.height/e.naturalHeight}function H_(e,t,n,r,i){i===void 0&&(i=0);var a=ev(t.width,t.height,i),o=a.width,s=a.height;return{x:U_(e.x,o,n.width,r),y:U_(e.y,s,n.height,r)}}function U_(e,t,n,r){var i=Math.abs(t*r/2-n/2);return tv(e,-i,i)}function W_(e,t){return Math.sqrt((e.y-t.y)**2+(e.x-t.x)**2)}function G_(e,t){return Math.atan2(t.y-e.y,t.x-e.x)*180/Math.PI}function K_(e,t,n,r,i,a,o){a===void 0&&(a=0),o===void 0&&(o=!0);var s=o?q_:J_,c=ev(t.width,t.height,a),l=ev(t.naturalWidth,t.naturalHeight,a),u={x:s(100,((c.width-n.width/i)/2-e.x/i)/c.width*100),y:s(100,((c.height-n.height/i)/2-e.y/i)/c.height*100),width:s(100,n.width/c.width*100/i),height:s(100,n.height/c.height*100/i)},d=Math.round(s(l.width,u.width*l.width/100)),f=Math.round(s(l.height,u.height*l.height/100)),p=l.width>=l.height*r?{width:Math.round(f*r),height:f}:{width:d,height:Math.round(d/r)};return{croppedAreaPercentages:u,croppedAreaPixels:Dr(Dr({},p),{x:Math.round(s(l.width-p.width,u.x*l.width/100)),y:Math.round(s(l.height-p.height,u.y*l.height/100))})}}function q_(e,t){return Math.min(e,Math.max(0,t))}function J_(e,t){return t}function Y_(e,t,n,r,i,a){var o=ev(t.width,t.height,n),s=tv(r.width/o.width*(100/e.width),i,a);return{crop:{x:s*o.width/2-r.width/2-o.width*s*(e.x/100),y:s*o.height/2-r.height/2-o.height*s*(e.y/100)},zoom:s}}function X_(e,t,n){var r=V_(t);return n.height>n.width?n.height/(e.height*r):n.width/(e.width*r)}function Z_(e,t,n,r,i,a){n===void 0&&(n=0);var o=ev(t.naturalWidth,t.naturalHeight,n),s=tv(X_(e,t,r),i,a),c=r.height>r.width?r.height/e.height:r.width/e.width;return{crop:{x:((o.width-e.width)/2-e.x)*c,y:((o.height-e.height)/2-e.y)*c},zoom:s}}function Q_(e,t){return{x:(t.x+e.x)/2,y:(t.y+e.y)/2}}function $_(e){return e*Math.PI/180}function ev(e,t,n){var r=$_(n);return{width:Math.abs(Math.cos(r)*e)+Math.abs(Math.sin(r)*t),height:Math.abs(Math.sin(r)*e)+Math.abs(Math.cos(r)*t)}}function tv(e,t,n){return Math.min(Math.max(e,t),n)}function nv(){return[...arguments].filter(function(e){return typeof e==`string`&&e.length>0}).join(` `).trim()}var rv=`.reactEasyCrop_Container { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + overflow: hidden; + user-select: none; + touch-action: none; + cursor: move; + display: flex; + justify-content: center; + align-items: center; +} + +.reactEasyCrop_Image, +.reactEasyCrop_Video { + will-change: transform; /* this improves performances and prevent painting issues on iOS Chrome */ +} + +.reactEasyCrop_Contain { + max-width: 100%; + max-height: 100%; + margin: auto; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; +} +.reactEasyCrop_Cover_Horizontal { + width: 100%; + height: auto; +} +.reactEasyCrop_Cover_Vertical { + width: auto; + height: 100%; +} + +.reactEasyCrop_CropArea { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + border: 1px solid rgba(255, 255, 255, 0.5); + box-sizing: border-box; + box-shadow: 0 0 0 9999em; + color: rgba(0, 0, 0, 0.5); + overflow: hidden; +} + +.reactEasyCrop_CropAreaRound { + border-radius: 50%; +} + +.reactEasyCrop_CropAreaGrid::before { + content: ' '; + box-sizing: border-box; + position: absolute; + border: 1px solid rgba(255, 255, 255, 0.5); + top: 0; + bottom: 0; + left: 33.33%; + right: 33.33%; + border-top: 0; + border-bottom: 0; +} + +.reactEasyCrop_CropAreaGrid::after { + content: ' '; + box-sizing: border-box; + position: absolute; + border: 1px solid rgba(255, 255, 255, 0.5); + top: 33.33%; + bottom: 33.33%; + left: 0; + right: 0; + border-left: 0; + border-right: 0; +} +`,iv=1,av=3,ov=1,sv=function(e){Er(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.cropperRef=s.createRef(),n.imageRef=s.createRef(),n.videoRef=s.createRef(),n.containerPosition={x:0,y:0},n.containerRef=null,n.styleRef=null,n.containerRect=null,n.mediaSize={width:0,height:0,naturalWidth:0,naturalHeight:0},n.dragStartPosition={x:0,y:0},n.dragStartCrop={x:0,y:0},n.gestureZoomStart=0,n.gestureRotationStart=0,n.isTouching=!1,n.lastPinchDistance=0,n.lastPinchRotation=0,n.rafDragTimeout=null,n.rafPinchTimeout=null,n.wheelTimer=null,n.currentDoc=typeof document<`u`?document:null,n.currentWindow=typeof window<`u`?window:null,n.resizeObserver=null,n.previousCropSize=null,n.isInitialized=!1,n.state={cropSize:null,hasWheelJustStarted:!1,mediaObjectFit:void 0},n.initResizeObserver=function(){if(!(window.ResizeObserver===void 0||!n.containerRef)){var e=!0;n.resizeObserver=new window.ResizeObserver(function(t){if(e){e=!1;return}n.computeSizes()}),n.resizeObserver.observe(n.containerRef)}},n.preventZoomSafari=function(e){return e.preventDefault()},n.cleanEvents=function(){n.currentDoc&&(n.currentDoc.removeEventListener(`mousemove`,n.onMouseMove),n.currentDoc.removeEventListener(`mouseup`,n.onDragStopped),n.currentDoc.removeEventListener(`touchmove`,n.onTouchMove),n.currentDoc.removeEventListener(`touchend`,n.onDragStopped),n.currentDoc.removeEventListener(`gesturechange`,n.onGestureChange),n.currentDoc.removeEventListener(`gestureend`,n.onGestureEnd),n.currentDoc.removeEventListener(`scroll`,n.onScroll))},n.clearScrollEvent=function(){n.containerRef&&n.containerRef.removeEventListener(`wheel`,n.onWheel),n.wheelTimer&&clearTimeout(n.wheelTimer)},n.onMediaLoad=function(){var e=n.computeSizes();e&&(n.previousCropSize=e,n.emitCropData(),n.setInitialCrop(e),n.isInitialized=!0),n.props.onMediaLoaded&&n.props.onMediaLoaded(n.mediaSize)},n.setInitialCrop=function(e){if(n.props.initialCroppedAreaPercentages){var t=Y_(n.props.initialCroppedAreaPercentages,n.mediaSize,n.props.rotation,e,n.props.minZoom,n.props.maxZoom),r=t.crop,i=t.zoom;n.props.onCropChange(r),n.props.onZoomChange&&n.props.onZoomChange(i)}else if(n.props.initialCroppedAreaPixels){var a=Z_(n.props.initialCroppedAreaPixels,n.mediaSize,n.props.rotation,e,n.props.minZoom,n.props.maxZoom),r=a.crop,i=a.zoom;n.props.onCropChange(r),n.props.onZoomChange&&n.props.onZoomChange(i)}},n.computeSizes=function(){var e=n.imageRef.current||n.videoRef.current;if(e&&n.containerRef){n.containerRect=n.containerRef.getBoundingClientRect(),n.saveContainerPosition();var t=n.containerRect.width/n.containerRect.height,r=n.imageRef.current?.naturalWidth||n.videoRef.current?.videoWidth||0,i=n.imageRef.current?.naturalHeight||n.videoRef.current?.videoHeight||0,a=e.offsetWidtho?{width:n.containerRect.height*o,height:n.containerRect.height}:{width:n.containerRect.width,height:n.containerRect.width/o};break;case`horizontal-cover`:s={width:n.containerRect.width,height:n.containerRect.width/o};break;case`vertical-cover`:s={width:n.containerRect.height*o,height:n.containerRect.height}}else s={width:e.offsetWidth,height:e.offsetHeight};n.mediaSize=Dr(Dr({},s),{naturalWidth:r,naturalHeight:i}),n.props.setMediaSize&&n.props.setMediaSize(n.mediaSize);var c=n.props.cropSize?n.props.cropSize:B_(n.mediaSize.width,n.mediaSize.height,n.containerRect.width,n.containerRect.height,n.props.aspect,n.props.rotation);return(n.state.cropSize?.height!==c.height||n.state.cropSize?.width!==c.width)&&n.props.onCropSizeChange&&n.props.onCropSizeChange(c),n.setState({cropSize:c},n.recomputeCropPosition),n.props.setCropSize&&n.props.setCropSize(c),c}},n.saveContainerPosition=function(){if(n.containerRef){var e=n.containerRef.getBoundingClientRect();n.containerPosition={x:e.left,y:e.top}}},n.onMouseDown=function(e){n.currentDoc&&(e.preventDefault(),n.currentDoc.addEventListener(`mousemove`,n.onMouseMove),n.currentDoc.addEventListener(`mouseup`,n.onDragStopped),n.saveContainerPosition(),n.onDragStart(t.getMousePoint(e)))},n.onMouseMove=function(e){return n.onDrag(t.getMousePoint(e))},n.onScroll=function(e){n.currentDoc&&(e.preventDefault(),n.saveContainerPosition())},n.onTouchStart=function(e){n.currentDoc&&(n.isTouching=!0,!(n.props.onTouchRequest&&!n.props.onTouchRequest(e))&&(n.currentDoc.addEventListener(`touchmove`,n.onTouchMove,{passive:!1}),n.currentDoc.addEventListener(`touchend`,n.onDragStopped),n.saveContainerPosition(),e.touches.length===2?n.onPinchStart(e):e.touches.length===1&&n.onDragStart(t.getTouchPoint(e.touches[0]))))},n.onTouchMove=function(e){e.preventDefault(),e.touches.length===2?n.onPinchMove(e):e.touches.length===1&&n.onDrag(t.getTouchPoint(e.touches[0]))},n.onGestureStart=function(e){n.currentDoc&&(e.preventDefault(),n.currentDoc.addEventListener(`gesturechange`,n.onGestureChange),n.currentDoc.addEventListener(`gestureend`,n.onGestureEnd),n.gestureZoomStart=n.props.zoom,n.gestureRotationStart=n.props.rotation)},n.onGestureChange=function(e){if(e.preventDefault(),!n.isTouching){var r=t.getMousePoint(e),i=n.gestureZoomStart-1+e.scale;if(n.setNewZoom(i,r,{shouldUpdatePosition:!0}),n.props.onRotationChange){var a=n.gestureRotationStart+e.rotation;n.props.onRotationChange(a)}}},n.onGestureEnd=function(e){n.cleanEvents()},n.onDragStart=function(e){var t,r;n.dragStartPosition={x:e.x,y:e.y},n.dragStartCrop=Dr({},n.props.crop),(r=(t=n.props).onInteractionStart)==null||r.call(t)},n.onDrag=function(e){var t=e.x,r=e.y;n.currentWindow&&(n.rafDragTimeout&&n.currentWindow.cancelAnimationFrame(n.rafDragTimeout),n.rafDragTimeout=n.currentWindow.requestAnimationFrame(function(){if(n.state.cropSize&&t!==void 0&&r!==void 0){var e=t-n.dragStartPosition.x,i=r-n.dragStartPosition.y,a={x:n.dragStartCrop.x+e,y:n.dragStartCrop.y+i},o=n.props.restrictPosition?H_(a,n.mediaSize,n.state.cropSize,n.props.zoom,n.props.rotation):a;n.props.onCropChange(o)}}))},n.onDragStopped=function(){var e,t;n.isTouching=!1,n.cleanEvents(),n.emitCropData(),(t=(e=n.props).onInteractionEnd)==null||t.call(e)},n.onWheel=function(e){if(n.currentWindow&&!(n.props.onWheelRequest&&!n.props.onWheelRequest(e))){e.preventDefault();var r=t.getMousePoint(e),i=(0,z_.default)(e).pixelY,a=n.props.zoom-i*n.props.zoomSpeed/200;n.setNewZoom(a,r,{shouldUpdatePosition:!0}),n.state.hasWheelJustStarted||n.setState({hasWheelJustStarted:!0},function(){var e;return(e=n.props).onInteractionStart?.call(e)}),n.wheelTimer&&clearTimeout(n.wheelTimer),n.wheelTimer=n.currentWindow.setTimeout(function(){return n.setState({hasWheelJustStarted:!1},function(){var e;return(e=n.props).onInteractionEnd?.call(e)})},250)}},n.getPointOnContainer=function(e,t){var r=e.x,i=e.y;if(!n.containerRect)throw Error(`The Cropper is not mounted`);return{x:n.containerRect.width/2-(r-t.x),y:n.containerRect.height/2-(i-t.y)}},n.getPointOnMedia=function(e){var t=e.x,r=e.y,i=n.props,a=i.crop,o=i.zoom;return{x:(t+a.x)/o,y:(r+a.y)/o}},n.setNewZoom=function(e,t,r){var i=(r===void 0?{}:r).shouldUpdatePosition,a=i===void 0||i;if(!(!n.state.cropSize||!n.props.onZoomChange)){var o=tv(e,n.props.minZoom,n.props.maxZoom);if(a){var s=n.getPointOnContainer(t,n.containerPosition),c=n.getPointOnMedia(s),l={x:c.x*o-s.x,y:c.y*o-s.y},u=n.props.restrictPosition?H_(l,n.mediaSize,n.state.cropSize,o,n.props.rotation):l;n.props.onCropChange(u)}n.props.onZoomChange(o)}},n.getCropData=function(){return n.state.cropSize?K_(n.props.restrictPosition?H_(n.props.crop,n.mediaSize,n.state.cropSize,n.props.zoom,n.props.rotation):n.props.crop,n.mediaSize,n.state.cropSize,n.getAspect(),n.props.zoom,n.props.rotation,n.props.restrictPosition):null},n.emitCropData=function(){var e=n.getCropData();if(e){var t=e.croppedAreaPercentages,r=e.croppedAreaPixels;n.props.onCropComplete&&n.props.onCropComplete(t,r),n.props.onCropAreaChange&&n.props.onCropAreaChange(t,r)}},n.emitCropAreaChange=function(){var e=n.getCropData();if(e){var t=e.croppedAreaPercentages,r=e.croppedAreaPixels;n.props.onCropAreaChange&&n.props.onCropAreaChange(t,r)}},n.recomputeCropPosition=function(){if(n.state.cropSize){var e=n.props.crop;if(n.isInitialized&&n.previousCropSize?.width&&n.previousCropSize?.height&&(Math.abs(n.previousCropSize.width-n.state.cropSize.width)>1e-6||Math.abs(n.previousCropSize.height-n.state.cropSize.height)>1e-6)){var t=n.state.cropSize.width/n.previousCropSize.width,r=n.state.cropSize.height/n.previousCropSize.height;e={x:n.props.crop.x*t,y:n.props.crop.y*r}}var i=n.props.restrictPosition?H_(e,n.mediaSize,n.state.cropSize,n.props.zoom,n.props.rotation):e;n.previousCropSize=n.state.cropSize,n.props.onCropChange(i),n.emitCropData()}},n.onKeyDown=function(e){var t,r,i=n.props,a=i.crop,o=i.onCropChange,s=i.keyboardStep,c=i.zoom,l=i.rotation,u=s;if(n.state.cropSize){e.shiftKey&&(u*=.2);var d=Dr({},a);switch(e.key){case`ArrowUp`:d.y-=u,e.preventDefault();break;case`ArrowDown`:d.y+=u,e.preventDefault();break;case`ArrowLeft`:d.x-=u,e.preventDefault();break;case`ArrowRight`:d.x+=u,e.preventDefault();break;default:return}n.props.restrictPosition&&(d=H_(d,n.mediaSize,n.state.cropSize,c,l)),e.repeat||(r=(t=n.props).onInteractionStart)==null||r.call(t),o(d)}},n.onKeyUp=function(e){var t,r;switch(e.key){case`ArrowUp`:case`ArrowDown`:case`ArrowLeft`:case`ArrowRight`:e.preventDefault();break;default:return}n.emitCropData(),(r=(t=n.props).onInteractionEnd)==null||r.call(t)},n}return t.prototype.componentDidMount=function(){!this.currentDoc||!this.currentWindow||(this.containerRef&&(this.containerRef.ownerDocument&&(this.currentDoc=this.containerRef.ownerDocument),this.currentDoc.defaultView&&(this.currentWindow=this.currentDoc.defaultView),this.initResizeObserver(),window.ResizeObserver===void 0&&this.currentWindow.addEventListener(`resize`,this.computeSizes),this.props.zoomWithScroll&&this.containerRef.addEventListener(`wheel`,this.onWheel,{passive:!1}),this.containerRef.addEventListener(`gesturestart`,this.onGestureStart)),this.currentDoc.addEventListener(`scroll`,this.onScroll),this.props.disableAutomaticStylesInjection||(this.styleRef=this.currentDoc.createElement(`style`),this.styleRef.setAttribute(`type`,`text/css`),this.props.nonce&&this.styleRef.setAttribute(`nonce`,this.props.nonce),this.styleRef.innerHTML=rv,this.currentDoc.head.appendChild(this.styleRef)),this.imageRef.current&&this.imageRef.current.complete&&this.onMediaLoad(),this.props.setImageRef&&this.props.setImageRef(this.imageRef),this.props.setVideoRef&&this.props.setVideoRef(this.videoRef),this.props.setCropperRef&&this.props.setCropperRef(this.cropperRef))},t.prototype.componentWillUnmount=function(){var e,t;!this.currentDoc||!this.currentWindow||(window.ResizeObserver===void 0&&this.currentWindow.removeEventListener(`resize`,this.computeSizes),(e=this.resizeObserver)==null||e.disconnect(),this.containerRef&&this.containerRef.removeEventListener(`gesturestart`,this.preventZoomSafari),this.styleRef&&((t=this.styleRef.parentNode)==null||t.removeChild(this.styleRef)),this.cleanEvents(),this.props.zoomWithScroll&&this.clearScrollEvent())},t.prototype.componentDidUpdate=function(e){var t;e.rotation===this.props.rotation?e.aspect===this.props.aspect&&e.objectFit===this.props.objectFit?e.zoom===this.props.zoom?e.cropSize?.height!==this.props.cropSize?.height||e.cropSize?.width!==this.props.cropSize?.width?this.computeSizes():(e.crop?.x!==this.props.crop?.x||e.crop?.y!==this.props.crop?.y)&&this.emitCropAreaChange():this.recomputeCropPosition():this.computeSizes():(this.computeSizes(),this.recomputeCropPosition()),e.zoomWithScroll!==this.props.zoomWithScroll&&this.containerRef&&(this.props.zoomWithScroll?this.containerRef.addEventListener(`wheel`,this.onWheel,{passive:!1}):this.clearScrollEvent()),e.video!==this.props.video&&((t=this.videoRef.current)==null||t.load());var n=this.getObjectFit();n!==this.state.mediaObjectFit&&this.setState({mediaObjectFit:n},this.computeSizes)},t.prototype.getAspect=function(){var e=this.props,t=e.cropSize,n=e.aspect;return t?t.width/t.height:n},t.prototype.getObjectFit=function(){if(this.props.objectFit===`cover`){if((this.imageRef.current||this.videoRef.current)&&this.containerRef){this.containerRect=this.containerRef.getBoundingClientRect();var e=this.containerRect.width/this.containerRect.height;return(this.imageRef.current?.naturalWidth||this.videoRef.current?.videoWidth||0)/(this.imageRef.current?.naturalHeight||this.videoRef.current?.videoHeight||0)r.toBlob(e,`image/webp`,.9));if(!a)throw Error(`头像裁剪失败,请更换图片后重试`);return a}function pv({name:e,appearance:t,disabled:n=!1,onSave:r}){let[i,a]=(0,s.useState)(()=>uv(t)),[o,c]=(0,s.useState)(null),[l,u]=(0,s.useState)({x:0,y:0}),[d,f]=(0,s.useState)(1),[p,m]=(0,s.useState)(null),[h,_]=(0,s.useState)(!1),[v,y]=(0,s.useState)(!1),[b,x]=(0,s.useState)(``),S=(0,s.useRef)(null);(0,s.useEffect)(()=>a(uv(t)),[t]),(0,s.useEffect)(()=>()=>{o&&URL.revokeObjectURL(o)},[o]);let C=uv(t),w=i.icon!==C.icon||i.color!==C.color||i.imageUrl!==C.imageUrl;function T(e){if(x(``),e){if(![`image/png`,`image/webp`].includes(e.type)){x(`仅支持 PNG 或 WebP 图片`);return}if(e.size>2097152){x(`头像文件不能超过 2 MiB`);return}u({x:0,y:0}),f(1),m(null),c(URL.createObjectURL(e))}}async function E(){if(!(!o||!p||h)){_(!0),x(``);try{let e=await fv(o,p),t=await g(`/api/v1/assets/agent-avatars`,{method:`POST`,headers:{"Content-Type":e.type},body:e}),n=await t.json().catch(()=>null);if(!t.ok)throw Error(n?.error?.message||`头像上传失败(${t.status})`);a(e=>({...e,imageUrl:n.url})),c(null)}catch(e){x(e instanceof Error?e.message:`头像上传失败`)}finally{_(!1)}}}async function D(){if(!(!w||v||n)){y(!0),x(``);try{await r(i)}catch(e){x(e instanceof Error?e.message:`外观保存失败`)}finally{y(!1)}}}return(0,G.jsxs)(`section`,{className:`agent-appearance-editor`,"aria-label":`Agent 外观`,children:[(0,G.jsxs)(`div`,{className:`agent-appearance-preview`,children:[(0,G.jsx)(Ct,{name:e,appearance:i,size:`lg`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`Agent 外观`}),(0,G.jsx)(`span`,{children:`用于列表、会话和 Trace;不会写入模型提示词。`})]})]}),(0,G.jsxs)(`div`,{className:`agent-appearance-controls`,children:[(0,G.jsxs)(`div`,{className:`appearance-choice-group`,role:`group`,"aria-label":`头像图标`,children:[(0,G.jsx)(`span`,{children:`图标`}),(0,G.jsx)(`div`,{children:cv.map(e=>(0,G.jsx)(`button`,{className:i.icon===e.id&&!i.imageUrl?`active`:``,type:`button`,"aria-label":`使用 ${e.label} 图标`,"aria-pressed":i.icon===e.id&&!i.imageUrl,disabled:n,onClick:()=>a(t=>({...t,icon:e.id,imageUrl:null})),children:(0,G.jsx)(e.icon,{size:16})},e.id))})]}),(0,G.jsxs)(`div`,{className:`appearance-choice-group color`,role:`group`,"aria-label":`头像配色`,children:[(0,G.jsx)(`span`,{children:`配色`}),(0,G.jsx)(`div`,{children:lv.map(e=>(0,G.jsx)(`button`,{className:i.color===e.value?`active`:``,type:`button`,"aria-label":`使用${e.label}配色`,"aria-pressed":i.color===e.value,disabled:n,style:{"--appearance-swatch":e.value},onClick:()=>a(t=>({...t,color:e.value}))},e.value))})]})]}),(0,G.jsxs)(`div`,{className:`agent-appearance-actions`,children:[(0,G.jsx)(`input`,{ref:S,className:`sr-only`,type:`file`,accept:`image/png,image/webp`,"aria-label":`选择 Agent 头像图片`,disabled:n,onChange:e=>{T(e.target.files?.[0]),e.target.value=``}}),(0,G.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:n,onClick:()=>S.current?.click(),children:[(0,G.jsx)(Ae,{size:14}),(0,G.jsx)(`span`,{children:`上传图片`})]}),i.imageUrl?(0,G.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:n,onClick:()=>a(e=>({...e,imageUrl:null})),children:[(0,G.jsx)(ht,{size:14}),(0,G.jsx)(`span`,{children:`移除图片`})]}):null,(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,disabled:n||v||!w,onClick:D,children:v?`正在保存`:`保存外观`})]}),b?(0,G.jsx)(`p`,{className:`studio-field-error`,role:`alert`,children:b}):null,(0,G.jsx)(Da,{open:!!o,onOpenChange:e=>{!e&&!h&&c(null)},title:`调整 Agent 头像`,description:`拖动画面并缩放,保存后会生成 512 × 512 WebP。`,closeDisabled:h,className:`avatar-crop-dialog`,footer:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`button`,{className:`button tertiary`,type:`button`,disabled:h,onClick:()=>c(null),children:`取消`}),(0,G.jsx)(`button`,{className:`button accent`,type:`button`,disabled:h||!p,onClick:E,children:h?`正在上传`:`使用裁剪`})]}),children:o?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{className:`avatar-crop-stage`,children:(0,G.jsx)(sv,{image:o,crop:l,zoom:d,aspect:1,showGrid:!1,onCropChange:u,onZoomChange:f,onCropComplete:(e,t)=>m(t)})}),(0,G.jsxs)(`label`,{className:`avatar-zoom-control`,children:[(0,G.jsx)(`span`,{children:`缩放`}),(0,G.jsx)(`input`,{type:`range`,min:1,max:3,step:.05,value:d,onChange:e=>f(Number(e.target.value))})]})]}):null})]})}var mv=Object.defineProperty,hv=s.forwardRef(((e,t)=>mv(e,`name`,{value:t,configurable:!0}))(function(e,t){return(0,G.jsx)(Tn.label,{...e,ref:t,onMouseDown:t=>{t.target.closest(`button, input, select, textarea`)||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}})},`Label`)),gv=Object.defineProperty,_v=(e,t)=>gv(e,`name`,{value:t,configurable:!0}),[vv,yv]=zt(`Tooltip`,[mc]),bv=mc(),xv=`TooltipProvider`,Sv=700,Cv=`tooltip.open`,[wv,Tv]=vv(xv),Ev=_v(e=>{let{__scopeTooltip:t,delayDuration:n=Sv,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=s.useRef(!0),c=s.useRef(!1),l=s.useRef(0);return s.useEffect(()=>{let e=l.current;return()=>window.clearTimeout(e)},[]),(0,G.jsx)(wv,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:s.useCallback(()=>{r<=0||(window.clearTimeout(l.current),o.current=!1)},[r]),onClose:s.useCallback(()=>{r<=0||(window.clearTimeout(l.current),l.current=window.setTimeout(()=>o.current=!0,r))},[r]),isPointerInTransitRef:c,onPointerInTransitChange:s.useCallback(e=>{c.current=e},[]),disableHoverableContent:i,children:a})},`TooltipProvider`),Dv=`Tooltip`,[Ov,kv]=vv(Dv),Av=_v(e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:c}=e,l=Tv(Dv,e.__scopeTooltip),u=bv(t),[d,f]=s.useState(null),[p,m]=s.useState(void 0),h=Kt(),g=s.useRef(0),_=o??l.disableHoverableContent,v=c??l.delayDuration,y=s.useRef(!1),[b,x]=tn({prop:r,defaultProp:i??!1,onChange:_v(e=>{e?(l.onOpen(),document.dispatchEvent(new CustomEvent(Cv))):l.onClose(),a?.(e)},`onChange`),caller:Dv}),S=s.useMemo(()=>b?y.current?`delayed-open`:`instant-open`:`closed`,[b]),C=s.useCallback(()=>{window.clearTimeout(g.current),g.current=0,y.current=!1,x(!0)},[x]),w=s.useCallback(()=>{window.clearTimeout(g.current),g.current=0,x(!1)},[x]),T=s.useCallback(()=>{window.clearTimeout(g.current),g.current=window.setTimeout(()=>{y.current=!0,x(!0),g.current=0},v)},[v,x]);s.useEffect(()=>()=>{g.current&&=(window.clearTimeout(g.current),0)},[]);let E=p??h;return(0,G.jsx)(Ac,{...u,children:(0,G.jsx)(Ov,{scope:t,contentId:E,setContentId:m,open:b,stateAttribute:S,trigger:d,onTriggerChange:f,onTriggerEnter:s.useCallback(()=>{l.isOpenDelayedRef.current?T():C()},[l.isOpenDelayedRef,T,C]),onTriggerLeave:s.useCallback(()=>{_?w():(window.clearTimeout(g.current),g.current=0)},[w,_]),onOpen:C,onClose:w,disableHoverableContent:_,children:n})})},`Tooltip`),jv=`TooltipTrigger`,Mv=s.forwardRef(_v(function(e,t){let{__scopeTooltip:n,...r}=e,i=kv(jv,n),a=Tv(jv,n),o=bv(n),c=Ft(t,s.useRef(null),i.onTriggerChange),l=s.useRef(!1),u=s.useRef(!1),d=s.useCallback(()=>l.current=!1,[]);return s.useEffect(()=>()=>document.removeEventListener(`pointerup`,d),[d]),(0,G.jsx)(jc,{asChild:!0,...o,children:(0,G.jsx)(Tn.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:c,onPointerMove:K(e.onPointerMove,e=>{e.pointerType!==`touch`&&!u.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),u.current=!0)}),onPointerLeave:K(e.onPointerLeave,()=>{i.onTriggerLeave(),u.current=!1}),onPointerDown:K(e.onPointerDown,()=>{i.open&&i.onClose(),l.current=!0,document.addEventListener(`pointerup`,d,{once:!0})}),onFocus:K(e.onFocus,()=>{l.current||i.onOpen()}),onBlur:K(e.onBlur,i.onClose),onClick:K(e.onClick,i.onClose)})})},`TooltipTrigger`)),Nv=`TooltipPortal`,[Pv,Fv]=vv(Nv,{forceMount:void 0}),Iv=_v(e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=kv(Nv,t);return(0,G.jsx)(Pv,{scope:t,forceMount:n,children:(0,G.jsx)(fr,{present:n||a.open,children:(0,G.jsx)(cr,{asChild:!0,container:i,children:r})})})},`TooltipPortal`),Lv=`TooltipContent`,Rv=s.forwardRef(_v(function(e,t){let n=Fv(Lv,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=kv(Lv,e.__scopeTooltip);return(0,G.jsx)(fr,{present:r||o.open,children:o.disableHoverableContent?(0,G.jsx)(Vv,{side:i,...a,ref:t}):(0,G.jsx)(zv,{side:i,...a,ref:t})})},`TooltipContent`)),zv=s.forwardRef(_v(function(e,t){let n=kv(Lv,e.__scopeTooltip),r=Tv(Lv,e.__scopeTooltip),i=s.useRef(null),a=Ft(t,i),[o,c]=s.useState(null),{trigger:l,onClose:u}=n,d=i.current,{onPointerInTransitChange:f}=r,p=s.useCallback(()=>{c(null),f(!1)},[f]),m=s.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=Wv(r,Uv(r,n.getBoundingClientRect())),a=Gv(t.getBoundingClientRect()),o=qv([...i,...a]);c(o),f(!0)},[f]);return s.useEffect(()=>()=>p(),[p]),s.useEffect(()=>{if(l&&d){let e=_v(e=>m(e,d),`handleTriggerLeave`),t=_v(e=>m(e,l),`handleContentLeave`);return l.addEventListener(`pointerleave`,e),d.addEventListener(`pointerleave`,t),()=>{l.removeEventListener(`pointerleave`,e),d.removeEventListener(`pointerleave`,t)}}},[l,d,m,p]),s.useEffect(()=>{if(o){let e=_v(e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=l?.contains(t)||d?.contains(t),i=!Kv(n,o);r?p():i&&(p(),u())},`handleTrackPointerGrace`);return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[l,d,o,u,p]),(0,G.jsx)(Vv,{...e,ref:a})},`TooltipContentHoverable`)),Bv=fn(`TooltipContent`),Vv=s.forwardRef(_v(function(e,t){let{__scopeTooltip:n,children:r,"aria-label":i,id:a,onEscapeKeyDown:o,onPointerDownOutside:c,...l}=e,u=kv(Lv,n),d=bv(n),{onClose:f}=u;s.useEffect(()=>(document.addEventListener(Cv,f),()=>document.removeEventListener(Cv,f)),[f]),s.useEffect(()=>{if(u.trigger){let e=_v(e=>{e.target instanceof Node&&e.target.contains(u.trigger)&&f()},`handleScroll`);return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[u.trigger,f]);let{setContentId:p}=u;return Vt(()=>(p(a),()=>{p(void 0)}),[a,p]),(0,G.jsx)(Ln,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:o,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:f,children:(0,G.jsxs)(Mc,{"data-state":u.stateAttribute,role:i?void 0:`tooltip`,id:i?void 0:u.contentId,...d,...l,ref:t,style:{...l.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,G.jsx)(Bv,{children:r}),i?(0,G.jsx)(Dm,{id:u.contentId,role:`tooltip`,children:i}):null]})})},`TooltipContentImpl`)),Hv=s.forwardRef(_v(function(e,t){let{__scopeTooltip:n,...r}=e,i=bv(n);return(0,G.jsx)(Nc,{...i,...r,ref:t})},`TooltipArrow`));function Uv(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}_v(Uv,`getExitSideFromRect`);function Wv(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}_v(Wv,`getPaddedExitPoints`);function Gv(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}_v(Gv,`getPointsFromRect`);function Kv(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}_v(Kv,`isPointInPolygon`);function qv(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y)),Jv(t)}_v(qv,`getHull`);function Jv(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}_v(Jv,`getHullPresorted`);var Yv=Ev,Xv=Av,Zv=Mv,Qv=Iv,$v=Rv,ey=Hv,ty={required:`*`,optional:``,generated:`自动生成`};function ny({children:e,htmlFor:t,requirement:n,hint:r}){return(0,G.jsxs)(`div`,{className:`studio-field-label-row`,children:[(0,G.jsxs)(hv,{className:`studio-field-label`,htmlFor:t,children:[(0,G.jsx)(`span`,{children:e}),n&&ty[n]?(0,G.jsxs)(`span`,{className:`studio-field-requirement ${n}`,children:[(0,G.jsx)(`span`,{"aria-hidden":`true`,children:ty[n]}),n===`required`&&(0,G.jsx)(`span`,{className:`sr-only`,children:`必填`})]}):null]}),r?(0,G.jsx)(Yv,{delayDuration:240,children:(0,G.jsxs)(Xv,{children:[(0,G.jsx)(Zv,{asChild:!0,children:(0,G.jsx)(`button`,{className:`field-help-trigger`,type:`button`,"aria-label":`${String(e)}说明`,onClick:e=>e.preventDefault(),children:(0,G.jsx)(se,{size:14})})}),(0,G.jsx)(Qv,{children:(0,G.jsxs)($v,{className:`studio-tooltip field-help-tooltip`,side:`top`,sideOffset:7,children:[r,(0,G.jsx)(ey,{className:`studio-tooltip-arrow`})]})})]})}):null]})}function ry({id:e,children:t}){return(0,G.jsx)(`p`,{className:`studio-field-error`,id:e,role:`alert`,children:t})}function Y({label:e,requirement:t,hint:n,error:r,htmlFor:i,children:a,className:o,footer:c}){let l=(0,s.useId)(),u=n?`${l}-hint`:void 0,d=r?`${l}-error`:void 0,f=[u,d].filter(Boolean).join(` `)||void 0,p=a;if((0,s.isValidElement)(a)){let e=a,t=typeof e.props[`aria-describedby`]==`string`?e.props[`aria-describedby`]:void 0;p=(0,s.cloneElement)(e,{"aria-describedby":[t,f].filter(Boolean).join(` `)||void 0,"aria-invalid":r?!0:e.props[`aria-invalid`]})}return(0,G.jsxs)(`div`,{className:`studio-form-field${r?` has-error`:``}${o?` ${o}`:``}`,children:[(0,G.jsx)(ny,{htmlFor:i,requirement:t,hint:n,children:e}),(0,G.jsx)(`div`,{className:`studio-field-control`,children:p}),c?(0,G.jsx)(`div`,{className:`studio-field-footer`,children:c}):null,n?(0,G.jsx)(`span`,{className:`sr-only`,id:u,children:n}):null,r?(0,G.jsx)(ry,{id:d,children:r}):null]})}var iy=Object.defineProperty,ay=(e,t)=>iy(e,`name`,{value:t,configurable:!0}),oy=`Popover`,[sy,cy]=zt(oy,[mc]),ly=mc(),[uy,dy]=sy(oy),fy=ay(e=>{let{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!1}=e,c=ly(t),l=s.useRef(null),[u,d]=s.useState(!1),[f,p]=tn({prop:r,defaultProp:i??!1,onChange:a,caller:oy});return(0,G.jsx)(Ac,{...c,children:(0,G.jsx)(uy,{scope:t,contentId:Kt(),triggerRef:l,open:f,onOpenChange:p,onOpenToggle:s.useCallback(()=>p(e=>!e),[p]),hasCustomAnchor:u,onCustomAnchorAdd:s.useCallback(()=>d(!0),[]),onCustomAnchorRemove:s.useCallback(()=>d(!1),[]),modal:o,children:n})})},`Popover`),py=`PopoverTrigger`,my=s.forwardRef(ay(function(e,t){let{__scopePopover:n,...r}=e,i=dy(py,n),a=ly(n),o=Ft(t,i.triggerRef),s=(0,G.jsx)(Tn.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":Ty(i.open),...r,ref:o,onClick:K(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?s:(0,G.jsx)(jc,{asChild:!0,...a,children:s})},`PopoverTrigger`)),hy=`PopoverPortal`,[gy,_y]=sy(hy,{forceMount:void 0}),vy=ay(e=>{let{__scopePopover:t,forceMount:n,children:r,container:i}=e,a=dy(hy,t);return(0,G.jsx)(gy,{scope:t,forceMount:n,children:(0,G.jsx)(fr,{present:n||a.open,children:(0,G.jsx)(cr,{asChild:!0,container:i,children:r})})})},`PopoverPortal`),yy=`PopoverContent`,by=s.forwardRef(ay(function(e,t){let n=_y(yy,e.__scopePopover),{forceMount:r=n.forceMount,...i}=e,a=dy(yy,e.__scopePopover);return(0,G.jsx)(fr,{present:r||a.open,children:a.modal?(0,G.jsx)(Sy,{...i,ref:t}):(0,G.jsx)(Cy,{...i,ref:t})})},`PopoverContent`)),xy=un(`PopoverContent.RemoveScroll`),Sy=s.forwardRef(ay(function(e,t){let n=dy(yy,e.__scopePopover),r=s.useRef(null),i=Ft(t,r),a=s.useRef(!1);return s.useEffect(()=>{let e=r.current;if(e)return Wi(e)},[]),(0,G.jsx)(Fi,{as:xy,allowPinchZoom:!0,children:(0,G.jsx)(wy,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:K(e.onCloseAutoFocus,e=>{e.preventDefault(),a.current||n.triggerRef.current?.focus()}),onPointerDownOutside:K(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;a.current=r},{checkForDefaultPrevented:!1}),onFocusOutside:K(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})},`PopoverContentModal`)),Cy=s.forwardRef(ay(function(e,t){let n=dy(yy,e.__scopePopover),r=s.useRef(!1),i=s.useRef(!1);return(0,G.jsx)(wy,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})},`PopoverContentNonModal`)),wy=s.forwardRef(ay(function(e,t){let{__scopePopover:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:o,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onInteractOutside:u,...d}=e,f=dy(yy,n),p=ly(n);return Cr(),(0,G.jsx)(Yn,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,G.jsx)(Ln,{asChild:!0,disableOutsidePointerEvents:o,onInteractOutside:u,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onDismiss:()=>f.onOpenChange(!1),deferPointerDownOutside:!0,children:(0,G.jsx)(Mc,{"data-state":Ty(f.open),role:`dialog`,id:f.contentId,...p,...d,ref:t,style:{...d.style,"--radix-popover-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-popover-content-available-width":`var(--radix-popper-available-width)`,"--radix-popover-content-available-height":`var(--radix-popper-available-height)`,"--radix-popover-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-popover-trigger-height":`var(--radix-popper-anchor-height)`}})})})},`PopoverContentImpl`));function Ty(e){return e?`open`:`closed`}ay(Ty,`getState`);var Ey=fy,Dy=my,Oy=vy,ky=by,Ay=1,jy=.9,My=.8,Ny=.17,Py=.1,Fy=.999,Iy=.9999,Ly=.99,Ry=/[\\\/_+.#"@\[\(\{&]/,zy=/[\\\/_+.#"@\[\(\{&]/g,By=/[\s-]/,Vy=/[\s-]/g;function Hy(e,t,n,r,i,a,o){if(a===t.length)return i===e.length?Ay:Ly;var s=`${i},${a}`;if(o[s]!==void 0)return o[s];for(var c=r.charAt(a),l=n.indexOf(c,i),u=0,d,f,p,m;l>=0;)d=Hy(e,t,n,r,l+1,a+1,o),d>u&&(l===i?d*=Ay:Ry.test(e.charAt(l-1))?(d*=My,p=e.slice(i,l-1).match(zy),p&&i>0&&(d*=Fy**+p.length)):By.test(e.charAt(l-1))?(d*=jy,m=e.slice(i,l-1).match(Vy),m&&i>0&&(d*=Fy**+m.length)):(d*=Ny,i>0&&(d*=Fy**+(l-i))),e.charAt(l)!==t.charAt(a)&&(d*=Iy)),(dd&&(d=f*Py)),d>u&&(u=d),l=n.indexOf(c,l+1);return o[s]=u,u}function Uy(e){return e.toLowerCase().replace(Vy,` `)}function Wy(e,t,n){return e=n&&n.length>0?`${e+` `+n.join(` `)}`:e,Hy(e,t,Uy(e),Uy(t),0,0,{})}var Gy=`[cmdk-group=""]`,Ky=`[cmdk-group-items=""]`,qy=`[cmdk-group-heading=""]`,Jy=`[cmdk-item=""]`,Yy=`${Jy}:not([aria-disabled="true"])`,Xy=`cmdk-item-select`,Zy=`data-value`,Qy=(e,t,n)=>Wy(e,t,n),$y=s.createContext(void 0),eb=()=>s.useContext($y),tb=s.createContext(void 0),nb=()=>s.useContext(tb),rb=s.createContext(void 0),ib=s.forwardRef((e,t)=>{let n=vb(()=>({search:``,value:e.value??e.defaultValue??``,selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}})),r=vb(()=>new Set),i=vb(()=>new Map),a=vb(()=>new Map),o=vb(()=>new Set),c=gb(e),{label:l,children:u,value:d,onValueChange:f,filter:p,shouldFilter:m,loop:h,disablePointerSelection:g=!1,vimBindings:_=!0,...v}=e,y=Kt(),b=Kt(),x=Kt(),S=s.useRef(null),C=xb();_b(()=>{if(d!==void 0){let e=d.trim();n.current.value=e,w.emit()}},[d]),_b(()=>{C(6,A)},[]);let w=s.useMemo(()=>({subscribe:e=>(o.current.add(e),()=>o.current.delete(e)),snapshot:()=>n.current,setState:(e,t,r)=>{var i,a,o;if(!Object.is(n.current[e],t)){if(n.current[e]=t,e===`search`)k(),D(),C(1,O);else if(e===`value`){if(document.activeElement.hasAttribute(`cmdk-input`)||document.activeElement.hasAttribute(`cmdk-root`)){let e=document.getElementById(x);e?e.focus():(i=document.getElementById(y))==null||i.focus()}if(C(7,()=>{n.current.selectedItemId=j()?.id,w.emit()}),r||C(5,A),c.current?.value!==void 0){let e=t??``;(o=(a=c.current).onValueChange)==null||o.call(a,e);return}}w.emit()}},emit:()=>{o.current.forEach(e=>e())}}),[]),T=s.useMemo(()=>({value:(e,t,r)=>{t!==a.current.get(e)?.value&&(a.current.set(e,{value:t,keywords:r}),n.current.filtered.items.set(e,E(t,r)),C(2,()=>{D(),w.emit()}))},item:(e,t)=>(r.current.add(e),t&&(i.current.has(t)?i.current.get(t).add(e):i.current.set(t,new Set([e]))),C(3,()=>{k(),D(),n.current.value||O(),w.emit()}),()=>{a.current.delete(e),r.current.delete(e),n.current.filtered.items.delete(e);let t=j();C(4,()=>{k(),t?.getAttribute(`id`)===e&&O(),w.emit()})}),group:e=>(i.current.has(e)||i.current.set(e,new Set),()=>{a.current.delete(e),i.current.delete(e)}),filter:()=>c.current.shouldFilter,label:l||e[`aria-label`],getDisablePointerSelection:()=>c.current.disablePointerSelection,listId:y,inputId:x,labelId:b,listInnerRef:S}),[]);function E(e,t){let r=c.current?.filter??Qy;return e?r(e,n.current.search,t):0}function D(){if(!n.current.search||c.current.shouldFilter===!1)return;let e=n.current.filtered.items,t=[];n.current.filtered.groups.forEach(n=>{let r=i.current.get(n),a=0;r.forEach(t=>{let n=e.get(t);a=Math.max(n,a)}),t.push([n,a])});let r=S.current;M().sort((t,n)=>{let r=t.getAttribute(`id`),i=n.getAttribute(`id`);return(e.get(i)??0)-(e.get(r)??0)}).forEach(e=>{let t=e.closest(Ky);t?t.appendChild(e.parentElement===t?e:e.closest(`${Ky} > *`)):r.appendChild(e.parentElement===r?e:e.closest(`${Ky} > *`))}),t.sort((e,t)=>t[1]-e[1]).forEach(e=>{let t=S.current?.querySelector(`${Gy}[${Zy}="${encodeURIComponent(e[0])}"]`);t?.parentElement.appendChild(t)})}function O(){let e=M().find(e=>e.getAttribute(`aria-disabled`)!==`true`)?.getAttribute(Zy);w.setState(`value`,e||void 0)}function k(){if(!n.current.search||c.current.shouldFilter===!1){n.current.filtered.count=r.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let t of r.current){let r=E(a.current.get(t)?.value??``,a.current.get(t)?.keywords??[]);n.current.filtered.items.set(t,r),r>0&&e++}for(let[e,t]of i.current)for(let r of t)if(n.current.filtered.items.get(r)>0){n.current.filtered.groups.add(e);break}n.current.filtered.count=e}function A(){var e;let t=j();t&&(t.parentElement?.firstChild===t&&((e=t.closest(Gy)?.querySelector(qy))==null||e.scrollIntoView({block:`nearest`})),t.scrollIntoView({block:`nearest`}))}function j(){return S.current?.querySelector(`${Jy}[aria-selected="true"]`)}function M(){return Array.from(S.current?.querySelectorAll(Yy)||[])}function N(e){let t=M()[e];t&&w.setState(`value`,t.getAttribute(Zy))}function P(e){var t;let n=j(),r=M(),i=r.findIndex(e=>e===n),a=r[i+e];(t=c.current)!=null&&t.loop&&(a=i+e<0?r[r.length-1]:i+e===r.length?r[0]:r[i+e]),a&&w.setState(`value`,a.getAttribute(Zy))}function F(e){let t=j()?.closest(Gy),n;for(;t&&!n;)t=e>0?mb(t,Gy):hb(t,Gy),n=t?.querySelector(Yy);n?w.setState(`value`,n.getAttribute(Zy)):P(e)}let I=()=>N(M().length-1),L=e=>{e.preventDefault(),e.metaKey?I():e.altKey?F(1):P(1)},R=e=>{e.preventDefault(),e.metaKey?N(0):e.altKey?F(-1):P(-1)};return s.createElement(Tn.div,{ref:t,tabIndex:-1,...v,"cmdk-root":``,onKeyDown:e=>{var t;(t=v.onKeyDown)==null||t.call(v,e);let n=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||n))switch(e.key){case`n`:case`j`:_&&e.ctrlKey&&L(e);break;case`ArrowDown`:L(e);break;case`p`:case`k`:_&&e.ctrlKey&&R(e);break;case`ArrowUp`:R(e);break;case`Home`:e.preventDefault(),N(0);break;case`End`:e.preventDefault(),I();break;case`Enter`:{e.preventDefault();let t=j();if(t){let e=new Event(Xy);t.dispatchEvent(e)}}}}},s.createElement(`label`,{"cmdk-label":``,htmlFor:T.inputId,id:T.labelId,style:wb},l),Cb(e,e=>s.createElement(tb.Provider,{value:w},s.createElement($y.Provider,{value:T},e))))}),ab=s.forwardRef((e,t)=>{let n=Kt(),r=s.useRef(null),i=s.useContext(rb),a=eb(),o=gb(e),c=o.current?.forceMount??i?.forceMount;_b(()=>{if(!c)return a.item(n,i?.id)},[c]);let l=bb(n,r,[e.value,e.children,r],e.keywords),u=nb(),d=yb(e=>e.value&&e.value===l.current),f=yb(e=>c||a.filter()===!1?!0:!e.search||e.filtered.items.get(n)>0);s.useEffect(()=>{let t=r.current;if(!(!t||e.disabled))return t.addEventListener(Xy,p),()=>t.removeEventListener(Xy,p)},[f,e.onSelect,e.disabled]);function p(){var e,t;m(),(t=(e=o.current).onSelect)==null||t.call(e,l.current)}function m(){u.setState(`value`,l.current,!0)}if(!f)return null;let{disabled:h,value:g,onSelect:_,forceMount:v,keywords:y,...b}=e;return s.createElement(Tn.div,{ref:Pt(r,t),...b,id:n,"cmdk-item":``,role:`option`,"aria-disabled":!!h,"aria-selected":!!d,"data-disabled":!!h,"data-selected":!!d,onPointerMove:h||a.getDisablePointerSelection()?void 0:m,onClick:h?void 0:p},e.children)}),ob=s.forwardRef((e,t)=>{let{heading:n,children:r,forceMount:i,...a}=e,o=Kt(),c=s.useRef(null),l=s.useRef(null),u=Kt(),d=eb(),f=yb(e=>i||d.filter()===!1?!0:!e.search||e.filtered.groups.has(o));_b(()=>d.group(o),[]),bb(o,c,[e.value,e.heading,l]);let p=s.useMemo(()=>({id:o,forceMount:i}),[i]);return s.createElement(Tn.div,{ref:Pt(c,t),...a,"cmdk-group":``,role:`presentation`,hidden:!f||void 0},n&&s.createElement(`div`,{ref:l,"cmdk-group-heading":``,"aria-hidden":!0,id:u},n),Cb(e,e=>s.createElement(`div`,{"cmdk-group-items":``,role:`group`,"aria-labelledby":n?u:void 0},s.createElement(rb.Provider,{value:p},e))))}),sb=s.forwardRef((e,t)=>{let{alwaysRender:n,...r}=e,i=s.useRef(null),a=yb(e=>!e.search);return!n&&!a?null:s.createElement(Tn.div,{ref:Pt(i,t),...r,"cmdk-separator":``,role:`separator`})}),cb=s.forwardRef((e,t)=>{let{onValueChange:n,...r}=e,i=e.value!=null,a=nb(),o=yb(e=>e.search),c=yb(e=>e.selectedItemId),l=eb();return s.useEffect(()=>{e.value!=null&&a.setState(`search`,e.value)},[e.value]),s.createElement(Tn.input,{ref:t,...r,"cmdk-input":``,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,"aria-autocomplete":`list`,role:`combobox`,"aria-expanded":!0,"aria-controls":l.listId,"aria-labelledby":l.labelId,"aria-activedescendant":c,id:l.inputId,type:`text`,value:i?e.value:o,onChange:e=>{i||a.setState(`search`,e.target.value),n?.(e.target.value)}})}),lb=s.forwardRef((e,t)=>{let{children:n,label:r=`Suggestions`,...i}=e,a=s.useRef(null),o=s.useRef(null),c=yb(e=>e.selectedItemId),l=eb();return s.useEffect(()=>{if(o.current&&a.current){let e=o.current,t=a.current,n,r=new ResizeObserver(()=>{n=requestAnimationFrame(()=>{let n=e.offsetHeight;t.style.setProperty(`--cmdk-list-height`,n.toFixed(1)+`px`)})});return r.observe(e),()=>{cancelAnimationFrame(n),r.unobserve(e)}}},[]),s.createElement(Tn.div,{ref:Pt(a,t),...i,"cmdk-list":``,role:`listbox`,tabIndex:-1,"aria-activedescendant":c,"aria-label":r,id:l.listId},Cb(e,e=>s.createElement(`div`,{ref:Pt(o,l.listInnerRef),"cmdk-list-sizer":``},e)))}),ub=s.forwardRef((e,t)=>{let{open:n,onOpenChange:r,overlayClassName:i,contentClassName:a,container:o,...c}=e;return s.createElement(Qi,{open:n,onOpenChange:r},s.createElement(na,{container:o},s.createElement(ia,{"cmdk-overlay":``,className:i}),s.createElement(ca,{"aria-label":e.label,"cmdk-dialog":``,className:a},s.createElement(ib,{ref:t,...c}))))}),db=s.forwardRef((e,t)=>yb(e=>e.filtered.count===0)?s.createElement(Tn.div,{ref:t,...e,"cmdk-empty":``,role:`presentation`}):null),fb=s.forwardRef((e,t)=>{let{progress:n,children:r,label:i=`Loading...`,...a}=e;return s.createElement(Tn.div,{ref:t,...a,"cmdk-loading":``,role:`progressbar`,"aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":i},Cb(e,e=>s.createElement(`div`,{"aria-hidden":!0},e)))}),pb=Object.assign(ib,{List:lb,Item:ab,Input:cb,Group:ob,Separator:sb,Dialog:ub,Empty:db,Loading:fb});function mb(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return n;n=n.nextElementSibling}}function hb(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling}}function gb(e){let t=s.useRef(e);return _b(()=>{t.current=e}),t}var _b=typeof window>`u`?s.useEffect:s.useLayoutEffect;function vb(e){let t=s.useRef();return t.current===void 0&&(t.current=e()),t}function yb(e){let t=nb(),n=()=>e(t.snapshot());return s.useSyncExternalStore(t.subscribe,n,n)}function bb(e,t,n,r=[]){let i=s.useRef(),a=eb();return _b(()=>{var o;let s=(()=>{for(let e of n){if(typeof e==`string`)return e.trim();if(typeof e==`object`&&`current`in e)return e.current?e.current.textContent?.trim():i.current}})(),c=r.map(e=>e.trim());a.value(e,s,c),(o=t.current)==null||o.setAttribute(Zy,s),i.current=s}),i}var xb=()=>{let[e,t]=s.useState(),n=vb(()=>new Map);return _b(()=>{n.current.forEach(e=>e()),n.current=new Map},[e]),(e,r)=>{n.current.set(e,r),t({})}};function Sb(e){let t=e.type;return typeof t==`function`?t(e.props):`render`in t?t.render(e.props):e}function Cb({asChild:e,children:t},n){return e&&s.isValidElement(t)?s.cloneElement(Sb(t),{ref:t.ref},n(t.props.children)):n(t)}var wb={position:`absolute`,width:`1px`,height:`1px`,padding:`0`,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,borderWidth:`0`};function Tb({ariaLabel:e,items:t,selectedIds:n,getId:r,getLabel:i,getDescription:a=()=>``,onChange:o,searchPlaceholder:c=`搜索`,emptyMessage:l=`没有匹配项`,disabledIds:u=[]}){let[d,f]=(0,s.useState)(!1),[p,m]=(0,s.useState)(!1),h=(0,s.useMemo)(()=>new Set(u),[u]),g=(0,s.useMemo)(()=>new Set(n),[n]),_=t.filter(e=>g.has(r(e))),v=p?_:t;function y(e){h.has(e)||o(g.has(e)?n.filter(t=>t!==e):[...n,e])}return(0,G.jsxs)(`div`,{className:`studio-multi-select`,children:[(0,G.jsxs)(`div`,{className:`studio-multi-select-summary`,children:[(0,G.jsx)(`span`,{children:n.length?`已选 ${n.length} 个`:`尚未选择`}),n.length?(0,G.jsx)(`button`,{className:`text-button`,type:`button`,onClick:()=>o([]),children:`清空`}):null]}),(0,G.jsx)(`div`,{className:`studio-multi-select-selection`,"data-testid":`studio-multi-select-selection`,children:_.map(e=>{let t=r(e),n=i(e);return(0,G.jsxs)(`span`,{className:`studio-selection-chip`,children:[(0,G.jsx)(`span`,{title:n,children:n}),h.has(t)?null:(0,G.jsx)(`button`,{type:`button`,"aria-label":`移除 ${n}`,onClick:()=>y(t),children:(0,G.jsx)(bt,{size:12})})]},t)})}),(0,G.jsxs)(Ey,{open:d,onOpenChange:f,children:[(0,G.jsx)(Dy,{asChild:!0,children:(0,G.jsxs)(`button`,{className:`studio-multi-select-trigger`,type:`button`,"aria-label":e,"aria-expanded":d,children:[(0,G.jsx)(`span`,{children:n.length?`继续选择`:e}),(0,G.jsx)(H,{size:15})]})}),(0,G.jsx)(Oy,{children:(0,G.jsx)(ky,{className:`studio-multi-select-popover`,align:`start`,sideOffset:6,collisionPadding:12,children:(0,G.jsxs)(pb,{loop:!0,label:c,children:[(0,G.jsxs)(`div`,{className:`studio-command-search`,children:[(0,G.jsx)(tt,{size:14,"aria-hidden":`true`}),(0,G.jsx)(pb.Input,{"aria-label":c,placeholder:c,autoFocus:!0})]}),(0,G.jsxs)(`div`,{className:`studio-multi-select-tools`,children:[(0,G.jsx)(`button`,{className:p?`selected`:``,type:`button`,"aria-pressed":p,onClick:()=>m(e=>!e),children:`仅看已选`}),(0,G.jsxs)(`span`,{children:[v.length,` 项`]})]}),(0,G.jsxs)(pb.List,{className:`studio-command-list`,children:[(0,G.jsx)(pb.Empty,{children:l}),v.map(e=>{let t=r(e),n=i(e),o=a(e),s=g.has(t),c=h.has(t);return(0,G.jsxs)(pb.Item,{value:`${n} ${o} ${t}`,disabled:c,onSelect:()=>y(t),children:[(0,G.jsx)(`span`,{className:`studio-option-check`,role:`checkbox`,"aria-checked":s,children:s?(0,G.jsx)(V,{size:13}):null}),(0,G.jsxs)(`span`,{className:`studio-option-copy`,children:[(0,G.jsx)(`strong`,{children:n}),o?(0,G.jsx)(`small`,{children:o}):null]})]},t)})]})]})})})]})]})}var Eb=(0,s.lazy)(()=>f(()=>import(`./PrismRenderer-IYN-ffww.js`),__vite__mapDeps([0,1,2])));function Db({code:e,language:t=`text`,filename:n,wrap:r=!1,showLineNumbers:i=!0}){let[a,o]=(0,s.useState)(r),[c,l]=(0,s.useState)(!1);(0,s.useEffect)(()=>o(r),[r]);async function u(){navigator.clipboard?.writeText&&(await navigator.clipboard.writeText(e),l(!0),window.setTimeout(()=>l(!1),1600))}let d=n?`${n} 源码`:`${t||`text`} 代码`;return(0,G.jsxs)(`section`,{className:`code-viewer`,role:`region`,"aria-label":d,"data-code-theme":`studio`,"data-wrap":String(a),children:[(0,G.jsxs)(`header`,{className:`code-viewer-toolbar`,children:[(0,G.jsxs)(`div`,{children:[n&&(0,G.jsx)(`strong`,{title:n,children:n}),(0,G.jsx)(`span`,{children:t||`text`})]}),(0,G.jsxs)(`div`,{className:`code-viewer-actions`,children:[(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":a?`取消自动换行`:`自动换行`,title:a?`取消自动换行`:`自动换行`,"aria-pressed":a,onClick:()=>o(e=>!e),children:(0,G.jsx)(mt,{size:15})}),(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":c?`已复制`:`复制代码`,title:c?`已复制`:`复制代码`,onClick:()=>void u(),children:c?(0,G.jsx)(V,{size:15}):(0,G.jsx)(me,{size:15})})]})]}),(0,G.jsx)(`div`,{className:`code-viewer-scroll`,children:(0,G.jsx)(s.Suspense,{fallback:(0,G.jsx)(`pre`,{className:`code-viewer-fallback`,children:(0,G.jsx)(`code`,{children:e})}),children:(0,G.jsx)(Eb,{code:e,language:t||`text`,showLineNumbers:i})})})]})}function Ob(e){return(e.split(`.`).filter(Boolean).at(-1)||e).replace(/_([a-z])/g,(e,t)=>t.toUpperCase())}function kb(e){if(!e?.length)return null;let t=e[e.length-1];return typeof t==`string`?t:null}function Ab(e,t,n){typeof t==`string`&&t.trim()&&typeof n==`string`&&n&&(e[Ob(t)]=n)}function jb(e,t){if(!(!t||typeof t!=`object`||Array.isArray(t)))for(let[n,r]of Object.entries(t))typeof r==`string`?Ab(e,n,r):Array.isArray(r)&&typeof r[0]==`string`&&Ab(e,n,r[0])}function Mb(e){if(!e||typeof e!=`object`)return null;let t=e,n={};jb(n,t.errors);let r=t.error;if(r&&typeof r==`object`&&!Array.isArray(r)){let e=r;if(typeof e.field==`string`&&typeof e.message==`string`)return{[e.field]:e.message};let t=e.fields;if(t&&typeof t==`object`&&!Array.isArray(t)){let e={},n=!1;for(let[r,i]of Object.entries(t))typeof i==`string`&&(e[r]=i,n=!0);if(n)return e}let i=e.details;if(Array.isArray(i))for(let e of i)Ab(n,e.field||kb(e.loc),e.message);else i&&typeof i==`object`&&jb(n,i.fields)}return Object.keys(n).length?n:null}function Nb(e,t){let n=Mb(e);if(!n)return!1;for(let[e,r]of Object.entries(n))t(e,{type:`server`,message:r});return!0}var Pb;function X(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:r,constr:o,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);let i=o.prototype,a=Object.keys(i);for(let e=0;en?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}var Fb=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Ib=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Pb=globalThis).__zod_globalConfig??(Pb.__zod_globalConfig={});var Lb=globalThis.__zod_globalConfig;function Rb(e){return e&&Object.assign(Lb,e),Lb}function zb(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function Bb(e,t){return typeof t==`bigint`?t.toString():t}function Vb(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function Hb(e){return e==null}function Ub(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function Wb(e,t){let n=e/t,r=Math.round(n),i=2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r){};function Qb(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var $b=Vb(()=>{if(Lb.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function ex(e){if(Qb(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return Qb(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function tx(e){return ex(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var nx=new Set([`string`,`number`,`symbol`]);function rx(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function ix(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function ax(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function ox(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}var sx={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function cx(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return ix(e,Jb(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return qb(this,`shape`,e),e},checks:[]}))}function lx(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return ix(e,Jb(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return qb(this,`shape`,r),r},checks:[]}))}function ux(e,t){if(!ex(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return ix(e,Jb(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return qb(this,`shape`,n),n}}))}function dx(e,t){if(!ex(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return ix(e,Jb(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return qb(this,`shape`,n),n}}))}function fx(e,t){if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return ix(e,Jb(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return qb(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function px(e,t,n){let r=t._zod.def.checks;if(r&&r.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return ix(t,Jb(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return qb(this,`shape`,i),i},checks:[]}))}function mx(e,t,n){return ix(t,Jb(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return qb(this,`shape`,i),i}}))}function hx(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function vx(e){return typeof e==`string`?e:e?.message}function yx(e,t,n){let r=e.message?e.message:vx(e.inst?._zod.def?.error?.(e))??vx(t?.error?.(e))??vx(n.customError?.(e))??vx(n.localeError?.(e))??`Invalid input`,{inst:i,continue:a,input:o,...s}=e;return s.path??=[],s.message=r,t?.reportInput&&(s.input=o),s}function bx(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function xx(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var Sx=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,Bb,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Cx=X(`$ZodError`,Sx),wx=X(`$ZodError`,Sx,{Parent:Error});function Tx(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Ex(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i(t,n,r,i)=>{let a=r?{...r,async:!1}:{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new Fb;if(o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>yx(e,a,Rb())));throw Zb(t,i?.callee),t}return o.value},Ox=e=>async(t,n,r,i)=>{let a=r?{...r,async:!0}:{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>yx(e,a,Rb())));throw Zb(t,i?.callee),t}return o.value},kx=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new Fb;return a.issues.length?{success:!1,error:new(e??Cx)(a.issues.map(e=>yx(e,i,Rb())))}:{success:!0,data:a.value}},Ax=kx(wx),jx=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>yx(e,i,Rb())))}:{success:!0,data:a.value}},Mx=jx(wx),Nx=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Dx(e)(t,n,i)},Px=e=>(t,n,r)=>Dx(e)(t,n,r),Fx=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ox(e)(t,n,i)},Ix=e=>async(t,n,r)=>Ox(e)(t,n,r),Lx=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return kx(e)(t,n,i)},Rx=e=>(t,n,r)=>kx(e)(t,n,r),zx=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return jx(e)(t,n,i)},Bx=e=>async(t,n,r)=>jx(e)(t,n,r),Vx=/^[cC][0-9a-z]{6,}$/,Hx=/^[0-9a-z]+$/,Ux=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Wx=/^[0-9a-vA-V]{20}$/,Gx=/^[A-Za-z0-9]{27}$/,Kx=/^[a-zA-Z0-9_-]{21}$/,qx=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Jx=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Yx=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Xx=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Zx=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function Qx(){return new RegExp(Zx,`u`)}var $x=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,eS=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,tS=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,nS=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,rS=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,iS=/^[A-Za-z0-9_-]*$/,aS=/^https?$/,oS=/^\+[1-9]\d{6,14}$/,sS=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,cS=RegExp(`^${sS}$`);function lS(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function uS(e){return RegExp(`^${lS(e)}$`)}function dS(e){let t=lS({precision:e.precision}),n=[`Z`];e.local&&n.push(``),e.offset&&n.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let r=`${t}(?:${n.join(`|`)})`;return RegExp(`^${sS}T(?:${r})$`)}var fS=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},pS=/^-?\d+$/,mS=/^-?\d+(?:\.\d+)?$/,hS=/^(?:true|false)$/i,gS=/^[^A-Z]*$/,_S=/^[^a-z]*$/,vS=X(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),yS={number:`number`,bigint:`bigint`,object:`date`},bS=X(`$ZodCheckLessThan`,(e,t)=>{vS.init(e,t);let n=yS[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value{(t.inclusive?r.value<=t.value:r.value{vS.init(e,t);let n=yS[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),SS=X(`$ZodCheckMultipleOf`,(e,t)=>{vS.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?n.value%t.value===BigInt(0):Wb(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),CS=X(`$ZodCheckNumberFormat`,(e,t)=>{vS.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=sx[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=pS)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}sa&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),wS=X(`$ZodCheckMaxLength`,(e,t)=>{var n;vS.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Hb(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum{let r=n.value;if(r.length<=t.maximum)return;let i=bx(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),TS=X(`$ZodCheckMinLength`,(e,t)=>{var n;vS.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Hb(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=bx(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),ES=X(`$ZodCheckLengthEquals`,(e,t)=>{var n;vS.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Hb(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=bx(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),DS=X(`$ZodCheckStringFormat`,(e,t)=>{var n,r;vS.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),OS=X(`$ZodCheckRegex`,(e,t)=>{DS.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),kS=X(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=gS,DS.init(e,t)}),AS=X(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=_S,DS.init(e,t)}),jS=X(`$ZodCheckIncludes`,(e,t)=>{vS.init(e,t);let n=rx(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),MS=X(`$ZodCheckStartsWith`,(e,t)=>{vS.init(e,t);let n=RegExp(`^${rx(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),NS=X(`$ZodCheckEndsWith`,(e,t)=>{vS.init(e,t);let n=RegExp(`.*${rx(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),PS=X(`$ZodCheckOverwrite`,(e,t)=>{vS.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),FS=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` +`).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.args,n=[...(this?.content??[``]).map(e=>` ${e}`)];return new e(...t,n.join(` +`))}},IS={major:4,minor:4,patch:3},LS=X(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=IS;let r=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&r.unshift(e);for(let t of r)for(let n of t._zod.onattach)n(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,n)=>{let r=hx(e),i;for(let a of t){if(a._zod.def.when){if(gx(e)||!a._zod.def.when(e))continue}else if(r)continue;let t=e.issues.length,o=a._zod.check(e);if(o instanceof Promise&&n?.async===!1)throw new Fb;if(i||o instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(r||=hx(e,t))});else{if(e.issues.length===t)continue;r||=hx(e,t)}}return i?i.then(()=>e):e},n=(n,i,a)=>{if(hx(n))return n.aborted=!0,n;let o=t(i,r,a);if(o instanceof Promise){if(a.async===!1)throw new Fb;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction===`backward`){let t=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,i,a)):n(t,i,a)}let o=e._zod.parse(i,a);if(o instanceof Promise){if(a.async===!1)throw new Fb;return o.then(e=>t(e,r,a))}return t(o,r,a)}}Kb(e,`~standard`,()=>({validate:t=>{try{let n=Ax(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return Mx(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}))}),RS=X(`$ZodString`,(e,t)=>{LS.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??fS(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),zS=X(`$ZodStringFormat`,(e,t)=>{DS.init(e,t),RS.init(e,t)}),BS=X(`$ZodGUID`,(e,t)=>{t.pattern??=Jx,zS.init(e,t)}),VS=X(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=Yx(e)}else t.pattern??=Yx();zS.init(e,t)}),HS=X(`$ZodEmail`,(e,t)=>{t.pattern??=Xx,zS.init(e,t)}),US=X(`$ZodURL`,(e,t)=>{zS.init(e,t),e._zod.check=n=>{try{let r=n.value.trim();if(!t.normalize&&t.protocol?.source===aS.source&&!/^https?:\/\//i.test(r)){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}let i=new URL(r);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(i.hostname)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(i.protocol.endsWith(`:`)?i.protocol.slice(0,-1):i.protocol)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),n.value=t.normalize?i.href:r;return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),WS=X(`$ZodEmoji`,(e,t)=>{t.pattern??=Qx(),zS.init(e,t)}),GS=X(`$ZodNanoID`,(e,t)=>{t.pattern??=Kx,zS.init(e,t)}),KS=X(`$ZodCUID`,(e,t)=>{t.pattern??=Vx,zS.init(e,t)}),qS=X(`$ZodCUID2`,(e,t)=>{t.pattern??=Hx,zS.init(e,t)}),JS=X(`$ZodULID`,(e,t)=>{t.pattern??=Ux,zS.init(e,t)}),YS=X(`$ZodXID`,(e,t)=>{t.pattern??=Wx,zS.init(e,t)}),XS=X(`$ZodKSUID`,(e,t)=>{t.pattern??=Gx,zS.init(e,t)}),ZS=X(`$ZodISODateTime`,(e,t)=>{t.pattern??=dS(t),zS.init(e,t)}),QS=X(`$ZodISODate`,(e,t)=>{t.pattern??=cS,zS.init(e,t)}),$S=X(`$ZodISOTime`,(e,t)=>{t.pattern??=uS(t),zS.init(e,t)}),eC=X(`$ZodISODuration`,(e,t)=>{t.pattern??=qx,zS.init(e,t)}),tC=X(`$ZodIPv4`,(e,t)=>{t.pattern??=$x,zS.init(e,t),e._zod.bag.format=`ipv4`}),nC=X(`$ZodIPv6`,(e,t)=>{t.pattern??=eS,zS.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}}),rC=X(`$ZodCIDRv4`,(e,t)=>{t.pattern??=tS,zS.init(e,t)}),iC=X(`$ZodCIDRv6`,(e,t)=>{t.pattern??=nS,zS.init(e,t),e._zod.check=n=>{let r=n.value.split(`/`);try{if(r.length!==2)throw Error();let[e,t]=r;if(!t)throw Error();let n=Number(t);if(`${n}`!==t||n<0||n>128)throw Error();new URL(`http://[${e}]`)}catch{n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}}});function aC(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var oC=X(`$ZodBase64`,(e,t)=>{t.pattern??=rS,zS.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{aC(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function sC(e){if(!iS.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return aC(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var cC=X(`$ZodBase64URL`,(e,t)=>{t.pattern??=iS,zS.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{sC(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),lC=X(`$ZodE164`,(e,t)=>{t.pattern??=oS,zS.init(e,t)});function uC(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var dC=X(`$ZodJWT`,(e,t)=>{zS.init(e,t),e._zod.check=n=>{uC(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),fC=X(`$ZodNumber`,(e,t)=>{LS.init(e,t),e._zod.pattern=e._zod.bag.pattern??mS,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:`Infinity`:void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),pC=X(`$ZodNumberFormat`,(e,t)=>{CS.init(e,t),fC.init(e,t)}),mC=X(`$ZodBoolean`,(e,t)=>{LS.init(e,t),e._zod.pattern=hS,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),hC=X(`$ZodUnknown`,(e,t)=>{LS.init(e,t),e._zod.parse=e=>e}),gC=X(`$ZodNever`,(e,t)=>{LS.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function _C(e,t,n){e.issues.length&&t.issues.push(..._x(n,e.issues)),t.value[n]=e.value}var vC=X(`$ZodArray`,(e,t)=>{LS.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;e_C(t,n,e))):_C(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function yC(e,t,n,r,i,a){let o=n in r;if(e.issues.length){if(i&&a&&!o)return;t.issues.push(..._x(n,e.issues))}if(!o&&!i){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?o&&(t.value[n]=void 0):t.value[n]=e.value}function bC(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=ox(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function xC(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optin===`optional`,d=c.optout===`optional`;for(let i in t){if(i===`__proto__`||s.has(i))continue;if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>yC(e,n,i,t,u,d))):yC(a,n,i,t,u,d)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a}),e.length?Promise.all(e).then(()=>n):n}var SC=X(`$ZodObject`,(e,t)=>{if(LS.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Object.defineProperty(t,"shape",{get:()=>{let n={...e};return Object.defineProperty(t,"shape",{value:n}),n}})}let n=Vb(()=>bC(t));Kb(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=Qb,i=t.catchall,a;e._zod.parse=(t,o)=>{a??=n.value;let s=t.value;if(!r(s))return t.issues.push({expected:`object`,code:`invalid_type`,input:s,inst:e}),t;t.value={};let c=[],l=a.shape;for(let e of a.keys){let n=l[e],r=n._zod.optin===`optional`,i=n._zod.optout===`optional`,a=n._zod.run({value:s[e],issues:[]},o);a instanceof Promise?c.push(a.then(n=>yC(n,t,e,s,r,i))):yC(a,t,e,s,r,i)}return i?xC(c,s,t,o,n.value,e):c.length?Promise.all(c).then(()=>t):t}}),CC=X(`$ZodObjectJIT`,(e,t)=>{SC.init(e,t);let n=e._zod.parse,r=Vb(()=>bC(t)),i=e=>{let t=new FS([`shape`,`payload`,`ctx`]),n=r.value,i=e=>{let t=Yb(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write(`const input = payload.value;`);let a=Object.create(null),o=0;for(let e of n.keys)a[e]=`key_${o++}`;t.write(`const newResult = {};`);for(let r of n.keys){let n=a[r],o=Yb(r),s=e[r],c=s?._zod?.optin===`optional`,l=s?._zod?.optout===`optional`;t.write(`const ${n} = ${i(r)};`),c&&l?t.write(` + if (${n}.issues.length) { + if (${o} in input) { + payload.issues = payload.issues.concat(${n}.issues.map(iss => ({ + ...iss, + path: iss.path ? [${o}, ...iss.path] : [${o}] + }))); + } + } + + if (${n}.value === undefined) { + if (${o} in input) { + newResult[${o}] = undefined; + } + } else { + newResult[${o}] = ${n}.value; + } + + `):c?t.write(` + if (${n}.issues.length) { + payload.issues = payload.issues.concat(${n}.issues.map(iss => ({ + ...iss, + path: iss.path ? [${o}, ...iss.path] : [${o}] + }))); + } + + if (${n}.value === undefined) { + if (${o} in input) { + newResult[${o}] = undefined; + } + } else { + newResult[${o}] = ${n}.value; + } + + `):t.write(` + const ${n}_present = ${o} in input; + if (${n}.issues.length) { + payload.issues = payload.issues.concat(${n}.issues.map(iss => ({ + ...iss, + path: iss.path ? [${o}, ...iss.path] : [${o}] + }))); + } + if (!${n}_present && !${n}.issues.length) { + payload.issues.push({ + code: "invalid_type", + expected: "nonoptional", + input: undefined, + path: [${o}] + }); + } + + if (${n}_present) { + if (${n}.value === undefined) { + newResult[${o}] = undefined; + } else { + newResult[${o}] = ${n}.value; + } + } + + `)}t.write(`payload.value = newResult;`),t.write(`return payload;`);let s=t.compile();return(t,n)=>s(e,t,n)},a,o=Qb,s=!Lb.jitless,c=s&&$b.value,l=t.catchall,u;e._zod.parse=(d,f)=>{u??=r.value;let p=d.value;return o(p)?s&&c&&f?.async===!1&&f.jitless!==!0?(a||=i(t.shape),d=a(d,f),l?xC([],p,d,f,u,e):d):n(d,f):(d.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),d)}});function wC(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!hx(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>yx(e,r,Rb())))}),t)}var TC=X(`$ZodUnion`,(e,t)=>{LS.init(e,t),Kb(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),Kb(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),Kb(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),Kb(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>Ub(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>wC(t,r,e,i)):wC(o,r,e,i)}}),EC=X(`$ZodIntersection`,(e,t)=>{LS.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>OC(e,t,n)):OC(e,i,a)}});function DC(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(ex(e)&&ex(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=DC(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;re.l&&e.r).map(([e])=>e);if(a.length&&i&&e.issues.push({...i,keys:a}),hx(e))return e;let o=DC(t.value,n.value);if(!o.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return e.value=o.data,e}var kC=X(`$ZodEnum`,(e,t)=>{LS.init(e,t);let n=zb(t.entries),r=new Set(n);e._zod.values=r,e._zod.pattern=RegExp(`^(${n.filter(e=>nx.has(typeof e)).map(e=>typeof e==`string`?rx(e):e.toString()).join(`|`)})$`),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),AC=X(`$ZodLiteral`,(e,t)=>{if(LS.init(e,t),t.values.length===0)throw Error(`Cannot create literal schema with no valid values`);let n=new Set(t.values);e._zod.values=n,e._zod.pattern=RegExp(`^(${t.values.map(e=>typeof e==`string`?rx(e):e?rx(e.toString()):String(e)).join(`|`)})$`),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),jC=X(`$ZodTransform`,(e,t)=>{LS.init(e,t),e._zod.optin=`optional`,e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Ib(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n.fallback=!0,n));if(i instanceof Promise)throw new Fb;return n.value=i,n.fallback=!0,n}});function MC(e,t){return t===void 0&&(e.issues.length||e.fallback)?{issues:[],value:void 0}:e}var NC=X(`$ZodOptional`,(e,t)=>{LS.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,Kb(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),Kb(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${Ub(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(t.innerType._zod.optin===`optional`){let r=e.value,i=t.innerType._zod.run(e,n);return i instanceof Promise?i.then(e=>MC(e,r)):MC(i,r)}return e.value===void 0?e:t.innerType._zod.run(e,n)}}),PC=X(`$ZodExactOptional`,(e,t)=>{NC.init(e,t),Kb(e._zod,`values`,()=>t.innerType._zod.values),Kb(e._zod,`pattern`,()=>t.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),FC=X(`$ZodNullable`,(e,t)=>{LS.init(e,t),Kb(e._zod,`optin`,()=>t.innerType._zod.optin),Kb(e._zod,`optout`,()=>t.innerType._zod.optout),Kb(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${Ub(e.source)}|null)$`):void 0}),Kb(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),IC=X(`$ZodDefault`,(e,t)=>{LS.init(e,t),e._zod.optin=`optional`,Kb(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>LC(e,t)):LC(r,t)}});function LC(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var RC=X(`$ZodPrefault`,(e,t)=>{LS.init(e,t),e._zod.optin=`optional`,Kb(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),zC=X(`$ZodNonOptional`,(e,t)=>{LS.init(e,t),Kb(e._zod,`values`,()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>BC(t,e)):BC(i,e)}});function BC(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}var VC=X(`$ZodCatch`,(e,t)=>{LS.init(e,t),e._zod.optin=`optional`,Kb(e._zod,`optout`,()=>t.innerType._zod.optout),Kb(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(r=>(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>yx(e,n,Rb()))},input:e.value}),e.issues=[],e.fallback=!0),e)):(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>yx(e,n,Rb()))},input:e.value}),e.issues=[],e.fallback=!0),e)}}),HC=X(`$ZodPipe`,(e,t)=>{LS.init(e,t),Kb(e._zod,`values`,()=>t.in._zod.values),Kb(e._zod,`optin`,()=>t.in._zod.optin),Kb(e._zod,`optout`,()=>t.out._zod.optout),Kb(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>UC(e,t.in,n)):UC(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>UC(e,t.out,n)):UC(r,t.out,n)}});function UC(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues,fallback:e.fallback},n)}var WC=X(`$ZodReadonly`,(e,t)=>{LS.init(e,t),Kb(e._zod,`propValues`,()=>t.innerType._zod.propValues),Kb(e._zod,`values`,()=>t.innerType._zod.values),Kb(e._zod,`optin`,()=>t.innerType?._zod?.optin),Kb(e._zod,`optout`,()=>t.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(GC):GC(r)}});function GC(e){return e.value=Object.freeze(e.value),e}var KC=X(`$ZodCustom`,(e,t)=>{vS.init(e,t),LS.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>qC(t,n,r,e));qC(i,n,r,e)}});function qC(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(xx(e))}}var JC,YC=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function XC(){return new YC}(JC=globalThis).__zod_globalRegistry??(JC.__zod_globalRegistry=XC());var ZC=globalThis.__zod_globalRegistry;function QC(e,t){return new e({type:`string`,...ax(t)})}function $C(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...ax(t)})}function ew(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...ax(t)})}function tw(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...ax(t)})}function nw(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...ax(t)})}function rw(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...ax(t)})}function iw(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...ax(t)})}function aw(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...ax(t)})}function ow(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...ax(t)})}function sw(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...ax(t)})}function cw(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...ax(t)})}function lw(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...ax(t)})}function uw(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...ax(t)})}function dw(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...ax(t)})}function fw(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...ax(t)})}function pw(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...ax(t)})}function mw(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...ax(t)})}function hw(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...ax(t)})}function gw(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...ax(t)})}function _w(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...ax(t)})}function vw(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...ax(t)})}function yw(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...ax(t)})}function bw(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...ax(t)})}function xw(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...ax(t)})}function Sw(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...ax(t)})}function Cw(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...ax(t)})}function ww(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...ax(t)})}function Tw(e,t){return new e({type:`number`,coerce:!0,checks:[],...ax(t)})}function Ew(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...ax(t)})}function Dw(e,t){return new e({type:`boolean`,...ax(t)})}function Ow(e){return new e({type:`unknown`})}function kw(e,t){return new e({type:`never`,...ax(t)})}function Aw(e,t){return new bS({check:`less_than`,...ax(t),value:e,inclusive:!1})}function jw(e,t){return new bS({check:`less_than`,...ax(t),value:e,inclusive:!0})}function Mw(e,t){return new xS({check:`greater_than`,...ax(t),value:e,inclusive:!1})}function Nw(e,t){return new xS({check:`greater_than`,...ax(t),value:e,inclusive:!0})}function Pw(e,t){return new SS({check:`multiple_of`,...ax(t),value:e})}function Fw(e,t){return new wS({check:`max_length`,...ax(t),maximum:e})}function Iw(e,t){return new TS({check:`min_length`,...ax(t),minimum:e})}function Lw(e,t){return new ES({check:`length_equals`,...ax(t),length:e})}function Rw(e,t){return new OS({check:`string_format`,format:`regex`,...ax(t),pattern:e})}function zw(e){return new kS({check:`string_format`,format:`lowercase`,...ax(e)})}function Bw(e){return new AS({check:`string_format`,format:`uppercase`,...ax(e)})}function Vw(e,t){return new jS({check:`string_format`,format:`includes`,...ax(t),includes:e})}function Hw(e,t){return new MS({check:`string_format`,format:`starts_with`,...ax(t),prefix:e})}function Uw(e,t){return new NS({check:`string_format`,format:`ends_with`,...ax(t),suffix:e})}function Ww(e){return new PS({check:`overwrite`,tx:e})}function Gw(e){return Ww(t=>t.normalize(e))}function Kw(){return Ww(e=>e.trim())}function qw(){return Ww(e=>e.toLowerCase())}function Jw(){return Ww(e=>e.toUpperCase())}function Yw(){return Ww(e=>Xb(e))}function Xw(e,t,n){return new e({type:`array`,element:t,...ax(n)})}function Zw(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...ax(n)})}function Qw(e,t){let n=$w(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(xx(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,r.input??=t.value,r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(xx(r))}},e(t.value,t)),t);return n}function $w(e,t){let n=new vS({check:`custom`,...ax(t)});return n._zod.check=e,n}function eT(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??ZC,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,external:e?.external??void 0}}function tT(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o);let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,tT(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&Object.assign(o.schema,c),t.io===`input`&&iT(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function nT(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${a}`}}if(t[1]===n)return{ref:`#`};let i=`#/${r}/`,a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+a}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/ + +Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}}function rT(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Object.assign(i,s),Object.assign(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};for(let t of[...e.seen.entries()].reverse())r(t[0]);let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Object.assign(i,n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,o[e.defId]=e.def)}e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:oT(t,`input`,e.processors),output:oT(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function iT(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return iT(r.element,n);if(r.type===`set`)return iT(r.valueType,n);if(r.type===`lazy`)return iT(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`)return iT(r.innerType,n);if(r.type===`intersection`)return iT(r.left,n)||iT(r.right,n);if(r.type===`record`||r.type===`map`)return iT(r.keyType,n)||iT(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:iT(r.in,n)||iT(r.out,n);if(r.type===`object`){for(let e in r.shape)if(iT(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(iT(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(iT(e,n))return!0;return!!(r.rest&&iT(r.rest,n))}return!1}var aT=(e,t={})=>n=>{let r=eT({...n,processors:t});return tT(e,r),nT(r,e),rT(r,e)},oT=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=eT({...i??{},target:a,io:t,processors:n});return tT(e,o),nT(o,e),rT(o,e)},sT={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},cT=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=sT[s]??s,i.format===``&&delete i.format,s===`time`&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},lT=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=e._zod.bag;i.type=typeof s==`string`&&s.includes(`int`)?`integer`:`number`;let d=typeof u==`number`&&u>=(a??-1/0),f=typeof l==`number`&&l<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;d?p?(i.minimum=u,i.exclusiveMinimum=!0):i.exclusiveMinimum=u:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l:typeof o==`number`&&(i.maximum=o),typeof c==`number`&&(i.multipleOf=c)},uT=(e,t,n,r)=>{n.type=`boolean`},dT=(e,t,n,r)=>{n.not={}},fT=(e,t,n,r)=>{let i=e._zod.def,a=zb(i.entries);a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},pT=(e,t,n,r)=>{let i=e._zod.def,a=[];for(let e of i.values)if(e===void 0){if(t.unrepresentable===`throw`)throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof e==`bigint`){if(t.unrepresentable===`throw`)throw Error(`BigInt literals cannot be represented in JSON Schema`);a.push(Number(e))}else a.push(e);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},mT=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Custom types cannot be represented in JSON Schema`)},hT=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Transforms cannot be represented in JSON Schema`)},gT=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=tT(a.element,t,{...r,path:[...r.path,`items`]})},_T=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`,i.properties={};let o=a.shape;for(let e in o)i.properties[e]=tT(o[e],t,{...r,path:[...r.path,`properties`,e]});let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e]._zod;return t.io===`input`?n.optin===void 0:n.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=tT(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},vT=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>tT(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},yT=(e,t,n,r)=>{let i=e._zod.def,a=tT(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=tT(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1;n.allOf=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]]},bT=(e,t,n,r)=>{let i=e._zod.def,a=tT(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},xT=(e,t,n,r)=>{let i=e._zod.def;tT(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},ST=(e,t,n,r)=>{let i=e._zod.def;tT(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.default=JSON.parse(JSON.stringify(i.defaultValue))},CT=(e,t,n,r)=>{let i=e._zod.def;tT(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,t.io===`input`&&(n._prefault=JSON.parse(JSON.stringify(i.defaultValue)))},wT=(e,t,n,r)=>{let i=e._zod.def;tT(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{throw Error(`Dynamic catch values are not supported in JSON Schema`)}n.default=o},TT=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;tT(o,t,r);let s=t.seen.get(e);s.ref=o},ET=(e,t,n,r)=>{let i=e._zod.def;tT(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},DT=(e,t,n,r)=>{let i=e._zod.def;tT(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},OT=X(`ZodISODateTime`,(e,t)=>{ZS.init(e,t),tE.init(e,t)});function kT(e){return xw(OT,e)}var AT=X(`ZodISODate`,(e,t)=>{QS.init(e,t),tE.init(e,t)});function jT(e){return Sw(AT,e)}var MT=X(`ZodISOTime`,(e,t)=>{$S.init(e,t),tE.init(e,t)});function NT(e){return Cw(MT,e)}var PT=X(`ZodISODuration`,(e,t)=>{eC.init(e,t),tE.init(e,t)});function FT(e){return ww(PT,e)}var IT=X(`ZodError`,(e,t)=>{Cx.init(e,t),e.name=`ZodError`,Object.defineProperties(e,{format:{value:t=>Ex(e,t)},flatten:{value:t=>Tx(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,Bb,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,Bb,2)}},isEmpty:{get(){return e.issues.length===0}}})},{Parent:Error}),LT=Dx(IT),RT=Ox(IT),zT=kx(IT),BT=jx(IT),VT=Nx(IT),HT=Px(IT),UT=Fx(IT),WT=Ix(IT),GT=Lx(IT),KT=Rx(IT),qT=zx(IT),JT=Bx(IT),YT=new WeakMap;function XT(e,t,n){let r=Object.getPrototypeOf(e),i=YT.get(r);if(i||(i=new Set,YT.set(r,i)),!i.has(t)){i.add(t);for(let e in n){let t=n[e];Object.defineProperty(r,e,{configurable:!0,enumerable:!1,get(){let n=t.bind(this);return Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:n}),n},set(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:t})}})}}}var ZT=X(`ZodType`,(e,t)=>(LS.init(e,t),Object.assign(e[`~standard`],{jsonSchema:{input:oT(e,`input`),output:oT(e,`output`)}}),e.toJSONSchema=aT(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.parse=(t,n)=>LT(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>zT(e,t,n),e.parseAsync=async(t,n)=>RT(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>BT(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>VT(e,t,n),e.decode=(t,n)=>HT(e,t,n),e.encodeAsync=async(t,n)=>UT(e,t,n),e.decodeAsync=async(t,n)=>WT(e,t,n),e.safeEncode=(t,n)=>GT(e,t,n),e.safeDecode=(t,n)=>KT(e,t,n),e.safeEncodeAsync=async(t,n)=>qT(e,t,n),e.safeDecodeAsync=async(t,n)=>JT(e,t,n),XT(e,`ZodType`,{check(...e){let t=this.def;return this.clone(Jb(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return ix(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(uD(e,t))},superRefine(e,t){return this.check(dD(e,t))},overwrite(e){return this.check(Ww(e))},optional(){return KE(this)},exactOptional(){return JE(this)},nullable(){return XE(this)},nullish(){return KE(XE(this))},nonoptional(e){return nD(this,e)},array(){return ME(this)},or(e){return IE([this,e])},and(e){return RE(this,e)},transform(e){return oD(this,WE(e))},default(e){return QE(this,e)},prefault(e){return eD(this,e)},catch(e){return iD(this,e)},pipe(e){return oD(this,e)},readonly(){return cD(this)},describe(e){let t=this.clone();return ZC.add(t,{description:e}),t},meta(...e){if(e.length===0)return ZC.get(this);let t=this.clone();return ZC.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e){return e(this)}}),Object.defineProperty(e,"description",{get(){return ZC.get(e)?.description},configurable:!0}),e)),QT=X(`_ZodString`,(e,t)=>{RS.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>cT(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,XT(e,`_ZodString`,{regex(...e){return this.check(Rw(...e))},includes(...e){return this.check(Vw(...e))},startsWith(...e){return this.check(Hw(...e))},endsWith(...e){return this.check(Uw(...e))},min(...e){return this.check(Iw(...e))},max(...e){return this.check(Fw(...e))},length(...e){return this.check(Lw(...e))},nonempty(...e){return this.check(Iw(1,...e))},lowercase(e){return this.check(zw(e))},uppercase(e){return this.check(Bw(e))},trim(){return this.check(Kw())},normalize(...e){return this.check(Gw(...e))},toLowerCase(){return this.check(qw())},toUpperCase(){return this.check(Jw())},slugify(){return this.check(Yw())}})}),$T=X(`ZodString`,(e,t)=>{RS.init(e,t),QT.init(e,t),e.email=t=>e.check($C(nE,t)),e.url=t=>e.check(aw(aE,t)),e.jwt=t=>e.check(bw(xE,t)),e.emoji=t=>e.check(ow(sE,t)),e.guid=t=>e.check(ew(rE,t)),e.uuid=t=>e.check(tw(iE,t)),e.uuidv4=t=>e.check(nw(iE,t)),e.uuidv6=t=>e.check(rw(iE,t)),e.uuidv7=t=>e.check(iw(iE,t)),e.nanoid=t=>e.check(sw(cE,t)),e.guid=t=>e.check(ew(rE,t)),e.cuid=t=>e.check(cw(lE,t)),e.cuid2=t=>e.check(lw(uE,t)),e.ulid=t=>e.check(uw(dE,t)),e.base64=t=>e.check(_w(vE,t)),e.base64url=t=>e.check(vw(yE,t)),e.xid=t=>e.check(dw(fE,t)),e.ksuid=t=>e.check(fw(pE,t)),e.ipv4=t=>e.check(pw(mE,t)),e.ipv6=t=>e.check(mw(hE,t)),e.cidrv4=t=>e.check(hw(gE,t)),e.cidrv6=t=>e.check(gw(_E,t)),e.e164=t=>e.check(yw(bE,t)),e.datetime=t=>e.check(kT(t)),e.date=t=>e.check(jT(t)),e.time=t=>e.check(NT(t)),e.duration=t=>e.check(FT(t))});function eE(e){return QC($T,e)}var tE=X(`ZodStringFormat`,(e,t)=>{zS.init(e,t),QT.init(e,t)}),nE=X(`ZodEmail`,(e,t)=>{HS.init(e,t),tE.init(e,t)}),rE=X(`ZodGUID`,(e,t)=>{BS.init(e,t),tE.init(e,t)}),iE=X(`ZodUUID`,(e,t)=>{VS.init(e,t),tE.init(e,t)}),aE=X(`ZodURL`,(e,t)=>{US.init(e,t),tE.init(e,t)});function oE(e){return aw(aE,e)}var sE=X(`ZodEmoji`,(e,t)=>{WS.init(e,t),tE.init(e,t)}),cE=X(`ZodNanoID`,(e,t)=>{GS.init(e,t),tE.init(e,t)}),lE=X(`ZodCUID`,(e,t)=>{KS.init(e,t),tE.init(e,t)}),uE=X(`ZodCUID2`,(e,t)=>{qS.init(e,t),tE.init(e,t)}),dE=X(`ZodULID`,(e,t)=>{JS.init(e,t),tE.init(e,t)}),fE=X(`ZodXID`,(e,t)=>{YS.init(e,t),tE.init(e,t)}),pE=X(`ZodKSUID`,(e,t)=>{XS.init(e,t),tE.init(e,t)}),mE=X(`ZodIPv4`,(e,t)=>{tC.init(e,t),tE.init(e,t)}),hE=X(`ZodIPv6`,(e,t)=>{nC.init(e,t),tE.init(e,t)}),gE=X(`ZodCIDRv4`,(e,t)=>{rC.init(e,t),tE.init(e,t)}),_E=X(`ZodCIDRv6`,(e,t)=>{iC.init(e,t),tE.init(e,t)}),vE=X(`ZodBase64`,(e,t)=>{oC.init(e,t),tE.init(e,t)}),yE=X(`ZodBase64URL`,(e,t)=>{cC.init(e,t),tE.init(e,t)}),bE=X(`ZodE164`,(e,t)=>{lC.init(e,t),tE.init(e,t)}),xE=X(`ZodJWT`,(e,t)=>{dC.init(e,t),tE.init(e,t)}),SE=X(`ZodNumber`,(e,t)=>{fC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>lT(e,t,n,r),XT(e,`ZodNumber`,{gt(e,t){return this.check(Mw(e,t))},gte(e,t){return this.check(Nw(e,t))},min(e,t){return this.check(Nw(e,t))},lt(e,t){return this.check(Aw(e,t))},lte(e,t){return this.check(jw(e,t))},max(e,t){return this.check(jw(e,t))},int(e){return this.check(wE(e))},safe(e){return this.check(wE(e))},positive(e){return this.check(Mw(0,e))},nonnegative(e){return this.check(Nw(0,e))},negative(e){return this.check(Aw(0,e))},nonpositive(e){return this.check(jw(0,e))},multipleOf(e,t){return this.check(Pw(e,t))},step(e,t){return this.check(Pw(e,t))},finite(){return this}});let n=e._zod.bag;e.minValue=Math.max(n.minimum??-1/0,n.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(n.maximum??1/0,n.exclusiveMaximum??1/0)??null,e.isInt=(n.format??``).includes(`int`)||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null}),CE=X(`ZodNumberFormat`,(e,t)=>{pC.init(e,t),SE.init(e,t)});function wE(e){return Ew(CE,e)}var TE=X(`ZodBoolean`,(e,t)=>{mC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>uT(e,t,n,r)});function EE(e){return Dw(TE,e)}var DE=X(`ZodUnknown`,(e,t)=>{hC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function OE(){return Ow(DE)}var kE=X(`ZodNever`,(e,t)=>{gC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>dT(e,t,n,r)});function AE(e){return kw(kE,e)}var jE=X(`ZodArray`,(e,t)=>{vC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>gT(e,t,n,r),e.element=t.element,XT(e,`ZodArray`,{min(e,t){return this.check(Iw(e,t))},nonempty(e){return this.check(Iw(1,e))},max(e,t){return this.check(Fw(e,t))},length(e,t){return this.check(Lw(e,t))},unwrap(){return this.element}})});function ME(e,t){return Xw(jE,e,t)}var NE=X(`ZodObject`,(e,t)=>{CC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>_T(e,t,n,r),Kb(e,`shape`,()=>t.shape),XT(e,`ZodObject`,{keyof(){return BE(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:OE()})},loose(){return this.clone({...this._zod.def,catchall:OE()})},strict(){return this.clone({...this._zod.def,catchall:AE()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return ux(this,e)},safeExtend(e){return dx(this,e)},merge(e){return fx(this,e)},pick(e){return cx(this,e)},omit(e){return lx(this,e)},partial(...e){return px(GE,this,e[0])},required(...e){return mx(tD,this,e[0])}})});function PE(e,t){return new NE({type:`object`,shape:e??{},...ax(t)})}var FE=X(`ZodUnion`,(e,t)=>{TC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>vT(e,t,n,r),e.options=t.options});function IE(e,t){return new FE({type:`union`,options:e,...ax(t)})}var LE=X(`ZodIntersection`,(e,t)=>{EC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>yT(e,t,n,r)});function RE(e,t){return new LE({type:`intersection`,left:e,right:t})}var zE=X(`ZodEnum`,(e,t)=>{kC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>fT(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new zE({...t,checks:[],...ax(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new zE({...t,checks:[],...ax(r),entries:i})}});function BE(e,t){return new zE({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...ax(t)})}var VE=X(`ZodLiteral`,(e,t)=>{AC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>pT(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function HE(e,t){return new VE({type:`literal`,values:Array.isArray(e)?e:[e],...ax(t)})}var UE=X(`ZodTransform`,(e,t)=>{jC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>hT(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Ib(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(xx(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,t.input??=n.value,t.inst??=e,n.issues.push(xx(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n.fallback=!0,n)):(n.value=i,n.fallback=!0,n)}});function WE(e){return new UE({type:`transform`,transform:e})}var GE=X(`ZodOptional`,(e,t)=>{NC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>DT(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function KE(e){return new GE({type:`optional`,innerType:e})}var qE=X(`ZodExactOptional`,(e,t)=>{PC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>DT(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function JE(e){return new qE({type:`optional`,innerType:e})}var YE=X(`ZodNullable`,(e,t)=>{FC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>bT(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function XE(e){return new YE({type:`nullable`,innerType:e})}var ZE=X(`ZodDefault`,(e,t)=>{IC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ST(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function QE(e,t){return new ZE({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():tx(t)}})}var $E=X(`ZodPrefault`,(e,t)=>{RC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>CT(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function eD(e,t){return new $E({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():tx(t)}})}var tD=X(`ZodNonOptional`,(e,t)=>{zC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xT(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function nD(e,t){return new tD({type:`nonoptional`,innerType:e,...ax(t)})}var rD=X(`ZodCatch`,(e,t)=>{VC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>wT(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function iD(e,t){return new rD({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:()=>t})}var aD=X(`ZodPipe`,(e,t)=>{HC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>TT(e,t,n,r),e.in=t.in,e.out=t.out});function oD(e,t){return new aD({type:`pipe`,in:e,out:t})}var sD=X(`ZodReadonly`,(e,t)=>{WC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ET(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function cD(e){return new sD({type:`readonly`,innerType:e})}var lD=X(`ZodCustom`,(e,t)=>{KC.init(e,t),ZT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>mT(e,t,n,r)});function uD(e,t={}){return Zw(lD,e,t)}function dD(e,t){return Qw(e,t)}function fD(e){return Tw(SE,e)}var pD=eE().trim().min(1,`请填写 Agent 名称`).max(128,`Agent 名称不能超过 128 个字符`),mD=eE().trim().min(3,`本地标识至少填写 3 个字符`).max(63,`本地标识不能超过 63 个字符`).regex(/^[a-z][a-z0-9-]*$/,`本地标识只能包含小写字母、数字和连字符`),hD=IE([HE(``),mD]),gD=BE([`codex`,`adk`,`langgraph`,`plugin`]),_D=BE([`codex`,`adk`,`langgraph`]),vD=eE().trim().min(4,`系统提示词至少填写 4 个字符`).max(32768,`系统提示词不能超过 32768 个字符`),yD=eE().trim().min(4,`Agent 目标与要求至少填写 4 个字符`).max(32768,`Agent 目标与要求不能超过 32768 个字符`),bD=eE().trim().max(1024,`描述不能超过 1024 个字符`).default(``),xD=PE({name:pD,slug:mD,runtimeType:gD,template:BE([`blank`,`research`]).default(`blank`),prompt:yD,description:bD,audience:eE().trim().max(256,`目标读者不能超过 256 个字符`).default(``),language:BE([`zh-CN`,`en-US`]).default(`zh-CN`),depth:BE([`focused`,`standard`,`deep`]).default(`deep`),format:BE([`report`,`brief`,`evidence-table`]).default(`report`),systemPrompt:eE().trim().min(4,`最终系统规则至少填写 4 个字符`).max(32768,`最终系统规则不能超过 32768 个字符`).default(``),taskPrompt:eE().max(32768,`任务契约不能超过 32768 个字符`).default(``),buildAfterCreate:EE().default(!0)}).superRefine((e,t)=>{e.template===`research`&&!e.audience&&t.addIssue({code:`custom`,path:[`audience`],message:`请填写目标读者`})}),SD=PE({name:pD,slug:mD,runtimeType:gD,prompt:vD,description:bD}),CD=PE({name:pD,slug:mD,runtimeType:_D,prompt:vD,description:bD.optional(),modelProfileId:eE().trim().min(3,`请选择用于构建的模型`).max(256).optional()}),wD=PE({name:pD,slug:hD.default(``)}),TD=PE({name:pD,slug:hD.default(``),path:eE().trim().min(1,`请选择项目目录`).max(4096,`项目路径不能超过 4096 个字符`)}),ED=/(?:secret|password|token|api[_-]?key)/i,DD=[`secret://`,`env://`,`credential://`,`vault://`];function OD(e,t=[]){let n=e.trim();if(!n)return{};let r;try{r=JSON.parse(n)}catch{throw Error(`Provider 配置必须是合法的 JSON 对象`)}if(!r||typeof r!=`object`||Array.isArray(r))throw Error(`Provider 配置必须是 JSON 对象`);let i=new Set(t.map(e=>e.replace(/^providerConfig\./,``).replace(/^\.+|\.+$/g,``)).filter(Boolean));return kD(r,`providerConfig`,[],i),r}function kD(e,t,n,r){if(Array.isArray(e)){e.forEach((e,i)=>kD(e,`${t}[${i}]`,[...n,String(i)],r));return}!e||typeof e!=`object`||Object.entries(e).forEach(([e,i])=>{let a=`${t}.${e}`,o=[...n,e],s=o.join(`.`),c=r.has(s)||[...r].some(t=>t.split(`.`).at(-1)===e);if((ED.test(e)||c)&&i!==null&&(typeof i!=`string`||!DD.some(e=>i.startsWith(e))))throw Error(`${a} 只能填写 Secret 引用,不能填写明文`);kD(i,a,o,r)})}function AD(e){let t=e.selectable?`已启用`:e.reason?.message||`不可用`;return`${e.pluginId}@${e.resolvedVersion} · ${t}`}var jD=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`]);function MD(e){return e?.contract?.model||e?.name||``}function ND(e){return e===`adk`?`ADKRuntimeAdapter`:e===`langgraph`?`LangGraphRuntimeAdapter`:e===`plugin`?`External AgentProvider`:`CodexRuntimeAdapter`}function PD(e){return e===`codex`?{type:`codex`}:{type:e,projectPath:`.`,entryPoint:e===`adk`?`agent.py`:`graph.py`,agentVariable:e===`adk`?`root_agent`:`app`}}function FD(e,t,n){let r=new Set(e.map(e=>e.resourceId));return[...e,...t.filter(e=>!r.has(e)).map(e=>({resourceId:e,kind:n,name:e,displayName:e,version:`历史绑定 · 未进入资源目录`,status:`unresolved`,...n===`model`?{contract:{model:e}}:{}}))]}function ID(e,t){let n=new Map((e||[]).map(e=>[e.resourceId,e]));return t.map(e=>n.get(e)||{resourceId:e,enabled:!0})}function LD(e){return e.split(/\r?\n/).map(e=>e.trim()).filter(Boolean)}async function RD(e){for(let t=0;t<1200;t+=1){let t=await g(`/api/v1/operations/${encodeURIComponent(e)}`),n=await t.json().catch(()=>null);if(!t.ok)throw Error(n?.error?.message||`构建状态获取失败(${t.status})`);if(jD.has(n.status)){if(n.status!==`SUCCEEDED`)throw Error(n.error?.message||`构建未完成`);return n}await new Promise(e=>window.setTimeout(e,200))}throw Error(`构建等待超时`)}function zD({agentId:e,catalog:t,providers:n=[],activeSection:r=1,onSaved:i,onAppearanceSaved:a}){let[o,c]=(0,s.useState)(null),[l,u]=(0,s.useState)(``),d=y_({resolver:k_(SD),defaultValues:{name:``,slug:e,runtimeType:`codex`,prompt:``,description:``}}),f=d.reset,{name:p,slug:m,runtimeType:h,prompt:_}=d.watch(),[v,y]=(0,s.useState)(``),[b,x]=(0,s.useState)([]),[S,C]=(0,s.useState)([]),[w,T]=(0,s.useState)([]),[E,D]=(0,s.useState)([]),[O,k]=(0,s.useState)(r),[A,j]=(0,s.useState)(`.`),[M,N]=(0,s.useState)(``),[P,F]=(0,s.useState)(`root_agent`),[I,L]=(0,s.useState)(``),[R,z]=(0,s.useState)(`{}`),[B,H]=(0,s.useState)(!1),[ee,te]=(0,s.useState)(`direct`),[ne,re]=(0,s.useState)(12),[ie,ae]=(0,s.useState)(120),[oe,se]=(0,s.useState)(`auto`),[ce,le]=(0,s.useState)(`shadow`),[ue,de]=(0,s.useState)(!1),[W,pe]=(0,s.useState)(``),[me,he]=(0,s.useState)(``),[ge,_e]=(0,s.useState)(``),[ve,ye]=(0,s.useState)(``),[be,xe]=(0,s.useState)(!1),[Se,Ce]=(0,s.useState)(!1),[we,Te]=(0,s.useState)(`local-default`),[Ee,De]=(0,s.useState)(!0),[Oe,ke]=(0,s.useState)(1600),[Ae,je]=(0,s.useState)(8),[Me,Ne]=(0,s.useState)(.45),[Pe,Fe]=(0,s.useState)(`candidate`),[Ie,Le]=(0,s.useState)(!0),[Re,ze]=(0,s.useState)(`shadow`),[Be,Ve]=(0,s.useState)(!1),[He,We]=(0,s.useState)(!0),[Ge,Ke]=(0,s.useState)(!1),[qe,Je]=(0,s.useState)(``),Ye=(0,s.useMemo)(()=>t.filter(e=>e.kind===`model`&&[`ready`,`missing-secret`].includes(e.status)),[t]),Xe=(0,s.useMemo)(()=>t.filter(e=>e.kind===`skill`&&e.status===`ready`),[t]),Ze=(0,s.useMemo)(()=>t.filter(e=>e.kind===`mcp`),[t]),Qe=(0,s.useMemo)(()=>t.filter(e=>e.kind===`tool`&&e.status===`ready`&&[`builtin`,`python`].includes(e.contract?.executor||`builtin`)),[t]),$e=(0,s.useMemo)(()=>FD(Ye,b,`model`),[Ye,b]),et=(0,s.useMemo)(()=>FD(Xe,S,`skill`),[Xe,S]),tt=(0,s.useMemo)(()=>FD(Ze,w,`mcp`),[Ze,w]),nt=(0,s.useMemo)(()=>FD(Qe,E,`tool`),[Qe,E]),rt=b.map(e=>$e.find(t=>t.resourceId===e)).filter(Boolean),it=(0,s.useMemo)(()=>!I||n.some(e=>e.providerRef===I)?n:[{providerRef:I,pluginId:I,resolvedVersion:`历史版本`,displayName:I,state:`disabled`,compatible:!1,selectable:!1,reason:{code:`AGENT_PROVIDER_NOT_INSTALLED`,message:`该历史 Provider 当前未安装`},permissions:[],isolation:`process`,configSchemaDeclared:!1,secretFields:[]},...n],[I,n]),at=it.find(e=>e.providerRef===I),ot=it.map(e=>({value:e.providerRef,label:e.displayName,description:AD(e),disabled:!e.selectable}));(0,s.useEffect)(()=>{let t=!0;return c(null),u(``),g(`/api/v1/agents/${encodeURIComponent(e)}`).then(async r=>{let i=await r.json().catch(()=>null);if(!r.ok)throw Error(i?.error?.message||`Agent 加载失败(${r.status})`);if(!t)return;let a=i.draft,o=a.spec?.bindings||{},s=o.modelProfileIds?.length?o.modelProfileIds:o.modelProfileId?[o.modelProfileId]:[];c(i),f({name:a.metadata.name||``,slug:a.metadata.id||e,runtimeType:a.spec?.runtime?.type||a.metadata.labels?.[`agentkit.ksyun.com/framework`]||`codex`,prompt:a.spec?.instructions?.system||``,description:a.spec?.description||``}),x(s),y(o.modelProfileId||s[0]||``),C((o.skills||[]).map(e=>e.resourceId)),T((o.mcpServers||[]).map(e=>e.resourceId)),D((o.tools||[]).map(e=>e.resourceId)),j(String(a.spec?.runtime?.projectPath||`.`)),N(String(a.spec?.runtime?.entryPoint||(a.spec?.runtime?.type===`langgraph`?`graph.py`:`agent.py`))),F(String(a.spec?.runtime?.agentVariable||(a.spec?.runtime?.type===`langgraph`?`app`:`root_agent`))),L(String(a.spec?.runtime?.providerRef||``)),z(JSON.stringify(a.spec?.runtime?.providerConfig||{},null,2));let l=n.find(e=>e.providerRef===a.spec?.runtime?.providerRef),u=new Set(a.spec?.security?.allowedPermissions||[]);H(!!(l&&l.permissions.every(e=>u.has(e)))),te(String(a.spec?.execution?.strategy||`direct`)),re(Number(a.spec?.execution?.maxSteps??12)),ae(Number(a.spec?.execution?.timeoutSeconds??120)),se(String(a.spec?.context?.ownership||`auto`)),le(String(a.spec?.context?.rollout?.contextEngine||`shadow`)),de(!!a.spec?.soul),pe(String(a.spec?.soul?.identity||``)),he((a.spec?.soul?.principles||[]).join(` +`)),_e((a.spec?.soul?.boundaries||[]).join(` +`)),ye(String(a.spec?.soul?.tone||``)),xe(!1),Ce(!!a.spec?.memory?.enabled),Te(String(a.spec?.memory?.providerRef||`local-default`)),De(a.spec?.memory?.recall?.enabled??!0),ke(Number(a.spec?.memory?.recall?.maxTokens??1600)),je(Number(a.spec?.memory?.recall?.topK??8)),Ne(Number(a.spec?.memory?.recall?.minScore??.45)),Fe(String(a.spec?.memory?.write?.mode||`candidate`)),Le(a.spec?.memory?.write?.flushBeforeCompaction??!0),ze(String(a.spec?.context?.rollout?.memoryWrite||`shadow`)),Ve(!1)}).catch(e=>{t&&u(e.message||`Agent 加载失败`)}),()=>{t=!1}},[e,f]),(0,s.useEffect)(()=>k(r),[r]),(0,s.useEffect)(()=>{if(!o||b.length||!Ye.length)return;let e=o.draft.metadata.labels?.[`agentkit.ksyun.com/model`],t=Ye.find(t=>MD(t)===e)?.resourceId;t&&(x([t]),y(t))},[o,Ye,b.length]);function st(e){x(e),e.includes(v)||y(e[0]||``)}let ct=Ye.find(e=>e.resourceId===v)||rt[0],lt=h===`codex`?[{value:`auto`,label:`自动(推荐)`,description:`按 Codex Runtime 能力选择安全投影方式`},{value:`native`,label:`原生 Runtime 管理`,description:`由 Codex 管理最终模型上下文`}]:h===`langgraph`?[{value:`auto`,label:`自动(推荐)`,description:`按 Runtime 能力选择安全模式`},{value:`framework`,label:`框架管理`,description:`保留 LangGraph 原有上下文行为`},{value:`ksadk`,label:`KsADK 管理`,description:`统一规划、压缩和投影上下文`}]:[{value:`auto`,label:`自动(推荐)`,description:`按 Runtime 能力选择安全模式`},{value:`framework`,label:`框架管理`,description:`保留 ADK 原有上下文行为`}],ut=o?.draft.metadata.labels?.[`agentkit.ksyun.com/model`]||`glm-5.1`,dt=h===`codex`&&b.length===0&&!!ut,ft=o?.draft.metadata.labels?.[`agentkit.ksyun.com/artifact-type`]===`ManagedRuntime`||h===`codex`,pt=rt.map(MD).filter(Boolean),mt=ue?[` soul:`,` schemaVersion: agentkit.soul/v1`,` identity: |-`,...W.split(` +`).map(e=>` ${e}`),...LD(me).length?[` principles:`,...LD(me).map(e=>` - ${e}`)]:[],...LD(ge).length?[` boundaries:`,...LD(ge).map(e=>` - ${e}`)]:[],...ve.trim()?[` tone: |-`,...ve.split(` +`).map(e=>` ${e}`)]:[]]:[],ht=ue?[`soul:`,` schemaVersion: agentkit.soul/v1`,` identity: |-`,...W.split(` +`).map(e=>` ${e}`),...LD(me).length?[` principles:`,...LD(me).map(e=>` - ${e}`)]:[],...LD(ge).length?[` boundaries:`,...LD(ge).map(e=>` - ${e}`)]:[],...ve.trim()?[` tone: |-`,...ve.split(` +`).map(e=>` ${e}`)]:[],`soul_source: AgentSpec.soul`,`soul_digest: ${be?`<保存后重新计算>`:o?.soulProjection?.digest||`<保存后计算>`}`]:[],gt=o?.soulProjection?.compileTarget||(h===`codex`?`managed-runtime.base_instructions`:h===`plugin`?`instructions/soul.md`:`resolved-agent-spec.instructions.system`),_t=h===`codex`?[`name: ${m}`,`version: 1.0.0`,`framework: codex`,`artifact_type: ManagedRuntime`,`runtime:`,` name: codex`,` version: 0.144.4`,`model: ${MD(ct)||ut}`,...pt.length>1?[`models:`,...pt.map(e=>` - ${e}`)]:[],...ht,`prompt: |-`,..._.split(` +`).map(e=>` ${e}`)].join(` +`):h===`plugin`?[`apiVersion: agentkit.ksyun.com/v1alpha1`,`kind: Agent`,`metadata:`,` id: ${m}`,`spec:`,` runtime:`,` type: plugin`,` providerRef: ${I||`<未选择>`}`,` providerConfig: # Secret 仅保存引用`,...R.split(` +`).map(e=>` ${e}`),...mt,` instructions:`,` system: |-`,..._.split(` +`).map(e=>` ${e}`)].join(` +`):[`apiVersion: agentkit.ksyun.com/v1alpha1`,`kind: Agent`,`metadata:`,` id: ${m}`,`spec:`,` runtime:`,` type: ${h}`,` projectPath: ${A||`.`}`,` entryPoint: ${M||(h===`adk`?`agent.py`:`graph.py`)}`,` agentVariable: ${P||(h===`adk`?`root_agent`:`app`)}`,...mt,` instructions:`,` system: |-`,..._.split(` +`).map(e=>` ${e}`)].join(` +`);async function vt(t){if(!o||Ge)return;let n=v||b[0]||``;if(!n&&!dt){Je(`请至少绑定一个模型并设置为默认模型`);return}if(ue&&!W.trim()){Je(`启用 Soul 后必须填写身份定义`),k(1);return}if([`adk`,`langgraph`].includes(t.runtimeType)&&(!A.trim()||!M.trim()||!P.trim())){Je(`请完整填写项目相对路径、入口文件和 Agent 变量`);return}let r={};if(t.runtimeType===`plugin`){if(!at?.selectable){Je(at?.reason?.message||`所选 AgentProvider 当前不可用`);return}try{r=OD(R,at.secretFields)}catch(e){Je(e.message||`Provider 配置无效`);return}if(at.permissions.length&&!B){Je(`请先确认 AgentProvider 请求的权限`);return}}if(!Number.isInteger(ne)||ne<1||ne>100){Je(`最大步骤数必须是 1 到 100 的整数`);return}if(!Number.isInteger(ie)||ie<1||ie>3600){Je(`超时秒数必须是 1 到 3600 的整数`);return}if(Be&&(!we.trim()||!Number.isInteger(Oe)||Oe<0||!Number.isInteger(Ae)||Ae<1||Ae>64||!Number.isFinite(Me)||Me<0||Me>1)){Je(`请检查 Memory Provider 与召回策略范围`),k(3);return}Ke(!0),Je(``);try{let a=o.draft.spec,s=JSON.parse(JSON.stringify(a));s.runtime=t.runtimeType===`plugin`?{type:`plugin`,providerRef:at?.providerRef,providerConfig:r}:{...PD(t.runtimeType),...a.runtime||{},type:t.runtimeType,...[`adk`,`langgraph`].includes(t.runtimeType)?{projectPath:A.trim(),entryPoint:M.trim(),agentVariable:P.trim()}:{}},t.runtimeType===`plugin`&&(s.security={...a.security||{},allowedPermissions:[...new Set([...a.security?.allowedPermissions||[],...at?.permissions||[]])].sort()}),s.instructions={...a.instructions||{},system:t.prompt.trim(),task:a.instructions?.task||``},be&&(s.soul=ue?{schemaVersion:`agentkit.soul/v1`,identity:W.trim(),principles:LD(me),boundaries:LD(ge),tone:ve.trim()||null}:null),s.execution={...a.execution||{},strategy:ee,maxSteps:ne,timeoutSeconds:ie},s.bindings={...a.bindings||{},modelProfileId:n||null,modelProfileIds:b,skills:ID(a.bindings?.skills,S),mcpServers:ID(a.bindings?.mcpServers,w),tools:ID(a.bindings?.tools,E)},s.context={...a.context||{},ownership:oe,promptOwnership:oe===`ksadk`?`ksadk`:oe===`framework`?`framework`:a.context?.promptOwnership||`framework`,rollout:{...a.context?.rollout||{},contextEngine:ce,...Be?{memoryWrite:Re}:{}}},Be&&(s.memory={...a.memory||{},enabled:Se,providerRef:we.trim(),recall:{...a.memory?.recall||{},enabled:Ee,maxTokens:Oe,topK:Ae,minScore:Me},write:{...a.memory?.write||{},mode:Pe,flushBeforeCompaction:Ie}});let c=await g(`/api/v1/agents/${encodeURIComponent(e)}?name=${encodeURIComponent(t.name.trim())}`,{method:`PUT`,headers:{"Content-Type":`application/json`,"If-Match":String(o.draft.metadata.revision)},body:JSON.stringify(s)}),l=await c.json().catch(()=>null);if(!c.ok){if(Nb(l,d.setError))return;throw Error(l?.error?.message||`保存失败(${c.status})`)}let u=l?.metadata?.id||e;if(J(`Agent 已更新`,ft?`本地配置已保存;更新云端后生效。`:`本地声明已保存;已部署版本不会静默改变。`),He){let e=l?.metadata?.revision;if(!e||typeof e!=`number`){let t=await g(`/api/v1/agents/${encodeURIComponent(u)}`);e=t.ok&&(await t.json().catch(()=>null))?.draft?.metadata?.revision||o.draft.metadata.revision}let n=await g(`/api/v1/agents/${encodeURIComponent(u)}/builds`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":`build-${u}-r${e}-${Date.now()}`},body:JSON.stringify({revision:e,runEvaluation:!1})}),r=await n.json().catch(()=>null);if(!n.ok)throw Error(r?.error?.message||`构建提交失败(${n.status})`);await RD(r.id),J(t.runtimeType===`codex`?`YAML 声明已校验`:`${t.runtimeType} Bundle 构建完成`,u)}i(u,He)}catch(e){Je(e.message||`保存失败`),J(`保存失败`,e.message||`保存失败`,`error`)}finally{Ke(!1)}}async function yt(t){if(!o)return;let n=await g(`/api/v1/agents/${encodeURIComponent(e)}/appearance`,{method:`PUT`,headers:{"Content-Type":`application/json`,"If-Match":String(o.draft.metadata.revision)},body:JSON.stringify(t)}),r=await n.json().catch(()=>null);if(!n.ok)throw Error(r?.error?.message||`外观保存失败(${n.status})`);c(e=>e&&{...e,draft:{...e.draft,metadata:r.metadata}}),a?.(),J(`Agent 外观已更新`,`列表、会话和 Trace 将使用新的头像。`)}return l?(0,G.jsxs)(`div`,{className:`inline-alert error`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`Agent 加载失败`}),(0,G.jsx)(`p`,{children:l})]})]}):o?(0,G.jsxs)(`div`,{className:`quick-create`,children:[(0,G.jsx)(Vg,{...d,children:(0,G.jsxs)(`form`,{className:`quick-create-form`,onSubmit:d.handleSubmit(vt,e=>{let t=Object.values(e).find(e=>typeof e?.message==`string`);Je(String(t?.message||`请检查必填配置后重试`))}),noValidate:!0,children:[(0,G.jsxs)(`div`,{className:`quick-runtime-strip`,children:[(0,G.jsx)(`span`,{className:`runtime-logo`,children:(0,G.jsx)(fe,{size:17})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:ND(h)}),(0,G.jsx)(`span`,{children:`一 Agent 一 YAML · 不可变 Bundle`})]}),(0,G.jsx)(`span`,{className:`badge`,"data-state":`ready`,children:`本地可运行`})]}),(0,G.jsxs)(`div`,{className:`quick-create-heading`,children:[(0,G.jsx)(`span`,{className:`eyebrow`,children:`YAML-first`}),(0,G.jsxs)(`h2`,{title:m,children:[`编辑 `,p||o.draft.metadata.name]}),(0,G.jsx)(`p`,{children:`保存会直接回写该 Agent 的 agentengine.yaml;旧构建会标记为过期。`})]}),(0,G.jsx)(`nav`,{className:`agent-edit-nav`,"aria-label":`Agent 编辑分区`,children:[{id:1,label:`基础与 Prompt`},{id:2,label:`能力绑定`},{id:3,label:`运行策略`}].map(e=>(0,G.jsx)(`button`,{type:`button`,className:O===e.id?`active`:``,"aria-current":O===e.id?`page`:void 0,onClick:()=>k(e.id),children:e.label},e.id))}),(0,G.jsx)(`div`,{className:`callout compact agent-version-boundary`,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:ft?`配置修订边界`:`部署版本边界`}),(0,G.jsx)(`p`,{children:ft?`本页保存本地 YAML 配置;已部署版本不会自动改变,执行云端更新后才会生效。`:`本页保存 Prompt、模型与能力绑定。Runtime 类型不可直接切换;代码入口等修改会进入新 Revision,并按运行时能力生成新 Bundle。`})]})}),(0,G.jsxs)(`section`,{className:`agent-edit-section`,hidden:O!==1,"aria-label":`基础与 Prompt`,children:[(0,G.jsxs)(`div`,{className:`agent-edit-section-heading`,children:[(0,G.jsx)(`span`,{className:`eyebrow`,children:`01`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{children:`基础与 Prompt`}),(0,G.jsx)(`p`,{children:`维护 Agent 身份、Runtime 与系统提示词。`})]})]}),(0,G.jsx)(pv,{name:p||o.draft.metadata.name,appearance:o.draft.metadata.appearance,disabled:Ge,onSave:yt}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`显示名称`,requirement:`required`,htmlFor:`editAgentName`,error:d.formState.errors.name?.message,children:(0,G.jsx)(`input`,{id:`editAgentName`,readOnly:!0,...d.register(`name`)})}),(0,G.jsx)(Y,{label:`本地标识(Slug)`,requirement:`generated`,htmlFor:`editAgentSlug`,hint:`本地唯一标识由创建流程生成;云端 AgentId 由部署服务另行映射。`,error:d.formState.errors.slug?.message,children:(0,G.jsx)(`input`,{id:`editAgentSlug`,className:`mono generated-value`,readOnly:!0,...d.register(`slug`)})})]}),(0,G.jsx)(Y,{label:`Runtime`,requirement:`required`,htmlFor:`editAgentRuntime`,hint:`已有 Build 后不能直接切换 Runtime;需创建迁移 Revision。`,error:d.formState.errors.runtimeType?.message,children:(0,G.jsx)(Fh,{id:`editAgentRuntime`,ariaLabel:`Runtime`,disabled:!0,value:h,options:[{value:`codex`,label:`CodexRuntimeAdapter`},{value:`adk`,label:`ADKRuntimeAdapter`},{value:`langgraph`,label:`LangGraphRuntimeAdapter`},{value:`plugin`,label:`External AgentProvider`}],onValueChange:()=>void 0})}),h===`plugin`&&(0,G.jsxs)(`div`,{className:`template-specific`,"data-testid":`edit-external-provider-config`,children:[(0,G.jsx)(Y,{label:`AgentProvider`,requirement:`required`,htmlFor:`editAgentProvider`,hint:`可以切换到另一个已安装、已启用且兼容的精确版本;Runtime 类型保持不变。`,children:(0,G.jsx)(Fh,{id:`editAgentProvider`,ariaLabel:`AgentProvider`,value:I,placeholder:`Provider 不可用`,options:ot,onValueChange:e=>{L(e),H(!1)}})}),!at?.selectable&&(0,G.jsxs)(`div`,{className:`inline-alert warning`,role:`status`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`AgentProvider 当前不可用`}),(0,G.jsx)(`p`,{children:at?.reason?.message||`该 Provider 未安装或未启用,请先在插件中心处理。`})]})]}),(0,G.jsx)(Y,{label:`Provider 配置`,requirement:`optional`,htmlFor:`editProviderConfig`,hint:`填写 JSON 对象;敏感字段只能保存 Secret 引用,不能保存明文。`,children:(0,G.jsx)(`textarea`,{id:`editProviderConfig`,className:`mono`,rows:6,value:R,onChange:e=>z(e.target.value)})}),at?.permissions.length?(0,G.jsxs)(`label`,{className:`post-create-option`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:B,onChange:e=>H(e.target.checked)}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`确认 Provider 请求的权限`}),(0,G.jsxs)(`small`,{children:[at.permissions.join(`、`),`;确认后才会写入新 Revision。`]})]})]}):null]}),(0,G.jsxs)(`fieldset`,{className:`agent-policy-editor soul-editor`,"aria-describedby":`soulPolicyHint`,children:[(0,G.jsx)(`legend`,{children:`Soul · 稳定人格`}),(0,G.jsxs)(`label`,{className:`pcm-memory-toggle soul-enable-toggle`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:ue,onChange:e=>{de(e.target.checked),xe(!0)}}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:ue?`已声明 Soul`:`未声明 Soul`}),(0,G.jsx)(`small`,{id:`soulPolicyHint`,children:`Soul 属于人工审核的 Revision 源,不会从会话或 Memory 自动改写。`})]})]}),ue?(0,G.jsxs)(`div`,{className:`agent-policy-fields`,children:[(0,G.jsx)(Y,{label:`身份定义`,requirement:`required`,htmlFor:`editSoulIdentity`,hint:`说明 Agent 是谁、承担什么稳定职责。`,children:(0,G.jsx)(`textarea`,{id:`editSoulIdentity`,rows:4,maxLength:4096,value:W,onChange:e=>{pe(e.target.value),xe(!0)}})}),(0,G.jsxs)(`div`,{className:`form-grid two-columns soul-list-grid`,children:[(0,G.jsx)(Y,{label:`原则`,requirement:`optional`,htmlFor:`editSoulPrinciples`,hint:`每行一条,最多 64 条。`,children:(0,G.jsx)(`textarea`,{id:`editSoulPrinciples`,rows:5,value:me,onChange:e=>{he(e.target.value),xe(!0)}})}),(0,G.jsx)(Y,{label:`边界`,requirement:`optional`,htmlFor:`editSoulBoundaries`,hint:`每行一条不可突破的行为边界。`,children:(0,G.jsx)(`textarea`,{id:`editSoulBoundaries`,rows:5,value:ge,onChange:e=>{_e(e.target.value),xe(!0)}})})]}),(0,G.jsx)(Y,{label:`表达语气`,requirement:`optional`,htmlFor:`editSoulTone`,hint:`稳定语气,不替代本轮用户要求。`,children:(0,G.jsx)(`textarea`,{id:`editSoulTone`,rows:3,maxLength:1024,value:ve,onChange:e=>{ye(e.target.value),xe(!0)}})})]}):null,(0,G.jsxs)(`div`,{className:`source-provenance`,role:`status`,"aria-label":`Soul 编译来源`,children:[(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`结构化来源`}),(0,G.jsx)(`code`,{children:o.soulProjection?.source||`AgentSpec.soul`})]}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`生效摘要`}),(0,G.jsx)(`code`,{children:be?`保存后重新计算`:o.soulProjection?.digest||`未生成`})]}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`编译位置`}),(0,G.jsx)(`code`,{children:gt})]})]}),(0,G.jsx)(`p`,{className:`agent-policy-note`,children:h===`codex`?`ManagedRuntime 启动时会把 Soul 确定性编译到 base_instructions,并保留结构化源与 digest。`:h===`plugin`?`Bundle 保留 instructions/soul.md;外部 Provider 按固定插件合同消费该审核快照。`:`构建时按 canonical JSON 计算 SHA-256,并编译到 resolved-agent-spec.instructions.system;Bundle 同时保留 instructions/soul.md。`})]}),(0,G.jsx)(Y,{label:`系统提示词`,requirement:`required`,htmlFor:`editAgentPrompt`,hint:`首个 Agent 写入根目录 agentengine.yaml;后续 Agent 写入 agents//agentengine.yaml。`,error:d.formState.errors.prompt?.message,children:(0,G.jsx)(`textarea`,{id:`editAgentPrompt`,maxLength:32768,rows:10,...d.register(`prompt`)})})]}),(0,G.jsxs)(`section`,{className:`agent-edit-section`,hidden:O!==2,"aria-label":`能力绑定`,children:[(0,G.jsxs)(`div`,{className:`agent-edit-section-heading`,children:[(0,G.jsx)(`span`,{className:`eyebrow`,children:`02`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{children:`能力绑定`}),(0,G.jsx)(`p`,{children:`配置模型、Skill、MCP 与 Runtime 支持的 Tool;切换分区不会丢失未保存修改。`})]})]}),(0,G.jsx)(`div`,{className:`form-grid two-columns`,children:(0,G.jsx)(Y,{label:`默认模型`,requirement:`required`,htmlFor:`editDefaultModel`,hint:`每轮未指定模型时使用`,footer:rt.length?null:(0,G.jsx)(`span`,{className:`studio-field-hint`,children:dt?`历史声明模型 ${ut} 将原样保留;从下方目录选择后可切换。`:`请先从模型 allowlist 中至少选择一个模型。`}),children:(0,G.jsx)(Fh,{id:`editDefaultModel`,ariaLabel:`默认模型`,value:v,placeholder:ut||`请先绑定模型`,disabled:!rt.length,options:rt.map(e=>({value:e.resourceId,label:e.displayName,description:MD(e)})),onValueChange:y})})}),(0,G.jsxs)(`div`,{className:`field quick-model-binding-field`,children:[(0,G.jsxs)(`div`,{className:`field-heading`,children:[(0,G.jsx)(`label`,{children:`绑定模型`}),(0,G.jsx)(`span`,{className:`helper`,children:`会话中只能动态切换到这里选中的模型`})]}),(0,G.jsx)(Tb,{ariaLabel:`选择绑定模型`,items:$e,selectedIds:b,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${MD(e)} · ${e.status}`,onChange:st,searchPlaceholder:`搜索绑定模型`,emptyMessage:`当前模型服务没有返回可绑定模型`})]}),(0,G.jsxs)(`div`,{className:`field quick-model-binding-field`,children:[(0,G.jsxs)(`div`,{className:`field-heading`,children:[(0,G.jsx)(`label`,{children:`绑定 Skill / MCP`}),(0,G.jsx)(`span`,{className:`helper`,children:h===`codex`?`Skill 与 MCP 由 Codex Runtime 按能力投影。`:h===`plugin`?`Skill 与 MCP 会通过 PluginHost 投影给外部 Provider。`:`Skill 可编辑;当前 Runtime 尚未实现 MCP 源码注入,历史 MCP 仅保留。`})]}),(0,G.jsxs)(`div`,{className:`quick-capability-bindings`,children:[(0,G.jsx)(Tb,{ariaLabel:`选择绑定 Skill`,items:et,selectedIds:S,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>e.version,onChange:C,searchPlaceholder:`搜索 Skill`,emptyMessage:`没有已安装的 Skill`}),(0,G.jsx)(Tb,{ariaLabel:`选择绑定 MCP`,items:[`codex`,`plugin`].includes(h)?tt:tt.filter(e=>w.includes(e.resourceId)),selectedIds:w,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.version} · ${e.health?.toolCount||0} Tool`,onChange:[`codex`,`plugin`].includes(h)?T:()=>void 0,disabledIds:[`codex`,`plugin`].includes(h)?[]:w,searchPlaceholder:`搜索 MCP`,emptyMessage:[`codex`,`plugin`].includes(h)?`没有已连接的 MCP`:`当前 Runtime 不支持新增 MCP`})]})]}),o.bindingProjection?.unresolvedMcpServers?.length?(0,G.jsxs)(`div`,{className:`inline-alert warning`,role:`status`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`部分 YAML MCP 尚未进入资源目录`}),(0,G.jsxs)(`p`,{children:[o.bindingProjection.unresolvedMcpServers.map(e=>e.name).join(`、`),` 未映射到资源目录;保存时会原样保留,请在资源页接入后再可视化编辑。`]})]})]}):null,(0,G.jsxs)(`div`,{className:`field quick-model-binding-field`,children:[(0,G.jsxs)(`div`,{className:`field-heading`,children:[(0,G.jsx)(`label`,{children:`绑定 Tool`}),(0,G.jsx)(`span`,{className:`helper`,children:[`codex`,`plugin`].includes(h)?`当前 Runtime 不支持新增 ksadk Tool;历史绑定仅保留,不能修改。`:`仅展示当前 Runtime 合同允许的 ksadk Tool。`})]}),(0,G.jsx)(Tb,{ariaLabel:`选择绑定 Tool`,items:[`codex`,`plugin`].includes(h)?nt.filter(e=>E.includes(e.resourceId)):nt,selectedIds:E,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>e.version,onChange:[`codex`,`plugin`].includes(h)?()=>void 0:D,disabledIds:[`codex`,`plugin`].includes(h)?E:[],searchPlaceholder:`搜索 Tool`,emptyMessage:h===`codex`?`Codex 使用原生工具`:h===`plugin`?`外部 Provider 当前接收 MCP 与 Skill 能力`:`没有可绑定的 Tool`})]})]}),(0,G.jsxs)(`section`,{className:`agent-edit-section`,hidden:O!==3,"aria-label":`运行策略`,children:[(0,G.jsxs)(`div`,{className:`agent-edit-section-heading`,children:[(0,G.jsx)(`span`,{className:`eyebrow`,children:`03`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{children:`运行策略`}),(0,G.jsx)(`p`,{children:`配置跨会话记忆;Context 高级选项通常保持默认即可。`})]})]}),[`adk`,`langgraph`].includes(h)?(0,G.jsxs)(`div`,{className:`form-grid two-columns agent-runtime-config-grid`,children:[(0,G.jsx)(Y,{label:`项目相对路径`,requirement:`required`,htmlFor:`editRuntimeProjectPath`,hint:`相对于当前 Studio 工作区;保存后由新 Revision 构建。`,children:(0,G.jsx)(`input`,{id:`editRuntimeProjectPath`,value:A,onChange:e=>j(e.target.value)})}),(0,G.jsx)(Y,{label:`入口文件`,requirement:`required`,htmlFor:`editRuntimeEntryPoint`,hint:`ADK 或 LangGraph Agent 的 Python 入口文件。`,children:(0,G.jsx)(`input`,{id:`editRuntimeEntryPoint`,value:M,onChange:e=>N(e.target.value)})}),(0,G.jsx)(Y,{label:`Agent 变量`,requirement:`required`,htmlFor:`editRuntimeAgentVariable`,hint:`入口模块导出的 Agent 或 Graph 变量名。`,children:(0,G.jsx)(`input`,{id:`editRuntimeAgentVariable`,value:P,onChange:e=>F(e.target.value)})})]}):null,(0,G.jsxs)(`div`,{className:`form-grid two-columns agent-execution-config-grid`,children:[(0,G.jsx)(Y,{label:`执行策略`,requirement:`required`,htmlFor:`editExecutionStrategy`,hint:`直接执行适合普通对话;计划执行适合多步骤任务。`,children:(0,G.jsx)(Fh,{id:`editExecutionStrategy`,ariaLabel:`执行策略`,value:ee,options:[{value:`direct`,label:`直接执行`},{value:`plan-act-observe`,label:`计划 · 执行 · 观察`}],onValueChange:te})}),(0,G.jsx)(Y,{label:`最大步骤数`,requirement:`required`,htmlFor:`editExecutionMaxSteps`,hint:`单次运行允许的最大 Agent 步骤,范围 1–100。`,children:(0,G.jsx)(`input`,{id:`editExecutionMaxSteps`,type:`number`,min:1,max:100,value:ne,onChange:e=>re(Number(e.target.value))})}),(0,G.jsx)(Y,{label:`超时秒数`,requirement:`required`,htmlFor:`editExecutionTimeout`,hint:`单次运行的整体超时,范围 1–3600 秒。`,children:(0,G.jsx)(`input`,{id:`editExecutionTimeout`,type:`number`,min:1,max:3600,value:ie,onChange:e=>ae(Number(e.target.value))})})]}),(0,G.jsxs)(`fieldset`,{className:`agent-policy-editor memory-policy-editor`,children:[(0,G.jsx)(`legend`,{children:`Memory · 跨会话策略`}),(0,G.jsxs)(`label`,{className:`pcm-memory-toggle`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:Se,onChange:e=>{Ce(e.target.checked),Ve(!0)}}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:Se?`已启用跨会话记忆`:`未启用跨会话记忆`}),(0,G.jsx)(`small`,{children:`启用状态、召回与写入分别受下列 AgentVersion 策略控制;不会因打开编辑页而改写旧配置。`})]})]}),(0,G.jsxs)(`div`,{className:`form-grid two-columns memory-policy-grid`,children:[(0,G.jsx)(Y,{label:`Memory Provider`,requirement:`required`,htmlFor:`editMemoryProvider`,hint:`只保存 providerRef,不保存凭证。`,children:(0,G.jsx)(`input`,{id:`editMemoryProvider`,maxLength:128,value:we,onChange:e=>{Te(e.target.value),Ve(!0)}})}),(0,G.jsx)(Y,{label:`写入模式`,requirement:`required`,htmlFor:`editMemoryWriteMode`,hint:`候选模式仍需策略审核;显式模式只接受用户确认的写入。`,children:(0,G.jsx)(Fh,{id:`editMemoryWriteMode`,ariaLabel:`Memory 写入模式`,value:Pe,options:[{value:`off`,label:`不产生写入候选`},{value:`explicit_only`,label:`仅显式写入`},{value:`candidate`,label:`候选写入`}],onValueChange:e=>{Fe(e),Ve(!0)}})}),(0,G.jsx)(Y,{label:`写入 Rollout`,requirement:`required`,htmlFor:`editMemoryWriteRollout`,hint:`关闭、仅观察和正式启用由版本策略明确区分。`,children:(0,G.jsx)(Fh,{id:`editMemoryWriteRollout`,ariaLabel:`Memory 写入 Rollout`,value:Re,options:[{value:`off`,label:`关闭`},{value:`shadow`,label:`仅观察`},{value:`enabled`,label:`正式启用`}],onValueChange:e=>{ze(e),Ve(!0)}})}),(0,G.jsx)(Y,{label:`召回开关`,requirement:`required`,htmlFor:`editMemoryRecallEnabled`,hint:`可启用 Memory 但关闭自动召回。`,children:(0,G.jsxs)(`div`,{className:`inline-checkbox-control`,children:[(0,G.jsx)(`input`,{id:`editMemoryRecallEnabled`,type:`checkbox`,checked:Ee,onChange:e=>{De(e.target.checked),Ve(!0)}}),(0,G.jsx)(`span`,{children:Ee?`允许按策略召回`:`不自动召回`})]})}),(0,G.jsx)(Y,{label:`召回 Token 上限`,requirement:`required`,htmlFor:`editMemoryRecallMaxTokens`,hint:`允许为 0,表示不投影召回正文。`,children:(0,G.jsx)(`input`,{id:`editMemoryRecallMaxTokens`,type:`number`,min:0,value:Oe,onChange:e=>{ke(Number(e.target.value)),Ve(!0)}})}),(0,G.jsx)(Y,{label:`召回条数`,requirement:`required`,htmlFor:`editMemoryRecallTopK`,hint:`范围 1–64。`,children:(0,G.jsx)(`input`,{id:`editMemoryRecallTopK`,type:`number`,min:1,max:64,value:Ae,onChange:e=>{je(Number(e.target.value)),Ve(!0)}})}),(0,G.jsx)(Y,{label:`最小相关度`,requirement:`required`,htmlFor:`editMemoryRecallMinScore`,hint:`范围 0–1。`,children:(0,G.jsx)(`input`,{id:`editMemoryRecallMinScore`,type:`number`,min:0,max:1,step:.05,value:Me,onChange:e=>{Ne(Number(e.target.value)),Ve(!0)}})}),(0,G.jsx)(Y,{label:`压缩前刷新`,requirement:`optional`,htmlFor:`editMemoryFlush`,hint:`在上下文压缩前提交已审核的 Memory 候选。`,children:(0,G.jsxs)(`div`,{className:`inline-checkbox-control`,children:[(0,G.jsx)(`input`,{id:`editMemoryFlush`,type:`checkbox`,checked:Ie,onChange:e=>{Le(e.target.checked),Ve(!0)}}),(0,G.jsx)(`span`,{children:Ie?`压缩前刷新`:`不在压缩前刷新`})]})})]}),(0,G.jsxs)(`div`,{className:`source-provenance memory-source-provenance`,role:`status`,"aria-label":`Memory 策略来源`,children:[(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`策略来源`}),(0,G.jsx)(`code`,{children:`AgentSpec.memory`})]}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`Provider`}),(0,G.jsx)(`code`,{children:we||`未配置`})]}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`写入生效`}),(0,G.jsxs)(`code`,{children:[`Context.rollout.memoryWrite=`,Re]})]})]})]}),(0,G.jsxs)(`details`,{className:`pcm-policy-card`,children:[(0,G.jsx)(`summary`,{children:(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`运行上下文(高级)`}),(0,G.jsx)(`small`,{children:`调整 Context 责任边界和优化策略;不确定时保持自动与仅观察`})]})}),(0,G.jsx)(`div`,{className:`pcm-policy-body`,children:(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`上下文管理方式`,requirement:`optional`,htmlFor:`editContextOwnership`,hint:`决定由平台、框架或原生 Runtime 负责最终模型输入。`,children:(0,G.jsx)(Fh,{id:`editContextOwnership`,ariaLabel:`上下文管理方式`,value:oe,options:lt,onValueChange:se})}),(0,G.jsx)(Y,{label:`上下文优化`,requirement:`optional`,htmlFor:`editContextEngineRollout`,hint:`仅观察只生成诊断证据;正式启用会执行预算、压缩和降载。`,children:(0,G.jsx)(Fh,{id:`editContextEngineRollout`,ariaLabel:`Context Engine`,value:ce,options:[{value:`off`,label:`使用 Runtime 默认行为`},{value:`shadow`,label:`仅观察(推荐)`},{value:`enabled`,label:`正式启用`}],onValueChange:le})})]})})]})]}),(0,G.jsxs)(`div`,{className:`quick-create-actions`,children:[(0,G.jsxs)(`label`,{className:`checkbox-row`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:He,onChange:e=>We(e.target.checked)}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:ft?`保存后生成配置快照`:`保存后构建新 Bundle`}),(0,G.jsx)(`small`,{children:ft?`校验 YAML 并生成可追溯的部署输入`:`新 Bundle 完成后进入会话工作台`})]})]}),(0,G.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:Ge,children:[(0,G.jsx)(Ue,{size:15}),(0,G.jsx)(`span`,{children:Ge?`正在保存`:`保存修改`})]})]}),qe&&(0,G.jsxs)(`div`,{className:`inline-alert error`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`保存失败`}),(0,G.jsx)(`p`,{children:qe})]})]})]})}),(0,G.jsxs)(`aside`,{className:`manifest-preview`,children:[(0,G.jsx)(Db,{code:_t,language:`yaml`,filename:`agentkit.yaml`,wrap:!0}),(0,G.jsxs)(`div`,{className:`manifest-contract`,children:[(0,G.jsxs)(`span`,{children:[(0,G.jsx)(V,{size:13}),`唯一配置源`]}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(V,{size:13}),`SHA-256 可追溯`]}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(V,{size:13}),`RuntimeAdapter 执行`]})]})]})]}):(0,G.jsx)(`div`,{className:`quick-create`,children:(0,G.jsx)(`p`,{children:`正在加载 Agent 配置…`})})}function BD({title:e,subtitle:t,wide:n=!1,closeDisabled:r=!1,onClose:i,footer:a,children:o}){return(0,G.jsx)(Oa,{open:!0,onOpenChange:e=>{e||i()},title:e,subtitle:t,wide:n,closeDisabled:r,footer:a,children:o})}function VD({kind:e,title:t,message:n}){return(0,G.jsxs)(`div`,{className:`inline-alert ${e}`,children:[e===`success`?(0,G.jsx)(ie,{size:15}):(0,G.jsx)(U,{size:15}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:t}),n?(0,G.jsx)(`p`,{children:n}):null]})]})}function HD(e,t){let n=t||{};return(e[e.length-1]===``?[...e,``]:e).join((n.padRight?` `:``)+`,`+(n.padLeft===!1?``:` `)).trim()}var UD=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,WD=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,GD={};function KD(e,t){return((t||GD).jsx?WD:UD).test(e)}var qD=/[ \t\n\f\r]/g;function JD(e){return typeof e==`object`?e.type===`text`&&YD(e.value):YD(e)}function YD(e){return e.replace(qD,``)===``}var XD=class{constructor(e,t,n){this.normal=t,this.property=e,n&&(this.space=n)}};XD.prototype.normal={},XD.prototype.property={},XD.prototype.space=void 0;function ZD(e,t){let n={},r={};for(let t of e)Object.assign(n,t.property),Object.assign(r,t.normal);return new XD(n,r,t)}function QD(e){return e.toLowerCase()}var $D=class{constructor(e,t){this.attribute=t,this.property=e}};$D.prototype.attribute=``,$D.prototype.booleanish=!1,$D.prototype.boolean=!1,$D.prototype.commaOrSpaceSeparated=!1,$D.prototype.commaSeparated=!1,$D.prototype.defined=!1,$D.prototype.mustUseProperty=!1,$D.prototype.number=!1,$D.prototype.overloadedBoolean=!1,$D.prototype.property=``,$D.prototype.spaceSeparated=!1,$D.prototype.space=void 0;var eO=e({boolean:()=>nO,booleanish:()=>rO,commaOrSpaceSeparated:()=>sO,commaSeparated:()=>oO,number:()=>Z,overloadedBoolean:()=>iO,spaceSeparated:()=>aO}),tO=0,nO=cO(),rO=cO(),iO=cO(),Z=cO(),aO=cO(),oO=cO(),sO=cO();function cO(){return 2**++tO}var lO=Object.keys(eO),uO=class extends $D{constructor(e,t,n,r){let i=-1;if(super(e,t),dO(this,`space`,r),typeof n==`number`)for(;++i4&&n.slice(0,4)===`data`&&wO.test(t)){if(t.charAt(4)===`-`){let e=t.slice(5).replace(CO,DO);r=`data`+e.charAt(0).toUpperCase()+e.slice(1)}else{let e=t.slice(4);if(!CO.test(e)){let n=e.replace(SO,EO);n.charAt(0)!==`-`&&(n=`-`+n),t=`data`+n}}i=uO}return new i(r,t)}function EO(e){return`-`+e.toLowerCase()}function DO(e){return e.charAt(1).toUpperCase()}var OO=ZD([pO,gO,vO,yO,bO],`html`),kO=ZD([pO,_O,vO,yO,bO],`svg`);function AO(e){return e.join(` `).trim()}var jO=n(((e,t)=>{var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,r=/\n/g,i=/^\s*/,a=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,o=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,c=/^[;\s]*/,l=/^\s+|\s+$/g;function u(e,t){if(typeof e!=`string`)throw TypeError(`First argument must be a string`);if(!e)return[];t||={};var l=1,u=1;function f(e){var t=e.match(r);t&&(l+=t.length);var n=e.lastIndexOf(` +`);u=~n?e.length-n:u+e.length}function p(){var e={line:l,column:u};return function(t){return t.position=new m(e),_(),t}}function m(e){this.start=e,this.end={line:l,column:u},this.source=t.source}m.prototype.content=e;function h(n){var r=Error(t.source+`:`+l+`:`+u+`: `+n);if(r.reason=n,r.filename=t.source,r.line=l,r.column=u,r.source=e,!t.silent)throw r}function g(t){var n=t.exec(e);if(n){var r=n[0];return f(r),e=e.slice(r.length),n}}function _(){g(i)}function v(e){var t;for(e||=[];t=y();)t!==!1&&e.push(t);return e}function y(){var t=p();if(e.charAt(0)==`/`&&e.charAt(1)==`*`){for(var n=2;e.charAt(n)!=``&&(e.charAt(n)!=`*`||e.charAt(n+1)!=`/`);)++n;if(n+=2,e.charAt(n-1)===``)return h(`End of comment missing`);var r=e.slice(2,n-2);return u+=2,f(r),e=e.slice(n),u+=2,t({type:`comment`,comment:r})}}function b(){var e=p(),t=g(a);if(t){if(y(),!g(o))return h(`property missing ':'`);var r=g(s),i=e({type:`declaration`,property:d(t[0].replace(n,``)),value:r?d(r[0].replace(n,``)):``});return g(c),i}}function x(){var e=[];v(e);for(var t;t=b();)t!==!1&&(e.push(t),v(e));return e}return _(),x()}function d(e){return e?e.replace(l,``):``}t.exports=u})),MO=n((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.default=r;var n=t(jO());function r(e,t){let r=null;if(!e||typeof e!=`string`)return r;let i=(0,n.default)(e),a=typeof t==`function`;return i.forEach(e=>{if(e.type!==`declaration`)return;let{property:n,value:i}=e;a?t(n,i,e):i&&(r||={},r[n]=i)}),r}})),NO=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,i=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,o=function(e){return!e||r.test(e)||t.test(e)},s=function(e,t){return t.toUpperCase()},c=function(e,t){return`${t}-`};e.camelCase=function(e,t){return t===void 0&&(t={}),o(e)?e:(e=e.toLowerCase(),e=t.reactCompat?e.replace(a,c):e.replace(i,c),e.replace(n,s))}})),PO=n(((e,t)=>{var n=(e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}})(MO()),r=NO();function i(e,t){var i={};return!e||typeof e!=`string`||(0,n.default)(e,function(e,n){e&&n&&(i[(0,r.camelCase)(e,t)]=n)}),i}i.default=i,t.exports=i})),FO=LO(`end`),IO=LO(`start`);function LO(e){return t;function t(t){let n=t&&t.position&&t.position[e]||{};if(typeof n.line==`number`&&n.line>0&&typeof n.column==`number`&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset==`number`&&n.offset>-1?n.offset:void 0}}}function RO(e){let t=IO(e),n=FO(e);if(t&&n)return{start:t,end:n}}function zO(e){return!e||typeof e!=`object`?``:`position`in e||`type`in e?VO(e.position):`start`in e||`end`in e?VO(e):`line`in e||`column`in e?BO(e):``}function BO(e){return HO(e&&e.line)+`:`+HO(e&&e.column)}function VO(e){return BO(e&&e.start)+`-`+BO(e&&e.end)}function HO(e){return e&&typeof e==`number`?e:1}var UO=class extends Error{constructor(e,t,n){super(),typeof t==`string`&&(n=t,t=void 0);let r=``,i={},a=!1;if(t&&(i=`line`in t&&`column`in t||`start`in t&&`end`in t?{place:t}:`type`in t?{ancestors:[t],place:t.position}:{...t}),typeof e==`string`?r=e:!i.cause&&e&&(a=!0,r=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof n==`string`){let e=n.indexOf(`:`);e===-1?i.ruleId=n:(i.source=n.slice(0,e),i.ruleId=n.slice(e+1))}if(!i.place&&i.ancestors&&i.ancestors){let e=i.ancestors[i.ancestors.length-1];e&&(i.place=e.position)}let o=i.place&&`start`in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=o?o.column:void 0,this.fatal=void 0,this.file=``,this.message=r,this.line=o?o.line:void 0,this.name=zO(i.place)||`1:1`,this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack==`string`?i.cause.stack:``,this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};UO.prototype.file=``,UO.prototype.name=``,UO.prototype.reason=``,UO.prototype.message=``,UO.prototype.stack=``,UO.prototype.column=void 0,UO.prototype.line=void 0,UO.prototype.ancestors=void 0,UO.prototype.cause=void 0,UO.prototype.fatal=void 0,UO.prototype.place=void 0,UO.prototype.ruleId=void 0,UO.prototype.source=void 0;var WO=t(PO(),1),GO={}.hasOwnProperty,KO=new Map,qO=/[A-Z]/g,JO=new Set([`table`,`tbody`,`thead`,`tfoot`,`tr`]),YO=new Set([`td`,`th`]);function XO(e,t){if(!t||t.Fragment===void 0)throw TypeError("Expected `Fragment` in options");let n=t.filePath||void 0,r;if(t.development){if(typeof t.jsxDEV!=`function`)throw TypeError("Expected `jsxDEV` in options when `development: true`");r=sk(n,t.jsxDEV)}else{if(typeof t.jsx!=`function`)throw TypeError("Expected `jsx` in production options");if(typeof t.jsxs!=`function`)throw TypeError("Expected `jsxs` in production options");r=ok(n,t.jsx,t.jsxs)}let i={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:r,elementAttributeNameCase:t.elementAttributeNameCase||`react`,evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space===`svg`?kO:OO,stylePropertyNameCase:t.stylePropertyNameCase||`dom`,tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},a=ZO(i,e,void 0);return a&&typeof a!=`string`?a:i.create(e,i.Fragment,{children:a||void 0},void 0)}function ZO(e,t,n){if(t.type===`element`)return QO(e,t,n);if(t.type===`mdxFlowExpression`||t.type===`mdxTextExpression`)return $O(e,t);if(t.type===`mdxJsxFlowElement`||t.type===`mdxJsxTextElement`)return tk(e,t,n);if(t.type===`mdxjsEsm`)return ek(e,t);if(t.type===`root`)return nk(e,t,n);if(t.type===`text`)return rk(e,t)}function QO(e,t,n){let r=e.schema,i=r;t.tagName.toLowerCase()===`svg`&&r.space===`html`&&(i=kO,e.schema=i),e.ancestors.push(t);let a=pk(e,t.tagName,!1),o=ck(e,t),s=uk(e,t);return JO.has(t.tagName)&&(s=s.filter(function(e){return typeof e!=`string`||!JD(e)})),ik(e,o,a,t),ak(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function $O(e,t){if(t.data&&t.data.estree&&e.evaluater){let n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}mk(e,t.position)}function ek(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);mk(e,t.position)}function tk(e,t,n){let r=e.schema,i=r;t.name===`svg`&&r.space===`html`&&(i=kO,e.schema=i),e.ancestors.push(t);let a=t.name===null?e.Fragment:pk(e,t.name,!0),o=lk(e,t),s=uk(e,t);return ik(e,o,a,t),ak(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function nk(e,t,n){let r={};return ak(r,uk(e,t)),e.create(t,e.Fragment,r,n)}function rk(e,t){return t.value}function ik(e,t,n,r){typeof n!=`string`&&n!==e.Fragment&&e.passNode&&(t.node=r)}function ak(e,t){if(t.length>0){let n=t.length>1?t:t[0];n&&(e.children=n)}}function ok(e,t,n){return r;function r(e,r,i,a){let o=Array.isArray(i.children)?n:t;return a?o(r,i,a):o(r,i)}}function sk(e,t){return n;function n(n,r,i,a){let o=Array.isArray(i.children),s=IO(n);return t(r,i,a,o,{columnNumber:s?s.column-1:void 0,fileName:e,lineNumber:s?s.line:void 0},void 0)}}function ck(e,t){let n={},r,i;for(i in t.properties)if(i!==`children`&&GO.call(t.properties,i)){let a=dk(e,i,t.properties[i]);if(a){let[i,o]=a;e.tableCellAlignToStyle&&i===`align`&&typeof o==`string`&&YO.has(t.tagName)?r=o:n[i]=o}}if(r){let t=n.style||={};t[e.stylePropertyNameCase===`css`?`text-align`:`textAlign`]=r}return n}function lk(e,t){let n={};for(let r of t.attributes)if(r.type===`mdxJsxExpressionAttribute`){if(r.data&&r.data.estree&&e.evaluater){let t=r.data.estree.body[0];t.type;let i=t.expression;i.type;let a=i.properties[0];a.type,Object.assign(n,e.evaluater.evaluateExpression(a.argument))}else mk(e,t.position)}else{let i=r.name,a;if(r.value&&typeof r.value==`object`){if(r.value.data&&r.value.data.estree&&e.evaluater){let t=r.value.data.estree.body[0];t.type,a=e.evaluater.evaluateExpression(t.expression)}else mk(e,t.position)}else a=r.value===null||r.value;n[i]=a}return n}function uk(e,t){let n=[],r=-1,i=e.passKeys?new Map:KO;for(;++ri?0:i+t:t>i?i:t,n=n>0?n:0,r.length<1e4)o=Array.from(r),o.unshift(t,n),e.splice(...o);else for(n&&e.splice(t,n);a0?(Ek(e,e.length,0,t),e):t}var Ok={}.hasOwnProperty;function kk(e){let t={},n=-1;for(;++n13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)==65535||(n&65535)==65534||n>1114111?`�`:String.fromCodePoint(n)}function Nk(e){return e.replace(/[\t\n\r ]+/g,` `).replace(/^ | $/g,``).toLowerCase().toUpperCase()}var Pk=Kk(/[A-Za-z]/),Fk=Kk(/[\dA-Za-z]/),Ik=Kk(/[#-'*+\--9=?A-Z^-~]/);function Lk(e){return e!==null&&(e<32||e===127)}var Rk=Kk(/\d/),zk=Kk(/[\dA-Fa-f]/),Bk=Kk(/[!-/:-@[-`{-~]/);function Vk(e){return e!==null&&e<-2}function Hk(e){return e!==null&&(e<0||e===32)}function Uk(e){return e===-2||e===-1||e===32}var Wk=Kk(/\p{P}|\p{S}/u),Gk=Kk(/\s/);function Kk(e){return t;function t(t){return t!==null&&t>-1&&e.test(String.fromCharCode(t))}}function qk(e){let t=[],n=-1,r=0,i=0;for(;++n55295&&a<57344){let t=e.charCodeAt(n+1);a<56320&&t>56319&&t<57344?(o=String.fromCharCode(a,t),i=1):o=`�`}else o=String.fromCharCode(a);o&&=(t.push(e.slice(r,n),encodeURIComponent(o)),r=n+i+1,``),i&&=(n+=i,0)}return t.join(``)+e.slice(r)}function Jk(e,t,n,r){let i=r?r-1:1/0,a=0;return o;function o(r){return Uk(r)?(e.enter(n),s(r)):t(r)}function s(r){return Uk(r)&&a++o))return;let n=t.events.length,a=n,s,c;for(;a--;)if(t.events[a][0]===`exit`&&t.events[a][1].type===`chunkFlow`){if(s){c=t.events[a][1].end;break}s=!0}for(_(r),e=n;er;){let r=n[i];t.containerState=r[1],r[0].exit.call(t,e)}n.length=r}function v(){i.write([null]),a=void 0,i=void 0,t.containerState._closeFlow=void 0}}function eA(e,t,n){return Jk(e,e.attempt(this.parser.constructs.document,t,n),`linePrefix`,this.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)}function tA(e){if(e===null||Hk(e)||Gk(e))return 1;if(Wk(e))return 2}function nA(e,t,n){let r=[],i=-1;for(;++i1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;let d={...e[r][1].end},f={...e[n][1].start};oA(d,-c),oA(f,c),o={type:c>1?`strongSequence`:`emphasisSequence`,start:d,end:{...e[r][1].end}},s={type:c>1?`strongSequence`:`emphasisSequence`,start:{...e[n][1].start},end:f},a={type:c>1?`strongText`:`emphasisText`,start:{...e[r][1].end},end:{...e[n][1].start}},i={type:c>1?`strong`:`emphasis`,start:{...o.start},end:{...s.end}},e[r][1].end={...o.start},e[n][1].start={...s.end},l=[],e[r][1].end.offset-e[r][1].start.offset&&(l=Dk(l,[[`enter`,e[r][1],t],[`exit`,e[r][1],t]])),l=Dk(l,[[`enter`,i,t],[`enter`,o,t],[`exit`,o,t],[`enter`,a,t]]),l=Dk(l,nA(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),l=Dk(l,[[`exit`,a,t],[`enter`,s,t],[`exit`,s,t],[`exit`,i,t]]),e[n][1].end.offset-e[n][1].start.offset?(u=2,l=Dk(l,[[`enter`,e[n][1],t],[`exit`,e[n][1],t]])):u=0,Ek(e,r-1,n-r+3,l),n=r+l.length-u-2;break}}for(n=-1;++n0&&Uk(t)?Jk(e,v,`linePrefix`,a+1)(t):v(t)}function v(t){return t===null||Vk(t)?e.check(yA,h,b)(t):(e.enter(`codeFlowValue`),y(t))}function y(t){return t===null||Vk(t)?(e.exit(`codeFlowValue`),v(t)):(e.consume(t),y)}function b(n){return e.exit(`codeFenced`),t(n)}function x(e,t,n){let i=0;return a;function a(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),c}function c(t){return e.enter(`codeFencedFence`),Uk(t)?Jk(e,l,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):l(t)}function l(t){return t===s?(e.enter(`codeFencedFenceSequence`),u(t)):n(t)}function u(t){return t===s?(i++,e.consume(t),u):i>=o?(e.exit(`codeFencedFenceSequence`),Uk(t)?Jk(e,d,`whitespace`)(t):d(t)):n(t)}function d(r){return r===null||Vk(r)?(e.exit(`codeFencedFence`),t(r)):n(r)}}}function SA(e,t,n){let r=this;return i;function i(t){return t===null?n(t):(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),a)}function a(e){return r.parser.lazy[r.now().line]?n(e):t(e)}}var CA={name:`codeIndented`,tokenize:TA},wA={partial:!0,tokenize:EA};function TA(e,t,n){let r=this;return i;function i(t){return e.enter(`codeIndented`),Jk(e,a,`linePrefix`,5)(t)}function a(e){let t=r.events[r.events.length-1];return t&&t[1].type===`linePrefix`&&t[2].sliceSerialize(t[1],!0).length>=4?o(e):n(e)}function o(t){return t===null?c(t):Vk(t)?e.attempt(wA,o,c)(t):(e.enter(`codeFlowValue`),s(t))}function s(t){return t===null||Vk(t)?(e.exit(`codeFlowValue`),o(t)):(e.consume(t),s)}function c(n){return e.exit(`codeIndented`),t(n)}}function EA(e,t,n){let r=this;return i;function i(t){return r.parser.lazy[r.now().line]?n(t):Vk(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),i):Jk(e,a,`linePrefix`,5)(t)}function a(e){let a=r.events[r.events.length-1];return a&&a[1].type===`linePrefix`&&a[2].sliceSerialize(a[1],!0).length>=4?t(e):Vk(e)?i(e):n(e)}}var DA={name:`codeText`,previous:kA,resolve:OA,tokenize:AA};function OA(e){let t=e.length-4,n=3,r,i;if((e[n][1].type===`lineEnding`||e[n][1].type===`space`)&&(e[t][1].type===`lineEnding`||e[t][1].type===`space`)){for(r=n;++r=this.left.length+this.right.length)throw RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(e,t,n){let r=t||0;this.setCursor(Math.trunc(e));let i=this.right.splice(this.right.length-r,1/0);return n&&MA(this.left,n),i.reverse()}pop(){return this.setCursor(1/0),this.left.pop()}push(e){this.setCursor(1/0),this.left.push(e)}pushMany(e){this.setCursor(1/0),MA(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),MA(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0)){if(e=4?t(i):e.interrupt(r.parser.constructs.flow,n,t)(i)}}function BA(e,t,n,r,i,a,o,s,c){let l=c||1/0,u=0;return d;function d(t){return t===60?(e.enter(r),e.enter(i),e.enter(a),e.consume(t),e.exit(a),f):t===null||t===32||t===41||Lk(t)?n(t):(e.enter(r),e.enter(o),e.enter(s),e.enter(`chunkString`,{contentType:`string`}),h(t))}function f(n){return n===62?(e.enter(a),e.consume(n),e.exit(a),e.exit(i),e.exit(r),t):(e.enter(s),e.enter(`chunkString`,{contentType:`string`}),p(n))}function p(t){return t===62?(e.exit(`chunkString`),e.exit(s),f(t)):t===null||t===60||Vk(t)?n(t):(e.consume(t),t===92?m:p)}function m(t){return t===60||t===62||t===92?(e.consume(t),p):p(t)}function h(i){return!u&&(i===null||i===41||Hk(i))?(e.exit(`chunkString`),e.exit(s),e.exit(o),e.exit(r),t(i)):u999||l===null||l===91||l===93&&!c||l===94&&!s&&`_hiddenFootnoteSupport`in o.parser.constructs?n(l):l===93?(e.exit(a),e.enter(i),e.consume(l),e.exit(i),e.exit(r),t):Vk(l)?(e.enter(`lineEnding`),e.consume(l),e.exit(`lineEnding`),u):(e.enter(`chunkString`,{contentType:`string`}),d(l))}function d(t){return t===null||t===91||t===93||Vk(t)||s++>999?(e.exit(`chunkString`),u(t)):(e.consume(t),c||=!Uk(t),t===92?f:d)}function f(t){return t===91||t===92||t===93?(e.consume(t),s++,d):d(t)}}function HA(e,t,n,r,i,a){let o;return s;function s(t){return t===34||t===39||t===40?(e.enter(r),e.enter(i),e.consume(t),e.exit(i),o=t===40?41:t,c):n(t)}function c(n){return n===o?(e.enter(i),e.consume(n),e.exit(i),e.exit(r),t):(e.enter(a),l(n))}function l(t){return t===o?(e.exit(a),c(o)):t===null?n(t):Vk(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),Jk(e,l,`linePrefix`)):(e.enter(`chunkString`,{contentType:`string`}),u(t))}function u(t){return t===o||t===null||Vk(t)?(e.exit(`chunkString`),l(t)):(e.consume(t),t===92?d:u)}function d(t){return t===o||t===92?(e.consume(t),u):u(t)}}function UA(e,t){let n;return r;function r(i){return Vk(i)?(e.enter(`lineEnding`),e.consume(i),e.exit(`lineEnding`),n=!0,r):Uk(i)?Jk(e,r,n?`linePrefix`:`lineSuffix`)(i):t(i)}}var WA={name:`definition`,tokenize:KA},GA={partial:!0,tokenize:qA};function KA(e,t,n){let r=this,i;return a;function a(t){return e.enter(`definition`),o(t)}function o(t){return VA.call(r,e,s,n,`definitionLabel`,`definitionLabelMarker`,`definitionLabelString`)(t)}function s(t){return i=Nk(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),c):n(t)}function c(t){return Hk(t)?UA(e,l)(t):l(t)}function l(t){return BA(e,u,n,`definitionDestination`,`definitionDestinationLiteral`,`definitionDestinationLiteralMarker`,`definitionDestinationRaw`,`definitionDestinationString`)(t)}function u(t){return e.attempt(GA,d,d)(t)}function d(t){return Uk(t)?Jk(e,f,`whitespace`)(t):f(t)}function f(a){return a===null||Vk(a)?(e.exit(`definition`),r.parser.defined.push(i),t(a)):n(a)}}function qA(e,t,n){return r;function r(t){return Hk(t)?UA(e,i)(t):n(t)}function i(t){return HA(e,a,n,`definitionTitle`,`definitionTitleMarker`,`definitionTitleString`)(t)}function a(t){return Uk(t)?Jk(e,o,`whitespace`)(t):o(t)}function o(e){return e===null||Vk(e)?t(e):n(e)}}var JA={name:`hardBreakEscape`,tokenize:YA};function YA(e,t,n){return r;function r(t){return e.enter(`hardBreakEscape`),e.consume(t),i}function i(r){return Vk(r)?(e.exit(`hardBreakEscape`),t(r)):n(r)}}var XA={name:`headingAtx`,resolve:ZA,tokenize:QA};function ZA(e,t){let n=e.length-2,r=3,i,a;return e[r][1].type===`whitespace`&&(r+=2),n-2>r&&e[n][1].type===`whitespace`&&(n-=2),e[n][1].type===`atxHeadingSequence`&&(r===n-1||n-4>r&&e[n-2][1].type===`whitespace`)&&(n-=r+1===n?2:4),n>r&&(i={type:`atxHeadingText`,start:e[r][1].start,end:e[n][1].end},a={type:`chunkText`,start:e[r][1].start,end:e[n][1].end,contentType:`text`},Ek(e,r,n-r+1,[[`enter`,i,t],[`enter`,a,t],[`exit`,a,t],[`exit`,i,t]])),e}function QA(e,t,n){let r=0;return i;function i(t){return e.enter(`atxHeading`),a(t)}function a(t){return e.enter(`atxHeadingSequence`),o(t)}function o(t){return t===35&&r++<6?(e.consume(t),o):t===null||Hk(t)?(e.exit(`atxHeadingSequence`),s(t)):n(t)}function s(n){return n===35?(e.enter(`atxHeadingSequence`),c(n)):n===null||Vk(n)?(e.exit(`atxHeading`),t(n)):Uk(n)?Jk(e,s,`whitespace`)(n):(e.enter(`atxHeadingText`),l(n))}function c(t){return t===35?(e.consume(t),c):(e.exit(`atxHeadingSequence`),s(t))}function l(t){return t===null||t===35||Hk(t)?(e.exit(`atxHeadingText`),s(t)):(e.consume(t),l)}}var $A=`address.article.aside.base.basefont.blockquote.body.caption.center.col.colgroup.dd.details.dialog.dir.div.dl.dt.fieldset.figcaption.figure.footer.form.frame.frameset.h1.h2.h3.h4.h5.h6.head.header.hr.html.iframe.legend.li.link.main.menu.menuitem.nav.noframes.ol.optgroup.option.p.param.search.section.summary.table.tbody.td.tfoot.th.thead.title.tr.track.ul`.split(`.`),ej=[`pre`,`script`,`style`,`textarea`],tj={concrete:!0,name:`htmlFlow`,resolveTo:ij,tokenize:aj},nj={partial:!0,tokenize:sj},rj={partial:!0,tokenize:oj};function ij(e){let t=e.length;for(;t--&&(e[t][0]!==`enter`||e[t][1].type!==`htmlFlow`););return t>1&&e[t-2][1].type===`linePrefix`&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function aj(e,t,n){let r=this,i,a,o,s,c;return l;function l(e){return u(e)}function u(t){return e.enter(`htmlFlow`),e.enter(`htmlFlowData`),e.consume(t),d}function d(s){return s===33?(e.consume(s),f):s===47?(e.consume(s),a=!0,h):s===63?(e.consume(s),i=3,r.interrupt?t:I):Pk(s)?(e.consume(s),o=String.fromCharCode(s),g):n(s)}function f(a){return a===45?(e.consume(a),i=2,p):a===91?(e.consume(a),i=5,s=0,m):Pk(a)?(e.consume(a),i=4,r.interrupt?t:I):n(a)}function p(i){return i===45?(e.consume(i),r.interrupt?t:I):n(i)}function m(i){return i===`CDATA[`.charCodeAt(s++)?(e.consume(i),s===6?r.interrupt?t:O:m):n(i)}function h(t){return Pk(t)?(e.consume(t),o=String.fromCharCode(t),g):n(t)}function g(s){if(s===null||s===47||s===62||Hk(s)){let c=s===47,l=o.toLowerCase();return!c&&!a&&ej.includes(l)?(i=1,r.interrupt?t(s):O(s)):$A.includes(o.toLowerCase())?(i=6,c?(e.consume(s),_):r.interrupt?t(s):O(s)):(i=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(s):a?v(s):y(s))}return s===45||Fk(s)?(e.consume(s),o+=String.fromCharCode(s),g):n(s)}function _(i){return i===62?(e.consume(i),r.interrupt?t:O):n(i)}function v(t){return Uk(t)?(e.consume(t),v):E(t)}function y(t){return t===47?(e.consume(t),E):t===58||t===95||Pk(t)?(e.consume(t),b):Uk(t)?(e.consume(t),y):E(t)}function b(t){return t===45||t===46||t===58||t===95||Fk(t)?(e.consume(t),b):x(t)}function x(t){return t===61?(e.consume(t),S):Uk(t)?(e.consume(t),x):y(t)}function S(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),c=t,C):Uk(t)?(e.consume(t),S):w(t)}function C(t){return t===c?(e.consume(t),c=null,T):t===null||Vk(t)?n(t):(e.consume(t),C)}function w(t){return t===null||t===34||t===39||t===47||t===60||t===61||t===62||t===96||Hk(t)?x(t):(e.consume(t),w)}function T(e){return e===47||e===62||Uk(e)?y(e):n(e)}function E(t){return t===62?(e.consume(t),D):n(t)}function D(t){return t===null||Vk(t)?O(t):Uk(t)?(e.consume(t),D):n(t)}function O(t){return t===45&&i===2?(e.consume(t),M):t===60&&i===1?(e.consume(t),N):t===62&&i===4?(e.consume(t),L):t===63&&i===3?(e.consume(t),I):t===93&&i===5?(e.consume(t),F):Vk(t)&&(i===6||i===7)?(e.exit(`htmlFlowData`),e.check(nj,R,k)(t)):t===null||Vk(t)?(e.exit(`htmlFlowData`),k(t)):(e.consume(t),O)}function k(t){return e.check(rj,A,R)(t)}function A(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),j}function j(t){return t===null||Vk(t)?k(t):(e.enter(`htmlFlowData`),O(t))}function M(t){return t===45?(e.consume(t),I):O(t)}function N(t){return t===47?(e.consume(t),o=``,P):O(t)}function P(t){if(t===62){let n=o.toLowerCase();return ej.includes(n)?(e.consume(t),L):O(t)}return Pk(t)&&o.length<8?(e.consume(t),o+=String.fromCharCode(t),P):O(t)}function F(t){return t===93?(e.consume(t),I):O(t)}function I(t){return t===62?(e.consume(t),L):t===45&&i===2?(e.consume(t),I):O(t)}function L(t){return t===null||Vk(t)?(e.exit(`htmlFlowData`),R(t)):(e.consume(t),L)}function R(n){return e.exit(`htmlFlow`),t(n)}}function oj(e,t,n){let r=this;return i;function i(t){return Vk(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),a):n(t)}function a(e){return r.parser.lazy[r.now().line]?n(e):t(e)}}function sj(e,t,n){return r;function r(r){return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),e.attempt(lA,t,n)}}var cj={name:`htmlText`,tokenize:lj};function lj(e,t,n){let r=this,i,a,o;return s;function s(t){return e.enter(`htmlText`),e.enter(`htmlTextData`),e.consume(t),c}function c(t){return t===33?(e.consume(t),l):t===47?(e.consume(t),x):t===63?(e.consume(t),y):Pk(t)?(e.consume(t),w):n(t)}function l(t){return t===45?(e.consume(t),u):t===91?(e.consume(t),a=0,m):Pk(t)?(e.consume(t),v):n(t)}function u(t){return t===45?(e.consume(t),p):n(t)}function d(t){return t===null?n(t):t===45?(e.consume(t),f):Vk(t)?(o=d,N(t)):(e.consume(t),d)}function f(t){return t===45?(e.consume(t),p):d(t)}function p(e){return e===62?M(e):e===45?f(e):d(e)}function m(t){return t===`CDATA[`.charCodeAt(a++)?(e.consume(t),a===6?h:m):n(t)}function h(t){return t===null?n(t):t===93?(e.consume(t),g):Vk(t)?(o=h,N(t)):(e.consume(t),h)}function g(t){return t===93?(e.consume(t),_):h(t)}function _(t){return t===62?M(t):t===93?(e.consume(t),_):h(t)}function v(t){return t===null||t===62?M(t):Vk(t)?(o=v,N(t)):(e.consume(t),v)}function y(t){return t===null?n(t):t===63?(e.consume(t),b):Vk(t)?(o=y,N(t)):(e.consume(t),y)}function b(e){return e===62?M(e):y(e)}function x(t){return Pk(t)?(e.consume(t),S):n(t)}function S(t){return t===45||Fk(t)?(e.consume(t),S):C(t)}function C(t){return Vk(t)?(o=C,N(t)):Uk(t)?(e.consume(t),C):M(t)}function w(t){return t===45||Fk(t)?(e.consume(t),w):t===47||t===62||Hk(t)?T(t):n(t)}function T(t){return t===47?(e.consume(t),M):t===58||t===95||Pk(t)?(e.consume(t),E):Vk(t)?(o=T,N(t)):Uk(t)?(e.consume(t),T):M(t)}function E(t){return t===45||t===46||t===58||t===95||Fk(t)?(e.consume(t),E):D(t)}function D(t){return t===61?(e.consume(t),O):Vk(t)?(o=D,N(t)):Uk(t)?(e.consume(t),D):T(t)}function O(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),i=t,k):Vk(t)?(o=O,N(t)):Uk(t)?(e.consume(t),O):(e.consume(t),A)}function k(t){return t===i?(e.consume(t),i=void 0,j):t===null?n(t):Vk(t)?(o=k,N(t)):(e.consume(t),k)}function A(t){return t===null||t===34||t===39||t===60||t===61||t===96?n(t):t===47||t===62||Hk(t)?T(t):(e.consume(t),A)}function j(e){return e===47||e===62||Hk(e)?T(e):n(e)}function M(r){return r===62?(e.consume(r),e.exit(`htmlTextData`),e.exit(`htmlText`),t):n(r)}function N(t){return e.exit(`htmlTextData`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),P}function P(t){return Uk(t)?Jk(e,F,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):F(t)}function F(t){return e.enter(`htmlTextData`),o(t)}}var uj={name:`labelEnd`,resolveAll:mj,resolveTo:hj,tokenize:gj},dj={tokenize:_j},fj={tokenize:vj},pj={tokenize:yj};function mj(e){let t=-1,n=[];for(;++t=3&&(a===null||Vk(a))?(e.exit(`thematicBreak`),t(a)):n(a)}function c(t){return t===i?(e.consume(t),r++,c):(e.exit(`thematicBreakSequence`),Uk(t)?Jk(e,s,`whitespace`)(t):s(t))}}var Oj={continuation:{tokenize:Mj},exit:Pj,name:`list`,tokenize:jj},kj={partial:!0,tokenize:Fj},Aj={partial:!0,tokenize:Nj};function jj(e,t,n){let r=this,i=r.events[r.events.length-1],a=i&&i[1].type===`linePrefix`?i[2].sliceSerialize(i[1],!0).length:0,o=0;return s;function s(t){let i=r.containerState.type||(t===42||t===43||t===45?`listUnordered`:`listOrdered`);if(i===`listUnordered`?!r.containerState.marker||t===r.containerState.marker:Rk(t)){if(r.containerState.type||(r.containerState.type=i,e.enter(i,{_container:!0})),i===`listUnordered`)return e.enter(`listItemPrefix`),t===42||t===45?e.check(Ej,n,l)(t):l(t);if(!r.interrupt||t===49)return e.enter(`listItemPrefix`),e.enter(`listItemValue`),c(t)}return n(t)}function c(t){return Rk(t)&&++o<10?(e.consume(t),c):(!r.interrupt||o<2)&&(r.containerState.marker?t===r.containerState.marker:t===41||t===46)?(e.exit(`listItemValue`),l(t)):n(t)}function l(t){return e.enter(`listItemMarker`),e.consume(t),e.exit(`listItemMarker`),r.containerState.marker=r.containerState.marker||t,e.check(lA,r.interrupt?n:u,e.attempt(kj,f,d))}function u(e){return r.containerState.initialBlankLine=!0,a++,f(e)}function d(t){return Uk(t)?(e.enter(`listItemPrefixWhitespace`),e.consume(t),e.exit(`listItemPrefixWhitespace`),f):n(t)}function f(n){return r.containerState.size=a+r.sliceSerialize(e.exit(`listItemPrefix`),!0).length,t(n)}}function Mj(e,t,n){let r=this;return r.containerState._closeFlow=void 0,e.check(lA,i,a);function i(n){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,Jk(e,t,`listItemIndent`,r.containerState.size+1)(n)}function a(n){return r.containerState.furtherBlankLines||!Uk(n)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,o(n)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(Aj,t,o)(n))}function o(i){return r.containerState._closeFlow=!0,r.interrupt=void 0,Jk(e,e.attempt(Oj,t,n),`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(i)}}function Nj(e,t,n){let r=this;return Jk(e,i,`listItemIndent`,r.containerState.size+1);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`listItemIndent`&&i[2].sliceSerialize(i[1],!0).length===r.containerState.size?t(e):n(e)}}function Pj(e){e.exit(this.containerState.type)}function Fj(e,t,n){let r=this;return Jk(e,i,`listItemPrefixWhitespace`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:5);function i(e){let i=r.events[r.events.length-1];return!Uk(e)&&i&&i[1].type===`listItemPrefixWhitespace`?t(e):n(e)}}var Ij={name:`setextUnderline`,resolveTo:Lj,tokenize:Rj};function Lj(e,t){let n=e.length,r,i,a;for(;n--;)if(e[n][0]===`enter`){if(e[n][1].type===`content`){r=n;break}e[n][1].type===`paragraph`&&(i=n)}else e[n][1].type===`content`&&e.splice(n,1),!a&&e[n][1].type===`definition`&&(a=n);let o={type:`setextHeading`,start:{...e[r][1].start},end:{...e[e.length-1][1].end}};return e[i][1].type=`setextHeadingText`,a?(e.splice(i,0,[`enter`,o,t]),e.splice(a+1,0,[`exit`,e[r][1],t]),e[r][1].end={...e[a][1].end}):e[r][1]=o,e.push([`exit`,o,t]),e}function Rj(e,t,n){let r=this,i;return a;function a(t){let a=r.events.length,s;for(;a--;)if(r.events[a][1].type!==`lineEnding`&&r.events[a][1].type!==`linePrefix`&&r.events[a][1].type!==`content`){s=r.events[a][1].type===`paragraph`;break}return!r.parser.lazy[r.now().line]&&(r.interrupt||s)?(e.enter(`setextHeadingLine`),i=t,o(t)):n(t)}function o(t){return e.enter(`setextHeadingLineSequence`),s(t)}function s(t){return t===i?(e.consume(t),s):(e.exit(`setextHeadingLineSequence`),Uk(t)?Jk(e,c,`lineSuffix`)(t):c(t))}function c(r){return r===null||Vk(r)?(e.exit(`setextHeadingLine`),t(r)):n(r)}}var zj={tokenize:Bj};function Bj(e){let t=this,n=e.attempt(lA,r,e.attempt(this.parser.constructs.flowInitial,i,Jk(e,e.attempt(this.parser.constructs.flow,i,e.attempt(FA,i)),`linePrefix`)));return n;function r(r){if(r===null){e.consume(r);return}return e.enter(`lineEndingBlank`),e.consume(r),e.exit(`lineEndingBlank`),t.currentConstruct=void 0,n}function i(r){if(r===null){e.consume(r);return}return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),t.currentConstruct=void 0,n}}var Vj={resolveAll:Gj()},Hj=Wj(`string`),Uj=Wj(`text`);function Wj(e){return{resolveAll:Gj(e===`text`?Kj:void 0),tokenize:t};function t(t){let n=this,r=this.parser.constructs[e],i=t.attempt(r,a,o);return a;function a(e){return c(e)?i(e):o(e)}function o(e){if(e===null){t.consume(e);return}return t.enter(`data`),t.consume(e),s}function s(e){return c(e)?(t.exit(`data`),i(e)):(t.consume(e),s)}function c(e){if(e===null)return!0;let t=r[e],i=-1;if(t)for(;++itM,contentInitial:()=>Yj,disable:()=>nM,document:()=>Jj,flow:()=>Zj,flowInitial:()=>Xj,insideSpan:()=>eM,string:()=>Qj,text:()=>$j}),Jj={42:Oj,43:Oj,45:Oj,48:Oj,49:Oj,50:Oj,51:Oj,52:Oj,53:Oj,54:Oj,55:Oj,56:Oj,57:Oj,62:dA},Yj={91:WA},Xj={[-2]:CA,[-1]:CA,32:CA},Zj={35:XA,42:Ej,45:[Ij,Ej],60:tj,61:Ij,95:Ej,96:bA,126:bA},Qj={38:_A,92:hA},$j={[-5]:wj,[-4]:wj,[-3]:wj,33:bj,38:_A,42:rA,60:[sA,cj],91:Sj,92:[JA,hA],93:uj,95:rA,96:DA},eM={null:[rA,Vj]},tM={null:[42,95]},nM={null:[]};function rM(e,t,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0},i={},a=[],o=[],s=[],c={attempt:C(x),check:C(S),consume:v,enter:y,exit:b,interrupt:C(S,{interrupt:!0})},l={code:null,containerState:{},defineSkip:h,events:[],now:m,parser:e,previous:null,sliceSerialize:f,sliceStream:p,write:d},u=t.tokenize.call(l,c);return t.resolveAll&&a.push(t),l;function d(e){return o=Dk(o,e),g(),o[o.length-1]===null?(w(t,0),l.events=nA(a,l.events,l),l.events):[]}function f(e,t){return aM(p(e),t)}function p(e){return iM(o,e)}function m(){let{_bufferIndex:e,_index:t,line:n,column:i,offset:a}=r;return{_bufferIndex:e,_index:t,line:n,column:i,offset:a}}function h(e){i[e.line]=e.column,E()}function g(){let e;for(;r._index-1){let e=o[0];typeof e==`string`?o[0]=e.slice(r):o.shift()}a>0&&o.push(e[i].slice(0,a))}return o}function aM(e,t){let n=-1,r=[],i;for(;++n0){let e=a.tokenStack[a.tokenStack.length-1];(e[1]||yM).call(a,void 0,e[0])}for(r.position={start:gM(e.length>0?e[0][1].start:{line:1,column:1,offset:0}),end:gM(e.length>0?e[e.length-2][1].end:{line:1,column:1,offset:0})},d=-1;++d0&&(r.className=[`language-`+i[0]]);let a={type:`element`,tagName:`code`,properties:r,children:[{type:`text`,value:n}]};return t.meta&&(a.data={meta:t.meta}),e.patch(t,a),a=e.applyData(t,a),a={type:`element`,tagName:`pre`,properties:{},children:[a]},e.patch(t,a),a}function wM(e,t){let n={type:`element`,tagName:`del`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function TM(e,t){let n={type:`element`,tagName:`em`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function EM(e,t){let n=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,r=String(t.identifier).toUpperCase(),i=qk(r.toLowerCase()),a=e.footnoteOrder.indexOf(r),o,s=e.footnoteCounts.get(r);s===void 0?(s=0,e.footnoteOrder.push(r),o=e.footnoteOrder.length):o=a+1,s+=1,e.footnoteCounts.set(r,s);let c={type:`element`,tagName:`a`,properties:{href:`#`+n+`fn-`+i,id:n+`fnref-`+i+(s>1?`-`+s:``),dataFootnoteRef:!0,ariaDescribedBy:[`footnote-label`]},children:[{type:`text`,value:String(o)}]};e.patch(t,c);let l={type:`element`,tagName:`sup`,properties:{},children:[c]};return e.patch(t,l),e.applyData(t,l)}function DM(e,t){let n={type:`element`,tagName:`h`+t.depth,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function OM(e,t){if(e.options.allowDangerousHtml){let n={type:`raw`,value:t.value};return e.patch(t,n),e.applyData(t,n)}}function kM(e,t){let n=t.referenceType,r=`]`;if(n===`collapsed`?r+=`[]`:n===`full`&&(r+=`[`+(t.label||t.identifier)+`]`),t.type===`imageReference`)return[{type:`text`,value:`![`+t.alt+r}];let i=e.all(t),a=i[0];a&&a.type===`text`?a.value=`[`+a.value:i.unshift({type:`text`,value:`[`});let o=i[i.length-1];return o&&o.type===`text`?o.value+=r:i.push({type:`text`,value:r}),i}function AM(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return kM(e,t);let i={src:qk(r.url||``),alt:t.alt};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`img`,properties:i,children:[]};return e.patch(t,a),e.applyData(t,a)}function jM(e,t){let n={src:qk(t.url)};t.alt!==null&&t.alt!==void 0&&(n.alt=t.alt),t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`img`,properties:n,children:[]};return e.patch(t,r),e.applyData(t,r)}function MM(e,t){let n={type:`text`,value:t.value.replace(/\r?\n|\r/g,` `)};e.patch(t,n);let r={type:`element`,tagName:`code`,properties:{},children:[n]};return e.patch(t,r),e.applyData(t,r)}function NM(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return kM(e,t);let i={href:qk(r.url||``)};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`a`,properties:i,children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}function PM(e,t){let n={href:qk(t.url)};t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`a`,properties:n,children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function FM(e,t,n){let r=e.all(t),i=n?IM(n):LM(t),a={},o=[];if(typeof t.checked==`boolean`){let e=r[0],n;e&&e.type===`element`&&e.tagName===`p`?n=e:(n={type:`element`,tagName:`p`,properties:{},children:[]},r.unshift(n)),n.children.length>0&&n.children.unshift({type:`text`,value:` `}),n.children.unshift({type:`element`,tagName:`input`,properties:{type:`checkbox`,checked:t.checked,disabled:!0},children:[]}),a.className=[`task-list-item`]}let s=-1;for(;++s1}function RM(e,t){let n={},r=e.all(t),i=-1;for(typeof t.start==`number`&&t.start!==1&&(n.start=t.start);++i0){let r={type:`element`,tagName:`tbody`,properties:{},children:e.wrap(n,!0)},a=IO(t.children[1]),o=FO(t.children[t.children.length-1]);a&&o&&(r.position={start:a,end:o}),i.push(r)}let a={type:`element`,tagName:`table`,properties:{},children:e.wrap(i,!0)};return e.patch(t,a),e.applyData(t,a)}function UM(e,t,n){let r=n?n.children:void 0,i=(r?r.indexOf(t):1)===0?`th`:`td`,a=n&&n.type===`table`?n.align:void 0,o=a?a.length:t.children.length,s=-1,c=[];for(;++s0,!0),r[0]),i=r.index+r[0].length,r=n.exec(t);return a.push(JM(t.slice(i),i>0,!1)),a.join(``)}function JM(e,t,n){let r=0,i=e.length;if(t){let t=e.codePointAt(r);for(;t===GM||t===KM;)r++,t=e.codePointAt(r)}if(n){let t=e.codePointAt(i-1);for(;t===GM||t===KM;)i--,t=e.codePointAt(i-1)}return i>r?e.slice(r,i):``}function YM(e,t){let n={type:`text`,value:qM(String(t.value))};return e.patch(t,n),e.applyData(t,n)}function XM(e,t){let n={type:`element`,tagName:`hr`,properties:{},children:[]};return e.patch(t,n),e.applyData(t,n)}var ZM={blockquote:xM,break:SM,code:CM,delete:wM,emphasis:TM,footnoteReference:EM,heading:DM,html:OM,imageReference:AM,image:jM,inlineCode:MM,linkReference:NM,link:PM,listItem:FM,list:RM,paragraph:zM,root:BM,strong:VM,table:HM,tableCell:WM,tableRow:UM,text:YM,thematicBreak:XM,toml:QM,yaml:QM,definition:QM,footnoteDefinition:QM};function QM(){}var $M=typeof self==`object`?self:globalThis,eN=(e,t)=>{switch(e){case`Function`:case`SharedWorker`:case`Worker`:case`eval`:case`setInterval`:case`setTimeout`:throw TypeError(`unable to deserialize `+e)}return new $M[e](t)},tN=(e,t)=>{let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o;return n(typeof $M[e]==`function`?eN(e,t):Error(t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}return n(eN(a,o),i)};return r},nN=e=>tN(new Map,e)(0),rN=``,{toString:iN}={},{keys:aN}=Object,oN=e=>{let t=typeof e;if(t!==`object`||!e)return[0,t];let n=iN.call(e).slice(8,-1);switch(n){case`Array`:return[1,rN];case`Object`:return[2,rN];case`Date`:return[3,rN];case`RegExp`:return[4,rN];case`Map`:return[5,rN];case`Set`:return[6,rN];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:e instanceof Error?[7,e.name||`Error`]:[2,n]},sN=([e,t])=>e===0&&(t===`function`||t===`symbol`),cN=(e,t,n,r)=>{let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=oN(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize `+s);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of aN(r))(e||!sN(oN(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,isNaN(r.getTime())?rN:r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(sN(oN(n))||sN(oN(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!sN(oN(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a},lN=(e,{json:t,lossy:n}={})=>{let r=[];return cN(!(t||n),!!t,new Map,r)(e),r},uN=typeof structuredClone==`function`?(e,t)=>t&&(`json`in t||`lossy`in t)?nN(lN(e,t)):structuredClone(e):(e,t)=>nN(lN(e,t));function dN(e,t){let n=[{type:`text`,value:`↩`}];return t>1&&n.push({type:`element`,tagName:`sup`,properties:{},children:[{type:`text`,value:String(t)}]}),n}function fN(e,t){return`Back to reference `+(e+1)+(t>1?`-`+t:``)}function pN(e){let t=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,n=e.options.footnoteBackContent||dN,r=e.options.footnoteBackLabel||fN,i=e.options.footnoteLabel||`Footnotes`,a=e.options.footnoteLabelTagName||`h2`,o=e.options.footnoteLabelProperties||{className:[`sr-only`]},s=[],c=-1;for(;++c0&&d.push({type:`text`,value:` `});let e=typeof n==`string`?n:n(c,u);typeof e==`string`&&(e={type:`text`,value:e}),d.push({type:`element`,tagName:`a`,properties:{href:`#`+t+`fnref-`+l+(u>1?`-`+u:``),dataFootnoteBackref:``,ariaLabel:typeof r==`string`?r:r(c,u),className:[`data-footnote-backref`]},children:Array.isArray(e)?e:[e]})}let p=a[a.length-1];if(p&&p.type===`element`&&p.tagName===`p`){let e=p.children[p.children.length-1];e&&e.type===`text`?e.value+=` `:p.children.push({type:`text`,value:` `}),p.children.push(...d)}else a.push(...d);let m={type:`element`,tagName:`li`,properties:{id:t+`fn-`+l},children:e.wrap(a,!0)};e.patch(i,m),s.push(m)}if(s.length!==0)return{type:`element`,tagName:`section`,properties:{dataFootnotes:!0,className:[`footnotes`]},children:[{type:`element`,tagName:a,properties:{...uN(o),id:`footnote-label`},children:[{type:`text`,value:i}]},{type:`text`,value:` +`},{type:`element`,tagName:`ol`,properties:{},children:e.wrap(s,!0)},{type:`text`,value:` +`}]}}var mN=(function(e){if(e==null)return yN;if(typeof e==`function`)return vN(e);if(typeof e==`object`)return Array.isArray(e)?hN(e):gN(e);if(typeof e==`string`)return _N(e);throw Error(`Expected function, string, or object as test`)});function hN(e){let t=[],n=-1;for(;++n`:``))+`)`})}return u;function u(){let l=SN,u,d,f;if((!t||a(e,i,c[c.length-1]||void 0))&&(l=wN(n(e,c)),l[0]===!1))return l;if(`children`in e&&e.children){let t=e;if(t.children&&l[0]!==`skip`)for(d=(r?t.children.length:-1)+o,f=c.concat(t);d>-1&&d0&&n.push({type:`text`,value:` +`}),n}function NN(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function PN(e,t){let n=ON(e,t),r=n.one(e,void 0),i=pN(n),a=Array.isArray(r)?{type:`root`,children:r}:r||{type:`root`,children:[]};return i&&(`children`in a,a.children.push({type:`text`,value:` +`},i)),a}function FN(e,t){return e&&`run`in e?async function(n,r){let i=PN(n,{file:r,...t});await e.run(i,r)}:function(n,r){return PN(n,{file:r,...e||t})}}function IN(e){if(e)throw e}var LN=n(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=function(e){return typeof Array.isArray==`function`?Array.isArray(e):r.call(e)===`[object Array]`},s=function(e){if(!e||r.call(e)!==`[object Object]`)return!1;var t=n.call(e,`constructor`),i=e.constructor&&e.constructor.prototype&&n.call(e.constructor.prototype,`isPrototypeOf`);if(e.constructor&&!t&&!i)return!1;for(var a in e);return a===void 0||n.call(e,a)},c=function(e,t){i&&t.name===`__proto__`?i(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},l=function(e,t){if(t===`__proto__`){if(!n.call(e,t))return;if(a)return a(e,t).value}return e[t]};t.exports=function e(){var t,n,r,i,a,u,d=arguments[0],f=1,p=arguments.length,m=!1;for(typeof d==`boolean`&&(m=d,d=arguments[1]||{},f=2),(d==null||typeof d!=`object`&&typeof d!=`function`)&&(d={});ft.length,o;r&&t.push(i);try{o=e.apply(this,t)}catch(e){let t=e;if(r&&n)throw t;return i(t)}r||(o&&o.then&&typeof o.then==`function`?o.then(a,i):o instanceof Error?i(o):a(o))}function i(e,...r){n||(n=!0,t(e,...r))}function a(e){i(null,e)}}var VN={basename:HN,dirname:UN,extname:WN,join:GN,sep:`/`};function HN(e,t){if(t!==void 0&&typeof t!=`string`)throw TypeError(`"ext" argument must be a string`);JN(e);let n=0,r=-1,i=e.length,a;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else r<0&&(a=!0,r=i+1);return r<0?``:e.slice(n,r)}if(t===e)return``;let o=-1,s=t.length-1;for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else o<0&&(a=!0,o=i+1),s>-1&&(e.codePointAt(i)===t.codePointAt(s--)?s<0&&(r=i):(s=-1,r=o));return n===r?r=o:r<0&&(r=e.length),e.slice(n,r)}function UN(e){if(JN(e),e.length===0)return`.`;let t=-1,n=e.length,r;for(;--n;)if(e.codePointAt(n)===47){if(r){t=n;break}}else r||=!0;return t<0?e.codePointAt(0)===47?`/`:`.`:t===1&&e.codePointAt(0)===47?`//`:e.slice(0,t)}function WN(e){JN(e);let t=e.length,n=-1,r=0,i=-1,a=0,o;for(;t--;){let s=e.codePointAt(t);if(s===47){if(o){r=t+1;break}continue}n<0&&(o=!0,n=t+1),s===46?i<0?i=t:a!==1&&(a=1):i>-1&&(a=-1)}return i<0||n<0||a===0||a===1&&i===n-1&&i===r+1?``:e.slice(i,n)}function GN(...e){let t=-1,n;for(;++t0&&e.codePointAt(e.length-1)===47&&(n+=`/`),t?`/`+n:n}function qN(e,t){let n=``,r=0,i=-1,a=0,o=-1,s,c;for(;++o<=e.length;){if(o2){if(c=n.lastIndexOf(`/`),c!==n.length-1){c<0?(n=``,r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf(`/`)),i=o,a=0;continue}}else if(n.length>0){n=``,r=0,i=o,a=0;continue}}t&&(n=n.length>0?n+`/..`:`..`,r=2)}else n.length>0?n+=`/`+e.slice(i+1,o):n=e.slice(i+1,o),r=o-i-1}i=o,a=0}else s===46&&a>-1?a++:a=-1}return n}function JN(e){if(typeof e!=`string`)throw TypeError(`Path must be a string. Received `+JSON.stringify(e))}var YN={cwd:XN};function XN(){return`/`}function ZN(e){return!!(typeof e==`object`&&e&&`href`in e&&e.href&&`protocol`in e&&e.protocol&&e.auth===void 0)}function QN(e){if(typeof e==`string`)e=new URL(e);else if(!ZN(e)){let t=TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code=`ERR_INVALID_ARG_TYPE`,t}if(e.protocol!==`file:`){let e=TypeError(`The URL must be of scheme file`);throw e.code=`ERR_INVALID_URL_SCHEME`,e}return $N(e)}function $N(e){if(e.hostname!==``){let e=TypeError(`File URL host must be "localhost" or empty on darwin`);throw e.code=`ERR_INVALID_FILE_URL_HOST`,e}let t=e.pathname,n=-1;for(;++n0){let[r,...a]=t,o=n[i][1];RN(o)&&RN(r)&&(r=(0,sP.default)(!0,o,r)),n[i]=[e,r,...a]}}}}().freeze();function uP(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `parser`")}function dP(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `compiler`")}function fP(e,t){if(t)throw Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function pP(e){if(!RN(e)||typeof e.type!=`string`)throw TypeError("Expected node, got `"+e+"`")}function mP(e,t,n){if(!n)throw Error("`"+e+"` finished async. Use `"+t+"` instead")}function hP(e){return gP(e)?e:new tP(e)}function gP(e){return!!(e&&typeof e==`object`&&`message`in e&&`messages`in e)}function _P(e){return typeof e==`string`||vP(e)}function vP(e){return!!(e&&typeof e==`object`&&`byteLength`in e&&`byteOffset`in e)}var yP=[],bP={allowDangerousHtml:!0},xP=/^(https?|ircs?|mailto|xmpp)$/i,SP=[{from:`astPlugins`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowDangerousHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowNode`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowElement`},{from:`allowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowedElements`},{from:`className`,id:`remove-classname`},{from:`disallowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`disallowedElements`},{from:`escapeHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`includeElementIndex`,id:`#remove-includeelementindex`},{from:`includeNodeIndex`,id:`change-includenodeindex-to-includeelementindex`},{from:`linkTarget`,id:`remove-linktarget`},{from:`plugins`,id:`change-plugins-to-remarkplugins`,to:`remarkPlugins`},{from:`rawSourcePos`,id:`#remove-rawsourcepos`},{from:`renderers`,id:`change-renderers-to-components`,to:`components`},{from:`source`,id:`change-source-to-children`,to:`children`},{from:`sourcePos`,id:`#remove-sourcepos`},{from:`transformImageUri`,id:`#add-urltransform`,to:`urlTransform`},{from:`transformLinkUri`,id:`#add-urltransform`,to:`urlTransform`}];function CP(e){let t=wP(e),n=TP(e);return EP(t.runSync(t.parse(n),n),e)}function wP(e){let t=e.rehypePlugins||yP,n=e.remarkPlugins||yP,r=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...bP}:bP;return lP().use(bM).use(n).use(FN,r).use(t)}function TP(e){let t=e.children||``,n=new tP;return typeof t==`string`?n.value=t:``+t,n}function EP(e,t){let n=t.allowedElements,r=t.allowElement,i=t.components,a=t.disallowedElements,o=t.skipHtml,s=t.unwrapDisallowed,c=t.urlTransform||DP;for(let e of SP)Object.hasOwn(t,e.from)&&``+e.from+(e.to?"use `"+e.to+"` instead":`remove it`)+e.id;return TN(e,l),XO(e,{Fragment:G.Fragment,components:i,ignoreInvalidStyle:!0,jsx:G.jsx,jsxs:G.jsxs,passKeys:!0,passNode:!0});function l(e,t,i){if(e.type===`raw`&&i&&typeof t==`number`)return o?i.children.splice(t,1):i.children[t]={type:`text`,value:e.value},t;if(e.type===`element`){let t;for(t in vk)if(Object.hasOwn(vk,t)&&Object.hasOwn(e.properties,t)){let n=e.properties[t],r=vk[t];(r===null||r.includes(e.tagName))&&(e.properties[t]=c(String(n||``),t,e))}}if(e.type===`element`){let o=n?!n.includes(e.tagName):a?a.includes(e.tagName):!1;if(!o&&r&&typeof t==`number`&&(o=!r(e,t,i)),o&&i&&typeof t==`number`)return s&&e.children?i.children.splice(t,1,...e.children):i.children.splice(t,1),t}}}function DP(e){let t=e.indexOf(`:`),n=e.indexOf(`?`),r=e.indexOf(`#`),i=e.indexOf(`/`);return t===-1||i!==-1&&t>i||n!==-1&&t>n||r!==-1&&t>r||xP.test(e.slice(0,t))?e:``}function OP(e,t){let n=String(e);if(typeof t!=`string`)throw TypeError(`Expected character`);let r=0,i=n.indexOf(t);for(;i!==-1;)r++,i=n.indexOf(t,i+t.length);return r}function kP(e){if(typeof e!=`string`)throw TypeError(`Expected a string`);return e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`)}function AP(e,t,n){let r=mN((n||{}).ignore||[]),i=jP(t),a=-1;for(;++a0?{type:`text`,value:a}:void 0),a===!1?r.lastIndex=n+1:(s!==n&&u.push({type:`text`,value:e.value.slice(s,n)}),Array.isArray(a)?u.push(...a):a&&u.push(a),s=n+d[0].length,l=!0),!r.global)break;d=r.exec(e.value)}return l?(s?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let n=t[0],r=n.indexOf(`)`),i=OP(e,`(`),a=OP(e,`)`);for(;r!==-1&&i>a;)e+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(`)`),a++;return[e,n]}function YP(e,t){let n=e.input.charCodeAt(e.index-1);return(e.index===0||Gk(n)||Wk(n))&&(!t||n!==47)}aF.peek=iF;function XP(){this.buffer()}function ZP(e){this.enter({type:`footnoteReference`,identifier:``,label:``},e)}function QP(){this.buffer()}function $P(e){this.enter({type:`footnoteDefinition`,identifier:``,label:``,children:[]},e)}function eF(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Nk(this.sliceSerialize(e)).toLowerCase(),n.label=t}function tF(e){this.exit(e)}function nF(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Nk(this.sliceSerialize(e)).toLowerCase(),n.label=t}function rF(e){this.exit(e)}function iF(){return`[`}function aF(e,t,n,r){let i=n.createTracker(r),a=i.move(`[^`),o=n.enter(`footnoteReference`),s=n.enter(`reference`);return a+=i.move(n.safe(n.associationId(e),{after:`]`,before:a})),s(),o(),a+=i.move(`]`),a}function oF(){return{enter:{gfmFootnoteCallString:XP,gfmFootnoteCall:ZP,gfmFootnoteDefinitionLabelString:QP,gfmFootnoteDefinition:$P},exit:{gfmFootnoteCallString:eF,gfmFootnoteCall:tF,gfmFootnoteDefinitionLabelString:nF,gfmFootnoteDefinition:rF}}}function sF(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:n,footnoteReference:aF},unsafe:[{character:`[`,inConstruct:[`label`,`phrasing`,`reference`]}]};function n(e,n,r,i){let a=r.createTracker(i),o=a.move(`[^`),s=r.enter(`footnoteDefinition`),c=r.enter(`label`);return o+=a.move(r.safe(r.associationId(e),{before:o,after:`]`})),c(),o+=a.move(`]:`),e.children&&e.children.length>0&&(a.shift(4),o+=a.move((t?` +`:` `)+r.indentLines(r.containerFlow(e,a.current()),t?lF:cF))),s(),o}}function cF(e,t,n){return t===0?e:lF(e,t,n)}function lF(e,t,n){return(n?``:` `)+e}var uF=[`autolink`,`destinationLiteral`,`destinationRaw`,`reference`,`titleQuote`,`titleApostrophe`];hF.peek=gF;function dF(){return{canContainEols:[`delete`],enter:{strikethrough:pF},exit:{strikethrough:mF}}}function fF(){return{unsafe:[{character:`~`,inConstruct:`phrasing`,notInConstruct:uF}],handlers:{delete:hF}}}function pF(e){this.enter({type:`delete`,children:[]},e)}function mF(e){this.exit(e)}function hF(e,t,n,r){let i=n.createTracker(r),a=n.enter(`strikethrough`),o=i.move(`~~`);return o+=n.containerPhrasing(e,{...i.current(),before:o,after:`~`}),o+=i.move(`~~`),a(),o}function gF(){return`~`}function _F(e){return e.length}function vF(e,t){let n=t||{},r=(n.align||[]).concat(),i=n.stringLength||_F,a=[],o=[],s=[],c=[],l=0,u=-1;for(;++ul&&(l=e[u].length);++ac[a])&&(c[a]=e)}t.push(o)}o[u]=t,s[u]=r}let d=-1;if(typeof r==`object`&&`length`in r)for(;++dc[d]&&(c[d]=i),p[d]=i),f[d]=o}o.splice(1,0,f),s.splice(1,0,p),u=-1;let m=[];for(;++u `),a.shift(2);let o=n.indentLines(n.containerFlow(e,a.current()),SF);return i(),o}function SF(e,t,n){return`>`+(n?``:` `)+e}function CF(e,t){return wF(e,t.inConstruct,!0)&&!wF(e,t.notInConstruct,!1)}function wF(e,t,n){if(typeof t==`string`&&(t=[t]),!t||t.length===0)return n;let r=-1;for(;++ro&&(o=a):a=1,i=r+t.length,r=n.indexOf(t,i);return o}function DF(e,t){return!!(t.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function OF(e){let t=e.options.fence||"`";if(t!=="`"&&t!==`~`)throw Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function kF(e,t,n,r){let i=OF(n),a=e.value||``,o=i==="`"?`GraveAccent`:`Tilde`;if(DF(e,n)){let e=n.enter(`codeIndented`),t=n.indentLines(a,AF);return e(),t}let s=n.createTracker(r),c=i.repeat(Math.max(EF(a,i)+1,3)),l=n.enter(`codeFenced`),u=s.move(c);if(e.lang){let t=n.enter(`codeFencedLang${o}`);u+=s.move(n.safe(e.lang,{before:u,after:` `,encode:["`"],...s.current()})),t()}if(e.lang&&e.meta){let t=n.enter(`codeFencedMeta${o}`);u+=s.move(` `),u+=s.move(n.safe(e.meta,{before:u,after:` +`,encode:["`"],...s.current()})),t()}return u+=s.move(` +`),a&&(u+=s.move(a+` +`)),u+=s.move(c),l(),u}function AF(e,t,n){return(n?``:` `)+e}function jF(e){let t=e.options.quote||`"`;if(t!==`"`&&t!==`'`)throw Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function MF(e,t,n,r){let i=jF(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.enter(`definition`),s=n.enter(`label`),c=n.createTracker(r),l=c.move(`[`);return l+=c.move(n.safe(n.associationId(e),{before:l,after:`]`,...c.current()})),l+=c.move(`]: `),s(),!e.url||/[\0- \u007F]/.test(e.url)?(s=n.enter(`destinationLiteral`),l+=c.move(`<`),l+=c.move(n.safe(e.url,{before:l,after:`>`,...c.current()})),l+=c.move(`>`)):(s=n.enter(`destinationRaw`),l+=c.move(n.safe(e.url,{before:l,after:e.title?` `:` +`,...c.current()}))),s(),e.title&&(s=n.enter(`title${a}`),l+=c.move(` `+i),l+=c.move(n.safe(e.title,{before:l,after:i,...c.current()})),l+=c.move(i),s()),o(),l}function NF(e){let t=e.options.emphasis||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}function PF(e){return`&#x`+e.toString(16).toUpperCase()+`;`}function FF(e,t,n){let r=tA(e),i=tA(t);return r===void 0?i===void 0?n===`_`?{inside:!0,outside:!0}:{inside:!1,outside:!1}:i===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:r===1?i===void 0?{inside:!1,outside:!1}:i===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:i===void 0?{inside:!1,outside:!1}:i===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}IF.peek=LF;function IF(e,t,n,r){let i=NF(n),a=n.enter(`emphasis`),o=n.createTracker(r),s=o.move(i),c=o.move(n.containerPhrasing(e,{after:i,before:s,...o.current()})),l=c.charCodeAt(0),u=FF(r.before.charCodeAt(r.before.length-1),l,i);u.inside&&(c=PF(l)+c.slice(1));let d=c.charCodeAt(c.length-1),f=FF(r.after.charCodeAt(0),d,i);f.inside&&(c=c.slice(0,-1)+PF(d));let p=o.move(i);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},s+c+p}function LF(e,t,n){return n.options.emphasis||`*`}function RF(e,t){let n=!1;return TN(e,function(e){if(`value`in e&&/\r?\n|\r/.test(e.value)||e.type===`break`)return n=!0,!1}),!!((!e.depth||e.depth<3)&&bk(e)&&(t.options.setext||n))}function zF(e,t,n,r){let i=Math.max(Math.min(6,e.depth||1),1),a=n.createTracker(r);if(RF(e,n)){let t=n.enter(`headingSetext`),r=n.enter(`phrasing`),o=n.containerPhrasing(e,{...a.current(),before:` +`,after:` +`});return r(),t(),o+` +`+(i===1?`=`:`-`).repeat(o.length-(Math.max(o.lastIndexOf(`\r`),o.lastIndexOf(` +`))+1))}let o=`#`.repeat(i),s=n.enter(`headingAtx`),c=n.enter(`phrasing`);a.move(o+` `);let l=n.containerPhrasing(e,{before:`# `,after:` +`,...a.current()});return/^[\t ]/.test(l)&&(l=PF(l.charCodeAt(0))+l.slice(1)),l=l?o+` `+l:o,n.options.closeAtx&&(l+=` `+o),c(),s(),l}BF.peek=VF;function BF(e){return e.value||``}function VF(){return`<`}HF.peek=UF;function HF(e,t,n,r){let i=jF(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.enter(`image`),s=n.enter(`label`),c=n.createTracker(r),l=c.move(`![`);return l+=c.move(n.safe(e.alt,{before:l,after:`]`,...c.current()})),l+=c.move(`](`),s(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(s=n.enter(`destinationLiteral`),l+=c.move(`<`),l+=c.move(n.safe(e.url,{before:l,after:`>`,...c.current()})),l+=c.move(`>`)):(s=n.enter(`destinationRaw`),l+=c.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...c.current()}))),s(),e.title&&(s=n.enter(`title${a}`),l+=c.move(` `+i),l+=c.move(n.safe(e.title,{before:l,after:i,...c.current()})),l+=c.move(i),s()),l+=c.move(`)`),o(),l}function UF(){return`!`}WF.peek=GF;function WF(e,t,n,r){let i=e.referenceType,a=n.enter(`imageReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`![`),l=n.safe(e.alt,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=[],o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function GF(){return`!`}KF.peek=qF;function KF(e,t,n){let r=e.value||``,i="`",a=-1;for(;RegExp("(^|[^`])"+i+"([^`]|$)").test(r);)i+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=` `+r+` `);++a\u007F]/.test(e.url))}YF.peek=XF;function YF(e,t,n,r){let i=jF(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.createTracker(r),s,c;if(JF(e,n)){let t=n.stack;n.stack=[],s=n.enter(`autolink`);let r=o.move(`<`);return r+=o.move(n.containerPhrasing(e,{before:r,after:`>`,...o.current()})),r+=o.move(`>`),s(),n.stack=t,r}s=n.enter(`link`),c=n.enter(`label`);let l=o.move(`[`);return l+=o.move(n.containerPhrasing(e,{before:l,after:`](`,...o.current()})),l+=o.move(`](`),c(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(c=n.enter(`destinationLiteral`),l+=o.move(`<`),l+=o.move(n.safe(e.url,{before:l,after:`>`,...o.current()})),l+=o.move(`>`)):(c=n.enter(`destinationRaw`),l+=o.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...o.current()}))),c(),e.title&&(c=n.enter(`title${a}`),l+=o.move(` `+i),l+=o.move(n.safe(e.title,{before:l,after:i,...o.current()})),l+=o.move(i),c()),l+=o.move(`)`),s(),l}function XF(e,t,n){return JF(e,n)?`<`:`[`}ZF.peek=QF;function ZF(e,t,n,r){let i=e.referenceType,a=n.enter(`linkReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`[`),l=n.containerPhrasing(e,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=[],o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function QF(){return`[`}function $F(e){let t=e.options.bullet||`*`;if(t!==`*`&&t!==`+`&&t!==`-`)throw Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function eI(e){let t=$F(e),n=e.options.bulletOther;if(!n)return t===`*`?`-`:`*`;if(n!==`*`&&n!==`+`&&n!==`-`)throw Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===t)throw Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+n+"`) to be different");return n}function tI(e){let t=e.options.bulletOrdered||`.`;if(t!==`.`&&t!==`)`)throw Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function nI(e){let t=e.options.rule||`*`;if(t!==`*`&&t!==`-`&&t!==`_`)throw Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function rI(e,t,n,r){let i=n.enter(`list`),a=n.bulletCurrent,o=e.ordered?tI(n):$F(n),s=e.ordered?o===`.`?`)`:`.`:eI(n),c=t&&n.bulletLastUsed?o===n.bulletLastUsed:!1;if(!e.ordered){let t=e.children?e.children[0]:void 0;if((o===`*`||o===`-`)&&t&&(!t.children||!t.children[0])&&n.stack[n.stack.length-1]===`list`&&n.stack[n.stack.length-2]===`listItem`&&n.stack[n.stack.length-3]===`list`&&n.stack[n.stack.length-4]===`listItem`&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),nI(n)===o&&t){let t=-1;for(;++t-1?t.start:1)+(n.options.incrementListMarker===!1?0:t.children.indexOf(e))+a);let o=a.length+1;(i===`tab`||i===`mixed`&&(t&&t.type===`list`&&t.spread||e.spread))&&(o=Math.ceil(o/4)*4);let s=n.createTracker(r);s.move(a+` `.repeat(o-a.length)),s.shift(o);let c=n.enter(`listItem`),l=n.indentLines(n.containerFlow(e,s.current()),u);return c(),l;function u(e,t,n){return t?(n?``:` `.repeat(o))+e:(n?a:a+` `.repeat(o-a.length))+e}}function oI(e,t,n,r){let i=n.enter(`paragraph`),a=n.enter(`phrasing`),o=n.containerPhrasing(e,r);return a(),i(),o}var sI=mN([`break`,`delete`,`emphasis`,`footnote`,`footnoteReference`,`image`,`imageReference`,`inlineCode`,`inlineMath`,`link`,`linkReference`,`mdxJsxTextElement`,`mdxTextExpression`,`strong`,`text`,`textDirective`]);function cI(e,t,n,r){return(e.children.some(function(e){return sI(e)})?n.containerPhrasing:n.containerFlow).call(n,e,r)}function lI(e){let t=e.options.strong||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}uI.peek=dI;function uI(e,t,n,r){let i=lI(n),a=n.enter(`strong`),o=n.createTracker(r),s=o.move(i+i),c=o.move(n.containerPhrasing(e,{after:i,before:s,...o.current()})),l=c.charCodeAt(0),u=FF(r.before.charCodeAt(r.before.length-1),l,i);u.inside&&(c=PF(l)+c.slice(1));let d=c.charCodeAt(c.length-1),f=FF(r.after.charCodeAt(0),d,i);f.inside&&(c=c.slice(0,-1)+PF(d));let p=o.move(i+i);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},s+c+p}function dI(e,t,n){return n.options.strong||`*`}function fI(e,t,n,r){return n.safe(e.value,r)}function pI(e){let t=e.options.ruleRepetition||3;if(t<3)throw Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function mI(e,t,n){let r=(nI(n)+(n.options.ruleSpaces?` `:``)).repeat(pI(n));return n.options.ruleSpaces?r.slice(0,-1):r}var hI={blockquote:xF,break:TF,code:kF,definition:MF,emphasis:IF,hardBreak:TF,heading:zF,html:BF,image:HF,imageReference:WF,inlineCode:KF,link:YF,linkReference:ZF,list:rI,listItem:aI,paragraph:oI,root:cI,strong:uI,text:fI,thematicBreak:mI};function gI(){return{enter:{table:_I,tableData:xI,tableHeader:xI,tableRow:yI},exit:{codeText:SI,table:vI,tableData:bI,tableHeader:bI,tableRow:bI}}}function _I(e){let t=e._align;this.enter({type:`table`,align:t.map(function(e){return e===`none`?null:e}),children:[]},e),this.data.inTable=!0}function vI(e){this.exit(e),this.data.inTable=void 0}function yI(e){this.enter({type:`tableRow`,children:[]},e)}function bI(e){this.exit(e)}function xI(e){this.enter({type:`tableCell`,children:[]},e)}function SI(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,CI));let n=this.stack[this.stack.length-1];n.type,n.value=t,this.exit(e)}function CI(e,t){return t===`|`?t:e}function wI(e){let t=e||{},n=t.tableCellPadding,r=t.tablePipeAlign,i=t.stringLength,a=n?` `:`|`;return{unsafe:[{character:`\r`,inConstruct:`tableCell`},{character:` +`,inConstruct:`tableCell`},{atBreak:!0,character:`|`,after:`[ :-]`},{character:`|`,inConstruct:`tableCell`},{atBreak:!0,character:`:`,after:`-`},{atBreak:!0,character:`-`,after:`[:|-]`}],handlers:{inlineCode:f,table:o,tableCell:c,tableRow:s}};function o(e,t,n,r){return l(u(e,n,r),e.align)}function s(e,t,n,r){let i=l([d(e,n,r)]);return i.slice(0,i.indexOf(` +`))}function c(e,t,n,r){let i=n.enter(`tableCell`),o=n.enter(`phrasing`),s=n.containerPhrasing(e,{...r,before:a,after:a});return o(),i(),s}function l(e,t){return vF(e,{align:t,alignDelimiters:r,padding:n,stringLength:i})}function u(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`table`);for(;++i0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}var nL={tokenize:uL,partial:!0};function rL(){return{document:{91:{name:`gfmFootnoteDefinition`,tokenize:sL,continuation:{tokenize:cL},exit:lL}},text:{91:{name:`gfmFootnoteCall`,tokenize:oL},93:{name:`gfmPotentialFootnoteCall`,add:`after`,tokenize:iL,resolveTo:aL}}}}function iL(e,t,n){let r=this,i=r.events.length,a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),o;for(;i--;){let e=r.events[i][1];if(e.type===`labelImage`){o=e;break}if(e.type===`gfmFootnoteCall`||e.type===`labelLink`||e.type===`label`||e.type===`image`||e.type===`link`)break}return s;function s(i){if(!o||!o._balanced)return n(i);let s=Nk(r.sliceSerialize({start:o.end,end:r.now()}));return s.codePointAt(0)!==94||!a.includes(s.slice(1))?n(i):(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(i),e.exit(`gfmFootnoteCallLabelMarker`),t(i))}}function aL(e,t){let n=e.length;for(;n--;)if(e[n][1].type===`labelImage`&&e[n][0]===`enter`){e[n][1];break}e[n+1][1].type=`data`,e[n+3][1].type=`gfmFootnoteCallLabelMarker`;let r={type:`gfmFootnoteCall`,start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},i={type:`gfmFootnoteCallMarker`,start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;let a={type:`gfmFootnoteCallString`,start:Object.assign({},i.end),end:Object.assign({},e[e.length-1][1].start)},o={type:`chunkString`,contentType:`string`,start:Object.assign({},a.start),end:Object.assign({},a.end)},s=[e[n+1],e[n+2],[`enter`,r,t],e[n+3],e[n+4],[`enter`,i,t],[`exit`,i,t],[`enter`,a,t],[`enter`,o,t],[`exit`,o,t],[`exit`,a,t],e[e.length-2],e[e.length-1],[`exit`,r,t]];return e.splice(n,e.length-n+1,...s),e}function oL(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a=0,o;return s;function s(t){return e.enter(`gfmFootnoteCall`),e.enter(`gfmFootnoteCallLabelMarker`),e.consume(t),e.exit(`gfmFootnoteCallLabelMarker`),c}function c(t){return t===94?(e.enter(`gfmFootnoteCallMarker`),e.consume(t),e.exit(`gfmFootnoteCallMarker`),e.enter(`gfmFootnoteCallString`),e.enter(`chunkString`).contentType=`string`,l):n(t)}function l(s){if(a>999||s===93&&!o||s===null||s===91||Hk(s))return n(s);if(s===93){e.exit(`chunkString`);let a=e.exit(`gfmFootnoteCallString`);return i.includes(Nk(r.sliceSerialize(a)))?(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(s),e.exit(`gfmFootnoteCallLabelMarker`),e.exit(`gfmFootnoteCall`),t):n(s)}return Hk(s)||(o=!0),a++,e.consume(s),s===92?u:l}function u(t){return t===91||t===92||t===93?(e.consume(t),a++,l):l(t)}}function sL(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a,o=0,s;return c;function c(t){return e.enter(`gfmFootnoteDefinition`)._container=!0,e.enter(`gfmFootnoteDefinitionLabel`),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),l}function l(t){return t===94?(e.enter(`gfmFootnoteDefinitionMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionMarker`),e.enter(`gfmFootnoteDefinitionLabelString`),e.enter(`chunkString`).contentType=`string`,u):n(t)}function u(t){if(o>999||t===93&&!s||t===null||t===91||Hk(t))return n(t);if(t===93){e.exit(`chunkString`);let n=e.exit(`gfmFootnoteDefinitionLabelString`);return a=Nk(r.sliceSerialize(n)),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),e.exit(`gfmFootnoteDefinitionLabel`),f}return Hk(t)||(s=!0),o++,e.consume(t),t===92?d:u}function d(t){return t===91||t===92||t===93?(e.consume(t),o++,u):u(t)}function f(t){return t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),i.includes(a)||i.push(a),Jk(e,p,`gfmFootnoteDefinitionWhitespace`)):n(t)}function p(e){return t(e)}}function cL(e,t,n){return e.check(lA,t,e.attempt(nL,t,n))}function lL(e){e.exit(`gfmFootnoteDefinition`)}function uL(e,t,n){let r=this;return Jk(e,i,`gfmFootnoteDefinitionIndent`,5);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`gfmFootnoteDefinitionIndent`&&i[2].sliceSerialize(i[1],!0).length===4?t(e):n(e)}}function dL(e){let t=(e||{}).singleTilde,n={name:`strikethrough`,tokenize:i,resolveAll:r};return t??=!0,{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function r(e,t){let n=-1;for(;++n1?r(a):(e.consume(a),o++,c);if(o<2&&!t)return r(a);let l=e.exit(`strikethroughSequenceTemporary`),u=tA(a);return l._open=!u||u===2&&!!s,l._close=!s||s===2&&!!u,n(a)}}}var fL=class{constructor(){this.map=[]}add(e,t,n){pL(this,e,t,n)}consume(e){if(this.map.sort(function(e,t){return e[0]-t[0]}),this.map.length===0)return;let t=this.map.length,n=[];for(;t>0;)--t,n.push(e.slice(this.map[t][0]+this.map[t][1]),this.map[t][2]),e.length=this.map[t][0];n.push(e.slice()),e.length=0;let r=n.pop();for(;r;){for(let t of r)e.push(t);r=n.pop()}this.map.length=0}};function pL(e,t,n,r){let i=0;if(n!==0||r.length!==0){for(;i-1;){let e=r.events[t][1].type;if(e===`lineEnding`||e===`linePrefix`)t--;else break}let i=t>-1?r.events[t][1].type:null,a=i===`tableHead`||i===`tableRow`?S:c;return a===S&&r.parser.lazy[r.now().line]?n(e):a(e)}function c(t){return e.enter(`tableHead`),e.enter(`tableRow`),l(t)}function l(e){return e===124?u(e):(o=!0,a+=1,u(e))}function u(t){return t===null?n(t):Vk(t)?a>1?(a=0,r.interrupt=!0,e.exit(`tableRow`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),p):n(t):Uk(t)?Jk(e,u,`whitespace`)(t):(a+=1,o&&(o=!1,i+=1),t===124?(e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),o=!0,u):(e.enter(`data`),d(t)))}function d(t){return t===null||t===124||Hk(t)?(e.exit(`data`),u(t)):(e.consume(t),t===92?f:d)}function f(t){return t===92||t===124?(e.consume(t),d):d(t)}function p(t){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(t):(e.enter(`tableDelimiterRow`),o=!1,Uk(t)?Jk(e,m,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):m(t))}function m(t){return t===45||t===58?g(t):t===124?(o=!0,e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),h):x(t)}function h(t){return Uk(t)?Jk(e,g,`whitespace`)(t):g(t)}function g(t){return t===58?(a+=1,o=!0,e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),_):t===45?(a+=1,_(t)):t===null||Vk(t)?b(t):x(t)}function _(t){return t===45?(e.enter(`tableDelimiterFiller`),v(t)):x(t)}function v(t){return t===45?(e.consume(t),v):t===58?(o=!0,e.exit(`tableDelimiterFiller`),e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),y):(e.exit(`tableDelimiterFiller`),y(t))}function y(t){return Uk(t)?Jk(e,b,`whitespace`)(t):b(t)}function b(n){return n===124?m(n):n===null||Vk(n)?!o||i!==a?x(n):(e.exit(`tableDelimiterRow`),e.exit(`tableHead`),t(n)):x(n)}function x(e){return n(e)}function S(t){return e.enter(`tableRow`),C(t)}function C(n){return n===124?(e.enter(`tableCellDivider`),e.consume(n),e.exit(`tableCellDivider`),C):n===null||Vk(n)?(e.exit(`tableRow`),t(n)):Uk(n)?Jk(e,C,`whitespace`)(n):(e.enter(`data`),w(n))}function w(t){return t===null||t===124||Hk(t)?(e.exit(`data`),C(t)):(e.consume(t),t===92?T:w)}function T(t){return t===92||t===124?(e.consume(t),w):w(t)}}function _L(e,t){let n=-1,r=!0,i=0,a=[0,0,0,0],o=[0,0,0,0],s=!1,c=0,l,u,d,f=new fL;for(;++nn[2]+1){let t=n[2]+1,r=n[3]-n[2]-1;e.add(t,r,[])}}e.add(n[3]+1,0,[[`exit`,o,t]])}return i!==void 0&&(a.end=Object.assign({},bL(t.events,i)),e.add(i,0,[[`exit`,a,t]]),a=void 0),a}function yL(e,t,n,r,i){let a=[],o=bL(t.events,n);i&&(i.end=Object.assign({},o),a.push([`exit`,i,t])),r.end=Object.assign({},o),a.push([`exit`,r,t]),e.add(n+1,0,a)}function bL(e,t){let n=e[t],r=n[0]===`enter`?`start`:`end`;return n[1][r]}var xL={name:`tasklistCheck`,tokenize:CL};function SL(){return{text:{91:xL}}}function CL(e,t,n){let r=this;return i;function i(t){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(t):(e.enter(`taskListCheck`),e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),a)}function a(t){return Hk(t)?(e.enter(`taskListCheckValueUnchecked`),e.consume(t),e.exit(`taskListCheckValueUnchecked`),o):t===88||t===120?(e.enter(`taskListCheckValueChecked`),e.consume(t),e.exit(`taskListCheckValueChecked`),o):n(t)}function o(t){return t===93?(e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),e.exit(`taskListCheck`),s):n(t)}function s(r){return Vk(r)?t(r):Uk(r)?e.check({tokenize:wL},t,n)(r):n(r)}}function wL(e,t,n){return Jk(e,r,`whitespace`);function r(e){return e===null?n(e):t(e)}}function TL(e){return kk([VI(),rL(),dL(e),hL(),SL()])}var EL={};function DL(e){let t=this,n=e||EL,r=t.data(),i=r.micromarkExtensions||=[],a=r.fromMarkdownExtensions||=[],o=r.toMarkdownExtensions||=[];i.push(TL(n)),a.push(AI()),o.push(jI(n))}function OL(e){let t=e.match(/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/);return t?{frontmatter:t[1].trim(),markdown:e.slice(t[0].length)}:{frontmatter:``,markdown:e}}function kL({content:e}){let{frontmatter:t,markdown:n}=OL(e);return(0,G.jsxs)(`div`,{className:`markdown-preview-shell`,children:[t&&(0,G.jsxs)(`details`,{className:`markdown-frontmatter`,children:[(0,G.jsx)(`summary`,{children:`文档元数据`}),(0,G.jsx)(Db,{code:t,language:`yaml`,filename:`frontmatter.yaml`,showLineNumbers:!1,wrap:!0})]}),(0,G.jsx)(`article`,{className:`markdown-preview`,children:(0,G.jsx)(CP,{remarkPlugins:[DL],components:{pre:({children:e})=>(0,G.jsx)(G.Fragment,{children:e}),code:({className:e,children:t,...n})=>{let r=/language-([\w-]+)/.exec(e||``)?.[1];return r?(0,G.jsx)(Db,{code:String(t).replace(/\n$/,``),language:r,showLineNumbers:!1}):(0,G.jsx)(`code`,{className:e,...n,children:t})},table:({children:e,...t})=>(0,G.jsx)(`div`,{className:`markdown-table-scroll`,children:(0,G.jsx)(`table`,{...t,children:e})}),a:({children:e,...t})=>(0,G.jsx)(`a`,{...t,target:`_blank`,rel:`noreferrer noopener`,children:e})},children:n})})]})}function AL(e){let t=Number(e||0);return t<1024?`${t} B`:t<1048576?`${(t/1024).toFixed(1)} KiB`:`${(t/1024/1024).toFixed(1)} MiB`}async function jL(e,t){let n=await e.text().catch(()=>``);try{return JSON.parse(n)?.error?.message||`${t}(${e.status})`}catch{return`${t}(${e.status})`}}function ML(e){return{bash:`bash`,c:`c`,cpp:`cpp`,css:`css`,go:`go`,h:`c`,html:`markup`,java:`java`,js:`javascript`,json:`json`,jsx:`jsx`,md:`markdown`,mjs:`javascript`,py:`python`,rs:`rust`,sh:`bash`,toml:`toml`,ts:`typescript`,tsx:`tsx`,xml:`markup`,yaml:`yaml`,yml:`yaml`}[e.split(`.`).pop()?.toLowerCase()||``]||`text`}function NL(e){let t={name:``,path:``,directory:!0,children:[]};for(let n of e){let e=n.path.split(`/`).filter(Boolean),r=t;e.forEach((t,i)=>{let a=e.slice(0,i+1).join(`/`),o=ie.name===t&&e.directory===o);s||(s={name:t,path:a,directory:o,file:o?void 0:n,children:[]},r.children.push(s)),r=s})}let n=e=>{e.sort((e,t)=>Number(t.directory)-Number(e.directory)||e.name.localeCompare(t.name)),e.forEach(e=>n(e.children))};return n(t.children),t.children}function PL({files:e,selected:t,onSelect:n}){let r=(0,s.useMemo)(()=>NL(e),[e]),[i,a]=(0,s.useState)(new Set),o=(e,r=0)=>e.map(e=>{let s={"--skill-depth":r};if(e.directory){let t=i.has(e.path);return(0,G.jsxs)(`div`,{role:`none`,children:[(0,G.jsxs)(`button`,{className:`skill-tree-row directory`,type:`button`,role:`treeitem`,style:s,"aria-expanded":!t,onClick:()=>a(t=>{let n=new Set(t);return n.has(e.path)?n.delete(e.path):n.add(e.path),n}),children:[t?(0,G.jsx)(te,{size:13}):(0,G.jsx)(H,{size:13}),(0,G.jsx)(Te,{size:14}),(0,G.jsx)(`span`,{title:e.name,children:e.name})]}),!t&&(0,G.jsx)(`div`,{role:`group`,children:o(e.children,r+1)})]},`dir:${e.path}`)}let c=e.file?.kind===`script`?Se:Ce;return(0,G.jsxs)(`button`,{className:`skill-tree-row file${t===e.path?` active`:``}`,type:`button`,role:`treeitem`,"aria-selected":t===e.path,style:s,onClick:()=>n(e.path),children:[(0,G.jsx)(`span`,{className:`skill-tree-spacer`}),(0,G.jsx)(c,{size:14}),(0,G.jsx)(`span`,{title:e.path,children:e.name})]},`file:${e.path}`)});return(0,G.jsx)(`div`,{className:`skill-file-tree`,role:`tree`,"aria-label":`Skill 文件树`,children:o(r)})}function FL({title:e,endpoint:t,onClose:n}){let[r,i]=(0,s.useState)([]),[a,o]=(0,s.useState)(``),[c,l]=(0,s.useState)(null),[u,d]=(0,s.useState)(!0),[f,p]=(0,s.useState)(!1),[m,h]=(0,s.useState)(``),[_,v]=(0,s.useState)(``),y=(0,s.useRef)(0);return(0,s.useEffect)(()=>{let e=new AbortController;return d(!0),h(``),i([]),o(``),l(null),g(t,{signal:e.signal}).then(async e=>{if(!e.ok)throw Error(await jL(e,`Skill 文件读取失败`));return e.json()}).then(e=>{let t=e.files||[];i(t),o(t.find(e=>e.path===`SKILL.md`)?.path||t[0]?.path||``)}).catch(e=>{e?.name!==`AbortError`&&h(e.message||`Skill 文件读取失败`)}).finally(()=>{e.signal.aborted||d(!1)}),()=>e.abort()},[t]),(0,s.useEffect)(()=>{if(!a){l(null),p(!1);return}let e=new AbortController,n=++y.current;return l(null),p(!0),v(``),g(`${t}?${new URLSearchParams({path:a})}`,{signal:e.signal}).then(async e=>{if(!e.ok)throw Error(await jL(e,`Skill 文件读取失败`));return e.json()}).then(e=>{y.current===n&&l(e)}).catch(e=>{e?.name!==`AbortError`&&y.current===n&&v(e.message||`Skill 文件读取失败`)}).finally(()=>{!e.signal.aborted&&y.current===n&&p(!1)}),()=>e.abort()},[t,a]),(0,G.jsx)(BD,{title:`${e} · 文件`,subtitle:`${r.length} 个文件;只读预览,不会执行脚本。`,wide:!0,onClose:n,children:(0,G.jsxs)(`div`,{className:`skill-preview-layout`,children:[(0,G.jsxs)(`aside`,{className:`skill-preview-sidebar`,children:[u&&(0,G.jsx)(`div`,{className:`skill-file-state`,children:`正在读取目录…`}),!u&&m&&(0,G.jsx)(VD,{kind:`error`,title:`无法读取 Skill 文件`,message:m}),!u&&!m&&r.length===0&&(0,G.jsx)(`div`,{className:`skill-file-state`,children:`Skill 中没有可预览的文件。`}),!u&&!m&&r.length>0&&(0,G.jsx)(PL,{files:r,selected:a,onSelect:o})]}),(0,G.jsxs)(`section`,{className:`skill-preview-pane`,"aria-live":`polite`,children:[(c||a)&&(0,G.jsxs)(`header`,{className:`skill-preview-header`,children:[(0,G.jsx)(`strong`,{title:c?.path||a,children:c?.path||a}),c&&(0,G.jsxs)(`span`,{children:[c.kind,` · `,AL(c.size||0)]})]}),(0,G.jsxs)(`div`,{className:`skill-preview-content`,children:[f&&(0,G.jsx)(`div`,{className:`skill-file-state`,children:`正在读取文件…`}),!f&&_&&(0,G.jsx)(VD,{kind:`error`,title:`无法预览文件`,message:_}),!f&&!_&&c?.kind===`markdown`&&(0,G.jsx)(kL,{content:c.content||``}),!f&&!_&&[`script`,`text`].includes(c?.kind||``)&&(0,G.jsx)(Db,{code:c?.content||``,language:ML(c?.path||a),filename:c?.path||a,showLineNumbers:!0}),!f&&!_&&c?.kind===`binary`&&(0,G.jsx)(`div`,{className:`skill-file-state`,children:`二进制文件不提供内容预览。`}),!f&&!_&&!c&&!a&&(0,G.jsx)(`div`,{className:`skill-file-state`,children:`选择一个文件查看内容。`})]}),c?.truncated&&(0,G.jsx)(`div`,{className:`skill-preview-truncated`,children:`文件较大,仅显示前 512 KiB。`})]})]})})}var IL=new Map([[`avif`,`image/avif`],[`bmp`,`image/bmp`],[`css`,`text/css`],[`csv`,`text/csv`],[`doc`,`application/msword`],[`docx`,`application/vnd.openxmlformats-officedocument.wordprocessingml.document`],[`gif`,`image/gif`],[`gz`,`application/gzip`],[`htm`,`text/html`],[`html`,`text/html`],[`ico`,`image/x-icon`],[`jpeg`,`image/jpeg`],[`jpg`,`image/jpeg`],[`js`,`application/javascript`],[`json`,`application/json`],[`md`,`text/markdown`],[`mjs`,`application/javascript`],[`mp3`,`audio/mpeg`],[`mp4`,`video/mp4`],[`ogg`,`audio/ogg`],[`pdf`,`application/pdf`],[`png`,`image/png`],[`ppt`,`application/powerpoint`],[`pptx`,`application/vnd.openxmlformats-officedocument.presentationml.presentation`],[`svg`,`image/svg+xml`],[`tif`,`image/tiff`],[`tiff`,`image/tiff`],[`txt`,`text/plain`],[`wasm`,`application/wasm`],[`wav`,`audio/x-wav`],[`weba`,`audio/webm`],[`webm`,`video/webm`],[`webp`,`image/webp`],[`xls`,`application/vnd.ms-excel`],[`xlsx`,`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`],[`xml`,`application/xml`],[`zip`,`application/zip`]]),LL=class extends Error{constructor(e){super(`DataTransferItem is not a file`),this.item=e,this.name=`UnexpectedObjectError`}};function RL(e,t,n){let r=e,{webkitRelativePath:i}=e,a=typeof t==`string`?t:typeof i==`string`&&i.length>0?i:`./${e.name}`;return typeof r.path!=`string`&&BL(r,`path`,a),n!==void 0&&Object.defineProperty(r,"handle",{value:n,writable:!1,configurable:!1,enumerable:!0}),BL(r,`relativePath`,a),r}function zL(e,t=IL){let{name:n}=e;if(n&&n.lastIndexOf(`.`)!==-1&&!e.type){let r=n.split(`.`).pop().toLowerCase(),i=t.get(r);i&&Object.defineProperty(e,"type",{value:i,writable:!1,configurable:!1,enumerable:!0})}return e}function BL(e,t,n){Object.defineProperty(e,t,{value:n,writable:!1,configurable:!1,enumerable:!0})}var VL=[`.DS_Store`,`Thumbs.db`];async function HL(e,{mimeTypes:t=IL}={}){return(await UL(e)).map(e=>e instanceof File?zL(e,t):e)}async function UL(e){return qL(e)&&WL(e.dataTransfer)?XL(e.dataTransfer,e.type):GL(e)?ZL(e.clipboardData):KL(e)?JL(e):Array.isArray(e)&&e.every(e=>`getFile`in e&&typeof e.getFile==`function`)?YL(e):[]}function WL(e){return qL(e)}function GL(e){return qL(e)&&WL(e.clipboardData)}function KL(e){return qL(e)&&qL(e.target)}function qL(e){return typeof e==`object`&&!!e}function JL(e){return $L(e.target.files).map(e=>RL(e))}async function YL(e){return(await Promise.all(e.map(e=>e.getFile()))).map(e=>RL(e))}async function XL(e,t){let n=$L(e.items).filter(e=>e.kind===`file`);return t===`drop`?QL(tR(await Promise.all(n.map(eR)))):n}function ZL(e){let t=$L(e.items).filter(e=>e.kind===`file`).map(e=>e.getAsFile()).filter(e=>e!==null);return QL((t.length>0?t:$L(e.files)).map(e=>RL(e)))}function QL(e){return e.filter(e=>VL.indexOf(e.name)===-1)}function $L(e){return e===null?[]:Array.from(e)}async function eR(e){if(typeof e.webkitGetAsEntry!=`function`)return nR(e);let t=e.webkitGetAsEntry();if(t?.isDirectory){let n=await rR(e);return n?.kind===`directory`?iR(n,`/${n.name}`):oR(t)}return nR(e,t)}function tR(e){let t=[];for(let n of e)Array.isArray(n)?t.push(...tR(n)):t.push(n);return t}async function nR(e,t){let n=e.getAsFile(),r=await rR(e);if(r!=null){let e=n??await r.getFile();return e.handle=r,RL(e)}if(!n)throw new LL(e);return RL(n,t?.fullPath??void 0)}async function rR(e){if(globalThis.isSecureContext&&typeof e.getAsFileSystemHandle==`function`)return e.getAsFileSystemHandle()}async function iR(e,t){let n=[];for await(let r of e.values()){let e=`${t}/${r.name}`;if(r.kind===`directory`)n.push(...await iR(r,e));else{let t=await r.getFile();n.push(RL(t,e,r))}}return n}async function aR(e){return e.isDirectory?oR(e):sR(e)}function oR(e){let t=e.createReader();return new Promise((e,n)=>{let r=[];function i(){t.readEntries(async t=>{if(t.length){let e=Promise.all(t.map(aR));r.push(e),i()}else try{e(await Promise.all(r))}catch(e){n(e)}},e=>{n(e)})}i()})}async function sR(e){return new Promise((t,n)=>{e.file(n=>{t(RL(n,e.fullPath))},e=>{n(e)})})}var cR=t(n((e=>{e.__esModule=!0,e.default=function(e,t){if(e&&t){var n=Array.isArray(t)?t:t.split(`,`);if(n.length===0)return!0;var r=e.name||``,i=(e.type||``).toLowerCase(),a=i.replace(/\/.*$/,``);return n.some(function(e){var t=e.trim().toLowerCase();return t.charAt(0)===`.`?r.toLowerCase().endsWith(t):t.endsWith(`/*`)?a===t.replace(/\/.*$/,``):i===t})}return!0}}))(),1),lR=typeof cR.default==`function`?cR.default:cR.default.default,uR=`file-invalid-type`,dR=`file-too-large`,fR=`file-too-small`,pR=`too-many-files`;function mR(e=``){let t=e.split(`,`);return{code:uR,message:`File type must be ${t.length>1?`one of ${t.join(`, `)}`:t[0]}`}}var hR=[`KB`,`MB`,`GB`,`TB`,`PB`];function gR(e){if(e<1024)return`${e} ${e===1?`byte`:`bytes`}`;let t=e/1024,n=0;for(;t>=1024&&nn)return[!1,_R(n)];if(e.sizen)return[!1,_R(n)]}return[!0,null]}function CR(e){return e!=null}function wR(e){return e!=null&&typeof e.then==`function`}function TR({files:e,accept:t,minSize:n,maxSize:r,multiple:i,maxFiles:a=0,validator:o,getErrorMessage:s}){let c=[],l=[],u=(e,t)=>s&&typeof File<`u`&&t instanceof File?{...e,message:s(e,t)}:e;e.forEach(e=>{let[i,a]=xR(e,t),[o,s]=SR(e,n,r);i&&o?c.push(e):l.push({file:e,errors:[a,s].filter(e=>e!=null).map(t=>u(t,e))})});let d=i?a>=1?a:1/0:1;return c.length>d&&c.slice(d).forEach(e=>{l.push({file:e,errors:[u(yR,e)]})}),l.length>0?{verdict:`reject`,rejections:l}:{verdict:o?`unknown`:`accept`,rejections:l}}function ER(e){return typeof e.isPropagationStopped==`function`?e.isPropagationStopped():e.cancelBubble!==void 0&&e.cancelBubble}function DR(e){let t=e.dataTransfer??e.clipboardData;return t?Array.prototype.some.call(t.types,e=>e===`Files`||e===`application/x-moz-file`)||Array.prototype.some.call(t.items??[],OR):!!e.target&&!!e.target.files}function OR(e){return typeof e==`object`&&!!e&&e.kind===`file`}function kR(e){e.preventDefault()}function AR(e){return e.indexOf(`MSIE`)!==-1||e.indexOf(`Trident/`)!==-1}function jR(e){return e.indexOf(`Edge/`)!==-1}function MR(e=window.navigator.userAgent){return AR(e)||jR(e)}function NR(...e){return(t,...n)=>e.some(e=>(!ER(t)&&e&&e(t,...n),ER(t)))}function PR(){return`showOpenFilePicker`in window}function FR(e){return Array.isArray(e)?e:typeof e==`string`?[e]:[]}function IR(e){if(CR(e))return Array.isArray(e)?e.filter(e=>CR(e)&&CR(e.accept)):[{accept:e}]}function LR(e){let t=[],n=Object.keys(e);for(let n of Object.values(e))for(let e of FR(n))t.includes(e)||t.push(e);return t.length>0?t.join(`, `):n.length>0?n.join(`, `):`Files`}function RR(e){let t=IR(e);if(!CR(t))return;let n={};for(let e of t)for(let[t,r]of Object.entries(e.accept)){let e=n[t]??(n[t]=[]);for(let t of FR(r))e.includes(t)||e.push(t)}return n}function zR(e){let t=IR(e);if(!CR(t))return;let n=t.map(e=>{let t=Object.entries(e.accept).filter(([e,t])=>{let n=!0;return WR(e)||(console.warn(`Skipped "${e}" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.`),n=!1),(!(Array.isArray(t)||typeof t==`string`)||!FR(t).every(KR))&&(console.warn(`Skipped "${e}" because an invalid file extension was provided.`),n=!1),n}).reduce((e,[t,n])=>(e[t]=FR(n),e),{});return{description:CR(e.description)&&e.description!==``?e.description:LR(t),accept:t}}).filter(e=>Object.keys(e.accept).length>0);return n.length>0?n:void 0}function BR(e,{omitWildcardMimeTypesWithExtensions:t=!1}={}){if(CR(e))return Object.entries(e).reduce((e,[n,r])=>{let i=FR(r);return t&&GR(n)&&i.some(KR)?e.push(...i):e.push(n,...i),e},[]).filter(e=>WR(e)||KR(e)).join(`,`)}function VR(e){return e instanceof DOMException&&(e.name===`AbortError`||e.code===e.ABORT_ERR)}function HR(e){return e instanceof DOMException&&(e.name===`SecurityError`||e.code===e.SECURITY_ERR)}function UR(e){return e instanceof DOMException&&e.name===`NotAllowedError`}function WR(e){return e===`audio/*`||e===`video/*`||e===`image/*`||e===`text/*`||e===`application/*`||/\w+\/[-+.\w]+/g.test(e)}function GR(e){return e.endsWith(`/*`)}function KR(e){return/^.*\.[\w]+$/.test(e)}var qR=(0,s.forwardRef)(({children:e,...t},n)=>{let{open:r,...i}=YR(t);return(0,s.useImperativeHandle)(n,()=>({open:r}),[r]),(0,G.jsx)(G.Fragment,{children:e?.({...i,open:r})})});qR.displayName=`Dropzone`;var JR={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,isDragUnknown:!1,isDragGlobal:!1,isProcessing:!1,acceptedFiles:[],fileRejections:[],dragFileRejections:[]};function YR(e={}){let{accept:t,disabled:n=!1,getFilesFromEvent:r=HL,maxSize:i=1/0,minSize:a=0,multiple:o=!0,maxFiles:c=0,onDragEnter:l,onDragLeave:u,onDragOver:d,onDrop:f,onDropAccepted:p,onDropRejected:m,onFileDialogCancel:h,onFileDialogOpen:g,useFsAccessApi:_=!1,autoFocus:v=!1,preventDropOnDocument:y=!0,noClick:b=!1,noKeyboard:x=!1,noDrag:S=!1,noDragEventsBubbling:C=!1,noPaste:w=!1,onError:T,validator:E,getErrorMessage:D}=e,O=(0,s.useMemo)(()=>RR(t),[t]),k=(0,s.useMemo)(()=>BR(O),[O]),A=(0,s.useMemo)(()=>BR(O,{omitWildcardMimeTypesWithExtensions:!0}),[O]),j=(0,s.useMemo)(()=>zR(t),[t]),M=(0,s.useMemo)(()=>typeof g==`function`?g:ZR,[g]),N=(0,s.useMemo)(()=>typeof h==`function`?h:ZR,[h]),P=(0,s.useRef)(null),F=(0,s.useRef)(null),[I,L]=(0,s.useReducer)(XR,JR),{isFocused:R,isFileDialogActive:z}=I,B=(0,s.useRef)(z);B.current=z;let V=(0,s.useRef)(null),H=(0,s.useCallback)(()=>{V.current?.abort();let e=new AbortController;return V.current=e,L({type:`setProcessing`,isProcessing:!0}),e.signal},[]),ee=(0,s.useCallback)(e=>{e.aborted||L({type:`setProcessing`,isProcessing:!1})},[]),te=(0,s.useRef)(typeof window<`u`&&window.isSecureContext&&_&&PR()),ne=()=>{!te.current&&z&&setTimeout(()=>{if(F.current){let{files:e}=F.current;e?.length||(L({type:`closeDialog`}),N())}},300)};(0,s.useEffect)(()=>(window.addEventListener(`focus`,ne,!1),()=>{window.removeEventListener(`focus`,ne,!1)}),[F,z,N,te]);let U=(0,s.useRef)([]),re=(0,s.useRef)([]),ie=e=>{P.current&&e.target&&P.current.contains(e.target)&&e.defaultPrevented||(e.preventDefault(),U.current=[])};(0,s.useEffect)(()=>(y&&(document.addEventListener(`dragover`,kR,!1),document.addEventListener(`drop`,ie,!1)),()=>{y&&(document.removeEventListener(`dragover`,kR),document.removeEventListener(`drop`,ie))}),[P,y]),(0,s.useEffect)(()=>{let e=e=>{e.target&&(re.current=[...re.current,e.target]),DR(e)&&L({isDragGlobal:!0,type:`setDragGlobal`})},t=e=>{re.current=re.current.filter(t=>t!==e.target&&t!==null),!(re.current.length>0)&&L({isDragGlobal:!1,type:`setDragGlobal`})},n=()=>{re.current=[],L({isDragGlobal:!1,type:`setDragGlobal`})},r=()=>{re.current=[],L({isDragGlobal:!1,type:`setDragGlobal`})};return document.addEventListener(`dragenter`,e,!1),document.addEventListener(`dragleave`,t,!1),document.addEventListener(`dragend`,n,!1),document.addEventListener(`drop`,r,!1),()=>{document.removeEventListener(`dragenter`,e),document.removeEventListener(`dragleave`,t),document.removeEventListener(`dragend`,n),document.removeEventListener(`drop`,r)}},[P]),(0,s.useEffect)(()=>(!n&&v&&P.current&&P.current.focus(),()=>{}),[P,v,n]);let ae=(0,s.useCallback)(e=>{T?T(e):console.error(e)},[T]),oe=(0,s.useCallback)(e=>{e.preventDefault(),e.persist?.(),be(e),!B.current&&(U.current=[...U.current,e.target],DR(e)&&Promise.resolve(r(e)).then(t=>{if(ER(e)&&!C)return;let n=t.length>0?TR({files:t,accept:k,minSize:a,maxSize:i,multiple:o,maxFiles:c,validator:E,getErrorMessage:D}):null;L({isDragAccept:n?.verdict===`accept`,isDragReject:n?.verdict===`reject`,isDragUnknown:n?.verdict===`unknown`,isDragActive:!0,dragFileRejections:n?.rejections??[],type:`setDraggedFiles`}),l&&l(e)}).catch(e=>ae(e)))},[r,l,ae,C,k,a,i,o,c,E,D]),se=(0,s.useCallback)(e=>{if(e.preventDefault(),e.persist?.(),be(e),B.current)return!1;let t=DR(e);if(t&&e.dataTransfer)try{e.dataTransfer.dropEffect=`copy`}catch{}return t&&d&&d(e),!1},[d,C]),ce=(0,s.useCallback)(e=>{e.preventDefault(),e.persist?.(),be(e);let t=U.current.filter(e=>P.current?.contains(e)),n=t.indexOf(e.target);n!==-1&&t.splice(n,1),U.current=t,!(t.length>0)&&(L({type:`setDraggedFiles`,isDragActive:!1,isDragAccept:!1,isDragReject:!1,isDragUnknown:!1,dragFileRejections:[]}),DR(e)&&u&&u(e))},[P,u,C]),le=(0,s.useCallback)(async(e,t,n)=>{let r=(e,t)=>D?{...e,message:D(e,t)}:e,s=e=>{let n=[],i=[];e.forEach(({file:e,accepted:t,acceptError:a,sizeMatch:o,sizeError:s,customErrors:c})=>{if(t&&o&&!c)n.push(e);else{let t=[a,s];c&&(t=t.concat(c)),i.push({file:e,errors:t.filter(e=>e!=null).map(t=>r(t,e))})}});let a=o?c>=1?c:1/0:1;n.length>a&&n.splice(a).forEach(e=>{i.push({file:e,errors:[r(yR,e)]})}),L({acceptedFiles:n,fileRejections:i,type:`setFiles`}),f&&f(n,i,t),i.length>0&&m&&m(i,t),n.length>0&&p&&p(n,t)},l=e.map(e=>{let[t,n]=xR(e,A),[r,o]=SR(e,a,i);return{file:e,accepted:t,acceptError:n,sizeMatch:r,sizeError:o,customErrors:E?E(e):null}});if(!l.some(({customErrors:e})=>wR(e))){s(l);return}let u;try{u=await Promise.all(l.map(async({customErrors:e,...t})=>({...t,customErrors:await e})))}catch(e){n.aborted||(ee(n),ae(e));return}n.aborted||s(u)},[L,o,A,a,i,c,f,p,m,E,D,ae,ee]),ue=(0,s.useCallback)(e=>{if(e.preventDefault(),e.persist?.(),be(e),U.current=[],!(B.current&&e.dataTransfer)&&(L({type:`reset`}),DR(e))){let t=H();Promise.resolve(r(e)).then(n=>{if(!t.aborted){if(ER(e)&&!C){ee(t);return}return le(n,e,t)}}).catch(e=>{t.aborted||(ee(t),ae(e))})}},[r,le,ae,C,H,ee]),de=(0,s.useCallback)(e=>{if(!DR(e))return;e.preventDefault(),e.persist?.(),be(e);let t=H();Promise.resolve(r(e)).then(n=>{if(!t.aborted){if(ER(e)&&!C){ee(t);return}return le(n,e,t)}}).catch(e=>{t.aborted||(ee(t),ae(e))})},[r,le,ae,C,H,ee]),W=(0,s.useCallback)(()=>{if(te.current){L({type:`openDialog`}),M();let e={multiple:o,types:j},t;window.showOpenFilePicker(e).then(e=>(t=H(),r(e))).then(e=>{if(L({type:`closeDialog`}),!t.aborted)return le(e,null,t)}).catch(e=>{t&&ee(t),VR(e)?(N(e),L({type:`closeDialog`})):HR(e)||UR(e)?(te.current=!1,F.current?(F.current.value=``,F.current.click()):ae(Error(`Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no was provided.`))):ae(e)});return}F.current&&(L({type:`openDialog`}),M(),F.current.value=``,F.current.click())},[L,M,N,_,le,ae,j,o,H,ee]),fe=(0,s.useCallback)(e=>{P.current?.isEqualNode(e.target)&&(e.key===` `||e.key===`Enter`||e.keyCode===32||e.keyCode===13)&&(e.preventDefault(),W())},[P,W]),pe=(0,s.useCallback)(()=>{L({type:`focus`})},[]),me=(0,s.useCallback)(()=>{L({type:`blur`})},[]),he=(0,s.useCallback)(()=>{b||(MR()?setTimeout(W,0):W())},[b,W]),ge=e=>n?null:e,_e=e=>x?null:ge(e),ve=e=>S?null:ge(e),ye=e=>w?null:ge(e),be=e=>{C&&e.stopPropagation()},xe=(0,s.useMemo)(()=>({refKey:e=`ref`,role:t,onKeyDown:r,onFocus:i,onBlur:a,onClick:o,onDragEnter:s,onDragOver:c,onDragLeave:l,onDrop:u,onPaste:d,...f}={})=>({onKeyDown:_e(NR(r,fe)),onFocus:_e(NR(i,pe)),onBlur:_e(NR(a,me)),onClick:ge(NR(o,he)),onDragEnter:ve(NR(s,oe)),onDragOver:ve(NR(c,se)),onDragLeave:ve(NR(l,ce)),onDrop:ve(NR(u,ue)),onPaste:ye(NR(d,de)),role:typeof t==`string`&&t!==``?t:`presentation`,[e]:P,...!n&&!x?{tabIndex:0}:{},...n?{"aria-disabled":!0}:{},...f}),[P,fe,pe,me,he,oe,se,ce,ue,de,x,S,w,n]),Se=(0,s.useCallback)(e=>{e.stopPropagation()},[]),Ce=(0,s.useMemo)(()=>({refKey:e=`ref`,onChange:t,onClick:n,...r}={})=>({accept:A,multiple:o,type:`file`,"aria-label":`file upload`,style:{border:0,display:`block`,height:0,margin:0,opacity:0,overflow:`hidden`,padding:0,width:0},onChange:ge(NR(t,ue)),onClick:ge(NR(n,Se)),tabIndex:-1,[e]:F,...r}),[F,t,o,ue,n]);return{...I,isFocused:R&&!n,getRootProps:xe,getInputProps:Ce,rootRef:P,inputRef:F,open:ge(W)}}function XR(e,t){switch(t.type){case`focus`:return{...e,isFocused:!0};case`blur`:return{...e,isFocused:!1};case`openDialog`:return{...JR,isFileDialogActive:!0};case`closeDialog`:return{...e,isFileDialogActive:!1};case`setDraggedFiles`:return{...e,isDragActive:t.isDragActive,isDragAccept:t.isDragAccept,isDragReject:t.isDragReject,isDragUnknown:t.isDragUnknown,dragFileRejections:t.dragFileRejections};case`setProcessing`:return{...e,isProcessing:t.isProcessing};case`setFiles`:return{...e,acceptedFiles:t.acceptedFiles,fileRejections:t.fileRejections,dragFileRejections:[],isProcessing:!1,isDragReject:!1,isDragUnknown:!1};case`setDragGlobal`:return{...e,isDragGlobal:t.isDragGlobal};case`reset`:return{...JR};default:return e}}function ZR(){}function QR(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(+(e<10240))} KiB`:`${(e/1048576).toFixed(1)} MiB`}function $R(e){let t=e.errors[0]?.code;return t===`file-invalid-type`?`文件类型不受支持,请重新选择。`:t===`file-too-large`?`文件超过允许大小,请重新选择。`:t===`too-many-files`?`一次只能选择一个文件。`:e.errors[0]?.message||`文件无法读取,请重新选择。`}function ez({accept:e,maxSize:t,file:n,onFile:r,onError:i,ariaLabel:a=`选择文件`,hint:o=`拖放文件到这里,或点击选择`}){let{getRootProps:s,getInputProps:c,isDragActive:l,isDragReject:u,open:d}=YR({accept:e,maxSize:t,multiple:!1,noClick:!!n,onDropAccepted:e=>{i(``),r(e[0]||null)},onDropRejected:e=>{r(null),i($R(e[0]))}});return(0,G.jsxs)(`div`,{...s({className:`studio-file-dropzone${l?` dragging`:``}${u?` rejected`:``}${n?` has-file`:``}`}),children:[(0,G.jsx)(`input`,{...c({"aria-label":a})}),n?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`studio-file-icon`,children:(0,G.jsx)(Se,{size:20})}),(0,G.jsxs)(`span`,{className:`studio-file-copy`,children:[(0,G.jsx)(`strong`,{title:n.name,children:n.name}),(0,G.jsxs)(`small`,{children:[QR(n.size),` · 已准备检查`]})]}),(0,G.jsxs)(`span`,{className:`studio-file-actions`,children:[(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`替换 ${n.name}`,title:`替换文件`,onClick:e=>{e.stopPropagation(),d()},children:(0,G.jsx)(et,{size:14})}),(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`移除 ${n.name}`,title:`移除文件`,onClick:e=>{e.stopPropagation(),r(null)},children:(0,G.jsx)(bt,{size:15})})]})]}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`studio-file-icon`,children:(0,G.jsx)(we,{size:20})}),(0,G.jsxs)(`span`,{className:`studio-file-copy`,children:[(0,G.jsx)(`strong`,{children:l?`松开即可选择`:o}),(0,G.jsx)(`small`,{children:`文件只会先做只读检查,确认后才写入 Catalog。`})]})]})]})}var tz=`def query_order( + order_id: str, + include_history: bool = False, +) -> dict[str, object]: + """查询订单状态,并按需返回流转记录。""" + result: dict[str, object] = { + "order_id": order_id, + "status": "processing", + } + if include_history: + result["history"] = ["created", "paid"] + return result +`;function nz(){let[e,t]=(0,s.useState)(!1),n=(0,s.useId)();return(0,G.jsxs)(`section`,{className:`python-tool-example`,"aria-label":`Python Tool 编写帮助`,children:[(0,G.jsxs)(`button`,{className:`python-tool-example-trigger`,type:`button`,"aria-label":e?`收起编写示例`:`查看编写示例`,"aria-expanded":e,"aria-controls":n,onClick:()=>t(e=>!e),children:[(0,G.jsx)(M,{size:17,"aria-hidden":`true`}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`Python Tool 怎么写?`}),(0,G.jsx)(`small`,{children:`查看可复制的函数样例与约定`})]}),(0,G.jsx)(H,{className:`python-tool-example-chevron`,size:17,"aria-hidden":`true`})]}),e&&(0,G.jsxs)(`div`,{id:n,className:`python-tool-example-panel`,role:`region`,"aria-label":`Python Tool 编写示例`,children:[(0,G.jsx)(Db,{code:tz,language:`python`,filename:`tool_example.py`,wrap:!0,showLineNumbers:!0}),(0,G.jsxs)(`ul`,{className:`python-tool-example-rules`,children:[(0,G.jsx)(`li`,{children:`公开函数需定义在模块顶层,同步与异步函数均可。`}),(0,G.jsx)(`li`,{children:`建议提供类型注解和 docstring,方便生成清晰的 Tool Contract。`}),(0,G.jsx)(`li`,{children:`返回值应可 JSON 序列化;模块导入阶段不要执行有副作用的逻辑。`})]})]})]})}var rz=eE().trim().min(1,`请填写显示名称`).max(128,`显示名称不能超过 128 个字符`),iz=eE().trim().min(2,`资源标识至少填写 2 个字符`).max(128,`资源标识不能超过 128 个字符`).regex(/^[a-z][a-z0-9._-]*$/,`资源标识只能包含小写字母、数字、点、下划线和连字符`),az=eE().trim().min(1,`请填写 Python 标识`).max(128,`Python 标识不能超过 128 个字符`).regex(/^[A-Za-z_][A-Za-z0-9_]*$/,`请输入有效的 Python 标识`),oz=eE().trim().url(`请输入有效的接口地址`).max(1024,`接口地址不能超过 1024 个字符`),sz=eE().trim().max(512,`凭证引用不能超过 512 个字符`).regex(/^env:\/\/[A-Za-z_][A-Za-z0-9_]*$/,`凭证引用需使用 env://环境变量名`),cz=eE().trim().max(4096,`描述不能超过 4096 个字符`).default(``),lz=PE({name:iz,displayName:rz,model:eE().trim().min(1,`请填写模型 ID`).max(256,`模型 ID 不能超过 256 个字符`),endpointUrl:oz,credentialRef:sz,description:cz.optional(),apiKey:eE().max(16384,`API Key 不能超过 16384 个字符`).default(``),temperature:fD().min(0,`temperature 需在 0-2 之间`).max(2,`temperature 需在 0-2 之间`).default(.2),maxTokens:fD().int(`max_tokens 需为 1-131072 的整数`).min(1,`max_tokens 需为 1-131072 的整数`).max(131072,`max_tokens 需为 1-131072 的整数`).default(2048),addressMode:BE([`endpoint`,`base`]).default(`endpoint`),wireApi:BE([``,`chat`,`responses`]).default(``)}),uz=PE({displayName:rz,name:iz,transport:BE([`stdio`,`sse`,`http`,`streamable-http`]),endpointUrl:eE().trim().max(1024,`Server URL 不能超过 1024 个字符`).default(``),command:eE().trim().max(4096,`Command 不能超过 4096 个字符`).default(``),args:eE().trim().max(8192,`Arguments 不能超过 8192 个字符`).default(``),apiKeyName:IE([HE(``),eE().trim().regex(/^[A-Za-z_][A-Za-z0-9_]*$/,`环境变量名需为合法标识符`)]).default(``),apiKeyValue:eE().max(16384,`API Key 不能超过 16384 个字符`).default(``),description:cz}).superRefine((e,t)=>{if(e.transport===`stdio`){e.command||t.addIssue({code:`custom`,path:[`command`],message:`请填写 Command`});return}if(!e.endpointUrl){t.addIssue({code:`custom`,path:[`endpointUrl`],message:`请填写 Server URL`});return}oE().safeParse(e.endpointUrl).success||t.addIssue({code:`custom`,path:[`endpointUrl`],message:`请输入有效的 Server URL`})}),dz=PE({displayName:rz,name:az,callableName:az,description:eE().trim().max(1024,`描述不能超过 1024 个字符`).default(``),sourceMode:BE([`upload`,`workspace`]).default(`upload`),sourcePath:eE().trim().max(4096,`工作区路径不能超过 4096 个字符`).default(``)}).superRefine((e,t)=>{e.sourceMode===`workspace`&&!e.sourcePath&&t.addIssue({code:`custom`,path:[`sourcePath`],message:`请填写工作区 Python 文件`})}),fz=PE({value:eE().max(16384,`API Key 不能超过 16384 个字符`)}),pz=PE({sandbox:BE([`read-only`,`read_only`,`workspace-write`,`workspace-write-auto`,`full-access`]),buildAfterCreate:EE(),codexProxy:BE([`auto`,`forced`,`direct`]),cloudRegion:eE().trim().max(128,`Region 不能超过 128 个字符`).default(``),cloudBucket:eE().trim().max(128,`KS3 Bucket 不能超过 128 个字符`).default(``),cloudAccessKey:eE().trim().max(256,`Access Key 不能超过 256 个字符`).default(``),cloudSecretKey:eE().trim().max(256,`Secret Key 不能超过 256 个字符`).default(``),cloudAccountId:eE().trim().max(128,`Account ID 不能超过 128 个字符`).default(``)});function mz(e){return e.status===`ready`||e.status===`conflict`}function hz(e){return new Set(e.filter(mz).map(e=>e.candidateId))}async function gz({candidates:e,selectedIds:t,overwriteIds:n,commit:r,onResult:i}){let a=e.filter(e=>t.has(e.candidateId)&&mz(e)),o=[];for(let e of a){let t;try{let i=await r(e,n.has(e.candidateId));t={candidateId:e.candidateId,status:`succeeded`,value:i}}catch(n){t={candidateId:e.candidateId,status:`failed`,error:n instanceof Error?n.message:String(n)}}o.push(t),i?.(t,o.length,a.length)}return{results:o,succeededIds:o.filter(e=>e.status===`succeeded`).map(e=>e.candidateId),failedIds:o.filter(e=>e.status===`failed`).map(e=>e.candidateId)}}var _z={model:{title:`模型`,description:`管理模型端点和凭据引用。`,addLabel:`配置模型`,headings:[`发现来源`,`上下文窗口`,`输入模态`],icon:ge},tool:{title:`Tool`,description:`管理结构化 Tool Contract、权限和审批策略。`,addLabel:`添加 Python Tool`,headings:[`来源`,`Tool 分组`,`权限 / 边界`],icon:yt},mcp:{title:`MCP`,description:`连接、探测并复用 MCP Server。`,addLabel:`添加资源`,headings:[`来源`,`版本`,`说明`],icon:Ve},skill:{title:`Skill`,description:`安装版本化 Skill,并在构建时锁定内容摘要。`,addLabel:`发现 Skill`,headings:[`来源`,`版本`,`说明`],icon:ct}},vz={provider:`模型服务`,builtin:`ksadk 内置`,local:`工作区自定义`,market:`市场`},yz=20;async function bz(e,t){let n=await e.text().catch(()=>``);try{return JSON.parse(n)?.error?.message||`${t}(${e.status})`}catch{return`${t}(${e.status})`}}function xz(e){return e.requiredSecretRefs?.[0]||e.contract?.credentialRef||``}function Sz(e){return e.replace(/^env:\/\//,``)}function Cz(e){let t=Number(e||0);return t<1024?`${t} B`:t<1048576?`${(t/1024).toFixed(1)} KiB`:`${(t/1024/1024).toFixed(1)} MiB`}function wz({kind:e,onKindChange:t,refreshTick:n}){let[r,i]=(0,s.useState)([]),[a,o]=(0,s.useState)(``),c=(0,s.useDeferredValue)(a),[l,u]=(0,s.useState)(``),[d,f]=(0,s.useState)(``),[p,m]=(0,s.useState)(`default`),[h,_]=(0,s.useState)(yz),[v,y]=(0,s.useState)(0),[b,x]=(0,s.useState)([null]),[S,C]=(0,s.useState)(null),[w,T]=(0,s.useState)(0),[E,D]=(0,s.useState)(!0),[O,k]=(0,s.useState)(``),[A,j]=(0,s.useState)(null),[M,N]=(0,s.useState)(!1),[P,F]=(0,s.useState)(!1),[I,L]=(0,s.useState)(null),[R,z]=(0,s.useState)(null),[B,V]=(0,s.useState)(!1),[H,ee]=(0,s.useState)(!1),[te,ne]=(0,s.useState)(null),[U,re]=(0,s.useState)(!1),ie=(0,s.useRef)(0),ae=(0,s.useCallback)(async t=>{let n=++ie.current,r=new URLSearchParams({kind:e,limit:String(h),sort:p});c.trim()&&r.set(`query`,c.trim()),l&&r.set(`status`,l),d&&r.set(`source`,d),t&&r.set(`cursor`,t),D(!0),k(``);try{let e=await g(`/api/v1/catalog/resources?${r}`);if(!e.ok)throw Error(await bz(e,`资源加载失败`));let t=await e.json();if(ie.current!==n)return;i(t.items||[]),C(t.nextCursor||null),T(Number(t.total)||0)}catch(e){if(ie.current!==n)return;i([]),C(null),T(0),k(e instanceof Error?e.message:`资源加载失败`)}finally{ie.current===n&&D(!1)}},[c,e,h,p,d,l]),oe=(0,s.useCallback)(()=>{x([null]),y(0),ae(null)},[ae]),se=(0,s.useCallback)(()=>{ae(b[v]||null)},[b,ae,v]);(0,s.useEffect)(()=>{oe()},[n,oe]);let ce=(0,s.useCallback)(async e=>{try{let t=await g(`/api/v1/catalog/mcp-servers/${encodeURIComponent(e.resourceId)}:probe?timeoutSeconds=15`,{method:`POST`});if(!t.ok)throw Error(await bz(t,`MCP 探测失败`));let n=await t.json();se(),J(`MCP 探测完成`,`已发现 ${n.health?.toolCount||0} 个 Tool。`)}catch(e){se(),J(`MCP 探测失败`,e.message,`error`)}},[se]);async function le(){if(te){re(!0);try{let e=await g(`/api/v1/catalog/resources/${encodeURIComponent(te.resourceId)}`,{method:`DELETE`});if(!e.ok)throw Error(await bz(e,`删除失败`));if(ne(null),r.length===1&&v>0){let e=v-1;y(e),await ae(b[e]||null)}else await ae(b[v]||null);J(`资源已删除`,`${te.displayName||te.name} 已从工作区移除。`)}catch(e){J(`删除失败`,e.message,`error`)}re(!1)}}function ue(){if(e===`model`){N(!0);return}if(e===`mcp`){F(!0);return}if(e===`skill`){V(!0);return}ee(!0)}let de=_z[e],W=(0,s.useMemo)(()=>[{id:`name`,header:`名称`,minWidth:190,className:`resource-name-column`,headerClassName:`resource-name-column`,cell:e=>(0,G.jsx)(Tz,{item:e})},{id:`source`,header:de.headings[0],minWidth:120,className:`resource-source-column`,headerClassName:`resource-source-column`,cell:e=>vz[e.source]||e.source},{id:`detail`,header:de.headings[1],minWidth:110,className:`resource-detail-column`,headerClassName:`resource-detail-column`,cell:e=>(0,G.jsx)(Ez,{item:e})},{id:`capability`,header:de.headings[2],minWidth:180,className:`capability-cell resource-capability-column`,headerClassName:`resource-capability-column`,cell:e=>(0,G.jsx)(Dz,{item:e})},{id:`status`,header:`状态`,minWidth:92,className:`resource-status-column`,headerClassName:`resource-status-column`,cell:e=>(0,G.jsx)(Oz,{item:e})},{id:`actions`,header:`操作`,minWidth:108,className:`actions-column resource-actions-column`,headerClassName:`actions-column resource-actions-column`,cell:e=>(0,G.jsx)(kz,{item:e,onConfigure:()=>j(e),onView:()=>e.kind===`mcp`?L(e):z(e),onProbe:()=>ce(e),onDelete:()=>ne(e)})}],[de.headings,ce]),fe=(0,s.useCallback)(()=>{if(v<=0)return;let e=v-1;y(e),ae(b[e]||null)},[b,ae,v]),pe=(0,s.useCallback)(()=>{if(!S)return;let e=v+1;x(t=>{let n=t.slice(0,e);return n[e]=S,n}),y(e),ae(S)},[ae,S,v]);return(0,G.jsxs)(`div`,{className:`page-container resources-page`,"data-layout":`data`,"data-scroll-mode":`data`,children:[(0,G.jsx)(Sd,{children:(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:ue,children:[(0,G.jsx)(Qe,{size:15}),(0,G.jsx)(`span`,{children:de.addLabel})]})}),(0,G.jsxs)(`div`,{className:`data-page-body table-data-body`,children:[(0,G.jsx)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":`资源类型`,children:Object.keys(_z).map(n=>(0,G.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":e===n,onClick:()=>t(n),children:[_z[n].title,e===n&&(0,G.jsx)(`span`,{className:`n`,children:w})]},n))}),(0,G.jsxs)(`div`,{className:`section-toolbar`,children:[(0,G.jsxs)(`div`,{className:`search-field`,children:[(0,G.jsx)(tt,{size:14}),(0,G.jsx)(`input`,{type:`search`,placeholder:`搜索资源`,value:a,onChange:e=>o(e.target.value)})]}),(0,G.jsx)(Fh,{className:`compact-select`,ariaLabel:`筛选资源状态`,value:l||`__all__`,options:[{value:`__all__`,label:`全部状态`},{value:`ready`,label:`可用`},{value:`missing-secret`,label:`缺少凭证`},{value:`unhealthy`,label:`异常`},{value:`unresolved`,label:`未解析`}],onValueChange:e=>u(e===`__all__`?``:e)}),(0,G.jsx)(Fh,{className:`compact-select`,ariaLabel:`筛选资源来源`,value:d||`__all__`,options:[{value:`__all__`,label:`全部来源`},{value:`provider`,label:`模型服务`},{value:`builtin`,label:`ksadk 内置`},{value:`local`,label:`工作区自定义`},{value:`market`,label:`市场`}],onValueChange:e=>f(e===`__all__`?``:e)}),(0,G.jsx)(Fh,{className:`compact-select`,ariaLabel:`资源排序`,value:p,options:[{value:`default`,label:`默认排序`},{value:`displayName:asc`,label:`名称升序`},{value:`displayName:desc`,label:`名称降序`}],onValueChange:m}),(0,G.jsx)(Fh,{className:`compact-select`,ariaLabel:`每页显示数量`,value:String(h),options:[{value:`20`,label:`每页 20 条`},{value:`50`,label:`每页 50 条`},{value:`100`,label:`每页 100 条`}],onValueChange:e=>_(Number(e))})]}),(0,G.jsx)(_m,{columns:W,data:r,getRowId:e=>e.resourceId,caption:`${de.title}资源列表`,minWidth:0,loading:E,error:O,onRetry:se,empty:{icon:(0,G.jsx)(_e,{size:20}),title:`没有匹配的资源`,description:`调整筛选条件,或添加一个新的工程资源。`},pagination:{pageIndex:v,pageSize:h,total:w,hasNextPage:!!S,onPreviousPage:fe,onNextPage:pe}})]}),A&&(0,G.jsx)(Az,{model:A,onClose:()=>j(null),onChanged:oe}),M&&(0,G.jsx)(jz,{onClose:()=>N(!1),onAdded:()=>{N(!1),oe()}}),P&&(0,G.jsx)(Mz,{onClose:()=>F(!1),onConnected:()=>{F(!1),oe()}}),I&&(0,G.jsx)(Nz,{item:I,onClose:()=>L(null)}),R&&(0,G.jsx)(Pz,{item:R,onClose:()=>z(null)}),B&&(0,G.jsx)(Fz,{onClose:()=>V(!1),onCatalogChanged:oe}),H&&(0,G.jsx)(Iz,{onClose:()=>ee(!1),onAdded:()=>{ee(!1),oe()}}),te&&(0,G.jsx)(ka,{title:`确认删除资源「${te.displayName||te.name}」?`,description:`删除后已绑定该资源的 Agent 不会自动更新,需手动重新编辑。`,confirmText:`确认删除`,busy:U,onConfirm:le,onCancel:()=>ne(null)})]})}function Tz({item:e}){let t=_z[e.kind]?.icon||_e,n=e.name&&e.name!==e.displayName;return(0,G.jsxs)(`div`,{className:`agent-cell`,children:[(0,G.jsx)(`span`,{className:`capability-icon`,children:(0,G.jsx)(t,{size:15})}),(0,G.jsxs)(`div`,{className:`agent-cell-copy`,children:[(0,G.jsx)(`strong`,{children:e.displayName}),n&&(0,G.jsx)(`span`,{children:e.name})]})]})}function Ez({item:e}){if(e.kind===`model`){let t=e.contract?.metadata||{},n=Number(t.context_window_tokens||0),r=e.contract?.discovery?.contextWindow===`provider`?`服务返回`:`ksadk 默认`,i=n>=1e6?`${(n/1e6).toFixed(n%1e6?1:0)}M`:n>=1e3?`${Math.round(n/1e3)}K`:`${n||`-`}`;return(0,G.jsx)(`strong`,{title:`上下文窗口来源:${r}`,children:i})}return e.kind===`tool`?(0,G.jsx)(`span`,{className:`tag`,children:e.contract?.group||e.category||`general`}):(0,G.jsx)(`span`,{className:`mono`,children:e.version})}function Dz({item:e}){if(e.kind===`model`){let t=e.contract?.metadata?.capabilities||{},n=[`文字`];t.multimodal_input_image&&n.push(`图片`),t.multimodal_input_video&&n.push(`视频`),t.multimodal_input_file&&n.push(`文件`);let r=e.contract?.discovery?.inputModalities===`provider`?`服务返回`:`ksadk 默认`;return(0,G.jsx)(`span`,{title:`输入模态来源:${r}`,children:n.join(` + `)})}if(e.kind===`tool`){let t=e.contract?.approval===`always`?`需审批`:`无需审批`,n=e.contract?.boundary||`ksadk-runtime`;return(0,G.jsxs)(G.Fragment,{children:[t,(0,G.jsx)(`span`,{className:`resource-origin`,children:n})]})}let t=e.description||`未提供说明`;return(0,G.jsx)(`span`,{className:`cell-clamp`,title:t,children:t})}function Oz({item:e}){if(e.kind===`model`){let t=e.status===`ready`;return(0,G.jsx)(`span`,{className:`badge`,"data-state":t?`ready`:`pending`,children:t?`凭证已配置`:`凭证未配置`})}let t=e.status===`ready`?`可用`:e.status===`failed`||e.status===`unhealthy`?`异常`:e.status===`unresolved`?`未解析`:e.status===`missing-secret`?`缺少凭证`:e.status;return(0,G.jsx)(`span`,{className:`badge`,"data-state":e.status===`ready`?`ready`:e.status===`failed`||e.status===`unhealthy`?`failed`:`pending`,children:t})}function kz({item:e,onConfigure:t,onView:n,onProbe:r,onDelete:i}){let a=e.kind===`mcp`?[{label:`重新探测`,onSelect:r,disabled:e.source!==`local`},...e.source===`local`?[{label:`删除`,danger:!0,onSelect:i}]:[]]:[{label:`查看详情`,onSelect:n},...e.source===`local`?[{label:`删除`,danger:!0,onSelect:i}]:[]];return(0,G.jsxs)(`div`,{className:`row-actions`,children:[(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:e.kind===`model`?t:n,children:e.kind===`model`?`配置凭证`:`查看`}),(0,G.jsx)(yd,{label:`${e.displayName} 的更多操作`,items:a})]})}function Az({model:e,onClose:t,onChanged:n}){let r=xz(e),i=Sz(r),[a,o]=(0,s.useState)(null),c=y_({resolver:k_(fz),defaultValues:{value:``}}),[l,u]=(0,s.useState)(null),[d,f]=(0,s.useState)(``);(0,s.useEffect)(()=>{g(`/api/v1/credentials/${encodeURIComponent(i)}`).then(e=>e.json()).then(o).catch(()=>o({configured:!1,source:`missing`}))},[i]);let p=!!a?.configured,m=a?.source||`missing`,h=a==null?`正在检查凭证`:p?`模型凭证已配置`:`模型凭证未配置`,_=a==null?`检查当前 Runtime 是否已经获得模型凭证。`:m===`session`?`凭证已持久保存到工作区,重启后仍生效,所有 Agent 可复用。`:m===`environment`?`凭证由 Studio 启动环境变量提供,可以用新的会话凭证临时覆盖。`:`输入 API Key 后即可在本地运行当前模型。`;async function v(r,a){if(u(null),!a.value&&!p){c.setError(`value`,{type:`manual`,message:`当前模型还没有可用凭证,请输入 API Key。`});return}f(r?`test`:`save`);let o=!1;try{if(a.value){let e=await g(`/api/v1/credentials/${encodeURIComponent(i)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({value:a.value,persistence:`session`})});if(!e.ok)throw Error(await bz(e,`凭证保存失败`));o=!0}let s=null;if(r){let t=await g(`/api/v1/model-profiles/${encodeURIComponent(e.resourceId)}:test`,{method:`POST`}),n=await t.text().catch(()=>``),r={};try{r=JSON.parse(n)}catch{}if(!t.ok||r.ok===!1)throw Error(r?.error?.message||`HTTP ${t.status}`);s=r.latencyMs??0}n?.(),t(),J(r?`模型连接测试通过`:`模型凭证已保存`,r?`${e.displayName} · ${s} ms`:`凭证已持久保存到工作区,所有 Agent 可复用。`)}catch(e){u({title:o?`凭证已保存,但连接测试失败`:`模型凭证配置失败`,message:e.message}),o&&n?.()}f(``)}async function y(){u(null),f(`remove`);try{let r=await g(`/api/v1/credentials/${encodeURIComponent(i)}`,{method:`DELETE`});if(!r.ok)throw Error(await bz(r,`凭证清除失败`));n?.(),J(`会话凭证已清除`,e.displayName),t()}catch(e){u({title:`凭证清除失败`,message:e.message})}f(``)}return(0,G.jsx)(Vg,{...c,children:(0,G.jsxs)(BD,{title:`配置模型凭证`,subtitle:`凭证只保存在当前 Studio 会话,不写入 Agent 或 Bundle。`,onClose:t,footer:(0,G.jsxs)(G.Fragment,{children:[m===`session`&&(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:y,disabled:d!==``,children:d===`remove`?`正在清除`:`清除会话凭证`}),(0,G.jsx)(`span`,{className:`drawer-footer-spacer`}),(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:t,children:`取消`}),(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:c.handleSubmit(e=>v(!1,e)),disabled:d!==``,children:d===`save`?`正在保存`:`仅保存`}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:c.handleSubmit(e=>v(!0,e)),disabled:d!==``,children:[(0,G.jsx)(V,{size:15}),(0,G.jsx)(`span`,{children:d===`test`?`正在测试`:`保存并测试`})]})]}),children:[(0,G.jsxs)(`div`,{className:`credential-profile`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`模型`}),(0,G.jsx)(`strong`,{children:e.displayName})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Provider`}),(0,G.jsx)(`strong`,{children:e.contract?.provider||`openai-compatible`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Endpoint`}),(0,G.jsx)(`code`,{children:e.contract?.endpointUrl||e.contract?.baseUrl||`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`凭证引用`}),(0,G.jsx)(`code`,{children:r||`-`})]})]}),(0,G.jsxs)(`div`,{className:`credential-status ${p?`configured`:`missing`}`,children:[(0,G.jsx)(`span`,{className:`status-dot ${a==null?`warning`:p?`success`:`warning`}`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:h}),(0,G.jsx)(`p`,{children:_})]})]}),(0,G.jsx)(Y,{label:`API Key`,requirement:p?`optional`:`required`,htmlFor:`modelCredValue`,hint:`保存后立即生效;关闭 Studio 后自动清除,需要持久化时可通过启动环境变量注入。`,error:c.formState.errors.value?.message,children:(0,G.jsx)(`input`,{id:`modelCredValue`,type:`password`,autoComplete:`new-password`,maxLength:16384,placeholder:p?`输入新的 API Key 以覆盖当前凭证`:`输入新的 API Key`,...c.register(`value`)})}),l&&(0,G.jsx)(VD,{kind:`error`,title:l.title,message:l.message})]})})}function jz({onClose:e,onAdded:t}){let n=y_({resolver:k_(lz),defaultValues:{name:``,displayName:``,model:``,endpointUrl:``,credentialRef:`env://MODEL_API_KEY`,description:``,apiKey:``,temperature:.2,maxTokens:2048,addressMode:`endpoint`,wireApi:``}}),{name:r,displayName:i,model:a,endpointUrl:o,credentialRef:c,apiKey:l,temperature:u,maxTokens:d,addressMode:f,wireApi:p}=n.watch(),m=c.replace(/^env:\/\//,``),[h,_]=(0,s.useState)(!1),[v,y]=(0,s.useState)(``),[b,x]=(0,s.useState)(!1),[S,C]=(0,s.useState)([]),[w,T]=(0,s.useState)([]),[E,D]=(0,s.useState)([]);(0,s.useEffect)(()=>{g(`/api/v1/catalog/models`).then(e=>e.json()).then(e=>{D((e.items||[]).map(e=>e.name).filter(Boolean))}).catch(()=>{})},[]);async function O(){if(!o.trim()){y(`请先填写接口地址再探测`);return}x(!0),y(``),C([]),T([]);try{let e={url:o.trim()};m.trim()&&(e.credentialRef=`env://${m.trim()}`),l.trim()&&(e.apiKey=l.trim());let t=await g(`/api/v1/model-endpoints:probe`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)throw Error(await bz(t,`探测失败`));let r=await t.json();C(r.attempts||[]),T(r.models||[]),r.recommended?(n.setValue(`wireApi`,r.recommended.wireApi||`chat`),n.setValue(`addressMode`,`endpoint`),n.setValue(`endpointUrl`,r.recommended.endpointUrl,{shouldValidate:!0}),r.recommended.status===`auth_required`&&y(`端点可达,但需要有效凭证(401/403);配置 API Key 后可正常使用`)):y(`未能识别可用协议,请检查地址或网络`)}catch(e){y(e.message)}x(!1)}let k=[...new Set([...w,...E])];async function A(e){_(!0),y(``);try{let r=e.credentialRef.replace(/^env:\/\//,``);if(e.apiKey.trim()){let t=await g(`/api/v1/credentials/${encodeURIComponent(r)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({value:e.apiKey.trim(),persistence:`session`})});if(!t.ok)throw Error(await bz(t,`凭证保存失败`))}let i={provider:`openai-compatible`,model:e.model.trim(),credentialRef:e.credentialRef,parameters:{temperature:e.temperature,max_tokens:e.maxTokens}};e.wireApi&&(i.wireApi=e.wireApi),e.addressMode===`endpoint`?i.endpointUrl=e.endpointUrl.trim():i.baseUrl=e.endpointUrl.trim();let a=await g(`/api/v1/catalog/model-profiles`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e.name.trim(),displayName:e.displayName.trim(),version:`1.0.0`,description:e.description||``,spec:i})});if(!a.ok){let e=await a.json().catch(()=>null);if(Nb(e,n.setError)){_(!1);return}throw Error(e?.error?.message||`创建失败(${a.status})`)}J(`模型已创建`,`${e.displayName.trim()} · ${e.model.trim()}`),t()}catch(e){y(e.message)}_(!1)}let j=e=>`${e.protocol===`chat`?`Chat`:`Responses`} · ${e.status===`ok`?`可用 ${e.latencyMs}ms`:e.status===`auth_required`?`需凭证`:e.status===`recognized`?`可识别`:e.status===`unavailable`?`不存在`:e.status===`unreachable`?`不可达`:`错误`}`,M=e=>e.status===`ok`?`ready`:e.status===`unavailable`||e.status===`unreachable`?`failed`:`pending`;return(0,G.jsx)(Vg,{...n,children:(0,G.jsxs)(BD,{title:`添加模型`,subtitle:`接入 OpenAI 兼容模型端点。`,wide:!0,onClose:e,footer:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:e,children:`取消`}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:n.handleSubmit(A),disabled:h,children:[(0,G.jsx)(V,{size:15}),(0,G.jsx)(`span`,{children:h?`创建中…`:`创建模型`})]})]}),children:[(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`名称(Slug)`,requirement:`required`,htmlFor:`amName`,error:n.formState.errors.name?.message,children:(0,G.jsx)(`input`,{id:`amName`,className:`mono`,placeholder:`my-model`,...n.register(`name`)})}),(0,G.jsx)(Y,{label:`显示名称`,requirement:`required`,htmlFor:`amDisplayName`,error:n.formState.errors.displayName?.message,children:(0,G.jsx)(`input`,{id:`amDisplayName`,placeholder:`我的模型`,...n.register(`displayName`)})})]}),(0,G.jsx)(Y,{label:`模型 ID`,requirement:`required`,htmlFor:`amModelId`,error:n.formState.errors.model?.message,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`input`,{id:`amModelId`,className:`mono`,placeholder:`glm-5.1 / gpt-4o-mini / …`,list:`am-model-suggestions`,...n.register(`model`)}),(0,G.jsx)(`datalist`,{id:`am-model-suggestions`,children:k.map(e=>(0,G.jsx)(`option`,{value:e},e))}),k.length>0&&(0,G.jsxs)(`span`,{className:`helper`,children:[`可输入或从 `,k.length,` 个可用模型中选择(自动补全)。`]})]})}),(0,G.jsx)(Y,{label:`接口地址`,requirement:`required`,htmlFor:`amEndpoint`,hint:`支持主机、/v1、Chat Completions 或 Responses 地址;智能探测会自动归一化。`,error:n.formState.errors.endpointUrl?.message,children:(0,G.jsxs)(`div`,{children:[p&&(0,G.jsx)(`span`,{className:`tag`,children:p===`responses`?`Responses 协议`:`Chat 协议`}),(0,G.jsxs)(`div`,{style:{display:`flex`,gap:8,marginBottom:10,alignItems:`center`},children:[(0,G.jsxs)(`div`,{className:`segmented-control`,children:[(0,G.jsx)(`button`,{type:`button`,className:f===`endpoint`?`selected`:``,onClick:()=>n.setValue(`addressMode`,`endpoint`),children:`完整 endpointUrl`}),(0,G.jsx)(`button`,{type:`button`,className:f===`base`?`selected`:``,onClick:()=>n.setValue(`addressMode`,`base`),children:`baseUrl`})]}),(0,G.jsxs)(`button`,{className:`button secondary small`,type:`button`,onClick:O,disabled:b||!o.trim(),children:[(0,G.jsx)(xt,{size:14}),(0,G.jsx)(`span`,{children:b?`探测中…`:`智能探测`})]})]}),(0,G.jsx)(`input`,{id:`amEndpoint`,className:`mono`,placeholder:f===`endpoint`?`https://host/v1/chat/completions`:`https://host/v1`,...n.register(`endpointUrl`)}),S.length>0&&(0,G.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:6,marginTop:10},children:S.map((e,t)=>(0,G.jsx)(`span`,{className:`badge`,"data-state":M(e),title:e.endpointUrl,children:j(e)},t))})]})}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`凭证环境变量名`,requirement:`required`,htmlFor:`amEnvName`,error:n.formState.errors.credentialRef?.message,children:(0,G.jsx)(`input`,{id:`amEnvName`,className:`mono`,value:m,onChange:e=>n.setValue(`credentialRef`,`env://${e.target.value}`,{shouldDirty:!0,shouldValidate:!0}),placeholder:`MY_MODEL_API_KEY`})}),(0,G.jsx)(Y,{label:`API Key 值`,requirement:`optional`,htmlFor:`amApiKey`,hint:`仅保存到当前 Studio 会话;留空则从启动环境读取。`,error:n.formState.errors.apiKey?.message,children:(0,G.jsx)(`input`,{id:`amApiKey`,type:`password`,autoComplete:`new-password`,placeholder:`留空则从环境读取`,...n.register(`apiKey`)})})]}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`temperature`,requirement:`optional`,htmlFor:`amTemp`,error:n.formState.errors.temperature?.message,children:(0,G.jsx)(`input`,{id:`amTemp`,type:`number`,step:`0.1`,min:0,max:2,...n.register(`temperature`,{valueAsNumber:!0})})}),(0,G.jsx)(Y,{label:`max_tokens`,requirement:`optional`,htmlFor:`amMaxTokens`,error:n.formState.errors.maxTokens?.message,children:(0,G.jsx)(`input`,{id:`amMaxTokens`,type:`number`,min:1,max:131072,...n.register(`maxTokens`,{valueAsNumber:!0})})})]}),v&&(0,G.jsx)(VD,{kind:`error`,title:`添加模型`,message:v})]})})}function Mz({onClose:e,onConnected:t}){let n=(0,s.useRef)(null),r=y_({resolver:k_(uz),defaultValues:{displayName:``,name:``,transport:`http`,command:``,args:``,endpointUrl:``,apiKeyName:``,apiKeyValue:``,description:``}}),{transport:i}=r.watch(),[a,o]=(0,s.useState)(``),[c,l]=(0,s.useState)(!1);function u(){let e=n.current?.value.trim();if(!e)return;let t;try{t=JSON.parse(e)}catch{J(`配置解析失败`,`请粘贴有效的 JSON`,`error`);return}let i=t.mcpServers||t.mcp_servers||t,a=Object.keys(i)[0],o=i[a];if(!o||typeof o!=`object`){J(`配置解析失败`,`未找到 MCP server 定义`,`error`);return}r.setValue(`name`,a,{shouldValidate:!0}),r.setValue(`displayName`,o.name||a,{shouldValidate:!0}),o.description&&r.setValue(`description`,o.description);let s=String(o.type||o.transport||``).toLowerCase();s.includes(`http`)||o.url?(r.setValue(`transport`,s===`sse`?`sse`:`http`),o.url&&r.setValue(`endpointUrl`,o.url,{shouldValidate:!0})):(r.setValue(`transport`,`stdio`),o.command&&r.setValue(`command`,o.command,{shouldValidate:!0}),Array.isArray(o.args)&&r.setValue(`args`,o.args.join(` `)));let c=o.headers||{},l=c.Authorization||c.authorization;if(l){let e=String(l).match(/\$\{?([A-Za-z0-9_]+)\}?/);e&&r.setValue(`apiKeyName`,e[1],{shouldValidate:!0})}else o.env_key&&r.setValue(`apiKeyName`,o.env_key,{shouldValidate:!0})}async function d(e){o(``),l(!0);try{if(e.apiKeyName.trim()&&e.apiKeyValue.trim()){let t=await g(`/api/v1/credentials/${encodeURIComponent(e.apiKeyName.trim())}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({value:e.apiKeyValue.trim(),persistence:`session`})});if(!t.ok)throw Error(await bz(t,`凭证保存失败`))}let n=e.transport===`streamable-http`?`http`:e.transport,i=n===`stdio`?e.apiKeyName.trim():`Authorization`,a={name:e.name.trim(),version:`1.0.0`,transport:n,args:n===`stdio`?e.args.trim().split(/\s+/).filter(Boolean):[],envRefs:e.apiKeyName.trim()?{[i]:`env://${e.apiKeyName.trim()}`}:{}};n===`stdio`?a.command=e.command.trim():a.endpointUrl=e.endpointUrl.trim();let o=await g(`/api/v1/catalog/mcp-servers`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({displayName:e.displayName.trim(),description:e.description.trim(),server:a})}),s=await o.json().catch(()=>null);if(!o.ok){if(Nb(s,r.setError)){l(!1);return}throw Error(s?.error?.message||`保存失败(${o.status})`)}let c=await g(`/api/v1/catalog/mcp-servers/${encodeURIComponent(s.resourceId)}:probe?timeoutSeconds=15`,{method:`POST`});if(!c.ok)throw Error(await bz(c,`探测失败`));J(`MCP 已连接`,`已发现 ${(await c.json()).health?.toolCount||0} 个 Tool。`),t()}catch(e){o(e.message)}l(!1)}return(0,G.jsx)(Vg,{...r,children:(0,G.jsxs)(BD,{title:`连接 MCP Server`,subtitle:`保存后执行探测,再回到 Agent 能力选择。`,onClose:e,footer:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:e,children:`取消`}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:r.handleSubmit(d),disabled:c,children:[(0,G.jsx)(Ve,{size:15}),(0,G.jsx)(`span`,{children:c?`正在探测`:`保存并探测`})]})]}),children:[(0,G.jsx)(Y,{label:`粘贴 MCP 配置`,requirement:`optional`,htmlFor:`mcpPaste`,hint:`粘贴 JSON 后会自动填充下方字段。`,children:(0,G.jsx)(`textarea`,{id:`mcpPaste`,ref:n,rows:5,placeholder:'{"mcpServers":{"metaso":{"type":"streamable-http","url":"https://...","headers":{"Authorization":"Bearer ${KSC_AIPRO_API_KEY}"}}}}',onPaste:()=>window.setTimeout(u,0)})}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`显示名称`,requirement:`required`,htmlFor:`mcpDisplayName`,error:r.formState.errors.displayName?.message,children:(0,G.jsx)(`input`,{id:`mcpDisplayName`,placeholder:`Web Research MCP`,...r.register(`displayName`)})}),(0,G.jsx)(Y,{label:`Server 名称`,requirement:`required`,htmlFor:`mcpName`,error:r.formState.errors.name?.message,children:(0,G.jsx)(`input`,{id:`mcpName`,className:`mono`,placeholder:`web-research`,...r.register(`name`)})})]}),(0,G.jsx)(Y,{label:`Transport`,requirement:`required`,htmlFor:`mcpTransport`,error:r.formState.errors.transport?.message,children:(0,G.jsx)(Fh,{id:`mcpTransport`,ariaLabel:`Transport`,value:i,options:[{value:`http`,label:`Streamable HTTP`},{value:`stdio`,label:`STDIO(本地命令)`},{value:`sse`,label:`SSE`}],onValueChange:e=>r.setValue(`transport`,e,{shouldDirty:!0,shouldValidate:!0})})}),i===`stdio`&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Y,{label:`Command`,requirement:`required`,htmlFor:`mcpCommand`,error:r.formState.errors.command?.message,children:(0,G.jsx)(`input`,{id:`mcpCommand`,className:`mono`,placeholder:`npx`,...r.register(`command`)})}),(0,G.jsx)(Y,{label:`Arguments`,requirement:`optional`,htmlFor:`mcpArgs`,error:r.formState.errors.args?.message,children:(0,G.jsx)(`input`,{id:`mcpArgs`,className:`mono`,placeholder:`-y @your-org/web-research-mcp`,...r.register(`args`)})})]}),i!==`stdio`&&(0,G.jsx)(Y,{label:`Server URL`,requirement:`required`,htmlFor:`mcpEndpoint`,error:r.formState.errors.endpointUrl?.message,children:(0,G.jsx)(`input`,{id:`mcpEndpoint`,className:`mono`,placeholder:`https://mcp.example.com/mcp`,...r.register(`endpointUrl`)})}),(0,G.jsx)(Y,{label:`API Key 环境变量名`,requirement:`optional`,htmlFor:`mcpApiKey`,error:r.formState.errors.apiKeyName?.message,children:(0,G.jsx)(`input`,{id:`mcpApiKey`,className:`mono`,placeholder:`KSC_AIPRO_API_KEY`,...r.register(`apiKeyName`)})}),(0,G.jsx)(Y,{label:`API Key 值`,requirement:`optional`,htmlFor:`mcpApiKeyValue`,hint:`仅保存到当前 Studio 会话;留空则从环境变量读取。`,error:r.formState.errors.apiKeyValue?.message,children:(0,G.jsx)(`input`,{id:`mcpApiKeyValue`,type:`password`,autoComplete:`new-password`,placeholder:`留空则从环境变量读取`,...r.register(`apiKeyValue`)})}),(0,G.jsx)(Y,{label:`说明`,requirement:`optional`,htmlFor:`mcpDescription`,error:r.formState.errors.description?.message,children:(0,G.jsx)(`textarea`,{id:`mcpDescription`,rows:2,placeholder:`提供 Web 搜索和页面抓取能力`,...r.register(`description`)})}),a&&(0,G.jsx)(VD,{kind:`error`,title:`连接失败`,message:a})]})})}function Nz({item:e,onClose:t}){let n=e.contract||{},r=e.health||{},i=n.discoveredTools||r.discoveredTools||[],a=[[`Resource ID`,e.resourceId],[`Transport`,n.transport||`-`],[`Endpoint`,n.endpointUrl||n.command||`-`],[`状态`,r.status||e.status],[`工具数`,r.toolCount??i.length],[`凭证`,(e.requiredSecretRefs||[]).join(`、`)||`无`]];return(0,G.jsxs)(BD,{title:e.displayName||e.name,subtitle:`${e.name} · ${e.version} · ${n.transport||``}`,onClose:t,children:[(0,G.jsx)(`dl`,{className:`trace-detail-grid`,children:a.map(([e,t])=>(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:e}),(0,G.jsx)(`dd`,{children:String(t)})]},e))}),(0,G.jsx)(`div`,{className:`inspector-title inspector-title-spaced`,children:`已发现工具`}),(0,G.jsx)(`div`,{className:`resource-detail-list`,children:i.length===0?(0,G.jsx)(`div`,{className:`resource-detail-item`,children:(0,G.jsxs)(`span`,{className:`resource-detail-item-copy`,children:[(0,G.jsx)(`strong`,{children:`未发现工具`}),(0,G.jsx)(`span`,{children:`点击“重新探测”以加载工具列表`})]})}):i.map(e=>(0,G.jsxs)(`div`,{className:`resource-detail-item`,children:[(0,G.jsx)(`span`,{className:`capability-icon`,children:(0,G.jsx)(yt,{size:15})}),(0,G.jsxs)(`span`,{className:`resource-detail-item-copy`,children:[(0,G.jsx)(`strong`,{children:e.name}),(0,G.jsx)(`span`,{children:e.description||``})]})]},e.name))})]})}function Pz({item:e,onClose:t}){let[n,r]=(0,s.useState)(!1),i=e.contract||{},a=[[`Resource ID`,e.resourceId],[`来源`,vz[e.source]||e.source],[`版本`,e.version||`-`],[`状态`,e.kind===`model`?e.status===`ready`?`凭证已配置`:`凭证未配置`:e.status]];return e.kind===`tool`&&(a.push([`Tool 分组`,i.group||e.category||`general`]),a.push([`审批`,i.approval===`always`?`需审批`:`无需审批`]),a.push([`边界`,i.boundary||`ksadk-runtime`]),i.sourcePath&&a.push([`源码`,`${i.sourcePath} · ${i.callableName||`-`}()`])),e.kind===`skill`&&i?.contentSha256&&a.push([`内容摘要`,i.contentSha256]),(0,G.jsxs)(BD,{title:e.displayName||e.name,subtitle:`${e.name} · ${e.version}`,onClose:t,children:[(0,G.jsx)(`dl`,{className:`trace-detail-grid`,children:a.map(([e,t])=>(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:e}),(0,G.jsx)(`dd`,{children:String(t)})]},e))}),(0,G.jsx)(`div`,{className:`inspector-title inspector-title-spaced`,children:`说明`}),(0,G.jsx)(`p`,{style:{margin:0,color:`var(--text-secondary)`,fontSize:`var(--font-size-meta)`,lineHeight:`var(--line-height-body)`},children:e.description||i.description||`未提供说明`}),e.kind===`skill`&&e.source===`local`&&(0,G.jsxs)(`button`,{className:`button secondary skill-files-open`,type:`button`,onClick:()=>r(!0),children:[(0,G.jsx)(be,{size:15}),(0,G.jsx)(`span`,{children:`查看 Skill 文件`})]}),n&&(0,G.jsx)(FL,{title:e.displayName||e.name,endpoint:`/api/v1/catalog/skills/${encodeURIComponent(e.resourceId)}/files`,onClose:()=>r(!1)})]})}function Fz({onClose:e,onCatalogChanged:t}){let[n,r]=(0,s.useState)(``),[i,a]=(0,s.useState)(null),[o,c]=(0,s.useState)(new Set),[l,u]=(0,s.useState)({}),[d,f]=(0,s.useState)(null),[p,m]=(0,s.useState)({completed:0,total:0}),[h,_]=(0,s.useState)(``),[v,y]=(0,s.useState)(``),[b,x]=(0,s.useState)(!1),[S,C]=(0,s.useState)(!1),[w,T]=(0,s.useState)(null),[E,D]=(0,s.useState)(null),O=i?.candidates||[];function k(){c(new Set),u({}),f(null),m({completed:0,total:0}),_(``),T(null)}async function A(){y(``),x(!0);try{let e=n.split(`,`).map(e=>e.trim()).filter(Boolean),t=await g(`/api/v1/catalog/skills:discover`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({scanPaths:e})});if(!t.ok)throw Error(await bz(t,`Skill 发现失败`));let r=await t.json();a(r),k()}catch(e){y(e.message)}x(!1)}function j(e){S||l[e]?.status===`succeeded`||c(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function M(){let e=hz(O);for(let[t,n]of Object.entries(l))n.status===`succeeded`&&e.delete(t);c(e)}async function N(e){let n=i?.inspectionToken;if(!o.size||!n||S)return;let r=new Set(o),a=O.filter(e=>r.has(e.candidateId)&&(e.status===`ready`||e.status===`conflict`)).length;y(``),f(null),u({}),m({completed:0,total:a}),C(!0);try{let i=await gz({candidates:O,selectedIds:r,overwriteIds:e,commit:async(e,t)=>{_(e.candidateId);let r=await g(`/api/v1/catalog/skills/discoveries/${encodeURIComponent(n)}:commit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({candidateId:e.candidateId,overwrite:t})});if(!r.ok)throw Error(await bz(r,`Skill 导入失败`));return r.json()},onResult:(e,t,n)=>{u(t=>({...t,[e.candidateId]:e})),m({completed:t,total:n})}});f(i),c(new Set(i.failedIds)),i.succeededIds.length&&await t(),i.failedIds.length?J(`Skill 批量导入完成`,`已导入 ${i.succeededIds.length} 个,${i.failedIds.length} 个失败。`,`error`):J(`Skill 批量导入完成`,`已导入 ${i.succeededIds.length} 个 Skill。`)}catch(e){y(e.message)}_(``),C(!1)}function P(){let e=O.filter(e=>o.has(e.candidateId)&&e.status===`conflict`);if(e.length){T(e);return}N(new Set)}let F=o.size;return(0,G.jsxs)(BD,{title:`发现本地 Skill`,subtitle:`默认扫描工作区及允许的 Claude、Codex、Agent 用户目录;扫描只产生候选,确认后才导入。`,wide:!0,closeDisabled:S,onClose:e,footer:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:e,disabled:S,children:`取消`}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:P,disabled:!F||S,children:[(0,G.jsx)(V,{size:15}),(0,G.jsx)(`span`,{children:S?`正在导入 ${p.completed}/${p.total}`:`导入所选 ${F} 个`})]})]}),children:[(0,G.jsxs)(`div`,{className:`field`,children:[(0,G.jsx)(`label`,{htmlFor:`skillScanPaths`,children:`扫描目录(逗号分隔;留空扫描安全默认目录)`}),(0,G.jsx)(`input`,{id:`skillScanPaths`,value:n,onChange:e=>r(e.target.value),placeholder:`skills, .claude/skills, user:codex`}),(0,G.jsx)(`span`,{className:`helper`,children:`用户目录仅支持 user:agents、user:codex、user:claude;不支持任意本机路径扫描。`})]}),(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:A,disabled:b||S,children:[(0,G.jsx)(tt,{size:15}),(0,G.jsx)(`span`,{children:b?`正在扫描`:`扫描候选`})]}),O.length>0&&(0,G.jsxs)(`div`,{className:`skill-selection-toolbar`,children:[(0,G.jsxs)(`span`,{children:[`已选择 `,F,` / `,hz(O).size]}),(0,G.jsxs)(`span`,{className:`skill-selection-actions`,children:[(0,G.jsx)(`button`,{className:`button tertiary small`,type:`button`,onClick:M,disabled:S,children:`全选可导入`}),(0,G.jsx)(`button`,{className:`button tertiary small`,type:`button`,onClick:()=>c(new Set),disabled:!F||S,children:`清空选择`})]})]}),(0,G.jsx)(`div`,{className:`skill-discovery-list`,style:{marginTop:16},children:O.length===0?(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:i?`安全默认目录中没有发现 Skill。`:`点击扫描候选。`})}):O.map(e=>{let t=e.risk||{},n=[`ready`,`conflict`].includes(e.status),r=l[e.candidateId],i=r?.status===`succeeded`,a=e.status===`ready`?`可导入`:e.status===`conflict`?`已安装`:`无效`,s=e.diagnostics?.map(e=>e.message).join(`;`)||`${e.fileCount||0} 个文件 · ${Cz(e.totalBytes||0)}`,c=r?.status===`succeeded`?`已导入`:r?.status===`failed`?`导入失败:${r.error||`未知错误`}`:h===e.candidateId?`正在导入`:S&&o.has(e.candidateId)?`等待导入`:``;return(0,G.jsxs)(`div`,{className:`skill-candidate${n?``:` invalid`}`,children:[(0,G.jsx)(`input`,{type:`checkbox`,"aria-label":`选择 ${e.displayName||e.name}`,disabled:!n||S||i,checked:o.has(e.candidateId),onChange:()=>j(e.candidateId)}),(0,G.jsx)(`span`,{className:`capability-icon`,children:(0,G.jsx)(ct,{size:15})}),(0,G.jsxs)(`span`,{className:`skill-candidate-copy`,children:[(0,G.jsx)(`strong`,{children:e.displayName||e.name}),(0,G.jsxs)(`span`,{children:[e.path,` · `,e.version||`版本无效`]}),(0,G.jsx)(`small`,{children:s}),c&&(0,G.jsx)(`small`,{className:`skill-import-state ${r?.status||`pending`}`,children:c})]}),(0,G.jsxs)(`span`,{className:`badge`,"data-state":e.status===`ready`?`ready`:`pending`,children:[a,t.requiresReview?` · 需复核`:``]}),n&&(0,G.jsxs)(`button`,{className:`button tertiary small skill-preview-button`,type:`button`,onClick:()=>D(e),children:[(0,G.jsx)(be,{size:14}),(0,G.jsx)(`span`,{children:`查看详情`})]})]},e.candidateId)})}),d&&(0,G.jsx)(VD,{kind:d.failedIds.length?`warning`:`success`,title:d.failedIds.length?`已导入 ${d.succeededIds.length} 个,${d.failedIds.length} 个失败`:`已导入 ${d.succeededIds.length} 个 Skill`,message:d.failedIds.length?`失败项已保留选择,可修复后再次导入。`:`资源目录已刷新。`}),v&&(0,G.jsx)(VD,{kind:`error`,title:`Skill 发现或导入失败`,message:v}),w&&(0,G.jsx)(ka,{title:`所选 Skill 中有 ${w.length} 个已安装`,description:`${w.map(e=>e.displayName||e.name).join(`、`)} 将被覆盖;旧版本会移入回收位置,可手工恢复。`,confirmText:`覆盖并继续`,danger:!1,onCancel:()=>T(null),onConfirm:()=>{let e=new Set(w.map(e=>e.candidateId));T(null),N(e)}}),E&&i?.inspectionToken&&(0,G.jsx)(FL,{title:E.displayName||E.name||`Skill`,endpoint:`/api/v1/catalog/skills/discoveries/${encodeURIComponent(i.inspectionToken)}/candidates/${encodeURIComponent(E.candidateId)}/files`,onClose:()=>D(null)})]})}function Iz({onClose:e,onAdded:t}){let n=y_({resolver:k_(dz),defaultValues:{displayName:``,name:``,callableName:``,description:``,sourceMode:`upload`,sourcePath:``}}),{sourceMode:r,name:i,callableName:a}=n.watch(),[o,c]=(0,s.useState)(null),[l,u]=(0,s.useState)(null),[d,f]=(0,s.useState)(``),[p,m]=(0,s.useState)(!1);async function h(){if(!o){f(`请先选择 Python 文件`);return}m(!0),f(``);try{let e=new FormData;e.append(`file`,o);let t=await g(`/api/v1/catalog/python-tools:inspect`,{method:`POST`,body:e});if(!t.ok)throw Error(await bz(t,`Python Tool 检查失败`));let r=await t.json(),i=r.callables?.[0];u(r);let a=o.name.replace(/\.py$/i,``).replace(/[^A-Za-z0-9_]+/g,`_`).replace(/^[^A-Za-z_]+/,`tool_`)||`python_tool`;n.setValue(`callableName`,i?.name||``,{shouldValidate:!0}),n.getValues(`name`)||n.setValue(`name`,a,{shouldValidate:!0}),n.getValues(`displayName`)||n.setValue(`displayName`,a,{shouldValidate:!0}),n.getValues(`description`)||n.setValue(`description`,i?.description||``)}catch(e){u(null),f(e.message||`Python Tool 检查失败`)}finally{m(!1)}}async function _(e){if(e.sourceMode===`upload`&&!l){n.setError(`callableName`,{type:`manual`,message:`请先完成 Python 文件检查`});return}m(!0),f(``);try{let r=e.sourceMode===`upload`?await g(`/api/v1/catalog/python-tools/${encodeURIComponent(l.inspectionToken)}:commit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({displayName:e.displayName.trim(),name:e.name.trim(),callableName:e.callableName.trim(),description:e.description.trim()})}):await g(`/api/v1/catalog/tools`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({displayName:e.displayName.trim(),category:`custom`,contract:{name:e.name.trim(),version:`1.0.0`,description:e.description.trim(),inputSchema:{type:`object`,properties:{}},outputSchema:{},approval:`policy`,sideEffect:`none`,executor:`python`,sourcePath:e.sourcePath.trim(),callableName:e.callableName.trim()}})}),i=await r.json().catch(()=>null);if(!r.ok){if(Nb(i,n.setError)){m(!1);return}throw Error(i?.error?.message||`Tool 添加失败(${r.status})`)}J(`Python Tool 已保存`,`${i.displayName||e.displayName.trim()} · SHA-256 已锁定`),t()}catch(e){f(e.message)}m(!1)}return(0,G.jsx)(Vg,{...n,children:(0,G.jsxs)(BD,{title:`添加 Python Tool`,subtitle:`源码先复制进 Catalog 并锁定 SHA-256,构建时进入不可变 Runtime 快照。`,onClose:e,footer:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:e,children:`取消`}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:n.handleSubmit(_),disabled:p,children:[(0,G.jsx)(V,{size:15}),(0,G.jsx)(`span`,{children:p?`正在保存`:`保存 Tool`})]})]}),children:[(0,G.jsxs)(`div`,{className:`segmented-control python-tool-source-mode`,"aria-label":`Python Tool 源码方式`,children:[(0,G.jsx)(`button`,{className:r===`upload`?`selected`:``,type:`button`,onClick:()=>{n.setValue(`sourceMode`,`upload`,{shouldValidate:!0}),f(``)},children:`上传文件`}),(0,G.jsx)(`button`,{className:r===`workspace`?`selected`:``,type:`button`,onClick:()=>{n.setValue(`sourceMode`,`workspace`,{shouldValidate:!0}),f(``)},children:`工作区路径`})]}),(0,G.jsx)(nz,{}),r===`upload`?(0,G.jsx)(Y,{label:`Python 文件`,requirement:`required`,hint:`拖放 .py 文件,或点击选择;检查只解析 AST,不会执行脚本。`,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(ez,{ariaLabel:`选择 Python Tool 文件`,accept:{"text/x-python":[`.py`],"text/plain":[`.py`]},maxSize:1048576,file:o,onFile:e=>{c(e),u(null),n.setValue(`callableName`,``)},onError:f}),(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:h,disabled:!o||p,children:[(0,G.jsx)(tt,{size:15}),(0,G.jsx)(`span`,{children:p?`检查中`:`只读检查 Callable`})]}),l&&(0,G.jsxs)(`div`,{className:`python-tool-inspection-summary`,children:[(0,G.jsx)(V,{size:15}),(0,G.jsxs)(`span`,{children:[`SHA-256 `,l.sha256.slice(0,12),`… · 发现 `,l.callables.length,` 个公开函数`]})]})]})}):(0,G.jsx)(Y,{label:`工作区 Python 文件`,requirement:`required`,htmlFor:`ptSource`,hint:`仅允许当前工作区内的普通 .py 文件;符号链接会被拒绝。`,error:n.formState.errors.sourcePath?.message,children:(0,G.jsx)(`input`,{id:`ptSource`,placeholder:`tools/my_tool.py`,...n.register(`sourcePath`)})}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`显示名称`,requirement:`required`,htmlFor:`ptDisplayName`,error:n.formState.errors.displayName?.message,children:(0,G.jsx)(`input`,{id:`ptDisplayName`,placeholder:`例如:订单查询`,...n.register(`displayName`)})}),(0,G.jsx)(Y,{label:`Tool 标识`,requirement:`required`,htmlFor:`ptName`,error:n.formState.errors.name?.message,children:(0,G.jsx)(`input`,{id:`ptName`,className:`mono`,...n.register(`name`)})}),(0,G.jsx)(Y,{label:`Callable`,requirement:`required`,htmlFor:`ptCallable`,error:n.formState.errors.callableName?.message,children:r===`upload`?(0,G.jsx)(Fh,{id:`ptCallable`,ariaLabel:`Callable`,value:a,placeholder:l?`选择公开函数`:`请先检查文件`,disabled:!l,options:(l?.callables||[]).map(e=>({value:e.name,label:`${e.async?`async `:``}${e.name}(${e.parameters.join(`, `)})`,description:e.description||void 0})),onValueChange:e=>{n.setValue(`callableName`,e,{shouldDirty:!0,shouldValidate:!0});let t=l?.callables?.find(t=>t.name===e);t?.description&&n.setValue(`description`,t.description)}}):(0,G.jsx)(`input`,{id:`ptCallable`,className:`mono`,...n.register(`callableName`)})})]}),(0,G.jsx)(Y,{label:`说明`,requirement:`optional`,htmlFor:`ptDesc`,error:n.formState.errors.description?.message,children:(0,G.jsx)(`textarea`,{id:`ptDesc`,rows:3,...n.register(`description`)})}),d&&(0,G.jsx)(VD,{kind:`error`,title:`Tool 添加失败`,message:d})]})})}function Lz(e){let t=e?e():new Uint8Array(4);if(!e&&globalThis.crypto?.getRandomValues)globalThis.crypto.getRandomValues(t);else if(!e)for(let e=0;ee.toString(16).padStart(2,`0`)).join(``)}`}function Rz({value:e,onChange:t,error:n,generate:r=Lz,id:i=`agent-slug`,label:a=`本地标识`}){return(0,G.jsx)(Y,{htmlFor:i,label:a,requirement:`generated`,hint:`默认生成唯一的本地 ID;可手动修改,云端 AgentId 由部署服务另行映射。`,error:n,children:(0,G.jsxs)(`div`,{className:`generated-id-control`,children:[(0,G.jsx)(`input`,{id:i,value:e,onChange:e=>t(e.target.value),pattern:`[a-z][a-z0-9-]{2,62}`,maxLength:63,spellCheck:!1,autoComplete:`off`}),(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`重新生成本地标识`,title:`重新生成`,onClick:()=>t(r()),children:(0,G.jsx)(et,{size:15})})]})})}var zz={resolving_model:{text:`正在理解你的需求…`,tip:`分析对话内容,确定 Agent 的框架与能力`},generating:{text:`正在理解你的需求…`,tip:`分析对话内容,确定 Agent 的框架与能力`},codex_writing:{text:`Codex 正在编写 Agent 配置…`,tip:`AI 编程助手正在沙箱中编写 agentkit.yaml,通常需要 1-3 分钟,质量优先`},validating:{text:`正在校验配置…`,tip:`检查配置完整性:名称、模型、运行时与提示词`},correcting:{text:`正在修正配置…`,tip:`发现少量问题,正在按校验意见修正后重新生成`},done:{text:`方案生成完成`,tip:``},failed:{text:`生成失败`,tip:``}};function Bz(e){return e&&zz[e]?.text||zz.resolving_model.text}function Vz(e){return e&&zz[e]?.tip||zz.resolving_model.tip}function Hz(e){if(e<60)return`${e}s`;let t=Math.floor(e/60),n=e%60;return n?`${t}m${n}s`:`${t}m`}function Uz({stage:e,startedAt:t,testId:n=`authoring-stage-shimmer`}){let[r,i]=(0,s.useState)(()=>Date.now());(0,s.useEffect)(()=>{if(!t||e===`done`||e===`failed`)return;let n=window.setInterval(()=>i(Date.now()),1e3);return()=>window.clearInterval(n)},[t,e]);let a=Vz(e),o=t?Hz(Math.max(0,Math.floor((r-t)/1e3))):null,c=e===`done`||e===`failed`;return(0,G.jsxs)(`span`,{className:`authoring-stage`,"data-testid":n,"data-stage":e||`unknown`,children:[(0,G.jsx)(`span`,{className:`text-shimmer`,children:Bz(e)}),o&&!c&&(0,G.jsxs)(`span`,{className:`authoring-stage-elapsed`,children:[`已等待 `,o]}),a&&!c&&(0,G.jsx)(`span`,{className:`authoring-stage-tip`,children:a})]})}var Wz={action:`studio.action`,agentProvider:`studio.agent.provider`,renderer:`studio.renderer`,route:`studio.route`,settingsPage:`studio.settings.page`,sidebarNavigation:`studio.sidebar.navigation`,workspaceTab:`studio.workspace.tab`},Gz=class{entries=new Map;listeners=new Map;snapshots=new Map;register(e,t){let n=this.entries.get(e)??new Map;if(n.has(t.id))throw Error(`DSH contribution already registered: ${e}/${t.id}`);n.set(t.id,t),this.entries.set(e,n),this.publish(e);let r=!0;return()=>{r&&(r=!1,n.delete(t.id),this.publish(e))}}replaceAll(e){let t=e.cloneEntries(),n=new Set([...this.entries.keys(),...t.keys()]);this.entries=t;for(let e of n)this.publish(e)}getEntries(e){let t=this.snapshots.get(e);if(t)return t;let n=this.createSnapshot(e);return this.snapshots.set(e,n),n}subscribe(e,t){let n=this.listeners.get(e)??new Set;return n.add(t),this.listeners.set(e,n),()=>n.delete(t)}cloneEntries(){return new Map([...this.entries].map(([e,t])=>[e,new Map(t)]))}createSnapshot(e){return Object.freeze([...this.entries.get(e)?.values()??[]].sort((e,t)=>(e.order??100)-(t.order??100)||e.id.localeCompare(t.id)))}publish(e){this.snapshots.set(e,this.createSnapshot(e));for(let t of this.listeners.get(e)??[])t()}};function Kz(e,t){return(0,s.useSyncExternalStore)(n=>e.subscribe(t,n),()=>e.getEntries(t),()=>e.getEntries(t))}function qz(e){return e==null}function Jz(e,t,n){return Object.defineProperty(e,t,{writable:!0,value:n,enumerable:!1})}function Yz(e,t){return arguments.length===1?t=>Yz(e,t):e in globalThis&&t instanceof globalThis[e]||Object.prototype.toString.call(t).slice(8,-1)===e}function Xz(e){return Yz(`ArrayBuffer`,e)||Yz(`SharedArrayBuffer`,e)}function Zz(e){return Xz(e)||ArrayBuffer.isView(e)}var Qz;(function(e){e.is=Xz,e.isSource=Zz;function t(e){return ArrayBuffer.isView(e)?e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength):e}e.fromSource=t;function n(e){if(e=t(e),typeof Buffer<`u`)return Buffer.from(e).toString(`base64`);let n=``,r=new Uint8Array(e);for(let e=0;ee.charCodeAt(0))}e.fromBase64=r;function i(e){return e=t(e),typeof Buffer<`u`?Buffer.from(e).toString(`hex`):Array.from(new Uint8Array(e),e=>e.toString(16).padStart(2,`0`)).join(``)}e.toHex=i;function a(e){if(typeof Buffer<`u`)return t(Buffer.from(e,`hex`));let n=e.length%2==0?e:e.slice(0,e.length-1),r=[];for(let e=0;e=65&&o<=90){if(i===1){let t=e.charCodeAt(a+1);t>=97&&t<=122&&r.push(n),r.push(o+32)}else i!==0&&r.push(n),r.push(o+32);i=1}else o>=97&&o<=122?(r.push(o),i=2):t.includes(o)?(i!==0&&r.push(n),i=0):r.push(o)}return String.fromCharCode(...r)}function eB(e){return $z(e,[45,95],45)}var tB=eB,nB;(function(e){e.millisecond=1,e.second=1e3,e.minute=e.second*60,e.hour=e.minute*60,e.day=e.hour*24,e.week=e.day*7;let t=new Date().getTimezoneOffset();function n(e){t=e}e.setTimezoneOffset=n;function r(){return t}e.getTimezoneOffset=r;function i(n=new Date,r){return typeof n==`number`&&(n=new Date(n)),r===void 0&&(r=t),Math.floor((n.valueOf()/e.minute-r)/1440)}e.getDateNumber=i;function a(n,r){let i=new Date(n*e.day);return r===void 0&&(r=t),new Date(+i+r*e.minute)}e.fromDateNumber=a;let o=RegExp(`^${[`w(?:eek(?:s)?)?`,`d(?:ay(?:s)?)?`,`h(?:our(?:s)?)?`,`m(?:in(?:ute)?(?:s)?)?`,`s(?:ec(?:ond)?(?:s)?)?`].map(e=>`(\\d+(?:\\.\\d+)?${e})?`).join(``)}$`);function s(t){let n=o.exec(t);return n?(parseFloat(n[1])*e.week||0)+(parseFloat(n[2])*e.day||0)+(parseFloat(n[3])*e.hour||0)+(parseFloat(n[4])*e.minute||0)+(parseFloat(n[5])*e.second||0):0}e.parseTime=s;function c(e){let t=s(e);return t?e=Date.now()+t:/^\d{1,2}(:\d{1,2}){1,2}$/.test(e)?e=`${new Date().toLocaleDateString()}-${e}`:/^\d{1,2}-\d{1,2}-\d{1,2}(:\d{1,2}){1,2}$/.test(e)&&(e=`${new Date().getFullYear()}-${e}`),e?new Date(e):new Date}e.parseDate=c;function l(t){let n=Math.abs(t);return n>=e.day-e.hour/2?Math.round(t/e.day)+`d`:n>=e.hour-e.minute/2?Math.round(t/e.hour)+`h`:n>=e.minute-e.second/2?Math.round(t/e.minute)+`m`:n>=e.second?Math.round(t/e.second)+`s`:t+`ms`}e.format=l;function u(e,t=2){return e.toString().padStart(t,`0`)}e.toDigits=u;function d(e,t=new Date){return e.replace(`yyyy`,t.getFullYear().toString()).replace(`yy`,t.getFullYear().toString().slice(2)).replace(`MM`,u(t.getMonth()+1)).replace(`dd`,u(t.getDate())).replace(`hh`,u(t.getHours())).replace(`mm`,u(t.getMinutes())).replace(`ss`,u(t.getSeconds())).replace(`SSS`,u(t.getMilliseconds(),3))}e.template=d})(nB||={});var rB=class{sn=0;map=new Map;weak=new WeakMap;get length(){return this.map.size}push(e){let t=++this.sn;return this.map.set(t,e),this.weak.set(e,t),()=>this.map.delete(t)}delete(e){let t=this.weak.get(e);return t?this.map.delete(t):!1}clear(){let e=[...this.map.values()];return this.map.clear(),e.reverse()}[Symbol.iterator](){return this.map.values()}[Symbol.for(`nodejs.util.inspect.custom`)](){return[...this]}},Q={shadow:Symbol.for(`cordis.shadow`),receiver:Symbol.for(`cordis.receiver`),original:Symbol.for(`cordis.original`),metadata:Symbol.for(`cordis.metadata`),initHooks:Symbol.for(`cordis.initHooks`),checkProto:Symbol.for(`cordis.checkProto`),effect:Symbol.for(`cordis.effect`),filter:Symbol.for(`cordis.filter`),isolate:Symbol.for(`cordis.isolate`),intercept:Symbol.for(`cordis.intercept`),init:Symbol.for(`cordis.init`),check:Symbol.for(`cordis.check`),config:Symbol.for(`cordis.config`),invoke:Symbol.for(`cordis.invoke`),extend:Symbol.for(`cordis.extend`),tracker:Symbol.for(`cordis.tracker`),resolveConfig:Symbol.for(`cordis.resolveConfig`)},iB=function*(){}.constructor,aB=async function*(){}.constructor;function oB(e){return!(!e.prototype||e instanceof iB||aB!==Function&&e instanceof aB)}function sB(e,t){if(e===Object.prototype)return t;let n=Object.create(sB(Object.getPrototypeOf(e),t));for(let t of Reflect.ownKeys(e))Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t));return n}function cB(e){return e&&(typeof e==`object`||typeof e==`function`)}function lB(e,t){let n=e;for(;n;){let e=Reflect.getOwnPropertyDescriptor(n,t);if(e)return e;n=Object.getPrototypeOf(n)}}function uB(e,t){if(!cB(t))return t;if(Object.hasOwn(t,Q.shadow))return Object.getPrototypeOf(t);let n=t[Q.tracker];return n?hB(e,t,n):t}function dB(e,t){return t?new Proxy(e,{get:(e,n,r)=>n in t&&n!==`constructor`?Reflect.get(t,n,r):Reflect.get(e,n,r),set:(e,n,r,i)=>n in t&&n!==`constructor`?Reflect.set(t,n,r,i):Reflect.set(e,n,r,i)}):e}function fB(e,t,n){return dB(e,Object.defineProperty(Object.create(null),t,{value:n,writable:!1}))}function pB(e,t,n,r){if(!n)return r;let i=Reflect.getOwnPropertyDescriptor(t,n)?.value;return i?fB(r,n,e.extend({[Q.shadow]:i})):r}function mB(e,t,n,r){return new Proxy(t,{apply:(t,i,a)=>(i===n&&(i=r),uB(e,Reflect.apply(t,i,a)))})}function hB(e,t,n){e[Q.shadow]&&!n.noShadow&&(e=Object.getPrototypeOf(e));let r=new Proxy(t,{get:(t,r,i)=>{if(r===Q.original)return t;if(r===n.property)return e;if(typeof r==`symbol`)return Reflect.get(t,r,i);if(n.associate&&e.reflect.props[`${n.associate}.${r}`])return Reflect.get(e,`${n.associate}.${r}`,fB(e,Q.receiver,i));let a,o,s=lB(t,r);s&&`value`in s?o=s.value:(a=pB(e,t,n.property,i),o=Reflect.get(t,r,a));let c=o?.[Q.tracker];return c?hB(e,o,c):!n.noShadow&&typeof o==`function`?(a??=pB(e,t,n.property,i),mB(e,o,i,a)):o},set:(t,r,i,a)=>{if(r===Q.original||r===n.property)return!1;if(typeof r==`symbol`)return Reflect.set(t,r,i,a);if(n.associate&&e.reflect.props[`${n.associate}.${r}`])return Reflect.set(e,`${n.associate}.${r}`,i,fB(e,Q.receiver,a));let o=pB(e,t,n.property,a);return Reflect.set(t,r,i,o)},apply:(e,t,n)=>gB(r,e,t,n)});return r}function gB(e,t,n,r){return t[Q.invoke]?t[Q.invoke].apply(e,r):Reflect.apply(t,n,r)}function _B(e,t,n){let r=function(...e){return gB(hB(r.ctx,r,n),r,this,e)};return Jz(r,`name`,e),Object.setPrototypeOf(r,t)}function vB(e,t,n){let r=e.error.stack.split(` +`);if(typeof t?.stack!=`string`){let e=Error(t),r=e.stack.split(` +`);throw r.splice(1,1/0,...n()),e.stack=r.join(` +`),e}let i=t.stack.split(` +`),a=i.indexOf(r[2]);if(a===-1)throw t;for(a-=e.offset;a>0&&i[a-1].endsWith(` ()`);)--a;throw i.splice(a,1/0,...n()),t.stack=i.join(` +`),t}function yB(e,t=bB()){let n={offset:1,error:Error()};try{let r=e(n);return cB(r)&&`then`in r?r.then(void 0,e=>vB(n,e,t)):r}catch(e){vB(n,e,t)}}function bB(e=0){let t=Error();return()=>t.stack.split(` +`).slice(3+e)}function xB(e){return e!==null&&e!==!1&&e!==void 0}var SB=class{ctx;_hooks={};constructor(e){this.ctx=e,Jz(this,Q.tracker,{property:`ctx`,noShadow:!0}),this.on(`internal/listener`,function(e,t,n){if(e===`internal/update`&&!n.global)return(this.fiber._hooks[`internal/update`]??=new rB)[n.prepend?`unshift`:`push`](t)}),this.on(`internal/update`,function(e,t,n){let r=[...this._hooks[`internal/update`]||[]],i=()=>(r.shift()??n).call(this,e,t,i);return i()},{global:!0,prepend:!0})}dispatch(e,t){let n=typeof t[0]==`object`||typeof t[0]==`function`?t.shift():null,r=t.shift();r.startsWith(`internal/`)||this.emit(`internal/dispatch`,e,r,t,n);let i=n?.[GB.filter];return(this._hooks[r]||[]).filter(e=>e.global||!i||i.call(n,e.ctx)).map(e=>e.callback.bind(n))}async parallel(...e){let t=(await Promise.allSettled(this.dispatch(`emit`,e).map(async t=>t(...e)))).filter(e=>e.status===`rejected`);if(t.length)throw AggregateError(t.map(e=>e.reason))}emit(...e){this.dispatch(`emit`,e).map(t=>t(...e))}async serial(...e){for(let t of this.dispatch(`serial`,e)){let n=await t(...e);if(xB(n))return n}}bail(...e){for(let t of this.dispatch(`bail`,e)){let n=t(...e);if(xB(n))return n}}waterfall(...e){let t=this.dispatch(`waterfall`,e),n=e.pop(),r=()=>(t.shift()??n)(...e);return e.push(r),r()}register(e,t,n,r){let i=r.prepend?`unshift`:`push`;return this.ctx.fiber.effect(()=>(t[i]({ctx:this.ctx,callback:n,...r}),()=>this.unregister(t,n)),e)}unregister(e,t){let n=e.findIndex(e=>e.callback===t);if(n>=0)return e.splice(n,1),!0}on(e,t,n){typeof n!=`object`&&(n={prepend:n}),this.ctx.fiber.assertActive(),t=this.ctx.reflect.bind(t);let r=this.bail(this.ctx,`internal/listener`,e,t,n);if(r)return r;let i=this._hooks[e]||=[],a=`ctx.on(${typeof e==`string`?JSON.stringify(e):e.toString()})`;return this.register(a,i,t,n)}once(e,t,n){let r=this.on(e,function(...e){return r(),t.apply(this,e)},n);return r}},CB={s:e=>String(e),d:e=>Math.trunc(Number(e)),i:e=>Math.trunc(Number(e)),f:e=>Number(e),o:e=>JSON.stringify(e),O:e=>JSON.stringify(e),c:()=>``,C:(e,t,n)=>TB.color(t,TB.code(n.name,t.colors),e)};function wB(e){return e instanceof Error&&Array.isArray(e.errors)}var TB=class{service;static color(e,t,n,r=``){return e.colors?`\u001b[3${t<8?t:`8;5;`+t}${e.colors>=2?r:``}m${n}\u001b[0m`:``+n}static code(e,t){let n=0;for(let t=0;t=2?DB:EB:[];return r[Math.abs(n)%r.length]}static format(e,t){let n=t.args.slice();n[0]instanceof Error?(n[0]=n[0].stack||n[0].message,n.unshift(`%s`)):typeof n[0]!=`string`&&n.unshift(`%o`);let r=n.shift();r=r.replace(/%([a-zA-Z%])/g,(r,i)=>{if(r===`%%`)return`%`;let a=e.formatters?.[i]??CB[i];return typeof a==`function`?a(n.shift(),e,t):r});let i=e.formatters?.o??CB.o;for(let a of n)typeof a==`object`&&a&&(a=i(a,e,t)),r+=` `+a;let{maxLength:a=10240}=e;return r.split(/\r?\n/g).map(e=>e.slice(0,a)+(e.length>a?`...`:``)).join(` +`)}constructor(e,t){this.service=t,Object.assign(this,e),this.error=this._method(`error`,0),this.info=this._method(`info`,1),this.warn=this._method(`warn`,2),this.debug=this._method(`debug`,3)}_method(e,t){return(...n)=>{if(n.length===1&&n[0]instanceof Error){if(n[0].cause)this[e](n[0].cause);else if(wB(n[0])){n[0].errors.forEach(t=>this[e](t));return}}let r=++this.service._snMessage,i=Date.now();for(let a of this.service.exporters.values()){if((a.levels?.[this.name]??a.levels?.default??this.level??1){n.buffer.push(e),n.buffer.length>n.bufferSize&&(n.buffer=n.buffer.slice(-n.bufferSize))}}),n}exporter(e){return this.ctx.effect(()=>(this.exporters.set(++this._snExporter,e),()=>this.exporters.delete(this._snExporter)),`ctx.logger.exporter()`)}_resolveConfig(){let e=this.ctx[Q.intercept],t=[];for(;`logger`in e;)Object.hasOwn(e,`logger`)&&t.unshift(e.logger),e=Object.getPrototypeOf(e);return Object.assign({},...t)}[Q.invoke](e){let t=this._resolveConfig(),n=(this.ctx[Q.shadow]??this.ctx).fiber;return e??=t.name,e??=tB(n.name),new TB({name:e,level:t.level,meta:{fiber:new WeakRef(n)}},this)}static{for(let t of[`error`,`info`,`warn`,`debug`])e.prototype[t]=function(...e){return this()[t](...e)}}};function kB(e){let t=e.stack.split(` +`);return t.splice(0,2,`Error: ${e.message}`),e.stack=t.join(` +`),e}var AB=[`prototype`,`then`];function jB(e){return typeof e==`symbol`||AB.includes(e)||parseInt(e).toString()===e||e.startsWith(`_`)}var MB=class{ctx;static handler={get:(e,t,n)=>{if(jB(t))return Reflect.get(e,t,n);if(Reflect.has(e,t))return uB(n,Reflect.get(e,t,n));let r=Error(`cannot get property "${t}" without inject`);try{let i=e.reflect.props[t];return i?.type===`accessor`?i.get.call(n,n[Q.receiver],r):n.fiber.runtime?n.events.waterfall(`internal/get`,n,t,r,()=>{let i=e[Q.isolate][t],a=(n[Q.shadow]??n).fiber;for(;;){let e=a.store?.[t];if(e)return uB(n,e.value);if(t in a.inject)throw r.message=`cannot get required service "${t}" in inactive context`,r;if(!a.runtime||a.parent[Q.isolate][t]!==i)throw r;a=a.parent.fiber}}):n.reflect.get(t,!1)}catch(e){throw e===r?kB(e):e}},set:(e,t,n,r)=>{if(jB(t))return Reflect.set(e,t,n,r);let i=Error(`cannot set property "${t}" without provide`),a=e.reflect.props[t];if(!a){if(!r.fiber.runtime)return Reflect.set(e,t,n,r);throw kB(i)}try{return a.type===`accessor`?a.set?a.set.call(r,n,r[Q.receiver],i):!1:r.events.waterfall(`internal/set`,r,t,n,i,()=>r.reflect.set(t,n,i))}catch(e){throw e===i?kB(e):e}},has:(e,t)=>jB(t)?Reflect.has(e,t):Reflect.has(e,t)?!0:!!e.reflect.props[t]};store=Object.create(null);props=Object.create(null);constructor(e){this.ctx=e,Jz(this,Q.tracker,{property:`ctx`,noShadow:!0}),this.mixin(`reflect`,[`get`,`set`,`provide`,`accessor`,`mixin`]),this.mixin(`fiber`,[`runtime`,`effect`]),this.mixin(`registry`,[`inject`,`plugin`]),this.mixin(`events`,[`on`,`once`,`parallel`,`emit`,`serial`,`bail`,`waterfall`])}get(e,t=!0){return uB(this.ctx,this._getImpl(e,t)?.value)}_getImpl(e,t=!0){let n=this.ctx[Q.isolate][e],r=n&&this.store[n];if(r&&!(t&&r.fiber.state!==2))return r}set(e,t,n){let r=this.ctx[Q.isolate][e],i=this.store[r];if(!i)throw Error(`cannot set property "${e}" without provide`);if(i.fiber!==this.ctx.fiber)throw Error(`cannot set property "${e}" in multiple fibers`);return i.value=t,!0}provide(e,t,n){return this.ctx.fiber.effect(()=>{if(!this.props[e])this.props[e]??={type:`service`};else if(this.props[e].type!==`service`)throw Error(`property "${e}" is already declared as ${this.props[e].type}`);this.props[e]={type:`service`},this.ctx.root[Q.isolate][e]??=Symbol(e);let r=this.ctx[Q.isolate][e],i={name:e,value:t,fiber:this.ctx.fiber,check:n};if(this.store[r])throw Error(`service "${e}" has been registered at <${this.store[r].fiber.name}>`);return this.store[r]=i,this.ctx.fiber.store[e]=i,this.ctx.fiber.state===2&&this.notify([e]),async()=>{delete this.store[r];let t=this.notify([e]);await Promise.allSettled(t.map(e=>e.await())),delete this.ctx.fiber.store[e]}},`ctx.provide(${JSON.stringify(e)})`)}notify(e,t=(e,t)=>e[Q.isolate][t]===this.ctx[Q.isolate][t]){let n=[];for(let r of this.ctx.registry.values())for(let i of r.fibers){let r=!1;for(let n of e)n in i.inject&&t(i.ctx,n)&&(r=!0,i._checkImpl(n));r&&(i._refresh(),n.push(i))}for(let n of e){let e=Object.create(this.ctx);e[Q.filter]=e=>t(e,n),this.ctx.events.emit(e,`internal/service`,n,this._getImpl(n,!1)?.value)}return n}accessor(e,t){return this.ctx.fiber.effect(()=>{if(e in this.props)throw Error(`property "${e}" is already declared as ${this.props[e].type}`);return this.props[e]={type:`accessor`,...t},()=>delete this.props[e]},`ctx.accessor(${JSON.stringify(e)})`)}mixin(e,t){let n=this;return this.ctx.fiber.effect(function*(){let r=Array.isArray(t)?t.map(e=>[e,e]):Object.entries(t),i=(t,n)=>t[e];for(let[e,t]of r)yield n.accessor(t,{get(t,n){let r=i(this,n);if(qz(r))return r;let a=t?dB(t,r):r,o=Reflect.get(r,e,a);return typeof o==`function`?o.bind(a??r):o},set(t,n,r){let a=i(this,r),o=n?dB(n,a):a;return Reflect.set(a,e,t,o)}})},`ctx.mixin(${JSON.stringify(e)})`)}trace(e){return uB(this.ctx,e)}bind(e){return new Proxy(e,{apply:(e,t,n)=>Reflect.apply(e,this.trace(t),n.map(e=>this.trace(e))),construct:(e,t,n)=>Reflect.construct(e,t.map(e=>this.trace(e)),n)})}},NB=Symbol.for(`ValidationError`),PB=class extends TypeError{name=`ValidationError`;constructor(e){super(`invalid config: +`+e.map(e=>e.path?` - ${e.message} (at ${e.path.join(`.`)})`:` - ${e.message}`).join(` +`))}};Object.defineProperty(PB.prototype,NB,{value:!0});function FB(e,t){if(!e.Config)return t;let n=e.Config[`~standard`].validate(t);if(`then`in n)throw TypeError(`Async config validation is not supported`);if(n.issues)throw new PB(n.issues);return n.value}var IB=new WeakMap;function LB(e){let t=e();return IB.get(e)?.()??t}function RB(e,t){let n=[`internal/plugin`,t],r;try{r=e.events.dispatch(`emit`,n)}catch(t){e.logger.error(t);return}for(let t of r)try{let r=t(...n);Promise.resolve(r).catch(t=>e.logger.error(t))}catch(t){e.logger.error(t)}}var zB=class e extends Error{code;constructor(t,n){super(n??e.Code[t]),this.code=t}};(function(e){e.Code={INACTIVE_EFFECT:`cannot create effect on inactive context`}})(zB||={});var BB=`__INACTIVE__`,VB=class{parent;inject;runtime;uid;ctx;config;_config;state=0;dispose;store;inertia;_hooks=Object.create(null);_disposables=new rB;context;_error;_runner;_store=Object.create(null);constructor(e,t,n,r,i){this.parent=e,this.inject=n,this.runtime=r,this._config=t;let a=e=>{this._disposables.push(e)};if(r){this.uid=e.registry.counter,this.ctx=this.context=e.extend({fiber:this});let t=Object.entries(this.inject);if(t.length){this.ctx[GB.intercept]=Object.create(e[GB.intercept]);for(let[e,n]of t)qz(n)||(this.ctx[GB.intercept][e]=n)}this._runner={epoch:BB,getOuterStack:i,execute:function(){if(oB(r.callback)){let e=new r.callback(this.ctx,this.config);for(let t of e?.[Q.initHooks]??[])t();return e?.[Q.init]?.()}return r.callback(this.ctx,this.config)},collect:a},this.dispose=e.fiber.effect(()=>{let e=r.fibers.push(this);return async()=>{for(this.uid=null,RB(this.context,this),this.ctx.registry.has(r.callback)&&(e(),r.fibers.length||this.ctx.registry.delete(r.callback)),this._setEpoch(BB),this.inertia||this._updateState(()=>(this.inertia=this._unload(),5));this.inertia;)await this.inertia}},`ctx.plugin()`);try{this.context.emit(`internal/plugin`,this)}catch(e){throw Promise.resolve(this.dispose()).catch(e=>this.ctx.logger.error(e)),e}if(this.uid!==null&&e.fiber.state!==5){for(let e of Object.keys(this.inject))this._checkImpl(e);this._refresh()}}else this.uid=0,this.ctx=this.context=e,this.state=2,this.store=Object.create(null),this._runner={epoch:``,getOuterStack:i,execute:()=>{},collect:a},this.dispose=()=>this.restart()}get name(){let e=this;do{if(e.runtime?.name)return e.runtime.name;e=e.parent.fiber}while(e!==e.parent.fiber);return`root`}assertActive(){if(this.uid===null)throw new zB(`INACTIVE_EFFECT`)}_execute(e){let t=e.epoch;return yB(n=>{let r=t=>{if(typeof t==`function`)e.collect(t);else if(!qz(t))throw TypeError(`Invalid effect`)},i=e.execute.call(this);if(typeof i==`function`)return e.collect(i);if(!qz(i)){if(!cB(i))throw TypeError(`Invalid effect`);if(`then`in i)return i.then(r);if(Symbol.iterator in i){n.error=Error();let e=i[Symbol.iterator]();for(;;){let t=e.next();if(r(t.value),t.done)return}}else if(Symbol.asyncIterator in i){let a=i[Symbol.asyncIterator]();return(async()=>{for(await Promise.resolve(),n.error=Error();;){if(e.epoch!==t)return;let n=await a.next();if(r(n.value),n.done)return}})()}else throw TypeError(`Invalid effect`)}},e.getOuterStack)}effect(e,t=`anonymous`){if(this.assertActive(),this.state===5)throw new zB(`INACTIVE_EFFECT`);let n=[],r=!1,i,a=()=>{if(r)return i;r=!0;let e;for(let t of n.splice(0).reverse())if(e)e=e.then(()=>LB(t));else{let n=LB(t);cB(n)&&`then`in n&&(e=n)}return i=e},o={label:t,children:[]},s={execute:e,epoch:!0,collect:e=>{n.push(e),this._disposables.delete(e),e[Q.effect]&&o.children.push(e[Q.effect])},getOuterStack:bB()},c,l=!0,u,d,f,p=!1,m,h=()=>!1,g=()=>(f??=new Promise((e,t)=>{u=e,d=t}),f),_=e=>Promise.resolve(e).then(()=>a(),async e=>{throw await a(),e}),v=e=>{let t;try{t=e()}catch(e){throw h(),e}if(cB(t)&&`then`in t){let e=Promise.resolve(t).finally(()=>{h(),m===e&&(m=void 0)});return m=e}return h(),t},y=Jz(()=>s.epoch?(s.epoch=!1,v(()=>l?_(g()):c?_(c):a())):p?m:void 0,Q.effect,o);IB.set(y,()=>m),h=this._disposables.push(y);try{c=this._execute(s)}catch(e){l=!1,p=!0,s.epoch=!1;let t;try{t=v(a)}finally{d?.(e)}throw cB(t)&&`then`in t&&t.catch(e=>this.ctx.logger.error(e)),e}l=!1,f&&Promise.resolve(c).then(u,d),c?.catch(()=>s.epoch?v(a):a()).catch(e=>this.ctx.logger.error(e));let b=()=>{if(s.epoch)return s.epoch=!1,v(a)};return y.then=async(e,t)=>Promise.resolve(c).then(()=>b).then(e,t),y}getEffects(){return[...this._disposables].map(e=>e[Q.effect]).filter(Boolean)}_getState(){return this.uid===null?4:this._error?3:this._runner.epoch===BB?0:2}_updateState(e){let t=this.state;if(this.state=e()??this._getState(),t!==this.state&&(this.context.emit(`internal/status`,this,t),t===2||this.state===2))for(let e of Reflect.ownKeys(this.ctx.reflect.store)){let t=this.ctx.reflect.store[e];t.fiber===this&&this.ctx.reflect.notify([t.name])}}_checkImpl(e){let t=this.ctx.reflect._getImpl(e,!0);if(!t)return delete this._store[e];try{if(t.check&&!t.check.call(uB(this.ctx,t.value)))return delete this._store[e]}catch(n){return t.fiber.ctx.logger.error(n),delete this._store[e]}this._store[e]=t}_refresh(){let e=!1;e=``;for(let t of Object.keys(this.inject)){let n=this._store[t];if(!n){e=BB;break}e+=`:`+n.fiber.uid}this._setEpoch(e)}_setEpoch(e){let t=this._runner.epoch;e!==t&&(this._runner.epoch=e,!this.inertia&&this._updateState(()=>e!==BB&&t===BB?(this.inertia=this._reload(),1):(this.inertia=this._unload(),5)))}_resolveConfig(e){return e=this.context.waterfall(this,`internal/config`,e,()=>e),this.runtime?FB(this.runtime,e):e}async _reload(){this.store={...this._store};let e=this._runner.epoch;try{await Promise.resolve(),this._runner.epoch===e&&(this.config=this._resolveConfig(this._config),await this._execute(this._runner),this._error=void 0)}catch(e){this.ctx.logger.error(e),this._error=e,this._runner.epoch=BB}this._updateState(()=>{if(this._runner.epoch===e)this.inertia=void 0;else return this.inertia=this._unload(),5})}async _unload(){await Promise.all(this._disposables.clear().map(async e=>{try{await yB(async t=>{await Promise.resolve(),t.error=Error(),await LB(e)},this._runner.getOuterStack)}catch(e){this.ctx.logger.error(e)}})),this.store=void 0,this._updateState(()=>{if(this._runner.epoch===BB)this.inertia=void 0;else return this.inertia=this._reload(),1})}async await(){for(;this.inertia;)await this.inertia;if(this._error)throw this._error;return this}async restart(){this.assertActive(),this._setEpoch(BB),this._refresh(),await this.await()}update(e,t=!1){if(this.assertActive(),this._config=e,this.state!==2){this._error=void 0,this._setEpoch(BB),this._refresh();return}return e=this._resolveConfig(e),this.context.waterfall(this,`internal/update`,e,t,()=>(this.config=e,this._error=void 0,this.restart()))}};function HB(e){return e&&typeof e==`object`&&typeof e.apply==`function`}function UB(e,t){return function(n,r){if(r.kind===`class`)Object.hasOwn(n,`inject`)||(Jz(n,`inject`,Object.create(Object.getPrototypeOf(n).inject??null)),Jz(n.inject,Q.checkProto,!0)),n.inject[e]=t;else if(r.kind===`method`){let i=(n[Q.metadata]??={}).inject??=Object.create(null);i[e]=t,r.addInitializer(function(){let e=this[Q.tracker]?.property;(this[Q.initHooks]??=[]).push(()=>{this.ctx.inject(i,t=>n.call(e?dB(this,{[e]:t}):this))})})}else throw Error(`@Inject() can only be used on class or class methods`)}}(function(e){function t(e,n=Object.create(null)){if(!e)return n;if(Array.isArray(e))for(let t of e)n[t]=null;else if(Reflect.has(e,Q.checkProto)){Object.assign(n,t(Object.getPrototypeOf(e)));for(let t of Object.keys(e))n[t]=e[t]??null}else for(let t of Object.keys(e))n[t]=e[t]??null;return n}e.resolve=t})(UB||={});var WB=class{ctx;_counter=0;_internal=new Map;constructor(e){this.ctx=e,Jz(this,Q.tracker,{property:`ctx`,noShadow:!0})}get counter(){return++this._counter}get size(){return this._internal.size}resolve(e){try{if(typeof e==`function`)return e;if(HB(e))return e.apply}catch{}}get(e){let t=this.resolve(e);return t&&this._internal.get(t)}has(e){let t=this.resolve(e);return!!t&&this._internal.has(t)}delete(e){let t=this.resolve(e),n=t&&this._internal.get(t);if(n){this._internal.delete(t);for(let e of n.fibers)e.dispose();return n}}keys(){return this._internal.keys()}values(){return this._internal.values()}entries(){return this._internal.entries()}forEach(e){return this._internal.forEach(e)}inject(e,t){return this.plugin({inject:e,apply:t,name:t.name})}plugin(e,t,n=bB()){let r=this.resolve(e);if(!r)throw Error(`invalid plugin, expect function or object with an "apply" method, received `+typeof e);this.ctx.fiber.assertActive();let i=this._internal.get(r);if(!i){let t=e.name;t===`apply`&&(t=void 0),i={name:t,callback:r,fibers:new rB,Config:e.Config},this._internal.set(r,i)}let a=new VB(this.ctx,t,UB.resolve(e.inject),i,n),o=Object.create(a);return o.then=(e,t)=>a.await().then(e,t),o}},GB=class e{static effect=Q.effect;static filter=Q.filter;static isolate=Q.isolate;static intercept=Q.intercept;static is(t){return!!t?.[e.is]}static{e.is[Symbol.toPrimitive]=()=>Symbol.for(`cordis.is`),e.prototype[e.is]=!0}constructor(){this[Q.isolate]=Object.create(null),this[Q.intercept]=Object.create(null);let e=new Proxy(this,MB.handler);return this.root=e,this.baseUrl=void 0,this.fiber=new VB(e,{},Object.create(null),null,()=>[]),this.reflect=new MB(e),this.registry=new WB(e),this.events=new SB(e),this.logger=new OB(e),this.fiber._disposables.clear(),e}[Symbol.for(`nodejs.util.inspect.custom`)](){return`Context <${this.fiber.name}>`}extend(e={}){let t=Reflect.getOwnPropertyDescriptor(this,Q.shadow)?.value,n=Object.create(uB(this,this));for(let t of Reflect.ownKeys(e))Object.defineProperty(n,t,Reflect.getOwnPropertyDescriptor(e,t));return t?Object.assign(Object.create(n),{[Q.shadow]:t}):n}isolate(e,t){let n=Object.create(this[Q.isolate]);return n[e]=t??Symbol(e),this.extend({[Q.isolate]:n})}intercept(e,t){let n=Object.create(this[Q.intercept]);return n[e]=t,this.extend({[Q.intercept]:n})}};(class e{ctx;static init=Q.init;static check=Q.check;static config=Q.config;static invoke=Q.invoke;static extend=Q.extend;static tracker=Q.tracker;static resolveConfig=Q.resolveConfig;name;constructor(e,t){this.ctx=e,t??=this.constructor.provide;let n=this,r={associate:t,property:`ctx`};return n[Q.invoke]&&(n=_B(t,sB(Object.getPrototypeOf(this),Function.prototype),r)),n.ctx=e,n.name=t,Jz(n,Q.tracker,r),n.ctx.reflect.provide(t,n,this[Q.check]),n}[Q.filter](e){return e[Q.isolate][this.name]===this.ctx[Q.isolate][this.name]}[Q.extend](t){let n;return n=this[e.invoke]?_B(this.name,this,this[Q.tracker]):Object.create(this),Object.assign(n,t)}[Q.resolveConfig](e,t){let n=this.ctx[GB.intercept],r=[];for(;this.name in n;)Object.hasOwn(n,this.name)&&r.unshift(n[this.name]),n=Object.getPrototypeOf(n);return e&&r.unshift(e),t&&r.push(t),this.Config?.merge?this.Config.merge(...r):Object.assign({},...r)}static[Symbol.hasInstance](e){if(!e)return!1;let t=e.constructor;for(;t;){if(t=t.prototype?.constructor,t===this)return!0;t&&=Object.getPrototypeOf(t)}return!1}});var KB=class{contributions=new Gz;context=new GB;constructor(){let e=this.contributions;this.context.provide(`studio`,{ui:{register(t,n,r){return t.effect(()=>e.register(n,r))}}})}async mount(e){let t=t=>e.apply(t);Object.assign(t,{inject:[...new Set([`studio`,...e.inject??[]])]}),e.name&&Object.defineProperty(t,"name",{configurable:!0,value:e.name});let n=await this.context.plugin(t);return{dispose:()=>n.dispose()}}async dispose(){await this.context.fiber.dispose()}},qB=new KB,JB=[{value:`codex`,label:`Codex · ManagedRuntime`},{value:`adk`,label:`Google ADK · Python source`},{value:`langgraph`,label:`LangGraph · Python graph`}];function YB(e,t=[]){let n=e.filter(e=>e.state===`ready`&&e.compatible),r=new Set([...n.map(e=>e.providerRef),...t.filter(e=>e.selectable).map(e=>e.providerRef)]);return r.size===0?[...JB]:[...JB,{value:`plugin`,label:r.size===1?`${n[0]?.displayName||t.find(e=>e.selectable)?.displayName||`DSH AgentProvider`} · Plugin`:`DSH AgentProvider · ${r.size} 个可用`}]}var XB=`agentkit.studio.agentDraft.v1`;function ZB(e){return e?.requiredSecretRefs?.[0]||e?.contract?.credentialRef||e?.contract?.credential_ref||e?.contract?.requiredSecretRefs?.[0]||e?.contract?.required_secret_refs?.[0]||``}var QB={loose:{title:`宽松权限策略`,description:`本地 Tool 全部自动允许,外部操作仍需审批。`},strict:{title:`严格权限策略`,description:`只读 Tool 自动允许,外部或写入操作需要审批。`},custom:{title:`自定义权限策略`,description:`沿用每个 Tool Contract 中配置的审批策略。`}},$B=[{value:`codex`,label:`Codex · ManagedRuntime`},{value:`adk`,label:`Google ADK · Python source`},{value:`langgraph`,label:`LangGraph · Python graph`}],eV=[[`定义 Agent`,`模板与系统提示词`],[`绑定能力`,`Model · Tool · MCP · Skill`],[`Prompt 与策略`,`检查并调整`],[`检查并创建`,`构建与打开会话`]],tV=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`]),nV=[`deepseek`,`glm`,`kimi`,`minimax`,`qwen`];function rV(e){let t=String(e.contract?.model||e.name||``).toLowerCase(),n=t.includes(`/`)?t.split(`/`,2)[1]:t,r=n.replaceAll(`.`,`-`),i=nV.findIndex(e=>r===e||r.startsWith(e===`qwen`?e:`${e}-`)),a=(n.match(/\d+/g)||[]).slice(0,8).map(e=>-Number(e));for(;a.length<8;)a.push(0);return[i<0?nV.length:i,a,n]}function iV(e,t){let[n,r,i]=rV(e),[a,o,s]=rV(t);if(n!==a)return n-a;for(let e=0;enull);if(!t.ok)throw Error(n?.error?.message||`构建状态获取失败(${t.status})`);if(tV.has(n?.status)){if(n.status!==`SUCCEEDED`)throw Error(n.error?.message||`构建未完成`);return n}await new Promise(e=>window.setTimeout(e,200))}throw Error(`构建等待超时`)}function lV({editingAgentId:e,viewportMode:t,onCreated:n,onAgentsChanged:r}){let[i,a]=(0,s.useState)(`quick`),[o,c]=(0,s.useState)(!1),[l,u]=(0,s.useState)(`尚未保存`),[d,f]=(0,s.useState)([]),[p,m]=(0,s.useState)([]),[h,_]=(0,s.useState)(``),[v,y]=(0,s.useState)(`{}`),[b,x]=(0,s.useState)(!1),[S,C]=(0,s.useState)({}),w=Kz(qB.contributions,Wz.agentProvider),[T,E]=(0,s.useState)(1),[D,O]=(0,s.useState)(1),k=y_({resolver:k_(xD),defaultValues:{name:`New Agent`,slug:Lz(),runtimeType:`codex`,template:`blank`,prompt:``,description:``,audience:`产品与技术负责人`,language:`zh-CN`,depth:`deep`,format:`report`,systemPrompt:``,taskPrompt:``,buildAfterCreate:!0}}),{name:M,slug:P,runtimeType:F,template:I,description:L,prompt:R,audience:z,language:B,depth:H,format:ee,systemPrompt:te,taskPrompt:ne,buildAfterCreate:re}=k.watch(),[ie,ae]=(0,s.useState)([]),[oe,se]=(0,s.useState)([]),[ce,le]=(0,s.useState)([]),[ue,de]=(0,s.useState)([]),[W,fe]=(0,s.useState)(`strict`),[pe,me]=(0,s.useState)(`auto`),[he,_e]=(0,s.useState)(`shadow`),[ve,ye]=(0,s.useState)(!1),[be,xe]=(0,s.useState)(`shadow`),Se=(0,s.useMemo)(()=>{let e={value:`auto`,label:`自动(推荐)`,description:`根据 Runtime 能力选择安全模式`};return F===`codex`?[e,{value:`native`,label:`原生 Runtime 管理`,description:`由 Codex 等原生 Runtime 管理最终上下文`}]:F===`langgraph`?[e,{value:`framework`,label:`框架管理`,description:`保留 LangGraph 原有行为`},{value:`ksadk`,label:`KsADK 管理`,description:`统一编译 Prompt 并规划上下文`}]:[e,{value:`framework`,label:`框架管理`,description:`保留 ADK 原有行为`}]},[F]),[Ce,we]=(0,s.useState)(`idle`),[Te,De]=(0,s.useState)(`compose`),[Oe,ke]=(0,s.useState)(``),[Ae,je]=(0,s.useState)(!1),[Me,Ne]=(0,s.useState)(!1),[Pe,Fe]=(0,s.useState)(null),[Ie,Re]=(0,s.useState)(!1),ze=(0,s.useRef)(null),Be=(0,s.useRef)(null),He=(0,s.useRef)(0),We=(0,s.useRef)(!1);(0,s.useEffect)(()=>{Se.some(e=>e.value===pe)||me(`auto`)},[pe,Se]);let[Ge,qe]=(0,s.useState)([]),[Je,Ye]=(0,s.useState)(``),[Xe,Ze]=(0,s.useState)(``),[$e,rt]=(0,s.useState)([]),[it,at]=(0,s.useState)([]),[st,lt]=(0,s.useState)([]),[ut,dt]=(0,s.useState)([]),[ft,pt]=(0,s.useState)(null),mt=y_({resolver:k_(CD),defaultValues:{name:``,slug:Lz(),runtimeType:`codex`,prompt:``,description:``,modelProfileId:void 0}}),[ht,gt]=(0,s.useState)(!1),[vt,bt]=(0,s.useState)(``),[St,Ct]=(0,s.useState)(``),[wt,Tt]=(0,s.useState)(null),[Et,K]=(0,s.useState)(null),[Dt,Ot]=(0,s.useState)(!1),kt=(0,s.useRef)(null);(0,s.useEffect)(()=>()=>kt.current?.abort(),[]);let[At,jt]=(0,s.useState)(null),[Mt,Nt]=(0,s.useState)(null),Pt=y_({resolver:k_(wD),defaultValues:{name:``,slug:Lz()}}),[Ft,It]=(0,s.useState)(null),Lt=y_({resolver:k_(TD),defaultValues:{name:``,slug:Lz(),path:`.`}}),Rt=Lt.watch(`path`),[zt,Bt]=(0,s.useState)(!1),[Vt,Ht]=(0,s.useState)(``),Ut=(0,s.useCallback)(async()=>{try{let[e,t,n]=await Promise.all([g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()),g(`/api/v1/catalog/models`).then(e=>e.json()).catch(()=>null),g(`/api/v1/agent-providers`).then(e=>e.json()).catch(()=>null)]),r=e.items||[],i=r.filter(e=>e.kind===`model`&&(e.source===`local`||e.source===`market`)),a=t?.items?.length?[...i,...t.items]:r.filter(e=>e.kind===`model`);f([...a,...r.filter(e=>e.kind!==`model`)]);let o=n?.items||[];m(o),_(e=>o.some(t=>t.providerRef===e&&t.selectable)?e:o.find(e=>e.selectable)?.providerRef||``);let s=[...new Set(a.map(ZB).filter(e=>e.startsWith(`env://`)))],c=await Promise.all(s.map(async e=>{let t=e.slice(6);try{let n=await g(`/api/v1/credentials/${encodeURIComponent(t)}`);return[e,n.ok?await n.json():{configured:!1}]}catch{return[e,{configured:!1}]}}));C(Object.fromEntries(c))}catch{}},[]);(0,s.useEffect)(()=>{Ut()},[Ut]);let Wt=(0,s.useMemo)(()=>d.filter(e=>e.kind===`model`&&[`ready`,`missing-secret`].includes(e.status)).sort(iV),[d]),Gt=(0,s.useMemo)(()=>d.filter(e=>e.kind===`tool`&&e.status===`ready`),[d]),Kt=(0,s.useMemo)(()=>d.filter(e=>e.kind===`mcp`),[d]),qt=(0,s.useMemo)(()=>d.filter(e=>e.kind===`skill`&&e.status===`ready`),[d]),Jt=(0,s.useMemo)(()=>{let e=new Set(p.map(e=>e.providerRef));return[...p,...w.filter(t=>t.state===`ready`&&t.compatible&&!e.has(t.providerRef)).map(e=>({providerRef:e.providerRef,pluginId:e.id,resolvedVersion:`cordis`,displayName:e.displayName,state:`enabled`,compatible:!0,selectable:!0,reason:null,permissions:[],isolation:`cordis`,configSchemaDeclared:!1,secretFields:[]}))]},[p,w]),Yt=(0,s.useMemo)(()=>Jt.find(e=>e.providerRef===h),[Jt,h]),Xt=(0,s.useMemo)(()=>Jt.map(e=>({value:e.providerRef,label:e.displayName,description:AD(e),disabled:!e.selectable})),[Jt]),Zt=(0,s.useMemo)(()=>YB(w,p),[p,w]);(0,s.useEffect)(()=>{h&&Jt.some(e=>e.providerRef===h&&e.selectable)||_(Jt.find(e=>e.selectable)?.providerRef||``)},[Jt,h]);let Qt=(0,s.useCallback)(e=>d.find(t=>t.resourceId===e),[d]),$t=(0,s.useCallback)(e=>{let t=ZB(e);return t?S[t]:void 0},[S]),en=(0,s.useCallback)(e=>e?$t(e)?.configured??e.status===`ready`:!1,[$t]),tn=mt.watch(`runtimeType`),nn=(0,s.useMemo)(()=>Wt.map(e=>({value:e.resourceId,label:e.displayName,description:`${e.contract?.model||e.name} · ${en(e)?`凭证已配置`:`需配置凭证`}`})),[en,Wt]),rn=(0,s.useMemo)(()=>Wt.find(e=>String(e.contract?.model||e.name).toLowerCase()===`deepseek-v4-flash`)?.resourceId||Wt[0]?.resourceId||``,[Wt]);(0,s.useEffect)(()=>{if(i!==`conversation`){We.current=!1;return}We.current||!rn||(We.current=!0,Xe||Ze(rn),$e.length||rt([rn]))},[$e.length,Xe,i,rn]);function an(e){let t=new Set(e),n=Wt.map(e=>e.resourceId).filter(e=>t.has(e));rt(n),mt.setValue(`modelProfileId`,n[0]||``,{shouldDirty:!0,shouldValidate:!0})}function on(){return`${XB}:local-workspace`}function sn(){try{window.localStorage.setItem(on(),JSON.stringify({version:1,savedAt:new Date().toISOString(),mode:i,wizard:{step:T,maxStep:D,template:I,runtime:F,depth:H,selectedTools:oe,selectedSkills:ue,selectedMcp:ce,selectedModels:ie,policy:W,contextOwnership:pe,contextEngineRollout:he,memoryEnabled:ve,memoryWriteRollout:be,selectedProviderRef:h,providerConfigText:v,providerPermissionsApproved:b},fields:{name:M,slug:P,description:L,prompt:R,audience:z,language:B,format:ee,systemPrompt:te,taskPrompt:ne,buildAfterCreate:re}})),u(`已保存 ${new Intl.DateTimeFormat(`zh-CN`,{hour:`2-digit`,minute:`2-digit`}).format(new Date)}`)}catch{}}function cn(){u(`有未保存更改`)}let ln=(0,s.useCallback)(()=>({prompt:``,goal:R,description:L,taskPrompt:ne,audience:z,language:B,depth:H,outputFormat:ee,modelProfileId:ie[0]||null,modelProfileIds:ie,toolResourceIds:oe,skillResourceIds:ue,mcpResourceIds:ce,policyTemplate:W,executionStrategy:I===`research`?`plan-act-observe`:`direct`,maxSteps:I===`research`?28:12,timeoutSeconds:I===`research`?900:120}),[R,L,ne,I,z,B,H,ee,ie,oe,ue,ce,W]),un=(0,s.useCallback)(async({preservePrompt:e=!0}={})=>{let t=++He.current;De(`compose`),we(`composing`);try{let n=await g(`/api/v1/agent-templates/${I}:compose`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(ln())}),r=await n.json();if(!n.ok)throw Error(r?.error?.message||`生成 Agent 配置失败(${n.status})`);if(t!==He.current)return;ze.current=r;let i=r.spec?.bindings||{};se(F===`codex`?[]:(i.tools||[]).map(e=>e.resourceId)),de((i.skills||[]).map(e=>e.resourceId)),le((i.mcpServers||[]).map(e=>e.resourceId));let a=i.modelProfileIds?.length?i.modelProfileIds:i.modelProfileId?[i.modelProfileId]:[];a.length&&ae(a),(!e||!te.trim())&&k.setValue(`systemPrompt`,r.spec?.instructions?.system||R.trim(),{shouldDirty:!0}),(!e||!ne.trim())&&k.setValue(`taskPrompt`,r.spec?.instructions?.task||``,{shouldDirty:!0}),we(`done`)}catch(e){t===He.current&&(we(`idle`),ke(e.message||`生成 Agent 配置失败`))}},[I,ln,F,te,ne,k]),dn=(0,s.useCallback)(async()=>{let e=ie[0];if(!e){ke(`请先选择用于优化 Prompt 的模型。`);return}let t=++He.current;ke(``),De(`optimize`),we(`composing`);try{let n=[`请在不改变业务目标、Runtime 和已选能力的前提下,重写并增强这个 Agent 的角色与任务契约。`,`system 必须明确角色、目标、事实边界、失败处理和回答原则;task 必须明确每次请求的执行步骤、约束和交付结构。`,`不要返回解释,只生成可审查的 Agent Draft Patch。`,`Agent 名称:${M.trim()||`未命名 Agent`}`,`业务描述:${L.trim()||`未填写`}`,`原始目标:${R.trim()}`,`当前角色与系统提示词:${te.trim()||`未生成`}`,`当前任务契约:${ne.trim()||`未生成`}`].join(` + +`),r=`quick-optimize-${Date.now()}-${Math.random().toString(36).slice(2,10)}`,i=await g(`/api/v1/authoring/conversations:compose`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messages:[{role:`user`,content:n}],modelProfileId:e,runtimeType:F===`plugin`?`codex`:F,agentModelProfileIds:ie,agentDefaultModelProfileId:e,toolResourceIds:F===`codex`?[]:oe,mcpResourceIds:ce,skillResourceIds:ue,requestId:r})}),a=await i.json().catch(()=>null);if(!i.ok)throw Error(a?.error?.message||`优化 Prompt 失败(${i.status})`);if(t!==He.current)return;if(a?.fallback?.active)throw Error(`生成模型暂时不可用,已保留当前角色与任务契约,请稍后重试。`);let o=a?.proposal?.spec||{},s=String(o.instructions?.system||a?.proposal?.instructions?.system||``).trim(),c=String(o.instructions?.task||a?.proposal?.instructions?.task||``).trim();if(!s||!c)throw Error(`生成模型没有同时返回角色提示词与任务契约,已保留当前内容。`);k.setValue(`systemPrompt`,s,{shouldDirty:!0,shouldValidate:!0}),k.setValue(`taskPrompt`,c,{shouldDirty:!0,shouldValidate:!0}),ze.current?.spec&&(ze.current={...ze.current,spec:{...ze.current.spec,instructions:{system:s,task:c}}}),cn(),we(`done`)}catch(e){t===He.current&&(we(`done`),ke(e.message||`优化 Prompt 失败,已保留当前内容。`))}},[L,M,R,k,F,ce,ie,ue,oe,te,ne]);async function fn(e){if(!(e<1||e>4)){if(e>T){if(T===1){if(!await k.trigger([`name`,`slug`,`runtimeType`,`prompt`,`audience`],{shouldFocus:!0})){ke(`请修正标记字段后继续。`);return}if(F===`plugin`){if(!Yt?.selectable){ke(Yt?.reason?.message||`请先在插件中心安装并启用一个兼容的 AgentProvider。`);return}try{OD(v,Yt.secretFields)}catch(e){ke(e.message||`Provider 配置无效`);return}if(Yt.permissions.length&&!b){ke(`请先确认 AgentProvider 请求的权限。`);return}}}if(T===2&&!ie.length){ke(`请至少选择一个模型后继续。`);return}}ke(``),e===3&&Ce===`idle`&&un({preservePrompt:!0}),E(e),O(t=>Math.max(t,e)),cn()}}async function pn(e){ke(``),je(!0);try{if(ze.current||await un({preservePrompt:!1}),!ze.current)throw Error(`未能生成 Agent 配置,请检查模板和能力绑定后重试。`);let t=JSON.parse(JSON.stringify(ze.current?.spec||{}));if(t.instructions={system:e.systemPrompt.trim(),task:e.taskPrompt.trim()},t.description=e.description.trim()||t.description,t.context={...t.context||{},ownership:pe,promptOwnership:pe===`ksadk`?`ksadk`:pe===`framework`?`framework`:t.context?.promptOwnership||`framework`,rollout:{...t.context?.rollout||{},contextEngine:he,memoryWrite:ve?be:`off`}},t.memory={...t.memory||{},enabled:ve,recall:{...t.memory?.recall||{},enabled:ve}},e.runtimeType===`plugin`){if(!Yt?.selectable)throw Error(Yt?.reason?.message||`所选 AgentProvider 当前不可用`);if(Yt.permissions.length&&!b)throw Error(`请先确认 AgentProvider 请求的权限`);t.runtime={type:`plugin`,providerRef:Yt.providerRef,providerConfig:OD(v,Yt.secretFields)},t.security={...t.security||{},allowedPermissions:[...new Set([...t.security?.allowedPermissions||[],...Yt.permissions])].sort()}}let r=await g(`/api/v1/authoring/quick`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e.name.trim(),slug:e.slug.trim(),runtimeType:e.runtimeType,description:t.description,template:e.template,spec:t})}),i=await r.json().catch(()=>null);if(!r.ok){if(Nb(i,k.setError)){E(1);return}throw Error(i?.error?.message||`创建失败(${r.status})`)}let a=String(i?.metadata?.id||``);if(!a)throw Error(`创建响应未返回 Agent 标识`);if(e.buildAfterCreate){let e=Number(i?.metadata?.revision||1),t=await g(`/api/v1/agents/${encodeURIComponent(a)}/builds`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":`build-${a}-r${e}-${Date.now()}`},body:JSON.stringify({revision:e,runEvaluation:!1})}),n=await t.json().catch(()=>null);if(!t.ok)throw Error(n?.error?.message||`构建提交失败(${t.status})`);let r=String(n?.id||``);if(!r)throw Error(`构建响应未返回操作标识`);await cV(r)}try{window.localStorage.removeItem(on())}catch{}n(a,e.buildAfterCreate)}catch(e){ke(e.message||`创建失败`)}finally{je(!1)}}async function mn(){let e=Je.trim();if(!e||!Xe||!$e.length){bt(`请输入需求并选择用于构建的模型。`);return}if(ht)return;bt(``),Ct(``);let t=[...Ge,{role:`user`,content:e}];qe(t),Ye(``),gt(!0),K(Date.now());let n=`conv-${Date.now()}-${Math.random().toString(36).slice(2,10)}`;Tt(`resolving_model`),hn(n);try{let e=await g(`/api/v1/authoring/conversations:compose`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messages:t,modelProfileId:Xe,runtimeType:tn,agentModelProfileIds:$e,agentDefaultModelProfileId:$e[0]||null,toolResourceIds:tn===`codex`?[]:it,mcpResourceIds:st,skillResourceIds:ut,requestId:n})}),r=await e.json();if(!e.ok)throw Error(r?.error?.message||`生成失败(${e.status})`);Tt(`done`),r?.fallback?.active&&Ct(`所选生成模型暂时未能返回可用草稿。Studio 已按当前对话和你选定的 Runtime、模型与能力资源生成可编辑的本地兜底草稿;确认创建前请检查并补全。`),pt(r.proposal),Ot(!1);let i=r.proposal.spec||{description:r.proposal.description||``,instructions:r.proposal.instructions||{}};mt.reset({name:r.proposal.name||``,slug:Lz(),runtimeType:tn,prompt:i.instructions?.system||``,description:i.description||r.proposal.description||``,modelProfileId:i.bindings?.modelProfileId||$e[0]}),qe([...t,{role:`assistant`,content:JSON.stringify(oV(r.proposal))}])}catch(e){Tt(`failed`),bt(e.message||`对话构建失败`)}finally{kt.current?.abort(),kt.current=null,gt(!1)}}function hn(e){let t=new AbortController;return kt.current?.abort(),kt.current=t,(async()=>{for(;!t.signal.aborted;){if(await new Promise(e=>window.setTimeout(e,800)),t.signal.aborted)return;try{let n=await g(`/api/v1/authoring/conversations:status/${encodeURIComponent(e)}`,{signal:t.signal});if(!n.ok)continue;let r=await n.json();r?.stage&&Tt(String(r.stage))}catch{return}}})(),t}async function gn(e){if(ft){gt(!0),bt(``);try{let t=ft.spec||{description:ft.description||``,instructions:ft.instructions||{}},r=$e[0]||e.modelProfileId||null,i=$e.length?$e:r?[r]:[],a=e.runtimeType===`codex`?[]:it,o=sV(t,{description:e.description?.trim()||t.description||ft.description||``,runtime:null,model:null,instructions:{system:e.prompt.trim(),task:t.instructions?.task||``},bindings:{modelProfileId:r,modelProfileIds:i,modelParameters:null,policyTemplate:`strict`,tools:a.map(e=>({resourceId:e})),mcpServers:st.map(e=>({resourceId:e})),skills:ut.map(e=>({resourceId:e}))}}),s=await g(`/api/v1/authoring/quick`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e.name.trim(),slug:e.slug.trim(),runtimeType:e.runtimeType,description:o.description,spec:o})}),c=await s.json().catch(()=>null);if(!s.ok){if(Nb(c,mt.setError))return;throw Error(c?.error?.message||`创建失败(${s.status})`)}n(c?.metadata?.id)}catch(e){bt(e.message||`创建失败`)}finally{gt(!1)}}}async function _n(){if(At){Bt(!0),Ht(``);try{let e=new FormData;e.append(`file`,At);let t=await g(`/api/v1/authoring/imports:inspect`,{method:`POST`,body:e}),n=await t.json();if(!t.ok)throw Error(n?.error?.message||`检查失败(${t.status})`);Nt(n),Pt.reset({name:n.displayName||``,slug:Lz()})}catch(e){Ht(e.message)}finally{Bt(!1)}}}async function vn(e){if(Mt){Bt(!0),Ht(``);try{let t=await g(`/api/v1/authoring/imports/${encodeURIComponent(Mt.inspectionToken)}:commit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e.name.trim(),slug:e.slug.trim()||void 0})}),r=await t.json();if(!t.ok){if(Nb(r,Pt.setError))return;throw Error(r?.error?.message||`导入失败(${t.status})`)}n(r?.metadata?.id)}catch(e){Ht(e.message)}finally{Bt(!1)}}}async function yn(){if(await Lt.trigger(`path`)){Bt(!0),Ht(``);try{let e=await g(`/api/v1/authoring/projects:inspect`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:Rt.trim()})}),t=await e.json();if(!e.ok)throw Error(t?.error?.message||`检测失败(${e.status})`);It(t),Lt.reset({name:t.name||`Detected Agent`,slug:Lz(),path:Rt})}catch(e){Ht(e.message)}finally{Bt(!1)}}}async function bn(e){if(Ft){Bt(!0),Ht(``);try{let t=await g(`/api/v1/authoring/projects/${encodeURIComponent(Ft.inspectionToken)}:commit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e.name.trim(),slug:e.slug.trim()||void 0,modelProfileId:Wt[0]?.resourceId||null})}),r=await t.json();if(!t.ok){if(Nb(r,Lt.setError))return;throw Error(r?.error?.message||`创建失败(${t.status})`)}n(r?.metadata?.id)}catch(e){Ht(e.message)}finally{Bt(!1)}}}let xn=I===`research`?`深度调研`:`空白 Agent`,Sn={codex:`Codex`,adk:`ADK`,langgraph:`LangGraph`,plugin:`外部 Provider`}[F]||F,Cn=QB[W],wn=ie.map(e=>Qt(e)?.displayName||e).join(`、`)||`待选择`,Tn=ie.map(Qt).filter(e=>!!e),En=Tn.length===0?`未选择模型;Agent 可以先构建,但运行前需要配置。`:Tn.every(en)?`已选 ${Tn.length} 个模型 · 凭证已配置`:`部分模型凭证未配置;Agent 可以先构建,但运行前需要配置 API Key。`,Dn=Tn.some(e=>!en(e)),On=F===`codex`,kn=On?[...eV.slice(0,3),[`检查并创建`,`校验声明与打开会话`]]:eV,An=(0,s.useCallback)((e=!1)=>{c(!1),e&&requestAnimationFrame(()=>Be.current?.focus())},[]);(0,s.useEffect)(()=>{t!==`compact`&&An()},[An,t]);function jn(e){a(e),t===`compact`&&An(!0)}let Mn=[{id:`quick`,icon:xt,label:`快速创建`,sub:`配置 YAML Revision`},{id:`conversation`,icon:Le,label:`对话构建`,sub:`多轮生成 Draft Patch`},{id:`import`,icon:_t,label:`导入`,sub:`YAML / Agent ZIP`},{id:`project`,icon:Ee,label:`项目识别`,sub:`检测 ADK / LangGraph`}],Nn=!e&&i===`conversation`?`workbench`:`document`,Pn=t=>(0,G.jsxs)(`div`,{className:`create-rail-panel`,children:[t&&(0,G.jsx)(`div`,{className:`create-rail-label`,children:`创建方式`}),!e&&(0,G.jsx)(`nav`,{className:`authoring-mode-tabs`,"aria-label":`创建方式`,role:`tablist`,children:Mn.map(e=>{let t=e.icon;return(0,G.jsxs)(`button`,{id:`authoring-tab-${e.id}`,className:i===e.id?`active`:``,type:`button`,role:`tab`,"aria-selected":i===e.id,"aria-controls":`authoring-panel-${e.id}`,title:`${e.label}:${e.sub}`,onClick:()=>jn(e.id),children:[(0,G.jsx)(t,{size:16}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.label}),(0,G.jsx)(`small`,{children:e.sub})]})]},e.id)})}),(e||i===`quick`)&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{className:`create-rail-divider`}),(0,G.jsx)(`div`,{className:`create-rail-label wizard-step-label`,children:`配置步骤`}),(0,G.jsx)(`nav`,{className:`wizard-steps`,"aria-label":`创建步骤`,children:kn.map((t,n)=>{let r=n+1,i=!e&&rD,onClick:()=>fn(r),children:[(0,G.jsx)(`span`,{className:`step-number`,children:i?(0,G.jsx)(V,{size:13,strokeWidth:3}):r}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:t[0]}),(0,G.jsx)(`small`,{children:t[1]})]})]},r)})})]})]});return(0,G.jsxs)(`div`,{className:`create-shell page-container`,"data-layout":Nn,"data-authoring-mode":i,"data-editing":e?`true`:`false`,children:[(0,G.jsxs)(Sd,{children:[!e&&t===`compact`&&(0,G.jsx)(`button`,{ref:Be,className:`icon-button compact-create-rail-trigger`,type:`button`,"aria-label":`查看创建入口与配置步骤`,title:`查看创建入口与配置步骤`,"aria-expanded":o,"aria-controls":`createRail`,onClick:()=>c(e=>!e),children:(0,G.jsx)(Ke,{size:16})}),!e&&i===`quick`&&(0,G.jsx)(`span`,{className:`tag`,children:l})]}),(0,G.jsxs)(`div`,{className:`create-workbench`,children:[!e&&t!==`compact`&&(0,G.jsx)(`aside`,{id:`createRail`,className:`create-rail`,"aria-label":`创建方式与步骤`,children:Pn(!0)}),!e&&t===`compact`&&o&&(0,G.jsx)(Oa,{open:!0,compact:!0,title:`创建方式`,subtitle:`切换创建入口,或查看当前配置步骤。`,onOpenChange:e=>{e||An(!0)},children:(0,G.jsx)(`div`,{id:`createRail`,children:Pn(!1)})}),(0,G.jsxs)(`div`,{className:`create-stage`,children:[e&&(0,G.jsx)(zD,{agentId:e,catalog:d,providers:p,onSaved:(e,t)=>n(e,t),onAppearanceSaved:r}),!e&&i===`conversation`&&(0,G.jsxs)(`section`,{id:`authoring-panel-conversation`,className:`authoring-mode-panel`,role:`tabpanel`,"aria-labelledby":`authoring-tab-conversation`,children:[(0,G.jsxs)(`div`,{className:`authoring-panel-heading conversation-panel-heading`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`eyebrow`,children:`Conversation authoring`}),(0,G.jsx)(`h2`,{children:`对话创建 Agent`}),(0,G.jsx)(`p`,{children:`描述目标,逐轮完善;准备好后再检查并确认草稿。`})]}),(0,G.jsx)(`span`,{className:`tag`,children:`不会自动创建`})]}),(0,G.jsxs)(`div`,{className:`conversation-authoring-layout`,"data-draft-state":ft?Dt?`review`:`summary`:`empty`,children:[(0,G.jsxs)(`section`,{className:`conversation-chat`,"aria-label":`对话创建`,children:[(0,G.jsxs)(`div`,{className:`conversation-chat-header`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`从需求开始`}),(0,G.jsx)(`p`,{children:`像对话一样说明要做什么;后续可以继续补充边界和能力。`})]}),(0,G.jsx)(`span`,{className:`conversation-context-state`,children:Ge.length?`${Math.ceil(Ge.length/2)} 轮上下文`:`持续保留上下文`})]}),(0,G.jsxs)(`div`,{className:`conversation-transcript`,"aria-live":`polite`,children:[Ge.length===0&&(0,G.jsxs)(`div`,{className:`conversation-empty-state`,children:[(0,G.jsx)(ct,{size:18,"aria-hidden":`true`}),(0,G.jsx)(`strong`,{children:`从一句需求开始`}),(0,G.jsx)(`p`,{children:`例如:帮我做一个销售日报 Agent,能汇总群聊记录并标出待跟进事项。`})]}),Ge.map((e,t)=>{let n=e.role===`user`?null:aV(e.content);return(0,G.jsx)(`div`,{className:`conversation-message ${e.role===`user`?`user`:`assistant`}`,children:e.role===`user`?(0,G.jsx)(`p`,{children:e.content}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`strong`,{children:n?.title}),(0,G.jsx)(`p`,{children:n?.body})]})},t)}),ht&&(0,G.jsxs)(`div`,{className:`conversation-thinking`,role:`status`,children:[(0,G.jsxs)(`span`,{className:`conversation-thinking-orb`,"aria-hidden":`true`,children:[(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{})]}),(0,G.jsx)(Uz,{stage:wt,startedAt:Et})]})]}),vt&&(0,G.jsxs)(`div`,{className:`inline-alert error`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`对话构建失败`}),(0,G.jsx)(`p`,{children:vt})]})]}),St&&(0,G.jsxs)(`div`,{className:`inline-alert warning`,role:`status`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`已生成本地兜底草稿`}),(0,G.jsx)(`p`,{children:St})]})]}),(0,G.jsxs)(`form`,{className:`conversation-composer`,onSubmit:e=>{e.preventDefault(),mn()},children:[(0,G.jsx)(`textarea`,{rows:3,placeholder:`描述你想创建或调整的 Agent…`,value:Je,onChange:e=>Ye(e.target.value),onKeyDown:e=>{let t=e.nativeEvent;e.key===`Enter`&&!e.shiftKey&&!t.isComposing&&t.keyCode!==229&&(e.preventDefault(),mn())}}),(0,G.jsxs)(`div`,{className:`conversation-composer-footer`,children:[(0,G.jsxs)(`span`,{children:[`Enter 发送 `,(0,G.jsx)(`b`,{children:`·`}),` Shift + Enter 换行`]}),(0,G.jsx)(`button`,{className:`conversation-send-button`,type:`submit`,disabled:ht||!Je.trim(),"aria-label":ht?`正在生成`:`生成方案`,title:ht?`正在生成`:`生成方案`,children:(0,G.jsx)(nt,{size:16,"aria-hidden":`true`})})]})]}),(0,G.jsxs)(`details`,{className:`conversation-settings`,children:[(0,G.jsxs)(`summary`,{children:[(0,G.jsx)(`span`,{children:`部署配置`}),(0,G.jsxs)(`small`,{children:[$B.find(e=>e.value===tn)?.label.split(` · `)[0]||`Runtime`,` · `,$e.length||0,` 个模型 · `,ut.length+st.length+(tn===`codex`?0:it.length),` 项能力`]})]}),(0,G.jsxs)(`div`,{className:`conversation-settings-body`,children:[(0,G.jsx)(Y,{label:`生成模型 Profile`,className:`authoring-model-field`,footer:(0,G.jsx)(`span`,{children:`只决定本次如何生成草稿;默认 DeepSeek V4 Flash。`}),children:(0,G.jsx)(Fh,{ariaLabel:`选择用于生成草稿的模型`,value:Xe,options:nn,onValueChange:Ze})}),(0,G.jsx)(Y,{label:`Runtime`,requirement:`required`,htmlFor:`conversationRuntime`,error:mt.formState.errors.runtimeType?.message,children:(0,G.jsx)(Fh,{id:`conversationRuntime`,ariaLabel:`Runtime`,value:tn,options:$B,onValueChange:e=>mt.setValue(`runtimeType`,e,{shouldDirty:!0,shouldValidate:!0})})}),(0,G.jsx)(Y,{label:`Agent 可用模型`,className:`authoring-model-field`,footer:(0,G.jsx)(`span`,{children:`可多选;按目录中最新的模型作为运行默认值。`}),children:(0,G.jsx)(Tb,{ariaLabel:`选择对话 Agent 模型`,items:Wt,selectedIds:$e,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.contract?.model||e.name} · ${en(e)?`凭证已配置`:`需配置凭证`}`,onChange:an,searchPlaceholder:`搜索 Agent 模型`,emptyMessage:`没有可用模型`})}),(0,G.jsx)(Y,{label:`Skill`,className:`authoring-model-field`,children:(0,G.jsx)(Tb,{ariaLabel:`选择对话 Agent Skill`,items:qt,selectedIds:ut,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.version} · ${e.description||`版本化 Skill`}`,onChange:dt,searchPlaceholder:`搜索 Skill`,emptyMessage:`没有已安装的 Skill`})}),(0,G.jsx)(Y,{label:`MCP Server`,className:`authoring-model-field`,children:(0,G.jsx)(Tb,{ariaLabel:`选择对话 Agent MCP Server`,items:Kt,selectedIds:st,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.description||`MCP Server`} · ${e.health?.toolCount||0} Tool`,onChange:lt,searchPlaceholder:`搜索 MCP Server`,emptyMessage:`没有已连接的 MCP Server`})}),tn===`codex`?(0,G.jsx)(`p`,{className:`helper conversation-runtime-note`,children:`Codex 使用原生工具、MCP 和 Skill;KsADK Tool 仅绑定到 ADK / LangGraph 通用 Agent。`}):(0,G.jsx)(Y,{label:`KsADK Tool`,className:`authoring-model-field`,children:(0,G.jsx)(Tb,{ariaLabel:`选择对话 Agent Tool`,items:Gt,selectedIds:it,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.version} · ${e.description||`本地 Tool`}`,onChange:at,searchPlaceholder:`搜索 Tool`,emptyMessage:`没有可用 Tool`})})]})]})]}),(0,G.jsx)(Vg,{...mt,children:(0,G.jsxs)(`aside`,{className:`conversation-draft-rail${ft?Dt?` is-reviewing`:``:` is-empty`}`,"aria-label":`Draft Patch`,children:[(0,G.jsxs)(`div`,{className:`conversation-draft-rail-heading`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`Draft Patch`}),(0,G.jsx)(`p`,{children:ft?`草稿已随对话更新`:`对话后生成,可随时检查`})]}),(0,G.jsx)(`span`,{className:`badge`,"data-state":ft?`ready`:`pending`,children:ft?`已更新`:`待生成`})]}),ft?Dt?(0,G.jsxs)(`form`,{className:`conversation-review-form`,onSubmit:mt.handleSubmit(gn),noValidate:!0,children:[(0,G.jsxs)(`div`,{className:`conversation-review-heading`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`检查并确认`}),(0,G.jsx)(`p`,{children:`编辑名称、提示词或打开左侧部署配置;确认后才会创建 Revision。`})]}),(0,G.jsx)(`button`,{type:`button`,className:`button secondary`,onClick:()=>Ot(!1),children:`收起`})]}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`显示名称`,requirement:`required`,htmlFor:`conversationName`,error:mt.formState.errors.name?.message,children:(0,G.jsx)(`input`,{id:`conversationName`,...mt.register(`name`)})}),(0,G.jsx)(Rz,{id:`conversationSlug`,value:mt.watch(`slug`),onChange:e=>mt.setValue(`slug`,e,{shouldDirty:!0,shouldValidate:!0}),error:mt.formState.errors.slug?.message})]}),(0,G.jsx)(Y,{label:`系统提示词`,requirement:`required`,htmlFor:`conversationPrompt`,error:mt.formState.errors.prompt?.message,children:(0,G.jsx)(`textarea`,{id:`conversationPrompt`,rows:8,...mt.register(`prompt`)})}),(0,G.jsx)(`div`,{className:`authoring-card-actions`,children:(0,G.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:ht,children:[(0,G.jsx)(V,{size:16}),(0,G.jsx)(`span`,{children:`确认并创建 Revision`})]})})]}):(0,G.jsxs)(`div`,{className:`conversation-draft-summary`,children:[(0,G.jsxs)(`div`,{className:`conversation-draft-title`,children:[(0,G.jsx)(N,{size:18,"aria-hidden":`true`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:mt.watch(`name`)||ft.name}),(0,G.jsx)(`p`,{children:mt.watch(`description`)||ft.description||`已生成可编辑的 Agent 草稿`})]})]}),(0,G.jsxs)(`div`,{className:`conversation-preview-section`,children:[(0,G.jsx)(`span`,{children:`角色与系统提示词`}),(0,G.jsx)(`p`,{children:mt.watch(`prompt`)||ft?.spec?.instructions?.system||`尚未生成`})]}),(0,G.jsxs)(`div`,{className:`conversation-preview-section`,children:[(0,G.jsx)(`span`,{children:`任务契约`}),(0,G.jsx)(`p`,{children:ft?.spec?.instructions?.task||`根据对话目标完成任务。`})]}),(0,G.jsxs)(`div`,{className:`conversation-draft-tags`,children:[(0,G.jsx)(`span`,{children:$B.find(e=>e.value===tn)?.label.split(` · `)[0]||`Runtime`}),(0,G.jsxs)(`span`,{children:[$e.length,` 个模型`]}),ut.length+st.length+(tn===`codex`?0:it.length)>0&&(0,G.jsxs)(`span`,{children:[ut.length+st.length+(tn===`codex`?0:it.length),` 项能力`]})]}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>Ot(!0),children:[(0,G.jsx)(Ke,{size:16}),(0,G.jsx)(`span`,{children:`编辑并创建`})]})]}):(0,G.jsxs)(`div`,{className:`conversation-draft-empty`,children:[(0,G.jsx)(N,{size:20,"aria-hidden":`true`}),(0,G.jsx)(`strong`,{children:`从对话开始`}),(0,G.jsx)(`p`,{children:`先描述目标。草稿会在这里显示摘要,不会自动创建 Agent。`})]})]})})]})]}),!e&&i===`import`&&(0,G.jsxs)(`section`,{id:`authoring-panel-import`,className:`authoring-mode-panel`,role:`tabpanel`,"aria-labelledby":`authoring-tab-import`,children:[(0,G.jsxs)(`div`,{className:`authoring-panel-heading`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`eyebrow`,children:`Agent import`}),(0,G.jsx)(`h2`,{children:`检查并导入 Agent`}),(0,G.jsx)(`p`,{children:`先解析格式、Runtime、文件清单和 SHA-256,确认后再写入。`})]}),(0,G.jsx)(`span`,{className:`tag`,children:`YAML / ZIP`})]}),(0,G.jsxs)(`div`,{className:`authoring-inspect-grid`,children:[(0,G.jsxs)(`form`,{className:`authoring-input-card`,onSubmit:e=>{e.preventDefault(),_n()},children:[(0,G.jsxs)(`div`,{className:`authoring-section-heading`,children:[(0,G.jsx)(`span`,{className:`authoring-section-index`,children:`01`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`选择 Agent 文件`}),(0,G.jsx)(`p`,{children:`支持 YAML 或 ZIP;检查过程不会写入 Catalog。`})]})]}),(0,G.jsx)(Y,{label:`Agent 文件`,requirement:`required`,hint:`拖放 Agent YAML / ZIP,或点击选择`,children:(0,G.jsx)(`div`,{children:(0,G.jsx)(ez,{ariaLabel:`选择 Agent YAML 或 ZIP`,accept:{"application/zip":[`.zip`],"application/yaml":[`.yaml`,`.yml`],"text/yaml":[`.yaml`,`.yml`]},maxSize:104857600,file:At,onFile:e=>{jt(e),Nt(null)},onError:Ht})})}),(0,G.jsx)(`div`,{className:`authoring-card-actions`,children:(0,G.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:zt,children:[(0,G.jsx)(tt,{size:16}),(0,G.jsx)(`span`,{children:zt?`检查中`:`只读检查`})]})})]}),(0,G.jsx)(Vg,{...Pt,children:(0,G.jsxs)(`form`,{className:`authoring-inspection-card`,onSubmit:Pt.handleSubmit(vn),noValidate:!0,children:[(0,G.jsxs)(`div`,{className:`authoring-section-heading`,children:[(0,G.jsx)(`span`,{className:`authoring-section-index`,children:`02`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`检查并确认`}),(0,G.jsx)(`p`,{children:`核对解析结果、警告与 RuntimeRef,再执行导入。`})]}),(0,G.jsx)(`span`,{className:`badge`,"data-state":Mt?`ready`:`pending`,"aria-live":`polite`,children:Mt?`检查完成`:`等待检查`})]}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`显示名称`,requirement:`required`,htmlFor:`importName`,error:Pt.formState.errors.name?.message,children:(0,G.jsx)(`input`,{id:`importName`,...Pt.register(`name`)})}),(0,G.jsx)(Rz,{id:`importSlug`,value:Pt.watch(`slug`),onChange:e=>Pt.setValue(`slug`,e,{shouldDirty:!0,shouldValidate:!0}),error:Pt.formState.errors.slug?.message})]}),(0,G.jsx)(Db,{code:Mt?JSON.stringify(Mt,null,2):`选择文件并检查后显示解析结果、警告和 RuntimeRef。`,language:Mt?`json`:`text`,filename:`agent-import-inspection.json`,showLineNumbers:!!Mt,wrap:!Mt}),(0,G.jsx)(`div`,{className:`authoring-card-actions`,children:(0,G.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:!Mt||zt,children:[(0,G.jsx)(V,{size:16}),(0,G.jsx)(`span`,{children:`确认导入`})]})})]})})]}),Vt&&(0,G.jsxs)(`div`,{className:`inline-alert error`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`操作失败`}),(0,G.jsx)(`p`,{children:Vt})]})]})]}),!e&&i===`project`&&(0,G.jsxs)(`section`,{id:`authoring-panel-project`,className:`authoring-mode-panel`,role:`tabpanel`,"aria-labelledby":`authoring-tab-project`,children:[(0,G.jsxs)(`div`,{className:`authoring-panel-heading`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`eyebrow`,children:`Project detection`}),(0,G.jsx)(`h2`,{children:`识别现有项目`}),(0,G.jsx)(`p`,{children:`复用 FrameworkDetector 展示证据和置信度;确认前不修改源码。`})]}),(0,G.jsx)(`span`,{className:`tag`,children:`Workspace only`})]}),(0,G.jsx)(Vg,{...Lt,children:(0,G.jsxs)(`div`,{className:`authoring-inspect-grid`,children:[(0,G.jsxs)(`form`,{className:`authoring-input-card`,onSubmit:e=>{e.preventDefault(),yn()},children:[(0,G.jsxs)(`div`,{className:`authoring-section-heading`,children:[(0,G.jsx)(`span`,{className:`authoring-section-index`,children:`01`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`指定项目路径`}),(0,G.jsx)(`p`,{children:`仅识别当前工作区内的目录,不会修改项目源码。`})]})]}),(0,G.jsx)(Y,{label:`工作区相对路径`,requirement:`required`,htmlFor:`projectPath`,hint:`仅检查当前工作区内的目录,不会修改项目源码。`,error:Lt.formState.errors.path?.message,children:(0,G.jsx)(`input`,{id:`projectPath`,...Lt.register(`path`)})}),(0,G.jsx)(`div`,{className:`authoring-card-actions`,children:(0,G.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:zt,children:[(0,G.jsx)(tt,{size:16}),(0,G.jsx)(`span`,{children:zt?`检测中`:`检测项目`})]})})]}),(0,G.jsxs)(`form`,{className:`authoring-inspection-card`,onSubmit:Lt.handleSubmit(bn),noValidate:!0,children:[(0,G.jsxs)(`div`,{className:`authoring-section-heading`,children:[(0,G.jsx)(`span`,{className:`authoring-section-index`,children:`02`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`检查并确认`}),(0,G.jsx)(`p`,{children:`核对 FrameworkDetector 证据与置信度,再创建 Revision。`})]}),(0,G.jsx)(`span`,{className:`badge`,"data-state":Ft?`ready`:`pending`,"aria-live":`polite`,children:Ft?`检测完成`:`等待检测`})]}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`显示名称`,requirement:`required`,htmlFor:`projectName`,error:Lt.formState.errors.name?.message,children:(0,G.jsx)(`input`,{id:`projectName`,...Lt.register(`name`)})}),(0,G.jsx)(Rz,{id:`projectSlug`,value:Lt.watch(`slug`),onChange:e=>Lt.setValue(`slug`,e,{shouldDirty:!0,shouldValidate:!0}),error:Lt.formState.errors.slug?.message})]}),(0,G.jsx)(Db,{code:Ft?JSON.stringify(Ft,null,2):`输入本地项目路径后显示 FrameworkDetector 证据。`,language:Ft?`json`:`text`,filename:`project-inspection.json`,showLineNumbers:!!Ft,wrap:!Ft}),(0,G.jsx)(`div`,{className:`authoring-card-actions`,children:(0,G.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:!Ft||zt,children:[(0,G.jsx)(V,{size:16}),(0,G.jsx)(`span`,{children:`确认创建 Revision`})]})})]})]})}),Vt&&(0,G.jsxs)(`div`,{className:`inline-alert error`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`操作失败`}),(0,G.jsx)(`p`,{children:Vt})]})]})]}),!e&&i===`quick`&&(0,G.jsxs)(`div`,{id:`authoring-panel-quick`,className:`wizard-layout`,role:`tabpanel`,"aria-labelledby":`authoring-tab-quick`,children:[(0,G.jsx)(Vg,{...k,children:(0,G.jsxs)(`form`,{id:`quickAgentForm`,className:`wizard-content`,onSubmit:k.handleSubmit(pn),noValidate:!0,children:[(0,G.jsxs)(`section`,{className:`wizard-panel${T===1?` active`:``}`,hidden:T!==1,children:[(0,G.jsxs)(`div`,{className:`panel-heading`,children:[(0,G.jsx)(`span`,{className:`panel-index`,children:`01`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:`定义 Agent 的角色`}),(0,G.jsx)(`p`,{children:`选择起点,并说明 Agent 的职责、边界和期望行为。`})]})]}),(0,G.jsxs)(`div`,{className:`field`,children:[(0,G.jsx)(`label`,{children:`创建方式`}),(0,G.jsxs)(`div`,{className:`template-grid`,children:[(0,G.jsxs)(`button`,{className:`template-card${I===`blank`?` selected`:``}`,type:`button`,onClick:()=>{k.setValue(`template`,`blank`,{shouldDirty:!0}),cn()},children:[(0,G.jsx)(`span`,{className:`template-icon`,children:(0,G.jsx)(N,{size:18})}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`空白 Agent`}),(0,G.jsx)(`small`,{children:`输入系统提示词,自主选择能力和执行策略`})]}),(0,G.jsx)(`span`,{className:`choice-check`,children:(0,G.jsx)(V,{size:14})})]}),(0,G.jsxs)(`button`,{className:`template-card${I===`research`?` selected`:``}`,type:`button`,onClick:()=>{k.setValue(`template`,`research`,{shouldDirty:!0}),cn()},children:[(0,G.jsx)(`span`,{className:`template-icon`,children:(0,G.jsx)(tt,{size:18})}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`深度调研`}),(0,G.jsx)(`small`,{children:`预置问题拆解、来源验证和引用报告方法`})]}),(0,G.jsx)(`span`,{className:`choice-check`,children:(0,G.jsx)(V,{size:14})})]})]})]}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`Agent 名称`,requirement:`required`,htmlFor:`quickAgentName`,error:k.formState.errors.name?.message,children:(0,G.jsx)(`input`,{id:`quickAgentName`,maxLength:128,placeholder:`例如:技术支持助手`,...k.register(`name`,{onChange:cn})})}),(0,G.jsx)(Rz,{value:P,onChange:e=>{k.setValue(`slug`,e,{shouldDirty:!0,shouldValidate:!0}),cn()},error:k.formState.errors.slug?.message})]}),(0,G.jsx)(Y,{label:`Runtime`,requirement:`required`,htmlFor:`quickRuntime`,hint:`由所选 RuntimeAdapter 运行;Codex 支持 OpenAI Responses 与兼容代理。`,error:k.formState.errors.runtimeType?.message,children:(0,G.jsx)(Fh,{id:`quickRuntime`,ariaLabel:`Runtime`,value:F,options:Zt,onValueChange:e=>{k.setValue(`runtimeType`,e,{shouldDirty:!0,shouldValidate:!0}),cn()}})}),F===`plugin`&&(0,G.jsxs)(`div`,{className:`template-specific`,"data-testid":`external-provider-config`,children:[(0,G.jsx)(Y,{label:`AgentProvider`,requirement:`required`,htmlFor:`quickAgentProvider`,hint:`选项来自本机已安装的 agent.provider/v1;不可用版本会保留原因但不能选择。`,children:(0,G.jsx)(Fh,{id:`quickAgentProvider`,ariaLabel:`AgentProvider`,value:h,placeholder:`没有可用的 AgentProvider`,options:Xt,disabled:!Xt.some(e=>!e.disabled),onValueChange:e=>{_(e),x(!1),cn()}})}),!Yt?.selectable&&(0,G.jsxs)(`div`,{className:`inline-alert warning`,role:`status`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`AgentProvider 当前不可用`}),(0,G.jsx)(`p`,{children:Yt?.reason?.message||`请先在插件中心安装并启用兼容的 AgentProvider。`})]})]}),(0,G.jsx)(Y,{label:`Provider 配置`,requirement:`optional`,htmlFor:`quickProviderConfig`,hint:`填写 JSON 对象;密码、Token、API Key 只能使用 env://、secret://、credential:// 或 vault:// 引用。`,children:(0,G.jsx)(`textarea`,{id:`quickProviderConfig`,className:`mono`,rows:5,value:v,onChange:e=>{y(e.target.value),cn()}})}),Yt?.permissions.length?(0,G.jsxs)(`label`,{className:`post-create-option`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:b,onChange:e=>{x(e.target.checked),cn()}}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`确认 Provider 请求的权限`}),(0,G.jsxs)(`small`,{children:[Yt.permissions.join(`、`),`;确认后才会写入本 Revision。`]})]})]}):null]}),(0,G.jsx)(Y,{label:`描述`,requirement:`optional`,htmlFor:`quickDescription`,error:k.formState.errors.description?.message,children:(0,G.jsx)(`input`,{id:`quickDescription`,maxLength:1024,placeholder:`简要说明这个 Agent 解决什么问题`,...k.register(`description`,{onChange:cn})})}),(0,G.jsx)(Y,{label:`Agent 目标与要求`,requirement:`required`,htmlFor:`quickPrompt`,hint:`写清角色、目标、工作边界和回答方式。`,error:k.formState.errors.prompt?.message,footer:(0,G.jsxs)(`div`,{className:`field-footer`,children:[(0,G.jsx)(`span`,{children:`角色 · 目标 · 边界 · 回答方式`}),(0,G.jsxs)(`span`,{children:[R.length,` / 32768`]})]}),children:(0,G.jsx)(`textarea`,{id:`quickPrompt`,rows:7,maxLength:32768,placeholder:`例如:你是一名企业技术支持助手。先识别问题类型,再结合知识库给出准确、可执行的处理步骤;信息不足时先提问,不要编造事实。`,...k.register(`prompt`,{onChange:cn})})}),I===`research`&&(0,G.jsxs)(`div`,{className:`template-specific`,children:[(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`目标读者`,requirement:`required`,htmlFor:`researchAudience`,error:k.formState.errors.audience?.message,children:(0,G.jsx)(`input`,{id:`researchAudience`,maxLength:256,...k.register(`audience`)})}),(0,G.jsx)(Y,{label:`输出语言`,requirement:`required`,htmlFor:`researchLanguage`,children:(0,G.jsx)(Fh,{id:`researchLanguage`,ariaLabel:`输出语言`,value:B,options:[{value:`zh-CN`,label:`简体中文`},{value:`en-US`,label:`English`}],onValueChange:e=>k.setValue(`language`,e,{shouldDirty:!0,shouldValidate:!0})})})]}),(0,G.jsxs)(`div`,{className:`field`,children:[(0,G.jsx)(`label`,{children:`调研深度`}),(0,G.jsx)(`div`,{className:`choice-grid`,children:[{value:`focused`,label:`聚焦`,desc:`8 个步骤,适合快速事实核验`,time:`约 3 分钟`},{value:`standard`,label:`标准`,desc:`16 个步骤,兼顾范围和深度`,time:`约 8 分钟`},{value:`deep`,label:`深度`,desc:`28 个步骤,多来源交叉验证`,time:`约 15 分钟`}].map(e=>(0,G.jsxs)(`button`,{className:`choice-card${H===e.value?` selected`:``}`,type:`button`,onClick:()=>k.setValue(`depth`,e.value,{shouldDirty:!0}),children:[(0,G.jsx)(`span`,{className:`choice-check`,children:(0,G.jsx)(V,{size:14})}),(0,G.jsx)(`strong`,{children:e.label}),(0,G.jsx)(`span`,{children:e.desc}),(0,G.jsx)(`small`,{children:e.time})]},e.value))})]}),(0,G.jsx)(Y,{label:`默认输出`,requirement:`required`,htmlFor:`researchFormat`,children:(0,G.jsx)(Fh,{id:`researchFormat`,ariaLabel:`默认输出`,value:ee,options:[{value:`report`,label:`结构化研究报告`},{value:`brief`,label:`决策简报`},{value:`evidence-table`,label:`证据矩阵与结论`}],onValueChange:e=>k.setValue(`format`,e,{shouldDirty:!0,shouldValidate:!0})})})]})]}),(0,G.jsxs)(`section`,{className:`wizard-panel${T===2?` active`:``}`,hidden:T!==2,children:[(0,G.jsxs)(`div`,{className:`panel-heading`,children:[(0,G.jsx)(`span`,{className:`panel-index`,children:`02`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:`选择 Agent 可以使用的能力`}),(0,G.jsx)(`p`,{children:`所有依赖都会在构建时锁定版本和摘要,并由权限策略控制调用。`})]})]}),F===`codex`&&(0,G.jsxs)(`div`,{className:`inline-alert warning codex-capability-notice`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`ManagedRuntime 不绑定 ksadk Tool`}),(0,G.jsx)(`p`,{children:`codex CLI 自身提供工具能力,ksadk Tool 不会绑定到 codex Agent。MCP(streamable-http)与 Skill 可绑定:MCP 经 codex config_overrides 注入,Skill 以原生 SkillInput 注入。模型仍需选择并配置凭证。`})]})]}),(0,G.jsxs)(`div`,{className:`capability-section`,children:[(0,G.jsxs)(`div`,{className:`capability-heading`,children:[(0,G.jsx)(`span`,{className:`capability-icon`,children:(0,G.jsx)(ge,{size:15})}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`h3`,{children:[`模型 `,(0,G.jsx)(`span`,{className:`studio-field-requirement required`,"aria-hidden":`true`,children:`*`}),(0,G.jsx)(`span`,{className:`sr-only`,children:`必填`})]}),(0,G.jsx)(`p`,{children:`至少选择一个;支持多选`})]})]}),Dn&&(0,G.jsx)(`div`,{className:`model-profile-control`,children:(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:()=>Fe(Tn[0]||null),children:`配置凭证`})}),(0,G.jsx)(Tb,{ariaLabel:`选择模型`,items:Wt,selectedIds:ie,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.contract?.model||e.name} · ${en(e)?`凭证已配置`:`需配置凭证`}`,onChange:e=>{ae(e),cn()},searchPlaceholder:`搜索模型`,emptyMessage:`没有可用模型`}),(0,G.jsx)(`span`,{className:`helper`,children:En})]}),F!==`codex`&&(0,G.jsxs)(`div`,{className:`capability-section`,children:[(0,G.jsxs)(`div`,{className:`capability-heading`,children:[(0,G.jsx)(`span`,{className:`capability-icon`,children:(0,G.jsx)(yt,{size:15})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{children:`Tool 与权限`}),(0,G.jsx)(`p`,{children:`选择本地 Tool,并设置默认审批级别`})]})]}),(0,G.jsx)(`div`,{className:`segmented-control`,"aria-label":`Tool 权限模板`,children:[`loose`,`strict`,`custom`].map(e=>(0,G.jsx)(`button`,{className:W===e?`selected`:``,type:`button`,onClick:()=>{fe(e),cn()},children:{loose:`宽松`,strict:`严格`,custom:`自定义`}[e]},e))}),(0,G.jsx)(`p`,{className:`policy-description`,children:Cn.description}),(0,G.jsx)(Tb,{ariaLabel:`选择 Tool`,items:Gt,selectedIds:oe,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.version} · ${e.description||`本地 Tool`}`,onChange:e=>{se(e),cn()},searchPlaceholder:`搜索 Tool`,emptyMessage:`没有可用 Tool`})]}),(0,G.jsxs)(`div`,{className:`capability-section`,children:[(0,G.jsxs)(`div`,{className:`capability-heading`,children:[(0,G.jsx)(`span`,{className:`capability-icon`,children:(0,G.jsx)(Ve,{size:15})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{children:`MCP Server`}),(0,G.jsx)(`p`,{children:`连接外部服务并提供可发现的 Tool;codex 经 config_overrides 注入 streamable-http MCP`})]}),(0,G.jsxs)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>Re(!0),children:[(0,G.jsx)(Qe,{size:14}),(0,G.jsx)(`span`,{children:`连接 MCP`})]})]}),(0,G.jsx)(Tb,{ariaLabel:`选择 MCP Server`,items:Kt,selectedIds:ce,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.description||`MCP Server`} · ${e.health?.toolCount||0} Tool · ${e.status===`ready`?`Ready`:e.status}`,onChange:e=>{le(e),cn()},searchPlaceholder:`搜索 MCP Server`,emptyMessage:`没有已连接的 MCP Server`})]}),(0,G.jsxs)(`div`,{className:`capability-section`,children:[(0,G.jsxs)(`div`,{className:`capability-heading`,children:[(0,G.jsx)(`span`,{className:`capability-icon`,children:(0,G.jsx)(ct,{size:15})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{children:`Skill`}),(0,G.jsx)(`p`,{children:`按需注入可复用的方法、知识和任务约束`})]})]}),(0,G.jsx)(Tb,{ariaLabel:`选择 Skill`,items:qt,selectedIds:ue,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.version} · ${e.description||`版本化 Skill`}`,onChange:e=>{de(e),cn()},searchPlaceholder:`搜索 Skill`,emptyMessage:`没有已安装的 Skill`})]})]}),(0,G.jsxs)(`section`,{className:`wizard-panel${T===3?` active`:``}`,hidden:T!==3,children:[(0,G.jsxs)(`div`,{className:`panel-heading`,children:[(0,G.jsx)(`span`,{className:`panel-index`,children:`03`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:`检查系统提示词与任务契约`}),(0,G.jsx)(`p`,{children:`保存前可以继续编辑,创建时会完整写入 Agent Draft。`})]}),(0,G.jsxs)(`button`,{className:`button secondary small`,type:`button`,disabled:Ce===`composing`,onClick:dn,children:[(0,G.jsx)(et,{size:14}),(0,G.jsx)(`span`,{children:Ce===`composing`?Te===`optimize`?`正在优化`:`正在生成`:`一键优化 Prompt`})]})]}),(0,G.jsxs)(`div`,{className:`prompt-status`,children:[(0,G.jsx)(`span`,{className:`status-dot ${Ce===`done`?`success`:`info`}`}),(0,G.jsx)(`span`,{children:Ce===`composing`?Te===`optimize`?`正在使用生成模型优化角色与任务契约`:`正在根据模板与能力生成角色与任务契约`:Ce===`done`?`角色与任务契约已根据当前选择生成`:`进入此步骤后生成 Prompt`})]}),(0,G.jsx)(Y,{label:`角色与系统提示词`,requirement:`required`,htmlFor:`composedSystemPrompt`,hint:`定义角色、目标、工作边界和回答原则`,error:k.formState.errors.systemPrompt?.message,children:(0,G.jsx)(`textarea`,{id:`composedSystemPrompt`,className:`prompt-editor`,rows:16,...k.register(`systemPrompt`,{onChange:cn})})}),(0,G.jsx)(Y,{label:`任务契约`,requirement:`optional`,htmlFor:`composedTaskPrompt`,hint:`约束每次请求的执行步骤、工具使用和交付结构`,error:k.formState.errors.taskPrompt?.message,children:(0,G.jsx)(`textarea`,{id:`composedTaskPrompt`,className:`prompt-editor`,rows:10,...k.register(`taskPrompt`,{onChange:cn})})}),(0,G.jsxs)(`details`,{className:`pcm-policy-card`,children:[(0,G.jsx)(`summary`,{children:(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`上下文与记忆策略`}),(0,G.jsx)(`small`,{children:`按 Runtime 能力控制 Prompt 归属、上下文优化和长期记忆`})]})}),(0,G.jsxs)(`div`,{className:`pcm-policy-body form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`上下文责任边界`,requirement:`optional`,htmlFor:`contextOwnership`,hint:`决定由平台、框架或原生 Runtime 负责最终输入。`,children:(0,G.jsx)(Fh,{id:`contextOwnership`,ariaLabel:`上下文责任边界`,value:pe,options:Se,onValueChange:e=>{me(e),cn()}})}),(0,G.jsx)(Y,{label:`上下文优化`,requirement:`optional`,htmlFor:`contextEngineRollout`,hint:`控制预算规划、压缩和降载能力的启用阶段。`,children:(0,G.jsx)(Fh,{id:`contextEngineRollout`,ariaLabel:`上下文优化`,value:he,options:[{value:`off`,label:`Runtime 默认`,description:`不启用平台上下文优化`},{value:`shadow`,label:`仅观察`,description:`记录规划证据但不接管输入`},{value:`enabled`,label:`正式启用`,description:`按预算规划并组装上下文`}],onValueChange:e=>{_e(e),cn()}})}),(0,G.jsxs)(`label`,{className:`post-create-option`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:ve,onChange:e=>{ye(e.target.checked),cn()}}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`启用长期记忆`}),(0,G.jsx)(`small`,{children:`按 Agent 和用户作用域召回相关事实;凭证不会写入 Agent 配置。`})]})]}),(0,G.jsx)(Y,{label:`记忆写入`,requirement:`optional`,htmlFor:`memoryWriteRollout`,hint:`关闭记忆时固定为不写入。`,children:(0,G.jsx)(Fh,{id:`memoryWriteRollout`,ariaLabel:`记忆写入`,value:ve?be:`off`,disabled:!ve,options:[{value:`off`,label:`不写入`},{value:`shadow`,label:`仅生成候选`},{value:`enabled`,label:`允许写入`}],onValueChange:e=>{xe(e),cn()}})})]})]})]}),(0,G.jsxs)(`section`,{className:`wizard-panel${T===4?` active`:``}`,hidden:T!==4,children:[(0,G.jsxs)(`div`,{className:`panel-heading`,children:[(0,G.jsx)(`span`,{className:`panel-index`,children:`04`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:`检查配置并创建`}),(0,G.jsx)(`p`,{children:`确认 Agent 身份、能力依赖和创建后的动作。`})]})]}),(0,G.jsxs)(`div`,{className:`review-block`,children:[(0,G.jsxs)(`div`,{className:`review-title`,children:[(0,G.jsx)(`span`,{children:`Agent`}),(0,G.jsx)(`button`,{className:`text-button`,type:`button`,onClick:()=>fn(1),children:`编辑`})]}),(0,G.jsxs)(`div`,{className:`review-agent`,children:[(0,G.jsx)(`span`,{className:`agent-avatar`,children:I===`research`?(0,G.jsx)(tt,{size:16}):(0,G.jsx)(N,{size:16})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:M}),(0,G.jsxs)(`span`,{children:[P,` · `,F,` · `,xn]}),(0,G.jsx)(`p`,{children:R||`等待填写系统提示词`})]})]})]}),(0,G.jsxs)(`div`,{className:`review-block`,children:[(0,G.jsxs)(`div`,{className:`review-title`,children:[(0,G.jsx)(`span`,{children:`能力绑定`}),(0,G.jsx)(`button`,{className:`text-button`,type:`button`,onClick:()=>fn(2),children:`编辑`})]}),(0,G.jsxs)(`div`,{className:`review-capabilities`,children:[(0,G.jsxs)(`div`,{className:`review-capability`,children:[(0,G.jsx)(ge,{size:16}),(0,G.jsx)(`div`,{children:(0,G.jsx)(`strong`,{children:Tn[0]?.displayName||`模型`})})]}),(0,G.jsxs)(`div`,{className:`review-capability`,children:[(0,G.jsx)(yt,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`strong`,{children:[oe.length,` 个 Tool`]}),(0,G.jsx)(`span`,{children:Cn.title})]})]}),(0,G.jsxs)(`div`,{className:`review-capability`,children:[(0,G.jsx)(Ve,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`strong`,{children:[ce.length,` 个 MCP`]}),(0,G.jsx)(`span`,{children:ce.length?`已连接外部服务`:`未绑定`})]})]}),(0,G.jsxs)(`div`,{className:`review-capability`,children:[(0,G.jsx)(ct,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`strong`,{children:[ue.length,` 个 Skill`]}),(0,G.jsx)(`span`,{children:ue.length?`已注入版本化能力`:`未绑定`})]})]})]})]}),(0,G.jsxs)(`div`,{className:`review-block`,children:[(0,G.jsxs)(`div`,{className:`review-title`,children:[(0,G.jsx)(`span`,{children:`Prompt`}),(0,G.jsx)(`button`,{className:`text-button`,type:`button`,onClick:()=>fn(3),children:`编辑`})]}),(0,G.jsx)(`div`,{className:`prompt-preview`,children:te||R||`等待生成`})]}),(0,G.jsxs)(`label`,{className:`post-create-option`,children:[(0,G.jsx)(`input`,{type:`checkbox`,...k.register(`buildAfterCreate`)}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:On?`创建后立即校验 YAML 声明并打开会话`:`创建后立即构建并打开会话`}),(0,G.jsx)(`small`,{children:On?`只冻结 YAML 和 runtime 摘要;部署时不会上传代码包。`:`生成不可变 AgentBundle,完成后进入 Chat 工作台`})]})]})]}),Oe&&(0,G.jsxs)(`div`,{className:`inline-alert error wizard-error-summary`,role:`alert`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`需要处理一项配置`}),(0,G.jsx)(`p`,{children:Oe})]})]}),(0,G.jsxs)(`footer`,{className:`wizard-actions`,children:[(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,disabled:T===1,onClick:()=>fn(T-1),children:[(0,G.jsx)(A,{size:16}),(0,G.jsx)(`span`,{children:`上一步`})]}),(0,G.jsxs)(`span`,{className:`wizard-progress`,children:[`第 `,T,` 步,共 4 步`]}),(0,G.jsxs)(`dl`,{className:`summary-chips`,"aria-label":`配置摘要`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`模板`}),(0,G.jsx)(`dd`,{children:xn})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Runtime`}),(0,G.jsx)(`dd`,{children:Sn})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`模型`}),(0,G.jsx)(`dd`,{children:wn})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Tool`}),(0,G.jsx)(`dd`,{children:oe.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`MCP`}),(0,G.jsx)(`dd`,{children:ce.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Skill`}),(0,G.jsx)(`dd`,{children:ue.length})]})]}),(0,G.jsxs)(`button`,{className:`button tertiary summary-toggle`,type:`button`,"aria-expanded":Me,onClick:()=>Ne(e=>!e),children:[(0,G.jsx)(Ke,{size:16}),(0,G.jsx)(`span`,{children:`完整摘要`})]}),(0,G.jsxs)(`div`,{className:`wizard-flow-actions`,children:[(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:sn,children:`保存草稿`}),T<4?(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>fn(T+1),children:[(0,G.jsx)(`span`,{children:`继续`}),(0,G.jsx)(j,{size:16})]}):(0,G.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:Ae,children:[(0,G.jsx)(Qe,{size:16}),(0,G.jsx)(`span`,{children:Ae?`正在创建`:`创建 Agent`})]})]})]})]})}),(0,G.jsx)(Oa,{open:Me,compact:!0,title:`配置摘要`,subtitle:`检查本轮创建使用的 Runtime、模型、能力与权限策略。`,onOpenChange:Ne,children:(0,G.jsxs)(`div`,{className:`wizard-summary-content`,children:[(0,G.jsxs)(`dl`,{children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`模板`}),(0,G.jsx)(`dd`,{children:xn})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Runtime`}),(0,G.jsx)(`dd`,{children:Sn})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`模型`}),(0,G.jsx)(`dd`,{children:wn})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Skill`}),(0,G.jsx)(`dd`,{children:ue.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`MCP`}),(0,G.jsx)(`dd`,{children:ce.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Tool`}),(0,G.jsx)(`dd`,{children:oe.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`策略`}),(0,G.jsx)(`dd`,{children:I===`research`?`Plan-Act-Observe`:`Direct`})]})]}),(0,G.jsx)(`div`,{className:`summary-divider`}),(0,G.jsxs)(`div`,{className:`summary-note`,children:[(0,G.jsx)(ot,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:Cn.title}),(0,G.jsx)(`p`,{children:Cn.description})]})]}),(0,G.jsxs)(`div`,{className:`summary-note`,children:[(0,G.jsx)(Ue,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:On?`声明校验`:`不可变构建`}),(0,G.jsx)(`p`,{children:On?`冻结 YAML 与 runtime 摘要;云端部署不使用代码包。`:`Skill、MCP 和 Tool 将锁定版本与摘要。`})]})]})]})})]})]})]}),Pe&&(0,G.jsx)(Az,{model:Pe,onClose:()=>Fe(null),onChanged:Ut}),Ie&&(0,G.jsx)(Mz,{onClose:()=>Re(!1),onConnected:()=>{Re(!1),Ut()}})]})}function uV(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?e:new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(t)}function dV(e){return e.displayName||e.command.payload.content?.slice(0,28)||e.taskId}function fV(e){return e.kind===`once`?`单次 · ${uV(e.at)}`:e.kind===`interval`?`每 ${e.everySeconds||60} 秒`:e.expression||`Cron`}function pV(e=``){return{agentId:e,displayName:``,prompt:``,kind:`cron`,timezone:`Asia/Shanghai`,at:``,everySeconds:`3600`,expression:`0 9 * * 1-5`,misfirePolicy:`run_once`,enabled:!0,continuity:`new_session`,sessionId:``}}function mV(e){return{...pV(e.target.agentId||``),agentId:e.target.agentId||``,displayName:e.displayName||``,prompt:e.command.payload.content||``,kind:e.schedule.kind,timezone:e.schedule.timezone||`Asia/Shanghai`,at:e.schedule.at?e.schedule.at.slice(0,16):``,everySeconds:String(e.schedule.everySeconds||3600),expression:e.schedule.expression||`0 9 * * 1-5`,misfirePolicy:e.schedule.misfirePolicy||`skip`,enabled:e.enabled,continuity:e.continuity,sessionId:e.target.sessionId||``}}function hV(e){let t={kind:e.kind,timezone:e.timezone.trim()||`Asia/Shanghai`,misfirePolicy:e.misfirePolicy};if(e.kind===`once`){if(!e.at)throw Error(`请填写单次任务的执行时间`);t.at=new Date(e.at).toISOString()}else if(e.kind===`interval`){let n=Number(e.everySeconds);if(!Number.isInteger(n)||n<60)throw Error(`间隔至少为 60 秒`);t.everySeconds=n}else{if(!e.expression.trim())throw Error(`请填写 Cron 表达式`);t.expression=e.expression.trim()}return{displayName:e.displayName.trim()||e.prompt.trim().slice(0,32),prompt:e.prompt.trim(),schedule:t,enabled:e.enabled,continuity:e.continuity,sessionId:e.continuity===`continue_session`&&e.sessionId.trim()||null}}function gV(e){return e===`succeeded`?`成功`:e===`failed`?`失败`:e===`running`?`运行中`:e===`accepted`?`已接收`:e===`claimed`?`已认领`:e===`skipped`?`已跳过`:e===`cancelled`?`已取消`:e||`未知`}function _V(e){return e===`succeeded`?`ready`:e===`failed`||e===`cancelled`?`failed`:`pending`}function vV(e){return e.state===`claimed`||e.state===`accepted`||e.state===`running`}var yV={DISPATCH_FAILED:`提交失败`,PLUGIN_EXECUTION_FAILED:`插件执行失败`,RUNTIME_TIMEOUT:`执行超时`,misfire_skipped:`错过计划时间,已按策略跳过`,concurrency_forbid_active_occurrence:`已有执行未结束,本次已跳过`,runtime_completed:`运行时已确认完成`};function bV(e){return e?yV[e]||e:``}function xV(e){if(!e.errorCode)return`执行说明`;let t=bV(e.errorCode);return t===e.errorCode?t:`${t} · ${e.errorCode}`}function SV(e){return e.transitions?.length?e.transitions:[e.claimedAt&&{state:`claimed`,at:e.claimedAt},e.acceptedAt&&{state:`accepted`,at:e.acceptedAt},e.startedAt&&{state:`running`,at:e.startedAt},e.completedAt&&{state:e.state,at:e.completedAt,detail:e.detail,errorCode:e.errorCode}].filter(Boolean)}function CV({items:e,taskNames:t,agentNames:n}){return e.length?(0,G.jsx)(`div`,{className:`automation-occurrences`,children:e.map(e=>{let r=e.target?.agentId||``,i=SV(e);return(0,G.jsxs)(`article`,{className:`automation-occurrence-card`,children:[(0,G.jsxs)(`div`,{className:`automation-occurrence-summary`,children:[(0,G.jsx)(`span`,{className:`automation-state`,"data-state":_V(e.state),children:gV(e.state)}),(0,G.jsx)(`strong`,{children:t.get(e.taskId)||e.taskId}),(0,G.jsx)(`span`,{children:e.trigger===`manual`?`手动触发`:`计划触发`}),(0,G.jsx)(`time`,{children:uV(e.scheduledFor)})]}),(0,G.jsxs)(`dl`,{className:`automation-occurrence-facts`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Occurrence`}),(0,G.jsx)(`dd`,{children:e.occurrenceId})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Agent`}),(0,G.jsx)(`dd`,{children:n.get(r)||r||`目标已删除`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Attempt`}),(0,G.jsx)(`dd`,{children:e.attempt||1})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Command`}),(0,G.jsx)(`dd`,{children:e.commandId||`尚未接收`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Session`}),(0,G.jsx)(`dd`,{children:e.sessionId})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Run`}),(0,G.jsx)(`dd`,{children:e.runId||`尚未绑定`})]})]}),i.length>0&&(0,G.jsx)(`ol`,{className:`automation-timeline`,"aria-label":`${e.occurrenceId} 状态时间线`,children:i.map((e,t)=>(0,G.jsxs)(`li`,{children:[(0,G.jsx)(`span`,{children:gV(e.state)}),(0,G.jsx)(`time`,{children:uV(e.at)}),(e.errorCode||e.detail)&&(0,G.jsx)(`small`,{children:bV(e.errorCode||e.detail)})]},`${e.state}-${e.at}-${t}`))}),(e.errorCode||e.detail)&&(0,G.jsxs)(`div`,{className:`automation-diagnosis`,children:[(0,G.jsx)(`strong`,{children:xV(e)}),(0,G.jsx)(`span`,{children:bV(e.detail)||`—`})]})]},e.occurrenceId)})}):(0,G.jsx)(`p`,{className:`automation-empty`,children:`还没有执行记录。`})}function wV({currentAgentId:e,agents:t,onSelectAgent:n,scopedAgentId:r=``,embedded:i=!1,onTaskCountChanged:a}){let[o,c]=(0,s.useState)([]),[l,u]=(0,s.useState)([]),[d,f]=(0,s.useState)(null),[p,m]=(0,s.useState)(!0),[h,_]=(0,s.useState)(``),[v,y]=(0,s.useState)(null),[b,x]=(0,s.useState)([]),[S,C]=(0,s.useState)(()=>pV(e)),[w,T]=(0,s.useState)(``),[E,D]=(0,s.useState)(!1),[O,k]=(0,s.useState)(!1),[A,j]=(0,s.useState)(null),[M,N]=(0,s.useState)(`tasks`),[P,F]=(0,s.useState)(r),I=(0,s.useCallback)(async()=>{m(!0),_(``);try{let[e,t]=await Promise.all([g(`/api/v1/schedules`),g(`/api/v1/schedule-occurrences?limit=200`)]);if(!e.ok)throw Error(`定时任务加载失败(${e.status})`);let n=await e.json(),i=t.ok?await t.json():{items:[]},o=n.items||[];c(o),u(i.items||[]),f(n.availability||null),y(e=>o.find(t=>t.taskId===e?.taskId)||null),a&&a(r?o.filter(e=>e.target.agentId===r).length:o.length)}catch(e){_(e?.message||`定时任务加载失败`)}finally{m(!1)}},[a,r]),L=(0,s.useCallback)(async(e,t=!0)=>{y(e),t&&x([]);let n=e.target.agentId||``;if(!n)return[];let r=await g(`/api/v1/agents/${encodeURIComponent(n)}/schedules/${encodeURIComponent(e.taskId)}/occurrences`);if(!r.ok)return[];let i=(await r.json()).items||[];return x(i),i},[]);(0,s.useEffect)(()=>{I()},[I]),(0,s.useEffect)(()=>{F(r)},[r]),(0,s.useEffect)(()=>{w||C(pV(e))},[e,w]);let R=b.some(vV);(0,s.useEffect)(()=>{if(!v||!R)return;let e=window.setInterval(()=>{L(v,!1).then(e=>{e.some(vV)||I()})},750);return()=>window.clearInterval(e)},[L,I,R,v]);let B=(0,s.useMemo)(()=>new Map(t.map(e=>[e.metadata.id,e.metadata.name])),[t]),V=(0,s.useMemo)(()=>new Map(o.map(e=>[e.taskId,dV(e)])),[o]),H=(0,s.useMemo)(()=>P?o.filter(e=>e.target.agentId===P):o,[P,o]),ee=(0,s.useMemo)(()=>P?l.filter(e=>e.target?.agentId===P):l,[P,l]),te=(0,s.useMemo)(()=>{let e=new Map;for(let t of l)e.has(t.taskId)||e.set(t.taskId,t);return e},[l]),ne=[{id:`task`,header:`任务`,minWidth:220,cell:e=>(0,G.jsxs)(`div`,{className:`automation-task-cell`,children:[(0,G.jsx)(`strong`,{children:dV(e)}),(0,G.jsx)(`span`,{children:B.get(e.target.agentId||``)||e.target.agentId||`历史任务`})]})},{id:`trigger`,header:`触发规则`,minWidth:150,cell:e=>fV(e.schedule)},{id:`next`,header:`下次执行`,minWidth:120,cell:e=>uV(e.nextRunAt)},{id:`mode`,header:`会话`,minWidth:100,cell:e=>e.continuity===`continue_session`?`继续会话`:`新会话`},{id:`recent`,header:`最近终态`,minWidth:110,cell:e=>te.has(e.taskId)?gV(te.get(e.taskId).state):`—`},{id:`state`,header:`状态`,width:110,cell:e=>{let t=e.enabled?d?.triggerActive?`已启用`:`已配置`:`已停用`;return(0,G.jsx)(`span`,{className:`automation-state`,"data-state":e.enabled&&d?.triggerActive?`ready`:`idle`,children:t})}}];function U(e){T(e.taskId),C(mV(e)),y(e),D(!0),N(`tasks`),L(e)}async function re(){if(!S.agentId){_(`请选择 Agent`);return}if(!S.prompt.trim()){_(`请填写到期时发送给 Agent 的提示词`);return}k(!0),_(``);try{let e=hV(S),t=!!w,n=await g(t?`/api/v1/agents/${encodeURIComponent(S.agentId)}/schedules/${encodeURIComponent(w)}`:`/api/v1/agents/${encodeURIComponent(S.agentId)}/schedules`,{method:t?`PUT`:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),r=await n.json().catch(()=>null);if(!n.ok)throw Error(r?.error?.message||`保存失败(${n.status})`);T(``),D(!1),C(pV(S.agentId)),J(t?`定时任务已更新`:`定时任务已创建`,r?.displayName||`本地自动化`),await I(),t&&r&&await L(r)}catch(e){_(e?.message||`保存定时任务失败`)}finally{k(!1)}}async function ie(e){let t=e.target.agentId;if(!t){_(`历史任务缺少 Agent 标识,不能从 Studio 触发`);return}let n=await g(`/api/v1/agents/${encodeURIComponent(t)}/schedules/${encodeURIComponent(e.taskId)}:run`,{method:`POST`}),r=await n.json().catch(()=>null);if(!n.ok){_(r?.error?.message||`立即运行失败(${n.status})`);return}J(`已提交到本地 Agent Kernel`,`等待终态对账,不以 accepted 当作成功。`),await L(e),await I()}async function ae(e){let t=e.target.agentId;if(!t)return;let n={...mV(e),enabled:!e.enabled};if(!(await g(`/api/v1/agents/${encodeURIComponent(t)}/schedules/${encodeURIComponent(e.taskId)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(hV(n))})).ok){_(`更新任务状态失败`);return}await I()}async function oe(){if(A?.target.agentId){if(!(await g(`/api/v1/agents/${encodeURIComponent(A.target.agentId)}/schedules/${encodeURIComponent(A.taskId)}`,{method:`DELETE`})).ok){_(`删除任务失败`);return}j(null),y(null),x([]),await I()}}return(0,G.jsxs)(`div`,{className:`${i?`automation-page-embedded`:`page-container`} automation-page`,"data-layout":i?`embedded`:`document`,children:[!i&&(0,G.jsx)(Sd,{children:(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>{T(``),C(pV(e)),D(!0)},children:[(0,G.jsx)(Qe,{size:15}),`新建定时任务`]})}),(0,G.jsxs)(`div`,{className:`automation-intro`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:i?`该 Agent 的自动化`:`自动化 / 定时任务`}),(0,G.jsx)(`p`,{children:`在已精确绑定的 Agent Kernel 上运行。选择一条任务查看详情,只有新建或编辑时才打开表单。`})]}),(0,G.jsx)(`span`,{className:`automation-availability`,"data-state":d?.triggerActive?`ready`:`idle`,children:d?.triggerActive?`本地调度运行中`:d?.running?`监视中 · 等待 Runtime`:`本地调度未启动`})]}),h&&(0,G.jsx)(`div`,{className:`form-error`,children:h}),(0,G.jsxs)(`div`,{className:`automation-runtime-boundary`,role:`status`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`执行环境`}),(0,G.jsx)(`strong`,{children:`本地 Agent Kernel`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`调度状态`}),(0,G.jsx)(`strong`,{children:d?.triggerActive?`运行中`:d?.running?`等待 Runtime`:`未启动`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`下次扫描`}),(0,G.jsx)(`strong`,{children:uV(d?.nextScanAt)})]})]}),(0,G.jsxs)(`div`,{className:`automation-toolbar`,children:[(0,G.jsxs)(`div`,{className:`automation-tabs`,role:`tablist`,"aria-label":`自动化视图`,children:[(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":M===`tasks`,className:M===`tasks`?`active`:``,onClick:()=>N(`tasks`),children:`全部任务`}),(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":M===`history`,className:M===`history`?`active`:``,onClick:()=>N(`history`),children:`执行记录`})]}),!i&&(0,G.jsxs)(`label`,{children:[`Agent 筛选`,(0,G.jsxs)(`select`,{"aria-label":`筛选 Agent`,value:P,onChange:e=>F(e.target.value),children:[(0,G.jsx)(`option`,{value:``,children:`全部 Agent`}),t.map(e=>(0,G.jsx)(`option`,{value:e.metadata.id,children:e.metadata.name},e.metadata.id))]})]})]}),M===`tasks`&&(0,G.jsxs)(`div`,{className:`automation-layout`,children:[(0,G.jsx)(`section`,{className:`automation-list block`,children:(0,G.jsx)(_m,{columns:ne,data:H,getRowId:e=>e.taskId,caption:`定时任务列表`,loading:p,error:h&&!o.length?h:``,onRetry:()=>void I(),onRowActivate:e=>{D(!1),L(e)},rowAriaLabel:e=>`查看定时任务 ${dV(e)} 的详情`,empty:{icon:(0,G.jsx)(z,{size:22}),title:P?`该 Agent 还没有定时任务`:`还没有定时任务`,description:`创建一个本地任务,在 Agent Kernel 保持运行时自动触发。`}})}),(0,G.jsx)(`aside`,{className:`automation-inspector block${E?` is-editor automation-form`:``}`,children:E?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{className:`section-heading`,children:(0,G.jsxs)(`div`,{className:`section-heading-copy`,children:[(0,G.jsx)(`h2`,{children:w?`编辑定时任务`:`新建定时任务`}),(0,G.jsx)(`p`,{children:`目标实例和版本由 Studio 解析,不由浏览器填写。`})]})}),(0,G.jsxs)(`label`,{children:[`Agent`,(0,G.jsxs)(`select`,{value:S.agentId,disabled:!!w,onChange:e=>{C(t=>({...t,agentId:e.target.value})),n(e.target.value)},children:[(0,G.jsx)(`option`,{value:``,children:`选择 Agent`}),t.map(e=>(0,G.jsx)(`option`,{value:e.metadata.id,children:e.metadata.name},e.metadata.id))]})]}),(0,G.jsxs)(`label`,{children:[`任务名称`,(0,G.jsx)(`input`,{value:S.displayName,onChange:e=>C(t=>({...t,displayName:e.target.value})),placeholder:`例如:工作日销售日报`})]}),(0,G.jsxs)(`label`,{children:[`到期提示词`,(0,G.jsx)(`textarea`,{value:S.prompt,onChange:e=>C(t=>({...t,prompt:e.target.value})),placeholder:`例如:生成昨日销售摘要并列出异常`})]}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsxs)(`label`,{children:[`触发方式`,(0,G.jsxs)(`select`,{value:S.kind,onChange:e=>C(t=>({...t,kind:e.target.value})),children:[(0,G.jsx)(`option`,{value:`cron`,children:`Cron`}),(0,G.jsx)(`option`,{value:`interval`,children:`固定间隔`}),(0,G.jsx)(`option`,{value:`once`,children:`单次`})]})]}),(0,G.jsxs)(`label`,{children:[`时区`,(0,G.jsx)(`input`,{value:S.timezone,onChange:e=>C(t=>({...t,timezone:e.target.value}))})]})]}),S.kind===`cron`&&(0,G.jsxs)(`label`,{children:[`Cron 表达式`,(0,G.jsx)(`input`,{value:S.expression,onChange:e=>C(t=>({...t,expression:e.target.value}))})]}),S.kind===`interval`&&(0,G.jsxs)(`label`,{children:[`间隔(秒)`,(0,G.jsx)(`input`,{type:`number`,min:`60`,value:S.everySeconds,onChange:e=>C(t=>({...t,everySeconds:e.target.value}))})]}),S.kind===`once`&&(0,G.jsxs)(`label`,{children:[`执行时间`,(0,G.jsx)(`input`,{type:`datetime-local`,value:S.at,onChange:e=>C(t=>({...t,at:e.target.value}))})]}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsxs)(`label`,{children:[`错过时`,(0,G.jsxs)(`select`,{value:S.misfirePolicy,onChange:e=>C(t=>({...t,misfirePolicy:e.target.value})),children:[(0,G.jsx)(`option`,{value:`run_once`,children:`补跑一次`}),(0,G.jsx)(`option`,{value:`skip`,children:`跳过`})]})]}),(0,G.jsxs)(`label`,{children:[`会话`,(0,G.jsxs)(`select`,{value:S.continuity,onChange:e=>C(t=>({...t,continuity:e.target.value})),children:[(0,G.jsx)(`option`,{value:`new_session`,children:`新会话`}),(0,G.jsx)(`option`,{value:`continue_session`,children:`继续会话`})]})]})]}),S.continuity===`continue_session`&&(0,G.jsxs)(`label`,{children:[`Session ID`,(0,G.jsx)(`input`,{value:S.sessionId,onChange:e=>C(t=>({...t,sessionId:e.target.value})),placeholder:`选择或粘贴可恢复的本地 Session`})]}),(0,G.jsxs)(`label`,{className:`automation-checkbox`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:S.enabled,onChange:e=>C(t=>({...t,enabled:e.target.checked}))}),`创建后立即启用`]}),(0,G.jsxs)(`div`,{className:`automation-form-actions`,children:[(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:()=>{T(``),C(pV(e)),D(!1)},children:`取消`}),(0,G.jsx)(`button`,{className:`button accent`,type:`button`,disabled:O,onClick:()=>void re(),children:O?`保存中…`:w?`保存变更`:`创建任务`})]})]}):v?(0,G.jsxs)(`div`,{className:`automation-detail`,children:[(0,G.jsxs)(`div`,{className:`automation-detail-heading`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:dV(v)}),(0,G.jsxs)(`p`,{children:[`下次执行 `,uV(v.nextRunAt)]})]}),(0,G.jsx)(`span`,{className:`automation-state`,"data-state":v.enabled&&d?.triggerActive?`ready`:`idle`,children:v.enabled?`已启用`:`已停用`})]}),(0,G.jsxs)(`div`,{className:`automation-detail-actions`,children:[(0,G.jsxs)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>U(v),children:[(0,G.jsx)(Ye,{size:14}),`编辑`]}),(0,G.jsxs)(`button`,{className:`button secondary small`,type:`button`,disabled:!d?.available,onClick:()=>void ie(v),children:[(0,G.jsx)(Xe,{size:14}),`立即运行`]}),(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>void ae(v),children:v.enabled?`停用`:`启用`})]}),(0,G.jsxs)(`div`,{className:`automation-detail-grid`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`到期提示词`}),(0,G.jsx)(`p`,{children:v.command.payload.content||`—`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`触发规则`}),(0,G.jsx)(`p`,{children:fV(v.schedule)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`会话`}),(0,G.jsx)(`p`,{children:v.continuity===`continue_session`?`继续已有会话`:`每次新建会话`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`目标 Build`}),(0,G.jsx)(`p`,{children:v.target.agentVersionRef||`—`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`最近一次`}),(0,G.jsx)(`p`,{children:b[0]?`${gV(b[0].state)} · ${uV(b[0].completedAt||b[0].scheduledFor)}`:`暂无记录`})]})]}),(0,G.jsxs)(`div`,{className:`automation-inspector-history`,children:[(0,G.jsxs)(`h3`,{children:[(0,G.jsx)(ue,{size:16}),`最近执行`]}),(0,G.jsx)(CV,{items:b.slice(0,3),taskNames:V,agentNames:B})]}),(0,G.jsxs)(`button`,{className:`automation-delete-link`,type:`button`,onClick:()=>j(v),children:[(0,G.jsx)(ht,{size:14}),`删除`]})]}):(0,G.jsxs)(`div`,{className:`automation-inspector-empty`,children:[(0,G.jsx)(z,{size:22}),(0,G.jsx)(`strong`,{children:`选择一个定时任务`}),(0,G.jsx)(`p`,{children:`查看运行记录、立即执行或修改计划。`}),(0,G.jsxs)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>{T(``),C(pV(e)),D(!0)},children:[(0,G.jsx)(Qe,{size:14}),`新建任务`]})]})})]}),M===`history`&&(0,G.jsxs)(`section`,{className:`automation-history block`,children:[(0,G.jsx)(`div`,{className:`section-heading`,children:(0,G.jsxs)(`div`,{className:`section-heading-copy`,children:[(0,G.jsx)(`h2`,{children:`执行记录`}),(0,G.jsx)(`p`,{children:`持久化的 Occurrence 事实;“已接收”不代表执行成功。`})]})}),(0,G.jsx)(CV,{items:ee,taskNames:V,agentNames:B})]}),A&&(0,G.jsx)(ka,{title:`删除定时任务「${dV(A)}」?`,description:`任务定义将被删除;已写入的执行历史仍可用于审计。`,confirmText:`删除任务`,busy:!1,onConfirm:()=>void oe(),onCancel:()=>j(null)})]})}function TV(e,t){let n=new URLSearchParams({buildId:e});return t&&n.set(`agentId`,t),`#/deployments/new?${n.toString()}`}function EV(e){return`#/deployments/${encodeURIComponent(e)}`}function DV(e){if(window.location.hash===e){window.dispatchEvent(new HashChangeEvent(`hashchange`));return}window.location.hash=e}function OV(e,t=28){return e.length>t?`${e.slice(0,t)}…`:e}function kV({detail:e,catalog:t,buildId:n,onClose:r}){let[i,a]=(0,s.useState)(`curl`),o=e.draft,c=o.metadata.labels||{},l=o.spec.bindings?.modelProfileId||o.spec.bindings?.modelProfileIds?.[0]||``,u=t.find(e=>e.resourceId===l),d=c[`agentkit.ksyun.com/template`]||`blank`,f={model:u?.contract?.model||u?.name||c[`agentkit.ksyun.com/model`]||`glm-5.1`,input:[{role:`user`,content:[{type:`input_text`,text:d===`research`?`调研 Agent 工程平台的核心能力`:`请根据你的职责处理这个请求`}]}],metadata:{agent_id:o.metadata.id},stream:!0},p=i===`curl`?[`curl -X POST "${window.location.origin}/v1/responses" \\`,` -H "Content-Type: application/json" \\`,` -H "Authorization: Bearer " \\`,` -d '${JSON.stringify(f,null,2)}'`].join(` +`):[`const response = await fetch("${window.location.origin}/v1/responses", {`,` method: "POST",`,` headers: {`,` "Content-Type": "application/json",`,' "Authorization": `Bearer ${runtimeApiKey}`',` },`,` body: JSON.stringify(${JSON.stringify(f,null,2)})`,`});`].join(` +`);return(0,G.jsxs)(BD,{title:`调用 Agent`,subtitle:`使用统一 Runtime 的 OpenAI Responses API;本地与云端请求体一致。`,onClose:r,children:[(0,G.jsxs)(`div`,{className:`callout`,children:[(0,G.jsx)(ot,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`标准接入协议`}),(0,G.jsx)(`p`,{children:`本地 Studio 仅监听 loopback;部署后由云端网关校验 Runtime API Key,不暴露 Studio Session 或 CSRF Token。`})]})]}),(0,G.jsxs)(`div`,{className:`code-tabs`,children:[(0,G.jsx)(`button`,{className:i===`curl`?`active`:``,type:`button`,onClick:()=>a(`curl`),children:`cURL`}),(0,G.jsx)(`button`,{className:i===`javascript`?`active`:``,type:`button`,onClick:()=>a(`javascript`),children:`JavaScript`})]}),(0,G.jsx)(Db,{code:p,language:i===`curl`?`bash`:`javascript`,filename:i===`curl`?`invoke-agent.sh`:`invoke-agent.js`,wrap:!0}),(0,G.jsxs)(`div`,{className:`api-contract`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Endpoint`}),(0,G.jsx)(`code`,{children:`POST /v1/responses`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`本地 Build`}),(0,G.jsx)(`code`,{children:n||`尚未构建`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Conversation`}),(0,G.jsx)(`code`,{children:`首次调用可省略`})]})]})]})}function AV({agentId:e,onBack:t,onChat:n,onBuild:r,onEdit:i,onChanged:a}){let[o,c]=(0,s.useState)(null),[l,u]=(0,s.useState)([]),[d,f]=(0,s.useState)([]),[p,m]=(0,s.useState)(!1),[h,_]=(0,s.useState)(!1),[v,y]=(0,s.useState)(!1),[b,x]=(0,s.useState)(``),[S,C]=(0,s.useState)(null),[w,T]=(0,s.useState)(`overview`);(0,s.useEffect)(()=>{T(`overview`),g(`/api/v1/agents/${encodeURIComponent(e)}`).then(e=>e.json()).then(c).catch(()=>c(null)),g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()).then(e=>u(e.items||[])).catch(()=>{}),g(`/api/v1/deployments`).then(e=>e.json()).then(e=>f(e.items||[])).catch(()=>{}),g(`/api/v1/agents/${encodeURIComponent(e)}/schedules`).then(e=>e.ok?e.json():null).then(e=>C(e?.items?.length??0)).catch(()=>C(null))},[e]);async function E(){y(!0),x(``);try{let n=await g(`/api/v1/agents/${encodeURIComponent(e)}`,{method:`DELETE`});if(!n.ok){let e=await n.json().catch(()=>null);throw Error(e?.error?.message||`删除失败(${n.status})`)}m(!1),a(),t()}catch(e){x(e.message)}finally{y(!1)}}if(!o)return(0,G.jsx)(`div`,{className:`page-container`,"data-layout":`document`,children:(0,G.jsx)(`p`,{style:{color:`var(--text-tertiary)`},children:`正在加载 Agent 配置…`})});let D=o.draft,O=D.spec.bindings||{},k=D.metadata.labels||{},A=String(k[`agentkit.ksyun.com/models`]||``).split(`,`).map(e=>e.trim()).filter(Boolean),j=O.modelProfileIds?.length?O.modelProfileIds:O.modelProfileId?[O.modelProfileId]:A.length?A:k[`agentkit.ksyun.com/model`]?[k[`agentkit.ksyun.com/model`]]:[],M=(o.builds||[]).find(e=>e.status===`SUCCEEDED`),N=M?d.find(e=>e.buildId===M.id):void 0,P=N?.status===`READY`,F=e=>l.find(t=>t.resourceId===e)?.displayName||OV(e),I=(O.tools||[]).map(e=>typeof e==`string`?e:e.resourceId),L=[[`Model`,j],[`Skill`,(O.skills||[]).map(e=>e.resourceId)],[`MCP`,(O.mcpServers||[]).map(e=>e.resourceId)],[`Tool`,I]].filter(([,e])=>e.length>0);function R(){M&&DV(N?EV(N.id):TV(M.id,D.metadata.id))}return(0,G.jsxs)(`div`,{className:`page-container`,"data-layout":`document`,children:[(0,G.jsxs)(Sd,{children:[(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>n(e),children:[(0,G.jsx)(Le,{size:15}),(0,G.jsx)(`span`,{children:`打开会话`})]}),(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:()=>i(e),children:[(0,G.jsx)(lt,{size:15}),(0,G.jsx)(`span`,{children:`编辑`})]}),(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:r,children:[(0,G.jsx)(Ue,{size:15}),(0,G.jsx)(`span`,{children:`校验并构建`})]}),(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:R,disabled:!M,children:[(0,G.jsx)(de,{size:15}),(0,G.jsx)(`span`,{children:N?`查看云端部署`:`部署到云端`})]}),(0,G.jsx)(yd,{label:`${D.metadata.name} 的更多操作`,items:[{label:`编辑`,onSelect:()=>i(e)},{label:`校验并构建`,onSelect:r},{label:N?`查看云端部署`:`部署到云端`,onSelect:R,disabled:!M},{label:`管理定时任务`,onSelect:()=>T(`automations`)},{label:`调用方式`,onSelect:()=>_(!0)},{label:`删除 Agent`,danger:!0,onSelect:()=>m(!0)}]})]}),b&&(0,G.jsx)(`div`,{className:`form-error`,style:{marginBottom:16},children:b}),(0,G.jsxs)(`div`,{className:`automation-tabs agent-detail-tabs`,role:`tablist`,"aria-label":`Agent 详情`,children:[(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":w===`overview`,className:w===`overview`?`active`:``,onClick:()=>T(`overview`),children:`概览`}),(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":w===`automations`,className:w===`automations`?`active`:``,onClick:()=>T(`automations`),children:`自动化`})]}),w===`overview`&&(0,G.jsxs)(`div`,{className:`detail-layout`,children:[(0,G.jsxs)(`div`,{className:`detail-main`,children:[(0,G.jsxs)(`section`,{className:`detail-section block`,children:[(0,G.jsx)(`div`,{className:`section-heading`,children:(0,G.jsx)(`h2`,{children:`角色与任务`})}),(0,G.jsxs)(`div`,{className:`readonly-field`,children:[(0,G.jsx)(`span`,{children:`系统提示词`}),(0,G.jsx)(`pre`,{children:D.spec.instructions?.system||``})]}),(0,G.jsxs)(`div`,{className:`readonly-field`,children:[(0,G.jsx)(`span`,{children:`任务契约`}),(0,G.jsx)(`pre`,{children:D.spec.instructions?.task||`未配置任务契约`})]})]}),(0,G.jsxs)(`section`,{className:`detail-section block`,children:[(0,G.jsx)(`div`,{className:`section-heading`,children:(0,G.jsx)(`h2`,{children:`能力绑定`})}),L.length?(0,G.jsx)(`div`,{className:`binding-groups`,children:L.map(([e,t])=>(0,G.jsxs)(`div`,{className:`binding-group`,children:[(0,G.jsx)(`span`,{children:e}),(0,G.jsx)(`div`,{className:`binding-items`,children:t.map(e=>(0,G.jsxs)(`span`,{className:`compact-resource`,children:[(0,G.jsx)(V,{size:13}),F(e)]},e))})]},e))}):(0,G.jsxs)(`div`,{className:`capability-empty-state`,children:[(0,G.jsx)(`span`,{children:`当前 Agent 尚未绑定模型、Tool、MCP 或 Skill。`}),(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>i(e),children:`绑定能力`})]})]}),(0,G.jsxs)(`section`,{className:`detail-section block`,children:[(0,G.jsxs)(`div`,{className:`section-heading`,children:[(0,G.jsx)(z,{size:18}),(0,G.jsxs)(`div`,{className:`section-heading-copy`,children:[(0,G.jsx)(`h2`,{children:`自动化`}),(0,G.jsx)(`p`,{children:`定时任务仅在本地 Studio 与该 Agent 的 Kernel Runtime 精确绑定时执行。`})]})]}),(0,G.jsxs)(`div`,{className:`capability-empty-state`,children:[(0,G.jsx)(`span`,{children:S===null?`正在读取定时任务…`:S?`已配置 ${S} 个定时任务`:`还没有定时任务`}),(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>T(`automations`),children:`管理定时任务`})]})]})]}),(0,G.jsxs)(`aside`,{className:`detail-aside block`,children:[(0,G.jsx)(`div`,{className:`aside-title`,children:`运行摘要`}),(0,G.jsxs)(`dl`,{children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Revision`}),(0,G.jsxs)(`dd`,{children:[`r`,D.metadata.revision]})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Runtime`}),(0,G.jsx)(`dd`,{children:D.spec.runtime?.type||k[`agentkit.ksyun.com/framework`]||`adk`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`策略`}),(0,G.jsx)(`dd`,{children:D.spec.execution?.strategy||`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`最大步骤`}),(0,G.jsx)(`dd`,{children:D.spec.execution?.maxSteps??`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`超时`}),(0,G.jsx)(`dd`,{children:D.spec.execution?.timeoutSeconds?`${D.spec.execution.timeoutSeconds}s`:`-`})]})]}),(0,G.jsx)(`div`,{className:`aside-divider`}),(0,G.jsx)(`div`,{className:`build-state notice`,"data-state":M?`ready`:`idle`,children:M?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`status-dot success`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`部署声明已就绪`}),(0,G.jsx)(`span`,{children:OV(M.bundleDigest||M.id)})]})]}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`status-dot neutral`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`尚未构建`}),(0,G.jsx)(`span`,{children:`校验 YAML 声明后即可部署或本地对话`})]})]})}),N&&(0,G.jsxs)(`div`,{className:`build-state notice`,"data-state":P?`ready`:`idle`,children:[(0,G.jsx)(`span`,{className:`status-dot ${P?`success`:`neutral`}`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:P?`云端实例运行中`:`云端部署:${N.status}`}),(0,G.jsx)(`span`,{children:N.agentId||N.instanceId||N.id})]})]})]})]}),w===`automations`&&(0,G.jsx)(wV,{currentAgentId:e,agents:[{metadata:{id:e,name:D.metadata.name}}],onSelectAgent:()=>{},scopedAgentId:e,embedded:!0,onTaskCountChanged:C}),p&&(0,G.jsx)(ka,{title:`确认删除 Agent「${D.metadata.name}」?`,description:`Agent ID:${D.metadata.id}。删除后其配置与 Revision 将移除,此操作不可撤销。`,confirmText:`确认删除`,busy:v,onConfirm:E,onCancel:()=>m(!1)}),h&&(0,G.jsx)(kV,{detail:o,catalog:l,buildId:M?.id,onClose:()=>_(!1)})]})}var jV=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`]);function MV(e){return e===`SUCCEEDED`?`ready`:[`FAILED`,`CANCELLED`,`TIMED_OUT`].includes(e)?`failed`:e===`IDLE`?`idle`:`pending`}function NV(e){return{IDLE:`尚未构建`,QUEUED:`排队中`,RUNNING:`构建中`,SUCCEEDED:`构建完成`,FAILED:`构建失败`,CANCELLED:`已取消`,TIMED_OUT:`已超时`}[e]||e}function PV(e,t=42){return e.length>t?`${e.slice(0,t)}…`:e}function FV(e){return e.split(/\r?\n\r?\n/).filter(Boolean).map(e=>{let t=e.split(/\r?\n/),n=Number(t.find(e=>e.startsWith(`id:`))?.slice(3).trim()),r=t.find(e=>e.startsWith(`event:`))?.slice(6).trim()||``,i=t.filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trimStart()).join(` +`);if(!Number.isFinite(n)||n<=0||!r||!i)return null;try{let e=JSON.parse(i);return{id:n,type:r,data:e&&typeof e==`object`?e:{}}}catch{return null}}).filter(e=>e!==null)}async function IV(e){let t=await g(`/api/v1${e}`);return t.ok?FV(await t.text()):[]}function LV({currentAgentId:e,agents:t,onSelectAgent:n,onCreate:r}){let[i,a]=(0,s.useState)(null),[o,c]=(0,s.useState)(`IDLE`),[l,u]=(0,s.useState)(`选择 Agent 后开始本地构建。 +`),[d,f]=(0,s.useState)(``),[p,m]=(0,s.useState)(!1),h=(0,s.useRef)(null),_=(0,s.useRef)(0),v=(0,s.useCallback)(async()=>{if(!e){a(null);return}try{let t=await g(`/api/v1/agents/${encodeURIComponent(e)}`);if(!t.ok)throw Error(`Agent detail is unavailable`);a(await t.json())}catch{a(null)}},[e]);(0,s.useEffect)(()=>{v()},[v]);let y=i?.draft,b=i?.builds||[],x=b.find(e=>e.status===`SUCCEEDED`)||b[0],S=x?.status===`SUCCEEDED`&&!p,C=t.find(t=>t.metadata.id===e),w=y?.metadata?.labels?.[`agentkit.ksyun.com/artifact-type`],T=w===`ManagedRuntime`||!w&&y?.spec?.runtime?.type===`codex`,E=e=>T?{IDLE:`尚未校验`,QUEUED:`校验排队中`,RUNNING:`正在校验`,SUCCEEDED:`声明已校验`,FAILED:`校验失败`,CANCELLED:`已取消`,TIMED_OUT:`校验超时`}[e]||e:NV(e);(0,s.useEffect)(()=>{p||(c(x?.status||`IDLE`),f(``),u(x?[`${T?`Declaration`:`Build`} ${x.id}`,`Revision ${x.sourceRevision??y?.metadata?.revision??`-`}`,`${T?`YAML digest`:`Bundle`} ${x.bundleDigest||`-`}`,`Resolved ${x.resolvedDigest||`-`}`,`Status ${x.status}`].join(` +`):T?`选择 YAML Agent 后校验声明。 +`:`选择 Agent 后开始本地构建。 +`))},[p,y?.metadata?.revision,T,x]);function D(e){u(t=>`${t}${e}`),requestAnimationFrame(()=>{h.current&&(h.current.scrollTop=h.current.scrollHeight)})}function O(){!e||!S||(n(e),DV(TV(x.id,e)))}async function k(){if(!y||p)return;let e=++_.current;m(!0),c(`QUEUED`),f(`提交中`),u(T?`提交 YAML 声明校验… +`:`提交本地构建… +`);try{let t=await g(`/api/v1/agents/${encodeURIComponent(y.metadata.id)}/builds`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":`build-${y.metadata.id}-r${y.metadata.revision}-${Date.now()}`},body:JSON.stringify({revision:y.metadata.revision,runEvaluation:!1})});if(!t.ok)throw t.status===409?(await v(),Error(`Agent 信息已更新,请重新点击构建`)):Error(`构建提交失败(${t.status})`);let n=await t.json();f(n.id);let r=0,i=null;for(let t=0;t<1200;t+=1){if(_.current!==e)return;let t=await IV(`/operations/${encodeURIComponent(n.id)}/events?after=${r}`);t.length&&(r=Math.max(r,...t.map(e=>Number(e.id)||0)),D(t.map(e=>`${String(e.id).padStart(2,`0`)} ${e.type}`).join(` +`)+` +`));let a=await g(`/api/v1/operations/${encodeURIComponent(n.id)}`).then(e=>e.json());if(c(a.status||`QUEUED`),jV.has(a.status)){i=a;break}await new Promise(e=>setTimeout(e,200))}if(!i)throw Error(`构建操作等待超时`);if(i.status!==`SUCCEEDED`)throw Error(i.error?.message||`构建未完成`);await v(),J(T?`YAML 声明已校验`:`不可变 Bundle 已构建`,i.resourceId||`构建完成`)}catch(t){_.current===e&&(c(`FAILED`),D(`${t?.message||`构建失败`}\n`),J(`构建失败`,t?.message||`未知错误`,`error`))}finally{_.current===e&&m(!1)}}let A=MV(o),j=x?.runtimeName?`${x.runtimeName} ${x.runtimeVersion||``}`.trim():y?.spec?.runtime?.type||`未选择`;return(0,G.jsxs)(`div`,{className:`delivery-page`,"data-layout":`document`,children:[(0,G.jsx)(Sd,{children:(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:k,disabled:!y||p,children:[(0,G.jsx)(Ue,{size:15}),(0,G.jsx)(`span`,{children:p?T?`校验中`:`构建中`:T?`校验 YAML 声明`:`构建当前 Agent`})]})}),(0,G.jsxs)(`div`,{className:`delivery-intro`,children:[(0,G.jsx)(`h2`,{children:T?`ManagedRuntime 声明`:`Code Bundle`}),(0,G.jsx)(`span`,{className:`delivery-status-badge`,"data-state":A,children:E(o)})]}),t.length===0?(0,G.jsxs)(`div`,{className:`delivery-empty-state`,children:[(0,G.jsx)(Ue,{size:24}),(0,G.jsx)(`h2`,{children:`还没有可构建的 Agent`}),(0,G.jsx)(`p`,{children:`先创建 Agent,再生成可部署到云端的交付记录。`}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:r,children:[(0,G.jsx)(Qe,{size:15}),(0,G.jsx)(`span`,{children:`创建 Agent`})]})]}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`section`,{className:`delivery-stat-strip compact-delivery-summary`,"aria-label":`构建摘要`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`Agent`}),(0,G.jsx)(`strong`,{title:e||``,children:C?.metadata.name||y?.metadata?.name||`未选择`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`Revision`}),(0,G.jsx)(`strong`,{children:y?`r${y.metadata.revision}`:`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`Runtime`}),(0,G.jsx)(`strong`,{children:j})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:T?`YAML 摘要`:`Bundle`}),(0,G.jsx)(`strong`,{className:`mono`,children:PV(x?.bundleDigest||`-`)})]})]}),(0,G.jsxs)(`section`,{className:`delivery-next-step`,"data-state":S?`ready`:A,"aria-label":`构建下一步`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`下一步`}),(0,G.jsx)(`strong`,{children:S?`构建完成,下一步可部署到云端`:`等待构建完成`})]}),S&&(0,G.jsxs)(`button`,{className:`button secondary compact`,type:`button`,onClick:O,children:[(0,G.jsx)(de,{size:15}),`部署到云端`]})]}),(0,G.jsxs)(`details`,{className:`delivery-block delivery-detail-disclosure`,children:[(0,G.jsx)(`summary`,{children:T?`声明详情`:`构建详情`}),(0,G.jsx)(`p`,{children:T?`校验 YAML 声明并锁定 Runtime、模型与能力摘要,生成可追溯的托管运行时制品。`:`查看不可变 Bundle、输入 Revision 与交付记录。`}),(0,G.jsxs)(`div`,{className:`delivery-fact-chain`,children:[(0,G.jsxs)(`div`,{className:`delivery-fact-step`,"data-state":y?`ready`:`idle`,children:[(0,G.jsx)(`span`,{children:T?`输入 YAML Revision`:`输入 Revision`}),(0,G.jsx)(`strong`,{children:y?`r${y.metadata.revision}`:`未选择`}),(0,G.jsx)(`code`,{children:y?.metadata?.id||`-`})]}),(0,G.jsxs)(`div`,{className:`delivery-fact-step`,"data-state":A,children:[(0,G.jsx)(`span`,{children:T?`声明摘要`:`不可变 Bundle`}),(0,G.jsx)(`strong`,{children:x?.status===`SUCCEEDED`?T?`已校验`:`已生成`:E(o)}),(0,G.jsx)(`code`,{children:x?.bundleDigest||`尚无 digest`})]})]})]}),(0,G.jsxs)(`details`,{className:`delivery-block`,open:p,children:[(0,G.jsxs)(`summary`,{children:[T?`声明校验日志`:`构建技术日志`,` `,d?`· ${PV(d,28)}`:``]}),(0,G.jsx)(`pre`,{ref:h,children:l})]})]})]})}var RV=new Set([`hermes`,`openclaw`]);function zV(e){if(!e)return!1;let t=e.sessionEventChat??e.SessionEventChat??e.session_event_chat;if(t===!0)return!0;if(!t||typeof t!=`object`)return!1;let n=t;return n.enabled===!0||n.Enabled===!0||n.supported===!0||n.Supported===!0}function BV(e){if(e.chatTransport)return{kind:e.chatTransport,reason:e.chatRoutingReason||(e.chatTransport===`official-dashboard`?`native-runtime-without-session-event-chat-capability`:`studio-compatible-framework`)};if(zV(e.capabilities))return{kind:`studio-session-events`,reason:`declared-session-event-chat-capability`};let t=String(e.runtimeType||e.framework||``).trim().toLowerCase();return RV.has(t)?{kind:`official-dashboard`,reason:`native-runtime-without-session-event-chat-capability`}:{kind:`studio-session-events`,reason:`studio-compatible-framework`}}var VV={READY:5,DEPLOYING:4,ADMITTING:3,FAILED:2,ROLLED_BACK:1};function HV(e,t=new Map){let n=new Map;for(let r of e){let e=r.agentId?.trim();if(!e)continue;let i=n.get(e),a=t.get(e)?.trim(),o=!!(a&&r.versionId===a),s=!!(a&&i?.versionId===a),c=VV[r.status||``]||0,l=VV[i?.status||``]||0;(!i||o&&!s||o===s&&c>l)&&n.set(e,r)}return[...n.values()]}function UV(e,t){let n=new Map;for(let e of t){let t=e.agentId?.trim();t&&!n.has(t)&&n.set(t,e)}let r=HV(e,new Map([...n.entries()].flatMap(([e,t])=>t.versionId?.trim()?[[e,t.versionId.trim()]]:[]))).map(e=>{let t=n.get(e.agentId?.trim()||``);return{...e,agentName:t?.name||e.agentName,status:t?.status||e.status,endpoint:t?.endpoint||e.endpoint,framework:t?.framework||e.framework,runtimeType:t?.runtimeType||e.runtimeType,capabilities:t?.capabilities||e.capabilities,chatTransport:t?.chatTransport||e.chatTransport,chatRoutingReason:t?.chatRoutingReason||e.chatRoutingReason,versionId:t?.versionId||e.versionId,updatedAt:t?.updatedAt||e.updatedAt,creatorName:t?.creatorName||e.creatorName,source:`receipt`}}),i=new Set(r.map(e=>e.agentId)),a=[...n.values()].flatMap(e=>{let t=e.agentId?.trim();return!t||i.has(t)?[]:[{id:`account:${t}`,agentId:t,agentName:e.name||t,status:e.status,endpoint:e.endpoint,framework:e.framework,runtimeType:e.runtimeType,capabilities:e.capabilities,chatTransport:e.chatTransport,chatRoutingReason:e.chatRoutingReason,versionId:e.versionId,updatedAt:e.updatedAt,creatorName:e.creatorName,source:`account`}]});return[...r,...a]}var WV=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`,`INTERRUPTED`]),GV=`agentkit-studio:deployment-operation-attempts:v2`,KV=500,qV=new Set([403,404,410]),JV=new Map,YV={},XV=class extends Error{status;constructor(e,t){super(e),this.status=t,this.name=`OperationStatusError`}};function ZV(){try{return typeof document>`u`?void 0:document.defaultView?.localStorage}catch{return}}function QV(e,t){return t?g(e,{signal:t}):g(e)}function $V(e,t){return t?{...e,status:String(t.status||e.status).toUpperCase(),agentName:t.name||e.agentName,endpoint:t.endpoint||e.endpoint,framework:t.framework||e.framework,runtimeType:t.runtimeType||e.runtimeType,capabilities:t.capabilities||e.capabilities,chatTransport:t.chatTransport||e.chatTransport,chatRoutingReason:t.chatRoutingReason||e.chatRoutingReason,versionId:t.versionId||e.versionId,updatedAt:t.updatedAt||e.updatedAt,creatorName:t.creatorName||e.creatorName}:e}function eH(e){try{let t=ZV();if(!t)return{...YV[e]||{}};let n=JSON.parse(t.getItem(e)||`{}`);return n&&typeof n==`object`?n:{}}catch{return{...YV[e]||{}}}}function tH(e,t){YV={...YV,[e]:{...t}};try{ZV()?.setItem(e,JSON.stringify(t))}catch{}}function nH(e){return`studio-${e}-${globalThis.crypto?.randomUUID?.()||`${Math.random().toString(36).slice(2)}-${Date.now().toString(36)}`}`}function rH(e,t,n){let r=eH(e),i=r[t];if(i?.idempotencyKey)return i;let a={actionKey:t,idempotencyKey:nH(n),operationId:``};return r[t]=a,tH(e,r),a}function iH(e,t,n){let r={...t,operationId:n},i=eH(e);return i[t.actionKey]=r,tH(e,i),r}function aH(e,t){let n=eH(e),r=n[t.actionKey];!r||r.idempotencyKey!==t.idempotencyKey||(delete n[t.actionKey],tH(e,n))}function oH(e){return e instanceof DOMException&&e.name===`AbortError`}function sH(e){if(e.aborted)throw new DOMException(`Operation aborted`,`AbortError`)}async function cH(e,t){sH(t),await new Promise((n,r)=>{let i=window.setTimeout(()=>{t.removeEventListener(`abort`,a),n()},e),a=()=>{window.clearTimeout(i),r(new DOMException(`Operation aborted`,`AbortError`))};t.addEventListener(`abort`,a,{once:!0})})}async function lH(e,t){let n=JV.get(e)||Promise.resolve(),r,i=new Promise(e=>{r=e}),a=n.then(()=>i);JV.set(e,a),await n;try{return await t()}finally{r(),JV.get(e)===a&&JV.delete(e)}}async function uH(e,t,n){sH(t);let r=navigator.locks;return r?r.request(e,{mode:`exclusive`,signal:t},async()=>n()):lH(e,async()=>(sH(t),n()))}async function dH(e){let t=await g(`/api/v1/system/bootstrap`,{signal:e});if(!t.ok)throw Error(`读取部署操作作用域失败(${t.status})`);let n=(await t.json())?.operationScope,r=String(n?.workspace||``).trim(),i=String(n?.cloudCredential||``).trim();if(!r||!i)throw Error(`部署操作作用域不可用,请刷新 Studio`);return`${GV}:${encodeURIComponent(r)}:${encodeURIComponent(i)}`}async function fH(e,t,n){for(;;){await cH(KV,n);let r=await g(`/api/v1/operations/${encodeURIComponent(e)}`,{signal:n});if(!r.ok)throw new XV(`${t}状态读取失败(${r.status})`,r.status);let i=await r.json();if(WV.has(i.status))return i}}async function pH(e,t,n,r,i,a){let o=`${e}:${t}`,s=await uH(o,i,async()=>{let o=rH(e,t,n);if(!o.operationId){let t=await a(o.idempotencyKey,i);if(!t.ok){t.status<500&&aH(e,o);let n=``;try{n=(await t.clone().json())?.error?.message||``}catch{}throw Error(n||`${r}提交失败(${t.status})`)}let n=await t.json(),s=String(n?.id||``).trim();if(!s)throw aH(e,o),Error(`${r}提交结果缺少 operation_id`);o=iH(e,o,s)}return o}),c;try{c=await fH(s.operationId,r,i)}catch(t){throw t instanceof XV&&qV.has(t.status)&&await uH(o,i,async()=>{aH(e,s)}),t}return await uH(o,i,async()=>{aH(e,s)}),c}function mH(e){return[`READY`,`RUNNING`].includes(e)?`ready`:[`FAILED`,`ROLLED_BACK`,`ERROR`,`TERMINATED`].includes(e)?`failed`:[`ADMITTING`,`DEPLOYING`,`CREATING`,`UPDATING`].includes(e)?`pending`:`idle`}function hH(e){return{ADMITTING:`准入中`,DEPLOYING:`部署中`,READY:`已就绪`,FAILED:`部署失败`,ROLLED_BACK:`已回滚`,RUNNING:`运行中`,CREATING:`创建中`,UPDATING:`更新中`,ERROR:`异常`,TERMINATED:`已终止`}[e]||`状态未知`}function gH(e,t=28){return e.length>t?`${e.slice(0,t)}…`:e}function _H(){let e=window.location.hash.match(/^#\/deployments\/([^/?]+)(?:\?.*)?$/),t=e?decodeURIComponent(e[1]):``;return t===`new`?``:t}function vH(){let e=window.location.hash.match(/^#\/deployments\/new(?:\?(.*))?$/);if(!e)return null;let t=new URLSearchParams(e[1]||``);return{buildId:t.get(`buildId`)?.trim()||``,agentId:t.get(`agentId`)?.trim()||``}}function yH(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(`zh-CN`,{hour12:!1})}function bH({onCreate:e,onOpenChat:t,onSelectBuild:n}){let[r,i]=(0,s.useState)([]),[a,o]=(0,s.useState)(!0),[c,l]=(0,s.useState)(``),[u,d]=(0,s.useState)(new Set),[f,p]=(0,s.useState)(``),[m,h]=(0,s.useState)(!1),[_,v]=(0,s.useState)(!1),[y,b]=(0,s.useState)(null),[x,S]=(0,s.useState)(!1),[C,w]=(0,s.useState)(null),[T,E]=(0,s.useState)(!1),[D,O]=(0,s.useState)(()=>vH()),[k,j]=(0,s.useState)([]),[M,N]=(0,s.useState)(()=>vH()?.buildId||``),[P,F]=(0,s.useState)(``),[I,L]=(0,s.useState)(!1),[R,z]=(0,s.useState)(!1),[B,V]=(0,s.useState)(``),H=(0,s.useRef)(new Set);(0,s.useEffect)(()=>()=>{for(let e of H.current)e.abort();H.current.clear()},[]);function ee(){let e=new AbortController;return H.current.add(e),e}function te(e){H.current.delete(e)}let ne=(0,s.useCallback)(async e=>{o(!0),l(``);try{let[t,n]=await Promise.all([QV(`/api/v1/deployments`,e),QV(`/api/v1/cloud-agents?size=100`,e)]);if(!t.ok)throw Error(`读取部署记录失败(${t.status})`);let r=await t.json(),a=n.ok?await n.json():{items:[]},o=Array.isArray(r.items)?r.items:[],s=[...new Set(o.flatMap(e=>e.agentId?.trim()?[e.agentId.trim()]:[]))],c=await Promise.all(s.map(t=>Promise.resolve().then(()=>QV(`/api/v1/cloud-agents/${encodeURIComponent(t)}`,e)).then(async e=>e.ok?await e.json():null).catch(e=>{if(oH(e))throw e;return null}))),l=Array.isArray(a.items)?a.items:[],u=new Map(l.flatMap(e=>e.agentId?[[e.agentId,e]]:[]));for(let e of c)e?.agentId&&u.set(e.agentId,{...u.get(e.agentId),...e});let d=[...u.values()],f=new Map(o.map(e=>[e.id,e])),p=UV(o,d).map(e=>{if(e.source===`receipt`)return{...f.get(e.id),...e,id:e.id,source:`receipt`};let t=d.find(t=>t.agentId===e.agentId);return{id:e.id,buildId:``,bundleDigest:``,versionId:String(e.versionId||t?.versionId||``),status:String(e.status||t?.status||`UNKNOWN`).toUpperCase(),target:{region:String(t?.region||``),environment:`cloud`},agentId:e.agentId,agentName:e.agentName,endpoint:e.endpoint,framework:String(e.framework||t?.framework||``),runtimeType:String(e.runtimeType||t?.runtimeType||``),capabilities:e.capabilities||t?.capabilities,chatTransport:e.chatTransport||t?.chatTransport,chatRoutingReason:e.chatRoutingReason||t?.chatRoutingReason,updatedAt:String(e.updatedAt||t?.updatedAt||``),creatorName:e.creatorName||t?.creatorName,source:`account`}});e?.aborted||i(p)}catch(t){!oH(t)&&!e?.aborted&&l(t?.message||`部署记录不可用`)}finally{e?.aborted||o(!1)}},[]);(0,s.useEffect)(()=>{let e=new AbortController;return ne(e.signal),()=>e.abort()},[ne]),(0,s.useEffect)(()=>{let e=()=>{let e=vH();if(O(e),e){N(e.buildId),b(null);return}let t=_H();if(!t){b(null);return}let n=r.find(e=>e.id===t);n&&y?.deployment.id!==t&&se(n,!1)};return e(),window.addEventListener(`popstate`,e),window.addEventListener(`hashchange`,e),()=>{window.removeEventListener(`popstate`,e),window.removeEventListener(`hashchange`,e)}},[r,y?.deployment.id]),(0,s.useEffect)(()=>{if(!D)return;let e=!1;return L(!0),V(``),(async()=>{try{let[t,n]=await Promise.all([g(`/api/v1/agents?limit=100`),g(`/api/v1/system/settings`)]);if(!t.ok)throw Error(`读取可部署 Build 失败(${t.status})`);let r=await t.json(),i=n.ok?await n.json():{},a=Array.isArray(r.items)?r.items:[],o=(await Promise.all(a.map(async e=>{let t=String(e?.metadata?.id||``).trim();if(!t)return null;let n=await g(`/api/v1/agents/${encodeURIComponent(t)}`);return n.ok?n.json():null}))).flatMap(e=>{if(!e)return[];let t=String(e?.draft?.metadata?.id||``).trim(),n=String(e?.draft?.metadata?.name||t||`未命名 Agent`),r=String(e?.draft?.spec?.runtime?.type||``),i=String(e?.draft?.metadata?.labels?.[`agentkit.ksyun.com/artifact-type`]||(r===`codex`?`ManagedRuntime`:`Code`));return(Array.isArray(e.builds)?e.builds:[]).filter(e=>e.status===`SUCCEEDED`).map(e=>({...e,agentId:t,agentName:n,runtimeName:e.runtimeName||r,artifactType:i}))}).sort((e,t)=>String(t.createdAt||``).localeCompare(String(e.createdAt||``)));if(D.buildId&&!o.some(e=>e.id===D.buildId)){let e=await g(`/api/v1/builds/${encodeURIComponent(D.buildId)}`);if(e.ok){let t=await e.json(),n=String(t.agentId||D.agentId||``).trim(),r=n?await g(`/api/v1/agents/${encodeURIComponent(n)}`):null,i=r?.ok?await r.json():null;if(String(t.status||``)===`SUCCEEDED`&&n){let e=String(i?.draft?.spec?.runtime?.type||t.runtimeName||``);o=[{...t,agentId:n,agentName:String(i?.draft?.metadata?.name||n),runtimeName:t.runtimeName||e,artifactType:String(i?.draft?.metadata?.labels?.[`agentkit.ksyun.com/artifact-type`]||(e===`codex`?`ManagedRuntime`:`Code`))},...o]}}}if(e)return;F(String(i.cloudRegion||``).trim()),j(o);let s=o.find(e=>e.isCurrent!==!1);if(D.buildId){let e=o.find(e=>e.id===D.buildId);if(!e)throw Error(`Build ${D.buildId} 不存在或尚未成功`);e.isCurrent===!1&&s?N(s.id):N(D.buildId)}else N(e=>o.some(t=>t.id===e)?e:(s||o[0])?.id||``)}catch(t){e||V(t?.message||`可部署 Build 不可用`)}finally{e||L(!1)}})(),()=>{e=!0}},[D?.agentId,D?.buildId]);let U=(0,s.useMemo)(()=>({ready:r.filter(e=>mH(e.status)===`ready`).length,pending:r.filter(e=>mH(e.status)===`pending`).length,failed:r.filter(e=>mH(e.status)===`failed`).length}),[r]);async function re(e){d(t=>new Set(t).add(e.id));try{let t=e.source===`account`?await g(`/api/v1/cloud-agents/${encodeURIComponent(e.agentId||``)}`):await g(`/api/v1/deployments/${encodeURIComponent(e.id)}`);if(!t.ok)throw Error(`状态刷新失败(${t.status})`);let n=await t.json(),r=e.source===`account`?$V(e,n):{...e,...n,source:`receipt`};if(e.source===`receipt`&&r.agentId){let e=await g(`/api/v1/cloud-agents/${encodeURIComponent(r.agentId)}`).catch(()=>null);e?.ok&&(r=$V(r,await e.json()))}i(t=>t.map(t=>t.id===e.id?r:t))}catch(t){l(`${e.instanceId||e.id}:${t?.message||`状态未知`}`)}finally{d(t=>{let n=new Set(t);return n.delete(e.id),n})}}async function ie(){await Promise.all(r.map(e=>re(e)))}async function ae(e){l(``);try{let t=await g(BV(e).kind===`official-dashboard`||e.source===`account`?`/api/v1/cloud-agents/${encodeURIComponent(e.agentId||``)}:dashboard`:`/api/v1/deployments/${encodeURIComponent(e.id)}:dashboard`,{method:`POST`});if(!t.ok)throw Error(`创建云端 UI 访问链接失败(${t.status})`);let n=await t.json(),r=String(n?.accessUrl||n?.access_url||``).trim();if(!r)throw Error(`云端未返回 Agent UI 地址`);window.open(r,`_blank`,`noopener,noreferrer`)}catch(t){l(`${e.instanceId||e.id}:${t?.message||`无法打开云端 UI`}`)}}async function oe(e,t){let n=await QV(`/api/v1/cloud-agents/${encodeURIComponent(e)}/versions?page=1&size=100`,t);if(!n.ok)throw Error(`读取云端版本失败(${n.status})`);let r=await n.json(),i=r.items||r.versions||r.Versions||[];return{items:(Array.isArray(i)?i:[]).map(e=>({versionId:String(e.versionId||e.version_id||e.VersionId||``),versionName:String(e.versionName||e.version_name||e.VersionName||``),tag:String(e.tag||e.Tag||``),status:String(e.status||e.Status||``),trafficPercentage:Number(e.trafficPercentage??e.traffic_percentage??e.TrafficPercentage??0),createdAt:e.createdAt||e.created_at||e.CreatedAt,createdBy:e.createdBy||e.created_by||e.CreatedBy,canRollback:!!(e.canRollback??e.can_rollback??e.CanRollback),rollbackDisabledReason:String(e.rollbackDisabledReason||e.rollback_disabled_reason||e.RollbackDisabledReason||``)})).filter(e=>e.versionId),currentVersionId:String(r.currentVersionId||r.current_version_id||r.CurrentVersionId||``)}}async function se(e,t=!0,n){if(n?.aborted)return;t&&window.history.pushState(null,``,`#/deployments/${encodeURIComponent(e.id)}`),b({deployment:e,sourceAgentId:``,sourceAgentName:``,builds:[],versions:[],currentVersionId:``,loading:!0,error:``}),p(``),h(!1);let r=e.agentId?oe(e.agentId,n):Promise.resolve({items:[],currentVersionId:``});try{if(e.source===`account`){let t=await QV(`/api/v1/cloud-agents/${encodeURIComponent(e.agentId||``)}`,n);if(!t.ok)throw Error(`刷新云端 Agent 状态失败(${t.status})`);let a=await t.json(),o={...e,agentName:String(a.name||e.agentName||e.agentId||`云端 Agent`),status:String(a.status||e.status).toUpperCase(),endpoint:a.endpoint||e.endpoint,framework:a.framework||e.framework,runtimeType:a.runtimeType||e.runtimeType,capabilities:a.capabilities||e.capabilities,chatTransport:a.chatTransport||e.chatTransport,chatRoutingReason:a.chatRoutingReason||e.chatRoutingReason,versionId:a.versionId||e.versionId,updatedAt:a.updatedAt||e.updatedAt,creatorName:a.creatorName||e.creatorName},s=await r;if(n?.aborted)return;i(t=>t.map(t=>t.id===e.id?o:t)),b({deployment:o,sourceAgentId:``,sourceAgentName:o.agentName||o.agentId||`账号云端 Agent`,builds:[],versions:s.items,currentVersionId:s.currentVersionId,loading:!1,error:``});return}let t=await QV(`/api/v1/deployments/${encodeURIComponent(e.id)}`,n);if(!t.ok)throw Error(`刷新云端 Agent 状态失败(${t.status})`);let a={...e,...await t.json(),source:`receipt`},o=a;if(a.agentId){let e=await QV(`/api/v1/cloud-agents/${encodeURIComponent(a.agentId)}`,n).catch(e=>{if(oH(e))throw e;return null});e?.ok&&(o=$V(a,await e.json()))}if(n?.aborted)return;i(t=>t.map(t=>t.id===e.id?o:t));let s=await QV(`/api/v1/builds/${encodeURIComponent(o.buildId)}`,n);if(!s.ok)throw Error(`读取当前 Build 失败(${s.status})`);let c=await s.json(),l=String(c.agentId||``).trim();if(!l)throw Error(`当前部署缺少本地 Agent 关联`);let u=await QV(`/api/v1/agents/${encodeURIComponent(l)}`,n);if(!u.ok)throw Error(`读取本地 Build 历史失败(${u.status})`);let d=await u.json(),f=(Array.isArray(d.builds)?d.builds:[]).filter(e=>e.status===`SUCCEEDED`).sort((e,t)=>String(t.createdAt||``).localeCompare(String(e.createdAt||``))),p=await r;if(n?.aborted)return;b({deployment:o,sourceAgentId:l,sourceAgentName:String(d?.draft?.metadata?.name||l),builds:f,versions:p.items,currentVersionId:p.currentVersionId,loading:!1,error:``})}catch(e){if(oH(e)||n?.aborted)return;let t=await r.catch(()=>({items:[],currentVersionId:``}));b(n=>n?{...n,versions:t.items,currentVersionId:t.currentVersionId,loading:!1,error:e?.message||`云端 Agent 详情不可用`}:null)}}async function ce(){if(!M||R)return;let e=k.find(e=>e.id===M);if(!e){V(`请选择一个已成功的 Build`);return}if(!P){V(`请先在 Studio 设置中配置云端 Region`);return}z(!0),V(``);let t=`deploy:${M}:${P}`,n=ee();try{let r=await pH(await dH(n.signal),t,`deploy`,`部署`,n.signal,(e,t)=>g(`/api/v1/builds/${encodeURIComponent(M)}/deployments`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":e},body:JSON.stringify({target:{region:P,environment:`cloud`},releasePolicy:{strategy:`rolling`,approval:`none`}}),signal:t}));if(r.status!==`SUCCEEDED`)throw Error(r.error?.message||`部署未完成`);sH(n.signal),await ne(n.signal),sH(n.signal);let i=String(r.resourceId||``).trim();DV(i?EV(i):`#/deployments`),J(`已提交云端部署`,`${e.agentName||e.agentId} · ${e.id}`)}catch(e){!oH(e)&&!n.signal.aborted&&V(e?.message||`部署失败`)}finally{te(n),n.signal.aborted||z(!1)}}function le(){b(null),p(``),h(!1),window.history.pushState(null,``,`#/deployments`)}async function ue(e,t){if(!t||x)return;S(!0),l(``);let n=`update:${e.agentId||e.id}:${t}`,r=ee();try{let i=await pH(await dH(r.signal),n,`update`,`更新`,r.signal,(n,r)=>g(`/api/v1/builds/${encodeURIComponent(t)}/deployments`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":n},body:JSON.stringify({target:e.target,releasePolicy:{strategy:`rolling`,approval:`none`}}),signal:r}));if(i.status!==`SUCCEEDED`)throw Error(i.error?.message||`更新未完成`);sH(r.signal),b(null),await ne(r.signal),sH(r.signal),J(`已提交云端更新`,`Build ${t}`)}catch(e){!oH(e)&&!r.signal.aborted&&l(e?.message||`更新失败`)}finally{te(r),r.signal.aborted||S(!1)}}async function W(){if(!C||T)return;let e=C;E(!0),l(``);try{let t=await g(e.source===`account`?`/api/v1/cloud-agents/${encodeURIComponent(e.agentId||``)}`:`/api/v1/deployments/${encodeURIComponent(e.id)}`,{method:`DELETE`});if(!t.ok)throw Error(`删除云端 Agent 失败(${t.status})`);let n=await t.json();w(null),b(null),await ne(),J(`云端 Agent 已删除`,String(n.agentId||e.agentId||``))}catch(e){l(e?.message||`删除云端 Agent 失败`)}finally{E(!1)}}async function fe(){if(!y||!f||_)return;let e=y.deployment,t=String(e.agentId||``).trim(),n=f,r=y.versions.find(e=>e.versionId===n),i=n===y.currentVersionId||r?.status.toLowerCase()===`current`;if(!t||!r?.canRollback||i)return;v(!0),b(e=>e&&{...e,error:``});let a=`rollback:${t}:${n}`,o=ee();try{let r=await pH(await dH(o.signal),a,`rollback`,`回滚`,o.signal,(e,r)=>g(`/api/v1/cloud-agents/${encodeURIComponent(t)}:rollback-version`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":e},body:JSON.stringify({versionId:n}),signal:r}));if(r.status!==`SUCCEEDED`)throw Error(r.error?.message||`回滚未完成`);sH(o.signal),h(!1),p(``),await ne(o.signal),await se(e,!1,o.signal),sH(o.signal),J(`已提交版本回滚`,`云端版本 ${n}`)}catch(e){!oH(e)&&!o.signal.aborted&&(h(!1),b(t=>t&&{...t,error:e?.message||`回滚失败`}))}finally{te(o),o.signal.aborted||v(!1)}}if(D){let e=k.find(e=>e.id===M);return(0,G.jsxs)(`div`,{className:`delivery-page deployment-create-page`,"data-layout":`document`,children:[(0,G.jsxs)(Sd,{children:[(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:()=>DV(`#/deployments`),children:[(0,G.jsx)(A,{size:15}),(0,G.jsx)(`span`,{children:`返回云端 Agent`})]}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>void ce(),disabled:!e||R||I,children:[(0,G.jsx)(de,{size:15}),(0,G.jsx)(`span`,{children:R?`部署中…`:`部署到云端`})]})]}),(0,G.jsx)(`div`,{className:`delivery-intro`,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:`部署到云端`}),(0,G.jsx)(`p`,{children:`选择一个已成功的 Build,由 Studio 提交统一云端部署操作。`})]})}),B&&(0,G.jsx)(`div`,{className:`form-error`,role:`alert`,children:B}),(0,G.jsxs)(`section`,{className:`delivery-block`,"aria-label":`选择部署 Build`,children:[(0,G.jsx)(`h2`,{children:`选择 Build`}),(0,G.jsx)(`p`,{children:`ManagedRuntime 使用已校验声明;ADK、LangGraph 等代码 Agent 使用不可变 Code Bundle。`}),I?(0,G.jsx)(`p`,{children:`正在读取可部署 Build…`}):k.length?(0,G.jsx)(`div`,{className:`deployment-version-list`,role:`radiogroup`,"aria-label":`可部署 Build`,children:k.map(e=>(0,G.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":e.id===M,"aria-label":`${e.agentName||e.agentId||`Agent`} ${e.id}${e.isCurrent===!1?` (声明已变更)`:``}`,className:`deployment-version-option`,"data-selected":e.id===M,"data-stale":e.isCurrent===!1,onClick:()=>N(e.id),children:[(0,G.jsx)(`strong`,{className:`deployment-version-name`,children:e.agentName||e.agentId||`未命名 Agent`}),(0,G.jsxs)(`span`,{className:`deployment-version-state`,"data-state":e.isCurrent===!1?`stale`:`available`,children:[e.artifactType===`ManagedRuntime`?`托管声明`:`代码 Bundle`,e.isCurrent===!1?` · 声明已变更`:``]}),(0,G.jsx)(`code`,{title:e.id,children:gH(e.id,24)}),(0,G.jsx)(`time`,{className:`deployment-version-time`,dateTime:e.createdAt||void 0,children:yH(e.createdAt)})]},e.id))}):(0,G.jsxs)(`div`,{className:`delivery-empty-state`,children:[(0,G.jsx)(Ue,{size:24}),(0,G.jsx)(`h2`,{children:`没有可部署的 Build`}),(0,G.jsx)(`p`,{children:`请先完成 Agent 构建或 ManagedRuntime 声明校验。`}),(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:n,children:`前往构建`})]}),e&&(0,G.jsxs)(`div`,{className:`api-contract`,"aria-label":`部署提交摘要`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Agent`}),(0,G.jsx)(`strong`,{children:e.agentName||e.agentId})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Build`}),(0,G.jsx)(`code`,{children:e.id})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`制品`}),(0,G.jsx)(`strong`,{children:e.artifactType===`ManagedRuntime`?`ManagedRuntime 声明`:`Code Bundle`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`目标`}),(0,G.jsx)(`strong`,{children:`云端`})]})]})]})]})}if(y){let e=y.builds[0],n=y.versions.find(e=>e.versionId===f&&e.canRollback&&e.versionId!==y.currentVersionId&&e.status.toLowerCase()!==`current`),r=y.versions.find(e=>e.versionId===y.currentVersionId||e.status.toLowerCase()===`current`),i=y.deployment.source===`receipt`,a=i&&y.deployment.artifactId===`managed-runtime`&&!!e&&e.id!==y.deployment.buildId,o=BV(y.deployment);return(0,G.jsxs)(`div`,{className:`delivery-page deployment-detail-page`,"data-layout":`document`,children:[(0,G.jsxs)(Sd,{children:[(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:le,children:[(0,G.jsx)(A,{size:15}),(0,G.jsx)(`span`,{children:`返回云端 Agent`})]}),!!y.deployment.agentId&&(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:()=>h(!0),disabled:!n?.canRollback||x||_,children:_?`回滚中…`:n?`回滚到所选版本`:`选择版本回滚`}),a&&(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:()=>void ue(y.deployment,e.id),disabled:x,children:x?`更新中…`:`部署最新 Build`}),mH(y.deployment.status)===`ready`&&(0,G.jsx)(`button`,{className:`button accent`,type:`button`,onClick:()=>o.kind===`official-dashboard`?void ae(y.deployment):t(y.deployment),disabled:x,children:o.kind===`official-dashboard`?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(ye,{size:15}),`链接`]}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Le,{size:15}),`进入会话`]})})]}),(0,G.jsxs)(`div`,{className:`delivery-intro deployment-detail-heading`,children:[(0,G.jsx)(`button`,{className:`button tertiary compact`,type:`button`,onClick:le,"aria-label":`返回云端 Agent`,children:(0,G.jsx)(A,{size:16})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:y.deployment.agentName||y.sourceAgentName||`云端 Agent`}),(0,G.jsx)(`p`,{children:y.deployment.agentId||y.deployment.id})]})]}),y.error&&(0,G.jsx)(`div`,{className:`form-error`,role:`alert`,children:y.error}),(0,G.jsxs)(`section`,{className:`delivery-block`,"aria-label":`云端 Agent 详情`,children:[(0,G.jsxs)(`div`,{className:`api-contract`,"aria-label":`云端部署事实`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`名称`}),(0,G.jsx)(`strong`,{children:y.deployment.agentName||y.sourceAgentName})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`来源`}),(0,G.jsx)(`strong`,{children:i?`Studio 部署记录`:`账号云端 Agent`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`创建子账号`}),(0,G.jsx)(`strong`,{children:y.deployment.creatorName||`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`状态`}),(0,G.jsx)(`strong`,{children:hH(y.deployment.status)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`云端 Agent`}),(0,G.jsx)(`code`,{children:y.deployment.agentId||`尚未返回`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`类型`}),(0,G.jsx)(`code`,{children:y.deployment.framework||y.deployment.artifactId||`尚未返回`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Endpoint`}),(0,G.jsx)(`code`,{children:y.deployment.endpoint||`尚未返回`})]}),y.deployment.instanceId&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`实例`}),(0,G.jsx)(`code`,{children:y.deployment.instanceId})]}),i&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`当前 Build`}),(0,G.jsx)(`code`,{children:y.deployment.buildId})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`当前版本`}),(0,G.jsx)(`code`,{title:r?.versionId||y.deployment.versionId||void 0,children:r?.versionName||r?.tag||y.deployment.versionId||`尚未返回`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`更新时间`}),(0,G.jsx)(`code`,{children:yH(y.deployment.updatedAt)})]}),i&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Bundle`}),(0,G.jsx)(`code`,{title:y.deployment.bundleDigest,children:y.deployment.bundleDigest})]})]}),y.deployment.agentId?(0,G.jsxs)(`section`,{className:`deployment-version-history`,"aria-label":`云端版本历史`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{children:`云端版本历史`}),(0,G.jsx)(`p`,{children:`版本状态与可回滚性来自云端 Server`})]}),y.loading?(0,G.jsx)(`p`,{children:`正在读取版本…`}):(0,G.jsxs)(`div`,{className:`deployment-version-list`,role:`radiogroup`,"aria-label":`选择回滚版本`,children:[(0,G.jsxs)(`div`,{className:`deployment-version-header`,"aria-hidden":`true`,children:[(0,G.jsx)(`span`,{children:`版本`}),(0,G.jsx)(`span`,{children:`状态`}),(0,G.jsx)(`span`,{children:`流量`}),(0,G.jsx)(`span`,{children:`创建时间`})]}),y.versions.length?y.versions.map(e=>{let t=e.versionId===y.currentVersionId||e.status.toLowerCase()===`current`,n=t?`当前`:e.canRollback?`可回滚`:`不可回滚`;return(0,G.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":e.versionId===f,"aria-label":`${t?`当前版本`:e.canRollback?`可回滚版本`:`不可回滚版本`} ${e.versionName||e.tag||`未命名`}`,className:`deployment-version-option`,"data-current":t,"data-selected":e.versionId===f,disabled:t||!e.canRollback||x||_,onClick:()=>p(e.versionId),children:[(0,G.jsx)(`strong`,{className:`deployment-version-name`,children:e.versionName||e.tag||`未命名版本`}),(0,G.jsx)(`span`,{className:`deployment-version-state`,"data-state":t?`current`:e.canRollback?`available`:`disabled`,children:n}),(0,G.jsxs)(`span`,{className:`deployment-version-traffic`,children:[e.trafficPercentage,`%`]}),(0,G.jsx)(`time`,{className:`deployment-version-time`,dateTime:e.createdAt||void 0,children:yH(e.createdAt)})]},e.versionId)}):(0,G.jsx)(`p`,{className:`deployment-version-empty`,children:`云端暂未返回版本记录。`})]})]}):(0,G.jsx)(`div`,{className:`callout`,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`缺少云端 Agent ID`}),(0,G.jsx)(`p`,{children:`当前记录无法查询 Server 版本历史,因此不开放版本回滚。`})]})})]}),m&&n&&(0,G.jsx)(ka,{title:`确认回滚云端 Agent?`,description:`当前云端版本 ${r?.versionName||y.deployment.versionId||`未知`}(${r?.versionId||y.deployment.versionId||`未知`})将回滚到 ${n.versionName||n.tag||`目标版本`}(${n.versionId})。系统将调用 Server RollbackVersion,并在提交后重新读取 Agent 与版本列表。`,confirmText:`确认回滚`,danger:!1,busy:_,onConfirm:()=>void fe(),onCancel:()=>h(!1)})]})}return(0,G.jsxs)(`div`,{className:`delivery-page`,"data-layout":`document`,children:[(0,G.jsxs)(Sd,{children:[(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>DV(`#/deployments/new`),children:[(0,G.jsx)(de,{size:15}),(0,G.jsx)(`span`,{children:`部署 Agent`})]}),(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:()=>void ie(),disabled:!r.length||u.size>0,children:[(0,G.jsx)(et,{size:15}),(0,G.jsx)(`span`,{children:`刷新全部状态`})]})]}),c&&(0,G.jsx)(`div`,{className:`form-error`,role:`alert`,children:c}),(0,G.jsxs)(`section`,{className:`delivery-stat-strip compact-delivery-summary`,"aria-label":`部署摘要`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,title:`同一 Agent 的多次部署按 Agent 聚合`,children:`云端 Agent`}),(0,G.jsx)(`strong`,{children:r.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`运行中`}),(0,G.jsx)(`strong`,{children:U.ready})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`部署中`}),(0,G.jsx)(`strong`,{children:U.pending})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`异常`}),(0,G.jsx)(`strong`,{children:U.failed})]})]}),a?(0,G.jsx)(`div`,{className:`delivery-empty-state`,children:(0,G.jsx)(`p`,{children:`正在读取云端 Agent…`})}):r.length?(0,G.jsxs)(`section`,{className:`delivery-block`,"aria-label":`云端 Agent 列表`,children:[(0,G.jsxs)(`div`,{className:`delivery-section-heading`,children:[(0,G.jsx)(`h2`,{children:`Agent 列表`}),(0,G.jsxs)(`span`,{children:[r.length,` 个`]})]}),(0,G.jsx)(`div`,{className:`delivery-table-scroll`,children:(0,G.jsxs)(`table`,{className:`delivery-table`,children:[(0,G.jsx)(`thead`,{children:(0,G.jsxs)(`tr`,{children:[(0,G.jsx)(`th`,{children:`Agent`}),(0,G.jsx)(`th`,{children:`状态`}),(0,G.jsx)(`th`,{children:`类型`}),(0,G.jsx)(`th`,{children:`创建子账号`}),(0,G.jsx)(`th`,{children:`版本`}),(0,G.jsx)(`th`,{children:`更新时间`}),(0,G.jsx)(`th`,{children:(0,G.jsx)(`span`,{className:`sr-only`,children:`操作`})})]})}),(0,G.jsx)(`tbody`,{children:r.map(e=>{let n=u.has(e.id),r=BV(e);return(0,G.jsxs)(`tr`,{children:[(0,G.jsx)(`td`,{children:(0,G.jsxs)(`button`,{className:`delivery-agent-identity`,type:`button`,"aria-label":`查看 ${e.agentName||e.agentId||`云端 Agent`} 详情`,onClick:()=>void se(e),children:[(0,G.jsx)(`strong`,{children:e.agentName||e.agentId||`云端 Agent`}),(0,G.jsx)(`code`,{title:e.agentId||e.id,children:gH(e.agentId||e.id,24)})]})}),(0,G.jsx)(`td`,{children:(0,G.jsx)(`span`,{className:`delivery-status-badge`,"data-state":mH(e.status),children:hH(e.status)})}),(0,G.jsxs)(`td`,{children:[(0,G.jsx)(`strong`,{children:e.framework||(e.artifactId===`managed-runtime`?`YAML Agent`:`高代码 Agent`)}),e.source===`receipt`&&(0,G.jsx)(`small`,{children:`Studio 部署记录`})]}),(0,G.jsx)(`td`,{children:e.creatorName||`-`}),(0,G.jsx)(`td`,{children:(0,G.jsx)(`code`,{title:e.versionId||``,children:gH(e.versionId||`—`,20)})}),(0,G.jsx)(`td`,{children:(0,G.jsx)(`span`,{className:`delivery-updated-at`,children:yH(e.updatedAt)})}),(0,G.jsxs)(`td`,{className:`delivery-row-actions`,children:[mH(e.status)===`ready`&&e.agentId&&(0,G.jsx)(`button`,{className:`button secondary compact`,type:`button`,"aria-label":r.kind===`official-dashboard`?`打开官方 Dashboard`:`打开云端 Agent 会话`,onClick:()=>r.kind===`official-dashboard`?void ae(e):t(e),children:r.kind===`official-dashboard`?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(ye,{size:15}),(0,G.jsx)(`span`,{children:`链接`})]}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Le,{size:15}),(0,G.jsx)(`span`,{children:`会话`})]})}),(0,G.jsx)(yd,{label:`${e.agentName||e.agentId||e.id} 的更多操作`,items:[{label:n?`正在刷新状态`:`刷新状态`,disabled:n,onSelect:()=>void re(e)},...mH(e.status)===`ready`&&e.agentId?[{label:`在 Hosted UI 中打开`,onSelect:()=>void ae(e)}]:[],...e.source===`receipt`?[{label:`版本管理`,onSelect:()=>void se(e)}]:[],...e.agentId?[{label:`删除云端 Agent`,danger:!0,onSelect:()=>w(e)}]:[]]})]})]},e.id)})})]})})]}):(0,G.jsxs)(`div`,{className:`delivery-empty-state`,children:[(0,G.jsx)(de,{size:24}),(0,G.jsx)(`h2`,{children:`还没有云端 Agent`}),(0,G.jsx)(`p`,{children:`可以从 Agent 详情构建并部署到云端。`}),(0,G.jsxs)(`div`,{className:`delivery-empty-actions`,children:[(0,G.jsx)(`button`,{className:`button accent`,type:`button`,onClick:()=>DV(`#/deployments/new`),children:`部署 Agent`}),(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:e,children:`创建 Agent`})]})]}),C&&(0,G.jsx)(ka,{title:`删除云端 Agent?`,description:`将删除 ${C.agentId||C.id} 的云端实例和本地部署记录。此操作不会删除本地 Agent 与 Build。`,confirmText:`删除云端 Agent`,busy:T,onConfirm:()=>void W(),onCancel:()=>w(null)})]})}var xH=e=>typeof e==`boolean`||e instanceof Boolean,SH=e=>typeof e==`number`||e instanceof Number,CH=e=>typeof e==`bigint`||e instanceof BigInt,wH=e=>!!e&&e instanceof Date,TH=e=>typeof e==`string`||e instanceof String,EH=e=>Array.isArray(e),DH=e=>typeof e==`object`&&!!e,OH=e=>!!e&&e instanceof Object&&typeof e==`function`;function kH(e,t){return t===void 0&&(t=!1),!e||t?`"${e}"`:e}function AH(e,t,n){return n?JSON.stringify(e):t?`"${e}"`:e}function jH(e){let{field:t,value:n,data:r,lastElement:i,openBracket:a,closeBracket:o,level:c,style:l,shouldExpandNode:u,clickToExpandNode:d,outerRef:f,beforeExpandChange:p}=e,m=(0,s.useRef)(!1),[h,g]=(0,s.useState)(()=>u(c,n,t)),_=(0,s.useRef)(null);(0,s.useEffect)(()=>{m.current?g(u(c,n,t)):m.current=!0},[u]);let v=(0,s.useId)();if(r.length===0)return MH({field:t,openBracket:a,closeBracket:o,lastElement:i,style:l});let y=h?l.collapseIcon:l.expandIcon,b=h?l.ariaLables.collapseJson:l.ariaLables.expandJson,x=c+1,S=r.length-1,C=e=>{h!==e&&(!p||p({level:c,value:n,field:t,newExpandValue:e}))&&g(e)},w=e=>{if(e.key===`ArrowRight`||e.key===`ArrowLeft`)e.preventDefault(),C(e.key===`ArrowRight`);else if(e.key===`ArrowUp`||e.key===`ArrowDown`){e.preventDefault();let t=e.key===`ArrowUp`?-1:1;if(!f.current)return;let n=f.current.querySelectorAll(`[role=button]`),r=-1;for(let e=0;e{C(!h);let e=_.current;if(!e)return;let t=f.current?.querySelector(`[role=button][tabindex="0"]`);t&&(t.tabIndex=-1),e.tabIndex=0,e.focus()};return(0,s.createElement)(`div`,{className:l.basicChildStyle,role:`treeitem`,"aria-expanded":h,"aria-selected":void 0},(0,s.createElement)(`span`,{className:y,onClick:T,onKeyDown:w,role:`button`,"aria-label":b,"aria-expanded":h,"aria-controls":h?v:void 0,ref:_,tabIndex:c===0?0:-1}),(t||t===``)&&(d?(0,s.createElement)(`span`,{className:l.clickableLabel,onClick:T,onKeyDown:w},kH(t,l.quotesForFieldNames),`:`):(0,s.createElement)(`span`,{className:l.label},kH(t,l.quotesForFieldNames),`:`)),(0,s.createElement)(`span`,{className:l.punctuation},a),h?(0,s.createElement)(`ul`,{id:v,role:`group`,className:l.childFieldsContainer},r.map((e,t)=>(0,s.createElement)(IH,{key:e[0]||t,field:e[0],value:e[1],style:l,lastElement:t===S,level:x,shouldExpandNode:u,clickToExpandNode:d,beforeExpandChange:p,outerRef:f}))):(0,s.createElement)(`span`,{className:l.collapsedContent,onClick:T,onKeyDown:w}),(0,s.createElement)(`span`,{className:l.punctuation},o),!i&&(0,s.createElement)(`span`,{className:l.punctuation},`,`))}function MH(e){let{field:t,openBracket:n,closeBracket:r,lastElement:i,style:a}=e;return(0,s.createElement)(`div`,{className:a.basicChildStyle,role:`treeitem`,"aria-selected":void 0},(t||t===``)&&(0,s.createElement)(`span`,{className:a.label},kH(t,a.quotesForFieldNames),`:`),(0,s.createElement)(`span`,{className:a.punctuation},n),(0,s.createElement)(`span`,{className:a.punctuation},r),!i&&(0,s.createElement)(`span`,{className:a.punctuation},`,`))}function NH(e){let{field:t,value:n,style:r,lastElement:i,shouldExpandNode:a,clickToExpandNode:o,level:s,outerRef:c,beforeExpandChange:l}=e;return jH({field:t,value:n,lastElement:i||!1,level:s,openBracket:`{`,closeBracket:`}`,style:r,shouldExpandNode:a,clickToExpandNode:o,data:Object.keys(n).map(e=>[e,n[e]]),outerRef:c,beforeExpandChange:l})}function PH(e){let{field:t,value:n,style:r,lastElement:i,level:a,shouldExpandNode:o,clickToExpandNode:s,outerRef:c,beforeExpandChange:l}=e;return jH({field:t,value:n,lastElement:i||!1,level:a,openBracket:`[`,closeBracket:`]`,style:r,shouldExpandNode:o,clickToExpandNode:s,data:n.map(e=>[void 0,e]),outerRef:c,beforeExpandChange:l})}function FH(e){let{field:t,value:n,style:r,lastElement:i}=e,a,o=r.otherValue;return n===null?(a=`null`,o=r.nullValue):n===void 0?(a=`undefined`,o=r.undefinedValue):TH(n)?(a=AH(n,!r.noQuotesForStringValues,r.stringifyStringValues),o=r.stringValue):xH(n)?(a=n?`true`:`false`,o=r.booleanValue):SH(n)?(a=n.toString(),o=r.numberValue):CH(n)?(a=`${n.toString()}n`,o=r.numberValue):a=wH(n)?n.toISOString():OH(n)?`function() { }`:n.toString(),(0,s.createElement)(`div`,{className:r.basicChildStyle,role:`treeitem`,"aria-selected":void 0},(t||t===``)&&(0,s.createElement)(`span`,{className:r.label},kH(t,r.quotesForFieldNames),`:`),(0,s.createElement)(`span`,{className:o},a),!i&&(0,s.createElement)(`span`,{className:r.punctuation},`,`))}function IH(e){let t=e.value;return EH(t)?(0,s.createElement)(PH,Object.assign({},e)):DH(t)&&!wH(t)&&!OH(t)?(0,s.createElement)(NH,Object.assign({},e)):(0,s.createElement)(FH,Object.assign({},e))}var LH={"container-base":`_GzYRV`,"punctuation-base":`_3eOF8`,pointer:`_1MFti`,"expander-base":`_f10Tu _1MFti`,"expand-icon":`_1UmXx`,"collapse-icon":`_1LId0`,"collapsed-content-base":`_1pNG9 _1MFti`,"container-light":`_2IvMF _GzYRV`,"basic-element-style":`_2bkNM`,"child-fields-container":`_1BXBN`,"label-light":`_1MGIk`,"clickable-label-light":`_2YKJg _1MGIk _1MFti`,"punctuation-light":`_3uHL6 _3eOF8`,"value-null-light":`_2T6PJ`,"value-undefined-light":`_1Gho6`,"value-string-light":`_vGjyY`,"value-number-light":`_1bQdo`,"value-boolean-light":`_3zQKs`,"value-other-light":`_1xvuR`,"collapse-icon-light":`_oLqym _f10Tu _1MFti _1LId0`,"expand-icon-light":`_2AXVT _f10Tu _1MFti _1UmXx`,"collapsed-content-light":`_2KJWg _1pNG9 _1MFti`,"container-dark":`_11RoI _GzYRV`,"expand-icon-dark":`_17H2C _f10Tu _1MFti _1UmXx`,"collapse-icon-dark":`_3QHg2 _f10Tu _1MFti _1LId0`,"collapsed-content-dark":`_3fDAz _1pNG9 _1MFti`,"label-dark":`_2bSDX`,"clickable-label-dark":`_1RQEj _2bSDX _1MFti`,"punctuation-dark":`_gsbQL _3eOF8`,"value-null-dark":`_LaAZe`,"value-undefined-dark":`_GTKgm`,"value-string-dark":`_Chy1W`,"value-number-dark":`_2bveF`,"value-boolean-dark":`_2vRm-`,"value-other-dark":`_1prJR`},RH={container:LH[`container-light`],basicChildStyle:LH[`basic-element-style`],childFieldsContainer:LH[`child-fields-container`],label:LH[`label-light`],clickableLabel:LH[`clickable-label-light`],nullValue:LH[`value-null-light`],undefinedValue:LH[`value-undefined-light`],stringValue:LH[`value-string-light`],booleanValue:LH[`value-boolean-light`],numberValue:LH[`value-number-light`],otherValue:LH[`value-other-light`],punctuation:LH[`punctuation-light`],collapseIcon:LH[`collapse-icon-light`],expandIcon:LH[`expand-icon-light`],collapsedContent:LH[`collapsed-content-light`],noQuotesForStringValues:!1,quotesForFieldNames:!1,ariaLables:{collapseJson:`collapse JSON`,expandJson:`expand JSON`},stringifyStringValues:!1};LH[`container-dark`],LH[`basic-element-style`],LH[`child-fields-container`],LH[`label-dark`],LH[`clickable-label-dark`],LH[`value-null-dark`],LH[`value-undefined-dark`],LH[`value-string-dark`],LH[`value-boolean-dark`],LH[`value-number-dark`],LH[`value-other-dark`],LH[`punctuation-dark`],LH[`collapse-icon-dark`],LH[`expand-icon-dark`],LH[`collapsed-content-dark`];var zH=()=>!0,BH=e=>e<1,VH=e=>{let{data:t,style:n=RH,shouldExpandNode:r=zH,clickToExpandNode:i=!1,beforeExpandChange:a,compactTopLevel:o,...c}=e,l=(0,s.useRef)(null);return(0,s.createElement)(`div`,Object.assign({"aria-label":`JSON view`},c,{className:n.container,ref:l,role:`tree`}),o&&DH(t)?Object.entries(t).map(e=>{let[t,o]=e;return(0,s.createElement)(IH,{key:t,field:t,value:o,style:{...RH,...n},lastElement:!0,level:1,shouldExpandNode:r,clickToExpandNode:i,beforeExpandChange:a,outerRef:l})}):(0,s.createElement)(IH,{value:t,style:{...RH,...n},lastElement:!0,level:0,shouldExpandNode:r,clickToExpandNode:i,outerRef:l,beforeExpandChange:a}))};function HH(e){return e===`failed`||e===`canceled`||e===`cancelled`||e===`interrupted`?3:e===`completed`?2:+(e===`running`)}function UH(e,t){let n=[...e?.sourceEvents||[],t].sort((e,t)=>e.seqId-t.seqId),r=n[0],i=n[n.length-1],a={...e?.details||{},...t.details},o=t.details.text,s=t.type.startsWith(`reasoning.`),c=t.type.startsWith(`text.`),l=t.category===`assistant`;if((s||c)&&typeof o==`string`){let n=s?`reasoning`:`output`,r=e?.details[n];a[n]=t.type.endsWith(`.delta`)&&t.details.replace!==!0&&typeof r==`string`?r+o:o,a.text=a[n]}t.type===`usage.reported`&&(a.usage={...t.details});let u=HH(t.status)>=HH(e?.status||null)?t.status??e?.status??null:e?.status??null,d=!!(u&&HH(u)>=2)||/\.(end|completed|resolved)$/.test(t.type),f=r.timestamp,p=d?i.timestamp:e?.endedAt??null,m=p!==null&&n.length>1&&p>f?(p-f)*1e3:null;return{...e||t,...t,type:l?`assistant.message`:t.type,summary:l?`Message`:t.summary,status:u,durationMs:t.durationMs??e?.durationMs??m,details:a,sourceEvents:n,firstSeqId:r.seqId,lastSeqId:i.seqId,startedAt:f,endedAt:p}}function WH(e,t){let n=e.byRecordId.get(t.recordId);if(n===void 0){e.byRecordId.set(t.recordId,e.items.length),e.items.push(UH(void 0,t));return}e.items[n]=UH(e.items[n],t)}function GH(e){return{...e,items:[...e.items],bySeq:new Map(e.bySeq),byRecordId:new Map(e.byRecordId)}}function KH(e=[],t=!1){let n={items:[],bySeq:new Map,byRecordId:new Map,lastSeqId:0,gap:null,hasMore:t,followTail:!0};for(let t of[...e].sort((e,t)=>e.seqId-t.seqId))n.bySeq.has(t.seqId)||(n.bySeq.set(t.seqId,t),WH(n,t),n.lastSeqId=t.seqId);return n}function qH(e,t,n=!0){if(e.bySeq.has(t.seqId))return e;let r=GH(e);if(r.bySeq.set(t.seqId,t),t.seqId<=r.lastSeqId)return r;if(!n)return WH(r,t),r.lastSeqId=t.seqId,r.gap=null,r;if(t.seqId>r.lastSeqId+1)return r.gap={afterSeqId:r.lastSeqId,beforeSeqId:t.seqId},r;let i=t;for(;i;)WH(r,i),r.lastSeqId=i.seqId,i=r.bySeq.get(r.lastSeqId+1);let a=[...r.bySeq.keys()].filter(e=>e>r.lastSeqId).sort((e,t)=>e-t)[0];return r.gap=a===void 0?null:{afterSeqId:r.lastSeqId,beforeSeqId:a},r}function JH(e,t,n){let r=new Map(e.bySeq);for(let e of t)r.has(e.seqId)||r.set(e.seqId,e);let i=KH([...r.values()],n);return i.followTail=e.followTail,i}function YH(e){return e===null||Number.isNaN(e)?`不可用`:e<1e3?`${Math.round(e)} ms`:`${(e/1e3).toFixed(e<1e4?2:1)} s`}function XH(e){return e===`tool`?(0,G.jsx)(yt,{size:15}):e===`assistant`?(0,G.jsx)(N,{size:15}):e===`context`?(0,G.jsx)(I,{size:15}):e===`user`?(0,G.jsx)(Ie,{size:15}):e===`approval`?(0,G.jsx)(ot,{size:15}):e===`artifact`?(0,G.jsx)(xe,{size:15}):(0,G.jsx)(ae,{size:15})}function ZH(e){return[$H(e),e.status||`未上报`,YH(e.durationMs)].join(` · `)}function QH(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}function $H(e){let t=e.details.name??e.details.model;return typeof t==`string`&&t?t:e.summary}function eU(e,t){let n=QH(e.details.usage)[t];return typeof n==`number`?String(n):`-`}function tU(e){return{user:`User`,context:`Context`,assistant:`Assistant`,tool:`Tool`,approval:`Approval`,artifact:`Artifact`,system:`System`}[e]}function nU(e){return e.category===`user`||e.category===`context`?`input`:e.category===`assistant`?`model`:e.category===`tool`?`tools`:null}function rU(e,t){let n=new URLSearchParams({limit:`100`});return t&&n.set(`invocationId`,t),`/api/v1/sessions/${encodeURIComponent(e)}/events?${n}`}function iU({record:e}){let[t,n]=(0,s.useState)(e.category===`system`?`source`:`summary`);return(0,G.jsxs)(`div`,{className:`trajectory-detail`,children:[(0,G.jsxs)(`header`,{className:`trajectory-detail-heading`,children:[(0,G.jsx)(`strong`,{children:$H(e)}),(0,G.jsxs)(`span`,{children:[tU(e.category),` · `,e.status||`未上报`]})]}),(0,G.jsx)(`div`,{className:`trajectory-detail-tabs`,role:`tablist`,"aria-label":`节点详情`,children:[`summary`,`preview`,`raw`,`source`].map(e=>(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":t===e,onClick:()=>n(e),children:e===`summary`?`Summary`:e===`preview`?`Preview`:e===`raw`?`Raw Events`:`Source`},e))}),t===`summary`&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`Timing`}),(0,G.jsx)(`pre`,{children:JSON.stringify({status:e.status,durationMs:e.durationMs,ttftMs:e.details.ttft_ms??null,startedAt:e.startedAt,endedAt:e.endedAt},null,2)})]}),e.details.usage!==void 0&&(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`Usage`}),(0,G.jsx)(`pre`,{children:JSON.stringify(e.details.usage,null,2)})]})]}),t===`preview`&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`Input`}),(0,G.jsx)(`pre`,{children:JSON.stringify(e.details.args??e.details.input??(e.category===`user`?e.details.text:null),null,2)})]}),(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`Output`}),(0,G.jsx)(`pre`,{children:JSON.stringify(e.details.result??e.details.output??null,null,2)})]}),(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`Reasoning`}),(0,G.jsx)(`pre`,{children:JSON.stringify(e.details.reasoning??null,null,2)})]})]}),t===`raw`&&(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`Raw Events`}),(0,G.jsx)(`pre`,{children:JSON.stringify(e.sourceEvents.map(e=>e.source??e),null,2)})]}),t===`source`&&(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`Source`}),(0,G.jsx)(`pre`,{children:JSON.stringify({recordId:e.recordId,eventIds:e.sourceEvents.map(e=>e.eventId),seqIds:e.sourceEvents.map(e=>e.seqId),turnId:e.turnId,stepId:e.stepId},null,2)})]})]})}function aU({sessionId:e,invocationId:t,onSelectionChange:n}){let[r,i]=(0,s.useState)(()=>KH()),[a,o]=(0,s.useState)(!0),[c,l]=(0,s.useState)(!0),[u,d]=(0,s.useState)(!0),[f,p]=(0,s.useState)(!1),[m,h]=(0,s.useState)(null),[_,v]=(0,s.useState)(!0),[y,b]=(0,s.useState)(``),x=(0,s.useRef)(null);(0,s.useEffect)(()=>{let n=!1,r=null;return v(!0),b(``),i(KH()),h(null),g(rU(e,t)).then(async e=>{if(!e.ok)throw Error(`轨迹加载失败(${e.status})`);return e.json()}).then(a=>{if(n)return;let o=KH(a.items||[],!!a.page?.hasMore);i(o),v(!1);let s=new URLSearchParams({afterSeqId:String(o.lastSeqId)});t&&s.set(`invocationId`,t),r=new EventSource(`/api/v1/sessions/${encodeURIComponent(e)}/events/stream?${s}`),r.addEventListener(`runtime_event`,e=>{try{let n=JSON.parse(e.data);i(e=>qH(e,n,!t))}catch{b(`实时轨迹包含无法解析的事件`)}})}).catch(e=>{n||(v(!1),b(e instanceof Error?e.message:`轨迹加载失败`))}),()=>{n=!0,r?.close()}},[t,e]),(0,s.useEffect)(()=>{if(!r.gap)return;let n=!1,a=r.gap,o=new URLSearchParams({limit:`500`,beforeSeqId:String(a.beforeSeqId)});return t&&o.set(`invocationId`,t),g(`/api/v1/sessions/${encodeURIComponent(e)}/events?${o}`).then(e=>{if(!e.ok)throw Error(`轨迹补拉失败(${e.status})`);return e.json()}).then(e=>{if(n)return;let t=(e.items||[]).filter(e=>e.seqId>a.afterSeqId).sort((e,t)=>e.seqId-t.seqId);i(e=>t.reduce((e,t)=>qH(e,t),e))}).catch(()=>{n||b(`实时轨迹存在序号缺口,补拉失败`)}),()=>{n=!0}},[t,e,r.gap]),(0,s.useEffect)(()=>{let e=x.current;e&&r.followTail&&(e.scrollTop=e.scrollHeight)},[r.followTail,r.items]);let S=(0,s.useCallback)(async()=>{let n=Math.min(...r.bySeq.keys());if(!Number.isFinite(n))return;let a=new URLSearchParams({limit:`100`,beforeSeqId:String(n)});t&&a.set(`invocationId`,t);let o=await g(`/api/v1/sessions/${encodeURIComponent(e)}/events?${a}`);if(!o.ok){b(`更早轨迹加载失败`);return}let s=await o.json();i(e=>JH(e,s.items||[],s.page.hasMore))},[t,e,r.bySeq]),C=(0,s.useMemo)(()=>{let e=new Map,t=new Map;for(let n of r.items){if(n.recordId.startsWith(`turn:`)&&n.turnId){let t=n.details.turn_index;e.set(n.turnId,typeof t==`number`?`Turn ${t}`:n.summary)}if(n.recordId.startsWith(`step:`)&&n.stepId){let e=n.details.step_index;t.set(n.stepId,typeof e==`number`?`Step ${e}`:n.summary)}}let n=r.items.filter(e=>e.category!==`system`),i=u?n:n.filter(e=>e.category!==`tool`),a=new Map;for(let t of i){let n=t.turnId||`run`,r=t.turnId?e.get(t.turnId)||`Turn`:`Run`,i=a.get(n)||{id:n,label:r,items:[]};i.items.push(t),a.set(n,i)}let o=Math.max(0,...r.items.map(e=>e.durationMs||0));return{groups:[...a.values()],semanticItems:n,systemItems:r.items.filter(e=>e.category===`system`),steps:t,turns:e.size,hasUsage:n.some(e=>Object.keys(QH(e.details.usage)).length>0),duration:o,calls:n.filter(e=>e.category===`tool`).length}},[u,r.items]),w=m&&r.items.find(e=>e.recordId===m)||null;(0,s.useEffect)(()=>{n?.(w)},[n,w]);let T=(0,s.useMemo)(()=>{let e=C.semanticItems.filter(e=>nU(e)&&(u||e.category!==`tool`)),t=Math.min(...e.map(e=>e.startedAt)),n=Math.max(...e.map(e=>e.endedAt??e.startedAt));return{items:e,start:t,span:Math.max(n-t,.001)}},[u,C.semanticItems]);return(0,G.jsxs)(`section`,{className:`trajectory-view`,"aria-label":`实时轨迹`,children:[(0,G.jsxs)(`header`,{className:`trajectory-toolbar`,children:[(0,G.jsxs)(`div`,{className:`segmented-control`,"aria-label":`轨迹显示控制`,children:[(0,G.jsx)(`button`,{type:`button`,className:a?`selected`:``,"aria-pressed":a,disabled:T.items.length<=1,onClick:()=>o(e=>!e),children:`Duration`}),(0,G.jsx)(`button`,{type:`button`,className:c?`selected`:``,"aria-pressed":c,onClick:()=>l(e=>!e),children:`Turns`}),(0,G.jsx)(`button`,{type:`button`,className:u?`selected`:``,"aria-pressed":u,disabled:C.calls===0,onClick:()=>d(e=>!e),children:`Calls`})]}),(0,G.jsxs)(`strong`,{className:`trajectory-summary-value`,children:[C.turns,` Turn · `,C.calls,` Call · `,YH(C.duration)]}),r.hasMore&&(0,G.jsxs)(`button`,{className:`button tertiary small`,type:`button`,onClick:()=>void S(),children:[(0,G.jsx)(ne,{size:14}),(0,G.jsx)(`span`,{children:`加载更早`})]})]}),y&&(0,G.jsx)(`div`,{className:`trajectory-status error`,children:y}),_&&(0,G.jsx)(`div`,{className:`trajectory-status`,children:`正在读取轨迹...`}),!_&&!C.semanticItems.length&&!C.systemItems.length&&(0,G.jsx)(`div`,{className:`trajectory-status`,children:`当前 Session 没有轨迹事件。`}),!!T.items.length&&(0,G.jsx)(`div`,{className:`trajectory-timeline`,"aria-label":`轨迹时间带`,"data-mode":a?`duration`:`equal`,children:[`input`,`model`,`tools`].map(e=>(0,G.jsxs)(`div`,{className:`trajectory-lane`,children:[(0,G.jsx)(`span`,{children:e===`input`?`Input`:e===`model`?`Model`:`Tools`}),(0,G.jsx)(`div`,{children:T.items.filter(t=>nU(t)===e).map((e,t,n)=>{let r=a?(e.startedAt-T.start)/T.span*100:t/Math.max(n.length,1)*100,i=a?Math.max(2,((e.endedAt??e.startedAt)-e.startedAt)/T.span*100):100/Math.max(n.length,1);return(0,G.jsx)(`i`,{"data-category":e.category,title:$H(e),style:{left:`${r}%`,width:`${Math.min(i,100-r)}%`}},e.recordId)})})]},e))}),(0,G.jsxs)(`div`,{ref:x,className:`trajectory-ledger`,role:`log`,"aria-label":`轨迹事件`,onScroll:e=>{let t=e.currentTarget,n=t.scrollHeight-t.scrollTop-t.clientHeight<48;i(e=>e.followTail===n?e:{...e,followTail:n})},children:[!!C.semanticItems.length&&(0,G.jsxs)(`div`,{className:`trajectory-column-header`,"data-usage":C.hasUsage,"aria-hidden":`true`,children:[(0,G.jsx)(`span`,{children:`Event`}),C.hasUsage&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{children:`Input Tokens`}),(0,G.jsx)(`span`,{children:`Output Tokens`}),(0,G.jsx)(`span`,{children:`Think`})]}),(0,G.jsx)(`span`,{children:`Time`})]}),C.groups.map(e=>(0,G.jsxs)(s.Fragment,{children:[(0,G.jsxs)(`div`,{className:`trajectory-turn-header`,children:[(0,G.jsx)(`strong`,{children:e.label}),(0,G.jsxs)(`span`,{children:[e.items.length,` nodes`]})]}),c&&e.items.map((t,n)=>{let r=t.stepId?C.steps.get(t.stepId)||`Step`:``,i=n>0?e.items[n-1]:null,a=i?.stepId?C.steps.get(i.stepId)||`Step`:``;return(0,G.jsxs)(s.Fragment,{children:[r&&r!==a&&(0,G.jsxs)(`div`,{className:`trajectory-group-label`,children:[e.label,` · `,r]}),(0,G.jsxs)(`button`,{type:`button`,className:`trajectory-row`,"data-usage":C.hasUsage,"data-category":t.category,"data-status":t.status||`unknown`,"aria-pressed":t.recordId===m,"aria-label":ZH(t),onClick:()=>h(t.recordId),children:[(0,G.jsx)(`span`,{className:`trajectory-row-icon`,children:XH(t.category)}),(0,G.jsxs)(`span`,{className:`trajectory-row-copy`,children:[(0,G.jsx)(`strong`,{children:$H(t)}),(0,G.jsxs)(`small`,{children:[tU(t.category),` · `,t.status||`未上报`]})]}),C.hasUsage&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`trajectory-row-metric`,children:eU(t,`input_tokens`)}),(0,G.jsx)(`span`,{className:`trajectory-row-metric`,children:eU(t,`output_tokens`)}),(0,G.jsx)(`span`,{className:`trajectory-row-metric`,children:eU(t,`reasoning_tokens`)})]}),(0,G.jsx)(`span`,{className:`trajectory-row-duration`,children:YH(t.durationMs)})]})]},t.recordId)})]},e.id)),!!C.systemItems.length&&(0,G.jsxs)(`div`,{className:`trajectory-system-events`,children:[(0,G.jsxs)(`button`,{type:`button`,onClick:()=>p(e=>!e),"aria-expanded":f,children:[(0,G.jsx)(k,{size:14}),`System Events (`,C.systemItems.length,`)`]}),f&&C.systemItems.map(e=>(0,G.jsxs)(`button`,{type:`button`,className:`trajectory-system-row`,"aria-pressed":e.recordId===m,onClick:()=>h(e.recordId),children:[e.type,` · #`,e.lastSeqId]},e.recordId))]})]}),!r.followTail&&(0,G.jsx)(`button`,{className:`button secondary small trajectory-latest`,type:`button`,onClick:()=>{let e=x.current;e&&(e.scrollTop=e.scrollHeight),i(e=>({...e,followTail:!0}))},children:`回到最新`})]})}function oU(e,t=18){let n=String(e||``);return n.length>t?`${n.slice(0,t)}…`:n}function sU(e,t=`-`){return e==null||e===``?t:String(e)}function cU(e){let t=String(e||``).toUpperCase();return t===`COMPLETED`||t===`SUCCEEDED`||t===`OK`?`成功`:t===`RUNNING`?`运行中`:t===`PAUSED`?`已暂停`:t===`FAILED`||t===`ERROR`||t===`INTERNAL`?`失败`:t===`CANCELLED`?`已取消`:t||`未知`}function lU(e){if(e==null||Number.isNaN(Number(e)))return`未上报`;let t=Number(e);return t<1?`${t.toFixed(3)} ms`:t<1e3?`${Math.round(t)} ms`:`${(t/1e3).toFixed(t<1e4?2:1)} s`}function uU(e){return e==null?`未上报`:new Intl.NumberFormat(`zh-CN`).format(Number(e))}function dU(e){if(e==null||typeof e==`boolean`)return null;let t=Number(e);return Number.isFinite(t)&&t>=0?t:null}function fU(e){let t=dU(e.totalTokens);if(t!==null&&e.usageCompleteness?.totalTokens!==!1)return t;let n=dU(e.inputTokens),r=dU(e.outputTokens);return n!==null&&r!==null&&e.usageCompleteness?.inputTokens!==!1&&e.usageCompleteness?.outputTokens!==!1?n+r:null}function pU(e){return[e.inputTokens,e.outputTokens,e.totalTokens].some(e=>dU(e)!==null)}function mU(e){let t=fU(e);return t===null?pU(e)?`部分上报`:`未上报`:uU(t)}function hU(e){let t=dU(e.inputTokens),n=dU(e.outputTokens);return`${t===null?`—`:`${e.usageCompleteness?.inputTokens===!1?`≥`:``}${uU(t)}`} 输入 · ${n===null?`—`:`${e.usageCompleteness?.outputTokens===!1?`≥`:``}${uU(n)}`} 输出`}function gU(e){let t=fU(e);if(t!==null)return uU(t);if(dU(e.totalTokens)!==null)return`部分上报`;let n=dU(e.inputTokens),r=dU(e.outputTokens);return n!==null&&r!==null||n!==null&&e.usageCompleteness?.inputTokens===!1||r!==null&&e.usageCompleteness?.outputTokens===!1?`部分上报`:n===null?r===null?`未上报`:`${uU(r)} 输出`:`${uU(n)} 输入`}function _U(e){try{let t=Number(BigInt(String(e||`0`))/1000000n);return t?new Date(t).toISOString():`-`}catch{return`-`}}function vU(e){if(!e)return`刚刚`;let t=new Date(e);return Number.isNaN(t.getTime())?`未知时间`:new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(t)}function yU(e){try{return JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t,2)}catch{return String(e)}}function bU(e){return e==null?`-`:typeof e==`object`?yU(e):String(e)}var xU={container:`otlp-json`,childFieldsContainer:`otlp-json-children`,basicChildStyle:`otlp-json-row`,collapseIcon:`otlp-json-toggle otlp-json-collapse`,expandIcon:`otlp-json-toggle otlp-json-expand`,collapsedContent:`otlp-json-collapsed`,label:`otlp-json-key`,clickableLabel:`otlp-json-key otlp-json-key-clickable`,nullValue:`otlp-json-null`,undefinedValue:`otlp-json-null`,numberValue:`otlp-json-number`,stringValue:`otlp-json-string`,booleanValue:`otlp-json-boolean`,otherValue:`otlp-json-other`,punctuation:`otlp-json-punctuation`,quotesForFieldNames:!0,stringifyStringValues:!0,ariaLables:{collapseJson:`收起 JSON 节点`,expandJson:`展开 JSON 节点`}},SU=[`agentkit.event.text`,`agentkit.event.delta`,`agentkit.event.content`,`agentkit.event.output`,`agentkit.event.args`,`agentkit.event.command`,`agentkit.event.input`,`agentkit.event.prompt`];function CU(e){if(!e)return``;for(let t of SU){let n=e[t];if(typeof n==`string`&&n.trim())return n;if(typeof n==`number`||typeof n==`boolean`)return String(n)}return``}function wU(e){let t=[],n=``,r=null,i=0,a=(e=!1)=>{r&&n.trim()&&t.push({kind:r,text:n,segments:i,final:e}),n=``,i=0},o={};for(let t of e||[]){let e=CU(t.attributes);if(t.name===`thinking.delta`||t.name===`message.delta`){let o=t.name===`thinking.delta`?`thinking`:`message`;r!==o&&(a(),r=o),n+=e,i+=1}else if(t.name===`thinking.completed`||t.name===`message.completed`){let n=t.name===`thinking.completed`?`thinking`:`message`;e&&(o[n]=e)}}a();for(let e of[`thinking`,`message`]){let n=o[e];if(!n)continue;let r=t.findIndex(t=>t.kind===e);r>=0?t[r]={kind:e,text:n,segments:t[r].segments,final:!0}:t.push({kind:e,text:n,segments:1,final:!0})}return t}async function TU(e){try{await navigator.clipboard.writeText(e);return}catch{}let t=document.createElement(`textarea`);t.value=e,document.body.appendChild(t),t.select();try{document.execCommand(`copy`)}catch{}t.remove()}function EU({text:e,className:t}){let[n,r]=(0,s.useState)(!1);return(0,G.jsx)(`button`,{type:`button`,className:`copy-btn ${t||``}`,title:`复制`,onClick:t=>{t.stopPropagation(),TU(e),r(!0),setTimeout(()=>r(!1),1500)},children:n?(0,G.jsx)(V,{size:12,style:{color:`var(--success)`}}):(0,G.jsx)(me,{size:12})})}function DU({label:e,text:t,tone:n,icon:r,meta:i}){let[a,o]=(0,s.useState)(!1),c=t.length>600,l=a||!c?t:`${t.slice(0,600)}…`;return(0,G.jsxs)(`div`,{className:`io-block io-${n}`,children:[(0,G.jsxs)(`div`,{className:`io-head`,children:[(0,G.jsxs)(`span`,{className:`io-label`,children:[r,e]}),i&&(0,G.jsx)(`span`,{className:`io-meta`,children:i}),(0,G.jsx)(`span`,{style:{flex:1}}),(0,G.jsx)(EU,{text:t,className:`copy-visible`})]}),(0,G.jsx)(`div`,{className:`io-text`,children:l}),c&&(0,G.jsx)(`button`,{type:`button`,className:`io-expand`,onClick:()=>o(!a),children:a?`收起`:`展开全文(${t.length} 字符)`})]})}function OU({span:e}){let t=e.attributes||{},n=t[`agentkit.tool.input`],r=t[`agentkit.tool.output`],i=wU(e.events||[]);return n!=null&&n!==``||r!=null&&r!==``||i.length>0?(0,G.jsxs)(`div`,{className:`io-stack`,children:[n!=null&&n!==``&&(0,G.jsx)(DU,{label:`工具输入`,text:bU(n),tone:`tool`}),r!=null&&r!==``&&(0,G.jsx)(DU,{label:`工具输出`,text:bU(r),tone:`tool`}),i.map((e,t)=>(0,G.jsx)(DU,{label:e.kind===`message`?`模型输出`:`思考过程`,text:e.text,tone:e.kind,icon:e.kind===`message`?(0,G.jsx)(Ie,{size:12}):(0,G.jsx)(R,{size:12}),meta:e.final?`完整`:`${e.segments} 段增量`},t))]}):(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:`该 Span 没有捕获内容(可在 设置 → 可观测 开启 Trace 内容记录)。`})})}function kU({values:e}){let t=Object.entries(e||{}).sort(([e],[t])=>e.localeCompare(t));return t.length?(0,G.jsx)(`dl`,{className:`trace-kv-list`,children:t.map(([e,t])=>(0,G.jsxs)(`div`,{className:`trace-kv-row`,children:[(0,G.jsx)(`dt`,{className:`trace-kv-key`,children:e}),(0,G.jsx)(`dd`,{className:`trace-kv-value`,children:bU(t)}),(0,G.jsx)(EU,{text:bU(t),className:`trace-kv-copy`})]},e))}):(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:`没有可展示的字段。`})})}var AU=[{id:`spans`,label:`Spans`},{id:`trajectory`,label:`轨迹`},{id:`attributes`,label:`Attributes`},{id:`events`,label:`Events`},{id:`resource`,label:`Resource`},{id:`raw`,label:`Raw OTLP`}],jU=50;function MU({refreshTick:e}){let[t,n]=(0,s.useState)([]),[r,i]=(0,s.useState)([]),[a,o]=(0,s.useState)(``),[c,l]=(0,s.useState)(``),[u,d]=(0,s.useState)(``),[f,p]=(0,s.useState)(`24h`),[m,h]=(0,s.useState)(null),[_,v]=(0,s.useState)(null),[y,b]=(0,s.useState)(null),[x,S]=(0,s.useState)(`spans`),[C,w]=(0,s.useState)(null),[T,E]=(0,s.useState)(null),[D,j]=(0,s.useState)(!1),[M,N]=(0,s.useState)(!0),[P,F]=(0,s.useState)(!1),[I,L]=(0,s.useState)(!1),[R,z]=(0,s.useState)(0),[B,V]=(0,s.useState)([null]),[ee,te]=(0,s.useState)(null),[U,re]=(0,s.useState)(0),[ie,ae]=(0,s.useState)(!0),[oe,se]=(0,s.useState)(``),ce=(0,s.useRef)(0),le=(0,s.useRef)(0);(0,s.useEffect)(()=>{g(`/api/v1/agents?limit=100`).then(e=>e.json()).then(e=>{i((e.items||[]).map(e=>({id:e.metadata.id,name:e.metadata.name,appearance:e.metadata.appearance})))}).catch(()=>{})},[e]);let ue=(0,s.useCallback)(async e=>{let t=++ce.current;try{let n=await g(`/api/v1/traces/${encodeURIComponent(e)}`).then(e=>e.json());if(ce.current!==t)return;v(n),b(n.rootSpanId||n.spans?.[0]?.spanId||null),S(`spans`),w(null),E(null),N(!0),F(!1),L(!1)}catch{}},[]),de=(0,s.useCallback)(async e=>{let t=++le.current,r=new URLSearchParams({limit:String(jU),sort:`startedAt:desc`});c&&r.set(`agentId`,c),u&&r.set(`status`,u),a.trim()&&r.set(`query`,a.trim()),e&&r.set(`cursor`,e),ae(!0),se(``);try{let e=await g(`/api/v1/traces?${r}`);if(!e.ok)throw Error(`Trace 列表加载失败(${e.status})`);let i=await e.json();if(le.current!==t)return;let a=i.items||[];n(a),te(i.nextCursor||null),re(Number(i.total)||0)}catch(e){if(le.current!==t)return;n([]),te(null),re(0),se(e instanceof Error?e.message:`Trace 列表加载失败`)}finally{le.current===t&&ae(!1)}},[c,a,u]);(0,s.useEffect)(()=>{V([null]),z(0),de(null)},[de,e]),(0,s.useEffect)(()=>{let e=new URLSearchParams({range:f});c&&e.set(`agentId`,c),u&&e.set(`status`,u),g(`/api/v1/traces/overview?${e}`).then(e=>e.ok?e.json():Promise.reject(Error())).then(h).catch(()=>h(null))},[c,f,e,u]),(0,s.useEffect)(()=>{if(x!==`raw`||!_||T)return;let e=_.traceId;j(!0),g(`/api/v1/traces/${encodeURIComponent(e)}/otlp`).then(e=>e.json()).then(e=>{E(e),j(!1)}).catch(()=>j(!1))},[x,_,T]);let W=_?.spans?.find(e=>e.spanId===y)||null,fe=(0,s.useMemo)(()=>{let e=_?.spans||[],t=new Map;e.forEach(e=>{let n=e.parentSpanId||``;t.has(n)||t.set(n,[]),t.get(n).push(e)}),t.forEach(e=>e.sort((e,t)=>{try{return Number(BigInt(e.startTimeUnixNano||`0`)-BigInt(t.startTimeUnixNano||`0`))}catch{return 0}}));let n=[],r=new Set,i=(e,a)=>{!e||r.has(e.spanId)||(r.add(e.spanId),n.push({span:e,depth:a}),(t.get(e.spanId)||[]).forEach(e=>i(e,a+1)))};return i(e.find(e=>e.spanId===_?.rootSpanId)||e.find(e=>!e.parentSpanId),0),e.forEach(e=>i(e,+!!e.parentSpanId)),n},[_]),pe=fe.find(e=>e.span.spanId===_?.rootSpanId)?.span||fe[0]?.span,he=(0,s.useMemo)(()=>{if(!pe)return{start:0n,duration:1};try{let e=BigInt(pe.startTimeUnixNano||`0`),t=BigInt(pe.endTimeUnixNano||pe.startTimeUnixNano||`0`);return{start:e,duration:Number(t>e?t-e:1n)}}catch{return{start:0n,duration:1}}},[pe]),ge=_?.metrics||{durationMs:_?.durationMs,inputTokens:_?.inputTokens,outputTokens:_?.outputTokens,totalTokens:_?.totalTokens,usageReported:_?.usageReported},_e=r.find(e=>e.id===_?.agentId),ve=(0,s.useMemo)(()=>[{id:`status`,header:`状态`,width:130,cell:e=>(0,G.jsxs)(`span`,{className:`trace-table-status ${e.status}`,title:e.status,children:[(0,G.jsx)(`span`,{className:`trace-list-status ${e.status}`}),cU(e.status)]})},{id:`identity`,header:`Agent / Run`,minWidth:270,cell:e=>{let t=r.find(t=>t.id===e.agentId),n=t?.name||e.agentId||`unknown-agent`;return(0,G.jsxs)(`button`,{type:`button`,className:`trace-table-open trace-table-agent`,onClick:()=>ue(e.traceId),children:[(0,G.jsx)(Ct,{name:n,appearance:t?.appearance,size:`xs`}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:n}),(0,G.jsx)(`small`,{children:oU(e.runId||e.traceId,32)})]})]})}},{id:`startedAt`,header:`开始时间`,minWidth:140,cell:e=>vU(e.startedAt)},{id:`duration`,header:`耗时`,width:110,cell:e=>lU(e.durationMs)},{id:`model`,header:`模型`,minWidth:140,cell:e=>e.model||`-`},{id:`tokens`,header:`Token`,width:110,cell:e=>gU(e)},{id:`spans`,header:`Span`,width:80,cell:e=>e.spanCount||0},{id:`actions`,header:(0,G.jsx)(`span`,{className:`sr-only`,children:`操作`}),width:110,className:`actions-column`,headerClassName:`actions-column`,cell:e=>(0,G.jsx)(`button`,{type:`button`,className:`button tertiary small`,onClick:()=>ue(e.traceId),children:`查看详情`})}],[r,ue]),ye=(0,s.useCallback)(()=>{if(_?.traceId){ue(_.traceId);return}de(B[R]||null)},[_?.traceId,B,R,de,ue]),be=(0,s.useCallback)(()=>{if(R<=0)return;let e=R-1;z(e),de(B[e]||null)},[B,R,de]),xe=(0,s.useCallback)(()=>{if(!ee)return;let e=R+1;V(t=>{let n=t.slice(0,e);return n[e]=ee,n}),z(e),de(ee)},[R,de,ee]);async function Se(){!_?.traceId||!_.rootSpanId||(await TU(`00-${_.traceId}-${_.rootSpanId}-01`),J(`traceparent 已复制`,oU(_.traceId,24)))}async function Ce(){if(!_)return;let e=T;e||(e=await g(`/api/v1/traces/${encodeURIComponent(_.traceId)}/otlp`).then(e=>e.json()).catch(()=>null),e&&E(e)),e&&(await TU(JSON.stringify(e,null,2)),J(`Raw OTLP 已复制`,oU(_.traceId,24)))}async function we(){if(!_?.sessionId)return;let e=window.showSaveFilePicker;if(!e){J(`浏览器不支持导出`,`请使用支持文件保存的 Chromium 浏览器。`,`error`);return}let t;try{t=await e({suggestedName:`${_.sessionId}-${_.runId||`session`}-session-log.jsonl`,types:[{description:`Session Log`,accept:{"application/x-ndjson":[`.jsonl`]}}]})}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)return;J(`Session Log 导出失败`,e instanceof Error?e.message:`无法选择保存位置`,`error`);return}try{let e=await g(`/api/v1/sessions/${encodeURIComponent(_.sessionId)}:export`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filename:t.name,invocationId:_.runId||void 0,download:!0})});if(!e.ok)throw Error(`导出失败(${e.status})`);let n=await t.createWritable();await n.write(await e.blob()),await n.close();let r=e.headers.get(`X-Session-Event-Count`)||`0`;J(`Session Log 已导出`,`${t.name} · ${r} 条事件`)}catch(e){J(`Session Log 导出失败`,e instanceof Error?e.message:`未知错误`,`error`)}}return(0,G.jsxs)(`div`,{className:`page-container observability-page`,id:`traceExplorer`,"data-layout":`workbench`,children:[(0,G.jsxs)(xd,{children:[(0,G.jsxs)(`div`,{className:`search-field header-search-field`,children:[(0,G.jsx)(tt,{size:14}),(0,G.jsx)(`input`,{type:`search`,"aria-label":`搜索 Trace、Run 或 Session`,placeholder:`搜索 Trace、Run 或 Session`,value:a,onChange:e=>o(e.target.value)})]}),(0,G.jsxs)(`div`,{className:`segmented-control compact`,"aria-label":`可观测时间范围`,children:[(0,G.jsx)(`button`,{type:`button`,className:f===`24h`?`selected`:``,onClick:()=>p(`24h`),children:`24 小时`}),(0,G.jsx)(`button`,{type:`button`,className:f===`7d`?`selected`:``,onClick:()=>p(`7d`),children:`7 天`})]})]}),_&&(0,G.jsxs)(Sd,{children:[(0,G.jsxs)(`button`,{className:`button tertiary`,type:`button`,onClick:()=>void we(),children:[(0,G.jsx)(k,{size:15}),(0,G.jsx)(`span`,{children:`导出 Session Log`})]}),(0,G.jsxs)(`button`,{className:`button tertiary`,type:`button`,onClick:()=>{ce.current+=1,v(null),b(null),F(!1),L(!1)},children:[(0,G.jsx)(A,{size:15}),(0,G.jsx)(`span`,{children:`返回 Trace 列表`})]})]}),(0,G.jsxs)(`div`,{className:`data-page-body observability-body`,children:[(0,G.jsx)(NU,{overview:m,range:f}),!_&&(0,G.jsxs)(`div`,{className:`trace-toolbar`,"aria-label":`Trace 筛选`,children:[(0,G.jsx)(Fh,{className:`compact-select`,ariaLabel:`按 Agent 筛选`,value:c||`__all__`,options:[{value:`__all__`,label:`全部 Agent`},...r.map(e=>({value:e.id,label:e.name}))],onValueChange:e=>l(e===`__all__`?``:e)}),(0,G.jsx)(Fh,{className:`compact-select`,ariaLabel:`按状态筛选`,value:u||`__all__`,options:[{value:`__all__`,label:`全部状态`},{value:`COMPLETED`,label:`成功`},{value:`FAILED`,label:`失败`},{value:`CANCELLED`,label:`已取消`}],onValueChange:e=>d(e===`__all__`?``:e)})]}),_&&(0,G.jsxs)(`section`,{className:`stat-strip`,"aria-label":`Trace 指标`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Trace 状态`}),(0,G.jsx)(`strong`,{children:_?cU(_.status):`未选择`}),(0,G.jsx)(`small`,{children:_?`${_.spans?.length||0} Span · ${_.target?.name||`本地工作区`}`:`选择一条 Trace 查看`})]}),(0,G.jsxs)(`div`,{className:`emphasis`,"data-state":_?.status===`FAILED`?`failed`:_?.status===`COMPLETED`?`ready`:`running`,children:[(0,G.jsx)(`span`,{children:`总耗时`}),(0,G.jsx)(`strong`,{children:_?lU(ge.durationMs):`未上报`}),(0,G.jsx)(`small`,{children:_?ge.durationMs===null||ge.durationMs===void 0?`Runtime 未上报`:ge.durationSource===`runtime`?`Runtime 精确上报`:`Studio 时钟回退`:`等待 Runtime 上报`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Token`}),(0,G.jsx)(`strong`,{children:_?mU(ge):`未上报`}),(0,G.jsx)(`small`,{children:_&&pU(ge)?hU(ge):`输入 / 输出`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`模型`}),(0,G.jsx)(`strong`,{children:_?.model||`-`}),(0,G.jsx)(`small`,{children:_?`${_.runtimeType||`unknown`} · ${ge.usageSource||`Usage 未上报`}`:`Runtime`})]})]}),!_&&(0,G.jsxs)(`section`,{className:`trace-list-page`,"aria-label":`Trace 列表`,children:[(0,G.jsx)(`header`,{className:`trace-list-page-header`,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`Trace`}),(0,G.jsxs)(`span`,{children:[U,` 条`]})]})}),(0,G.jsx)(_m,{columns:ve,data:t,getRowId:e=>e.traceId,caption:`Trace 列表`,minWidth:1060,loading:ie,error:oe,onRetry:ye,onRowActivate:e=>ue(e.traceId),rowAriaLabel:e=>`${e.agentId||`Agent`} ${e.runId||e.traceId}`,empty:{icon:(0,G.jsx)(O,{size:20}),title:`还没有 Trace`,description:`运行一次 Agent 后在这里查看调用链,或调整筛选条件。`},pagination:{pageIndex:R,pageSize:jU,total:U,hasNextPage:!!ee,onPreviousPage:be,onNextPage:xe}})]}),_&&(0,G.jsxs)(`div`,{className:`trace-workbench detail-route${P?` detail-expanded`:``}${I?` detail-collapsed`:``}`,children:[(0,G.jsxs)(`aside`,{className:`trace-run-panel`,"aria-label":`本页 Trace`,children:[(0,G.jsx)(`div`,{className:`trace-panel-header`,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`Traces`}),(0,G.jsxs)(`span`,{children:[U,` 条结果`]})]})}),(0,G.jsx)(`div`,{className:`trace-run-list`,children:t.map(e=>{let t=r.find(t=>t.id===e.agentId);return(0,G.jsxs)(`button`,{type:`button`,className:e.traceId===_.traceId?`active`:``,onClick:()=>ue(e.traceId),children:[(0,G.jsxs)(`span`,{className:`trace-run-identity`,children:[(0,G.jsx)(Ct,{name:t?.name||e.agentId||`Agent`,appearance:t?.appearance,size:`xs`}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:t?.name||e.agentId||`Agent`}),(0,G.jsx)(`small`,{children:oU(e.runId||e.traceId,22)})]})]}),(0,G.jsxs)(`span`,{className:`trace-run-meta`,children:[(0,G.jsx)(`span`,{className:`mono`,children:lU(e.durationMs)}),(0,G.jsx)(`span`,{className:`badge`,"data-state":e.status===`FAILED`?`failed`:e.status===`COMPLETED`?`ready`:`running`,title:e.status,children:cU(e.status)})]})]},e.traceId)})})]}),(0,G.jsxs)(`section`,{className:`trace-span-panel`,"aria-label":`Span 时间瀑布`,children:[(0,G.jsxs)(`div`,{className:`trace-panel-header trace-span-header`,children:[(0,G.jsx)(Ct,{name:_e?.name||_.agentId||`Agent`,appearance:_e?.appearance,size:`sm`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:_?`${_e?.name||_.agentId||`Agent`} · ${_.runId||`Run`}`:`选择一条 Trace`}),(0,G.jsx)(`span`,{className:`mono`,children:_?.traceId||`-`})]}),(0,G.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:!_,onClick:Se,children:[(0,G.jsx)(me,{size:14}),(0,G.jsx)(`span`,{children:`复制 traceparent`})]}),I&&(0,G.jsxs)(`button`,{className:`button secondary small trace-detail-reopen`,type:`button`,onClick:()=>L(!1),children:[(0,G.jsx)(ne,{size:14}),(0,G.jsx)(`span`,{children:`展开右侧详情`})]})]}),(0,G.jsxs)(`div`,{className:`trace-axis`,"aria-hidden":`true`,children:[(0,G.jsx)(`span`,{children:`Span`}),(0,G.jsx)(`span`,{children:`0%`}),(0,G.jsx)(`span`,{children:`50%`}),(0,G.jsx)(`span`,{children:`100%`}),(0,G.jsx)(`span`,{children:`耗时`})]}),(0,G.jsx)(`div`,{className:`trace-span-tree`,children:fe.length===0?(0,G.jsxs)(`div`,{className:`trace-stage-empty`,children:[(0,G.jsx)(Ve,{size:20}),(0,G.jsx)(`p`,{children:_?`该 OTLP Trace 没有 Span。`:`选择左侧 Trace,查看 Agent、模型和 Tool 的父子关系与耗时。`})]}):fe.map(({span:e,depth:t})=>{let n=0,r=0;try{let t=BigInt(e.startTimeUnixNano||`0`),i=BigInt(e.endTimeUnixNano||e.startTimeUnixNano||`0`);n=Math.max(0,Math.min(100,Number(t-he.start)/he.duration*100)),r=Math.max(0,Math.min(100-n,Number(i-t)/he.duration*100))}catch{}return(0,G.jsxs)(`button`,{type:`button`,className:`trace-span-row${e.spanId===y?` active`:``}`,"data-kind":e.kind,"data-status":e.status,onClick:()=>{b(e.spanId),S(`spans`)},children:[(0,G.jsxs)(`span`,{className:`trace-span-name`,children:[(0,G.jsx)(`span`,{className:`trace-span-guides`,children:Array.from({length:t},(e,t)=>(0,G.jsx)(`span`,{className:`trace-span-guide`},t))}),(0,G.jsx)(`span`,{className:`trace-span-status ${e.status}`}),(0,G.jsxs)(`span`,{className:`trace-span-name-copy`,children:[(0,G.jsx)(`strong`,{children:e.name}),(0,G.jsxs)(`span`,{children:[e.kind,` · `,oU(e.spanId,16)]})]})]}),(0,G.jsx)(`span`,{className:`trace-waterfall-track`,children:(0,G.jsx)(`span`,{className:`trace-waterfall-bar`,style:{"--span-left":`${n.toFixed(3)}%`,"--span-width":`${r.toFixed(3)}%`}})}),(0,G.jsx)(`span`,{className:`trace-span-duration`,children:lU(e.durationMs)})]},e.spanId)})})]}),(0,G.jsxs)(`aside`,{className:`trace-detail-panel${I?` is-collapsed`:``}`,"aria-label":`Span 详情`,children:[(0,G.jsxs)(`div`,{className:`trace-panel-header`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:W?sU(W.name):`Span 详情`}),(0,G.jsx)(`span`,{children:W?`${sU(W.kind)} · ${cU(W.status)}`:`尚未选择 Span`})]}),(0,G.jsxs)(`div`,{className:`trace-detail-actions`,children:[!I&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:!_,onClick:Ce,children:[(0,G.jsx)(me,{size:14}),(0,G.jsx)(`span`,{children:`复制 Raw OTLP`})]}),(0,G.jsxs)(`button`,{className:`button tertiary small trace-detail-expand`,type:`button`,"aria-pressed":P,title:P?`退出放大详情`:`放大详情`,onClick:()=>F(!P),children:[P?(0,G.jsx)(Re,{size:14}):(0,G.jsx)(Pe,{size:14}),(0,G.jsx)(`span`,{children:P?`退出放大`:`放大详情`})]})]}),(0,G.jsxs)(`button`,{className:`button tertiary small trace-detail-collapse`,type:`button`,"aria-expanded":!I,title:I?`展开 Trace 详情`:`收起 Trace 详情`,onClick:()=>{L(e=>!e),I||F(!1)},children:[I?(0,G.jsx)(ne,{size:14}):(0,G.jsx)(H,{size:14}),(0,G.jsx)(`span`,{children:I?`展开详情`:`收起详情`})]})]})]}),!I&&(0,G.jsx)(`div`,{className:`trace-tabs`,role:`tablist`,"aria-label":`Trace 详情分类`,children:AU.map(e=>(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":x===e.id,className:x===e.id?`active`:``,onClick:()=>S(e.id),children:e.label},e.id))}),!I&&(0,G.jsxs)(`div`,{className:`trace-detail-body${x===`raw`?` raw-active`:``}`,children:[x===`trajectory`&&(0,G.jsxs)(`div`,{className:`trace-trajectory-layout`,children:[(0,G.jsx)(aU,{sessionId:_.sessionId,invocationId:_.runId||void 0,onSelectionChange:w}),(0,G.jsx)(`aside`,{className:`trajectory-selection`,"aria-label":`轨迹详情`,children:C?(0,G.jsx)(iU,{record:C}):(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:`选择一条轨迹事件查看详情。`})})})]}),x!==`raw`&&x!==`trajectory`&&(0,G.jsxs)(`div`,{children:[!W&&(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:`选择一个 Span 查看标准属性。`})}),W&&x===`spans`&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(OU,{span:W}),(0,G.jsxs)(`dl`,{className:`trace-detail-grid`,style:{marginTop:14},children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Trace ID`}),(0,G.jsx)(`dd`,{children:_?.traceId})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Span ID`}),(0,G.jsx)(`dd`,{children:W.spanId})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Parent`}),(0,G.jsx)(`dd`,{children:W.parentSpanId||`Root`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Kind`}),(0,G.jsx)(`dd`,{children:W.kind})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`状态`}),(0,G.jsx)(`dd`,{title:W.status,children:cU(W.status)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`开始`}),(0,G.jsx)(`dd`,{children:_U(W.startTimeUnixNano)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`耗时`}),(0,G.jsx)(`dd`,{children:lU(W.durationMs)})]})]})]}),W&&x===`attributes`&&(0,G.jsx)(kU,{values:W.attributes||{}}),W&&x===`events`&&(0,G.jsx)(IU,{events:W.events||[]}),W&&x===`resource`&&(0,G.jsx)(kU,{values:{..._?.resource||{},"otel.scope.name":_?.scope?.name,"otel.scope.version":_?.scope?.version}})]}),(0,G.jsxs)(`div`,{className:`trace-raw`,hidden:x!==`raw`,children:[x===`raw`&&!D&&T&&(0,G.jsxs)(`div`,{className:`trace-raw-toolbar`,children:[(0,G.jsx)(`span`,{children:`JSON Tree`}),(0,G.jsxs)(`div`,{role:`group`,"aria-label":`JSON 展开控制`,children:[(0,G.jsx)(`button`,{type:`button`,className:M?``:`active`,onClick:()=>N(!1),children:`全部收起`}),(0,G.jsx)(`button`,{type:`button`,className:M?`active`:``,onClick:()=>N(!0),children:`全部展开`})]})]}),x===`raw`&&D&&(0,G.jsx)(`div`,{className:`trace-raw-loading`,children:`正在读取 OTLP JSON…`}),x===`raw`&&!D&&T&&(0,G.jsx)(`div`,{className:`trace-raw-tree`,children:(0,G.jsx)(VH,{"aria-label":`Raw OTLP JSON`,data:T,style:xU,shouldExpandNode:M?zH:BH,clickToExpandNode:!0})}),x===`raw`&&!D&&!T&&(0,G.jsx)(`div`,{className:`trace-raw-loading`,children:`没有可显示的 OTLP JSON。`})]})]})]})]})]})]})}function NU({overview:e,range:t}){let n=e?.total||0,r=e?.completed||0,i=e?.successRate==null?`—`:`${Math.round(e.successRate*100)}%`,a=e?.averageDurationMs==null?`—`:lU(e.averageDurationMs),o=e?.totalTokens||0,s=e?.inputTokens||0,c=e?.outputTokens||0,l=e?.buckets||[],u=l.some(e=>e.runs>0);return(0,G.jsxs)(`section`,{className:`observability-overview${u?` has-trend`:``}`,"aria-label":`运行概览`,children:[(0,G.jsxs)(`div`,{className:`overview-metric-grid`,children:[(0,G.jsx)(PU,{icon:(0,G.jsx)(O,{size:15}),label:t===`7d`?`近 7 天运行`:`近 24 小时运行`,value:String(n)}),(0,G.jsx)(PU,{icon:(0,G.jsx)(re,{size:15}),label:`成功率`,value:i,note:n?`${r} / ${n}`:void 0,tone:`success`}),(0,G.jsx)(PU,{icon:(0,G.jsx)(ue,{size:15}),label:`平均耗时`,value:a,note:r?`${r} 个完成运行`:void 0}),(0,G.jsx)(PU,{icon:(0,G.jsx)(pe,{size:15}),label:`Token`,value:n?o?uU(o):`未上报`:`—`,note:o?`${uU(s)} 输入 · ${uU(c)} 输出`:void 0})]}),u&&(0,G.jsxs)(`div`,{className:`overview-chart-card`,children:[(0,G.jsx)(`div`,{className:`overview-chart-header`,children:(0,G.jsx)(`strong`,{children:`运行趋势`})}),(0,G.jsx)(FU,{buckets:l,range:t}),(0,G.jsxs)(`div`,{className:`overview-chart-legend`,children:[(0,G.jsx)(`span`,{className:`legend-runs`}),`运行数`,(0,G.jsx)(`span`,{className:`legend-success`}),`成功数`]})]})]})}function PU({icon:e,label:t,value:n,note:r,tone:i=`neutral`}){return(0,G.jsxs)(`article`,{className:`overview-metric-card ${i}`,children:[(0,G.jsxs)(`div`,{className:`overview-metric-label`,children:[(0,G.jsx)(`span`,{children:e}),(0,G.jsx)(`small`,{children:t})]}),(0,G.jsx)(`strong`,{children:n}),r&&(0,G.jsx)(`p`,{children:r})]})}function FU({buckets:e,range:t}){let n=e.map(e=>{let n=new Date(e.startedAt),r=t===`7d`?`${n.getMonth()+1}/${n.getDate()}`:`${String(n.getHours()).padStart(2,`0`)}:00`;return{...e,label:r,success:e.completed}});if(!n.length||!n.some(e=>e.runs>0))return(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:`暂无运行数据`})});let r=Math.max(1,...n.map(e=>e.runs)),i={l:30,r:10,t:10,b:22},a=800-i.l-i.r,o=118-i.t-i.b,s=a/Math.max(1,n.length-1),c=e=>i.t+o-e/r*o,l=n.map((e,t)=>`${i.l+t*s},${c(e.runs)}`).join(` `),u=n.map((e,t)=>`${i.l+t*s},${c(e.success)}`).join(` `),d=`M ${i.l},${i.t+o} L ${l.split(` `).join(` L `)} L ${i.l+(n.length-1)*s},${i.t+o} Z`,f=Math.ceil(n.length/6);return(0,G.jsxs)(`svg`,{className:`overview-chart`,viewBox:`0 0 800 118`,preserveAspectRatio:`none`,"aria-label":`运行趋势曲线`,children:[[0,.25,.5,.75,1].map(e=>{let t=i.t+o-e*o;return(0,G.jsx)(`line`,{x1:i.l,y1:t,x2:800-i.r,y2:t,stroke:`var(--border)`,strokeWidth:`1`,strokeDasharray:e===0?`0`:`3 3`},e)}),(0,G.jsx)(`path`,{d,fill:`var(--accent-soft)`,opacity:`0.6`}),(0,G.jsx)(`polyline`,{points:l,fill:`none`,stroke:`var(--accent)`,strokeWidth:`2`,strokeLinejoin:`round`,strokeLinecap:`round`}),(0,G.jsx)(`polyline`,{points:u,fill:`none`,stroke:`var(--success)`,strokeWidth:`2`,strokeLinejoin:`round`,strokeLinecap:`round`,strokeDasharray:`4 3`}),n.map((e,t)=>(0,G.jsx)(`circle`,{cx:i.l+t*s,cy:c(e.runs),r:`2.5`,fill:`var(--accent)`,children:(0,G.jsx)(`title`,{children:`${e.label}:${e.runs} 次运行,${e.success} 次成功`})},e.startedAt)),n.map((e,t)=>(t%f===0||t===n.length-1)&&(0,G.jsx)(`text`,{x:i.l+t*s,y:110,textAnchor:`middle`,fill:`var(--text-tertiary)`,fontSize:`11`,children:e.label},`label-${e.startedAt}`))]})}function IU({events:e}){let t=(0,s.useMemo)(()=>{let t=[],n=``,r=null,i=0,a=()=>{r&&n.trim()&&t.push({type:`card`,card:{kind:r,text:n,segments:i,final:!1}}),n=``,i=0,r=null};for(let o of e)if(o.name===`thinking.delta`||o.name===`message.delta`){let e=o.name===`thinking.delta`?`thinking`:`message`;r!==e&&a(),r=e,n+=CU(o.attributes),i+=1}else o.name===`thinking.completed`||o.name===`message.completed`||(a(),t.push({type:`event`,event:o}));return a(),t},[e]);return e.length?(0,G.jsx)(`div`,{className:`io-stack`,children:t.map((e,t)=>e.type===`card`?(0,G.jsx)(DU,{label:e.card.kind===`message`?`模型输出流`:`思考流`,text:e.card.text,tone:e.card.kind,icon:e.card.kind===`message`?(0,G.jsx)(Ie,{size:12}):(0,G.jsx)(R,{size:12}),meta:`${e.card.segments} 段增量`},t):(0,G.jsxs)(`article`,{className:`trace-event-card`,children:[(0,G.jsx)(`strong`,{children:e.event.name}),(0,G.jsx)(`span`,{children:_U(e.event.timeUnixNano)}),(0,G.jsx)(kU,{values:e.event.attributes||{}})]},t))}):(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:`该 Span 没有 Events。`})})}var LU=[{kind:`model`,label:`模型`,icon:ge},{kind:`tool`,label:`Tool`,icon:yt},{kind:`mcp`,label:`MCP Server`,icon:Ve},{kind:`skill`,label:`Skill`,icon:ct}];function RU(e){return e===`ready`?`可用`:e===`missing-secret`?`缺少凭证`:e===`unhealthy`||e===`failed`?`异常`:e===`unresolved`?`未解析`:e||`未知`}function zU(e){return e.requiredSecretRefs?.[0]||e.contract?.credentialRef||``}function BU({refreshTick:e,onOpenResources:t}){let[n,r]=(0,s.useState)([]),[i,a]=(0,s.useState)({}),[o,c]=(0,s.useState)(0),[l,u]=(0,s.useState)(``),[d,f]=(0,s.useState)(null),[p,m]=(0,s.useState)(`24h`),[h,_]=(0,s.useState)(null),[v,y]=(0,s.useState)([]),[b,x]=(0,s.useState)(``),S=(0,s.useCallback)(async()=>{let[e,t,n,i,o,s]=await Promise.all([g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()).catch(()=>({items:[]})),g(`/api/v1/catalog/models`).then(e=>e.json()).catch(()=>null),g(`/api/v1/runs?limit=200`).then(e=>e.json()).catch(()=>({items:[]})),g(`/api/v1/system/bootstrap`).then(e=>e.json()).catch(()=>null),g(`/api/v1/traces/overview?range=${p}`).then(e=>e.ok?e.json():null).catch(()=>null),g(`/api/v1/deployments`).then(e=>e.ok?e.json():{items:[]}).catch(()=>({items:[]}))]),l=e.items||[];t?.items?.length&&(l=[...l.filter(e=>e.kind!==`model`||e.source===`local`||e.source===`market`),...t.items]),r(l),c((n.items||[]).length),u(i?.workspace?.path||``),f(!!i?.workspace),_(o),y(Array.isArray(s?.items)?s.items:[]);let d=[...new Set(l.filter(e=>e.kind===`model`).map(zU).filter(Boolean))],m=await Promise.all(d.map(async e=>{try{return[e,await(await g(`/api/v1/credentials/${encodeURIComponent(e.replace(/^env:\/\//,``))}`)).json()]}catch{return[e,{configured:!1}]}}));a(Object.fromEntries(m))},[p]);(0,s.useEffect)(()=>{S()},[S,e]);let C=e=>e.kind===`model`?i[zU(e)]?.configured?`ready`:`missing-secret`:e.status,w=n.filter(e=>e.kind===`model`).filter(e=>C(e)===`ready`),T=n.filter(e=>[`tool`,`mcp`,`skill`].includes(e.kind)).filter(e=>C(e)===`ready`),E=d==null?`pending`:d?`ready`:`failed`,D=d==null?`检查中`:d?`运行正常`:`连接失败`,O=h?.buckets||[],k=O.length>1&&O.some(e=>e.runs>0),A=Math.max(1,...O.map(e=>e.runs)),M=k?O.find(e=>e.runs===A):void 0,N=b.trim().toLocaleLowerCase(),P=(0,s.useMemo)(()=>n.filter(e=>C(e)!==`ready`).length,[i,n]),F=v.filter(e=>e.status===`READY`).length,I=v.filter(e=>[`ADMITTING`,`DEPLOYING`].includes(String(e.status))).length,L=F?`ready`:I?`pending`:`idle`,R=F?`${F} 已就绪`:I?`${I} 部署中`:`尚未部署`;return(0,G.jsxs)(`div`,{className:`page-container runtime-resource-page`,"data-layout":`document`,children:[(0,G.jsx)(xd,{children:(0,G.jsxs)(`div`,{className:`segmented-control compact`,role:`tablist`,"aria-label":`运行趋势时间范围`,children:[(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":p===`24h`,onClick:()=>m(`24h`),children:`24 小时`}),(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":p===`7d`,onClick:()=>m(`7d`),children:`7 天`})]})}),(0,G.jsxs)(`div`,{className:`data-page-body`,children:[(0,G.jsxs)(`section`,{className:`runtime-status-summary`,"aria-label":`运行状态`,children:[(0,G.jsxs)(`div`,{title:l||`本地工作区`,"data-state":E,children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`本地 Runtime`}),(0,G.jsxs)(`strong`,{className:`stat-value`,children:[(0,G.jsx)(`span`,{className:`summary-status-dot`}),D]}),E===`failed`&&(0,G.jsxs)(`button`,{className:`text-button`,type:`button`,onClick:()=>void S(),children:[(0,G.jsx)(et,{size:13}),`重新检查`]})]}),(0,G.jsxs)(`div`,{"data-state":L,children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`云端部署`}),(0,G.jsx)(`strong`,{className:`stat-value`,children:R})]})]}),(0,G.jsxs)(`div`,{className:`stat-strip compact-summary runtime-metric-summary`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`可用模型`}),(0,G.jsx)(`strong`,{className:`stat-value`,children:w.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`能力资源`}),(0,G.jsx)(`strong`,{className:`stat-value`,children:T.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:p===`24h`?`近 24 小时运行`:`近 7 天运行`}),(0,G.jsx)(`strong`,{className:`stat-value`,children:h?.total??o})]})]}),(0,G.jsxs)(`section`,{className:`runtime-trend block${k?``:` is-empty`}`,children:[(0,G.jsxs)(`div`,{className:`block-head`,children:[(0,G.jsx)(`strong`,{children:`运行量趋势`}),M&&(0,G.jsx)(`span`,{className:`head-actions`,children:(0,G.jsxs)(`span`,{className:`tag`,children:[`峰值 `,A]})})]}),k?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{className:`runtime-trend-bars`,"aria-label":`运行量趋势`,children:O.map((e,t)=>(0,G.jsx)(`span`,{className:`runtime-trend-bar`,"data-peak":e.runs===A||void 0,style:{height:`${Math.max(4,Math.round(e.runs/A*100))}%`},title:`${e.startedAt} · ${e.runs} 次运行`},`${e.startedAt}-${t}`))}),(0,G.jsxs)(`div`,{className:`chart-axis`,children:[(0,G.jsx)(`span`,{children:`开始`}),(0,G.jsx)(`span`,{children:p===`24h`?`12:00`:`中段`}),(0,G.jsx)(`span`,{children:`现在`})]})]}):(0,G.jsx)(`div`,{className:`runtime-trend-empty`,children:(0,G.jsx)(`strong`,{children:O.length===1?`继续运行后即可形成趋势`:`运行 Agent 后即可查看趋势`})})]}),(0,G.jsxs)(`section`,{className:`runtime-resource-section block`,children:[(0,G.jsxs)(`div`,{className:`section-heading`,children:[(0,G.jsx)(`h2`,{title:`优先展示异常资源,每类最多展示 5 项`,children:`本地能力概览`}),(0,G.jsx)(`span`,{className:`badge`,"data-state":P?`warning`:`ready`,children:P?`${P} 项需处理`:`全部可用`})]}),(0,G.jsx)(`div`,{className:`section-toolbar runtime-resource-toolbar`,children:(0,G.jsxs)(`div`,{className:`search-field`,children:[(0,G.jsx)(tt,{size:14}),(0,G.jsx)(`input`,{type:`search`,"aria-label":`搜索运行资源`,placeholder:`搜索资源`,value:b,onChange:e=>x(e.target.value)})]})}),(0,G.jsx)(`div`,{className:`runtime-resource-groups`,children:LU.map(e=>{let r=n.filter(t=>t.kind===e.kind),i=r.filter(e=>!N||`${e.displayName} ${e.name}`.toLocaleLowerCase().includes(N)).sort((e,t)=>Number(C(e)===`ready`)-Number(C(t)===`ready`)).slice(0,5),a=e.icon;return(0,G.jsxs)(`article`,{className:`runtime-resource-group block`,children:[(0,G.jsxs)(`header`,{children:[(0,G.jsx)(`span`,{className:`runtime-group-icon`,children:(0,G.jsx)(a,{size:15})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:e.label}),(0,G.jsx)(`small`,{children:r.length})]}),r.length>0&&(0,G.jsxs)(`button`,{className:`text-button`,type:`button`,onClick:()=>t(e.kind),children:[`查看全部 `,(0,G.jsx)(j,{size:13})]})]}),(0,G.jsx)(`div`,{className:`runtime-resource-list`,children:i.length===0?(0,G.jsx)(`div`,{className:`runtime-resource-empty`,children:`暂无资源`}):i.map(e=>{let t=C(e);return(0,G.jsxs)(`div`,{className:`runtime-resource-row`,children:[(0,G.jsx)(`span`,{className:`resource-state ${t===`ready`?`ready`:`warning`}`}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.displayName}),(0,G.jsx)(`small`,{children:e.version||e.source||e.name})]}),(0,G.jsx)(`span`,{className:`badge`,"data-state":t===`ready`?`ready`:`pending`,children:RU(t)})]},e.resourceId)})})]},e.kind)})})]})]})]})}function VU(e){return typeof e==`object`&&!!e&&typeof e.apply==`function`}async function HU(e){let t=window.__ModuleLoader__,n;window.__ModuleLoader__={load(t){if(n)throw Error(`DSH client bundle ${e.pluginId} registered more than once`);n=t}};try{await new Promise((t,n)=>{let r=document.createElement(`script`);r.async=!0,r.src=e.url,r.onload=()=>{r.remove(),t()},r.onerror=()=>{r.remove(),n(Error(`DSH client bundle ${e.pluginId} failed to load`))},document.head.append(r)})}finally{t?window.__ModuleLoader__=t:delete window.__ModuleLoader__}if(!n||n.id!==e.pluginId)throw Error(`DSH client bundle ${e.pluginId} registered an unexpected module`);let r={react:s},i=n.factory(t=>{if(!(t in r))throw Error(`DSH client bundle ${e.pluginId} requires unavailable module ${t}`);return r[t]});if(!VU(i))throw Error(`DSH client bundle ${e.pluginId} did not export a Cordis plugin`);return i}var UU=new class{target;bundleLoader;activeDigest=``;activeRuntime=null;pending=Promise.resolve();constructor(e,t=HU){this.target=e,this.bundleLoader=t}refresh(){return this.enqueue(async()=>{let e=await g(`/api/v1/plugin-ecosystems/dsh/profile`);if(!e.ok)throw Error(`DSH Profile client graph is unavailable`);await this.activate(await e.json())})}reconcile(e){return this.enqueue(()=>this.activate(e))}async activate(e){if(e.clientGraphDigest===this.activeDigest)return;let t=e.clientBundles.filter(e=>e.enabled&&e.compatible);if(t.length!==e.clientBundles.filter(e=>e.enabled).length){let t=e.clientBundles.find(e=>e.enabled&&!e.compatible);throw Error(`DSH client bundle ${t?.pluginId||`unknown`} is incompatible: ${t?.incompatibilityReason||`unknown reason`}`)}let n=new KB;try{for(let e of t){let t=await this.bundleLoader(e);await n.mount(t)}}catch(e){throw await n.dispose(),e}let r=this.activeRuntime;this.target.contributions.replaceAll(n.contributions),this.activeRuntime=n,this.activeDigest=e.clientGraphDigest,await r?.dispose()}dispose(){return this.enqueue(async()=>{this.target.contributions.replaceAll(new Gz),await this.activeRuntime?.dispose(),this.activeRuntime=null,this.activeDigest=``})}enqueue(e){let t=this.pending.then(e);return this.pending=t.catch(()=>void 0),t}}(qB);function WU(e){let t=e?.item||e;if(t?.ecosystem!==`dsh`&&t?.ecosystem!==`codex`)throw Error(`不支持的插件生态`);let n=String(t.pluginId||``).trim();if(!n)throw Error(`插件状态缺少 pluginId`);let r=t.runtimeState||t.runtime_state||{},i=String(t.state||``).toLowerCase(),a=String(r.state||t.providerState||t.provider_state||``).toLowerCase(),o=t.installed!==!1,s=o&&(t.failed===!0||i===`failed`||a===`failed`),c=o&&!s&&(t.bound===!0||i===`bound`||a===`bound`),l=o&&!s&&(c||t.ready===!0||i===`ready`||a===`ready`),u=o&&(t.enabled===!0||l||i===`enabled`),d=s?`failed`:c?`bound`:l?`ready`:u?`enabled`:`installed`,f=String(r.providerRef||r.provider_ref||t.providerRef||t.provider_ref||``).trim(),p=String(r.errorCode||r.error_code||t.errorCode||t.error_code||``).trim();return{ecosystem:t.ecosystem,pluginId:n,resolvedVersion:String(t.resolvedVersion||``),distributionName:String(t.distributionName||n),displayName:t.displayName,marketplaceName:t.marketplaceName,installed:o,enabled:u,ready:l,bound:c,failed:s,state:d,providerRef:f||void 0,errorCode:p||void 0,riskDisclosures:Array.isArray(t.riskDisclosures)?t.riskDisclosures:[],host:t.host,description:e?.description||t.description,capabilities:e?.capabilities||t.capabilities,clientBundle:t.clientBundle||t.client_bundle}}var GU=e=>[e.ecosystem,e.marketplaceName||`default`,e.pluginId,e.resolvedVersion||`host-managed`].join(`:`),KU=e=>e.ecosystem===`dsh`?`DeepSeek Harness 插件`:`Codex 官方插件`,qU={"@kingsoftcloud/ksadk-codex-provider":{title:`Codex AgentProvider`,publisher:`KsADK 官方`,kind:`Agent Provider`,summary:`让 Agent 使用 Codex App Server 的原生会话、工具与审批能力。`}};function JU(e){let t=qU[e.pluginId];return t?t.title:e.displayName?.trim()?e.displayName.trim():(e.pluginId.split(`/`).at(-1)||e.pluginId).replace(/^(ksadk-|dsh-)/,``).split(/[-_.]+/).map(e=>e?`${e[0].toUpperCase()}${e.slice(1)}`:``).join(` `)}function YU(e){let t=qU[e.pluginId];return t?t.publisher:e.pluginId.match(/^(@[^/]+)\//)?.[1]||e.marketplaceName||(e.ecosystem===`dsh`?`DeepSeek Harness`:`Codex Marketplace`)}function XU(e){let t=qU[e.pluginId];return t?t.kind:e.providerRef?`Agent Provider`:e.clientBundle?.compatible||(e.capabilities?.apps||[]).length?`界面扩展`:(e.capabilities?.skills||[]).length||(e.capabilities?.mcpServers||[]).length?`Agent 能力`:e.ecosystem===`dsh`?`Harness 扩展`:`工作台扩展`}function ZU(e){let t=qU[e.pluginId];return t?t.summary:e.description?.trim()?e.description.trim():e.providerRef?`为 Studio Agent 提供可选运行时与执行能力。`:e.ecosystem===`dsh`?`通过 DeepSeek Harness 扩展 Agent 的上下文、工具或工作流。`:`通过 Codex App Server 扩展工作台能力。`}var QU=[`常用`,`效率`,`创意`,`开发`,`更多`];function $U(e){let t=`${e.pluginId} ${JU(e)}`.toLowerCase();return/gmail|google-drive|google-calendar|github|notion|slack/.test(t)?`常用`:/linear|atlassian|calendar|outlook|teams|sharepoint|clickup|monday|granola|todo|asana|trello/.test(t)?`效率`:/canva|figma|design|image|video|remotion|hyperframe|higgs|adobe|runway/.test(t)?`创意`:/github|cloudflare|sentry|vercel|circleci|coderabbit|security|build|developer|code/.test(t)?`开发`:`更多`}var eW=(e,t)=>e?.error?.message||e?.detail||e?.message||t,tW={installed:`待启用`,enabled:`已启用`,ready:`就绪`,bound:`已绑定`,failed:`失败`};function nW({item:e}){let t=e.failed?U:e.state===`installed`?oe:ie;return(0,G.jsxs)(`span`,{className:`plugin-state`,"data-state":e.state,children:[(0,G.jsx)(t,{size:13}),` `,tW[e.state]]})}function rW({item:e}){let t=!!(e.providerRef&&(e.ready||e.bound)),n=[...e.capabilities?.skills||[],...e.capabilities?.mcpServers||[]],r=!!(e.clientBundle?.compatible||(e.capabilities?.apps||[]).length);return!e.providerRef&&n.length===0&&!r?null:(0,G.jsxs)(`section`,{className:`plugin-detail-section`,"aria-label":`贡献能力与使用方式`,children:[(0,G.jsx)(`h3`,{children:`贡献能力与使用方式`}),e.providerRef&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`dl`,{className:`plugin-compatibility-list`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`AgentProvider`}),(0,G.jsx)(`dd`,{children:t?`可用`:`未就绪`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`providerRef`}),(0,G.jsx)(`dd`,{children:e.providerRef})]})]}),(0,G.jsx)(`p`,{className:`plugin-detail-muted`,children:t?`在创建或编辑 Agent 时从 Runtime 选择器使用。`:`Provider 尚未就绪,暂不能用于创建 Agent。`}),t&&(0,G.jsx)(`p`,{children:(0,G.jsx)(`a`,{className:`button secondary`,href:`#/create`,children:`去创建 Agent`})})]}),r&&(0,G.jsx)(`p`,{className:`plugin-detail-muted`,children:`界面扩展启用后会自动出现在插件声明的页面、侧栏或 Tab。`}),n.length>0&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`p`,{className:`plugin-detail-muted`,children:`Skill 与 MCP 能力需在 Agent 编辑页绑定后使用。`}),(0,G.jsx)(`p`,{children:(0,G.jsx)(`a`,{className:`button secondary`,href:`#/agents`,children:`去 Agent 列表绑定`})})]})]})}function iW(){let[e,t]=(0,s.useState)([]),[n,r]=(0,s.useState)([]),[i,a]=(0,s.useState)({}),[o,c]=(0,s.useState)(``),[l,u]=(0,s.useState)(``),[d,f]=(0,s.useState)(!1),[p,m]=(0,s.useState)(!1),[h,_]=(0,s.useState)(``),[v,y]=(0,s.useState)(`codex`),[b,x]=(0,s.useState)(`load`),[S,C]=(0,s.useState)(``),w=(0,s.useCallback)(async()=>{x(`load`),C(``);try{let[e,n]=await Promise.all([g(`/api/v1/plugin-ecosystems/dsh/plugins`),g(`/api/v1/plugin-ecosystems/codex/plugins`)]),[i,s]=await Promise.all([e.json(),n.json()]),l=(s.items||[]).map(WU),u=[...(i.items||[]).map(WU),...l.filter(e=>e.installed)];t(u),r(l.filter(e=>!e.installed)),a({dsh:i.host,codex:s.host}),!o&&u[0]&&c(GU(u[0]))}catch(e){C(e?.message||`插件状态加载失败`)}finally{x(``)}},[o]);(0,s.useEffect)(()=>{w()},[]);let T=(0,s.useMemo)(()=>e.find(e=>GU(e)===o)||null,[e,o]),E=(0,s.useMemo)(()=>{let e=h.trim().toLowerCase(),t=n.filter(t=>!e||[JU(t),YU(t),XU(t),ZU(t),t.pluginId].some(t=>t.toLowerCase().includes(e)));return QU.map(e=>({category:e,items:t.filter(t=>$U(t)===e)})).filter(e=>e.items.length>0)},[h,n]);async function D(){try{await UU.refresh()}catch(e){J(`插件状态已更新`,e?.message||`界面扩展装载失败,已保留原界面`)}}async function O(){if(!(!d||!l.trim())){x(`install`),C(``);try{let e=await g(`/api/v1/plugin-ecosystems/dsh/plugins:install`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({source:l.trim(),acceptHostPermissions:!0})}),t=await e.json();if(!e.ok)throw Error(t?.error?.message||`DSH 插件安装失败`);let n=WU(t);c(GU(n)),f(!1),u(``),J(n.enabled?`插件已安装`:`已安装,待启用`,n.displayName||n.pluginId),await w(),await D()}catch(e){C(e?.message||`DSH 插件安装失败`)}finally{x(``)}}}async function k(e){if(p){x(`codex:${GU(e)}`),C(``);try{let t=await g(`/api/v1/plugin-ecosystems/codex/plugins/${encodeURIComponent(e.pluginId)}:install`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({marketplaceName:e.marketplaceName||null,acceptUndeclaredPermissions:!0})}),n=await t.json();if(!t.ok)throw Error(eW(n,`Codex 插件安装失败`));let r=WU(n);m(!1),J(r.enabled?`插件已安装`:`已安装,待启用`,r.displayName||r.pluginId),await w()}catch(e){C(e?.message||`Codex 插件安装失败`)}finally{x(``)}}}async function A(e){if(e.ecosystem!==`dsh`)return;let t=e.enabled?`disable`:`enable`;x(`toggle`),C(``);try{let n=await g(`/api/v1/plugin-ecosystems/dsh/plugins/${encodeURIComponent(e.pluginId)}:${t}`,{method:`POST`}),r=await n.json();if(!n.ok)throw Error(eW(r,`DSH 插件状态更新失败`));await w(),await D()}catch(e){C(e?.message||`DSH 插件状态更新失败`)}finally{x(``)}}async function j(e){let t=`/api/v1/plugin-ecosystems/${e.ecosystem}/plugins/${encodeURIComponent(e.pluginId)}`;x(`delete`),C(``);try{let n=await g(t,{method:`DELETE`});if(!n.ok){let e=await n.json();throw Error(eW(e,`插件卸载失败`))}c(``),await w(),e.ecosystem===`dsh`&&await D()}catch(e){C(e?.message||`插件卸载失败`)}finally{x(``)}}return(0,G.jsxs)(`div`,{className:`page-container plugins-page`,"data-layout":`document`,children:[(0,G.jsx)(Sd,{children:(0,G.jsx)(`button`,{className:`icon-button tertiary`,"aria-label":`刷新插件`,onClick:()=>void w(),children:(0,G.jsx)(et,{size:16})})}),(0,G.jsxs)(`header`,{className:`plugins-intro`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:`插件`}),(0,G.jsx)(`p`,{children:`安装、启用和使用分开管理;只有已启用的插件才会投影给匹配的 Agent Provider。`})]}),(0,G.jsxs)(`div`,{className:`plugins-hosts`,"aria-label":`插件宿主状态`,children:[(0,G.jsx)(`span`,{className:`plugin-bridge-badge`,"data-state":i.dsh?.available?`available`:`unavailable`,children:i.dsh?.available?`DSH ${i.dsh.version||``}`:`DSH 不可用`}),(0,G.jsx)(`span`,{className:`plugin-bridge-badge`,"data-state":i.codex?.available?`available`:`unavailable`,children:i.codex?.available?`Codex ${i.codex.version||``}`:`Codex 不可用`})]})]}),S&&(0,G.jsx)(`div`,{className:`form-error`,role:`alert`,children:S}),(0,G.jsxs)(`div`,{className:`plugins-workspace`,children:[(0,G.jsxs)(`section`,{className:`plugin-list-panel block`,children:[(0,G.jsx)(`div`,{className:`section-heading`,children:(0,G.jsxs)(`div`,{className:`section-heading-copy`,children:[(0,G.jsx)(`h2`,{children:`已安装`}),(0,G.jsx)(`p`,{children:b===`load`?`正在读取`:`${e.length} 个插件`})]})}),(0,G.jsxs)(`div`,{className:`plugin-list`,children:[e.map(e=>(0,G.jsxs)(`button`,{className:`plugin-list-item${GU(e)===o?` selected`:``}`,"aria-current":GU(e)===o?`true`:void 0,onClick:()=>c(GU(e)),children:[(0,G.jsx)(`span`,{className:`plugin-avatar`,"data-ecosystem":e.ecosystem,children:e.ecosystem===`dsh`?(0,G.jsx)($e,{size:17}):(0,G.jsx)(Ze,{size:17})}),(0,G.jsxs)(`span`,{className:`plugin-list-identity`,children:[(0,G.jsx)(`strong`,{children:JU(e)}),(0,G.jsxs)(`small`,{children:[YU(e),` · `,XU(e)]}),(0,G.jsx)(`em`,{children:ZU(e)})]}),(0,G.jsx)(nW,{item:e})]},GU(e))),!b&&!e.length&&(0,G.jsxs)(`div`,{className:`plugin-list-empty`,children:[(0,G.jsx)(Ze,{size:19}),(0,G.jsx)(`span`,{children:`还没有安装插件`})]})]})]}),(0,G.jsx)(`aside`,{className:`plugin-detail-panel block`,"aria-label":`插件详情`,children:T?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`header`,{className:`plugin-detail-header`,children:[(0,G.jsx)(`span`,{className:`plugin-avatar large`,"data-ecosystem":T.ecosystem,children:T.ecosystem===`dsh`?(0,G.jsx)($e,{size:20}):(0,G.jsx)(Ze,{size:20})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:JU(T)}),(0,G.jsxs)(`p`,{children:[YU(T),` · `,XU(T)]})]}),(0,G.jsx)(nW,{item:T})]}),(0,G.jsx)(`p`,{className:`plugin-detail-summary`,children:ZU(T)}),T.failed&&T.errorCode&&(0,G.jsx)(`p`,{className:`form-error`,role:`status`,children:T.errorCode}),(0,G.jsx)(rW,{item:T}),(0,G.jsxs)(`details`,{className:`plugin-technical-details`,children:[(0,G.jsx)(`summary`,{children:`技术信息`}),(0,G.jsxs)(`dl`,{children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`插件标识`}),(0,G.jsx)(`dd`,{children:T.pluginId})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`版本`}),(0,G.jsx)(`dd`,{children:T.resolvedVersion||`由宿主解析`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`来源`}),(0,G.jsx)(`dd`,{children:KU(T)})]})]})]}),(0,G.jsxs)(`div`,{className:`plugin-detail-actions`,children:[T.ecosystem===`dsh`&&(0,G.jsx)(`button`,{className:`button secondary`,disabled:!!b,onClick:()=>void A(T),children:T.enabled?`停用`:`启用`}),(0,G.jsxs)(`button`,{className:`button danger`,disabled:!!b,onClick:()=>void j(T),children:[(0,G.jsx)(ht,{size:15}),`卸载`]})]})]}):(0,G.jsxs)(`div`,{className:`plugin-detail-empty`,children:[(0,G.jsx)(Ze,{size:22}),(0,G.jsx)(`strong`,{children:`选择一个插件`}),(0,G.jsx)(`span`,{children:`从下方添加插件后,可在这里查看状态与可用能力。`})]})})]}),(0,G.jsxs)(`section`,{className:`plugin-marketplace block`,children:[(0,G.jsxs)(`div`,{className:`plugin-marketplace-heading`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:`发现插件`}),(0,G.jsx)(`p`,{children:v===`codex`?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{children:`兼容格式 · 生命周期由 Codex App Server 管理`}),(0,G.jsx)(`small`,{children:`安装后仍需按 Agent 显式授权。`})]}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{children:`默认插件格式 · 当前 DSH Profile`}),(0,G.jsx)(`small`,{children:`安装到当前工作区,可随后启用并绑定给 Agent。`})]})})]}),v===`codex`&&(0,G.jsxs)(`label`,{className:`plugin-search`,children:[(0,G.jsx)(tt,{size:16}),(0,G.jsx)(`span`,{className:`sr-only`,children:`搜索插件`}),(0,G.jsx)(`input`,{value:h,onChange:e=>_(e.target.value),placeholder:`搜索插件`})]})]}),(0,G.jsxs)(`div`,{className:`plugin-marketplace-tabs`,role:`tablist`,"aria-label":`插件市场`,children:[(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":v===`codex`,onClick:()=>y(`codex`),children:`Codex 插件`}),(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":v===`dsh`,onClick:()=>y(`dsh`),children:`DeepSeek Harness 插件`})]}),v===`codex`?b===`load`?(0,G.jsxs)(`div`,{className:`plugin-marketplace-loading`,children:[(0,G.jsx)(Ne,{className:`animate-spin`,size:18}),(0,G.jsx)(`span`,{children:`正在读取 Codex 插件目录…`})]}):n.length>0?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`label`,{className:`codex-risk-confirmation${p?` accepted`:``}`,children:[(0,G.jsx)(U,{size:18}),(0,G.jsx)(`input`,{type:`checkbox`,checked:p,onChange:e=>m(e.target.checked)}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`安装前确认权限`}),(0,G.jsx)(`small`,{children:`Codex 插件由 App Server 以当前用户权限管理,请确认插件来源可信。`})]}),(0,G.jsx)(`em`,{children:p?`已确认`:`勾选后可安装`})]}),(0,G.jsx)(`div`,{className:`plugin-category-list`,"aria-label":`可安装 Codex 插件`,children:E.map(e=>(0,G.jsxs)(`section`,{className:`plugin-category`,children:[(0,G.jsx)(`h3`,{children:e.category}),(0,G.jsx)(`div`,{className:`plugin-marketplace-list`,children:e.items.map(e=>(0,G.jsxs)(`div`,{className:`plugin-marketplace-row`,children:[(0,G.jsx)(`span`,{className:`plugin-avatar`,"data-ecosystem":`codex`,children:(0,G.jsx)(Ze,{size:16})}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:JU(e)}),(0,G.jsxs)(`small`,{children:[YU(e),` · `,XU(e)]}),(0,G.jsx)(`em`,{children:ZU(e)})]}),(0,G.jsx)(`button`,{className:`button secondary small`,disabled:!p||!!b,onClick:()=>void k(e),children:b===`codex:${GU(e)}`?(0,G.jsx)(Ne,{className:`animate-spin`,size:15}):`安装`})]},GU(e)))})]},e.category))}),!E.length&&(0,G.jsx)(`p`,{className:`plugin-discovery-empty`,children:`没有匹配的插件。`})]}):(0,G.jsx)(`p`,{className:`plugin-discovery-empty`,children:`当前没有可安装的 Codex 插件。`}):(0,G.jsxs)(`div`,{className:`plugin-dsh-market`,children:[(0,G.jsxs)(`div`,{className:`plugin-dsh-market-copy`,children:[(0,G.jsx)(`span`,{className:`plugin-avatar`,"data-ecosystem":`dsh`,children:(0,G.jsx)($e,{size:18})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`从来源安装`}),(0,G.jsx)(`p`,{children:`支持 npm 包、Git 地址或本地路径,适合官方、私有插件与本地开发。`})]})]}),(0,G.jsxs)(`div`,{className:`plugin-source-form`,children:[(0,G.jsx)(`label`,{className:`sr-only`,htmlFor:`dshSource`,children:`DSH 插件来源`}),(0,G.jsx)(`input`,{id:`dshSource`,value:l,onChange:e=>u(e.target.value),placeholder:`npm 包、Git 地址或本地路径`}),(0,G.jsxs)(`button`,{className:`button secondary`,disabled:!d||!l.trim()||!!b,onClick:()=>void O(),children:[b===`install`?(0,G.jsx)(Ne,{className:`animate-spin`,size:15}):(0,G.jsx)(P,{size:15}),`安装到 Profile`]})]}),(0,G.jsxs)(`label`,{className:`plugin-source-confirmation`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:d,onChange:e=>f(e.target.checked)}),(0,G.jsx)(`span`,{children:`我已知悉:DSH 包及安装脚本以当前系统用户权限运行。`})]})]})]})]})}function aW(e){if(typeof e==`string`||typeof e==`number`)return``+e;let t=``;if(Array.isArray(e))for(let n=0,r;n{}};function sW(){for(var e=0,t=arguments.length,n={},r;e=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw Error(`unknown type: `+e);return{type:e,name:n}})}cW.prototype=sW.prototype={constructor:cW,on:function(e,t){var n=this._,r=lW(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a0)for(var n=Array(i),r=0,i,a;r=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),fW.hasOwnProperty(t)?{space:fW[t],local:e}:e}function mW(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===`http://www.w3.org/1999/xhtml`&&t.documentElement.namespaceURI===`http://www.w3.org/1999/xhtml`?t.createElement(e):t.createElementNS(n,e)}}function hW(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function gW(e){var t=pW(e);return(t.local?hW:mW)(t)}function _W(){}function vW(e){return e==null?_W:function(){return this.querySelector(e)}}function yW(e){typeof e!=`function`&&(e=vW(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i=v&&(v=_+1);!(b=g[v])&&++v=0;)(o=r[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function YW(e){e||=XW;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,i=Array(r),a=0;at?1:e>=t?0:NaN}function ZW(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function QW(){return Array.from(this)}function $W(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?dG:typeof t==`function`?pG:fG)(e,t,n??``)):hG(this.node(),e)}function hG(e,t){return e.style.getPropertyValue(t)||uG(e).getComputedStyle(e,null).getPropertyValue(t)}function gG(e){return function(){delete this[e]}}function _G(e,t){return function(){this[e]=t}}function vG(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function yG(e,t){return arguments.length>1?this.each((t==null?gG:typeof t==`function`?vG:_G)(e,t)):this.node()[e]}function bG(e){return e.trim().split(/^|\s+/)}function xG(e){return e.classList||new SG(e)}function SG(e){this._node=e,this._names=bG(e.getAttribute(`class`)||``)}SG.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(`class`,this._names.join(` `)))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(`class`,this._names.join(` `)))},contains:function(e){return this._names.indexOf(e)>=0}};function CG(e,t){for(var n=xG(e),r=-1,i=t.length;++r=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function QG(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n()=>e;function bK(e,{sourceEvent:t,subject:n,target:r,identifier:i,active:a,x:o,y:s,dx:c,dy:l,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:u}})}bK.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function xK(e){return!e.ctrlKey&&!e.button}function SK(){return this.parentNode}function CK(e,t){return t??{x:e.x,y:e.y}}function wK(){return navigator.maxTouchPoints||`ontouchstart`in this}function TK(){var e=xK,t=SK,n=CK,r=wK,i={},a=sW(`start`,`drag`,`end`),o=0,s,c,l,u,d=0;function f(e){e.on(`mousedown.drag`,p).filter(r).on(`touchstart.drag`,g).on(`touchmove.drag`,_,pK).on(`touchend.drag touchcancel.drag`,v).style(`touch-action`,`none`).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}function p(n,r){if(!(u||!e.call(this,n,r))){var i=y(this,t.call(this,n,r),n,r,`mouse`);i&&(uK(n.view).on(`mousemove.drag`,m,mK).on(`mouseup.drag`,h,mK),_K(n.view),hK(n),l=!1,s=n.clientX,c=n.clientY,i(`start`,n))}}function m(e){if(gK(e),!l){var t=e.clientX-s,n=e.clientY-c;l=t*t+n*n>d}i.mouse(`drag`,e)}function h(e){uK(e.view).on(`mousemove.drag mouseup.drag`,null),vK(e.view,l),gK(e),i.mouse(`end`,e)}function g(n,r){if(e.call(this,n,r)){var i=n.changedTouches,a=t.call(this,n,r),o=i.length,s,c;for(s=0;s>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?JK(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?JK(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=FK.exec(e))?new ZK(t[1],t[2],t[3],1):(t=IK.exec(e))?new ZK(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=LK.exec(e))?JK(t[1],t[2],t[3],t[4]):(t=RK.exec(e))?JK(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=zK.exec(e))?iq(t[1],t[2]/100,t[3]/100,1):(t=BK.exec(e))?iq(t[1],t[2]/100,t[3]/100,t[4]):VK.hasOwnProperty(e)?qK(VK[e]):e===`transparent`?new ZK(NaN,NaN,NaN,0):null}function qK(e){return new ZK(e>>16&255,e>>8&255,e&255,1)}function JK(e,t,n,r){return r<=0&&(e=t=n=NaN),new ZK(e,t,n,r)}function YK(e){return e instanceof OK||(e=KK(e)),e?(e=e.rgb(),new ZK(e.r,e.g,e.b,e.opacity)):new ZK}function XK(e,t,n,r){return arguments.length===1?YK(e):new ZK(e,t,n,r??1)}function ZK(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}EK(ZK,XK,DK(OK,{brighter(e){return e=e==null?AK:AK**+e,new ZK(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?kK:kK**+e,new ZK(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new ZK(nq(this.r),nq(this.g),nq(this.b),tq(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:QK,formatHex:QK,formatHex8:$K,formatRgb:eq,toString:eq}));function QK(){return`#${rq(this.r)}${rq(this.g)}${rq(this.b)}`}function $K(){return`#${rq(this.r)}${rq(this.g)}${rq(this.b)}${rq((isNaN(this.opacity)?1:this.opacity)*255)}`}function eq(){let e=tq(this.opacity);return`${e===1?`rgb(`:`rgba(`}${nq(this.r)}, ${nq(this.g)}, ${nq(this.b)}${e===1?`)`:`, ${e})`}`}function tq(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function nq(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function rq(e){return e=nq(e),(e<16?`0`:``)+e.toString(16)}function iq(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new sq(e,t,n,r)}function aq(e){if(e instanceof sq)return new sq(e.h,e.s,e.l,e.opacity);if(e instanceof OK||(e=KK(e)),!e)return new sq;if(e instanceof sq)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n0&&c<1?0:o,new sq(o,s,c,e.opacity)}function oq(e,t,n,r){return arguments.length===1?aq(e):new sq(e,t,n,r??1)}function sq(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}EK(sq,oq,DK(OK,{brighter(e){return e=e==null?AK:AK**+e,new sq(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?kK:kK**+e,new sq(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new ZK(uq(e>=240?e-240:e+120,i,r),uq(e,i,r),uq(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new sq(cq(this.h),lq(this.s),lq(this.l),tq(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=tq(this.opacity);return`${e===1?`hsl(`:`hsla(`}${cq(this.h)}, ${lq(this.s)*100}%, ${lq(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function cq(e){return e=(e||0)%360,e<0?e+360:e}function lq(e){return Math.max(0,Math.min(1,e||0))}function uq(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var dq=e=>()=>e;function fq(e,t){return function(n){return e+n*t}}function pq(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function mq(e){return(e=+e)==1?hq:function(t,n){return n-t?pq(t,n,e):dq(isNaN(t)?n:t)}}function hq(e,t){var n=t-e;return n?fq(e,n):dq(isNaN(e)?t:e)}var gq=(function e(t){var n=mq(t);function r(e,t){var r=n((e=XK(e)).r,(t=XK(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=hq(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function _q(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;in&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:xq(r,i)})),n=wq.lastIndex;return n180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:xq(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:xq(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:xq(e,n)},{i:s-2,x:xq(t,r)})}else(n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t=0&&e._call.call(void 0,t),e=e._next;--Uq}function aJ(){Xq=(Yq=Qq.now())+Zq,Uq=Wq=0;try{iJ()}finally{Uq=0,sJ(),Xq=0}}function oJ(){var e=Qq.now(),t=e-Yq;t>Kq&&(Zq-=t,Yq=e)}function sJ(){for(var e,t=qq,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:qq=n);Jq=e,cJ(r)}function cJ(e){Uq||(Wq&&=clearTimeout(Wq),e-Xq>24?(e<1/0&&(Wq=setTimeout(aJ,e-Qq.now()-Zq)),Gq&&=clearInterval(Gq)):(Gq||=(Yq=Qq.now(),setInterval(oJ,Kq)),Uq=1,$q(aJ)))}function lJ(e,t,n){var r=new nJ;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var uJ=sW(`start`,`end`,`cancel`,`interrupt`),dJ=[];function fJ(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;gJ(e,n,{name:t,index:r,group:i,on:uJ,tween:dJ,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function pJ(e,t){var n=hJ(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function mJ(e,t){var n=hJ(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function hJ(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function gJ(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=rJ(a,0,n.time);function a(e){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=e&&o(e-n.delay)}function o(a){var l,u,d,f;if(n.state!==1)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===3)return lJ(o);f.state===4?(f.state=6,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]}a&&delete e.__transition}}function vJ(e){return this.each(function(){_J(this,e)})}function yJ(e,t){var n,r;return function(){var i=mJ(this,e),a=i.tween;if(a!==n){r=n=a;for(var o=0,s=r.length;o=0&&(e=e.slice(0,t)),!e||e===`start`})}function YJ(e,t,n){var r,i,a=JJ(t)?pJ:mJ;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function XJ(e,t){var n=this._id;return arguments.length<2?hJ(this.node(),n).on.on(e):this.each(YJ(n,e,t))}function ZJ(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function QJ(){return this.on(`end.remove`,ZJ(this._id))}function $J(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=vW(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o()=>e;function kY(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function AY(e,t,n){this.k=e,this.x=t,this.y=n}AY.prototype={constructor:AY,scale:function(e){return e===1?this:new AY(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new AY(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return`translate(`+this.x+`,`+this.y+`) scale(`+this.k+`)`}};var jY=new AY(1,0,0);MY.prototype=AY.prototype;function MY(e){for(;!e.__zoom;)if(!(e=e.parentNode))return jY;return e.__zoom}function NY(e){e.stopImmediatePropagation()}function PY(e){e.preventDefault(),e.stopImmediatePropagation()}function FY(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function IY(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute(`viewBox`)?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function LY(){return this.__zoom||jY}function RY(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function zY(){return navigator.maxTouchPoints||`ontouchstart`in this}function BY(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],a=e.invertY(t[0][1])-n[0][1],o=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function VY(){var e=FY,t=IY,n=BY,r=RY,i=zY,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=Hq,l=sW(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,LY).on(`wheel.zoom`,w,{passive:!1}).on(`mousedown.zoom`,T).on(`dblclick.zoom`,E).filter(i).on(`touchstart.zoom`,D).on(`touchmove.zoom`,O).on(`touchend.zoom touchcancel.zoom`,k).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}_.transform=function(e,t,n,r){var i=e.selection?e.selection():e;i.property(`__zoom`,LY),e===i?i.interrupt().each(function(){S(this,arguments).event(r).start().zoom(null,typeof t==`function`?t.apply(this,arguments):t).end()}):x(e,t,n,r)},_.scaleBy=function(e,t,n,r){_.scaleTo(e,function(){return this.__zoom.k*(typeof t==`function`?t.apply(this,arguments):t)},n,r)},_.scaleTo=function(e,r,i,a){_.transform(e,function(){var e=t.apply(this,arguments),a=this.__zoom,s=i==null?b(e):typeof i==`function`?i.apply(this,arguments):i,c=a.invert(s),l=typeof r==`function`?r.apply(this,arguments):r;return n(y(v(a,l),s,c),e,o)},i,a)},_.translateBy=function(e,r,i,a){_.transform(e,function(){return n(this.__zoom.translate(typeof r==`function`?r.apply(this,arguments):r,typeof i==`function`?i.apply(this,arguments):i),t.apply(this,arguments),o)},null,a)},_.translateTo=function(e,r,i,a,s){_.transform(e,function(){var e=t.apply(this,arguments),s=this.__zoom,c=a==null?b(e):typeof a==`function`?a.apply(this,arguments):a;return n(jY.translate(c[0],c[1]).scale(s.k).translate(typeof r==`function`?-r.apply(this,arguments):-r,typeof i==`function`?-i.apply(this,arguments):-i),e,o)},a,s)};function v(e,t){return t=Math.max(a[0],Math.min(a[1],t)),t===e.k?e:new AY(t,e.x,e.y)}function y(e,t,n){var r=t[0]-n[0]*e.k,i=t[1]-n[1]*e.k;return r===e.x&&i===e.y?e:new AY(e.k,r,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function x(e,n,r,i){e.on(`start.zoom`,function(){S(this,arguments).event(i).start()}).on(`interrupt.zoom end.zoom`,function(){S(this,arguments).event(i).end()}).tween(`zoom`,function(){var e=this,a=arguments,o=S(e,a).event(i),s=t.apply(e,a),l=r==null?b(s):typeof r==`function`?r.apply(e,a):r,u=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),d=e.__zoom,f=typeof n==`function`?n.apply(e,a):n,p=c(d.invert(l).concat(u/d.k),f.invert(l).concat(u/f.k));return function(e){if(e===1)e=f;else{var t=p(e),n=u/t[2];e=new AY(n,l[0]-t[0]*n,l[1]-t[1]*n)}o.zoom(null,e)}})}function S(e,t,n){return!n&&e.__zooming||new C(e,t)}function C(e,n){this.that=e,this.args=n,this.active=0,this.sourceEvent=null,this.extent=t.apply(e,n),this.taps=0}C.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit(`start`)),this},zoom:function(e,t){return this.mouse&&e!==`mouse`&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&e!==`touch`&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&e!==`touch`&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit(`zoom`),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit(`end`)),this},emit:function(e){var t=uK(this.that).datum();l.call(e,this.that,new kY(e,{sourceEvent:this.sourceEvent,target:_,type:e,transform:this.that.__zoom,dispatch:l}),t)}};function w(t,...i){if(!e.apply(this,arguments))return;var s=S(this,i).event(t),c=this.__zoom,l=Math.max(a[0],Math.min(a[1],c.k*2**r.apply(this,arguments))),u=fK(t);if(s.wheel)(s.mouse[0][0]!==u[0]||s.mouse[0][1]!==u[1])&&(s.mouse[1]=c.invert(s.mouse[0]=u)),clearTimeout(s.wheel);else if(c.k===l)return;else s.mouse=[u,c.invert(u)],_J(this),s.start();PY(t),s.wheel=setTimeout(d,m),s.zoom(`mouse`,n(y(v(c,l),s.mouse[0],s.mouse[1]),s.extent,o));function d(){s.wheel=null,s.end()}}function T(t,...r){if(f||!e.apply(this,arguments))return;var i=t.currentTarget,a=S(this,r,!0).event(t),s=uK(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=fK(t,i),l=t.clientX,u=t.clientY;_K(t.view),NY(t),a.mouse=[c,this.__zoom.invert(c)],_J(this),a.start();function d(e){if(PY(e),!a.moved){var t=e.clientX-l,r=e.clientY-u;a.moved=t*t+r*r>h}a.event(e).zoom(`mouse`,n(y(a.that.__zoom,a.mouse[0]=fK(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),vK(e.view,a.moved),PY(e),a.event(e).end()}}function E(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=fK(r.changedTouches?r.changedTouches[0]:r,this),l=a.invert(c),u=a.k*(r.shiftKey?.5:2),d=n(y(v(a,u),c,l),t.apply(this,i),o);PY(r),s>0?uK(this).transition().duration(s).call(x,d,c,r):uK(this).call(_.transform,d,c,r)}}function D(t,...n){if(e.apply(this,arguments)){var r=t.touches,i=r.length,a=S(this,n,t.changedTouches.length===i).event(t),o,s,c,l;for(NY(t),s=0;s`Seems like you have not used ${e===`svelte`?`SvelteFlowProvider`:`ReactFlowProvider`} as an ancestor. Help: https://${e}flow.dev/error#001`,error002:()=>`It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.`,error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>`The parent container needs a width and a height to render the graph.`,error005:()=>`Only child nodes can use a parent extent.`,error006:()=>`Can't create edge. An edge needs a source and a target.`,error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:t,sourceHandle:n,targetHandle:r})=>`Couldn't create edge for ${e} handle id: "${e===`source`?n:r}", edge id: ${t}.`,error010:()=>`Handle: No node id found. Make sure to only use a Handle inside a custom Node.`,error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e=`react`)=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>`useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.`,error015:()=>`It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs.`,error016:e=>`Edge with id "${e}" does not exist, it may have been removed. This can happen when an edge is deleted before the "onEdgeClick" handler is called.`},UY=[[-1/0,-1/0],[1/0,1/0]],WY=[`Enter`,` `,`Escape`],GY={"node.a11yDescription.default":`Press enter or space to select a node. Press delete to remove it and escape to cancel.`,"node.a11yDescription.keyboardDisabled":`Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.`,"node.a11yDescription.ariaLiveMessage":({direction:e,x:t,y:n})=>`Moved selected node ${e}. New position, x: ${t}, y: ${n}`,"edge.a11yDescription.default":`Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.`,"controls.ariaLabel":`Control Panel`,"controls.zoomIn.ariaLabel":`Zoom In`,"controls.zoomOut.ariaLabel":`Zoom Out`,"controls.fitView.ariaLabel":`Fit View`,"controls.interactive.ariaLabel":`Toggle Interactivity`,"minimap.ariaLabel":`Mini Map`,"handle.ariaLabel":`Handle`},KY;(function(e){e.Strict=`strict`,e.Loose=`loose`})(KY||={});var qY;(function(e){e.Free=`free`,e.Vertical=`vertical`,e.Horizontal=`horizontal`})(qY||={});var JY;(function(e){e.Partial=`partial`,e.Full=`full`})(JY||={});var YY={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null},XY;(function(e){e.Bezier=`default`,e.Straight=`straight`,e.Step=`step`,e.SmoothStep=`smoothstep`,e.SimpleBezier=`simplebezier`})(XY||={});var ZY;(function(e){e.Arrow=`arrow`,e.ArrowClosed=`arrowclosed`})(ZY||={});var $;(function(e){e.Left=`left`,e.Top=`top`,e.Right=`right`,e.Bottom=`bottom`})($||={});var QY={[$.Left]:$.Right,[$.Right]:$.Left,[$.Top]:$.Bottom,[$.Bottom]:$.Top};function $Y(e){return e===null?null:e?`valid`:`invalid`}var eX=e=>!!e&&typeof e==`object`&&`id`in e&&`source`in e&&`target`in e,tX=e=>!!e&&typeof e==`object`&&`id`in e&&`position`in e&&!(`source`in e)&&!(`target`in e),nX=e=>!!e&&typeof e==`object`&&`id`in e&&`internals`in e&&!(`source`in e)&&!(`target`in e),rX=(e,t=[0,0])=>{let{width:n,height:r}=LX(e),i=e.origin??t,a=n*i[0],o=r*i[1];return{x:e.position.x-a,y:e.position.y-o}},iX=(e,t={nodeOrigin:[0,0]})=>e.length===0?{x:0,y:0,width:0,height:0}:yX(e.reduce((e,n)=>{let r=typeof n==`string`,i=!t.nodeLookup&&!r?n:void 0;return t.nodeLookup&&(i=r?t.nodeLookup.get(n):nX(n)?n:t.nodeLookup.get(n.id)),_X(e,i?xX(i,t.nodeOrigin):{x:0,y:0,x2:0,y2:0})},{x:1/0,y:1/0,x2:-1/0,y2:-1/0})),aX=(e,t={})=>{let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0},r=!1;return e.forEach(e=>{(t.filter===void 0||t.filter(e))&&(n=_X(n,xX(e)),r=!0)}),r?yX(n):{x:0,y:0,width:0,height:0}},oX=(e,t,[n,r,i]=[0,0,1],a=!1,o=!1)=>{let s=(t.x-n)/i,c=(t.y-r)/i,l=t.width/i,u=t.height/i,d=[];for(let t of e.values()){let{measured:e,selectable:n=!0,hidden:r=!1}=t;if(o&&!n||r)continue;let i=e.width??t.width??t.initialWidth??0,f=e.height??t.height??t.initialHeight??0,{x:p,y:m}=t.internals.positionAbsolute,h=CX(s,c,l,u,p,m,i,f),g=i*f,_=a&&h>0;(!t.internals.handleBounds||_||h>=g||t.dragging)&&d.push(t)}return d},sX=(e,t)=>{let n=new Set;return e.forEach(e=>{n.add(e.id)}),t.filter(e=>n.has(e.source)||n.has(e.target))};function cX(e,t){let n=new Map,r=t?.nodes?new Set(t.nodes.map(e=>e.id)):null;return e.forEach(e=>{let i;if(t?.includeHiddenNodes){let{width:t,height:n}=LX(e);i=t>0&&n>0}else i=!!(e.measured.width&&e.measured.height&&!e.hidden);i&&(!r||r.has(e.id))&&n.set(e.id,e)}),n}async function lX({nodes:e,width:t,height:n,panZoom:r,minZoom:i,maxZoom:a},o){if(e.size===0)return!0;let s=PX(aX(cX(e,o)),t,n,o?.minZoom??i,o?.maxZoom??a,o?.padding??.1);return await r.setViewport(s,{duration:o?.duration,ease:o?.ease,interpolate:o?.interpolate}),!0}function uX({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:r=[0,0],nodeExtent:i,onError:a}){let o=n.get(e),s=o.parentId?n.get(o.parentId):void 0,{x:c,y:l}=s?s.internals.positionAbsolute:{x:0,y:0},u=o.origin??r,d=o.extent||i;if(o.extent===`parent`&&!o.expandParent){if(!s)a?.(`005`,HY.error005());else{let e=s.measured.width,t=s.measured.height;e&&t&&(d=[[c,l],[c+e,l+t]])}}else s&&IX(o.extent)&&(d=[[o.extent[0][0]+c,o.extent[0][1]+l],[o.extent[1][0]+c,o.extent[1][1]+l]]);let f=IX(d)?pX(t,d,o.measured):t;return(o.measured.width===void 0||o.measured.height===void 0)&&a?.(`015`,HY.error015()),{position:{x:f.x-c+(o.measured.width??0)*u[0],y:f.y-l+(o.measured.height??0)*u[1]},positionAbsolute:f}}async function dX({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:r,onBeforeDelete:i}){let a=new Set(e.map(e=>e.id)),o=[];for(let e of n){if(e.deletable===!1)continue;let t=a.has(e.id),n=!t&&e.parentId&&o.find(t=>t.id===e.parentId);(t||n)&&o.push(e)}let s=new Set(t.map(e=>e.id)),c=r.filter(e=>e.deletable!==!1),l=sX(o,c);for(let e of c)s.has(e.id)&&!l.find(t=>t.id===e.id)&&l.push(e);if(!i)return{edges:l,nodes:o};let u=await i({nodes:o,edges:l});return typeof u==`boolean`?u?{edges:l,nodes:o}:{edges:[],nodes:[]}:u}var fX=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),pX=(e={x:0,y:0},t,n)=>({x:fX(e.x,t[0][0],t[1][0]-(n?.width??0)),y:fX(e.y,t[0][1],t[1][1]-(n?.height??0))});function mX(e,t,n){let{width:r,height:i}=LX(n),{x:a,y:o}=n.internals.positionAbsolute;return pX(e,[[a,o],[a+r,o+i]],t)}var hX=(e,t,n)=>en?-fX(Math.abs(e-n),1,t)/t:0,gX=(e,t,n=15,r=40)=>[hX(e.x,r,t.width-r)*n,hX(e.y,r,t.height-r)*n],_X=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),vX=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),yX=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),bX=(e,t=[0,0])=>{let{x:n,y:r}=nX(e)?e.internals.positionAbsolute:rX(e,t);return{x:n,y:r,width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}},xX=(e,t=[0,0])=>{let{x:n,y:r}=nX(e)?e.internals.positionAbsolute:rX(e,t);return{x:n,y:r,x2:n+(e.measured?.width??e.width??e.initialWidth??0),y2:r+(e.measured?.height??e.height??e.initialHeight??0)}},SX=(e,t)=>yX(_X(vX(e),vX(t))),CX=(e,t,n,r,i,a,o,s)=>{let c=Math.max(0,Math.min(e+n,i+o)-Math.max(e,i)),l=Math.max(0,Math.min(t+r,a+s)-Math.max(t,a));return Math.ceil(c*l)},wX=(e,t)=>CX(e.x,e.y,e.width,e.height,t.x,t.y,t.width,t.height),TX=e=>EX(e.width)&&EX(e.height)&&EX(e.x)&&EX(e.y),EX=e=>!isNaN(e)&&isFinite(e),DX=(e,t)=>(e,t)=>{},OX=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),kX=({x:e,y:t},[n,r,i],a=!1,o=[1,1])=>{let s={x:(e-n)/i,y:(t-r)/i};return a?OX(s,o):s},AX=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r});function jX(e,t){if(typeof e==`number`)return Math.floor((t-t/(1+e))*.5);if(typeof e==`string`&&e.endsWith(`px`)){let t=parseFloat(e);if(!Number.isNaN(t))return Math.floor(t)}if(typeof e==`string`&&e.endsWith(`%`)){let n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(t*n*.01)}return console.error(`The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function MX(e,t,n){if(typeof e==`string`||typeof e==`number`){let r=jX(e,n),i=jX(e,t);return{top:r,right:i,bottom:r,left:i,x:i*2,y:r*2}}if(typeof e==`object`){let r=jX(e.top??e.y??0,n),i=jX(e.bottom??e.y??0,n),a=jX(e.left??e.x??0,t),o=jX(e.right??e.x??0,t);return{top:r,right:o,bottom:i,left:a,x:a+o,y:r+i}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function NX(e,t,n,r,i,a){let{x:o,y:s}=AX(e,[t,n,r]),{x:c,y:l}=AX({x:e.x+e.width,y:e.y+e.height},[t,n,r]),u=i-c,d=a-l;return{left:Math.floor(o),top:Math.floor(s),right:Math.floor(u),bottom:Math.floor(d)}}var PX=(e,t,n,r,i,a)=>{let o=MX(a,t,n),s=(t-o.x)/e.width,c=(n-o.y)/e.height,l=fX(Math.min(s,c),r,i),u=e.x+e.width/2,d=e.y+e.height/2,f=t/2-u*l,p=n/2-d*l,m=NX(e,f,p,l,t,n),h={left:Math.min(m.left-o.left,0),top:Math.min(m.top-o.top,0),right:Math.min(m.right-o.right,0),bottom:Math.min(m.bottom-o.bottom,0)};return{x:f-h.left+h.right,y:p-h.top+h.bottom,zoom:l}},FX=()=>typeof navigator<`u`&&navigator?.userAgent?.indexOf(`Mac`)>=0;function IX(e){return e!=null&&e!==`parent`}function LX(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function RX(e){return(e.measured?.width??e.width??e.initialWidth)!==void 0&&(e.measured?.height??e.height??e.initialHeight)!==void 0}function zX(e,t={width:0,height:0},n,r,i){let a={...e},o=r.get(n);if(o){let e=o.origin||i;a.x+=o.internals.positionAbsolute.x-(t.width??0)*e[0],a.y+=o.internals.positionAbsolute.y-(t.height??0)*e[1]}return a}function BX(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function VX(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function HX(e){return{...GY,...e||{}}}function UX(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:i}){let{x:a,y:o}=YX(e),s=kX({x:a-(i?.left??0),y:o-(i?.top??0)},r),{x:c,y:l}=n?OX(s,t):s;return{xSnapped:c,ySnapped:l,...s}}var WX=e=>({width:e.offsetWidth,height:e.offsetHeight}),GX=e=>e?.getRootNode?.()||window?.document,KX=[`INPUT`,`SELECT`,`TEXTAREA`];function qX(e){let t=e.composedPath?.()?.[0]||e.target;return t?.nodeType===1?KX.includes(t.nodeName)||t.hasAttribute(`contenteditable`)||!!t.closest(`.nokey`):!1}var JX=e=>`clientX`in e,YX=(e,t)=>{let n=JX(e),r=n?e.clientX:e.touches?.[0].clientX,i=n?e.clientY:e.touches?.[0].clientY;return{x:r-(t?.left??0),y:i-(t?.top??0)}},XX=(e,t,n,r,i)=>{let a=t.querySelectorAll(`.${e}`);return!a||!a.length?null:Array.from(a).map(t=>{let a=t.getBoundingClientRect();return{id:t.getAttribute(`data-handleid`),type:e,nodeId:i,position:t.getAttribute(`data-handlepos`),x:(a.left-n.left)/r,y:(a.top-n.top)/r,...WX(t)}})};function ZX({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:i,sourceControlY:a,targetControlX:o,targetControlY:s}){let c=e*.125+i*.375+o*.375+n*.125,l=t*.125+a*.375+s*.375+r*.125;return[c,l,Math.abs(c-e),Math.abs(l-t)]}function QX(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function $X({pos:e,x1:t,y1:n,x2:r,y2:i,c:a}){switch(e){case $.Left:return[t-QX(t-r,a),n];case $.Right:return[t+QX(r-t,a),n];case $.Top:return[t,n-QX(n-i,a)];case $.Bottom:return[t,n+QX(i-n,a)]}}function eZ({sourceX:e,sourceY:t,sourcePosition:n=$.Bottom,targetX:r,targetY:i,targetPosition:a=$.Top,curvature:o=.25}){let[s,c]=$X({pos:n,x1:e,y1:t,x2:r,y2:i,c:o}),[l,u]=$X({pos:a,x1:r,y1:i,x2:e,y2:t,c:o}),[d,f,p,m]=ZX({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:s,sourceControlY:c,targetControlX:l,targetControlY:u});return[`M${e},${t} C${s},${c} ${l},${u} ${r},${i}`,d,f,p,m]}function tZ({sourceX:e,sourceY:t,targetX:n,targetY:r}){let i=Math.abs(n-e)/2,a=n0}var iZ=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||``}-${n}${r||``}`,aZ=(e,t)=>t.some(t=>t.source===e.source&&t.target===e.target&&(t.sourceHandle===e.sourceHandle||!t.sourceHandle&&!e.sourceHandle)&&(t.targetHandle===e.targetHandle||!t.targetHandle&&!e.targetHandle)),oZ=(e,t,n={})=>{if(!e.source||!e.target)return n.onError?.(`006`,HY.error006()),t;let r=n.getEdgeId||iZ,i;return i=eX(e)?{...e}:{...e,id:r(e)},aZ(i,t)?t:(i.sourceHandle===null&&delete i.sourceHandle,i.targetHandle===null&&delete i.targetHandle,t.concat(i))};function sZ({sourceX:e,sourceY:t,targetX:n,targetY:r}){let[i,a,o,s]=tZ({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,a,o,s]}var cZ={[$.Left]:{x:-1,y:0},[$.Right]:{x:1,y:0},[$.Top]:{x:0,y:-1},[$.Bottom]:{x:0,y:1}},lZ=({source:e,sourcePosition:t=$.Bottom,target:n})=>t===$.Left||t===$.Right?e.xMath.sqrt((t.x-e.x)**2+(t.y-e.y)**2);function dZ({source:e,sourcePosition:t=$.Bottom,target:n,targetPosition:r=$.Top,center:i,offset:a,stepPosition:o}){let s=cZ[t],c=cZ[r],l={x:e.x+s.x*a,y:e.y+s.y*a},u={x:n.x+c.x*a,y:n.y+c.y*a},d=lZ({source:l,sourcePosition:t,target:u}),f=d.x===0?`y`:`x`,p=d[f],m=[],h,g,_={x:0,y:0},v={x:0,y:0},[,,y,b]=tZ({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[f]*c[f]===-1){f===`x`?(h=i.x??l.x+(u.x-l.x)*o,g=i.y??(l.y+u.y)/2):(h=i.x??(l.x+u.x)/2,g=i.y??l.y+(u.y-l.y)*o);let e=[{x:h,y:l.y},{x:h,y:u.y}],t=[{x:l.x,y:g},{x:u.x,y:g}];m=s[f]===p?f===`x`?e:t:f===`x`?t:e}else{let i=[{x:l.x,y:u.y}],o=[{x:u.x,y:l.y}];if(m=f===`x`?s.x===p?o:i:s.y===p?i:o,t===r){let t=Math.abs(e[f]-n[f]);if(t<=a){let r=Math.min(a-1,a-t);s[f]===p?_[f]=(l[f]>e[f]?-1:1)*r:v[f]=(u[f]>n[f]?-1:1)*r}}if(t!==r){let e=f===`x`?`y`:`x`,t=s[f]===c[e],n=l[e]>u[e],r=l[e]=Math.max(Math.abs(d.y-m[0].y),Math.abs(y.y-m[0].y))?(h=(d.x+y.x)/2,g=m[0].y):(h=m[0].x,g=(d.y+y.y)/2)}let x={x:l.x+_.x,y:l.y+_.y},S={x:u.x+v.x,y:u.y+v.y};return[[e,...x.x!==m[0].x||x.y!==m[0].y?[x]:[],...m,...S.x!==m[m.length-1].x||S.y!==m[m.length-1].y?[S]:[],n],h,g,y,b]}function fZ(e,t,n,r){let i=Math.min(uZ(e,t)/2,uZ(t,n)/2,r),{x:a,y:o}=t;if(e.x===a&&a===n.x||e.y===o&&o===n.y)return`L${a} ${o}`;if(e.y===o){let t=e.xe.id===t):e[0])||null}function yZ(e,t){return e?typeof e==`string`?e:`${t?`${t}__`:``}${Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(`&`)}`:``}function bZ(e,{id:t,defaultColor:n,defaultMarkerStart:r,defaultMarkerEnd:i}){let a=new Set;return e.reduce((e,o)=>([o.markerStart||r,o.markerEnd||i].forEach(r=>{if(r&&typeof r==`object`){let i=yZ(r,t);a.has(i)||(e.push({id:i,color:r.color||n,...r}),a.add(i))}}),e),[]).sort((e,t)=>e.id.localeCompare(t.id))}var xZ=1e3,SZ=10,CZ={nodeOrigin:[0,0],nodeExtent:UY,elevateNodesOnSelect:!0,zIndexMode:`basic`,defaults:{}},wZ={...CZ,checkEquality:!0};function TZ(e,t){let n={...e};for(let e in t)t[e]!==void 0&&(n[e]=t[e]);return n}function EZ(e,t,n){let r=TZ(CZ,n);for(let n of e.values())if(n.parentId)jZ(n,e,t,r);else{let e=pX(rX(n,r.nodeOrigin),IX(n.extent)?n.extent:r.nodeExtent,LX(n));n.internals.positionAbsolute=e}}function DZ(e,t){if(!e.handles)return e.measured?t?.internals.handleBounds:void 0;let n=[],r=[];for(let t of e.handles){let i={id:t.id,width:t.width??1,height:t.height??1,nodeId:e.id,x:t.x,y:t.y,position:t.position,type:t.type};t.type===`source`?n.push(i):t.type===`target`&&r.push(i)}return{source:n,target:r}}function OZ(e){return e===`manual`}function kZ(e,t,n,r={}){let i=TZ(wZ,r),a={i:0},o=new Map(t),s=i?.elevateNodesOnSelect&&!OZ(i.zIndexMode)?xZ:0,c=e.length>0,l=!1;t.clear(),n.clear();for(let u of e){let e=o.get(u.id);if(i.checkEquality&&u===e?.internals.userNode)t.set(u.id,e);else{let n=pX(rX(u,i.nodeOrigin),IX(u.extent)?u.extent:i.nodeExtent,LX(u));e={...i.defaults,...u,measured:{width:u.measured?.width,height:u.measured?.height},internals:{positionAbsolute:n,handleBounds:DZ(u,e),z:MZ(u,s,i.zIndexMode),userNode:u}},t.set(u.id,e)}(e.measured===void 0||e.measured.width===void 0||e.measured.height===void 0)&&!e.hidden&&(c=!1),u.parentId&&jZ(e,t,n,r,a),l||=u.selected??!1}return{nodesInitialized:c,hasSelectedNodes:l}}function AZ(e,t){if(!e.parentId)return;let n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}function jZ(e,t,n,r,i){let{elevateNodesOnSelect:a,nodeOrigin:o,nodeExtent:s,zIndexMode:c}=TZ(CZ,r),l=e.parentId,u=t.get(l);if(!u){console.warn(`Parent node ${l} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}AZ(e,n),i&&!u.parentId&&u.internals.rootParentIndex===void 0&&c===`auto`&&(u.internals.rootParentIndex=++i.i,u.internals.z=u.internals.z+i.i*SZ),i&&u.internals.rootParentIndex!==void 0&&(i.i=u.internals.rootParentIndex);let{x:d,y:f,z:p}=NZ(e,u,o,s,a&&!OZ(c)?xZ:0,c),{positionAbsolute:m}=e.internals,h=d!==m.x||f!==m.y;(h||p!==e.internals.z)&&t.set(e.id,{...e,internals:{...e.internals,positionAbsolute:h?{x:d,y:f}:m,z:p}})}function MZ(e,t,n){let r=EX(e.zIndex)?e.zIndex:0;return OZ(n)?r:r+(e.selected?t:0)}function NZ(e,t,n,r,i,a){let{x:o,y:s}=t.internals.positionAbsolute,c=LX(e),l=rX(e,n),u=IX(e.extent)?pX(l,e.extent,c):l,d=pX({x:o+u.x,y:s+u.y},r,c);e.extent===`parent`&&(d=mX(d,c,t));let f=MZ(e,i,a),p=t.internals.z??0;return{x:d.x,y:d.y,z:p>=f?p+1:f}}function PZ(e,t,n,r=[0,0]){let i=[],a=new Map;for(let n of e){let e=t.get(n.parentId);if(!e)continue;let r=SX(a.get(n.parentId)?.expandedRect??bX(e),n.rect);a.set(n.parentId,{expandedRect:r,parent:e})}return a.size>0&&a.forEach(({expandedRect:t,parent:a},o)=>{let s=a.internals.positionAbsolute,c=LX(a),l=a.origin??r,u=t.x0||d>0||m||h)&&(i.push({id:o,type:`position`,position:{x:a.position.x-u+m,y:a.position.y-d+h}}),n.get(o)?.forEach(t=>{e.some(e=>e.id===t.id)||i.push({id:t.id,type:`position`,position:{x:t.position.x+u,y:t.position.y+d}})})),(c.width0){let e=PZ(f,t,n,i);l.push(...e)}return{changes:l,updatedInternals:c}}async function IZ({delta:e,panZoom:t,transform:n,translateExtent:r,width:i,height:a}){if(!t||!e.x&&!e.y)return!1;let o=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[i,a]],r);return!!o&&(o.x!==n[0]||o.y!==n[1]||o.k!==n[2])}function LZ(e,t,n,r,i,a){let o=i,s=r.get(o)||new Map;r.set(o,s.set(n,t)),o=`${i}-${e}`;let c=r.get(o)||new Map;if(r.set(o,c.set(n,t)),a){o=`${i}-${e}-${a}`;let s=r.get(o)||new Map;r.set(o,s.set(n,t))}}function RZ(e,t,n){e.clear(),t.clear();for(let r of n){let{source:n,target:i,sourceHandle:a=null,targetHandle:o=null}=r,s={edgeId:r.id,source:n,target:i,sourceHandle:a,targetHandle:o},c=`${n}-${a}--${i}-${o}`;LZ(`source`,s,`${i}-${o}--${n}-${a}`,e,n,a),LZ(`target`,s,c,e,i,o),t.set(r.id,r)}}function zZ(e,t){if(!e.parentId)return!1;let n=t.get(e.parentId);return n?n.selected?!0:zZ(n,t):!1}function BZ(e,t,n){let r=e;do{if(r?.matches?.(t))return!0;if(r===n)return!1;r=r?.parentElement}while(r);return!1}function VZ(e,t,n,r){let i=new Map;for(let[a,o]of e)if((o.selected||o.id===r)&&(!o.parentId||!zZ(o,e))&&(o.draggable||t&&o.draggable===void 0)){let t=e.get(a);t&&i.set(a,{id:a,position:t.position||{x:0,y:0},distance:{x:n.x-t.internals.positionAbsolute.x,y:n.y-t.internals.positionAbsolute.y},extent:t.extent,parentId:t.parentId,origin:t.origin,expandParent:t.expandParent,internals:{positionAbsolute:t.internals.positionAbsolute||{x:0,y:0}},measured:{width:t.measured.width??0,height:t.measured.height??0}})}return i}function HZ({nodeId:e,dragItems:t,nodeLookup:n,dragging:r=!0}){let i=[];for(let[e,a]of t){let t=n.get(e)?.internals.userNode;t&&i.push({...t,position:a.position,dragging:r})}if(!e)return[i[0],i];let a=n.get(e)?.internals.userNode;return[a?{...a,position:t.get(e)?.position||a.position,dragging:r}:i[0],i]}function UZ({dragItems:e,snapGrid:t,x:n,y:r}){let i=e.values().next().value;if(!i)return null;let a={x:n-i.distance.x,y:r-i.distance.y},o=OX(a,t);return{x:o.x-a.x,y:o.y-a.y}}function WZ({onNodeMouseDown:e,getStoreItems:t,onDragStart:n,onDrag:r,onDragStop:i}){let a={x:null,y:null},o=0,s=new Map,c=!1,l={x:0,y:0},u=null,d=!1,f=null,p=!1,m=!1,h=null;function g({noDragClassName:g,handleSelector:_,domNode:v,isSelectable:y,nodeId:b,nodeClickDistance:x=0}){f=uK(v);function S({x:e,y:n}){let{nodeLookup:i,nodeExtent:o,snapGrid:c,snapToGrid:l,nodeOrigin:u,onNodeDrag:d,onSelectionDrag:f,onError:p,updateNodePositions:g}=t();a={x:e,y:n};let _=!1,v=s.size>1,y=v&&o?vX(aX(s)):null,x=v&&l?UZ({dragItems:s,snapGrid:c,x:e,y:n}):null;for(let[t,r]of s){if(!i.has(t))continue;let a={x:e-r.distance.x,y:n-r.distance.y};l&&(a=x?{x:Math.round(a.x+x.x),y:Math.round(a.y+x.y)}:OX(a,c));let s=null;if(v&&o&&!r.extent&&y){let{positionAbsolute:e}=r.internals,t=e.x-y.x+o[0][0],n=e.x+r.measured.width-y.x2+o[1][0],i=e.y-y.y+o[0][1],a=e.y+r.measured.height-y.y2+o[1][1];s=[[t,i],[n,a]]}let{position:d,positionAbsolute:f}=uX({nodeId:t,nextPosition:a,nodeLookup:i,nodeExtent:s||o,nodeOrigin:u,onError:p});_=_||r.position.x!==d.x||r.position.y!==d.y,r.position=d,r.internals.positionAbsolute=f}if(m||=_,_&&(g(s,!0),h&&(r||d||!b&&f))){let[e,t]=HZ({nodeId:b,dragItems:s,nodeLookup:i});r?.(h,s,e,t),d?.(h,e,t),b||f?.(h,t)}}async function C(){if(!u)return;let{transform:e,panBy:n,autoPanSpeed:r,autoPanOnNodeDrag:i}=t();if(!i){c=!1,cancelAnimationFrame(o);return}let[s,d]=gX(l,u,r);(s!==0||d!==0)&&(a.x=(a.x??0)-s/e[2],a.y=(a.y??0)-d/e[2],await n({x:s,y:d})&&S(a)),o=requestAnimationFrame(C)}function w(r){let{nodeLookup:i,multiSelectionActive:o,nodesDraggable:c,transform:l,snapGrid:f,snapToGrid:p,selectNodesOnDrag:m,onNodeDragStart:h,onSelectionDragStart:g,unselectNodesAndEdges:_}=t();d=!0,(!m||!y)&&!o&&b&&(i.get(b)?.selected||_()),y&&m&&b&&e?.(b);let v=UX(r.sourceEvent,{transform:l,snapGrid:f,snapToGrid:p,containerBounds:u});if(a=v,s=VZ(i,c,v,b),s.size>0&&(n||h||!b&&g)){let[e,t]=HZ({nodeId:b,dragItems:s,nodeLookup:i});n?.(r.sourceEvent,s,e,t),h?.(r.sourceEvent,e,t),b||g?.(r.sourceEvent,t)}}let T=TK().clickDistance(x).on(`start`,e=>{let{domNode:n,nodeDragThreshold:r,transform:i,snapGrid:o,snapToGrid:s}=t();u=n?.getBoundingClientRect()||null,p=!1,m=!1,h=e.sourceEvent,r===0&&w(e),a=UX(e.sourceEvent,{transform:i,snapGrid:o,snapToGrid:s,containerBounds:u}),l=YX(e.sourceEvent,u)}).on(`drag`,e=>{let{autoPanOnNodeDrag:n,transform:r,snapGrid:i,snapToGrid:o,nodeDragThreshold:f,nodeLookup:m}=t(),g=UX(e.sourceEvent,{transform:r,snapGrid:i,snapToGrid:o,containerBounds:u});if(h=e.sourceEvent,(e.sourceEvent.type===`touchmove`&&e.sourceEvent.touches.length>1||b&&!m.has(b))&&(p=!0),!p){if(!c&&n&&d&&(c=!0,C()),!d){let t=YX(e.sourceEvent,u),n=t.x-l.x,r=t.y-l.y;Math.sqrt(n*n+r*r)>f&&w(e)}(a.x!==g.xSnapped||a.y!==g.ySnapped)&&s&&d&&(l=YX(e.sourceEvent,u),S(g))}}).on(`end`,e=>{if(!d||p){p&&s.size>0&&t().updateNodePositions(s,!1);return}if(c=!1,d=!1,cancelAnimationFrame(o),s.size>0){let{nodeLookup:n,updateNodePositions:r,onNodeDragStop:a,onSelectionDragStop:o}=t();if(m&&=(r(s,!1),!1),i||a||!b&&o){let[t,r]=HZ({nodeId:b,dragItems:s,nodeLookup:n,dragging:!1});i?.(e.sourceEvent,s,t,r),a?.(e.sourceEvent,t,r),b||o?.(e.sourceEvent,r)}}}).filter(e=>{let t=e.target;return!e.button&&(!g||!BZ(t,`.${g}`,v))&&(!_||BZ(t,_,v))});f.call(T)}function _(){f?.on(`.drag`,null)}return{update:g,destroy:_}}function GZ(e,t,n){let r=[],i={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(let e of t.values())wX(i,bX(e))>0&&r.push(e);return r}var KZ=250;function qZ(e,t,n,r){let i=[],a=1/0,o=GZ(e,n,t+KZ);for(let n of o){let o=[...n.internals.handleBounds?.source??[],...n.internals.handleBounds?.target??[]];for(let s of o){if(r.nodeId===s.nodeId&&r.type===s.type&&r.id===s.id)continue;let{x:o,y:c}=_Z(n,s,s.position,!0),l=Math.sqrt((o-e.x)**2+(c-e.y)**2);l>t||(l1){let e=r.type===`source`?`target`:`source`;return i.find(t=>t.type===e)??i[0]}return i[0]}function JZ(e,t,n,r,i,a=!1){let o=r.get(e);if(!o)return null;let s=i===`strict`?o.internals.handleBounds?.[t]:[...o.internals.handleBounds?.source??[],...o.internals.handleBounds?.target??[]],c=(n?s?.find(e=>e.id===n):s?.[0])??null;return c&&a?{...c,..._Z(o,c,c.position,!0)}:c}function YZ(e,t){return e||(t?.classList.contains(`target`)?`target`:t?.classList.contains(`source`)?`source`:null)}function XZ(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}var ZZ=()=>!0;function QZ(e,{connectionMode:t,connectionRadius:n,handleId:r,nodeId:i,edgeUpdaterType:a,isTarget:o,domNode:s,nodeLookup:c,lib:l,autoPanOnConnect:u,flowId:d,panBy:f,cancelConnection:p,onConnectStart:m,onConnect:h,onConnectEnd:g,isValidConnection:_=ZZ,onReconnectEnd:v,updateConnection:y,getTransform:b,getFromHandle:x,autoPanSpeed:S,dragThreshold:C=1,handleDomNode:w}){let T=GX(e.target),E=0,D,{x:O,y:k}=YX(e),A=YZ(a,w),j=s?.getBoundingClientRect(),M=!1;if(!j||!A)return;let N=JZ(i,A,r,c,t);if(!N)return;let P=YX(e,j),F=!1,I=null,L=!1,R=null;function z(){if(!u||!j)return;let[e,t]=gX(P,j,S);f({x:e,y:t}),E=requestAnimationFrame(z)}let B={...N,nodeId:i,type:A,position:N.position},V=c.get(i),H={inProgress:!0,isValid:null,from:_Z(V,B,$.Left,!0),fromHandle:B,fromPosition:B.position,fromNode:V,to:P,toHandle:null,toPosition:QY[B.position],toNode:null,pointer:P};function ee(){M=!0,y(H),m?.(e,{nodeId:i,handleId:r,handleType:A})}C===0&&ee();function te(e){if(!M){let{x:t,y:n}=YX(e),r=t-O,i=n-k;if(!(r*r+i*i>C*C))return;ee()}if(!x()||!B){ne(e);return}let a=b();P=YX(e,j),D=qZ(kX(P,a,!1,[1,1]),n,c,B),F||=(z(),!0);let s=$Z(e,{handle:D,connectionMode:t,fromNodeId:i,fromHandleId:r,fromType:o?`target`:`source`,isValidConnection:_,doc:T,lib:l,flowId:d,nodeLookup:c});R=s.handleDomNode,I=s.connection,L=XZ(!!D,s.isValid);let u=c.get(i),f=u?_Z(u,B,$.Left,!0):H.from,p={...H,from:f,isValid:L,to:s.toHandle&&L?AX({x:s.toHandle.x,y:s.toHandle.y},a):P,toHandle:s.toHandle,toPosition:L&&s.toHandle?s.toHandle.position:QY[B.position],toNode:s.toHandle?c.get(s.toHandle.nodeId):null,pointer:P};y(p),H=p}function ne(e){if(!(`touches`in e&&e.touches.length>0)){if(M){(D||R)&&I&&L&&h?.(I);let{inProgress:t,...n}=H,r={...n,toPosition:H.toHandle?H.toPosition:null};g?.(e,r),a&&v?.(e,r)}p(),cancelAnimationFrame(E),F=!1,L=!1,I=null,R=null,T.removeEventListener(`mousemove`,te),T.removeEventListener(`mouseup`,ne),T.removeEventListener(`touchmove`,te),T.removeEventListener(`touchend`,ne)}}T.addEventListener(`mousemove`,te),T.addEventListener(`mouseup`,ne),T.addEventListener(`touchmove`,te),T.addEventListener(`touchend`,ne)}function $Z(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:i,fromType:a,doc:o,lib:s,flowId:c,isValidConnection:l=ZZ,nodeLookup:u}){let d=a===`target`,f=t?o.querySelector(`.${s}-flow__handle[data-id="${c}-${t?.nodeId}-${t?.id}-${t?.type}"]`):null,{x:p,y:m}=YX(e),h=o.elementFromPoint(p,m),g=h?.classList.contains(`${s}-flow__handle`)?h:f,_={handleDomNode:g,isValid:!1,connection:null,toHandle:null};if(g){let e=YZ(void 0,g),t=g.getAttribute(`data-nodeid`),a=g.getAttribute(`data-handleid`),o=g.classList.contains(`connectable`),s=g.classList.contains(`connectableend`);if(!t||!e)return _;let c={source:d?t:r,sourceHandle:d?a:i,target:d?r:t,targetHandle:d?i:a};_.connection=c,_.isValid=o&&s&&(n===KY.Strict?d&&e===`source`||!d&&e===`target`:t!==r||a!==i)&&l(c),_.toHandle=JZ(t,e,a,u,n,!0)}return _}var eQ={onPointerDown:QZ,isValid:$Z};function tQ({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){let i=uK(e);function a({translateExtent:e,width:a,height:o,zoomStep:s=1,pannable:c=!0,zoomable:l=!0,inversePan:u=!1}){let d=e=>{if(e.sourceEvent.type!==`wheel`||!t)return;let r=n(),i=e.sourceEvent.ctrlKey&&FX()?10:1,a=-e.sourceEvent.deltaY*(e.sourceEvent.deltaMode===1?.05:e.sourceEvent.deltaMode?1:.002)*s,o=r[2]*2**(a*i);t.scaleTo(o)},f=[0,0],p=VY().on(`start`,e=>{(e.sourceEvent.type===`mousedown`||e.sourceEvent.type===`touchstart`)&&(f=[e.sourceEvent.clientX??e.sourceEvent.touches[0].clientX,e.sourceEvent.clientY??e.sourceEvent.touches[0].clientY])}).on(`zoom`,c?i=>{let s=n();if(i.sourceEvent.type!==`mousemove`&&i.sourceEvent.type!==`touchmove`||!t)return;let c=[i.sourceEvent.clientX??i.sourceEvent.touches[0].clientX,i.sourceEvent.clientY??i.sourceEvent.touches[0].clientY],l=[c[0]-f[0],c[1]-f[1]];f=c;let d=r()*Math.max(s[2],Math.log(s[2]))*(u?-1:1),p={x:s[0]-l[0]*d,y:s[1]-l[1]*d},m=[[0,0],[a,o]];t.setViewportConstrained({x:p.x,y:p.y,zoom:s[2]},m,e)}:null).on(`zoom.wheel`,l?d:null);i.call(p,{})}function o(){i.on(`zoom`,null)}return{update:a,destroy:o,pointer:fK}}var nQ=e=>({x:e.x,y:e.y,zoom:e.k}),rQ=({x:e,y:t,zoom:n})=>jY.translate(e,t).scale(n),iQ=(e,t)=>e.target.closest(`.${t}`),aQ=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),oQ=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,sQ=(e,t=0,n=oQ,r=()=>{})=>{let i=typeof t==`number`&&t>0;return i||r(),i?e.transition().duration(t).ease(n).on(`end`,r):e},cQ=e=>{let t=e.ctrlKey&&FX()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function lQ({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:i,panOnScrollSpeed:a,zoomOnPinch:o,onPanZoomStart:s,onPanZoom:c,onPanZoomEnd:l}){return u=>{if(iQ(u,t))return u.ctrlKey&&u.preventDefault(),!1;u.preventDefault(),u.stopImmediatePropagation();let d=n.property(`__zoom`).k||1;if(u.ctrlKey&&o){let e=fK(u),t=d*2**cQ(u);r.scaleTo(n,t,e,u);return}let f=u.deltaMode===1?20:1,p=i===qY.Vertical?0:u.deltaX*f,m=i===qY.Horizontal?0:u.deltaY*f;!FX()&&u.shiftKey&&i!==qY.Vertical&&(p=u.deltaY*f,m=0),r.translateBy(n,-(p/d)*a,-(m/d)*a,{internal:!0});let h=nQ(n.property(`__zoom`));clearTimeout(e.panScrollTimeout),e.isPanScrolling?c?.(u,h):(e.isPanScrolling=!0,s?.(u,h)),e.panScrollTimeout=setTimeout(()=>{l?.(u,h),e.isPanScrolling=!1},150)}}function uQ({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,i){let a=r.type===`wheel`,o=!t&&a&&!r.ctrlKey,s=iQ(r,e);if(r.ctrlKey&&a&&s&&r.preventDefault(),o||s)return null;r.preventDefault(),n.call(this,r,i)}}function dQ({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{if(r.sourceEvent?.internal)return;let i=nQ(r.transform);e.mouseButton=r.sourceEvent?.button||0,e.isZoomingOrPanning=!0,e.prevViewport=i,r.sourceEvent?.type===`mousedown`&&t(!0),n&&n?.(r.sourceEvent,i)}}function fQ({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:i}){return a=>{e.usedRightMouseButton=!!(n&&aQ(t,e.mouseButton??0)),a.sourceEvent?.sync||r([a.transform.x,a.transform.y,a.transform.k]),i&&!a.sourceEvent?.internal&&i?.(a.sourceEvent,nQ(a.transform))}}function pQ({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:i,onPaneContextMenu:a}){return o=>{if(!o.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,a&&aQ(t,e.mouseButton??0)&&!e.usedRightMouseButton&&o.sourceEvent&&a(o.sourceEvent),e.usedRightMouseButton=!1,r(!1),i)){let t=nQ(o.transform);e.prevViewport=t,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{i?.(o.sourceEvent,t)},n?150:0)}}}function mQ({zoomActivationKeyPressed:e,zoomOnScroll:t,zoomOnPinch:n,panOnDrag:r,panOnScroll:i,zoomOnDoubleClick:a,userSelectionActive:o,noWheelClassName:s,noPanClassName:c,lib:l,connectionInProgress:u}){return d=>{let f=e||t,p=n&&d.ctrlKey,m=d.type===`wheel`;if(d.button===1&&d.type===`mousedown`&&(iQ(d,`${l}-flow__node`)||iQ(d,`${l}-flow__edge`)))return!0;if(!r&&!f&&!i&&!a&&!n||o||u&&!m||iQ(d,s)&&m||iQ(d,c)&&(!m||i&&m&&!e)||!n&&d.ctrlKey&&m)return!1;if(!n&&d.type===`touchstart`&&d.touches?.length>1)return d.preventDefault(),!1;if(!f&&!i&&!p&&m||!r&&(d.type===`mousedown`||d.type===`touchstart`)||Array.isArray(r)&&!r.includes(d.button)&&d.type===`mousedown`)return!1;let h=Array.isArray(r)&&r.includes(d.button)||!d.button||d.button<=1;return(!d.ctrlKey||m)&&h}}function hQ({domNode:e,minZoom:t,maxZoom:n,translateExtent:r,viewport:i,onPanZoom:a,onPanZoomStart:o,onPanZoomEnd:s,onDraggingChange:c}){let l={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},u=e.getBoundingClientRect(),d=[[0,0],[u.width,u.height]];(typeof ResizeObserver<`u`?new ResizeObserver(e=>{let t=e[0];t&&(d=[[0,0],[t.contentRect.width,t.contentRect.height]])}):null)?.observe(e);let f=VY().extent(()=>d).scaleExtent([t,n]).translateExtent(r),p=uK(e).call(f);y({x:i.x,y:i.y,zoom:fX(i.zoom,t,n)},[[0,0],[u.width,u.height]],r);let m=p.on(`wheel.zoom`),h=p.on(`dblclick.zoom`);f.wheelDelta(cQ);async function g(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?Oq:Hq).transform(sQ(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}function _({noWheelClassName:e,noPanClassName:t,onPaneContextMenu:n,userSelectionActive:r,panOnScroll:i,panOnDrag:u,panOnScrollMode:d,panOnScrollSpeed:g,preventScrolling:_,zoomOnPinch:y,zoomOnScroll:b,zoomOnDoubleClick:x,zoomActivationKeyPressed:S,lib:C,onTransformChange:w,connectionInProgress:T,paneClickDistance:E,selectionOnDrag:D}){r&&!l.isZoomingOrPanning&&v();let O=i&&!S&&!r;f.clickDistance(D?1/0:!EX(E)||E<0?0:E);let k=O?lQ({zoomPanValues:l,noWheelClassName:e,d3Selection:p,d3Zoom:f,panOnScrollMode:d,panOnScrollSpeed:g,zoomOnPinch:y,onPanZoomStart:o,onPanZoom:a,onPanZoomEnd:s}):uQ({noWheelClassName:e,preventScrolling:_,d3ZoomHandler:m});p.on(`wheel.zoom`,k,{passive:!1});let A=dQ({zoomPanValues:l,onDraggingChange:c,onPanZoomStart:o});f.on(`start`,A);let j=fQ({zoomPanValues:l,panOnDrag:u,onPaneContextMenu:!!n,onPanZoom:a,onTransformChange:w});f.on(`zoom`,j);let M=pQ({zoomPanValues:l,panOnDrag:u,panOnScroll:i,onPaneContextMenu:n,onPanZoomEnd:s,onDraggingChange:c});f.on(`end`,M);let N=mQ({zoomActivationKeyPressed:S,panOnDrag:u,zoomOnScroll:b,panOnScroll:i,zoomOnDoubleClick:x,zoomOnPinch:y,userSelectionActive:r,noPanClassName:t,noWheelClassName:e,lib:C,connectionInProgress:T});f.filter(N),x?p.on(`dblclick.zoom`,h):p.on(`dblclick.zoom`,null)}function v(){f.on(`zoom`,null)}async function y(e,t,n){let r=rQ(e),i=f?.constrain()(r,t,n);return i&&await g(i),i}async function b(e,t){let n=rQ(e);return await g(n,t),n}function x(e){if(p){let t=rQ(e),n=p.property(`__zoom`);(n.k!==e.zoom||n.x!==e.x||n.y!==e.y)&&f?.transform(p,t,null,{sync:!0})}}function S(){let e=p?MY(p.node()):{x:0,y:0,k:1};return{x:e.x,y:e.y,zoom:e.k}}async function C(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?Oq:Hq).scaleTo(sQ(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}async function w(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?Oq:Hq).scaleBy(sQ(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}function T(e){f?.scaleExtent(e)}function E(e){f?.translateExtent(e)}function D(e){let t=!EX(e)||e<0?0:e;f?.clickDistance(t)}return{update:_,destroy:v,setViewport:b,setViewportConstrained:y,getViewport:S,scaleTo:C,scaleBy:w,setScaleExtent:T,setTranslateExtent:E,syncViewport:x,setClickDistance:D}}var gQ;(function(e){e.Line=`line`,e.Handle=`handle`})(gQ||={});function _Q({width:e,prevWidth:t,height:n,prevHeight:r,affectsX:i,affectsY:a}){let o=e-t,s=n-r,c=[o>0?1:o<0?-1:0,s>0?1:s<0?-1:0];return o&&i&&(c[0]*=-1),s&&a&&(c[1]*=-1),c}function vQ(e){return{isHorizontal:e.includes(`right`)||e.includes(`left`),isVertical:e.includes(`bottom`)||e.includes(`top`),affectsX:e.includes(`left`),affectsY:e.includes(`top`)}}function yQ(e,t){return Math.max(0,t-e)}function bQ(e,t){return Math.max(0,e-t)}function xQ(e,t,n){return Math.max(0,t-e,e-n)}function SQ(e,t){return e?!t:t}function CQ(e,t,n,r,i,a,o,s){let{affectsX:c,affectsY:l}=t,{isHorizontal:u,isVertical:d}=t,f=u&&d,{xSnapped:p,ySnapped:m}=n,{minWidth:h,maxWidth:g,minHeight:_,maxHeight:v}=r,{x:y,y:b,width:x,height:S,aspectRatio:C}=e,w=Math.floor(u?p-e.pointerX:0),T=Math.floor(d?m-e.pointerY:0),E=x+(c?-w:w),D=S+(l?-T:T),O=-a[0]*x,k=-a[1]*S,A=xQ(E,h,g),j=xQ(D,_,v);if(o){let e=0,t=0;c&&w<0?e=yQ(y+w+O,o[0][0]):!c&&w>0&&(e=bQ(y+E+O,o[1][0])),l&&T<0?t=yQ(b+T+k,o[0][1]):!l&&T>0&&(t=bQ(b+D+k,o[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(s){let e=0,t=0;c&&w>0?e=bQ(y+w,s[0][0]):!c&&w<0&&(e=yQ(y+E,s[1][0])),l&&T>0?t=bQ(b+T,s[0][1]):!l&&T<0&&(t=yQ(b+D,s[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(i){if(u){let e=xQ(E/C,_,v)*C;if(A=Math.max(A,e),o){let e=0;e=!c&&!l||c&&!l&&f?bQ(b+k+E/C,o[1][1])*C:yQ(b+k+(c?w:-w)/C,o[0][1])*C,A=Math.max(A,e)}if(s){let e=0;e=!c&&!l||c&&!l&&f?yQ(b+E/C,s[1][1])*C:bQ(b+(c?w:-w)/C,s[0][1])*C,A=Math.max(A,e)}}if(d){let e=xQ(D*C,h,g)/C;if(j=Math.max(j,e),o){let e=0;e=!c&&!l||l&&!c&&f?bQ(y+D*C+O,o[1][0])/C:yQ(y+(l?T:-T)*C+O,o[0][0])/C,j=Math.max(j,e)}if(s){let e=0;e=!c&&!l||l&&!c&&f?yQ(y+D*C,s[1][0])/C:bQ(y+(l?T:-T)*C,s[0][0])/C,j=Math.max(j,e)}}}T+=T<0?j:-j,w+=w<0?A:-A,i&&(f?E>D*C?T=(SQ(c,l)?-w:w)/C:w=(SQ(c,l)?-T:T)*C:u?(T=w/C,l=c):(w=T*C,c=l));let M=c?y+w:y,N=l?b+T:b;return{width:x+(c?-w:w),height:S+(l?-T:T),x:a[0]*w*(c?-1:1)+M,y:a[1]*T*(l?-1:1)+N}}var wQ={width:0,height:0,x:0,y:0},TQ={...wQ,pointerX:0,pointerY:0,aspectRatio:1};function EQ(e,t,n){let r=t.position.x+e.position.x,i=t.position.y+e.position.y,a=e.measured.width??0,o=e.measured.height??0,s=n[0]*a,c=n[1]*o;return[[r-s,i-c],[r+a-s,i+o-c]]}function DQ({domNode:e,nodeId:t,getStoreItems:n,onChange:r,onEnd:i}){let a=uK(e),o={controlDirection:vQ(`bottom-right`),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function s({controlPosition:e,boundaries:s,keepAspectRatio:c,resizeDirection:l,onResizeStart:u,onResize:d,onResizeEnd:f,shouldResize:p}){let m={...wQ},h={...TQ};o={boundaries:s,resizeDirection:l,keepAspectRatio:c,controlDirection:vQ(e)};let g,_=null,v=[],y,b,x,S=!1,C=TK().on(`start`,e=>{let{nodeLookup:r,transform:i,snapGrid:a,snapToGrid:o,nodeOrigin:s,paneDomNode:c}=n();if(g=r.get(t),!g)return;_=c?.getBoundingClientRect()??null;let{xSnapped:l,ySnapped:d}=UX(e.sourceEvent,{transform:i,snapGrid:a,snapToGrid:o,containerBounds:_});m={width:g.measured.width??0,height:g.measured.height??0,x:g.position.x??0,y:g.position.y??0},h={...m,pointerX:l,pointerY:d,aspectRatio:m.width/m.height},y=void 0,b=IX(g.extent)?g.extent:void 0,g.parentId&&(g.extent===`parent`||g.expandParent)&&(y=r.get(g.parentId)),y&&g.extent===`parent`&&(b=[[0,0],[y.measured.width,y.measured.height]]),v=[],x=void 0;for(let[e,n]of r)if(n.parentId===t&&(v.push({id:e,position:{...n.position},extent:n.extent}),n.extent===`parent`||n.expandParent)){let e=EQ(n,g,n.origin??s);x=x?[[Math.min(e[0][0],x[0][0]),Math.min(e[0][1],x[0][1])],[Math.max(e[1][0],x[1][0]),Math.max(e[1][1],x[1][1])]]:e}u?.(e,{...m})}).on(`drag`,e=>{let{transform:t,snapGrid:i,snapToGrid:a,nodeOrigin:s}=n(),c=UX(e.sourceEvent,{transform:t,snapGrid:i,snapToGrid:a,containerBounds:_}),l=[];if(!g)return;let{x:u,y:f,width:C,height:w}=m,T={},E=g.origin??s,{width:D,height:O,x:k,y:A}=CQ(h,o.controlDirection,c,o.boundaries,o.keepAspectRatio,E,b,x),j=D!==C,M=O!==w,N=k!==u&&j,P=A!==f&&M;if(!N&&!P&&!j&&!M)return;if((N||P||E[0]===1||E[1]===1)&&(T.x=N?k:m.x,T.y=P?A:m.y,m.x=T.x,m.y=T.y,v.length>0)){let e=k-u,t=A-f;for(let n of v)n.position={x:n.position.x-e+E[0]*(D-C),y:n.position.y-t+E[1]*(O-w)},l.push(n)}if((j||M)&&(T.width=j&&(!o.resizeDirection||o.resizeDirection===`horizontal`)?D:m.width,T.height=M&&(!o.resizeDirection||o.resizeDirection===`vertical`)?O:m.height,m.width=T.width,m.height=T.height),y&&g.expandParent){let e=E[0]*(T.width??0);T.x&&T.x{S&&=(f?.(e,{...m}),i?.({...m}),!1)});a.call(C)}function c(){a.on(`.drag`,null)}return{update:s,destroy:c}}var OQ=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e)),destroy:()=>{n.clear()}},o=t=e(r,i,a);return a},kQ=e=>e?OQ(e):OQ,{useDebugValue:AQ}=s.default,{useSyncExternalStoreWithSelector:jQ}=Zd.default,MQ=e=>e;function NQ(e,t=MQ,n){let r=jQ(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return AQ(r),r}var PQ=(e,t)=>{let n=kQ(e),r=(e,r=t)=>NQ(n,e,r);return Object.assign(r,n),r},FQ=(e,t)=>e?PQ(e,t):PQ;function IQ(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||!Object.is(e[r],t[r]))return!1;return!0}var LQ=(0,s.createContext)(null),RQ=LQ.Provider,zQ=HY.error001(`react`);function BQ(e,t){let n=(0,s.useContext)(LQ);if(n===null)throw Error(zQ);return NQ(n,e,t)}function VQ(){let e=(0,s.useContext)(LQ);if(e===null)throw Error(zQ);return(0,s.useMemo)(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}var HQ={display:`none`},UQ={position:`absolute`,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0px, 0px, 0px, 0px)`,clipPath:`inset(100%)`},WQ=`react-flow__node-desc`,GQ=`react-flow__edge-desc`,KQ=`react-flow__aria-live`,qQ=e=>e.ariaLiveMessage,JQ=e=>e.ariaLabelConfig;function YQ({rfId:e}){let t=BQ(qQ);return(0,G.jsx)(`div`,{id:`${KQ}-${e}`,"aria-live":`assertive`,"aria-atomic":`true`,style:UQ,children:t})}function XQ({rfId:e,disableKeyboardA11y:t}){let n=BQ(JQ);return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{id:`${WQ}-${e}`,style:HQ,children:t?n[`node.a11yDescription.default`]:n[`node.a11yDescription.keyboardDisabled`]}),(0,G.jsx)(`div`,{id:`${GQ}-${e}`,style:HQ,children:n[`edge.a11yDescription.default`]}),!t&&(0,G.jsx)(YQ,{rfId:e})]})}var ZQ=(0,s.forwardRef)(({position:e=`top-left`,children:t,className:n,style:r,...i},a)=>{let o=`${e}`.split(`-`);return(0,G.jsx)(`div`,{className:aW([`react-flow__panel`,n,...o]),style:r,ref:a,...i,children:t})});ZQ.displayName=`Panel`;var QQ=`https://reactflow.dev?utm_source=attribution`;function $Q({proOptions:e,position:t=`bottom-right`}){return e?.hideAttribution?null:(0,G.jsx)(ZQ,{position:t,className:`react-flow__attribution`,"data-message":`Please only hide this attribution when you are subscribed to React Flow Pro: ${QQ}`,children:(0,G.jsx)(`a`,{href:QQ,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`React Flow attribution`,children:`React Flow`})})}var e$=e=>{let t=[],n=[];for(let[,n]of e.nodeLookup)n.selected&&t.push(n.internals.userNode);for(let[,t]of e.edgeLookup)t.selected&&n.push(t);return{selectedNodes:t,selectedEdges:n}},t$=e=>e.id;function n$(e,t){return IQ(e.selectedNodes.map(t$),t.selectedNodes.map(t$))&&IQ(e.selectedEdges.map(t$),t.selectedEdges.map(t$))}function r$({onSelectionChange:e}){let t=VQ(),{selectedNodes:n,selectedEdges:r}=BQ(e$,n$);return(0,s.useEffect)(()=>{let i={nodes:n,edges:r};e?.(i),t.getState().onSelectionChangeHandlers.forEach(e=>e(i))},[n,r,e]),null}var i$=e=>!!e.onSelectionChangeHandlers;function a$({onSelectionChange:e}){let t=BQ(i$);return e||t?(0,G.jsx)(r$,{onSelectionChange:e}):null}var o$=[0,0],s$={x:0,y:0,zoom:1},c$=[...`nodes.edges.defaultNodes.defaultEdges.onConnect.onConnectStart.onConnectEnd.onClickConnectStart.onClickConnectEnd.nodesDraggable.autoPanOnNodeFocus.nodesConnectable.nodesFocusable.edgesFocusable.edgesReconnectable.elevateNodesOnSelect.elevateEdgesOnSelect.minZoom.maxZoom.nodeExtent.onNodesChange.onEdgesChange.elementsSelectable.connectionMode.snapGrid.snapToGrid.translateExtent.connectOnClick.defaultEdgeOptions.fitView.fitViewOptions.onNodesDelete.onEdgesDelete.onDelete.onNodeDrag.onNodeDragStart.onNodeDragStop.onSelectionDrag.onSelectionDragStart.onSelectionDragStop.onMoveStart.onMove.onMoveEnd.noPanClassName.nodeOrigin.autoPanOnConnect.autoPanOnNodeDrag.onError.connectionRadius.isValidConnection.selectNodesOnDrag.nodeDragThreshold.connectionDragThreshold.onBeforeDelete.debug.autoPanSpeed.ariaLabelConfig.zIndexMode`.split(`.`),`rfId`],l$=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),u$={translateExtent:UY,nodeOrigin:o$,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:`nopan`,rfId:`1`};function d$(e){let{setNodes:t,setEdges:n,setMinZoom:r,setMaxZoom:i,setTranslateExtent:a,setNodeExtent:o,reset:c,setDefaultNodesAndEdges:l}=BQ(l$,IQ),u=VQ();(0,s.useEffect)(()=>(l(e.defaultNodes,e.defaultEdges),()=>{d.current=u$,c()}),[]);let d=(0,s.useRef)(u$);return(0,s.useEffect)(()=>{for(let s of c$){let c=e[s];c!==d.current[s]&&e[s]!==void 0&&(s===`nodes`?t(c):s===`edges`?n(c):s===`minZoom`?r(c):s===`maxZoom`?i(c):s===`translateExtent`?a(c):s===`nodeExtent`?o(c):s===`ariaLabelConfig`?u.setState({ariaLabelConfig:HX(c)}):s===`fitView`?u.setState({fitViewQueued:c}):s===`fitViewOptions`?u.setState({fitViewOptions:c}):u.setState({[s]:c}))}d.current=e},c$.map(t=>e[t])),null}function f$(){return typeof window>`u`||!window.matchMedia?null:window.matchMedia(`(prefers-color-scheme: dark)`)}function p$(e){let[t,n]=(0,s.useState)(e===`system`?null:e);return(0,s.useEffect)(()=>{if(e!==`system`){n(e);return}let t=f$(),r=()=>n(t?.matches?`dark`:`light`);return r(),t?.addEventListener(`change`,r),()=>{t?.removeEventListener(`change`,r)}},[e]),t===null?f$()?.matches?`dark`:`light`:t}var m$=typeof document<`u`?document:null;function h$(e=null,t={target:m$,actInsideInputWithModifier:!0}){let[n,r]=(0,s.useState)(!1),i=(0,s.useRef)(!1),a=(0,s.useRef)(new Set([])),[o,c]=(0,s.useMemo)(()=>{if(e!==null){let t=(Array.isArray(e)?e:[e]).filter(e=>typeof e==`string`).map(e=>e.replace(`+`,` +`).replace(` + +`,` ++`).split(` +`));return[t,t.reduce((e,t)=>e.concat(...t),[])]}return[[],[]]},[e]);return(0,s.useEffect)(()=>{let n=t?.target??m$,s=t?.actInsideInputWithModifier??!0;if(e!==null){let e=e=>{if(i.current=e.ctrlKey||e.metaKey||e.shiftKey||e.altKey,(!i.current||i.current&&!s)&&qX(e))return!1;let n=_$(e.code,c);if(a.current.add(e[n]),g$(o,a.current,!1)){let n=e.composedPath?.()?.[0]||e.target,a=n?.nodeName===`BUTTON`||n?.nodeName===`A`;t.preventDefault!==!1&&(i.current||!a)&&e.preventDefault(),r(!0)}},l=e=>{let t=_$(e.code,c);g$(o,a.current,!0)?(r(!1),a.current.clear()):a.current.delete(e[t]),e.key===`Meta`&&a.current.clear(),i.current=!1},u=()=>{a.current.clear(),r(!1)};return n?.addEventListener(`keydown`,e),n?.addEventListener(`keyup`,l),window.addEventListener(`blur`,u),window.addEventListener(`contextmenu`,u),()=>{n?.removeEventListener(`keydown`,e),n?.removeEventListener(`keyup`,l),window.removeEventListener(`blur`,u),window.removeEventListener(`contextmenu`,u)}}},[e,r]),n}function g$(e,t,n){return e.filter(e=>n||e.length===t.size).some(e=>e.every(e=>t.has(e)))}function _$(e,t){return t.includes(e)?`code`:`key`}var v$=()=>{let e=VQ();return(0,s.useMemo)(()=>({zoomIn:async t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1.2,t):!1},zoomOut:async t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,t):!1},zoomTo:async(t,n)=>{let{panZoom:r}=e.getState();return r?r.scaleTo(t,n):!1},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{let{transform:[r,i,a],panZoom:o}=e.getState();return o?(await o.setViewport({x:t.x??r,y:t.y??i,zoom:t.zoom??a},n),!0):!1},getViewport:()=>{let[t,n,r]=e.getState().transform;return{x:t,y:n,zoom:r}},setCenter:async(t,n,r)=>e.getState().setCenter(t,n,r),fitBounds:async(t,n)=>{let{width:r,height:i,minZoom:a,maxZoom:o,panZoom:s}=e.getState(),c=PX(t,r,i,a,o,n?.padding??.1);return s?(await s.setViewport(c,{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0):!1},screenToFlowPosition:(t,n={})=>{let{transform:r,snapGrid:i,snapToGrid:a,domNode:o}=e.getState();if(!o)return t;let{x:s,y:c}=o.getBoundingClientRect(),l={x:t.x-s,y:t.y-c},u=n.snapGrid??i;return kX(l,r,n.snapToGrid??a,u)},flowToScreenPosition:t=>{let{transform:n,domNode:r}=e.getState();if(!r)return t;let{x:i,y:a}=r.getBoundingClientRect(),o=AX(t,n);return{x:o.x+i,y:o.y+a}}}),[])};function y$(e,t){let n=[],r=new Map,i=[];for(let t of e)if(t.type===`add`){i.push(t);continue}else if(t.type===`remove`||t.type===`replace`)r.set(t.id,[t]);else{let e=r.get(t.id);e?e.push(t):r.set(t.id,[t])}for(let e of t){let t=r.get(e.id);if(!t){n.push(e);continue}if(t[0].type===`remove`)continue;if(t[0].type===`replace`){n.push({...t[0].item});continue}let i={...e};for(let e of t)b$(e,i);n.push(i)}return i.length&&i.forEach(e=>{e.index===void 0?n.push({...e.item}):n.splice(e.index,0,{...e.item})}),n}function b$(e,t){switch(e.type){case`select`:t.selected=e.selected;break;case`position`:e.position!==void 0&&(t.position=e.position),e.dragging!==void 0&&(t.dragging=e.dragging);break;case`dimensions`:e.dimensions!==void 0&&(t.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes===`width`)&&(t.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes===`height`)&&(t.height=e.dimensions.height))),typeof e.resizing==`boolean`&&(t.resizing=e.resizing)}}function x$(e,t){return y$(e,t)}function S$(e,t){return y$(e,t)}function C$(e,t){return{id:e,type:`select`,selected:t}}function w$(e,t=new Set,n=!1){let r=[];for(let[i,a]of e){let e=t.has(i);!(a.selected===void 0&&!e)&&a.selected!==e&&(n&&(a.selected=e),r.push(C$(a.id,e)))}return r}function T$({items:e=[],lookup:t}){let n=[],r=new Map(e.map(e=>[e.id,e]));for(let[r,i]of e.entries()){let e=t.get(i.id),a=e?.internals?.userNode??e;a!==void 0&&a!==i&&n.push({id:i.id,item:i,type:`replace`}),a===void 0&&n.push({item:i,type:`add`,index:r})}for(let[e]of t)r.get(e)===void 0&&n.push({id:e,type:`remove`});return n}function E$(e){return{id:e.id,type:`remove`}}var D$=DX(`React Flow`,`https://reactflow.dev/`);function O$(e,t,n={}){return oZ(e,t,{...n,onError:n.onError??D$})}var k$=e=>tX(e),A$=e=>eX(e);function j$(e){return(0,s.forwardRef)(e)}var M$=typeof window<`u`?s.useLayoutEffect:s.useEffect;function N$(e){let[t,n]=(0,s.useState)(BigInt(0)),[r]=(0,s.useState)(()=>P$(()=>n(e=>e+BigInt(1))));return M$(()=>{let t=r.get();t.length&&(e(t),r.reset())},[t]),r}function P$(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}var F$=(0,s.createContext)(null);function I$({children:e}){let t=VQ(),n=N$((0,s.useCallback)(e=>{let{nodes:n=[],setNodes:r,hasDefaultNodes:i,onNodesChange:a,nodeLookup:o,fitViewQueued:s,onNodesChangeMiddlewareMap:c}=t.getState(),l=n;for(let t of e)l=typeof t==`function`?t(l):t;let u=T$({items:l,lookup:o});for(let e of c.values())u=e(u);i&&r(l),u.length>0?a?.(u):s&&window.requestAnimationFrame(()=>{let{fitViewQueued:e,nodes:n,setNodes:r}=t.getState();e&&r(n)})},[])),r=N$((0,s.useCallback)(e=>{let{edges:n=[],setEdges:r,hasDefaultEdges:i,onEdgesChange:a,edgeLookup:o}=t.getState(),s=n;for(let t of e)s=typeof t==`function`?t(s):t;i?r(s):a&&a(T$({items:s,lookup:o}))},[])),i=(0,s.useMemo)(()=>({nodeQueue:n,edgeQueue:r}),[]);return(0,G.jsx)(F$.Provider,{value:i,children:e})}function L$(){let e=(0,s.useContext)(F$);if(!e)throw Error(`useBatchContext must be used within a BatchProvider`);return e}var R$=e=>!!e.panZoom;function z$(){let e=v$(),t=VQ(),n=L$(),r=BQ(R$),i=(0,s.useMemo)(()=>{let e=e=>t.getState().nodeLookup.get(e),r=e=>{n.nodeQueue.push(e)},i=e=>{n.edgeQueue.push(e)},a=e=>{let{nodeLookup:n,nodeOrigin:r}=t.getState(),i=k$(e)?e:n.get(e.id),a=i.parentId?zX(i.position,i.measured,i.parentId,n,r):i.position;return bX({...i,position:a,width:i.measured?.width??i.width,height:i.measured?.height??i.height})},o=(e,t,n={replace:!1})=>{r(r=>r.map(r=>{if(r.id===e){let e=typeof t==`function`?t(r):t;return n.replace&&k$(e)?e:{...r,...e}}return r}))},s=(e,t,n={replace:!1})=>{i(r=>r.map(r=>{if(r.id===e){let e=typeof t==`function`?t(r):t;return n.replace&&A$(e)?e:{...r,...e}}return r}))};return{getNodes:()=>t.getState().nodes.map(e=>({...e})),getNode:t=>e(t)?.internals.userNode,getInternalNode:e,getEdges:()=>{let{edges:e=[]}=t.getState();return e.map(e=>({...e}))},getEdge:e=>t.getState().edgeLookup.get(e),setNodes:r,setEdges:i,addNodes:e=>{let t=Array.isArray(e)?e:[e];n.nodeQueue.push(e=>[...e,...t])},addEdges:e=>{let t=Array.isArray(e)?e:[e];n.edgeQueue.push(e=>[...e,...t])},toObject:()=>{let{nodes:e=[],edges:n=[],transform:r}=t.getState(),[i,a,o]=r;return{nodes:e.map(e=>({...e})),edges:n.map(e=>({...e})),viewport:{x:i,y:a,zoom:o}}},deleteElements:async({nodes:e=[],edges:n=[]})=>{let{nodes:r,edges:i,onNodesDelete:a,onEdgesDelete:o,triggerNodeChanges:s,triggerEdgeChanges:c,onDelete:l,onBeforeDelete:u}=t.getState(),{nodes:d,edges:f}=await dX({nodesToRemove:e,edgesToRemove:n,nodes:r,edges:i,onBeforeDelete:u}),p=f.length>0,m=d.length>0;if(p){let e=f.map(E$);o?.(f),c(e)}if(m){let e=d.map(E$);a?.(d),s(e)}return(m||p)&&l?.({nodes:d,edges:f}),{deletedNodes:d,deletedEdges:f}},getIntersectingNodes:(e,n=!0,r)=>{let i=TX(e),o=i?e:a(e),s=r!==void 0;return o?(r||t.getState().nodes).filter(r=>{let a=t.getState().nodeLookup.get(r.id);if(a&&!i&&(r.id===e.id||!a.internals.positionAbsolute))return!1;let c=bX(s?r:a),l=wX(c,o);return n&&l>0||l>=c.width*c.height||l>=o.width*o.height}):[]},isNodeIntersecting:(e,t,n=!0)=>{let r=TX(e)?e:a(e);if(!r)return!1;let i=wX(r,t);return n&&i>0||i>=t.width*t.height||i>=r.width*r.height},updateNode:o,updateNodeData:(e,t,n={replace:!1})=>{o(e,e=>{let r=typeof t==`function`?t(e):t;return n.replace?{...e,data:r}:{...e,data:{...e.data,...r}}},n)},updateEdge:s,updateEdgeData:(e,t,n={replace:!1})=>{s(e,e=>{let r=typeof t==`function`?t(e):t;return n.replace?{...e,data:r}:{...e,data:{...e.data,...r}}},n)},getNodesBounds:e=>{let{nodeLookup:n,nodeOrigin:r}=t.getState();return iX(e,{nodeLookup:n,nodeOrigin:r})},getHandleConnections:({type:e,id:n,nodeId:r})=>Array.from(t.getState().connectionLookup.get(`${r}-${e}${n?`-${n}`:``}`)?.values()??[]),getNodeConnections:({type:e,handleId:n,nodeId:r})=>Array.from(t.getState().connectionLookup.get(`${r}${e?n?`-${e}-${n}`:`-${e}`:``}`)?.values()??[]),fitView:async e=>{let r=t.getState().fitViewResolver??VX();return t.setState({fitViewQueued:!0,fitViewOptions:e,fitViewResolver:r}),n.nodeQueue.push(e=>[...e]),r.promise}}},[]);return(0,s.useMemo)(()=>({...i,...e,viewportInitialized:r}),[r])}var B$=e=>e.selected,V$=typeof window<`u`?window:void 0;function H$({deleteKeyCode:e,multiSelectionKeyCode:t}){let n=VQ(),{deleteElements:r}=z$(),i=h$(e,{actInsideInputWithModifier:!1}),a=h$(t,{target:V$});(0,s.useEffect)(()=>{if(i){let{edges:e,nodes:t}=n.getState();r({nodes:t.filter(B$),edges:e.filter(B$)}),n.setState({nodesSelectionActive:!1})}},[i]),(0,s.useEffect)(()=>{n.setState({multiSelectionActive:a})},[a])}function U$(e){let t=VQ();(0,s.useEffect)(()=>{let n=()=>{if(!e.current||!(e.current.checkVisibility?.()??!0))return!1;let n=WX(e.current);(n.height===0||n.width===0)&&t.getState().onError?.(`004`,HY.error004()),t.setState({width:n.width||500,height:n.height||500})};if(e.current){n(),window.addEventListener(`resize`,n);let t=new ResizeObserver(()=>n());return t.observe(e.current),()=>{window.removeEventListener(`resize`,n),t&&e.current&&t.unobserve(e.current)}}},[])}var W$={position:`absolute`,width:`100%`,height:`100%`,top:0,left:0},G$=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function K$({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:r=!1,panOnScrollSpeed:i=.5,panOnScrollMode:a=qY.Free,zoomOnDoubleClick:o=!0,panOnDrag:c=!0,defaultViewport:l,translateExtent:u,minZoom:d,maxZoom:f,zoomActivationKeyCode:p,preventScrolling:m=!0,children:h,noWheelClassName:g,noPanClassName:_,onViewportChange:v,isControlledViewport:y,paneClickDistance:b,selectionOnDrag:x}){let S=VQ(),C=(0,s.useRef)(null),{userSelectionActive:w,lib:T,connectionInProgress:E}=BQ(G$,IQ),D=h$(p),O=(0,s.useRef)();U$(C);let k=(0,s.useCallback)(e=>{v?.({x:e[0],y:e[1],zoom:e[2]}),y||S.setState({transform:e})},[v,y]);return(0,s.useEffect)(()=>{if(C.current){O.current=hQ({domNode:C.current,minZoom:d,maxZoom:f,translateExtent:u,viewport:l,onDraggingChange:e=>S.setState(t=>t.paneDragging===e?t:{paneDragging:e}),onPanZoomStart:(e,t)=>{let{onViewportChangeStart:n,onMoveStart:r}=S.getState();r?.(e,t),n?.(t)},onPanZoom:(e,t)=>{let{onViewportChange:n,onMove:r}=S.getState();r?.(e,t),n?.(t)},onPanZoomEnd:(e,t)=>{let{onViewportChangeEnd:n,onMoveEnd:r}=S.getState();r?.(e,t),n?.(t)}});let{x:e,y:t,zoom:n}=O.current.getViewport();return S.setState({panZoom:O.current,transform:[e,t,n],domNode:C.current.closest(`.react-flow`)}),()=>{O.current?.destroy()}}},[]),(0,s.useEffect)(()=>{O.current?.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:r,panOnScrollSpeed:i,panOnScrollMode:a,zoomOnDoubleClick:o,panOnDrag:c,zoomActivationKeyPressed:D,preventScrolling:m,noPanClassName:_,userSelectionActive:w,noWheelClassName:g,lib:T,onTransformChange:k,connectionInProgress:E,selectionOnDrag:x,paneClickDistance:b})},[e,t,n,r,i,a,o,c,D,m,_,w,g,T,k,E,x,b]),(0,G.jsx)(`div`,{className:`react-flow__renderer`,ref:C,style:W$,children:h})}var q$=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function J$(){let{userSelectionActive:e,userSelectionRect:t}=BQ(q$,IQ);return e&&t?(0,G.jsx)(`div`,{className:`react-flow__selection react-flow__container`,style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}var Y$=(e,t)=>n=>{n.target===t.current&&e?.(n)},X$=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging,panBy:e.panBy,autoPanSpeed:e.autoPanSpeed});function Z$({isSelecting:e,selectionKeyPressed:t,selectionMode:n=JY.Full,panOnDrag:r,autoPanOnSelection:i,paneClickDistance:a,selectionOnDrag:o,onSelectionStart:c,onSelectionEnd:l,onPaneClick:u,onPaneContextMenu:d,onPaneScroll:f,onPaneMouseEnter:p,onPaneMouseMove:m,onPaneMouseLeave:h,children:g}){let _=(0,s.useRef)(0),v=VQ(),{userSelectionActive:y,elementsSelectable:b,dragging:x,panBy:S,autoPanSpeed:C}=BQ(X$,IQ),w=b&&(e||y),T=(0,s.useRef)(null),E=(0,s.useRef)(),D=(0,s.useRef)(new Set),O=(0,s.useRef)(new Set),k=(0,s.useRef)(!1),A=(0,s.useRef)(!1),j=(0,s.useRef)({x:0,y:0}),M=(0,s.useRef)(!1),N=e=>{if(A.current||k.current||v.getState().connection.inProgress){A.current=!1,k.current=!1;return}u?.(e),v.getState().resetSelectedElements(),v.setState({nodesSelectionActive:!1})},P=e=>{if(Array.isArray(r)&&r?.includes(2)){e.preventDefault();return}d?.(e)},F=f?e=>f(e):void 0,I=e=>{A.current&&=(e.stopPropagation(),!1)},L=n=>{let{domNode:r,transform:i}=v.getState();if(E.current=r?.getBoundingClientRect(),!E.current)return;let a=n.target===T.current;if(!a&&n.target.closest(`.nokey`)||!e||!(o&&a||t)||n.button!==0||!n.isPrimary)return;n.target?.setPointerCapture?.(n.pointerId),A.current=!1;let{x:s,y:c}=YX(n.nativeEvent,E.current),l=kX({x:s,y:c},i);v.setState({userSelectionRect:{width:0,height:0,startX:l.x,startY:l.y,x:s,y:c}}),a||(n.stopPropagation(),n.preventDefault())};function R(e,t){let{userSelectionRect:r}=v.getState();if(!r)return;let{transform:i,nodeLookup:a,edgeLookup:o,connectionLookup:s,triggerNodeChanges:c,triggerEdgeChanges:l,defaultEdgeOptions:u}=v.getState(),d={x:r.startX,y:r.startY},{x:f,y:p}=AX(d,i),m={startX:d.x,startY:d.y,x:ee.id)),O.current=new Set;let _=u?.selectable??!0;for(let e of D.current){let t=s.get(e);if(t)for(let{edgeId:e}of t.values()){let t=o.get(e);t&&(t.selectable??_)&&O.current.add(e)}}BX(h,D.current)||c(w$(a,D.current,!0)),BX(g,O.current)||l(w$(o,O.current)),v.setState({userSelectionRect:m,userSelectionActive:!0,nodesSelectionActive:!1})}function z(){if(!i||!E.current)return;let[e,t]=gX(j.current,E.current,C);S({x:e,y:t}).then(e=>{if(!A.current||!e){_.current=requestAnimationFrame(z);return}let{x:t,y:n}=j.current;R(t,n),_.current=requestAnimationFrame(z)})}let B=()=>{cancelAnimationFrame(_.current),_.current=0,M.current=!1};(0,s.useEffect)(()=>()=>B(),[]);let V=e=>{let{userSelectionRect:n,transform:r,resetSelectedElements:i}=v.getState();if(!E.current||!n)return;let{x:o,y:s}=YX(e.nativeEvent,E.current);j.current={x:o,y:s};let l=AX({x:n.startX,y:n.startY},r);if(!A.current){let n=t?0:a;if(Math.hypot(o-l.x,s-l.y)<=n)return;i(),c?.(e)}A.current=!0,M.current||=(z(),!0),R(o,s)},H=e=>{if(!w){e.target===T.current&&v.getState().connection.inProgress&&(k.current=!0);return}e.button===0&&(e.target?.releasePointerCapture?.(e.pointerId),!y&&e.target===T.current&&v.getState().userSelectionRect&&N?.(e),v.setState({userSelectionActive:!1,userSelectionRect:null}),A.current&&(l?.(e),v.setState({nodesSelectionActive:D.current.size>0})),B())},ee=e=>{e.target?.releasePointerCapture?.(e.pointerId),B()},te=r===!0||Array.isArray(r)&&r.includes(0);return(0,G.jsxs)(`div`,{className:aW([`react-flow__pane`,{draggable:te,dragging:x,selection:e}]),onClick:w?void 0:Y$(N,T),onContextMenu:Y$(P,T),onWheel:Y$(F,T),onPointerEnter:w?void 0:p,onPointerMove:w?V:m,onPointerUp:H,onPointerCancel:w?ee:void 0,onPointerDownCapture:w?L:void 0,onClickCapture:w?I:void 0,onPointerLeave:h,ref:T,style:W$,children:[g,(0,G.jsx)(J$,{})]})}function Q$({id:e,store:t,unselect:n=!1,nodeRef:r}){let{addSelectedNodes:i,unselectNodesAndEdges:a,multiSelectionActive:o,nodeLookup:s,onError:c}=t.getState(),l=s.get(e);if(!l){c?.(`012`,HY.error012(e));return}t.setState({nodesSelectionActive:!1}),l.selected?(n||l.selected&&o)&&(a({nodes:[l],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):i([e])}function $$({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:i,isSelectable:a,nodeClickDistance:o}){let c=VQ(),[l,u]=(0,s.useState)(!1),d=(0,s.useRef)();return(0,s.useEffect)(()=>{if(!t)return d.current=WZ({getStoreItems:()=>c.getState(),onNodeMouseDown:t=>{Q$({id:t,store:c,nodeRef:e})},onDragStart:()=>{u(!0)},onDragStop:()=>{u(!1)}}),()=>{d.current?.destroy(),d.current=void 0}},[t,c,e]),(0,s.useEffect)(()=>{t||!e.current||!d.current||d.current.update({noDragClassName:n,handleSelector:r,domNode:e.current,isSelectable:a,nodeId:i,nodeClickDistance:o})},[n,r,t,a,e,i,o]),l}var e1=e=>t=>t.selected&&(t.draggable||e&&t.draggable===void 0);function t1(){let e=VQ();return(0,s.useCallback)(t=>{let{nodeExtent:n,snapToGrid:r,snapGrid:i,nodesDraggable:a,onError:o,updateNodePositions:s,nodeLookup:c,nodeOrigin:l}=e.getState(),u=new Map,d=e1(a),f=r?i[0]:5,p=r?i[1]:5,m=t.direction.x*f*t.factor,h=t.direction.y*p*t.factor;for(let[,e]of c){if(!d(e))continue;let t={x:e.internals.positionAbsolute.x+m,y:e.internals.positionAbsolute.y+h};r&&(t=OX(t,i));let{position:a,positionAbsolute:s}=uX({nodeId:e.id,nextPosition:t,nodeLookup:c,nodeExtent:n,nodeOrigin:l,onError:o});e.position=a,e.internals.positionAbsolute=s,u.set(e.id,e)}s(u)},[])}var n1=(0,s.createContext)(null),r1=n1.Provider;n1.Consumer;var i1=()=>(0,s.useContext)(n1),a1=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),o1=(0,s.createContext)(null);function s1({children:e}){let t=BQ(a1,IQ);return(0,G.jsx)(o1.Provider,{value:t,children:e})}function c1(){let e=(0,s.useContext)(o1);if(!e)throw Error(`useHandleConfig must be used within a HandleConfigProvider`);return e}var l1={connectingFrom:!1,connectingTo:!1,clickConnecting:!1,isPossibleEndHandle:!0,connectionInProcess:!1,clickConnectionInProcess:!1,valid:!1},u1=(e,t,n)=>r=>{let{connectionClickStartHandle:i,connectionMode:a,connection:o}=r,{fromHandle:s,toHandle:c,isValid:l}=o;if(!s&&!i)return l1;let u=c?.nodeId===e&&c?.id===t&&c?.type===n;return{connectingFrom:s?.nodeId===e&&s?.id===t&&s?.type===n,connectingTo:u,clickConnecting:i?.nodeId===e&&i?.id===t&&i?.type===n,isPossibleEndHandle:a===KY.Strict?s?.type!==n:e!==s?.nodeId||t!==s?.id,connectionInProcess:!!s,clickConnectionInProcess:!!i,valid:u&&l}};function d1({type:e=`source`,position:t=$.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:i=!0,isConnectableEnd:a=!0,id:o,onConnect:s,children:c,className:l,onMouseDown:u,onTouchStart:d,...f},p){let m=o||null,h=e===`target`,g=VQ(),_=i1(),{connectOnClick:v,noPanClassName:y,rfId:b}=c1(),{connectingFrom:x,connectingTo:S,clickConnecting:C,isPossibleEndHandle:w,connectionInProcess:T,clickConnectionInProcess:E,valid:D}=BQ(u1(_,m,e),IQ);_||g.getState().onError?.(`010`,HY.error010());let O=e=>{let{defaultEdgeOptions:t,onConnect:n,hasDefaultEdges:r}=g.getState(),i={...t,...e};if(r){let{edges:e,setEdges:t,onError:n}=g.getState();t(O$(i,e,{onError:n}))}n?.(i),s?.(i)},k=e=>{if(!_)return;let t=JX(e.nativeEvent);if(i&&(t&&e.button===0||!t)){let t=g.getState();eQ.onPointerDown(e.nativeEvent,{handleDomNode:e.currentTarget,autoPanOnConnect:t.autoPanOnConnect,connectionMode:t.connectionMode,connectionRadius:t.connectionRadius,domNode:t.domNode,nodeLookup:t.nodeLookup,lib:t.lib,isTarget:h,handleId:m,nodeId:_,flowId:t.rfId,panBy:t.panBy,cancelConnection:t.cancelConnection,onConnectStart:t.onConnectStart,onConnectEnd:(...e)=>g.getState().onConnectEnd?.(...e),updateConnection:t.updateConnection,onConnect:O,isValidConnection:n||((...e)=>g.getState().isValidConnection?.(...e)??!0),getTransform:()=>g.getState().transform,getFromHandle:()=>g.getState().connection.fromHandle,autoPanSpeed:t.autoPanSpeed,dragThreshold:t.connectionDragThreshold})}t?u?.(e):d?.(e)};return(0,G.jsx)(`div`,{"data-handleid":m,"data-nodeid":_,"data-handlepos":t,"data-id":`${b}-${_}-${m}-${e}`,className:aW([`react-flow__handle`,`react-flow__handle-${t}`,`nodrag`,y,l,{source:!h,target:h,connectable:r,connectablestart:i,connectableend:a,clickconnecting:C,connectingfrom:x,connectingto:S,valid:D,connectionindicator:r&&(!T||w)&&(T||E?a:i)}]),onMouseDown:k,onTouchStart:k,onClick:v?t=>{let{onClickConnectStart:r,onClickConnectEnd:a,connectionClickStartHandle:o,connectionMode:s,isValidConnection:c,lib:l,rfId:u,nodeLookup:d,connection:f}=g.getState();if(!_||!o&&!i)return;if(!o){r?.(t.nativeEvent,{nodeId:_,handleId:m,handleType:e}),g.setState({connectionClickStartHandle:{nodeId:_,type:e,id:m}});return}let p=GX(t.target),h=n||c,{connection:v,isValid:y}=eQ.isValid(t.nativeEvent,{handle:{nodeId:_,id:m,type:e},connectionMode:s,fromNodeId:o.nodeId,fromHandleId:o.id||null,fromType:o.type,isValidConnection:h,flowId:u,doc:p,lib:l,nodeLookup:d});y&&v&&O(v);let b=structuredClone(f);delete b.inProgress,b.toPosition=b.toHandle?b.toHandle.position:null,a?.(t,b),g.setState({connectionClickStartHandle:null})}:void 0,ref:p,...f,children:c})}var f1=(0,s.memo)(j$(d1));function p1({data:e,isConnectable:t,sourcePosition:n=$.Bottom}){return(0,G.jsxs)(G.Fragment,{children:[e?.label,(0,G.jsx)(f1,{type:`source`,position:n,isConnectable:t})]})}function m1({data:e,isConnectable:t,targetPosition:n=$.Top,sourcePosition:r=$.Bottom}){return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(f1,{type:`target`,position:n,isConnectable:t}),e?.label,(0,G.jsx)(f1,{type:`source`,position:r,isConnectable:t})]})}function h1(){return null}function g1({data:e,isConnectable:t,targetPosition:n=$.Top}){return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(f1,{type:`target`,position:n,isConnectable:t}),e?.label]})}var _1={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},v1={input:p1,default:m1,output:g1,group:h1};function y1(e){return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??e.style?.width,height:e.height??e.initialHeight??e.style?.height}:{width:e.width??e.style?.width,height:e.height??e.style?.height}}var b1=e=>{let{width:t,height:n,x:r,y:i}=aX(e.nodeLookup,{filter:e=>!!e.selected});return{width:EX(t)?t:null,height:EX(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${r}px,${i}px)`}};function x1({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){let r=VQ(),{width:i,height:a,transformString:o,userSelectionActive:c}=BQ(b1,IQ),l=t1(),u=(0,s.useRef)(null);(0,s.useEffect)(()=>{n||u.current?.focus({preventScroll:!0})},[n]);let d=!c&&i!==null&&a!==null;if($$({nodeRef:u,disabled:!d}),!d)return null;let f=e?t=>{e(t,r.getState().nodes.filter(e=>e.selected))}:void 0;return(0,G.jsx)(`div`,{className:aW([`react-flow__nodesselection`,`react-flow__container`,t]),style:{transform:o},children:(0,G.jsx)(`div`,{ref:u,className:`react-flow__nodesselection-rect`,onContextMenu:f,tabIndex:n?void 0:-1,onKeyDown:n?void 0:e=>{Object.prototype.hasOwnProperty.call(_1,e.key)&&(e.preventDefault(),l({direction:_1[e.key],factor:e.shiftKey?4:1}))},style:{width:i,height:a}})})}var S1=typeof window<`u`?window:void 0,C1=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function w1({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:a,onPaneScroll:o,paneClickDistance:s,deleteKeyCode:c,selectionKeyCode:l,selectionOnDrag:u,selectionMode:d,onSelectionStart:f,onSelectionEnd:p,multiSelectionKeyCode:m,panActivationKeyCode:h,zoomActivationKeyCode:g,elementsSelectable:_,zoomOnScroll:v,zoomOnPinch:y,panOnScroll:b,panOnScrollSpeed:x,panOnScrollMode:S,zoomOnDoubleClick:C,panOnDrag:w,autoPanOnSelection:T,defaultViewport:E,translateExtent:D,minZoom:O,maxZoom:k,preventScrolling:A,onSelectionContextMenu:j,noWheelClassName:M,noPanClassName:N,disableKeyboardA11y:P,onViewportChange:F,isControlledViewport:I}){let{nodesSelectionActive:L,userSelectionActive:R}=BQ(C1,IQ),z=h$(l,{target:S1}),B=h$(h,{target:S1}),V=B||w,H=B||b,ee=u&&V!==!0,te=z||R||ee;return H$({deleteKeyCode:c,multiSelectionKeyCode:m}),(0,G.jsx)(K$,{onPaneContextMenu:a,elementsSelectable:_,zoomOnScroll:v,zoomOnPinch:y,panOnScroll:H,panOnScrollSpeed:x,panOnScrollMode:S,zoomOnDoubleClick:C,panOnDrag:!z&&V,defaultViewport:E,translateExtent:D,minZoom:O,maxZoom:k,zoomActivationKeyCode:g,preventScrolling:A,noWheelClassName:M,noPanClassName:N,onViewportChange:F,isControlledViewport:I,paneClickDistance:s,selectionOnDrag:ee,children:(0,G.jsxs)(Z$,{onSelectionStart:f,onSelectionEnd:p,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:a,onPaneScroll:o,panOnDrag:V,autoPanOnSelection:T,isSelecting:!!te,selectionMode:d,selectionKeyPressed:z,paneClickDistance:s,selectionOnDrag:ee,children:[e,L&&(0,G.jsx)(x1,{onSelectionContextMenu:j,noPanClassName:N,disableKeyboardA11y:P})]})})}w1.displayName=`FlowRenderer`;var T1=(0,s.memo)(w1),E1=e=>t=>e?oX(t.nodeLookup,{x:0,y:0,width:t.width,height:t.height},t.transform,!0).map(e=>e.id):Array.from(t.nodeLookup.keys());function D1(e){return BQ((0,s.useCallback)(E1(e),[e]),IQ)}var O1=e=>e.updateNodeInternals;function k1(){let e=BQ(O1),[t]=(0,s.useState)(()=>typeof ResizeObserver>`u`?null:new ResizeObserver(t=>{let n=new Map;t.forEach(e=>{let t=e.target.getAttribute(`data-id`);n.set(t,{id:t,nodeElement:e.target,force:!0})}),e(n)}));return(0,s.useEffect)(()=>()=>{t?.disconnect()},[t]),t}function A1({node:e,nodeType:t,hasDimensions:n,resizeObserver:r}){let i=VQ(),a=(0,s.useRef)(null),o=(0,s.useRef)(null),c=(0,s.useRef)(e.sourcePosition),l=(0,s.useRef)(e.targetPosition),u=(0,s.useRef)(t),d=n&&!!e.internals.handleBounds;return(0,s.useEffect)(()=>{a.current&&!e.hidden&&(!d||o.current!==a.current)&&(o.current&&r?.unobserve(o.current),r?.observe(a.current),o.current=a.current)},[d,e.hidden]),(0,s.useEffect)(()=>()=>{o.current&&=(r?.unobserve(o.current),null)},[]),(0,s.useEffect)(()=>{if(a.current){let n=u.current!==t,r=c.current!==e.sourcePosition,o=l.current!==e.targetPosition;(n||r||o)&&(u.current=t,c.current=e.sourcePosition,l.current=e.targetPosition,i.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:a.current,force:!0}]])))}},[e.id,t,e.sourcePosition,e.targetPosition]),a}function j1({id:e,onClick:t,onMouseEnter:n,onMouseMove:r,onMouseLeave:i,onContextMenu:a,onDoubleClick:o,nodesDraggable:s,elementsSelectable:c,nodesConnectable:l,nodesFocusable:u,resizeObserver:d,noDragClassName:f,noPanClassName:p,disableKeyboardA11y:m,rfId:h,nodeTypes:g,nodeClickDistance:_,onError:v}){let{node:y,internals:b,isParent:x}=BQ(t=>{let n=t.nodeLookup.get(e),r=t.parentLookup.has(e);return{node:n,internals:n.internals,isParent:r}},IQ),S=y.type||`default`,C=g?.[S]||v1[S];C===void 0&&(v?.(`003`,HY.error003(S)),S=`default`,C=g?.default||v1.default);let w=!!(y.draggable||s&&y.draggable===void 0),T=!!(y.selectable||c&&y.selectable===void 0),E=!!(y.connectable||l&&y.connectable===void 0),D=!!(y.focusable||u&&y.focusable===void 0),O=VQ(),k=RX(y),A=A1({node:y,nodeType:S,hasDimensions:k,resizeObserver:d}),j=$$({nodeRef:A,disabled:y.hidden||!w,noDragClassName:f,handleSelector:y.dragHandle,nodeId:e,isSelectable:T,nodeClickDistance:_}),M=t1();if(y.hidden)return null;let N=LX(y),P=y1(y),F=T||w||t||n||r||i,I=n?e=>n(e,{...b.userNode}):void 0,L=r?e=>r(e,{...b.userNode}):void 0,R=i?e=>i(e,{...b.userNode}):void 0,z=a?e=>a(e,{...b.userNode}):void 0,B=o?e=>o(e,{...b.userNode}):void 0,V=n=>{let{selectNodesOnDrag:r,nodeDragThreshold:i}=O.getState();T&&(!r||!w||i>0)&&Q$({id:e,store:O,nodeRef:A}),t&&t(n,{...b.userNode})},H=t=>{if(!(qX(t.nativeEvent)||m)){if(WY.includes(t.key)&&T){let n=t.key===`Escape`;Q$({id:e,store:O,unselect:n,nodeRef:A})}else if(w&&y.selected&&Object.prototype.hasOwnProperty.call(_1,t.key)){t.preventDefault();let{ariaLabelConfig:e}=O.getState();O.setState({ariaLiveMessage:e[`node.a11yDescription.ariaLiveMessage`]({direction:t.key.replace(`Arrow`,``).toLowerCase(),x:~~b.positionAbsolute.x,y:~~b.positionAbsolute.y})}),M({direction:_1[t.key],factor:t.shiftKey?4:1})}}},ee=()=>{if(m||!A.current?.matches(`:focus-visible`))return;let{transform:t,width:n,height:r,autoPanOnNodeFocus:i,setCenter:a}=O.getState();i&&(oX(new Map([[e,y]]),{x:0,y:0,width:n,height:r},t,!0).length>0||a(y.position.x+N.width/2,y.position.y+N.height/2,{zoom:t[2]}))};return(0,G.jsx)(`div`,{className:aW([`react-flow__node`,`react-flow__node-${S}`,{[p]:w},y.className,{selected:y.selected,selectable:T,parent:x,draggable:w,dragging:j}]),ref:A,style:{zIndex:b.z,transform:`translate(${b.positionAbsolute.x}px,${b.positionAbsolute.y}px)`,pointerEvents:F?`all`:`none`,visibility:k?`visible`:`hidden`,...y.style,...P},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:I,onMouseMove:L,onMouseLeave:R,onContextMenu:z,onClick:V,onDoubleClick:B,onKeyDown:D?H:void 0,tabIndex:D?0:void 0,onFocus:D?ee:void 0,role:y.ariaRole??(D?`group`:void 0),"aria-roledescription":`node`,"aria-describedby":m?void 0:`${WQ}-${h}`,"aria-label":y.ariaLabel,...y.domAttributes,children:(0,G.jsx)(r1,{value:e,children:(0,G.jsx)(C,{id:e,data:y.data,type:S,positionAbsoluteX:b.positionAbsolute.x,positionAbsoluteY:b.positionAbsolute.y,selected:y.selected??!1,selectable:T,draggable:w,deletable:y.deletable??!0,isConnectable:E,sourcePosition:y.sourcePosition,targetPosition:y.targetPosition,dragging:j,dragHandle:y.dragHandle,zIndex:b.z,parentId:y.parentId,...N})})})}var M1=(0,s.memo)(j1),N1=e=>({nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function P1(e){let{nodesConnectable:t,nodesFocusable:n,elementsSelectable:r,onError:i}=BQ(N1,IQ),a=D1(e.onlyRenderVisibleElements),o=k1();return(0,G.jsx)(`div`,{className:`react-flow__nodes`,style:W$,children:a.map(a=>(0,G.jsx)(M1,{id:a,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:o,nodesDraggable:e.nodesDraggable??!0,nodesConnectable:t,nodesFocusable:n,elementsSelectable:r,nodeClickDistance:e.nodeClickDistance,onError:i},a))})}P1.displayName=`NodeRenderer`;var F1=(0,s.memo)(P1);function I1(e){return BQ((0,s.useCallback)(t=>{if(!e)return t.edges.map(e=>e.id);let n=[];if(t.width&&t.height)for(let e of t.edges){let r=t.nodeLookup.get(e.source),i=t.nodeLookup.get(e.target);r&&i&&rZ({sourceNode:r,targetNode:i,width:t.width,height:t.height,transform:t.transform})&&n.push(e.id)}return n},[e]),IQ)}var L1=({color:e=`none`,strokeWidth:t=1})=>{let n={strokeWidth:t,...e&&{stroke:e}};return(0,G.jsx)(`polyline`,{className:`arrow`,style:n,strokeLinecap:`round`,fill:`none`,strokeLinejoin:`round`,points:`-5,-4 0,0 -5,4`})},R1=({color:e=`none`,strokeWidth:t=1})=>{let n={strokeWidth:t,...e&&{stroke:e,fill:e}};return(0,G.jsx)(`polyline`,{className:`arrowclosed`,style:n,strokeLinecap:`round`,strokeLinejoin:`round`,points:`-5,-4 0,0 -5,4 -5,-4`})},z1={[ZY.Arrow]:L1,[ZY.ArrowClosed]:R1};function B1(e){let t=VQ();return(0,s.useMemo)(()=>Object.prototype.hasOwnProperty.call(z1,e)?z1[e]:(t.getState().onError?.(`009`,HY.error009(e)),null),[e])}var V1=({id:e,type:t,color:n,width:r=12.5,height:i=12.5,markerUnits:a=`strokeWidth`,strokeWidth:o,orient:s=`auto-start-reverse`})=>{let c=B1(t);return c?(0,G.jsx)(`marker`,{className:`react-flow__arrowhead`,id:e,markerWidth:`${r}`,markerHeight:`${i}`,viewBox:`-10 -10 20 20`,markerUnits:a,orient:s,refX:`0`,refY:`0`,children:(0,G.jsx)(c,{color:n,strokeWidth:o})}):null},H1=({defaultColor:e,rfId:t})=>{let n=BQ(e=>e.edges),r=BQ(e=>e.defaultEdgeOptions),i=(0,s.useMemo)(()=>bZ(n,{id:t,defaultColor:e,defaultMarkerStart:r?.markerStart,defaultMarkerEnd:r?.markerEnd}),[n,r,t,e]);return i.length?(0,G.jsx)(`svg`,{className:`react-flow__marker`,"aria-hidden":`true`,children:(0,G.jsx)(`defs`,{children:i.map(e=>(0,G.jsx)(V1,{id:e.id,type:e.type,color:e.color,width:e.width,height:e.height,markerUnits:e.markerUnits,strokeWidth:e.strokeWidth,orient:e.orient},e.id))})}):null};H1.displayName=`MarkerDefinitions`;var U1=(0,s.memo)(H1);function W1({x:e,y:t,label:n,labelStyle:r,labelShowBg:i=!0,labelBgStyle:a,labelBgPadding:o=[2,4],labelBgBorderRadius:c=2,children:l,className:u,...d}){let[f,p]=(0,s.useState)({x:1,y:0,width:0,height:0}),m=aW([`react-flow__edge-textwrapper`,u]),h=(0,s.useRef)(null);return(0,s.useEffect)(()=>{if(h.current){let e=h.current.getBBox();p({x:e.x,y:e.y,width:e.width,height:e.height})}},[n]),n?(0,G.jsxs)(`g`,{transform:`translate(${e-f.width/2} ${t-f.height/2})`,className:m,visibility:f.width?`visible`:`hidden`,...d,children:[i&&(0,G.jsx)(`rect`,{width:f.width+2*o[0],x:-o[0],y:-o[1],height:f.height+2*o[1],className:`react-flow__edge-textbg`,style:a,rx:c,ry:c}),(0,G.jsx)(`text`,{className:`react-flow__edge-text`,y:f.height/2,dy:`0.3em`,ref:h,style:r,children:n}),l]}):null}W1.displayName=`EdgeText`;var G1=(0,s.memo)(W1);function K1({path:e,labelX:t,labelY:n,label:r,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:s,labelBgBorderRadius:c,interactionWidth:l=20,...u}){return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`path`,{...u,d:e,fill:`none`,className:aW([`react-flow__edge-path`,u.className])}),l?(0,G.jsx)(`path`,{d:e,fill:`none`,strokeOpacity:0,strokeWidth:l,className:`react-flow__edge-interaction`}):null,r&&EX(t)&&EX(n)?(0,G.jsx)(G1,{x:t,y:n,label:r,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:s,labelBgBorderRadius:c}):null]})}function q1({pos:e,x1:t,y1:n,x2:r,y2:i}){return e===$.Left||e===$.Right?[.5*(t+r),n]:[t,.5*(n+i)]}function J1({sourceX:e,sourceY:t,sourcePosition:n=$.Bottom,targetX:r,targetY:i,targetPosition:a=$.Top}){let[o,s]=q1({pos:n,x1:e,y1:t,x2:r,y2:i}),[c,l]=q1({pos:a,x1:r,y1:i,x2:e,y2:t}),[u,d,f,p]=ZX({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:o,sourceControlY:s,targetControlX:c,targetControlY:l});return[`M${e},${t} C${o},${s} ${c},${l} ${r},${i}`,u,d,f,p]}function Y1(e){return(0,s.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,sourcePosition:o,targetPosition:s,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:_})=>{let[v,y,b]=J1({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s}),x=e.isInternal?void 0:t;return(0,G.jsx)(K1,{id:x,path:v,labelX:y,labelY:b,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:_})})}var X1=Y1({isInternal:!1}),Z1=Y1({isInternal:!0});X1.displayName=`SimpleBezierEdge`,Z1.displayName=`SimpleBezierEdgeInternal`;function Q1(e){return(0,s.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,sourcePosition:p=$.Bottom,targetPosition:m=$.Top,markerEnd:h,markerStart:g,pathOptions:_,interactionWidth:v})=>{let[y,b,x]=pZ({sourceX:n,sourceY:r,sourcePosition:p,targetX:i,targetY:a,targetPosition:m,borderRadius:_?.borderRadius,offset:_?.offset,stepPosition:_?.stepPosition}),S=e.isInternal?void 0:t;return(0,G.jsx)(K1,{id:S,path:y,labelX:b,labelY:x,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:g,interactionWidth:v})})}var $1=Q1({isInternal:!1}),e0=Q1({isInternal:!0});$1.displayName=`SmoothStepEdge`,e0.displayName=`SmoothStepEdgeInternal`;function t0(e){return(0,s.memo)(({id:t,...n})=>{let r=e.isInternal?void 0:t;return(0,G.jsx)($1,{...n,id:r,pathOptions:(0,s.useMemo)(()=>({borderRadius:0,offset:n.pathOptions?.offset}),[n.pathOptions?.offset])})})}var n0=t0({isInternal:!1}),r0=t0({isInternal:!0});n0.displayName=`StepEdge`,r0.displayName=`StepEdgeInternal`;function i0(e){return(0,s.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:p,markerStart:m,interactionWidth:h})=>{let[g,_,v]=sZ({sourceX:n,sourceY:r,targetX:i,targetY:a}),y=e.isInternal?void 0:t;return(0,G.jsx)(K1,{id:y,path:g,labelX:_,labelY:v,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:p,markerStart:m,interactionWidth:h})})}var a0=i0({isInternal:!1}),o0=i0({isInternal:!0});a0.displayName=`StraightEdge`,o0.displayName=`StraightEdgeInternal`;function s0(e){return(0,s.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,sourcePosition:o=$.Bottom,targetPosition:s=$.Top,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,pathOptions:_,interactionWidth:v})=>{let[y,b,x]=eZ({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s,curvature:_?.curvature}),S=e.isInternal?void 0:t;return(0,G.jsx)(K1,{id:S,path:y,labelX:b,labelY:x,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:v})})}var c0=s0({isInternal:!1}),l0=s0({isInternal:!0});c0.displayName=`BezierEdge`,l0.displayName=`BezierEdgeInternal`;var u0={default:l0,straight:o0,step:r0,smoothstep:e0,simplebezier:Z1},d0={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null,zIndex:void 0},f0=(e,t,n)=>n===$.Left?e-t:n===$.Right?e+t:e,p0=(e,t,n)=>n===$.Top?e-t:n===$.Bottom?e+t:e,m0=`react-flow__edgeupdater`;function h0({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:i,onMouseEnter:a,onMouseOut:o,type:s}){return(0,G.jsx)(`circle`,{onMouseDown:i,onMouseEnter:a,onMouseOut:o,className:aW([m0,`${m0}-${s}`]),cx:f0(t,r,e),cy:p0(n,r,e),r,stroke:`transparent`,fill:`transparent`})}function g0({isReconnectable:e,reconnectRadius:t,edge:n,sourceX:r,sourceY:i,targetX:a,targetY:o,sourcePosition:s,targetPosition:c,onReconnect:l,onReconnectStart:u,onReconnectEnd:d,setReconnecting:f,setUpdateHover:p}){let m=VQ(),h=(e,t)=>{if(e.button!==0)return;let{autoPanOnConnect:r,domNode:i,connectionMode:a,connectionRadius:o,lib:s,onConnectStart:c,cancelConnection:p,nodeLookup:h,rfId:g,panBy:_,updateConnection:v}=m.getState(),y=t.type===`target`;eQ.onPointerDown(e.nativeEvent,{autoPanOnConnect:r,connectionMode:a,connectionRadius:o,domNode:i,handleId:t.id,nodeId:t.nodeId,nodeLookup:h,isTarget:y,edgeUpdaterType:t.type,lib:s,flowId:g,cancelConnection:p,panBy:_,isValidConnection:(...e)=>m.getState().isValidConnection?.(...e)??!0,onConnect:e=>l?.(n,e),onConnectStart:(r,i)=>{f(!0),u?.(e,n,t.type),c?.(r,i)},onConnectEnd:(...e)=>m.getState().onConnectEnd?.(...e),onReconnectEnd:(e,r)=>{f(!1),d?.(e,n,t.type,r)},updateConnection:v,getTransform:()=>m.getState().transform,getFromHandle:()=>m.getState().connection.fromHandle,dragThreshold:m.getState().connectionDragThreshold,handleDomNode:e.currentTarget})},g=e=>h(e,{nodeId:n.target,id:n.targetHandle??null,type:`target`}),_=e=>h(e,{nodeId:n.source,id:n.sourceHandle??null,type:`source`}),v=()=>p(!0),y=()=>p(!1);return(0,G.jsxs)(G.Fragment,{children:[(e===!0||e===`source`)&&(0,G.jsx)(h0,{position:s,centerX:r,centerY:i,radius:t,onMouseDown:g,onMouseEnter:v,onMouseOut:y,type:`source`}),(e===!0||e===`target`)&&(0,G.jsx)(h0,{position:c,centerX:a,centerY:o,radius:t,onMouseDown:_,onMouseEnter:v,onMouseOut:y,type:`target`})]})}function _0({id:e,edgesFocusable:t,edgesReconnectable:n,elementsSelectable:r,onClick:i,onDoubleClick:a,onContextMenu:o,onMouseEnter:c,onMouseMove:l,onMouseLeave:u,reconnectRadius:d,onReconnect:f,onReconnectStart:p,onReconnectEnd:m,rfId:h,edgeTypes:g,noPanClassName:_,onError:v,disableKeyboardA11y:y}){let b=BQ(t=>t.edgeLookup.get(e)),x=BQ(e=>e.defaultEdgeOptions);b=x?{...x,...b}:b;let S=b.type||`default`,C=g?.[S]||u0[S];C===void 0&&(v?.(`011`,HY.error011(S)),S=`default`,C=g?.default||u0.default);let w=!!(b.focusable||t&&b.focusable===void 0),T=f!==void 0&&(b.reconnectable||n&&b.reconnectable===void 0),E=!!(b.selectable||r&&b.selectable===void 0),D=(0,s.useRef)(null),[O,k]=(0,s.useState)(!1),[A,j]=(0,s.useState)(!1),M=VQ(),{zIndex:N=b.zIndex,sourceX:P,sourceY:F,targetX:I,targetY:L,sourcePosition:R,targetPosition:z}=BQ((0,s.useCallback)(t=>{let n=t.nodeLookup.get(b.source),r=t.nodeLookup.get(b.target);if(!n||!r)return d0;let i=hZ({id:e,sourceNode:n,targetNode:r,sourceHandle:b.sourceHandle||null,targetHandle:b.targetHandle||null,connectionMode:t.connectionMode,onError:v}),a=nZ({selected:b.selected,zIndex:b.zIndex,sourceNode:n,targetNode:r,elevateOnSelect:t.elevateEdgesOnSelect,zIndexMode:t.zIndexMode});return{...i||d0,zIndex:a}},[b.source,b.target,b.sourceHandle,b.targetHandle,b.selected,b.zIndex]),IQ),B=(0,s.useMemo)(()=>b.markerStart?`url('#${yZ(b.markerStart,h)}')`:void 0,[b.markerStart,h]),V=(0,s.useMemo)(()=>b.markerEnd?`url('#${yZ(b.markerEnd,h)}')`:void 0,[b.markerEnd,h]);if(b.hidden||P===null||F===null||I===null||L===null)return null;let H=t=>{let{addSelectedEdges:n,unselectNodesAndEdges:r,multiSelectionActive:a}=M.getState();E&&(M.setState({nodesSelectionActive:!1}),b.selected&&a?(r({nodes:[],edges:[b]}),D.current?.blur()):n([e])),i&&i(t,b)},ee=a?e=>{a(e,{...b})}:void 0,te=o?e=>{o(e,{...b})}:void 0,ne=c?e=>{c(e,{...b})}:void 0,U=l?e=>{l(e,{...b})}:void 0,re=u?e=>{u(e,{...b})}:void 0;return(0,G.jsx)(`svg`,{style:{zIndex:N},children:(0,G.jsxs)(`g`,{className:aW([`react-flow__edge`,`react-flow__edge-${S}`,b.className,_,{selected:b.selected,animated:b.animated,inactive:!E&&!i,updating:O,selectable:E}]),onClick:H,onDoubleClick:ee,onContextMenu:te,onMouseEnter:ne,onMouseMove:U,onMouseLeave:re,onKeyDown:w?t=>{if(!y&&WY.includes(t.key)&&E){let{unselectNodesAndEdges:n,addSelectedEdges:r}=M.getState();t.key===`Escape`?(D.current?.blur(),n({edges:[b]})):r([e])}}:void 0,tabIndex:w?0:void 0,role:b.ariaRole??(w?`group`:`img`),"aria-roledescription":`edge`,"data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":b.ariaLabel===null?void 0:b.ariaLabel||`Edge from ${b.source} to ${b.target}`,"aria-describedby":w?`${GQ}-${h}`:void 0,ref:D,...b.domAttributes,children:[!A&&(0,G.jsx)(C,{id:e,source:b.source,target:b.target,type:b.type,selected:b.selected,animated:b.animated,selectable:E,deletable:b.deletable??!0,label:b.label,labelStyle:b.labelStyle,labelShowBg:b.labelShowBg,labelBgStyle:b.labelBgStyle,labelBgPadding:b.labelBgPadding,labelBgBorderRadius:b.labelBgBorderRadius,sourceX:P,sourceY:F,targetX:I,targetY:L,sourcePosition:R,targetPosition:z,data:b.data,style:b.style,sourceHandleId:b.sourceHandle,targetHandleId:b.targetHandle,markerStart:B,markerEnd:V,pathOptions:`pathOptions`in b?b.pathOptions:void 0,interactionWidth:b.interactionWidth}),T&&(0,G.jsx)(g0,{edge:b,isReconnectable:T,reconnectRadius:d,onReconnect:f,onReconnectStart:p,onReconnectEnd:m,sourceX:P,sourceY:F,targetX:I,targetY:L,sourcePosition:R,targetPosition:z,setUpdateHover:k,setReconnecting:j})]})})}var v0=(0,s.memo)(_0),y0=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function b0({defaultMarkerColor:e,onlyRenderVisibleElements:t,rfId:n,edgeTypes:r,noPanClassName:i,onReconnect:a,onEdgeContextMenu:o,onEdgeMouseEnter:s,onEdgeMouseMove:c,onEdgeMouseLeave:l,onEdgeClick:u,reconnectRadius:d,onEdgeDoubleClick:f,onReconnectStart:p,onReconnectEnd:m,disableKeyboardA11y:h}){let{edgesFocusable:g,edgesReconnectable:_,elementsSelectable:v,onError:y}=BQ(y0,IQ),b=I1(t);return(0,G.jsxs)(`div`,{className:`react-flow__edges`,children:[(0,G.jsx)(U1,{defaultColor:e,rfId:n}),b.map(e=>(0,G.jsx)(v0,{id:e,edgesFocusable:g,edgesReconnectable:_,elementsSelectable:v,noPanClassName:i,onReconnect:a,onContextMenu:o,onMouseEnter:s,onMouseMove:c,onMouseLeave:l,onClick:u,reconnectRadius:d,onDoubleClick:f,onReconnectStart:p,onReconnectEnd:m,rfId:n,onError:y,edgeTypes:r,disableKeyboardA11y:h},e))]})}b0.displayName=`EdgeRenderer`;var x0=(0,s.memo)(b0),S0=e=>`translate(${e[0]}px,${e[1]}px) scale(${e[2]})`;function C0({children:e}){let t=VQ(),n=(0,s.useRef)(null),[r]=(0,s.useState)(()=>t.getState().transform);return M$(()=>{let e=null,r=()=>{let r=t.getState().transform;e&&r[0]===e[0]&&r[1]===e[1]&&r[2]===e[2]||(e=r,n.current&&(n.current.style.transform=S0(r)))};return r(),t.subscribe(r)},[t]),(0,G.jsx)(`div`,{ref:n,className:`react-flow__viewport xyflow__viewport react-flow__container`,style:{transform:S0(r)},children:e})}function w0(e){let t=z$(),n=(0,s.useRef)(!1);(0,s.useEffect)(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}var T0=e=>e.panZoom?.syncViewport;function E0(e){let t=BQ(T0),n=VQ();return(0,s.useEffect)(()=>{e&&(t?.(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t]),null}function D0(e){return e.connection.inProgress?{...e.connection,to:kX(e.connection.to,e.transform)}:{...e.connection}}function O0(e){return e?t=>e(D0(t)):D0}function k0(e){return BQ(O0(e),IQ)}var A0=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function j0({containerStyle:e,style:t,type:n,component:r}){let{nodesConnectable:i,width:a,height:o,isValid:s,inProgress:c}=BQ(A0,IQ);return a&&i&&c?(0,G.jsx)(`svg`,{style:e,width:a,height:o,className:`react-flow__connectionline react-flow__container`,children:(0,G.jsx)(`g`,{className:aW([`react-flow__connection`,$Y(s)]),children:(0,G.jsx)(M0,{style:t,type:n,CustomComponent:r,isValid:s})})}):null}var M0=({style:e,type:t=XY.Bezier,CustomComponent:n,isValid:r})=>{let{inProgress:i,from:a,fromNode:o,fromHandle:s,fromPosition:c,to:l,toNode:u,toHandle:d,toPosition:f,pointer:p}=k0();if(!i)return;if(n)return(0,G.jsx)(n,{connectionLineType:t,connectionLineStyle:e,fromNode:o,fromHandle:s,fromX:a.x,fromY:a.y,toX:l.x,toY:l.y,fromPosition:c,toPosition:f,connectionStatus:$Y(r),toNode:u,toHandle:d,pointer:p});let m=``,h={sourceX:a.x,sourceY:a.y,sourcePosition:c,targetX:l.x,targetY:l.y,targetPosition:f};switch(t){case XY.Bezier:[m]=eZ(h);break;case XY.SimpleBezier:[m]=J1(h);break;case XY.Step:[m]=pZ({...h,borderRadius:0});break;case XY.SmoothStep:[m]=pZ(h);break;default:[m]=sZ(h)}return(0,G.jsx)(`path`,{d:m,fill:`none`,className:`react-flow__connection-path`,style:e})};M0.displayName=`ConnectionLine`;var N0={};function P0(e=N0){(0,s.useRef)(e),VQ(),(0,s.useEffect)(()=>{},[e])}function F0(){VQ(),(0,s.useRef)(!1),(0,s.useEffect)(()=>{},[])}function I0({nodeTypes:e,edgeTypes:t,onInit:n,onNodeClick:r,onEdgeClick:i,onNodeDoubleClick:a,onEdgeDoubleClick:o,onNodeMouseEnter:s,onNodeMouseMove:c,onNodeMouseLeave:l,onNodeContextMenu:u,onSelectionContextMenu:d,onSelectionStart:f,onSelectionEnd:p,connectionLineType:m,connectionLineStyle:h,connectionLineComponent:g,connectionLineContainerStyle:_,selectionKeyCode:v,selectionOnDrag:y,selectionMode:b,multiSelectionKeyCode:x,panActivationKeyCode:S,zoomActivationKeyCode:C,deleteKeyCode:w,onlyRenderVisibleElements:T,elementsSelectable:E,defaultViewport:D,translateExtent:O,minZoom:k,maxZoom:A,preventScrolling:j,defaultMarkerColor:M,zoomOnScroll:N,zoomOnPinch:P,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:L,zoomOnDoubleClick:R,panOnDrag:z,autoPanOnSelection:B,onPaneClick:V,onPaneMouseEnter:H,onPaneMouseMove:ee,onPaneMouseLeave:te,onPaneScroll:ne,onPaneContextMenu:U,paneClickDistance:re,nodeClickDistance:ie,onEdgeContextMenu:ae,onEdgeMouseEnter:oe,onEdgeMouseMove:se,onEdgeMouseLeave:ce,reconnectRadius:le,onReconnect:ue,onReconnectStart:de,onReconnectEnd:W,noDragClassName:fe,noWheelClassName:pe,noPanClassName:me,disableKeyboardA11y:he,nodeExtent:ge,rfId:_e,viewport:ve,onViewportChange:ye,nodesDraggable:be}){return P0(e),P0(t),F0(),w0(n),E0(ve),(0,G.jsx)(T1,{onPaneClick:V,onPaneMouseEnter:H,onPaneMouseMove:ee,onPaneMouseLeave:te,onPaneContextMenu:U,onPaneScroll:ne,paneClickDistance:re,deleteKeyCode:w,selectionKeyCode:v,selectionOnDrag:y,selectionMode:b,onSelectionStart:f,onSelectionEnd:p,multiSelectionKeyCode:x,panActivationKeyCode:S,zoomActivationKeyCode:C,elementsSelectable:E,zoomOnScroll:N,zoomOnPinch:P,zoomOnDoubleClick:R,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:L,panOnDrag:z,autoPanOnSelection:B,defaultViewport:D,translateExtent:O,minZoom:k,maxZoom:A,onSelectionContextMenu:d,preventScrolling:j,noDragClassName:fe,noWheelClassName:pe,noPanClassName:me,disableKeyboardA11y:he,onViewportChange:ye,isControlledViewport:!!ve,children:(0,G.jsxs)(C0,{children:[(0,G.jsx)(x0,{edgeTypes:t,onEdgeClick:i,onEdgeDoubleClick:o,onReconnect:ue,onReconnectStart:de,onReconnectEnd:W,onlyRenderVisibleElements:T,onEdgeContextMenu:ae,onEdgeMouseEnter:oe,onEdgeMouseMove:se,onEdgeMouseLeave:ce,reconnectRadius:le,defaultMarkerColor:M,noPanClassName:me,disableKeyboardA11y:he,rfId:_e}),(0,G.jsx)(j0,{style:h,type:m,component:g,containerStyle:_}),(0,G.jsx)(`div`,{className:`react-flow__edgelabel-renderer`}),(0,G.jsx)(F1,{nodeTypes:e,onNodeClick:r,onNodeDoubleClick:a,onNodeMouseEnter:s,onNodeMouseMove:c,onNodeMouseLeave:l,onNodeContextMenu:u,nodeClickDistance:ie,onlyRenderVisibleElements:T,noPanClassName:me,noDragClassName:fe,disableKeyboardA11y:he,nodeExtent:ge,rfId:_e,nodesDraggable:be}),(0,G.jsx)(`div`,{className:`react-flow__viewport-portal`})]})})}I0.displayName=`GraphView`;var L0=(0,s.memo)(I0),R0=DX(`React Flow`,`https://reactflow.dev/`),z0=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c=.5,maxZoom:l=2,nodeOrigin:u,nodeExtent:d,zIndexMode:f=`basic`}={})=>{let p=new Map,m=new Map,h=new Map,g=new Map,_=r??t??[],v=n??e??[],y=u??[0,0],b=d??UY;RZ(h,g,_);let{nodesInitialized:x}=kZ(v,p,m,{nodeOrigin:y,nodeExtent:b,zIndexMode:f}),S=[0,0,1];if(o&&i&&a){let{x:e,y:t,zoom:n}=PX(aX(p,{filter:e=>!!((e.width||e.initialWidth)&&(e.height||e.initialHeight))}),i,a,c,l,s?.padding??.1);S=[e,t,n]}return{rfId:`1`,width:i??0,height:a??0,transform:S,nodes:v,nodesInitialized:x,nodeLookup:p,parentLookup:m,edges:_,edgeLookup:g,connectionLookup:h,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:n!==void 0,hasDefaultEdges:r!==void 0,panZoom:null,minZoom:c,maxZoom:l,translateExtent:UY,nodeExtent:b,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:KY.Strict,domNode:null,paneDragging:!1,noPanClassName:`nopan`,nodeOrigin:y,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:o??!1,fitViewOptions:s,fitViewResolver:null,connection:{...YY},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:``,autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:R0,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:`react`,debug:!1,ariaLabelConfig:GY,zIndexMode:f,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},B0=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c,maxZoom:l,nodeOrigin:u,nodeExtent:d,zIndexMode:f})=>FQ((p,m)=>{async function h(){let{nodeLookup:e,panZoom:t,fitViewOptions:n,fitViewResolver:r,width:i,height:a,minZoom:o,maxZoom:s}=m();t&&(await lX({nodes:e,width:i,height:a,panZoom:t,minZoom:o,maxZoom:s},n),r?.resolve(!0),p({fitViewResolver:null}))}return{...z0({nodes:e,edges:t,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c,maxZoom:l,nodeOrigin:u,nodeExtent:d,defaultNodes:n,defaultEdges:r,zIndexMode:f}),setNodes:e=>{let{nodeLookup:t,parentLookup:n,nodeOrigin:r,elevateNodesOnSelect:i,fitViewQueued:a,zIndexMode:o,nodesSelectionActive:s}=m(),{nodesInitialized:c,hasSelectedNodes:l}=kZ(e,t,n,{nodeOrigin:r,nodeExtent:d,elevateNodesOnSelect:i,checkEquality:!0,zIndexMode:o}),u=s&&l;a&&c?(h(),p({nodes:e,nodesInitialized:c,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:u})):p({nodes:e,nodesInitialized:c,nodesSelectionActive:u})},setEdges:e=>{let{connectionLookup:t,edgeLookup:n}=m();RZ(t,n,e),p({edges:e})},setDefaultNodesAndEdges:(e,t)=>{if(e){let{setNodes:t}=m();t(e),p({hasDefaultNodes:!0})}if(t){let{setEdges:e}=m();e(t),p({hasDefaultEdges:!0})}},updateNodeInternals:e=>{let{triggerNodeChanges:t,nodeLookup:n,parentLookup:r,domNode:i,nodeOrigin:a,nodeExtent:o,debug:s,fitViewQueued:c,zIndexMode:l}=m(),{changes:u,updatedInternals:d}=FZ(e,n,r,i,a,o,l);d&&(EZ(n,r,{nodeOrigin:a,nodeExtent:o,zIndexMode:l}),c?(h(),p({fitViewQueued:!1,fitViewOptions:void 0})):p({}),u?.length>0&&(s&&console.log(`React Flow: trigger node changes`,u),t?.(u)))},updateNodePositions:(e,t=!1)=>{let n=[],r=[],{nodeLookup:i,triggerNodeChanges:a,connection:o,updateConnection:s,onNodesChangeMiddlewareMap:c}=m();for(let[a,c]of e){let e=i.get(a),l=!!(e?.expandParent&&e?.parentId&&c?.position),u={id:a,type:`position`,position:l?{x:Math.max(0,c.position.x),y:Math.max(0,c.position.y)}:c.position,dragging:t};if(e&&o.inProgress&&o.fromNode.id===e.id){let t=_Z(e,o.fromHandle,$.Left,!0);s({...o,from:t})}l&&e.parentId&&n.push({id:a,parentId:e.parentId,rect:{...c.internals.positionAbsolute,width:c.measured.width??0,height:c.measured.height??0}}),r.push(u)}if(n.length>0){let{parentLookup:e,nodeOrigin:t}=m(),a=PZ(n,i,e,t);r.push(...a)}for(let e of c.values())r=e(r);a(r)},triggerNodeChanges:e=>{let{onNodesChange:t,setNodes:n,nodes:r,hasDefaultNodes:i,debug:a}=m();e?.length&&(i&&n(x$(e,r)),a&&console.log(`React Flow: trigger node changes`,e),t?.(e))},triggerEdgeChanges:e=>{let{onEdgesChange:t,setEdges:n,edges:r,hasDefaultEdges:i,debug:a}=m();e?.length&&(i&&n(S$(e,r)),a&&console.log(`React Flow: trigger edge changes`,e),t?.(e))},addSelectedNodes:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=m();if(t){i(e.map(e=>C$(e,!0)));return}i(w$(r,new Set([...e]),!0)),a(w$(n))},addSelectedEdges:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=m();if(t){a(e.map(e=>C$(e,!0)));return}a(w$(n,new Set([...e]))),i(w$(r,new Set,!0))},unselectNodesAndEdges:({nodes:e,edges:t}={})=>{let{edges:n,nodes:r,nodeLookup:i,triggerNodeChanges:a,triggerEdgeChanges:o}=m(),s=e||r,c=t||n,l=[];for(let e of s){if(!e.selected)continue;let t=i.get(e.id);t&&(t.selected=!1),l.push(C$(e.id,!1))}let u=[];for(let e of c)e.selected&&u.push(C$(e.id,!1));a(l),o(u)},setMinZoom:e=>{let{panZoom:t,maxZoom:n}=m();t?.setScaleExtent([e,n]),p({minZoom:e})},setMaxZoom:e=>{let{panZoom:t,minZoom:n}=m();t?.setScaleExtent([n,e]),p({maxZoom:e})},setTranslateExtent:e=>{m().panZoom?.setTranslateExtent(e),p({translateExtent:e})},resetSelectedElements:()=>{let{edges:e,nodes:t,triggerNodeChanges:n,triggerEdgeChanges:r,elementsSelectable:i}=m();if(!i)return;let a=t.reduce((e,t)=>t.selected?[...e,C$(t.id,!1)]:e,[]),o=e.reduce((e,t)=>t.selected?[...e,C$(t.id,!1)]:e,[]);n(a),r(o)},setNodeExtent:e=>{let{nodes:t,nodeLookup:n,parentLookup:r,nodeOrigin:i,elevateNodesOnSelect:a,nodeExtent:o,zIndexMode:s}=m();(e[0][0]!==o[0][0]||e[0][1]!==o[0][1]||e[1][0]!==o[1][0]||e[1][1]!==o[1][1])&&(kZ(t,n,r,{nodeOrigin:i,nodeExtent:e,elevateNodesOnSelect:a,checkEquality:!1,zIndexMode:s}),p({nodeExtent:e}))},panBy:e=>{let{transform:t,width:n,height:r,panZoom:i,translateExtent:a}=m();return IZ({delta:e,panZoom:i,transform:t,translateExtent:a,width:n,height:r})},setCenter:async(e,t,n)=>{let{width:r,height:i,maxZoom:a,panZoom:o}=m();if(!o)return!1;let s=n?.zoom===void 0?a:n.zoom;return await o.setViewport({x:r/2-e*s,y:i/2-t*s,zoom:s},{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0},cancelConnection:()=>{p({connection:{...YY}})},updateConnection:e=>{p({connection:e})},reset:()=>p({...z0()})}},Object.is);function V0({initialNodes:e,initialEdges:t,defaultNodes:n,defaultEdges:r,initialWidth:i,initialHeight:a,initialMinZoom:o,initialMaxZoom:c,initialFitViewOptions:l,fitView:u,nodeOrigin:d,nodeExtent:f,zIndexMode:p,children:m}){let[h]=(0,s.useState)(()=>B0({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:u,minZoom:o,maxZoom:c,fitViewOptions:l,nodeOrigin:d,nodeExtent:f,zIndexMode:p}));return(0,G.jsx)(RQ,{value:h,children:(0,G.jsx)(I$,{children:(0,G.jsx)(s1,{children:m})})})}function H0({children:e,nodes:t,edges:n,defaultNodes:r,defaultEdges:i,width:a,height:o,fitView:c,fitViewOptions:l,minZoom:u,maxZoom:d,nodeOrigin:f,nodeExtent:p,zIndexMode:m}){return(0,s.useContext)(LQ)?(0,G.jsx)(G.Fragment,{children:e}):(0,G.jsx)(V0,{initialNodes:t,initialEdges:n,defaultNodes:r,defaultEdges:i,initialWidth:a,initialHeight:o,fitView:c,initialFitViewOptions:l,initialMinZoom:u,initialMaxZoom:d,nodeOrigin:f,nodeExtent:p,zIndexMode:m,children:e})}var U0={width:`100%`,height:`100%`,overflow:`hidden`,position:`relative`,zIndex:0};function W0({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:i,nodeTypes:a,edgeTypes:o,onNodeClick:c,onEdgeClick:l,onInit:u,onMove:d,onMoveStart:f,onMoveEnd:p,onConnect:m,onConnectStart:h,onConnectEnd:g,onClickConnectStart:_,onClickConnectEnd:v,onNodeMouseEnter:y,onNodeMouseMove:b,onNodeMouseLeave:x,onNodeContextMenu:S,onNodeDoubleClick:C,onNodeDragStart:w,onNodeDrag:T,onNodeDragStop:E,onNodesDelete:D,onEdgesDelete:O,onDelete:k,onSelectionChange:A,onSelectionDragStart:j,onSelectionDrag:M,onSelectionDragStop:N,onSelectionContextMenu:P,onSelectionStart:F,onSelectionEnd:I,onBeforeDelete:L,connectionMode:R,connectionLineType:z=XY.Bezier,connectionLineStyle:B,connectionLineComponent:V,connectionLineContainerStyle:H,deleteKeyCode:ee=`Backspace`,selectionKeyCode:te=`Shift`,selectionOnDrag:ne=!1,selectionMode:U=JY.Full,panActivationKeyCode:re=`Space`,multiSelectionKeyCode:ie=FX()?`Meta`:`Control`,zoomActivationKeyCode:ae=FX()?`Meta`:`Control`,snapToGrid:oe,snapGrid:se,onlyRenderVisibleElements:ce=!1,selectNodesOnDrag:le,nodesDraggable:ue,autoPanOnNodeFocus:de,nodesConnectable:W,nodesFocusable:fe,nodeOrigin:pe=o$,edgesFocusable:me,edgesReconnectable:he,elementsSelectable:ge=!0,defaultViewport:_e=s$,minZoom:ve=.5,maxZoom:ye=2,translateExtent:be=UY,preventScrolling:xe=!0,nodeExtent:Se,defaultMarkerColor:Ce=`#b1b1b7`,zoomOnScroll:we=!0,zoomOnPinch:Te=!0,panOnScroll:Ee=!1,panOnScrollSpeed:De=.5,panOnScrollMode:Oe=qY.Free,zoomOnDoubleClick:ke=!0,panOnDrag:Ae=!0,onPaneClick:je,onPaneMouseEnter:Me,onPaneMouseMove:Ne,onPaneMouseLeave:Pe,onPaneScroll:Fe,onPaneContextMenu:Ie,paneClickDistance:Le=1,nodeClickDistance:Re=0,children:ze,onReconnect:Be,onReconnectStart:Ve,onReconnectEnd:He,onEdgeContextMenu:Ue,onEdgeDoubleClick:We,onEdgeMouseEnter:Ge,onEdgeMouseMove:Ke,onEdgeMouseLeave:qe,reconnectRadius:Je=10,onNodesChange:Ye,onEdgesChange:Xe,noDragClassName:Ze=`nodrag`,noWheelClassName:Qe=`nowheel`,noPanClassName:$e=`nopan`,fitView:et,fitViewOptions:tt,connectOnClick:nt,attributionPosition:rt,proOptions:it,defaultEdgeOptions:at,elevateNodesOnSelect:ot=!0,elevateEdgesOnSelect:st=!1,disableKeyboardA11y:ct=!1,autoPanOnConnect:lt,autoPanOnNodeDrag:ut,autoPanOnSelection:dt=!0,autoPanSpeed:ft,connectionRadius:pt,isValidConnection:mt,onError:ht,style:gt,id:_t,nodeDragThreshold:vt,connectionDragThreshold:yt,viewport:bt,onViewportChange:xt,width:St,height:Ct,colorMode:wt=`light`,debug:Tt,onScroll:Et,ariaLabelConfig:K,zIndexMode:Dt=`basic`,...Ot},kt){let At=_t||`1`,jt=p$(wt),Mt=(0,s.useCallback)(e=>{e.currentTarget.scrollTo({top:0,left:0,behavior:`instant`}),Et?.(e)},[Et]);return(0,G.jsx)(`div`,{"data-testid":`rf__wrapper`,...Ot,onScroll:Mt,style:{...gt,...U0},ref:kt,className:aW([`react-flow`,i,jt]),id:_t,role:`application`,children:(0,G.jsxs)(H0,{nodes:e,edges:t,width:St,height:Ct,fitView:et,fitViewOptions:tt,minZoom:ve,maxZoom:ye,nodeOrigin:pe,nodeExtent:Se,zIndexMode:Dt,children:[(0,G.jsx)(d$,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:m,onConnectStart:h,onConnectEnd:g,onClickConnectStart:_,onClickConnectEnd:v,nodesDraggable:ue,autoPanOnNodeFocus:de,nodesConnectable:W,nodesFocusable:fe,edgesFocusable:me,edgesReconnectable:he,elementsSelectable:ge,elevateNodesOnSelect:ot,elevateEdgesOnSelect:st,minZoom:ve,maxZoom:ye,nodeExtent:Se,onNodesChange:Ye,onEdgesChange:Xe,snapToGrid:oe,snapGrid:se,connectionMode:R,translateExtent:be,connectOnClick:nt,defaultEdgeOptions:at,fitView:et,fitViewOptions:tt,onNodesDelete:D,onEdgesDelete:O,onDelete:k,onNodeDragStart:w,onNodeDrag:T,onNodeDragStop:E,onSelectionDrag:M,onSelectionDragStart:j,onSelectionDragStop:N,onMove:d,onMoveStart:f,onMoveEnd:p,noPanClassName:$e,nodeOrigin:pe,rfId:At,autoPanOnConnect:lt,autoPanOnNodeDrag:ut,autoPanSpeed:ft,onError:ht,connectionRadius:pt,isValidConnection:mt,selectNodesOnDrag:le,nodeDragThreshold:vt,connectionDragThreshold:yt,onBeforeDelete:L,debug:Tt,ariaLabelConfig:K,zIndexMode:Dt}),(0,G.jsx)(L0,{onInit:u,onNodeClick:c,onEdgeClick:l,onNodeMouseEnter:y,onNodeMouseMove:b,onNodeMouseLeave:x,onNodeContextMenu:S,onNodeDoubleClick:C,nodeTypes:a,edgeTypes:o,connectionLineType:z,connectionLineStyle:B,connectionLineComponent:V,connectionLineContainerStyle:H,selectionKeyCode:te,selectionOnDrag:ne,selectionMode:U,deleteKeyCode:ee,multiSelectionKeyCode:ie,panActivationKeyCode:re,zoomActivationKeyCode:ae,onlyRenderVisibleElements:ce,defaultViewport:_e,translateExtent:be,minZoom:ve,maxZoom:ye,preventScrolling:xe,zoomOnScroll:we,zoomOnPinch:Te,zoomOnDoubleClick:ke,panOnScroll:Ee,panOnScrollSpeed:De,panOnScrollMode:Oe,panOnDrag:Ae,autoPanOnSelection:dt,onPaneClick:je,onPaneMouseEnter:Me,onPaneMouseMove:Ne,onPaneMouseLeave:Pe,onPaneScroll:Fe,onPaneContextMenu:Ie,paneClickDistance:Le,nodeClickDistance:Re,onSelectionContextMenu:P,onSelectionStart:F,onSelectionEnd:I,onReconnect:Be,onReconnectStart:Ve,onReconnectEnd:He,onEdgeContextMenu:Ue,onEdgeDoubleClick:We,onEdgeMouseEnter:Ge,onEdgeMouseMove:Ke,onEdgeMouseLeave:qe,reconnectRadius:Je,defaultMarkerColor:Ce,noDragClassName:Ze,noWheelClassName:Qe,noPanClassName:$e,rfId:At,disableKeyboardA11y:ct,nodeExtent:Se,viewport:bt,onViewportChange:xt,nodesDraggable:ue}),(0,G.jsx)(a$,{onSelectionChange:A}),ze,(0,G.jsx)($Q,{proOptions:it,position:rt}),(0,G.jsx)(XQ,{rfId:At,disableKeyboardA11y:ct})]})})}var G0=j$(W0);HY.error014();function K0({dimensions:e,lineWidth:t,variant:n,className:r}){return(0,G.jsx)(`path`,{strokeWidth:t,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:aW([`react-flow__background-pattern`,n,r])})}function q0({radius:e,className:t}){return(0,G.jsx)(`circle`,{cx:e,cy:e,r:e,className:aW([`react-flow__background-pattern`,`dots`,t])})}var J0;(function(e){e.Lines=`lines`,e.Dots=`dots`,e.Cross=`cross`})(J0||={});var Y0={[J0.Dots]:1,[J0.Lines]:1,[J0.Cross]:6},X0=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function Z0({id:e,variant:t=J0.Dots,gap:n=20,size:r,lineWidth:i=1,offset:a=0,color:o,bgColor:c,style:l,className:u,patternClassName:d}){let f=(0,s.useRef)(null),{transform:p,patternId:m}=BQ(X0,IQ),h=r||Y0[t],g=t===J0.Dots,_=t===J0.Cross,v=Array.isArray(n)?n:[n,n],y=[v[0]*p[2]||1,v[1]*p[2]||1],b=h*p[2],x=Array.isArray(a)?a:[a,a],S=_?[b,b]:y,C=[x[0]*p[2]||1+S[0]/2,x[1]*p[2]||1+S[1]/2],w=`${m}${e||``}`;return(0,G.jsxs)(`svg`,{className:aW([`react-flow__background`,u]),style:{...l,...W$,"--xy-background-color-props":c,"--xy-background-pattern-color-props":o},ref:f,"data-testid":`rf__background`,children:[(0,G.jsx)(`pattern`,{id:w,x:p[0]%y[0],y:p[1]%y[1],width:y[0],height:y[1],patternUnits:`userSpaceOnUse`,patternTransform:`translate(-${C[0]},-${C[1]})`,children:g?(0,G.jsx)(q0,{radius:b/2,className:d}):(0,G.jsx)(K0,{dimensions:S,lineWidth:i,variant:t,className:d})}),(0,G.jsx)(`rect`,{x:`0`,y:`0`,width:`100%`,height:`100%`,fill:`url(#${w})`})]})}Z0.displayName=`Background`,(0,s.memo)(Z0);function Q0(){return(0,G.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 32`,children:(0,G.jsx)(`path`,{d:`M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z`})})}function $0(){return(0,G.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 5`,children:(0,G.jsx)(`path`,{d:`M0 0h32v4.2H0z`})})}function e2(){return(0,G.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 30`,children:(0,G.jsx)(`path`,{d:`M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z`})})}function t2(){return(0,G.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 25 32`,children:(0,G.jsx)(`path`,{d:`M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z`})})}function n2(){return(0,G.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 25 32`,children:(0,G.jsx)(`path`,{d:`M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z`})})}function r2({children:e,className:t,...n}){return(0,G.jsx)(`button`,{type:`button`,className:aW([`react-flow__controls-button`,t]),...n,children:e})}var i2=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function a2({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:i,onZoomIn:a,onZoomOut:o,onFitView:s,onInteractiveChange:c,className:l,children:u,position:d=`bottom-left`,orientation:f=`vertical`,"aria-label":p}){let m=VQ(),{isInteractive:h,minZoomReached:g,maxZoomReached:_,ariaLabelConfig:v}=BQ(i2,IQ),{zoomIn:y,zoomOut:b,fitView:x}=z$();return(0,G.jsxs)(ZQ,{className:aW([`react-flow__controls`,f===`horizontal`?`horizontal`:`vertical`,l]),position:d,style:e,"data-testid":`rf__controls`,"aria-label":p??v[`controls.ariaLabel`],children:[t&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(r2,{onClick:()=>{y(),a?.()},className:`react-flow__controls-zoomin`,title:v[`controls.zoomIn.ariaLabel`],"aria-label":v[`controls.zoomIn.ariaLabel`],disabled:_,children:(0,G.jsx)(Q0,{})}),(0,G.jsx)(r2,{onClick:()=>{b(),o?.()},className:`react-flow__controls-zoomout`,title:v[`controls.zoomOut.ariaLabel`],"aria-label":v[`controls.zoomOut.ariaLabel`],disabled:g,children:(0,G.jsx)($0,{})})]}),n&&(0,G.jsx)(r2,{className:`react-flow__controls-fitview`,onClick:()=>{x(i),s?.()},title:v[`controls.fitView.ariaLabel`],"aria-label":v[`controls.fitView.ariaLabel`],children:(0,G.jsx)(e2,{})}),r&&(0,G.jsx)(r2,{className:`react-flow__controls-interactive`,onClick:()=>{m.setState({nodesDraggable:!h,nodesConnectable:!h,elementsSelectable:!h}),c?.(!h)},title:v[`controls.interactive.ariaLabel`],"aria-label":v[`controls.interactive.ariaLabel`],children:h?(0,G.jsx)(n2,{}):(0,G.jsx)(t2,{})}),u]})}a2.displayName=`Controls`;var o2=(0,s.memo)(a2);function s2({id:e,x:t,y:n,width:r,height:i,style:a,color:o,strokeColor:s,strokeWidth:c,className:l,borderRadius:u,shapeRendering:d,selected:f,onClick:p}){let{background:m,backgroundColor:h}=a||{},g=o||m||h;return(0,G.jsx)(`rect`,{className:aW([`react-flow__minimap-node`,{selected:f},l]),x:t,y:n,rx:u,ry:u,width:r,height:i,style:{fill:g,stroke:s,strokeWidth:c},shapeRendering:d,onClick:p?t=>p(t,e):void 0})}var c2=(0,s.memo)(s2),l2=e=>e.nodes.map(e=>e.id),u2=e=>e instanceof Function?e:()=>e;function d2({nodeStrokeColor:e,nodeColor:t,nodeClassName:n=``,nodeBorderRadius:r=5,nodeStrokeWidth:i,nodeComponent:a=c2,onClick:o}){let s=BQ(l2,IQ),c=u2(t),l=u2(e),u=u2(n),d=typeof window>`u`||window.chrome?`crispEdges`:`geometricPrecision`;return(0,G.jsx)(G.Fragment,{children:s.map(e=>(0,G.jsx)(p2,{id:e,nodeColorFunc:c,nodeStrokeColorFunc:l,nodeClassNameFunc:u,nodeBorderRadius:r,nodeStrokeWidth:i,NodeComponent:a,onClick:o,shapeRendering:d},e))})}function f2({id:e,nodeColorFunc:t,nodeStrokeColorFunc:n,nodeClassNameFunc:r,nodeBorderRadius:i,nodeStrokeWidth:a,shapeRendering:o,NodeComponent:s,onClick:c}){let{node:l,x:u,y:d,width:f,height:p}=BQ(t=>{let n=t.nodeLookup.get(e);if(!n)return{node:void 0,x:0,y:0,width:0,height:0};let r=n.internals.userNode,{x:i,y:a}=n.internals.positionAbsolute,{width:o,height:s}=LX(r);return{node:r,x:i,y:a,width:o,height:s}},IQ);return!l||l.hidden||!RX(l)?null:(0,G.jsx)(s,{x:u,y:d,width:f,height:p,style:l.style,selected:!!l.selected,className:r(l),color:t(l),borderRadius:i,strokeColor:n(l),strokeWidth:a,shapeRendering:o,onClick:c,id:l.id})}var p2=(0,s.memo)(f2),m2=(0,s.memo)(d2),h2=200,g2=150,_2=e=>!e.hidden,v2=e=>{let t={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:t,boundingRect:e.nodeLookup.size>0?SX(aX(e.nodeLookup,{filter:_2}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},y2=(e,t)=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,b2=(e,t)=>y2(e.viewBB,t.viewBB)&&y2(e.boundingRect,t.boundingRect)&&e.rfId===t.rfId&&e.panZoom===t.panZoom&&e.translateExtent===t.translateExtent&&e.flowWidth===t.flowWidth&&e.flowHeight===t.flowHeight&&e.ariaLabelConfig===t.ariaLabelConfig,x2=`react-flow__minimap-desc`;function S2({style:e,className:t,nodeStrokeColor:n,nodeColor:r,nodeClassName:i=``,nodeBorderRadius:a=5,nodeStrokeWidth:o,nodeComponent:c,bgColor:l,maskColor:u,maskStrokeColor:d,maskStrokeWidth:f,position:p=`bottom-right`,onClick:m,onNodeClick:h,pannable:g=!1,zoomable:_=!1,ariaLabel:v,inversePan:y,zoomStep:b=1,offsetScale:x=5}){let S=VQ(),C=(0,s.useRef)(null),{boundingRect:w,viewBB:T,rfId:E,panZoom:D,translateExtent:O,flowWidth:k,flowHeight:A,ariaLabelConfig:j}=BQ(v2,b2),M=e?.width??h2,N=e?.height??g2,P=w.width/M,F=w.height/N,I=Math.max(P,F),L=I*M,R=I*N,z=x*I,B=w.x-(L-w.width)/2-z,V=w.y-(R-w.height)/2-z,H=L+z*2,ee=R+z*2,te=`${x2}-${E}`,ne=(0,s.useRef)(0),U=(0,s.useRef)();ne.current=I,(0,s.useEffect)(()=>{if(C.current&&D)return U.current=tQ({domNode:C.current,panZoom:D,getTransform:()=>S.getState().transform,getViewScale:()=>ne.current}),()=>{U.current?.destroy()}},[D]),(0,s.useEffect)(()=>{U.current?.update({translateExtent:O,width:k,height:A,inversePan:y,pannable:g,zoomStep:b,zoomable:_})},[g,_,y,b,O,k,A]);let re=m?e=>{let[t,n]=U.current?.pointer(e)||[0,0];m(e,{x:t,y:n})}:void 0,ie=h?(0,s.useCallback)((e,t)=>{let n=S.getState().nodeLookup.get(t).internals.userNode;h(e,n)},[]):void 0,ae=v??j[`minimap.ariaLabel`];return(0,G.jsx)(ZQ,{position:p,style:{...e,"--xy-minimap-background-color-props":typeof l==`string`?l:void 0,"--xy-minimap-mask-background-color-props":typeof u==`string`?u:void 0,"--xy-minimap-mask-stroke-color-props":typeof d==`string`?d:void 0,"--xy-minimap-mask-stroke-width-props":typeof f==`number`?f*I:void 0,"--xy-minimap-node-background-color-props":typeof r==`string`?r:void 0,"--xy-minimap-node-stroke-color-props":typeof n==`string`?n:void 0,"--xy-minimap-node-stroke-width-props":typeof o==`number`?o:void 0},className:aW([`react-flow__minimap`,t]),"data-testid":`rf__minimap`,children:(0,G.jsxs)(`svg`,{width:M,height:N,viewBox:`${B} ${V} ${H} ${ee}`,className:`react-flow__minimap-svg`,role:`img`,"aria-labelledby":te,ref:C,onClick:re,children:[ae&&(0,G.jsx)(`title`,{id:te,children:ae}),(0,G.jsx)(m2,{onClick:ie,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:a,nodeClassName:i,nodeStrokeWidth:o,nodeComponent:c}),(0,G.jsx)(`path`,{className:`react-flow__minimap-mask`,d:`M${B-z},${V-z}h${H+z*2}v${ee+z*2}h${-H-z*2}z + M${T.x},${T.y}h${T.width}v${T.height}h${-T.width}z`,fillRule:`evenodd`,pointerEvents:`none`})]})})}S2.displayName=`MiniMap`,(0,s.memo)(S2);var C2=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,w2={[gQ.Line]:`right`,[gQ.Handle]:`bottom-right`};function T2({nodeId:e,position:t,variant:n=gQ.Handle,className:r,style:i=void 0,children:a,color:o,minWidth:c=10,minHeight:l=10,maxWidth:u=Number.MAX_VALUE,maxHeight:d=Number.MAX_VALUE,keepAspectRatio:f=!1,resizeDirection:p,autoScale:m=!0,shouldResize:h,onResizeStart:g,onResize:_,onResizeEnd:v}){let y=i1(),b=typeof e==`string`?e:y,x=VQ(),S=(0,s.useRef)(null),C=n===gQ.Handle,w=BQ((0,s.useCallback)(C2(C&&m),[C,m]),IQ),T=(0,s.useRef)(null),E=t??w2[n];(0,s.useEffect)(()=>{if(!(!S.current||!b))return T.current||=DQ({domNode:S.current,nodeId:b,getStoreItems:()=>{let{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:r,nodeOrigin:i,domNode:a}=x.getState();return{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:r,nodeOrigin:i,paneDomNode:a}},onChange:(e,t)=>{let{triggerNodeChanges:n,nodeLookup:r,parentLookup:i,nodeOrigin:a}=x.getState(),o=[],s={x:e.x,y:e.y},c=r.get(b);if(c&&c.expandParent&&c.parentId){let t=c.origin??a,n=e.width??c.measured.width??0,l=e.height??c.measured.height??0,u=PZ([{id:c.id,parentId:c.parentId,rect:{width:n,height:l,...zX({x:e.x??c.position.x,y:e.y??c.position.y},{width:n,height:l},c.parentId,r,t)}}],r,i,a);o.push(...u),s.x=e.x?Math.max(t[0]*n,e.x):void 0,s.y=e.y?Math.max(t[1]*l,e.y):void 0}if(s.x!==void 0&&s.y!==void 0){let e={id:b,type:`position`,position:{...s}};o.push(e)}if(e.width!==void 0&&e.height!==void 0){let t={id:b,type:`dimensions`,resizing:!0,setAttributes:p?p===`horizontal`?`width`:`height`:!0,dimensions:{width:e.width,height:e.height}};o.push(t)}for(let e of t){let t={...e,type:`position`};o.push(t)}n(o)},onEnd:({width:e,height:t})=>{let n={id:b,type:`dimensions`,resizing:!1,dimensions:{width:e,height:t}};x.getState().triggerNodeChanges([n])}}),T.current.update({controlPosition:E,boundaries:{minWidth:c,minHeight:l,maxWidth:u,maxHeight:d},keepAspectRatio:f,resizeDirection:p,onResizeStart:g,onResize:_,onResizeEnd:v,shouldResize:h}),()=>{T.current?.destroy()}},[E,c,l,u,d,f,g,_,v,h]);let D=E.split(`-`);return(0,G.jsx)(`div`,{className:aW([`react-flow__resize-control`,`nodrag`,...D,n,r]),ref:S,style:{...i,scale:w,...o&&{[C?`backgroundColor`:`borderColor`]:o}},children:a})}(0,s.memo)(T2);var E2=204,D2=96,O2=84,k2={input:Le,runtime:W,model:ge,capabilities:Ve,output:ie};function A2(e,t=34){return e?e.length<=t?e:`${e.slice(0,t)}…`:`-`}function j2(e){if(!e)return`未绑定模型`;let t=e.split(`:`);return(t[0]===`model`&&t.length>=4?t.slice(2,-1).join(`:`):e).replace(/-(\d+)$/,`.$1`).replace(/^glm/i,`GLM`).replace(/^gpt/i,`GPT`).replace(/^qwen/i,`Qwen`).replace(/^deepseek/i,`DeepSeek`)}function M2(e){if(!e)return`刚刚`;let t=new Date(e);return Number.isNaN(t.getTime())?`未知时间`:new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(t)}function N2(e){return e===`COMPLETED`||e===`SUCCEEDED`?`成功`:e===`RUNNING`?`运行中`:e===`FAILED`?`失败`:e===`PAUSED`?`已暂停`:e||`未知`}function P2({data:e}){let t=k2[e.icon];return(0,G.jsxs)(`div`,{className:`pipeline-node-card`,title:e.fullTitle||e.title,children:[(0,G.jsx)(f1,{id:`top`,type:`target`,position:$.Top}),(0,G.jsx)(f1,{id:`top-out`,type:`source`,position:$.Top}),(0,G.jsx)(f1,{id:`right`,type:`source`,position:$.Right}),(0,G.jsx)(f1,{id:`right-in`,type:`target`,position:$.Right}),(0,G.jsx)(f1,{id:`bottom`,type:`source`,position:$.Bottom}),(0,G.jsx)(f1,{id:`bottom-in`,type:`target`,position:$.Bottom}),(0,G.jsx)(f1,{id:`left`,type:`target`,position:$.Left}),(0,G.jsx)(f1,{id:`left-out`,type:`source`,position:$.Left}),(0,G.jsx)(`span`,{className:`pipeline-node-icon`,children:(0,G.jsx)(t,{size:15})}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.title}),(0,G.jsx)(`small`,{children:e.subtitle})]})]})}var F2={pipeline:P2};function I2(e,t){let n=Math.max(560,t-96),r=Math.max(1,Math.min(n>=1120||n>=720?3:2,e.length)),i=r*E2+(r-1)*O2,a=Math.max(48,(Math.max(t,560)-i)/2),o=e.map((e,t)=>{let n=Math.floor(t/r),i=t%r,o=n%2==0?i:r-1-i;return{row:n,column:o,x:a+o*288,y:56+n*172}});return{nodes:e.map((e,t)=>({id:e.id,type:`pipeline`,position:{x:o[t].x,y:o[t].y},data:{title:e.title,subtitle:e.subtitle,icon:e.icon,fullTitle:e.fullTitle||e.title},style:{width:E2,height:D2}})),edges:e.slice(1).map((t,n)=>{let r=o[n],i=o[n+1],a=r.row!==i.row,s=i.column>r.column;return{id:`edge-${e[n].id}-${t.id}`,source:e[n].id,target:t.id,sourceHandle:a?`bottom`:s?`right`:`left-out`,targetHandle:a?`top`:s?`left`:`right-in`,type:`smoothstep`,label:t.incomingLabel,markerEnd:{type:ZY.ArrowClosed,width:14,height:14}}})}}function L2(){let e=(0,s.useRef)(null),[t,n]=(0,s.useState)(960);return(0,s.useLayoutEffect)(()=>{let t=e.current;if(!t)return;let r=e=>{e>0&&n(e)};r(t.getBoundingClientRect().width);let i=new ResizeObserver(e=>{r(e[0]?.contentRect.width||0)});return i.observe(t),()=>i.disconnect()},[]),{containerRef:e,width:t}}function R2({steps:e}){let{containerRef:t,width:n}=L2(),[r,i]=(0,s.useState)(null),a=(0,s.useMemo)(()=>I2(e,n),[e,n]);return(0,s.useEffect)(()=>{r&&requestAnimationFrame(()=>r.fitView({padding:.16,duration:260}))},[a,r]),(0,G.jsx)(`div`,{ref:t,className:`orchestration-graph`,role:`application`,"aria-label":`执行链路画布`,"data-layout":`adaptive-serpentine`,"data-background":`plain`,children:(0,G.jsx)(G0,{nodes:a.nodes,edges:a.edges,nodeTypes:F2,onInit:i,fitView:!0,fitViewOptions:{padding:.16},minZoom:.55,maxZoom:1.35,nodesConnectable:!1,elementsSelectable:!0,panOnScroll:!0,selectionOnDrag:!1,proOptions:{hideAttribution:!0},children:(0,G.jsx)(o2,{showFitView:!1,position:`bottom-right`,children:(0,G.jsx)(r2,{"aria-label":`适应画布`,title:`适应画布`,onClick:()=>r?.fitView({padding:.16,duration:260}),children:(0,G.jsx)(Pe,{size:14})})})})})}function z2({currentAgentId:e,agents:t,onSelectAgent:n,onCreate:r}){let[i,a]=(0,s.useState)(null),[o,c]=(0,s.useState)([]),[l,u]=(0,s.useState)([]);(0,s.useEffect)(()=>{Promise.all([g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()),g(`/api/v1/catalog/models`).then(e=>e.json()).catch(()=>null)]).then(([e,t])=>{let n=e.items||[],r=t?.items||[];u([...n.filter(e=>e.kind!==`model`||e.source===`local`||e.source===`market`),...r])}).catch(()=>{})},[]),(0,s.useEffect)(()=>{if(!e){a(null),c([]);return}let t=!1;return Promise.all([g(`/api/v1/agents/${encodeURIComponent(e)}`).then(e=>e.json()),g(`/api/v1/runs?limit=200`).then(e=>e.json()).catch(()=>({items:[]}))]).then(([n,r])=>{t||(a(n.draft||null),c((r.items||[]).filter(t=>t.agentId===e)))}).catch(()=>{t||(a(null),c([]))}),()=>{t=!0}},[e]);let d=i?.spec?.bindings||{},f=i?.spec?.runtime?.type||i?.metadata?.labels?.[`agentkit.ksyun.com/framework`]||`runtime`,p=i?.spec?.execution?.strategy||`direct`,m=l.find(e=>e.resourceId===d.modelProfileId),h=(d.tools?.length||0)+(d.mcpServers?.length||0)+(d.skills?.length||0),_=o.slice(-5).reverse(),v=(0,s.useMemo)(()=>{let e=f===`codex`?`Codex Runtime`:f===`adk`?`ADK Runtime`:f===`langgraph`?`LangGraph Runtime`:`${f} Runtime`,t=m?.displayName||m?.name||j2(d.modelProfileId),n=[{id:`input`,icon:`input`,title:`任务输入`,subtitle:`用户消息与会话上下文`},{id:`runtime`,icon:`runtime`,title:e,fullTitle:`${f} RuntimeAdapter`,subtitle:`${p} · 本地执行`,incomingLabel:`调度`},{id:`model`,icon:`model`,title:A2(t,24),fullTitle:d.modelProfileId?`${t} · ${d.modelProfileId}`:t,subtitle:`模型配置`,incomingLabel:`调用模型`}];return h>0&&n.push({id:`capabilities`,icon:`capabilities`,title:`${h} 个能力绑定`,subtitle:`${d.tools?.length||0} Tool · ${d.mcpServers?.length||0} MCP · ${d.skills?.length||0} Skill`,incomingLabel:`加载能力`}),n.push({id:`output`,icon:`output`,title:`结构化输出`,subtitle:`返回会话并写入 Trace`,incomingLabel:`写回结果`}),n},[d,h,m?.displayName,f,p]);return(0,G.jsxs)(`div`,{className:`page-container orchestration-page`,"data-layout":`document`,children:[!i&&(0,G.jsx)(Sd,{children:(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:r,children:[(0,G.jsx)(Qe,{size:15}),(0,G.jsx)(`span`,{children:`创建 Agent`})]})}),i?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`section`,{className:`stat-strip compact-summary`,"aria-label":`编排概览`,children:[(0,G.jsxs)(`div`,{title:i.metadata?.id,children:[(0,G.jsx)(`span`,{children:`Revision`}),(0,G.jsxs)(`strong`,{children:[`r`,i.metadata?.revision||1]})]}),(0,G.jsxs)(`div`,{title:`${p} · Edge`,children:[(0,G.jsx)(`span`,{children:`Runtime`}),(0,G.jsx)(`strong`,{children:f})]}),(0,G.jsxs)(`div`,{title:`${d.tools?.length||0} Tool · ${d.mcpServers?.length||0} MCP · ${d.skills?.length||0} Skill`,children:[(0,G.jsx)(`span`,{children:`能力绑定`}),(0,G.jsx)(`strong`,{children:h})]}),(0,G.jsxs)(`div`,{className:`emphasis`,children:[(0,G.jsx)(`span`,{children:`最近调度`}),(0,G.jsx)(`strong`,{children:_[0]?N2(_[0].status):`暂无`})]})]}),(0,G.jsxs)(`div`,{className:`orchestration-workbench`,children:[(0,G.jsxs)(`section`,{className:`orchestration-canvas block`,children:[(0,G.jsxs)(`div`,{className:`section-heading`,children:[(0,G.jsx)(Ct,{name:i.metadata?.name||`Agent`,appearance:i.metadata?.appearance,size:`md`}),(0,G.jsx)(`div`,{className:`section-heading-copy`,children:(0,G.jsx)(`h2`,{title:i.metadata?.id,children:i.metadata?.name})})]}),(0,G.jsx)(R2,{steps:v})]}),(0,G.jsxs)(`aside`,{className:`orchestration-aside block`,children:[(0,G.jsxs)(`section`,{className:`orchestration-aside-section`,children:[(0,G.jsx)(`div`,{className:`aside-title`,children:`路由与约束`}),(0,G.jsxs)(`dl`,{children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Revision`}),(0,G.jsxs)(`dd`,{children:[`r`,i.metadata?.revision]})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`执行位置`}),(0,G.jsx)(`dd`,{children:`Edge · Local`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Runtime`}),(0,G.jsx)(`dd`,{children:f})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`策略`}),(0,G.jsx)(`dd`,{children:p})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`最大步骤`}),(0,G.jsx)(`dd`,{children:i.spec?.execution?.maxSteps||`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`云端`}),(0,G.jsx)(`dd`,{children:`未连接`})]})]})]}),(0,G.jsx)(`div`,{className:`aside-divider`}),(0,G.jsxs)(`section`,{className:`orchestration-aside-section`,children:[(0,G.jsx)(`div`,{className:`aside-title`,children:`最近调度`}),(0,G.jsx)(`div`,{className:`dispatch-log`,children:_.length===0?(0,G.jsx)(`div`,{className:`dispatch-log-empty`,children:`当前 Agent 还没有运行记录`}):_.map(e=>(0,G.jsxs)(`div`,{className:`dispatch-log-row`,children:[(0,G.jsx)(`span`,{className:`dispatch-status ${String(e.status).toLowerCase()}`}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:A2(e.input||`运行`)}),(0,G.jsxs)(`small`,{children:[M2(e.startedAt),` · `,N2(e.status)]})]})]},e.id))})]})]})]})]}):(0,G.jsxs)(`div`,{className:`orchestration-empty empty-state block`,children:[(0,G.jsx)(`span`,{className:`empty-icon`,children:(0,G.jsx)(Ve,{size:24})}),(0,G.jsx)(`h2`,{children:`先选择或创建一个 Agent`}),(0,G.jsx)(`p`,{children:`编排视图会读取 Agent Revision、RuntimeRef 和能力绑定生成真实执行链路。`})]})]})}var B2=new Set([`QUEUED`,`RUNNING`]);function V2(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(t)}function H2(e){return e==null?`-`:e<1e3?`${e} ms`:`${(e/1e3).toFixed(2)} s`}function U2(e){if(!e.completedAt)return B2.has(e.status)?`进行中`:`-`;let t=new Date(e.completedAt).getTime()-new Date(e.createdAt).getTime();return Number.isFinite(t)&&t>=0?H2(t):`-`}function W2(e){return e===`PASSED`||e===`SUCCEEDED`?`success`:B2.has(e)?`info`:e===`CANCELLED`||e===`INTERRUPTED`?`warning`:`danger`}function G2(e){return[`ERROR`,`CANCELLED`,`UNAVAILABLE`].includes(e.targetRun.status)?e.targetRun.status:e.metrics.every(e=>!e.required||e.status===`PASS`)?`PASSED`:`FAILED`}async function K2(e,t){try{let n=await e.json();return n?.error?.message||n?.detail?.message||t}catch{return t}}var q2=[{id:`response_contract@v1`,label:`响应契约`},{id:`runtime_budget@v1`,label:`运行预算`},{id:`tool_trajectory@v1`,label:`工具轨迹`},{id:`reference_match@v1`,label:`参考答案匹配`}],J2=q2.slice(0,3).map(e=>e.id);function Y2({refreshTick:e,onOpenRun:t=e=>window.history.pushState(null,``,`#/evaluations/${encodeURIComponent(e)}`)}){let n=(0,s.useRef)(null),r=(0,s.useRef)(0),[i,a]=(0,s.useState)([]),[o,c]=(0,s.useState)({builds:[]}),[l,u]=(0,s.useState)([]),[d,f]=(0,s.useState)(!0),[p,m]=(0,s.useState)(``),[h,_]=(0,s.useState)(!1),[v,y]=(0,s.useState)(!1),[b,x]=(0,s.useState)(``),[S,C]=(0,s.useState)(``),[w,T]=(0,s.useState)(!1),[E,D]=(0,s.useState)(``),[k,A]=(0,s.useState)(`a2a`),[j,M]=(0,s.useState)(``),[N,P]=(0,s.useState)(``),[F,I]=(0,s.useState)(120),[L,R]=(0,s.useState)(!1),[z,B]=(0,s.useState)(()=>[...J2]),V=(0,s.useCallback)(async()=>{let e=++r.current;n.current?.abort();let t=new AbortController;n.current=t;try{let n=await g(`/api/v1/evaluation-runs`,{signal:t.signal});if(!n.ok)throw Error(await K2(n,`评测任务加载失败`));let i=await n.json();e===r.current&&(a(i.items||[]),m(``))}catch(n){if(t.signal.aborted)return;e===r.current&&m(n instanceof Error?n.message:`评测任务加载失败`)}finally{e===r.current&&f(!1)}},[]),H=(0,s.useCallback)(async()=>{try{let[e,t]=await Promise.all([g(`/api/v1/evaluation-targets`),g(`/api/v1/agents`)]);if(!e.ok)return;let[n,r]=await Promise.all([e.json(),t.ok?t.json():Promise.resolve({items:[]})]);c({builds:n.builds||[]}),u(r.items||[])}catch{}},[]);(0,s.useEffect)(()=>{f(!0),V(),H()},[H,V,e]),(0,s.useEffect)(()=>{if(!i.some(e=>B2.has(e.status)))return;let e=()=>{document.visibilityState===`visible`&&V()},t=window.setInterval(e,1e3);return document.addEventListener(`visibilitychange`,e),()=>{window.clearInterval(t),document.removeEventListener(`visibilitychange`,e)}},[V,i]),(0,s.useEffect)(()=>()=>n.current?.abort(),[]);function ee(e){if(A(e),e!==`studio_build`){P(``);return}let t=l.find(e=>o.builds.some(t=>t.agentId===e.metadata.id))?.metadata.id||o.builds[0]?.agentId||``;M(t),P(o.builds.find(e=>e.agentId===t)?.id||``)}let te=(0,s.useMemo)(()=>o.builds.filter(e=>e.agentId===j),[o.builds,j]);(0,s.useEffect)(()=>{k===`studio_build`&&M(e=>e&&o.builds.some(t=>t.agentId===e)?e:l.find(e=>o.builds.some(t=>t.agentId===e.metadata.id))?.metadata.id||o.builds[0]?.agentId||``)},[l,o.builds,k]),(0,s.useEffect)(()=>{k===`studio_build`&&P(e=>te.some(t=>t.id===e)?e:te[0]?.id||``)},[te,k]);async function ne(e){e.preventDefault(),y(!0),x(``);try{let e=await g(`/api/v1/evaluations`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":`evaluation-${Date.now()}`},body:JSON.stringify({evalsetFile:S.trim(),target:{kind:k,locator:N.trim()},config:{timeoutSeconds:F,failFast:L,dataPolicy:`local_only`,evaluators:z}})});if(!e.ok)throw Error(await K2(e,`评测任务创建失败`));_(!1),x(`评测任务已创建`),J(`评测任务已创建`,S.trim()),await V()}catch(e){J(`评测任务创建失败`,e instanceof Error?e.message:`请稍后重试`,`error`)}finally{y(!1)}}async function U(e){T(!0),D(``);let t=new FormData;t.append(`file`,e);try{let e=await g(`/api/v1/evaluation-files`,{method:`POST`,body:t});if(!e.ok)throw Error(await K2(e,`EvalSet 文件导入失败`));let n=await e.json();C(n.path||``)}catch(e){D(e instanceof Error?e.message:`EvalSet 文件导入失败`)}finally{T(!1)}}let re=(0,s.useMemo)(()=>[{id:`evalset`,header:`EvalSet / Run`,minWidth:260,cell:e=>(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`strong`,{children:e.evalset.name||`未命名 EvalSet`}),(0,G.jsx)(`span`,{className:`resource-origin mono`,children:e.id})]})},{id:`target`,header:`Target`,minWidth:180,cell:e=>(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{children:e.target.label||e.target.kind||`-`}),(0,G.jsx)(`span`,{className:`resource-origin mono`,children:e.target.kind||`-`})]})},{id:`status`,header:`状态`,width:120,cell:e=>(0,G.jsx)(`span`,{className:`status-badge ${W2(e.status)}`,children:e.status})},{id:`progress`,header:`进度 / Case`,minWidth:150,cell:e=>e.summary?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`strong`,{children:[e.summary.passedCases,` / `,e.summary.totalCases]}),(0,G.jsx)(`span`,{className:`resource-origin`,children:`通过`})]}):e.progress?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`strong`,{children:[e.progress.current,` / `,e.progress.total]}),(0,G.jsx)(`span`,{className:`resource-origin`,children:e.progress.caseId||`执行中`})]}):(0,G.jsx)(`span`,{children:`等待开始`})},{id:`createdAt`,header:`创建时间`,minWidth:150,cell:e=>V2(e.createdAt)},{id:`duration`,header:`耗时`,width:100,cell:U2}],[]),ie=i.filter(e=>B2.has(e.status)).length,ae=i.filter(e=>e.hasReport).filter(e=>e.status===`PASSED`).length,oe=i.filter(e=>[`FAILED`,`ERROR`,`INTERRUPTED`].includes(e.status)).length,se=k===`a2a`?`Agent 地址`:k===`local_source`?`Agent 源码目录`:`Build`;return(0,G.jsxs)(`div`,{className:`page-container evaluation-page`,"data-layout":`data`,"data-scroll-mode":`data`,children:[(0,G.jsx)(Sd,{children:(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>_(!0),children:[(0,G.jsx)(Xe,{size:15}),(0,G.jsx)(`span`,{children:`新建评测`})]})}),b&&(0,G.jsx)(`p`,{className:`sr-only`,role:`status`,children:b}),(0,G.jsxs)(`section`,{className:`evaluation-page__metrics`,"aria-label":`评测汇总`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`全部`}),(0,G.jsx)(`strong`,{children:i.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`运行中`}),(0,G.jsx)(`strong`,{children:ie})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`已通过`}),(0,G.jsx)(`strong`,{children:ae})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`异常`}),(0,G.jsx)(`strong`,{children:oe})]})]}),(0,G.jsxs)(`section`,{className:`evaluation-page__run-list`,"aria-label":`评测运行`,children:[(0,G.jsx)(`div`,{className:`evaluation-page__panel-header`,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`评测运行`}),(0,G.jsxs)(`span`,{children:[i.length,` 个任务`]})]})}),(0,G.jsx)(_m,{columns:re,data:i,getRowId:e=>e.id,caption:`评测运行列表`,minWidth:980,loading:d,error:p,onRetry:()=>void V(),onRowActivate:e=>t(e.id),rowAriaLabel:e=>`打开评测 ${e.evalset.name||e.id}`,empty:{icon:(0,G.jsx)(O,{size:22}),title:`还没有评测任务`,description:`创建评测后即可在这里查看结果。`}})]}),h&&(0,G.jsx)(BD,{title:`新建评测`,subtitle:`选择 EvalSet、Target 和评估器。任务创建后将在后台执行。`,wide:!0,closeDisabled:v,onClose:()=>_(!1),footer:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`drawer-footer-spacer`}),(0,G.jsx)(`button`,{className:`button tertiary`,type:`button`,onClick:()=>_(!1),disabled:v,children:`取消`}),(0,G.jsx)(`button`,{className:`button accent`,type:`submit`,form:`evaluation-create-form`,disabled:v||w||!S.trim()||!N.trim()||!z.length,children:v?`正在创建`:`开始评测`})]}),children:(0,G.jsxs)(`form`,{id:`evaluation-create-form`,className:`evaluation-page__create form-grid two-columns`,onSubmit:ne,children:[(0,G.jsxs)(Y,{className:`evaluation-page__field--wide`,label:`EvalSet 文件`,htmlFor:`evaluation-evalset`,requirement:`required`,children:[(0,G.jsxs)(`div`,{className:`evaluation-page__evalset-picker`,children:[(0,G.jsx)(`input`,{id:`evaluation-evalset`,className:`sr-only`,type:`file`,accept:`.yaml,.yml,.json,application/json,application/yaml,text/yaml`,"aria-label":`选择 EvalSet 文件`,disabled:w,onChange:e=>{let t=e.target.files?.[0];e.target.value=``,t&&U(t)}}),(0,G.jsxs)(`label`,{className:`button secondary`,htmlFor:`evaluation-evalset`,children:[(0,G.jsx)(we,{size:15}),(0,G.jsx)(`span`,{children:w?`正在导入`:`选择文件`})]}),(0,G.jsx)(`span`,{className:`evaluation-page__evalset-path`,title:S,children:S||`尚未选择 EvalSet`})]}),E&&(0,G.jsx)(`p`,{className:`studio-field-error`,role:`alert`,children:E})]}),(0,G.jsx)(Y,{label:`Target 类型`,requirement:`required`,children:(0,G.jsx)(Fh,{ariaLabel:`Target 类型`,value:k,options:[{value:`a2a`,label:`A2A Agent`},{value:`local_source`,label:`本地源码`},{value:`studio_build`,label:`Studio Build`}],onValueChange:e=>ee(e)})}),k===`studio_build`&&(0,G.jsx)(Y,{label:`Agent`,htmlFor:`evaluation-agent`,requirement:`required`,children:(0,G.jsx)(Fh,{id:`evaluation-agent`,ariaLabel:`Studio Agent`,value:j,placeholder:`请选择 Agent`,options:l.map(e=>({value:e.metadata.id,label:e.metadata.name,description:o.builds.some(t=>t.agentId===e.metadata.id)?e.metadata.id:`${e.metadata.id} · 需先构建`,disabled:!o.builds.some(t=>t.agentId===e.metadata.id)})),disabled:!l.some(e=>o.builds.some(t=>t.agentId===e.metadata.id)),onValueChange:M})}),(0,G.jsx)(Y,{label:se,htmlFor:`evaluation-locator`,requirement:`required`,children:k===`studio_build`?(0,G.jsx)(Fh,{id:`evaluation-locator`,ariaLabel:`Studio Build`,value:N,placeholder:`暂无成功 Build`,options:te.map(e=>({value:e.id,label:e.id,description:e.runtime})),disabled:!te.length,onValueChange:P}):(0,G.jsx)(`input`,{id:`evaluation-locator`,value:N,onChange:e=>P(e.target.value),required:!0,placeholder:k===`a2a`?`https://agent.example.test/a2a`:`.`})}),(0,G.jsx)(Y,{label:`超时(秒)`,htmlFor:`evaluation-timeout`,requirement:`required`,children:(0,G.jsx)(`input`,{id:`evaluation-timeout`,type:`number`,min:1,max:3600,value:F,onChange:e=>I(Number(e.target.value)),required:!0})}),(0,G.jsx)(Y,{label:`运行策略`,children:(0,G.jsxs)(`label`,{className:`checkbox-row evaluation-page__fail-fast`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:L,onChange:e=>R(e.target.checked)}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`Fail fast`}),(0,G.jsx)(`small`,{children:`首个失败 Case 后停止`})]})]})}),(0,G.jsxs)(Y,{className:`evaluation-page__field--wide`,label:`评估器`,requirement:`required`,children:[(0,G.jsx)(`div`,{className:`evaluation-page__evaluator-options`,role:`group`,"aria-label":`评估器`,children:q2.map(e=>(0,G.jsxs)(`label`,{className:`checkbox-row`,children:[(0,G.jsx)(`input`,{type:`checkbox`,"aria-label":e.label,checked:z.includes(e.id),onChange:t=>B(n=>t.target.checked?[...n,e.id]:n.filter(t=>t!==e.id))}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.label}),(0,G.jsx)(`small`,{children:e.id})]})]},e.id))}),!z.length&&(0,G.jsx)(`p`,{className:`studio-field-error`,role:`alert`,children:`至少选择一个评估器`})]})]})})]})}function X2(e){return typeof e==`string`?e:e==null?`-`:JSON.stringify(e,null,2)}function Z2(e,t,n,r){let i=n.slice(0,t).filter(t=>t.type===e.type).length;return r.filter(t=>t.evidence?.assertion===e.type)[i]}function Q2({runId:e,onBack:t}){let n=(0,s.useRef)(null),[r,i]=(0,s.useState)(null),[a,o]=(0,s.useState)(``),[c,l]=(0,s.useState)(!0),[u,d]=(0,s.useState)(``),[f,p]=(0,s.useState)(!1),m=(0,s.useCallback)(async()=>{n.current?.abort();let t=new AbortController;n.current=t;try{let n=await g(`/api/v1/evaluation-runs/${encodeURIComponent(e)}`,{signal:t.signal});if(!n.ok)throw Error(await K2(n,`评测详情加载失败`));let r=await n.json();i(r),o(e=>r.report?.caseRuns.some(t=>t.caseId===e)?e:r.report?.caseRuns[0]?.caseId||``),d(``)}catch(e){if(t.signal.aborted)return;d(e instanceof Error?e.message:`评测详情加载失败`)}finally{t.signal.aborted||l(!1)}},[e]);(0,s.useEffect)(()=>(l(!0),m(),()=>n.current?.abort()),[m]),(0,s.useEffect)(()=>{if(!r||!B2.has(r.status))return;let e=()=>{document.visibilityState===`visible`&&m()},t=window.setInterval(e,1e3);return document.addEventListener(`visibilitychange`,e),()=>{window.clearInterval(t),document.removeEventListener(`visibilitychange`,e)}},[m,r]);let h=(0,s.useMemo)(()=>r?.report?.caseRuns.find(e=>e.caseId===a)||null,[a,r]),_=(0,s.useMemo)(()=>new Map((r?.report?.spec.evalset.cases||[]).map(e=>[e.id,e])),[r]),v=h?_.get(h.caseId):void 0;async function y(){if(!(!r||!B2.has(r.status)||f)){p(!0);try{let e=await g(`/api/v1/operations/${encodeURIComponent(r.operationId)}:cancel`,{method:`POST`});if(!e.ok)throw Error(await K2(e,`取消评测失败`));J(`已提交取消请求`,r.evalset.name||r.id),await m()}catch(e){J(`取消评测失败`,e instanceof Error?e.message:`请稍后重试`,`error`)}finally{p(!1)}}}return(0,G.jsxs)(`div`,{className:`page-container evaluation-page evaluation-detail-page`,"data-layout":`data`,"data-scroll-mode":`workbench`,children:[(0,G.jsxs)(`header`,{className:`page-header`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h1`,{children:r?.evalset.name||`评测详情`}),(0,G.jsx)(`p`,{className:`mono`,children:e})]}),(0,G.jsxs)(`div`,{className:`header-actions`,children:[(0,G.jsxs)(`button`,{className:`button tertiary`,type:`button`,onClick:t,children:[(0,G.jsx)(A,{size:15}),(0,G.jsx)(`span`,{children:`返回评测列表`})]}),(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:()=>void m(),children:[(0,G.jsx)(et,{size:15}),(0,G.jsx)(`span`,{children:`刷新`})]}),r&&B2.has(r.status)&&(0,G.jsxs)(`button`,{className:`button danger`,type:`button`,onClick:()=>void y(),disabled:f,children:[(0,G.jsx)(ut,{size:14}),(0,G.jsx)(`span`,{children:f?`正在取消`:`取消评测`})]})]})]}),c&&!r?(0,G.jsxs)(`div`,{className:`evaluation-page__detail-empty`,children:[(0,G.jsx)(O,{size:22}),(0,G.jsx)(`strong`,{children:`正在加载评测详情`})]}):u&&!r?(0,G.jsxs)(`div`,{className:`evaluation-page__detail-empty`,role:`alert`,children:[(0,G.jsx)(`strong`,{children:`评测详情加载失败`}),(0,G.jsx)(`span`,{children:u}),(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:()=>void m(),children:`重试`})]}):r?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`section`,{className:`evaluation-detail-page__overview`,"aria-label":`评测运行概览`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`状态`}),(0,G.jsx)(`strong`,{children:(0,G.jsx)(`span`,{className:`status-badge ${W2(r.status)}`,children:r.status})}),(0,G.jsx)(`small`,{children:r.error?.message||`任务状态`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`进度`}),(0,G.jsx)(`strong`,{children:r.progress?`${r.progress.current} / ${r.progress.total}`:r.summary?`${r.summary.passedCases} / ${r.summary.totalCases}`:`等待开始`}),(0,G.jsx)(`small`,{children:r.progress?.caseId||(r.hasReport?`通过 Case`:`尚未执行 Case`)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Target`}),(0,G.jsx)(`strong`,{children:r.target.label||r.target.kind||`-`}),(0,G.jsx)(`small`,{children:r.target.kind||`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`耗时`}),(0,G.jsx)(`strong`,{children:U2(r)}),(0,G.jsx)(`small`,{children:V2(r.createdAt)})]})]}),!r.report&&(0,G.jsxs)(`section`,{className:`evaluation-detail-page__pending`,children:[(0,G.jsx)(O,{size:20}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:B2.has(r.status)?`评测正在后台执行`:`该任务没有可用报告`}),(0,G.jsx)(`span`,{children:r.progress?.caseId?`当前 Case:${r.progress.caseId}`:r.error?.message||`等待运行状态更新。`})]})]}),r.report&&(0,G.jsxs)(`section`,{className:`evaluation-detail-page__report`,children:[(0,G.jsxs)(`div`,{className:`evaluation-page__panel-header`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`评测报告`}),(0,G.jsxs)(`span`,{children:[r.report.caseRuns.length,` 个 Case`]})]}),(0,G.jsx)(`span`,{className:`status-badge ${W2(r.report.status)}`,children:r.report.status})]}),(0,G.jsxs)(`dl`,{className:`evaluation-page__snapshot`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Target`}),(0,G.jsx)(`dd`,{children:r.report.spec.target.kind})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Runtime`}),(0,G.jsx)(`dd`,{children:r.report.spec.target.runtime||`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Revision Digest`}),(0,G.jsx)(`dd`,{className:`mono`,children:r.report.spec.target.revisionDigest})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Entrypoint`}),(0,G.jsx)(`dd`,{className:`mono`,children:r.report.spec.target.entrypoint})]})]}),(0,G.jsxs)(`section`,{className:`evaluation-page__dataset`,"aria-labelledby":`evaluation-dataset-heading`,children:[(0,G.jsxs)(`div`,{className:`evaluation-page__dataset-heading`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{id:`evaluation-dataset-heading`,children:`数据集快照`}),typeof r.report.spec.evalset.metadata?.description==`string`&&(0,G.jsx)(`p`,{children:r.report.spec.evalset.metadata.description})]}),(0,G.jsx)(`span`,{children:r.report.spec.evalset.schemaVersion||`ksadk.eval/v1`})]}),(0,G.jsxs)(`dl`,{className:`evaluation-page__dataset-summary`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`名称`}),(0,G.jsx)(`dd`,{children:r.report.spec.evalset.name})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Case`}),(0,G.jsx)(`dd`,{children:r.report.spec.evalset.cases?.length??r.report.caseRuns.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`来源格式`}),(0,G.jsx)(`dd`,{children:r.report.spec.evalset.sourceFormat||`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Content Digest`}),(0,G.jsx)(`dd`,{className:`mono`,children:r.report.spec.evalset.contentDigest||`-`})]})]})]}),(0,G.jsxs)(`div`,{className:`evaluation-page__case-layout`,children:[(0,G.jsx)(`div`,{className:`evaluation-page__case-list`,"aria-label":`Case 列表`,children:r.report.caseRuns.map(e=>{let t=G2(e),n=_.get(e.caseId)?.turns.at(-1)?.input;return(0,G.jsxs)(`button`,{type:`button`,className:e.caseId===a?`active`:``,onClick:()=>o(e.caseId),children:[(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.caseId}),(0,G.jsx)(`small`,{className:`evaluation-page__case-preview`,children:n||`Attempt ${e.attempt}`})]}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`span`,{className:`status-badge ${W2(t)}`,children:t}),(0,G.jsx)(`small`,{children:H2(e.targetRun.durationMs)})]})]},e.caseId)})}),(0,G.jsx)(`div`,{className:`evaluation-page__case-detail`,children:h?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`输入与预期`}),v?(0,G.jsx)(`div`,{className:`evaluation-page__turns`,children:v.turns.map((e,t)=>(0,G.jsxs)(`article`,{children:[(0,G.jsxs)(`strong`,{children:[`Turn `,t+1]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`输入`}),(0,G.jsx)(`pre`,{children:e.input})]}),e.expectedOutput!==void 0&&e.expectedOutput!==null&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`期望输出`}),(0,G.jsx)(`pre`,{children:e.expectedOutput})]}),!!e.expectedTools?.length&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`期望工具`}),(0,G.jsx)(`div`,{className:`evaluation-page__expected-tools`,children:e.expectedTools.map((e,n)=>(0,G.jsx)(`code`,{children:String(e.name||X2(e))},`${t}-${n}`))})]})]},`${v.id}-turn-${t}`))}):(0,G.jsx)(`p`,{className:`evaluation-page__muted`,children:`该报告没有保存 Case 输入快照。`})]}),!!v?.assertions?.length&&(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`断言与评估结果`}),(0,G.jsx)(`div`,{className:`evaluation-page__assertions`,children:v.assertions.map((e,t,n)=>{let r=Z2(e,t,n,h.metrics);return(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.type}),(0,G.jsx)(`small`,{children:e.required===!1?`可选`:`必需`})]}),(0,G.jsx)(`code`,{children:X2(e.value)}),(0,G.jsx)(`span`,{className:`status-badge ${W2(r?.status===`PASS`?`PASSED`:r?.status||`UNAVAILABLE`)}`,children:r?.status||`-`})]},`${e.type}-${t}`)})})]}),(0,G.jsxs)(`section`,{children:[(0,G.jsxs)(`div`,{className:`evaluation-page__section-title`,children:[(0,G.jsx)(`h3`,{children:`Agent 输出`}),(0,G.jsxs)(`span`,{children:[H2(h.targetRun.durationMs),` · `,h.targetRun.usage?.reported?`${h.targetRun.usage.totalTokens||0} Tokens`:`Token 未上报`]})]}),(0,G.jsx)(`pre`,{children:h.targetRun.output||h.targetRun.errorMessage||`无输出`})]}),(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`评估指标`}),(0,G.jsx)(`div`,{className:`evaluation-page__evidence`,children:h.metrics.map(e=>(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`strong`,{children:[e.name,`@`,e.version||`v1`]}),(0,G.jsx)(`span`,{className:`status-badge ${W2(e.status===`PASS`?`PASSED`:e.status)}`,children:e.status}),(0,G.jsx)(`span`,{children:e.score??`-`})]},`${e.name}-${e.version||`v1`}-${e.status}`))})]}),(0,G.jsx)(`section`,{className:`evaluation-page__case-evidence`,children:(0,G.jsxs)(`details`,{children:[(0,G.jsx)(`summary`,{children:`执行证据`}),(0,G.jsx)(`h4`,{children:`TraceRef`}),(0,G.jsx)(`pre`,{children:h.targetRun.traceRef?JSON.stringify(h.targetRun.traceRef,null,2):`未上报 TraceRef`}),!!v&&Object.keys(v.metadata||{}).length>0&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`h4`,{children:`Case Metadata`}),(0,G.jsx)(`pre`,{children:JSON.stringify(v.metadata,null,2)})]})]})})]}):(0,G.jsx)(`div`,{className:`evaluation-page__detail-empty`,children:(0,G.jsx)(`span`,{children:`选择一个 Case 查看详情。`})})})]})]})]}):null]})}var $2=[{value:`system`,label:`跟随系统`,description:`随 macOS 或浏览器切换`,icon:ze},{value:`light`,label:`浅色`,description:`始终使用明亮界面`,icon:dt},{value:`dark`,label:`深色`,description:`始终使用暗色界面`,icon:Be}],e4=[{id:`general`,label:`通用`},{id:`credentials`,label:`模型与凭证`},{id:`cloud`,label:`云端连接`},{id:`runtime`,label:`运行与沙箱`},{id:`about`,label:`关于`}];function t4(e){return e===`workspace`||e===`session`?`工作区`:e===`environment`?`启动环境`:e===`missing`?`未配置`:e}function n4(e){let t=(e||`read-only`).replaceAll(`_`,`-`);return t===`workspace-write`||t===`workspace-write-auto`||t===`full-access`?t:`read-only`}function r4({themePreference:e,onThemePreferenceChange:t,initialSection:n=`general`,onClose:r}){let[i,a]=(0,s.useState)(null),o=y_({resolver:k_(pz),defaultValues:{sandbox:`read-only`,buildAfterCreate:!0,codexProxy:`auto`,cloudRegion:``,cloudBucket:``,cloudAccessKey:``,cloudSecretKey:``,cloudAccountId:``}}),[c,l]=(0,s.useState)([]),[u,d]=(0,s.useState)([]),[f,p]=(0,s.useState)(!1),[m,h]=(0,s.useState)(null),[_,v]=(0,s.useState)(n),y=(0,s.useCallback)(e=>{v(e),document.getElementById(`settings-${e}`)?.scrollIntoView({behavior:`smooth`,block:`start`})},[]);(0,s.useEffect)(()=>{let e=requestAnimationFrame(()=>y(n));return()=>cancelAnimationFrame(e)},[n,y]);let b=(0,s.useCallback)(async()=>{try{let[e,t]=await Promise.all([g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()),g(`/api/v1/catalog/models`).then(e=>e.json()).catch(()=>null)]),n=(e.items||[]).filter(e=>e.kind===`model`);t?.items?.length&&(n=[...n.filter(e=>e.source===`local`||e.source===`market`),...t.items]);let r=[],i=new Set;for(let e of n){let t=e.requiredSecretRefs?.[0]||e.contract?.credentialRef||``;if(!t||i.has(t))continue;i.add(t);let n=t.replace(/^env:\/\//,``),a={configured:!1,source:`missing`};try{a=await g(`/api/v1/credentials/${encodeURIComponent(n)}`).then(e=>e.json())}catch{}r.push({ref:t,name:n,configured:!!a?.configured,source:a?.source||`missing`,model:e})}l(r)}catch{l([])}},[]);(0,s.useEffect)(()=>{(async()=>{try{let e=await g(`/api/v1/system/settings`).then(e=>e.json());a(e),o.reset({sandbox:n4(e.sandbox),buildAfterCreate:e.buildAfterCreate!==!1,codexProxy:e.codexProxy||`auto`,cloudRegion:e.cloudRegion||``,cloudBucket:e.cloudBucket||``})}catch{a({})}await b();try{let e=await g(`/api/v1/system/bootstrap`).then(e=>e.json());d([[`工作区`,e?.workspace?.name||`-`],[`路径`,e?.workspace?.path||`-`],[`API 版本`,e?.apiVersion||`-`]])}catch{d([])}})()},[b,o]);async function x(e){p(!0);try{let t={sandbox:e.sandbox,buildAfterCreate:e.buildAfterCreate,codexProxy:e.codexProxy};e.cloudRegion.trim()&&(t.cloudRegion=e.cloudRegion.trim()),e.cloudBucket.trim()&&(t.cloudBucket=e.cloudBucket.trim()),e.cloudAccessKey.trim()&&(t.cloudAccessKey=e.cloudAccessKey.trim()),e.cloudSecretKey.trim()&&(t.cloudSecretKey=e.cloudSecretKey.trim()),e.cloudAccountId.trim()&&(t.cloudAccountId=e.cloudAccountId.trim());let n=await g(`/api/v1/system/settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>null);if(Nb(e,o.setError)){p(!1);return}throw Error(e?.error?.message||`保存失败(${n.status})`)}r(),J(`设置已保存`,`工作区级配置已写入 .agentkit/settings.yaml。`)}catch(e){J(`保存失败`,e.message,`error`)}p(!1)}return(0,G.jsx)(Vg,{...o,children:(0,G.jsxs)(BD,{title:`设置`,subtitle:`工作区级配置,保存到 .agentkit/settings.yaml,重启后仍生效。`,wide:!0,onClose:r,footer:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:r,children:`取消`}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:o.handleSubmit(x),disabled:f||i==null,children:[(0,G.jsx)(V,{size:15}),(0,G.jsx)(`span`,{children:f?`保存中`:`保存`})]})]}),children:[(0,G.jsxs)(`div`,{className:`settings-layout`,children:[(0,G.jsx)(`nav`,{className:`settings-section-nav`,"aria-label":`设置分类`,children:e4.map(e=>(0,G.jsx)(`button`,{className:_===e.id?`active`:``,type:`button`,onClick:()=>y(e.id),children:e.label},e.id))}),(0,G.jsxs)(`div`,{className:`settings-sections`,children:[(0,G.jsxs)(`section`,{id:`settings-general`,className:`settings-group`,tabIndex:-1,children:[(0,G.jsx)(`h3`,{children:`外观`}),(0,G.jsx)(`div`,{className:`appearance-options`,role:`radiogroup`,"aria-label":`颜色模式`,children:$2.map(n=>{let r=n.icon;return(0,G.jsxs)(`label`,{className:`appearance-option${e===n.value?` selected`:``}`,children:[(0,G.jsx)(r,{"aria-hidden":`true`}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:n.label}),(0,G.jsx)(`small`,{children:n.description})]}),(0,G.jsx)(`input`,{type:`radio`,name:`studio-theme`,value:n.value,checked:e===n.value,onChange:()=>t(n.value)})]},n.value)})}),(0,G.jsx)(`p`,{className:`appearance-note`,children:`外观仅保存到当前浏览器,并会立即应用到 Studio 与会话工作台。`})]}),(0,G.jsxs)(`section`,{id:`settings-runtime`,className:`settings-group`,tabIndex:-1,children:[(0,G.jsx)(`h3`,{children:`执行与沙箱`}),(0,G.jsx)(Y,{label:`默认执行权限(Codex)`,requirement:`required`,htmlFor:`settingSandbox`,hint:`新 Agent 默认值;会话页可单次覆盖,下一轮对话生效。`,error:o.formState.errors.sandbox?.message,children:(0,G.jsx)(Fh,{id:`settingSandbox`,ariaLabel:`默认执行权限`,value:o.watch(`sandbox`),options:[{value:`read-only`,label:`只读沙箱(不可写)`},{value:`workspace-write`,label:`请求批准(写工作区,每次询问)`},{value:`workspace-write-auto`,label:`替我审批(写工作区,仅风险询问)`},{value:`full-access`,label:`完全访问(不受限读写)`}],onValueChange:e=>o.setValue(`sandbox`,e,{shouldDirty:!0,shouldValidate:!0})})}),(0,G.jsx)(`div`,{className:`studio-form-field`,children:(0,G.jsxs)(`label`,{className:`checkbox-row`,children:[(0,G.jsx)(`input`,{type:`checkbox`,...o.register(`buildAfterCreate`)}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`创建后立即构建`}),(0,G.jsx)(`small`,{children:`新建 Agent 保存后自动构建并进入会话`})]})]})})]}),(0,G.jsxs)(`section`,{id:`settings-credentials`,className:`settings-group`,tabIndex:-1,children:[(0,G.jsx)(`h3`,{children:`凭证`}),c.length===0?(0,G.jsx)(`div`,{className:`settings-empty`,children:`暂无凭证`}):c.map(e=>(0,G.jsxs)(`div`,{className:`settings-credential`,children:[(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.name}),(0,G.jsx)(`small`,{children:e.configured?`已配置 · ${t4(e.source)}`:`未配置`})]}),(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>h(e.model),children:`配置`})]},e.ref))]}),(0,G.jsxs)(`section`,{id:`settings-runtime-proxy`,className:`settings-group`,tabIndex:-1,children:[(0,G.jsx)(`h3`,{children:`运行时`}),(0,G.jsx)(Y,{label:`Codex Responses→Chat 代理`,requirement:`required`,htmlFor:`settingCodexProxy`,hint:`非原生 Responses 上游可启用兼容代理。`,error:o.formState.errors.codexProxy?.message,children:(0,G.jsx)(Fh,{id:`settingCodexProxy`,ariaLabel:`Codex Responses 代理`,value:o.watch(`codexProxy`),options:[{value:`auto`,label:`自动(探测)`},{value:`forced`,label:`强制启用`},{value:`direct`,label:`强制直连`}],onValueChange:e=>o.setValue(`codexProxy`,e,{shouldDirty:!0,shouldValidate:!0})})})]}),(0,G.jsxs)(`section`,{id:`settings-cloud`,className:`settings-group`,tabIndex:-1,children:[(0,G.jsx)(`h3`,{children:`云端部署`}),(0,G.jsx)(`p`,{className:`helper`,children:`配置云端部署使用的区域和制品存储。`}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`Region`,requirement:`optional`,htmlFor:`settingCloudRegion`,error:o.formState.errors.cloudRegion?.message,children:(0,G.jsx)(`input`,{id:`settingCloudRegion`,placeholder:`cn-beijing-6`,...o.register(`cloudRegion`)})}),(0,G.jsx)(Y,{label:`KS3 Bucket`,requirement:`optional`,htmlFor:`settingCloudBucket`,hint:`留空时复用启动环境或 SDK 默认 Bucket。`,error:o.formState.errors.cloudBucket?.message,children:(0,G.jsx)(`input`,{id:`settingCloudBucket`,placeholder:`agentengine--cn-beijing-6`,...o.register(`cloudBucket`)})})]}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`Access Key`,requirement:`optional`,htmlFor:`settingCloudAccessKey`,hint:`金山云账号 AK,用于云端请求签名;留空保留已保存值。`,error:o.formState.errors.cloudAccessKey?.message,children:(0,G.jsx)(`input`,{id:`settingCloudAccessKey`,type:`password`,autoComplete:`off`,placeholder:i?.cloudAccountConfigured?`已配置(留空保持不变)`:`AKLT...`,...o.register(`cloudAccessKey`)})}),(0,G.jsx)(Y,{label:`Secret Key`,requirement:`optional`,htmlFor:`settingCloudSecretKey`,hint:`金山云账号 SK;留空保留已保存值。`,error:o.formState.errors.cloudSecretKey?.message,children:(0,G.jsx)(`input`,{id:`settingCloudSecretKey`,type:`password`,autoComplete:`off`,placeholder:i?.cloudAccountConfigured?`已配置(留空保持不变)`:``,...o.register(`cloudSecretKey`)})})]}),(0,G.jsx)(Y,{label:`Account ID`,requirement:`optional`,htmlFor:`settingCloudAccountId`,hint:`主账号 ID(X-Ksc-Account-Id);可从金山云控制台获取。`,error:o.formState.errors.cloudAccountId?.message,children:(0,G.jsx)(`input`,{id:`settingCloudAccountId`,placeholder:`10203040...`,...o.register(`cloudAccountId`)})}),(0,G.jsxs)(`p`,{className:`helper`,children:[`云端账号:`,i?.cloudAccountConfigured?`已就绪`:`尚未配置`,`;云端部署:`,i?.cloudSignedAccountConfigured?`已就绪`:`尚未配置`]})]}),(0,G.jsxs)(`section`,{id:`settings-about`,className:`settings-group`,tabIndex:-1,children:[(0,G.jsx)(`h3`,{children:`关于`}),(0,G.jsx)(`dl`,{className:`trace-detail-grid`,children:u.map(([e,t])=>(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:e}),(0,G.jsx)(`dd`,{children:t})]},e))})]})]})]}),m&&(0,G.jsx)(Az,{model:m,onClose:()=>h(null),onChanged:b})]})})}var i4=class extends Error{code;status;capability;runId;cursor;cause;constructor(e,t,n={}){super(t),this.name=`ConversationClientError`,this.code=e,this.status=n.status,this.capability=n.capability,this.runId=n.runId,this.cursor=n.cursor,this.cause=n.cause}},a4=`conversation.ksadk.io/v1`,o4=/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/,s4=new Set([`native`,`translated`,`degraded`,`unavailable`]),c4=new Set([`user_message`,`assistant_text`,`reasoning`,`tool_call`,`approval`,`progress`,`plan`,`goal`,`artifact`,`a2ui`,`error`,`unknown`]),l4=new Set([`append`,`replace`,`completed`]),u4=new Set([`pending`,`streaming`,`completed`,`failed`]),d4=new Set([`public`,`internal`,`hidden`]),f4=new Set([`apiVersion`,`kind`,`inputId`,`sessionId`,`idempotencyKey`,`parts`,`modelRef`,`reasoning`,`approvalMode`,`collaborationMode`,`goalObjective`,`extensions`]),p4=new Set([`kind`,`text`]),m4=new Set([`kind`,`attachmentRef`,`mediaType`,`name`]),h4=new Set([`ask`,`risk`,`full`]),g4=new Set([`default`,`plan`]);function _4(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function v4(e,t){return typeof e==`string`&&e.length>0&&e.length<=t}function y4(e,t,n=!1){return e==null||typeof e==`string`&&e.length<=t&&(n||e.length>0)}function b4(e,t){return Object.keys(e).every(e=>t.has(e))}function x4(e){let t=_4(e);return!t||typeof t.kind!=`string`?null:t.kind===`text`?!b4(t,p4)||!v4(t.text,131072)?null:{kind:`text`,text:t.text}:t.kind===`attachment`?!b4(t,m4)||!v4(t.attachmentRef,2048)||!v4(t.mediaType,256)||!y4(t.name,1024,!0)?null:{kind:`attachment`,attachmentRef:t.attachmentRef,mediaType:t.mediaType,...t.name===void 0?{}:{name:t.name}}:null}function S4(e){if(e===void 0)return{};let t=_4(e);return!t||Object.keys(t).some(e=>!o4.test(e)||!e.includes(`.`))?null:{...t}}function C4(e){let t=_4(e);if(!t||!b4(t,f4)||t.apiVersion!==a4||t.kind!==`ConversationInput`||!v4(t.inputId,256)||!v4(t.sessionId,256)||!v4(t.idempotencyKey,512)||!Array.isArray(t.parts)||t.parts.length===0||!y4(t.modelRef,256)||!y4(t.reasoning,64)||t.approvalMode!==void 0&&t.approvalMode!==null&&!h4.has(String(t.approvalMode))||t.collaborationMode!==void 0&&t.collaborationMode!==null&&!g4.has(String(t.collaborationMode))||!y4(t.goalObjective,4096))return null;let n=t.parts.map(x4),r=S4(t.extensions);return n.some(e=>e===null)||r===null?null:{apiVersion:a4,kind:`ConversationInput`,inputId:t.inputId,sessionId:t.sessionId,idempotencyKey:t.idempotencyKey,parts:n,...t.modelRef===void 0?{}:{modelRef:t.modelRef},...t.reasoning===void 0?{}:{reasoning:t.reasoning},...t.approvalMode===void 0?{}:{approvalMode:t.approvalMode},...t.collaborationMode===void 0?{}:{collaborationMode:t.collaborationMode},...t.goalObjective===void 0?{}:{goalObjective:t.goalObjective},...t.extensions===void 0?{}:{extensions:r}}}function w4(e){let t=C4({...e,apiVersion:e.apiVersion||a4,kind:e.kind||`ConversationInput`});if(!t)throw new i4(`conversation_contract_mismatch`,`Conversation input does not match conversation.ksadk.io/v1.`);return t}function T4(e){let t=e.parts.map(e=>e.kind===`text`?`text`:e.mediaType.toLowerCase().startsWith(`image/`)?`attachment.image`:`attachment.file`);return e.modelRef&&t.push(`model.select`),e.reasoning&&t.push(`reasoning.effort`),e.approvalMode&&t.push(`approval`),e.collaborationMode===`plan`&&t.push(`plan`),e.goalObjective&&t.push(`goal`),t.push(...Object.keys(e.extensions||{})),[...new Set(t)]}function E4(e,t){if(e.sessionId!==t.sessionId)throw new i4(`conversation_session_mismatch`,`Conversation input session does not match the active surface.`);for(let n of T4(t))if(!j4(e,n))throw new i4(`conversation_input_unsupported`,`Conversation input is not declared by the active surface.`,{capability:n});return t}function D4(e){let t=_4(e);return!t||!v4(t.name,128)||!o4.test(t.name)||!s4.has(t.mode)||!y4(t.reason,512,!0)||(t.mode===`degraded`||t.mode===`unavailable`)&&!v4(t.reason,512)?null:{name:t.name,mode:t.mode,...t.reason===void 0?{}:{reason:t.reason}}}function O4(e){if(e===void 0)return[];if(!Array.isArray(e))return null;let t=e.map(D4);if(t.some(e=>e===null))return null;let n=t;return new Set(n.map(e=>e.name)).size===n.length?n:null}function k4(e){let t=_4(e);if(!t||t.apiVersion!==a4||t.kind!==`ConversationSurface`||!v4(t.surfaceId,256)||!v4(t.sessionId,256)||!v4(t.providerRef,256))return null;let n=O4(t.inputs),r=O4(t.outputs);return!n||!r?null:{apiVersion:a4,kind:`ConversationSurface`,surfaceId:t.surfaceId,sessionId:t.sessionId,providerRef:t.providerRef,inputs:n,outputs:r}}function A4(e){let t=_4(e);if(!t||t.apiVersion!==a4||t.kindVersion!==1||!v4(t.itemId,512)||!y4(t.parentItemId,512)||!Array.isArray(t.sourceEventIds)||t.sourceEventIds.length===0||t.sourceEventIds.some(e=>typeof e!=`string`||e.length===0)||new Set(t.sourceEventIds).size!==t.sourceEventIds.length||!v4(t.sessionId,256)||!v4(t.runId,256)||!v4(t.kind,128)||!l4.has(t.operation)||!u4.has(t.lifecycle)||t.visibility!==void 0&&!d4.has(t.visibility)||!v4(t.payloadSchemaRef,256)||!y4(t.capabilityRef,256,!0))return null;let n=t.operation,r=t.lifecycle;if(n===`completed`&&r!==`completed`&&r!==`failed`)return null;let i=t.payload===void 0?{}:_4(t.payload),a=t.nativeRef===void 0?{}:_4(t.nativeRef);if(!i||!a)return null;let o=String(t.kind||`unknown`),s=c4.has(o)?o:`unknown`;return{apiVersion:a4,kindVersion:1,itemId:t.itemId,...t.parentItemId===void 0?{}:{parentItemId:t.parentItemId},sourceEventIds:[...t.sourceEventIds],sessionId:t.sessionId,runId:t.runId,kind:s,operation:n,lifecycle:r,visibility:s===`unknown`&&o!==`unknown`?`hidden`:t.visibility||`public`,payloadSchemaRef:t.payloadSchemaRef,payload:s===`unknown`&&o!==`unknown`?{originalKind:o,summary:`This content type is not supported by the current renderer.`}:{...i},...t.capabilityRef===void 0?{}:{capabilityRef:t.capabilityRef},nativeRef:{...a}}}function j4(e,...t){return e.inputs.some(e=>t.includes(e.name)&&(e.mode===`native`||e.mode===`translated`))}var M4={user_message:`conversation.item.user_message/v1`,assistant_text:`conversation.item.assistant_text/v1`,reasoning:`conversation.item.reasoning/v1`,tool_call:`conversation.item.tool-call/v1`,approval:`conversation.item.approval/v1`,artifact:`conversation.item.artifact/v1`,a2ui:`conversation.item.a2ui/v1`,error:`conversation.item.error/v1`};function N4(e){return e.lifecycle===`completed`||e.lifecycle===`failed`}function P4(e){let t=M4[e.kind];return t===void 0||t===e.payloadSchemaRef}function F4(e){if(typeof e!=`string`||e.length===0)return null;try{let t=new URL(e);return t.protocol!==`http:`&&t.protocol!==`https:`||t.username||t.password?null:t.toString()}catch{return null}}function I4(e){return{id:e.itemId,parentId:e.parentItemId||null,runId:e.runId,kind:e.kind,text:typeof e.payload.text==`string`?e.payload.text:``,lifecycle:e.lifecycle}}function L4(e){return{id:e.itemId,name:typeof e.payload.name==`string`&&e.payload.name?e.payload.name:`Artifact`,mimeType:typeof e.payload.mimeType==`string`&&e.payload.mimeType?e.payload.mimeType:`application/octet-stream`,uri:F4(e.payload.uri)}}function R4(e,t){let n=e.payload[t];return typeof n==`string`&&n?n:null}function z4(e){if(e.kind===`tool_call`){let t=R4(e,`callId`);if(t)return`tool:${t}`}if(e.kind===`approval`){let t=R4(e,`interactionId`);if(t)return`approval:${t}`}if(e.kind===`a2ui`){let t=R4(e,`surfaceId`);if(t)return`a2ui:${t}`}return`item:${e.itemId}`}function B4(e,t){let n=N4(e)&&!N4(t);return{...e,...t,itemId:e.itemId,parentItemId:e.parentItemId,sourceEventIds:[...new Set([...e.sourceEventIds,...t.sourceEventIds])],payload:{...e.payload,...t.payload},nativeRef:{...e.nativeRef,...t.nativeRef},...n?{lifecycle:e.lifecycle,operation:e.operation}:{}}}function V4(e){let t=[],n=new Map;for(let r of e){let e=z4(r),i=n.get(e);if(i===void 0){n.set(e,t.length),t.push({key:e,item:r,sourceItemIds:[r.itemId]});continue}let a=t[i];t[i]={key:e,item:B4(a.item,r),sourceItemIds:[...new Set([...a.sourceItemIds,r.itemId])]}}return t}function H4(e,t={}){let n=e.items.filter(e=>e.visibility===`public`||t.includeInternal===!0&&e.visibility===`internal`),r=n.filter(P4),i=n.filter(e=>!P4(e)),a=new Set([`user_message`,`assistant_text`,`reasoning`]),o=r.filter(e=>a.has(e.kind)).map(I4),s=e=>r.filter(t=>t.kind===e).map(e=>typeof e.payload.text==`string`?e.payload.text:``).join(``),c=[...r.filter(e=>e.kind===`unknown`),...i],l=r.filter(e=>e.kind===`error`),u=[...r].reverse().find(e=>(e.kind===`progress`||e.kind===`error`)&&N4(e));return{timeline:V4(r.filter(e=>e.kind!==`progress`)),output:s(`assistant_text`),reasoning:s(`reasoning`),textItems:o,toolItems:r.filter(e=>e.kind===`tool_call`),approvalItems:r.filter(e=>e.kind===`approval`),structuredInputItems:r.filter(e=>e.kind===`progress`&&e.payloadSchemaRef===`conversation.item.structured-input/v1`),a2uiItems:r.filter(e=>e.kind===`a2ui`),artifacts:r.filter(e=>e.kind===`artifact`).map(L4),fallbacks:[...c.map(e=>({id:e.itemId,title:`Unsupported content`,detail:String(e.payload.summary||e.payload.originalKind||e.payloadSchemaRef),failed:e.lifecycle===`failed`})),...l.map(e=>({id:e.itemId,title:`Run failed`,detail:String(e.payload.error||`The agent run failed.`),failed:!0}))],runId:n.at(-1)?.runId||``,terminalStatus:u?u.lifecycle===`failed`?`failed`:`completed`:void 0}}function U4(){return{items:[],appliedSources:[]}}function W4(e){return e.lifecycle===`completed`||e.lifecycle===`failed`}function G4(e,t){let n={...e,...t};typeof e.text==`string`&&typeof t.text==`string`&&(n.text=e.text+t.text);for(let r of[`data`,`operations`])Array.isArray(e[r])&&Array.isArray(t[r])&&(n[r]=[...e[r],...t[r]]);return n}function K4(e,t){let n=t.sourceEventIds.map(e=>JSON.stringify([t.itemId,e])),r=new Set(e.appliedSources);if(n.every(e=>r.has(e)))return e;n.forEach(e=>r.add(e));let i=e.items.findIndex(e=>e.itemId===t.itemId),a=i>=0?e.items[i]:void 0;if(a&&W4(a)&&!W4(t))return{...e,appliedSources:[...r]};let o=[...e.items];if(!a)o.push(t);else{let e=[...new Set([...a.sourceEventIds,...t.sourceEventIds])];o[i]=a.kind===t.kind?t.operation===`append`?{...t,payload:G4(a.payload,t.payload),sourceEventIds:e}:{...t,sourceEventIds:e}:{...t,kind:`unknown`,operation:`replace`,payloadSchemaRef:`conversation.item.unknown/v1`,payload:{summary:`The content type changed for the same item and was safely degraded.`},sourceEventIds:e}}return{items:o,appliedSources:[...r]}}var q4=class{state=U4();apply(e){let t=K4(this.state,e);if(t===this.state)return!1;let n=t.items!==this.state.items;return this.state=t,n}applyAll(e){for(let t of e)this.apply(t)}snapshot(){return{items:this.state.items.map(e=>({...e,sourceEventIds:[...e.sourceEventIds],payload:{...e.payload},nativeRef:{...e.nativeRef}})),appliedSources:[...this.state.appliedSources]}}},J4=8;function Y4(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function X4(e){if(e?.aborted)throw new i4(`conversation_aborted`,`Conversation request was aborted.`)}function Z4(e,t){return t?.aborted===!0||e instanceof Error&&e.name===`AbortError`}function Q4(e){let t=e.trim().replace(/\/+$/,``);if(!t)return``;if(!t.includes(`://`))return t.startsWith(`/`)?t:`/${t}`;try{let e=new URL(t);if(e.protocol!==`http:`&&e.protocol!==`https:`||e.username||e.password)throw Error(`unsafe URL`);return e.toString().replace(/\/$/,``)}catch(e){throw new i4(`conversation_contract_mismatch`,`Conversation base URL must be an HTTP(S) URL without embedded credentials.`,{cause:e})}}function $4(e){return Math.min(200*2**Math.max(0,e-1),2e3)}function e3(e){return new Promise(t=>{setTimeout(t,e)})}async function t3(e,t,n){if(X4(n),!n){await e(t);return}await new Promise((r,i)=>{let a=()=>i(new i4(`conversation_aborted`,`Conversation request was aborted.`));n.addEventListener(`abort`,a,{once:!0}),e(t).then(r,i).finally(()=>{n.removeEventListener(`abort`,a)})})}function n3(e,t,n){let r=e.snapshot();return{cursor:t,runId:n,state:r,presentation:H4(r)}}function r3(e,t){let n,r=[];for(let t of e.split(/\r?\n/)){let e=t.endsWith(`\r`)?t.slice(0,-1):t;if(!e||e.startsWith(`:`))continue;let i=e.indexOf(`:`),a=i<0?e:e.slice(0,i),o=i<0?``:e.slice(i+1),s=o.startsWith(` `)?o.slice(1):o;if(a===`id`){if(!/^\d+$/.test(s)||!Number.isSafeInteger(Number(s)))throw new i4(`conversation_stream_error`,`Conversation stream contains an invalid replay cursor.`);n=Number(s)}else a===`data`&&r.push(s)}if(r.length===0)return;let i=r.join(` +`);if(!i||i===`[DONE]`)return;let a;try{a=JSON.parse(i)}catch(e){throw new i4(`conversation_contract_mismatch`,`Conversation stream contains invalid JSON.`,{cause:e})}let o=Y4(a);if(!o||o.conversationItem===void 0){n!==void 0&&(t.cursor=Math.max(t.cursor,n));return}if(n===void 0)throw new i4(`conversation_stream_error`,`Canonical conversation items require an SSE replay cursor.`);let s=A4(o.conversationItem);if(!s)throw new i4(`conversation_contract_mismatch`,`Conversation stream item does not match conversation.ksadk.io/v1.`);if(t.runId&&t.runId!==s.runId)throw new i4(`conversation_contract_mismatch`,`Conversation stream changed canonical run identity.`,{runId:t.runId,cursor:t.cursor});t.runId=s.runId;let c=t.reducer.apply(s);t.cursor=Math.max(t.cursor,n),c&&t.options.onItem?.(s),t.options.onUpdate?.(n3(t.reducer,t.cursor,t.runId))}async function i3(e,t){if(!e.body)throw new i4(`conversation_stream_error`,`Conversation response has no event stream body.`);let n=e.body.getReader(),r=new TextDecoder,i=``;try{for(;;){X4(t.options.signal);let{value:e,done:a}=await n.read();if(a)break;i+=r.decode(e,{stream:!0});let o=/\r?\n\r?\n/.exec(i);for(;o?.index!==void 0;){let e=o.index,n=o[0].length;r3(i.slice(0,e),t),i=i.slice(e+n),o=/\r?\n\r?\n/.exec(i)}}i+=r.decode(),i.trim()&&r3(i,t)}catch(e){throw e instanceof i4?e:(Z4(e,t.options.signal)&&X4(t.options.signal),new i4(`conversation_stream_error`,`Conversation event stream was interrupted.`,{cause:e,runId:t.runId||void 0,cursor:t.cursor}))}finally{n.releaseLock()}}function a3(e){return e.state.items.some(e=>(e.kind===`progress`||e.kind===`error`)&&(e.lifecycle===`completed`||e.lifecycle===`failed`))}var o3=class{fetcher;baseUrl;maxReconnects;sleep;retryDelayMs;constructor(e={}){if(!Number.isInteger(e.maxReconnects??J4)||(e.maxReconnects??J4)<0||(e.maxReconnects??J4)>32)throw new i4(`conversation_contract_mismatch`,`Conversation reconnect limit must be an integer from 0 to 32.`);this.fetcher=e.fetch,this.baseUrl=Q4(e.baseUrl||``),this.maxReconnects=e.maxReconnects??J4,this.sleep=e.sleep||e3,this.retryDelayMs=e.retryDelayMs||$4}fetch(){if(this.fetcher)return this.fetcher;if(typeof globalThis.fetch==`function`)return globalThis.fetch.bind(globalThis);throw new i4(`conversation_http_error`,`No fetch implementation is available for the conversation client.`)}url(e){return`${this.baseUrl}${e}`}async request(e,t,n,r=`conversation_stream_error`){X4(n);try{return await this.fetch()(e,t)}catch(e){throw e instanceof i4?e:(Z4(e,n)&&X4(n),new i4(r,`Conversation network request failed.`,{cause:e}))}}assertOk(e){if(!e.ok)throw new i4(`conversation_http_error`,`Conversation endpoint returned HTTP ${e.status}.`,{status:e.status})}async getSurface(e,t,n={}){if(!e||!t)throw new i4(`conversation_contract_mismatch`,`Agent and session identities are required to get a conversation surface.`);let r=n.signal?{signal:n.signal}:void 0,i=await this.request(this.url(`/api/v1/agents/${encodeURIComponent(e)}/conversation-surface?sessionId=${encodeURIComponent(t)}`),r,n.signal,`conversation_http_error`);this.assertOk(i);let a;try{a=await i.json()}catch(e){throw new i4(`conversation_contract_mismatch`,`Conversation surface response is not valid JSON.`,{cause:e})}let o=Y4(a),s=k4(o?.surface);if(!o||typeof o.buildId!=`string`||!o.buildId||!s)throw new i4(`conversation_contract_mismatch`,`Conversation surface response does not match conversation.ksadk.io/v1.`);return{buildId:o.buildId,surface:s}}async streamTurn(e){X4(e.signal),E4(e.bootstrap.surface,e.input);let t={cursor:0,runId:``,reducer:new q4,options:e},n={method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":e.input.idempotencyKey},body:JSON.stringify({input:e.input}),...e.signal?{signal:e.signal}:{}},r=await this.request(this.url(`/api/v1/builds/${encodeURIComponent(e.bootstrap.buildId)}/conversation:stream`),n,e.signal);this.assertOk(r);try{await i3(r,t)}catch(e){if(!(e instanceof i4)||e.code!==`conversation_stream_error`||!t.runId)throw e}let i=n3(t.reducer,t.cursor,t.runId);if(a3(i))return i;if(!t.runId)throw new i4(`conversation_run_identity_missing`,`The stream ended before a canonical item supplied its run identity.`,{cursor:t.cursor});for(let n=1;n<=this.maxReconnects;n+=1){await t3(this.sleep,this.retryDelayMs(n),e.signal),X4(e.signal);let r;try{r=await this.request(this.url(`/api/v1/runs/${encodeURIComponent(t.runId)}/events?after=${t.cursor}`),{method:`GET`,headers:{"Last-Event-ID":String(t.cursor)},...e.signal?{signal:e.signal}:{}},e.signal),this.assertOk(r),await i3(r,t)}catch(e){if(e instanceof i4&&e.code===`conversation_aborted`||e instanceof i4&&e.code===`conversation_contract_mismatch`||e instanceof i4&&e.code===`conversation_http_error`&&e.status!==void 0&&e.status<500)throw e;continue}if(i=n3(t.reducer,t.cursor,t.runId),a3(i))return i}throw new i4(`conversation_reconnect_exhausted`,`Conversation replay stopped after the configured reconnect limit.`,{runId:t.runId,cursor:t.cursor})}};function s3(e,t){let n=Math.max(0,Number(t)||0),r=Number.isFinite(e)&&Number(e)>=0&&n>0,i=r?Math.max(0,Number(e)):0;return{known:r,usedTokens:i,limitTokens:n,percent:r?Math.max(0,Math.min(100,Math.round(i/n*100))):0}}function c3(e){return{title:`上下文窗口`,value:e.known?`${e.percent}% 已用`:`用量未上报`,detail:e.known?`已用 ${e.usedTokens.toLocaleString(`en-US`)} tokens,共 ${e.limitTokens.toLocaleString(`en-US`)}`:e.limitTokens>0?`上限 ${e.limitTokens.toLocaleString(`en-US`)} tokens`:`当前模型未提供上下文上限`}}function l3(e){return[...e].reverse().find(e=>e.usage?.reported===!0&&Number.isFinite(e.usage.inputTokens))?.usage?.inputTokens}var u3=new Set([`RUNNING`,`PAUSED`,`WAITING_INPUT`]);function d3(e){return[...e].filter(e=>u3.has(String(e.status||``))).sort((e,t)=>Date.parse(e.startedAt||`1970-01-01`)-Date.parse(t.startedAt||`1970-01-01`)).at(-1)}function f3(e,t){return t?e.filter(e=>e.id!==t):e}function p3(e){let t=e.completedAt||e.startedAt||``,n=Date.parse(t);return Number.isFinite(n)?n:0}function m3(e,t){let n=new Map;for(let r of e){if(r.agentId!==t||!r.sessionId)continue;let e=n.get(r.sessionId)||[];e.push(r),n.set(r.sessionId,e)}return[...n.entries()].map(([e,t])=>{let n=[...t].sort((e,t)=>p3(e)-p3(t)),r=n[0],i=n.at(-1),a=[...n].reverse().find(e=>u3.has(String(e.status||``)));return{id:e,title:r?.input?.trim()||`新会话`,updatedAt:i.completedAt||i.startedAt||``,running:!!a,activeStatus:a?.status,runs:n}}).sort((e,t)=>Date.parse(t.updatedAt||`1970-01-01`)-Date.parse(e.updatedAt||`1970-01-01`))}function h3(e,t){return{localId:e,responseId:e,sessionId:t,runId:``,reasoning:``,output:``,status:`streaming`,error:``,activities:[],surfaces:[],conversationItems:U4(),timeline:[],artifacts:[],fallbacks:[],pendingApprovals:[],transport:`responses`}}function g3(e){return e&&typeof e==`object`?e:{}}function _3(e,t){if(typeof e.detail==`string`&&e.detail.trim())return e.detail;let n=g3(e.detail),r=n.command||n.title||n.name||n.message||n.action;return typeof r==`string`&&r.trim()?r:typeof e.prompt==`string`&&e.prompt.trim()?e.prompt:typeof e.kind==`string`&&e.kind.trim()?e.kind:t}function v3(e,t,n){let r=[...n.toolItems.map(e=>({id:`tool:${e.itemId}`,kind:`tool`,title:String(e.payload.tool||`调用工具`),status:e.lifecycle===`failed`?`failed`:e.lifecycle===`completed`?`completed`:`running`,detail:k3(e.payload),data:e.payload})),...n.approvalItems.map(e=>({id:`approval:${e.itemId}`,kind:`approval`,title:_3(e.payload,`等待批准`),status:e.lifecycle===`failed`?`failed`:e.lifecycle===`completed`?`completed`:`waiting`,detail:k3(e.payload),data:e.payload}))],i={...e,conversationItems:t,timeline:n.timeline,output:n.output,reasoning:n.reasoning,activities:r,artifacts:n.artifacts,fallbacks:n.fallbacks,pendingApprovals:n.approvalItems.filter(e=>e.lifecycle===`pending`&&Number(e.payload.revision)>0).map(e=>({id:String(e.payload.interactionId||e.itemId),title:_3(e.payload,`此操作需要批准`),revision:Number(e.payload.revision)})),runId:n.runId||e.runId,status:n.terminalStatus===`failed`?`failed`:n.terminalStatus===`completed`?`completed`:n.approvalItems.some(e=>e.lifecycle===`pending`)?`waiting_input`:e.status,error:n.terminalStatus===`failed`?n.fallbacks.find(e=>e.failed)?.detail||`Agent 运行失败`:e.error};if(n.a2uiItems.length||n.structuredInputItems.length){i={...i,surfaces:[]};for(let e of n.a2uiItems){let t=Array.isArray(e.payload.data)?e.payload.data:[];i=w3(i,{type:`a2ui.surface.update`,runId:e.runId,operations:t})}for(let e of n.structuredInputItems){let t=String(e.payload.surfaceId||``);t&&(i=w3(i,{type:e.lifecycle===`completed`?`a2ui.action`:`a2ui.interaction`,runId:e.runId,surfaceId:t,interactionId:String(e.payload.interactionId||e.itemId),kind:String(e.payload.kind||`form`),inputSchema:g3(e.payload.inputSchema),revision:Number(e.payload.revision||0)}))}}return i}function y3(e,t){return v3(e,t.state,t.presentation)}function b3(e,t){let n=String(t.type||``),r=A4(t.conversationItem);if(r){let t=K4(e.conversationItems,r);return t===e.conversationItems?e:v3(e,t,H4(t))}if(t.conversationItem!==void 0){let r=n===`run.failed`||n===`run.completed`,i=n===`run.failed`;return{...e,status:i?`failed`:n===`run.completed`?`completed`:e.status,error:i?`运行失败`:e.error,...r?{}:{runId:String(t.runId||t.run_id||e.runId)}}}if(n===`run.completed`)return{...e,status:`completed`};if(n===`run.failed`){let n=g3(t.error);return{...e,status:`failed`,error:String(n.message||t.message||`Agent 运行失败`)}}if(n===`response.created`||n===`response.in_progress`){let n=g3(t.response);return{...e,responseId:String(n.id||e.responseId)}}if(n===`response.reasoning_summary_text.delta`)return{...e,reasoning:e.reasoning+String(t.delta||``)};if(n===`response.output_text.delta`)return{...e,output:e.output+String(t.delta||``)};if(n===`response.output_item.added`||n===`response.output_item.done`){let r=A3(g3(t.item),n.endsWith(`.done`));if(!r)return e;let i=e.activities.findIndex(e=>e.id===r.id),a=[...e.activities];return i<0?a.push(r):a[i]={...a[i],...r},{...e,activities:a}}if(n.startsWith(`a2ui.`))return w3(e,t);if(n===`response.paused`)return{...e,runId:String(t.runId||t.run_id||e.runId),status:`paused`};if(n===`response.resumed`)return{...e,runId:String(t.runId||t.run_id||e.runId),status:`streaming`};if(/^response\.(?:web_search_call|file_search_call|mcp_call)\./.test(n)){let r=String(t.item_id||t.itemId||t.call_id||t.callId||n.split(`.`)[1]),i=n.includes(`web_search`)?`网页搜索`:n.includes(`file_search`)?`文件搜索`:`MCP 调用`,a=n.endsWith(`.failed`)?`failed`:n.endsWith(`.completed`)?`completed`:`running`,o={id:`tool:${r}`,kind:`tool`,title:i,status:a,detail:``,data:g3(t)},s=e.activities.findIndex(e=>e.id===o.id),c=[...e.activities];return s<0?c.push(o):c[s]={...c[s],...o},{...e,activities:c}}if(n===`response.completed`){let n=g3(t.response),r=g3(n.metadata);return{...e,responseId:String(n.id||e.responseId),runId:String(r.runtime_run_id||r.runtimeRunId||e.runId),usage:g3(n.usage),status:`completed`}}if(n===`response.cancelled`||n===`response.canceled`)return{...e,status:`cancelled`};if(n===`response.failed`||n===`error`){let n=g3(t.response),r=g3(t.error||n.error);return{...e,status:`failed`,error:String(r.message||t.message||`Agent 运行失败`)}}return e}function x3(e){return{id:e,catalogId:``,components:{},roots:[],dataModel:{}}}function S3(e){let t=e.a2uiOperations??e.a2ui_operations??e.operations;return Array.isArray(t)?t.map(g3):[]}function C3(e,t){for(let n of t){let t=g3(n.createSurface);if(Object.keys(t).length){let n=String(t.surfaceId||t.surface_id||``);if(!n)continue;let r=e.get(n)||x3(n);e.set(n,{...r,catalogId:String(t.catalogId||t.catalog_id||r.catalogId)});continue}let r=g3(n.updateComponents);if(Object.keys(r).length){let t=String(r.surfaceId||r.surface_id||``);if(!t)continue;let n=e.get(t)||x3(t),i={...n.components},a=Array.isArray(r.components)?r.components.map(g3):[];for(let e of a){let t=String(e.id||e.componentId||e.component_id||``),n=String(e.component||e.type||``);t&&n&&(i[t]={...e,id:t,component:n})}let o=new Set;for(let e of Object.values(i)){let t=Array.isArray(e.children)?e.children:[];for(let e of t)typeof e==`string`&&o.add(e);typeof e.child==`string`&&o.add(e.child)}let s=Object.keys(i).filter(e=>!o.has(e));e.set(t,{...n,components:i,roots:s});continue}let i=g3(n.updateDataModel);if(Object.keys(i).length){let t=String(i.surfaceId||i.surface_id||``);if(!t)continue;let n=e.get(t)||x3(t),r=g3(i.value);e.set(t,{...n,dataModel:String(i.path||`/`)===`/`?r:{...n.dataModel,...r}});continue}let a=g3(n.deleteSurface);if(Object.keys(a).length){let t=String(a.surfaceId||a.surface_id||``);t&&e.delete(t)}}}function w3(e,t){let n=new Map(e.surfaces.map(e=>[e.id,{...e,components:{...e.components},dataModel:{...e.dataModel}}]));C3(n,S3(t));let r=String(t.type||``),i=String(t.surfaceId||t.surface_id||``);if(r===`a2ui.interaction`&&i){let e=n.get(i)||x3(i);n.set(i,{...e,interaction:{id:String(t.interactionId||t.interaction_id||``),revision:Number(t.revision||0),kind:String(t.kind||`form`),status:Number(t.revision||0)>0?`pending`:`expired`,inputSchema:g3(t.inputSchema||t.input_schema)}})}if(r===`a2ui.action`&&i){let e=n.get(i);e?.interaction&&n.set(i,{...e,interaction:{...e.interaction,status:`resolved`}})}return{...e,runId:String(t.runId||t.run_id||e.runId),surfaces:[...n.values()],status:e.status===`completed`||e.status===`failed`?e.status:r===`a2ui.interaction`?`waiting_input`:r===`a2ui.action`?`streaming`:e.status}}function T3(e){let t=h3(`persisted`,`persisted`);for(let n of e)n.type.startsWith(`a2ui.`)&&(t=w3(t,{type:n.type,...n.data||{}}));return t.surfaces}function E3(e){let t=``,n=(e=!1)=>{t=t.replaceAll(`\r +`,` +`);let n=t.indexOf(` + +`);for(;n>=0;)r(t.slice(0,n)),t=t.slice(n+2),n=t.indexOf(` + +`);e&&t.trim()&&(r(t),t=``)},r=t=>{let n=`message`,r,i=[];for(let e of t.split(` +`))if(!(!e||e.startsWith(`:`))){if(e.startsWith(`event:`)&&(n=e.slice(6).trim()),e.startsWith(`id:`)){let t=Number(e.slice(3).trim());Number.isSafeInteger(t)&&t>=0&&(r=t)}e.startsWith(`data:`)&&i.push(e.slice(5).trimStart())}if(!i.length)return;let a=i.join(` +`);if(a!==`[DONE]`)try{let t=JSON.parse(a);e({...t,type:String(t.type||n),...r===void 0?{}:{sseId:r}})}catch{e({type:n,message:a,...r===void 0?{}:{sseId:r}})}};return{push(e){t+=e,n()},finish(){n(!0)}}}function D3(e,t){return String(e.callId||e.call_id||e.toolCallId||e.tool_call_id||t)}function O3(e,t){return String(e===`command`?t.command||t.name||`执行命令`:e===`tool`?t.name||t.tool||`调用工具`:t.kind||t.action||`等待批准`)}function k3(e){let t=e.output??e.result??e.message??e.error??``;return typeof t==`string`?t:t&&typeof t==`object`?JSON.stringify(t,null,2):t===``?``:String(t)}function A3(e,t){let n=String(e.type||``);if(![`function_call`,`mcp_call`,`shell_call`,`local_shell_call`,`file_search_call`,`web_search_call`,`approval_request`].includes(n))return null;let r=String(e.call_id||e.callId||e.id||`tool`),i=n===`shell_call`||n===`local_shell_call`,a=n===`approval_request`,o=a?`approval`:i?`command`:`tool`,s=g3(e.action),c=Array.isArray(s.commands)?s.commands.filter(e=>typeof e==`string`).join(` && `):``,l=a?String(s.title||s.kind||`等待批准`):i?c||String(e.name||`执行命令`):n===`web_search_call`?`网页搜索`:n===`file_search_call`?`文件搜索`:String(e.name||e.server_label||`调用工具`),u=String(e.status||``),d=u===`failed`||u===`error`||Number(e.exit_code??e.exitCode??0)!==0?`failed`:a&&!t?`waiting`:t?`completed`:`running`;return{id:`${o}:${r}`,kind:o,title:l,status:d,detail:k3(e),data:e}}function j3(e){return[String(e.runId||``),String(e.scopeId||``),String(e.itemId||``),String(e.partId||``)].join(`/`)}function M3(e){let t=g3(e.data?.runtimeEvent),n=t.output_refs??t.outputRefs;return Array.isArray(n)?n.map(g3):[]}function N3(e){let t=[],n=new Map,r=[],i=new Map,a=null;for(let o of e){let e=o.data||{},s=o.type===`thinking.delta`||o.type===`thinking.completed`,c=o.type===`message.delta`||o.type===`message.completed`;if(s||c){let r=s?`thinking`:`message`,i=o.type.endsWith(`.completed`),a=i?`complete`:String(e.operation||`append`),c=String(e.text||e.delta||``),l=`${r}:${j3(e)}`,u=n.get(l),d=g3(e.runtimeEvent),f=String(e.phase||d.phase||``);if(u===void 0)n.set(l,t.length),t.push({runId:String(e.runId||``),scopeId:String(e.scopeId||``),itemId:String(e.itemId||``),partId:String(e.partId||``),phase:f,kind:r,text:c,completed:i});else{let e=t[u],n=a===`append`?e.text+c:c||e.text;t[u]={...e,phase:e.phase||f,text:n,completed:i||e.completed}}continue}if([`run.completed`,`run.failed`,`run.interrupted`,`run.cancelled`,`run.canceled`].includes(o.type)){let e=M3(o);e.length&&(a=e);continue}let l=null;if(o.type.startsWith(`command.`)?l=`command`:o.type.startsWith(`tool.`)?l=`tool`:o.type===`approval.requested`&&(l=`approval`),!l)continue;let u=D3(e,`${l}-${o.id}`),d=i.get(`${l}:${u}`),f=o.type.endsWith(`.completed`),p=o.type.endsWith(`.failed`)||!!e.error||Number(e.exitCode??e.exit_code??0)!==0,m=l===`approval`?`waiting`:p?`failed`:f?`completed`:`running`,h={id:`${l}:${u}`,kind:l,title:O3(l,e),status:m,detail:k3(e),data:e};if(d===void 0)i.set(h.id,r.length),r.push(h);else{let e=r[d];r[d]={...e,...h,title:h.title===O3(l,{})?e.title:h.title,detail:h.detail||e.detail}}}let o=t.filter(e=>e.kind===`message`),s=t.filter(e=>e.kind===`thinking`).map(e=>e.text).join(``),c;if(a&&a.length){let e=new Map;for(let t of o)e.set(`${t.scopeId}/${t.itemId}`,t);c=a.map(t=>e.get(`${String(t.scope_id??t.scopeId??``)}/${String(t.item_id??t.itemId??``)}`)).filter(e=>!!e).map(e=>e.text).join(` + +`)}else{let e=o.filter(e=>e.completed);c=(e.length?e:o).map(e=>e.text).join(``)}return{reasoning:s,output:c,textItems:t,activities:r}}function P3(e){let t=Number(e.totalTokens??e.total_tokens??0);return`${Number.isFinite(t)?t.toLocaleString(`en-US`):`0`} tokens`}function F3(e){let t=Number(e.durationMs??e.duration_ms);return!Number.isFinite(t)||t<0?``:t<1e3?`${Math.round(t)}ms`:`${(t/1e3).toFixed(1)}s`}function I3(e){let t=[],n=new Map,r=e.some(e=>e.type===`run.started`),i=(e,r)=>{let i=n.get(e);if(i===void 0){n.set(e,t.length),t.push(r);return}t[i]={...t[i],...r}};for(let a of e){let e=a.data||{},o=a.type||``;if(o===`run.created`){if(r)continue;t.push({id:`run:${a.id}`,kind:`run`,title:`Run 创建`,summary:String(e.model||e.runtimeType||``),detail:``,status:`running`,createdAt:a.createdAt,data:e});continue}if(o===`run.started`){let n=g3(e.runtimeEvent);t.push({id:`run:${a.id}`,kind:`run`,title:`Run 启动`,summary:String(e.runtimeType||n.runtimeType||n.model||`Local Runtime`),detail:``,status:`running`,createdAt:a.createdAt,data:e});continue}if([`run.completed`,`run.failed`,`run.interrupted`,`run.cancelled`,`run.canceled`].includes(o)){let n=o===`run.failed`||o===`run.interrupted`,r=o===`run.cancelled`||o===`run.canceled`;t.push({id:`run:${a.id}`,kind:`run`,title:n?o===`run.interrupted`?`Run 中断`:`Run 失败`:r?`Run 取消`:`Run 完成`,summary:F3(e),detail:n?String(e.error||e.message||``):``,status:n?`failed`:`completed`,createdAt:a.createdAt,data:e});continue}if(o.startsWith(`thinking.`)||o.startsWith(`message.`)){let r=o.startsWith(`thinking.`)?`thinking`:`message`,s=`stream:${r}`,c=n.get(s),l=c===void 0?null:t[c],u=String(e.text||e.delta||``),d=o.endsWith(`.completed`),f=d&&u?u:`${l?.detail||``}${u}`;i(s,{id:s,kind:r,title:r===`thinking`?`思考过程`:`模型回复`,summary:f?`${f.length} 字`:``,detail:f,status:d?`completed`:`running`,createdAt:a.createdAt||l?.createdAt,data:e});continue}let s=null;if(o.startsWith(`command.`)?s=`command`:o.startsWith(`tool.`)?s=`tool`:o.startsWith(`approval.`)&&(s=`approval`),s){let r=`${s}:${D3(e,String(a.id))}`,c=n.get(r),l=c===void 0?null:t[c],u=o.endsWith(`.failed`)||!!e.error||Number(e.exitCode??e.exit_code??0)!==0,d=o.endsWith(`.completed`)||o.endsWith(`.resolved`),f=k3(e)||l?.detail||``,p=O3(s,e),m=O3(s,{});i(r,{id:r,kind:s,title:p===m&&l?.title?l.title:p,summary:F3(e),detail:f,status:u?`failed`:d?`completed`:s===`approval`?`waiting`:`running`,createdAt:a.createdAt||l?.createdAt,data:e});continue}o===`usage.reported`&&t.push({id:`usage:${a.id}`,kind:`usage`,title:`用量上报`,summary:P3(e),detail:``,status:`completed`,createdAt:a.createdAt,data:e})}if([...e].reverse().find(e=>[`run.completed`,`run.failed`,`run.interrupted`,`run.cancelled`,`run.canceled`].includes(e.type)))for(let e of t)e.status===`running`&&(e.kind===`thinking`||e.kind===`message`)&&(e.status=`completed`);return t}function L3(e,t){let n=e.filter(e=>e.type.startsWith(`memory.recall.`)),r=[...n].reverse().find(e=>e.type===`memory.recall.projected`);if(r){let e=Number(r.data?.candidate_count??r.data?.count??0);return{status:`used`,title:`已提供长期记忆`,description:e>0?`${e} 条相关记忆已交付本次运行`:`相关记忆已交付本次运行`}}let i=[...n].reverse().find(e=>e.type===`memory.recall.completed`);if(i){let e=Number(i.data?.candidate_count??i.data?.count??0);return{status:`recalled`,title:`已召回长期记忆`,description:e>0?`已找到 ${e} 条,但未确认交付 Runner`:`已找到相关记忆,但未确认交付 Runner`}}return n.some(e=>e.type===`memory.recall.failed`)?{status:`failed`,title:`长期记忆召回失败`,description:`本次未能读取长期记忆,可在 Trace 中查看原因`}:n.some(e=>e.type===`memory.recall.empty`)?{status:`empty`,title:`未使用长期记忆`,description:`未找到与当前问题相关的记忆`}:Number(t||0)>0?{status:`used`,title:`已纳入长期记忆`,description:`相关记忆已纳入本次上下文`}:{status:`unused`,title:`未使用长期记忆`,description:`本次回答未选入长期记忆`}}function R3(e){return!Number.isFinite(e)||Number(e)<0?`未上报`:Number(e)<1e3?`${Math.round(Number(e))}ms`:`${(Number(e)/1e3).toFixed(2)}s`}function z3(e){return Number.isFinite(e)?Number(e).toLocaleString():`未上报`}function B3(e){return{platform_safety:`平台安全规则`,agent_identity:`角色定义`,agent_policy:`任务规则`,runtime_capabilities:`运行时能力说明`,resource_manifest:`工具与 Skill 说明`,request_instructions:`本次请求指令`}[e]||e}function V3(e){return{platform_safety:`平台策略`,agent_identity:`Agent Revision`,agent_policy:`Agent Revision`,runtime_capabilities:`Runtime Adapter`,resource_manifest:`构建资源清单`,request_instructions:`本次请求`}[e]||`Prompt Compiler`}function H3(e){return e.length>20?`${e.slice(0,17)}…`:e}function U3(e){return e===`RUNNING`||e===`CREATED`?`运行中`:e===`COMPLETED`?`已完成`:e===`CANCELLED`?`已取消`:e===`INTERRUPTED`?`已中断`:e===`TIMED_OUT`?`已超时`:`失败`}function W3(e){try{return BigInt(String(e.startTimeUnixNano||`0`))}catch{return 0n}}function G3(e){if(!e.length)return[];let t=[...e].sort((e,t)=>W3(e){let n=W3(t);return!e||nNumber(W3(e)-n)/1e6),i=Math.max(1,...t.map((e,t)=>r[t]+Math.max(0,Number(e.durationMs)||0))),a=new Map(t.map(e=>[e.spanId,e])),o=e=>{let t=0,n=e.parentSpanId,r=new Set;for(;n&&a.has(n)&&!r.has(n)&&t<3;)r.add(n),t+=1,n=a.get(n)?.parentSpanId;return t};return t.slice(0,8).map((e,t)=>({...e,left:Math.min(96,Math.max(0,r[t]/i*100)),width:Math.max(3,Math.min(100,Math.max(0,Number(e.durationMs)||0)/i*100)),depth:o(e)}))}function K3(e){return e.kind===`thinking`?(0,G.jsx)(L,{size:13}):e.kind===`message`?(0,G.jsx)(Ie,{size:13}):e.kind===`command`?(0,G.jsx)(pt,{size:13}):e.kind===`tool`?(0,G.jsx)(yt,{size:13}):e.kind===`approval`?(0,G.jsx)(ot,{size:13}):e.kind===`usage`?(0,G.jsx)(De,{size:13}):(0,G.jsx)(Xe,{size:13})}async function q3(e){let t=await g(`/api/v1/runs/${encodeURIComponent(e)}/events`);if(!t.ok)return[];let n=[],r=E3(e=>{let{type:t,...r}=e;n.push({id:n.length+1,type:t,data:r})});return r.push(await t.text()),r.finish(),n}function J3({agentId:e,onOpenTrace:t,onClose:n}){let[r,i]=(0,s.useState)(null),[a,o]=(0,s.useState)([]),[c,l]=(0,s.useState)([]),[u,d]=(0,s.useState)(null),[f,p]=(0,s.useState)(null),[m,h]=(0,s.useState)(null),[_,v]=(0,s.useState)(!1),[y,b]=(0,s.useState)(!0),[x,S]=(0,s.useState)(0);(0,s.useEffect)(()=>{let t=!1,n=null,r=0;async function a(){let s=++r;try{let n=((await g(`/api/v1/runs`).then(e=>e.json())).items||[]).filter(t=>!e||t.agentId===e).at(-1)||null;if(t||s!==r)return;if(i(n),!n){o([]),l([]),d(null),p(null);return}let[a,c,u,f]=await Promise.all([q3(n.id),g(`/api/v1/traces/${encodeURIComponent(n.traceId)}`).then(e=>e.ok?e.json():null).catch(()=>null),g(`/api/v1/runs/${encodeURIComponent(n.id)}/context`).then(e=>e.ok?e.json():null).catch(()=>null),g(`/api/v1/runs/${encodeURIComponent(n.id)}/prompt`).then(e=>e.ok?e.json():null).catch(()=>null)]);!t&&s===r&&(o(a),l(c?.spans||[]),d(u),p(f))}catch{}finally{!t&&s===r&&b(!1),t||(n=window.setTimeout(a,2500))}}return b(!0),a(),()=>{t=!0,r+=1,n!==null&&window.clearTimeout(n)}},[e,x]),(0,s.useEffect)(()=>{h(null),v(!1)},[r?.id]);async function C(e){if(!(m||_)){v(!0);try{let t=await g(`/api/v1/runs/${encodeURIComponent(e)}/prompt?include_content=true`),n=t.ok?await t.json():null;h(n?.reveal||{available:!1,reason:`Prompt 详情读取失败。`})}catch{h({available:!1,reason:`Prompt 详情读取失败。`})}finally{v(!1)}}}let w=r?.status===`RUNNING`||r?.status===`CREATED`,T=r?/fail|error|interrupt|timed/i.test(r.status):!1,E=(0,s.useMemo)(()=>I3(a),[a]),D=(0,s.useMemo)(()=>G3(c),[c]),k=r?.usage?.reported===!0,A=u?.decisions||[],M=!!(u||f||k),N=A.some(e=>e.decision===`dropped`)?`部分内容已舍弃`:A.some(e=>e.decision===`compressed`)?`已自动压缩`:A.some(e=>e.decision===`replaced`)?`部分内容已替换`:M?`正常`:`等待证据`,P=Object.keys(f?.tokensBySection||{}).map(B3),F=u?.tokensByKind?.recalled_memory,I=(0,s.useMemo)(()=>L3(a,F),[a,F]),R=Number.isFinite(u?.plannedInputTokens)&&Number.isFinite(u?.projectedInputTokens)&&Number(u?.plannedInputTokens)!==Number(u?.projectedInputTokens);return(0,G.jsxs)(`aside`,{className:`chat-run-panel`,"aria-label":`运行检查器`,children:[(0,G.jsxs)(`div`,{className:`chat-run-head`,children:[(0,G.jsxs)(`span`,{className:`chat-run-title`,children:[(0,G.jsx)(O,{size:15}),` 运行检查器`]}),(0,G.jsx)(`span`,{className:`chat-run-head-spacer`}),(0,G.jsx)(`button`,{className:`icon-btn`,onClick:()=>S(e=>e+1),title:`刷新`,children:(0,G.jsx)(et,{size:14})}),(0,G.jsx)(`button`,{className:`icon-btn`,onClick:n,title:`收起`,children:(0,G.jsx)(bt,{size:14})})]}),y&&!r?(0,G.jsxs)(`div`,{className:`chat-run-empty`,children:[(0,G.jsx)(Ne,{size:16,className:`animate-spin`}),` 正在读取最近运行…`]}):r?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`div`,{className:`chat-run-scroll`,children:[(0,G.jsxs)(`section`,{className:`chat-run-overview`,children:[(0,G.jsxs)(`div`,{className:`chat-run-status-row`,children:[(0,G.jsx)(`span`,{className:`chat-run-state-icon ${w?`running`:T?`failed`:`completed`}`,children:w?(0,G.jsx)(Ne,{size:15,className:`animate-spin`}):T?(0,G.jsx)(ce,{size:15}):(0,G.jsx)(ie,{size:15})}),(0,G.jsxs)(`div`,{className:`chat-run-identity`,children:[(0,G.jsx)(`strong`,{children:U3(r.status)}),(0,G.jsx)(`span`,{title:r.id,children:H3(r.id)})]}),(0,G.jsx)(`span`,{className:`chat-run-state ${w?`running`:T?`failed`:`completed`}`,children:r.status})]}),r.error?.message&&(0,G.jsxs)(`div`,{className:`chat-run-error`,role:`alert`,children:[(0,G.jsx)(ce,{size:15}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:r.error.code||`运行失败`}),(0,G.jsx)(`span`,{children:r.error.message})]})]}),(0,G.jsxs)(`div`,{className:`chat-run-route`,children:[(0,G.jsx)(ge,{size:13}),(0,G.jsx)(`span`,{children:`Edge · Local`}),(0,G.jsx)(`i`,{}),(0,G.jsxs)(`span`,{children:[r.runtimeType||`codex`,` Runtime`]}),(0,G.jsx)(`i`,{}),(0,G.jsx)(`span`,{children:r.model||`未指定模型`})]})]}),(0,G.jsxs)(`section`,{className:`chat-run-section`,children:[(0,G.jsxs)(`div`,{className:`chat-run-section-title`,children:[(0,G.jsx)(`span`,{children:`本次运行`}),(0,G.jsx)(`small`,{children:r.startedAt?new Date(r.startedAt).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}):``})]}),(0,G.jsxs)(`div`,{className:`chat-run-metrics`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(ue,{size:13}),(0,G.jsx)(`span`,{children:`耗时`}),(0,G.jsx)(`strong`,{children:R3(r.durationMs)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(pe,{size:13}),(0,G.jsx)(`span`,{children:`总 Token`}),(0,G.jsx)(`strong`,{children:k?z3(r.usage?.totalTokens):`未上报`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(Ie,{size:13}),(0,G.jsx)(`span`,{children:`输入 / 输出`}),(0,G.jsx)(`strong`,{children:k?`${z3(r.usage?.inputTokens)} / ${z3(r.usage?.outputTokens)}`:`未上报`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(Oe,{size:13}),(0,G.jsx)(`span`,{children:`Span`}),(0,G.jsx)(`strong`,{children:c.length||`—`})]})]})]}),(0,G.jsxs)(`section`,{className:`chat-run-section pcm-run-summary`,children:[(0,G.jsxs)(`div`,{className:`chat-run-section-title`,children:[(0,G.jsx)(`span`,{children:`运行解释`}),(0,G.jsx)(`small`,{children:N})]}),(0,G.jsxs)(`div`,{className:`pcm-run-health ${N===`正常`?`healthy`:N===`等待证据`?`pending`:`adjusted`}`,children:[N===`正常`?(0,G.jsx)(ie,{size:16}):(0,G.jsx)(De,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:N===`正常`?`本次运行依据已正常准备`:N}),(0,G.jsx)(`span`,{children:u?`规则、相关记忆和当前问题已按策略处理`:f&&k?`规则证据与模型用量已记录;Runner 内部上下文由框架管理`:`正在收集本次运行依据`})]})]}),(0,G.jsxs)(`div`,{className:`pcm-run-signal-list`,children:[(0,G.jsxs)(`details`,{className:`pcm-run-signal`,onToggle:e=>{e.currentTarget.open&&C(r.id)},children:[(0,G.jsxs)(`summary`,{children:[(0,G.jsx)(ie,{size:14}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`规则已应用`}),(0,G.jsx)(`span`,{children:P.length?P.join(` · `):f?.sectionCount?`${f.sectionCount} 个规则来源`:`本次未提供规则来源证据`})]}),(0,G.jsx)(H,{className:`pcm-run-signal-chevron`,size:14})]}),(0,G.jsx)(`div`,{className:`pcm-run-signal-details`,children:_?(0,G.jsx)(`p`,{children:`正在按本次不可变 Build 校验并读取 Prompt…`}):m?.available&&m.sections?.length?m.sections.map(e=>(0,G.jsxs)(`div`,{className:`pcm-run-prompt-section`,children:[(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:B3(e.id)}),(0,G.jsxs)(`small`,{children:[`来源:`,V3(e.id)]})]}),(0,G.jsx)(`pre`,{children:e.content})]},e.id)):(0,G.jsx)(`p`,{children:m?.reason||`展开后按需读取 Prompt 正文;正文不会写入 Trace。`})})]}),(0,G.jsxs)(`div`,{className:`pcm-run-signal-static ${I.status===`failed`?`attention`:``}`,children:[(0,G.jsx)(L,{size:14}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:I.title}),(0,G.jsx)(`span`,{children:I.description})]})]}),(0,G.jsxs)(`div`,{className:`pcm-run-signal-static ${N!==`正常`&&N!==`等待证据`?`attention`:``}`,children:[(0,G.jsx)(De,{size:14}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:R?`上下文已按预算调整`:A.some(e=>e.decision===`compressed`||e.decision===`dropped`||e.decision===`replaced`)?N:`上下文无需压缩`}),(0,G.jsx)(`span`,{children:R?`关键规则与当前问题已优先保留`:`未检测到压缩、替换或舍弃`})]})]})]})]}),(0,G.jsxs)(`section`,{className:`chat-run-section`,children:[(0,G.jsxs)(`div`,{className:`chat-run-section-title`,children:[(0,G.jsx)(`span`,{children:`Trace 瀑布`}),(0,G.jsx)(`small`,{children:D.length?`${D.length} 个节点`:`等待 Span`})]}),D.length?(0,G.jsx)(`div`,{className:`chat-run-waterfall`,children:D.map(e=>{let t=/fail|error/i.test(e.status);return(0,G.jsxs)(`div`,{className:`chat-run-waterfall-row`,children:[(0,G.jsx)(`span`,{className:`chat-run-waterfall-label`,style:{paddingLeft:e.depth*8},title:e.name,children:e.name}),(0,G.jsx)(`span`,{className:`chat-run-waterfall-track`,children:(0,G.jsx)(`i`,{className:t?`failed`:``,style:{left:`${e.left}%`,width:`${e.width}%`}})}),(0,G.jsx)(`small`,{children:R3(e.durationMs)})]},e.spanId)})}):(0,G.jsx)(`div`,{className:`chat-run-inline-empty`,children:`运行开始后显示 Span 时序`})]}),(0,G.jsxs)(`section`,{className:`chat-run-section chat-run-events-section`,children:[(0,G.jsxs)(`div`,{className:`chat-run-section-title`,children:[(0,G.jsx)(`span`,{children:`执行事件`}),(0,G.jsx)(`small`,{children:E.length})]}),(0,G.jsx)(`div`,{className:`chat-run-timeline`,children:E.length?E.map(e=>(0,G.jsxs)(`div`,{className:`chat-run-event ${e.kind} ${e.status}`,children:[(0,G.jsx)(`span`,{className:`chat-run-event-icon`,children:K3(e)}),(0,G.jsxs)(`div`,{className:`chat-run-event-copy`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:e.title}),(0,G.jsx)(`small`,{children:e.summary})]}),e.detail&&(0,G.jsxs)(`details`,{children:[(0,G.jsx)(`summary`,{children:`查看详情`}),(0,G.jsx)(`pre`,{children:e.detail})]})]})]},e.id)):(0,G.jsx)(`div`,{className:`chat-run-inline-empty`,children:`正在建立 Runtime 连接…`})})]})]}),(0,G.jsx)(`div`,{className:`chat-run-footer`,children:(0,G.jsxs)(`button`,{className:`btn soft`,onClick:t,children:[`打开完整 Trace `,(0,G.jsx)(j,{size:14})]})})]}):(0,G.jsx)(`div`,{className:`chat-run-empty`,children:`发送一条消息后,这里会显示执行位置、用量与事件时间线。`})]})}var Y3=[{value:`ask`,label:`请求批准`,compactLabel:`请求批准`,description:`文件修改与外部写入会逐次请求确认`},{value:`risk`,label:`帮我批准`,compactLabel:`帮我批准`,description:`仅在检测到风险操作时请求确认`},{value:`full`,label:`完全访问权限`,compactLabel:`完全访问`,description:`不受限制地访问互联网和工作区文件`}];function X3(e){return e===`ask`||e===`risk`||e===`full`?e:`risk`}function Z3(e){return`agentkit-studio:approval:${e}`}function Q3(e){return Y3.find(t=>t.value===e)||Y3[1]}function $3(e){return Array.isArray(e)?e.map(e=>{if(typeof e==`string`)return{label:e,value:e,description:``};let t=e&&typeof e==`object`?e:{},n=String(t.value??t.id??t.label??``);return{label:String(t.label??t.title??n),value:n,description:String(t.description??t.help??``)}}).filter(e=>e.value):[]}function e6(e){return(Array.isArray(e.children)?e.children:typeof e.child==`string`?[e.child]:[]).filter(e=>typeof e==`string`)}function t6({surface:e,busy:t=!1,onSubmit:n}){let[r,i]=(0,s.useState)(()=>({...e.dataModel})),[a,o]=(0,s.useState)({}),c=(0,s.useRef)(new Set),l=e.interaction?.status===`pending`,u=t||!l,d=e.roots.length?e.roots:Object.keys(e.components).slice(0,1);(0,s.useEffect)(()=>{i(t=>{let n={...t};for(let[t,r]of Object.entries(e.dataModel))c.current.has(t)||(n[t]=r);return n})},[e.dataModel]);let f=(e,t)=>{c.current.add(e),i(n=>({...n,[e]:t}))},p=(t,i={})=>{if(!e.interaction||u)return;let o={...r};for(let[e,t]of Object.entries(a)){let n=t.trim();if(!n)continue;let r=o[e];o[e]=Array.isArray(r)?[...r.filter(e=>String(e)!==n),n]:n}n(e.interaction.id,e.interaction.revision,t,{...o,...i})},m=(t,n)=>{let s=String(t.name||t.id),l=$3(t.options),d=Array.isArray(r[s])?r[s]:[],p=String(r[s]??t.value??``),m=!!(t.allow_other??t.allowOther??t.is_other??t.isOther),h=a[s]??``;return(0,G.jsxs)(`fieldset`,{className:`a2ui-field a2ui-options`,children:[(0,G.jsx)(`legend`,{children:String(t.label||t.title||`请选择`)}),!!t.description&&(0,G.jsx)(`p`,{className:`a2ui-field-description`,children:String(t.description)}),(0,G.jsxs)(`div`,{className:`a2ui-choice-list`,role:n?`group`:`radiogroup`,children:[l.map((t,r)=>{let i=n?d.includes(t.value):p===t.value;return(0,G.jsxs)(`label`,{className:`a2ui-choice${i?` selected`:``}`,children:[(0,G.jsx)(`input`,{type:n?`checkbox`:`radio`,"aria-label":t.label,name:n?void 0:`${e.id}-${s}`,checked:i,disabled:u,onChange:e=>{n?f(s,e.target.checked?[...d,t.value]:d.filter(e=>e!==t.value)):(o(e=>({...e,[s]:``})),f(s,t.value))}}),(0,G.jsx)(`span`,{className:`a2ui-choice-index`,children:r+1}),(0,G.jsxs)(`span`,{className:`a2ui-choice-copy`,children:[(0,G.jsx)(`strong`,{children:t.label}),t.description&&(0,G.jsx)(`small`,{children:t.description})]})]},t.value)}),m&&(0,G.jsxs)(`label`,{className:`a2ui-other${h?` active`:``}`,children:[(0,G.jsx)(`span`,{className:`a2ui-other-icon`,children:(0,G.jsx)(Ye,{size:14})}),(0,G.jsx)(`input`,{type:t.secret?`password`:`text`,"aria-label":`${String(t.label||t.title||s)}自定义输入`,value:h,placeholder:String(t.other_placeholder||t.otherPlaceholder||`其他,请输入…`),disabled:u,onChange:e=>{let t=e.target.value;c.current.add(s),o(e=>({...e,[s]:t})),n||i(e=>({...e,[s]:``}))}})]})]})]})},h=t=>{let n=e.components[t];if(!n)return null;let i=n.component,a=e6(n).map(e=>(0,G.jsx)(`div`,{children:h(e)},e));if(i===`Card`)return(0,G.jsxs)(`section`,{className:`a2ui-card`,children:[!!n.title&&(0,G.jsx)(`h3`,{children:String(n.title)}),!!n.body&&(0,G.jsx)(`p`,{children:String(n.body)}),a.length>0&&(0,G.jsx)(`div`,{className:`a2ui-card-content`,children:a})]});if([`Column`,`Row`].includes(i))return(0,G.jsx)(`div`,{className:`a2ui-layout ${i.toLowerCase()}`,children:a});if(i===`Text`)return(0,G.jsx)(`p`,{className:`a2ui-text ${String(n.variant||`body`)}`,children:String(n.text||``)});if([`TextField`,`Input`].includes(i)){let e=String(n.name||n.id);return(0,G.jsxs)(`label`,{className:`a2ui-field`,children:[(0,G.jsx)(`span`,{children:String(n.label||n.title||e)}),(0,G.jsx)(`input`,{value:String(r[e]??n.value??``),placeholder:String(n.placeholder||``),disabled:u,onChange:t=>f(e,t.target.value)})]})}if([`Select`,`RadioGroup`,`MultipleChoice`].includes(i)){let e=String(n.name||n.id),t=$3(n.options),a=i===`MultipleChoice`&&!!n.multiple;return i===`RadioGroup`||i===`MultipleChoice`?m(n,a):(0,G.jsxs)(`div`,{className:`a2ui-field`,children:[(0,G.jsx)(`span`,{children:String(n.label||n.title||`请选择`)}),(0,G.jsx)(Fh,{ariaLabel:String(n.label||n.title||`请选择`),value:String(r[e]??n.value??``),options:t,disabled:u,onValueChange:t=>f(e,t)})]})}if(i===`CheckboxGroup`)return m(n,!0);if(i===`ApprovalBar`)return(0,G.jsxs)(`div`,{className:`a2ui-approval`,role:`group`,"aria-label":`批准操作`,children:[(0,G.jsxs)(`span`,{className:`a2ui-approval-summary`,children:[(0,G.jsx)(st,{size:15}),String(n.summary||n.tool_name||`请确认此操作`)]}),(0,G.jsxs)(`span`,{className:`a2ui-actions`,children:[(0,G.jsxs)(`button`,{type:`button`,className:`secondary`,disabled:u,onClick:()=>p(`deny`),children:[(0,G.jsx)(bt,{size:14}),String(n.deny_label||`拒绝`)]}),(0,G.jsxs)(`button`,{type:`button`,disabled:u,onClick:()=>p(`approve`),children:[(0,G.jsx)(V,{size:14}),String(n.approve_label||`批准`)]})]})]});if(i===`Form`)return(0,G.jsxs)(`form`,{className:`a2ui-form`,onSubmit:e=>{e.preventDefault(),p(`submit`)},children:[!!n.title&&(0,G.jsx)(`strong`,{children:String(n.title)}),a,(0,G.jsx)(`div`,{className:`a2ui-form-actions`,children:(0,G.jsxs)(`button`,{type:`submit`,disabled:u,children:[String(n.submit_label||`提交`),(0,G.jsx)(he,{size:14})]})})]});if(i===`Button`){let e=String(n.action||n.name||n.id||`submit`);return(0,G.jsx)(`button`,{type:`button`,disabled:u,onClick:()=>p(e),children:String(n.label||n.text||`提交`)})}return(0,G.jsxs)(`div`,{className:`a2ui-unsupported`,children:[`此卡片包含暂不支持的组件:`,i||`unknown`]})},g=d.map(e=>(0,G.jsx)(`div`,{children:h(e)},e));return(0,G.jsxs)(`div`,{className:`a2ui-surface${l?` pending`:` resolved`}`,"data-surface-id":e.id,children:[g,e.interaction&&!l&&(0,G.jsxs)(`div`,{className:`a2ui-resolved`,children:[(0,G.jsx)(V,{size:14}),`已提交`]})]})}var n6=[{id:`plan`,slash:`/plan`,label:`计划模式`,description:`下一轮只分析并形成可执行计划`},{id:`goal`,slash:`/goal`,label:`设定长期目标`,description:`启动可暂停、可持续的 Codex Goal`},{id:`default`,slash:`/default`,label:`默认模式`,description:`返回直接执行模式`}];function r6(e){if(!e.startsWith(`/`)||/\s/.test(e))return[];let t=e.toLocaleLowerCase();return n6.filter(e=>e.slash.startsWith(t))}function i6(e){let t=e.trim();return t===`/plan`?{kind:`toggle-plan`}:t===`/default`?{kind:`set-default`}:t===`/goal`||t.startsWith(`/goal `)?{kind:`goal`,objective:t.slice(5).trim()}:{kind:`message`,text:t}}function a6(e,t){let n=[];e.trim()&&n.push({type:`input_text`,text:e.trim()});for(let e of t)e.kind===`image`&&e.dataUrl?n.push({type:`input_image`,image_url:e.dataUrl,filename:e.name}):e.kind===`text`&&n.push({type:`input_text`,text:`\n\n\n${e.text||``}\n`});return[{role:`user`,content:n}]}var o6=new Set([`txt`,`md`,`json`,`yaml`,`yml`,`csv`,`ts`,`tsx`,`js`,`jsx`,`py`,`go`,`rs`,`java`,`sh`,`css`,`html`,`xml`,`toml`,`ini`,`log`]),s6=[`image/*`,`.txt`,`.md`,`.json`,`.yaml`,`.yml`,`.csv`,`.ts`,`.tsx`,`.js`,`.jsx`,`.py`,`.go`,`.rs`,`.java`,`.sh`,`.css`,`.html`,`.xml`,`.toml`,`.ini`,`.log`].join(`,`);function c6(e){return new TextEncoder().encode(JSON.stringify(a6(``,e))).byteLength}function l6(e){return e.split(`.`).at(-1)?.toLocaleLowerCase()||``}function u6(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(Error(`无法读取附件 ${e.name}`)),r.onload=()=>t(String(r.result||``)),r.readAsDataURL(e)})}function d6(e){return typeof e.text==`function`?e.text():new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(Error(`无法读取附件 ${e.name}`)),r.onload=()=>t(String(r.result||``)),r.readAsText(e)})}async function f6(e){let t={id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,name:e.name,mimeType:e.type||`application/octet-stream`,size:e.size};if(e.type.startsWith(`image/`))return{...t,kind:`image`,dataUrl:await u6(e)};if(e.type.startsWith(`text/`)||o6.has(l6(e.name)))return{...t,kind:`text`,text:await d6(e)};throw Error(`暂不支持 ${e.name};请添加图片或 UTF-8 文本/代码文件`)}function p6(e){return e<1024?`${e} B`:`${Math.max(.1,e/1024).toFixed(1)} KiB`}function m6({id:e}){return e===`goal`?(0,G.jsx)(ft,{size:16}):e==="default"?(0,G.jsx)(gt,{size:16}):(0,G.jsx)(Me,{size:16})}function h6({disabled:e,onTogglePlan:t,onStartGoal:n,onFiles:r,active:i=!0,allowAttachments:a=!0,allowPlan:o=!0,allowGoal:c=!0,attachmentAccept:l=s6,attachmentLimit:u=4}){let d=(0,s.useRef)(null),[f,p]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{i||p(!1)},[i]),!a&&!o&&!c?null:(0,G.jsxs)(G.Fragment,{children:[a&&(0,G.jsx)(`input`,{ref:d,className:`composer-file-input`,type:`file`,tabIndex:-1,"aria-label":`选择本轮附件`,multiple:!0,accept:l||void 0,onChange:e=>{let t=[...e.target.files||[]];e.target.value=``,t.length&&r(t)}}),(0,G.jsxs)(od,{open:f,onOpenChange:p,children:[(0,G.jsx)(sd,{asChild:!0,children:(0,G.jsx)(`button`,{className:`chat-plus-trigger`,type:`button`,disabled:e,"aria-label":`添加附件或运行控制`,title:`添加附件或运行控制`,children:(0,G.jsx)(Qe,{size:17})})}),(0,G.jsx)(cd,{children:(0,G.jsxs)(ld,{className:`composer-action-menu`,side:`top`,align:`start`,sideOffset:10,collisionPadding:12,children:[a&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(ud,{className:`composer-action-heading`,children:`添加到本轮`}),(0,G.jsxs)(dd,{className:`composer-action-item`,onSelect:()=>d.current?.click(),children:[(0,G.jsx)(qe,{size:16}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`添加附件`}),(0,G.jsxs)(`small`,{children:[`本轮最多 `,u,` 个`]})]})]})]}),a&&(o||c)&&(0,G.jsx)(hd,{className:`composer-action-separator`}),(o||c)&&(0,G.jsx)(ud,{className:`composer-action-heading`,children:`运行方式`}),o&&(0,G.jsxs)(dd,{className:`composer-action-item`,onSelect:t,children:[(0,G.jsx)(Me,{size:16}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`计划模式`}),(0,G.jsx)(`small`,{children:`下一轮使用 Codex Plan`})]})]}),c&&(0,G.jsxs)(dd,{className:`composer-action-item`,onSelect:n,children:[(0,G.jsx)(ft,{size:16}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`设定长期目标`}),(0,G.jsx)(`small`,{children:`朝可验证的停止条件持续推进`})]})]})]})})]})]})}function g6({input:e,activeIndex:t,onSelect:n,allowPlan:r=!0,allowGoal:i=!0}){let a=r6(e).filter(e=>(e.id!==`plan`||r)&&(e.id!==`goal`||i)&&(e.id!=="default"||r));return a.length?(0,G.jsx)(pb,{className:`composer-command-menu`,shouldFilter:!1,"aria-label":`斜杠命令`,children:(0,G.jsx)(pb.List,{children:a.map((e,r)=>(0,G.jsxs)(pb.Item,{value:e.id,"data-active":r===t?`true`:`false`,onSelect:()=>n(e.id),children:[(0,G.jsx)(m6,{id:e.id}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.label}),(0,G.jsx)(`small`,{children:e.description})]}),(0,G.jsx)(`kbd`,{children:e.slash})]},e.id))})}):null}var _6=[{value:``,label:`自动`,description:`使用模型或 Agent 的默认推理强度`},{value:`low`,label:`低`,description:`优先缩短响应时间`},{value:`medium`,label:`中`,description:`平衡速度与推理深度`},{value:`high`,label:`高`,description:`优先更充分的推理`}];function v6({value:e,onChange:t,active:n}){let[r,i]=(0,s.useState)(!1);(0,s.useEffect)(()=>{n||i(!1)},[n]);let a=Q3(e),o=e===`ask`?(0,G.jsx)(ke,{size:15}):e===`full`?(0,G.jsx)(at,{size:15}):(0,G.jsx)(ot,{size:15});return(0,G.jsxs)(od,{open:r,onOpenChange:i,children:[(0,G.jsx)(sd,{asChild:!0,children:(0,G.jsxs)(`button`,{className:`chat-approval-trigger ${e}`,type:`button`,"aria-label":`批准模式:${a.label}`,title:`${a.label};下一轮生效`,children:[o,(0,G.jsx)(`span`,{children:a.compactLabel}),(0,G.jsx)(H,{size:13})]})}),(0,G.jsx)(cd,{children:(0,G.jsxs)(ld,{className:`chat-approval-menu`,side:`top`,sideOffset:9,align:`start`,collisionPadding:12,children:[(0,G.jsxs)(`div`,{className:`chat-approval-menu-heading`,children:[(0,G.jsx)(`strong`,{children:`如何批准 Agent 操作?`}),(0,G.jsx)(`span`,{children:`下一轮生效`})]}),(0,G.jsx)(fd,{value:e,onValueChange:e=>t(X3(e)),children:Y3.map(e=>(0,G.jsxs)(pd,{value:e.value,className:`chat-approval-option ${e.value}`,children:[(0,G.jsx)(`span`,{className:`chat-approval-option-icon`,children:e.value===`ask`?(0,G.jsx)(ke,{size:17}):e.value===`full`?(0,G.jsx)(at,{size:17}):(0,G.jsx)(ot,{size:17})}),(0,G.jsxs)(`span`,{className:`chat-approval-option-copy`,children:[(0,G.jsx)(`strong`,{children:e.label}),(0,G.jsx)(`small`,{children:e.description})]}),(0,G.jsx)(md,{className:`chat-approval-indicator`,children:(0,G.jsx)(V,{size:16})})]},e.value))})]})})]})}function y6({models:e,model:t,reasoningEffort:n,disabled:r,active:i,allowModelSelection:a,allowReasoning:o,onModelChange:c,onReasoningEffortChange:l,onConfigure:u}){let[d,f]=(0,s.useState)(!1);(0,s.useEffect)(()=>{i||f(!1)},[i]);let p=e.find(e=>e.id===t),m=p?.label||t||`未绑定模型`,h=p?.reasoningEfforts||[],g=o&&h.length>0,_=_6.find(e=>e.value===n)?.label||`自动`;return!a&&!g?null:a&&e.length===0?(0,G.jsxs)(`button`,{className:`chat-model-trigger missing`,type:`button`,"aria-label":`当前 Agent 未绑定模型,前往配置`,title:`当前 Agent 未绑定模型`,onClick:u,children:[(0,G.jsx)(L,{size:14}),(0,G.jsx)(`span`,{children:`未绑定模型`})]}):(0,G.jsxs)(od,{open:d,onOpenChange:f,children:[(0,G.jsx)(sd,{asChild:!0,children:(0,G.jsxs)(`button`,{className:`chat-model-trigger chat-model-summary-trigger`,type:`button`,disabled:r,"aria-label":a?g?`模型 ${m},推理强度 ${_}`:`模型 ${m}`:`推理强度 ${_}`,title:`${a?`选择模型`:``}${a&&g?`与`:``}${g?`推理强度`:``};下一轮生效`,children:[(0,G.jsx)(`span`,{children:a?m:`推理强度`}),g&&(0,G.jsx)(`b`,{children:_}),(0,G.jsx)(H,{size:13})]})}),(0,G.jsx)(cd,{children:(0,G.jsxs)(ld,{className:`chat-model-menu chat-model-reasoning-menu`,side:`top`,sideOffset:9,align:`end`,collisionPadding:12,children:[a&&(0,G.jsxs)(gd,{children:[(0,G.jsxs)(_d,{className:`chat-model-settings-row`,children:[(0,G.jsx)(`strong`,{children:`模型`}),(0,G.jsx)(`span`,{children:m}),(0,G.jsx)(te,{size:16})]}),(0,G.jsx)(cd,{children:(0,G.jsx)(vd,{className:`chat-model-menu chat-model-submenu`,sideOffset:8,alignOffset:-6,collisionPadding:12,children:(0,G.jsx)(fd,{value:t,onValueChange:c,children:e.map(e=>(0,G.jsxs)(pd,{value:e.id,className:`chat-model-option`,children:[(0,G.jsx)(`span`,{children:e.label}),(0,G.jsx)(md,{children:(0,G.jsx)(V,{size:15})})]},e.id))})})})]}),g&&(0,G.jsxs)(gd,{children:[(0,G.jsxs)(_d,{className:`chat-model-settings-row`,children:[(0,G.jsx)(`strong`,{children:`推理强度`}),(0,G.jsx)(`span`,{children:_}),(0,G.jsx)(te,{size:16})]}),(0,G.jsx)(cd,{children:(0,G.jsx)(vd,{className:`chat-model-menu chat-model-submenu chat-reasoning-submenu`,sideOffset:8,alignOffset:-6,collisionPadding:12,children:(0,G.jsx)(fd,{value:n,onValueChange:e=>l(e),children:_6.filter(e=>e.value===``||h.includes(e.value)).map(e=>(0,G.jsxs)(pd,{value:e.value,className:`chat-reasoning-option`,children:[(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.label}),(0,G.jsx)(`small`,{children:e.description})]}),(0,G.jsx)(md,{children:(0,G.jsx)(V,{size:15})})]},e.value||`auto`))})})})]})]})})]})}function b6({input:e,placeholder:t,disabled:n,active:r,attachments:i,mode:a,approvalMode:o,models:c,model:l,reasoningEffort:u,commandIndex:d=0,contextControl:f,sendControl:p,canSend:m,textareaRef:h,onInputChange:g,onFiles:_,onRemoveAttachment:v,onSetMode:y,onStartGoal:b,onApprovalModeChange:x,onModelChange:S,onReasoningEffortChange:C,onConfigureModel:w,onCommandSelect:T,onCommandIndexChange:E,onSend:D,allowAttachments:O=!0,allowPlan:k=!0,allowGoal:A=!0,allowApproval:j=!0,allowModelSelection:M=!0,allowReasoning:N=!0,attachmentAccept:P,attachmentLimit:F=4}){let I=(0,s.useRef)(null),L=h||I,R=r6(e).filter(e=>(e.id!==`plan`||k)&&(e.id!==`goal`||A)&&(e.id!=="default"||k));function z(e){if(R.length&&[`ArrowDown`,`ArrowUp`].includes(e.key)){e.preventDefault();let t=e.key===`ArrowDown`?1:-1;E?.((d+t+R.length)%R.length);return}if(R.length&&e.key===`Escape`){e.preventDefault(),g(``);return}if(e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing){if(e.preventDefault(),R.length){T(R[Math.min(d,R.length-1)].id);return}D()}}return(0,G.jsxs)(`div`,{className:`chat-composer`,"data-ui":`sender`,children:[(0,G.jsx)(g6,{input:e,activeIndex:d,onSelect:T,allowPlan:k,allowGoal:A}),O&&i.length>0&&(0,G.jsx)(`div`,{className:`chat-attachment-list`,"aria-label":`本轮附件`,role:`list`,children:i.map(e=>(0,G.jsxs)(`article`,{className:`chat-attachment-chip ${e.kind}`,role:`listitem`,children:[e.kind===`image`&&e.previewUrl?(0,G.jsx)(`img`,{src:e.previewUrl,alt:`${e.name} 预览`}):(0,G.jsx)(`span`,{className:`chat-attachment-icon`,children:(0,G.jsx)(Ce,{size:15})}),(0,G.jsxs)(`span`,{className:`chat-attachment-copy`,children:[(0,G.jsx)(`strong`,{children:e.name}),(0,G.jsxs)(`small`,{children:[e.kind===`image`?`图片`:e.kind===`text`?`文本`:`文件`,` · `,p6(e.size),` · 已就绪`]})]}),(0,G.jsx)(`button`,{type:`button`,"aria-label":`移除附件 ${e.name}`,onClick:()=>v(e.id),children:(0,G.jsx)(bt,{size:13})})]},e.id))}),(0,G.jsx)(`textarea`,{ref:L,rows:1,value:e,onChange:e=>g(e.target.value),onKeyDown:z,placeholder:t,"aria-label":`消息`,disabled:n}),(0,G.jsxs)(`div`,{className:`chat-composer-footer`,children:[(0,G.jsx)(h6,{disabled:n,active:r,allowAttachments:O,allowPlan:k,allowGoal:A,onTogglePlan:()=>y(a===`plan`?`default`:`plan`),onStartGoal:b,onFiles:_,attachmentAccept:P,attachmentLimit:F}),k&&a===`plan`&&(0,G.jsxs)(`button`,{className:`chat-mode-chip`,type:`button`,title:`点击返回默认模式`,onClick:()=>y(`default`),children:[(0,G.jsx)(Me,{size:14}),(0,G.jsx)(`span`,{children:`计划`})]}),j&&(0,G.jsx)(v6,{value:o,onChange:x,active:r}),(0,G.jsx)(`span`,{className:`chat-composer-spacer`}),f,(0,G.jsx)(y6,{models:c,model:l,reasoningEffort:u,disabled:n,active:r,allowModelSelection:M,allowReasoning:N,onModelChange:S,onReasoningEffortChange:C,onConfigure:w}),p||(0,G.jsx)(`button`,{className:`chat-send-button`,type:`button`,"aria-label":`发送消息`,title:`发送消息`,onClick:D,disabled:!m||n,children:(0,G.jsx)(nt,{size:15})})]})]})}function x6(e){let t=Math.max(0,Math.floor(e/1e3)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n?`${n}时 ${r}分`:r?`${r}分 ${i}秒`:`${i}秒`}function S6(e){if(!e)return`刚刚启动`;let t=new Date(e);return Number.isNaN(t.getTime())?`刚刚启动`:`${new Intl.DateTimeFormat(`zh-CN`,{hour:`2-digit`,minute:`2-digit`,hour12:!1}).format(t)} 启动`}function C6({mode:e,status:t,objective:n,startedAt:r,elapsedMs:i,now:a,onPause:o,onResume:c,onStop:l}){let[u,d]=(0,s.useState)(a??Date.now()),f=(0,s.useMemo)(()=>r?Date.parse(r):NaN,[r]),p=t===`running`,m=t===`waiting`,h=t===`paused`,g=e===`goal`?ft:Me,_=m?e===`goal`?`目标等待输入`:`计划等待输入`:h?e===`goal`?`目标已暂停`:`计划已暂停`:e===`goal`?`目标执行中`:`正在规划`,v=i??(Number.isFinite(f)?Math.max(0,u-f):0);return(0,s.useEffect)(()=>{if(!p||a!=null)return;let e=window.setInterval(()=>d(Date.now()),1e3);return()=>window.clearInterval(e)},[a,p]),(0,G.jsxs)(`div`,{className:`runtime-mode-bar ${e} ${t}`,"data-testid":`runtime-mode-bar`,children:[(0,G.jsx)(`span`,{className:`runtime-mode-icon`,children:(0,G.jsx)(g,{size:15})}),(0,G.jsxs)(`div`,{className:`runtime-mode-copy`,children:[(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:_}),(0,G.jsx)(`span`,{children:n})]}),(0,G.jsxs)(`small`,{children:[(0,G.jsx)(ue,{size:12}),` `,S6(r),` · `,x6(v)]})]}),(0,G.jsxs)(`div`,{className:`runtime-mode-actions`,children:[p&&o&&(0,G.jsx)(`button`,{type:`button`,onClick:o,"aria-label":`暂停${e===`goal`?`目标`:`计划`}`,title:`暂停`,children:(0,G.jsx)(Je,{size:14,fill:`currentColor`})}),h&&c&&(0,G.jsx)(`button`,{type:`button`,onClick:c,"aria-label":`继续${e===`goal`?`目标`:`计划`}`,title:`继续`,children:(0,G.jsx)(Xe,{size:14,fill:`currentColor`})}),(0,G.jsx)(`button`,{type:`button`,onClick:l,"aria-label":`结束${e===`goal`?`目标`:`计划`}`,title:`结束`,children:(0,G.jsx)(ut,{size:13,fill:`currentColor`})})]})]})}function w6(e){return e.replace(/(api[_ -]?key|authorization|bearer)(\s*[:=]\s*)[^\s,;]+/gi,`$1$2***`).replace(/\bsk-[A-Za-z0-9_-]{6,}\b/g,`sk-***`).replace(/\b[A-Za-z0-9_-]{24,}\.{0,3}\b/g,e=>e.startsWith(`run_`)||e.startsWith(`resp_`)?e:`***`)}function T6(e){let t=e.toLocaleLowerCase();return/api.?key|credential|auth|unauthorized|401|403|凭证/.test(t)?{title:`模型凭证无效或已过期`,message:`请更新模型 API Key,验证连接后重新运行本轮消息。`,recoverable:`credential`}:/must configure model|model.*not configured|未配置模型|未绑定模型/.test(t)?{title:`当前 Agent 尚未绑定模型`,message:`先在 Agent 配置中绑定一个可用模型,再重新运行本轮消息。`,recoverable:`model`}:{title:`Agent 运行失败`,message:`本轮没有生成结果。可以重新运行;若问题持续,请展开技术详情定位原因。`,recoverable:`retry`}}function E6(e){if(!(e instanceof i4))return e instanceof Error?e.message:String(e);switch(e.code){case`conversation_run_identity_missing`:return`会话流在返回可恢复的 Run 标识前中断,请刷新会话查看运行结果。`;case`conversation_reconnect_exhausted`:return`会话流已断开,自动续流后仍未到达终态;运行仍在后台继续,请刷新会话查看结果。`;case`conversation_input_unsupported`:return`当前 Agent 不支持本轮选择的输入能力,请调整附件、模型或运行模式后重试。`;case`conversation_session_mismatch`:return`会话已发生变化,请刷新后重试。`;case`conversation_contract_mismatch`:return`Agent 返回的会话数据与当前协议不兼容,请刷新或改用旧版兼容入口。`;case`conversation_http_error`:case`conversation_stream_error`:return`云端会话连接中断,请稍后重试;已开始的运行仍可从会话记录恢复。`;case`conversation_aborted`:return`本轮会话已停止。`}}function D6(e,...t){return e.status===`legacy`||e.status===`declared`&&j4(e.surface,...t)}function O6(e){let t=e?.capabilities?.reasoning_efforts;return Array.isArray(t)?t.filter(e=>e===`low`||e===`medium`||e===`high`):[]}function k6({usedTokens:e,limitTokens:t,known:n,percent:r}){let i=(0,s.useId)(),a=c3({usedTokens:e,limitTokens:t,known:n,percent:r}),o=`${a.title}:${a.value},${a.detail}`;return(0,G.jsxs)(`span`,{className:`chat-context-ring${n?``:` unknown`}`,role:`img`,"aria-label":o,"aria-describedby":i,tabIndex:0,children:[(0,G.jsxs)(`svg`,{viewBox:`0 0 24 24`,"aria-hidden":`true`,children:[(0,G.jsx)(`circle`,{className:`chat-context-track`,cx:`12`,cy:`12`,r:`8.5`,pathLength:`100`}),(0,G.jsx)(`circle`,{className:`chat-context-value`,cx:`12`,cy:`12`,r:`8.5`,pathLength:`100`,strokeDasharray:`${n?r:12} ${n?100-r:88}`})]}),(0,G.jsxs)(`span`,{id:i,role:`tooltip`,className:`chat-context-tooltip`,children:[(0,G.jsx)(`span`,{children:a.title}),(0,G.jsx)(`strong`,{children:a.value}),(0,G.jsx)(`small`,{children:a.detail})]})]})}function A6(e){return`${e}_${typeof crypto.randomUUID==`function`?crypto.randomUUID().replaceAll(`-`,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`}`}function j6(e){if(!e)return`刚刚`;let t=new Date(e);if(Number.isNaN(t.getTime()))return``;let n=new Date;return t.toDateString()===n.toDateString()?new Intl.DateTimeFormat(`zh-CN`,{hour:`2-digit`,minute:`2-digit`}).format(t):new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`}).format(t)}function M6(e){if(!e)return`刚刚`;let t=new Date(e);return Number.isNaN(t.getTime())?``:new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(t)}function N6(e,t=34){let n=e.replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t)}…`:n}function P6(e){if(!Number.isFinite(e)||Number(e)<0)return``;let t=Number(e)/1e3;return t<10?`${t.toFixed(1)} 秒`:`${Math.round(t)} 秒`}async function F6(e){let t=await e.clone().json().catch(()=>null);return t?.error?.message||t?.Message||t?.message||`请求失败(HTTP ${e.status})`}async function I6(e,t){let n;n=e.kind===`image`&&e.dataUrl?await(await fetch(e.dataUrl,{signal:t})).blob():new Blob([e.text||``],{type:e.mimeType||`text/plain`});let r=new FormData;r.append(`file`,new File([n],e.name,{type:e.mimeType||n.type||`application/octet-stream`}));let i=await g(`/api/v1/conversation-attachments`,{method:`POST`,body:r,signal:t});if(!i.ok)throw Error(await F6(i));let a=await i.json();if(typeof a?.attachmentRef!=`string`||typeof a?.mediaType!=`string`||typeof a?.name!=`string`)throw Error(`附件上传响应无效`);return a}function L6({error:e,onConfigure:t,onOpenSettings:n,onRetry:r}){let i=T6(e),a=i.recoverable===`credential`?n:t;return(0,G.jsxs)(`div`,{className:`chat-run-error`,role:`alert`,children:[(0,G.jsx)(`span`,{className:`chat-run-error-icon`,children:(0,G.jsx)(at,{size:17})}),(0,G.jsxs)(`div`,{className:`chat-run-error-copy`,children:[(0,G.jsx)(`strong`,{children:i.title}),(0,G.jsx)(`p`,{children:i.message}),(0,G.jsxs)(`div`,{className:`chat-run-error-actions`,children:[i.recoverable!==`retry`&&a&&(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:a,children:i.recoverable===`credential`?`配置凭证`:`配置 Agent`}),r&&(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:r,children:`重新运行`})]}),(0,G.jsxs)(`details`,{className:`chat-run-error-detail`,children:[(0,G.jsx)(`summary`,{children:`技术详情`}),(0,G.jsx)(`pre`,{children:w6(e)})]})]})]})}function R6(e){return e===`command`?(0,G.jsx)(pt,{size:14}):e===`approval`?(0,G.jsx)(at,{size:14}):(0,G.jsx)(yt,{size:14})}function z6(e){return e.kind===`command`?`命令`:e.kind===`approval`?`人工确认`:`工具`}function B6(e){let t=e.replace(/```[\s\S]*?```/g,` `).replace(/[`#>*_[\]()-]+/g,` `).replace(/\s+/g,` `).trim();return t?N6(t.split(/[。!?!?]+|\.(?=\s|$)/).map(e=>e.trim()).filter(Boolean).at(-1)||t,72):``}function V6({reasoning:e,activities:t,streaming:n=!1,durationMs:r}){if(!e&&t.length===0)return null;let i=t.find(e=>e.status===`running`||e.status===`waiting`),a=P6(r),o=n?i?`${i.status===`waiting`?`等待确认`:`正在处理`} · ${i.title}`:B6(e)?`正在思考 · ${B6(e)}`:`正在思考`:a?`已思考(用时 ${a})`:t.length>0?`已完成思考 · ${t.length} 项操作`:`查看思考过程`;return(0,G.jsxs)(`details`,{className:`chat-processing-group`,open:n,"data-ui":`think`,children:[(0,G.jsxs)(`summary`,{children:[(0,G.jsx)(L,{size:15,className:`chat-processing-icon`}),(0,G.jsx)(`span`,{children:o}),n&&(0,G.jsx)(Ne,{size:13,className:`animate-spin`}),(0,G.jsx)(H,{size:14,className:`details-chevron`})]}),(0,G.jsxs)(`div`,{className:`chat-processing-content`,children:[e&&(0,G.jsx)(`div`,{className:`chat-reasoning-content`,children:e}),t.map(e=>(0,G.jsx)(H6,{activity:e},e.id))]})]})}function H6({activity:e}){let t=!!e.detail||Object.keys(e.data).length>2,n=(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`chat-activity-icon`,children:R6(e.kind)}),(0,G.jsxs)(`span`,{className:`chat-activity-copy`,children:[(0,G.jsx)(`small`,{children:z6(e)}),(0,G.jsx)(`strong`,{children:e.title})]}),(0,G.jsx)(`span`,{className:`chat-activity-status ${e.status}`,children:e.status===`completed`?`已完成`:e.status===`failed`?`失败`:e.status===`waiting`?`等待确认`:`运行中`})]});return t?(0,G.jsxs)(`details`,{className:`chat-activity-card ${e.kind}`,children:[(0,G.jsxs)(`summary`,{children:[n,(0,G.jsx)(H,{size:14,className:`details-chevron`})]}),(0,G.jsx)(`pre`,{children:e.detail||JSON.stringify(e.data,null,2)})]}):(0,G.jsx)(`div`,{className:`chat-activity-card ${e.kind}`,children:(0,G.jsx)(`div`,{className:`chat-activity-row`,children:n})})}function U6({items:e,streaming:t}){let n=e.filter(e=>![`artifact`,`a2ui`,`error`].includes(e.item.kind));return n.length?(0,G.jsx)(`div`,{className:`chat-conversation-timeline`,"data-ui":`conversation-timeline`,children:n.map(e=>{let{item:n}=e;if(n.kind===`assistant_text`){let r=typeof n.payload.text==`string`?n.payload.text:``;return r?(0,G.jsx)(J6,{streaming:t&&n.lifecycle===`streaming`,children:r},e.key):null}if(n.kind===`reasoning`){let r=typeof n.payload.text==`string`?n.payload.text:``;return(0,G.jsxs)(`details`,{className:`chat-processing-group`,open:t&&n.lifecycle!==`completed`,"data-ui":`think`,children:[(0,G.jsxs)(`summary`,{children:[(0,G.jsx)(L,{size:15,className:`chat-processing-icon`}),(0,G.jsx)(`span`,{children:n.lifecycle===`completed`?`查看思考过程`:`正在思考`}),t&&n.lifecycle!==`completed`&&(0,G.jsx)(Ne,{size:13,className:`animate-spin`}),(0,G.jsx)(H,{size:14,className:`details-chevron`})]}),r&&(0,G.jsx)(`div`,{className:`chat-processing-content`,children:(0,G.jsx)(`div`,{className:`chat-reasoning-content`,children:r})})]},e.key)}if(n.kind===`tool_call`||n.kind===`approval`){let t=n.kind===`approval`&&n.lifecycle===`pending`,r={id:e.key,kind:n.kind===`approval`?`approval`:`tool`,title:String(n.payload.tool||n.payload.title||n.payload.kind||(t?`等待批准`:`调用工具`)),status:n.lifecycle===`failed`?`failed`:n.lifecycle===`completed`?`completed`:t?`waiting`:`running`,detail:k3(n.payload),data:n.payload};return(0,G.jsx)(H6,{activity:r},e.key)}if(n.kind===`plan`||n.kind===`goal`){let r=typeof n.payload.text==`string`?n.payload.text:typeof n.payload.objective==`string`?n.payload.objective:``;return(0,G.jsxs)(`details`,{className:`chat-activity-card`,open:t&&n.lifecycle!==`completed`,children:[(0,G.jsxs)(`summary`,{children:[(0,G.jsxs)(`span`,{className:`chat-activity-copy`,children:[(0,G.jsx)(`small`,{children:n.kind===`plan`?`计划`:`目标`}),(0,G.jsx)(`strong`,{children:r||(n.kind===`plan`?`正在更新计划`:`正在更新目标`)})]}),(0,G.jsx)(H,{size:14,className:`details-chevron`})]}),r&&(0,G.jsx)(`pre`,{children:r})]},e.key)}return null})}):null}function W6({surfaces:e,approvals:t=[],onInteraction:n}){let r=e.filter(e=>e.interaction?.status===`pending`);return!r.length&&!t.length?null:(0,G.jsxs)(`div`,{className:`chat-pending-interactions`,"aria-label":`待处理确认`,"data-ui":`interaction-tray`,children:[(0,G.jsxs)(`div`,{className:`chat-pending-interactions-heading`,children:[(0,G.jsx)(at,{size:16}),(0,G.jsx)(`strong`,{children:`等待你的确认`}),(0,G.jsx)(`span`,{children:`处理后将继续当前对话`})]}),r.map(e=>(0,G.jsx)(t6,{surface:e,onSubmit:n},e.id)),t.map(e=>(0,G.jsx)(`div`,{className:`chat-activity-card approval`,"data-ui":`approval-card`,children:(0,G.jsxs)(`div`,{className:`chat-activity-row`,children:[(0,G.jsxs)(`span`,{className:`chat-activity-copy`,children:[(0,G.jsx)(`small`,{children:`工具操作`}),(0,G.jsx)(`strong`,{children:e.title})]}),(0,G.jsxs)(`span`,{className:`chat-run-error-actions`,children:[(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>{n(e.id,e.revision,`reject`,{})},children:`拒绝`}),(0,G.jsx)(`button`,{className:`button primary small`,type:`button`,onClick:()=>{n(e.id,e.revision,`approve`,{})},children:`允许`})]})]})},e.id))]})}function G6({runId:e,status:t,onInteraction:n}){let[r,i]=(0,s.useState)([]);return(0,s.useEffect)(()=>{let n=!1;async function r(){try{let t=await g(`/api/v1/runs/${encodeURIComponent(e)}/events`);if(!t.ok)return;let r=[],a=E3(e=>{let{type:t,...n}=e;r.push({id:r.length+1,type:t,data:n})});a.push(await t.text()),a.finish(),n||i(r)}catch{}}r();let a=t===`WAITING_INPUT`?window.setInterval(r,500):null;return()=>{n=!0,a!==null&&window.clearInterval(a)}},[e,t]),(0,G.jsx)(W6,{surfaces:T3(r),onInteraction:(t,r,i,a)=>n(e,t,r,i,a)})}function K6({runId:e,status:t,durationMs:n,showOutput:r=!1,onInteraction:i}){let[a,o]=(0,s.useState)([]),[c,l]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let n=!1;async function r(){try{let t=await g(`/api/v1/runs/${encodeURIComponent(e)}/events`);if(!t.ok)throw Error(await F6(t));let r=[],i=E3(e=>{let{type:t,...n}=e;r.push({id:r.length+1,type:t,data:n})});i.push(await t.text()),i.finish(),n||o(r)}catch{}finally{n||l(!0)}}r();let i=[`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(String(t))?window.setInterval(r,500):null;return()=>{n=!0,i!==null&&window.clearInterval(i)}},[e,t]);let u=(0,s.useMemo)(()=>N3(a),[a]),d=(0,s.useMemo)(()=>T3(a),[a]),f=d.filter(e=>e.interaction?.status!==`pending`);return!c&&[`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(String(t))?(0,G.jsxs)(`div`,{className:`chat-activity-loading`,children:[(0,G.jsx)(Ne,{size:13,className:`animate-spin`}),` 正在读取运行事件`]}):!u.reasoning&&!u.output&&u.activities.length===0&&d.length===0?t===`RUNNING`?(0,G.jsxs)(`span`,{className:`message-loading`,"aria-label":`正在生成`,children:[(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{})]}):null:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(V6,{reasoning:u.reasoning,activities:u.activities,streaming:t===`RUNNING`,durationMs:n}),f.map(t=>(0,G.jsx)(t6,{surface:t,onSubmit:(t,n,r,a)=>i(e,t,n,r,a)},t.id)),r&&u.output&&(0,G.jsx)(J6,{children:u.output})]})}function q6({children:e}){let[t,n]=(0,s.useState)(!1),r=s.Children.toArray(e)[0]??null,i=(0,s.isValidElement)(r)?r.props:{},a=i.className?.replace(/^language-/,``)||`代码`,o=String(i.children??``).replace(/\n$/,``);async function c(){if(!(!navigator.clipboard||!o))try{await navigator.clipboard.writeText(o),n(!0),window.setTimeout(()=>n(!1),1600)}catch{n(!1)}}return(0,G.jsxs)(`div`,{className:`chat-code-block`,children:[(0,G.jsxs)(`div`,{className:`chat-code-header`,children:[(0,G.jsx)(`span`,{children:a}),(0,G.jsxs)(`button`,{type:`button`,onClick:()=>{c()},"aria-label":t?`已复制代码`:`复制代码`,children:[t?(0,G.jsx)(V,{size:13}):(0,G.jsx)(me,{size:13}),(0,G.jsx)(`span`,{children:t?`已复制`:`复制`})]})]}),(0,G.jsx)(`pre`,{children:e})]})}function J6({children:e,streaming:t=!1}){return(0,G.jsx)(`div`,{className:`chat-markdown${t?` streaming`:``}`,children:(0,G.jsx)(CP,{remarkPlugins:[DL],components:{a:({href:e,children:t})=>(0,G.jsx)(`a`,{href:e,target:`_blank`,rel:`noreferrer`,children:t}),code:({className:e,children:t})=>(0,G.jsx)(`code`,{className:e,children:t}),pre:({children:e})=>(0,G.jsx)(q6,{children:e})},children:e})})}function Y6({run:e,agentName:t,agentAppearance:n,onInteraction:r,onConfigure:i,onOpenSettings:a,onRetry:o}){let s=e.status&&![`COMPLETED`,`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(e.status),c=e.output||e.error?.message||(s?`运行状态:${e.status}`:``);return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`article`,{className:`message user`,"data-ui":`bubble`,"data-role":`user`,children:[(0,G.jsxs)(`div`,{className:`message-meta`,children:[(0,G.jsx)(`strong`,{children:`你`}),(0,G.jsx)(`span`,{children:M6(e.startedAt)})]}),(0,G.jsx)(`div`,{className:`message-content`,children:(0,G.jsx)(`span`,{className:`plain-message`,children:e.input})})]}),(0,G.jsxs)(`article`,{className:`message assistant${s?` error`:``}`,"data-ui":`bubble`,"data-role":`assistant`,children:[(0,G.jsxs)(`div`,{className:`message-meta`,children:[(0,G.jsx)(Ct,{name:t,appearance:n,size:`xs`}),(0,G.jsx)(`strong`,{children:t}),(0,G.jsx)(`span`,{children:M6(e.completedAt||e.startedAt)}),e.model&&(0,G.jsx)(`span`,{className:`message-model`,children:e.model})]}),(0,G.jsxs)(`div`,{className:`message-content`,children:[(0,G.jsx)(K6,{runId:e.id,status:e.status,durationMs:e.durationMs,showOutput:[`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(String(e.status)),onInteraction:r}),[`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(String(e.status))?null:s?(0,G.jsx)(L6,{error:c,onConfigure:i,onOpenSettings:a,onRetry:()=>o(e.input)}):c?(0,G.jsx)(J6,{children:c}):null]})]})]})}function X6({prompt:e,stream:t,agentName:n,agentAppearance:r,onInteraction:i,onConfigure:a,onOpenSettings:o,onRetry:s}){let c=t.timeline.length>0;return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`article`,{className:`message user`,"data-ui":`bubble`,"data-role":`user`,children:[(0,G.jsxs)(`div`,{className:`message-meta`,children:[(0,G.jsx)(`strong`,{children:`你`}),(0,G.jsx)(`span`,{children:`刚刚`})]}),(0,G.jsx)(`div`,{className:`message-content`,children:(0,G.jsx)(`span`,{className:`plain-message`,children:e})})]}),(0,G.jsxs)(`article`,{className:`message assistant streaming-turn${t.status===`failed`?` error`:``}`,"data-ui":`bubble`,"data-role":`assistant`,children:[(0,G.jsxs)(`div`,{className:`message-meta`,children:[(0,G.jsx)(Ct,{name:n,appearance:r,size:`xs`}),(0,G.jsx)(`strong`,{children:n}),(0,G.jsx)(`span`,{children:t.status===`streaming`?`正在生成`:`刚刚`})]}),(0,G.jsxs)(`div`,{className:`message-content`,children:[c?(0,G.jsx)(U6,{items:t.timeline,streaming:t.status===`streaming`}):(0,G.jsx)(V6,{reasoning:t.reasoning,activities:t.activities,streaming:t.status===`streaming`}),t.surfaces.filter(e=>e.interaction?.status!==`pending`).map(e=>(0,G.jsx)(t6,{surface:e,onSubmit:(e,n,r,a)=>i(t.runId,e,n,r,a)},e.id)),t.artifacts.map(e=>(0,G.jsx)(`div`,{className:`chat-activity-card artifact`,"data-ui":`artifact`,children:(0,G.jsxs)(`div`,{className:`chat-activity-row`,children:[(0,G.jsxs)(`span`,{className:`chat-activity-copy`,children:[(0,G.jsx)(`small`,{children:e.mimeType}),(0,G.jsx)(`strong`,{children:e.name})]}),e.uri&&(0,G.jsx)(`a`,{href:e.uri,target:`_blank`,rel:`noreferrer`,children:`打开`})]})},e.id)),t.fallbacks.map(e=>(0,G.jsx)(`div`,{className:`chat-activity-card unknown${e.failed?` failed`:``}`,"data-ui":`conversation-fallback`,role:e.failed?`alert`:`status`,children:(0,G.jsx)(`div`,{className:`chat-activity-row`,children:(0,G.jsxs)(`span`,{className:`chat-activity-copy`,children:[(0,G.jsx)(`small`,{children:e.title}),(0,G.jsx)(`strong`,{children:e.detail})]})})},e.id)),!c&&t.output?(0,G.jsx)(J6,{streaming:t.status===`streaming`,children:t.output}):t.error?(0,G.jsx)(L6,{error:t.error,onConfigure:a,onOpenSettings:o,onRetry:()=>s(e)}):t.status===`cancelled`?(0,G.jsx)(`span`,{className:`plain-message`,children:`运行已停止`}):c||t.artifacts.length||t.fallbacks.length||t.surfaces.length?null:(0,G.jsxs)(`span`,{className:`message-loading`,children:[(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{})]})]})]})]})}function Z6({agentId:e,agentName:t,agentAppearance:n,active:r=!0,refreshTick:i=0,onRunChanged:a,onConfigureAgent:o,onOpenSettings:c}){let[l,u]=(0,s.useState)([]),[d,f]=(0,s.useState)([]),[p,m]=(0,s.useState)(``),[h,_]=(0,s.useState)(``),[v,y]=(0,s.useState)(``),[b,x]=(0,s.useState)(``),[S,C]=(0,s.useState)(`risk`),[w,T]=(0,s.useState)(`default`),[E,D]=(0,s.useState)(``),[O,k]=(0,s.useState)([]),[A,j]=(0,s.useState)({status:`loading`}),[M,P]=(0,s.useState)(0),[F,I]=(0,s.useState)(null),[L,R]=(0,s.useState)(``),[z,B]=(0,s.useState)(!0),[V,H]=(0,s.useState)(``),[ee,te]=(0,s.useState)(!1),[ne,U]=(0,s.useState)(!1),re=(0,s.useRef)(null),ie=(0,s.useRef)(null),ae=(0,s.useRef)(null),oe=(0,s.useRef)(!0),se=(0,s.useRef)(new Map),ce=(0,s.useMemo)(()=>A6(`ses_surface`),[e]),le=(0,s.useMemo)(()=>m3(l,e),[l,e]),ue=(0,s.useMemo)(()=>{let e=v.trim().toLocaleLowerCase();return e?le.filter(t=>t.title.toLocaleLowerCase().includes(e)):le},[v,le]),de=le.find(e=>e.id===h)?.runs||[],W=d3(de),fe=F?.status||String(W?.status||``).toLowerCase(),pe=[`streaming`,`paused`,`waiting_input`].includes(fe)||!!W,me=f3(de,F&&L&&F.sessionId===h?W?.id:void 0),he=fe===`paused`?`PAUSED`:fe===`waiting_input`?`WAITING`:`RUNNING`,ge=F?.goalObjective||W?.goalObjective?`goal`:(F?.collaborationMode||W?.collaborationMode)===`plan`?`plan`:null,_e=fe===`paused`?`paused`:fe===`waiting_input`?`waiting`:`running`,ve=F?.goalObjective||W?.goalObjective||L||W?.input||``,ye=F?.startedAt||W?.startedAt,be=fe===`paused`?W?.durationMs:void 0,xe=F?[]:me.filter(e=>String(e.status)===`WAITING_INPUT`),Se=d.find(e=>e.id===p),Ce=F?.usage,we=s3(Ce?.input_tokens??Ce?.inputTokens??l3(de),Se?.context_window_tokens??Se?.contextWindowTokens),Te=d.map(e=>({id:e.id,label:e.display_name||e.displayName||e.id,reasoningEfforts:O6(e)})),Ee=O6(Se).includes(E)?E:``,De=D6(A,`text`),Oe=D6(A,`attachment.image`,`attachments`),ke=D6(A,`attachment.file`,`attachments`),Ae=Oe||ke,je=D6(A,`plan`),Me=D6(A,`goal`),Pe=D6(A,`approval`,`approval.mode`),Ie=D6(A,`model.select`),Le=D6(A,`reasoning.effort`),Re=A.status===`loading`,ze=Oe&&ke?s6:Oe?`image/*`:s6.split(`,`).filter(e=>e!==`image/*`).join(`,`);(0,s.useEffect)(()=>{E&&!O6(Se).includes(E)&&D(``)},[E,Se]),(0,s.useEffect)(()=>{let t=new AbortController,n=!1,r=h||ce;return j({status:`loading`}),new o3({fetch:g}).getSurface(e,r,{signal:t.signal}).then(({buildId:e,surface:t})=>{if(t.sessionId!==r)throw new i4(`conversation_session_mismatch`,`Conversation surface changed session identity.`);n||j({status:`declared`,buildId:e,surface:t})}).catch(e=>{if(!(n||e instanceof Error&&e.name===`AbortError`||e instanceof i4&&e.code===`conversation_aborted`)){if(e instanceof i4&&e.code===`conversation_http_error`&&e.status===404){j({status:`legacy`});return}j({status:`error`})}}),()=>{n=!0,t.abort()}},[e,h,ce,i]),(0,s.useEffect)(()=>{A.status===`declared`&&(!je&&w===`plan`&&(T(`default`),localStorage.setItem(`agentkit:chat:collaboration:${e}`,`default`)),!Ae&&O.length&&k([]),!Le&&E&&D(``))},[e,Ae,je,Le,O.length,w,A.status,E]);let Be=(0,s.useCallback)(async()=>{let t=await g(`/api/v1/runs`);if(!t.ok)throw Error(await F6(t));let n=(await t.json()).items||[],r=m3(n,e);u(n),_(e=>e&&r.some(t=>t.id===e)?e:r[0]?.id||``)},[e]);(0,s.useEffect)(()=>{U(!1)},[e]);let Ve=(0,s.useCallback)(async()=>{let[,t]=await Promise.all([Be(),g(`/api/v1/agents/${encodeURIComponent(e)}/models`)]);if(!t.ok)throw Error(await F6(t));let n=await t.json(),r=n.Models||[];f(r),m(e=>r.some(t=>t.id===e)?e:String(n.Current||r[0]?.id||``))},[e,Be]);(0,s.useEffect)(()=>{let e=!1;return B(!0),u([]),_(``),Ve().catch(t=>{e||J(`会话加载失败`,t.message,`error`)}).finally(()=>{e||B(!1)}),()=>{e=!0,ae.current?.abort()}},[e,Ve,i]),(0,s.useEffect)(()=>{C(X3(localStorage.getItem(Z3(e))));let t=localStorage.getItem(`agentkit:chat:collaboration:${e}`);T(t===`plan`?`plan`:`default`),D(``),k([])},[e]),(0,s.useEffect)(()=>{P(0)},[b]),(0,s.useEffect)(()=>{if(!l.some(e=>[`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(String(e.status))))return;let e=window.setInterval(()=>{Be().catch(()=>{})},800);return()=>window.clearInterval(e)},[l,Be]),(0,s.useEffect)(()=>{let e=re.current;!e||!oe.current||(e.scrollTop=e.scrollHeight)},[de.length,F?.output,F?.reasoning,F?.status,F?.activities]),(0,s.useEffect)(()=>{let e=re.current;if(!e)return;let t=h?se.current.get(h):void 0;requestAnimationFrame(()=>{e.scrollTop=t??e.scrollHeight,oe.current=t===void 0||e.scrollHeight-e.scrollTop-e.clientHeight<48})},[h]),(0,s.useEffect)(()=>{let e=ie.current;e&&(e.style.height=`42px`,e.style.height=`${Math.min(Math.max(e.scrollHeight,42),160)}px`)},[b]);function He(){pe||(_(``),R(``),I(null),x(``),k([]),U(!1),oe.current=!0,requestAnimationFrame(()=>ie.current?.focus()))}function Ue(e){let t=re.current;t&&h&&se.current.set(h,t.scrollTop),_(e),U(!1),oe.current=!se.current.has(e)}function We(t){T(t),localStorage.setItem(`agentkit:chat:collaboration:${e}`,t)}function Ke(){let e=w===`plan`?`default`:`plan`;We(e),x(``),J(e===`plan`?`计划模式已开启`:`已返回默认模式`,`下一轮对话生效`,`success`),requestAnimationFrame(()=>ie.current?.focus())}function qe(e){if(e===`goal`){x(`/goal `),requestAnimationFrame(()=>ie.current?.focus());return}if(e==="default"){We(`default`),x(``),J(`已返回默认模式`,`下一轮对话生效`,`success`);return}Ke()}async function Ye(e){if(pe)return;if(!Ae){J(`当前 Agent 不支持附件`,`运行时没有声明附件输入能力。`,`error`);return}let t=e.filter(e=>e.type.startsWith(`image/`)?Oe:ke);if(t.length!==e.length&&J(`部分附件未添加`,`当前 Agent 没有声明对应的图片或文件输入能力。`,`error`),!t.length)return;let n=Math.max(0,4-O.length);if(!n){J(`附件数量已达上限`,`每轮最多 4 个`,`error`);return}let r=t.slice(0,n);if(O.reduce((e,t)=>e+t.size,0)+r.reduce((e,t)=>e+t.size,0)>15e5){J(`附件体积过大`,`每轮附件总计不能超过 1.5 MiB`,`error`);return}let i=[];for(let e of r)try{i.push(await f6(e))}catch(e){J(`无法添加附件`,e instanceof Error?e.message:String(e),`error`)}if(!i.length)return;let a=[...O,...i];if(c6(a)>15e5){J(`附件编码后体积过大`,`每轮编码后的附件总计不能超过 1.5 MiB`,`error`);return}k(a)}async function Ze(t){let n=typeof t==`string`,r=n?t:b,i=n?[]:O,s=i6(r);if(pe)return;if(Re){J(`正在确认会话能力`,`请稍后再发送。`,`error`);return}if(!De){J(`当前 Agent 不支持文字会话`,`运行时没有声明文字输入能力。`,`error`);return}if(!p){J(`当前 Agent 尚未绑定模型`,`请先完成模型绑定和凭证配置。`,`error`),o?.();return}if(s.kind===`toggle-plan`){if(!je){J(`当前 Agent 不支持计划模式`,`运行时没有声明 Plan 输入能力。`,`error`);return}Ke();return}if(s.kind===`set-default`){We(`default`),x(``),J(`已返回默认模式`,`下一轮对话生效`,`success`);return}if(s.kind===`goal`&&!Me){J(`当前 Agent 不支持长期目标`,`运行时没有声明 Goal 输入能力。`,`error`);return}if(s.kind===`goal`&&!s.objective){J(`请补充目标`,`在 /goal 后输入需要持续完成的目标`,`error`),requestAnimationFrame(()=>ie.current?.focus());return}let c=s.kind===`goal`?s.objective:``,l=s.kind===`message`?s.text||(i.length?`请分析这些附件。`:``):c;if(i.length&&!Ae){J(`当前 Agent 不支持附件`,`请移除附件后重试。`,`error`);return}if(!l&&!i.length)return;let u=h||(A.status===`declared`?A.surface.sessionId:A6(`ses`)),d=A6(`resp`),f=S,m=new AbortController;ae.current=m;let v={...h3(d,u),transport:A.status===`declared`?`conversation`:`responses`,collaborationMode:w,goalObjective:c,startedAt:new Date().toISOString()};_(u),R(l),I(v),n||x(``);let y=i;n||k([]);try{let t=e=>{v=b3(v,e),I(v)};if(A.status===`declared`){let e=await Promise.all(y.map(e=>I6(e,m.signal))),t=w4({inputId:d,sessionId:u,idempotencyKey:d,parts:[{kind:`text`,text:l},...e.map(e=>({kind:`attachment`,attachmentRef:e.attachmentRef,mediaType:e.mediaType,name:e.name}))],...Ie?{modelRef:p}:{},...Le&&Ee?{reasoning:Ee}:{},extensions:{...Pe?{"ksadk.approval":f}:{},...je?{"ksadk.collaboration":w}:{},...Me&&c?{"ksadk.goal":c}:{}}});await new o3({fetch:g}).streamTurn({bootstrap:{buildId:A.buildId,surface:A.surface},input:t,signal:m.signal,onUpdate:e=>{v=y3(v,e),I(v)}})}else{let n=await g(`/v1/responses`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`same-origin`,signal:m.signal,body:JSON.stringify({...Ie?{model:p}:{},...Le&&Ee?{reasoning:{effort:Ee}}:{},input:a6(l,y),stream:!0,metadata:{agent_id:e,session_id:u,invocation_id:d,...Pe?{approval_mode:f}:{},...je?{collaboration_mode:w}:{},...Me&&c?{goal_objective:c}:{}}})});if(!n.ok||!n.body)throw Error(await F6(n));let r=new TextDecoder,i=E3(t),a=n.body.getReader();for(;;){let{value:e,done:t}=await a.read();if(e&&i.push(r.decode(e,{stream:!t})),t)break}i.finish()}if(v.status===`failed`)throw Error(v.error||`Agent 运行失败`);await Be(),I(null),R(``),a?.()}catch(e){if(m.signal.aborted)v={...v,status:`cancelled`},I(v);else{let t=E6(e);v={...v,status:`failed`,error:t},I(v),J(`运行失败`,t,`error`)}}finally{ae.current=null,requestAnimationFrame(()=>ie.current?.focus())}}function Qe(t){C(t),localStorage.setItem(Z3(e),t)}async function $e(){if(pe)try{let e=F?.transport===`conversation`&&F.runId?await g(`/api/v1/runs/${encodeURIComponent(F.runId)}:pause`,{method:`POST`}):F?.status===`streaming`?await g(`/v1/responses/${encodeURIComponent(F.responseId)}:pause`,{method:`POST`,credentials:`same-origin`}):await g(`/api/v1/runs/${encodeURIComponent(W.id)}:pause`,{method:`POST`});if(!e.ok)throw Error(await F6(e));I(e=>e&&{...e,status:`paused`}),window.setTimeout(()=>{Be().catch(()=>{})},200)}catch(e){J(`暂停运行失败`,e instanceof Error?e.message:String(e),`error`)}}async function et(){try{let e=F?.transport===`conversation`&&F.runId?await g(`/api/v1/runs/${encodeURIComponent(F.runId)}:resume`,{method:`POST`}):F?.status===`paused`?await g(`/v1/responses/${encodeURIComponent(F.responseId)}:resume`,{method:`POST`,credentials:`same-origin`}):await g(`/api/v1/runs/${encodeURIComponent(W.id)}:resume`,{method:`POST`});if(!e.ok)throw Error(await F6(e));I(e=>e&&{...e,status:`streaming`}),window.setTimeout(()=>{Be().catch(()=>{})},200)}catch(e){J(`继续运行失败`,e instanceof Error?e.message:String(e),`error`)}}async function tt(){if(pe)try{let e=F?.transport===`conversation`&&F.runId?await g(`/api/v1/runs/${encodeURIComponent(F.runId)}:cancel`,{method:`POST`}):F?await g(`/v1/responses/${encodeURIComponent(F.responseId)}/cancel`,{method:`POST`,credentials:`same-origin`}):await g(`/api/v1/runs/${encodeURIComponent(W.id)}:cancel`,{method:`POST`});if(!e.ok)throw Error(await F6(e));ae.current?.abort(),I(e=>e&&{...e,status:`cancelled`}),window.setTimeout(()=>{Be().catch(()=>{})},200)}catch(e){J(`结束运行失败`,e instanceof Error?e.message:String(e),`error`)}}async function rt(e,t,n,r,i){if(!e)throw Error(`运行尚未创建,请稍后重试`);let a=await g(`/api/v1/runs/${encodeURIComponent(e)}/interactions/${encodeURIComponent(t)}:submit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:r,data:i,expectedRevision:n,idempotencyKey:`interaction:${t}:revision-${n}`})});if(!a.ok){let e=await F6(a);throw J(`提交交互失败`,e,`error`),Error(e)}I(e=>e&&{...e,status:`streaming`,pendingApprovals:e.pendingApprovals.filter(e=>e.id!==t),surfaces:e.surfaces.map(e=>e.interaction?.id===t?{...e,interaction:{...e.interaction,status:`resolved`}}:e)}),await Be()}async function it(){if(V){te(!0);try{let e=await g(`/api/v1/sessions/${encodeURIComponent(V)}`,{method:`DELETE`});if(!e.ok)throw Error(await F6(e));h===V&&_(``),H(``),await Be(),J(`会话已删除`,`相关运行与 Trace 已从本地工作区移除。`)}catch(e){J(`删除失败`,e instanceof Error?e.message:String(e),`error`)}finally{te(!1)}}}return(0,G.jsxs)(`div`,{className:`studio-chat-shell${ne?` sessions-open`:``}`,"data-testid":`studio-chat-workbench`,children:[(0,G.jsxs)(`aside`,{className:`chat-session-sidebar`,"aria-label":`会话历史`,children:[(0,G.jsxs)(`header`,{className:`chat-session-header`,children:[(0,G.jsx)(`h2`,{children:`会话`}),(0,G.jsxs)(`div`,{className:`chat-session-header-actions`,children:[(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`新对话`,title:`新对话`,onClick:He,disabled:pe,children:(0,G.jsx)(Fe,{size:16})}),(0,G.jsx)(`button`,{className:`icon-button tertiary chat-session-mobile-close`,type:`button`,"aria-label":`关闭会话历史`,title:`关闭会话历史`,onClick:()=>U(!1),children:(0,G.jsx)(bt,{size:17})})]})]}),(0,G.jsxs)(`label`,{className:`chat-session-search`,children:[(0,G.jsx)(`span`,{className:`sr-only`,children:`搜索会话`}),(0,G.jsx)(`input`,{type:`search`,value:v,onChange:e=>y(e.target.value),placeholder:`搜索会话`})]}),(0,G.jsx)(`div`,{className:`chat-session-list`,children:z?(0,G.jsxs)(`div`,{className:`chat-session-skeleton`,"aria-label":`正在加载会话`,role:`status`,children:[(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{})]}):ue.length===0?(0,G.jsx)(`div`,{className:`session-empty`,children:v?`没有匹配的会话`:`还没有会话`}):ue.map(e=>(0,G.jsxs)(`div`,{className:`chat-session-item${h===e.id?` active`:``}${e.running?` running`:``}`,children:[(0,G.jsxs)(`button`,{className:`chat-session-main`,type:`button`,"aria-current":h===e.id?`true`:void 0,onClick:()=>Ue(e.id),title:`${e.title} · ${j6(e.updatedAt)}`,children:[(0,G.jsx)(`strong`,{children:N6(e.title)}),e.running&&(0,G.jsx)(`span`,{className:`session-status ${String(e.activeStatus||`RUNNING`).toLowerCase()}`,"aria-label":e.activeStatus===`PAUSED`?`已暂停`:e.activeStatus===`WAITING_INPUT`?`等待输入`:`运行中`})]}),(0,G.jsx)(`button`,{className:`chat-session-delete`,type:`button`,"aria-label":`删除会话:${N6(e.title)}`,title:e.running||F?.status===`streaming`&&F.sessionId===e.id?`运行中不可删除`:`删除会话`,disabled:e.running||F?.status===`streaming`&&F.sessionId===e.id,onClick:()=>H(e.id),children:(0,G.jsx)(ht,{size:14})})]},e.id))})]}),(0,G.jsx)(`button`,{className:`chat-session-backdrop`,type:`button`,"aria-label":`关闭会话历史`,onClick:()=>U(!1)}),(0,G.jsxs)(`section`,{className:`chat-conversation`,"aria-label":`与 ${t} 对话`,children:[(0,G.jsxs)(`header`,{className:`chat-conversation-header`,children:[(0,G.jsx)(`button`,{className:`icon-button tertiary chat-session-mobile-trigger`,type:`button`,"aria-label":`打开会话历史`,title:`会话历史`,"aria-expanded":ne,onClick:()=>U(!0),children:(0,G.jsx)(Ge,{size:17})}),(0,G.jsx)(Ct,{name:t,appearance:n,size:`sm`}),(0,G.jsx)(`h1`,{children:t}),pe&&(0,G.jsx)(`span`,{className:`badge`,"data-state":fe===`streaming`?`running`:`pending`,children:he})]}),(0,G.jsx)(`div`,{ref:re,className:`chat-message-list`,role:`log`,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-busy":pe,onScroll:e=>{let t=e.currentTarget;oe.current=t.scrollHeight-t.scrollTop-t.clientHeight<48,h&&se.current.set(h,t.scrollTop)},children:de.length===0&&!F?(0,G.jsxs)(`div`,{className:`chat-empty`,children:[(0,G.jsx)(`span`,{className:`chat-empty-icon`,children:(0,G.jsx)(N,{size:22})}),(0,G.jsxs)(`h2`,{children:[`开始与 `,t,` 对话`]}),(0,G.jsx)(`p`,{children:`消息通过统一的 Responses API 发送;思考、工具调用和结果会在同一条时间线中呈现。`}),(0,G.jsx)(`div`,{className:`suggestion-list`,children:[`先介绍你的职责、能力和工作边界。`,`根据当前上下文给出一个清晰的执行计划。`,`列出完成任务还需要我提供的信息。`].map(e=>(0,G.jsx)(`button`,{type:`button`,onClick:()=>{x(e),ie.current?.focus()},children:e},e))})]}):(0,G.jsxs)(G.Fragment,{children:[me.map(e=>(0,G.jsx)(Y6,{run:e,agentName:t,agentAppearance:n,onInteraction:rt,onConfigure:o,onOpenSettings:c,onRetry:e=>{Ze(e)}},e.id)),F&&F.sessionId===h&&L&&(0,G.jsx)(X6,{prompt:L,stream:F,agentName:t,agentAppearance:n,onInteraction:rt,onConfigure:o,onOpenSettings:c,onRetry:e=>{Ze(e)}})]})}),(0,G.jsxs)(`footer`,{className:`chat-composer-wrap`,children:[F&&F.sessionId===h?(0,G.jsx)(W6,{surfaces:F.surfaces,approvals:F.pendingApprovals,onInteraction:(e,t,n,r)=>rt(F.runId,e,t,n,r)}):xe.map(e=>(0,G.jsx)(G6,{runId:e.id,status:e.status,onInteraction:rt},e.id)),pe&&ge&&(0,G.jsx)(C6,{mode:ge,status:_e,objective:ve,startedAt:ye,elapsedMs:be,onPause:_e===`running`?$e:void 0,onResume:_e===`paused`?et:void 0,onStop:tt}),(0,G.jsx)(b6,{input:b,placeholder:Re?`正在确认会话能力…`:A.status===`error`?`会话能力加载失败,请刷新后重试`:De?w===`plan`?`描述需要规划的任务…`:`输入消息,或输入 / 使用命令…`:`当前 Agent 未开放文字输入`,disabled:pe||Re||!De,active:r,attachments:(Ae?O:[]).map(e=>({id:e.id,name:e.name,kind:e.kind,size:e.size,previewUrl:e.dataUrl})),mode:w,approvalMode:S,models:Te,model:p,reasoningEffort:E,commandIndex:M,contextControl:(0,G.jsx)(k6,{...we}),sendControl:fe===`paused`?(0,G.jsx)(`button`,{className:`chat-send-button resume`,type:`button`,"aria-label":`继续生成`,title:`继续生成`,onClick:et,children:(0,G.jsx)(Xe,{size:15,fill:`currentColor`})}):fe===`waiting_input`?(0,G.jsx)(`button`,{className:`chat-send-button pause`,type:`button`,"aria-label":`等待交互输入`,title:`请先处理上方交互卡片`,disabled:!0,children:(0,G.jsx)(Ne,{size:15,className:`animate-spin`})}):pe?(0,G.jsx)(`button`,{className:`chat-send-button pause`,type:`button`,"aria-label":`暂停生成`,title:`暂停生成`,onClick:$e,children:(0,G.jsx)(Je,{size:15,fill:`currentColor`})}):(0,G.jsx)(`button`,{className:`chat-send-button`,type:`button`,"aria-label":`发送消息`,title:`发送消息`,onClick:()=>{Ze()},disabled:Re||!De||!b.trim()&&!(Ae&&O.length),children:(0,G.jsx)(nt,{size:15})}),canSend:De&&!!(b.trim()||Ae&&O.length),textareaRef:ie,onInputChange:x,onFiles:Ye,onRemoveAttachment:e=>k(t=>t.filter(t=>t.id!==e)),onSetMode:e=>{e!==w&&Ke()},onStartGoal:()=>qe(`goal`),onApprovalModeChange:Qe,onModelChange:m,onReasoningEffortChange:D,onConfigureModel:o,onCommandSelect:qe,onCommandIndexChange:P,onSend:()=>{Ze()},allowAttachments:Ae,allowPlan:je,allowGoal:Me,allowApproval:Pe,allowModelSelection:Ie,allowReasoning:Le,attachmentAccept:ze}),(0,G.jsx)(`p`,{className:`chat-composer-disclaimer`,children:`AI 生成内容可能不准确,请核对关键结论与工具操作。`})]})]}),V&&(0,G.jsx)(ka,{title:`删除这个会话?`,description:`相关 Run 与 Trace 会从当前本地工作区移除。`,confirmText:`删除会话`,busy:ee,onConfirm:it,onCancel:()=>H(``)})]})}function Q6(e){AP(e,[/\r?\n|\r/g,$6])}function $6(){return{type:`break`}}function e8(){return function(e){Q6(e)}}function t8(e){let t=e?.capabilities?.reasoning_efforts;return Array.isArray(t)?t.filter(e=>e===`low`||e===`medium`||e===`high`):[]}function n8(e){if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(e=>{if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e;return n8(t.text??t.content??t.value??``)}return``}).filter(Boolean).join(` +`);if(e&&typeof e==`object`){let t=e;return n8(t.text??t.content??t.value??``)}return``}function r8(e){return typeof e==`string`||typeof e==`number`?String(e):``}function i8(...e){for(let t of e){if(typeof t==`string`&&t.trim())return t.trim();if(!t||typeof t!=`object`)continue;let e=t,n=i8(e.message,e.detail,e.reason,e.error,e.text);if(n)return n}return``}function a8(e){return e&&typeof e==`object`?e:{}}function o8(e){if(!e||typeof e!=`object`)return null;let t=e,n=Object.keys(a8(t.payload)).length?a8(t.payload):t,r=a8(n.content),i=[r.runtime_event,r.runtimeEvent,n.runtime_event,n.runtimeEvent,t.runtime_event,t.runtimeEvent].map(a8).find(e=>Object.keys(e).length>0)||{},a=Object.keys(i).length?i:n,o=r8(t.event_type??t.eventType??n.event_type??n.eventType).toLowerCase();return{event:a,eventType:r8(a.event_type??a.eventType??a.type).toLowerCase()||o,runId:r8(a.run_id??a.runId??n.run_id??n.runId??t.run_id??t.runId),invocationId:r8(a.invocation_id??a.invocationId??n.invocation_id??n.invocationId??t.invocation_id??t.invocationId),seq:Number(a.seq??a.seq_id??a.source_session_seq??n.seq??n.seq_id??n.source_session_seq??t.seq??t.seq_id??t.source_session_seq??0)||0}}function s8(e){return e.reduce((e,t)=>{let n=o8(t);return Math.max(e,n?.seq||0)},0)}function c8(e){let t=a8(e);return(Array.isArray(t.parts)?t.parts.map(a8):[])[0]||t}function l8(e){if(typeof e==`string`)return e;if(e==null)return``;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function u8(e){let t=a8(e),n=a8(t.payload),r=a8(n.content),i=o8(e)?.event||{},a=[t.conversationItem,n.conversationItem,r.conversationItem,i.conversationItem];for(let e of a){let t=A4(e);if(t)return t}return null}function d8(e){let t=u8(e);if(!t||t.visibility!==`public`||t.kind===`unknown`||t.kind===`progress`||t.kind===`user_message`)return null;let n=n8(t.payload.text??t.payload.objective??t.payload.error??``),r=t.lifecycle===`failed`?`failed`:t.lifecycle===`completed`?`completed`:t.kind===`approval`&&t.lifecycle===`pending`?`waiting`:`running`,i=t.kind===`assistant_text`?`message`:t.kind===`reasoning`?`reasoning`:t.kind===`tool_call`?`tool`:t.kind,a=n8(t.payload.tool??t.payload.title??t.payload.name??t.payload.kind)||(i===`reasoning`?`思考过程`:i===`approval`?`等待确认`:i===`plan`?`计划`:i===`goal`?`目标`:i===`artifact`?`运行产物`:i===`a2ui`?`交互卡片`:i===`error`?`运行失败`:i===`tool`?`工具调用`:`回复`);return{id:`${t.runId}/${t.itemId}`,kind:i,title:a,text:n,detail:n||l8(t.payload),status:r,operation:t.operation===`append`?`append`:`replace`}}function f8(e){let t=d8(e);if(t)return t;let n=o8(e);if(!n)return null;let r=n.event;if([`message.delta`,`response.output_text.delta`,`output_text.delta`].includes(n.eventType)){let e=a8(r.content),t=a8(r.update),i=n8(t.delta??t.text??r.delta??e.delta??r.text);if(!i)return null;let a=r8(r.item_id??r.itemId??r.output_index)||`legacy`;return{id:`${n.invocationId||n.runId}//message:${a}`,kind:`message`,title:`回复`,text:i,detail:i,status:`running`,operation:r.replace===!0||r8(r.op).toLowerCase()===`replace`?`replace`:`append`}}if(![`item.started`,`item.updated`,`item.completed`,`item.failed`].includes(n.eventType))return null;let i=r8(r.item_kind??r.itemKind).toLowerCase(),a=[`message`,`assistant`,`assistant_message`].includes(i)?`message`:i===`reasoning`?`reasoning`:i===`approval`?`approval`:[`tool`,`tool_call`,`tool_result`,`command`,`command_execution`].includes(i)?`tool`:null;if(!a)return null;let o=n.eventType===`item.started`?r.initial:n.eventType===`item.completed`||n.eventType===`item.failed`?r.snapshot:r.update,s=a8(o),c=c8(o),l=n8(c.text??c.delta??c.content??s.parts??r.text),u=n8(c.name??r.name??r.tool_name??r.title)||(a===`reasoning`?`思考过程`:a===`approval`?`等待确认`:a===`tool`?`工具调用`:`回复`),d=l||l8(c.result??c.output??c.arguments??c.error??``),f=r8(r.item_id??r.itemId??c.call_id??c.callId)||`${a}:${u}`;return{id:[n.invocationId||n.runId,r8(r.scope_id??r.scopeId),f].join(`/`),kind:a,title:u,text:l,detail:d,status:n.eventType===`item.failed`?`failed`:a===`approval`&&n.eventType!==`item.completed`?`waiting`:n.eventType===`item.completed`?`completed`:`running`,operation:r8(r.op).toLowerCase()===`append`?`append`:`replace`}}function p8(e){let t=f8(e);if(t)return[t];let n=o8(e);if(!n)return[];let r=n.event,i=n.eventType,a=r8(r.id??r.response_id??r.responseId)||n.invocationId||n.runId||`direct`,o=[],s=Array.isArray(r.choices)?r.choices.map(a8):[];if(s.forEach((e,t)=>{let n=a8(e.delta),r=n8(n.reasoning_content??n.reasoning??n.thinking);r&&o.push({id:`${a}//reasoning:${r8(e.index)||t}`,kind:`reasoning`,title:`思考过程`,text:r,detail:r,status:`running`,operation:`append`});let i=n8(n.content);i&&o.push({id:`${a}//message:${r8(e.index)||t}`,kind:`message`,title:`回复`,text:i,detail:i,status:`running`,operation:`append`}),(Array.isArray(n.tool_calls)?n.tool_calls.map(a8):[]).forEach((n,r)=>{let i=a8(n.function),s=n8(i.name??n.name)||`工具调用`,c=n8(i.arguments??n.arguments);o.push({id:`${a}//tool:${r8(e.index)||t}:${r8(n.index)||r}`,kind:`tool`,title:s,text:``,detail:c,status:`running`,operation:`append`})})}),!i&&s.length===0&&typeof r.delta==`string`&&r.delta&&o.push({id:`${a}//message:0`,kind:`message`,title:`回复`,text:r.delta,detail:r.delta,status:`running`,operation:`append`}),i.includes(`reasoning`)&&i.endsWith(`.delta`)){let e=n8(r.delta??r.text??a8(r.part).text);e&&o.push({id:`${a}//reasoning:${r8(r.item_id??r.itemId)||`summary`}`,kind:`reasoning`,title:`思考过程`,text:e,detail:e,status:`running`,operation:r.replace===!0||r8(r.op).toLowerCase()===`replace`?`replace`:`append`})}if([`response.output_item.added`,`response.output_item.done`].includes(i)){let e=a8(r.item),t=r8(e.type).toLowerCase();[`mcp_approval_request`,`approval_request`].includes(t)&&o.push({id:`${a}//approval:${r8(e.id??e.approval_request_id??e.call_id)||`request`}`,kind:`approval`,title:n8(e.title??e.name??e.server_label)||`等待确认`,text:``,detail:n8(e.message)||l8(e.arguments??e.request??``),status:`waiting`,operation:`replace`}),[`function_call`,`tool_call`,`computer_call`,`mcp_call`].includes(t)&&o.push({id:`${a}//tool:${r8(e.id??e.call_id??r.output_index)||`output`}`,kind:`tool`,title:n8(e.name)||`工具调用`,text:``,detail:n8(e.arguments??e.output)||l8(e.arguments??e.output??``),status:i.endsWith(`.done`)?`completed`:`running`,operation:`replace`})}if([`response.function_call_arguments.delta`,`response.mcp_call_arguments.delta`].includes(i)){let e=n8(r.delta);o.push({id:`${a}//tool:${r8(r.item_id??r.itemId??r.call_id)||`output`}`,kind:`tool`,title:n8(r.name)||`工具调用`,text:``,detail:e,status:`running`,operation:`append`})}return i===`response.approval_request`&&o.push({id:`${a}//approval:${r8(r.interaction_id??r.approval_request_id??r.item_id)||`request`}`,kind:`approval`,title:n8(r.title??r.message??a8(r.request).title)||`等待确认`,text:``,detail:n8(r.message)||l8(r.request??``),status:`waiting`,operation:`replace`}),o}function m8(e){let t=o8(e);if(!t)return``;let n=r8(t.event.event_id??t.event.eventId);return n?`${t.runId||t.invocationId}/${n}`:``}function h8(e){let t=o8(e);if(!t)return null;let n=t.event,r=t.eventType;if(r8(n.object).toLowerCase()===`response`){let e=r8(n.status).toLowerCase();if(e===`completed`)return{status:`completed`,error:``};if([`failed`,`cancelled`,`canceled`,`incomplete`].includes(e))return{status:`failed`,error:i8(n.error,n.incomplete_details)||`云端流式响应失败`}}return[`stream.done`,`response.completed`,`response.done`,`done`].includes(r)?{status:`completed`,error:``}:n.error||[`error`,`stream.error`,`response.failed`,`response.error`].includes(r)?{status:`failed`,error:i8(n.error,n.response,n.message,n.detail)||`云端流式响应失败`}:null}function g8(e,t){let n=e.findIndex(e=>e.id===t.id);if(n<0)return[...e,t];let r=e[n],i=[...e];return i[n]={...r,...t,title:t.title===`回复`||t.title===`思考过程`||t.title===`工具调用`?r.title:t.title,text:t.operation===`append`?`${r.text}${t.text}`:t.text||r.text,detail:t.kind===`tool`&&t.operation===`append`?`${r.detail}${t.detail}`:t.detail||r.detail},i}function _8(e){if(!e||typeof e!=`object`)return null;let t=e,n=String(t.session_id??t.sessionId??t.id??``).trim();return n?{id:n,title:n8(t.title??t.summary??t.first_prompt??``)||`新会话`,updatedAt:r8(t.updated_at??t.updatedAt??t.created_at),state:r8(t.active_run_status??t.state),error:i8(t.active_run_error,t.activeRunError,t.last_error,t.lastError,t.error)}:null}function v8(e){let t=e.trim().toLowerCase();return[`running`,`streaming`,`queued`,`pending`,`accepted`].includes(t)?`running`:[`paused`,`waiting`,`waiting_input`,`requires_action`].includes(t)?`waiting_input`:[`failed`,`error`,`cancelled`,`canceled`,`expired`,`aborted`].includes(t)?`failed`:null}function y8(e){if(!e||typeof e!=`object`)return null;let t=e,n=String(t.role??`assistant`).toLowerCase(),r=n===`user`||n===`system`?n:`assistant`;return{id:String(t.message_id??t.messageId??t.seq_id??crypto.randomUUID()),role:r,content:n8(t.content),timestamp:String(t.timestamp??``)}}function b8(e){let t=new Map;for(let n of e){let e=o8(n);if(!e)continue;let r=e.event,i=n,a=e.eventType,o=r.Metadata&&typeof r.Metadata==`object`?r.Metadata:r.metadata&&typeof r.metadata==`object`?r.metadata:i.Metadata&&typeof i.Metadata==`object`?i.Metadata:i.metadata&&typeof i.metadata==`object`?i.metadata:{},s=o.interrupt_info&&typeof o.interrupt_info==`object`?o.interrupt_info:{},c=o.resume_input&&typeof o.resume_input==`object`?o.resume_input:{},l=String(r.interaction_id??r.interactionId??s.approval_request_id??c.approval_request_id??``).trim();if(l){if([`interaction.requested`,`approval_request`,`response.approval_request`].includes(a)){let n=r.request&&typeof r.request==`object`?r.request:{};t.set(l,{id:l,runId:String(r.run_id??r.runId??e.invocationId??e.runId??i.run_id??i.runId??i.InvocationId??i.invocation_id??``),revision:Number(r.revision??1)||1,kind:String(r.interaction_kind??r.interactionKind??r.kind??n.kind??([`approval_request`,`response.approval_request`].includes(a)?`approval`:`input`)),title:n8(n.title??n.message??n.prompt??s.approval_message??s.tool_name??n.kind??`需要你的确认`)||`需要你的确认`})}else[`interaction.resolved`,`interaction.cancelled`,`interaction.expired`,`approval_response`].includes(a)&&t.delete(l)}}return[...t.values()]}function x8(e,t,n,r){if(!t&&!n&&r<=0)return null;for(let i of e){let e=o8(i);if(!e)continue;let a=e.event,o=e.runId||e.invocationId,s=e.seq;if(!(o&&[t,n].filter(Boolean).includes(o))&&!(r>0&&s>r))continue;let c=e.eventType,l=a.content&&typeof a.content==`object`?a.content:{},u=i8(a.error,a.message,l.error,l.message,l.detail);if([`run.completed`,`run.complete`,`run.succeeded`].includes(c))return{status:`completed`,error:``};if([`run.interrupted`,`run.paused`,`run.waiting_input`,`run.requires_action`].includes(c))return{status:`interrupted`,error:``};if([`run.failed`,`run.cancelled`,`run.expired`,`run.error`].includes(c))return{status:`failed`,error:u};if([`run_status`,`run.status`].includes(c)){let e=a.state_delta&&typeof a.state_delta==`object`?a.state_delta:{},t=e.active_run&&typeof e.active_run==`object`?e.active_run:{},n=String(a.status??l.status??t.status??``).toLowerCase();if([`completed`,`complete`,`succeeded`,`success`].includes(n))return{status:`completed`,error:``};if([`interrupted`,`paused`,`waiting`,`waiting_input`,`requires_action`].includes(n))return{status:`interrupted`,error:``};if([`failed`,`cancelled`,`canceled`,`expired`,`error`,`aborted`].includes(n))return{status:`failed`,error:u||i8(t.error,t.message,t.reason)}}}return null}async function S8(e,t,n){if(!e.ok)throw Error(await C8(e));if(!e.body)throw Error(`云端事件流为空`);let r=e.body.getReader(),i=new TextDecoder,a=``,o=()=>{r.cancel().catch(()=>{})},s=e=>{let n=e.split(/\r?\n/),r=n.find(e=>e.startsWith(`event:`))?.slice(6).trim()||``,i=n.filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trimStart()).join(` +`);if(i){if(i===`[DONE]`){t({event_type:`stream.done`});return}try{let e=JSON.parse(i);if(r&&e&&typeof e==`object`){let n=e;t(n.event_type||n.eventType||n.type?n:{...n,event_type:r})}else t(e)}catch{}}};n.addEventListener(`abort`,o,{once:!0});try{for(;!n.aborted;){let{done:e,value:t}=await r.read();a+=i.decode(t,{stream:!e});let n=a.split(/\r?\n\r?\n/);if(a=n.pop()||``,n.forEach(s),e){a.trim()&&s(a);break}}}finally{n.removeEventListener(`abort`,o),r.releaseLock()}}async function C8(e){try{let t=await e.json();return String(t?.error?.message||t?.message||t?.detail||`请求失败 (${e.status})`)}catch{return`请求失败 (${e.status})`}}async function w8(e){if(e.size>10485760)throw Error(`${e.name} 超过 10 MB 限制`);return await new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result||``)),r.onerror=()=>n(Error(`${e.name} 读取失败`)),r.readAsDataURL(e)})}function T8({items:e,streaming:t}){let n=e.filter(e=>e.kind===`reasoning`).map(e=>e.text).join(``),r=e.filter(e=>e.kind!==`reasoning`&&e.kind!==`message`);if(!n&&!r.length)return null;let i=r.find(e=>e.status===`running`||e.status===`waiting`),a=i?`${i.status===`waiting`?`等待确认`:`正在处理`} · ${i.title}`:n?t?`正在思考`:`已思考`:`已更新 ${r.length} 个运行事件`;return(0,G.jsxs)(`details`,{className:`chat-processing-group`,open:t,"data-ui":`think`,children:[(0,G.jsxs)(`summary`,{children:[(0,G.jsx)(L,{size:15,className:`chat-processing-icon`}),(0,G.jsx)(`span`,{children:a}),t&&(0,G.jsx)(Ne,{size:13,className:`animate-spin`})]}),(0,G.jsxs)(`div`,{className:`chat-processing-content`,children:[n&&(0,G.jsx)(`div`,{className:`chat-reasoning-content`,children:n}),r.map(e=>(0,G.jsxs)(`div`,{className:`chat-activity-card ${e.kind}`,children:[(0,G.jsxs)(`div`,{className:`chat-activity-row`,children:[(0,G.jsx)(`span`,{className:`chat-activity-icon`,children:e.kind===`approval`?(0,G.jsx)(at,{size:15}):e.kind===`plan`||e.kind===`goal`?(0,G.jsx)(L,{size:15}):(0,G.jsx)(yt,{size:15})}),(0,G.jsxs)(`span`,{className:`chat-activity-copy`,children:[(0,G.jsx)(`small`,{children:e.kind===`approval`?`批准`:e.kind===`plan`?`计划`:e.kind===`goal`?`目标`:e.kind===`artifact`?`产物`:e.kind===`a2ui`?`交互`:e.kind===`error`?`错误`:`工具`}),(0,G.jsx)(`strong`,{children:e.title})]}),(0,G.jsx)(`span`,{className:`chat-activity-status ${e.status}`,children:e.status===`completed`?`已完成`:e.status===`failed`?`失败`:e.status===`waiting`?`等待确认`:`运行中`})]}),e.detail&&(0,G.jsx)(`pre`,{children:e.detail})]},e.id))]})]})}function E8({deploymentId:e,agentId:t,agentName:n,active:r=!0,refreshTick:i=0}){let[a,o]=(0,s.useState)([]),[c,l]=(0,s.useState)(``),[u,d]=(0,s.useState)([]),[f,p]=(0,s.useState)([]),[m,h]=(0,s.useState)([]),[_,v]=(0,s.useState)(``),[y,b]=(0,s.useState)([]),[x,S]=(0,s.useState)([]),[C,w]=(0,s.useState)(``),[T,E]=(0,s.useState)(`risk`),[D,O]=(0,s.useState)(`default`),[k,A]=(0,s.useState)(``),[j,M]=(0,s.useState)(0),[P,F]=(0,s.useState)(!0),[I,L]=(0,s.useState)(!1),[R,z]=(0,s.useState)(!1),[B,V]=(0,s.useState)(``),[H,ee]=(0,s.useState)(``),[te,ne]=(0,s.useState)(``),[U,re]=(0,s.useState)(!1),ie=(0,s.useRef)(null),ae=(0,s.useRef)(``),oe=(0,s.useRef)(!1),se=(0,s.useRef)(new Set),ce=(0,s.useRef)(``),le=(0,s.useRef)(``),ue=(0,s.useRef)(0),de=(0,s.useRef)(new Map),W=(0,s.useRef)(!1),fe=(0,s.useRef)(null),pe=(0,s.useRef)([]),me=(0,s.useRef)(!1),he=(0,s.useRef)(new Set),ge=(0,s.useMemo)(()=>`/api/v1/deployments/${encodeURIComponent(e)}/cloud-chat`,[e]),_e=(0,s.useCallback)((e=``,t=`云端运行未完成`)=>{let n=oe.current;oe.current=!1,me.current=!1,z(!1),ce.current=``,le.current=``,ue.current=0,se.current=new Set,d(e=>e.map(e=>e.pending?{...e,pending:!1}:e)),fe.current?.abort(),fe.current=null,e&&(V(e),n&&J(t,e,`error`))},[]),ve=(0,s.useCallback)(async(e=!0)=>{let t=await g(`${ge}/sessions`);if(!t.ok)throw Error(await C8(t));let n=await t.json(),r=(n.sessions||n.items||[]).map(_8).filter(e=>!!e);o(r);let i=r.find(e=>e.id===ae.current);i&&v8(i.state)===`failed`&&_e(i.error||`这次云端运行未完成;可新建会话后重试。若持续失败,请到可观测页面按会话查看记录。`),l(t=>{let n=r.some(e=>e.id===t)?t:e&&r[0]?.id||``;return ae.current=n,n})},[ge,_e]),ye=(0,s.useCallback)(async e=>{if(!e){d([]);return}let t=await g(`${ge}/sessions/${encodeURIComponent(e)}/messages`);if(!t.ok)throw Error(await C8(t));let n=((await t.json()).messages||[]).map(y8).filter(e=>!!e);d(n);let r=n.some(e=>e.role===`assistant`&&!se.current.has(e.id));r&&(p(e=>e.filter(e=>e.kind!==`message`)),me.current||(pe.current=[])),oe.current&&r&&!me.current&&(V(``),_e())},[ge,_e]),be=(0,s.useCallback)(async e=>{if(!e){h([]);return}let t=await g(`${ge}/sessions/${encodeURIComponent(e)}/events?limit=1000`);if(!t.ok)throw Error(await C8(t));let n=await t.json(),r=Array.isArray(n.events)?n.events:[];de.current.set(e,Math.max(de.current.get(e)||0,s8(r)));let i=x8(r,ce.current,le.current,ue.current);i&&(!me.current||i.status!==`completed`)&&_e(i.status===`failed`?i.error||`本次请求已结束,未得到回复。可新建会话后重试;若持续失败,请到可观测页面按会话查看记录。`:``);let a=[...pe.current,...r].slice(-500);if(pe.current=a,h(b8(a)),!me.current){let e=r.reduce((e,t)=>{let n=f8(t);return n&&n.kind!==`message`?g8(e,n):e},[]);p(t=>e.length?[...t.filter(e=>e.kind===`message`),...e]:t)}},[ge,_e]);(0,s.useEffect)(()=>{let e=!1;return F(!0),o([]),l(``),ae.current=``,d([]),p([]),pe.current=[],h([]),V(``),oe.current=!1,me.current=!1,he.current=new Set,z(!1),ce.current=``,le.current=``,ue.current=0,de.current.clear(),ve().catch(t=>{e||J(`云端会话加载失败`,t.message,`error`)}).finally(()=>{e||F(!1)}),()=>{e=!0}},[ve,i]),(0,s.useEffect)(()=>()=>{fe.current?.abort(),fe.current=null},[]),(0,s.useEffect)(()=>{let e=!1;return g(`${ge}/models`).then(async e=>{if(!e.ok)throw Error(await C8(e));return await e.json()}).then(t=>{if(e)return;let n=(Array.isArray(t.models)?t.models:Array.isArray(t.items)?t.items:[]).map(e=>{if(typeof e==`string`)return{id:e,label:e};if(!e||typeof e!=`object`)return null;let t=e,n=String(t.id??t.model??t.name??``).trim(),r=t.capabilities&&typeof t.capabilities==`object`?t.capabilities:void 0;return n?{id:n,label:String(t.display_name??t.displayName??t.label??n),capabilities:r}:null}).filter(e=>!!e),r=String(t.current??t.configured_model??t.configuredModel??``).trim();S(n),w(e=>e||(n.some(e=>e.id===r)?r:n[0]?.id||r))}).catch(()=>{}),()=>{e=!0}},[ge]),(0,s.useEffect)(()=>{E(X3(localStorage.getItem(Z3(t)))),O(localStorage.getItem(`agentkit:chat:collaboration:${t}`)===`plan`?`plan`:`default`),A(``)},[t]),(0,s.useEffect)(()=>{M(0)},[_]);let xe=x.find(e=>e.id===C),Se=t8(xe).includes(k)?k:``;(0,s.useEffect)(()=>{k&&!t8(xe).includes(k)&&A(``)},[k,xe]),(0,s.useEffect)(()=>{ye(c).catch(e=>{J(`云端消息加载失败`,e.message,`error`)}),be(c).catch(e=>{J(`云端交互加载失败`,e.message,`error`)})},[c,be,ye]),(0,s.useEffect)(()=>{if(!r||!c)return;let e=window.setInterval(()=>{ye(c).catch(()=>{}),be(c).catch(()=>{}),ve().catch(()=>{})},I||R?1200:4e3);return()=>window.clearInterval(e)},[r,c,be,ye,ve,I,R]),(0,s.useEffect)(()=>{let e=ie.current;e&&(e.scrollTop=e.scrollHeight)},[u,I,f,R]);async function Ce(){let e=await g(`${ge}/sessions`,{method:`POST`});if(!e.ok)throw Error(await C8(e));let t=await e.json(),n=_8(t.session??t.Session??t);if(!n)throw Error(`云端未返回有效会话标识`);return o(e=>[n,...e.filter(e=>e.id!==n.id)]),ae.current=n.id,l(n.id),d([]),p([]),pe.current=[],h([]),V(``),se.current=new Set,de.current.set(n.id,0),n.id}async function we(){if(!(I||R))try{await Ce(),re(!1)}catch(e){J(`新建云端会话失败`,e instanceof Error?e.message:String(e),`error`)}}async function Te(){let e=i6(_);if(e.kind===`toggle-plan`){De(`plan`);return}if(e.kind===`set-default`){De(`default`);return}if(e.kind===`goal`&&!e.objective){J(`请补充目标`,`在 /goal 后输入需要持续完成的目标`,`error`);return}let t=e.kind===`goal`?e.objective:``,n=e.kind===`message`?e.text:t;if(!(!n&&y.length===0||I||R||W.current)){v(``),W.current=!0,L(!0),oe.current=!0,z(!0),p([]),pe.current=[],V(``);try{let e=[];n&&e.push({type:`input_text`,text:n});for(let t of y){let n=await w8(t);e.push(t.type.startsWith(`image/`)?{type:`input_image`,image_url:n}:{type:`input_file`,filename:t.name,file_data:n})}let r=ae.current||await Ce();se.current=new Set(u.filter(e=>!e.pending&&e.role===`assistant`).map(e=>e.id)),ce.current=``,le.current=``,ue.current=de.current.get(r)||0;let i={id:`local-${crypto.randomUUID()}`,role:`user`,content:n||`已上传 ${y.length} 个附件`,timestamp:new Date().toISOString(),pending:!0};d(e=>[...e,i]),fe.current?.abort();let a=new AbortController;fe.current=a,me.current=!0,he.current=new Set;let o=(e,t)=>{if(t===`session`){if(e.kind===`message`)return;p(t=>g8(t,e));return}p(t=>g8(t,e))};g(`${ge}/sessions/${encodeURIComponent(r)}/events/stream?afterSeqId=${ue.current}`,{headers:{Accept:`text/event-stream`},signal:a.signal}).then(e=>S8(e,e=>{let t=o8(e);if(!t)return;t.seq&&de.current.set(r,Math.max(de.current.get(r)||0,t.seq));let n=[t.runId,t.invocationId].filter(Boolean),i=[ce.current,le.current].filter(Boolean);if(i.length&&(!n.length||!n.some(e=>i.includes(e)))||ue.current&&t.seq&&t.seq<=ue.current)return;i.length||(t.runId&&(ce.current=t.runId),t.invocationId&&(le.current=t.invocationId)),pe.current=[...pe.current,e].slice(-500),h(b8(pe.current));let a=f8(e);if(a&&a.kind!==`message`){let t=m8(e),n=!!(t&&he.current.has(t));t&&he.current.add(t),n||o(a,`session`)}let s=x8([e],ce.current,le.current,ue.current);s&&s.status!==`completed`&&(_e(s.status===`failed`?s.error||`本次请求已结束,未得到回复。`:``),ye(r).catch(()=>{}),be(r).catch(()=>{}),ve().catch(()=>{}))},a.signal)).catch(()=>{}),await S8(await g(`${ge}/sessions/${encodeURIComponent(r)}/messages/stream`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`},signal:a.signal,body:JSON.stringify({content:e,model:C||void 0,modelOptions:Se?{reasoning:{effort:Se}}:{},toolApprovalMode:T,collaborationMode:D,goalObjective:t||void 0})}),e=>{pe.current=[...pe.current,e].slice(-500),h(b8(pe.current));let t=m8(e),n=!!(t&&he.current.has(t));t&&he.current.add(t),n||p8(e).forEach(e=>o(e,`direct`));let r=h8(e);r&&_e(r.status===`failed`?r.error:``,`云端流式响应失败`)},a.signal),oe.current&&_e(),b([]),ve().catch(()=>{}),ye(r).catch(()=>{}),be(r).catch(()=>{})}catch(e){let t=e instanceof Error?e.message:String(e);oe.current&&_e(t,`云端消息发送失败`)}finally{L(!1),W.current=!1}}}function Ee(e){O(e),localStorage.setItem(`agentkit:chat:collaboration:${t}`,e),v(``),J(e===`plan`?`计划模式已开启`:`已返回默认模式`,`下一轮云端对话生效`,`success`)}function De(e){if(e===`goal`){v(`/goal `);return}Ee(e===`plan`?D===`plan`?`default`:`plan`:`default`)}function Oe(){let e=[...u].reverse().find(e=>e.role===`user`);e&&(v(e.content),V(``))}async function ke(e){if(!(H||!window.confirm(`确定删除这个云端会话吗?`))){ee(e);try{let t=await g(`${ge}/sessions/${encodeURIComponent(e)}`,{method:`DELETE`});if(!t.ok)throw Error(await C8(t));o(t=>t.filter(t=>t.id!==e));let n=ae.current===e;n&&(fe.current?.abort(),fe.current=null,ae.current=``,l(``),d([]),p([]),pe.current=[],h([]),V(``)),de.current.delete(e),await ve(!n)}catch(e){J(`删除云端会话失败`,e instanceof Error?e.message:String(e),`error`)}finally{ee(``)}}}async function Ae(e,t){if(!(!c||te)){if(!e.runId){J(`交互缺少运行标识`,`请刷新会话后重试。`,`error`);return}ne(e.id);try{let n=await g(`${ge}/sessions/${encodeURIComponent(c)}/interactions`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({runId:e.runId,interactionId:e.id,expectedRevision:e.revision,action:t,response:t===`approve`?{decision:`approve`}:t===`reject`?{decision:`reject`}:{},idempotencyKey:`studio-cloud-${e.id}-${e.revision}-${t}`})});if(!n.ok)throw Error(await C8(n));await Promise.all([be(c),ye(c)]),J(`已提交确认`,`云端 Agent 将继续当前对话。`,`success`)}catch(e){J(`提交确认失败`,e instanceof Error?e.message:String(e),`error`)}finally{ne(``)}}}let je=f.filter(e=>e.kind===`message`).map(e=>e.text).join(``);return(0,G.jsxs)(`section`,{className:`studio-chat-shell cloud-chat-shell${U?` sessions-open`:``}`,"aria-label":`云端会话`,children:[(0,G.jsxs)(`aside`,{className:`chat-session-sidebar`,"aria-label":`云端会话历史`,children:[(0,G.jsxs)(`header`,{className:`chat-session-header`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:`云端会话`}),(0,G.jsx)(`span`,{children:n})]}),(0,G.jsxs)(`div`,{className:`chat-session-header-actions`,children:[(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,onClick:we,disabled:I||R,"aria-label":`新建云端会话`,title:`新建云端会话`,children:(0,G.jsx)(Fe,{size:17})}),(0,G.jsx)(`button`,{className:`icon-button tertiary chat-session-mobile-close`,type:`button`,"aria-label":`关闭云端会话历史`,title:`关闭云端会话历史`,onClick:()=>re(!1),children:(0,G.jsx)(bt,{size:17})})]})]}),(0,G.jsxs)(`div`,{className:`chat-session-list`,role:`list`,children:[P&&(0,G.jsxs)(`div`,{className:`chat-session-skeleton`,role:`status`,"aria-label":`正在同步云端会话`,children:[(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{})]}),!P&&!a.length&&(0,G.jsx)(`p`,{className:`chat-sidebar-empty`,children:`还没有云端会话`}),a.map(e=>{let t=v8(e.state);return(0,G.jsxs)(`div`,{className:`chat-session-item${e.id===c?` active`:``}${t===`running`?` running`:``}`,role:`listitem`,children:[(0,G.jsxs)(`button`,{className:`chat-session-main`,type:`button`,onClick:()=>{ae.current=e.id,l(e.id),V(e.error),re(!1)},children:[(0,G.jsx)(`strong`,{children:e.title}),t&&(0,G.jsx)(`span`,{className:`session-status ${t}`,"aria-label":t===`running`?`运行中`:t===`waiting_input`?`等待输入`:`运行失败`})]}),(0,G.jsx)(`button`,{className:`chat-session-delete`,type:`button`,"aria-label":`删除会话 ${e.title}`,title:`删除会话`,disabled:H===e.id,onClick:()=>ke(e.id),children:(0,G.jsx)(ht,{size:15})})]},e.id)})]})]}),(0,G.jsx)(`button`,{className:`chat-session-backdrop`,type:`button`,"aria-label":`关闭云端会话历史`,onClick:()=>re(!1)}),(0,G.jsxs)(`div`,{className:`chat-conversation`,children:[(0,G.jsxs)(`header`,{className:`chat-conversation-header`,children:[(0,G.jsx)(`button`,{className:`icon-button tertiary chat-session-mobile-trigger`,type:`button`,"aria-label":`打开云端会话历史`,title:`云端会话历史`,"aria-expanded":U,onClick:()=>re(!0),children:(0,G.jsx)(Ge,{size:17})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h1`,{children:n}),(0,G.jsxs)(`span`,{children:[`云端 Agent · `,t]})]})]}),(0,G.jsxs)(`div`,{ref:ie,className:`chat-message-list`,role:`log`,"aria-live":`polite`,"aria-busy":I||R,children:[!c&&!P&&(0,G.jsxs)(`div`,{className:`chat-empty`,children:[(0,G.jsx)(`span`,{className:`chat-empty-icon`,children:(0,G.jsx)(N,{})}),(0,G.jsx)(`h2`,{children:`开始一段云端会话`})]}),(B||v8(a.find(e=>e.id===c)?.state||``)===`failed`)&&(0,G.jsxs)(`div`,{className:`cloud-chat-run-warning`,children:[(0,G.jsx)(at,{size:15}),(0,G.jsx)(`span`,{children:B||a.find(e=>e.id===c)?.error||`这次云端运行未完成;可新建会话后重试。若持续失败,请到可观测页面按会话查看记录。`}),B&&(0,G.jsx)(`button`,{className:`text-button`,type:`button`,"aria-label":`重试这条消息`,onClick:Oe,children:`重试`})]}),u.map(e=>(0,G.jsxs)(`article`,{className:`message ${e.role}${e.pending?` pending`:``}${e.streaming?` streaming`:``}`,children:[(0,G.jsx)(`div`,{className:`message-meta`,children:e.role===`user`?`你`:n}),(0,G.jsx)(`div`,{className:`message-content`,children:(0,G.jsx)(CP,{remarkPlugins:[DL,e8],children:e.content||`…`})})]},e.id)),(0,G.jsx)(T8,{items:f,streaming:R}),je&&(0,G.jsxs)(`article`,{className:`message assistant streaming`,"aria-label":`云端流式回复`,children:[(0,G.jsx)(`div`,{className:`message-meta`,children:n}),(0,G.jsx)(`div`,{className:`message-content`,children:(0,G.jsx)(CP,{remarkPlugins:[DL,e8],children:je})})]}),(I||R)&&!je&&f.length===0&&(0,G.jsxs)(`div`,{className:`cloud-chat-pending`,children:[(0,G.jsx)(Ne,{size:15,className:`animate-spin`}),` 正在等待云端响应…`]})]}),(0,G.jsxs)(`div`,{className:`chat-composer-wrap`,children:[m.length>0&&(0,G.jsxs)(`div`,{className:`chat-pending-interactions`,role:`region`,"aria-label":`待处理确认`,"data-ui":`interaction-tray`,children:[(0,G.jsxs)(`div`,{className:`chat-pending-interactions-heading`,children:[(0,G.jsx)(at,{size:16}),(0,G.jsx)(`strong`,{children:`等待你的确认`}),(0,G.jsx)(`span`,{children:`处理后将继续当前云端对话`})]}),m.map(e=>(0,G.jsxs)(`div`,{className:`cloud-interaction-card`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:e.kind===`approval`?`工具操作需要批准`:e.title}),(0,G.jsx)(`span`,{children:e.title})]}),(0,G.jsxs)(`div`,{className:`cloud-interaction-actions`,children:[e.kind===`approval`&&(0,G.jsxs)(`button`,{className:`secondary-button`,type:`button`,disabled:!!te,onClick:()=>Ae(e,`reject`),children:[(0,G.jsx)(bt,{size:15}),`拒绝`]}),(0,G.jsxs)(`button`,{className:`primary-button`,type:`button`,disabled:!!te,onClick:()=>Ae(e,e.kind===`approval`?`approve`:`submit`),children:[(0,G.jsx)(ot,{size:15}),e.kind===`approval`?`允许执行`:`提交`]})]})]},e.id))]}),(0,G.jsx)(b6,{input:_,placeholder:D===`plan`?`描述需要云端 Agent 规划的任务…`:`发送到云端 Agent`,disabled:!r||I||R,active:r,attachments:y.map((e,t)=>({id:`${t}:${e.name}:${e.size}`,name:e.name,kind:e.type.startsWith(`image/`)?`image`:e.type.startsWith(`text/`)?`text`:`file`,size:e.size})),mode:D,approvalMode:T,models:x.map(e=>({id:e.id,label:e.label,reasoningEfforts:t8(e)})),model:C,reasoningEffort:k,commandIndex:j,canSend:!!(_.trim()||y.length),attachmentAccept:``,attachmentLimit:8,onInputChange:v,onFiles:e=>{let t=e.find(e=>e.size>10485760);t&&J(`附件过大`,`${t.name} 超过 10 MB 限制`,`error`),b(t=>{let n=e.filter(e=>e.size<=10485760);return t.length+n.length>8&&J(`附件过多`,`每轮最多上传 8 个附件`,`error`),[...t,...n].slice(0,8)})},onRemoveAttachment:e=>{let t=Number(e.split(`:`,1)[0]);b(e=>e.filter((e,n)=>n!==t))},onSetMode:Ee,onStartGoal:()=>De(`goal`),onApprovalModeChange:e=>{E(e),localStorage.setItem(Z3(t),e)},onModelChange:w,onReasoningEffortChange:A,onCommandSelect:De,onCommandIndexChange:M,onSend:()=>{Te()}}),(0,G.jsx)(`p`,{className:`chat-composer-disclaimer`,children:`AI 生成内容可能不准确,请核对关键结论与工具操作。`})]})]})]})}function D8(e){return e<=1023?`compact`:e<=1439?`laptop`:e<=1919?`desktop`:`wide`}function O8(){let[e,t]=(0,s.useState)(()=>D8(window.innerWidth));return(0,s.useEffect)(()=>{let e=()=>t(D8(window.innerWidth));return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),e}var k8=`agentkit-studio-theme`,A8=`(prefers-color-scheme: dark)`;function j8(e){return e===`light`||e===`dark`||e===`system`?e:`light`}function M8(e,t){return e===`system`?t?`dark`:`light`:e}function N8(){try{return j8(window.localStorage.getItem(k8))}catch{return`light`}}function P8(){return typeof window<`u`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches}function F8(e){let t=document.documentElement;t.classList.toggle(`dark`,e===`dark`),t.dataset.theme=e,t.style.colorScheme=e}function I8(){let e=N8();return F8(M8(e,P8())),e}function L8(){let[e,t]=(0,s.useState)(N8),[n,r]=(0,s.useState)(P8),i=M8(e,n);return(0,s.useEffect)(()=>{let e=window.matchMedia(A8),t=()=>r(e.matches);return t(),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]),(0,s.useLayoutEffect)(()=>{F8(i)},[i]),{preference:e,resolvedTheme:i,setPreference:(0,s.useCallback)(e=>{t(e);try{window.localStorage.setItem(k8,e)}catch{}},[])}}var R8=`agentkit.studio.rail-expanded`,z8=[{group:`创作`,items:[{id:`agents`,label:`Agent`,icon:N},{id:`conversations`,label:`会话`,icon:Le}]},{group:`资源`,items:[{id:`resources`,label:`工程资源`,icon:F},{id:`runtime-resources`,label:`运行资源`,icon:rt},{id:`plugins`,label:`插件`,icon:Ze,beta:!0}]},{group:`交付与运行`,items:[{id:`builds`,label:`构建`,icon:He},{id:`deployments`,label:`部署`,icon:de},{id:`automations`,label:`自动化`,icon:ue,beta:!0},{id:`orchestration`,label:`编排`,icon:vt,beta:!0},{id:`observability`,label:`可观测`,icon:B},{id:`evaluations`,label:`评测`,icon:le,beta:!0}]}];function B8(){try{let e=window.localStorage.getItem(R8);return e===null?null:e===`true`}catch{return null}}function V8(e){try{window.localStorage.setItem(R8,String(e))}catch{}}function H8(e,t,n){return t===e.id&&(e.id!==`resources`||e.kind==null||e.kind===n)||(t===`agent-detail`||t===`create`)&&e.id===`agents`}function U8({label:e,children:t}){return(0,G.jsxs)(Xv,{children:[(0,G.jsx)(Zv,{asChild:!0,children:t}),(0,G.jsx)(Qv,{children:(0,G.jsxs)($v,{className:`studio-tooltip`,side:`right`,sideOffset:8,children:[e,(0,G.jsx)(ey,{className:`studio-tooltip-arrow`})]})})]})}function W8({view:e,resourceKind:t,expanded:n,workspaceName:r,workspacePath:i,runtimeReady:a,onNavigate:o,extensionItems:s=[],activeExtensionPath:c=``,onNavigateExtension:l=()=>void 0,onOpenSettings:u}){return(0,G.jsx)(Yv,{delayDuration:320,skipDelayDuration:120,children:(0,G.jsxs)(`aside`,{className:`sidebar navigation-rail`,"data-state":n?`expanded`:`compact`,children:[(0,G.jsxs)(`div`,{className:`product`,children:[(0,G.jsx)(`span`,{className:`product-mark`,"aria-hidden":`true`,children:`K`}),(0,G.jsxs)(`span`,{className:`product-copy`,children:[(0,G.jsx)(`strong`,{children:`AgentKit`}),(0,G.jsx)(`span`,{children:`Studio`})]})]}),(0,G.jsx)(U8,{label:i,children:(0,G.jsxs)(`button`,{className:`workspace-switcher`,type:`button`,"aria-label":`${r} 工作区`,"aria-disabled":!a,children:[(0,G.jsx)(`span`,{className:`workspace-mark`,children:(0,G.jsx)(Ee,{size:16})}),(0,G.jsx)(`span`,{className:`workspace-copy`,children:(0,G.jsx)(`strong`,{children:r})})]})}),(0,G.jsxs)(`nav`,{className:`primary-nav`,"aria-label":`产品导航`,children:[z8.map(r=>(0,G.jsxs)(`div`,{className:`nav-group`,children:[(0,G.jsx)(`div`,{className:`nav-label`,children:r.group}),r.items.map(r=>{let i=r.icon,a=H8(r,e,t),s=(0,G.jsxs)(`button`,{className:`nav-item${a?` active`:``}`,type:`button`,"aria-label":r.label,"aria-current":a?`page`:void 0,onClick:()=>o(r.id,r.id===`resources`?r.kind||t:r.kind),children:[(0,G.jsx)(i,{size:18}),(0,G.jsx)(`span`,{children:r.label}),r.beta&&(0,G.jsx)(`span`,{className:`nav-beta-badge`,title:`Beta`,children:`Beta`})]},`${r.id}-${r.label}`);return n?s:(0,G.jsx)(U8,{label:r.label,children:s},`${r.id}-${r.label}`)})]},r.group)),s.length>0&&(0,G.jsxs)(`div`,{className:`nav-group`,"data-testid":`dsh-extension-navigation`,children:[(0,G.jsx)(`div`,{className:`nav-label`,children:`插件`}),s.map(t=>{let r=e===`extension`&&c===t.path,i=(0,G.jsxs)(`button`,{className:`nav-item${r?` active`:``}`,type:`button`,"aria-label":t.label,"aria-current":r?`page`:void 0,onClick:()=>l(t),children:[(0,G.jsx)($e,{size:18}),(0,G.jsx)(`span`,{children:t.label})]},t.id);return n?i:(0,G.jsx)(U8,{label:t.label,children:i},t.id)})]})]}),(0,G.jsxs)(`div`,{className:`sidebar-footer`,children:[(0,G.jsx)(U8,{label:`本地用户`,children:(0,G.jsx)(`span`,{className:`user-avatar`,"aria-label":`本地用户`,children:`A`})}),(0,G.jsx)(U8,{label:`设置`,children:(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`设置`,onClick:u,children:(0,G.jsx)(it,{size:16})})})]})]})})}function G8({currentAgentId:e,registry:t=qB.contributions,route:n}){let r=t.getEntries(Wz.workspaceTab).find(e=>e.id===n.workspaceTabId);if(!r)return(0,G.jsxs)(`section`,{className:`empty-state`,role:`status`,children:[(0,G.jsx)(`h2`,{children:`插件页面不可用`}),(0,G.jsx)(`p`,{children:`对应的 DSH workspace tab 已停用或卸载。`})]});let i=r.component;return(0,G.jsx)(i,{active:!0,currentAgentId:e,path:n.path})}var K8={agents:`Agent`,create:`创建 Agent`,"agent-detail":`Agent 配置`,conversations:`会话`,resources:`工程资源`,builds:`构建`,deployments:`部署`,observability:`可观测`,evaluations:`评测`,"runtime-resources":`运行资源`,plugins:`已安装插件`,automations:`自动化`,orchestration:`任务编排`,extension:`插件`},q8=Object.keys(K8),J8=[`model`,`tool`,`mcp`,`skill`],Y8=new Set([`conversations`,`builds`,`observability`,`automations`,`orchestration`]),X8=`agentkit-studio:chat-target:v1`;function Z8(){try{return e5(window.localStorage.getItem(X8)||``)}catch{return{kind:``,id:``}}}function Q8(e){try{window.localStorage.setItem(X8,e)}catch{}}function $8(e){let t=e.replace(/^#\/?/,``).split(`/`).filter(Boolean),n=t[0]===`agents`&&t[1]&&t[2]===`edit`?decodeURIComponent(t[1]):``,r=t[0]===`agents`&&t[1]&&!t[2]?decodeURIComponent(t[1]):``,i=t[0]===`evaluations`&&t[1]?decodeURIComponent(t[1]):``,a=t[0],o=t[0]===`extensions`&&t[1]?`/extensions/${decodeURIComponent(t[1])}`:``,s=n?`create`:r?`agent-detail`:o?`extension`:q8.includes(a)?a:`agents`;return{view:s,resourceKind:s===`resources`&&J8.includes(t[1])?t[1]:`model`,editingAgentId:n,detailAgentId:r,evaluationRunId:i,extensionPath:o}}function e5(e){let t=e.indexOf(`:`);if(t<=0)return{kind:``,id:``};let n=e.slice(0,t);return n!==`cloud`&&n!==`local`?{kind:``,id:``}:{kind:n,id:e.slice(t+1)}}function t5(e,t,n){return e===`extension`&&!n.some(e=>e.path===t)}function n5(){let e=O8(),t=L8(),n=$8(window.location.hash),[r,i]=(0,s.useState)(n.view),[a,o]=(0,s.useState)(n.evaluationRunId),[c,l]=(0,s.useState)(n.extensionPath),[u,d]=(0,s.useState)(n.resourceKind),[f,p]=(0,s.useState)([]),[m,h]=(0,s.useState)(!1),[_,v]=(0,s.useState)(n.detailAgentId||n.editingAgentId||``),[y,b]=(0,s.useState)(``),[x,S]=(0,s.useState)(n.detailAgentId),[C,w]=(0,s.useState)(n.editingAgentId),[T,E]=(0,s.useState)(null),[D,O]=(0,s.useState)(!1),[k,A]=(0,s.useState)(!1),[j,M]=(0,s.useState)(!1),[P,F]=(0,s.useState)(`general`),[I,L]=(0,s.useState)(r===`conversations`),[R,z]=(0,s.useState)([]),[B,V]=(0,s.useState)(!1),[H,ee]=(0,s.useState)(()=>{let e=Z8();return e.kind===`cloud`?e.id:``}),[te,ne]=(0,s.useState)(!1),[U,re]=(0,s.useState)(0),[ie,ae]=(0,s.useState)(B8),oe=Kz(qB.contributions,Wz.sidebarNavigation),se=Kz(qB.contributions,Wz.route);(0,s.useEffect)(()=>{UU.refresh().catch(e=>{console.warn(`DSH Profile client graph was not activated`,e)})},[]),(0,s.useEffect)(()=>(document.body.classList.toggle(`create-mode`,r===`create`),()=>document.body.classList.remove(`create-mode`)),[r]),(0,s.useEffect)(()=>{let e=()=>{let e=$8(window.location.hash);i(e.view),d(e.resourceKind),w(e.editingAgentId),S(e.detailAgentId),o(e.evaluationRunId),l(e.extensionPath),(e.editingAgentId||e.detailAgentId)&&v(e.editingAgentId||e.detailAgentId),e.view===`conversations`&&L(!0)};return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[]);function ce(e){i(e),e===`conversations`&&L(!0),e!==`create`&&w(``),o(``),e!==`extension`&&l(``);let t=e===`resources`?`#/resources/${u}`:`#/${e}`;window.location.hash!==t&&window.history.pushState(null,``,t)}function le(e){i(`evaluations`),o(e),window.history.pushState(null,``,`#/evaluations/${encodeURIComponent(e)}`)}function ue(){o(``),window.history.pushState(null,``,`#/evaluations`)}let de=(0,s.useCallback)(async()=>{try{let e=(await g(`/api/v1/agents?limit=100`).then(e=>e.json())).items||[],t=await Promise.all(e.map(e=>g(`/api/v1/agents/${encodeURIComponent(e.metadata.id)}`).then(e=>e.ok?e.json():null).catch(()=>null))),n=e.map((e,n)=>({...e,builds:t[n]?.builds||[]}));p(n),v(e=>n.some(t=>t.metadata.id===e)?e:n[0]?.metadata.id||``)}catch{}finally{h(!0)}},[]);(0,s.useEffect)(()=>{de()},[de,U]);let W=(0,s.useCallback)(async()=>{try{let[e,t]=await Promise.all([g(`/api/v1/deployments`),g(`/api/v1/cloud-agents?size=100`)]);if(!e.ok)return;let n=await e.json(),r=t.ok?await t.json():{items:[]},i=n.items||[],a=r.items||[],o=[...new Set(i.flatMap(e=>e.agentId?.trim()?[e.agentId.trim()]:[]))],s=await Promise.all(o.map(e=>Promise.resolve().then(()=>g(`/api/v1/cloud-agents/${encodeURIComponent(e)}`)).then(async e=>e.ok?await e.json():null).catch(()=>null))),c=new Map(a.map(e=>[e.agentId,e]));for(let e of s)e?.agentId&&c.set(e.agentId,{...c.get(e.agentId),...e});let l=UV(i,[...c.values()]);z(l),ee(e=>l.some(t=>t.id===e&&BV(t).kind===`studio-session-events`)?e:``)}catch{}finally{V(!0)}},[]);(0,s.useEffect)(()=>{W()},[W,U]),(0,s.useEffect)(()=>{g(`/api/v1/system/bootstrap`).then(e=>e.json()).then(e=>{E(e.workspace||null),O(!!e.workspace)}).catch(()=>O(!1)).finally(()=>A(!0))},[U]);let fe=f.find(e=>e.metadata.id===_),pe=k?D?`ready`:`failed`:`pending`,me=k?D?`运行正常`:`连接失败`:`检查中`;function he(e){e&&(v(e),r===`automations`&&y&&b(e),r===`conversations`&&L(!0))}let ge=R.filter(e=>BV(e).kind===`studio-session-events`),_e=ge.find(e=>e.id===H),ve=r===`conversations`&&!!_e;(0,s.useEffect)(()=>{r!==`conversations`||!m||!B||(_e?Q8(`cloud:${_e.id}`):fe&&Q8(`local:${fe.metadata.id}`))},[m,B,fe,_e,r]),(0,s.useEffect)(()=>{if(r!==`conversations`||!I||!m||!B||_||fe||_e)return;let e=ge[0];e&&(ee(e.id),ne(!1))},[m,I,B,_,fe,_e,ge,r]);let ye=[...f.map(e=>({value:`local:${e.metadata.id}`,label:`本地 · ${e.metadata.name}`})),...ge.map(e=>({value:`cloud:${e.id}`,label:`云端 · ${e.agentName||e.agentId}`}))],be=_e?`cloud:${_e.id}`:_?`local:${_}`:``;function xe(e){let{kind:t,id:n}=e5(e);if(t===`cloud`&&n){if(!ge.some(e=>e.id===n))return;ee(n),ne(!1),L(!0);return}t===`local`&&n&&(ee(``),he(n))}function Se(e){let t=fe||f[0],n=_e||ge[0];e?(ee(``),v(e)):!e&&_e?v(``):t?(ee(``),v(t.metadata.id)):n?(v(``),ee(n.id),ne(!1)):(v(``),ee(``)),L(!0),ce(`conversations`)}function Ce(e){BV(e).kind===`studio-session-events`&&(z(t=>t.some(t=>t.id===e.id)?t:[...t,e]),ee(e.id),ne(!1),L(!0),ce(`conversations`))}function we(e){w(``),S(e),v(e),i(`agent-detail`);let t=`#/agents/${encodeURIComponent(e)}`;window.location.hash!==t&&window.history.pushState(null,``,t)}function Te(){w(``),ce(`create`)}function Ee(e){w(e),v(e),i(`create`);let t=`#/agents/${encodeURIComponent(e)}/edit`;window.location.hash!==t&&window.history.pushState(null,``,t)}function De(e){d(e),i(`resources`);let t=`#/resources/${e}`;window.location.hash!==t&&window.history.pushState(null,``,t)}let Oe=r===`create`||r===`agent-detail`?`Agent`:null,ke=r===`create`&&C?`编辑 Agent`:K8[r],Ae=T?.name||`Workspace`,je=T?.path||(D?`本地工作区`:`正在连接本地工作区`),Me=r===`create`||r===`conversations`||r===`observability`,Ne=e!==`compact`,Pe=Ne&&(ie??!0);function Fe(){if(!Ne)return;let e=!Pe;ae(e),V8(e)}function Ie(e,t){e===`conversations`?Se():e===`resources`?De(t||`model`):(e===`automations`&&b(``),ce(e))}function Le(e){if(!se.find(t=>t.path===e))return;i(`extension`),l(e),o(``);let t=`#/extensions/${encodeURIComponent(e.replace(/^\/extensions\//,``))}`;window.location.hash!==t&&window.history.pushState(null,``,t)}let Re=se.find(e=>e.path===c);return(0,s.useEffect)(()=>{t5(r,c,se)&&(l(``),i(`agents`),window.history.replaceState(null,``,`#/agents`))},[c,se,r]),(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`a`,{className:`skip-link`,href:`#mainContent`,children:`跳到主要内容`}),(0,G.jsxs)(`div`,{className:`app-shell`,"data-view":r,"data-viewport":e,"data-focused":Me,"data-rail":Pe?`expanded`:`compact`,children:[(0,G.jsx)(W8,{view:r,resourceKind:u,expanded:Pe,workspaceName:Ae,workspacePath:je,runtimeReady:D,onNavigate:Ie,extensionItems:oe,activeExtensionPath:c,onNavigateExtension:e=>Le(e.path),onOpenSettings:()=>{F(`general`),M(!0)}}),(0,G.jsxs)(`div`,{className:`app-main`,children:[(0,G.jsxs)(`header`,{className:`global-header${Oe?` nested`:``}`,"aria-label":`当前页面`,children:[Ne&&(0,G.jsx)(`button`,{className:`icon-button tertiary rail-toggle`,type:`button`,"aria-label":Pe?`收起导航`:`展开导航`,title:Pe?`收起导航`:`展开导航`,onClick:Fe,children:Pe?(0,G.jsx)(We,{size:16}):(0,G.jsx)(Ge,{size:16})}),Oe&&(0,G.jsxs)(`div`,{className:`header-identity-inline`,"aria-label":`当前位置`,children:[(0,G.jsx)(`button`,{className:`crumb`,type:`button`,onClick:()=>ce(`agents`),children:Oe}),(0,G.jsx)(`span`,{className:`crumb-sep`,children:`/`}),r===`agent-detail`&&fe&&(0,G.jsx)(Ct,{name:fe.metadata.name,appearance:fe.metadata.appearance,template:fe.metadata.labels?.[`agentkit.ksyun.com/template`],size:`sm`}),(0,G.jsx)(`h1`,{children:r===`agent-detail`&&fe?fe.metadata.name:ke}),r===`agent-detail`&&fe&&(0,G.jsxs)(`span`,{className:`mono`,children:[fe.metadata.id,` · r`,fe.metadata.revision||1]})]}),!Oe&&(0,G.jsxs)(`div`,{className:`header-identity`,children:[(0,G.jsxs)(`span`,{children:[`工作区 · `,Ae]}),r===`conversations`?(0,G.jsx)(`strong`,{children:ke}):(0,G.jsx)(`h1`,{children:ke})]}),(0,G.jsxs)(`div`,{className:`header-actions`,children:[(0,G.jsx)(`div`,{id:`pageHeaderTools`,className:`page-header-tools`,"data-testid":`page-header-tools`}),r===`conversations`?(0,G.jsx)(Fh,{className:`header-agent-selector conversation-target-selector`,ariaLabel:`切换会话目标`,value:be,placeholder:`选择会话目标`,options:ye,onValueChange:xe}):Y8.has(r)&&(0,G.jsx)(Fh,{className:`header-agent-selector`,ariaLabel:`切换当前 Agent`,value:_,placeholder:`未选择`,options:f.map(e=>({value:e.metadata.id,label:e.metadata.name})),onValueChange:he}),r!==`conversations`&&(0,G.jsx)(`span`,{className:`tag`,children:ve?`云端部署`:`本地`}),(0,G.jsx)(`span`,{className:`badge`,"data-state":pe,children:me}),(0,G.jsx)(`button`,{className:`icon-button tertiary global-refresh-button`,type:`button`,"aria-label":`刷新`,title:`刷新`,onClick:()=>re(e=>e+1),children:(0,G.jsx)(et,{size:16})}),r===`conversations`&&I&&_&&!ve&&(0,G.jsx)(`button`,{className:`icon-button tertiary conversation-run-detail`,type:`button`,"aria-label":`运行详情`,title:`运行详情`,onClick:()=>ne(e=>!e),children:(0,G.jsx)(Ke,{size:16})}),(0,G.jsx)(`div`,{id:`pageHeaderActions`,className:`page-header-page-actions`,"data-testid":`page-header-actions`})]})]}),(0,G.jsxs)(`main`,{id:`mainContent`,children:[(0,G.jsxs)(`div`,{className:`chat-wrap`,"data-layout":`workbench`,style:{display:r===`conversations`?`flex`:`none`},children:[(0,G.jsxs)(`div`,{className:`chat-host`,children:[I&&ve&&_e&&(0,G.jsx)(E8,{deploymentId:_e.id,agentId:_e.agentId||`Agent`,agentName:_e.agentName||_e.agentId||`云端 Agent`,active:r===`conversations`,refreshTick:U},_e.id),I&&!ve&&_&&(0,G.jsx)(Z6,{agentId:_,agentName:fe?.metadata.name||`Agent`,agentAppearance:fe?.metadata.appearance,active:r===`conversations`,refreshTick:U,onConfigureAgent:()=>Ee(_),onOpenSettings:()=>{F(`credentials`),M(!0)}},_),I&&!ve&&!_&&(0,G.jsxs)(`div`,{className:`empty-state chat-agent-empty`,role:`status`,children:[(0,G.jsx)(`span`,{className:`empty-icon`,children:(0,G.jsx)(N,{})}),(0,G.jsx)(`h2`,{children:m&&B?`还没有可用的会话目标`:`正在载入会话目标`}),(0,G.jsx)(`p`,{children:m&&B?`可以创建本地 Agent,或在云端 Agent 页面选择受支持的 Agent。`:`正在同步本地工作区与账号云端 Agent…`}),m&&B&&(0,G.jsxs)(`div`,{className:`empty-actions`,children:[(0,G.jsx)(`button`,{className:`primary-button`,type:`button`,onClick:Te,children:`创建本地 Agent`}),(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:()=>ce(`deployments`),children:`查看云端 Agent`})]})]})]}),te&&I&&_&&!ve&&(0,G.jsx)(J3,{agentId:_,onClose:()=>ne(!1),onOpenTrace:()=>ce(`observability`)})]}),(0,G.jsxs)(`div`,{style:{display:r===`conversations`?`none`:void 0},children:[r===`agents`&&(0,G.jsx)(Lh,{agents:f,runtimeReady:D,runtimeChecked:k,workspaceName:T?.name||``,onCreate:Te,onDetail:we,onChat:Se,onBuild:()=>ce(`builds`),onChanged:de}),r===`create`&&(0,G.jsx)(lV,{editingAgentId:C||void 0,viewportMode:e,onAgentsChanged:de,onBack:()=>C?we(C):ce(`agents`),onCreated:(e,t)=>{w(``),de(),e&&t?Se(e):e?we(e):ce(`agents`)}}),r===`agent-detail`&&x&&(0,G.jsx)(AV,{agentId:x,onBack:()=>ce(`agents`),onChat:Se,onBuild:()=>ce(`builds`),onEdit:Ee,onChanged:de}),r===`resources`&&(0,G.jsx)(wz,{kind:u,onKindChange:De,refreshTick:U}),r===`builds`&&(0,G.jsx)(LV,{currentAgentId:_,agents:f,onSelectAgent:v,onCreate:Te}),r===`deployments`&&(0,G.jsx)(bH,{onCreate:Te,onOpenChat:Ce,onSelectBuild:()=>ce(`builds`)}),r===`observability`&&(0,G.jsx)(MU,{refreshTick:U}),r===`evaluations`&&!a&&(0,G.jsx)(Y2,{refreshTick:U,onOpenRun:le}),r===`evaluations`&&a&&(0,G.jsx)(Q2,{runId:a,onBack:ue}),r===`runtime-resources`&&(0,G.jsx)(BU,{refreshTick:U,onOpenResources:De}),r===`plugins`&&(0,G.jsx)(iW,{}),r===`automations`&&(0,G.jsx)(wV,{currentAgentId:_,agents:f,onSelectAgent:v,scopedAgentId:y}),r===`orchestration`&&(0,G.jsx)(z2,{currentAgentId:_,agents:f,onSelectAgent:v,onCreate:Te}),r===`extension`&&Re&&(0,G.jsx)(G8,{currentAgentId:_,route:Re})]})]})]}),j&&(0,G.jsx)(r4,{themePreference:t.preference,onThemePreferenceChange:t.setPreference,initialSection:P,onClose:()=>M(!1)}),(0,G.jsx)(P_,{})]})]})}async function r5(){I8();try{await _()}catch{}(0,c.createRoot)(document.getElementById(`root`)).render((0,G.jsx)(s.StrictMode,{children:(0,G.jsx)(n5,{})}))}r5(); \ No newline at end of file diff --git a/ksadk/studio/static/assets/index-CYekR2Xv.js b/ksadk/studio/static/assets/index-CYekR2Xv.js deleted file mode 100644 index 3ed8e256..00000000 --- a/ksadk/studio/static/assets/index-CYekR2Xv.js +++ /dev/null @@ -1,260 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PrismRenderer-IYN-ffww.js","assets/rolldown-runtime-hePW80VL.js","assets/react-vendor-BNmTiJ-I.js"])))=>i.map(i=>d[i]); -import{n as e,r as t,t as n}from"./rolldown-runtime-hePW80VL.js";import{i as r,n as i,r as a,t as o}from"./react-vendor-BNmTiJ-I.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var s=t(r(),1),c=i(),l=`modulepreload`,u=function(e){return`/static/`+e},d={},f=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=u(t,n),t=s(t),t in d)return;d[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:l,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},p=``,m=window.fetch.bind(window);function h(e){return e.startsWith(`/api/v1/`)||e===`/v1/responses`||e.startsWith(`/v1/responses/`)}async function g(e,t={}){let n=String(t.method||(e instanceof Request?e.method:`GET`)).toUpperCase(),r=new URL(e instanceof Request?e.url:String(e),window.location.href),i=new Headers(t.headers||(e instanceof Request?e.headers:void 0));p&&r.origin===window.location.origin&&h(r.pathname)&&![`GET`,`HEAD`,`OPTIONS`].includes(n)&&i.set(`X-CSRF-Token`,p);let a=e instanceof Request?e.clone():e,o={...t,headers:i,credentials:t.credentials||`same-origin`},s=await m(e,o);if(s.status!==403||[`GET`,`HEAD`,`OPTIONS`].includes(n)||r.origin!==window.location.origin||!h(r.pathname))return s;let c=``;try{c=(await s.clone().json())?.error?.code||``}catch{return s}if(c!==`CSRF_TOKEN_INVALID`)return s;let l=await m(`/api/v1/system/bootstrap`,{credentials:`same-origin`});return!l.ok||(p=(await l.json()).csrfToken||``,!p)?s:(i.set(`X-CSRF-Token`,p),m(a,{...o,headers:i}))}async function _(){let e=window.location.hash.match(/(?:^#|&)session=([^&]+)/);if(e){let t=await m(`/api/v1/system/session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:decodeURIComponent(e[1])}),credentials:`same-origin`});if(!t.ok)throw Error(`本地 Studio 会话已失效,请重新启动服务。`);p=(await t.json()).csrfToken||``,window.history.replaceState(null,``,`${window.location.pathname}${window.location.search}`);return}let t=await m(`/api/v1/system/bootstrap`,{credentials:`same-origin`});t.ok&&(p=(await t.json()).csrfToken||``)}var v=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),y=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),b=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),x=e=>{let t=b(e);return t.charAt(0).toUpperCase()+t.slice(1)},S={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},C=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},w=(0,s.createContext)({}),T=()=>(0,s.useContext)(w),E=(0,s.forwardRef)(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...c},l)=>{let{size:u=24,strokeWidth:d=2,absoluteStrokeWidth:f=!1,color:p=`currentColor`,className:m=``}=T()??{},h=r??f?Number(n??d)*24/Number(t??u):n??d;return(0,s.createElement)(`svg`,{ref:l,...S,width:t??u??S.width,height:t??u??S.height,stroke:e??p,strokeWidth:h,className:v(`lucide`,m,i),...!a&&!C(c)&&{"aria-hidden":`true`},...c},[...o.map(([e,t])=>(0,s.createElement)(e,t)),...Array.isArray(a)?a:[a]])}),D=(e,t)=>{let n=(0,s.forwardRef)(({className:n,...r},i)=>(0,s.createElement)(E,{ref:i,iconNode:t,className:v(`lucide-${y(x(e))}`,`lucide-${e}`,n),...r}));return n.displayName=x(e),n},O=D(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),k=D(`archive`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8`,key:`1s80jp`}],[`path`,{d:`M10 12h4`,key:`a56b0p`}]]),A=D(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),j=D(`arrow-right`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),M=D(`book-open`,[[`path`,{d:`M12 5v16`,key:`1f6ucr`}],[`path`,{d:`M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z`,key:`1fyvmf`}]]),N=D(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),P=D(`boxes`,[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`,key:`lc1i9w`}],[`path`,{d:`m7 16.5-4.74-2.85`,key:`1o9zyk`}],[`path`,{d:`m7 16.5 5-3`,key:`va8pkn`}],[`path`,{d:`M7 16.5v5.17`,key:`jnp8gn`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`,key:`8zsnat`}],[`path`,{d:`m17 16.5-5-3`,key:`8arw3v`}],[`path`,{d:`m17 16.5 4.74-2.85`,key:`8rfmw`}],[`path`,{d:`M17 16.5v5.17`,key:`k6z78m`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`,key:`1xygjf`}],[`path`,{d:`M12 8 7.26 5.15`,key:`1vbdud`}],[`path`,{d:`m12 8 4.74-2.85`,key:`3rx089`}],[`path`,{d:`M12 13.5V8`,key:`1io7kd`}]]),F=D(`braces`,[[`path`,{d:`M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1`,key:`ezmyqa`}],[`path`,{d:`M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1`,key:`e1hn23`}]]),I=D(`brain-circuit`,[[`path`,{d:`M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z`,key:`l5xja`}],[`path`,{d:`M9 13a4.5 4.5 0 0 0 3-4`,key:`10igwf`}],[`path`,{d:`M6.003 5.125A3 3 0 0 0 6.401 6.5`,key:`105sqy`}],[`path`,{d:`M3.477 10.896a4 4 0 0 1 .585-.396`,key:`ql3yin`}],[`path`,{d:`M6 18a4 4 0 0 1-1.967-.516`,key:`2e4loj`}],[`path`,{d:`M12 13h4`,key:`1ku699`}],[`path`,{d:`M12 18h6a2 2 0 0 1 2 2v1`,key:`105ag5`}],[`path`,{d:`M12 8h8`,key:`1lhi5i`}],[`path`,{d:`M16 8V5a2 2 0 0 1 2-2`,key:`u6izg6`}],[`circle`,{cx:`16`,cy:`13`,r:`.5`,key:`ry7gng`}],[`circle`,{cx:`18`,cy:`3`,r:`.5`,key:`1aiba7`}],[`circle`,{cx:`20`,cy:`21`,r:`.5`,key:`yhc1fs`}],[`circle`,{cx:`20`,cy:`8`,r:`.5`,key:`1e43v0`}]]),L=D(`brain`,[[`path`,{d:`M12 18V5`,key:`adv99a`}],[`path`,{d:`M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4`,key:`1e3is1`}],[`path`,{d:`M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5`,key:`1gqd8o`}],[`path`,{d:`M17.997 5.125a4 4 0 0 1 2.526 5.77`,key:`iwvgf7`}],[`path`,{d:`M18 18a4 4 0 0 0 2-7.464`,key:`efp6ie`}],[`path`,{d:`M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517`,key:`1gq6am`}],[`path`,{d:`M6 18a4 4 0 0 1-2-7.464`,key:`k1g0md`}],[`path`,{d:`M6.003 5.125a4 4 0 0 0-2.526 5.77`,key:`q97ue3`}]]),R=D(`chart-spline`,[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`,key:`c24i48`}],[`path`,{d:`M7 16c.5-2 1.5-7 4-7 2 0 2 3 4 3 2.5 0 4.5-5 5-7`,key:`lw07rv`}]]),z=D(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),B=D(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),V=D(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),H=D(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),ee=D(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),U=D(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),te=D(`circle-check-big`,[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),W=D(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),ne=D(`circle-dot`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}]]),re=D(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),G=D(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),ie=D(`clipboard-check`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`m9 14 2 2 4-4`,key:`df797q`}]]),ae=D(`clock-3`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6h4`,key:`135r8i`}]]),oe=D(`cloud-upload`,[[`path`,{d:`M12 13v8`,key:`1l5pq0`}],[`path`,{d:`M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242`,key:`1pljnt`}],[`path`,{d:`m8 17 4-4 4 4`,key:`1quai1`}]]),se=D(`code-xml`,[[`path`,{d:`m18 16 4-4-4-4`,key:`1inbqp`}],[`path`,{d:`m6 8-4 4 4 4`,key:`15zrgr`}],[`path`,{d:`m14.5 4-5 16`,key:`e7oirm`}]]),ce=D(`code`,[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]),le=D(`coins`,[[`path`,{d:`M13.744 17.736a6 6 0 1 1-7.48-7.48`,key:`bq4yh3`}],[`path`,{d:`M15 6h1v4`,key:`11y1tn`}],[`path`,{d:`m6.134 14.768.866-.5 2 3.464`,key:`17snzx`}],[`circle`,{cx:`16`,cy:`8`,r:`6`,key:`14bfc9`}]]),ue=D(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),de=D(`corner-down-left`,[[`path`,{d:`M20 4v7a4 4 0 0 1-4 4H4`,key:`6o5b7l`}],[`path`,{d:`m9 10-5 5 5 5`,key:`1kshq7`}]]),fe=D(`cpu`,[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]),pe=D(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),me=D(`ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]),he=D(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),ge=D(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),_e=D(`file-box`,[[`path`,{d:`M14 2v5a1 1 0 001 1h5`,key:`9v5fu7`}],[`path`,{d:`M14.692 22H18a2 2 0 002-2V8a2.4 2.4 0 00-.706-1.706l-3.588-3.588A2.4 2.4 0 0014 2H6a2 2 0 00-2 2v3.804`,key:`1ne0j7`}],[`path`,{d:`M2.264 13.752 7 16.5l4.737-2.748`,key:`t73mg3`}],[`path`,{d:`M2.995 13.014A2 2 0 002 14.744v3.516a2 2 0 00.996 1.73l3 1.74a2 2 0 002.008 0l3-1.74A2 2 0 0012 18.26v-3.517a2 2 0 00-.995-1.73l-3-1.742a2 2 0 00-1.892-.064z`,key:`h4qck`}],[`path`,{d:`M7 16.5V22`,key:`1i1gou`}]]),ve=D(`file-code-corner`,[[`path`,{d:`M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35`,key:`1wthlu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m5 16-3 3 3 3`,key:`331omg`}],[`path`,{d:`m9 22 3-3-3-3`,key:`lsp7cz`}]]),ye=D(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),be=D(`file-up`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`m15 15-3-3-3 3`,key:`15xj92`}]]),xe=D(`folder-closed`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}],[`path`,{d:`M2 10h20`,key:`1ir3d8`}]]),Se=D(`folder`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),Ce=D(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),we=D(`git-branch`,[[`path`,{d:`M15 6a9 9 0 0 0-9 9V3`,key:`1cii5b`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}]]),Te=D(`hand`,[[`path`,{d:`M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2`,key:`1fvzgz`}],[`path`,{d:`M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2`,key:`1kc0my`}],[`path`,{d:`M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8`,key:`10h0bg`}],[`path`,{d:`M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15`,key:`1s1gnw`}]]),Ee=D(`image-plus`,[[`path`,{d:`M16 5h6`,key:`1vod17`}],[`path`,{d:`M19 2v6`,key:`4bpg5p`}],[`path`,{d:`M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5`,key:`1ue2ih`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}]]),De=D(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),Oe=D(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]),ke=D(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),Ae=D(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),je=D(`message-square-plus`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}],[`path`,{d:`M12 8v6`,key:`1ib9pf`}],[`path`,{d:`M9 11h6`,key:`1fldmi`}]]),Me=D(`message-square`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}]]),Ne=D(`messages-square`,[[`path`,{d:`M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z`,key:`1n2ejm`}],[`path`,{d:`M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1`,key:`1qfcsi`}]]),Pe=D(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]),Fe=D(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),Ie=D(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),Le=D(`network`,[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`4q2zg0`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`8cvhb9`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`,key:`1egb70`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`,key:`1jsf9p`}],[`path`,{d:`M12 12V8`,key:`2874zd`}]]),Re=D(`package-check`,[[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`path`,{d:`m16 17 2 2 4-4`,key:`uh5qu3`}],[`path`,{d:`M21 11.127V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.729l7 4a2 2 0 0 0 2 .001l1.32-.753`,key:`kpkbpo`}],[`path`,{d:`M3.29 7 12 12l8.71-5`,key:`19ckod`}],[`path`,{d:`m7.5 4.27 8.997 5.148`,key:`9yrvtv`}]]),ze=D(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),Be=D(`panel-left-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]]),Ve=D(`panel-left-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m14 9 3 3-3 3`,key:`8010ee`}]]),He=D(`panel-right`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}]]),Ue=D(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),We=D(`pause`,[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]),Ge=D(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),Ke=D(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),qe=D(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),Je=D(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),Ye=D(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),Xe=D(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),Ze=D(`server-cog`,[[`path`,{d:`m10.852 14.772-.383.923`,key:`11vil6`}],[`path`,{d:`M13.148 14.772a3 3 0 1 0-2.296-5.544l-.383-.923`,key:`1v3clb`}],[`path`,{d:`m13.148 9.228.383-.923`,key:`t2zzyc`}],[`path`,{d:`m13.53 15.696-.382-.924a3 3 0 1 1-2.296-5.544`,key:`1bxfiv`}],[`path`,{d:`m14.772 10.852.923-.383`,key:`k9m8cz`}],[`path`,{d:`m14.772 13.148.923.383`,key:`1xvhww`}],[`path`,{d:`M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5`,key:`tn8das`}],[`path`,{d:`M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5`,key:`1g2pve`}],[`path`,{d:`M6 18h.01`,key:`uhywen`}],[`path`,{d:`M6 6h.01`,key:`1utrut`}],[`path`,{d:`m9.228 10.852-.923-.383`,key:`1wtb30`}],[`path`,{d:`m9.228 13.148-.923.383`,key:`1a830x`}]]),Qe=D(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),$e=D(`shield-alert`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),et=D(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),tt=D(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]),nt=D(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]),rt=D(`square-pen`,[[`path`,{d:`M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`,key:`1m0v6g`}],[`path`,{d:`M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z`,key:`ohrbg2`}]]),it=D(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),at=D(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),ot=D(`target`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`6`,key:`1vlfrh`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]),st=D(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),ct=D(`text-wrap`,[[`path`,{d:`m16 16-3 3 3 3`,key:`117b85`}],[`path`,{d:`M3 12h14.5a1 1 0 0 1 0 7H13`,key:`18xa6z`}],[`path`,{d:`M3 19h6`,key:`1ygdsz`}],[`path`,{d:`M3 5h18`,key:`1u36vt`}]]),lt=D(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),ut=D(`undo-2`,[[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}],[`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11`,key:`f3b9sd`}]]),dt=D(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),ft=D(`workflow`,[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`,key:`by2w9f`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`,key:`xkn7yn`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`,key:`1cgmvn`}]]),pt=D(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),mt=D(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),ht=D(`zap`,[[`path`,{d:`M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z`,key:`1v7up4`}]]),K=o(),gt={bot:N,sparkles:nt,search:Ye,code:se,workflow:Le};function _t({name:e,appearance:t,template:n,size:r=`md`,className:i=``}){let a=gt[t?.icon||(n===`research`?`search`:`bot`)],o={"--agent-avatar-color":t?.color||(n===`research`?`#2d7c68`:`#426ea8`)};return(0,K.jsx)(`span`,{className:`agent-avatar agent-avatar-${r}${i?` ${i}`:``}`,style:o,role:`img`,"aria-label":`${e}头像`,children:t?.imageUrl?(0,K.jsx)(`img`,{src:t.imageUrl,alt:``,draggable:!1}):(0,K.jsx)(a,{"aria-hidden":!0,size:r===`lg`?22:r===`xs`?12:16})})}var vt=Object.defineProperty,yt=(e,t)=>vt(e,`name`,{value:t,configurable:!0}),bt=!!(typeof window<`u`&&window.document&&window.document.createElement);function q(e,t,{checkForDefaultPrevented:n=!0}={}){return yt(function(r){if(e?.(r),n===!1||!r||!r.defaultPrevented)return t?.(r)},`handleEvent`)}yt(q,`composeEventHandlers`);function xt(e){if(!bt)throw Error(`Cannot access window outside of the DOM`);return e?.ownerDocument?.defaultView??window}yt(xt,`getOwnerWindow`);function St(e){if(!bt)throw Error(`Cannot access document outside of the DOM`);return e?.ownerDocument??document}yt(St,`getOwnerDocument`);function Ct(e,t=!1){let{activeElement:n}=St(e);if(!n?.nodeName)return null;if(wt(n)&&n.contentDocument)return Ct(n.contentDocument.body,t);if(t){let e=n.getAttribute(`aria-activedescendant`);if(e){let t=St(n).getElementById(e);if(t)return t}}return n}yt(Ct,`getActiveElement`);function wt(e){return e.tagName===`IFRAME`}yt(wt,`isFrame`);var Tt=Object.defineProperty,Et=(e,t)=>Tt(e,`name`,{value:t,configurable:!0});function Dt(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}Et(Dt,`setRef`);function Ot(...e){return t=>{let n=!1,r=e.map(e=>{let r=Dt(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;tAt(e,`name`,{value:t,configurable:!0});function Mt(e,t){let n=s.createContext(t);n.displayName=e+`Context`;let r=jt(e=>{let{children:t,...r}=e,i=s.useMemo(()=>r,Object.values(r));return(0,K.jsx)(n.Provider,{value:i,children:t})},`Provider`);r.displayName=e+`Provider`;function i(r,i={}){let{optional:a=!1}=i,o=s.useContext(n);if(o)return o;if(t!==void 0)return t;if(!a)throw Error(`\`${r}\` must be used within \`${e}\``)}return jt(i,`useContext`),[r,i]}jt(Mt,`createContext`);function Nt(e,t=[]){let n=[];function r(t,r){let i=s.createContext(r);i.displayName=t+`Context`;let a=n.length;n=[...n,r];let o=jt(t=>{let{scope:n,children:r,...o}=t,c=n?.[e]?.[a]||i,l=s.useMemo(()=>o,Object.values(o));return(0,K.jsx)(c.Provider,{value:l,children:r})},`Provider`);o.displayName=t+`Provider`;function c(n,o,c={}){let{optional:l=!1}=c,u=o?.[e]?.[a]||i,d=s.useContext(u);if(d)return d;if(r!==void 0)return r;if(!l)throw Error(`\`${n}\` must be used within \`${t}\``)}return jt(c,`useContext`),[o,c]}jt(r,`createContext`);let i=jt(()=>{let t=n.map(e=>s.createContext(e));return jt(function(n){let r=n?.[e]||t;return s.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])},`useScope`)},`createScope`);return i.scopeName=e,[r,Pt(i,...t)]}jt(Nt,`createContextScope`);function Pt(...e){let t=e[0];if(e.length===1)return t;let n=jt(()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return jt(function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return s.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])},`useComposedScopes`)},`createScope`);return n.scopeName=t.scopeName,n}jt(Pt,`composeContextScopes`);var Ft=globalThis?.document?s.useLayoutEffect:()=>{},It=Object.defineProperty,Lt=(e,t)=>It(e,`name`,{value:t,configurable:!0}),Rt=s.useId||(()=>void 0),zt=0;function Bt(e){let[t,n]=s.useState(Rt());return Ft(()=>{e||n(e=>e??String(zt++))},[e]),e||(t?`radix-${t}`:``)}Lt(Bt,`useId`);var Vt=Object.defineProperty,Ht=(e,t)=>Vt(e,`name`,{value:t,configurable:!0}),Ut=s.useEffectEvent,Wt=s.useInsertionEffect;function Gt(e){if(typeof Ut==`function`)return Ut(e);let t=s.useRef(()=>{throw Error(`Cannot call an event handler while rendering.`)});return typeof Wt==`function`?Wt(()=>{t.current=e}):Ft(()=>{t.current=e}),s.useMemo(()=>((...e)=>t.current?.(...e)),[])}Ht(Gt,`useEffectEvent`);var Kt=Object.defineProperty,qt=(e,t)=>Kt(e,`name`,{value:t,configurable:!0}),Jt=s.useInsertionEffect||Ft;function Yt({prop:e,defaultProp:t,onChange:n=qt(()=>{},`onChange`),caller:r}){let[i,a,o]=Xt({defaultProp:t,onChange:n}),c=e!==void 0;return[c?e:i,s.useCallback(t=>{if(c){let n=Zt(t)?t(e):t;n!==e&&o.current?.(n)}else a(t)},[c,e,a,o])]}qt(Yt,`useControllableState`);function Xt({defaultProp:e,onChange:t}){let[n,r]=s.useState(e),i=s.useRef(n),a=s.useRef(t);return Jt(()=>{a.current=t},[t]),s.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}qt(Xt,`useUncontrolledState`);function Zt(e){return typeof e==`function`}qt(Zt,`isFunction`);var Qt=Symbol(`RADIX:SYNC_STATE`);function $t(e,t,n,r){let{prop:i,defaultProp:a,onChange:o,caller:c}=t,l=i!==void 0,u=Gt(o),d=[{...n,state:a}];r&&d.push(r);let[f,p]=s.useReducer((t,n)=>{if(n.type===Qt)return{...t,state:n.state};let r=e(t,n);return l&&!Object.is(r.state,t.state)&&u(r.state),r},...d),m=f.state,h=s.useRef(m);s.useEffect(()=>{h.current!==m&&(h.current=m,l||u(m))},[m,h,l]);let g=s.useMemo(()=>i===void 0?f:{...f,state:i},[f,i]);return s.useEffect(()=>{l&&!Object.is(i,f.state)&&p({type:Qt,state:i})},[i,f.state,l]),[g,p]}qt($t,`useControllableStateReducer`);var en=t(a(),1),tn=Object.defineProperty,nn=(e,t)=>tn(e,`name`,{value:t,configurable:!0});function rn(e){let t=s.forwardRef((t,n)=>{let{children:r,...i}=t,a=null,o=!1,c=[];fn(r)&&typeof gn==`function`&&(r=gn(r._payload)),s.Children.forEach(r,e=>{if(un(e)){o=!0;let t=e,n=`child`in t.props?t.props.child:t.props.children;fn(n)&&typeof gn==`function`&&(n=gn(n._payload)),a=sn(t,n),c.push(a?.props?.children)}else c.push(e)}),a?a=s.cloneElement(a,void 0,c):!o&&s.Children.count(r)===1&&s.isValidElement(r)&&(a=r);let l=a?ln(a):void 0,u=kt(n,l);if(!a){if(r||r===0)throw Error(o?hn(e):mn(e));return r}let d=cn(i,a.props??{});return a.type!==s.Fragment&&(d.ref=n?u:l),s.cloneElement(a,d)});return t.displayName=`${e}.Slot`,t}nn(rn,`createSlot`);var an=Symbol.for(`radix.slottable`);function on(e){let t=nn(e=>`child`in e?e.children(e.child):e.children,`Slottable`);return t.displayName=`${e}.Slottable`,t.__radixId=an,t}nn(on,`createSlottable`);var sn=nn((e,t)=>{if(`child`in e.props){let t=e.props.child;return s.isValidElement(t)?s.cloneElement(t,void 0,e.props.children(t.props.children)):null}return s.isValidElement(t)?t:null},`getSlottableElementFromSlottable`);function cn(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}nn(cn,`mergeProps`);function ln(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}nn(ln,`getElementRef`);function un(e){return s.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===an}nn(un,`isSlottable`);var dn=Symbol.for(`react.lazy`);function fn(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===dn&&`_payload`in e&&pn(e._payload)}nn(fn,`isLazyComponent`);function pn(e){return typeof e==`object`&&!!e&&`then`in e}nn(pn,`isPromiseLike`);var mn=nn(e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,`createSlotError`),hn=nn(e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,`createSlottableError`),gn=s.use,_n=Object.defineProperty,vn=(e,t)=>_n(e,`name`,{value:t,configurable:!0}),yn=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=rn(`Primitive.${t}`),r=s.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,K.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function bn(e,t){e&&en.flushSync(()=>e.dispatchEvent(t))}vn(bn,`dispatchDiscreteCustomEvent`);var xn=Object.defineProperty,Sn=(e,t)=>xn(e,`name`,{value:t,configurable:!0});function Cn(e){let t=s.useRef(e);return s.useEffect(()=>{t.current=e}),s.useMemo(()=>((...e)=>t.current?.(...e)),[])}Sn(Cn,`useCallbackRef`);var wn=Object.defineProperty,Tn=(e,t)=>wn(e,`name`,{value:t,configurable:!0}),En=`dismissableLayer.update`,Dn=`dismissableLayer.pointerDownOutside`,On=`dismissableLayer.focusOutside`,kn,An=s.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),jn=s.forwardRef(Tn(function(e,t){let{disableOutsidePointerEvents:n=!1,deferPointerDownOutside:r=!1,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:o,onInteractOutside:c,onDismiss:l,...u}=e,d=s.useContext(An),[f,p]=s.useState(null),m=f?.ownerDocument??globalThis?.document,[,h]=s.useState({}),g=kt(t,p),_=Array.from(d.layers),[v]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),y=v?_.indexOf(v):-1,b=f?_.indexOf(f):-1,x=d.layersWithOutsidePointerEventsDisabled.size>0,S=b>=y,C=s.useRef(!1),w=Pn(e=>{a?.(e),c?.(e),e.defaultPrevented||l?.()},{ownerDocument:m,deferPointerDownOutside:r,isDeferredPointerDownOutsideRef:C,dismissableSurfaces:d.dismissableSurfaces,shouldHandlePointerDownOutside:s.useCallback(e=>{if(!(e instanceof Node))return!1;let t=[...d.branches].some(t=>t.contains(e));return S&&!t},[d.branches,S])}),T=Fn(e=>{if(r&&C.current)return;let t=e.target;[...d.branches].some(e=>e.contains(t))||(o?.(e),c?.(e),e.defaultPrevented||l?.())},m),E=f?b===_.length-1:!1,D=Cn(e=>{e.key===`Escape`&&(i?.(e),!e.defaultPrevented&&l&&(e.preventDefault(),l()))});return s.useEffect(()=>{if(E)return m.addEventListener(`keydown`,D,{capture:!0}),()=>m.removeEventListener(`keydown`,D,{capture:!0})},[m,E,D]),s.useEffect(()=>{if(f)return n&&(d.layersWithOutsidePointerEventsDisabled.size===0&&(kn=m.body.style.pointerEvents,m.body.style.pointerEvents=`none`),d.layersWithOutsidePointerEventsDisabled.add(f)),d.layers.add(f),In(),()=>{n&&(d.layersWithOutsidePointerEventsDisabled.delete(f),d.layersWithOutsidePointerEventsDisabled.size===0&&(m.body.style.pointerEvents=kn))}},[f,m,n,d]),s.useEffect(()=>()=>{f&&(d.layers.delete(f),d.layersWithOutsidePointerEventsDisabled.delete(f),In())},[f,d]),s.useEffect(()=>{let e=Tn(()=>h({}),`handleUpdate`);return document.addEventListener(En,e),()=>document.removeEventListener(En,e)},[]),(0,K.jsx)(yn.div,{...u,ref:g,style:{pointerEvents:x?S?`auto`:`none`:void 0,...e.style},onFocusCapture:q(e.onFocusCapture,T.onFocusCapture),onBlurCapture:q(e.onBlurCapture,T.onBlurCapture),onPointerDownCapture:q(e.onPointerDownCapture,w.onPointerDownCapture)})},`DismissableLayer`));function Mn(){let e=s.useContext(An),[t,n]=s.useState(null);return s.useEffect(()=>{if(t)return e.dismissableSurfaces.add(t),()=>{e.dismissableSurfaces.delete(t)}},[t,e.dismissableSurfaces]),n}Tn(Mn,`useDismissableLayerSurface`);var Nn=Tn(()=>!0,`IS_TRUE`);function Pn(e,t){let{ownerDocument:n=globalThis?.document,deferPointerDownOutside:r=!1,isDeferredPointerDownOutsideRef:i,dismissableSurfaces:a,shouldHandlePointerDownOutside:o=Nn}=t,c=Cn(e),l=s.useRef(!1),u=s.useRef(!1),d=s.useRef(new Map),f=s.useRef(()=>{});return s.useEffect(()=>{function e(){u.current=!1,i.current=!1,d.current.clear()}Tn(e,`resetOutsideInteraction`);function t(){return Array.from(d.current.values()).some(Boolean)}Tn(t,`isOutsideInteractionIntercepted`);function s(e){if(!u.current)return;let t=e.target;t instanceof Node&&[...a].some(e=>e.contains(t))||d.current.set(e.type,!0),e.type===`click`&&window.setTimeout(()=>{u.current&&f.current()},0)}Tn(s,`handleInteractionCapture`);function p(e){u.current&&d.current.set(e.type,!1)}Tn(p,`handleInteractionBubble`);let m=Tn(a=>{if(a.target&&!l.current){let s=function(){n.removeEventListener(`click`,f.current);let r=t();e(),r||Ln(Dn,c,p,{discrete:!0})};if(Tn(s,`handleAndDispatchPointerDownOutsideEvent`),!o(a.target)){n.removeEventListener(`click`,f.current),e(),l.current=!1;return}let p={originalEvent:a};u.current=!0,i.current=r&&a.button===0,d.current.clear(),!r||a.button!==0?s():(n.removeEventListener(`click`,f.current),f.current=s,n.addEventListener(`click`,f.current,{once:!0}))}else n.removeEventListener(`click`,f.current),e();l.current=!1},`handlePointerDown`),h=[`pointerup`,`mousedown`,`mouseup`,`touchstart`,`touchend`,`click`];for(let e of h)n.addEventListener(e,s,!0),n.addEventListener(e,p);let g=window.setTimeout(()=>{n.addEventListener(`pointerdown`,m)},0);return()=>{window.clearTimeout(g),n.removeEventListener(`pointerdown`,m),n.removeEventListener(`click`,f.current);for(let e of h)n.removeEventListener(e,s,!0),n.removeEventListener(e,p)}},[n,c,r,i,a,o]),{onPointerDownCapture:Tn(()=>l.current=!0,`onPointerDownCapture`)}}Tn(Pn,`usePointerDownOutside`);function Fn(e,t=globalThis?.document){let n=Cn(e),r=s.useRef(!1);return s.useEffect(()=>{let e=Tn(e=>{e.target&&!r.current&&Ln(On,n,{originalEvent:e},{discrete:!1})},`handleFocus`);return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:Tn(()=>r.current=!0,`onFocusCapture`),onBlurCapture:Tn(()=>r.current=!1,`onBlurCapture`)}}Tn(Fn,`useFocusOutside`);function In(){let e=new CustomEvent(En);document.dispatchEvent(e)}Tn(In,`dispatchUpdate`);function Ln(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?bn(i,a):i.dispatchEvent(a)}Tn(Ln,`handleAndDispatchCustomEvent`);var Rn=Object.defineProperty,zn=(e,t)=>Rn(e,`name`,{value:t,configurable:!0}),Bn=`focusScope.autoFocusOnMount`,Vn=`focusScope.autoFocusOnUnmount`,Hn={bubbles:!1,cancelable:!0},Un=s.forwardRef(zn(function(e,t){let{loop:n=!1,trapped:r=!1,onMountAutoFocus:i,onUnmountAutoFocus:a,...o}=e,[c,l]=s.useState(null),u=Cn(i),d=Cn(a),f=s.useRef(null),p=kt(t,l),m=s.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;s.useEffect(()=>{if(r){let e=function(e){if(m.paused||!c)return;let t=e.target;c.contains(t)?f.current=t:Xn(f.current,{select:!0})},t=function(e){if(m.paused||!c)return;let t=e.relatedTarget;t!==null&&(c.contains(t)||Xn(f.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&Xn(c)};zn(e,`handleFocusIn`),zn(t,`handleFocusOut`),zn(n,`handleMutations`),document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return c&&r.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,c,m.paused]),s.useEffect(()=>{if(c){Zn.add(m);let e=document.activeElement;if(!c.contains(e)){let t=new CustomEvent(Bn,Hn);c.addEventListener(Bn,u),c.dispatchEvent(t),t.defaultPrevented||(Wn(er(Kn(c)),{select:!0}),document.activeElement===e&&Xn(c))}return()=>{c.removeEventListener(Bn,u),setTimeout(()=>{let t=new CustomEvent(Vn,Hn);c.addEventListener(Vn,d),c.dispatchEvent(t),t.defaultPrevented||Xn(e??document.body,{select:!0}),c.removeEventListener(Vn,d),Zn.remove(m)},0)}}},[c,u,d,m]);let h=s.useCallback(e=>{if(!n&&!r||m.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=Gn(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&Xn(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&Xn(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,m.paused]);return(0,K.jsx)(yn.div,{tabIndex:-1,...o,ref:p,onKeyDown:h})},`FocusScope`));function Wn(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(Xn(r,{select:t}),document.activeElement!==n)return}zn(Wn,`focusFirst`);function Gn(e){let t=Kn(e);return[qn(t,e),qn(t.reverse(),e)]}zn(Gn,`getTabbableEdges`);function Kn(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:zn(e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP},`acceptNode`)});for(;n.nextNode();)t.push(n.currentNode);return t}zn(Kn,`getTabbableCandidates`);function qn(e,t){let n=typeof t.checkVisibility==`function`&&t.checkVisibility({checkVisibilityCSS:!0});for(let r of e)if(!(n?!r.checkVisibility({checkVisibilityCSS:!0}):Jn(r,{upTo:t})))return r}zn(qn,`findVisible`);function Jn(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}zn(Jn,`isHidden`);function Yn(e){return e instanceof HTMLInputElement&&`select`in e}zn(Yn,`isSelectableInput`);function Xn(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&Yn(e)&&t&&e.select()}}zn(Xn,`focus`);var Zn=Qn();function Qn(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=$n(e,t),e.unshift(t)},remove(t){e=$n(e,t),e[0]?.resume()}}}zn(Qn,`createFocusScopesStack`);function $n(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}zn($n,`arrayRemove`);function er(e){return e.filter(e=>e.tagName!==`A`)}zn(er,`removeLinks`);var tr=Object.defineProperty,nr=s.forwardRef(((e,t)=>tr(e,`name`,{value:t,configurable:!0}))(function(e,t){let{container:n,...r}=e,[i,a]=s.useState(!1);Ft(()=>a(!0),[]);let o=n||i&&globalThis?.document?.body;return o?en.createPortal((0,K.jsx)(yn.div,{...r,ref:t}),o):null},`Portal`)),rr=Object.defineProperty,ir=(e,t)=>rr(e,`name`,{value:t,configurable:!0});function ar(e,t){return s.useReducer((e,n)=>t[e][n]??e,e)}ir(ar,`useStateMachine`);var or=ir(e=>{let{present:t,children:n}=e,r=sr(t),i=typeof n==`function`?n({present:r.isPresent}):s.Children.only(n),a=lr(r.ref,dr(i));return typeof n==`function`||r.isPresent?s.cloneElement(i,{ref:a}):null},`Presence`);function sr(e){let[t,n]=s.useState(),r=s.useRef(null),i=s.useRef(e),a=s.useRef(`none`),o=s.useRef(void 0),[c,l]=ar(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return s.useEffect(()=>{c===`mounted`?(a.current=o.current??ur(r.current),o.current=void 0):a.current=`none`},[c]),Ft(()=>{let t=r.current,n=i.current;if(n!==e){let r=a.current,s=ur(t);e?(o.current=s,l(`MOUNT`)):s===`none`||t?.display===`none`?l(`UNMOUNT`):l(n&&r!==s?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,l]),Ft(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,o=ir(a=>{let o=ur(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(l(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},`handleAnimationEnd`),s=ir(e=>{e.target===t&&(a.current=ur(r.current))},`handleAnimationStart`);return t.addEventListener(`animationstart`,s),t.addEventListener(`animationcancel`,o),t.addEventListener(`animationend`,o),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,s),t.removeEventListener(`animationcancel`,o),t.removeEventListener(`animationend`,o)}}l(`ANIMATION_END`)},[t,l]),{isPresent:[`mounted`,`unmountSuspended`].includes(c),ref:s.useCallback(e=>{if(e){let t=getComputedStyle(e);r.current=t,o.current=ur(t)}else r.current=null;n(e)},[])}}ir(sr,`usePresence`);function cr(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}ir(cr,`setRef`);function lr(...e){let t=s.useRef(e);return t.current=e,s.useCallback(e=>{let n=t.current,r=!1,i=n.map(t=>{let n=cr(t,e);return!r&&typeof n==`function`&&(r=!0),n});if(r)return()=>{for(let e=0;efr(e,`name`,{value:t,configurable:!0}),mr=0,hr=null;function gr(e){return _r(),e.children}pr(gr,`FocusGuards`);function _r(){s.useEffect(()=>{hr||={start:vr(),end:vr()};let{start:e,end:t}=hr;return document.body.firstElementChild!==e&&document.body.insertAdjacentElement(`afterbegin`,e),document.body.lastElementChild!==t&&document.body.insertAdjacentElement(`beforeend`,t),mr++,()=>{mr===1&&(hr?.start.remove(),hr?.end.remove(),hr=null),mr=Math.max(0,mr-1)}},[])}pr(_r,`useFocusGuards`);function vr(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}pr(vr,`createFocusGuard`);var yr=function(e,t){return yr=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},yr(e,t)};function br(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Class extends value `+String(t)+` is not a constructor or null`);yr(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var xr=function(){return xr=Object.assign||function(e){for(var t,n=1,r=arguments.length;n`u`)return Yr;var t=Zr(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},$r=Jr(),ei=`data-scroll-locked`,ti=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),` - .${Er} { - overflow: hidden ${r}; - padding-right: ${s}px ${r}; - } - body[${ei}] { - overflow: hidden ${r}; - overscroll-behavior: contain; - ${[t&&`position: relative ${r};`,n===`margin`&&` - padding-left: ${i}px; - padding-top: ${a}px; - padding-right: ${o}px; - margin-left:0; - margin-top:0; - margin-right: ${s}px ${r}; - `,n===`padding`&&`padding-right: ${s}px ${r};`].filter(Boolean).join(``)} - } - - .${wr} { - right: ${s}px ${r}; - } - - .${Tr} { - margin-right: ${s}px ${r}; - } - - .${wr} .${wr} { - right: 0 ${r}; - } - - .${Tr} .${Tr} { - margin-right: 0 ${r}; - } - - body[${ei}] { - ${Dr}: ${s}px; - } -`},ni=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},ri=function(){s.useEffect(function(){return document.body.setAttribute(ei,(ni()+1).toString()),function(){var e=ni()-1;e<=0?document.body.removeAttribute(ei):document.body.setAttribute(ei,e.toString())}},[])},ii=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;ri();var a=s.useMemo(function(){return Qr(i)},[i]);return s.createElement($r,{styles:ti(a,!t,i,n?``:`!important`)})},ai=!1;if(typeof window<`u`)try{var oi=Object.defineProperty({},"passive",{get:function(){return ai=!0,!0}});window.addEventListener(`test`,oi,oi),window.removeEventListener(`test`,oi,oi)}catch{ai=!1}var si=ai?{passive:!1}:!1,ci=function(e){return e.tagName===`TEXTAREA`},li=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!ci(e)&&n[t]===`visible`)},ui=function(e){return li(e,`overflowY`)},di=function(e){return li(e,`overflowX`)},fi=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),hi(e,r)){var i=gi(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},pi=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},mi=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},hi=function(e,t){return e===`v`?ui(t):di(t)},gi=function(e,t){return e===`v`?pi(t):mi(t)},_i=function(e,t){return e===`h`&&t===`rtl`?-1:1},vi=function(e,t,n,r,i){var a=_i(e,window.getComputedStyle(t).direction),o=a*r,s=n.target,c=t.contains(s),l=!1,u=o>0,d=0,f=0;do{if(!s)break;var p=gi(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&hi(e,s)&&(d+=h,f+=m);var g=s.parentNode;s=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&s!==document.body||c&&(t.contains(s)||t===s));return(u&&(i&&Math.abs(d)<1||!i&&o>d)||!u&&(i&&Math.abs(f)<1||!i&&-o>f))&&(l=!0),l},yi=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},bi=function(e){return[e.deltaX,e.deltaY]},xi=function(e){return e&&`current`in e?e.current:e},Si=function(e,t){return e[0]===t[0]&&e[1]===t[1]},Ci=function(e){return` - .block-interactivity-${e} {pointer-events: none;} - .allow-interactivity-${e} {pointer-events: all;} -`},wi=0,Ti=[];function Ei(e){var t=s.useRef([]),n=s.useRef([0,0]),r=s.useRef(),i=s.useState(wi++)[0],a=s.useState(Jr)[0],o=s.useRef(e);s.useEffect(function(){o.current=e},[e]),s.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=Cr([e.lockRef.current],(e.shards||[]).map(xi),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var c=s.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=yi(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=fi(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=fi(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return vi(h,t,e,h===`h`?s:c,!0)},[]),l=s.useCallback(function(e){var n=e;if(!(!Ti.length||Ti[Ti.length-1]!==a)){var r=`deltaY`in n?bi(n):yi(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&Si(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var s=(o.current.shards||[]).map(xi).filter(Boolean).filter(function(e){return e.contains(n.target)});(s.length>0?c(n,s[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),u=s.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:Di(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),d=s.useCallback(function(e){n.current=yi(e),r.current=void 0},[]),f=s.useCallback(function(t){u(t.type,bi(t),t.target,c(t,e.lockRef.current))},[]),p=s.useCallback(function(t){u(t.type,yi(t),t.target,c(t,e.lockRef.current))},[]);s.useEffect(function(){return Ti.push(a),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:p}),document.addEventListener(`wheel`,l,si),document.addEventListener(`touchmove`,l,si),document.addEventListener(`touchstart`,d,si),function(){Ti=Ti.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,l,si),document.removeEventListener(`touchmove`,l,si),document.removeEventListener(`touchstart`,d,si)}},[]);var m=e.removeScrollBar,h=e.inert;return s.createElement(s.Fragment,null,h?s.createElement(a,{styles:Ci(i)}):null,m?s.createElement(ii,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Di(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var Oi=Lr(Rr,Ei),ki=s.forwardRef(function(e,t){return s.createElement(Br,xr({},e,{ref:t,sideCar:Oi}))});ki.classNames=Br.classNames;var Ai=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},ji=new WeakMap,Mi=new WeakMap,Ni={},Pi=0,Fi=function(e){return e&&(e.host||Fi(e.parentNode))},Ii=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=Fi(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},Li=function(e,t,n,r){var i=Ii(t,Array.isArray(e)?e:[e]);Ni[n]||(Ni[n]=new WeakMap);var a=Ni[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(ji.get(e)||0)+1,l=(a.get(e)||0)+1;ji.set(e,c),a.set(e,l),o.push(e),c===1&&i&&Mi.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),Pi++,function(){o.forEach(function(e){var t=ji.get(e)-1,i=a.get(e)-1;ji.set(e,t),a.set(e,i),t||(Mi.has(e)||e.removeAttribute(r),Mi.delete(e)),i||e.removeAttribute(n)}),Pi--,Pi||(ji=new WeakMap,ji=new WeakMap,Mi=new WeakMap,Ni={})}},Ri=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||Ai(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),Li(r,i,n,`aria-hidden`)):function(){return null}},zi=Object.defineProperty,Bi=(e,t)=>zi(e,`name`,{value:t,configurable:!0}),Vi=`Dialog`,[Hi,Ui]=Nt(Vi),[Wi,Gi]=Hi(Vi),Ki=Bi(e=>{let{__scopeDialog:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!0}=e,c=s.useRef(null),l=s.useRef(null),[u,d]=Yt({prop:r,defaultProp:i??!1,onChange:a,caller:Vi}),[f,p]=s.useState(0),[m,h]=s.useState(0);return(0,K.jsx)(Wi,{scope:t,triggerRef:c,contentRef:l,contentId:Bt(),titleId:Bt(),descriptionId:Bt(),titlePresent:f>0,descriptionPresent:m>0,setTitleCount:p,setDescriptionCount:h,open:u,onOpenChange:d,onOpenToggle:s.useCallback(()=>d(e=>!e),[d]),modal:o,children:n})},`Dialog`),qi=`DialogPortal`,[Ji,Yi]=Hi(qi,{forceMount:void 0}),Xi=Bi(e=>{let{__scopeDialog:t,forceMount:n,children:r,container:i}=e,a=Gi(qi,t);return(0,K.jsx)(Ji,{scope:t,forceMount:n,children:s.Children.map(r,e=>(0,K.jsx)(or,{present:n||a.open,children:(0,K.jsx)(nr,{asChild:!0,container:i,children:e})}))})},`DialogPortal`),Zi=`DialogOverlay`,Qi=s.forwardRef(Bi(function(e,t){let n=Yi(Zi,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Gi(Zi,e.__scopeDialog);return a.modal?(0,K.jsx)(or,{present:r||a.open,children:(0,K.jsx)(ea,{...i,ref:t})}):null},`DialogOverlay`)),$i=rn(`DialogOverlay.RemoveScroll`),ea=s.forwardRef(Bi(function(e,t){let{__scopeDialog:n,...r}=e,i=Gi(Zi,n),a=kt(t,Mn());return(0,K.jsx)(ki,{as:$i,allowPinchZoom:!0,shards:[i.contentRef],children:(0,K.jsx)(yn.div,{"data-state":fa(i.open),...r,ref:a,style:{pointerEvents:`auto`,...r.style}})})},`DialogOverlayImpl`)),ta=`DialogContent`,na=s.forwardRef(Bi(function(e,t){let n=Yi(ta,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Gi(ta,e.__scopeDialog);return(0,K.jsx)(or,{present:r||a.open,children:a.modal?(0,K.jsx)(ra,{...i,ref:t}):(0,K.jsx)(ia,{...i,ref:t})})},`DialogContent`)),ra=s.forwardRef(Bi(function(e,t){let n=Gi(ta,e.__scopeDialog),r=s.useRef(null),i=kt(t,n.contentRef,r);return s.useEffect(()=>{let e=r.current;if(e)return Ri(e)},[]),(0,K.jsx)(aa,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,onCloseAutoFocus:q(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:q(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()}),onFocusOutside:q(e.onFocusOutside,e=>e.preventDefault())})},`DialogContentModal`)),ia=s.forwardRef(Bi(function(e,t){let n=Gi(ta,e.__scopeDialog),r=s.useRef(!1),i=s.useRef(!1);return(0,K.jsx)(aa,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})},`DialogContentNonModal`)),aa=s.forwardRef(Bi(function(e,t){let{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,...o}=e,s=Gi(ta,n);return _r(),(0,K.jsx)(K.Fragment,{children:(0,K.jsx)(Un,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,K.jsx)(jn,{role:`dialog`,id:s.contentId,"aria-describedby":s.descriptionPresent?s.descriptionId:void 0,"aria-labelledby":s.titlePresent?s.titleId:void 0,"data-state":fa(s.open),...o,ref:t,deferPointerDownOutside:!0,onDismiss:()=>s.onOpenChange(!1)})})})},`DialogContentImpl`)),oa=`DialogTitle`,sa=s.forwardRef(Bi(function(e,t){let{__scopeDialog:n,...r}=e,i=Gi(oa,n),{setTitleCount:a}=i;return Ft(()=>(a(e=>e+1),()=>a(e=>e-1)),[a]),(0,K.jsx)(yn.h2,{id:i.titleId,...r,ref:t})},`DialogTitle`)),ca=`DialogDescription`,la=s.forwardRef(Bi(function(e,t){let{__scopeDialog:n,...r}=e,i=Gi(ca,n),{setDescriptionCount:a}=i;return Ft(()=>(a(e=>e+1),()=>a(e=>e-1)),[a]),(0,K.jsx)(yn.p,{id:i.descriptionId,...r,ref:t})},`DialogDescription`)),ua=`DialogClose`,da=s.forwardRef(Bi(function(e,t){let{__scopeDialog:n,...r}=e,i=Gi(ua,n);return(0,K.jsx)(yn.button,{type:`button`,...r,ref:t,onClick:q(e.onClick,()=>i.onOpenChange(!1))})},`DialogClose`));function fa(e){return e?`open`:`closed`}Bi(fa,`getState`);var pa=[],ma=new Map,ha=[`.skip-link`,`.sidebar`,`.global-header`,`#mainContent`];function ga(e){if(e){for(let e of document.querySelectorAll(ha.join(`,`)))ma.has(e)||ma.set(e,e.hasAttribute(`inert`)),e.setAttribute(`inert`,``);return}for(let[e,t]of ma)e.isConnected&&!t&&e.removeAttribute(`inert`);ma.clear()}function _a(e){if(e.key!==`Escape`||!pa.length)return;let t=pa[pa.length-1];e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),t.disabled||t.close()}function va(e){return pa.length||(document.addEventListener(`keydown`,_a,!0),ga(!0)),pa.push(e),()=>{let t=pa.lastIndexOf(e);t>=0&&pa.splice(t,1),pa.length||(document.removeEventListener(`keydown`,_a,!0),ga(!1))}}function ya({open:e,onOpenChange:t,closeDisabled:n=!1,children:r}){return(0,K.jsx)(Ki,{open:e,onOpenChange:e=>{!e&&n||t(e)},children:r})}function ba({open:e,className:t,closeDisabled:n=!1,role:r=`dialog`,onRequestClose:i,children:a}){let o=(0,s.useRef)(null),c=(0,s.useRef)({close:i,disabled:n});return c.current.close=i,c.current.disabled=n,(0,s.useEffect)(()=>{if(e)return o.current=document.activeElement instanceof HTMLElement?document.activeElement:null,va(c.current)},[e]),(0,K.jsx)(Xi,{children:(0,K.jsxs)(`div`,{className:`overlay`,children:[(0,K.jsx)(Qi,{className:`overlay-backdrop`}),(0,K.jsx)(na,{className:t,role:r,"aria-busy":n||void 0,onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation()},onPointerDownOutside:e=>{n&&e.preventDefault()},onCloseAutoFocus:e=>{let t=o.current;t?.isConnected&&(e.preventDefault(),t.focus())},children:a})]})})}function xa({open:e,onOpenChange:t,title:n,description:r,icon:i,footer:a,children:o,closeDisabled:s=!1,showClose:c=!0,className:l,role:u=`dialog`}){return(0,K.jsx)(ya,{open:e,onOpenChange:t,closeDisabled:s,children:(0,K.jsxs)(ba,{open:e,className:`studio-dialog${l?` ${l}`:``}`,closeDisabled:s,role:u,onRequestClose:()=>t(!1),children:[i?(0,K.jsx)(`div`,{className:`studio-dialog-icon`,children:i}):null,(0,K.jsxs)(`header`,{className:`studio-dialog-header`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(sa,{children:n}),r?(0,K.jsx)(la,{children:r}):null]}),c?(0,K.jsx)(da,{asChild:!0,children:(0,K.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`关闭`,disabled:s,children:(0,K.jsx)(mt,{size:16})})}):null]}),o?(0,K.jsx)(`div`,{className:`studio-dialog-body`,children:o}):null,a?(0,K.jsx)(`footer`,{className:`studio-dialog-footer`,children:a}):null]})})}function Sa({open:e,onOpenChange:t,title:n,subtitle:r,wide:i=!1,compact:a=!1,closeDisabled:o=!1,footer:s,children:c}){return(0,K.jsx)(ya,{open:e,onOpenChange:t,closeDisabled:o,children:(0,K.jsxs)(ba,{open:e,className:`drawer${i?` wide`:``}${a?` compact`:``}`,closeDisabled:o,onRequestClose:()=>t(!1),children:[(0,K.jsxs)(`header`,{className:`drawer-header`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(sa,{children:n}),r?(0,K.jsx)(la,{children:r}):null]}),(0,K.jsx)(da,{asChild:!0,children:(0,K.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`关闭`,disabled:o,children:(0,K.jsx)(mt,{size:16})})})]}),(0,K.jsx)(`div`,{className:`drawer-body`,children:c}),s?(0,K.jsx)(`footer`,{className:`drawer-footer`,children:s}):null]})})}function Ca({title:e,description:t,confirmText:n=`确认`,danger:r=!0,busy:i=!1,onConfirm:a,onCancel:o}){return(0,K.jsx)(xa,{open:!0,onOpenChange:e=>{!e&&!i&&o()},title:e,description:t,closeDisabled:i,showClose:!1,role:`alertdialog`,className:`confirm-dialog`,icon:(0,K.jsx)(`span`,{className:`confirm-icon${r?` danger`:``}`,style:r?void 0:{background:`var(--accent-soft)`,color:`var(--accent-strong)`},children:r?(0,K.jsx)(U,{size:18}):(0,K.jsx)(De,{size:18})}),footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(da,{asChild:!0,children:(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,disabled:i,children:`取消`})}),(0,K.jsx)(`button`,{className:`button ${r?`danger`:`accent`}`,type:`button`,onClick:a,disabled:i,children:i?`处理中…`:n})]})})}var wa=Object.defineProperty,Ta=(e,t)=>wa(e,`name`,{value:t,configurable:!0});function Ea(e){let t=e+`CollectionProvider`,[n,r]=Nt(t),[i,a]=n(t,{collectionRef:{current:null},itemMap:new Map}),o=Ta(e=>{let{scope:t,children:n}=e,r=s.useRef(null),a=s.useRef(new Map).current;return(0,K.jsx)(i,{scope:t,itemMap:a,collectionRef:r,children:n})},`CollectionProvider`);o.displayName=t;let c=e+`CollectionSlot`,l=rn(c),u=s.forwardRef((e,t)=>{let{scope:n,children:r}=e,i=kt(t,a(c,n).collectionRef);return(0,K.jsx)(l,{ref:i,children:r})});u.displayName=c;let d=e+`CollectionItemSlot`,f=`data-radix-collection-item`,p=rn(d),m=s.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=s.useRef(null),c=kt(t,o),l=a(d,n);return s.useEffect(()=>(l.itemMap.set(o,{ref:o,...i}),()=>void l.itemMap.delete(o))),(0,K.jsx)(p,{[f]:``,ref:c,children:r})});m.displayName=d;function h(t){let n=a(e+`CollectionConsumer`,t);return s.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${f}]`));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])}return Ta(h,`useCollection`),[{Provider:o,Slot:u,ItemSlot:m},h,r]}Ta(Ea,`createCollection`);var Da=new WeakMap,Oa=class e extends Map{static{Ta(this,`OrderedDict`)}#e;constructor(e){super(e),this.#e=[...super.keys()],Da.set(this,!0)}set(e,t){return Da.get(this)&&(this.has(e)?this.#e[this.#e.indexOf(e)]=e:this.#e.push(e)),super.set(e,t),this}insert(e,t,n){let r=this.has(t),i=this.#e.length,a=ja(e),o=a>=0?a:i+a,s=o<0||o>=i?-1:o;if(s===this.size||r&&s===this.size-1||s===-1)return this.set(t,n),this;let c=this.size+ +!r;a<0&&o++;let l=[...this.#e],u,d=!1;for(let e=o;e=this.size&&(r=this.size-1),this.at(r)}keyFrom(e,t){let n=this.indexOf(e);if(n===-1)return;let r=n+t;return r<0&&(r=0),r>=this.size&&(r=this.size-1),this.keyAt(r)}find(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return r;n++}}findIndex(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return n;n++}return-1}filter(t,n){let r=[],i=0;for(let e of this)Reflect.apply(t,n,[e,i,this])&&r.push(e),i++;return new e(r)}map(t,n){let r=[],i=0;for(let e of this)r.push([e[0],Reflect.apply(t,n,[e,i,this])]),i++;return new e(r)}reduce(...e){let[t,n]=e,r=0,i=n??this.at(0);for(let n of this)i=r===0&&e.length===1?n:Reflect.apply(t,this,[i,n,r,this]),r++;return i}reduceRight(...e){let[t,n]=e,r=n??this.at(-1);for(let n=this.size-1;n>=0;n--){let i=this.at(n);r=n===this.size-1&&e.length===1?i:Reflect.apply(t,this,[r,i,n,this])}return r}toSorted(t){let n=[...this.entries()].sort(t);return new e(n)}toReversed(){let t=new e;for(let e=this.size-1;e>=0;e--){let n=this.keyAt(e),r=this.get(n);t.set(n,r)}return t}toSpliced(...t){let n=[...this.entries()];return n.splice(...t),new e(n)}slice(t,n){let r=new e,i=this.size-1;if(t===void 0)return r;t<0&&(t+=this.size),n!==void 0&&n>0&&(i=n-1);for(let e=t;e<=i;e++){let t=this.keyAt(e),n=this.get(t);r.set(t,n)}return r}every(e,t){let n=0;for(let r of this){if(!Reflect.apply(e,t,[r,n,this]))return!1;n++}return!0}some(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return!0;n++}return!1}};function ka(e,t){if(`at`in Array.prototype)return Array.prototype.at.call(e,t);let n=Aa(e,t);return n===-1?void 0:e[n]}Ta(ka,`at`);function Aa(e,t){let n=e.length,r=ja(t),i=r>=0?r:n+r;return i<0||i>=n?-1:i}Ta(Aa,`toSafeIndex`);function ja(e){return e!==e||e===0?0:Math.trunc(e)}Ta(ja,`toSafeInteger`);function Ma(e){let t=e+`CollectionProvider`,[n,r]=Nt(t),[i,a]=n(t,{collectionElement:null,collectionRef:{current:null},collectionRefObject:{current:null},itemMap:new Oa,setItemMap:Ta(()=>void 0,`setItemMap`)}),o=Ta(({state:e,...t})=>e?(0,K.jsx)(l,{...t,state:e}):(0,K.jsx)(c,{...t}),`CollectionProvider`);o.displayName=t;let c=Ta(e=>{let t=g();return(0,K.jsx)(l,{...e,state:t})},`CollectionInit`);c.displayName=t+`Init`;let l=Ta(e=>{let{scope:t,children:n,state:r}=e,a=s.useRef(null),[o,c]=s.useState(null),l=kt(a,c),[u,d]=r;return s.useEffect(()=>{if(!o)return;let e=Ia(()=>{});return e.observe(o,{childList:!0,subtree:!0}),()=>{e.disconnect()}},[o]),(0,K.jsx)(i,{scope:t,itemMap:u,setItemMap:d,collectionRef:l,collectionRefObject:a,collectionElement:o,children:n})},`CollectionProviderImpl`);l.displayName=t+`Impl`;let u=e+`CollectionSlot`,d=rn(u),f=s.forwardRef((e,t)=>{let{scope:n,children:r}=e,i=kt(t,a(u,n).collectionRef);return(0,K.jsx)(d,{ref:i,children:r})});f.displayName=u;let p=e+`CollectionItemSlot`,m=rn(p),h=s.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=s.useRef(null),[c,l]=s.useState(null),u=kt(t,o,l),{setItemMap:d}=a(p,n),f=s.useRef(i);Na(f.current,i)||(f.current=i);let h=f.current;return s.useEffect(()=>{let e=h;return d(t=>c?t.has(c)?t.set(c,{...e,element:c}).toSorted(Fa):(t.set(c,{...e,element:c}),t.toSorted(Fa)):t),()=>{d(e=>!c||!e.has(c)?e:(e.delete(c),new Oa(e)))}},[c,h,d]),(0,K.jsx)(m,{"data-radix-collection-item":``,ref:u,children:r})});h.displayName=p;function g(){return s.useState(new Oa)}Ta(g,`useInitCollection`);function _(t){let{itemMap:n}=a(e+`CollectionConsumer`,t);return n}return Ta(_,`useCollection`),[{Provider:o,Slot:f,ItemSlot:h},{createCollectionScope:r,useCollection:_,useInitCollection:g}]}Ta(Ma,`createCollection`);function Na(e,t){if(e===t)return!0;if(typeof e!=`object`||typeof t!=`object`||e==null||t==null)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||e[r]!==t[r])return!1;return!0}Ta(Na,`shallowEqual`);function Pa(e,t){return!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}Ta(Pa,`isElementPreceding`);function Fa(e,t){return!e[1].element||!t[1].element?0:Pa(e[1].element,t[1].element)?-1:1}Ta(Fa,`sortByDocumentPosition`);function Ia(e){return new MutationObserver(t=>{for(let n of t)if(n.type===`childList`){e();return}})}Ta(Ia,`getChildListObserver`);var La=Object.defineProperty,Ra=(e,t)=>La(e,`name`,{value:t,configurable:!0}),za=s.createContext(void 0);function Ba(e){let t=s.useContext(za);return e||t||`ltr`}Ra(Ba,`useDirection`);var Va=[`top`,`right`,`bottom`,`left`],Ha=Math.min,Ua=Math.max,Wa=Math.round,Ga=Math.floor,Ka=e=>({x:e,y:e}),qa={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function Ja(e,t,n){return Ua(e,Ha(t,n))}function Ya(e,t){return typeof e==`function`?e(t):e}function Xa(e){return e.split(`-`)[0]}function Za(e){return e.split(`-`)[1]}function Qa(e){return e===`x`?`y`:`x`}function $a(e){return e===`y`?`height`:`width`}function eo(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function to(e){return Qa(eo(e))}function no(e,t,n){n===void 0&&(n=!1);let r=Za(e),i=to(e),a=$a(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=fo(o)),[o,fo(o)]}function ro(e){let t=fo(e);return[io(e),t,io(t)]}function io(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var ao=[`left`,`right`],oo=[`right`,`left`],so=[`top`,`bottom`],co=[`bottom`,`top`];function lo(e,t,n){switch(e){case`top`:case`bottom`:return n?t?oo:ao:t?ao:oo;case`left`:case`right`:return t?so:co;default:return[]}}function uo(e,t,n,r){let i=Za(e),a=lo(Xa(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(io)))),a}function fo(e){let t=Xa(e);return qa[t]+e.slice(t.length)}function po(e){return{top:e.top??0,right:e.right??0,bottom:e.bottom??0,left:e.left??0}}function mo(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:po(e)}function ho(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function go(e,t,n){let{reference:r,floating:i}=e,a=eo(t),o=to(t),s=$a(o),c=Xa(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}let m=Za(t);return m&&(p[o]+=f*(m===`end`?1:-1)*(n&&l?-1:1)),p}async function _o(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=Ya(t,e),p=mo(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=ho(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=ho(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var vo=50,yo=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:_o},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=go(l,r,c),f=r,p=0,m={};for(let n=0;n({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=Ya(e,t)||{};if(l==null)return{};let d=mo(u),f={x:n,y:r},p=to(i),m=$a(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=Ha(d[_],T),D=Ha(d[v],T),O=C-h[m]-D,k=C/2-h[m]/2+w,A=Ja(E,k,O),j=!c.arrow&&Za(i)!=null&&k!==A&&a.reference[m]/2-(ke<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(u!==`alignment`||_===eo(t)||T.every(e=>eo(e.placement)!==_||e.overflows[0]>0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=eo(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o}if(r!==n)return{reset:{placement:n}}}return{}}}};function So(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Co(e){return Va.some(t=>e[t]>=0)}var wo=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=Ya(e,t);switch(i){case`referenceHidden`:{let e=So(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:Co(e)}}}case`escaped`:{let e=So(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:Co(e)}}}default:return{}}}}},To=new Set([`left`,`top`]);async function Eo(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=Xa(n),s=Za(n),c=eo(n)===`y`,l=To.has(o)?-1:1,u=a&&c?-1:1,d=Ya(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var Do=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await Eo(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},Oo=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=Ya(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=eo(i),p=Qa(f),m=u[p],h=u[f],g=(e,t)=>Ja(t+d[e===`y`?`top`:`left`],t,t-d[e===`y`?`bottom`:`right`]);o&&(m=g(p,m)),s&&(h=g(f,h));let _=c.fn({...t,[p]:m,[f]:h});return{..._,data:{x:_.x-n,y:_.y-r,enabled:{[p]:o,[f]:s}}}}}},ko=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=Ya(e,t),u={x:n,y:r},d=eo(i),f=Qa(d),p=u[f],m=u[d],h=Ya(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:h.mainAxis??0,crossAxis:h.crossAxis??0};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=To.has(Xa(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);mr&&(m=r)}return{[f]:p,[d]:m}}}},Ao=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){let{placement:n,rects:r,platform:i,elements:a}=t,{apply:o=()=>{},...s}=Ya(e,t),c=await i.detectOverflow(t,s),l=Xa(n),u=Za(n),d=eo(n)===`y`,{width:f,height:p}=r.floating,m,h;l===`top`||l===`bottom`?(m=l,h=u===(await(i.isRTL==null?void 0:i.isRTL(a.floating))?`start`:`end`)?`left`:`right`):(h=l,m=u===`end`?`top`:`bottom`);let g=p-c.top-c.bottom,_=f-c.left-c.right,v=Ha(p-c[m],g),y=Ha(f-c[h],_),b=t.middlewareData.shift,x=!b,S=v,C=y;b!=null&&b.enabled.x&&(C=_),b!=null&&b.enabled.y&&(S=g),x&&!u&&(d?C=f-2*Ua(c.left,c.right):S=p-2*Ua(c.top,c.bottom)),await o({...t,availableWidth:C,availableHeight:S});let w=await i.getDimensions(a.floating);return f!==w.width||p!==w.height?{reset:{rects:!0}}:{}}}};function jo(){return typeof window<`u`}function Mo(e){return Fo(e)?(e.nodeName||``).toLowerCase():`#document`}function No(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Po(e){return((Fo(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Fo(e){return jo()?e instanceof Node||e instanceof No(e).Node:!1}function Io(e){return jo()?e instanceof Element||e instanceof No(e).Element:!1}function Lo(e){return jo()?e instanceof HTMLElement||e instanceof No(e).HTMLElement:!1}function Ro(e){return!jo()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof No(e).ShadowRoot}function zo(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=Xo(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function Bo(e){return/^(table|td|th)$/.test(Mo(e))}function Vo(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var Ho=/transform|translate|scale|rotate|perspective|filter/,Uo=/paint|layout|strict|content/,Wo=e=>!!e&&e!==`none`,Go;function Ko(e){let t=Io(e)?Xo(e):e;return Wo(t.transform)||Wo(t.translate)||Wo(t.scale)||Wo(t.rotate)||Wo(t.perspective)||!Jo()&&(Wo(t.backdropFilter)||Wo(t.filter))||Ho.test(t.willChange||``)||Uo.test(t.contain||``)}function qo(e){let t=Qo(e);for(;Lo(t)&&!Yo(t);){if(Ko(t))return t;if(Vo(t))return null;t=Qo(t)}return null}function Jo(){return Go??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Go}function Yo(e){return/^(html|body|#document)$/.test(Mo(e))}function Xo(e){return No(e).getComputedStyle(e)}function Zo(e){return Io(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Qo(e){if(Mo(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Ro(e)&&e.host||Po(e);return Ro(t)?t.host:t}function $o(e){let t=Qo(e);return Yo(t)?(e.ownerDocument||e).body:Lo(t)&&zo(t)?t:$o(t)}function es(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=$o(e),i=r===e.ownerDocument?.body,a=No(r);if(i){let e=ts(a);return t.concat(a,a.visualViewport||[],zo(r)?r:[],e&&n?es(e):[])}return t.concat(r,es(r,[],n))}function ts(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function ns(e){let t=Xo(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=Lo(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=Wa(n)!==a||Wa(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function rs(e){return Io(e)?e:e.contextElement}function is(e){let t=rs(e);if(!Lo(t))return Ka(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=ns(t),o=(a?Wa(n.width):n.width)/r,s=(a?Wa(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var as=Ka(0);function os(e){let t=No(e);return!Jo()||!t.visualViewport?as:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function ss(e,t,n){return t===void 0&&(t=!1),!!n&&t&&n===No(e)}function cs(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=rs(e),o=Ka(1);t&&(r?Io(r)&&(o=is(r)):o=is(e));let s=ss(a,n,r)?os(a):Ka(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a&&r){let e=No(a),t=Io(r)?No(r):r,n=e,i=ts(n);for(;i&&t!==n;){let e=is(i),t=i.getBoundingClientRect(),r=Xo(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=No(i),i=ts(n)}}return ho({width:u,height:d,x:c,y:l})}function ls(e,t){let n=Zo(e).scrollLeft;return t?t.left+n:cs(Po(e)).left+n}function us(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-ls(e,n),y:n.top+t.scrollTop}}function ds(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=Po(r),s=t?Vo(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=Ka(1),u=Ka(0),d=Lo(r);if((d||!a)&&((Mo(r)!==`body`||zo(o))&&(c=Zo(r)),d)){let e=cs(r);l=is(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?us(o,c):Ka(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function fs(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function ps(e){let t=Zo(e),n=e.ownerDocument.body,r=Ua(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=Ua(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight),a=-t.scrollLeft+ls(e),o=-t.scrollTop;return Xo(n).direction===`rtl`&&(a+=Ua(e.clientWidth,n.clientWidth)-r),{width:r,height:i,x:a,y:o}}var ms=25;function hs(e,t,n){n===void 0&&(n=`viewport`);let r=n===`layoutViewport`,i=No(e),a=Po(e),o=i.visualViewport,s=a.clientWidth,c=a.clientHeight,l=0,u=0;if(o){let e=!Jo()||t===`fixed`;r?e||(l=-o.offsetLeft,u=-o.offsetTop):(s=o.width,c=o.height,e&&(l=o.offsetLeft,u=o.offsetTop))}if(ls(a)<=0){let e=a.ownerDocument,t=e.body,n=getComputedStyle(t),r=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,i=Math.abs(a.clientWidth-t.clientWidth-r),o=getComputedStyle(a).scrollbarGutter===`stable both-edges`?i/2:i;o<=ms&&(s-=o)}return{width:s,height:c,x:l,y:u}}function gs(e,t){let n=cs(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=is(e);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function _s(e,t,n){let r;if(t===`viewport`||t===`layoutViewport`)r=hs(e,n,t);else if(t===`document`)r=ps(Po(e));else if(Io(t))r=gs(t,n);else{let n=os(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return ho(r)}function vs(e,t){let n=t.get(e);if(n)return n;let r=es(e,[],!1).filter(e=>Io(e)&&Mo(e)!==`body`),i=null,a=Xo(e).position===`fixed`,o=a?Qo(e):e;for(;Io(o)&&!Yo(o);){let e=Xo(o),t=Ko(o),n=i?i.position:a?`fixed`:``;!t&&(n===`fixed`||n===`absolute`&&e.position===`static`)?r=r.filter(e=>e!==o):i=e,o=Qo(o)}return t.set(e,r),r}function ys(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Vo(t)?[]:vs(t,this._c):[].concat(n),r],o=_s(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e{s(!1,1e-7)},1e3)}y=!1}try{r=new IntersectionObserver(b,{...v,root:a.ownerDocument})}catch{r=new IntersectionObserver(b,v)}r.observe(e)}let c=No(e),l=()=>s(n);return c.addEventListener(`resize`,l),s(!0),()=>{c.removeEventListener(`resize`,l),o()}}function As(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=rs(e),u=i||a?[...l?es(l):[],...t?es(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n),a&&e.addEventListener(`resize`,n)});let d=l&&s?ks(l,n,a):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?cs(e):null;c&&g();function g(){let t=cs(e);h&&!Os(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var js=Do,Ms=Oo,Ns=xo,Ps=Ao,Fs=wo,Is=bo,Ls=ko,Rs=(e,t,n)=>{let r=new Map,i=n??{},a={...Ds,...i.platform,_c:r};return yo(e,t,{...i,platform:a})},zs=typeof document<`u`?s.useLayoutEffect:function(){};function Bs(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`function`&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e==`object`){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!Bs(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){let n=i[r];if(!(n===`_owner`&&e.$$typeof)&&!Bs(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function Vs(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Hs(e,t){let n=Vs(e);return Math.round(t*n)/n}function Us(e){let t=s.useRef(e);return zs(()=>{t.current=e}),t}function Ws(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:c=!0,whileElementsMounted:l,open:u}=e,[d,f]=s.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,m]=s.useState(r);Bs(p,r)||m(r);let[h,g]=s.useState(null),[_,v]=s.useState(null),y=s.useCallback(e=>{e!==C.current&&(C.current=e,g(e))},[]),b=s.useCallback(e=>{e!==w.current&&(w.current=e,v(e))},[]),x=a||h,S=o||_,C=s.useRef(null),w=s.useRef(null),T=s.useRef(d),E=l!=null,D=Us(l),O=Us(i),k=Us(u),A=s.useCallback(()=>{if(!C.current||!w.current)return;let e={placement:t,strategy:n,middleware:p};O.current&&(e.platform=O.current),Rs(C.current,w.current,e).then(e=>{let t={...e,isPositioned:k.current!==!1};j.current&&!Bs(T.current,t)&&(T.current=t,en.flushSync(()=>{f(t)}))})},[p,t,n,O,k]);zs(()=>{u===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,f(e=>({...e,isPositioned:!1})))},[u]);let j=s.useRef(!1);zs(()=>(j.current=!0,()=>{j.current=!1}),[]),zs(()=>{if(x&&(C.current=x),S&&(w.current=S),x&&S){if(D.current)return D.current(x,S,A);A()}},[x,S,A,D,E]);let M=s.useMemo(()=>({reference:C,floating:w,setReference:y,setFloating:b}),[y,b]),N=s.useMemo(()=>({reference:x,floating:S}),[x,S]),P=s.useMemo(()=>{let e={position:n,left:0,top:0};if(!N.floating)return e;let t=Hs(N.floating,d.x),r=Hs(N.floating,d.y);return c?{...e,transform:`translate(`+t+`px, `+r+`px)`,...Vs(N.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,c,N.floating,d.x,d.y]);return s.useMemo(()=>({...d,update:A,refs:M,elements:N,floatingStyles:P}),[d,A,M,N,P])}var Gs=e=>{function t(e){return{}.hasOwnProperty.call(e,`current`)}return{name:`arrow`,options:e,fn(n){let{element:r,padding:i}=typeof e==`function`?e(n):e;return r&&t(r)?r.current==null?{}:Is({element:r.current,padding:i}).fn(n):r?Is({element:r,padding:i}).fn(n):{}}}},Ks=(e,t)=>{let n=js(e);return{name:n.name,fn:n.fn,options:[e,t]}},qs=(e,t)=>{let n=Ms(e);return{name:n.name,fn:n.fn,options:[e,t]}},Js=(e,t)=>({fn:Ls(e).fn,options:[e,t]}),Ys=(e,t)=>{let n=Ns(e);return{name:n.name,fn:n.fn,options:[e,t]}},Xs=(e,t)=>{let n=Ps(e);return{name:n.name,fn:n.fn,options:[e,t]}},Zs=(e,t)=>{let n=Fs(e);return{name:n.name,fn:n.fn,options:[e,t]}},Qs=(e,t)=>{let n=Gs(e);return{name:n.name,fn:n.fn,options:[e,t]}},$s=Object.defineProperty,ec=s.forwardRef(((e,t)=>$s(e,`name`,{value:t,configurable:!0}))(function(e,t){let{children:n,width:r=10,height:i=5,...a}=e;return(0,K.jsx)(yn.svg,{...a,ref:t,width:r,height:i,viewBox:`0 0 30 10`,preserveAspectRatio:`none`,children:e.asChild?n:(0,K.jsx)(`polygon`,{points:`0,0 30,0 15,10`})})},`Arrow`)),tc=Object.defineProperty,nc=(e,t)=>tc(e,`name`,{value:t,configurable:!0});function rc(e){let[t,n]=s.useState(void 0);return Ft(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=e.offsetWidth,a=e.offsetHeight;n({width:i,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}n(void 0)},[e]),t}nc(rc,`useSize`);var ic=Object.defineProperty,ac=(e,t)=>ic(e,`name`,{value:t,configurable:!0}),oc=`Popper`,[sc,cc]=Nt(oc),[lc,uc]=sc(oc),dc=ac(e=>{let{__scopePopper:t,children:n}=e,[r,i]=s.useState(null),[a,o]=s.useState(void 0);return(0,K.jsx)(lc,{scope:t,anchor:r,onAnchorChange:i,placementState:a,setPlacementState:o,children:n})},`Popper`),fc=`PopperAnchor`,pc=s.forwardRef(ac(function(e,t){let{__scopePopper:n,virtualRef:r,...i}=e,a=uc(fc,n),o=s.useRef(null),c=a.onAnchorChange,l=kt(t,s.useCallback(e=>{o.current=e,e&&c(e)},[c])),u=s.useRef(null);s.useEffect(()=>{if(!r)return;let e=u.current;u.current=r.current,e!==u.current&&c(u.current)});let d=a.placementState&&Cc(a.placementState),f=d?.[0],p=d?.[1];return r?null:(0,K.jsx)(yn.div,{"data-radix-popper-side":f,"data-radix-popper-align":p,...i,ref:l})},`PopperAnchor`)),mc=`PopperContent`,[hc,gc]=sc(mc),_c=s.forwardRef(ac(function(e,t){let{__scopePopper:n,side:r=`bottom`,sideOffset:i=0,align:a=`center`,alignOffset:o=0,arrowPadding:c=0,avoidCollisions:l=!0,collisionBoundary:u=[],collisionPadding:d=0,sticky:f=`partial`,hideWhenDetached:p=!1,updatePositionStrategy:m=`optimized`,onPlaced:h,...g}=e,_=uc(mc,n),[v,y]=s.useState(null),b=kt(t,y),[x,S]=s.useState(null),C=rc(x),w=C?.width??0,T=C?.height??0,E=r+(a===`center`?``:`-`+a),D=typeof d==`number`?d:{top:0,right:0,bottom:0,left:0,...d},O=Array.isArray(u)?u:[u],k=O.length>0,A={padding:D,boundary:O.filter(xc),altBoundary:k},{refs:j,floatingStyles:M,placement:N,isPositioned:P,middlewareData:F}=Ws({strategy:`fixed`,placement:E,whileElementsMounted:ac((...e)=>As(...e,{animationFrame:m===`always`}),`whileElementsMounted`),elements:{reference:_.anchor},middleware:[Ks({mainAxis:i+T,alignmentAxis:o}),l&&qs({mainAxis:!0,crossAxis:!1,limiter:f===`partial`?Js():void 0,...A}),l&&Ys({...A}),Xs({...A,apply:ac(({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--radix-popper-available-width`,`${n}px`),o.setProperty(`--radix-popper-available-height`,`${r}px`),o.setProperty(`--radix-popper-anchor-width`,`${i}px`),o.setProperty(`--radix-popper-anchor-height`,`${a}px`)},`apply`)}),x&&Qs({element:x,padding:c}),Sc({arrowWidth:w,arrowHeight:T}),p&&Zs({strategy:`referenceHidden`,...A,boundary:k?A.boundary:void 0})]}),I=_.setPlacementState;Ft(()=>(I(N),()=>{I(void 0)}),[N,I]);let[L,R]=Cc(N),z=Cn(h);Ft(()=>{P&&z?.()},[P,z]);let B=F.arrow?.x,V=F.arrow?.y,H=F.arrow?.centerOffset!==0,[ee,U]=s.useState();return Ft(()=>{v&&U(window.getComputedStyle(v).zIndex)},[v]),(0,K.jsx)(`div`,{ref:j.setFloating,"data-radix-popper-content-wrapper":``,style:{...M,transform:P?M.transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:ee,"--radix-popper-transform-origin":[F.transformOrigin?.x,F.transformOrigin?.y].join(` `),...F.hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}},dir:e.dir,children:(0,K.jsx)(hc,{scope:n,placedSide:L,placedAlign:R,onArrowChange:S,arrowX:B,arrowY:V,shouldHideArrow:H,children:(0,K.jsx)(yn.div,{"data-side":L,"data-align":R,...g,ref:b,style:{...g.style,animation:P?g.style?.animation:`none`}})})})},`PopperContent`)),vc=`PopperArrow`,yc={top:`bottom`,right:`left`,bottom:`top`,left:`right`},bc=s.forwardRef(ac(function(e,t){let{__scopePopper:n,...r}=e,i=gc(vc,n),a=yc[i.placedSide];return(0,K.jsx)(`span`,{ref:i.onArrowChange,style:{position:`absolute`,left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[i.placedSide],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[i.placedSide],visibility:i.shouldHideArrow?`hidden`:void 0},children:(0,K.jsx)(ec,{...r,ref:t,style:{...r.style,display:`block`}})})},`PopperArrow`));function xc(e){return e!==null}ac(xc,`isNotNull`);var Sc=ac(e=>({name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=Cc(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}}),`transformOrigin`);function Cc(e){let[t,n=`center`]=e.split(`-`);return[t,n]}ac(Cc,`getSideAndAlignFromPlacement`);var wc=dc,Tc=pc,Ec=_c,Dc=bc,Oc=Object.defineProperty,kc=(e,t)=>Oc(e,`name`,{value:t,configurable:!0}),Ac=!1;function jc(){let[e,t]=s.useState(Ac);return s.useEffect(()=>{Ac||(Ac=!0,t(!0))},[]),e}kc(jc,`useIsHydrated`);var Mc=s.useSyncExternalStore;function Nc(){return()=>{}}kc(Nc,`subscribe`);function Pc(){return Mc(Nc,()=>!0,()=>!1)}kc(Pc,`useIsHydratedModern`);var Fc=typeof Mc==`function`?Pc:jc,Ic=Object.defineProperty,Lc=(e,t)=>Ic(e,`name`,{value:t,configurable:!0}),Rc=`rovingFocusGroup.onEntryFocus`,zc={bubbles:!1,cancelable:!0},Bc=`RovingFocusGroup`,[Vc,Hc,Uc]=Ea(Bc),[Wc,Gc]=Nt(Bc,[Uc]),[Kc,qc]=Wc(Bc),Jc=s.forwardRef(Lc(function(e,t){return(0,K.jsx)(Vc.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,K.jsx)(Vc.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,K.jsx)(Yc,{...e,ref:t})})})},`RovingFocusGroup`)),Yc=s.forwardRef(Lc(function(e,t){let{__scopeRovingFocusGroup:n,orientation:r,loop:i=!1,dir:a,currentTabStopId:o,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:l,onEntryFocus:u,preventScrollOnEntryFocus:d=!1,...f}=e,p=s.useRef(null),m=kt(t,p),h=Ba(a),[g,_]=Yt({prop:o,defaultProp:c??null,onChange:l,caller:Bc}),[v,y]=s.useState(!1),b=Cn(u),x=Hc(n),S=s.useRef(!1),[C,w]=s.useState(0);return s.useEffect(()=>{let e=p.current;if(e)return e.addEventListener(Rc,b),()=>e.removeEventListener(Rc,b)},[b]),(0,K.jsx)(Kc,{scope:n,orientation:r,dir:h,loop:i,currentTabStopId:g,onItemFocus:s.useCallback(e=>_(e),[_]),onItemShiftTab:s.useCallback(()=>y(!0),[]),onFocusableItemAdd:s.useCallback(()=>w(e=>e+1),[]),onFocusableItemRemove:s.useCallback(()=>w(e=>e-1),[]),children:(0,K.jsx)(yn.div,{tabIndex:v||C===0?-1:0,"data-orientation":r,...f,ref:m,style:{outline:`none`,...e.style},onMouseDown:q(e.onMouseDown,()=>{S.current=!0}),onFocus:q(e.onFocus,e=>{let t=!S.current;if(e.target===e.currentTarget&&t&&!v){let t=new CustomEvent(Rc,zc);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=x().filter(e=>e.focusable);tl([e.find(e=>e.active),e.find(e=>e.id===g),...e].filter(Boolean).map(e=>e.ref.current),d)}}S.current=!1}),onBlur:q(e.onBlur,()=>y(!1))})})},`RovingFocusGroupImpl`)),Xc=`RovingFocusGroupItem`,Zc=s.forwardRef(Lc(function(e,t){let{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:a,children:o,...c}=e,l=Bt(),u=a||l,d=qc(Xc,n),f=d.currentTabStopId===u,p=Hc(n),{onFocusableItemAdd:m,onFocusableItemRemove:h,currentTabStopId:g}=d,_=Fc();return Ft(()=>{if(!(!_||!r))return m(),()=>h()},[_,r,m,h]),s.useEffect(()=>{if(!(_||!r))return m(),()=>h()},[_,r,m,h]),(0,K.jsx)(Vc.ItemSlot,{scope:n,id:u,focusable:r,active:i,children:(0,K.jsx)(yn.span,{tabIndex:f?0:-1,"data-orientation":d.orientation,...c,ref:t,onMouseDown:q(e.onMouseDown,e=>{r?d.onItemFocus(u):e.preventDefault()}),onFocus:q(e.onFocus,()=>d.onItemFocus(u)),onKeyDown:q(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){d.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=el(e,d.orientation,d.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=p().filter(e=>e.focusable).map(e=>e.ref.current);if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=d.loop?nl(n,r+1):n.slice(r+1)}setTimeout(()=>tl(n))}}),children:typeof o==`function`?o({isCurrentTabStop:f,hasTabStop:g!=null}):o})})},`RovingFocusGroupItem`)),Qc={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function $c(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}Lc($c,`getDirectionAwareKey`);function el(e,t,n){let r=$c(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return Qc[r]}Lc(el,`getFocusIntent`);function tl(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}Lc(tl,`focusFirst`);function nl(e,t){return e.map((n,r)=>e[(t+r)%e.length])}Lc(nl,`wrapArray`);var rl=Jc,il=Zc,al=Object.defineProperty,ol=(e,t)=>al(e,`name`,{value:t,configurable:!0}),sl=[`Enter`,` `],cl=[`ArrowDown`,`PageUp`,`Home`],ll=[`ArrowUp`,`PageDown`,`End`],ul=[...cl,...ll],dl={ltr:[...sl,`ArrowRight`],rtl:[...sl,`ArrowLeft`]},fl={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]},pl=`Menu`,[ml,hl,gl]=Ea(pl),[_l,vl]=Nt(pl,[gl,cc,Gc]),yl=cc(),bl=Gc(),[xl,Sl]=_l(pl),[Cl,wl]=_l(pl),Tl=ol(e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,c=yl(t),[l,u]=s.useState(null),d=s.useRef(!1),f=Cn(a),p=Ba(i);return s.useEffect(()=>{let e=ol(()=>{d.current=!0,document.addEventListener(`pointerdown`,t,{capture:!0,once:!0}),document.addEventListener(`pointermove`,t,{capture:!0,once:!0})},`handleKeyDown`),t=ol(()=>d.current=!1,`handlePointer`);return document.addEventListener(`keydown`,e,{capture:!0}),()=>{document.removeEventListener(`keydown`,e,{capture:!0}),document.removeEventListener(`pointerdown`,t,{capture:!0}),document.removeEventListener(`pointermove`,t,{capture:!0})}},[]),s.useEffect(()=>{if(!n)return;let e=ol(()=>f(!1),`handleBlur`);return window.addEventListener(`blur`,e),()=>window.removeEventListener(`blur`,e)},[n,f]),(0,K.jsx)(wc,{...c,children:(0,K.jsx)(xl,{scope:t,open:n,onOpenChange:f,content:l,onContentChange:u,children:(0,K.jsx)(Cl,{scope:t,onClose:s.useCallback(()=>f(!1),[f]),isUsingKeyboardRef:d,dir:p,modal:o,children:r})})})},`Menu`),El=s.forwardRef(ol(function(e,t){let{__scopeMenu:n,...r}=e,i=yl(n);return(0,K.jsx)(Tc,{...i,...r,ref:t})},`MenuAnchor`)),Dl=`MenuPortal`,[Ol,kl]=_l(Dl,{forceMount:void 0}),Al=ol(e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=Sl(Dl,t);return(0,K.jsx)(Ol,{scope:t,forceMount:n,children:(0,K.jsx)(or,{present:n||a.open,children:(0,K.jsx)(nr,{asChild:!0,container:i,children:r})})})},`MenuPortal`),jl=`MenuContent`,[Ml,Nl]=_l(jl),Pl=s.forwardRef(ol(function(e,t){let n=kl(jl,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=Sl(jl,e.__scopeMenu),o=wl(jl,e.__scopeMenu);return(0,K.jsx)(ml.Provider,{scope:e.__scopeMenu,children:(0,K.jsx)(or,{present:r||a.open,children:(0,K.jsx)(ml.Slot,{scope:e.__scopeMenu,children:o.modal?(0,K.jsx)(Fl,{...i,ref:t}):(0,K.jsx)(Il,{...i,ref:t})})})})},`MenuContent`)),Fl=s.forwardRef(ol(function(e,t){let n=Sl(jl,e.__scopeMenu),r=s.useRef(null),i=kt(t,r);return s.useEffect(()=>{let e=r.current;if(e)return Ri(e)},[]),(0,K.jsx)(Rl,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:q(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})},`MenuRootContentModal`)),Il=s.forwardRef(ol(function(e,t){let n=Sl(jl,e.__scopeMenu);return(0,K.jsx)(Rl,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})},`MenuRootContentNonModal`)),Ll=rn(`MenuContent.ScrollLock`),Rl=s.forwardRef(ol(function(e,t){let{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:o,disableOutsidePointerEvents:c,onEntryFocus:l,onEscapeKeyDown:u,onPointerDownOutside:d,onFocusOutside:f,onInteractOutside:p,onDismiss:m,disableOutsideScroll:h,...g}=e,_=Sl(jl,n),v=wl(jl,n),y=yl(n),b=bl(n),x=hl(n),[S,C]=s.useState(null),w=s.useRef(null),T=kt(t,w,_.onContentChange),E=s.useRef(0),D=s.useRef(``),O=s.useRef(0),k=s.useRef(null),A=s.useRef(`right`),j=s.useRef(0),M=h?ki:s.Fragment,N=h?{as:Ll,allowPinchZoom:!0}:void 0,P=ol(e=>{let t=D.current+e,n=x().filter(e=>!e.disabled),r=document.activeElement,i=n.find(e=>e.ref.current===r)?.textValue,a=mu(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;ol((function e(t){D.current=t,window.clearTimeout(E.current),t!==``&&(E.current=window.setTimeout(()=>e(``),1e3))}),`updateSearch`)(t),o&&setTimeout(()=>o.focus())},`handleTypeaheadSearch`);s.useEffect(()=>()=>window.clearTimeout(E.current),[]),_r();let F=s.useCallback(e=>A.current===k.current?.side&&gu(e,k.current?.area),[]);return(0,K.jsx)(Ml,{scope:n,searchRef:D,onItemEnter:s.useCallback(e=>{F(e)&&e.preventDefault()},[F]),onItemLeave:s.useCallback(e=>{F(e)||(w.current?.focus(),C(null))},[F]),onTriggerLeave:s.useCallback(e=>{F(e)&&e.preventDefault()},[F]),pointerGraceTimerRef:O,onPointerGraceIntentChange:s.useCallback(e=>{k.current=e},[]),children:(0,K.jsx)(M,{...N,children:(0,K.jsx)(Un,{asChild:!0,trapped:i,onMountAutoFocus:q(a,e=>{e.preventDefault(),w.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:o,children:(0,K.jsx)(jn,{asChild:!0,disableOutsidePointerEvents:c,onEscapeKeyDown:u,onPointerDownOutside:d,onFocusOutside:f,onInteractOutside:p,onDismiss:m,children:(0,K.jsx)(rl,{asChild:!0,...b,dir:v.dir,orientation:`vertical`,loop:r,currentTabStopId:S,onCurrentTabStopIdChange:C,onEntryFocus:q(l,e=>{v.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,K.jsx)(Ec,{role:`menu`,"aria-orientation":`vertical`,"data-state":lu(_.open),"data-radix-menu-content":``,dir:v.dir,...y,...g,ref:T,style:{outline:`none`,...g.style},onKeyDown:q(g.onKeyDown,e=>{let t=e.target.closest(`[data-radix-menu-content]`)===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=e.key.length===1;t&&(e.key===`Tab`&&e.preventDefault(),!n&&r&&P(e.key));let i=w.current;if(e.target!==i||!ul.includes(e.key))return;e.preventDefault();let a=x().filter(e=>!e.disabled).map(e=>e.ref.current);ll.includes(e.key)&&a.reverse(),fu(a)}),onBlur:q(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(E.current),D.current=``)}),onPointerMove:q(e.onPointerMove,_u(e=>{let t=e.target,n=j.current!==e.clientX;if(e.currentTarget.contains(t)&&n){let t=e.clientX>j.current?`right`:`left`;A.current=t,j.current=e.clientX}}))})})})})})})},`MenuContentImpl`)),zl=s.forwardRef(ol(function(e,t){let{__scopeMenu:n,...r}=e;return(0,K.jsx)(yn.div,{role:`group`,...r,ref:t})},`MenuGroup`)),Bl=s.forwardRef(ol(function(e,t){let{__scopeMenu:n,...r}=e;return(0,K.jsx)(yn.div,{...r,ref:t})},`MenuLabel`)),Vl=`MenuItem`,Hl=`menu.itemSelect`,Ul=s.forwardRef(ol(function(e,t){let{disabled:n=!1,onSelect:r,...i}=e,a=s.useRef(null),o=wl(Vl,e.__scopeMenu),c=Nl(Vl,e.__scopeMenu),l=kt(t,a),u=s.useRef(!1),d=ol(()=>{let e=a.current;if(!n&&e){let t=new CustomEvent(Hl,{bubbles:!0,cancelable:!0});e.addEventListener(Hl,e=>r?.(e),{once:!0}),bn(e,t),t.defaultPrevented?u.current=!1:o.onClose()}},`handleSelect`);return(0,K.jsx)(Wl,{...i,ref:l,disabled:n,onClick:q(e.onClick,d),onPointerDown:t=>{e.onPointerDown?.(t),u.current=!0},onPointerUp:q(e.onPointerUp,e=>{u.current||e.currentTarget?.click()}),onKeyDown:q(e.onKeyDown,e=>{n||e.target!==e.currentTarget||(c.searchRef.current===``||e.key!==` `)&&sl.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})},`MenuItem`)),Wl=s.forwardRef(ol(function(e,t){let{__scopeMenu:n,disabled:r=!1,textValue:i,...a}=e,o=Nl(Vl,n),c=bl(n),l=s.useRef(null),u=kt(t,l),[d,f]=s.useState(!1),[p,m]=s.useState(``);return s.useEffect(()=>{let e=l.current;e&&m((e.textContent??``).trim())},[a.children]),(0,K.jsx)(ml.ItemSlot,{scope:n,disabled:r,textValue:i??p,children:(0,K.jsx)(il,{asChild:!0,...c,focusable:!r,children:(0,K.jsx)(yn.div,{role:`menuitem`,"data-highlighted":d?``:void 0,"aria-disabled":r||void 0,"data-disabled":r?``:void 0,...a,ref:u,onPointerMove:q(e.onPointerMove,_u(e=>{r?o.onItemLeave(e):(o.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:q(e.onPointerLeave,_u(e=>o.onItemLeave(e))),onFocus:q(e.onFocus,()=>f(!0)),onBlur:q(e.onBlur,()=>f(!1))})})})},`MenuItemImpl`)),[Gl,Kl]=_l(`MenuRadioGroup`,{value:void 0,onValueChange:ol(()=>{},`onValueChange`)}),ql=s.forwardRef(ol(function(e,t){let{value:n,onValueChange:r,...i}=e,a=Cn(r);return(0,K.jsx)(Gl,{scope:e.__scopeMenu,value:n,onValueChange:a,children:(0,K.jsx)(zl,{...i,ref:t})})},`MenuRadioGroup`)),Jl=`MenuRadioItem`,Yl=s.forwardRef(ol(function(e,t){let{value:n,...r}=e,i=Kl(Jl,e.__scopeMenu),a=n===i.value;return(0,K.jsx)(Zl,{scope:e.__scopeMenu,checked:a,children:(0,K.jsx)(Ul,{role:`menuitemradio`,"aria-checked":a,...r,ref:t,"data-state":du(a),onSelect:q(r.onSelect,()=>i.onValueChange?.(n),{checkForDefaultPrevented:!1})})})},`MenuRadioItem`)),Xl=`MenuItemIndicator`,[Zl,Ql]=_l(Xl,{checked:!1}),$l=s.forwardRef(ol(function(e,t){let{__scopeMenu:n,forceMount:r,...i}=e,a=Ql(Xl,n);return(0,K.jsx)(or,{present:r||uu(a.checked)||a.checked===!0,children:(0,K.jsx)(yn.span,{...i,ref:t,"data-state":du(a.checked)})})},`MenuItemIndicator`)),eu=s.forwardRef(ol(function(e,t){let{__scopeMenu:n,...r}=e;return(0,K.jsx)(yn.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})},`MenuSeparator`)),tu=`MenuSub`,[nu,ru]=_l(tu),iu=ol(e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:i}=e,a=Sl(tu,t),o=yl(t),[c,l]=s.useState(null),[u,d]=s.useState(null),f=Cn(i);return s.useEffect(()=>(a.open===!1&&f(!1),()=>f(!1)),[a.open,f]),(0,K.jsx)(wc,{...o,children:(0,K.jsx)(xl,{scope:t,open:r,onOpenChange:f,content:u,onContentChange:d,children:(0,K.jsx)(nu,{scope:t,contentId:Bt(),triggerId:Bt(),trigger:c,onTriggerChange:l,children:n})})})},`MenuSub`),au=`MenuSubTrigger`,ou=s.forwardRef(ol(function(e,t){let n=Sl(au,e.__scopeMenu),r=wl(au,e.__scopeMenu),i=ru(au,e.__scopeMenu),a=Nl(au,e.__scopeMenu),o=s.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:l}=a,u={__scopeMenu:e.__scopeMenu},d=s.useCallback(()=>{o.current&&window.clearTimeout(o.current),o.current=null},[]);s.useEffect(()=>d,[d]),s.useEffect(()=>{let e=c.current;return()=>{window.clearTimeout(e),l(null)}},[c,l]);let f=kt(t,i.onTriggerChange);return(0,K.jsx)(El,{asChild:!0,...u,children:(0,K.jsx)(Wl,{id:i.triggerId,"aria-haspopup":`menu`,"aria-expanded":n.open,"aria-controls":n.open?i.contentId:void 0,"data-state":lu(n.open),...e,ref:f,onClick:t=>{e.onClick?.(t),!(e.disabled||t.defaultPrevented)&&(t.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:q(e.onPointerMove,_u(t=>{a.onItemEnter(t),!t.defaultPrevented&&!e.disabled&&!n.open&&!o.current&&(a.onPointerGraceIntentChange(null),o.current=window.setTimeout(()=>{n.onOpenChange(!0),d()},100))})),onPointerLeave:q(e.onPointerLeave,_u(e=>{d();let t=n.content?.getBoundingClientRect();if(t){let r=n.content?.dataset.side,i=r===`right`,o=i?-5:5,s=t[i?`left`:`right`],l=t[i?`right`:`left`];a.onPointerGraceIntentChange({area:[{x:e.clientX+o,y:e.clientY},{x:s,y:t.top},{x:l,y:t.top},{x:l,y:t.bottom},{x:s,y:t.bottom}],side:r}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>a.onPointerGraceIntentChange(null),300)}else{if(a.onTriggerLeave(e),e.defaultPrevented)return;a.onPointerGraceIntentChange(null)}})),onKeyDown:q(e.onKeyDown,t=>{e.disabled||t.target!==t.currentTarget||(a.searchRef.current===``||t.key!==` `)&&dl[r.dir].includes(t.key)&&(n.onOpenChange(!0),n.content?.focus(),t.preventDefault())})})})},`MenuSubTrigger`)),su=`MenuSubContent`,cu=s.forwardRef(ol(function(e,t){let n=kl(jl,e.__scopeMenu),{forceMount:r=n.forceMount,align:i=`start`,...a}=e,o=Sl(jl,e.__scopeMenu),c=wl(jl,e.__scopeMenu),l=ru(su,e.__scopeMenu),u=s.useRef(null),d=kt(t,u);return(0,K.jsx)(ml.Provider,{scope:e.__scopeMenu,children:(0,K.jsx)(or,{present:r||o.open,children:(0,K.jsx)(ml.Slot,{scope:e.__scopeMenu,children:(0,K.jsx)(Rl,{id:l.contentId,"aria-labelledby":l.triggerId,...a,ref:d,align:i,side:c.dir===`rtl`?`left`:`right`,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{c.isUsingKeyboardRef.current&&u.current?.focus(),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:q(e.onFocusOutside,e=>{e.target!==l.trigger&&o.onOpenChange(!1)}),onEscapeKeyDown:q(e.onEscapeKeyDown,e=>{c.onClose(),e.preventDefault()}),onKeyDown:q(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),n=fl[c.dir].includes(e.key);t&&n&&(o.onOpenChange(!1),l.trigger?.focus(),e.preventDefault())})})})})})},`MenuSubContent`));function lu(e){return e?`open`:`closed`}ol(lu,`getOpenState`);function uu(e){return e===`indeterminate`}ol(uu,`isIndeterminate`);function du(e){return uu(e)?`indeterminate`:e?`checked`:`unchecked`}ol(du,`getCheckedState`);function fu(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}ol(fu,`focusFirst`);function pu(e,t){return e.map((n,r)=>e[(t+r)%e.length])}ol(pu,`wrapArray`);function mu(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=pu(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}ol(mu,`getNextMatch`);function hu(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}ol(hu,`isPointInPolygon`);function gu(e,t){return t?hu({x:e.clientX,y:e.clientY},t):!1}ol(gu,`isPointerInGraceArea`);function _u(e){return t=>t.pointerType===`mouse`?e(t):void 0}ol(_u,`whenMouse`);var vu=Tl,yu=El,bu=Al,xu=Pl,Su=Bl,Cu=Ul,wu=ql,Tu=Yl,Eu=$l,Du=eu,Ou=iu,ku=ou,Au=cu,ju=Object.defineProperty,Mu=(e,t)=>ju(e,`name`,{value:t,configurable:!0}),Nu=`DropdownMenu`,[Pu,Fu]=Nt(Nu,[vl]),Iu=vl(),[Lu,Ru]=Pu(Nu),zu=Mu(e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:o,modal:c=!0}=e,l=Iu(t),u=s.useRef(null),[d,f]=Yt({prop:i,defaultProp:a??!1,onChange:o,caller:Nu});return(0,K.jsx)(Lu,{scope:t,triggerId:Bt(),triggerRef:u,contentId:Bt(),open:d,onOpenChange:f,onOpenToggle:s.useCallback(()=>f(e=>!e),[f]),modal:c,children:(0,K.jsx)(vu,{...l,open:d,onOpenChange:f,dir:r,modal:c,children:n})})},`DropdownMenu`),Bu=`DropdownMenuTrigger`,Vu=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,disabled:r=!1,...i}=e,a=Ru(Bu,n),o=Iu(n),s=kt(t,a.triggerRef);return(0,K.jsx)(yu,{asChild:!0,...o,children:(0,K.jsx)(yn.button,{type:`button`,id:a.triggerId,"aria-haspopup":`menu`,"aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":a.open?`open`:`closed`,"data-disabled":r?``:void 0,disabled:r,...i,ref:s,onPointerDown:q(e.onPointerDown,e=>{!r&&e.button===0&&e.ctrlKey===!1&&(a.onOpenToggle(),a.open||e.preventDefault())}),onKeyDown:q(e.onKeyDown,e=>{r||([`Enter`,` `].includes(e.key)&&a.onOpenToggle(),e.key===`ArrowDown`&&a.onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(e.key)&&e.preventDefault())})})})},`DropdownMenuTrigger`)),Hu=Mu(e=>{let{__scopeDropdownMenu:t,...n}=e,r=Iu(t);return(0,K.jsx)(bu,{...r,...n})},`DropdownMenuPortal`),Uu=`DropdownMenuContent`,Wu=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Ru(Uu,n),a=Iu(n),o=s.useRef(!1);return(0,K.jsx)(xu,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:q(e.onCloseAutoFocus,e=>{o.current||i.triggerRef.current?.focus(),o.current=!1,e.preventDefault()}),onInteractOutside:q(e.onInteractOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;(!i.modal||r)&&(o.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})},`DropdownMenuContent`)),Gu=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Iu(n);return(0,K.jsx)(Su,{...i,...r,ref:t})},`DropdownMenuLabel`)),Ku=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Iu(n);return(0,K.jsx)(Cu,{...i,...r,ref:t})},`DropdownMenuItem`)),qu=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Iu(n);return(0,K.jsx)(wu,{...i,...r,ref:t})},`DropdownMenuRadioGroup`)),Ju=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Iu(n);return(0,K.jsx)(Tu,{...i,...r,ref:t})},`DropdownMenuRadioItem`)),Yu=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Iu(n);return(0,K.jsx)(Eu,{...i,...r,ref:t})},`DropdownMenuItemIndicator`)),Xu=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Iu(n);return(0,K.jsx)(Du,{...i,...r,ref:t})},`DropdownMenuSeparator`)),Zu=Mu(e=>{let{__scopeDropdownMenu:t,children:n,open:r,onOpenChange:i,defaultOpen:a}=e,o=Iu(t),[s,c]=Yt({prop:r,defaultProp:a??!1,onChange:i,caller:`DropdownMenuSub`});return(0,K.jsx)(Ou,{...o,open:s,onOpenChange:c,children:n})},`DropdownMenuSub`),Qu=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Iu(n);return(0,K.jsx)(ku,{...i,...r,ref:t})},`DropdownMenuSubTrigger`)),$u=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Iu(n);return(0,K.jsx)(Au,{...i,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})},`DropdownMenuSubContent`)),ed=zu,td=Vu,nd=Hu,rd=Wu,id=Gu,ad=Ku,od=qu,sd=Ju,cd=Yu,ld=Xu,ud=Zu,dd=Qu,fd=$u;function pd({items:e,label:t=`更多操作`}){let n=e.findIndex(e=>e.danger);return(0,K.jsxs)(ed,{children:[(0,K.jsx)(td,{asChild:!0,children:(0,K.jsx)(`button`,{className:`icon-button more-actions-trigger`,type:`button`,"aria-label":t,title:t,children:(0,K.jsx)(me,{size:16})})}),(0,K.jsx)(nd,{children:(0,K.jsx)(rd,{className:`more-actions-menu`,align:`end`,sideOffset:6,collisionPadding:12,children:e.map((e,t)=>(0,K.jsxs)(s.Fragment,{children:[t===n&&t>0&&(0,K.jsx)(ld,{className:`more-actions-separator`}),(0,K.jsx)(ad,{className:`more-actions-item${e.danger?` danger`:``}`,disabled:e.disabled,onSelect:e.onSelect,children:e.label})]},e.label))})})]})}function md({targetId:e,children:t}){let[n,r]=(0,s.useState)(null);return(0,s.useLayoutEffect)(()=>{r(document.getElementById(e))},[e]),n?(0,en.createPortal)(t,n):(0,K.jsx)(K.Fragment,{children:t})}function hd({children:e}){return(0,K.jsx)(md,{targetId:`pageHeaderTools`,children:e})}function gd({children:e}){return(0,K.jsx)(md,{targetId:`pageHeaderActions`,children:e})}function _d(e){return vd(e)||typeof e==`function`||yd(e)}function vd(e){return typeof e==`function`&&(()=>{let t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function yd(e){return typeof e==`object`&&typeof e.$$typeof==`symbol`&&[`react.memo`,`react.forward_ref`].includes(e.$$typeof.description)}function bd(e,t){return e==null?null:_d(e)?s.createElement(e,t):e}function xd(e){if(`cell`in e&&e.cell){let t=e.cell,n=t.column.columnDef,r=t,i=n;return r.getIsAggregated?.()?bd(i.aggregatedCell??n.cell,t.getContext()):r.getIsPlaceholder?.()?null:bd(n.cell,t.getContext())}return`header`in e&&e.header?bd(e.header.column.columnDef.header,e.header.getContext()):`footer`in e&&e.footer?bd(e.footer.column.columnDef.footer,e.footer.getContext()):null}function Sd({update:e,notify:t,unwatched:n}){return{link:r,unlink:i,propagate:a,checkDirty:o,shallowPropagate:s};function r(e,t,n){let r=t.depsTail;if(r!==void 0&&r.dep===e)return;let i=r===void 0?t.deps:r.nextDep;if(i!==void 0&&i.dep===e){i.version=n,t.depsTail=i;return}let a=e.subsTail;if(a!==void 0&&a.version===n&&a.sub===t)return;let o=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:i,prevSub:a,nextSub:void 0};i!==void 0&&(i.prevDep=o),r===void 0?t.deps=o:r.nextDep=o,a===void 0?e.subs=o:a.nextSub=o}function i(e,t=e.sub){let r=e.dep,i=e.prevDep,a=e.nextDep,o=e.nextSub,s=e.prevSub;return a===void 0?t.depsTail=i:a.prevDep=i,i===void 0?t.deps=a:i.nextDep=a,o===void 0?r.subsTail=s:o.prevSub=s,s===void 0?(r.subs=o)===void 0&&n(r):s.nextSub=o,a}function a(e){let n=e.nextSub,r;top:do{let i=e.sub,a=i.flags;if(a&60?a&12?a&4?!(a&48)&&c(e,i)?(i.flags=a|40,a&=1):a=0:i.flags=a&-9|32:a=0:i.flags=a|32,a&2&&t(i),a&1){let t=i.subs;if(t!==void 0){let i=(e=t).nextSub;i!==void 0&&(r={value:n,prev:r},n=i);continue}}if((e=n)!==void 0){n=e.nextSub;continue}for(;r!==void 0;)if(e=r.value,r=r.prev,e!==void 0){n=e.nextSub;continue top}break}while(!0)}function o(t,n){let r,i=0,a=!1;top:do{let o=t.dep,c=o.flags;if(n.flags&16)a=!0;else if((c&17)==17){if(e(o)){let e=o.subs;e.nextSub!==void 0&&s(e),a=!0}}else if((c&33)==33){(t.nextSub!==void 0||t.prevSub!==void 0)&&(r={value:t,prev:r}),t=o.deps,n=o,++i;continue}if(!a){let e=t.nextDep;if(e!==void 0){t=e;continue}}for(;i--;){let i=n.subs,o=i.nextSub!==void 0;if(o?(t=r.value,r=r.prev):t=i,a){if(e(n)){o&&s(i),n=t.sub;continue}a=!1}else n.flags&=-33;n=t.sub;let c=t.nextDep;if(c!==void 0){t=c;continue top}}return a}while(!0)}function s(e){do{let n=e.sub,r=n.flags;(r&48)==32&&(n.flags=r|16,(r&6)==2&&t(n))}while((e=e.nextSub)!==void 0)}function c(e,t){let n=t.depsTail;for(;n!==void 0;){if(n===e)return!0;n=n.prevDep}return!1}}function Cd(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}var wd=[],Td=0,{link:Ed,unlink:Dd,propagate:Od,checkDirty:kd,shallowPropagate:Ad}=Sd({update(e){return e._update()},notify(e){wd[Md++]=e,e.flags&=-3},unwatched(e){e.depsTail!==void 0&&(e.depsTail=void 0,e.flags=17,Id(e))}}),jd=0,Md=0,Nd,Pd=0;function Fd(e){try{++Pd,e()}finally{--Pd||Ld()}}function Id(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=Dd(n,e)}function Ld(){if(!(Pd>0)){for(;jd{i.get(),n.current?t.next?.(i._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){let a=Nd,o=t?.compare??Object.is;if(n)Nd=i,++Td,i.depsTail=void 0;else if(e===void 0)return!1;n&&(i.flags=5);try{let t=i._snapshot,a=typeof e==`function`?e(t):e===void 0&&n?r(t):e;return t===void 0||!o(t,a)?(i._snapshot=a,!0):!1}finally{Nd=a,n&&(i.flags&=-5),Id(i)}}};return n?(i.flags=17,i.get=function(){let e=i.flags;if(e&16||e&32&&kd(i.deps,i)){if(i._update()){let e=i.subs;e!==void 0&&Ad(e)}}else e&32&&(i.flags=e&-33);return Nd!==void 0&&Ed(i,Nd,Td),i._snapshot}):i.set=function(e){if(i._update(e)){let e=i.subs;e!==void 0&&(Od(e),Ad(e),Ld())}},i}function zd(e){let t=()=>{let t=Nd;Nd=n,++Td,n.depsTail=void 0,n.flags=6;try{return e()}finally{Nd=t,n.flags&=-5,Id(n)}},n={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:6,notify(){let e=this.flags;e&16||e&32&&kd(this.deps,this)?t():this.flags=2},stop(){this.flags=0,this.depsTail=void 0,Id(this)}};return t(),n}function Bd(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();let n=Vd(e);if(n.length!==Vd(t).length)return!1;for(let r=0;r{var t=r();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:n,a=t.useState,o=t.useEffect,s=t.useLayoutEffect,c=t.useDebugValue;function l(e,t){var n=t(),r=a({inst:{value:n,getSnapshot:t}}),i=r[0].inst,l=r[1];return s(function(){i.value=n,i.getSnapshot=t,u(i)&&l({inst:i})},[e,n,t]),o(function(){return u(i)&&l({inst:i}),e(function(){u(i)&&l({inst:i})})},[e]),c(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;e.useSyncExternalStore=t.useSyncExternalStore===void 0?f:t.useSyncExternalStore})),Ud=n(((e,t)=>{t.exports=Hd()})),Wd=n((e=>{var t=r(),n=Ud();function i(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var a=typeof Object.is==`function`?Object.is:i,o=n.useSyncExternalStore,s=t.useRef,c=t.useEffect,l=t.useMemo,u=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var d=s(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=l(function(){function e(e){if(!o){if(o=!0,s=e,e=r(e),i!==void 0&&f.hasValue){var t=f.value;if(i(t,e))return c=t}return c=e}if(t=c,a(s,e))return t;var n=r(e);return i!==void 0&&i(t,n)?(s=e,t):(s=e,c=n)}var o=!1,s,c,l=n===void 0?null:n;return[function(){return e(t())},l===null?void 0:function(){return e(l())}]},[t,n,r,i]);var p=o(e,d[0],d[1]);return c(function(){f.hasValue=!0,f.value=p},[p]),u(p),p}})),Gd=t(n(((e,t)=>{t.exports=Wd()}))(),1);function Kd(e,t){return e===t}function qd(e,t=e=>e,n){let r=n?.compare??Kd,i=(0,s.useCallback)(t=>{let{unsubscribe:n}=e.subscribe(t);return n},[e]),a=(0,s.useCallback)(()=>e.get(),[e]);return(0,Gd.useSyncExternalStoreWithSelector)(i,a,a,t,r)}function Jd(e){let t=qd(e.source,e.selector,{compare:Bd});return typeof e.children==`function`?e.children(t):e.children}function Yd(e){let t=e;return Object.defineProperty(e,"state",{get(){return e.get()}}),`set`in e&&(t.setState=e.set.bind(e)),t}function Xd(e){let{createAtom:t,batch:n}=e,r=t(0);return{createOptionsStore:!1,wrapExternalAtoms:!1,addSubscription:()=>{throw Error(`Feature not supported in current reactivity implementation`)},unmount:()=>{throw Error(`Feature not supported in current reactivity implementation`)},schedule:e.schedule??(e=>queueMicrotask(e)),batch:n,untrack:e=>e(),createReadonlyAtom:(e,n)=>{let i=n?.compare??Object.is,a=!1,o,s=()=>{let t=e();return(!a||!i(o,t))&&(o=t,a=!0),o},c=t(()=>(r.get(),s()),{compare:i});return{get:s,subscribe:c.subscribe.bind(c)}},createWritableAtom:(e,n)=>t(e,{compare:n?.compare}),commit:()=>{r.set(e=>e+1)}}}function Zd(e,t=Object.is){let n=!1,r;return{get:e.get,markCommitted:e=>{r=e,n=!0},subscribe:i=>e.subscribe(e=>{(!n||!t(r,e))&&i(e)})}}function Qd(){return Xd({createAtom:Rd,batch:Fd})}function $d(e,t){return typeof e==`function`?e(t):e}function ef(e){if(Array.isArray(e))return e.map(ef);if(e&&typeof e==`object`){let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)return e;let n=t===null?tf():{},r=Object.keys(e);for(let t=0;tObject.prototype.propertyIsEnumerable.call(e,t))}var of=3;function sf(e,t){return cf(e,t,of)}function cf(e,t,n){if(Object.is(e,t))return!0;if(n<=0||!rf(e)||!rf(t)||(Array.isArray(e)||Array.isArray(t))&&(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length))return!1;let r=af(e),i=af(t);if(r.length!==i.length)return!1;let a=e,o=t;for(let e=0;e{let t=$d(n,e);return r(e,t)?e:t})}function uf(e,t){let n=[],r=e=>{e.forEach(e=>{n.push(e);let i=t(e);i.length&&r(i)})};return r(e),n}var df=({fn:e,memoDeps:t,onAfterCompare:n,onAfterUpdate:r,onBeforeCompare:i,onBeforeUpdate:a})=>{let o=[],s;return c=>{i?.();let l=t?.(c),u=!l||l.length!==o?.length;if(!u&&l){for(let e=0;e{if(!t){t=!0;return}e()}}function pf({feature:e,fnName:t,objectId:n,onAfterUpdate:r,table:i,...a}){let o=()=>{if(!r)return;let{schedule:e,untrack:t}=i._reactivity;e(()=>t(()=>r()))},s={onAfterUpdate:()=>{o()}};return df({...a,...s})}function mf(e,t=`_`){let[n,r]=e.split(t);return{fnKey:r,fnName:`${n}.${r}`,parentName:n}}function hf(e,t,n){for(let[r,{fn:i,memoDeps:a}]of Object.entries(n)){let{fnKey:n,fnName:o}=mf(r);t[n]=a?pf({memoDeps:a,fn:i,fnName:o,table:t,feature:e}):i}}function gf(e,t,n,r){for(let[i,{fn:a,memoDeps:o}]of Object.entries(r)){let{fnKey:r,fnName:s}=mf(i);if(o){let i=`_memo_${r}`;t[r]=function(...t){if(!this[i]){let t=this;this[i]=pf({memoDeps:e=>o(t,e),fn:(...e)=>a(t,...e),fnName:s,objectId:t.id,table:n,feature:e})}return this[i](...t)}}else t[r]=function(...e){return a(this,...e)}}}function _f(e,t,n,...r){return e[t]?.(...r)??n(e,...r)}function vf(e){return e.row.getValue(e.column.id)}function yf(e){return e.getValue()??e.table.options.renderFallbackValue}function bf(e){return{table:e.table,column:e.column,row:e.row,cell:e,getValue:()=>e.getValue(),renderValue:()=>e.renderValue()}}var xf={assignCellPrototype:(e,t)=>{gf(`coreCellsFeature`,e,t,{cell_getValue:{fn:e=>vf(e)},cell_renderValue:{fn:e=>yf(e)},cell_getContext:{fn:e=>bf(e),memoDeps:e=>[e]}})}};function Sf(e){if(!e._headerPrototype){e._headerPrototype={table:e};let t=Object.values(e._features);for(let n=0;n_f(e,`getIsVisible`,Tf)):(nf(t,e.id)?t[e.id]:void 0)??!0}function Ef(e){return e.getAllLeafColumns().filter(e=>_f(e,`getIsVisible`,Tf))}function Df(e,t=1){let n=t;for(let r=0;r0&&jf(s,t-1,n,r,i,a)}function Mf(e){for(let t=0;t{let n=t;for(let t=0;te[i.accessorKey]}if(!s)throw Error();let l=Pf(e),u=Object.create(l);u.accessorFn=c,u.columnDef=i,u.columns=[],u.depth=n,u.id=`${String(s)}`,u.parent=r;let d=e._columnInstanceInitFns;for(let e=0;e{let r=[];if(!t?.length)r=n;else{let e=new Map;for(let t=0;t!n.includes(e.id));if(r===`remove`)return i;let a=new Map;for(let e=0;ee.getFlatColumns())]}function zf(e){if(e.columns.length){let t=e.columns.flatMap(e=>e.getLeafColumns());return _f(e.table,`getOrderColumns`,If)(t)}return[e]}function Bf(e){return{header:e=>{let t=e.header.column.columnDef;return t.accessorKey?t.accessorKey:t.accessorFn?t.id:null},cell:e=>e.renderValue()?.toString?.()??null,...Object.values(e._features).reduce((e,t)=>Object.assign(e,t.getDefaultColumnDef?.()),{}),...e.options.defaultColumn}}function Vf(e,t,n,r=0){let i=Array(t.length);for(let a=0;ae.getFlatColumns())}function Wf(e){let t=tf(),n=e.getAllFlatColumns();for(let e=0;ee.getLeafColumns());return _f(e,`getOrderColumns`,If)(t)}function Kf(e){let t=tf(),n=e.getAllLeafColumns();for(let e=0;e{gf(`coreColumnsFeature`,e,t,{column_getFlatColumns:{fn:e=>Rf(e),memoDeps:e=>[e.table.options.columns]},column_getLeafColumns:{fn:e=>zf(e),memoDeps:e=>[e.table.atoms.columnOrder?.get(),e.table.atoms.grouping?.get(),e.table.options.columns,e.table.options.groupedColumnMode]}})},constructTableAPIs:e=>{hf(`coreColumnsFeature`,e,{table_getDefaultColumnDef:{fn:()=>Bf(e),memoDeps:()=>[e.options.defaultColumn]},table_getAllColumns:{fn:()=>Hf(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumns:{fn:()=>Uf(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumnsById:{fn:()=>Wf(e),memoDeps:()=>[e.options.columns]},table_getAllLeafColumns:{fn:()=>Gf(e),memoDeps:()=>[e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode]},table_getAllLeafColumnsById:{fn:()=>Kf(e),memoDeps:()=>[e.getAllLeafColumns()]},table_getColumn:{fn:t=>qf(e,t)}})}};function Yf(e,t){for(let n=0;n!t.includes(e.id)&&!n.includes(e.id));return Nf(r,[...o,...c,...s],e)}function $f(e){return[...e.getHeaderGroups()].reverse()}function ep(e){let t=e.getHeaderGroups(),n=[];for(let e=0;e{gf(`coreHeadersFeature`,e,t,{header_getLeafHeaders:{fn:e=>Xf(e),memoDeps:e=>[e.column.table.options.columns]},header_getContext:{fn:e=>Zf(e),memoDeps:e=>[e.column.table.options.columns]}})},constructTableAPIs:e=>{hf(`coreHeadersFeature`,e,{table_getHeaderGroups:{fn:()=>Qf(e),memoDeps:()=>[e.options.columns,e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.atoms.columnPinning?.get(),e.atoms.columnVisibility?.get(),e.options.groupedColumnMode]},table_getFooterGroups:{fn:()=>$f(e),memoDeps:()=>[e.getHeaderGroups()]},table_getFlatHeaders:{fn:()=>ep(e),memoDeps:()=>[e.getHeaderGroups()]},table_getLeafHeaders:{fn:()=>tp(e),memoDeps:()=>[e.getHeaderGroups()]}})}};function rp(e){if(!e._rowPrototype){e._rowPrototype={table:e};let t=Object.values(e._features);for(let n=0;n{let s=rp(e),c=Object.create(s);c._displayIndexCache=-1,c._uniqueValuesCache=tf(),c._valuesCache=tf(),c.depth=i,c.id=t,c.index=r,c.original=n,c.parentId=o,c.subRows=a??[];let l=e._rowInstanceInitFns;for(let e=0;eop(e))}function cp(e){e.atoms.expanded&&(e.options.autoResetAll??e.options.autoResetExpanded??!e.options.manualExpanding)&&e._reactivity.schedule(()=>lp(e))}function lp(e,t){let n=e.initialState.expanded;lf(e,`expanded`,t?tf():n===!0||Object.assign(tf(),ef(n??{})))}var up=0;function dp(e){if(e.options.autoResetAll??e.options.autoResetPageIndex??!e.options.manualPagination){if((e.atoms.pagination?.get()?.pageIndex??up)===up)return;mp(e,!0)}}function fp(e,t){lf(e,`pagination`,t)}function pp(e,t){fp(e,n=>{let r=$d(t,n.pageIndex),i=e.options.pageCount===void 0||e.options.pageCount===-1?2**53-1:e.options.pageCount-1;return r=Math.max(0,Math.min(r,i)),{...n,pageIndex:r}})}function mp(e,t){pp(e,t?up:e.initialState.pagination?.pageIndex??up)}function hp(e,t){lf(e,`sorting`,t)}function gp(e,t){hp(e,t?[]:ef(e.initialState.sorting??[]))}function _p(e){e.atoms.sorting&&(e.options.autoResetAll??e.options.autoResetSorting??!1)&&gp(e)}function vp(){return e=>pf({feature:`coreRowModelsFeature`,table:e,fnName:`table.getCoreRowModel`,memoDeps:()=>[e.options.data],fn:()=>bp(e,e.options.data),onAfterUpdate:ff(()=>{cp(e),dp(e),_p(e),sp(e)})})}function yp(e,t,n,r=0,i){let a=[];for(let o=0;o{hf(`coreRowModelsFeature`,e,{table_getCoreRowModel:{fn:()=>xp(e)},table_getPreFilteredRowModel:{fn:()=>Sp(e)},table_getFilteredRowModel:{fn:()=>Cp(e)},table_getPreGroupedRowModel:{fn:()=>wp(e)},table_getGroupedRowModel:{fn:()=>Tp(e)},table_getPreSortedRowModel:{fn:()=>Ep(e)},table_getSortedRowModel:{fn:()=>Dp(e)},table_getPreExpandedRowModel:{fn:()=>Op(e)},table_getExpandedRowModel:{fn:()=>kp(e)},table_getPrePaginatedRowModel:{fn:()=>Ap(e)},table_getPaginatedRowModel:{fn:()=>jp(e)},table_getRowModel:{fn:()=>Mp(e)}})}};function Pp(e){if(!e._cellPrototype){e._cellPrototype={table:e};let t=Object.values(e._features);for(let n=0;n{t._displayIndexCache=e.length,e.push(t),t.subRows.length&&t.getIsExpanded?.()&&t.subRows.forEach(n)};return t.forEach(n),e}for(let e=0;ee.subRows)}function Hp(e){let t=e.getCoreRowModel().flatRows,n=0;for(let e=0;e{gf(`coreRowsFeature`,e,t,{row_getDisplayIndex:{fn:e=>Ip(e)},row_getAllCellsByColumnId:{fn:e=>Kp(e),memoDeps:e=>[e.getAllCells()]},row_getAllCells:{fn:e=>Gp(e),memoDeps:e=>[e.table.getAllLeafColumns()]},row_getLeafRows:{fn:e=>Vp(e),memoDeps:e=>[e.subRows]},row_getParentRow:{fn:e=>Up(e)},row_getParentRows:{fn:e=>Wp(e)},row_getUniqueValues:{fn:(e,t)=>zp(e,t)},row_getValue:{fn:(e,t)=>Rp(e,t)},row_renderValue:{fn:(e,t)=>Bp(e,t)}})},constructTableAPIs:e=>{hf(`coreRowsFeature`,e,{table_getRowsInDisplayOrder:{fn:()=>Lp(e),memoDeps:()=>[e.getPrePaginatedRowModel().rows,e.options.paginateExpandedRows,e.options.paginateExpandedRows===!1?e.atoms.expanded?.get():void 0]},table_getRowId:{fn:(t,n,r)=>qp(t,e,n,r)},table_getRow:{fn:(t,n)=>Jp(e,t,n)},table_getMaxSubRowDepth:{fn:()=>Hp(e),memoDeps:()=>[e.getCoreRowModel()]}})}};function Xp(e,t,n=(e,t)=>e===t){let r=t===void 0?e.options.state:t;e._reactivity.batch(()=>{if(r)for(let t in r){let i=e.baseAtoms[t];if(!i)continue;let a=r[t],o=a===void 0?e.initialState[t]:a;n(e._reactivity.untrack(()=>i.get()),o)||i.set(()=>o)}})}function Zp(e,t,n=(e,t)=>e===t){e._reactivity.batch(()=>{Xp(e,t,n),e._reactivity.commit?.()})}function Qp(e){let t=ef(e.initialState);e._reactivity.batch(()=>{let n=Object.keys(t);for(let r=0;rr):e.options=r,n?.syncExternalState!==!1&&Zp(e,r.state??null)}var tm={coreCellsFeature:xf,coreColumnsFeature:Jf,coreHeadersFeature:np,coreRowModelsFeature:Np,coreRowsFeature:Yp,coreTablesFeature:{constructTableAPIs:e=>{hf(`coreTablesFeature`,e,{table_reset:{fn:()=>Qp(e)},table_setOptions:{fn:t=>em(e,t)}})}}};function nm(){return{accessor:(e,t)=>typeof e==`function`?{...t,accessorFn:e}:{...t,accessorKey:e},columns:e=>e,display:e=>e,group:e=>e}}function rm(e){return e}function im(e,t={}){return Object.values(e).forEach(e=>{t=e.getInitialState?.(t)??t}),ef(t)}function am(e){let t=e.features.coreReactivityFeature,{aggregationFns:n,columnMeta:r,coreRowModel:i,expandedRowModel:a,facetedMinMaxValues:o,facetedRowModel:s,facetedUniqueValues:c,filterFns:l,filterMeta:u,filteredRowModel:d,groupedRowModel:f,paginatedRowModel:p,sortFns:m,sortedRowModel:h,tableMeta:g,..._}=e.features,v={_cellInstanceInitFns:[],_columnInstanceInitFns:[],_features:{...tm,..._},_headerGroupInstanceInitFns:[],_headerInstanceInitFns:[],_reactivity:t,_rowInstanceInitFns:[],_rowModelFns:{aggregationFns:n,filterFns:l,sortFns:m},_rowModels:{},atoms:{},baseAtoms:{}},y=Object.values(v._features),b={...y.reduce((e,t)=>Object.assign(e,t.getDefaultTableOptions?.(v)),{}),...e};if(t.wrapExternalAtoms&&b.atoms)for(let[e,n]of Object.entries(b.atoms)){let r=n,i=t.createWritableAtom(r.get(),{debugName:`externalAtom/${e}`});b.atoms[e]=i;let a=!1,o=r.subscribe(e=>{a||i.set(e)}),s=i.subscribe(e=>{a=!0,r.set(e),a=!1});t.addSubscription(o),t.addSubscription(s)}t.createOptionsStore?(v.optionsStore=t.createWritableAtom(b,{debugName:`table/optionsStore`}),Object.defineProperty(v,"options",{configurable:!0,enumerable:!0,get(){return v.optionsStore.get()},set(e){v.optionsStore.set(()=>e)}})):v.options=b,v.initialState=im(v._features,v.options.initialState);let x=Object.keys(v.initialState);for(let e=0;e{let e=v.options,t=e.atoms?.[n],r=t?t.get():v.baseAtoms[n].get();if(t)return r;let i=e.state;if(i&&nf(i,n)){let e=i[n];return e===void 0?v.initialState[n]:e}return r},{debugName:`table/atoms/${n}`})}Xp(v),v.store=Yd(t.createReadonlyAtom(()=>{let e={};for(let t=0;t`u`?s.useEffect:s.useLayoutEffect;function sm(e,t){let[{table:n,rootSource:r}]=(0,s.useState)(()=>{let t=am({...e,features:{coreReactivityFeature:Qd(),...e.features}});return t.Subscribe=(e=>Jd({...e,source:e.source??t.store})),t.FlexRender=xd,{table:t,rootSource:Zd(t.store,Bd)}}),i=n;em(i,t=>({...t,...e}),{syncExternalState:!1});let a=i.options.state,o=r.get(),c=qd(r,t,{compare:Bd});return om(()=>{r.markCommitted(o),Zp(i,a??null,Bd)}),(0,s.useMemo)(()=>({...n,options:e,state:c}),[n,e,c])}var cm=rm({});function lm(e){return typeof e==`number`?`${e}px`:e}function um(e){return e instanceof Element&&!!e.closest(`button, a, input, select, textarea, [role='button']`)}function dm({columns:e,data:t,getRowId:n,caption:r,minWidth:i=880,loading:a=!1,error:o=``,onRetry:c,empty:l={title:`没有数据`},pagination:u,onRowActivate:d,rowAriaLabel:f}){let p=(0,s.useMemo)(()=>nm(),[]),m=sm({features:cm,columns:(0,s.useMemo)(()=>p.columns(e.map(e=>p.display({id:e.id,header:()=>e.header,cell:t=>e.cell(t.row.original)}))),[e,p]),data:t,getRowId:n}),h=(e,t)=>{!d||e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),d(t))},g=u&&t.length?u.pageIndex*u.pageSize+1:0,_=u?Math.min(u.pageIndex*u.pageSize+t.length,u.total):0;return(0,K.jsxs)(`div`,{className:`studio-data-table`,"aria-busy":a||void 0,"data-state":a?`loading`:o?`error`:t.length?`ready`:`empty`,children:[(0,K.jsxs)(`div`,{className:`studio-data-table-scroll`,children:[!a&&!o&&(0,K.jsxs)(`table`,{style:{minWidth:lm(i)},children:[r&&(0,K.jsx)(`caption`,{className:`sr-only`,children:r}),(0,K.jsx)(`thead`,{children:m.getHeaderGroups().map(t=>(0,K.jsx)(`tr`,{children:t.headers.map((t,n)=>{let r=e[n],i={width:lm(r?.width),minWidth:lm(r?.minWidth)};return(0,K.jsx)(`th`,{className:r?.headerClassName,style:i,children:t.isPlaceholder?null:(0,K.jsx)(m.FlexRender,{header:t})},t.id)})},t.id))}),(0,K.jsx)(`tbody`,{children:m.getRowModel().rows.map(t=>(0,K.jsx)(`tr`,{className:d?`is-interactive`:void 0,tabIndex:d?0:void 0,"aria-label":f?.(t.original),onKeyDown:e=>h(e,t.original),onClick:e=>{d&&!um(e.target)&&d(t.original)},children:t.getAllCells().map((t,n)=>(0,K.jsx)(`td`,{className:e[n]?.className,children:(0,K.jsx)(m.FlexRender,{cell:t})},t.id))},t.id))})]}),a&&(0,K.jsxs)(`div`,{className:`studio-data-table-state is-loading`,role:`status`,children:[(0,K.jsx)(`span`,{className:`sr-only`,children:`正在加载`}),(0,K.jsx)(`div`,{className:`studio-table-skeleton`,"aria-hidden":`true`,children:[0,1,2,3].map(e=>(0,K.jsxs)(`div`,{className:`studio-table-skeleton-row`,children:[(0,K.jsx)(`i`,{}),(0,K.jsx)(`i`,{}),(0,K.jsx)(`i`,{}),(0,K.jsx)(`i`,{})]},e))}),(0,K.jsxs)(`span`,{className:`studio-table-loading-copy`,children:[(0,K.jsx)(ke,{className:`animate-spin`,size:14}),` 正在加载`]})]}),!a&&o&&(0,K.jsxs)(`div`,{className:`studio-data-table-state is-error`,role:`alert`,children:[(0,K.jsx)(U,{size:20}),(0,K.jsx)(`strong`,{children:`加载失败`}),(0,K.jsx)(`span`,{children:o}),c&&(0,K.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:c,children:`重新加载`})]}),!a&&!o&&t.length===0&&(0,K.jsxs)(`div`,{className:`studio-data-table-state empty-state${l.action?``:` inline`}`,children:[l.icon&&(0,K.jsx)(`span`,{className:`empty-icon`,children:l.icon}),(0,K.jsx)(`h2`,{children:l.title}),l.description&&(0,K.jsx)(`p`,{children:l.description}),l.action]})]}),u&&!a&&!o&&(0,K.jsxs)(`footer`,{className:`studio-data-table-pagination`,children:[(0,K.jsxs)(`span`,{children:[`第 `,u.pageIndex+1,` 页 · `,g,`–`,_,` / `,u.total,` 条`]}),(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:u.pageIndex<=0,onClick:u.onPreviousPage,children:[(0,K.jsx)(V,{size:14}),`上一页`]}),(0,K.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:!u.hasNextPage,onClick:u.onNextPage,children:[`下一页`,(0,K.jsx)(H,{size:14})]})]})]})]})}var fm=Object.defineProperty,pm=(e,t)=>fm(e,`name`,{value:t,configurable:!0});function mm(e,[t,n]){return Math.min(n,Math.max(t,e))}pm(mm,`clamp`);var hm=Object.defineProperty,gm=(e,t)=>hm(e,`name`,{value:t,configurable:!0});function _m(e){let t=s.useRef({value:e,previous:e});return s.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}gm(_m,`usePrevious`);var vm=Object.defineProperty,ym=(e,t)=>vm(e,`name`,{value:t,configurable:!0}),bm=Object.freeze({position:`absolute`,border:0,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,wordWrap:`normal`}),xm=s.forwardRef(ym(function(e,t){return(0,K.jsx)(yn.span,{...e,ref:t,style:{...bm,...e.style}})},`VisuallyHidden`)),Sm=Object.defineProperty,Cm=(e,t)=>Sm(e,`name`,{value:t,configurable:!0}),wm=[` `,`Enter`,`ArrowUp`,`ArrowDown`],Tm=[` `,`Enter`],Em=`Select`,[Dm,Om,km]=Ea(Em),[Am,jm]=Nt(Em,[km,cc]),Mm=cc(),[Nm,Pm]=Am(Em),[Fm,Im]=Am(Em);function Lm(e){let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:c,onValueChange:l,dir:u,name:d,autoComplete:f,disabled:p,required:m,form:h,internal_do_not_use_render:g}=e,_=Mm(t),[v,y]=s.useState(null),[b,x]=s.useState(null),[S,C]=s.useState(!1),w=Ba(u),[T,E]=Yt({prop:r,defaultProp:i??!1,onChange:a,caller:Em}),[D,O]=Yt({prop:o,defaultProp:c,onChange:l,caller:Em}),k=s.useRef(null),A=s.useRef(D);s.useEffect(()=>{let e=h?v?.ownerDocument.getElementById(h):v?.form;if(e instanceof HTMLFormElement){let t=Cm(()=>O(A.current),`reset`);return e.addEventListener(`reset`,t),()=>e.removeEventListener(`reset`,t)}},[h,v,O]);let j=!v||!!h||!!v.closest(`form`),[M,N]=s.useState(new Set),P=Bt(),F=Array.from(M).map(e=>e.props.value).join(`;`),I=s.useCallback(e=>{N(t=>new Set(t).add(e))},[]),L=s.useCallback(e=>{N(t=>{let n=new Set(t);return n.delete(e),n})},[]),R={required:m,trigger:v,onTriggerChange:y,valueNode:b,onValueNodeChange:x,valueNodeHasChildren:S,onValueNodeHasChildrenChange:C,contentId:P,value:D,onValueChange:O,open:T,onOpenChange:E,dir:w,triggerPointerDownPosRef:k,disabled:p,name:d,autoComplete:f,form:h,nativeOptions:M,nativeSelectKey:F,isFormControl:j};return(0,K.jsx)(wc,{..._,children:(0,K.jsx)(Nm,{scope:t,...R,children:(0,K.jsx)(Dm.Provider,{scope:t,children:(0,K.jsx)(Fm,{scope:t,onNativeOptionAdd:I,onNativeOptionRemove:L,children:wh(g)?g(R):n})})})})}Cm(Lm,`SelectProvider`);var Rm=Cm(e=>{let{__scopeSelect:t,children:n,...r}=e;return(0,K.jsx)(Lm,{__scopeSelect:t,...r,internal_do_not_use_render:({isFormControl:e})=>(0,K.jsxs)(K.Fragment,{children:[n,e?(0,K.jsx)(Ch,{__scopeSelect:t}):null]})})},`Select`),zm=`SelectTrigger`,Bm=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,disabled:r=!1,...i}=e,a=Mm(n),o=Pm(zm,n),c=o.disabled||r,l=kt(t,o.onTriggerChange),u=Om(n),d=s.useRef(`touch`),[f,p,m]=Eh(e=>{let t=u().filter(e=>!e.disabled),n=Dh(t,e,t.find(e=>e.value===o.value));n!==void 0&&o.onValueChange(n.value)}),h=Cm(e=>{c||(o.onOpenChange(!0),m()),e&&(o.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})},`handleOpen`);return(0,K.jsx)(Tc,{asChild:!0,...a,children:(0,K.jsx)(yn.button,{type:`button`,role:`combobox`,"aria-controls":o.open?o.contentId:void 0,"aria-expanded":o.open,"aria-required":o.required,"aria-autocomplete":`none`,dir:o.dir,"data-state":o.open?`open`:`closed`,disabled:c,"data-disabled":c?``:void 0,"data-placeholder":Th(o.value)?``:void 0,...i,ref:l,onClick:q(i.onClick,e=>{e.currentTarget.focus(),d.current!==`mouse`&&h(e)}),onPointerDown:q(i.onPointerDown,e=>{d.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(h(e),e.preventDefault())}),onKeyDown:q(i.onKeyDown,e=>{let t=f.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&p(e.key),!(t&&e.key===` `)&&wm.includes(e.key)&&(h(),e.preventDefault())})})})},`SelectTrigger`)),Vm=`SelectValue`,Hm=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...c}=e,l=Pm(Vm,n),{onValueNodeHasChildrenChange:u}=l,d=a!==void 0,f=kt(t,l.onValueNodeChange);Ft(()=>{u(d)},[u,d]);let p=Th(l.value);return(0,K.jsx)(yn.span,{...c,asChild:!p&&c.asChild,ref:f,style:{pointerEvents:`none`},children:(0,K.jsx)(s.Fragment,{children:p?o:a},p?`placeholder`:`value`)})},`SelectValue`)),Um=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,children:r,...i}=e;return(0,K.jsx)(yn.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})},`SelectIcon`)),[Wm,Gm]=Am(`SelectPortal`,{forceMount:void 0}),Km=Cm(e=>{let{__scopeSelect:t,forceMount:n,...r}=e;return(0,K.jsx)(Wm,{scope:e.__scopeSelect,forceMount:n,children:(0,K.jsx)(nr,{asChild:!0,...r})})},`SelectPortal`),qm=`SelectContent`,Jm=s.forwardRef(Cm(function(e,t){let n=Gm(qm,e.__scopeSelect),{forceMount:r=n.forceMount,...i}=e,a=Pm(qm,e.__scopeSelect),[o,c]=s.useState();return Ft(()=>{c(new DocumentFragment)},[]),(0,K.jsx)(or,{present:r||a.open,children:({present:e})=>e?(0,K.jsx)(eh,{...i,ref:t}):(0,K.jsx)(Ym,{...i,fragment:o})})},`SelectContent`)),Ym=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,children:r,fragment:i}=e;return i?en.createPortal((0,K.jsx)(Zm,{scope:n,children:(0,K.jsx)(Dm.Slot,{scope:n,children:(0,K.jsx)(`div`,{ref:t,children:r})})}),i):null},`SelectContentFragment`)),Xm=10,[Zm,Qm]=Am(qm),$m=rn(`SelectContent.RemoveScroll`),eh=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n}=e,{position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:o,side:c,sideOffset:l,align:u,alignOffset:d,arrowPadding:f,collisionBoundary:p,collisionPadding:m,sticky:h,hideWhenDetached:g,avoidCollisions:_,...v}=e,y=Pm(qm,n),[b,x]=s.useState(null),[S,C]=s.useState(null),w=kt(t,x),[T,E]=s.useState(null),[D,O]=s.useState(null),k=Om(n),[A,j]=s.useState(!1),M=s.useRef(!1);s.useEffect(()=>{if(b)return Ri(b)},[b]),_r();let N=s.useCallback(e=>{let[t,...n]=k().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&S&&(S.scrollTop=0),n===r&&S&&(S.scrollTop=S.scrollHeight),n?.focus(),document.activeElement!==i))return},[k,S]),P=s.useCallback(()=>N([T,b]),[N,T,b]);s.useEffect(()=>{A&&P()},[A,P]);let{onOpenChange:F,triggerPointerDownPosRef:I}=y;s.useEffect(()=>{if(b){let e={x:0,y:0},t=Cm(t=>{e={x:Math.abs(Math.round(t.pageX)-(I.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(I.current?.y??0))}},`handlePointerMove`),n=Cm(n=>{e.x<=10&&e.y<=10?n.preventDefault():n.composedPath().includes(b)||F(!1),document.removeEventListener(`pointermove`,t),I.current=null},`handlePointerUp`);return I.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[b,F,I]),s.useEffect(()=>{let e=Cm(()=>F(!1),`close`);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[F]);let[L,R]=Eh(e=>{let t=k().filter(e=>!e.disabled),n=Dh(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current?.focus())}),z=s.useCallback((e,t,n)=>{let r=!M.current&&!n;(y.value!==void 0&&y.value===t||r)&&(E(e),r&&(M.current=!0))},[y.value]),B=s.useCallback(()=>b?.focus(),[b]),V=s.useCallback((e,t,n)=>{let r=!M.current&&!n;(y.value!==void 0&&y.value===t||r)&&O(e)},[y.value]),H=r===`popper`?nh:th,ee=H===nh?{side:c,sideOffset:l,align:u,alignOffset:d,arrowPadding:f,collisionBoundary:p,collisionPadding:m,sticky:h,hideWhenDetached:g,avoidCollisions:_}:{};return(0,K.jsx)(Zm,{scope:n,content:b,viewport:S,onViewportChange:C,itemRefCallback:z,selectedItem:T,onItemLeave:B,itemTextRefCallback:V,focusSelectedItem:P,selectedItemText:D,position:r,isPositioned:A,searchRef:L,children:(0,K.jsx)(ki,{as:$m,allowPinchZoom:!0,children:(0,K.jsx)(Un,{asChild:!0,trapped:y.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:q(i,e=>{y.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,K.jsx)(jn,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>y.onOpenChange(!1),children:(0,K.jsx)(H,{role:`listbox`,id:y.contentId,"data-state":y.open?`open`:`closed`,dir:y.dir,onContextMenu:e=>e.preventDefault(),...v,...ee,onPlaced:()=>j(!0),ref:w,style:{display:`flex`,flexDirection:`column`,outline:`none`,...v.style},onKeyDown:q(v.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&R(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=k().filter(e=>!e.disabled).map(e=>e.ref.current);if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>N(t)),e.preventDefault()}})})})})})})},`SelectContentImpl`)),th=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,onPlaced:r,...i}=e,a=Pm(qm,n),o=Qm(qm,n),[c,l]=s.useState(null),[u,d]=s.useState(null),f=kt(t,d),p=Om(n),m=s.useRef(!1),h=s.useRef(!0),{viewport:g,selectedItem:_,selectedItemText:v,focusSelectedItem:y}=o,b=s.useCallback(()=>{if(a.trigger&&a.valueNode&&c&&u&&g&&_&&v){let e=a.trigger.getBoundingClientRect(),t=u.getBoundingClientRect(),n=a.valueNode.getBoundingClientRect(),i=v.getBoundingClientRect();if(a.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,o=e.left-a,s=e.width+o,l=Math.max(s,t.width),u=window.innerWidth-Xm,d=mm(a,[Xm,Math.max(Xm,u-l)]);c.style.minWidth=s+`px`,c.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,s=e.width+o,l=Math.max(s,t.width),u=window.innerWidth-Xm,d=mm(a,[Xm,Math.max(Xm,u-l)]);c.style.minWidth=s+`px`,c.style.right=d+`px`}let o=p(),s=window.innerHeight-Xm*2,l=g.scrollHeight,d=window.getComputedStyle(u),f=parseInt(d.borderTopWidth,10),h=parseInt(d.paddingTop,10),y=parseInt(d.borderBottomWidth,10),b=parseInt(d.paddingBottom,10),x=f+h+l+b+y,S=Math.min(_.offsetHeight*5,x),C=window.getComputedStyle(g),w=parseInt(C.paddingTop,10),T=parseInt(C.paddingBottom,10),E=e.top+e.height/2-Xm,D=s-E,O=_.offsetHeight/2,k=_.offsetTop+O,A=f+h+k,j=x-A;if(A<=E){let e=o.length>0&&_===o[o.length-1].ref.current;c.style.bottom=`0px`;let t=u.clientHeight-g.offsetTop-g.offsetHeight,n=A+Math.max(D,O+(e?T:0)+t+y);c.style.height=n+`px`}else{let e=o.length>0&&_===o[0].ref.current;c.style.top=`0px`;let t=Math.max(E,f+g.offsetTop+(e?w:0)+O)+j;c.style.height=t+`px`,g.scrollTop=A-E+g.offsetTop}c.style.margin=`${Xm}px 0`,c.style.minHeight=S+`px`,c.style.maxHeight=s+`px`,r?.(),requestAnimationFrame(()=>m.current=!0)}},[p,a.trigger,a.valueNode,c,u,g,_,v,a.dir,r]);Ft(()=>b(),[b]);let[x,S]=s.useState();Ft(()=>{u&&S(window.getComputedStyle(u).zIndex)},[u]);let C=s.useCallback(e=>{e&&h.current===!0&&(b(),y?.(),h.current=!1)},[b,y]);return(0,K.jsx)(rh,{scope:n,contentWrapper:c,shouldExpandOnScrollRef:m,onScrollButtonChange:C,children:(0,K.jsx)(`div`,{ref:l,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:x},children:(0,K.jsx)(yn.div,{...i,ref:f,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})},`SelectItemAlignedPosition`)),nh=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,align:r=`start`,collisionPadding:i=Xm,...a}=e,o=Mm(n);return(0,K.jsx)(Ec,{...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})},`SelectPopperPosition`)),[rh,ih]=Am(qm,{}),ah=`SelectViewport`,oh=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,nonce:r,...i}=e,a=Qm(ah,n),o=ih(ah,n),c=kt(t,a.onViewportChange),l=s.useRef(0);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`},nonce:r}),(0,K.jsx)(Dm.Slot,{scope:n,children:(0,K.jsx)(yn.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:c,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:q(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=o;if(r?.current&&n){let e=Math.abs(l.current-t.scrollTop);if(e>0){let r=window.innerHeight-Xm*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o0?s:0,n.style.justifyContent=`flex-end`)}}}l.current=t.scrollTop})})})]})},`SelectViewport`)),[sh,ch]=Am(`SelectGroup`),lh=`SelectItem`,[uh,dh]=Am(lh),fh=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...o}=e,c=Pm(lh,n),l=Qm(lh,n),u=c.value===r,[d,f]=s.useState(a??``),[p,m]=s.useState(!1),h=kt(t,Cn(e=>l.itemRefCallback?.(e,r,i))),g=Bt(),_=s.useRef(`touch`),v=Cm(()=>{i||(c.onValueChange(r),c.onOpenChange(!1))},`handleSelect`);return(0,K.jsx)(uh,{scope:n,value:r,disabled:i,textId:g,isSelected:u,onItemTextChange:s.useCallback(e=>{f(t=>t||(e?.textContent??``).trim())},[]),children:(0,K.jsx)(Dm.ItemSlot,{scope:n,value:r,disabled:i,textValue:d,children:(0,K.jsx)(yn.div,{role:`option`,"aria-labelledby":g,"data-highlighted":p?``:void 0,"aria-selected":u&&p,"data-state":u?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...o,ref:h,onFocus:q(o.onFocus,()=>m(!0)),onBlur:q(o.onBlur,()=>m(!1)),onClick:q(o.onClick,()=>{_.current!==`mouse`&&v()}),onPointerUp:q(o.onPointerUp,()=>{_.current===`mouse`&&v()}),onPointerDown:q(o.onPointerDown,e=>{_.current=e.pointerType}),onPointerMove:q(o.onPointerMove,e=>{_.current=e.pointerType,i?l.onItemLeave?.():_.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:q(o.onPointerLeave,e=>{e.currentTarget===document.activeElement&&l.onItemLeave?.()}),onKeyDown:q(o.onKeyDown,e=>{i||e.target!==e.currentTarget||(l.searchRef?.current===``||e.key!==` `)&&(Tm.includes(e.key)&&v(),e.key===` `&&e.preventDefault())})})})})},`SelectItem`)),ph=`SelectItemText`,mh=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,className:r,style:i,...a}=e,o=Pm(ph,n),c=Qm(ph,n),l=dh(ph,n),u=Im(ph,n),[d,f]=s.useState(null),p=Cn(e=>c.itemTextRefCallback?.(e,l.value,l.disabled)),m=kt(t,f,l.onItemTextChange,p),h=d?.textContent,g=s.useMemo(()=>(0,K.jsx)(`option`,{value:l.value,disabled:l.disabled,children:h},l.value),[l.disabled,l.value,h]),{onNativeOptionAdd:_,onNativeOptionRemove:v}=u;return Ft(()=>(_(g),()=>v(g)),[_,v,g]),(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(yn.span,{id:l.textId,...a,ref:m}),l.isSelected&&o.valueNode&&!o.valueNodeHasChildren&&!Th(o.value)?en.createPortal(a.children,o.valueNode):null]})},`SelectItemText`)),hh=`SelectItemIndicator`,gh=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,...r}=e;return dh(hh,n).isSelected?(0,K.jsx)(yn.span,{"aria-hidden":!0,...r,ref:t}):null},`SelectItemIndicator`)),_h=`SelectScrollUpButton`,vh=s.forwardRef(Cm(function(e,t){let n=Qm(_h,e.__scopeSelect),r=ih(_h,e.__scopeSelect),[i,a]=s.useState(!1),o=kt(t,r.onScrollButtonChange);return Ft(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollTop>0;a(e)};Cm(e,`handleScroll`);let t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,K.jsx)(xh,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null},`SelectScrollUpButton`)),yh=`SelectScrollDownButton`,bh=s.forwardRef(Cm(function(e,t){let n=Qm(yh,e.__scopeSelect),r=ih(yh,e.__scopeSelect),[i,a]=s.useState(!1),o=kt(t,r.onScrollButtonChange);return Ft(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight,n=Math.ceil(t.scrollTop)t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,K.jsx)(xh,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null},`SelectScrollDownButton`)),xh=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=Qm(`SelectScrollButton`,n),o=s.useRef(null),c=Om(n),l=s.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return s.useEffect(()=>()=>l(),[l]),Ft(()=>{c().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[c]),(0,K.jsx)(yn.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:q(i.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:q(i.onPointerMove,()=>{a.onItemLeave?.(),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:q(i.onPointerLeave,()=>{l()})})},`SelectScrollButtonImpl`)),Sh=`SelectBubbleInput`,Ch=s.forwardRef(Cm(function({__scopeSelect:e,...t},n){let r=Pm(Sh,e),{value:i,onValueChange:a,required:o,disabled:c,name:l,autoComplete:u,form:d}=r,{nativeOptions:f,nativeSelectKey:p}=r,m=s.useRef(null),h=kt(n,m),g=i??``,_=_m(g),v=Array.from(f).some(e=>(e.props.value??``)===``);return s.useEffect(()=>{let e=m.current;if(!e)return;let t=window.HTMLSelectElement.prototype,n=Object.getOwnPropertyDescriptor(t,`value`).set;if(_!==g&&n){let t=new Event(`change`,{bubbles:!0});n.call(e,g),e.dispatchEvent(t)}},[_,g]),(0,K.jsxs)(yn.select,{"aria-hidden":!0,required:o,tabIndex:-1,name:l,autoComplete:u,disabled:c,form:d,onChange:e=>a(e.target.value),...t,style:{...bm,...t.style},ref:h,defaultValue:g,children:[Th(i)&&!v?(0,K.jsx)(`option`,{value:``}):null,Array.from(f)]},p)},`SelectBubbleInput`));function wh(e){return typeof e==`function`}Cm(wh,`isFunction`);function Th(e){return e===``||e===void 0}Cm(Th,`shouldShowPlaceholder`);function Eh(e){let t=Cn(e),n=s.useRef(``),r=s.useRef(0),i=s.useCallback(e=>{let i=n.current+e;t(i),Cm((function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))}),`updateSearch`)(i)},[t]),a=s.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return s.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}Cm(Eh,`useTypeaheadSearch`);function Dh(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=Oh(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.textValue.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}Cm(Dh,`findNextItem`);function Oh(e,t){return e.map((n,r)=>e[(t+r)%e.length])}Cm(Oh,`wrapArray`);function kh({id:e,ariaLabel:t,value:n,placeholder:r=`请选择`,options:i,disabled:a=!1,className:o=``,onValueChange:c}){let[l,u]=(0,s.useState)(!1),d=i.find(e=>e.value===n);return(0,K.jsxs)(Rm,{value:n||void 0,open:l,disabled:a,onOpenChange:u,onValueChange:e=>{u(!1),c(e)},children:[(0,K.jsxs)(Bm,{id:e,className:`studio-select-trigger${o?` ${o}`:``}`,"aria-label":t,title:d?.label||r,children:[(0,K.jsx)(Hm,{placeholder:r,children:d?.label}),(0,K.jsx)(Um,{className:`studio-select-chevron`,children:(0,K.jsx)(B,{size:15})})]}),(0,K.jsx)(Km,{children:(0,K.jsxs)(Jm,{className:`studio-select-content`,position:`popper`,sideOffset:5,collisionPadding:10,children:[(0,K.jsx)(vh,{className:`studio-select-scroll`,children:(0,K.jsx)(ee,{size:14})}),(0,K.jsx)(oh,{className:`studio-select-viewport`,children:i.map(e=>(0,K.jsxs)(fh,{value:e.value,disabled:e.disabled,className:`studio-select-item`,children:[(0,K.jsx)(mh,{children:(0,K.jsxs)(`span`,{className:`studio-select-item-copy`,children:[(0,K.jsx)(`span`,{children:e.label}),e.description&&(0,K.jsx)(`small`,{children:e.description})]})}),(0,K.jsx)(gh,{className:`studio-select-check`,children:(0,K.jsx)(z,{size:14})})]},e.value))}),(0,K.jsx)(bh,{className:`studio-select-scroll`,children:(0,K.jsx)(B,{size:14})})]})})]})}function Ah(e){return e.spec?.runtime?.type===`codex`}function jh({agents:e,runtimeReady:t,runtimeChecked:n=!0,workspaceName:r,onCreate:i,onDetail:a,onChat:o,onBuild:c,onChanged:l}){let[u,d]=(0,s.useState)(``),[f,p]=(0,s.useState)(``),[m,h]=(0,s.useState)(0),[_,v]=(0,s.useState)(0),[y,b]=(0,s.useState)(null),[x,S]=(0,s.useState)(!1),[C,w]=(0,s.useState)(``);(0,s.useEffect)(()=>{Promise.all([g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()),g(`/api/v1/catalog/models`).then(e=>e.json()).catch(()=>null)]).then(([e,t])=>{let n=e.items||[],r=n.filter(e=>e.kind===`model`);t?.items?.length&&(r=[...r.filter(e=>e.source===`local`||e.source===`market`),...t.items]),h(r.filter(e=>e.status===`ready`).length),v(n.filter(e=>[`tool`,`mcp`,`skill`].includes(e.kind)&&e.status===`ready`).length)}).catch(()=>{})},[]);let T=(0,s.useMemo)(()=>e.filter(e=>{let t=!!e.builds?.some(e=>e.status===`SUCCEEDED`),n=u.trim().toLowerCase();return(!n||e.metadata.name.toLowerCase().includes(n)||e.metadata.id.toLowerCase().includes(n))&&(!f||f===`built`&&t||f===`draft`&&!t)}),[e,u,f]),E=(0,s.useMemo)(()=>[{id:`agent`,header:`Agent`,minWidth:220,className:`agent-name-column`,headerClassName:`agent-name-column`,cell:e=>{let t=e.metadata.labels?.[`agentkit.ksyun.com/template`]||`blank`;return(0,K.jsxs)(`div`,{className:`agent-cell`,children:[(0,K.jsx)(_t,{name:e.metadata.name,appearance:e.metadata.appearance,template:t}),(0,K.jsxs)(`div`,{className:`agent-cell-copy`,children:[(0,K.jsx)(`strong`,{children:e.metadata.name}),(0,K.jsx)(`span`,{children:e.metadata.id})]})]})}},{id:`template`,header:`运行时`,minWidth:100,className:`agent-runtime-column`,headerClassName:`agent-runtime-column`,cell:e=>{let t=e.spec?.runtime?.type||e.metadata.labels?.[`agentkit.ksyun.com/framework`]||`adk`;return(0,K.jsx)(`span`,{className:`tag mono`,children:t})}},{id:`capabilities`,header:`能力`,minWidth:170,className:`agent-capabilities-column`,headerClassName:`agent-capabilities-column`,cell:e=>{let t=e.spec?.bindings||{};return(0,K.jsxs)(`div`,{className:`resource-counts`,children:[(0,K.jsxs)(`span`,{children:[t.tools?.length||0,` Tool`]}),(0,K.jsxs)(`span`,{children:[t.mcpServers?.length||0,` MCP`]}),(0,K.jsxs)(`span`,{children:[t.skills?.length||0,` Skill`]})]})}},{id:`revision`,header:`Revision`,width:84,className:`agent-revision-column`,headerClassName:`agent-revision-column`,cell:e=>(0,K.jsxs)(`span`,{className:`mono`,children:[`r`,e.metadata.revision]})},{id:`build`,header:`最近校验 / 构建`,width:108,className:`agent-build-column`,headerClassName:`agent-build-column`,cell:e=>e.builds?.some(e=>e.status===`SUCCEEDED`)?(0,K.jsx)(`span`,{className:`badge`,"data-state":`ready`,children:Ah(e)?`声明已校验`:`已构建`}):(0,K.jsx)(`span`,{className:`badge`,"data-state":`idle`,children:`草稿`})},{id:`actions`,header:`操作`,minWidth:108,className:`actions-column agent-actions-column`,headerClassName:`actions-column agent-actions-column`,cell:e=>(0,K.jsxs)(`div`,{className:`row-actions`,children:[(0,K.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>o(e.metadata.id),children:`会话`}),(0,K.jsx)(pd,{label:`${e.metadata.name} 的更多操作`,items:[{label:`配置`,onSelect:()=>a(e.metadata.id)},{label:Ah(e)?`校验声明`:`构建`,onSelect:c},{label:`删除`,danger:!0,onSelect:()=>b(e)}]})]})}],[c,o,a]);async function D(){if(y){S(!0),w(``);try{let e=await g(`/api/v1/agents/${encodeURIComponent(y.metadata.id)}`,{method:`DELETE`});if(!e.ok){let t=await e.text().catch(()=>``),n=`删除失败(${e.status})`;try{n=JSON.parse(t)?.error?.message||n}catch{}throw Error(n)}}catch(e){w(e.message||`删除失败`)}S(!1),b(null),l()}}return(0,K.jsxs)(`div`,{className:`page-container agents-page`,"data-layout":`data`,children:[(0,K.jsx)(gd,{children:(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,disabled:!t,onClick:i,children:[(0,K.jsx)(qe,{size:16}),(0,K.jsx)(`span`,{children:`创建 Agent`})]})}),(0,K.jsxs)(`div`,{className:`data-page-body table-data-body`,children:[C&&(0,K.jsx)(`div`,{className:`form-error`,style:{marginBottom:16},children:C}),(0,K.jsxs)(`section`,{className:`agents-overview-section`,"aria-labelledby":`agents-overview-title`,title:r||`本地工作区`,children:[(0,K.jsx)(`h2`,{id:`agents-overview-title`,className:`sr-only`,children:`工作区概览`}),(0,K.jsxs)(`div`,{className:`stat-strip compact-summary`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`Agent`}),(0,K.jsx)(`strong`,{className:`stat-value`,children:e.length})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`可用模型`}),(0,K.jsx)(`strong`,{className:`stat-value`,children:m})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`能力资源`}),(0,K.jsx)(`strong`,{className:`stat-value`,children:_})]}),(0,K.jsxs)(`div`,{className:`runtime-summary`,"data-state":n?t?`ready`:`failed`:`pending`,children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`本地 Runtime`}),(0,K.jsxs)(`strong`,{className:`stat-value`,children:[(0,K.jsx)(`span`,{className:`summary-status-dot`}),n?t?`正常`:`连接失败`:`检查中`]})]})]}),n&&!t&&(0,K.jsxs)(`div`,{className:`compact-status-alert`,role:`alert`,children:[(0,K.jsx)(`strong`,{children:`本地 Runtime 连接失败`}),(0,K.jsx)(`span`,{children:`请确认本地服务正在运行,然后刷新页面。`})]})]}),(0,K.jsxs)(`section`,{className:`agents-catalog-section block`,"aria-labelledby":`agents-catalog-title`,children:[(0,K.jsxs)(`header`,{className:`agents-catalog-header`,children:[(0,K.jsx)(`h2`,{id:`agents-catalog-title`,children:`Agent 列表`}),(0,K.jsxs)(`div`,{className:`agents-catalog-meta`,children:[(0,K.jsx)(`span`,{children:T.length===e.length?`${e.length} 个 Agent`:`${T.length} / ${e.length} 个 Agent`}),(0,K.jsx)(`span`,{className:`sync-state`,children:`已同步`})]})]}),(0,K.jsxs)(`div`,{className:`section-toolbar`,children:[(0,K.jsxs)(`div`,{className:`search-field`,children:[(0,K.jsx)(Ye,{size:15}),(0,K.jsx)(`input`,{type:`search`,placeholder:`搜索 Agent 名称或 ID`,"aria-label":`搜索 Agent`,value:u,onChange:e=>d(e.target.value)})]}),(0,K.jsx)(kh,{className:`compact-select`,ariaLabel:`筛选 Agent 状态`,value:f||`__all__`,options:[{value:`__all__`,label:`全部状态`},{value:`built`,label:`已构建`},{value:`draft`,label:`草稿`}],onValueChange:e=>p(e===`__all__`?``:e)})]}),(0,K.jsx)(dm,{columns:E,data:T,getRowId:e=>e.metadata.id,caption:`Agent 列表`,minWidth:0,onRowActivate:e=>a(e.metadata.id),rowAriaLabel:e=>`${e.metadata.name} ${e.metadata.id}`,empty:{icon:(0,K.jsx)(N,{size:24}),title:u||f?`没有匹配的 Agent`:`还没有 Agent`,description:u||f?`调整搜索词或状态筛选。`:`创建第一个可运行的 Agent。`,action:!u&&!f?(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:i,children:[(0,K.jsx)(qe,{size:16}),(0,K.jsx)(`span`,{children:`创建 Agent`})]}):void 0}})]})]}),y&&(0,K.jsx)(Ca,{title:`确认删除 Agent「${y.metadata.name}」?`,description:`Agent ID:${y.metadata.id}。删除后其配置与 Revision 将移除,此操作不可撤销。`,confirmText:`确认删除`,busy:x,onConfirm:D,onCancel:()=>b(null)})]})}var Mh=e=>e.type===`checkbox`,Nh=e=>e.type===`file`,Ph=e=>e instanceof Date,Fh=e=>e==null,Ih=e=>typeof e==`object`,Lh=e=>!Fh(e)&&!Array.isArray(e)&&Ih(e)&&!Ph(e),Rh=e=>Lh(e)&&e.target?Mh(e.target)?e.target.checked:Nh(e.target)?e.target.files:e.target.value:e,zh=(e,t)=>t.split(`.`).some((t,n,r)=>!isNaN(Number(t))&&e.has(r.slice(0,n).join(`.`))),Bh=e=>{let t=e.constructor&&e.constructor.prototype;return Lh(t)&&t.hasOwnProperty(`isPrototypeOf`)},Vh=typeof window<`u`&&window.HTMLElement!==void 0&&typeof document<`u`;function Hh(e){if(e instanceof Date)return new Date(e);let t=typeof FileList<`u`&&e instanceof FileList;if(Vh&&(e instanceof Blob||t))return e;let n=Array.isArray(e);if(!n&&!(Lh(e)&&Bh(e)))return e;let r=n?[]:Object.create(Object.getPrototypeOf(e));for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=Hh(e[t]));return r}var Uh={BLUR:`blur`,FOCUS_OUT:`focusout`,CHANGE:`change`,SUBMIT:`submit`,TRIGGER:`trigger`,VALID:`valid`},Wh={onBlur:`onBlur`,onChange:`onChange`,onSubmit:`onSubmit`,onTouched:`onTouched`,all:`all`},Gh={max:`max`,min:`min`,maxLength:`maxLength`,minLength:`minLength`,pattern:`pattern`,required:`required`,validate:`validate`},Kh=`root`,qh=[`__proto__`,`constructor`,`prototype`],Jh=/^\w*$/,Yh=e=>Jh.test(e),Xh=e=>e===void 0,Zh=/[.[\]'"]/,Qh=e=>e.split(Zh).filter(Boolean),J=(e,t,n)=>{if(!t||!Lh(e))return n;let r=Yh(t)?[t]:Qh(t);if(r.some(e=>qh.includes(e)))return n;let i=r.reduce((e,t)=>Fh(e)?void 0:e[t],e);return Xh(i)||i===e?Xh(e[t])?n:e[t]:i},$h=e=>typeof e==`boolean`,eg=e=>typeof e==`function`,tg=(e,t,n)=>{let r=-1,i=Yh(t)?[t]:Qh(t),a=i.length,o=a-1;for(;++r{let i={};for(let a in e)Object.defineProperty(i,a,{get:()=>{let i=a;return t._proxyFormState[i]!==Wh.all&&(t._proxyFormState[i]=!r||Wh.all),n&&(n[i]=!0),e[i]}});return i},ig=Vh?s.useLayoutEffect:s.useEffect,ag=e=>Fh(e)||!Ih(e),og=(e,t)=>t.length===0&&!Array.isArray(e)&&!Bh(e);function sg(e,t,n=new WeakMap){if(e===t)return!0;if(ag(e)||ag(t))return Object.is(e,t);if(Ph(e)&&Ph(t))return Object.is(e.getTime(),t.getTime());let r=Object.keys(e),i=Object.keys(t);if(r.length!==i.length)return!1;if(og(e,r)||og(t,i))return Object.is(e,t);if(!r.length&&Array.isArray(e)!==Array.isArray(t))return!1;let a=n.get(e);if(a&&a.has(t))return!0;if(a)a.add(t);else{let r=new WeakSet;r.add(t),n.set(e,r)}for(let i of r){let r=e[i];if(!(i in t))return!1;if(i!==`ref`){let e=t[i];if(Ph(r)&&Ph(e)||(Lh(r)||Array.isArray(r))&&(Lh(e)||Array.isArray(e))?!sg(r,e,n):!Object.is(r,e))return!1}}return!0}function cg(){let e=s.useRef(!1),t=s.useRef(void 0);return{resyncIfNeeded:s.useCallback((n,r,i)=>{if(n&&e.current){let e=r();sg(t.current,e)||i(e)}e.current=!0},[]),snapshot:s.useCallback((e,n)=>{e&&(t.current=Hh(n()))},[])}}var lg=e=>typeof e==`string`,ug=(e,t,n,r,i)=>lg(e)?(r&&t.watch.add(e),J(n,e,i)):Array.isArray(e)?e.map(e=>(r&&t.watch.add(e),J(n,e))):(r&&(t.watchAll=!0),n),dg=e=>({isOnSubmit:!e||e===Wh.onSubmit,isOnBlur:e===Wh.onBlur,isOnChange:e===Wh.onChange,isOnAll:e===Wh.all,isOnTouch:e===Wh.onTouched}),fg=(e,t,n)=>{if(n)return!1;if(t.watchAll||t.watch.has(e))return!0;for(let n of t.watch)if(e.startsWith(n)&&e.charAt(n.length)===`.`)return!0;return!1},pg=(e,t,n,r)=>{for(let i of n||Object.keys(e)){if(i===`_f`)continue;let a=n?J(e,i):e[i];if(a){let{_f:e}=a;if(e){if(e.refs&&e.refs[0]&&t(e.refs[0],i)&&!r||e.ref&&t(e.ref,e.name)&&!r)return!0;if(pg(a,t))break}else if((Lh(a)||Array.isArray(a))&&pg(a,t))break}}},mg=(e,t,n)=>{let r=J(e,n),i=Array.isArray(r)?r:[];return tg(i,Kh,t[n]),tg(e,n,i),e},hg=e=>Lh(e)&&!Object.keys(e).length,gg=e=>{if(!Vh)return!1;let t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},_g=e=>e.type===`radio`,vg=e=>e instanceof RegExp,yg=(e,t,n,r,i)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[r]:i||!0}}:{},bg={value:!1,isValid:!1},xg={value:!0,isValid:!0},Sg=e=>{if(Array.isArray(e)){if(e.length>1){let t=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!Xh(e[0].attributes.value)?Xh(e[0].value)||e[0].value===``?xg:{value:e[0].value,isValid:!0}:xg:bg}return bg},Cg={isValid:!1,value:null},wg=e=>Array.isArray(e)?e.reduce((e,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:e,Cg):Cg;function Tg(e,t,n=`validate`){if(lg(e)||Array.isArray(e)&&e.every(lg)||$h(e)&&!e)return{type:n,message:lg(e)?e:``,ref:t}}var Eg=e=>Lh(e)&&!vg(e)?e:{value:e,message:``},Dg=async(e,t,n,r,i,a)=>{let{ref:o,refs:s,required:c,maxLength:l,minLength:u,min:d,max:f,pattern:p,validate:m,name:h,valueAsNumber:g,mount:_}=e._f,v=J(n,h);if(!_||t.has(h))return{};let y=s?s[0]:o,b=e=>{if(i&&y.reportValidity){let t=$h(e)?``:e||``;s?s.forEach(e=>e.setCustomValidity(t)):y.setCustomValidity(t),y.reportValidity()}},x={},S=_g(o),C=Mh(o),w=S||C,T=(g||Nh(o))&&Xh(o.value)&&Xh(v)||gg(o)&&o.value===``||v===``||Array.isArray(v)&&!v.length,E=yg.bind(null,h,r,x),D=(e,t,n,r=Gh.maxLength,i=Gh.minLength)=>{let a=e?t:n;x[h]={type:e?r:i,message:a,ref:o,...E(e?r:i,a)}};if(a?!Array.isArray(v)||!v.length:c&&(!w&&(T||Fh(v))||$h(v)&&!v||C&&!Sg(s).isValid||S&&!wg(s).isValid)){let{value:e,message:t}=lg(c)?{value:!!c,message:c}:Eg(c);if(e&&(x[h]={type:Gh.required,message:t,ref:y,...E(Gh.required,t)},!r))return b(t),x}if(!T&&(!Fh(d)||!Fh(f))){let e,t,n=Eg(f),i=Eg(d);if(!Fh(v)&&!Ph(v)&&!isNaN(v)){let r=o.valueAsNumber||v&&+v;Fh(n.value)||(e=r>n.value),Fh(i.value)||(t=rnew Date(new Date().toDateString()+` `+e),s=o.type==`time`,c=o.type==`week`;lg(n.value)&&v&&(e=s?a(v)>a(n.value):c?v>n.value:r>new Date(n.value)),lg(i.value)&&v&&(t=s?a(v)+e.value,i=!Fh(t.value)&&v.length<+t.value;if((n||i)&&(D(n,e.message,t.message),!r))return b(x[h].message),x}if(p&&!T&&lg(v)){let{value:e,message:t}=Eg(p);if(vg(e)&&!v.match(e)&&(x[h]={type:Gh.pattern,message:t,ref:o,...E(Gh.pattern,t)},!r))return b(t),x}if(m){if(eg(m)){let e=Tg(await m(v,n),y);if(e&&(x[h]={...e,...E(Gh.validate,e.message)},!r))return b(e.message),x}else if(Lh(m)){let e={};for(let t in m){if(!hg(e)&&!r)break;let i=Tg(await m[t](v,n),y,t);i&&(e={...i,...E(t,i.message)},b(i.message),r&&(x[h]=e))}if(!hg(e)&&(x[h]={ref:y,...e},!r))return x}}return b(!0),x},Og=e=>Array.isArray(e)?e:[e],kg=e=>Array.isArray(e)?e.filter(Boolean):[];function Ag(e,t){let n=t.length-1,r=0;for(;rqh.includes(String(e))))return e;let r=n.length===1?e:Ag(e,n),i=n.length-1,a=n[i];return r&&delete r[a],i!==0&&(Lh(r)&&hg(r)||Array.isArray(r)&&jg(r))&&Mg(e,n.slice(0,-1)),e}var Ng=e=>{let t={};for(let n of Object.keys(e))if(Ih(e[n])&&e[n]!==null&&!Ph(e[n])){let r=Ng(e[n]);for(let e of Object.keys(r))t[`${n}.${e}`]=r[e]}else t[n]=e[n];return t},Pg=s.createContext(null);Pg.displayName=`HookFormContext`;var Fg=({children:e,watch:t,getValues:n,getFieldState:r,setError:i,clearErrors:a,setValue:o,setValues:c,trigger:l,formState:u,resetField:d,reset:f,resetDefaultValues:p,handleSubmit:m,unregister:h,control:g,register:_,setFocus:v,subscribe:y})=>{let b=s.useMemo(()=>({watch:t,getValues:n,getFieldState:r,setError:i,clearErrors:a,setValue:o,setValues:c,trigger:l,formState:u,resetField:d,reset:f,resetDefaultValues:p,handleSubmit:m,unregister:h,control:g,register:_,setFocus:v,subscribe:y}),[a,g,u,r,n,m,_,f,p,d,i,v,o,c,y,l,h,t]);return s.createElement(Pg.Provider,{value:b},s.createElement(ng.Provider,{value:b.control},e))},Ig=()=>{let e=[];return{get observers(){return e},next:t=>{for(let n of e)n.next&&n.next(t)},subscribe:t=>(e.push(t),{unsubscribe:()=>{e=e.filter(e=>e!==t)}}),unsubscribe:()=>{e=[]}}};function Lg(e,t){let n={};for(let r in e)if(e.hasOwnProperty(r)){let i=e[r],a=t[r];if(i&&Lh(i)&&a){let e=Lg(i,a);Lh(e)&&(n[r]=e)}else e[r]&&(n[r]=a)}return n}var Rg=e=>e.type===`select-multiple`,zg=e=>_g(e)||Mh(e),Bg=e=>gg(e)&&e.isConnected;function Vg(e){return Array.isArray(e)||Lh(e)}function Hg(e,t,n=``,r=[]){for(let i in e){let a=n?`${n}.${i}`:i,o=e[i];Vg(o)&&Vg(J(t,a))?Hg(o,t,a,r):r.push(a)}return r}var Ug=e=>{for(let t in e)if(eg(e[t]))return!0;return!1};function Wg(e){return Array.isArray(e)||Lh(e)&&!Ug(e)}function Gg(e){return!!(e&&`_f`in e)}function Kg(e){return Array.isArray(e)?!e.some(e=>!Xh(e)):!Object.keys(e).length}function qg(e,t){Array.isArray(e)?e[t]=void 0:delete e[t]}function Jg(e,t={},n){for(let r in e){let i=e[r],a=n&&n[r];Wg(i)&&(!Array.isArray(i)||!Gg(a))?(t[r]=Array.isArray(i)?[]:{},Jg(i,t[r],a),Kg(t[r])&&qg(t,r)):Xh(i)||(t[r]=!0)}return t}function Yg(e,t,n,r){n||=Jg(t,{},r);for(let i in e){let a=e[i],o=r&&r[i];Wg(a)&&(!Array.isArray(a)||!Gg(o))?(Xh(t)||ag(n[i])?n[i]=Jg(a,Array.isArray(a)?[]:{},o):Yg(a,Fh(t)?{}:t[i],n[i],o),Kg(n[i])&&qg(n,i)):sg(a,t[i])?qg(n,i):n[i]=!0}return n}var Xg=(e,{valueAsNumber:t,valueAsDate:n,setValueAs:r})=>Xh(e)?e:t?e===``?NaN:e&&+e:n&&lg(e)?new Date(e):r?r(e):e;function Zg(e){let t=e.ref;return Nh(t)?t.files:_g(t)?wg(e.refs).value:Rg(t)?[...t.selectedOptions].map(({value:e})=>e):Mh(t)?Sg(e.refs).value:Xg(t.value,e)}var Qg=(e,t,n,r)=>{let i={};for(let n of e){let e=J(t,n);e&&tg(i,n,e._f)}return{criteriaMode:n,names:[...e],fields:i,shouldUseNativeValidation:r}},$g=e=>Xh(e)?e:vg(e)?e.source:Lh(e)?vg(e.value)?e.value.source:e.value:e,e_=`AsyncFunction`,t_=e=>{if(!e||!e.validate)return!1;if(eg(e.validate))return e.validate.constructor.name===e_;if(Lh(e.validate)){for(let t in e.validate)if(e.validate[t].constructor.name===e_)return!0}return!1},n_=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate);function r_(e,t,n){let r=J(e,n);if(r||Yh(n))return{error:r,name:n};let i=n.split(`.`);for(;i.length;){let r=i.join(`.`),a=J(t,r),o=J(e,r);if(a&&!Array.isArray(a)&&n!==r)return{name:n};if(o&&o.type)return{name:r,error:o};if(o&&o.root&&o.root.type)return{name:`${r}.root`,error:o.root};i.pop()}return{name:n}}var i_=(e,t,n,r)=>{n(e);let i=Object.keys(e).filter(e=>e!==`name`);return!i.length||r&&i.length>=Object.keys(t).length||i.find(e=>t[e]===(!r||Wh.all))},a_=(e,t,n)=>!e||!t||e===t||Og(e).some(e=>e&&(n?e===t||e.startsWith(t+`.`):e.startsWith(t)||t.startsWith(e))),o_=(e,t,n,r,i)=>i.isOnAll?!1:!n&&i.isOnTouch?!(t||e):(n?r.isOnBlur:i.isOnBlur)?!e:!(n?r.isOnChange:i.isOnChange)||e,s_=(e,t)=>{let n=J(e,t);!kg(n).length&&!n?.root&&Mg(e,t)},c_={mode:Wh.onSubmit,reValidateMode:Wh.onChange,shouldFocusError:!0},l_=`form`,u_=(e,t)=>{for(let n in e)n in t||delete e[n];Object.assign(e,t)},d_={submitCount:0,isDirty:!1,isReady:!1,isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{}};function f_(e={}){let t={...c_,...e},n={...Hh(d_),isLoading:eg(t.defaultValues),errors:t.errors||{},disabled:t.disabled||!1},r={},i=(Lh(t.defaultValues)||Lh(t.values))&&Hh(t.defaultValues||t.values)||{},a=t.shouldUnregister?{}:Hh(i),o={action:!1,actionArrayLengths:new Map,mount:!1,watch:!1,keepIsValid:!1},s={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set,registerName:new Set},c={},l={},u=0,d=dg(t.mode),f=dg(t.reValidateMode),p={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},m={...p},h={...m},g={array:Ig(),state:Ig()},_=0,v=t.criteriaMode===Wh.all,y=(e,t)=>n=>{clearTimeout(l[e]),l[e]=setTimeout(t,n)},b=async e=>{if(!o.keepIsValid&&!t.disabled&&(m.isValid||h.isValid||e)){let e=++_,i;t.resolver?(i=hg((await j()).errors),e===_&&x()):i=await P({fields:r,onlyCheckValid:!0,eventType:Uh.VALID}),e===_&&i!==n.isValid&&g.state.next({isValid:i})}},x=(e,r)=>{!t.disabled&&(m.isValidating||m.validatingFields||h.isValidating||h.validatingFields)&&((e||Array.from(s.mount)).forEach(e=>{e&&(r?tg(n.validatingFields,e,r):Mg(n.validatingFields,e))}),g.state.next({validatingFields:n.validatingFields,isValidating:!hg(n.validatingFields)}))},S=()=>{n.dirtyFields=Yg(i,a,void 0,r)},C=(e,i=[],s,c,l=!0,u=!0)=>{if(c&&s&&!t.disabled){if(o.action=!0,!o.actionArrayLengths.has(e)){let t=J(r,e);o.actionArrayLengths.set(e,Array.isArray(t)?t.length:0)}if(u&&Array.isArray(J(r,e))){let t=s(J(r,e),c.argA,c.argB);l&&tg(r,e,t)}if(u&&Array.isArray(J(n.errors,e))){let t=J(n.errors,e),r=t.root,i=s(t,c.argA,c.argB)||t;r&&(i.root=r),l&&tg(n.errors,e,i),s_(n.errors,e)}if((m.touchedFields||h.touchedFields)&&u&&Array.isArray(J(n.touchedFields,e))){let t=s(J(n.touchedFields,e),c.argA,c.argB);l&&tg(n.touchedFields,e,t)}(m.dirtyFields||h.dirtyFields)&&S(),g.state.next({name:e,isDirty:I(e,i),dirtyFields:n.dirtyFields,errors:n.errors,isValid:n.isValid})}else tg(a,e,i)},w=(e,t)=>{tg(n.errors,e,t),n.errors={...n.errors},g.state.next({errors:n.errors})},T=e=>{n.errors=e,g.state.next({errors:n.errors,isValid:!1})},E=e=>{let t=Yh(e)?[e]:Qh(e),n=a,r=i;for(let e=0;e{if(!o.actionArrayLengths.size)return!1;let t=Yh(e)?[e]:Qh(e),n=a,r=``,i=-1,s=0;for(let e=0;e=n.length)return i===-1?!1:e!==i||+a{let d=J(r,t);if(d){if(E(t)||D(t))return;let r=Xh(J(a,t)),f=J(a,t,Xh(l)?J(i,t):l);Xh(f)||u&&u.defaultChecked||c?tg(a,t,c?f:Zg(d._f)):z(t,f),o.mount&&!o.action&&(b(),r&&n.isDirty&&(m.isDirty||h.isDirty)&&(I()||(n.isDirty=!1,g.state.next({...n}))),e.shouldUnregister&&r&&!Xh(J(a,t))&&fg(t,s)&&(o.watch=!0))}},k=(e,o,s,c,l)=>{let u=!1,d=!1,f={name:e};if(!t.disabled||c===!0){if(!s||c){let t=sg(J(i,e),o);(m.isDirty||h.isDirty)&&(d=n.isDirty,n.isDirty=f.isDirty=!t||I(),u=d!==f.isDirty),d=!!J(n.dirtyFields,e),t===n.isDirty?t?Mg(n.dirtyFields,e):tg(n.dirtyFields,e,!0):u_(n.dirtyFields,Yg(i,a,void 0,r)),f.dirtyFields=n.dirtyFields,u||=(m.dirtyFields||h.dirtyFields)&&d!==!t}if(s){let t=J(n.touchedFields,e);t||(tg(n.touchedFields,e,s),f.touchedFields=n.touchedFields,u||=(m.touchedFields||h.touchedFields)&&t!==s)}u&&l&&g.state.next(f)}return u?f:{}},A=(e,r,i,a)=>{let o=J(n.errors,e),s=(m.isValid||h.isValid)&&$h(r)&&n.isValid!==r;if(t.delayError&&i?(c[e]=y(e,()=>w(e,i)),c[e](t.delayError)):(clearTimeout(l[e]),delete c[e],i?tg(n.errors,e,i):Mg(n.errors,e),n.errors={...n.errors}),(i?!sg(o,i):o)||!hg(a)||s){let t={...a,...s&&$h(r)?{isValid:r}:{},errors:n.errors,name:e};n={...n,...t},g.state.next(t)}},j=async e=>(x(e,!0),await t.resolver(a,t.context,Qg(e||s.mount,r,t.criteriaMode,t.shouldUseNativeValidation))),M=async e=>{let{errors:t}=await j(e);if(x(e),e){for(let r of e){let e=J(t,r);e?s.array.has(r)&&Lh(e)&&!Object.keys(e).some(e=>!Number.isNaN(Number(e)))?mg(n.errors,{[r]:e},r):tg(n.errors,r,e):Mg(n.errors,r)}n.errors={...n.errors}}else n.errors=t;return t},N=async({name:t,eventType:r})=>{if(e.validate){let i=await e.validate({formValues:a,formState:n,name:t,eventType:r});if(Lh(i))for(let e in i){let t=i[e];t&&ie(`${l_}.${e}`,{message:lg(t.message)?t.message:``,type:t.type||Gh.validate})}else lg(i)||!i?ie(l_,{message:i||``,type:Gh.validate}):G(l_);return i}return!0},P=async({fields:r,onlyCheckValid:i,name:o,eventType:c,context:l={valid:!0,runRootValidation:!1}})=>{if(e.validate&&(l.runRootValidation=!0,!await N({name:o,eventType:c})&&(l.valid=!1,i)))return l.valid;for(let o in r){let u=r[o];if(u){let{_f:r,...d}=u;if(r){let o=s.array.has(r.name),c=u._f&&t_(u._f),d=m.validatingFields||m.isValidating||h.validatingFields||h.isValidating;c&&d&&x([r.name],!0);let f=await Dg(u,s.disabled,a,v,t.shouldUseNativeValidation&&!i,o);if(c&&d&&x([r.name]),f[r.name]&&(l.valid=!1,i)||(!i&&(J(f,r.name)?o?mg(n.errors,f,r.name):tg(n.errors,r.name,f[r.name]):Mg(n.errors,r.name)),e.shouldUseNativeValidation&&f[r.name]))break}!hg(d)&&await P({context:l,onlyCheckValid:i,fields:d,name:o,eventType:c})}}return l.valid},F=()=>{for(let e of s.unMount){let t=J(r,e);t&&(t._f.refs?t._f.refs.every(e=>!Bg(e)):!Bg(t._f.ref))&&ce(e)}s.unMount=new Set},I=(e,t)=>(e&&t&&tg(a,e,t),!sg(o.mount?a:i,i)),L=(e,t,n)=>ug(e,s,{...o.mount?a:Xh(t)||lg(e)?i:t},n,t),R=e=>kg(J(o.mount?a:i,e,t.shouldUnregister?J(i,e,[]):[])),z=(e,t,n={},i=!1,o=!1,s=!1)=>{let c=J(r,e),l=t;if(c){let n=c._f;n&&(!n.disabled&&tg(a,e,Xg(t,n)),l=gg(n.ref)&&Fh(t)?``:t,Rg(n.ref)?[...n.ref.options].forEach(e=>e.selected=l.includes(e.value)):n.refs?Mh(n.ref)?n.refs.forEach(e=>{(!e.defaultChecked||!e.disabled)&&(e.checked=Array.isArray(l)?!!l.find(t=>t===e.value):l===e.value||!!l)}):n.refs.forEach(e=>e.checked=e.value===l):Nh(n.ref)?n.ref.value=``:(n.ref.value=l,!n.ref.type&&!o&&!s&&g.state.next({name:e,values:i?a:Hh(a)})))}(n.shouldDirty||n.shouldTouch)&&k(e,l,n.shouldTouch,n.shouldDirty,!o),n.shouldValidate&&W(e,{delayError:n.delayError})},B=(e,t,n,i=!1,o=!1,c=!1)=>{s.array.has(e)&&g.array.next({name:e,values:i?a:Hh(a)});for(let a in t){if(!t.hasOwnProperty(a))return;let l=t[a],u=e+`.`+a,d=J(r,u);(s.array.has(e)||Lh(l)||d&&!d._f)&&!Ph(l)?B(u,l,n,i,o,c):z(u,l,n,i,o,c)}},V=(e,t,i,c,l=!1)=>{let u=J(r,e),d=s.array.has(e),f=c?t:Hh(t),p=sg(J(a,e),f);if(p||tg(a,e,f),d)g.array.next({name:e,values:c?a:Hh(a)}),(m.isDirty||m.dirtyFields||h.isDirty||h.dirtyFields)&&i.shouldDirty&&(S(),l||g.state.next({name:e,dirtyFields:n.dirtyFields,isDirty:I(e,f)}));else{let t=Array.isArray(f)&&!f.length||hg(f),n=!p&&!l;!u||u._f||Fh(f)||t?z(e,f,i,c,l,n):B(e,f,i,c,l,n)}if(!p&&!l){let t=fg(e,s),r=c?a:Hh(a);g.state.next({...t&&n,name:o.mount||t?e:void 0,values:r})}},H=(e,t,n={})=>V(e,t,n,!1),ee=(e,t={})=>{let r=eg(e)?e(a):e;if(!sg(a,r)){a={...a,...r};let e=Ng(r);for(let n of s.mount)n in e&&V(n,e[n],t,!0,!0);g.state.next({...n,name:void 0,type:void 0,...u?{values:a}:{}}),t.shouldValidate&&b()}},U=async i=>{o.mount=!0;let l=i.target,p=l.name,_=!0,y=J(r,p),S=e=>{_=Number.isNaN(e)||Ph(e)&&isNaN(e.getTime())||sg(e,J(a,p,e))};if(y){let o,C,w=l.type?Zg(y._f):Rh(i),T=i.type===Uh.BLUR||i.type===Uh.FOCUS_OUT,E=!n_(y._f)&&!e.validate&&!t.resolver&&!J(n.errors,p)&&!y._f.deps,D=E||o_(T,J(n.touchedFields,p),n.isSubmitted,f,d),O=fg(p,s,T);if(tg(a,p,w),T){if(!l||!l.readOnly){y._f.onBlur&&y._f.onBlur(i);let e=c[p];e&&e(0)}}else y._f.onChange&&y._f.onChange(i);let M=k(p,w,T),F=!hg(M)||O;if(!T&&g.state.next({name:p,type:i.type,...u?{values:Hh(a)}:{}}),D)return(!E||!n.isValid)&&(m.isValid||h.isValid)&&(t.mode===`onBlur`?T&&b():T||b()),F&&g.state.next({name:p,...O?{}:M});if(!t.resolver&&e.validate&&await N({name:p,eventType:i.type}),!T&&O&&g.state.next({...n}),t.resolver){let{errors:e}=await j([p]);if(x([p]),S(w),!_){!hg(M)&&g.state.next(M);return}let t=r_(n.errors,r,p),i=r_(e,r,t.name||p);o=i.error,p=i.name,C=hg(e)}else x([p],!0),o=(await Dg(y,s.disabled,a,v,t.shouldUseNativeValidation))[p],x([p]),S(w),_&&(o?C=!1:(m.isValid||h.isValid)&&(C=await P({fields:r,onlyCheckValid:!0,name:p,eventType:i.type})));_&&(y._f.deps&&(!Array.isArray(y._f.deps)||y._f.deps.length>0)&&W(y._f.deps),A(p,C,o,M))}},te=(e,t)=>{if(J(n.errors,t)&&e.focus)return e.focus(),1},W=async(e,i={})=>{let a,o,u=Og(e);if(t.resolver){let t=await M(Xh(e)?e:u);a=hg(t),o=e?!u.some(e=>J(t,e)):a}else e?(o=(await Promise.all(u.map(async e=>{let t=J(r,e);return await P({fields:t&&t._f?{[e]:t}:t,eventType:Uh.TRIGGER})}))).every(Boolean),!(!o&&!n.isValid)&&b()):o=a=await P({fields:r,name:e,eventType:Uh.TRIGGER});if(i.delayError&&t.delayError&&lg(e)){let r=J(n.errors,e);r?(Mg(n.errors,e),c[e]=y(e,()=>w(e,r)),c[e](t.delayError)):(clearTimeout(l[e]),delete c[e])}return g.state.next({...!lg(e)||(m.isValid||h.isValid)&&a!==n.isValid?{}:{name:e},...t.resolver||!e?{isValid:a}:{},errors:n.errors}),i.shouldFocus&&!o&&pg(r,te,e?u:s.mount),o},ne=(e,t)=>{let r={...o.mount?a:i};return t&&(r=Lg(t.dirtyFields?n.dirtyFields:n.touchedFields,r)),Xh(e)?r:lg(e)?J(r,e):e.map(e=>J(r,e))},re=(e,t)=>({invalid:!!J((t||n).errors,e),isDirty:!!J((t||n).dirtyFields,e),error:J((t||n).errors,e),isValidating:!!J(n.validatingFields,e),isTouched:!!J((t||n).touchedFields,e)}),G=e=>{let t=e?Og(e):void 0;t?.forEach(e=>Mg(n.errors,e)),t?t.forEach(e=>{g.state.next({name:e,errors:n.errors})}):(n.errors={},g.state.next({errors:n.errors}))},ie=(e,t,i)=>{let a=(J(r,e,{_f:{}})._f||{}).ref,{ref:o,message:s,type:c,...l}=J(n.errors,e)||{};tg(n.errors,e,{...l,...t,ref:a}),g.state.next({name:e,errors:n.errors,isValid:!1}),i&&i.shouldFocus&&a&&a.focus&&a.focus()},ae=(e,t)=>{if(eg(e)){u++;let{unsubscribe:n}=g.state.subscribe({next:n=>`values`in n&&e(n.values||L(void 0,t),n)}),r=!1;return{unsubscribe:()=>{r||(r=!0,u--,n())}}}return L(e,t,!0)},oe=e=>{let t=!!e.formState?.values;t&&u++;let{unsubscribe:r}=g.state.subscribe({next:t=>{if(a_(e.name,t.name,e.exact)&&i_(t,e.formState||m,ve,e.reRenderRoot)){let r={...a};e.callback({values:r,...n,...t,defaultValues:i})}}});if(!t)return r;let o=!1;return()=>{o||(o=!0,u--,r())}},se=e=>(o.mount=!0,h={...h,...e.formState},oe({...e,formState:{...p,...e.formState}})),ce=(e,o={})=>{for(let c of e?Og(e):s.mount)s.mount.delete(c),s.array.delete(c),o.keepValue||(Mg(r,c),Mg(a,c)),!o.keepError&&Mg(n.errors,c),!o.keepDirty&&Mg(n.dirtyFields,c),!o.keepTouched&&Mg(n.touchedFields,c),!o.keepIsValidating&&Mg(n.validatingFields,c),!t.shouldUnregister&&!o.keepDefaultValue&&Mg(i,c);g.state.next({values:Hh(a)}),g.state.next({...n,...o.keepDirty?{isDirty:I()}:{}}),!o.keepIsValid&&b()},le=({disabled:e,name:t})=>{if($h(e)&&o.mount||e||s.disabled.has(t)){let n=s.disabled.has(t)!==!!e;e?s.disabled.add(t):s.disabled.delete(t),n&&o.mount&&!o.action&&b()}},ue=(e,n={})=>{let a=J(r,e),c=$h(n.disabled)||$h(t.disabled),l=!s.registerName.has(e)&&a&&a._f&&!a._f.mount;return tg(r,e,{...a||{},_f:{...a&&a._f?a._f:{ref:{name:e}},name:e,mount:!0,...n}}),s.mount.add(e),a&&!l?le({disabled:$h(n.disabled)?n.disabled:t.disabled,name:e}):O(e,!0,n.value),{...c?{disabled:n.disabled||t.disabled}:{},...t.progressive?{required:!!n.required,min:$g(n.min),max:$g(n.max),minLength:$g(n.minLength),maxLength:$g(n.maxLength),pattern:$g(n.pattern)}:{},name:e,onChange:U,onBlur:U,ref:c=>{if(c){s.registerName.add(e),ue(e,n),s.registerName.delete(e),a=J(r,e);let t=Xh(c.value)&&c.querySelectorAll&&c.querySelectorAll(`input,select,textarea`)[0]||c,o=zg(t),l=a._f.refs||[];if(o?l.find(e=>e===t):t===a._f.ref)return;let u={...a._f};o?(u.refs=[...l.filter(Bg),t,...Array.isArray(J(i,e))?[{}]:[]],u.ref={type:t.type,name:e}):(u.ref=t,delete u.refs),tg(r,e,{_f:u}),O(e,!1,void 0,t)}else a=J(r,e,{}),a._f&&(a._f.mount=!1),(t.shouldUnregister||n.shouldUnregister)&&!(zh(s.array,e)&&o.action)&&s.unMount.add(e)}}},de=()=>t.shouldFocusError&&!t.shouldUseNativeValidation&&pg(r,te,s.mount),fe=e=>{$h(e)&&(g.state.next({disabled:e}),pg(r,(t,n)=>{let i=J(r,n);i&&(t.disabled=i._f.disabled||e,Array.isArray(i._f.refs)&&i._f.refs.forEach(t=>{t.disabled=i._f.disabled||e}))},0,!1))},pe=(e,i)=>async o=>{let c,l;o&&(o.preventDefault&&o.preventDefault(),o.persist&&o.persist());let u=Hh(a);if(g.state.next({isSubmitting:!0}),t.resolver){let{errors:e,values:t}=await j();x(),n.errors=e,u=Hh(t)}else await P({fields:r,eventType:Uh.SUBMIT});if(s.disabled.size)for(let e of s.disabled)Mg(u,e);if(Mg(n.errors,Kh),hg(n.errors)){g.state.next({errors:{}});try{c=await e(u,o)}catch(e){l=e}}else i&&await i({...n.errors},o),de(),setTimeout(de);if(g.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:hg(n.errors)&&!l,submitCount:n.submitCount+1,errors:n.errors}),l)throw l;return c},me=(e,t={})=>{J(r,e)&&(Xh(t.defaultValue)?H(e,Hh(J(i,e))):(H(e,t.defaultValue),tg(i,e,Hh(t.defaultValue))),t.keepTouched||Mg(n.touchedFields,e),t.keepDirty||(Mg(n.dirtyFields,e),n.isDirty=t.defaultValue?I(e,Hh(J(i,e))):I()),t.keepError||(Mg(n.errors,e),m.isValid&&b()),g.state.next({...n}))},he=(e,c={})=>{let l=e?Hh(e):i,u=Hh(l),d=hg(e),f=u,p=r;if(c.keepDefaultValues||(i=l),!c.keepValues){if(c.keepDirtyValues){let e=new Set([...s.mount,...Hg(Yg(i,a,void 0,p),n.dirtyFields)]);for(let t of Array.from(e)){let e=J(n.dirtyFields,t),r=J(a,t),i=J(f,t);e&&!Xh(r)?tg(f,t,r):!e&&!Xh(i)&&H(t,i)}}else{if(Vh&&Xh(e))for(let e of s.mount){let t=J(r,e);if(t&&t._f){let e=Array.isArray(t._f.refs)?t._f.refs[0]:t._f.ref;if(gg(e)){let t=e.closest(`form`);if(t){t.reset();break}}}}if(c.keepFieldsRef)for(let e of s.mount)H(e,J(f,e));else r={}}if(t.shouldUnregister){if(a=c.keepDefaultValues?Hh(i):{},c.keepFieldsRef)for(let e of s.mount)tg(a,e,J(f,e))}else a=Hh(f);g.array.next({values:{...f}}),g.state.next({name:void 0,type:void 0,values:{...f}})}s={mount:c.keepDirtyValues?s.mount:new Set,unMount:new Set,array:new Set,registerName:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:``},o.mount=!m.isValid||!!c.keepIsValid||!!c.keepDirtyValues||!t.shouldUnregister&&!hg(f),o.watch=!!t.shouldUnregister,o.keepIsValid=!!c.keepIsValid,o.action=!1,o.actionArrayLengths.clear(),c.keepErrors||(n.errors={}),g.state.next({submitCount:c.keepSubmitCount?n.submitCount:0,isDirty:d?!1:c.keepDirty?n.isDirty:c.keepValues?I():!!(c.keepDefaultValues&&!sg(e,i)),isSubmitted:c.keepIsSubmitted?n.isSubmitted:!1,dirtyFields:d?{}:c.keepDirtyValues?c.keepDefaultValues&&a?Yg(i,a,void 0,p):n.dirtyFields:c.keepDefaultValues&&e?Yg(i,e,void 0,p):c.keepDirty?n.dirtyFields:{},touchedFields:c.keepTouched?n.touchedFields:{},errors:c.keepErrors?n.errors:{},isSubmitSuccessful:c.keepIsSubmitSuccessful?n.isSubmitSuccessful:!1,isSubmitting:!1,defaultValues:i})},ge=(e,n)=>he(eg(e)?e(a):e,{...t.resetOptions,...n}),_e=(e,t={})=>{let n=J(r,e),i=n&&n._f;if(i){let e=i.refs?i.refs[0]:i.ref;e.focus&&setTimeout(()=>{e.focus(),t.shouldSelect&&eg(e.select)&&e.select()})}},ve=e=>{let{name:t,type:r,values:i,...a}=e;n={...n,...a}};g.state.subscribe({next:ve});let ye={control:{register:ue,unregister:ce,getFieldState:re,handleSubmit:pe,setError:ie,_subscribe:oe,_runSchema:j,_updateIsValidating:x,_focusError:de,_getWatch:L,_getDirty:I,_setValid:b,_setFieldArray:C,_setDisabledField:le,_setErrors:T,_getFieldArray:R,_reset:he,_resetDefaultValues:()=>eg(t.defaultValues)&&t.defaultValues().then(e=>{ge(e,t.resetOptions),g.state.next({isLoading:!1})}),_removeUnmounted:F,_disableForm:fe,_subjects:g,_proxyFormState:m,get _fields(){return r},get _formValues(){return a},get _state(){return o},set _state(e){o=e},get _defaultValues(){return i},get _names(){return s},set _names(e){s=e},get _formState(){return n},get _options(){return t},set _options(e){t={...t,...e},d=dg(t.mode),f=dg(t.reValidateMode)}},subscribe:se,trigger:W,register:ue,handleSubmit:pe,watch:ae,setValue:H,setValues:ee,getValues:ne,reset:ge,resetField:me,resetDefaultValues:(e,t={})=>{if(i=Hh(e),!t.keepDirty){let e=Yg(i,a,void 0,r);n.dirtyFields=e,n.isDirty=!hg(e)}t.keepIsValid||b(),g.state.next({...n,defaultValues:i})},clearErrors:G,unregister:ce,setError:ie,setFocus:_e,getFieldState:re};return{...ye,formControl:ye}}function p_(e={}){let t=s.useRef(void 0),n=s.useRef(void 0),r=s.useRef(e.formControl),[i,a]=s.useState(()=>({...Hh(d_),isLoading:eg(e.defaultValues),errors:e.errors||{},disabled:e.disabled||!1,defaultValues:eg(e.defaultValues)?void 0:e.defaultValues}));if(!t.current||e.formControl&&r.current!==e.formControl){if(r.current=e.formControl,e.formControl)t.current={...e.formControl,formState:i},e.defaultValues&&!eg(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{let{formControl:n,...r}=f_(e);t.current={...r,formState:i}}}let o=t.current.control;o._options=e;let{resyncIfNeeded:c,snapshot:l}=cg();return ig(()=>{let e=()=>({...o._formState,defaultValues:o._defaultValues});c(!0,e,a);let t=o._subscribe({formState:o._proxyFormState,callback:()=>a({...o._formState,defaultValues:o._defaultValues}),reRenderRoot:!0});return a(e=>({...e,isReady:!0})),o._formState.isReady=!0,()=>{t(),l(!0,e)}},[o,c,l]),s.useEffect(()=>o._disableForm(e.disabled),[o,e.disabled]),s.useEffect(()=>{e.mode&&(o._options.mode=e.mode),e.reValidateMode&&(o._options.reValidateMode=e.reValidateMode)},[o,e.mode,e.reValidateMode]),s.useEffect(()=>{e.errors&&(o._setErrors(e.errors),o._focusError())},[o,e.errors]),s.useEffect(()=>{e.shouldUnregister&&o._subjects.state.next({values:o._getWatch()})},[o,e.shouldUnregister]),s.useEffect(()=>{if(o._proxyFormState.isDirty){let e=o._getDirty();e!==i.isDirty&&o._subjects.state.next({isDirty:e})}},[o,i.isDirty]),s.useEffect(()=>{e.values&&!sg(e.values,n.current)?(o._reset(e.values,{keepFieldsRef:!0,...o._options.resetOptions}),o._options.resetOptions?.keepIsValid||o._setValid(),n.current=e.values,a(e=>({...e}))):o._resetDefaultValues()},[o,e.values]),s.useEffect(()=>{o._state.mount||(o._setValid(),o._state.mount=!0),o._state.watch&&(o._state.watch=!1,o._subjects.state.next({...o._formState})),o._removeUnmounted()}),t.current.formState=s.useMemo(()=>rg(i,o),[o,i]),t.current}var m_=(e,t,n)=>{if(e&&`reportValidity`in e){let r=J(n,t);e.setCustomValidity(r&&r.message||``),e.reportValidity()}},h_=(e,t)=>{for(let n in t.fields){let r=t.fields[n];r&&r.ref&&`reportValidity`in r.ref?m_(r.ref,n,e):r&&r.refs&&r.refs.forEach(t=>m_(t,n,e))}},g_=(e,t)=>{t.shouldUseNativeValidation&&h_(e,t);let n={};for(let r in e){let i=J(t.fields,r),a=Object.assign(e[r]||{},{ref:i&&i.refs?i.refs[0]:i&&i.ref});if(__(t.names||Object.keys(e),r)){let e=Object.assign({},J(n,r));tg(e,`root`,a),tg(n,r,e)}else tg(n,r,a)}return n},__=(e,t)=>{let n=v_(t).replace(/[.*+?^${}()|\\]/g,`\\$&`);return e.some(e=>v_(e).match(`^${n}\\.\\d+`))};function v_(e){return e.replace(/[\[\]]/g,``)}function y_(){return y_=Object.assign?Object.assign.bind():function(e){for(var t=1;t0){var s=r.errors.reduce(function(e,t){return t.lengthe([...w_]))}function Y(e,t=``,n=`success`){let r=`${n}:${e}:${t}`;if(w_.some(e=>e.toastKey===r))return;let i={key:++T_,toastKey:r,title:e,message:t,type:n};w_=[...w_,i],D_(),window.setTimeout(()=>{w_=w_.filter(e=>e.key!==i.key),D_()},n===`error`?7e3:3600)}function O_(){let[e,t]=(0,s.useState)(w_);return(0,s.useEffect)(()=>{let e=e=>t(e);return E_.add(e),()=>{E_.delete(e)}},[]),(0,K.jsx)(`div`,{className:`toast-region`,"aria-live":`polite`,"aria-atomic":`true`,children:e.map(e=>(0,K.jsxs)(`div`,{className:`toast ${e.type}`,children:[e.type===`error`?(0,K.jsx)(U,{size:15}):(0,K.jsx)(z,{size:15}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:e.title}),e.message?(0,K.jsx)(`p`,{children:e.message}):null]})]},e.key))})}var k_=n(((e,t)=>{var n=!1,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_;function v(){if(!n){n=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),v=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(m=/\b(iPhone|iP[ao]d)/.exec(e),h=/\b(iP[ao]d)/.exec(e),f=/Android/i.exec(e),g=/FBAN\/\w+;/i.exec(e),_=/Mobile/i.exec(e),p=!!/Win64/.exec(e),t){r=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,r&&document&&document.documentMode&&(r=document.documentMode);var y=/(?:Trident\/(\d+.\d+))/.exec(e);c=y?parseFloat(y[1])+4:r,i=t[2]?parseFloat(t[2]):NaN,a=t[3]?parseFloat(t[3]):NaN,o=t[4]?parseFloat(t[4]):NaN,o?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),s=t&&t[1]?parseFloat(t[1]):NaN):s=NaN}else r=i=a=s=o=NaN;if(v){if(v[1]){var b=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);l=!b||parseFloat(b[1].replace(`_`,`.`))}else l=!1;u=!!v[2],d=!!v[3]}else l=u=d=!1}}var y={ie:function(){return v()||r},ieCompatibilityMode:function(){return v()||c>r},ie64:function(){return y.ie()&&p},firefox:function(){return v()||i},opera:function(){return v()||a},webkit:function(){return v()||o},safari:function(){return y.webkit()},chrome:function(){return v()||s},windows:function(){return v()||u},osx:function(){return v()||l},linux:function(){return v()||d},iphone:function(){return v()||m},mobile:function(){return v()||m||h||f||_},nativeApp:function(){return v()||g},android:function(){return v()||f},ipad:function(){return v()||h}};t.exports=y})),A_=n(((e,t)=>{var n=!!(typeof window<`u`&&window.document&&window.document.createElement);t.exports={canUseDOM:n,canUseWorkers:typeof Worker<`u`,canUseEventListeners:n&&!!(window.addEventListener||window.attachEvent),canUseViewport:n&&!!window.screen,isInWorker:!n}})),j_=n(((e,t)=>{var n=A_(),r;n.canUseDOM&&(r=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature(``,``)!==!0);function i(e,t){if(!n.canUseDOM||t&&!(`addEventListener`in document))return!1;var i=`on`+e,a=i in document;if(!a){var o=document.createElement(`div`);o.setAttribute(i,`return;`),a=typeof o[i]==`function`}return!a&&r&&e===`wheel`&&(a=document.implementation.hasFeature(`Events.wheel`,`3.0`)),a}t.exports=i})),M_=n(((e,t)=>{var n=k_(),r=j_(),i=10,a=40,o=800;function s(e){var t=0,n=0,r=0,s=0;return`detail`in e&&(n=e.detail),`wheelDelta`in e&&(n=-e.wheelDelta/120),`wheelDeltaY`in e&&(n=-e.wheelDeltaY/120),`wheelDeltaX`in e&&(t=-e.wheelDeltaX/120),`axis`in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),r=t*i,s=n*i,`deltaY`in e&&(s=e.deltaY),`deltaX`in e&&(r=e.deltaX),(r||s)&&e.deltaMode&&(e.deltaMode==1?(r*=a,s*=a):(r*=o,s*=o)),r&&!t&&(t=r<1?-1:1),s&&!n&&(n=s<1?-1:1),{spinX:t,spinY:n,pixelX:r,pixelY:s}}s.getEventType=function(){return n.firefox()?`DOMMouseScroll`:r(`wheel`)?`wheel`:`mousewheel`},t.exports=s})),N_=t(n(((e,t)=>{t.exports=M_()}))(),1);function P_(e,t,n,r,i,a){a===void 0&&(a=0);var o=J_(e,t,a),s=o.width,c=o.height,l=Math.min(s,n),u=Math.min(c,r);return l>u*i?{width:u*i,height:u}:{width:l,height:l/i}}function F_(e){return e.width>e.height?e.width/e.naturalWidth:e.height/e.naturalHeight}function I_(e,t,n,r,i){i===void 0&&(i=0);var a=J_(t.width,t.height,i),o=a.width,s=a.height;return{x:L_(e.x,o,n.width,r),y:L_(e.y,s,n.height,r)}}function L_(e,t,n,r){var i=Math.abs(t*r/2-n/2);return Y_(e,-i,i)}function R_(e,t){return Math.sqrt((e.y-t.y)**2+(e.x-t.x)**2)}function z_(e,t){return Math.atan2(t.y-e.y,t.x-e.x)*180/Math.PI}function B_(e,t,n,r,i,a,o){a===void 0&&(a=0),o===void 0&&(o=!0);var s=o?V_:H_,c=J_(t.width,t.height,a),l=J_(t.naturalWidth,t.naturalHeight,a),u={x:s(100,((c.width-n.width/i)/2-e.x/i)/c.width*100),y:s(100,((c.height-n.height/i)/2-e.y/i)/c.height*100),width:s(100,n.width/c.width*100/i),height:s(100,n.height/c.height*100/i)},d=Math.round(s(l.width,u.width*l.width/100)),f=Math.round(s(l.height,u.height*l.height/100)),p=l.width>=l.height*r?{width:Math.round(f*r),height:f}:{width:d,height:Math.round(d/r)};return{croppedAreaPercentages:u,croppedAreaPixels:xr(xr({},p),{x:Math.round(s(l.width-p.width,u.x*l.width/100)),y:Math.round(s(l.height-p.height,u.y*l.height/100))})}}function V_(e,t){return Math.min(e,Math.max(0,t))}function H_(e,t){return t}function U_(e,t,n,r,i,a){var o=J_(t.width,t.height,n),s=Y_(r.width/o.width*(100/e.width),i,a);return{crop:{x:s*o.width/2-r.width/2-o.width*s*(e.x/100),y:s*o.height/2-r.height/2-o.height*s*(e.y/100)},zoom:s}}function W_(e,t,n){var r=F_(t);return n.height>n.width?n.height/(e.height*r):n.width/(e.width*r)}function G_(e,t,n,r,i,a){n===void 0&&(n=0);var o=J_(t.naturalWidth,t.naturalHeight,n),s=Y_(W_(e,t,r),i,a),c=r.height>r.width?r.height/e.height:r.width/e.width;return{crop:{x:((o.width-e.width)/2-e.x)*c,y:((o.height-e.height)/2-e.y)*c},zoom:s}}function K_(e,t){return{x:(t.x+e.x)/2,y:(t.y+e.y)/2}}function q_(e){return e*Math.PI/180}function J_(e,t,n){var r=q_(n);return{width:Math.abs(Math.cos(r)*e)+Math.abs(Math.sin(r)*t),height:Math.abs(Math.sin(r)*e)+Math.abs(Math.cos(r)*t)}}function Y_(e,t,n){return Math.min(Math.max(e,t),n)}function X_(){return[...arguments].filter(function(e){return typeof e==`string`&&e.length>0}).join(` `).trim()}var Z_=`.reactEasyCrop_Container { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - overflow: hidden; - user-select: none; - touch-action: none; - cursor: move; - display: flex; - justify-content: center; - align-items: center; -} - -.reactEasyCrop_Image, -.reactEasyCrop_Video { - will-change: transform; /* this improves performances and prevent painting issues on iOS Chrome */ -} - -.reactEasyCrop_Contain { - max-width: 100%; - max-height: 100%; - margin: auto; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; -} -.reactEasyCrop_Cover_Horizontal { - width: 100%; - height: auto; -} -.reactEasyCrop_Cover_Vertical { - width: auto; - height: 100%; -} - -.reactEasyCrop_CropArea { - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - border: 1px solid rgba(255, 255, 255, 0.5); - box-sizing: border-box; - box-shadow: 0 0 0 9999em; - color: rgba(0, 0, 0, 0.5); - overflow: hidden; -} - -.reactEasyCrop_CropAreaRound { - border-radius: 50%; -} - -.reactEasyCrop_CropAreaGrid::before { - content: ' '; - box-sizing: border-box; - position: absolute; - border: 1px solid rgba(255, 255, 255, 0.5); - top: 0; - bottom: 0; - left: 33.33%; - right: 33.33%; - border-top: 0; - border-bottom: 0; -} - -.reactEasyCrop_CropAreaGrid::after { - content: ' '; - box-sizing: border-box; - position: absolute; - border: 1px solid rgba(255, 255, 255, 0.5); - top: 33.33%; - bottom: 33.33%; - left: 0; - right: 0; - border-left: 0; - border-right: 0; -} -`,Q_=1,$_=3,ev=1,tv=function(e){br(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.cropperRef=s.createRef(),n.imageRef=s.createRef(),n.videoRef=s.createRef(),n.containerPosition={x:0,y:0},n.containerRef=null,n.styleRef=null,n.containerRect=null,n.mediaSize={width:0,height:0,naturalWidth:0,naturalHeight:0},n.dragStartPosition={x:0,y:0},n.dragStartCrop={x:0,y:0},n.gestureZoomStart=0,n.gestureRotationStart=0,n.isTouching=!1,n.lastPinchDistance=0,n.lastPinchRotation=0,n.rafDragTimeout=null,n.rafPinchTimeout=null,n.wheelTimer=null,n.currentDoc=typeof document<`u`?document:null,n.currentWindow=typeof window<`u`?window:null,n.resizeObserver=null,n.previousCropSize=null,n.isInitialized=!1,n.state={cropSize:null,hasWheelJustStarted:!1,mediaObjectFit:void 0},n.initResizeObserver=function(){if(!(window.ResizeObserver===void 0||!n.containerRef)){var e=!0;n.resizeObserver=new window.ResizeObserver(function(t){if(e){e=!1;return}n.computeSizes()}),n.resizeObserver.observe(n.containerRef)}},n.preventZoomSafari=function(e){return e.preventDefault()},n.cleanEvents=function(){n.currentDoc&&(n.currentDoc.removeEventListener(`mousemove`,n.onMouseMove),n.currentDoc.removeEventListener(`mouseup`,n.onDragStopped),n.currentDoc.removeEventListener(`touchmove`,n.onTouchMove),n.currentDoc.removeEventListener(`touchend`,n.onDragStopped),n.currentDoc.removeEventListener(`gesturechange`,n.onGestureChange),n.currentDoc.removeEventListener(`gestureend`,n.onGestureEnd),n.currentDoc.removeEventListener(`scroll`,n.onScroll))},n.clearScrollEvent=function(){n.containerRef&&n.containerRef.removeEventListener(`wheel`,n.onWheel),n.wheelTimer&&clearTimeout(n.wheelTimer)},n.onMediaLoad=function(){var e=n.computeSizes();e&&(n.previousCropSize=e,n.emitCropData(),n.setInitialCrop(e),n.isInitialized=!0),n.props.onMediaLoaded&&n.props.onMediaLoaded(n.mediaSize)},n.setInitialCrop=function(e){if(n.props.initialCroppedAreaPercentages){var t=U_(n.props.initialCroppedAreaPercentages,n.mediaSize,n.props.rotation,e,n.props.minZoom,n.props.maxZoom),r=t.crop,i=t.zoom;n.props.onCropChange(r),n.props.onZoomChange&&n.props.onZoomChange(i)}else if(n.props.initialCroppedAreaPixels){var a=G_(n.props.initialCroppedAreaPixels,n.mediaSize,n.props.rotation,e,n.props.minZoom,n.props.maxZoom),r=a.crop,i=a.zoom;n.props.onCropChange(r),n.props.onZoomChange&&n.props.onZoomChange(i)}},n.computeSizes=function(){var e=n.imageRef.current||n.videoRef.current;if(e&&n.containerRef){n.containerRect=n.containerRef.getBoundingClientRect(),n.saveContainerPosition();var t=n.containerRect.width/n.containerRect.height,r=n.imageRef.current?.naturalWidth||n.videoRef.current?.videoWidth||0,i=n.imageRef.current?.naturalHeight||n.videoRef.current?.videoHeight||0,a=e.offsetWidtho?{width:n.containerRect.height*o,height:n.containerRect.height}:{width:n.containerRect.width,height:n.containerRect.width/o};break;case`horizontal-cover`:s={width:n.containerRect.width,height:n.containerRect.width/o};break;case`vertical-cover`:s={width:n.containerRect.height*o,height:n.containerRect.height}}else s={width:e.offsetWidth,height:e.offsetHeight};n.mediaSize=xr(xr({},s),{naturalWidth:r,naturalHeight:i}),n.props.setMediaSize&&n.props.setMediaSize(n.mediaSize);var c=n.props.cropSize?n.props.cropSize:P_(n.mediaSize.width,n.mediaSize.height,n.containerRect.width,n.containerRect.height,n.props.aspect,n.props.rotation);return(n.state.cropSize?.height!==c.height||n.state.cropSize?.width!==c.width)&&n.props.onCropSizeChange&&n.props.onCropSizeChange(c),n.setState({cropSize:c},n.recomputeCropPosition),n.props.setCropSize&&n.props.setCropSize(c),c}},n.saveContainerPosition=function(){if(n.containerRef){var e=n.containerRef.getBoundingClientRect();n.containerPosition={x:e.left,y:e.top}}},n.onMouseDown=function(e){n.currentDoc&&(e.preventDefault(),n.currentDoc.addEventListener(`mousemove`,n.onMouseMove),n.currentDoc.addEventListener(`mouseup`,n.onDragStopped),n.saveContainerPosition(),n.onDragStart(t.getMousePoint(e)))},n.onMouseMove=function(e){return n.onDrag(t.getMousePoint(e))},n.onScroll=function(e){n.currentDoc&&(e.preventDefault(),n.saveContainerPosition())},n.onTouchStart=function(e){n.currentDoc&&(n.isTouching=!0,!(n.props.onTouchRequest&&!n.props.onTouchRequest(e))&&(n.currentDoc.addEventListener(`touchmove`,n.onTouchMove,{passive:!1}),n.currentDoc.addEventListener(`touchend`,n.onDragStopped),n.saveContainerPosition(),e.touches.length===2?n.onPinchStart(e):e.touches.length===1&&n.onDragStart(t.getTouchPoint(e.touches[0]))))},n.onTouchMove=function(e){e.preventDefault(),e.touches.length===2?n.onPinchMove(e):e.touches.length===1&&n.onDrag(t.getTouchPoint(e.touches[0]))},n.onGestureStart=function(e){n.currentDoc&&(e.preventDefault(),n.currentDoc.addEventListener(`gesturechange`,n.onGestureChange),n.currentDoc.addEventListener(`gestureend`,n.onGestureEnd),n.gestureZoomStart=n.props.zoom,n.gestureRotationStart=n.props.rotation)},n.onGestureChange=function(e){if(e.preventDefault(),!n.isTouching){var r=t.getMousePoint(e),i=n.gestureZoomStart-1+e.scale;if(n.setNewZoom(i,r,{shouldUpdatePosition:!0}),n.props.onRotationChange){var a=n.gestureRotationStart+e.rotation;n.props.onRotationChange(a)}}},n.onGestureEnd=function(e){n.cleanEvents()},n.onDragStart=function(e){var t,r;n.dragStartPosition={x:e.x,y:e.y},n.dragStartCrop=xr({},n.props.crop),(r=(t=n.props).onInteractionStart)==null||r.call(t)},n.onDrag=function(e){var t=e.x,r=e.y;n.currentWindow&&(n.rafDragTimeout&&n.currentWindow.cancelAnimationFrame(n.rafDragTimeout),n.rafDragTimeout=n.currentWindow.requestAnimationFrame(function(){if(n.state.cropSize&&t!==void 0&&r!==void 0){var e=t-n.dragStartPosition.x,i=r-n.dragStartPosition.y,a={x:n.dragStartCrop.x+e,y:n.dragStartCrop.y+i},o=n.props.restrictPosition?I_(a,n.mediaSize,n.state.cropSize,n.props.zoom,n.props.rotation):a;n.props.onCropChange(o)}}))},n.onDragStopped=function(){var e,t;n.isTouching=!1,n.cleanEvents(),n.emitCropData(),(t=(e=n.props).onInteractionEnd)==null||t.call(e)},n.onWheel=function(e){if(n.currentWindow&&!(n.props.onWheelRequest&&!n.props.onWheelRequest(e))){e.preventDefault();var r=t.getMousePoint(e),i=(0,N_.default)(e).pixelY,a=n.props.zoom-i*n.props.zoomSpeed/200;n.setNewZoom(a,r,{shouldUpdatePosition:!0}),n.state.hasWheelJustStarted||n.setState({hasWheelJustStarted:!0},function(){var e;return(e=n.props).onInteractionStart?.call(e)}),n.wheelTimer&&clearTimeout(n.wheelTimer),n.wheelTimer=n.currentWindow.setTimeout(function(){return n.setState({hasWheelJustStarted:!1},function(){var e;return(e=n.props).onInteractionEnd?.call(e)})},250)}},n.getPointOnContainer=function(e,t){var r=e.x,i=e.y;if(!n.containerRect)throw Error(`The Cropper is not mounted`);return{x:n.containerRect.width/2-(r-t.x),y:n.containerRect.height/2-(i-t.y)}},n.getPointOnMedia=function(e){var t=e.x,r=e.y,i=n.props,a=i.crop,o=i.zoom;return{x:(t+a.x)/o,y:(r+a.y)/o}},n.setNewZoom=function(e,t,r){var i=(r===void 0?{}:r).shouldUpdatePosition,a=i===void 0||i;if(!(!n.state.cropSize||!n.props.onZoomChange)){var o=Y_(e,n.props.minZoom,n.props.maxZoom);if(a){var s=n.getPointOnContainer(t,n.containerPosition),c=n.getPointOnMedia(s),l={x:c.x*o-s.x,y:c.y*o-s.y},u=n.props.restrictPosition?I_(l,n.mediaSize,n.state.cropSize,o,n.props.rotation):l;n.props.onCropChange(u)}n.props.onZoomChange(o)}},n.getCropData=function(){return n.state.cropSize?B_(n.props.restrictPosition?I_(n.props.crop,n.mediaSize,n.state.cropSize,n.props.zoom,n.props.rotation):n.props.crop,n.mediaSize,n.state.cropSize,n.getAspect(),n.props.zoom,n.props.rotation,n.props.restrictPosition):null},n.emitCropData=function(){var e=n.getCropData();if(e){var t=e.croppedAreaPercentages,r=e.croppedAreaPixels;n.props.onCropComplete&&n.props.onCropComplete(t,r),n.props.onCropAreaChange&&n.props.onCropAreaChange(t,r)}},n.emitCropAreaChange=function(){var e=n.getCropData();if(e){var t=e.croppedAreaPercentages,r=e.croppedAreaPixels;n.props.onCropAreaChange&&n.props.onCropAreaChange(t,r)}},n.recomputeCropPosition=function(){if(n.state.cropSize){var e=n.props.crop;if(n.isInitialized&&n.previousCropSize?.width&&n.previousCropSize?.height&&(Math.abs(n.previousCropSize.width-n.state.cropSize.width)>1e-6||Math.abs(n.previousCropSize.height-n.state.cropSize.height)>1e-6)){var t=n.state.cropSize.width/n.previousCropSize.width,r=n.state.cropSize.height/n.previousCropSize.height;e={x:n.props.crop.x*t,y:n.props.crop.y*r}}var i=n.props.restrictPosition?I_(e,n.mediaSize,n.state.cropSize,n.props.zoom,n.props.rotation):e;n.previousCropSize=n.state.cropSize,n.props.onCropChange(i),n.emitCropData()}},n.onKeyDown=function(e){var t,r,i=n.props,a=i.crop,o=i.onCropChange,s=i.keyboardStep,c=i.zoom,l=i.rotation,u=s;if(n.state.cropSize){e.shiftKey&&(u*=.2);var d=xr({},a);switch(e.key){case`ArrowUp`:d.y-=u,e.preventDefault();break;case`ArrowDown`:d.y+=u,e.preventDefault();break;case`ArrowLeft`:d.x-=u,e.preventDefault();break;case`ArrowRight`:d.x+=u,e.preventDefault();break;default:return}n.props.restrictPosition&&(d=I_(d,n.mediaSize,n.state.cropSize,c,l)),e.repeat||(r=(t=n.props).onInteractionStart)==null||r.call(t),o(d)}},n.onKeyUp=function(e){var t,r;switch(e.key){case`ArrowUp`:case`ArrowDown`:case`ArrowLeft`:case`ArrowRight`:e.preventDefault();break;default:return}n.emitCropData(),(r=(t=n.props).onInteractionEnd)==null||r.call(t)},n}return t.prototype.componentDidMount=function(){!this.currentDoc||!this.currentWindow||(this.containerRef&&(this.containerRef.ownerDocument&&(this.currentDoc=this.containerRef.ownerDocument),this.currentDoc.defaultView&&(this.currentWindow=this.currentDoc.defaultView),this.initResizeObserver(),window.ResizeObserver===void 0&&this.currentWindow.addEventListener(`resize`,this.computeSizes),this.props.zoomWithScroll&&this.containerRef.addEventListener(`wheel`,this.onWheel,{passive:!1}),this.containerRef.addEventListener(`gesturestart`,this.onGestureStart)),this.currentDoc.addEventListener(`scroll`,this.onScroll),this.props.disableAutomaticStylesInjection||(this.styleRef=this.currentDoc.createElement(`style`),this.styleRef.setAttribute(`type`,`text/css`),this.props.nonce&&this.styleRef.setAttribute(`nonce`,this.props.nonce),this.styleRef.innerHTML=Z_,this.currentDoc.head.appendChild(this.styleRef)),this.imageRef.current&&this.imageRef.current.complete&&this.onMediaLoad(),this.props.setImageRef&&this.props.setImageRef(this.imageRef),this.props.setVideoRef&&this.props.setVideoRef(this.videoRef),this.props.setCropperRef&&this.props.setCropperRef(this.cropperRef))},t.prototype.componentWillUnmount=function(){var e,t;!this.currentDoc||!this.currentWindow||(window.ResizeObserver===void 0&&this.currentWindow.removeEventListener(`resize`,this.computeSizes),(e=this.resizeObserver)==null||e.disconnect(),this.containerRef&&this.containerRef.removeEventListener(`gesturestart`,this.preventZoomSafari),this.styleRef&&((t=this.styleRef.parentNode)==null||t.removeChild(this.styleRef)),this.cleanEvents(),this.props.zoomWithScroll&&this.clearScrollEvent())},t.prototype.componentDidUpdate=function(e){var t;e.rotation===this.props.rotation?e.aspect===this.props.aspect&&e.objectFit===this.props.objectFit?e.zoom===this.props.zoom?e.cropSize?.height!==this.props.cropSize?.height||e.cropSize?.width!==this.props.cropSize?.width?this.computeSizes():(e.crop?.x!==this.props.crop?.x||e.crop?.y!==this.props.crop?.y)&&this.emitCropAreaChange():this.recomputeCropPosition():this.computeSizes():(this.computeSizes(),this.recomputeCropPosition()),e.zoomWithScroll!==this.props.zoomWithScroll&&this.containerRef&&(this.props.zoomWithScroll?this.containerRef.addEventListener(`wheel`,this.onWheel,{passive:!1}):this.clearScrollEvent()),e.video!==this.props.video&&((t=this.videoRef.current)==null||t.load());var n=this.getObjectFit();n!==this.state.mediaObjectFit&&this.setState({mediaObjectFit:n},this.computeSizes)},t.prototype.getAspect=function(){var e=this.props,t=e.cropSize,n=e.aspect;return t?t.width/t.height:n},t.prototype.getObjectFit=function(){if(this.props.objectFit===`cover`){if((this.imageRef.current||this.videoRef.current)&&this.containerRef){this.containerRect=this.containerRef.getBoundingClientRect();var e=this.containerRect.width/this.containerRect.height;return(this.imageRef.current?.naturalWidth||this.videoRef.current?.videoWidth||0)/(this.imageRef.current?.naturalHeight||this.videoRef.current?.videoHeight||0)r.toBlob(e,`image/webp`,.9));if(!a)throw Error(`头像裁剪失败,请更换图片后重试`);return a}function sv({name:e,appearance:t,disabled:n=!1,onSave:r}){let[i,a]=(0,s.useState)(()=>iv(t)),[o,c]=(0,s.useState)(null),[l,u]=(0,s.useState)({x:0,y:0}),[d,f]=(0,s.useState)(1),[p,m]=(0,s.useState)(null),[h,_]=(0,s.useState)(!1),[v,y]=(0,s.useState)(!1),[b,x]=(0,s.useState)(``),S=(0,s.useRef)(null);(0,s.useEffect)(()=>a(iv(t)),[t]),(0,s.useEffect)(()=>()=>{o&&URL.revokeObjectURL(o)},[o]);let C=iv(t),w=i.icon!==C.icon||i.color!==C.color||i.imageUrl!==C.imageUrl;function T(e){if(x(``),e){if(![`image/png`,`image/webp`].includes(e.type)){x(`仅支持 PNG 或 WebP 图片`);return}if(e.size>2097152){x(`头像文件不能超过 2 MiB`);return}u({x:0,y:0}),f(1),m(null),c(URL.createObjectURL(e))}}async function E(){if(!(!o||!p||h)){_(!0),x(``);try{let e=await ov(o,p),t=await g(`/api/v1/assets/agent-avatars`,{method:`POST`,headers:{"Content-Type":e.type},body:e}),n=await t.json().catch(()=>null);if(!t.ok)throw Error(n?.error?.message||`头像上传失败(${t.status})`);a(e=>({...e,imageUrl:n.url})),c(null)}catch(e){x(e instanceof Error?e.message:`头像上传失败`)}finally{_(!1)}}}async function D(){if(!(!w||v||n)){y(!0),x(``);try{await r(i)}catch(e){x(e instanceof Error?e.message:`外观保存失败`)}finally{y(!1)}}}return(0,K.jsxs)(`section`,{className:`agent-appearance-editor`,"aria-label":`Agent 外观`,children:[(0,K.jsxs)(`div`,{className:`agent-appearance-preview`,children:[(0,K.jsx)(_t,{name:e,appearance:i,size:`lg`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`Agent 外观`}),(0,K.jsx)(`span`,{children:`用于列表、会话和 Trace;不会写入模型提示词。`})]})]}),(0,K.jsxs)(`div`,{className:`agent-appearance-controls`,children:[(0,K.jsxs)(`div`,{className:`appearance-choice-group`,role:`group`,"aria-label":`头像图标`,children:[(0,K.jsx)(`span`,{children:`图标`}),(0,K.jsx)(`div`,{children:nv.map(e=>(0,K.jsx)(`button`,{className:i.icon===e.id&&!i.imageUrl?`active`:``,type:`button`,"aria-label":`使用 ${e.label} 图标`,"aria-pressed":i.icon===e.id&&!i.imageUrl,disabled:n,onClick:()=>a(t=>({...t,icon:e.id,imageUrl:null})),children:(0,K.jsx)(e.icon,{size:16})},e.id))})]}),(0,K.jsxs)(`div`,{className:`appearance-choice-group color`,role:`group`,"aria-label":`头像配色`,children:[(0,K.jsx)(`span`,{children:`配色`}),(0,K.jsx)(`div`,{children:rv.map(e=>(0,K.jsx)(`button`,{className:i.color===e.value?`active`:``,type:`button`,"aria-label":`使用${e.label}配色`,"aria-pressed":i.color===e.value,disabled:n,style:{"--appearance-swatch":e.value},onClick:()=>a(t=>({...t,color:e.value}))},e.value))})]})]}),(0,K.jsxs)(`div`,{className:`agent-appearance-actions`,children:[(0,K.jsx)(`input`,{ref:S,className:`sr-only`,type:`file`,accept:`image/png,image/webp`,"aria-label":`选择 Agent 头像图片`,disabled:n,onChange:e=>{T(e.target.files?.[0]),e.target.value=``}}),(0,K.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:n,onClick:()=>S.current?.click(),children:[(0,K.jsx)(Ee,{size:14}),(0,K.jsx)(`span`,{children:`上传图片`})]}),i.imageUrl?(0,K.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:n,onClick:()=>a(e=>({...e,imageUrl:null})),children:[(0,K.jsx)(lt,{size:14}),(0,K.jsx)(`span`,{children:`移除图片`})]}):null,(0,K.jsx)(`button`,{className:`button secondary small`,type:`button`,disabled:n||v||!w,onClick:D,children:v?`正在保存`:`保存外观`})]}),b?(0,K.jsx)(`p`,{className:`studio-field-error`,role:`alert`,children:b}):null,(0,K.jsx)(xa,{open:!!o,onOpenChange:e=>{!e&&!h&&c(null)},title:`调整 Agent 头像`,description:`拖动画面并缩放,保存后会生成 512 × 512 WebP。`,closeDisabled:h,className:`avatar-crop-dialog`,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`button`,{className:`button tertiary`,type:`button`,disabled:h,onClick:()=>c(null),children:`取消`}),(0,K.jsx)(`button`,{className:`button accent`,type:`button`,disabled:h||!p,onClick:E,children:h?`正在上传`:`使用裁剪`})]}),children:o?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`avatar-crop-stage`,children:(0,K.jsx)(tv,{image:o,crop:l,zoom:d,aspect:1,showGrid:!1,onCropChange:u,onZoomChange:f,onCropComplete:(e,t)=>m(t)})}),(0,K.jsxs)(`label`,{className:`avatar-zoom-control`,children:[(0,K.jsx)(`span`,{children:`缩放`}),(0,K.jsx)(`input`,{type:`range`,min:1,max:3,step:.05,value:d,onChange:e=>f(Number(e.target.value))})]})]}):null})]})}var cv=Object.defineProperty,lv=s.forwardRef(((e,t)=>cv(e,`name`,{value:t,configurable:!0}))(function(e,t){return(0,K.jsx)(yn.label,{...e,ref:t,onMouseDown:t=>{t.target.closest(`button, input, select, textarea`)||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}})},`Label`)),uv=Object.defineProperty,dv=(e,t)=>uv(e,`name`,{value:t,configurable:!0}),[fv,pv]=Nt(`Tooltip`,[cc]),mv=cc(),hv=`TooltipProvider`,gv=700,_v=`tooltip.open`,[vv,yv]=fv(hv),bv=dv(e=>{let{__scopeTooltip:t,delayDuration:n=gv,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=s.useRef(!0),c=s.useRef(!1),l=s.useRef(0);return s.useEffect(()=>{let e=l.current;return()=>window.clearTimeout(e)},[]),(0,K.jsx)(vv,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:s.useCallback(()=>{r<=0||(window.clearTimeout(l.current),o.current=!1)},[r]),onClose:s.useCallback(()=>{r<=0||(window.clearTimeout(l.current),l.current=window.setTimeout(()=>o.current=!0,r))},[r]),isPointerInTransitRef:c,onPointerInTransitChange:s.useCallback(e=>{c.current=e},[]),disableHoverableContent:i,children:a})},`TooltipProvider`),xv=`Tooltip`,[Sv,Cv]=fv(xv),wv=dv(e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:c}=e,l=yv(xv,e.__scopeTooltip),u=mv(t),[d,f]=s.useState(null),[p,m]=s.useState(void 0),h=Bt(),g=s.useRef(0),_=o??l.disableHoverableContent,v=c??l.delayDuration,y=s.useRef(!1),[b,x]=Yt({prop:r,defaultProp:i??!1,onChange:dv(e=>{e?(l.onOpen(),document.dispatchEvent(new CustomEvent(_v))):l.onClose(),a?.(e)},`onChange`),caller:xv}),S=s.useMemo(()=>b?y.current?`delayed-open`:`instant-open`:`closed`,[b]),C=s.useCallback(()=>{window.clearTimeout(g.current),g.current=0,y.current=!1,x(!0)},[x]),w=s.useCallback(()=>{window.clearTimeout(g.current),g.current=0,x(!1)},[x]),T=s.useCallback(()=>{window.clearTimeout(g.current),g.current=window.setTimeout(()=>{y.current=!0,x(!0),g.current=0},v)},[v,x]);s.useEffect(()=>()=>{g.current&&=(window.clearTimeout(g.current),0)},[]);let E=p??h;return(0,K.jsx)(wc,{...u,children:(0,K.jsx)(Sv,{scope:t,contentId:E,setContentId:m,open:b,stateAttribute:S,trigger:d,onTriggerChange:f,onTriggerEnter:s.useCallback(()=>{l.isOpenDelayedRef.current?T():C()},[l.isOpenDelayedRef,T,C]),onTriggerLeave:s.useCallback(()=>{_?w():(window.clearTimeout(g.current),g.current=0)},[w,_]),onOpen:C,onClose:w,disableHoverableContent:_,children:n})})},`Tooltip`),Tv=`TooltipTrigger`,Ev=s.forwardRef(dv(function(e,t){let{__scopeTooltip:n,...r}=e,i=Cv(Tv,n),a=yv(Tv,n),o=mv(n),c=kt(t,s.useRef(null),i.onTriggerChange),l=s.useRef(!1),u=s.useRef(!1),d=s.useCallback(()=>l.current=!1,[]);return s.useEffect(()=>()=>document.removeEventListener(`pointerup`,d),[d]),(0,K.jsx)(Tc,{asChild:!0,...o,children:(0,K.jsx)(yn.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:c,onPointerMove:q(e.onPointerMove,e=>{e.pointerType!==`touch`&&!u.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),u.current=!0)}),onPointerLeave:q(e.onPointerLeave,()=>{i.onTriggerLeave(),u.current=!1}),onPointerDown:q(e.onPointerDown,()=>{i.open&&i.onClose(),l.current=!0,document.addEventListener(`pointerup`,d,{once:!0})}),onFocus:q(e.onFocus,()=>{l.current||i.onOpen()}),onBlur:q(e.onBlur,i.onClose),onClick:q(e.onClick,i.onClose)})})},`TooltipTrigger`)),Dv=`TooltipPortal`,[Ov,kv]=fv(Dv,{forceMount:void 0}),Av=dv(e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=Cv(Dv,t);return(0,K.jsx)(Ov,{scope:t,forceMount:n,children:(0,K.jsx)(or,{present:n||a.open,children:(0,K.jsx)(nr,{asChild:!0,container:i,children:r})})})},`TooltipPortal`),jv=`TooltipContent`,Mv=s.forwardRef(dv(function(e,t){let n=kv(jv,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=Cv(jv,e.__scopeTooltip);return(0,K.jsx)(or,{present:r||o.open,children:o.disableHoverableContent?(0,K.jsx)(Fv,{side:i,...a,ref:t}):(0,K.jsx)(Nv,{side:i,...a,ref:t})})},`TooltipContent`)),Nv=s.forwardRef(dv(function(e,t){let n=Cv(jv,e.__scopeTooltip),r=yv(jv,e.__scopeTooltip),i=s.useRef(null),a=kt(t,i),[o,c]=s.useState(null),{trigger:l,onClose:u}=n,d=i.current,{onPointerInTransitChange:f}=r,p=s.useCallback(()=>{c(null),f(!1)},[f]),m=s.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=Rv(r,Lv(r,n.getBoundingClientRect())),a=zv(t.getBoundingClientRect()),o=Vv([...i,...a]);c(o),f(!0)},[f]);return s.useEffect(()=>()=>p(),[p]),s.useEffect(()=>{if(l&&d){let e=dv(e=>m(e,d),`handleTriggerLeave`),t=dv(e=>m(e,l),`handleContentLeave`);return l.addEventListener(`pointerleave`,e),d.addEventListener(`pointerleave`,t),()=>{l.removeEventListener(`pointerleave`,e),d.removeEventListener(`pointerleave`,t)}}},[l,d,m,p]),s.useEffect(()=>{if(o){let e=dv(e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=l?.contains(t)||d?.contains(t),i=!Bv(n,o);r?p():i&&(p(),u())},`handleTrackPointerGrace`);return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[l,d,o,u,p]),(0,K.jsx)(Fv,{...e,ref:a})},`TooltipContentHoverable`)),Pv=on(`TooltipContent`),Fv=s.forwardRef(dv(function(e,t){let{__scopeTooltip:n,children:r,"aria-label":i,id:a,onEscapeKeyDown:o,onPointerDownOutside:c,...l}=e,u=Cv(jv,n),d=mv(n),{onClose:f}=u;s.useEffect(()=>(document.addEventListener(_v,f),()=>document.removeEventListener(_v,f)),[f]),s.useEffect(()=>{if(u.trigger){let e=dv(e=>{e.target instanceof Node&&e.target.contains(u.trigger)&&f()},`handleScroll`);return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[u.trigger,f]);let{setContentId:p}=u;return Ft(()=>(p(a),()=>{p(void 0)}),[a,p]),(0,K.jsx)(jn,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:o,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:f,children:(0,K.jsxs)(Ec,{"data-state":u.stateAttribute,role:i?void 0:`tooltip`,id:i?void 0:u.contentId,...d,...l,ref:t,style:{...l.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,K.jsx)(Pv,{children:r}),i?(0,K.jsx)(xm,{id:u.contentId,role:`tooltip`,children:i}):null]})})},`TooltipContentImpl`)),Iv=s.forwardRef(dv(function(e,t){let{__scopeTooltip:n,...r}=e,i=mv(n);return(0,K.jsx)(Dc,{...i,...r,ref:t})},`TooltipArrow`));function Lv(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}dv(Lv,`getExitSideFromRect`);function Rv(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}dv(Rv,`getPaddedExitPoints`);function zv(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}dv(zv,`getPointsFromRect`);function Bv(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}dv(Bv,`isPointInPolygon`);function Vv(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y)),Hv(t)}dv(Vv,`getHull`);function Hv(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}dv(Hv,`getHullPresorted`);var Uv=bv,Wv=wv,Gv=Ev,Kv=Av,qv=Mv,Jv=Iv,Yv={required:`*`,optional:``,generated:`自动生成`};function Xv({children:e,htmlFor:t,requirement:n,hint:r}){return(0,K.jsxs)(`div`,{className:`studio-field-label-row`,children:[(0,K.jsxs)(lv,{className:`studio-field-label`,htmlFor:t,children:[(0,K.jsx)(`span`,{children:e}),n&&Yv[n]?(0,K.jsxs)(`span`,{className:`studio-field-requirement ${n}`,children:[(0,K.jsx)(`span`,{"aria-hidden":`true`,children:Yv[n]}),n===`required`&&(0,K.jsx)(`span`,{className:`sr-only`,children:`必填`})]}):null]}),r?(0,K.jsx)(Uv,{delayDuration:240,children:(0,K.jsxs)(Wv,{children:[(0,K.jsx)(Gv,{asChild:!0,children:(0,K.jsx)(`button`,{className:`field-help-trigger`,type:`button`,"aria-label":`${String(e)}说明`,onClick:e=>e.preventDefault(),children:(0,K.jsx)(re,{size:14})})}),(0,K.jsx)(Kv,{children:(0,K.jsxs)(qv,{className:`studio-tooltip field-help-tooltip`,side:`top`,sideOffset:7,children:[r,(0,K.jsx)(Jv,{className:`studio-tooltip-arrow`})]})})]})}):null]})}function Zv({id:e,children:t}){return(0,K.jsx)(`p`,{className:`studio-field-error`,id:e,role:`alert`,children:t})}function X({label:e,requirement:t,hint:n,error:r,htmlFor:i,children:a,className:o,footer:c}){let l=(0,s.useId)(),u=n?`${l}-hint`:void 0,d=r?`${l}-error`:void 0,f=[u,d].filter(Boolean).join(` `)||void 0,p=a;if((0,s.isValidElement)(a)){let e=a,t=typeof e.props[`aria-describedby`]==`string`?e.props[`aria-describedby`]:void 0;p=(0,s.cloneElement)(e,{"aria-describedby":[t,f].filter(Boolean).join(` `)||void 0,"aria-invalid":r?!0:e.props[`aria-invalid`]})}return(0,K.jsxs)(`div`,{className:`studio-form-field${r?` has-error`:``}${o?` ${o}`:``}`,children:[(0,K.jsx)(Xv,{htmlFor:i,requirement:t,hint:n,children:e}),(0,K.jsx)(`div`,{className:`studio-field-control`,children:p}),c?(0,K.jsx)(`div`,{className:`studio-field-footer`,children:c}):null,n?(0,K.jsx)(`span`,{className:`sr-only`,id:u,children:n}):null,r?(0,K.jsx)(Zv,{id:d,children:r}):null]})}var Qv=Object.defineProperty,$v=(e,t)=>Qv(e,`name`,{value:t,configurable:!0}),ey=`Popover`,[ty,ny]=Nt(ey,[cc]),ry=cc(),[iy,ay]=ty(ey),oy=$v(e=>{let{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!1}=e,c=ry(t),l=s.useRef(null),[u,d]=s.useState(!1),[f,p]=Yt({prop:r,defaultProp:i??!1,onChange:a,caller:ey});return(0,K.jsx)(wc,{...c,children:(0,K.jsx)(iy,{scope:t,contentId:Bt(),triggerRef:l,open:f,onOpenChange:p,onOpenToggle:s.useCallback(()=>p(e=>!e),[p]),hasCustomAnchor:u,onCustomAnchorAdd:s.useCallback(()=>d(!0),[]),onCustomAnchorRemove:s.useCallback(()=>d(!1),[]),modal:o,children:n})})},`Popover`),sy=`PopoverTrigger`,cy=s.forwardRef($v(function(e,t){let{__scopePopover:n,...r}=e,i=ay(sy,n),a=ry(n),o=kt(t,i.triggerRef),s=(0,K.jsx)(yn.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":yy(i.open),...r,ref:o,onClick:q(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?s:(0,K.jsx)(Tc,{asChild:!0,...a,children:s})},`PopoverTrigger`)),ly=`PopoverPortal`,[uy,dy]=ty(ly,{forceMount:void 0}),fy=$v(e=>{let{__scopePopover:t,forceMount:n,children:r,container:i}=e,a=ay(ly,t);return(0,K.jsx)(uy,{scope:t,forceMount:n,children:(0,K.jsx)(or,{present:n||a.open,children:(0,K.jsx)(nr,{asChild:!0,container:i,children:r})})})},`PopoverPortal`),py=`PopoverContent`,my=s.forwardRef($v(function(e,t){let n=dy(py,e.__scopePopover),{forceMount:r=n.forceMount,...i}=e,a=ay(py,e.__scopePopover);return(0,K.jsx)(or,{present:r||a.open,children:a.modal?(0,K.jsx)(gy,{...i,ref:t}):(0,K.jsx)(_y,{...i,ref:t})})},`PopoverContent`)),hy=rn(`PopoverContent.RemoveScroll`),gy=s.forwardRef($v(function(e,t){let n=ay(py,e.__scopePopover),r=s.useRef(null),i=kt(t,r),a=s.useRef(!1);return s.useEffect(()=>{let e=r.current;if(e)return Ri(e)},[]),(0,K.jsx)(ki,{as:hy,allowPinchZoom:!0,children:(0,K.jsx)(vy,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:q(e.onCloseAutoFocus,e=>{e.preventDefault(),a.current||n.triggerRef.current?.focus()}),onPointerDownOutside:q(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;a.current=r},{checkForDefaultPrevented:!1}),onFocusOutside:q(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})},`PopoverContentModal`)),_y=s.forwardRef($v(function(e,t){let n=ay(py,e.__scopePopover),r=s.useRef(!1),i=s.useRef(!1);return(0,K.jsx)(vy,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})},`PopoverContentNonModal`)),vy=s.forwardRef($v(function(e,t){let{__scopePopover:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:o,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onInteractOutside:u,...d}=e,f=ay(py,n),p=ry(n);return _r(),(0,K.jsx)(Un,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,K.jsx)(jn,{asChild:!0,disableOutsidePointerEvents:o,onInteractOutside:u,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onDismiss:()=>f.onOpenChange(!1),deferPointerDownOutside:!0,children:(0,K.jsx)(Ec,{"data-state":yy(f.open),role:`dialog`,id:f.contentId,...p,...d,ref:t,style:{...d.style,"--radix-popover-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-popover-content-available-width":`var(--radix-popper-available-width)`,"--radix-popover-content-available-height":`var(--radix-popper-available-height)`,"--radix-popover-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-popover-trigger-height":`var(--radix-popper-anchor-height)`}})})})},`PopoverContentImpl`));function yy(e){return e?`open`:`closed`}$v(yy,`getState`);var by=oy,xy=cy,Sy=fy,Cy=my,wy=1,Ty=.9,Ey=.8,Dy=.17,Oy=.1,ky=.999,Ay=.9999,jy=.99,My=/[\\\/_+.#"@\[\(\{&]/,Ny=/[\\\/_+.#"@\[\(\{&]/g,Py=/[\s-]/,Fy=/[\s-]/g;function Iy(e,t,n,r,i,a,o){if(a===t.length)return i===e.length?wy:jy;var s=`${i},${a}`;if(o[s]!==void 0)return o[s];for(var c=r.charAt(a),l=n.indexOf(c,i),u=0,d,f,p,m;l>=0;)d=Iy(e,t,n,r,l+1,a+1,o),d>u&&(l===i?d*=wy:My.test(e.charAt(l-1))?(d*=Ey,p=e.slice(i,l-1).match(Ny),p&&i>0&&(d*=ky**+p.length)):Py.test(e.charAt(l-1))?(d*=Ty,m=e.slice(i,l-1).match(Fy),m&&i>0&&(d*=ky**+m.length)):(d*=Dy,i>0&&(d*=ky**+(l-i))),e.charAt(l)!==t.charAt(a)&&(d*=Ay)),(dd&&(d=f*Oy)),d>u&&(u=d),l=n.indexOf(c,l+1);return o[s]=u,u}function Ly(e){return e.toLowerCase().replace(Fy,` `)}function Ry(e,t,n){return e=n&&n.length>0?`${e+` `+n.join(` `)}`:e,Iy(e,t,Ly(e),Ly(t),0,0,{})}var zy=`[cmdk-group=""]`,By=`[cmdk-group-items=""]`,Vy=`[cmdk-group-heading=""]`,Hy=`[cmdk-item=""]`,Uy=`${Hy}:not([aria-disabled="true"])`,Wy=`cmdk-item-select`,Gy=`data-value`,Ky=(e,t,n)=>Ry(e,t,n),qy=s.createContext(void 0),Jy=()=>s.useContext(qy),Yy=s.createContext(void 0),Xy=()=>s.useContext(Yy),Zy=s.createContext(void 0),Qy=s.forwardRef((e,t)=>{let n=fb(()=>({search:``,value:e.value??e.defaultValue??``,selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}})),r=fb(()=>new Set),i=fb(()=>new Map),a=fb(()=>new Map),o=fb(()=>new Set),c=ub(e),{label:l,children:u,value:d,onValueChange:f,filter:p,shouldFilter:m,loop:h,disablePointerSelection:g=!1,vimBindings:_=!0,...v}=e,y=Bt(),b=Bt(),x=Bt(),S=s.useRef(null),C=hb();db(()=>{if(d!==void 0){let e=d.trim();n.current.value=e,w.emit()}},[d]),db(()=>{C(6,A)},[]);let w=s.useMemo(()=>({subscribe:e=>(o.current.add(e),()=>o.current.delete(e)),snapshot:()=>n.current,setState:(e,t,r)=>{var i,a,o;if(!Object.is(n.current[e],t)){if(n.current[e]=t,e===`search`)k(),D(),C(1,O);else if(e===`value`){if(document.activeElement.hasAttribute(`cmdk-input`)||document.activeElement.hasAttribute(`cmdk-root`)){let e=document.getElementById(x);e?e.focus():(i=document.getElementById(y))==null||i.focus()}if(C(7,()=>{n.current.selectedItemId=j()?.id,w.emit()}),r||C(5,A),c.current?.value!==void 0){let e=t??``;(o=(a=c.current).onValueChange)==null||o.call(a,e);return}}w.emit()}},emit:()=>{o.current.forEach(e=>e())}}),[]),T=s.useMemo(()=>({value:(e,t,r)=>{t!==a.current.get(e)?.value&&(a.current.set(e,{value:t,keywords:r}),n.current.filtered.items.set(e,E(t,r)),C(2,()=>{D(),w.emit()}))},item:(e,t)=>(r.current.add(e),t&&(i.current.has(t)?i.current.get(t).add(e):i.current.set(t,new Set([e]))),C(3,()=>{k(),D(),n.current.value||O(),w.emit()}),()=>{a.current.delete(e),r.current.delete(e),n.current.filtered.items.delete(e);let t=j();C(4,()=>{k(),t?.getAttribute(`id`)===e&&O(),w.emit()})}),group:e=>(i.current.has(e)||i.current.set(e,new Set),()=>{a.current.delete(e),i.current.delete(e)}),filter:()=>c.current.shouldFilter,label:l||e[`aria-label`],getDisablePointerSelection:()=>c.current.disablePointerSelection,listId:y,inputId:x,labelId:b,listInnerRef:S}),[]);function E(e,t){let r=c.current?.filter??Ky;return e?r(e,n.current.search,t):0}function D(){if(!n.current.search||c.current.shouldFilter===!1)return;let e=n.current.filtered.items,t=[];n.current.filtered.groups.forEach(n=>{let r=i.current.get(n),a=0;r.forEach(t=>{let n=e.get(t);a=Math.max(n,a)}),t.push([n,a])});let r=S.current;M().sort((t,n)=>{let r=t.getAttribute(`id`),i=n.getAttribute(`id`);return(e.get(i)??0)-(e.get(r)??0)}).forEach(e=>{let t=e.closest(By);t?t.appendChild(e.parentElement===t?e:e.closest(`${By} > *`)):r.appendChild(e.parentElement===r?e:e.closest(`${By} > *`))}),t.sort((e,t)=>t[1]-e[1]).forEach(e=>{let t=S.current?.querySelector(`${zy}[${Gy}="${encodeURIComponent(e[0])}"]`);t?.parentElement.appendChild(t)})}function O(){let e=M().find(e=>e.getAttribute(`aria-disabled`)!==`true`)?.getAttribute(Gy);w.setState(`value`,e||void 0)}function k(){if(!n.current.search||c.current.shouldFilter===!1){n.current.filtered.count=r.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let t of r.current){let r=E(a.current.get(t)?.value??``,a.current.get(t)?.keywords??[]);n.current.filtered.items.set(t,r),r>0&&e++}for(let[e,t]of i.current)for(let r of t)if(n.current.filtered.items.get(r)>0){n.current.filtered.groups.add(e);break}n.current.filtered.count=e}function A(){var e;let t=j();t&&(t.parentElement?.firstChild===t&&((e=t.closest(zy)?.querySelector(Vy))==null||e.scrollIntoView({block:`nearest`})),t.scrollIntoView({block:`nearest`}))}function j(){return S.current?.querySelector(`${Hy}[aria-selected="true"]`)}function M(){return Array.from(S.current?.querySelectorAll(Uy)||[])}function N(e){let t=M()[e];t&&w.setState(`value`,t.getAttribute(Gy))}function P(e){var t;let n=j(),r=M(),i=r.findIndex(e=>e===n),a=r[i+e];(t=c.current)!=null&&t.loop&&(a=i+e<0?r[r.length-1]:i+e===r.length?r[0]:r[i+e]),a&&w.setState(`value`,a.getAttribute(Gy))}function F(e){let t=j()?.closest(zy),n;for(;t&&!n;)t=e>0?cb(t,zy):lb(t,zy),n=t?.querySelector(Uy);n?w.setState(`value`,n.getAttribute(Gy)):P(e)}let I=()=>N(M().length-1),L=e=>{e.preventDefault(),e.metaKey?I():e.altKey?F(1):P(1)},R=e=>{e.preventDefault(),e.metaKey?N(0):e.altKey?F(-1):P(-1)};return s.createElement(yn.div,{ref:t,tabIndex:-1,...v,"cmdk-root":``,onKeyDown:e=>{var t;(t=v.onKeyDown)==null||t.call(v,e);let n=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||n))switch(e.key){case`n`:case`j`:_&&e.ctrlKey&&L(e);break;case`ArrowDown`:L(e);break;case`p`:case`k`:_&&e.ctrlKey&&R(e);break;case`ArrowUp`:R(e);break;case`Home`:e.preventDefault(),N(0);break;case`End`:e.preventDefault(),I();break;case`Enter`:{e.preventDefault();let t=j();if(t){let e=new Event(Wy);t.dispatchEvent(e)}}}}},s.createElement(`label`,{"cmdk-label":``,htmlFor:T.inputId,id:T.labelId,style:vb},l),_b(e,e=>s.createElement(Yy.Provider,{value:w},s.createElement(qy.Provider,{value:T},e))))}),$y=s.forwardRef((e,t)=>{let n=Bt(),r=s.useRef(null),i=s.useContext(Zy),a=Jy(),o=ub(e),c=o.current?.forceMount??i?.forceMount;db(()=>{if(!c)return a.item(n,i?.id)},[c]);let l=mb(n,r,[e.value,e.children,r],e.keywords),u=Xy(),d=pb(e=>e.value&&e.value===l.current),f=pb(e=>c||a.filter()===!1?!0:!e.search||e.filtered.items.get(n)>0);s.useEffect(()=>{let t=r.current;if(!(!t||e.disabled))return t.addEventListener(Wy,p),()=>t.removeEventListener(Wy,p)},[f,e.onSelect,e.disabled]);function p(){var e,t;m(),(t=(e=o.current).onSelect)==null||t.call(e,l.current)}function m(){u.setState(`value`,l.current,!0)}if(!f)return null;let{disabled:h,value:g,onSelect:_,forceMount:v,keywords:y,...b}=e;return s.createElement(yn.div,{ref:Ot(r,t),...b,id:n,"cmdk-item":``,role:`option`,"aria-disabled":!!h,"aria-selected":!!d,"data-disabled":!!h,"data-selected":!!d,onPointerMove:h||a.getDisablePointerSelection()?void 0:m,onClick:h?void 0:p},e.children)}),eb=s.forwardRef((e,t)=>{let{heading:n,children:r,forceMount:i,...a}=e,o=Bt(),c=s.useRef(null),l=s.useRef(null),u=Bt(),d=Jy(),f=pb(e=>i||d.filter()===!1?!0:!e.search||e.filtered.groups.has(o));db(()=>d.group(o),[]),mb(o,c,[e.value,e.heading,l]);let p=s.useMemo(()=>({id:o,forceMount:i}),[i]);return s.createElement(yn.div,{ref:Ot(c,t),...a,"cmdk-group":``,role:`presentation`,hidden:!f||void 0},n&&s.createElement(`div`,{ref:l,"cmdk-group-heading":``,"aria-hidden":!0,id:u},n),_b(e,e=>s.createElement(`div`,{"cmdk-group-items":``,role:`group`,"aria-labelledby":n?u:void 0},s.createElement(Zy.Provider,{value:p},e))))}),tb=s.forwardRef((e,t)=>{let{alwaysRender:n,...r}=e,i=s.useRef(null),a=pb(e=>!e.search);return!n&&!a?null:s.createElement(yn.div,{ref:Ot(i,t),...r,"cmdk-separator":``,role:`separator`})}),nb=s.forwardRef((e,t)=>{let{onValueChange:n,...r}=e,i=e.value!=null,a=Xy(),o=pb(e=>e.search),c=pb(e=>e.selectedItemId),l=Jy();return s.useEffect(()=>{e.value!=null&&a.setState(`search`,e.value)},[e.value]),s.createElement(yn.input,{ref:t,...r,"cmdk-input":``,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,"aria-autocomplete":`list`,role:`combobox`,"aria-expanded":!0,"aria-controls":l.listId,"aria-labelledby":l.labelId,"aria-activedescendant":c,id:l.inputId,type:`text`,value:i?e.value:o,onChange:e=>{i||a.setState(`search`,e.target.value),n?.(e.target.value)}})}),rb=s.forwardRef((e,t)=>{let{children:n,label:r=`Suggestions`,...i}=e,a=s.useRef(null),o=s.useRef(null),c=pb(e=>e.selectedItemId),l=Jy();return s.useEffect(()=>{if(o.current&&a.current){let e=o.current,t=a.current,n,r=new ResizeObserver(()=>{n=requestAnimationFrame(()=>{let n=e.offsetHeight;t.style.setProperty(`--cmdk-list-height`,n.toFixed(1)+`px`)})});return r.observe(e),()=>{cancelAnimationFrame(n),r.unobserve(e)}}},[]),s.createElement(yn.div,{ref:Ot(a,t),...i,"cmdk-list":``,role:`listbox`,tabIndex:-1,"aria-activedescendant":c,"aria-label":r,id:l.listId},_b(e,e=>s.createElement(`div`,{ref:Ot(o,l.listInnerRef),"cmdk-list-sizer":``},e)))}),ib=s.forwardRef((e,t)=>{let{open:n,onOpenChange:r,overlayClassName:i,contentClassName:a,container:o,...c}=e;return s.createElement(Ki,{open:n,onOpenChange:r},s.createElement(Xi,{container:o},s.createElement(Qi,{"cmdk-overlay":``,className:i}),s.createElement(na,{"aria-label":e.label,"cmdk-dialog":``,className:a},s.createElement(Qy,{ref:t,...c}))))}),ab=s.forwardRef((e,t)=>pb(e=>e.filtered.count===0)?s.createElement(yn.div,{ref:t,...e,"cmdk-empty":``,role:`presentation`}):null),ob=s.forwardRef((e,t)=>{let{progress:n,children:r,label:i=`Loading...`,...a}=e;return s.createElement(yn.div,{ref:t,...a,"cmdk-loading":``,role:`progressbar`,"aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":i},_b(e,e=>s.createElement(`div`,{"aria-hidden":!0},e)))}),sb=Object.assign(Qy,{List:rb,Item:$y,Input:nb,Group:eb,Separator:tb,Dialog:ib,Empty:ab,Loading:ob});function cb(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return n;n=n.nextElementSibling}}function lb(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling}}function ub(e){let t=s.useRef(e);return db(()=>{t.current=e}),t}var db=typeof window>`u`?s.useEffect:s.useLayoutEffect;function fb(e){let t=s.useRef();return t.current===void 0&&(t.current=e()),t}function pb(e){let t=Xy(),n=()=>e(t.snapshot());return s.useSyncExternalStore(t.subscribe,n,n)}function mb(e,t,n,r=[]){let i=s.useRef(),a=Jy();return db(()=>{var o;let s=(()=>{for(let e of n){if(typeof e==`string`)return e.trim();if(typeof e==`object`&&`current`in e)return e.current?e.current.textContent?.trim():i.current}})(),c=r.map(e=>e.trim());a.value(e,s,c),(o=t.current)==null||o.setAttribute(Gy,s),i.current=s}),i}var hb=()=>{let[e,t]=s.useState(),n=fb(()=>new Map);return db(()=>{n.current.forEach(e=>e()),n.current=new Map},[e]),(e,r)=>{n.current.set(e,r),t({})}};function gb(e){let t=e.type;return typeof t==`function`?t(e.props):`render`in t?t.render(e.props):e}function _b({asChild:e,children:t},n){return e&&s.isValidElement(t)?s.cloneElement(gb(t),{ref:t.ref},n(t.props.children)):n(t)}var vb={position:`absolute`,width:`1px`,height:`1px`,padding:`0`,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,borderWidth:`0`};function yb({ariaLabel:e,items:t,selectedIds:n,getId:r,getLabel:i,getDescription:a=()=>``,onChange:o,searchPlaceholder:c=`搜索`,emptyMessage:l=`没有匹配项`,disabledIds:u=[]}){let[d,f]=(0,s.useState)(!1),[p,m]=(0,s.useState)(!1),h=(0,s.useMemo)(()=>new Set(u),[u]),g=(0,s.useMemo)(()=>new Set(n),[n]),_=t.filter(e=>g.has(r(e))),v=p?_:t;function y(e){h.has(e)||o(g.has(e)?n.filter(t=>t!==e):[...n,e])}return(0,K.jsxs)(`div`,{className:`studio-multi-select`,children:[(0,K.jsxs)(`div`,{className:`studio-multi-select-summary`,children:[(0,K.jsx)(`span`,{children:n.length?`已选 ${n.length} 个`:`尚未选择`}),n.length?(0,K.jsx)(`button`,{className:`text-button`,type:`button`,onClick:()=>o([]),children:`清空`}):null]}),(0,K.jsx)(`div`,{className:`studio-multi-select-selection`,"data-testid":`studio-multi-select-selection`,children:_.map(e=>{let t=r(e),n=i(e);return(0,K.jsxs)(`span`,{className:`studio-selection-chip`,children:[(0,K.jsx)(`span`,{title:n,children:n}),h.has(t)?null:(0,K.jsx)(`button`,{type:`button`,"aria-label":`移除 ${n}`,onClick:()=>y(t),children:(0,K.jsx)(mt,{size:12})})]},t)})}),(0,K.jsxs)(by,{open:d,onOpenChange:f,children:[(0,K.jsx)(xy,{asChild:!0,children:(0,K.jsxs)(`button`,{className:`studio-multi-select-trigger`,type:`button`,"aria-label":e,"aria-expanded":d,children:[(0,K.jsx)(`span`,{children:n.length?`继续选择`:e}),(0,K.jsx)(B,{size:15})]})}),(0,K.jsx)(Sy,{children:(0,K.jsx)(Cy,{className:`studio-multi-select-popover`,align:`start`,sideOffset:6,collisionPadding:12,children:(0,K.jsxs)(sb,{loop:!0,label:c,children:[(0,K.jsxs)(`div`,{className:`studio-command-search`,children:[(0,K.jsx)(Ye,{size:14,"aria-hidden":`true`}),(0,K.jsx)(sb.Input,{"aria-label":c,placeholder:c,autoFocus:!0})]}),(0,K.jsxs)(`div`,{className:`studio-multi-select-tools`,children:[(0,K.jsx)(`button`,{className:p?`selected`:``,type:`button`,"aria-pressed":p,onClick:()=>m(e=>!e),children:`仅看已选`}),(0,K.jsxs)(`span`,{children:[v.length,` 项`]})]}),(0,K.jsxs)(sb.List,{className:`studio-command-list`,children:[(0,K.jsx)(sb.Empty,{children:l}),v.map(e=>{let t=r(e),n=i(e),o=a(e),s=g.has(t),c=h.has(t);return(0,K.jsxs)(sb.Item,{value:`${n} ${o} ${t}`,disabled:c,onSelect:()=>y(t),children:[(0,K.jsx)(`span`,{className:`studio-option-check`,role:`checkbox`,"aria-checked":s,children:s?(0,K.jsx)(z,{size:13}):null}),(0,K.jsxs)(`span`,{className:`studio-option-copy`,children:[(0,K.jsx)(`strong`,{children:n}),o?(0,K.jsx)(`small`,{children:o}):null]})]},t)})]})]})})})]})]})}var bb=(0,s.lazy)(()=>f(()=>import(`./PrismRenderer-IYN-ffww.js`),__vite__mapDeps([0,1,2])));function xb({code:e,language:t=`text`,filename:n,wrap:r=!1,showLineNumbers:i=!0}){let[a,o]=(0,s.useState)(r),[c,l]=(0,s.useState)(!1);(0,s.useEffect)(()=>o(r),[r]);async function u(){navigator.clipboard?.writeText&&(await navigator.clipboard.writeText(e),l(!0),window.setTimeout(()=>l(!1),1600))}let d=n?`${n} 源码`:`${t||`text`} 代码`;return(0,K.jsxs)(`section`,{className:`code-viewer`,role:`region`,"aria-label":d,"data-code-theme":`studio`,"data-wrap":String(a),children:[(0,K.jsxs)(`header`,{className:`code-viewer-toolbar`,children:[(0,K.jsxs)(`div`,{children:[n&&(0,K.jsx)(`strong`,{title:n,children:n}),(0,K.jsx)(`span`,{children:t||`text`})]}),(0,K.jsxs)(`div`,{className:`code-viewer-actions`,children:[(0,K.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":a?`取消自动换行`:`自动换行`,title:a?`取消自动换行`:`自动换行`,"aria-pressed":a,onClick:()=>o(e=>!e),children:(0,K.jsx)(ct,{size:15})}),(0,K.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":c?`已复制`:`复制代码`,title:c?`已复制`:`复制代码`,onClick:()=>void u(),children:c?(0,K.jsx)(z,{size:15}):(0,K.jsx)(ue,{size:15})})]})]}),(0,K.jsx)(`div`,{className:`code-viewer-scroll`,children:(0,K.jsx)(s.Suspense,{fallback:(0,K.jsx)(`pre`,{className:`code-viewer-fallback`,children:(0,K.jsx)(`code`,{children:e})}),children:(0,K.jsx)(bb,{code:e,language:t||`text`,showLineNumbers:i})})})]})}function Sb(e){return(e.split(`.`).filter(Boolean).at(-1)||e).replace(/_([a-z])/g,(e,t)=>t.toUpperCase())}function Cb(e){if(!e?.length)return null;let t=e[e.length-1];return typeof t==`string`?t:null}function wb(e,t,n){typeof t==`string`&&t.trim()&&typeof n==`string`&&n&&(e[Sb(t)]=n)}function Tb(e,t){if(!(!t||typeof t!=`object`||Array.isArray(t)))for(let[n,r]of Object.entries(t))typeof r==`string`?wb(e,n,r):Array.isArray(r)&&typeof r[0]==`string`&&wb(e,n,r[0])}function Eb(e){if(!e||typeof e!=`object`)return null;let t=e,n={};Tb(n,t.errors);let r=t.error;if(r&&typeof r==`object`&&!Array.isArray(r)){let e=r;if(typeof e.field==`string`&&typeof e.message==`string`)return{[e.field]:e.message};let t=e.fields;if(t&&typeof t==`object`&&!Array.isArray(t)){let e={},n=!1;for(let[r,i]of Object.entries(t))typeof i==`string`&&(e[r]=i,n=!0);if(n)return e}let i=e.details;if(Array.isArray(i))for(let e of i)wb(n,e.field||Cb(e.loc),e.message);else i&&typeof i==`object`&&Tb(n,i.fields)}return Object.keys(n).length?n:null}function Db(e,t){let n=Eb(e);if(!n)return!1;for(let[e,r]of Object.entries(n))t(e,{type:`server`,message:r});return!0}var Ob;function Z(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:r,constr:o,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);let i=o.prototype,a=Object.keys(i);for(let e=0;en?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}var kb=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Ab=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Ob=globalThis).__zod_globalConfig??(Ob.__zod_globalConfig={});var jb=globalThis.__zod_globalConfig;function Mb(e){return e&&Object.assign(jb,e),jb}function Nb(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function Pb(e,t){return typeof t==`bigint`?t.toString():t}function Fb(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function Ib(e){return e==null}function Lb(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function Rb(e,t){let n=e/t,r=Math.round(n),i=2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r){};function Kb(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var qb=Fb(()=>{if(jb.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function Jb(e){if(Kb(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return Kb(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function Yb(e){return Jb(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var Xb=new Set([`string`,`number`,`symbol`]);function Zb(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Qb(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function $b(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function ex(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}var tx={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function nx(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return Qb(e,Hb(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return Vb(this,`shape`,e),e},checks:[]}))}function rx(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return Qb(e,Hb(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return Vb(this,`shape`,r),r},checks:[]}))}function ix(e,t){if(!Jb(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return Qb(e,Hb(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return Vb(this,`shape`,n),n}}))}function ax(e,t){if(!Jb(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return Qb(e,Hb(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return Vb(this,`shape`,n),n}}))}function ox(e,t){if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return Qb(e,Hb(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return Vb(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function sx(e,t,n){let r=t._zod.def.checks;if(r&&r.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return Qb(t,Hb(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return Vb(this,`shape`,i),i},checks:[]}))}function cx(e,t,n){return Qb(t,Hb(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return Vb(this,`shape`,i),i}}))}function lx(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function fx(e){return typeof e==`string`?e:e?.message}function px(e,t,n){let r=e.message?e.message:fx(e.inst?._zod.def?.error?.(e))??fx(t?.error?.(e))??fx(n.customError?.(e))??fx(n.localeError?.(e))??`Invalid input`,{inst:i,continue:a,input:o,...s}=e;return s.path??=[],s.message=r,t?.reportInput&&(s.input=o),s}function mx(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function hx(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var gx=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,Pb,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},_x=Z(`$ZodError`,gx),vx=Z(`$ZodError`,gx,{Parent:Error});function yx(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function bx(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i(t,n,r,i)=>{let a=r?{...r,async:!1}:{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new kb;if(o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>px(e,a,Mb())));throw Gb(t,i?.callee),t}return o.value},Sx=e=>async(t,n,r,i)=>{let a=r?{...r,async:!0}:{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>px(e,a,Mb())));throw Gb(t,i?.callee),t}return o.value},Cx=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new kb;return a.issues.length?{success:!1,error:new(e??_x)(a.issues.map(e=>px(e,i,Mb())))}:{success:!0,data:a.value}},wx=Cx(vx),Tx=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>px(e,i,Mb())))}:{success:!0,data:a.value}},Ex=Tx(vx),Dx=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return xx(e)(t,n,i)},Ox=e=>(t,n,r)=>xx(e)(t,n,r),kx=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Sx(e)(t,n,i)},Ax=e=>async(t,n,r)=>Sx(e)(t,n,r),jx=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Cx(e)(t,n,i)},Mx=e=>(t,n,r)=>Cx(e)(t,n,r),Nx=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Tx(e)(t,n,i)},Px=e=>async(t,n,r)=>Tx(e)(t,n,r),Fx=/^[cC][0-9a-z]{6,}$/,Ix=/^[0-9a-z]+$/,Lx=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Rx=/^[0-9a-vA-V]{20}$/,zx=/^[A-Za-z0-9]{27}$/,Bx=/^[a-zA-Z0-9_-]{21}$/,Vx=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Hx=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Ux=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Wx=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Gx=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function Kx(){return new RegExp(Gx,`u`)}var qx=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Jx=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Yx=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Xx=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Zx=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Qx=/^[A-Za-z0-9_-]*$/,$x=/^https?$/,eS=/^\+[1-9]\d{6,14}$/,tS=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,nS=RegExp(`^${tS}$`);function rS(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function iS(e){return RegExp(`^${rS(e)}$`)}function aS(e){let t=rS({precision:e.precision}),n=[`Z`];e.local&&n.push(``),e.offset&&n.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let r=`${t}(?:${n.join(`|`)})`;return RegExp(`^${tS}T(?:${r})$`)}var oS=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},sS=/^-?\d+$/,cS=/^-?\d+(?:\.\d+)?$/,lS=/^(?:true|false)$/i,uS=/^[^A-Z]*$/,dS=/^[^a-z]*$/,fS=Z(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),pS={number:`number`,bigint:`bigint`,object:`date`},mS=Z(`$ZodCheckLessThan`,(e,t)=>{fS.init(e,t);let n=pS[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value{(t.inclusive?r.value<=t.value:r.value{fS.init(e,t);let n=pS[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),gS=Z(`$ZodCheckMultipleOf`,(e,t)=>{fS.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?n.value%t.value===BigInt(0):Rb(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),_S=Z(`$ZodCheckNumberFormat`,(e,t)=>{fS.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=tx[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=sS)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}sa&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),vS=Z(`$ZodCheckMaxLength`,(e,t)=>{var n;fS.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Ib(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum{let r=n.value;if(r.length<=t.maximum)return;let i=mx(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),yS=Z(`$ZodCheckMinLength`,(e,t)=>{var n;fS.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Ib(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=mx(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),bS=Z(`$ZodCheckLengthEquals`,(e,t)=>{var n;fS.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Ib(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=mx(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),xS=Z(`$ZodCheckStringFormat`,(e,t)=>{var n,r;fS.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),SS=Z(`$ZodCheckRegex`,(e,t)=>{xS.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),CS=Z(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=uS,xS.init(e,t)}),wS=Z(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=dS,xS.init(e,t)}),TS=Z(`$ZodCheckIncludes`,(e,t)=>{fS.init(e,t);let n=Zb(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),ES=Z(`$ZodCheckStartsWith`,(e,t)=>{fS.init(e,t);let n=RegExp(`^${Zb(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),DS=Z(`$ZodCheckEndsWith`,(e,t)=>{fS.init(e,t);let n=RegExp(`.*${Zb(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),OS=Z(`$ZodCheckOverwrite`,(e,t)=>{fS.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),kS=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` -`).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.args,n=[...(this?.content??[``]).map(e=>` ${e}`)];return new e(...t,n.join(` -`))}},AS={major:4,minor:4,patch:3},jS=Z(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=AS;let r=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&r.unshift(e);for(let t of r)for(let n of t._zod.onattach)n(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,n)=>{let r=lx(e),i;for(let a of t){if(a._zod.def.when){if(ux(e)||!a._zod.def.when(e))continue}else if(r)continue;let t=e.issues.length,o=a._zod.check(e);if(o instanceof Promise&&n?.async===!1)throw new kb;if(i||o instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(r||=lx(e,t))});else{if(e.issues.length===t)continue;r||=lx(e,t)}}return i?i.then(()=>e):e},n=(n,i,a)=>{if(lx(n))return n.aborted=!0,n;let o=t(i,r,a);if(o instanceof Promise){if(a.async===!1)throw new kb;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction===`backward`){let t=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,i,a)):n(t,i,a)}let o=e._zod.parse(i,a);if(o instanceof Promise){if(a.async===!1)throw new kb;return o.then(e=>t(e,r,a))}return t(o,r,a)}}Bb(e,`~standard`,()=>({validate:t=>{try{let n=wx(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return Ex(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}))}),MS=Z(`$ZodString`,(e,t)=>{jS.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??oS(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),NS=Z(`$ZodStringFormat`,(e,t)=>{xS.init(e,t),MS.init(e,t)}),PS=Z(`$ZodGUID`,(e,t)=>{t.pattern??=Hx,NS.init(e,t)}),FS=Z(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=Ux(e)}else t.pattern??=Ux();NS.init(e,t)}),IS=Z(`$ZodEmail`,(e,t)=>{t.pattern??=Wx,NS.init(e,t)}),LS=Z(`$ZodURL`,(e,t)=>{NS.init(e,t),e._zod.check=n=>{try{let r=n.value.trim();if(!t.normalize&&t.protocol?.source===$x.source&&!/^https?:\/\//i.test(r)){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}let i=new URL(r);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(i.hostname)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(i.protocol.endsWith(`:`)?i.protocol.slice(0,-1):i.protocol)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),n.value=t.normalize?i.href:r;return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),RS=Z(`$ZodEmoji`,(e,t)=>{t.pattern??=Kx(),NS.init(e,t)}),zS=Z(`$ZodNanoID`,(e,t)=>{t.pattern??=Bx,NS.init(e,t)}),BS=Z(`$ZodCUID`,(e,t)=>{t.pattern??=Fx,NS.init(e,t)}),VS=Z(`$ZodCUID2`,(e,t)=>{t.pattern??=Ix,NS.init(e,t)}),HS=Z(`$ZodULID`,(e,t)=>{t.pattern??=Lx,NS.init(e,t)}),US=Z(`$ZodXID`,(e,t)=>{t.pattern??=Rx,NS.init(e,t)}),WS=Z(`$ZodKSUID`,(e,t)=>{t.pattern??=zx,NS.init(e,t)}),GS=Z(`$ZodISODateTime`,(e,t)=>{t.pattern??=aS(t),NS.init(e,t)}),KS=Z(`$ZodISODate`,(e,t)=>{t.pattern??=nS,NS.init(e,t)}),qS=Z(`$ZodISOTime`,(e,t)=>{t.pattern??=iS(t),NS.init(e,t)}),JS=Z(`$ZodISODuration`,(e,t)=>{t.pattern??=Vx,NS.init(e,t)}),YS=Z(`$ZodIPv4`,(e,t)=>{t.pattern??=qx,NS.init(e,t),e._zod.bag.format=`ipv4`}),XS=Z(`$ZodIPv6`,(e,t)=>{t.pattern??=Jx,NS.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}}),ZS=Z(`$ZodCIDRv4`,(e,t)=>{t.pattern??=Yx,NS.init(e,t)}),QS=Z(`$ZodCIDRv6`,(e,t)=>{t.pattern??=Xx,NS.init(e,t),e._zod.check=n=>{let r=n.value.split(`/`);try{if(r.length!==2)throw Error();let[e,t]=r;if(!t)throw Error();let n=Number(t);if(`${n}`!==t||n<0||n>128)throw Error();new URL(`http://[${e}]`)}catch{n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}}});function $S(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var eC=Z(`$ZodBase64`,(e,t)=>{t.pattern??=Zx,NS.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{$S(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function tC(e){if(!Qx.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return $S(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var nC=Z(`$ZodBase64URL`,(e,t)=>{t.pattern??=Qx,NS.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{tC(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),rC=Z(`$ZodE164`,(e,t)=>{t.pattern??=eS,NS.init(e,t)});function iC(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var aC=Z(`$ZodJWT`,(e,t)=>{NS.init(e,t),e._zod.check=n=>{iC(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),oC=Z(`$ZodNumber`,(e,t)=>{jS.init(e,t),e._zod.pattern=e._zod.bag.pattern??cS,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:`Infinity`:void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),sC=Z(`$ZodNumberFormat`,(e,t)=>{_S.init(e,t),oC.init(e,t)}),cC=Z(`$ZodBoolean`,(e,t)=>{jS.init(e,t),e._zod.pattern=lS,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),lC=Z(`$ZodUnknown`,(e,t)=>{jS.init(e,t),e._zod.parse=e=>e}),uC=Z(`$ZodNever`,(e,t)=>{jS.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function dC(e,t,n){e.issues.length&&t.issues.push(...dx(n,e.issues)),t.value[n]=e.value}var fC=Z(`$ZodArray`,(e,t)=>{jS.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;edC(t,n,e))):dC(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function pC(e,t,n,r,i,a){let o=n in r;if(e.issues.length){if(i&&a&&!o)return;t.issues.push(...dx(n,e.issues))}if(!o&&!i){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?o&&(t.value[n]=void 0):t.value[n]=e.value}function mC(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=ex(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function hC(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optin===`optional`,d=c.optout===`optional`;for(let i in t){if(i===`__proto__`||s.has(i))continue;if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>pC(e,n,i,t,u,d))):pC(a,n,i,t,u,d)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a}),e.length?Promise.all(e).then(()=>n):n}var gC=Z(`$ZodObject`,(e,t)=>{if(jS.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Object.defineProperty(t,"shape",{get:()=>{let n={...e};return Object.defineProperty(t,"shape",{value:n}),n}})}let n=Fb(()=>mC(t));Bb(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=Kb,i=t.catchall,a;e._zod.parse=(t,o)=>{a??=n.value;let s=t.value;if(!r(s))return t.issues.push({expected:`object`,code:`invalid_type`,input:s,inst:e}),t;t.value={};let c=[],l=a.shape;for(let e of a.keys){let n=l[e],r=n._zod.optin===`optional`,i=n._zod.optout===`optional`,a=n._zod.run({value:s[e],issues:[]},o);a instanceof Promise?c.push(a.then(n=>pC(n,t,e,s,r,i))):pC(a,t,e,s,r,i)}return i?hC(c,s,t,o,n.value,e):c.length?Promise.all(c).then(()=>t):t}}),_C=Z(`$ZodObjectJIT`,(e,t)=>{gC.init(e,t);let n=e._zod.parse,r=Fb(()=>mC(t)),i=e=>{let t=new kS([`shape`,`payload`,`ctx`]),n=r.value,i=e=>{let t=Ub(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write(`const input = payload.value;`);let a=Object.create(null),o=0;for(let e of n.keys)a[e]=`key_${o++}`;t.write(`const newResult = {};`);for(let r of n.keys){let n=a[r],o=Ub(r),s=e[r],c=s?._zod?.optin===`optional`,l=s?._zod?.optout===`optional`;t.write(`const ${n} = ${i(r)};`),c&&l?t.write(` - if (${n}.issues.length) { - if (${o} in input) { - payload.issues = payload.issues.concat(${n}.issues.map(iss => ({ - ...iss, - path: iss.path ? [${o}, ...iss.path] : [${o}] - }))); - } - } - - if (${n}.value === undefined) { - if (${o} in input) { - newResult[${o}] = undefined; - } - } else { - newResult[${o}] = ${n}.value; - } - - `):c?t.write(` - if (${n}.issues.length) { - payload.issues = payload.issues.concat(${n}.issues.map(iss => ({ - ...iss, - path: iss.path ? [${o}, ...iss.path] : [${o}] - }))); - } - - if (${n}.value === undefined) { - if (${o} in input) { - newResult[${o}] = undefined; - } - } else { - newResult[${o}] = ${n}.value; - } - - `):t.write(` - const ${n}_present = ${o} in input; - if (${n}.issues.length) { - payload.issues = payload.issues.concat(${n}.issues.map(iss => ({ - ...iss, - path: iss.path ? [${o}, ...iss.path] : [${o}] - }))); - } - if (!${n}_present && !${n}.issues.length) { - payload.issues.push({ - code: "invalid_type", - expected: "nonoptional", - input: undefined, - path: [${o}] - }); - } - - if (${n}_present) { - if (${n}.value === undefined) { - newResult[${o}] = undefined; - } else { - newResult[${o}] = ${n}.value; - } - } - - `)}t.write(`payload.value = newResult;`),t.write(`return payload;`);let s=t.compile();return(t,n)=>s(e,t,n)},a,o=Kb,s=!jb.jitless,c=s&&qb.value,l=t.catchall,u;e._zod.parse=(d,f)=>{u??=r.value;let p=d.value;return o(p)?s&&c&&f?.async===!1&&f.jitless!==!0?(a||=i(t.shape),d=a(d,f),l?hC([],p,d,f,u,e):d):n(d,f):(d.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),d)}});function vC(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!lx(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>px(e,r,Mb())))}),t)}var yC=Z(`$ZodUnion`,(e,t)=>{jS.init(e,t),Bb(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),Bb(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),Bb(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),Bb(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>Lb(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>vC(t,r,e,i)):vC(o,r,e,i)}}),bC=Z(`$ZodIntersection`,(e,t)=>{jS.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>SC(e,t,n)):SC(e,i,a)}});function xC(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(Jb(e)&&Jb(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=xC(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;re.l&&e.r).map(([e])=>e);if(a.length&&i&&e.issues.push({...i,keys:a}),lx(e))return e;let o=xC(t.value,n.value);if(!o.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return e.value=o.data,e}var CC=Z(`$ZodEnum`,(e,t)=>{jS.init(e,t);let n=Nb(t.entries),r=new Set(n);e._zod.values=r,e._zod.pattern=RegExp(`^(${n.filter(e=>Xb.has(typeof e)).map(e=>typeof e==`string`?Zb(e):e.toString()).join(`|`)})$`),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),wC=Z(`$ZodLiteral`,(e,t)=>{if(jS.init(e,t),t.values.length===0)throw Error(`Cannot create literal schema with no valid values`);let n=new Set(t.values);e._zod.values=n,e._zod.pattern=RegExp(`^(${t.values.map(e=>typeof e==`string`?Zb(e):e?Zb(e.toString()):String(e)).join(`|`)})$`),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),TC=Z(`$ZodTransform`,(e,t)=>{jS.init(e,t),e._zod.optin=`optional`,e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Ab(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n.fallback=!0,n));if(i instanceof Promise)throw new kb;return n.value=i,n.fallback=!0,n}});function EC(e,t){return t===void 0&&(e.issues.length||e.fallback)?{issues:[],value:void 0}:e}var DC=Z(`$ZodOptional`,(e,t)=>{jS.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,Bb(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),Bb(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${Lb(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(t.innerType._zod.optin===`optional`){let r=e.value,i=t.innerType._zod.run(e,n);return i instanceof Promise?i.then(e=>EC(e,r)):EC(i,r)}return e.value===void 0?e:t.innerType._zod.run(e,n)}}),OC=Z(`$ZodExactOptional`,(e,t)=>{DC.init(e,t),Bb(e._zod,`values`,()=>t.innerType._zod.values),Bb(e._zod,`pattern`,()=>t.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),kC=Z(`$ZodNullable`,(e,t)=>{jS.init(e,t),Bb(e._zod,`optin`,()=>t.innerType._zod.optin),Bb(e._zod,`optout`,()=>t.innerType._zod.optout),Bb(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${Lb(e.source)}|null)$`):void 0}),Bb(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),AC=Z(`$ZodDefault`,(e,t)=>{jS.init(e,t),e._zod.optin=`optional`,Bb(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>jC(e,t)):jC(r,t)}});function jC(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var MC=Z(`$ZodPrefault`,(e,t)=>{jS.init(e,t),e._zod.optin=`optional`,Bb(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),NC=Z(`$ZodNonOptional`,(e,t)=>{jS.init(e,t),Bb(e._zod,`values`,()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>PC(t,e)):PC(i,e)}});function PC(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}var FC=Z(`$ZodCatch`,(e,t)=>{jS.init(e,t),e._zod.optin=`optional`,Bb(e._zod,`optout`,()=>t.innerType._zod.optout),Bb(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(r=>(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>px(e,n,Mb()))},input:e.value}),e.issues=[],e.fallback=!0),e)):(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>px(e,n,Mb()))},input:e.value}),e.issues=[],e.fallback=!0),e)}}),IC=Z(`$ZodPipe`,(e,t)=>{jS.init(e,t),Bb(e._zod,`values`,()=>t.in._zod.values),Bb(e._zod,`optin`,()=>t.in._zod.optin),Bb(e._zod,`optout`,()=>t.out._zod.optout),Bb(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>LC(e,t.in,n)):LC(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>LC(e,t.out,n)):LC(r,t.out,n)}});function LC(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues,fallback:e.fallback},n)}var RC=Z(`$ZodReadonly`,(e,t)=>{jS.init(e,t),Bb(e._zod,`propValues`,()=>t.innerType._zod.propValues),Bb(e._zod,`values`,()=>t.innerType._zod.values),Bb(e._zod,`optin`,()=>t.innerType?._zod?.optin),Bb(e._zod,`optout`,()=>t.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(zC):zC(r)}});function zC(e){return e.value=Object.freeze(e.value),e}var BC=Z(`$ZodCustom`,(e,t)=>{fS.init(e,t),jS.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>VC(t,n,r,e));VC(i,n,r,e)}});function VC(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(hx(e))}}var HC,UC=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function WC(){return new UC}(HC=globalThis).__zod_globalRegistry??(HC.__zod_globalRegistry=WC());var GC=globalThis.__zod_globalRegistry;function KC(e,t){return new e({type:`string`,...$b(t)})}function qC(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...$b(t)})}function JC(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...$b(t)})}function YC(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...$b(t)})}function XC(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...$b(t)})}function ZC(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...$b(t)})}function QC(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...$b(t)})}function $C(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...$b(t)})}function ew(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...$b(t)})}function tw(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...$b(t)})}function nw(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...$b(t)})}function rw(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...$b(t)})}function iw(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...$b(t)})}function aw(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...$b(t)})}function ow(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...$b(t)})}function sw(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...$b(t)})}function cw(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...$b(t)})}function lw(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...$b(t)})}function uw(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...$b(t)})}function dw(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...$b(t)})}function fw(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...$b(t)})}function pw(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...$b(t)})}function mw(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...$b(t)})}function hw(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...$b(t)})}function gw(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...$b(t)})}function _w(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...$b(t)})}function vw(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...$b(t)})}function yw(e,t){return new e({type:`number`,coerce:!0,checks:[],...$b(t)})}function bw(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...$b(t)})}function xw(e,t){return new e({type:`boolean`,...$b(t)})}function Sw(e){return new e({type:`unknown`})}function Cw(e,t){return new e({type:`never`,...$b(t)})}function ww(e,t){return new mS({check:`less_than`,...$b(t),value:e,inclusive:!1})}function Tw(e,t){return new mS({check:`less_than`,...$b(t),value:e,inclusive:!0})}function Ew(e,t){return new hS({check:`greater_than`,...$b(t),value:e,inclusive:!1})}function Dw(e,t){return new hS({check:`greater_than`,...$b(t),value:e,inclusive:!0})}function Ow(e,t){return new gS({check:`multiple_of`,...$b(t),value:e})}function kw(e,t){return new vS({check:`max_length`,...$b(t),maximum:e})}function Aw(e,t){return new yS({check:`min_length`,...$b(t),minimum:e})}function jw(e,t){return new bS({check:`length_equals`,...$b(t),length:e})}function Mw(e,t){return new SS({check:`string_format`,format:`regex`,...$b(t),pattern:e})}function Nw(e){return new CS({check:`string_format`,format:`lowercase`,...$b(e)})}function Pw(e){return new wS({check:`string_format`,format:`uppercase`,...$b(e)})}function Fw(e,t){return new TS({check:`string_format`,format:`includes`,...$b(t),includes:e})}function Iw(e,t){return new ES({check:`string_format`,format:`starts_with`,...$b(t),prefix:e})}function Lw(e,t){return new DS({check:`string_format`,format:`ends_with`,...$b(t),suffix:e})}function Rw(e){return new OS({check:`overwrite`,tx:e})}function zw(e){return Rw(t=>t.normalize(e))}function Bw(){return Rw(e=>e.trim())}function Vw(){return Rw(e=>e.toLowerCase())}function Hw(){return Rw(e=>e.toUpperCase())}function Uw(){return Rw(e=>Wb(e))}function Ww(e,t,n){return new e({type:`array`,element:t,...$b(n)})}function Gw(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...$b(n)})}function Kw(e,t){let n=qw(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(hx(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,r.input??=t.value,r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(hx(r))}},e(t.value,t)),t);return n}function qw(e,t){let n=new fS({check:`custom`,...$b(t)});return n._zod.check=e,n}function Jw(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??GC,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,external:e?.external??void 0}}function Yw(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o);let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,Yw(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&Object.assign(o.schema,c),t.io===`input`&&Qw(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function Xw(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${a}`}}if(t[1]===n)return{ref:`#`};let i=`#/${r}/`,a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+a}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/ - -Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}}function Zw(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Object.assign(i,s),Object.assign(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};for(let t of[...e.seen.entries()].reverse())r(t[0]);let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Object.assign(i,n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,o[e.defId]=e.def)}e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:eT(t,`input`,e.processors),output:eT(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function Qw(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return Qw(r.element,n);if(r.type===`set`)return Qw(r.valueType,n);if(r.type===`lazy`)return Qw(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`)return Qw(r.innerType,n);if(r.type===`intersection`)return Qw(r.left,n)||Qw(r.right,n);if(r.type===`record`||r.type===`map`)return Qw(r.keyType,n)||Qw(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:Qw(r.in,n)||Qw(r.out,n);if(r.type===`object`){for(let e in r.shape)if(Qw(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(Qw(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(Qw(e,n))return!0;return!!(r.rest&&Qw(r.rest,n))}return!1}var $w=(e,t={})=>n=>{let r=Jw({...n,processors:t});return Yw(e,r),Xw(r,e),Zw(r,e)},eT=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=Jw({...i??{},target:a,io:t,processors:n});return Yw(e,o),Xw(o,e),Zw(o,e)},tT={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},nT=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=tT[s]??s,i.format===``&&delete i.format,s===`time`&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},rT=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=e._zod.bag;i.type=typeof s==`string`&&s.includes(`int`)?`integer`:`number`;let d=typeof u==`number`&&u>=(a??-1/0),f=typeof l==`number`&&l<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;d?p?(i.minimum=u,i.exclusiveMinimum=!0):i.exclusiveMinimum=u:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l:typeof o==`number`&&(i.maximum=o),typeof c==`number`&&(i.multipleOf=c)},iT=(e,t,n,r)=>{n.type=`boolean`},aT=(e,t,n,r)=>{n.not={}},oT=(e,t,n,r)=>{let i=e._zod.def,a=Nb(i.entries);a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},sT=(e,t,n,r)=>{let i=e._zod.def,a=[];for(let e of i.values)if(e===void 0){if(t.unrepresentable===`throw`)throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof e==`bigint`){if(t.unrepresentable===`throw`)throw Error(`BigInt literals cannot be represented in JSON Schema`);a.push(Number(e))}else a.push(e);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},cT=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Custom types cannot be represented in JSON Schema`)},lT=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Transforms cannot be represented in JSON Schema`)},uT=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=Yw(a.element,t,{...r,path:[...r.path,`items`]})},dT=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`,i.properties={};let o=a.shape;for(let e in o)i.properties[e]=Yw(o[e],t,{...r,path:[...r.path,`properties`,e]});let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e]._zod;return t.io===`input`?n.optin===void 0:n.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=Yw(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},fT=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>Yw(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},pT=(e,t,n,r)=>{let i=e._zod.def,a=Yw(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=Yw(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1;n.allOf=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]]},mT=(e,t,n,r)=>{let i=e._zod.def,a=Yw(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},hT=(e,t,n,r)=>{let i=e._zod.def;Yw(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},gT=(e,t,n,r)=>{let i=e._zod.def;Yw(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.default=JSON.parse(JSON.stringify(i.defaultValue))},_T=(e,t,n,r)=>{let i=e._zod.def;Yw(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,t.io===`input`&&(n._prefault=JSON.parse(JSON.stringify(i.defaultValue)))},vT=(e,t,n,r)=>{let i=e._zod.def;Yw(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{throw Error(`Dynamic catch values are not supported in JSON Schema`)}n.default=o},yT=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;Yw(o,t,r);let s=t.seen.get(e);s.ref=o},bT=(e,t,n,r)=>{let i=e._zod.def;Yw(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},xT=(e,t,n,r)=>{let i=e._zod.def;Yw(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},ST=Z(`ZodISODateTime`,(e,t)=>{GS.init(e,t),YT.init(e,t)});function CT(e){return hw(ST,e)}var wT=Z(`ZodISODate`,(e,t)=>{KS.init(e,t),YT.init(e,t)});function TT(e){return gw(wT,e)}var ET=Z(`ZodISOTime`,(e,t)=>{qS.init(e,t),YT.init(e,t)});function DT(e){return _w(ET,e)}var OT=Z(`ZodISODuration`,(e,t)=>{JS.init(e,t),YT.init(e,t)});function kT(e){return vw(OT,e)}var AT=Z(`ZodError`,(e,t)=>{_x.init(e,t),e.name=`ZodError`,Object.defineProperties(e,{format:{value:t=>bx(e,t)},flatten:{value:t=>yx(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,Pb,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,Pb,2)}},isEmpty:{get(){return e.issues.length===0}}})},{Parent:Error}),jT=xx(AT),MT=Sx(AT),NT=Cx(AT),PT=Tx(AT),FT=Dx(AT),IT=Ox(AT),LT=kx(AT),RT=Ax(AT),zT=jx(AT),BT=Mx(AT),VT=Nx(AT),HT=Px(AT),UT=new WeakMap;function WT(e,t,n){let r=Object.getPrototypeOf(e),i=UT.get(r);if(i||(i=new Set,UT.set(r,i)),!i.has(t)){i.add(t);for(let e in n){let t=n[e];Object.defineProperty(r,e,{configurable:!0,enumerable:!1,get(){let n=t.bind(this);return Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:n}),n},set(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:t})}})}}}var GT=Z(`ZodType`,(e,t)=>(jS.init(e,t),Object.assign(e[`~standard`],{jsonSchema:{input:eT(e,`input`),output:eT(e,`output`)}}),e.toJSONSchema=$w(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.parse=(t,n)=>jT(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>NT(e,t,n),e.parseAsync=async(t,n)=>MT(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>PT(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>FT(e,t,n),e.decode=(t,n)=>IT(e,t,n),e.encodeAsync=async(t,n)=>LT(e,t,n),e.decodeAsync=async(t,n)=>RT(e,t,n),e.safeEncode=(t,n)=>zT(e,t,n),e.safeDecode=(t,n)=>BT(e,t,n),e.safeEncodeAsync=async(t,n)=>VT(e,t,n),e.safeDecodeAsync=async(t,n)=>HT(e,t,n),WT(e,`ZodType`,{check(...e){let t=this.def;return this.clone(Hb(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return Qb(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(iD(e,t))},superRefine(e,t){return this.check(aD(e,t))},overwrite(e){return this.check(Rw(e))},optional(){return BE(this)},exactOptional(){return HE(this)},nullable(){return WE(this)},nullish(){return BE(WE(this))},nonoptional(e){return XE(this,e)},array(){return EE(this)},or(e){return AE([this,e])},and(e){return ME(this,e)},transform(e){return eD(this,RE(e))},default(e){return KE(this,e)},prefault(e){return JE(this,e)},catch(e){return QE(this,e)},pipe(e){return eD(this,e)},readonly(){return nD(this)},describe(e){let t=this.clone();return GC.add(t,{description:e}),t},meta(...e){if(e.length===0)return GC.get(this);let t=this.clone();return GC.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e){return e(this)}}),Object.defineProperty(e,"description",{get(){return GC.get(e)?.description},configurable:!0}),e)),KT=Z(`_ZodString`,(e,t)=>{MS.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>nT(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,WT(e,`_ZodString`,{regex(...e){return this.check(Mw(...e))},includes(...e){return this.check(Fw(...e))},startsWith(...e){return this.check(Iw(...e))},endsWith(...e){return this.check(Lw(...e))},min(...e){return this.check(Aw(...e))},max(...e){return this.check(kw(...e))},length(...e){return this.check(jw(...e))},nonempty(...e){return this.check(Aw(1,...e))},lowercase(e){return this.check(Nw(e))},uppercase(e){return this.check(Pw(e))},trim(){return this.check(Bw())},normalize(...e){return this.check(zw(...e))},toLowerCase(){return this.check(Vw())},toUpperCase(){return this.check(Hw())},slugify(){return this.check(Uw())}})}),qT=Z(`ZodString`,(e,t)=>{MS.init(e,t),KT.init(e,t),e.email=t=>e.check(qC(XT,t)),e.url=t=>e.check($C($T,t)),e.jwt=t=>e.check(mw(hE,t)),e.emoji=t=>e.check(ew(tE,t)),e.guid=t=>e.check(JC(ZT,t)),e.uuid=t=>e.check(YC(QT,t)),e.uuidv4=t=>e.check(XC(QT,t)),e.uuidv6=t=>e.check(ZC(QT,t)),e.uuidv7=t=>e.check(QC(QT,t)),e.nanoid=t=>e.check(tw(nE,t)),e.guid=t=>e.check(JC(ZT,t)),e.cuid=t=>e.check(nw(rE,t)),e.cuid2=t=>e.check(rw(iE,t)),e.ulid=t=>e.check(iw(aE,t)),e.base64=t=>e.check(dw(fE,t)),e.base64url=t=>e.check(fw(pE,t)),e.xid=t=>e.check(aw(oE,t)),e.ksuid=t=>e.check(ow(sE,t)),e.ipv4=t=>e.check(sw(cE,t)),e.ipv6=t=>e.check(cw(lE,t)),e.cidrv4=t=>e.check(lw(uE,t)),e.cidrv6=t=>e.check(uw(dE,t)),e.e164=t=>e.check(pw(mE,t)),e.datetime=t=>e.check(CT(t)),e.date=t=>e.check(TT(t)),e.time=t=>e.check(DT(t)),e.duration=t=>e.check(kT(t))});function JT(e){return KC(qT,e)}var YT=Z(`ZodStringFormat`,(e,t)=>{NS.init(e,t),KT.init(e,t)}),XT=Z(`ZodEmail`,(e,t)=>{IS.init(e,t),YT.init(e,t)}),ZT=Z(`ZodGUID`,(e,t)=>{PS.init(e,t),YT.init(e,t)}),QT=Z(`ZodUUID`,(e,t)=>{FS.init(e,t),YT.init(e,t)}),$T=Z(`ZodURL`,(e,t)=>{LS.init(e,t),YT.init(e,t)});function eE(e){return $C($T,e)}var tE=Z(`ZodEmoji`,(e,t)=>{RS.init(e,t),YT.init(e,t)}),nE=Z(`ZodNanoID`,(e,t)=>{zS.init(e,t),YT.init(e,t)}),rE=Z(`ZodCUID`,(e,t)=>{BS.init(e,t),YT.init(e,t)}),iE=Z(`ZodCUID2`,(e,t)=>{VS.init(e,t),YT.init(e,t)}),aE=Z(`ZodULID`,(e,t)=>{HS.init(e,t),YT.init(e,t)}),oE=Z(`ZodXID`,(e,t)=>{US.init(e,t),YT.init(e,t)}),sE=Z(`ZodKSUID`,(e,t)=>{WS.init(e,t),YT.init(e,t)}),cE=Z(`ZodIPv4`,(e,t)=>{YS.init(e,t),YT.init(e,t)}),lE=Z(`ZodIPv6`,(e,t)=>{XS.init(e,t),YT.init(e,t)}),uE=Z(`ZodCIDRv4`,(e,t)=>{ZS.init(e,t),YT.init(e,t)}),dE=Z(`ZodCIDRv6`,(e,t)=>{QS.init(e,t),YT.init(e,t)}),fE=Z(`ZodBase64`,(e,t)=>{eC.init(e,t),YT.init(e,t)}),pE=Z(`ZodBase64URL`,(e,t)=>{nC.init(e,t),YT.init(e,t)}),mE=Z(`ZodE164`,(e,t)=>{rC.init(e,t),YT.init(e,t)}),hE=Z(`ZodJWT`,(e,t)=>{aC.init(e,t),YT.init(e,t)}),gE=Z(`ZodNumber`,(e,t)=>{oC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>rT(e,t,n,r),WT(e,`ZodNumber`,{gt(e,t){return this.check(Ew(e,t))},gte(e,t){return this.check(Dw(e,t))},min(e,t){return this.check(Dw(e,t))},lt(e,t){return this.check(ww(e,t))},lte(e,t){return this.check(Tw(e,t))},max(e,t){return this.check(Tw(e,t))},int(e){return this.check(vE(e))},safe(e){return this.check(vE(e))},positive(e){return this.check(Ew(0,e))},nonnegative(e){return this.check(Dw(0,e))},negative(e){return this.check(ww(0,e))},nonpositive(e){return this.check(Tw(0,e))},multipleOf(e,t){return this.check(Ow(e,t))},step(e,t){return this.check(Ow(e,t))},finite(){return this}});let n=e._zod.bag;e.minValue=Math.max(n.minimum??-1/0,n.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(n.maximum??1/0,n.exclusiveMaximum??1/0)??null,e.isInt=(n.format??``).includes(`int`)||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null}),_E=Z(`ZodNumberFormat`,(e,t)=>{sC.init(e,t),gE.init(e,t)});function vE(e){return bw(_E,e)}var yE=Z(`ZodBoolean`,(e,t)=>{cC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>iT(e,t,n,r)});function bE(e){return xw(yE,e)}var xE=Z(`ZodUnknown`,(e,t)=>{lC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function SE(){return Sw(xE)}var CE=Z(`ZodNever`,(e,t)=>{uC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>aT(e,t,n,r)});function wE(e){return Cw(CE,e)}var TE=Z(`ZodArray`,(e,t)=>{fC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>uT(e,t,n,r),e.element=t.element,WT(e,`ZodArray`,{min(e,t){return this.check(Aw(e,t))},nonempty(e){return this.check(Aw(1,e))},max(e,t){return this.check(kw(e,t))},length(e,t){return this.check(jw(e,t))},unwrap(){return this.element}})});function EE(e,t){return Ww(TE,e,t)}var DE=Z(`ZodObject`,(e,t)=>{_C.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>dT(e,t,n,r),Bb(e,`shape`,()=>t.shape),WT(e,`ZodObject`,{keyof(){return PE(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:SE()})},loose(){return this.clone({...this._zod.def,catchall:SE()})},strict(){return this.clone({...this._zod.def,catchall:wE()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return ix(this,e)},safeExtend(e){return ax(this,e)},merge(e){return ox(this,e)},pick(e){return nx(this,e)},omit(e){return rx(this,e)},partial(...e){return sx(zE,this,e[0])},required(...e){return cx(YE,this,e[0])}})});function OE(e,t){return new DE({type:`object`,shape:e??{},...$b(t)})}var kE=Z(`ZodUnion`,(e,t)=>{yC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>fT(e,t,n,r),e.options=t.options});function AE(e,t){return new kE({type:`union`,options:e,...$b(t)})}var jE=Z(`ZodIntersection`,(e,t)=>{bC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>pT(e,t,n,r)});function ME(e,t){return new jE({type:`intersection`,left:e,right:t})}var NE=Z(`ZodEnum`,(e,t)=>{CC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>oT(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new NE({...t,checks:[],...$b(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new NE({...t,checks:[],...$b(r),entries:i})}});function PE(e,t){return new NE({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...$b(t)})}var FE=Z(`ZodLiteral`,(e,t)=>{wC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>sT(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function IE(e,t){return new FE({type:`literal`,values:Array.isArray(e)?e:[e],...$b(t)})}var LE=Z(`ZodTransform`,(e,t)=>{TC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>lT(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Ab(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(hx(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,t.input??=n.value,t.inst??=e,n.issues.push(hx(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n.fallback=!0,n)):(n.value=i,n.fallback=!0,n)}});function RE(e){return new LE({type:`transform`,transform:e})}var zE=Z(`ZodOptional`,(e,t)=>{DC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xT(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function BE(e){return new zE({type:`optional`,innerType:e})}var VE=Z(`ZodExactOptional`,(e,t)=>{OC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xT(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function HE(e){return new VE({type:`optional`,innerType:e})}var UE=Z(`ZodNullable`,(e,t)=>{kC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>mT(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function WE(e){return new UE({type:`nullable`,innerType:e})}var GE=Z(`ZodDefault`,(e,t)=>{AC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>gT(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function KE(e,t){return new GE({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():Yb(t)}})}var qE=Z(`ZodPrefault`,(e,t)=>{MC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>_T(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function JE(e,t){return new qE({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():Yb(t)}})}var YE=Z(`ZodNonOptional`,(e,t)=>{NC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>hT(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function XE(e,t){return new YE({type:`nonoptional`,innerType:e,...$b(t)})}var ZE=Z(`ZodCatch`,(e,t)=>{FC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>vT(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function QE(e,t){return new ZE({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:()=>t})}var $E=Z(`ZodPipe`,(e,t)=>{IC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>yT(e,t,n,r),e.in=t.in,e.out=t.out});function eD(e,t){return new $E({type:`pipe`,in:e,out:t})}var tD=Z(`ZodReadonly`,(e,t)=>{RC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>bT(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function nD(e){return new tD({type:`readonly`,innerType:e})}var rD=Z(`ZodCustom`,(e,t)=>{BC.init(e,t),GT.init(e,t),e._zod.processJSONSchema=(t,n,r)=>cT(e,t,n,r)});function iD(e,t={}){return Gw(rD,e,t)}function aD(e,t){return Kw(e,t)}function oD(e){return yw(gE,e)}var sD=JT().trim().min(1,`请填写 Agent 名称`).max(128,`Agent 名称不能超过 128 个字符`),cD=JT().trim().min(3,`本地标识至少填写 3 个字符`).max(63,`本地标识不能超过 63 个字符`).regex(/^[a-z][a-z0-9-]*$/,`本地标识只能包含小写字母、数字和连字符`),lD=AE([IE(``),cD]),uD=PE([`codex`,`adk`,`langgraph`]),dD=JT().trim().min(4,`系统提示词至少填写 4 个字符`).max(32768,`系统提示词不能超过 32768 个字符`),fD=JT().trim().min(4,`Agent 目标与要求至少填写 4 个字符`).max(32768,`Agent 目标与要求不能超过 32768 个字符`),pD=JT().trim().max(1024,`描述不能超过 1024 个字符`).default(``),mD=OE({name:sD,slug:cD,runtimeType:uD,template:PE([`blank`,`research`]).default(`blank`),prompt:fD,description:pD,audience:JT().trim().max(256,`目标读者不能超过 256 个字符`).default(``),language:PE([`zh-CN`,`en-US`]).default(`zh-CN`),depth:PE([`focused`,`standard`,`deep`]).default(`deep`),format:PE([`report`,`brief`,`evidence-table`]).default(`report`),systemPrompt:JT().trim().min(4,`最终系统规则至少填写 4 个字符`).max(32768,`最终系统规则不能超过 32768 个字符`).default(``),taskPrompt:JT().max(32768,`任务契约不能超过 32768 个字符`).default(``),buildAfterCreate:bE().default(!0)}).superRefine((e,t)=>{e.template===`research`&&!e.audience&&t.addIssue({code:`custom`,path:[`audience`],message:`请填写目标读者`})}),hD=OE({name:sD,slug:cD,runtimeType:uD,prompt:dD,description:pD}),gD=OE({name:sD,slug:cD,runtimeType:uD,prompt:dD,description:pD.optional(),modelProfileId:JT().trim().min(3,`请选择用于构建的模型`).max(256).optional()}),_D=OE({name:sD,slug:lD.default(``)}),vD=OE({name:sD,slug:lD.default(``),path:JT().trim().min(1,`请选择项目目录`).max(4096,`项目路径不能超过 4096 个字符`)}),yD=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`]);function bD(e){return e?.contract?.model||e?.name||``}function xD(e){return e===`adk`?`ADKRuntimeAdapter`:e===`langgraph`?`LangGraphRuntimeAdapter`:`CodexRuntimeAdapter`}function SD(e){return e===`codex`?{type:`codex`}:{type:e,projectPath:`.`,entryPoint:e===`adk`?`agent.py`:`graph.py`,agentVariable:e===`adk`?`root_agent`:`app`}}function CD(e,t,n){let r=new Set(e.map(e=>e.resourceId));return[...e,...t.filter(e=>!r.has(e)).map(e=>({resourceId:e,kind:n,name:e,displayName:e,version:`历史绑定 · 未进入资源目录`,status:`unresolved`,...n===`model`?{contract:{model:e}}:{}}))]}function wD(e,t){let n=new Map((e||[]).map(e=>[e.resourceId,e]));return t.map(e=>n.get(e)||{resourceId:e,enabled:!0})}async function TD(e){for(let t=0;t<1200;t+=1){let t=await g(`/api/v1/operations/${encodeURIComponent(e)}`),n=await t.json().catch(()=>null);if(!t.ok)throw Error(n?.error?.message||`构建状态获取失败(${t.status})`);if(yD.has(n.status)){if(n.status!==`SUCCEEDED`)throw Error(n.error?.message||`构建未完成`);return n}await new Promise(e=>window.setTimeout(e,200))}throw Error(`构建等待超时`)}function ED({agentId:e,catalog:t,activeSection:n=1,onSaved:r,onAppearanceSaved:i}){let[a,o]=(0,s.useState)(null),[c,l]=(0,s.useState)(``),u=p_({resolver:C_(hD),defaultValues:{name:``,slug:e,runtimeType:`codex`,prompt:``,description:``}}),d=u.reset,{name:f,slug:p,runtimeType:m,prompt:h}=u.watch(),[_,v]=(0,s.useState)(``),[y,b]=(0,s.useState)([]),[x,S]=(0,s.useState)([]),[C,w]=(0,s.useState)([]),[T,E]=(0,s.useState)([]),[D,O]=(0,s.useState)(n),[k,A]=(0,s.useState)(`.`),[j,M]=(0,s.useState)(``),[N,P]=(0,s.useState)(`root_agent`),[F,I]=(0,s.useState)(`direct`),[L,R]=(0,s.useState)(12),[B,V]=(0,s.useState)(120),[H,ee]=(0,s.useState)(`auto`),[te,W]=(0,s.useState)(`shadow`),[ne,re]=(0,s.useState)(!1),[G,ie]=(0,s.useState)(`off`),[ae,oe]=(0,s.useState)(!0),[se,le]=(0,s.useState)(!1),[ue,de]=(0,s.useState)(``),fe=(0,s.useMemo)(()=>t.filter(e=>e.kind===`model`&&[`ready`,`missing-secret`].includes(e.status)),[t]),pe=(0,s.useMemo)(()=>t.filter(e=>e.kind===`skill`&&e.status===`ready`),[t]),me=(0,s.useMemo)(()=>t.filter(e=>e.kind===`mcp`),[t]),he=(0,s.useMemo)(()=>t.filter(e=>e.kind===`tool`&&e.status===`ready`&&[`builtin`,`python`].includes(e.contract?.executor||`builtin`)),[t]),ge=(0,s.useMemo)(()=>CD(fe,y,`model`),[fe,y]),_e=(0,s.useMemo)(()=>CD(pe,x,`skill`),[pe,x]),ve=(0,s.useMemo)(()=>CD(me,C,`mcp`),[me,C]),ye=(0,s.useMemo)(()=>CD(he,T,`tool`),[he,T]),be=y.map(e=>ge.find(t=>t.resourceId===e)).filter(Boolean);(0,s.useEffect)(()=>{let t=!0;return o(null),l(``),g(`/api/v1/agents/${encodeURIComponent(e)}`).then(async n=>{let r=await n.json().catch(()=>null);if(!n.ok)throw Error(r?.error?.message||`Agent 加载失败(${n.status})`);if(!t)return;let i=r.draft,a=i.spec?.bindings||{},s=a.modelProfileIds?.length?a.modelProfileIds:a.modelProfileId?[a.modelProfileId]:[];o(r),d({name:i.metadata.name||``,slug:i.metadata.id||e,runtimeType:i.spec?.runtime?.type||i.metadata.labels?.[`agentkit.ksyun.com/framework`]||`codex`,prompt:i.spec?.instructions?.system||``,description:i.spec?.description||``}),b(s),v(a.modelProfileId||s[0]||``),S((a.skills||[]).map(e=>e.resourceId)),w((a.mcpServers||[]).map(e=>e.resourceId)),E((a.tools||[]).map(e=>e.resourceId)),A(String(i.spec?.runtime?.projectPath||`.`)),M(String(i.spec?.runtime?.entryPoint||(i.spec?.runtime?.type===`langgraph`?`graph.py`:`agent.py`))),P(String(i.spec?.runtime?.agentVariable||(i.spec?.runtime?.type===`langgraph`?`app`:`root_agent`))),I(String(i.spec?.execution?.strategy||`direct`)),R(Number(i.spec?.execution?.maxSteps??12)),V(Number(i.spec?.execution?.timeoutSeconds??120)),ee(String(i.spec?.context?.ownership||`auto`)),W(String(i.spec?.context?.rollout?.contextEngine||`shadow`)),re(!!(i.spec?.memory?.enabled&&i.spec?.memory?.recall?.enabled)),ie(String(i.spec?.context?.rollout?.memoryWrite||`off`))}).catch(e=>{t&&l(e.message||`Agent 加载失败`)}),()=>{t=!1}},[e,d]),(0,s.useEffect)(()=>O(n),[n]),(0,s.useEffect)(()=>{if(!a||y.length||!fe.length)return;let e=a.draft.metadata.labels?.[`agentkit.ksyun.com/model`],t=fe.find(t=>bD(t)===e)?.resourceId;t&&(b([t]),v(t))},[a,fe,y.length]);function xe(e){b(e),e.includes(_)||v(e[0]||``)}let Se=fe.find(e=>e.resourceId===_)||be[0],Ce=m===`codex`?[{value:`auto`,label:`自动(推荐)`,description:`按 Codex Runtime 能力选择安全投影方式`},{value:`native`,label:`原生 Runtime 管理`,description:`由 Codex 管理最终模型上下文`}]:m===`langgraph`?[{value:`auto`,label:`自动(推荐)`,description:`按 Runtime 能力选择安全模式`},{value:`framework`,label:`框架管理`,description:`保留 LangGraph 原有上下文行为`},{value:`ksadk`,label:`KsADK 管理`,description:`统一规划、压缩和投影上下文`}]:[{value:`auto`,label:`自动(推荐)`,description:`按 Runtime 能力选择安全模式`},{value:`framework`,label:`框架管理`,description:`保留 ADK 原有上下文行为`}],we=a?.draft.metadata.labels?.[`agentkit.ksyun.com/model`]||`glm-5.1`,Te=m===`codex`&&y.length===0&&!!we,Ee=a?.draft.metadata.labels?.[`agentkit.ksyun.com/artifact-type`]===`ManagedRuntime`||m===`codex`,De=be.map(bD).filter(Boolean),Oe=m===`codex`?[`name: ${p}`,`version: 1.0.0`,`framework: codex`,`artifact_type: ManagedRuntime`,`runtime:`,` name: codex`,` version: 0.144.4`,`model: ${bD(Se)||we}`,...De.length>1?[`models:`,...De.map(e=>` - ${e}`)]:[],`prompt: |-`,...h.split(` -`).map(e=>` ${e}`)].join(` -`):[`apiVersion: agentkit.ksyun.com/v1alpha1`,`kind: Agent`,`metadata:`,` id: ${p}`,`spec:`,` runtime:`,` type: ${m}`,` projectPath: ${k||`.`}`,` entryPoint: ${j||(m===`adk`?`agent.py`:`graph.py`)}`,` agentVariable: ${N||(m===`adk`?`root_agent`:`app`)}`,` instructions:`,` system: |-`,...h.split(` -`).map(e=>` ${e}`)].join(` -`);async function ke(t){if(!a||se)return;let n=_||y[0]||``;if(!n&&!Te){de(`请至少绑定一个模型并设置为默认模型`);return}if(t.runtimeType!==`codex`&&(!k.trim()||!j.trim()||!N.trim())){de(`请完整填写项目相对路径、入口文件和 Agent 变量`);return}if(!Number.isInteger(L)||L<1||L>100){de(`最大步骤数必须是 1 到 100 的整数`);return}if(!Number.isInteger(B)||B<1||B>3600){de(`超时秒数必须是 1 到 3600 的整数`);return}le(!0),de(``);try{let i=a.draft.spec,o=JSON.parse(JSON.stringify(i));o.runtime={...SD(t.runtimeType),...i.runtime||{},type:t.runtimeType,...t.runtimeType===`codex`?{}:{projectPath:k.trim(),entryPoint:j.trim(),agentVariable:N.trim()}},o.instructions={...i.instructions||{},system:t.prompt.trim(),task:i.instructions?.task||``},o.execution={...i.execution||{},strategy:F,maxSteps:L,timeoutSeconds:B},o.bindings={...i.bindings||{},modelProfileId:n||null,modelProfileIds:y,skills:wD(i.bindings?.skills,x),mcpServers:wD(i.bindings?.mcpServers,C),tools:wD(i.bindings?.tools,T)},o.context={...i.context||{},ownership:H,promptOwnership:H===`ksadk`?`ksadk`:H===`framework`?`framework`:i.context?.promptOwnership||`framework`,rollout:{...i.context?.rollout||{},contextEngine:te,memoryWrite:ne?`enabled`:`off`}},o.memory={...i.memory||{},enabled:ne,recall:{...i.memory?.recall||{},enabled:ne},write:{...i.memory?.write||{},mode:`candidate`}};let s=await g(`/api/v1/agents/${encodeURIComponent(e)}?name=${encodeURIComponent(t.name.trim())}`,{method:`PUT`,headers:{"Content-Type":`application/json`,"If-Match":String(a.draft.metadata.revision)},body:JSON.stringify(o)}),c=await s.json().catch(()=>null);if(!s.ok){if(Db(c,u.setError))return;throw Error(c?.error?.message||`保存失败(${s.status})`)}let l=c?.metadata?.id||e;if(Y(`Agent 已更新`,Ee?`本地配置已保存;更新云端后生效。`:`本地声明已保存;已部署版本不会静默改变。`),ae){let e=c?.metadata?.revision||a.draft.metadata.revision+1,n=await g(`/api/v1/agents/${encodeURIComponent(l)}/builds`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":`build-${l}-r${e}-${Date.now()}`},body:JSON.stringify({revision:e,runEvaluation:!1})}),r=await n.json().catch(()=>null);if(!n.ok)throw Error(r?.error?.message||`构建提交失败(${n.status})`);await TD(r.id),Y(t.runtimeType===`codex`?`YAML 声明已校验`:`${t.runtimeType} Bundle 构建完成`,l)}r(l,ae)}catch(e){de(e.message||`保存失败`),Y(`保存失败`,e.message||`保存失败`,`error`)}finally{le(!1)}}async function Ae(t){if(!a)return;let n=await g(`/api/v1/agents/${encodeURIComponent(e)}/appearance`,{method:`PUT`,headers:{"Content-Type":`application/json`,"If-Match":String(a.draft.metadata.revision)},body:JSON.stringify(t)}),r=await n.json().catch(()=>null);if(!n.ok)throw Error(r?.error?.message||`外观保存失败(${n.status})`);o(e=>e&&{...e,draft:{...e.draft,metadata:r.metadata}}),i?.(),Y(`Agent 外观已更新`,`列表、会话和 Trace 将使用新的头像。`)}return c?(0,K.jsxs)(`div`,{className:`inline-alert error`,children:[(0,K.jsx)(U,{size:16}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`Agent 加载失败`}),(0,K.jsx)(`p`,{children:c})]})]}):a?(0,K.jsxs)(`div`,{className:`quick-create`,children:[(0,K.jsx)(Fg,{...u,children:(0,K.jsxs)(`form`,{className:`quick-create-form`,onSubmit:u.handleSubmit(ke,e=>{let t=Object.values(e).find(e=>typeof e?.message==`string`);de(String(t?.message||`请检查必填配置后重试`))}),noValidate:!0,children:[(0,K.jsxs)(`div`,{className:`quick-runtime-strip`,children:[(0,K.jsx)(`span`,{className:`runtime-logo`,children:(0,K.jsx)(ce,{size:17})}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:xD(m)}),(0,K.jsx)(`span`,{children:`一 Agent 一 YAML · 不可变 Bundle`})]}),(0,K.jsx)(`span`,{className:`badge`,"data-state":`ready`,children:`本地可运行`})]}),(0,K.jsxs)(`div`,{className:`quick-create-heading`,children:[(0,K.jsx)(`span`,{className:`eyebrow`,children:`YAML-first`}),(0,K.jsxs)(`h2`,{title:p,children:[`编辑 `,f||a.draft.metadata.name]}),(0,K.jsx)(`p`,{children:`保存会直接回写该 Agent 的 agentengine.yaml;旧构建会标记为过期。`})]}),(0,K.jsx)(`nav`,{className:`agent-edit-nav`,"aria-label":`Agent 编辑分区`,children:[{id:1,label:`基础与 Prompt`},{id:2,label:`能力绑定`},{id:3,label:`运行策略`}].map(e=>(0,K.jsx)(`button`,{type:`button`,className:D===e.id?`active`:``,"aria-current":D===e.id?`page`:void 0,onClick:()=>O(e.id),children:e.label},e.id))}),(0,K.jsx)(`div`,{className:`callout compact agent-version-boundary`,children:(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:Ee?`配置修订边界`:`部署版本边界`}),(0,K.jsx)(`p`,{children:Ee?`本页保存本地 YAML 配置;已部署版本不会自动改变,执行云端更新后才会生效。`:`本页保存 Prompt、模型与能力绑定。Runtime 类型不可直接切换;代码入口等修改会进入新 Revision,并按运行时能力生成新 Bundle。`})]})}),(0,K.jsxs)(`section`,{className:`agent-edit-section`,hidden:D!==1,"aria-label":`基础与 Prompt`,children:[(0,K.jsxs)(`div`,{className:`agent-edit-section-heading`,children:[(0,K.jsx)(`span`,{className:`eyebrow`,children:`01`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h3`,{children:`基础与 Prompt`}),(0,K.jsx)(`p`,{children:`维护 Agent 身份、Runtime 与系统提示词。`})]})]}),(0,K.jsx)(sv,{name:f||a.draft.metadata.name,appearance:a.draft.metadata.appearance,disabled:se,onSave:Ae}),(0,K.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,K.jsx)(X,{label:`显示名称`,requirement:`required`,htmlFor:`editAgentName`,error:u.formState.errors.name?.message,children:(0,K.jsx)(`input`,{id:`editAgentName`,readOnly:!0,...u.register(`name`)})}),(0,K.jsx)(X,{label:`本地标识(Slug)`,requirement:`generated`,htmlFor:`editAgentSlug`,hint:`本地唯一标识由创建流程生成;云端 AgentId 由部署服务另行映射。`,error:u.formState.errors.slug?.message,children:(0,K.jsx)(`input`,{id:`editAgentSlug`,className:`mono generated-value`,readOnly:!0,...u.register(`slug`)})})]}),(0,K.jsx)(X,{label:`Runtime`,requirement:`required`,htmlFor:`editAgentRuntime`,hint:`已有 Build 后不能直接切换 Runtime;需创建迁移 Revision。`,error:u.formState.errors.runtimeType?.message,children:(0,K.jsx)(kh,{id:`editAgentRuntime`,ariaLabel:`Runtime`,disabled:!0,value:m,options:[{value:`codex`,label:`CodexRuntimeAdapter`},{value:`adk`,label:`ADKRuntimeAdapter`},{value:`langgraph`,label:`LangGraphRuntimeAdapter`}],onValueChange:()=>void 0})}),(0,K.jsx)(X,{label:`系统提示词`,requirement:`required`,htmlFor:`editAgentPrompt`,hint:`首个 Agent 写入根目录 agentengine.yaml;后续 Agent 写入 agents//agentengine.yaml。`,error:u.formState.errors.prompt?.message,children:(0,K.jsx)(`textarea`,{id:`editAgentPrompt`,maxLength:32768,rows:10,...u.register(`prompt`)})})]}),(0,K.jsxs)(`section`,{className:`agent-edit-section`,hidden:D!==2,"aria-label":`能力绑定`,children:[(0,K.jsxs)(`div`,{className:`agent-edit-section-heading`,children:[(0,K.jsx)(`span`,{className:`eyebrow`,children:`02`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h3`,{children:`能力绑定`}),(0,K.jsx)(`p`,{children:`配置模型、Skill、MCP 与 Runtime 支持的 Tool;切换分区不会丢失未保存修改。`})]})]}),(0,K.jsx)(`div`,{className:`form-grid two-columns`,children:(0,K.jsx)(X,{label:`默认模型`,requirement:`required`,htmlFor:`editDefaultModel`,hint:`每轮未指定模型时使用`,footer:be.length?null:(0,K.jsx)(`span`,{className:`studio-field-hint`,children:Te?`历史声明模型 ${we} 将原样保留;从下方目录选择后可切换。`:`请先从模型 allowlist 中至少选择一个模型。`}),children:(0,K.jsx)(kh,{id:`editDefaultModel`,ariaLabel:`默认模型`,value:_,placeholder:we||`请先绑定模型`,disabled:!be.length,options:be.map(e=>({value:e.resourceId,label:e.displayName,description:bD(e)})),onValueChange:v})})}),(0,K.jsxs)(`div`,{className:`field quick-model-binding-field`,children:[(0,K.jsxs)(`div`,{className:`field-heading`,children:[(0,K.jsx)(`label`,{children:`绑定模型`}),(0,K.jsx)(`span`,{className:`helper`,children:`会话中只能动态切换到这里选中的模型`})]}),(0,K.jsx)(yb,{ariaLabel:`选择绑定模型`,items:ge,selectedIds:y,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${bD(e)} · ${e.status}`,onChange:xe,searchPlaceholder:`搜索绑定模型`,emptyMessage:`当前模型服务没有返回可绑定模型`})]}),(0,K.jsxs)(`div`,{className:`field quick-model-binding-field`,children:[(0,K.jsxs)(`div`,{className:`field-heading`,children:[(0,K.jsx)(`label`,{children:`绑定 Skill / MCP`}),(0,K.jsx)(`span`,{className:`helper`,children:m===`codex`?`Skill 与 MCP 由 Codex Runtime 按能力投影。`:`Skill 可编辑;当前 Runtime 尚未实现 MCP 源码注入,历史 MCP 仅保留。`})]}),(0,K.jsxs)(`div`,{className:`quick-capability-bindings`,children:[(0,K.jsx)(yb,{ariaLabel:`选择绑定 Skill`,items:_e,selectedIds:x,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>e.version,onChange:S,searchPlaceholder:`搜索 Skill`,emptyMessage:`没有已安装的 Skill`}),(0,K.jsx)(yb,{ariaLabel:`选择绑定 MCP`,items:m===`codex`?ve:ve.filter(e=>C.includes(e.resourceId)),selectedIds:C,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.version} · ${e.health?.toolCount||0} Tool`,onChange:m===`codex`?w:()=>void 0,disabledIds:m===`codex`?[]:C,searchPlaceholder:`搜索 MCP`,emptyMessage:m===`codex`?`没有已连接的 MCP`:`当前 Runtime 不支持新增 MCP`})]})]}),a.bindingProjection?.unresolvedMcpServers?.length?(0,K.jsxs)(`div`,{className:`inline-alert warning`,role:`status`,children:[(0,K.jsx)(U,{size:16}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`部分 YAML MCP 尚未进入资源目录`}),(0,K.jsxs)(`p`,{children:[a.bindingProjection.unresolvedMcpServers.map(e=>e.name).join(`、`),` 未映射到资源目录;保存时会原样保留,请在资源页接入后再可视化编辑。`]})]})]}):null,(0,K.jsxs)(`div`,{className:`field quick-model-binding-field`,children:[(0,K.jsxs)(`div`,{className:`field-heading`,children:[(0,K.jsx)(`label`,{children:`绑定 Tool`}),(0,K.jsx)(`span`,{className:`helper`,children:m===`codex`?`当前 Runtime 不支持新增 ksadk Tool;历史绑定仅保留,不能修改。`:`仅展示当前 Runtime 合同允许的 ksadk Tool。`})]}),(0,K.jsx)(yb,{ariaLabel:`选择绑定 Tool`,items:m===`codex`?ye.filter(e=>T.includes(e.resourceId)):ye,selectedIds:T,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>e.version,onChange:m===`codex`?()=>void 0:E,disabledIds:m===`codex`?T:[],searchPlaceholder:`搜索 Tool`,emptyMessage:m===`codex`?`Codex 使用原生工具`:`没有可绑定的 Tool`})]})]}),(0,K.jsxs)(`section`,{className:`agent-edit-section`,hidden:D!==3,"aria-label":`运行策略`,children:[(0,K.jsxs)(`div`,{className:`agent-edit-section-heading`,children:[(0,K.jsx)(`span`,{className:`eyebrow`,children:`03`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h3`,{children:`运行策略`}),(0,K.jsx)(`p`,{children:`配置跨会话记忆;Context 高级选项通常保持默认即可。`})]})]}),m===`codex`?null:(0,K.jsxs)(`div`,{className:`form-grid two-columns agent-runtime-config-grid`,children:[(0,K.jsx)(X,{label:`项目相对路径`,requirement:`required`,htmlFor:`editRuntimeProjectPath`,hint:`相对于当前 Studio 工作区;保存后由新 Revision 构建。`,children:(0,K.jsx)(`input`,{id:`editRuntimeProjectPath`,value:k,onChange:e=>A(e.target.value)})}),(0,K.jsx)(X,{label:`入口文件`,requirement:`required`,htmlFor:`editRuntimeEntryPoint`,hint:`ADK 或 LangGraph Agent 的 Python 入口文件。`,children:(0,K.jsx)(`input`,{id:`editRuntimeEntryPoint`,value:j,onChange:e=>M(e.target.value)})}),(0,K.jsx)(X,{label:`Agent 变量`,requirement:`required`,htmlFor:`editRuntimeAgentVariable`,hint:`入口模块导出的 Agent 或 Graph 变量名。`,children:(0,K.jsx)(`input`,{id:`editRuntimeAgentVariable`,value:N,onChange:e=>P(e.target.value)})})]}),(0,K.jsxs)(`div`,{className:`form-grid two-columns agent-execution-config-grid`,children:[(0,K.jsx)(X,{label:`执行策略`,requirement:`required`,htmlFor:`editExecutionStrategy`,hint:`直接执行适合普通对话;计划执行适合多步骤任务。`,children:(0,K.jsx)(kh,{id:`editExecutionStrategy`,ariaLabel:`执行策略`,value:F,options:[{value:`direct`,label:`直接执行`},{value:`plan-act-observe`,label:`计划 · 执行 · 观察`}],onValueChange:I})}),(0,K.jsx)(X,{label:`最大步骤数`,requirement:`required`,htmlFor:`editExecutionMaxSteps`,hint:`单次运行允许的最大 Agent 步骤,范围 1–100。`,children:(0,K.jsx)(`input`,{id:`editExecutionMaxSteps`,type:`number`,min:1,max:100,value:L,onChange:e=>R(Number(e.target.value))})}),(0,K.jsx)(X,{label:`超时秒数`,requirement:`required`,htmlFor:`editExecutionTimeout`,hint:`单次运行的整体超时,范围 1–3600 秒。`,children:(0,K.jsx)(`input`,{id:`editExecutionTimeout`,type:`number`,min:1,max:3600,value:B,onChange:e=>V(Number(e.target.value))})})]}),(0,K.jsxs)(`div`,{className:`field quick-model-binding-field`,children:[(0,K.jsxs)(`div`,{className:`field-heading`,children:[(0,K.jsx)(`label`,{children:`跨会话记忆`}),(0,K.jsx)(`span`,{className:`helper`,children:`保存稳定事实,并在后续会话按需召回`})]}),(0,K.jsxs)(`label`,{className:`pcm-memory-toggle`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:ne,onChange:e=>{re(e.target.checked),ie(e.target.checked?`enabled`:`off`)}}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:ne?`已启用跨会话记忆`:`未启用跨会话记忆`}),(0,K.jsx)(`small`,{children:ne?G===`enabled`?`新记忆会通过策略检查后保存。`:`当前旧配置仅召回或观察;保存修改后将正式启用记忆写入。`:`当前会话内容不会写入长期记忆。`})]})]})]}),(0,K.jsxs)(`details`,{className:`pcm-policy-card`,children:[(0,K.jsx)(`summary`,{children:(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:`运行上下文(高级)`}),(0,K.jsx)(`small`,{children:`调整 Context 责任边界和优化策略;不确定时保持自动与仅观察`})]})}),(0,K.jsx)(`div`,{className:`pcm-policy-body`,children:(0,K.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,K.jsx)(X,{label:`上下文管理方式`,requirement:`optional`,htmlFor:`editContextOwnership`,hint:`决定由平台、框架或原生 Runtime 负责最终模型输入。`,children:(0,K.jsx)(kh,{id:`editContextOwnership`,ariaLabel:`上下文管理方式`,value:H,options:Ce,onValueChange:ee})}),(0,K.jsx)(X,{label:`上下文优化`,requirement:`optional`,htmlFor:`editContextEngineRollout`,hint:`仅观察只生成诊断证据;正式启用会执行预算、压缩和降载。`,children:(0,K.jsx)(kh,{id:`editContextEngineRollout`,ariaLabel:`Context Engine`,value:te,options:[{value:`off`,label:`使用 Runtime 默认行为`},{value:`shadow`,label:`仅观察(推荐)`},{value:`enabled`,label:`正式启用`}],onValueChange:W})})]})})]})]}),(0,K.jsxs)(`div`,{className:`quick-create-actions`,children:[(0,K.jsxs)(`label`,{className:`checkbox-row`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:ae,onChange:e=>oe(e.target.checked)}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:Ee?`保存后生成配置快照`:`保存后构建新 Bundle`}),(0,K.jsx)(`small`,{children:Ee?`校验 YAML 并生成可追溯的部署输入`:`新 Bundle 完成后进入会话工作台`})]})]}),(0,K.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:se,children:[(0,K.jsx)(ze,{size:15}),(0,K.jsx)(`span`,{children:se?`正在保存`:`保存修改`})]})]}),ue&&(0,K.jsxs)(`div`,{className:`inline-alert error`,children:[(0,K.jsx)(U,{size:16}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`保存失败`}),(0,K.jsx)(`p`,{children:ue})]})]})]})}),(0,K.jsxs)(`aside`,{className:`manifest-preview`,children:[(0,K.jsx)(xb,{code:Oe,language:`yaml`,filename:`agentkit.yaml`,wrap:!0}),(0,K.jsxs)(`div`,{className:`manifest-contract`,children:[(0,K.jsxs)(`span`,{children:[(0,K.jsx)(z,{size:13}),`唯一配置源`]}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(z,{size:13}),`SHA-256 可追溯`]}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(z,{size:13}),`RuntimeAdapter 执行`]})]})]})]}):(0,K.jsx)(`div`,{className:`quick-create`,children:(0,K.jsx)(`p`,{children:`正在加载 Agent 配置…`})})}function DD({title:e,subtitle:t,wide:n=!1,closeDisabled:r=!1,onClose:i,footer:a,children:o}){return(0,K.jsx)(Sa,{open:!0,onOpenChange:e=>{e||i()},title:e,subtitle:t,wide:n,closeDisabled:r,footer:a,children:o})}function OD({kind:e,title:t,message:n}){return(0,K.jsxs)(`div`,{className:`inline-alert ${e}`,children:[e===`success`?(0,K.jsx)(W,{size:15}):(0,K.jsx)(U,{size:15}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:t}),n?(0,K.jsx)(`p`,{children:n}):null]})]})}function kD(e,t){let n=t||{};return(e[e.length-1]===``?[...e,``]:e).join((n.padRight?` `:``)+`,`+(n.padLeft===!1?``:` `)).trim()}var AD=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,jD=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,MD={};function ND(e,t){return((t||MD).jsx?jD:AD).test(e)}var PD=/[ \t\n\f\r]/g;function FD(e){return typeof e==`object`?e.type===`text`&&ID(e.value):ID(e)}function ID(e){return e.replace(PD,``)===``}var LD=class{constructor(e,t,n){this.normal=t,this.property=e,n&&(this.space=n)}};LD.prototype.normal={},LD.prototype.property={},LD.prototype.space=void 0;function RD(e,t){let n={},r={};for(let t of e)Object.assign(n,t.property),Object.assign(r,t.normal);return new LD(n,r,t)}function zD(e){return e.toLowerCase()}var BD=class{constructor(e,t){this.attribute=t,this.property=e}};BD.prototype.attribute=``,BD.prototype.booleanish=!1,BD.prototype.boolean=!1,BD.prototype.commaOrSpaceSeparated=!1,BD.prototype.commaSeparated=!1,BD.prototype.defined=!1,BD.prototype.mustUseProperty=!1,BD.prototype.number=!1,BD.prototype.overloadedBoolean=!1,BD.prototype.property=``,BD.prototype.spaceSeparated=!1,BD.prototype.space=void 0;var VD=e({boolean:()=>UD,booleanish:()=>WD,commaOrSpaceSeparated:()=>JD,commaSeparated:()=>qD,number:()=>Q,overloadedBoolean:()=>GD,spaceSeparated:()=>KD}),HD=0,UD=YD(),WD=YD(),GD=YD(),Q=YD(),KD=YD(),qD=YD(),JD=YD();function YD(){return 2**++HD}var XD=Object.keys(VD),ZD=class extends BD{constructor(e,t,n,r){let i=-1;if(super(e,t),QD(this,`space`,r),typeof n==`number`)for(;++i4&&n.slice(0,4)===`data`&&dO.test(t)){if(t.charAt(4)===`-`){let e=t.slice(5).replace(uO,mO);r=`data`+e.charAt(0).toUpperCase()+e.slice(1)}else{let e=t.slice(4);if(!uO.test(e)){let n=e.replace(lO,pO);n.charAt(0)!==`-`&&(n=`-`+n),t=`data`+n}}i=ZD}return new i(r,t)}function pO(e){return`-`+e.toLowerCase()}function mO(e){return e.charAt(1).toUpperCase()}var hO=RD([eO,rO,aO,oO,sO],`html`),gO=RD([eO,iO,aO,oO,sO],`svg`);function _O(e){return e.join(` `).trim()}var vO=n(((e,t)=>{var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,r=/\n/g,i=/^\s*/,a=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,o=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,c=/^[;\s]*/,l=/^\s+|\s+$/g;function u(e,t){if(typeof e!=`string`)throw TypeError(`First argument must be a string`);if(!e)return[];t||={};var l=1,u=1;function f(e){var t=e.match(r);t&&(l+=t.length);var n=e.lastIndexOf(` -`);u=~n?e.length-n:u+e.length}function p(){var e={line:l,column:u};return function(t){return t.position=new m(e),_(),t}}function m(e){this.start=e,this.end={line:l,column:u},this.source=t.source}m.prototype.content=e;function h(n){var r=Error(t.source+`:`+l+`:`+u+`: `+n);if(r.reason=n,r.filename=t.source,r.line=l,r.column=u,r.source=e,!t.silent)throw r}function g(t){var n=t.exec(e);if(n){var r=n[0];return f(r),e=e.slice(r.length),n}}function _(){g(i)}function v(e){var t;for(e||=[];t=y();)t!==!1&&e.push(t);return e}function y(){var t=p();if(e.charAt(0)==`/`&&e.charAt(1)==`*`){for(var n=2;e.charAt(n)!=``&&(e.charAt(n)!=`*`||e.charAt(n+1)!=`/`);)++n;if(n+=2,e.charAt(n-1)===``)return h(`End of comment missing`);var r=e.slice(2,n-2);return u+=2,f(r),e=e.slice(n),u+=2,t({type:`comment`,comment:r})}}function b(){var e=p(),t=g(a);if(t){if(y(),!g(o))return h(`property missing ':'`);var r=g(s),i=e({type:`declaration`,property:d(t[0].replace(n,``)),value:r?d(r[0].replace(n,``)):``});return g(c),i}}function x(){var e=[];v(e);for(var t;t=b();)t!==!1&&(e.push(t),v(e));return e}return _(),x()}function d(e){return e?e.replace(l,``):``}t.exports=u})),yO=n((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.default=r;var n=t(vO());function r(e,t){let r=null;if(!e||typeof e!=`string`)return r;let i=(0,n.default)(e),a=typeof t==`function`;return i.forEach(e=>{if(e.type!==`declaration`)return;let{property:n,value:i}=e;a?t(n,i,e):i&&(r||={},r[n]=i)}),r}})),bO=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,i=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,o=function(e){return!e||r.test(e)||t.test(e)},s=function(e,t){return t.toUpperCase()},c=function(e,t){return`${t}-`};e.camelCase=function(e,t){return t===void 0&&(t={}),o(e)?e:(e=e.toLowerCase(),e=t.reactCompat?e.replace(a,c):e.replace(i,c),e.replace(n,s))}})),xO=n(((e,t)=>{var n=(e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}})(yO()),r=bO();function i(e,t){var i={};return!e||typeof e!=`string`||(0,n.default)(e,function(e,n){e&&n&&(i[(0,r.camelCase)(e,t)]=n)}),i}i.default=i,t.exports=i})),SO=wO(`end`),CO=wO(`start`);function wO(e){return t;function t(t){let n=t&&t.position&&t.position[e]||{};if(typeof n.line==`number`&&n.line>0&&typeof n.column==`number`&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset==`number`&&n.offset>-1?n.offset:void 0}}}function TO(e){let t=CO(e),n=SO(e);if(t&&n)return{start:t,end:n}}function EO(e){return!e||typeof e!=`object`?``:`position`in e||`type`in e?OO(e.position):`start`in e||`end`in e?OO(e):`line`in e||`column`in e?DO(e):``}function DO(e){return kO(e&&e.line)+`:`+kO(e&&e.column)}function OO(e){return DO(e&&e.start)+`-`+DO(e&&e.end)}function kO(e){return e&&typeof e==`number`?e:1}var AO=class extends Error{constructor(e,t,n){super(),typeof t==`string`&&(n=t,t=void 0);let r=``,i={},a=!1;if(t&&(i=`line`in t&&`column`in t||`start`in t&&`end`in t?{place:t}:`type`in t?{ancestors:[t],place:t.position}:{...t}),typeof e==`string`?r=e:!i.cause&&e&&(a=!0,r=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof n==`string`){let e=n.indexOf(`:`);e===-1?i.ruleId=n:(i.source=n.slice(0,e),i.ruleId=n.slice(e+1))}if(!i.place&&i.ancestors&&i.ancestors){let e=i.ancestors[i.ancestors.length-1];e&&(i.place=e.position)}let o=i.place&&`start`in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=o?o.column:void 0,this.fatal=void 0,this.file=``,this.message=r,this.line=o?o.line:void 0,this.name=EO(i.place)||`1:1`,this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack==`string`?i.cause.stack:``,this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};AO.prototype.file=``,AO.prototype.name=``,AO.prototype.reason=``,AO.prototype.message=``,AO.prototype.stack=``,AO.prototype.column=void 0,AO.prototype.line=void 0,AO.prototype.ancestors=void 0,AO.prototype.cause=void 0,AO.prototype.fatal=void 0,AO.prototype.place=void 0,AO.prototype.ruleId=void 0,AO.prototype.source=void 0;var jO=t(xO(),1),MO={}.hasOwnProperty,NO=new Map,PO=/[A-Z]/g,FO=new Set([`table`,`tbody`,`thead`,`tfoot`,`tr`]),IO=new Set([`td`,`th`]);function LO(e,t){if(!t||t.Fragment===void 0)throw TypeError("Expected `Fragment` in options");let n=t.filePath||void 0,r;if(t.development){if(typeof t.jsxDEV!=`function`)throw TypeError("Expected `jsxDEV` in options when `development: true`");r=JO(n,t.jsxDEV)}else{if(typeof t.jsx!=`function`)throw TypeError("Expected `jsx` in production options");if(typeof t.jsxs!=`function`)throw TypeError("Expected `jsxs` in production options");r=qO(n,t.jsx,t.jsxs)}let i={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:r,elementAttributeNameCase:t.elementAttributeNameCase||`react`,evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space===`svg`?gO:hO,stylePropertyNameCase:t.stylePropertyNameCase||`dom`,tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},a=RO(i,e,void 0);return a&&typeof a!=`string`?a:i.create(e,i.Fragment,{children:a||void 0},void 0)}function RO(e,t,n){if(t.type===`element`)return zO(e,t,n);if(t.type===`mdxFlowExpression`||t.type===`mdxTextExpression`)return BO(e,t);if(t.type===`mdxJsxFlowElement`||t.type===`mdxJsxTextElement`)return HO(e,t,n);if(t.type===`mdxjsEsm`)return VO(e,t);if(t.type===`root`)return UO(e,t,n);if(t.type===`text`)return WO(e,t)}function zO(e,t,n){let r=e.schema,i=r;t.tagName.toLowerCase()===`svg`&&r.space===`html`&&(i=gO,e.schema=i),e.ancestors.push(t);let a=ek(e,t.tagName,!1),o=YO(e,t),s=ZO(e,t);return FO.has(t.tagName)&&(s=s.filter(function(e){return typeof e!=`string`||!FD(e)})),GO(e,o,a,t),KO(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function BO(e,t){if(t.data&&t.data.estree&&e.evaluater){let n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}tk(e,t.position)}function VO(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);tk(e,t.position)}function HO(e,t,n){let r=e.schema,i=r;t.name===`svg`&&r.space===`html`&&(i=gO,e.schema=i),e.ancestors.push(t);let a=t.name===null?e.Fragment:ek(e,t.name,!0),o=XO(e,t),s=ZO(e,t);return GO(e,o,a,t),KO(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function UO(e,t,n){let r={};return KO(r,ZO(e,t)),e.create(t,e.Fragment,r,n)}function WO(e,t){return t.value}function GO(e,t,n,r){typeof n!=`string`&&n!==e.Fragment&&e.passNode&&(t.node=r)}function KO(e,t){if(t.length>0){let n=t.length>1?t:t[0];n&&(e.children=n)}}function qO(e,t,n){return r;function r(e,r,i,a){let o=Array.isArray(i.children)?n:t;return a?o(r,i,a):o(r,i)}}function JO(e,t){return n;function n(n,r,i,a){let o=Array.isArray(i.children),s=CO(n);return t(r,i,a,o,{columnNumber:s?s.column-1:void 0,fileName:e,lineNumber:s?s.line:void 0},void 0)}}function YO(e,t){let n={},r,i;for(i in t.properties)if(i!==`children`&&MO.call(t.properties,i)){let a=QO(e,i,t.properties[i]);if(a){let[i,o]=a;e.tableCellAlignToStyle&&i===`align`&&typeof o==`string`&&IO.has(t.tagName)?r=o:n[i]=o}}if(r){let t=n.style||={};t[e.stylePropertyNameCase===`css`?`text-align`:`textAlign`]=r}return n}function XO(e,t){let n={};for(let r of t.attributes)if(r.type===`mdxJsxExpressionAttribute`){if(r.data&&r.data.estree&&e.evaluater){let t=r.data.estree.body[0];t.type;let i=t.expression;i.type;let a=i.properties[0];a.type,Object.assign(n,e.evaluater.evaluateExpression(a.argument))}else tk(e,t.position)}else{let i=r.name,a;if(r.value&&typeof r.value==`object`){if(r.value.data&&r.value.data.estree&&e.evaluater){let t=r.value.data.estree.body[0];t.type,a=e.evaluater.evaluateExpression(t.expression)}else tk(e,t.position)}else a=r.value===null||r.value;n[i]=a}return n}function ZO(e,t){let n=[],r=-1,i=e.passKeys?new Map:NO;for(;++ri?0:i+t:t>i?i:t,n=n>0?n:0,r.length<1e4)o=Array.from(r),o.unshift(t,n),e.splice(...o);else for(n&&e.splice(t,n);a0?(pk(e,e.length,0,t),e):t}var hk={}.hasOwnProperty;function gk(e){let t={},n=-1;for(;++n13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)==65535||(n&65535)==65534||n>1114111?`�`:String.fromCodePoint(n)}function bk(e){return e.replace(/[\t\n\r ]+/g,` `).replace(/^ | $/g,``).toLowerCase().toUpperCase()}var xk=Nk(/[A-Za-z]/),Sk=Nk(/[\dA-Za-z]/),Ck=Nk(/[#-'*+\--9=?A-Z^-~]/);function wk(e){return e!==null&&(e<32||e===127)}var Tk=Nk(/\d/),Ek=Nk(/[\dA-Fa-f]/),Dk=Nk(/[!-/:-@[-`{-~]/);function Ok(e){return e!==null&&e<-2}function kk(e){return e!==null&&(e<0||e===32)}function Ak(e){return e===-2||e===-1||e===32}var jk=Nk(/\p{P}|\p{S}/u),Mk=Nk(/\s/);function Nk(e){return t;function t(t){return t!==null&&t>-1&&e.test(String.fromCharCode(t))}}function Pk(e){let t=[],n=-1,r=0,i=0;for(;++n55295&&a<57344){let t=e.charCodeAt(n+1);a<56320&&t>56319&&t<57344?(o=String.fromCharCode(a,t),i=1):o=`�`}else o=String.fromCharCode(a);o&&=(t.push(e.slice(r,n),encodeURIComponent(o)),r=n+i+1,``),i&&=(n+=i,0)}return t.join(``)+e.slice(r)}function Fk(e,t,n,r){let i=r?r-1:1/0,a=0;return o;function o(r){return Ak(r)?(e.enter(n),s(r)):t(r)}function s(r){return Ak(r)&&a++o))return;let n=t.events.length,a=n,s,c;for(;a--;)if(t.events[a][0]===`exit`&&t.events[a][1].type===`chunkFlow`){if(s){c=t.events[a][1].end;break}s=!0}for(_(r),e=n;er;){let r=n[i];t.containerState=r[1],r[0].exit.call(t,e)}n.length=r}function v(){i.write([null]),a=void 0,i=void 0,t.containerState._closeFlow=void 0}}function Vk(e,t,n){return Fk(e,e.attempt(this.parser.constructs.document,t,n),`linePrefix`,this.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)}function Hk(e){if(e===null||kk(e)||Mk(e))return 1;if(jk(e))return 2}function Uk(e,t,n){let r=[],i=-1;for(;++i1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;let d={...e[r][1].end},f={...e[n][1].start};qk(d,-c),qk(f,c),o={type:c>1?`strongSequence`:`emphasisSequence`,start:d,end:{...e[r][1].end}},s={type:c>1?`strongSequence`:`emphasisSequence`,start:{...e[n][1].start},end:f},a={type:c>1?`strongText`:`emphasisText`,start:{...e[r][1].end},end:{...e[n][1].start}},i={type:c>1?`strong`:`emphasis`,start:{...o.start},end:{...s.end}},e[r][1].end={...o.start},e[n][1].start={...s.end},l=[],e[r][1].end.offset-e[r][1].start.offset&&(l=mk(l,[[`enter`,e[r][1],t],[`exit`,e[r][1],t]])),l=mk(l,[[`enter`,i,t],[`enter`,o,t],[`exit`,o,t],[`enter`,a,t]]),l=mk(l,Uk(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),l=mk(l,[[`exit`,a,t],[`enter`,s,t],[`exit`,s,t],[`exit`,i,t]]),e[n][1].end.offset-e[n][1].start.offset?(u=2,l=mk(l,[[`enter`,e[n][1],t],[`exit`,e[n][1],t]])):u=0,pk(e,r-1,n-r+3,l),n=r+l.length-u-2;break}}for(n=-1;++n0&&Ak(t)?Fk(e,v,`linePrefix`,a+1)(t):v(t)}function v(t){return t===null||Ok(t)?e.check(oA,h,b)(t):(e.enter(`codeFlowValue`),y(t))}function y(t){return t===null||Ok(t)?(e.exit(`codeFlowValue`),v(t)):(e.consume(t),y)}function b(n){return e.exit(`codeFenced`),t(n)}function x(e,t,n){let i=0;return a;function a(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),c}function c(t){return e.enter(`codeFencedFence`),Ak(t)?Fk(e,l,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):l(t)}function l(t){return t===s?(e.enter(`codeFencedFenceSequence`),u(t)):n(t)}function u(t){return t===s?(i++,e.consume(t),u):i>=o?(e.exit(`codeFencedFenceSequence`),Ak(t)?Fk(e,d,`whitespace`)(t):d(t)):n(t)}function d(r){return r===null||Ok(r)?(e.exit(`codeFencedFence`),t(r)):n(r)}}}function lA(e,t,n){let r=this;return i;function i(t){return t===null?n(t):(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),a)}function a(e){return r.parser.lazy[r.now().line]?n(e):t(e)}}var uA={name:`codeIndented`,tokenize:fA},dA={partial:!0,tokenize:pA};function fA(e,t,n){let r=this;return i;function i(t){return e.enter(`codeIndented`),Fk(e,a,`linePrefix`,5)(t)}function a(e){let t=r.events[r.events.length-1];return t&&t[1].type===`linePrefix`&&t[2].sliceSerialize(t[1],!0).length>=4?o(e):n(e)}function o(t){return t===null?c(t):Ok(t)?e.attempt(dA,o,c)(t):(e.enter(`codeFlowValue`),s(t))}function s(t){return t===null||Ok(t)?(e.exit(`codeFlowValue`),o(t)):(e.consume(t),s)}function c(n){return e.exit(`codeIndented`),t(n)}}function pA(e,t,n){let r=this;return i;function i(t){return r.parser.lazy[r.now().line]?n(t):Ok(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),i):Fk(e,a,`linePrefix`,5)(t)}function a(e){let a=r.events[r.events.length-1];return a&&a[1].type===`linePrefix`&&a[2].sliceSerialize(a[1],!0).length>=4?t(e):Ok(e)?i(e):n(e)}}var mA={name:`codeText`,previous:gA,resolve:hA,tokenize:_A};function hA(e){let t=e.length-4,n=3,r,i;if((e[n][1].type===`lineEnding`||e[n][1].type===`space`)&&(e[t][1].type===`lineEnding`||e[t][1].type===`space`)){for(r=n;++r=this.left.length+this.right.length)throw RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(e,t,n){let r=t||0;this.setCursor(Math.trunc(e));let i=this.right.splice(this.right.length-r,1/0);return n&&yA(this.left,n),i.reverse()}pop(){return this.setCursor(1/0),this.left.pop()}push(e){this.setCursor(1/0),this.left.push(e)}pushMany(e){this.setCursor(1/0),yA(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),yA(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0)){if(e=4?t(i):e.interrupt(r.parser.constructs.flow,n,t)(i)}}function DA(e,t,n,r,i,a,o,s,c){let l=c||1/0,u=0;return d;function d(t){return t===60?(e.enter(r),e.enter(i),e.enter(a),e.consume(t),e.exit(a),f):t===null||t===32||t===41||wk(t)?n(t):(e.enter(r),e.enter(o),e.enter(s),e.enter(`chunkString`,{contentType:`string`}),h(t))}function f(n){return n===62?(e.enter(a),e.consume(n),e.exit(a),e.exit(i),e.exit(r),t):(e.enter(s),e.enter(`chunkString`,{contentType:`string`}),p(n))}function p(t){return t===62?(e.exit(`chunkString`),e.exit(s),f(t)):t===null||t===60||Ok(t)?n(t):(e.consume(t),t===92?m:p)}function m(t){return t===60||t===62||t===92?(e.consume(t),p):p(t)}function h(i){return!u&&(i===null||i===41||kk(i))?(e.exit(`chunkString`),e.exit(s),e.exit(o),e.exit(r),t(i)):u999||l===null||l===91||l===93&&!c||l===94&&!s&&`_hiddenFootnoteSupport`in o.parser.constructs?n(l):l===93?(e.exit(a),e.enter(i),e.consume(l),e.exit(i),e.exit(r),t):Ok(l)?(e.enter(`lineEnding`),e.consume(l),e.exit(`lineEnding`),u):(e.enter(`chunkString`,{contentType:`string`}),d(l))}function d(t){return t===null||t===91||t===93||Ok(t)||s++>999?(e.exit(`chunkString`),u(t)):(e.consume(t),c||=!Ak(t),t===92?f:d)}function f(t){return t===91||t===92||t===93?(e.consume(t),s++,d):d(t)}}function kA(e,t,n,r,i,a){let o;return s;function s(t){return t===34||t===39||t===40?(e.enter(r),e.enter(i),e.consume(t),e.exit(i),o=t===40?41:t,c):n(t)}function c(n){return n===o?(e.enter(i),e.consume(n),e.exit(i),e.exit(r),t):(e.enter(a),l(n))}function l(t){return t===o?(e.exit(a),c(o)):t===null?n(t):Ok(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),Fk(e,l,`linePrefix`)):(e.enter(`chunkString`,{contentType:`string`}),u(t))}function u(t){return t===o||t===null||Ok(t)?(e.exit(`chunkString`),l(t)):(e.consume(t),t===92?d:u)}function d(t){return t===o||t===92?(e.consume(t),u):u(t)}}function AA(e,t){let n;return r;function r(i){return Ok(i)?(e.enter(`lineEnding`),e.consume(i),e.exit(`lineEnding`),n=!0,r):Ak(i)?Fk(e,r,n?`linePrefix`:`lineSuffix`)(i):t(i)}}var jA={name:`definition`,tokenize:NA},MA={partial:!0,tokenize:PA};function NA(e,t,n){let r=this,i;return a;function a(t){return e.enter(`definition`),o(t)}function o(t){return OA.call(r,e,s,n,`definitionLabel`,`definitionLabelMarker`,`definitionLabelString`)(t)}function s(t){return i=bk(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),c):n(t)}function c(t){return kk(t)?AA(e,l)(t):l(t)}function l(t){return DA(e,u,n,`definitionDestination`,`definitionDestinationLiteral`,`definitionDestinationLiteralMarker`,`definitionDestinationRaw`,`definitionDestinationString`)(t)}function u(t){return e.attempt(MA,d,d)(t)}function d(t){return Ak(t)?Fk(e,f,`whitespace`)(t):f(t)}function f(a){return a===null||Ok(a)?(e.exit(`definition`),r.parser.defined.push(i),t(a)):n(a)}}function PA(e,t,n){return r;function r(t){return kk(t)?AA(e,i)(t):n(t)}function i(t){return kA(e,a,n,`definitionTitle`,`definitionTitleMarker`,`definitionTitleString`)(t)}function a(t){return Ak(t)?Fk(e,o,`whitespace`)(t):o(t)}function o(e){return e===null||Ok(e)?t(e):n(e)}}var FA={name:`hardBreakEscape`,tokenize:IA};function IA(e,t,n){return r;function r(t){return e.enter(`hardBreakEscape`),e.consume(t),i}function i(r){return Ok(r)?(e.exit(`hardBreakEscape`),t(r)):n(r)}}var LA={name:`headingAtx`,resolve:RA,tokenize:zA};function RA(e,t){let n=e.length-2,r=3,i,a;return e[r][1].type===`whitespace`&&(r+=2),n-2>r&&e[n][1].type===`whitespace`&&(n-=2),e[n][1].type===`atxHeadingSequence`&&(r===n-1||n-4>r&&e[n-2][1].type===`whitespace`)&&(n-=r+1===n?2:4),n>r&&(i={type:`atxHeadingText`,start:e[r][1].start,end:e[n][1].end},a={type:`chunkText`,start:e[r][1].start,end:e[n][1].end,contentType:`text`},pk(e,r,n-r+1,[[`enter`,i,t],[`enter`,a,t],[`exit`,a,t],[`exit`,i,t]])),e}function zA(e,t,n){let r=0;return i;function i(t){return e.enter(`atxHeading`),a(t)}function a(t){return e.enter(`atxHeadingSequence`),o(t)}function o(t){return t===35&&r++<6?(e.consume(t),o):t===null||kk(t)?(e.exit(`atxHeadingSequence`),s(t)):n(t)}function s(n){return n===35?(e.enter(`atxHeadingSequence`),c(n)):n===null||Ok(n)?(e.exit(`atxHeading`),t(n)):Ak(n)?Fk(e,s,`whitespace`)(n):(e.enter(`atxHeadingText`),l(n))}function c(t){return t===35?(e.consume(t),c):(e.exit(`atxHeadingSequence`),s(t))}function l(t){return t===null||t===35||kk(t)?(e.exit(`atxHeadingText`),s(t)):(e.consume(t),l)}}var BA=`address.article.aside.base.basefont.blockquote.body.caption.center.col.colgroup.dd.details.dialog.dir.div.dl.dt.fieldset.figcaption.figure.footer.form.frame.frameset.h1.h2.h3.h4.h5.h6.head.header.hr.html.iframe.legend.li.link.main.menu.menuitem.nav.noframes.ol.optgroup.option.p.param.search.section.summary.table.tbody.td.tfoot.th.thead.title.tr.track.ul`.split(`.`),VA=[`pre`,`script`,`style`,`textarea`],HA={concrete:!0,name:`htmlFlow`,resolveTo:GA,tokenize:KA},UA={partial:!0,tokenize:JA},WA={partial:!0,tokenize:qA};function GA(e){let t=e.length;for(;t--&&(e[t][0]!==`enter`||e[t][1].type!==`htmlFlow`););return t>1&&e[t-2][1].type===`linePrefix`&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function KA(e,t,n){let r=this,i,a,o,s,c;return l;function l(e){return u(e)}function u(t){return e.enter(`htmlFlow`),e.enter(`htmlFlowData`),e.consume(t),d}function d(s){return s===33?(e.consume(s),f):s===47?(e.consume(s),a=!0,h):s===63?(e.consume(s),i=3,r.interrupt?t:I):xk(s)?(e.consume(s),o=String.fromCharCode(s),g):n(s)}function f(a){return a===45?(e.consume(a),i=2,p):a===91?(e.consume(a),i=5,s=0,m):xk(a)?(e.consume(a),i=4,r.interrupt?t:I):n(a)}function p(i){return i===45?(e.consume(i),r.interrupt?t:I):n(i)}function m(i){return i===`CDATA[`.charCodeAt(s++)?(e.consume(i),s===6?r.interrupt?t:O:m):n(i)}function h(t){return xk(t)?(e.consume(t),o=String.fromCharCode(t),g):n(t)}function g(s){if(s===null||s===47||s===62||kk(s)){let c=s===47,l=o.toLowerCase();return!c&&!a&&VA.includes(l)?(i=1,r.interrupt?t(s):O(s)):BA.includes(o.toLowerCase())?(i=6,c?(e.consume(s),_):r.interrupt?t(s):O(s)):(i=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(s):a?v(s):y(s))}return s===45||Sk(s)?(e.consume(s),o+=String.fromCharCode(s),g):n(s)}function _(i){return i===62?(e.consume(i),r.interrupt?t:O):n(i)}function v(t){return Ak(t)?(e.consume(t),v):E(t)}function y(t){return t===47?(e.consume(t),E):t===58||t===95||xk(t)?(e.consume(t),b):Ak(t)?(e.consume(t),y):E(t)}function b(t){return t===45||t===46||t===58||t===95||Sk(t)?(e.consume(t),b):x(t)}function x(t){return t===61?(e.consume(t),S):Ak(t)?(e.consume(t),x):y(t)}function S(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),c=t,C):Ak(t)?(e.consume(t),S):w(t)}function C(t){return t===c?(e.consume(t),c=null,T):t===null||Ok(t)?n(t):(e.consume(t),C)}function w(t){return t===null||t===34||t===39||t===47||t===60||t===61||t===62||t===96||kk(t)?x(t):(e.consume(t),w)}function T(e){return e===47||e===62||Ak(e)?y(e):n(e)}function E(t){return t===62?(e.consume(t),D):n(t)}function D(t){return t===null||Ok(t)?O(t):Ak(t)?(e.consume(t),D):n(t)}function O(t){return t===45&&i===2?(e.consume(t),M):t===60&&i===1?(e.consume(t),N):t===62&&i===4?(e.consume(t),L):t===63&&i===3?(e.consume(t),I):t===93&&i===5?(e.consume(t),F):Ok(t)&&(i===6||i===7)?(e.exit(`htmlFlowData`),e.check(UA,R,k)(t)):t===null||Ok(t)?(e.exit(`htmlFlowData`),k(t)):(e.consume(t),O)}function k(t){return e.check(WA,A,R)(t)}function A(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),j}function j(t){return t===null||Ok(t)?k(t):(e.enter(`htmlFlowData`),O(t))}function M(t){return t===45?(e.consume(t),I):O(t)}function N(t){return t===47?(e.consume(t),o=``,P):O(t)}function P(t){if(t===62){let n=o.toLowerCase();return VA.includes(n)?(e.consume(t),L):O(t)}return xk(t)&&o.length<8?(e.consume(t),o+=String.fromCharCode(t),P):O(t)}function F(t){return t===93?(e.consume(t),I):O(t)}function I(t){return t===62?(e.consume(t),L):t===45&&i===2?(e.consume(t),I):O(t)}function L(t){return t===null||Ok(t)?(e.exit(`htmlFlowData`),R(t)):(e.consume(t),L)}function R(n){return e.exit(`htmlFlow`),t(n)}}function qA(e,t,n){let r=this;return i;function i(t){return Ok(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),a):n(t)}function a(e){return r.parser.lazy[r.now().line]?n(e):t(e)}}function JA(e,t,n){return r;function r(r){return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),e.attempt(Xk,t,n)}}var YA={name:`htmlText`,tokenize:XA};function XA(e,t,n){let r=this,i,a,o;return s;function s(t){return e.enter(`htmlText`),e.enter(`htmlTextData`),e.consume(t),c}function c(t){return t===33?(e.consume(t),l):t===47?(e.consume(t),x):t===63?(e.consume(t),y):xk(t)?(e.consume(t),w):n(t)}function l(t){return t===45?(e.consume(t),u):t===91?(e.consume(t),a=0,m):xk(t)?(e.consume(t),v):n(t)}function u(t){return t===45?(e.consume(t),p):n(t)}function d(t){return t===null?n(t):t===45?(e.consume(t),f):Ok(t)?(o=d,N(t)):(e.consume(t),d)}function f(t){return t===45?(e.consume(t),p):d(t)}function p(e){return e===62?M(e):e===45?f(e):d(e)}function m(t){return t===`CDATA[`.charCodeAt(a++)?(e.consume(t),a===6?h:m):n(t)}function h(t){return t===null?n(t):t===93?(e.consume(t),g):Ok(t)?(o=h,N(t)):(e.consume(t),h)}function g(t){return t===93?(e.consume(t),_):h(t)}function _(t){return t===62?M(t):t===93?(e.consume(t),_):h(t)}function v(t){return t===null||t===62?M(t):Ok(t)?(o=v,N(t)):(e.consume(t),v)}function y(t){return t===null?n(t):t===63?(e.consume(t),b):Ok(t)?(o=y,N(t)):(e.consume(t),y)}function b(e){return e===62?M(e):y(e)}function x(t){return xk(t)?(e.consume(t),S):n(t)}function S(t){return t===45||Sk(t)?(e.consume(t),S):C(t)}function C(t){return Ok(t)?(o=C,N(t)):Ak(t)?(e.consume(t),C):M(t)}function w(t){return t===45||Sk(t)?(e.consume(t),w):t===47||t===62||kk(t)?T(t):n(t)}function T(t){return t===47?(e.consume(t),M):t===58||t===95||xk(t)?(e.consume(t),E):Ok(t)?(o=T,N(t)):Ak(t)?(e.consume(t),T):M(t)}function E(t){return t===45||t===46||t===58||t===95||Sk(t)?(e.consume(t),E):D(t)}function D(t){return t===61?(e.consume(t),O):Ok(t)?(o=D,N(t)):Ak(t)?(e.consume(t),D):T(t)}function O(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),i=t,k):Ok(t)?(o=O,N(t)):Ak(t)?(e.consume(t),O):(e.consume(t),A)}function k(t){return t===i?(e.consume(t),i=void 0,j):t===null?n(t):Ok(t)?(o=k,N(t)):(e.consume(t),k)}function A(t){return t===null||t===34||t===39||t===60||t===61||t===96?n(t):t===47||t===62||kk(t)?T(t):(e.consume(t),A)}function j(e){return e===47||e===62||kk(e)?T(e):n(e)}function M(r){return r===62?(e.consume(r),e.exit(`htmlTextData`),e.exit(`htmlText`),t):n(r)}function N(t){return e.exit(`htmlTextData`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),P}function P(t){return Ak(t)?Fk(e,F,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):F(t)}function F(t){return e.enter(`htmlTextData`),o(t)}}var ZA={name:`labelEnd`,resolveAll:tj,resolveTo:nj,tokenize:rj},QA={tokenize:ij},$A={tokenize:aj},ej={tokenize:oj};function tj(e){let t=-1,n=[];for(;++t=3&&(a===null||Ok(a))?(e.exit(`thematicBreak`),t(a)):n(a)}function c(t){return t===i?(e.consume(t),r++,c):(e.exit(`thematicBreakSequence`),Ak(t)?Fk(e,s,`whitespace`)(t):s(t))}}var hj={continuation:{tokenize:yj},exit:xj,name:`list`,tokenize:vj},gj={partial:!0,tokenize:Sj},_j={partial:!0,tokenize:bj};function vj(e,t,n){let r=this,i=r.events[r.events.length-1],a=i&&i[1].type===`linePrefix`?i[2].sliceSerialize(i[1],!0).length:0,o=0;return s;function s(t){let i=r.containerState.type||(t===42||t===43||t===45?`listUnordered`:`listOrdered`);if(i===`listUnordered`?!r.containerState.marker||t===r.containerState.marker:Tk(t)){if(r.containerState.type||(r.containerState.type=i,e.enter(i,{_container:!0})),i===`listUnordered`)return e.enter(`listItemPrefix`),t===42||t===45?e.check(pj,n,l)(t):l(t);if(!r.interrupt||t===49)return e.enter(`listItemPrefix`),e.enter(`listItemValue`),c(t)}return n(t)}function c(t){return Tk(t)&&++o<10?(e.consume(t),c):(!r.interrupt||o<2)&&(r.containerState.marker?t===r.containerState.marker:t===41||t===46)?(e.exit(`listItemValue`),l(t)):n(t)}function l(t){return e.enter(`listItemMarker`),e.consume(t),e.exit(`listItemMarker`),r.containerState.marker=r.containerState.marker||t,e.check(Xk,r.interrupt?n:u,e.attempt(gj,f,d))}function u(e){return r.containerState.initialBlankLine=!0,a++,f(e)}function d(t){return Ak(t)?(e.enter(`listItemPrefixWhitespace`),e.consume(t),e.exit(`listItemPrefixWhitespace`),f):n(t)}function f(n){return r.containerState.size=a+r.sliceSerialize(e.exit(`listItemPrefix`),!0).length,t(n)}}function yj(e,t,n){let r=this;return r.containerState._closeFlow=void 0,e.check(Xk,i,a);function i(n){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,Fk(e,t,`listItemIndent`,r.containerState.size+1)(n)}function a(n){return r.containerState.furtherBlankLines||!Ak(n)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,o(n)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(_j,t,o)(n))}function o(i){return r.containerState._closeFlow=!0,r.interrupt=void 0,Fk(e,e.attempt(hj,t,n),`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(i)}}function bj(e,t,n){let r=this;return Fk(e,i,`listItemIndent`,r.containerState.size+1);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`listItemIndent`&&i[2].sliceSerialize(i[1],!0).length===r.containerState.size?t(e):n(e)}}function xj(e){e.exit(this.containerState.type)}function Sj(e,t,n){let r=this;return Fk(e,i,`listItemPrefixWhitespace`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:5);function i(e){let i=r.events[r.events.length-1];return!Ak(e)&&i&&i[1].type===`listItemPrefixWhitespace`?t(e):n(e)}}var Cj={name:`setextUnderline`,resolveTo:wj,tokenize:Tj};function wj(e,t){let n=e.length,r,i,a;for(;n--;)if(e[n][0]===`enter`){if(e[n][1].type===`content`){r=n;break}e[n][1].type===`paragraph`&&(i=n)}else e[n][1].type===`content`&&e.splice(n,1),!a&&e[n][1].type===`definition`&&(a=n);let o={type:`setextHeading`,start:{...e[r][1].start},end:{...e[e.length-1][1].end}};return e[i][1].type=`setextHeadingText`,a?(e.splice(i,0,[`enter`,o,t]),e.splice(a+1,0,[`exit`,e[r][1],t]),e[r][1].end={...e[a][1].end}):e[r][1]=o,e.push([`exit`,o,t]),e}function Tj(e,t,n){let r=this,i;return a;function a(t){let a=r.events.length,s;for(;a--;)if(r.events[a][1].type!==`lineEnding`&&r.events[a][1].type!==`linePrefix`&&r.events[a][1].type!==`content`){s=r.events[a][1].type===`paragraph`;break}return!r.parser.lazy[r.now().line]&&(r.interrupt||s)?(e.enter(`setextHeadingLine`),i=t,o(t)):n(t)}function o(t){return e.enter(`setextHeadingLineSequence`),s(t)}function s(t){return t===i?(e.consume(t),s):(e.exit(`setextHeadingLineSequence`),Ak(t)?Fk(e,c,`lineSuffix`)(t):c(t))}function c(r){return r===null||Ok(r)?(e.exit(`setextHeadingLine`),t(r)):n(r)}}var Ej={tokenize:Dj};function Dj(e){let t=this,n=e.attempt(Xk,r,e.attempt(this.parser.constructs.flowInitial,i,Fk(e,e.attempt(this.parser.constructs.flow,i,e.attempt(SA,i)),`linePrefix`)));return n;function r(r){if(r===null){e.consume(r);return}return e.enter(`lineEndingBlank`),e.consume(r),e.exit(`lineEndingBlank`),t.currentConstruct=void 0,n}function i(r){if(r===null){e.consume(r);return}return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),t.currentConstruct=void 0,n}}var Oj={resolveAll:Mj()},kj=jj(`string`),Aj=jj(`text`);function jj(e){return{resolveAll:Mj(e===`text`?Nj:void 0),tokenize:t};function t(t){let n=this,r=this.parser.constructs[e],i=t.attempt(r,a,o);return a;function a(e){return c(e)?i(e):o(e)}function o(e){if(e===null){t.consume(e);return}return t.enter(`data`),t.consume(e),s}function s(e){return c(e)?(t.exit(`data`),i(e)):(t.consume(e),s)}function c(e){if(e===null)return!0;let t=r[e],i=-1;if(t)for(;++iHj,contentInitial:()=>Ij,disable:()=>Uj,document:()=>Fj,flow:()=>Rj,flowInitial:()=>Lj,insideSpan:()=>Vj,string:()=>zj,text:()=>Bj}),Fj={42:hj,43:hj,45:hj,48:hj,49:hj,50:hj,51:hj,52:hj,53:hj,54:hj,55:hj,56:hj,57:hj,62:Qk},Ij={91:jA},Lj={[-2]:uA,[-1]:uA,32:uA},Rj={35:LA,42:pj,45:[Cj,pj],60:HA,61:Cj,95:pj,96:sA,126:sA},zj={38:iA,92:nA},Bj={[-5]:dj,[-4]:dj,[-3]:dj,33:sj,38:iA,42:Wk,60:[Jk,YA],91:lj,92:[FA,nA],93:ZA,95:Wk,96:mA},Vj={null:[Wk,Oj]},Hj={null:[42,95]},Uj={null:[]};function Wj(e,t,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0},i={},a=[],o=[],s=[],c={attempt:C(x),check:C(S),consume:v,enter:y,exit:b,interrupt:C(S,{interrupt:!0})},l={code:null,containerState:{},defineSkip:h,events:[],now:m,parser:e,previous:null,sliceSerialize:f,sliceStream:p,write:d},u=t.tokenize.call(l,c);return t.resolveAll&&a.push(t),l;function d(e){return o=mk(o,e),g(),o[o.length-1]===null?(w(t,0),l.events=Uk(a,l.events,l),l.events):[]}function f(e,t){return Kj(p(e),t)}function p(e){return Gj(o,e)}function m(){let{_bufferIndex:e,_index:t,line:n,column:i,offset:a}=r;return{_bufferIndex:e,_index:t,line:n,column:i,offset:a}}function h(e){i[e.line]=e.column,E()}function g(){let e;for(;r._index-1){let e=o[0];typeof e==`string`?o[0]=e.slice(r):o.shift()}a>0&&o.push(e[i].slice(0,a))}return o}function Kj(e,t){let n=-1,r=[],i;for(;++n0){let e=a.tokenStack[a.tokenStack.length-1];(e[1]||oM).call(a,void 0,e[0])}for(r.position={start:rM(e.length>0?e[0][1].start:{line:1,column:1,offset:0}),end:rM(e.length>0?e[e.length-2][1].end:{line:1,column:1,offset:0})},d=-1;++d0&&(r.className=[`language-`+i[0]]);let a={type:`element`,tagName:`code`,properties:r,children:[{type:`text`,value:n}]};return t.meta&&(a.data={meta:t.meta}),e.patch(t,a),a=e.applyData(t,a),a={type:`element`,tagName:`pre`,properties:{},children:[a]},e.patch(t,a),a}function dM(e,t){let n={type:`element`,tagName:`del`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function fM(e,t){let n={type:`element`,tagName:`em`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function pM(e,t){let n=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,r=String(t.identifier).toUpperCase(),i=Pk(r.toLowerCase()),a=e.footnoteOrder.indexOf(r),o,s=e.footnoteCounts.get(r);s===void 0?(s=0,e.footnoteOrder.push(r),o=e.footnoteOrder.length):o=a+1,s+=1,e.footnoteCounts.set(r,s);let c={type:`element`,tagName:`a`,properties:{href:`#`+n+`fn-`+i,id:n+`fnref-`+i+(s>1?`-`+s:``),dataFootnoteRef:!0,ariaDescribedBy:[`footnote-label`]},children:[{type:`text`,value:String(o)}]};e.patch(t,c);let l={type:`element`,tagName:`sup`,properties:{},children:[c]};return e.patch(t,l),e.applyData(t,l)}function mM(e,t){let n={type:`element`,tagName:`h`+t.depth,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function hM(e,t){if(e.options.allowDangerousHtml){let n={type:`raw`,value:t.value};return e.patch(t,n),e.applyData(t,n)}}function gM(e,t){let n=t.referenceType,r=`]`;if(n===`collapsed`?r+=`[]`:n===`full`&&(r+=`[`+(t.label||t.identifier)+`]`),t.type===`imageReference`)return[{type:`text`,value:`![`+t.alt+r}];let i=e.all(t),a=i[0];a&&a.type===`text`?a.value=`[`+a.value:i.unshift({type:`text`,value:`[`});let o=i[i.length-1];return o&&o.type===`text`?o.value+=r:i.push({type:`text`,value:r}),i}function _M(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return gM(e,t);let i={src:Pk(r.url||``),alt:t.alt};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`img`,properties:i,children:[]};return e.patch(t,a),e.applyData(t,a)}function vM(e,t){let n={src:Pk(t.url)};t.alt!==null&&t.alt!==void 0&&(n.alt=t.alt),t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`img`,properties:n,children:[]};return e.patch(t,r),e.applyData(t,r)}function yM(e,t){let n={type:`text`,value:t.value.replace(/\r?\n|\r/g,` `)};e.patch(t,n);let r={type:`element`,tagName:`code`,properties:{},children:[n]};return e.patch(t,r),e.applyData(t,r)}function bM(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return gM(e,t);let i={href:Pk(r.url||``)};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`a`,properties:i,children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}function xM(e,t){let n={href:Pk(t.url)};t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`a`,properties:n,children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function SM(e,t,n){let r=e.all(t),i=n?CM(n):wM(t),a={},o=[];if(typeof t.checked==`boolean`){let e=r[0],n;e&&e.type===`element`&&e.tagName===`p`?n=e:(n={type:`element`,tagName:`p`,properties:{},children:[]},r.unshift(n)),n.children.length>0&&n.children.unshift({type:`text`,value:` `}),n.children.unshift({type:`element`,tagName:`input`,properties:{type:`checkbox`,checked:t.checked,disabled:!0},children:[]}),a.className=[`task-list-item`]}let s=-1;for(;++s1}function TM(e,t){let n={},r=e.all(t),i=-1;for(typeof t.start==`number`&&t.start!==1&&(n.start=t.start);++i0){let r={type:`element`,tagName:`tbody`,properties:{},children:e.wrap(n,!0)},a=CO(t.children[1]),o=SO(t.children[t.children.length-1]);a&&o&&(r.position={start:a,end:o}),i.push(r)}let a={type:`element`,tagName:`table`,properties:{},children:e.wrap(i,!0)};return e.patch(t,a),e.applyData(t,a)}function AM(e,t,n){let r=n?n.children:void 0,i=(r?r.indexOf(t):1)===0?`th`:`td`,a=n&&n.type===`table`?n.align:void 0,o=a?a.length:t.children.length,s=-1,c=[];for(;++s0,!0),r[0]),i=r.index+r[0].length,r=n.exec(t);return a.push(FM(t.slice(i),i>0,!1)),a.join(``)}function FM(e,t,n){let r=0,i=e.length;if(t){let t=e.codePointAt(r);for(;t===MM||t===NM;)r++,t=e.codePointAt(r)}if(n){let t=e.codePointAt(i-1);for(;t===MM||t===NM;)i--,t=e.codePointAt(i-1)}return i>r?e.slice(r,i):``}function IM(e,t){let n={type:`text`,value:PM(String(t.value))};return e.patch(t,n),e.applyData(t,n)}function LM(e,t){let n={type:`element`,tagName:`hr`,properties:{},children:[]};return e.patch(t,n),e.applyData(t,n)}var RM={blockquote:cM,break:lM,code:uM,delete:dM,emphasis:fM,footnoteReference:pM,heading:mM,html:hM,imageReference:_M,image:vM,inlineCode:yM,linkReference:bM,link:xM,listItem:SM,list:TM,paragraph:EM,root:DM,strong:OM,table:kM,tableCell:jM,tableRow:AM,text:IM,thematicBreak:LM,toml:zM,yaml:zM,definition:zM,footnoteDefinition:zM};function zM(){}var BM=typeof self==`object`?self:globalThis,VM=(e,t)=>{switch(e){case`Function`:case`SharedWorker`:case`Worker`:case`eval`:case`setInterval`:case`setTimeout`:throw TypeError(`unable to deserialize `+e)}return new BM[e](t)},HM=(e,t)=>{let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o;return n(typeof BM[e]==`function`?VM(e,t):Error(t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}return n(VM(a,o),i)};return r},UM=e=>HM(new Map,e)(0),WM=``,{toString:GM}={},{keys:KM}=Object,qM=e=>{let t=typeof e;if(t!==`object`||!e)return[0,t];let n=GM.call(e).slice(8,-1);switch(n){case`Array`:return[1,WM];case`Object`:return[2,WM];case`Date`:return[3,WM];case`RegExp`:return[4,WM];case`Map`:return[5,WM];case`Set`:return[6,WM];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:e instanceof Error?[7,e.name||`Error`]:[2,n]},JM=([e,t])=>e===0&&(t===`function`||t===`symbol`),YM=(e,t,n,r)=>{let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=qM(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize `+s);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of KM(r))(e||!JM(qM(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,isNaN(r.getTime())?WM:r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(JM(qM(n))||JM(qM(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!JM(qM(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a},XM=(e,{json:t,lossy:n}={})=>{let r=[];return YM(!(t||n),!!t,new Map,r)(e),r},ZM=typeof structuredClone==`function`?(e,t)=>t&&(`json`in t||`lossy`in t)?UM(XM(e,t)):structuredClone(e):(e,t)=>UM(XM(e,t));function QM(e,t){let n=[{type:`text`,value:`↩`}];return t>1&&n.push({type:`element`,tagName:`sup`,properties:{},children:[{type:`text`,value:String(t)}]}),n}function $M(e,t){return`Back to reference `+(e+1)+(t>1?`-`+t:``)}function eN(e){let t=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,n=e.options.footnoteBackContent||QM,r=e.options.footnoteBackLabel||$M,i=e.options.footnoteLabel||`Footnotes`,a=e.options.footnoteLabelTagName||`h2`,o=e.options.footnoteLabelProperties||{className:[`sr-only`]},s=[],c=-1;for(;++c0&&d.push({type:`text`,value:` `});let e=typeof n==`string`?n:n(c,u);typeof e==`string`&&(e={type:`text`,value:e}),d.push({type:`element`,tagName:`a`,properties:{href:`#`+t+`fnref-`+l+(u>1?`-`+u:``),dataFootnoteBackref:``,ariaLabel:typeof r==`string`?r:r(c,u),className:[`data-footnote-backref`]},children:Array.isArray(e)?e:[e]})}let p=a[a.length-1];if(p&&p.type===`element`&&p.tagName===`p`){let e=p.children[p.children.length-1];e&&e.type===`text`?e.value+=` `:p.children.push({type:`text`,value:` `}),p.children.push(...d)}else a.push(...d);let m={type:`element`,tagName:`li`,properties:{id:t+`fn-`+l},children:e.wrap(a,!0)};e.patch(i,m),s.push(m)}if(s.length!==0)return{type:`element`,tagName:`section`,properties:{dataFootnotes:!0,className:[`footnotes`]},children:[{type:`element`,tagName:a,properties:{...ZM(o),id:`footnote-label`},children:[{type:`text`,value:i}]},{type:`text`,value:` -`},{type:`element`,tagName:`ol`,properties:{},children:e.wrap(s,!0)},{type:`text`,value:` -`}]}}var tN=(function(e){if(e==null)return oN;if(typeof e==`function`)return aN(e);if(typeof e==`object`)return Array.isArray(e)?nN(e):rN(e);if(typeof e==`string`)return iN(e);throw Error(`Expected function, string, or object as test`)});function nN(e){let t=[],n=-1;for(;++n`:``))+`)`})}return u;function u(){let l=lN,u,d,f;if((!t||a(e,i,c[c.length-1]||void 0))&&(l=dN(n(e,c)),l[0]===!1))return l;if(`children`in e&&e.children){let t=e;if(t.children&&l[0]!==`skip`)for(d=(r?t.children.length:-1)+o,f=c.concat(t);d>-1&&d0&&n.push({type:`text`,value:` -`}),n}function bN(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function xN(e,t){let n=hN(e,t),r=n.one(e,void 0),i=eN(n),a=Array.isArray(r)?{type:`root`,children:r}:r||{type:`root`,children:[]};return i&&(`children`in a,a.children.push({type:`text`,value:` -`},i)),a}function SN(e,t){return e&&`run`in e?async function(n,r){let i=xN(n,{file:r,...t});await e.run(i,r)}:function(n,r){return xN(n,{file:r,...e||t})}}function CN(e){if(e)throw e}var wN=n(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=function(e){return typeof Array.isArray==`function`?Array.isArray(e):r.call(e)===`[object Array]`},s=function(e){if(!e||r.call(e)!==`[object Object]`)return!1;var t=n.call(e,`constructor`),i=e.constructor&&e.constructor.prototype&&n.call(e.constructor.prototype,`isPrototypeOf`);if(e.constructor&&!t&&!i)return!1;for(var a in e);return a===void 0||n.call(e,a)},c=function(e,t){i&&t.name===`__proto__`?i(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},l=function(e,t){if(t===`__proto__`){if(!n.call(e,t))return;if(a)return a(e,t).value}return e[t]};t.exports=function e(){var t,n,r,i,a,u,d=arguments[0],f=1,p=arguments.length,m=!1;for(typeof d==`boolean`&&(m=d,d=arguments[1]||{},f=2),(d==null||typeof d!=`object`&&typeof d!=`function`)&&(d={});ft.length,o;r&&t.push(i);try{o=e.apply(this,t)}catch(e){let t=e;if(r&&n)throw t;return i(t)}r||(o&&o.then&&typeof o.then==`function`?o.then(a,i):o instanceof Error?i(o):a(o))}function i(e,...r){n||(n=!0,t(e,...r))}function a(e){i(null,e)}}var ON={basename:kN,dirname:AN,extname:jN,join:MN,sep:`/`};function kN(e,t){if(t!==void 0&&typeof t!=`string`)throw TypeError(`"ext" argument must be a string`);FN(e);let n=0,r=-1,i=e.length,a;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else r<0&&(a=!0,r=i+1);return r<0?``:e.slice(n,r)}if(t===e)return``;let o=-1,s=t.length-1;for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else o<0&&(a=!0,o=i+1),s>-1&&(e.codePointAt(i)===t.codePointAt(s--)?s<0&&(r=i):(s=-1,r=o));return n===r?r=o:r<0&&(r=e.length),e.slice(n,r)}function AN(e){if(FN(e),e.length===0)return`.`;let t=-1,n=e.length,r;for(;--n;)if(e.codePointAt(n)===47){if(r){t=n;break}}else r||=!0;return t<0?e.codePointAt(0)===47?`/`:`.`:t===1&&e.codePointAt(0)===47?`//`:e.slice(0,t)}function jN(e){FN(e);let t=e.length,n=-1,r=0,i=-1,a=0,o;for(;t--;){let s=e.codePointAt(t);if(s===47){if(o){r=t+1;break}continue}n<0&&(o=!0,n=t+1),s===46?i<0?i=t:a!==1&&(a=1):i>-1&&(a=-1)}return i<0||n<0||a===0||a===1&&i===n-1&&i===r+1?``:e.slice(i,n)}function MN(...e){let t=-1,n;for(;++t0&&e.codePointAt(e.length-1)===47&&(n+=`/`),t?`/`+n:n}function PN(e,t){let n=``,r=0,i=-1,a=0,o=-1,s,c;for(;++o<=e.length;){if(o2){if(c=n.lastIndexOf(`/`),c!==n.length-1){c<0?(n=``,r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf(`/`)),i=o,a=0;continue}}else if(n.length>0){n=``,r=0,i=o,a=0;continue}}t&&(n=n.length>0?n+`/..`:`..`,r=2)}else n.length>0?n+=`/`+e.slice(i+1,o):n=e.slice(i+1,o),r=o-i-1}i=o,a=0}else s===46&&a>-1?a++:a=-1}return n}function FN(e){if(typeof e!=`string`)throw TypeError(`Path must be a string. Received `+JSON.stringify(e))}var IN={cwd:LN};function LN(){return`/`}function RN(e){return!!(typeof e==`object`&&e&&`href`in e&&e.href&&`protocol`in e&&e.protocol&&e.auth===void 0)}function zN(e){if(typeof e==`string`)e=new URL(e);else if(!RN(e)){let t=TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code=`ERR_INVALID_ARG_TYPE`,t}if(e.protocol!==`file:`){let e=TypeError(`The URL must be of scheme file`);throw e.code=`ERR_INVALID_URL_SCHEME`,e}return BN(e)}function BN(e){if(e.hostname!==``){let e=TypeError(`File URL host must be "localhost" or empty on darwin`);throw e.code=`ERR_INVALID_FILE_URL_HOST`,e}let t=e.pathname,n=-1;for(;++n0){let[r,...a]=t,o=n[i][1];TN(o)&&TN(r)&&(r=(0,JN.default)(!0,o,r)),n[i]=[e,r,...a]}}}}().freeze();function ZN(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `parser`")}function QN(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `compiler`")}function $N(e,t){if(t)throw Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function eP(e){if(!TN(e)||typeof e.type!=`string`)throw TypeError("Expected node, got `"+e+"`")}function tP(e,t,n){if(!n)throw Error("`"+e+"` finished async. Use `"+t+"` instead")}function nP(e){return rP(e)?e:new HN(e)}function rP(e){return!!(e&&typeof e==`object`&&`message`in e&&`messages`in e)}function iP(e){return typeof e==`string`||aP(e)}function aP(e){return!!(e&&typeof e==`object`&&`byteLength`in e&&`byteOffset`in e)}var oP=[],sP={allowDangerousHtml:!0},cP=/^(https?|ircs?|mailto|xmpp)$/i,lP=[{from:`astPlugins`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowDangerousHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowNode`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowElement`},{from:`allowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowedElements`},{from:`className`,id:`remove-classname`},{from:`disallowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`disallowedElements`},{from:`escapeHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`includeElementIndex`,id:`#remove-includeelementindex`},{from:`includeNodeIndex`,id:`change-includenodeindex-to-includeelementindex`},{from:`linkTarget`,id:`remove-linktarget`},{from:`plugins`,id:`change-plugins-to-remarkplugins`,to:`remarkPlugins`},{from:`rawSourcePos`,id:`#remove-rawsourcepos`},{from:`renderers`,id:`change-renderers-to-components`,to:`components`},{from:`source`,id:`change-source-to-children`,to:`children`},{from:`sourcePos`,id:`#remove-sourcepos`},{from:`transformImageUri`,id:`#add-urltransform`,to:`urlTransform`},{from:`transformLinkUri`,id:`#add-urltransform`,to:`urlTransform`}];function uP(e){let t=dP(e),n=fP(e);return pP(t.runSync(t.parse(n),n),e)}function dP(e){let t=e.rehypePlugins||oP,n=e.remarkPlugins||oP,r=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...sP}:sP;return XN().use(sM).use(n).use(SN,r).use(t)}function fP(e){let t=e.children||``,n=new HN;return typeof t==`string`?n.value=t:``+t,n}function pP(e,t){let n=t.allowedElements,r=t.allowElement,i=t.components,a=t.disallowedElements,o=t.skipHtml,s=t.unwrapDisallowed,c=t.urlTransform||mP;for(let e of lP)Object.hasOwn(t,e.from)&&``+e.from+(e.to?"use `"+e.to+"` instead":`remove it`)+e.id;return fN(e,l),LO(e,{Fragment:K.Fragment,components:i,ignoreInvalidStyle:!0,jsx:K.jsx,jsxs:K.jsxs,passKeys:!0,passNode:!0});function l(e,t,i){if(e.type===`raw`&&i&&typeof t==`number`)return o?i.children.splice(t,1):i.children[t]={type:`text`,value:e.value},t;if(e.type===`element`){let t;for(t in ak)if(Object.hasOwn(ak,t)&&Object.hasOwn(e.properties,t)){let n=e.properties[t],r=ak[t];(r===null||r.includes(e.tagName))&&(e.properties[t]=c(String(n||``),t,e))}}if(e.type===`element`){let o=n?!n.includes(e.tagName):a?a.includes(e.tagName):!1;if(!o&&r&&typeof t==`number`&&(o=!r(e,t,i)),o&&i&&typeof t==`number`)return s&&e.children?i.children.splice(t,1,...e.children):i.children.splice(t,1),t}}}function mP(e){let t=e.indexOf(`:`),n=e.indexOf(`?`),r=e.indexOf(`#`),i=e.indexOf(`/`);return t===-1||i!==-1&&t>i||n!==-1&&t>n||r!==-1&&t>r||cP.test(e.slice(0,t))?e:``}function hP(e,t){let n=String(e);if(typeof t!=`string`)throw TypeError(`Expected character`);let r=0,i=n.indexOf(t);for(;i!==-1;)r++,i=n.indexOf(t,i+t.length);return r}function gP(e){if(typeof e!=`string`)throw TypeError(`Expected a string`);return e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`)}function _P(e,t,n){let r=tN((n||{}).ignore||[]),i=vP(t),a=-1;for(;++a0?{type:`text`,value:a}:void 0),a===!1?r.lastIndex=n+1:(s!==n&&u.push({type:`text`,value:e.value.slice(s,n)}),Array.isArray(a)?u.push(...a):a&&u.push(a),s=n+d[0].length,l=!0),!r.global)break;d=r.exec(e.value)}return l?(s?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let n=t[0],r=n.indexOf(`)`),i=hP(e,`(`),a=hP(e,`)`);for(;r!==-1&&i>a;)e+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(`)`),a++;return[e,n]}function IP(e,t){let n=e.input.charCodeAt(e.index-1);return(e.index===0||Mk(n)||jk(n))&&(!t||n!==47)}KP.peek=GP;function LP(){this.buffer()}function RP(e){this.enter({type:`footnoteReference`,identifier:``,label:``},e)}function zP(){this.buffer()}function BP(e){this.enter({type:`footnoteDefinition`,identifier:``,label:``,children:[]},e)}function VP(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=bk(this.sliceSerialize(e)).toLowerCase(),n.label=t}function HP(e){this.exit(e)}function UP(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=bk(this.sliceSerialize(e)).toLowerCase(),n.label=t}function WP(e){this.exit(e)}function GP(){return`[`}function KP(e,t,n,r){let i=n.createTracker(r),a=i.move(`[^`),o=n.enter(`footnoteReference`),s=n.enter(`reference`);return a+=i.move(n.safe(n.associationId(e),{after:`]`,before:a})),s(),o(),a+=i.move(`]`),a}function qP(){return{enter:{gfmFootnoteCallString:LP,gfmFootnoteCall:RP,gfmFootnoteDefinitionLabelString:zP,gfmFootnoteDefinition:BP},exit:{gfmFootnoteCallString:VP,gfmFootnoteCall:HP,gfmFootnoteDefinitionLabelString:UP,gfmFootnoteDefinition:WP}}}function JP(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:n,footnoteReference:KP},unsafe:[{character:`[`,inConstruct:[`label`,`phrasing`,`reference`]}]};function n(e,n,r,i){let a=r.createTracker(i),o=a.move(`[^`),s=r.enter(`footnoteDefinition`),c=r.enter(`label`);return o+=a.move(r.safe(r.associationId(e),{before:o,after:`]`})),c(),o+=a.move(`]:`),e.children&&e.children.length>0&&(a.shift(4),o+=a.move((t?` -`:` `)+r.indentLines(r.containerFlow(e,a.current()),t?XP:YP))),s(),o}}function YP(e,t,n){return t===0?e:XP(e,t,n)}function XP(e,t,n){return(n?``:` `)+e}var ZP=[`autolink`,`destinationLiteral`,`destinationRaw`,`reference`,`titleQuote`,`titleApostrophe`];nF.peek=rF;function QP(){return{canContainEols:[`delete`],enter:{strikethrough:eF},exit:{strikethrough:tF}}}function $P(){return{unsafe:[{character:`~`,inConstruct:`phrasing`,notInConstruct:ZP}],handlers:{delete:nF}}}function eF(e){this.enter({type:`delete`,children:[]},e)}function tF(e){this.exit(e)}function nF(e,t,n,r){let i=n.createTracker(r),a=n.enter(`strikethrough`),o=i.move(`~~`);return o+=n.containerPhrasing(e,{...i.current(),before:o,after:`~`}),o+=i.move(`~~`),a(),o}function rF(){return`~`}function iF(e){return e.length}function aF(e,t){let n=t||{},r=(n.align||[]).concat(),i=n.stringLength||iF,a=[],o=[],s=[],c=[],l=0,u=-1;for(;++ul&&(l=e[u].length);++ac[a])&&(c[a]=e)}t.push(o)}o[u]=t,s[u]=r}let d=-1;if(typeof r==`object`&&`length`in r)for(;++dc[d]&&(c[d]=i),p[d]=i),f[d]=o}o.splice(1,0,f),s.splice(1,0,p),u=-1;let m=[];for(;++u `),a.shift(2);let o=n.indentLines(n.containerFlow(e,a.current()),lF);return i(),o}function lF(e,t,n){return`>`+(n?``:` `)+e}function uF(e,t){return dF(e,t.inConstruct,!0)&&!dF(e,t.notInConstruct,!1)}function dF(e,t,n){if(typeof t==`string`&&(t=[t]),!t||t.length===0)return n;let r=-1;for(;++ro&&(o=a):a=1,i=r+t.length,r=n.indexOf(t,i);return o}function mF(e,t){return!!(t.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function hF(e){let t=e.options.fence||"`";if(t!=="`"&&t!==`~`)throw Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function gF(e,t,n,r){let i=hF(n),a=e.value||``,o=i==="`"?`GraveAccent`:`Tilde`;if(mF(e,n)){let e=n.enter(`codeIndented`),t=n.indentLines(a,_F);return e(),t}let s=n.createTracker(r),c=i.repeat(Math.max(pF(a,i)+1,3)),l=n.enter(`codeFenced`),u=s.move(c);if(e.lang){let t=n.enter(`codeFencedLang${o}`);u+=s.move(n.safe(e.lang,{before:u,after:` `,encode:["`"],...s.current()})),t()}if(e.lang&&e.meta){let t=n.enter(`codeFencedMeta${o}`);u+=s.move(` `),u+=s.move(n.safe(e.meta,{before:u,after:` -`,encode:["`"],...s.current()})),t()}return u+=s.move(` -`),a&&(u+=s.move(a+` -`)),u+=s.move(c),l(),u}function _F(e,t,n){return(n?``:` `)+e}function vF(e){let t=e.options.quote||`"`;if(t!==`"`&&t!==`'`)throw Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function yF(e,t,n,r){let i=vF(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.enter(`definition`),s=n.enter(`label`),c=n.createTracker(r),l=c.move(`[`);return l+=c.move(n.safe(n.associationId(e),{before:l,after:`]`,...c.current()})),l+=c.move(`]: `),s(),!e.url||/[\0- \u007F]/.test(e.url)?(s=n.enter(`destinationLiteral`),l+=c.move(`<`),l+=c.move(n.safe(e.url,{before:l,after:`>`,...c.current()})),l+=c.move(`>`)):(s=n.enter(`destinationRaw`),l+=c.move(n.safe(e.url,{before:l,after:e.title?` `:` -`,...c.current()}))),s(),e.title&&(s=n.enter(`title${a}`),l+=c.move(` `+i),l+=c.move(n.safe(e.title,{before:l,after:i,...c.current()})),l+=c.move(i),s()),o(),l}function bF(e){let t=e.options.emphasis||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}function xF(e){return`&#x`+e.toString(16).toUpperCase()+`;`}function SF(e,t,n){let r=Hk(e),i=Hk(t);return r===void 0?i===void 0?n===`_`?{inside:!0,outside:!0}:{inside:!1,outside:!1}:i===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:r===1?i===void 0?{inside:!1,outside:!1}:i===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:i===void 0?{inside:!1,outside:!1}:i===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}CF.peek=wF;function CF(e,t,n,r){let i=bF(n),a=n.enter(`emphasis`),o=n.createTracker(r),s=o.move(i),c=o.move(n.containerPhrasing(e,{after:i,before:s,...o.current()})),l=c.charCodeAt(0),u=SF(r.before.charCodeAt(r.before.length-1),l,i);u.inside&&(c=xF(l)+c.slice(1));let d=c.charCodeAt(c.length-1),f=SF(r.after.charCodeAt(0),d,i);f.inside&&(c=c.slice(0,-1)+xF(d));let p=o.move(i);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},s+c+p}function wF(e,t,n){return n.options.emphasis||`*`}function TF(e,t){let n=!1;return fN(e,function(e){if(`value`in e&&/\r?\n|\r/.test(e.value)||e.type===`break`)return n=!0,!1}),!!((!e.depth||e.depth<3)&&sk(e)&&(t.options.setext||n))}function EF(e,t,n,r){let i=Math.max(Math.min(6,e.depth||1),1),a=n.createTracker(r);if(TF(e,n)){let t=n.enter(`headingSetext`),r=n.enter(`phrasing`),o=n.containerPhrasing(e,{...a.current(),before:` -`,after:` -`});return r(),t(),o+` -`+(i===1?`=`:`-`).repeat(o.length-(Math.max(o.lastIndexOf(`\r`),o.lastIndexOf(` -`))+1))}let o=`#`.repeat(i),s=n.enter(`headingAtx`),c=n.enter(`phrasing`);a.move(o+` `);let l=n.containerPhrasing(e,{before:`# `,after:` -`,...a.current()});return/^[\t ]/.test(l)&&(l=xF(l.charCodeAt(0))+l.slice(1)),l=l?o+` `+l:o,n.options.closeAtx&&(l+=` `+o),c(),s(),l}DF.peek=OF;function DF(e){return e.value||``}function OF(){return`<`}kF.peek=AF;function kF(e,t,n,r){let i=vF(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.enter(`image`),s=n.enter(`label`),c=n.createTracker(r),l=c.move(`![`);return l+=c.move(n.safe(e.alt,{before:l,after:`]`,...c.current()})),l+=c.move(`](`),s(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(s=n.enter(`destinationLiteral`),l+=c.move(`<`),l+=c.move(n.safe(e.url,{before:l,after:`>`,...c.current()})),l+=c.move(`>`)):(s=n.enter(`destinationRaw`),l+=c.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...c.current()}))),s(),e.title&&(s=n.enter(`title${a}`),l+=c.move(` `+i),l+=c.move(n.safe(e.title,{before:l,after:i,...c.current()})),l+=c.move(i),s()),l+=c.move(`)`),o(),l}function AF(){return`!`}jF.peek=MF;function jF(e,t,n,r){let i=e.referenceType,a=n.enter(`imageReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`![`),l=n.safe(e.alt,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=[],o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function MF(){return`!`}NF.peek=PF;function NF(e,t,n){let r=e.value||``,i="`",a=-1;for(;RegExp("(^|[^`])"+i+"([^`]|$)").test(r);)i+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=` `+r+` `);++a\u007F]/.test(e.url))}IF.peek=LF;function IF(e,t,n,r){let i=vF(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.createTracker(r),s,c;if(FF(e,n)){let t=n.stack;n.stack=[],s=n.enter(`autolink`);let r=o.move(`<`);return r+=o.move(n.containerPhrasing(e,{before:r,after:`>`,...o.current()})),r+=o.move(`>`),s(),n.stack=t,r}s=n.enter(`link`),c=n.enter(`label`);let l=o.move(`[`);return l+=o.move(n.containerPhrasing(e,{before:l,after:`](`,...o.current()})),l+=o.move(`](`),c(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(c=n.enter(`destinationLiteral`),l+=o.move(`<`),l+=o.move(n.safe(e.url,{before:l,after:`>`,...o.current()})),l+=o.move(`>`)):(c=n.enter(`destinationRaw`),l+=o.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...o.current()}))),c(),e.title&&(c=n.enter(`title${a}`),l+=o.move(` `+i),l+=o.move(n.safe(e.title,{before:l,after:i,...o.current()})),l+=o.move(i),c()),l+=o.move(`)`),s(),l}function LF(e,t,n){return FF(e,n)?`<`:`[`}RF.peek=zF;function RF(e,t,n,r){let i=e.referenceType,a=n.enter(`linkReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`[`),l=n.containerPhrasing(e,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=[],o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function zF(){return`[`}function BF(e){let t=e.options.bullet||`*`;if(t!==`*`&&t!==`+`&&t!==`-`)throw Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function VF(e){let t=BF(e),n=e.options.bulletOther;if(!n)return t===`*`?`-`:`*`;if(n!==`*`&&n!==`+`&&n!==`-`)throw Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===t)throw Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+n+"`) to be different");return n}function HF(e){let t=e.options.bulletOrdered||`.`;if(t!==`.`&&t!==`)`)throw Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function UF(e){let t=e.options.rule||`*`;if(t!==`*`&&t!==`-`&&t!==`_`)throw Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function WF(e,t,n,r){let i=n.enter(`list`),a=n.bulletCurrent,o=e.ordered?HF(n):BF(n),s=e.ordered?o===`.`?`)`:`.`:VF(n),c=t&&n.bulletLastUsed?o===n.bulletLastUsed:!1;if(!e.ordered){let t=e.children?e.children[0]:void 0;if((o===`*`||o===`-`)&&t&&(!t.children||!t.children[0])&&n.stack[n.stack.length-1]===`list`&&n.stack[n.stack.length-2]===`listItem`&&n.stack[n.stack.length-3]===`list`&&n.stack[n.stack.length-4]===`listItem`&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),UF(n)===o&&t){let t=-1;for(;++t-1?t.start:1)+(n.options.incrementListMarker===!1?0:t.children.indexOf(e))+a);let o=a.length+1;(i===`tab`||i===`mixed`&&(t&&t.type===`list`&&t.spread||e.spread))&&(o=Math.ceil(o/4)*4);let s=n.createTracker(r);s.move(a+` `.repeat(o-a.length)),s.shift(o);let c=n.enter(`listItem`),l=n.indentLines(n.containerFlow(e,s.current()),u);return c(),l;function u(e,t,n){return t?(n?``:` `.repeat(o))+e:(n?a:a+` `.repeat(o-a.length))+e}}function qF(e,t,n,r){let i=n.enter(`paragraph`),a=n.enter(`phrasing`),o=n.containerPhrasing(e,r);return a(),i(),o}var JF=tN([`break`,`delete`,`emphasis`,`footnote`,`footnoteReference`,`image`,`imageReference`,`inlineCode`,`inlineMath`,`link`,`linkReference`,`mdxJsxTextElement`,`mdxTextExpression`,`strong`,`text`,`textDirective`]);function YF(e,t,n,r){return(e.children.some(function(e){return JF(e)})?n.containerPhrasing:n.containerFlow).call(n,e,r)}function XF(e){let t=e.options.strong||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}ZF.peek=QF;function ZF(e,t,n,r){let i=XF(n),a=n.enter(`strong`),o=n.createTracker(r),s=o.move(i+i),c=o.move(n.containerPhrasing(e,{after:i,before:s,...o.current()})),l=c.charCodeAt(0),u=SF(r.before.charCodeAt(r.before.length-1),l,i);u.inside&&(c=xF(l)+c.slice(1));let d=c.charCodeAt(c.length-1),f=SF(r.after.charCodeAt(0),d,i);f.inside&&(c=c.slice(0,-1)+xF(d));let p=o.move(i+i);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},s+c+p}function QF(e,t,n){return n.options.strong||`*`}function $F(e,t,n,r){return n.safe(e.value,r)}function eI(e){let t=e.options.ruleRepetition||3;if(t<3)throw Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function tI(e,t,n){let r=(UF(n)+(n.options.ruleSpaces?` `:``)).repeat(eI(n));return n.options.ruleSpaces?r.slice(0,-1):r}var nI={blockquote:cF,break:fF,code:gF,definition:yF,emphasis:CF,hardBreak:fF,heading:EF,html:DF,image:kF,imageReference:jF,inlineCode:NF,link:IF,linkReference:RF,list:WF,listItem:KF,paragraph:qF,root:YF,strong:ZF,text:$F,thematicBreak:tI};function rI(){return{enter:{table:iI,tableData:cI,tableHeader:cI,tableRow:oI},exit:{codeText:lI,table:aI,tableData:sI,tableHeader:sI,tableRow:sI}}}function iI(e){let t=e._align;this.enter({type:`table`,align:t.map(function(e){return e===`none`?null:e}),children:[]},e),this.data.inTable=!0}function aI(e){this.exit(e),this.data.inTable=void 0}function oI(e){this.enter({type:`tableRow`,children:[]},e)}function sI(e){this.exit(e)}function cI(e){this.enter({type:`tableCell`,children:[]},e)}function lI(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,uI));let n=this.stack[this.stack.length-1];n.type,n.value=t,this.exit(e)}function uI(e,t){return t===`|`?t:e}function dI(e){let t=e||{},n=t.tableCellPadding,r=t.tablePipeAlign,i=t.stringLength,a=n?` `:`|`;return{unsafe:[{character:`\r`,inConstruct:`tableCell`},{character:` -`,inConstruct:`tableCell`},{atBreak:!0,character:`|`,after:`[ :-]`},{character:`|`,inConstruct:`tableCell`},{atBreak:!0,character:`:`,after:`-`},{atBreak:!0,character:`-`,after:`[:|-]`}],handlers:{inlineCode:f,table:o,tableCell:c,tableRow:s}};function o(e,t,n,r){return l(u(e,n,r),e.align)}function s(e,t,n,r){let i=l([d(e,n,r)]);return i.slice(0,i.indexOf(` -`))}function c(e,t,n,r){let i=n.enter(`tableCell`),o=n.enter(`phrasing`),s=n.containerPhrasing(e,{...r,before:a,after:a});return o(),i(),s}function l(e,t){return aF(e,{align:t,alignDelimiters:r,padding:n,stringLength:i})}function u(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`table`);for(;++i0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}var UI={tokenize:ZI,partial:!0};function WI(){return{document:{91:{name:`gfmFootnoteDefinition`,tokenize:JI,continuation:{tokenize:YI},exit:XI}},text:{91:{name:`gfmFootnoteCall`,tokenize:qI},93:{name:`gfmPotentialFootnoteCall`,add:`after`,tokenize:GI,resolveTo:KI}}}}function GI(e,t,n){let r=this,i=r.events.length,a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),o;for(;i--;){let e=r.events[i][1];if(e.type===`labelImage`){o=e;break}if(e.type===`gfmFootnoteCall`||e.type===`labelLink`||e.type===`label`||e.type===`image`||e.type===`link`)break}return s;function s(i){if(!o||!o._balanced)return n(i);let s=bk(r.sliceSerialize({start:o.end,end:r.now()}));return s.codePointAt(0)!==94||!a.includes(s.slice(1))?n(i):(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(i),e.exit(`gfmFootnoteCallLabelMarker`),t(i))}}function KI(e,t){let n=e.length;for(;n--;)if(e[n][1].type===`labelImage`&&e[n][0]===`enter`){e[n][1];break}e[n+1][1].type=`data`,e[n+3][1].type=`gfmFootnoteCallLabelMarker`;let r={type:`gfmFootnoteCall`,start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},i={type:`gfmFootnoteCallMarker`,start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;let a={type:`gfmFootnoteCallString`,start:Object.assign({},i.end),end:Object.assign({},e[e.length-1][1].start)},o={type:`chunkString`,contentType:`string`,start:Object.assign({},a.start),end:Object.assign({},a.end)},s=[e[n+1],e[n+2],[`enter`,r,t],e[n+3],e[n+4],[`enter`,i,t],[`exit`,i,t],[`enter`,a,t],[`enter`,o,t],[`exit`,o,t],[`exit`,a,t],e[e.length-2],e[e.length-1],[`exit`,r,t]];return e.splice(n,e.length-n+1,...s),e}function qI(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a=0,o;return s;function s(t){return e.enter(`gfmFootnoteCall`),e.enter(`gfmFootnoteCallLabelMarker`),e.consume(t),e.exit(`gfmFootnoteCallLabelMarker`),c}function c(t){return t===94?(e.enter(`gfmFootnoteCallMarker`),e.consume(t),e.exit(`gfmFootnoteCallMarker`),e.enter(`gfmFootnoteCallString`),e.enter(`chunkString`).contentType=`string`,l):n(t)}function l(s){if(a>999||s===93&&!o||s===null||s===91||kk(s))return n(s);if(s===93){e.exit(`chunkString`);let a=e.exit(`gfmFootnoteCallString`);return i.includes(bk(r.sliceSerialize(a)))?(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(s),e.exit(`gfmFootnoteCallLabelMarker`),e.exit(`gfmFootnoteCall`),t):n(s)}return kk(s)||(o=!0),a++,e.consume(s),s===92?u:l}function u(t){return t===91||t===92||t===93?(e.consume(t),a++,l):l(t)}}function JI(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a,o=0,s;return c;function c(t){return e.enter(`gfmFootnoteDefinition`)._container=!0,e.enter(`gfmFootnoteDefinitionLabel`),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),l}function l(t){return t===94?(e.enter(`gfmFootnoteDefinitionMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionMarker`),e.enter(`gfmFootnoteDefinitionLabelString`),e.enter(`chunkString`).contentType=`string`,u):n(t)}function u(t){if(o>999||t===93&&!s||t===null||t===91||kk(t))return n(t);if(t===93){e.exit(`chunkString`);let n=e.exit(`gfmFootnoteDefinitionLabelString`);return a=bk(r.sliceSerialize(n)),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),e.exit(`gfmFootnoteDefinitionLabel`),f}return kk(t)||(s=!0),o++,e.consume(t),t===92?d:u}function d(t){return t===91||t===92||t===93?(e.consume(t),o++,u):u(t)}function f(t){return t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),i.includes(a)||i.push(a),Fk(e,p,`gfmFootnoteDefinitionWhitespace`)):n(t)}function p(e){return t(e)}}function YI(e,t,n){return e.check(Xk,t,e.attempt(UI,t,n))}function XI(e){e.exit(`gfmFootnoteDefinition`)}function ZI(e,t,n){let r=this;return Fk(e,i,`gfmFootnoteDefinitionIndent`,5);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`gfmFootnoteDefinitionIndent`&&i[2].sliceSerialize(i[1],!0).length===4?t(e):n(e)}}function QI(e){let t=(e||{}).singleTilde,n={name:`strikethrough`,tokenize:i,resolveAll:r};return t??=!0,{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function r(e,t){let n=-1;for(;++n1?r(a):(e.consume(a),o++,c);if(o<2&&!t)return r(a);let l=e.exit(`strikethroughSequenceTemporary`),u=Hk(a);return l._open=!u||u===2&&!!s,l._close=!s||s===2&&!!u,n(a)}}}var $I=class{constructor(){this.map=[]}add(e,t,n){eL(this,e,t,n)}consume(e){if(this.map.sort(function(e,t){return e[0]-t[0]}),this.map.length===0)return;let t=this.map.length,n=[];for(;t>0;)--t,n.push(e.slice(this.map[t][0]+this.map[t][1]),this.map[t][2]),e.length=this.map[t][0];n.push(e.slice()),e.length=0;let r=n.pop();for(;r;){for(let t of r)e.push(t);r=n.pop()}this.map.length=0}};function eL(e,t,n,r){let i=0;if(n!==0||r.length!==0){for(;i-1;){let e=r.events[t][1].type;if(e===`lineEnding`||e===`linePrefix`)t--;else break}let i=t>-1?r.events[t][1].type:null,a=i===`tableHead`||i===`tableRow`?S:c;return a===S&&r.parser.lazy[r.now().line]?n(e):a(e)}function c(t){return e.enter(`tableHead`),e.enter(`tableRow`),l(t)}function l(e){return e===124?u(e):(o=!0,a+=1,u(e))}function u(t){return t===null?n(t):Ok(t)?a>1?(a=0,r.interrupt=!0,e.exit(`tableRow`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),p):n(t):Ak(t)?Fk(e,u,`whitespace`)(t):(a+=1,o&&(o=!1,i+=1),t===124?(e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),o=!0,u):(e.enter(`data`),d(t)))}function d(t){return t===null||t===124||kk(t)?(e.exit(`data`),u(t)):(e.consume(t),t===92?f:d)}function f(t){return t===92||t===124?(e.consume(t),d):d(t)}function p(t){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(t):(e.enter(`tableDelimiterRow`),o=!1,Ak(t)?Fk(e,m,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):m(t))}function m(t){return t===45||t===58?g(t):t===124?(o=!0,e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),h):x(t)}function h(t){return Ak(t)?Fk(e,g,`whitespace`)(t):g(t)}function g(t){return t===58?(a+=1,o=!0,e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),_):t===45?(a+=1,_(t)):t===null||Ok(t)?b(t):x(t)}function _(t){return t===45?(e.enter(`tableDelimiterFiller`),v(t)):x(t)}function v(t){return t===45?(e.consume(t),v):t===58?(o=!0,e.exit(`tableDelimiterFiller`),e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),y):(e.exit(`tableDelimiterFiller`),y(t))}function y(t){return Ak(t)?Fk(e,b,`whitespace`)(t):b(t)}function b(n){return n===124?m(n):n===null||Ok(n)?!o||i!==a?x(n):(e.exit(`tableDelimiterRow`),e.exit(`tableHead`),t(n)):x(n)}function x(e){return n(e)}function S(t){return e.enter(`tableRow`),C(t)}function C(n){return n===124?(e.enter(`tableCellDivider`),e.consume(n),e.exit(`tableCellDivider`),C):n===null||Ok(n)?(e.exit(`tableRow`),t(n)):Ak(n)?Fk(e,C,`whitespace`)(n):(e.enter(`data`),w(n))}function w(t){return t===null||t===124||kk(t)?(e.exit(`data`),C(t)):(e.consume(t),t===92?T:w)}function T(t){return t===92||t===124?(e.consume(t),w):w(t)}}function iL(e,t){let n=-1,r=!0,i=0,a=[0,0,0,0],o=[0,0,0,0],s=!1,c=0,l,u,d,f=new $I;for(;++nn[2]+1){let t=n[2]+1,r=n[3]-n[2]-1;e.add(t,r,[])}}e.add(n[3]+1,0,[[`exit`,o,t]])}return i!==void 0&&(a.end=Object.assign({},sL(t.events,i)),e.add(i,0,[[`exit`,a,t]]),a=void 0),a}function oL(e,t,n,r,i){let a=[],o=sL(t.events,n);i&&(i.end=Object.assign({},o),a.push([`exit`,i,t])),r.end=Object.assign({},o),a.push([`exit`,r,t]),e.add(n+1,0,a)}function sL(e,t){let n=e[t],r=n[0]===`enter`?`start`:`end`;return n[1][r]}var cL={name:`tasklistCheck`,tokenize:uL};function lL(){return{text:{91:cL}}}function uL(e,t,n){let r=this;return i;function i(t){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(t):(e.enter(`taskListCheck`),e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),a)}function a(t){return kk(t)?(e.enter(`taskListCheckValueUnchecked`),e.consume(t),e.exit(`taskListCheckValueUnchecked`),o):t===88||t===120?(e.enter(`taskListCheckValueChecked`),e.consume(t),e.exit(`taskListCheckValueChecked`),o):n(t)}function o(t){return t===93?(e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),e.exit(`taskListCheck`),s):n(t)}function s(r){return Ok(r)?t(r):Ak(r)?e.check({tokenize:dL},t,n)(r):n(r)}}function dL(e,t,n){return Fk(e,r,`whitespace`);function r(e){return e===null?n(e):t(e)}}function fL(e){return gk([OI(),WI(),QI(e),nL(),lL()])}var pL={};function mL(e){let t=this,n=e||pL,r=t.data(),i=r.micromarkExtensions||=[],a=r.fromMarkdownExtensions||=[],o=r.toMarkdownExtensions||=[];i.push(fL(n)),a.push(_I()),o.push(vI(n))}function hL(e){let t=e.match(/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/);return t?{frontmatter:t[1].trim(),markdown:e.slice(t[0].length)}:{frontmatter:``,markdown:e}}function gL({content:e}){let{frontmatter:t,markdown:n}=hL(e);return(0,K.jsxs)(`div`,{className:`markdown-preview-shell`,children:[t&&(0,K.jsxs)(`details`,{className:`markdown-frontmatter`,children:[(0,K.jsx)(`summary`,{children:`文档元数据`}),(0,K.jsx)(xb,{code:t,language:`yaml`,filename:`frontmatter.yaml`,showLineNumbers:!1,wrap:!0})]}),(0,K.jsx)(`article`,{className:`markdown-preview`,children:(0,K.jsx)(uP,{remarkPlugins:[mL],components:{pre:({children:e})=>(0,K.jsx)(K.Fragment,{children:e}),code:({className:e,children:t,...n})=>{let r=/language-([\w-]+)/.exec(e||``)?.[1];return r?(0,K.jsx)(xb,{code:String(t).replace(/\n$/,``),language:r,showLineNumbers:!1}):(0,K.jsx)(`code`,{className:e,...n,children:t})},table:({children:e,...t})=>(0,K.jsx)(`div`,{className:`markdown-table-scroll`,children:(0,K.jsx)(`table`,{...t,children:e})}),a:({children:e,...t})=>(0,K.jsx)(`a`,{...t,target:`_blank`,rel:`noreferrer noopener`,children:e})},children:n})})]})}function _L(e){let t=Number(e||0);return t<1024?`${t} B`:t<1048576?`${(t/1024).toFixed(1)} KiB`:`${(t/1024/1024).toFixed(1)} MiB`}async function vL(e,t){let n=await e.text().catch(()=>``);try{return JSON.parse(n)?.error?.message||`${t}(${e.status})`}catch{return`${t}(${e.status})`}}function yL(e){return{bash:`bash`,c:`c`,cpp:`cpp`,css:`css`,go:`go`,h:`c`,html:`markup`,java:`java`,js:`javascript`,json:`json`,jsx:`jsx`,md:`markdown`,mjs:`javascript`,py:`python`,rs:`rust`,sh:`bash`,toml:`toml`,ts:`typescript`,tsx:`tsx`,xml:`markup`,yaml:`yaml`,yml:`yaml`}[e.split(`.`).pop()?.toLowerCase()||``]||`text`}function bL(e){let t={name:``,path:``,directory:!0,children:[]};for(let n of e){let e=n.path.split(`/`).filter(Boolean),r=t;e.forEach((t,i)=>{let a=e.slice(0,i+1).join(`/`),o=ie.name===t&&e.directory===o);s||(s={name:t,path:a,directory:o,file:o?void 0:n,children:[]},r.children.push(s)),r=s})}let n=e=>{e.sort((e,t)=>Number(t.directory)-Number(e.directory)||e.name.localeCompare(t.name)),e.forEach(e=>n(e.children))};return n(t.children),t.children}function xL({files:e,selected:t,onSelect:n}){let r=(0,s.useMemo)(()=>bL(e),[e]),[i,a]=(0,s.useState)(new Set),o=(e,r=0)=>e.map(e=>{let s={"--skill-depth":r};if(e.directory){let t=i.has(e.path);return(0,K.jsxs)(`div`,{role:`none`,children:[(0,K.jsxs)(`button`,{className:`skill-tree-row directory`,type:`button`,role:`treeitem`,style:s,"aria-expanded":!t,onClick:()=>a(t=>{let n=new Set(t);return n.has(e.path)?n.delete(e.path):n.add(e.path),n}),children:[t?(0,K.jsx)(H,{size:13}):(0,K.jsx)(B,{size:13}),(0,K.jsx)(xe,{size:14}),(0,K.jsx)(`span`,{title:e.name,children:e.name})]}),!t&&(0,K.jsx)(`div`,{role:`group`,children:o(e.children,r+1)})]},`dir:${e.path}`)}let c=e.file?.kind===`script`?ve:ye;return(0,K.jsxs)(`button`,{className:`skill-tree-row file${t===e.path?` active`:``}`,type:`button`,role:`treeitem`,"aria-selected":t===e.path,style:s,onClick:()=>n(e.path),children:[(0,K.jsx)(`span`,{className:`skill-tree-spacer`}),(0,K.jsx)(c,{size:14}),(0,K.jsx)(`span`,{title:e.path,children:e.name})]},`file:${e.path}`)});return(0,K.jsx)(`div`,{className:`skill-file-tree`,role:`tree`,"aria-label":`Skill 文件树`,children:o(r)})}function SL({title:e,endpoint:t,onClose:n}){let[r,i]=(0,s.useState)([]),[a,o]=(0,s.useState)(``),[c,l]=(0,s.useState)(null),[u,d]=(0,s.useState)(!0),[f,p]=(0,s.useState)(!1),[m,h]=(0,s.useState)(``),[_,v]=(0,s.useState)(``),y=(0,s.useRef)(0);return(0,s.useEffect)(()=>{let e=new AbortController;return d(!0),h(``),i([]),o(``),l(null),g(t,{signal:e.signal}).then(async e=>{if(!e.ok)throw Error(await vL(e,`Skill 文件读取失败`));return e.json()}).then(e=>{let t=e.files||[];i(t),o(t.find(e=>e.path===`SKILL.md`)?.path||t[0]?.path||``)}).catch(e=>{e?.name!==`AbortError`&&h(e.message||`Skill 文件读取失败`)}).finally(()=>{e.signal.aborted||d(!1)}),()=>e.abort()},[t]),(0,s.useEffect)(()=>{if(!a){l(null),p(!1);return}let e=new AbortController,n=++y.current;return l(null),p(!0),v(``),g(`${t}?${new URLSearchParams({path:a})}`,{signal:e.signal}).then(async e=>{if(!e.ok)throw Error(await vL(e,`Skill 文件读取失败`));return e.json()}).then(e=>{y.current===n&&l(e)}).catch(e=>{e?.name!==`AbortError`&&y.current===n&&v(e.message||`Skill 文件读取失败`)}).finally(()=>{!e.signal.aborted&&y.current===n&&p(!1)}),()=>e.abort()},[t,a]),(0,K.jsx)(DD,{title:`${e} · 文件`,subtitle:`${r.length} 个文件;只读预览,不会执行脚本。`,wide:!0,onClose:n,children:(0,K.jsxs)(`div`,{className:`skill-preview-layout`,children:[(0,K.jsxs)(`aside`,{className:`skill-preview-sidebar`,children:[u&&(0,K.jsx)(`div`,{className:`skill-file-state`,children:`正在读取目录…`}),!u&&m&&(0,K.jsx)(OD,{kind:`error`,title:`无法读取 Skill 文件`,message:m}),!u&&!m&&r.length===0&&(0,K.jsx)(`div`,{className:`skill-file-state`,children:`Skill 中没有可预览的文件。`}),!u&&!m&&r.length>0&&(0,K.jsx)(xL,{files:r,selected:a,onSelect:o})]}),(0,K.jsxs)(`section`,{className:`skill-preview-pane`,"aria-live":`polite`,children:[(c||a)&&(0,K.jsxs)(`header`,{className:`skill-preview-header`,children:[(0,K.jsx)(`strong`,{title:c?.path||a,children:c?.path||a}),c&&(0,K.jsxs)(`span`,{children:[c.kind,` · `,_L(c.size||0)]})]}),(0,K.jsxs)(`div`,{className:`skill-preview-content`,children:[f&&(0,K.jsx)(`div`,{className:`skill-file-state`,children:`正在读取文件…`}),!f&&_&&(0,K.jsx)(OD,{kind:`error`,title:`无法预览文件`,message:_}),!f&&!_&&c?.kind===`markdown`&&(0,K.jsx)(gL,{content:c.content||``}),!f&&!_&&[`script`,`text`].includes(c?.kind||``)&&(0,K.jsx)(xb,{code:c?.content||``,language:yL(c?.path||a),filename:c?.path||a,showLineNumbers:!0}),!f&&!_&&c?.kind===`binary`&&(0,K.jsx)(`div`,{className:`skill-file-state`,children:`二进制文件不提供内容预览。`}),!f&&!_&&!c&&!a&&(0,K.jsx)(`div`,{className:`skill-file-state`,children:`选择一个文件查看内容。`})]}),c?.truncated&&(0,K.jsx)(`div`,{className:`skill-preview-truncated`,children:`文件较大,仅显示前 512 KiB。`})]})]})})}var CL=new Map([[`avif`,`image/avif`],[`bmp`,`image/bmp`],[`css`,`text/css`],[`csv`,`text/csv`],[`doc`,`application/msword`],[`docx`,`application/vnd.openxmlformats-officedocument.wordprocessingml.document`],[`gif`,`image/gif`],[`gz`,`application/gzip`],[`htm`,`text/html`],[`html`,`text/html`],[`ico`,`image/x-icon`],[`jpeg`,`image/jpeg`],[`jpg`,`image/jpeg`],[`js`,`application/javascript`],[`json`,`application/json`],[`md`,`text/markdown`],[`mjs`,`application/javascript`],[`mp3`,`audio/mpeg`],[`mp4`,`video/mp4`],[`ogg`,`audio/ogg`],[`pdf`,`application/pdf`],[`png`,`image/png`],[`ppt`,`application/powerpoint`],[`pptx`,`application/vnd.openxmlformats-officedocument.presentationml.presentation`],[`svg`,`image/svg+xml`],[`tif`,`image/tiff`],[`tiff`,`image/tiff`],[`txt`,`text/plain`],[`wasm`,`application/wasm`],[`wav`,`audio/x-wav`],[`weba`,`audio/webm`],[`webm`,`video/webm`],[`webp`,`image/webp`],[`xls`,`application/vnd.ms-excel`],[`xlsx`,`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`],[`xml`,`application/xml`],[`zip`,`application/zip`]]),wL=class extends Error{constructor(e){super(`DataTransferItem is not a file`),this.item=e,this.name=`UnexpectedObjectError`}};function TL(e,t,n){let r=e,{webkitRelativePath:i}=e,a=typeof t==`string`?t:typeof i==`string`&&i.length>0?i:`./${e.name}`;return typeof r.path!=`string`&&DL(r,`path`,a),n!==void 0&&Object.defineProperty(r,"handle",{value:n,writable:!1,configurable:!1,enumerable:!0}),DL(r,`relativePath`,a),r}function EL(e,t=CL){let{name:n}=e;if(n&&n.lastIndexOf(`.`)!==-1&&!e.type){let r=n.split(`.`).pop().toLowerCase(),i=t.get(r);i&&Object.defineProperty(e,"type",{value:i,writable:!1,configurable:!1,enumerable:!0})}return e}function DL(e,t,n){Object.defineProperty(e,t,{value:n,writable:!1,configurable:!1,enumerable:!0})}var OL=[`.DS_Store`,`Thumbs.db`];async function kL(e,{mimeTypes:t=CL}={}){return(await AL(e)).map(e=>e instanceof File?EL(e,t):e)}async function AL(e){return PL(e)&&jL(e.dataTransfer)?LL(e.dataTransfer,e.type):ML(e)?RL(e.clipboardData):NL(e)?FL(e):Array.isArray(e)&&e.every(e=>`getFile`in e&&typeof e.getFile==`function`)?IL(e):[]}function jL(e){return PL(e)}function ML(e){return PL(e)&&jL(e.clipboardData)}function NL(e){return PL(e)&&PL(e.target)}function PL(e){return typeof e==`object`&&!!e}function FL(e){return BL(e.target.files).map(e=>TL(e))}async function IL(e){return(await Promise.all(e.map(e=>e.getFile()))).map(e=>TL(e))}async function LL(e,t){let n=BL(e.items).filter(e=>e.kind===`file`);return t===`drop`?zL(HL(await Promise.all(n.map(VL)))):n}function RL(e){let t=BL(e.items).filter(e=>e.kind===`file`).map(e=>e.getAsFile()).filter(e=>e!==null);return zL((t.length>0?t:BL(e.files)).map(e=>TL(e)))}function zL(e){return e.filter(e=>OL.indexOf(e.name)===-1)}function BL(e){return e===null?[]:Array.from(e)}async function VL(e){if(typeof e.webkitGetAsEntry!=`function`)return UL(e);let t=e.webkitGetAsEntry();if(t?.isDirectory){let n=await WL(e);return n?.kind===`directory`?GL(n,`/${n.name}`):qL(t)}return UL(e,t)}function HL(e){let t=[];for(let n of e)Array.isArray(n)?t.push(...HL(n)):t.push(n);return t}async function UL(e,t){let n=e.getAsFile(),r=await WL(e);if(r!=null){let e=n??await r.getFile();return e.handle=r,TL(e)}if(!n)throw new wL(e);return TL(n,t?.fullPath??void 0)}async function WL(e){if(globalThis.isSecureContext&&typeof e.getAsFileSystemHandle==`function`)return e.getAsFileSystemHandle()}async function GL(e,t){let n=[];for await(let r of e.values()){let e=`${t}/${r.name}`;if(r.kind===`directory`)n.push(...await GL(r,e));else{let t=await r.getFile();n.push(TL(t,e,r))}}return n}async function KL(e){return e.isDirectory?qL(e):JL(e)}function qL(e){let t=e.createReader();return new Promise((e,n)=>{let r=[];function i(){t.readEntries(async t=>{if(t.length){let e=Promise.all(t.map(KL));r.push(e),i()}else try{e(await Promise.all(r))}catch(e){n(e)}},e=>{n(e)})}i()})}async function JL(e){return new Promise((t,n)=>{e.file(n=>{t(TL(n,e.fullPath))},e=>{n(e)})})}var YL=t(n((e=>{e.__esModule=!0,e.default=function(e,t){if(e&&t){var n=Array.isArray(t)?t:t.split(`,`);if(n.length===0)return!0;var r=e.name||``,i=(e.type||``).toLowerCase(),a=i.replace(/\/.*$/,``);return n.some(function(e){var t=e.trim().toLowerCase();return t.charAt(0)===`.`?r.toLowerCase().endsWith(t):t.endsWith(`/*`)?a===t.replace(/\/.*$/,``):i===t})}return!0}}))(),1),XL=typeof YL.default==`function`?YL.default:YL.default.default,ZL=`file-invalid-type`,QL=`file-too-large`,$L=`file-too-small`,eR=`too-many-files`;function tR(e=``){let t=e.split(`,`);return{code:ZL,message:`File type must be ${t.length>1?`one of ${t.join(`, `)}`:t[0]}`}}var nR=[`KB`,`MB`,`GB`,`TB`,`PB`];function rR(e){if(e<1024)return`${e} ${e===1?`byte`:`bytes`}`;let t=e/1024,n=0;for(;t>=1024&&nn)return[!1,iR(n)];if(e.sizen)return[!1,iR(n)]}return[!0,null]}function uR(e){return e!=null}function dR(e){return e!=null&&typeof e.then==`function`}function fR({files:e,accept:t,minSize:n,maxSize:r,multiple:i,maxFiles:a=0,validator:o,getErrorMessage:s}){let c=[],l=[],u=(e,t)=>s&&typeof File<`u`&&t instanceof File?{...e,message:s(e,t)}:e;e.forEach(e=>{let[i,a]=cR(e,t),[o,s]=lR(e,n,r);i&&o?c.push(e):l.push({file:e,errors:[a,s].filter(e=>e!=null).map(t=>u(t,e))})});let d=i?a>=1?a:1/0:1;return c.length>d&&c.slice(d).forEach(e=>{l.push({file:e,errors:[u(oR,e)]})}),l.length>0?{verdict:`reject`,rejections:l}:{verdict:o?`unknown`:`accept`,rejections:l}}function pR(e){return typeof e.isPropagationStopped==`function`?e.isPropagationStopped():e.cancelBubble!==void 0&&e.cancelBubble}function mR(e){let t=e.dataTransfer??e.clipboardData;return t?Array.prototype.some.call(t.types,e=>e===`Files`||e===`application/x-moz-file`)||Array.prototype.some.call(t.items??[],hR):!!e.target&&!!e.target.files}function hR(e){return typeof e==`object`&&!!e&&e.kind===`file`}function gR(e){e.preventDefault()}function _R(e){return e.indexOf(`MSIE`)!==-1||e.indexOf(`Trident/`)!==-1}function vR(e){return e.indexOf(`Edge/`)!==-1}function yR(e=window.navigator.userAgent){return _R(e)||vR(e)}function bR(...e){return(t,...n)=>e.some(e=>(!pR(t)&&e&&e(t,...n),pR(t)))}function xR(){return`showOpenFilePicker`in window}function SR(e){return Array.isArray(e)?e:typeof e==`string`?[e]:[]}function CR(e){if(uR(e))return Array.isArray(e)?e.filter(e=>uR(e)&&uR(e.accept)):[{accept:e}]}function wR(e){let t=[],n=Object.keys(e);for(let n of Object.values(e))for(let e of SR(n))t.includes(e)||t.push(e);return t.length>0?t.join(`, `):n.length>0?n.join(`, `):`Files`}function TR(e){let t=CR(e);if(!uR(t))return;let n={};for(let e of t)for(let[t,r]of Object.entries(e.accept)){let e=n[t]??(n[t]=[]);for(let t of SR(r))e.includes(t)||e.push(t)}return n}function ER(e){let t=CR(e);if(!uR(t))return;let n=t.map(e=>{let t=Object.entries(e.accept).filter(([e,t])=>{let n=!0;return jR(e)||(console.warn(`Skipped "${e}" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.`),n=!1),(!(Array.isArray(t)||typeof t==`string`)||!SR(t).every(NR))&&(console.warn(`Skipped "${e}" because an invalid file extension was provided.`),n=!1),n}).reduce((e,[t,n])=>(e[t]=SR(n),e),{});return{description:uR(e.description)&&e.description!==``?e.description:wR(t),accept:t}}).filter(e=>Object.keys(e.accept).length>0);return n.length>0?n:void 0}function DR(e,{omitWildcardMimeTypesWithExtensions:t=!1}={}){if(uR(e))return Object.entries(e).reduce((e,[n,r])=>{let i=SR(r);return t&&MR(n)&&i.some(NR)?e.push(...i):e.push(n,...i),e},[]).filter(e=>jR(e)||NR(e)).join(`,`)}function OR(e){return e instanceof DOMException&&(e.name===`AbortError`||e.code===e.ABORT_ERR)}function kR(e){return e instanceof DOMException&&(e.name===`SecurityError`||e.code===e.SECURITY_ERR)}function AR(e){return e instanceof DOMException&&e.name===`NotAllowedError`}function jR(e){return e===`audio/*`||e===`video/*`||e===`image/*`||e===`text/*`||e===`application/*`||/\w+\/[-+.\w]+/g.test(e)}function MR(e){return e.endsWith(`/*`)}function NR(e){return/^.*\.[\w]+$/.test(e)}var PR=(0,s.forwardRef)(({children:e,...t},n)=>{let{open:r,...i}=IR(t);return(0,s.useImperativeHandle)(n,()=>({open:r}),[r]),(0,K.jsx)(K.Fragment,{children:e?.({...i,open:r})})});PR.displayName=`Dropzone`;var FR={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,isDragUnknown:!1,isDragGlobal:!1,isProcessing:!1,acceptedFiles:[],fileRejections:[],dragFileRejections:[]};function IR(e={}){let{accept:t,disabled:n=!1,getFilesFromEvent:r=kL,maxSize:i=1/0,minSize:a=0,multiple:o=!0,maxFiles:c=0,onDragEnter:l,onDragLeave:u,onDragOver:d,onDrop:f,onDropAccepted:p,onDropRejected:m,onFileDialogCancel:h,onFileDialogOpen:g,useFsAccessApi:_=!1,autoFocus:v=!1,preventDropOnDocument:y=!0,noClick:b=!1,noKeyboard:x=!1,noDrag:S=!1,noDragEventsBubbling:C=!1,noPaste:w=!1,onError:T,validator:E,getErrorMessage:D}=e,O=(0,s.useMemo)(()=>TR(t),[t]),k=(0,s.useMemo)(()=>DR(O),[O]),A=(0,s.useMemo)(()=>DR(O,{omitWildcardMimeTypesWithExtensions:!0}),[O]),j=(0,s.useMemo)(()=>ER(t),[t]),M=(0,s.useMemo)(()=>typeof g==`function`?g:RR,[g]),N=(0,s.useMemo)(()=>typeof h==`function`?h:RR,[h]),P=(0,s.useRef)(null),F=(0,s.useRef)(null),[I,L]=(0,s.useReducer)(LR,FR),{isFocused:R,isFileDialogActive:z}=I,B=(0,s.useRef)(z);B.current=z;let V=(0,s.useRef)(null),H=(0,s.useCallback)(()=>{V.current?.abort();let e=new AbortController;return V.current=e,L({type:`setProcessing`,isProcessing:!0}),e.signal},[]),ee=(0,s.useCallback)(e=>{e.aborted||L({type:`setProcessing`,isProcessing:!1})},[]),U=(0,s.useRef)(typeof window<`u`&&window.isSecureContext&&_&&xR()),te=()=>{!U.current&&z&&setTimeout(()=>{if(F.current){let{files:e}=F.current;e?.length||(L({type:`closeDialog`}),N())}},300)};(0,s.useEffect)(()=>(window.addEventListener(`focus`,te,!1),()=>{window.removeEventListener(`focus`,te,!1)}),[F,z,N,U]);let W=(0,s.useRef)([]),ne=(0,s.useRef)([]),re=e=>{P.current&&e.target&&P.current.contains(e.target)&&e.defaultPrevented||(e.preventDefault(),W.current=[])};(0,s.useEffect)(()=>(y&&(document.addEventListener(`dragover`,gR,!1),document.addEventListener(`drop`,re,!1)),()=>{y&&(document.removeEventListener(`dragover`,gR),document.removeEventListener(`drop`,re))}),[P,y]),(0,s.useEffect)(()=>{let e=e=>{e.target&&(ne.current=[...ne.current,e.target]),mR(e)&&L({isDragGlobal:!0,type:`setDragGlobal`})},t=e=>{ne.current=ne.current.filter(t=>t!==e.target&&t!==null),!(ne.current.length>0)&&L({isDragGlobal:!1,type:`setDragGlobal`})},n=()=>{ne.current=[],L({isDragGlobal:!1,type:`setDragGlobal`})},r=()=>{ne.current=[],L({isDragGlobal:!1,type:`setDragGlobal`})};return document.addEventListener(`dragenter`,e,!1),document.addEventListener(`dragleave`,t,!1),document.addEventListener(`dragend`,n,!1),document.addEventListener(`drop`,r,!1),()=>{document.removeEventListener(`dragenter`,e),document.removeEventListener(`dragleave`,t),document.removeEventListener(`dragend`,n),document.removeEventListener(`drop`,r)}},[P]),(0,s.useEffect)(()=>(!n&&v&&P.current&&P.current.focus(),()=>{}),[P,v,n]);let G=(0,s.useCallback)(e=>{T?T(e):console.error(e)},[T]),ie=(0,s.useCallback)(e=>{e.preventDefault(),e.persist?.(),ye(e),!B.current&&(W.current=[...W.current,e.target],mR(e)&&Promise.resolve(r(e)).then(t=>{if(pR(e)&&!C)return;let n=t.length>0?fR({files:t,accept:k,minSize:a,maxSize:i,multiple:o,maxFiles:c,validator:E,getErrorMessage:D}):null;L({isDragAccept:n?.verdict===`accept`,isDragReject:n?.verdict===`reject`,isDragUnknown:n?.verdict===`unknown`,isDragActive:!0,dragFileRejections:n?.rejections??[],type:`setDraggedFiles`}),l&&l(e)}).catch(e=>G(e)))},[r,l,G,C,k,a,i,o,c,E,D]),ae=(0,s.useCallback)(e=>{if(e.preventDefault(),e.persist?.(),ye(e),B.current)return!1;let t=mR(e);if(t&&e.dataTransfer)try{e.dataTransfer.dropEffect=`copy`}catch{}return t&&d&&d(e),!1},[d,C]),oe=(0,s.useCallback)(e=>{e.preventDefault(),e.persist?.(),ye(e);let t=W.current.filter(e=>P.current?.contains(e)),n=t.indexOf(e.target);n!==-1&&t.splice(n,1),W.current=t,!(t.length>0)&&(L({type:`setDraggedFiles`,isDragActive:!1,isDragAccept:!1,isDragReject:!1,isDragUnknown:!1,dragFileRejections:[]}),mR(e)&&u&&u(e))},[P,u,C]),se=(0,s.useCallback)(async(e,t,n)=>{let r=(e,t)=>D?{...e,message:D(e,t)}:e,s=e=>{let n=[],i=[];e.forEach(({file:e,accepted:t,acceptError:a,sizeMatch:o,sizeError:s,customErrors:c})=>{if(t&&o&&!c)n.push(e);else{let t=[a,s];c&&(t=t.concat(c)),i.push({file:e,errors:t.filter(e=>e!=null).map(t=>r(t,e))})}});let a=o?c>=1?c:1/0:1;n.length>a&&n.splice(a).forEach(e=>{i.push({file:e,errors:[r(oR,e)]})}),L({acceptedFiles:n,fileRejections:i,type:`setFiles`}),f&&f(n,i,t),i.length>0&&m&&m(i,t),n.length>0&&p&&p(n,t)},l=e.map(e=>{let[t,n]=cR(e,A),[r,o]=lR(e,a,i);return{file:e,accepted:t,acceptError:n,sizeMatch:r,sizeError:o,customErrors:E?E(e):null}});if(!l.some(({customErrors:e})=>dR(e))){s(l);return}let u;try{u=await Promise.all(l.map(async({customErrors:e,...t})=>({...t,customErrors:await e})))}catch(e){n.aborted||(ee(n),G(e));return}n.aborted||s(u)},[L,o,A,a,i,c,f,p,m,E,D,G,ee]),ce=(0,s.useCallback)(e=>{if(e.preventDefault(),e.persist?.(),ye(e),W.current=[],!(B.current&&e.dataTransfer)&&(L({type:`reset`}),mR(e))){let t=H();Promise.resolve(r(e)).then(n=>{if(!t.aborted){if(pR(e)&&!C){ee(t);return}return se(n,e,t)}}).catch(e=>{t.aborted||(ee(t),G(e))})}},[r,se,G,C,H,ee]),le=(0,s.useCallback)(e=>{if(!mR(e))return;e.preventDefault(),e.persist?.(),ye(e);let t=H();Promise.resolve(r(e)).then(n=>{if(!t.aborted){if(pR(e)&&!C){ee(t);return}return se(n,e,t)}}).catch(e=>{t.aborted||(ee(t),G(e))})},[r,se,G,C,H,ee]),ue=(0,s.useCallback)(()=>{if(U.current){L({type:`openDialog`}),M();let e={multiple:o,types:j},t;window.showOpenFilePicker(e).then(e=>(t=H(),r(e))).then(e=>{if(L({type:`closeDialog`}),!t.aborted)return se(e,null,t)}).catch(e=>{t&&ee(t),OR(e)?(N(e),L({type:`closeDialog`})):kR(e)||AR(e)?(U.current=!1,F.current?(F.current.value=``,F.current.click()):G(Error(`Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no was provided.`))):G(e)});return}F.current&&(L({type:`openDialog`}),M(),F.current.value=``,F.current.click())},[L,M,N,_,se,G,j,o,H,ee]),de=(0,s.useCallback)(e=>{P.current?.isEqualNode(e.target)&&(e.key===` `||e.key===`Enter`||e.keyCode===32||e.keyCode===13)&&(e.preventDefault(),ue())},[P,ue]),fe=(0,s.useCallback)(()=>{L({type:`focus`})},[]),pe=(0,s.useCallback)(()=>{L({type:`blur`})},[]),me=(0,s.useCallback)(()=>{b||(yR()?setTimeout(ue,0):ue())},[b,ue]),he=e=>n?null:e,ge=e=>x?null:he(e),_e=e=>S?null:he(e),ve=e=>w?null:he(e),ye=e=>{C&&e.stopPropagation()},be=(0,s.useMemo)(()=>({refKey:e=`ref`,role:t,onKeyDown:r,onFocus:i,onBlur:a,onClick:o,onDragEnter:s,onDragOver:c,onDragLeave:l,onDrop:u,onPaste:d,...f}={})=>({onKeyDown:ge(bR(r,de)),onFocus:ge(bR(i,fe)),onBlur:ge(bR(a,pe)),onClick:he(bR(o,me)),onDragEnter:_e(bR(s,ie)),onDragOver:_e(bR(c,ae)),onDragLeave:_e(bR(l,oe)),onDrop:_e(bR(u,ce)),onPaste:ve(bR(d,le)),role:typeof t==`string`&&t!==``?t:`presentation`,[e]:P,...!n&&!x?{tabIndex:0}:{},...n?{"aria-disabled":!0}:{},...f}),[P,de,fe,pe,me,ie,ae,oe,ce,le,x,S,w,n]),xe=(0,s.useCallback)(e=>{e.stopPropagation()},[]),Se=(0,s.useMemo)(()=>({refKey:e=`ref`,onChange:t,onClick:n,...r}={})=>({accept:A,multiple:o,type:`file`,"aria-label":`file upload`,style:{border:0,display:`block`,height:0,margin:0,opacity:0,overflow:`hidden`,padding:0,width:0},onChange:he(bR(t,ce)),onClick:he(bR(n,xe)),tabIndex:-1,[e]:F,...r}),[F,t,o,ce,n]);return{...I,isFocused:R&&!n,getRootProps:be,getInputProps:Se,rootRef:P,inputRef:F,open:he(ue)}}function LR(e,t){switch(t.type){case`focus`:return{...e,isFocused:!0};case`blur`:return{...e,isFocused:!1};case`openDialog`:return{...FR,isFileDialogActive:!0};case`closeDialog`:return{...e,isFileDialogActive:!1};case`setDraggedFiles`:return{...e,isDragActive:t.isDragActive,isDragAccept:t.isDragAccept,isDragReject:t.isDragReject,isDragUnknown:t.isDragUnknown,dragFileRejections:t.dragFileRejections};case`setProcessing`:return{...e,isProcessing:t.isProcessing};case`setFiles`:return{...e,acceptedFiles:t.acceptedFiles,fileRejections:t.fileRejections,dragFileRejections:[],isProcessing:!1,isDragReject:!1,isDragUnknown:!1};case`setDragGlobal`:return{...e,isDragGlobal:t.isDragGlobal};case`reset`:return{...FR};default:return e}}function RR(){}function zR(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(+(e<10240))} KiB`:`${(e/1048576).toFixed(1)} MiB`}function BR(e){let t=e.errors[0]?.code;return t===`file-invalid-type`?`文件类型不受支持,请重新选择。`:t===`file-too-large`?`文件超过允许大小,请重新选择。`:t===`too-many-files`?`一次只能选择一个文件。`:e.errors[0]?.message||`文件无法读取,请重新选择。`}function VR({accept:e,maxSize:t,file:n,onFile:r,onError:i,ariaLabel:a=`选择文件`,hint:o=`拖放文件到这里,或点击选择`}){let{getRootProps:s,getInputProps:c,isDragActive:l,isDragReject:u,open:d}=IR({accept:e,maxSize:t,multiple:!1,noClick:!!n,onDropAccepted:e=>{i(``),r(e[0]||null)},onDropRejected:e=>{r(null),i(BR(e[0]))}});return(0,K.jsxs)(`div`,{...s({className:`studio-file-dropzone${l?` dragging`:``}${u?` rejected`:``}${n?` has-file`:``}`}),children:[(0,K.jsx)(`input`,{...c({"aria-label":a})}),n?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`studio-file-icon`,children:(0,K.jsx)(ve,{size:20})}),(0,K.jsxs)(`span`,{className:`studio-file-copy`,children:[(0,K.jsx)(`strong`,{title:n.name,children:n.name}),(0,K.jsxs)(`small`,{children:[zR(n.size),` · 已准备检查`]})]}),(0,K.jsxs)(`span`,{className:`studio-file-actions`,children:[(0,K.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`替换 ${n.name}`,title:`替换文件`,onClick:e=>{e.stopPropagation(),d()},children:(0,K.jsx)(Je,{size:14})}),(0,K.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`移除 ${n.name}`,title:`移除文件`,onClick:e=>{e.stopPropagation(),r(null)},children:(0,K.jsx)(mt,{size:15})})]})]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`studio-file-icon`,children:(0,K.jsx)(be,{size:20})}),(0,K.jsxs)(`span`,{className:`studio-file-copy`,children:[(0,K.jsx)(`strong`,{children:l?`松开即可选择`:o}),(0,K.jsx)(`small`,{children:`文件只会先做只读检查,确认后才写入 Catalog。`})]})]})]})}var HR=`def query_order( - order_id: str, - include_history: bool = False, -) -> dict[str, object]: - """查询订单状态,并按需返回流转记录。""" - result: dict[str, object] = { - "order_id": order_id, - "status": "processing", - } - if include_history: - result["history"] = ["created", "paid"] - return result -`;function UR(){let[e,t]=(0,s.useState)(!1),n=(0,s.useId)();return(0,K.jsxs)(`section`,{className:`python-tool-example`,"aria-label":`Python Tool 编写帮助`,children:[(0,K.jsxs)(`button`,{className:`python-tool-example-trigger`,type:`button`,"aria-label":e?`收起编写示例`:`查看编写示例`,"aria-expanded":e,"aria-controls":n,onClick:()=>t(e=>!e),children:[(0,K.jsx)(M,{size:17,"aria-hidden":`true`}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:`Python Tool 怎么写?`}),(0,K.jsx)(`small`,{children:`查看可复制的函数样例与约定`})]}),(0,K.jsx)(B,{className:`python-tool-example-chevron`,size:17,"aria-hidden":`true`})]}),e&&(0,K.jsxs)(`div`,{id:n,className:`python-tool-example-panel`,role:`region`,"aria-label":`Python Tool 编写示例`,children:[(0,K.jsx)(xb,{code:HR,language:`python`,filename:`tool_example.py`,wrap:!0,showLineNumbers:!0}),(0,K.jsxs)(`ul`,{className:`python-tool-example-rules`,children:[(0,K.jsx)(`li`,{children:`公开函数需定义在模块顶层,同步与异步函数均可。`}),(0,K.jsx)(`li`,{children:`建议提供类型注解和 docstring,方便生成清晰的 Tool Contract。`}),(0,K.jsx)(`li`,{children:`返回值应可 JSON 序列化;模块导入阶段不要执行有副作用的逻辑。`})]})]})]})}var WR=JT().trim().min(1,`请填写显示名称`).max(128,`显示名称不能超过 128 个字符`),GR=JT().trim().min(2,`资源标识至少填写 2 个字符`).max(128,`资源标识不能超过 128 个字符`).regex(/^[a-z][a-z0-9._-]*$/,`资源标识只能包含小写字母、数字、点、下划线和连字符`),KR=JT().trim().min(1,`请填写 Python 标识`).max(128,`Python 标识不能超过 128 个字符`).regex(/^[A-Za-z_][A-Za-z0-9_]*$/,`请输入有效的 Python 标识`),qR=JT().trim().url(`请输入有效的接口地址`).max(1024,`接口地址不能超过 1024 个字符`),JR=JT().trim().max(512,`凭证引用不能超过 512 个字符`).regex(/^env:\/\/[A-Za-z_][A-Za-z0-9_]*$/,`凭证引用需使用 env://环境变量名`),YR=JT().trim().max(4096,`描述不能超过 4096 个字符`).default(``),XR=OE({name:GR,displayName:WR,model:JT().trim().min(1,`请填写模型 ID`).max(256,`模型 ID 不能超过 256 个字符`),endpointUrl:qR,credentialRef:JR,description:YR.optional(),apiKey:JT().max(16384,`API Key 不能超过 16384 个字符`).default(``),temperature:oD().min(0,`temperature 需在 0-2 之间`).max(2,`temperature 需在 0-2 之间`).default(.2),maxTokens:oD().int(`max_tokens 需为 1-131072 的整数`).min(1,`max_tokens 需为 1-131072 的整数`).max(131072,`max_tokens 需为 1-131072 的整数`).default(2048),addressMode:PE([`endpoint`,`base`]).default(`endpoint`),wireApi:PE([``,`chat`,`responses`]).default(``)}),ZR=OE({displayName:WR,name:GR,transport:PE([`stdio`,`sse`,`http`,`streamable-http`]),endpointUrl:JT().trim().max(1024,`Server URL 不能超过 1024 个字符`).default(``),command:JT().trim().max(4096,`Command 不能超过 4096 个字符`).default(``),args:JT().trim().max(8192,`Arguments 不能超过 8192 个字符`).default(``),apiKeyName:AE([IE(``),JT().trim().regex(/^[A-Za-z_][A-Za-z0-9_]*$/,`环境变量名需为合法标识符`)]).default(``),apiKeyValue:JT().max(16384,`API Key 不能超过 16384 个字符`).default(``),description:YR}).superRefine((e,t)=>{if(e.transport===`stdio`){e.command||t.addIssue({code:`custom`,path:[`command`],message:`请填写 Command`});return}if(!e.endpointUrl){t.addIssue({code:`custom`,path:[`endpointUrl`],message:`请填写 Server URL`});return}eE().safeParse(e.endpointUrl).success||t.addIssue({code:`custom`,path:[`endpointUrl`],message:`请输入有效的 Server URL`})}),QR=OE({displayName:WR,name:KR,callableName:KR,description:JT().trim().max(1024,`描述不能超过 1024 个字符`).default(``),sourceMode:PE([`upload`,`workspace`]).default(`upload`),sourcePath:JT().trim().max(4096,`工作区路径不能超过 4096 个字符`).default(``)}).superRefine((e,t)=>{e.sourceMode===`workspace`&&!e.sourcePath&&t.addIssue({code:`custom`,path:[`sourcePath`],message:`请填写工作区 Python 文件`})}),$R=OE({value:JT().max(16384,`API Key 不能超过 16384 个字符`)}),ez=OE({sandbox:PE([`read-only`,`read_only`,`workspace-write`,`workspace-write-auto`,`full-access`]),buildAfterCreate:bE(),codexProxy:PE([`auto`,`forced`,`direct`]),cloudRegion:JT().trim().max(128,`Region 不能超过 128 个字符`).default(``),cloudBucket:JT().trim().max(128,`KS3 Bucket 不能超过 128 个字符`).default(``),cloudAccessKey:JT().trim().max(256,`Access Key 不能超过 256 个字符`).default(``),cloudSecretKey:JT().trim().max(256,`Secret Key 不能超过 256 个字符`).default(``),cloudAccountId:JT().trim().max(128,`Account ID 不能超过 128 个字符`).default(``)});function tz(e){return e.status===`ready`||e.status===`conflict`}function nz(e){return new Set(e.filter(tz).map(e=>e.candidateId))}async function rz({candidates:e,selectedIds:t,overwriteIds:n,commit:r,onResult:i}){let a=e.filter(e=>t.has(e.candidateId)&&tz(e)),o=[];for(let e of a){let t;try{let i=await r(e,n.has(e.candidateId));t={candidateId:e.candidateId,status:`succeeded`,value:i}}catch(n){t={candidateId:e.candidateId,status:`failed`,error:n instanceof Error?n.message:String(n)}}o.push(t),i?.(t,o.length,a.length)}return{results:o,succeededIds:o.filter(e=>e.status===`succeeded`).map(e=>e.candidateId),failedIds:o.filter(e=>e.status===`failed`).map(e=>e.candidateId)}}var iz={model:{title:`模型`,description:`管理模型端点和凭据引用。`,addLabel:`配置模型`,headings:[`发现来源`,`上下文窗口`,`输入模态`],icon:fe},tool:{title:`Tool`,description:`管理结构化 Tool Contract、权限和审批策略。`,addLabel:`添加 Python Tool`,headings:[`来源`,`Tool 分组`,`权限 / 边界`],icon:pt},mcp:{title:`MCP`,description:`连接、探测并复用 MCP Server。`,addLabel:`添加资源`,headings:[`来源`,`版本`,`说明`],icon:Le},skill:{title:`Skill`,description:`安装版本化 Skill,并在构建时锁定内容摘要。`,addLabel:`发现 Skill`,headings:[`来源`,`版本`,`说明`],icon:nt}},az={provider:`模型服务`,builtin:`ksadk 内置`,local:`工作区自定义`,market:`市场`},oz=20;async function sz(e,t){let n=await e.text().catch(()=>``);try{return JSON.parse(n)?.error?.message||`${t}(${e.status})`}catch{return`${t}(${e.status})`}}function cz(e){return e.requiredSecretRefs?.[0]||e.contract?.credentialRef||``}function lz(e){return e.replace(/^env:\/\//,``)}function uz(e){let t=Number(e||0);return t<1024?`${t} B`:t<1048576?`${(t/1024).toFixed(1)} KiB`:`${(t/1024/1024).toFixed(1)} MiB`}function dz({kind:e,onKindChange:t,refreshTick:n}){let[r,i]=(0,s.useState)([]),[a,o]=(0,s.useState)(``),c=(0,s.useDeferredValue)(a),[l,u]=(0,s.useState)(``),[d,f]=(0,s.useState)(``),[p,m]=(0,s.useState)(`default`),[h,_]=(0,s.useState)(oz),[v,y]=(0,s.useState)(0),[b,x]=(0,s.useState)([null]),[S,C]=(0,s.useState)(null),[w,T]=(0,s.useState)(0),[E,D]=(0,s.useState)(!0),[O,k]=(0,s.useState)(``),[A,j]=(0,s.useState)(null),[M,N]=(0,s.useState)(!1),[P,F]=(0,s.useState)(!1),[I,L]=(0,s.useState)(null),[R,z]=(0,s.useState)(null),[B,V]=(0,s.useState)(!1),[H,ee]=(0,s.useState)(!1),[U,te]=(0,s.useState)(null),[W,ne]=(0,s.useState)(!1),re=(0,s.useRef)(0),G=(0,s.useCallback)(async t=>{let n=++re.current,r=new URLSearchParams({kind:e,limit:String(h),sort:p});c.trim()&&r.set(`query`,c.trim()),l&&r.set(`status`,l),d&&r.set(`source`,d),t&&r.set(`cursor`,t),D(!0),k(``);try{let e=await g(`/api/v1/catalog/resources?${r}`);if(!e.ok)throw Error(await sz(e,`资源加载失败`));let t=await e.json();if(re.current!==n)return;i(t.items||[]),C(t.nextCursor||null),T(Number(t.total)||0)}catch(e){if(re.current!==n)return;i([]),C(null),T(0),k(e instanceof Error?e.message:`资源加载失败`)}finally{re.current===n&&D(!1)}},[c,e,h,p,d,l]),ie=(0,s.useCallback)(()=>{x([null]),y(0),G(null)},[G]),ae=(0,s.useCallback)(()=>{G(b[v]||null)},[b,G,v]);(0,s.useEffect)(()=>{ie()},[n,ie]);let oe=(0,s.useCallback)(async e=>{try{let t=await g(`/api/v1/catalog/mcp-servers/${encodeURIComponent(e.resourceId)}:probe?timeoutSeconds=15`,{method:`POST`});if(!t.ok)throw Error(await sz(t,`MCP 探测失败`));let n=await t.json();ae(),Y(`MCP 探测完成`,`已发现 ${n.health?.toolCount||0} 个 Tool。`)}catch(e){ae(),Y(`MCP 探测失败`,e.message,`error`)}},[ae]);async function se(){if(U){ne(!0);try{let e=await g(`/api/v1/catalog/resources/${encodeURIComponent(U.resourceId)}`,{method:`DELETE`});if(!e.ok)throw Error(await sz(e,`删除失败`));if(te(null),r.length===1&&v>0){let e=v-1;y(e),await G(b[e]||null)}else await G(b[v]||null);Y(`资源已删除`,`${U.displayName||U.name} 已从工作区移除。`)}catch(e){Y(`删除失败`,e.message,`error`)}ne(!1)}}function ce(){if(e===`model`){N(!0);return}if(e===`mcp`){F(!0);return}if(e===`skill`){V(!0);return}ee(!0)}let le=iz[e],ue=(0,s.useMemo)(()=>[{id:`name`,header:`名称`,minWidth:190,className:`resource-name-column`,headerClassName:`resource-name-column`,cell:e=>(0,K.jsx)(fz,{item:e})},{id:`source`,header:le.headings[0],minWidth:120,className:`resource-source-column`,headerClassName:`resource-source-column`,cell:e=>az[e.source]||e.source},{id:`detail`,header:le.headings[1],minWidth:110,className:`resource-detail-column`,headerClassName:`resource-detail-column`,cell:e=>(0,K.jsx)(pz,{item:e})},{id:`capability`,header:le.headings[2],minWidth:180,className:`capability-cell resource-capability-column`,headerClassName:`resource-capability-column`,cell:e=>(0,K.jsx)(mz,{item:e})},{id:`status`,header:`状态`,minWidth:92,className:`resource-status-column`,headerClassName:`resource-status-column`,cell:e=>(0,K.jsx)(hz,{item:e})},{id:`actions`,header:`操作`,minWidth:108,className:`actions-column resource-actions-column`,headerClassName:`actions-column resource-actions-column`,cell:e=>(0,K.jsx)(gz,{item:e,onConfigure:()=>j(e),onView:()=>e.kind===`mcp`?L(e):z(e),onProbe:()=>oe(e),onDelete:()=>te(e)})}],[le.headings,oe]),de=(0,s.useCallback)(()=>{if(v<=0)return;let e=v-1;y(e),G(b[e]||null)},[b,G,v]),fe=(0,s.useCallback)(()=>{if(!S)return;let e=v+1;x(t=>{let n=t.slice(0,e);return n[e]=S,n}),y(e),G(S)},[G,S,v]);return(0,K.jsxs)(`div`,{className:`page-container resources-page`,"data-layout":`data`,children:[(0,K.jsx)(gd,{children:(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:ce,children:[(0,K.jsx)(qe,{size:15}),(0,K.jsx)(`span`,{children:le.addLabel})]})}),(0,K.jsxs)(`div`,{className:`data-page-body table-data-body`,children:[(0,K.jsx)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":`资源类型`,children:Object.keys(iz).map(n=>(0,K.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":e===n,onClick:()=>t(n),children:[iz[n].title,e===n&&(0,K.jsx)(`span`,{className:`n`,children:w})]},n))}),(0,K.jsxs)(`div`,{className:`section-toolbar`,children:[(0,K.jsxs)(`div`,{className:`search-field`,children:[(0,K.jsx)(Ye,{size:14}),(0,K.jsx)(`input`,{type:`search`,placeholder:`搜索资源`,value:a,onChange:e=>o(e.target.value)})]}),(0,K.jsx)(kh,{className:`compact-select`,ariaLabel:`筛选资源状态`,value:l||`__all__`,options:[{value:`__all__`,label:`全部状态`},{value:`ready`,label:`可用`},{value:`missing-secret`,label:`缺少凭证`},{value:`unhealthy`,label:`异常`},{value:`unresolved`,label:`未解析`}],onValueChange:e=>u(e===`__all__`?``:e)}),(0,K.jsx)(kh,{className:`compact-select`,ariaLabel:`筛选资源来源`,value:d||`__all__`,options:[{value:`__all__`,label:`全部来源`},{value:`provider`,label:`模型服务`},{value:`builtin`,label:`ksadk 内置`},{value:`local`,label:`工作区自定义`},{value:`market`,label:`市场`}],onValueChange:e=>f(e===`__all__`?``:e)}),(0,K.jsx)(kh,{className:`compact-select`,ariaLabel:`资源排序`,value:p,options:[{value:`default`,label:`默认排序`},{value:`displayName:asc`,label:`名称升序`},{value:`displayName:desc`,label:`名称降序`}],onValueChange:m}),(0,K.jsx)(kh,{className:`compact-select`,ariaLabel:`每页显示数量`,value:String(h),options:[{value:`20`,label:`每页 20 条`},{value:`50`,label:`每页 50 条`},{value:`100`,label:`每页 100 条`}],onValueChange:e=>_(Number(e))})]}),(0,K.jsx)(dm,{columns:ue,data:r,getRowId:e=>e.resourceId,caption:`${le.title}资源列表`,minWidth:0,loading:E,error:O,onRetry:ae,empty:{icon:(0,K.jsx)(pe,{size:20}),title:`没有匹配的资源`,description:`调整筛选条件,或添加一个新的工程资源。`},pagination:{pageIndex:v,pageSize:h,total:w,hasNextPage:!!S,onPreviousPage:de,onNextPage:fe}})]}),A&&(0,K.jsx)(_z,{model:A,onClose:()=>j(null),onChanged:ie}),M&&(0,K.jsx)(vz,{onClose:()=>N(!1),onAdded:()=>{N(!1),ie()}}),P&&(0,K.jsx)(yz,{onClose:()=>F(!1),onConnected:()=>{F(!1),ie()}}),I&&(0,K.jsx)(bz,{item:I,onClose:()=>L(null)}),R&&(0,K.jsx)(xz,{item:R,onClose:()=>z(null)}),B&&(0,K.jsx)(Sz,{onClose:()=>V(!1),onCatalogChanged:ie}),H&&(0,K.jsx)(Cz,{onClose:()=>ee(!1),onAdded:()=>{ee(!1),ie()}}),U&&(0,K.jsx)(Ca,{title:`确认删除资源「${U.displayName||U.name}」?`,description:`删除后已绑定该资源的 Agent 不会自动更新,需手动重新编辑。`,confirmText:`确认删除`,busy:W,onConfirm:se,onCancel:()=>te(null)})]})}function fz({item:e}){let t=iz[e.kind]?.icon||pe,n=e.name&&e.name!==e.displayName;return(0,K.jsxs)(`div`,{className:`agent-cell`,children:[(0,K.jsx)(`span`,{className:`capability-icon`,children:(0,K.jsx)(t,{size:15})}),(0,K.jsxs)(`div`,{className:`agent-cell-copy`,children:[(0,K.jsx)(`strong`,{children:e.displayName}),n&&(0,K.jsx)(`span`,{children:e.name})]})]})}function pz({item:e}){if(e.kind===`model`){let t=e.contract?.metadata||{},n=Number(t.context_window_tokens||0),r=e.contract?.discovery?.contextWindow===`provider`?`服务返回`:`ksadk 默认`,i=n>=1e6?`${(n/1e6).toFixed(n%1e6?1:0)}M`:n>=1e3?`${Math.round(n/1e3)}K`:`${n||`-`}`;return(0,K.jsx)(`strong`,{title:`上下文窗口来源:${r}`,children:i})}return e.kind===`tool`?(0,K.jsx)(`span`,{className:`tag`,children:e.contract?.group||e.category||`general`}):(0,K.jsx)(`span`,{className:`mono`,children:e.version})}function mz({item:e}){if(e.kind===`model`){let t=e.contract?.metadata?.capabilities||{},n=[`文字`];t.multimodal_input_image&&n.push(`图片`),t.multimodal_input_video&&n.push(`视频`),t.multimodal_input_file&&n.push(`文件`);let r=e.contract?.discovery?.inputModalities===`provider`?`服务返回`:`ksadk 默认`;return(0,K.jsx)(`span`,{title:`输入模态来源:${r}`,children:n.join(` + `)})}if(e.kind===`tool`){let t=e.contract?.approval===`always`?`需审批`:`无需审批`,n=e.contract?.boundary||`ksadk-runtime`;return(0,K.jsxs)(K.Fragment,{children:[t,(0,K.jsx)(`span`,{className:`resource-origin`,children:n})]})}let t=e.description||`未提供说明`;return(0,K.jsx)(`span`,{className:`cell-clamp`,title:t,children:t})}function hz({item:e}){if(e.kind===`model`){let t=e.status===`ready`;return(0,K.jsx)(`span`,{className:`badge`,"data-state":t?`ready`:`pending`,children:t?`凭证已配置`:`凭证未配置`})}let t=e.status===`ready`?`可用`:e.status===`failed`||e.status===`unhealthy`?`异常`:e.status===`unresolved`?`未解析`:e.status===`missing-secret`?`缺少凭证`:e.status;return(0,K.jsx)(`span`,{className:`badge`,"data-state":e.status===`ready`?`ready`:e.status===`failed`||e.status===`unhealthy`?`failed`:`pending`,children:t})}function gz({item:e,onConfigure:t,onView:n,onProbe:r,onDelete:i}){let a=e.kind===`mcp`?[{label:`重新探测`,onSelect:r,disabled:e.source!==`local`},...e.source===`local`?[{label:`删除`,danger:!0,onSelect:i}]:[]]:[{label:`查看详情`,onSelect:n},...e.source===`local`?[{label:`删除`,danger:!0,onSelect:i}]:[]];return(0,K.jsxs)(`div`,{className:`row-actions`,children:[(0,K.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:e.kind===`model`?t:n,children:e.kind===`model`?`配置凭证`:`查看`}),(0,K.jsx)(pd,{label:`${e.displayName} 的更多操作`,items:a})]})}function _z({model:e,onClose:t,onChanged:n}){let r=cz(e),i=lz(r),[a,o]=(0,s.useState)(null),c=p_({resolver:C_($R),defaultValues:{value:``}}),[l,u]=(0,s.useState)(null),[d,f]=(0,s.useState)(``);(0,s.useEffect)(()=>{g(`/api/v1/credentials/${encodeURIComponent(i)}`).then(e=>e.json()).then(o).catch(()=>o({configured:!1,source:`missing`}))},[i]);let p=!!a?.configured,m=a?.source||`missing`,h=a==null?`正在检查凭证`:p?`模型凭证已配置`:`模型凭证未配置`,_=a==null?`检查当前 Runtime 是否已经获得模型凭证。`:m===`session`?`凭证已持久保存到工作区,重启后仍生效,所有 Agent 可复用。`:m===`environment`?`凭证由 Studio 启动环境变量提供,可以用新的会话凭证临时覆盖。`:`输入 API Key 后即可在本地运行当前模型。`;async function v(r,a){if(u(null),!a.value&&!p){c.setError(`value`,{type:`manual`,message:`当前模型还没有可用凭证,请输入 API Key。`});return}f(r?`test`:`save`);let o=!1;try{if(a.value){let e=await g(`/api/v1/credentials/${encodeURIComponent(i)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({value:a.value,persistence:`session`})});if(!e.ok)throw Error(await sz(e,`凭证保存失败`));o=!0}let s=null;if(r){let t=await g(`/api/v1/model-profiles/${encodeURIComponent(e.resourceId)}:test`,{method:`POST`}),n=await t.text().catch(()=>``),r={};try{r=JSON.parse(n)}catch{}if(!t.ok||r.ok===!1)throw Error(r?.error?.message||`HTTP ${t.status}`);s=r.latencyMs??0}n?.(),t(),Y(r?`模型连接测试通过`:`模型凭证已保存`,r?`${e.displayName} · ${s} ms`:`凭证已持久保存到工作区,所有 Agent 可复用。`)}catch(e){u({title:o?`凭证已保存,但连接测试失败`:`模型凭证配置失败`,message:e.message}),o&&n?.()}f(``)}async function y(){u(null),f(`remove`);try{let r=await g(`/api/v1/credentials/${encodeURIComponent(i)}`,{method:`DELETE`});if(!r.ok)throw Error(await sz(r,`凭证清除失败`));n?.(),Y(`会话凭证已清除`,e.displayName),t()}catch(e){u({title:`凭证清除失败`,message:e.message})}f(``)}return(0,K.jsx)(Fg,{...c,children:(0,K.jsxs)(DD,{title:`配置模型凭证`,subtitle:`凭证只保存在当前 Studio 会话,不写入 Agent 或 Bundle。`,onClose:t,footer:(0,K.jsxs)(K.Fragment,{children:[m===`session`&&(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:y,disabled:d!==``,children:d===`remove`?`正在清除`:`清除会话凭证`}),(0,K.jsx)(`span`,{className:`drawer-footer-spacer`}),(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:t,children:`取消`}),(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:c.handleSubmit(e=>v(!1,e)),disabled:d!==``,children:d===`save`?`正在保存`:`仅保存`}),(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:c.handleSubmit(e=>v(!0,e)),disabled:d!==``,children:[(0,K.jsx)(z,{size:15}),(0,K.jsx)(`span`,{children:d===`test`?`正在测试`:`保存并测试`})]})]}),children:[(0,K.jsxs)(`div`,{className:`credential-profile`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`模型`}),(0,K.jsx)(`strong`,{children:e.displayName})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Provider`}),(0,K.jsx)(`strong`,{children:e.contract?.provider||`openai-compatible`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Endpoint`}),(0,K.jsx)(`code`,{children:e.contract?.endpointUrl||e.contract?.baseUrl||`-`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`凭证引用`}),(0,K.jsx)(`code`,{children:r||`-`})]})]}),(0,K.jsxs)(`div`,{className:`credential-status ${p?`configured`:`missing`}`,children:[(0,K.jsx)(`span`,{className:`status-dot ${a==null?`warning`:p?`success`:`warning`}`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:h}),(0,K.jsx)(`p`,{children:_})]})]}),(0,K.jsx)(X,{label:`API Key`,requirement:p?`optional`:`required`,htmlFor:`modelCredValue`,hint:`保存后立即生效;关闭 Studio 后自动清除,需要持久化时可通过启动环境变量注入。`,error:c.formState.errors.value?.message,children:(0,K.jsx)(`input`,{id:`modelCredValue`,type:`password`,autoComplete:`new-password`,maxLength:16384,placeholder:p?`输入新的 API Key 以覆盖当前凭证`:`输入新的 API Key`,...c.register(`value`)})}),l&&(0,K.jsx)(OD,{kind:`error`,title:l.title,message:l.message})]})})}function vz({onClose:e,onAdded:t}){let n=p_({resolver:C_(XR),defaultValues:{name:``,displayName:``,model:``,endpointUrl:``,credentialRef:`env://MODEL_API_KEY`,description:``,apiKey:``,temperature:.2,maxTokens:2048,addressMode:`endpoint`,wireApi:``}}),{name:r,displayName:i,model:a,endpointUrl:o,credentialRef:c,apiKey:l,temperature:u,maxTokens:d,addressMode:f,wireApi:p}=n.watch(),m=c.replace(/^env:\/\//,``),[h,_]=(0,s.useState)(!1),[v,y]=(0,s.useState)(``),[b,x]=(0,s.useState)(!1),[S,C]=(0,s.useState)([]),[w,T]=(0,s.useState)([]),[E,D]=(0,s.useState)([]);(0,s.useEffect)(()=>{g(`/api/v1/catalog/models`).then(e=>e.json()).then(e=>{D((e.items||[]).map(e=>e.name).filter(Boolean))}).catch(()=>{})},[]);async function O(){if(!o.trim()){y(`请先填写接口地址再探测`);return}x(!0),y(``),C([]),T([]);try{let e={url:o.trim()};m.trim()&&(e.credentialRef=`env://${m.trim()}`),l.trim()&&(e.apiKey=l.trim());let t=await g(`/api/v1/model-endpoints:probe`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)throw Error(await sz(t,`探测失败`));let r=await t.json();C(r.attempts||[]),T(r.models||[]),r.recommended?(n.setValue(`wireApi`,r.recommended.wireApi||`chat`),n.setValue(`addressMode`,`endpoint`),n.setValue(`endpointUrl`,r.recommended.endpointUrl,{shouldValidate:!0}),r.recommended.status===`auth_required`&&y(`端点可达,但需要有效凭证(401/403);配置 API Key 后可正常使用`)):y(`未能识别可用协议,请检查地址或网络`)}catch(e){y(e.message)}x(!1)}let k=[...new Set([...w,...E])];async function A(e){_(!0),y(``);try{let r=e.credentialRef.replace(/^env:\/\//,``);if(e.apiKey.trim()){let t=await g(`/api/v1/credentials/${encodeURIComponent(r)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({value:e.apiKey.trim(),persistence:`session`})});if(!t.ok)throw Error(await sz(t,`凭证保存失败`))}let i={provider:`openai-compatible`,model:e.model.trim(),credentialRef:e.credentialRef,parameters:{temperature:e.temperature,max_tokens:e.maxTokens}};e.wireApi&&(i.wireApi=e.wireApi),e.addressMode===`endpoint`?i.endpointUrl=e.endpointUrl.trim():i.baseUrl=e.endpointUrl.trim();let a=await g(`/api/v1/catalog/model-profiles`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e.name.trim(),displayName:e.displayName.trim(),version:`1.0.0`,description:e.description||``,spec:i})});if(!a.ok){let e=await a.json().catch(()=>null);if(Db(e,n.setError)){_(!1);return}throw Error(e?.error?.message||`创建失败(${a.status})`)}Y(`模型已创建`,`${e.displayName.trim()} · ${e.model.trim()}`),t()}catch(e){y(e.message)}_(!1)}let j=e=>`${e.protocol===`chat`?`Chat`:`Responses`} · ${e.status===`ok`?`可用 ${e.latencyMs}ms`:e.status===`auth_required`?`需凭证`:e.status===`recognized`?`可识别`:e.status===`unavailable`?`不存在`:e.status===`unreachable`?`不可达`:`错误`}`,M=e=>e.status===`ok`?`ready`:e.status===`unavailable`||e.status===`unreachable`?`failed`:`pending`;return(0,K.jsx)(Fg,{...n,children:(0,K.jsxs)(DD,{title:`添加模型`,subtitle:`接入 OpenAI 兼容模型端点。`,wide:!0,onClose:e,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:e,children:`取消`}),(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:n.handleSubmit(A),disabled:h,children:[(0,K.jsx)(z,{size:15}),(0,K.jsx)(`span`,{children:h?`创建中…`:`创建模型`})]})]}),children:[(0,K.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,K.jsx)(X,{label:`名称(Slug)`,requirement:`required`,htmlFor:`amName`,error:n.formState.errors.name?.message,children:(0,K.jsx)(`input`,{id:`amName`,className:`mono`,placeholder:`my-model`,...n.register(`name`)})}),(0,K.jsx)(X,{label:`显示名称`,requirement:`required`,htmlFor:`amDisplayName`,error:n.formState.errors.displayName?.message,children:(0,K.jsx)(`input`,{id:`amDisplayName`,placeholder:`我的模型`,...n.register(`displayName`)})})]}),(0,K.jsx)(X,{label:`模型 ID`,requirement:`required`,htmlFor:`amModelId`,error:n.formState.errors.model?.message,children:(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`input`,{id:`amModelId`,className:`mono`,placeholder:`glm-5.1 / gpt-4o-mini / …`,list:`am-model-suggestions`,...n.register(`model`)}),(0,K.jsx)(`datalist`,{id:`am-model-suggestions`,children:k.map(e=>(0,K.jsx)(`option`,{value:e},e))}),k.length>0&&(0,K.jsxs)(`span`,{className:`helper`,children:[`可输入或从 `,k.length,` 个可用模型中选择(自动补全)。`]})]})}),(0,K.jsx)(X,{label:`接口地址`,requirement:`required`,htmlFor:`amEndpoint`,hint:`支持主机、/v1、Chat Completions 或 Responses 地址;智能探测会自动归一化。`,error:n.formState.errors.endpointUrl?.message,children:(0,K.jsxs)(`div`,{children:[p&&(0,K.jsx)(`span`,{className:`tag`,children:p===`responses`?`Responses 协议`:`Chat 协议`}),(0,K.jsxs)(`div`,{style:{display:`flex`,gap:8,marginBottom:10,alignItems:`center`},children:[(0,K.jsxs)(`div`,{className:`segmented-control`,children:[(0,K.jsx)(`button`,{type:`button`,className:f===`endpoint`?`selected`:``,onClick:()=>n.setValue(`addressMode`,`endpoint`),children:`完整 endpointUrl`}),(0,K.jsx)(`button`,{type:`button`,className:f===`base`?`selected`:``,onClick:()=>n.setValue(`addressMode`,`base`),children:`baseUrl`})]}),(0,K.jsxs)(`button`,{className:`button secondary small`,type:`button`,onClick:O,disabled:b||!o.trim(),children:[(0,K.jsx)(ht,{size:14}),(0,K.jsx)(`span`,{children:b?`探测中…`:`智能探测`})]})]}),(0,K.jsx)(`input`,{id:`amEndpoint`,className:`mono`,placeholder:f===`endpoint`?`https://host/v1/chat/completions`:`https://host/v1`,...n.register(`endpointUrl`)}),S.length>0&&(0,K.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:6,marginTop:10},children:S.map((e,t)=>(0,K.jsx)(`span`,{className:`badge`,"data-state":M(e),title:e.endpointUrl,children:j(e)},t))})]})}),(0,K.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,K.jsx)(X,{label:`凭证环境变量名`,requirement:`required`,htmlFor:`amEnvName`,error:n.formState.errors.credentialRef?.message,children:(0,K.jsx)(`input`,{id:`amEnvName`,className:`mono`,value:m,onChange:e=>n.setValue(`credentialRef`,`env://${e.target.value}`,{shouldDirty:!0,shouldValidate:!0}),placeholder:`MY_MODEL_API_KEY`})}),(0,K.jsx)(X,{label:`API Key 值`,requirement:`optional`,htmlFor:`amApiKey`,hint:`仅保存到当前 Studio 会话;留空则从启动环境读取。`,error:n.formState.errors.apiKey?.message,children:(0,K.jsx)(`input`,{id:`amApiKey`,type:`password`,autoComplete:`new-password`,placeholder:`留空则从环境读取`,...n.register(`apiKey`)})})]}),(0,K.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,K.jsx)(X,{label:`temperature`,requirement:`optional`,htmlFor:`amTemp`,error:n.formState.errors.temperature?.message,children:(0,K.jsx)(`input`,{id:`amTemp`,type:`number`,step:`0.1`,min:0,max:2,...n.register(`temperature`,{valueAsNumber:!0})})}),(0,K.jsx)(X,{label:`max_tokens`,requirement:`optional`,htmlFor:`amMaxTokens`,error:n.formState.errors.maxTokens?.message,children:(0,K.jsx)(`input`,{id:`amMaxTokens`,type:`number`,min:1,max:131072,...n.register(`maxTokens`,{valueAsNumber:!0})})})]}),v&&(0,K.jsx)(OD,{kind:`error`,title:`添加模型`,message:v})]})})}function yz({onClose:e,onConnected:t}){let n=(0,s.useRef)(null),r=p_({resolver:C_(ZR),defaultValues:{displayName:``,name:``,transport:`http`,command:``,args:``,endpointUrl:``,apiKeyName:``,apiKeyValue:``,description:``}}),{transport:i}=r.watch(),[a,o]=(0,s.useState)(``),[c,l]=(0,s.useState)(!1);function u(){let e=n.current?.value.trim();if(!e)return;let t;try{t=JSON.parse(e)}catch{Y(`配置解析失败`,`请粘贴有效的 JSON`,`error`);return}let i=t.mcpServers||t.mcp_servers||t,a=Object.keys(i)[0],o=i[a];if(!o||typeof o!=`object`){Y(`配置解析失败`,`未找到 MCP server 定义`,`error`);return}r.setValue(`name`,a,{shouldValidate:!0}),r.setValue(`displayName`,o.name||a,{shouldValidate:!0}),o.description&&r.setValue(`description`,o.description);let s=String(o.type||o.transport||``).toLowerCase();s.includes(`http`)||o.url?(r.setValue(`transport`,s===`sse`?`sse`:`http`),o.url&&r.setValue(`endpointUrl`,o.url,{shouldValidate:!0})):(r.setValue(`transport`,`stdio`),o.command&&r.setValue(`command`,o.command,{shouldValidate:!0}),Array.isArray(o.args)&&r.setValue(`args`,o.args.join(` `)));let c=o.headers||{},l=c.Authorization||c.authorization;if(l){let e=String(l).match(/\$\{?([A-Za-z0-9_]+)\}?/);e&&r.setValue(`apiKeyName`,e[1],{shouldValidate:!0})}else o.env_key&&r.setValue(`apiKeyName`,o.env_key,{shouldValidate:!0})}async function d(e){o(``),l(!0);try{if(e.apiKeyName.trim()&&e.apiKeyValue.trim()){let t=await g(`/api/v1/credentials/${encodeURIComponent(e.apiKeyName.trim())}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({value:e.apiKeyValue.trim(),persistence:`session`})});if(!t.ok)throw Error(await sz(t,`凭证保存失败`))}let n=e.transport===`streamable-http`?`http`:e.transport,i=n===`stdio`?e.apiKeyName.trim():`Authorization`,a={name:e.name.trim(),version:`1.0.0`,transport:n,args:n===`stdio`?e.args.trim().split(/\s+/).filter(Boolean):[],envRefs:e.apiKeyName.trim()?{[i]:`env://${e.apiKeyName.trim()}`}:{}};n===`stdio`?a.command=e.command.trim():a.endpointUrl=e.endpointUrl.trim();let o=await g(`/api/v1/catalog/mcp-servers`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({displayName:e.displayName.trim(),description:e.description.trim(),server:a})}),s=await o.json().catch(()=>null);if(!o.ok){if(Db(s,r.setError)){l(!1);return}throw Error(s?.error?.message||`保存失败(${o.status})`)}let c=await g(`/api/v1/catalog/mcp-servers/${encodeURIComponent(s.resourceId)}:probe?timeoutSeconds=15`,{method:`POST`});if(!c.ok)throw Error(await sz(c,`探测失败`));Y(`MCP 已连接`,`已发现 ${(await c.json()).health?.toolCount||0} 个 Tool。`),t()}catch(e){o(e.message)}l(!1)}return(0,K.jsx)(Fg,{...r,children:(0,K.jsxs)(DD,{title:`连接 MCP Server`,subtitle:`保存后执行探测,再回到 Agent 能力选择。`,onClose:e,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:e,children:`取消`}),(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:r.handleSubmit(d),disabled:c,children:[(0,K.jsx)(Le,{size:15}),(0,K.jsx)(`span`,{children:c?`正在探测`:`保存并探测`})]})]}),children:[(0,K.jsx)(X,{label:`粘贴 MCP 配置`,requirement:`optional`,htmlFor:`mcpPaste`,hint:`粘贴 JSON 后会自动填充下方字段。`,children:(0,K.jsx)(`textarea`,{id:`mcpPaste`,ref:n,rows:5,placeholder:'{"mcpServers":{"metaso":{"type":"streamable-http","url":"https://...","headers":{"Authorization":"Bearer ${KSC_AIPRO_API_KEY}"}}}}',onPaste:()=>window.setTimeout(u,0)})}),(0,K.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,K.jsx)(X,{label:`显示名称`,requirement:`required`,htmlFor:`mcpDisplayName`,error:r.formState.errors.displayName?.message,children:(0,K.jsx)(`input`,{id:`mcpDisplayName`,placeholder:`Web Research MCP`,...r.register(`displayName`)})}),(0,K.jsx)(X,{label:`Server 名称`,requirement:`required`,htmlFor:`mcpName`,error:r.formState.errors.name?.message,children:(0,K.jsx)(`input`,{id:`mcpName`,className:`mono`,placeholder:`web-research`,...r.register(`name`)})})]}),(0,K.jsx)(X,{label:`Transport`,requirement:`required`,htmlFor:`mcpTransport`,error:r.formState.errors.transport?.message,children:(0,K.jsx)(kh,{id:`mcpTransport`,ariaLabel:`Transport`,value:i,options:[{value:`http`,label:`Streamable HTTP`},{value:`stdio`,label:`STDIO(本地命令)`},{value:`sse`,label:`SSE`}],onValueChange:e=>r.setValue(`transport`,e,{shouldDirty:!0,shouldValidate:!0})})}),i===`stdio`&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(X,{label:`Command`,requirement:`required`,htmlFor:`mcpCommand`,error:r.formState.errors.command?.message,children:(0,K.jsx)(`input`,{id:`mcpCommand`,className:`mono`,placeholder:`npx`,...r.register(`command`)})}),(0,K.jsx)(X,{label:`Arguments`,requirement:`optional`,htmlFor:`mcpArgs`,error:r.formState.errors.args?.message,children:(0,K.jsx)(`input`,{id:`mcpArgs`,className:`mono`,placeholder:`-y @your-org/web-research-mcp`,...r.register(`args`)})})]}),i!==`stdio`&&(0,K.jsx)(X,{label:`Server URL`,requirement:`required`,htmlFor:`mcpEndpoint`,error:r.formState.errors.endpointUrl?.message,children:(0,K.jsx)(`input`,{id:`mcpEndpoint`,className:`mono`,placeholder:`https://mcp.example.com/mcp`,...r.register(`endpointUrl`)})}),(0,K.jsx)(X,{label:`API Key 环境变量名`,requirement:`optional`,htmlFor:`mcpApiKey`,error:r.formState.errors.apiKeyName?.message,children:(0,K.jsx)(`input`,{id:`mcpApiKey`,className:`mono`,placeholder:`KSC_AIPRO_API_KEY`,...r.register(`apiKeyName`)})}),(0,K.jsx)(X,{label:`API Key 值`,requirement:`optional`,htmlFor:`mcpApiKeyValue`,hint:`仅保存到当前 Studio 会话;留空则从环境变量读取。`,error:r.formState.errors.apiKeyValue?.message,children:(0,K.jsx)(`input`,{id:`mcpApiKeyValue`,type:`password`,autoComplete:`new-password`,placeholder:`留空则从环境变量读取`,...r.register(`apiKeyValue`)})}),(0,K.jsx)(X,{label:`说明`,requirement:`optional`,htmlFor:`mcpDescription`,error:r.formState.errors.description?.message,children:(0,K.jsx)(`textarea`,{id:`mcpDescription`,rows:2,placeholder:`提供 Web 搜索和页面抓取能力`,...r.register(`description`)})}),a&&(0,K.jsx)(OD,{kind:`error`,title:`连接失败`,message:a})]})})}function bz({item:e,onClose:t}){let n=e.contract||{},r=e.health||{},i=n.discoveredTools||r.discoveredTools||[],a=[[`Resource ID`,e.resourceId],[`Transport`,n.transport||`-`],[`Endpoint`,n.endpointUrl||n.command||`-`],[`状态`,r.status||e.status],[`工具数`,r.toolCount??i.length],[`凭证`,(e.requiredSecretRefs||[]).join(`、`)||`无`]];return(0,K.jsxs)(DD,{title:e.displayName||e.name,subtitle:`${e.name} · ${e.version} · ${n.transport||``}`,onClose:t,children:[(0,K.jsx)(`dl`,{className:`trace-detail-grid`,children:a.map(([e,t])=>(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:e}),(0,K.jsx)(`dd`,{children:String(t)})]},e))}),(0,K.jsx)(`div`,{className:`inspector-title inspector-title-spaced`,children:`已发现工具`}),(0,K.jsx)(`div`,{className:`resource-detail-list`,children:i.length===0?(0,K.jsx)(`div`,{className:`resource-detail-item`,children:(0,K.jsxs)(`span`,{className:`resource-detail-item-copy`,children:[(0,K.jsx)(`strong`,{children:`未发现工具`}),(0,K.jsx)(`span`,{children:`点击“重新探测”以加载工具列表`})]})}):i.map(e=>(0,K.jsxs)(`div`,{className:`resource-detail-item`,children:[(0,K.jsx)(`span`,{className:`capability-icon`,children:(0,K.jsx)(pt,{size:15})}),(0,K.jsxs)(`span`,{className:`resource-detail-item-copy`,children:[(0,K.jsx)(`strong`,{children:e.name}),(0,K.jsx)(`span`,{children:e.description||``})]})]},e.name))})]})}function xz({item:e,onClose:t}){let[n,r]=(0,s.useState)(!1),i=e.contract||{},a=[[`Resource ID`,e.resourceId],[`来源`,az[e.source]||e.source],[`版本`,e.version||`-`],[`状态`,e.kind===`model`?e.status===`ready`?`凭证已配置`:`凭证未配置`:e.status]];return e.kind===`tool`&&(a.push([`Tool 分组`,i.group||e.category||`general`]),a.push([`审批`,i.approval===`always`?`需审批`:`无需审批`]),a.push([`边界`,i.boundary||`ksadk-runtime`]),i.sourcePath&&a.push([`源码`,`${i.sourcePath} · ${i.callableName||`-`}()`])),e.kind===`skill`&&i?.contentSha256&&a.push([`内容摘要`,i.contentSha256]),(0,K.jsxs)(DD,{title:e.displayName||e.name,subtitle:`${e.name} · ${e.version}`,onClose:t,children:[(0,K.jsx)(`dl`,{className:`trace-detail-grid`,children:a.map(([e,t])=>(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:e}),(0,K.jsx)(`dd`,{children:String(t)})]},e))}),(0,K.jsx)(`div`,{className:`inspector-title inspector-title-spaced`,children:`说明`}),(0,K.jsx)(`p`,{style:{margin:0,color:`var(--text-secondary)`,fontSize:`var(--font-size-meta)`,lineHeight:`var(--line-height-body)`},children:e.description||i.description||`未提供说明`}),e.kind===`skill`&&e.source===`local`&&(0,K.jsxs)(`button`,{className:`button secondary skill-files-open`,type:`button`,onClick:()=>r(!0),children:[(0,K.jsx)(ge,{size:15}),(0,K.jsx)(`span`,{children:`查看 Skill 文件`})]}),n&&(0,K.jsx)(SL,{title:e.displayName||e.name,endpoint:`/api/v1/catalog/skills/${encodeURIComponent(e.resourceId)}/files`,onClose:()=>r(!1)})]})}function Sz({onClose:e,onCatalogChanged:t}){let[n,r]=(0,s.useState)(``),[i,a]=(0,s.useState)(null),[o,c]=(0,s.useState)(new Set),[l,u]=(0,s.useState)({}),[d,f]=(0,s.useState)(null),[p,m]=(0,s.useState)({completed:0,total:0}),[h,_]=(0,s.useState)(``),[v,y]=(0,s.useState)(``),[b,x]=(0,s.useState)(!1),[S,C]=(0,s.useState)(!1),[w,T]=(0,s.useState)(null),[E,D]=(0,s.useState)(null),O=i?.candidates||[];function k(){c(new Set),u({}),f(null),m({completed:0,total:0}),_(``),T(null)}async function A(){y(``),x(!0);try{let e=n.split(`,`).map(e=>e.trim()).filter(Boolean),t=await g(`/api/v1/catalog/skills:discover`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({scanPaths:e})});if(!t.ok)throw Error(await sz(t,`Skill 发现失败`));let r=await t.json();a(r),k()}catch(e){y(e.message)}x(!1)}function j(e){S||l[e]?.status===`succeeded`||c(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function M(){let e=nz(O);for(let[t,n]of Object.entries(l))n.status===`succeeded`&&e.delete(t);c(e)}async function N(e){let n=i?.inspectionToken;if(!o.size||!n||S)return;let r=new Set(o),a=O.filter(e=>r.has(e.candidateId)&&(e.status===`ready`||e.status===`conflict`)).length;y(``),f(null),u({}),m({completed:0,total:a}),C(!0);try{let i=await rz({candidates:O,selectedIds:r,overwriteIds:e,commit:async(e,t)=>{_(e.candidateId);let r=await g(`/api/v1/catalog/skills/discoveries/${encodeURIComponent(n)}:commit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({candidateId:e.candidateId,overwrite:t})});if(!r.ok)throw Error(await sz(r,`Skill 导入失败`));return r.json()},onResult:(e,t,n)=>{u(t=>({...t,[e.candidateId]:e})),m({completed:t,total:n})}});f(i),c(new Set(i.failedIds)),i.succeededIds.length&&await t(),i.failedIds.length?Y(`Skill 批量导入完成`,`已导入 ${i.succeededIds.length} 个,${i.failedIds.length} 个失败。`,`error`):Y(`Skill 批量导入完成`,`已导入 ${i.succeededIds.length} 个 Skill。`)}catch(e){y(e.message)}_(``),C(!1)}function P(){let e=O.filter(e=>o.has(e.candidateId)&&e.status===`conflict`);if(e.length){T(e);return}N(new Set)}let F=o.size;return(0,K.jsxs)(DD,{title:`发现本地 Skill`,subtitle:`默认扫描工作区及允许的 Claude、Codex、Agent 用户目录;扫描只产生候选,确认后才导入。`,wide:!0,closeDisabled:S,onClose:e,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:e,disabled:S,children:`取消`}),(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:P,disabled:!F||S,children:[(0,K.jsx)(z,{size:15}),(0,K.jsx)(`span`,{children:S?`正在导入 ${p.completed}/${p.total}`:`导入所选 ${F} 个`})]})]}),children:[(0,K.jsxs)(`div`,{className:`field`,children:[(0,K.jsx)(`label`,{htmlFor:`skillScanPaths`,children:`扫描目录(逗号分隔;留空扫描安全默认目录)`}),(0,K.jsx)(`input`,{id:`skillScanPaths`,value:n,onChange:e=>r(e.target.value),placeholder:`skills, .claude/skills, user:codex`}),(0,K.jsx)(`span`,{className:`helper`,children:`用户目录仅支持 user:agents、user:codex、user:claude;不支持任意本机路径扫描。`})]}),(0,K.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:A,disabled:b||S,children:[(0,K.jsx)(Ye,{size:15}),(0,K.jsx)(`span`,{children:b?`正在扫描`:`扫描候选`})]}),O.length>0&&(0,K.jsxs)(`div`,{className:`skill-selection-toolbar`,children:[(0,K.jsxs)(`span`,{children:[`已选择 `,F,` / `,nz(O).size]}),(0,K.jsxs)(`span`,{className:`skill-selection-actions`,children:[(0,K.jsx)(`button`,{className:`button tertiary small`,type:`button`,onClick:M,disabled:S,children:`全选可导入`}),(0,K.jsx)(`button`,{className:`button tertiary small`,type:`button`,onClick:()=>c(new Set),disabled:!F||S,children:`清空选择`})]})]}),(0,K.jsx)(`div`,{className:`skill-discovery-list`,style:{marginTop:16},children:O.length===0?(0,K.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,K.jsx)(`p`,{children:i?`安全默认目录中没有发现 Skill。`:`点击扫描候选。`})}):O.map(e=>{let t=e.risk||{},n=[`ready`,`conflict`].includes(e.status),r=l[e.candidateId],i=r?.status===`succeeded`,a=e.status===`ready`?`可导入`:e.status===`conflict`?`已安装`:`无效`,s=e.diagnostics?.map(e=>e.message).join(`;`)||`${e.fileCount||0} 个文件 · ${uz(e.totalBytes||0)}`,c=r?.status===`succeeded`?`已导入`:r?.status===`failed`?`导入失败:${r.error||`未知错误`}`:h===e.candidateId?`正在导入`:S&&o.has(e.candidateId)?`等待导入`:``;return(0,K.jsxs)(`div`,{className:`skill-candidate${n?``:` invalid`}`,children:[(0,K.jsx)(`input`,{type:`checkbox`,"aria-label":`选择 ${e.displayName||e.name}`,disabled:!n||S||i,checked:o.has(e.candidateId),onChange:()=>j(e.candidateId)}),(0,K.jsx)(`span`,{className:`capability-icon`,children:(0,K.jsx)(nt,{size:15})}),(0,K.jsxs)(`span`,{className:`skill-candidate-copy`,children:[(0,K.jsx)(`strong`,{children:e.displayName||e.name}),(0,K.jsxs)(`span`,{children:[e.path,` · `,e.version||`版本无效`]}),(0,K.jsx)(`small`,{children:s}),c&&(0,K.jsx)(`small`,{className:`skill-import-state ${r?.status||`pending`}`,children:c})]}),(0,K.jsxs)(`span`,{className:`badge`,"data-state":e.status===`ready`?`ready`:`pending`,children:[a,t.requiresReview?` · 需复核`:``]}),n&&(0,K.jsxs)(`button`,{className:`button tertiary small skill-preview-button`,type:`button`,onClick:()=>D(e),children:[(0,K.jsx)(ge,{size:14}),(0,K.jsx)(`span`,{children:`查看详情`})]})]},e.candidateId)})}),d&&(0,K.jsx)(OD,{kind:d.failedIds.length?`warning`:`success`,title:d.failedIds.length?`已导入 ${d.succeededIds.length} 个,${d.failedIds.length} 个失败`:`已导入 ${d.succeededIds.length} 个 Skill`,message:d.failedIds.length?`失败项已保留选择,可修复后再次导入。`:`资源目录已刷新。`}),v&&(0,K.jsx)(OD,{kind:`error`,title:`Skill 发现或导入失败`,message:v}),w&&(0,K.jsx)(Ca,{title:`所选 Skill 中有 ${w.length} 个已安装`,description:`${w.map(e=>e.displayName||e.name).join(`、`)} 将被覆盖;旧版本会移入回收位置,可手工恢复。`,confirmText:`覆盖并继续`,danger:!1,onCancel:()=>T(null),onConfirm:()=>{let e=new Set(w.map(e=>e.candidateId));T(null),N(e)}}),E&&i?.inspectionToken&&(0,K.jsx)(SL,{title:E.displayName||E.name||`Skill`,endpoint:`/api/v1/catalog/skills/discoveries/${encodeURIComponent(i.inspectionToken)}/candidates/${encodeURIComponent(E.candidateId)}/files`,onClose:()=>D(null)})]})}function Cz({onClose:e,onAdded:t}){let n=p_({resolver:C_(QR),defaultValues:{displayName:``,name:``,callableName:``,description:``,sourceMode:`upload`,sourcePath:``}}),{sourceMode:r,name:i,callableName:a}=n.watch(),[o,c]=(0,s.useState)(null),[l,u]=(0,s.useState)(null),[d,f]=(0,s.useState)(``),[p,m]=(0,s.useState)(!1);async function h(){if(!o){f(`请先选择 Python 文件`);return}m(!0),f(``);try{let e=new FormData;e.append(`file`,o);let t=await g(`/api/v1/catalog/python-tools:inspect`,{method:`POST`,body:e});if(!t.ok)throw Error(await sz(t,`Python Tool 检查失败`));let r=await t.json(),i=r.callables?.[0];u(r);let a=o.name.replace(/\.py$/i,``).replace(/[^A-Za-z0-9_]+/g,`_`).replace(/^[^A-Za-z_]+/,`tool_`)||`python_tool`;n.setValue(`callableName`,i?.name||``,{shouldValidate:!0}),n.getValues(`name`)||n.setValue(`name`,a,{shouldValidate:!0}),n.getValues(`displayName`)||n.setValue(`displayName`,a,{shouldValidate:!0}),n.getValues(`description`)||n.setValue(`description`,i?.description||``)}catch(e){u(null),f(e.message||`Python Tool 检查失败`)}finally{m(!1)}}async function _(e){if(e.sourceMode===`upload`&&!l){n.setError(`callableName`,{type:`manual`,message:`请先完成 Python 文件检查`});return}m(!0),f(``);try{let r=e.sourceMode===`upload`?await g(`/api/v1/catalog/python-tools/${encodeURIComponent(l.inspectionToken)}:commit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({displayName:e.displayName.trim(),name:e.name.trim(),callableName:e.callableName.trim(),description:e.description.trim()})}):await g(`/api/v1/catalog/tools`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({displayName:e.displayName.trim(),category:`custom`,contract:{name:e.name.trim(),version:`1.0.0`,description:e.description.trim(),inputSchema:{type:`object`,properties:{}},outputSchema:{},approval:`policy`,sideEffect:`none`,executor:`python`,sourcePath:e.sourcePath.trim(),callableName:e.callableName.trim()}})}),i=await r.json().catch(()=>null);if(!r.ok){if(Db(i,n.setError)){m(!1);return}throw Error(i?.error?.message||`Tool 添加失败(${r.status})`)}Y(`Python Tool 已保存`,`${i.displayName||e.displayName.trim()} · SHA-256 已锁定`),t()}catch(e){f(e.message)}m(!1)}return(0,K.jsx)(Fg,{...n,children:(0,K.jsxs)(DD,{title:`添加 Python Tool`,subtitle:`源码先复制进 Catalog 并锁定 SHA-256,构建时进入不可变 Runtime 快照。`,onClose:e,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:e,children:`取消`}),(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:n.handleSubmit(_),disabled:p,children:[(0,K.jsx)(z,{size:15}),(0,K.jsx)(`span`,{children:p?`正在保存`:`保存 Tool`})]})]}),children:[(0,K.jsxs)(`div`,{className:`segmented-control python-tool-source-mode`,"aria-label":`Python Tool 源码方式`,children:[(0,K.jsx)(`button`,{className:r===`upload`?`selected`:``,type:`button`,onClick:()=>{n.setValue(`sourceMode`,`upload`,{shouldValidate:!0}),f(``)},children:`上传文件`}),(0,K.jsx)(`button`,{className:r===`workspace`?`selected`:``,type:`button`,onClick:()=>{n.setValue(`sourceMode`,`workspace`,{shouldValidate:!0}),f(``)},children:`工作区路径`})]}),(0,K.jsx)(UR,{}),r===`upload`?(0,K.jsx)(X,{label:`Python 文件`,requirement:`required`,hint:`拖放 .py 文件,或点击选择;检查只解析 AST,不会执行脚本。`,children:(0,K.jsxs)(`div`,{children:[(0,K.jsx)(VR,{ariaLabel:`选择 Python Tool 文件`,accept:{"text/x-python":[`.py`],"text/plain":[`.py`]},maxSize:1048576,file:o,onFile:e=>{c(e),u(null),n.setValue(`callableName`,``)},onError:f}),(0,K.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:h,disabled:!o||p,children:[(0,K.jsx)(Ye,{size:15}),(0,K.jsx)(`span`,{children:p?`检查中`:`只读检查 Callable`})]}),l&&(0,K.jsxs)(`div`,{className:`python-tool-inspection-summary`,children:[(0,K.jsx)(z,{size:15}),(0,K.jsxs)(`span`,{children:[`SHA-256 `,l.sha256.slice(0,12),`… · 发现 `,l.callables.length,` 个公开函数`]})]})]})}):(0,K.jsx)(X,{label:`工作区 Python 文件`,requirement:`required`,htmlFor:`ptSource`,hint:`仅允许当前工作区内的普通 .py 文件;符号链接会被拒绝。`,error:n.formState.errors.sourcePath?.message,children:(0,K.jsx)(`input`,{id:`ptSource`,placeholder:`tools/my_tool.py`,...n.register(`sourcePath`)})}),(0,K.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,K.jsx)(X,{label:`显示名称`,requirement:`required`,htmlFor:`ptDisplayName`,error:n.formState.errors.displayName?.message,children:(0,K.jsx)(`input`,{id:`ptDisplayName`,placeholder:`例如:订单查询`,...n.register(`displayName`)})}),(0,K.jsx)(X,{label:`Tool 标识`,requirement:`required`,htmlFor:`ptName`,error:n.formState.errors.name?.message,children:(0,K.jsx)(`input`,{id:`ptName`,className:`mono`,...n.register(`name`)})}),(0,K.jsx)(X,{label:`Callable`,requirement:`required`,htmlFor:`ptCallable`,error:n.formState.errors.callableName?.message,children:r===`upload`?(0,K.jsx)(kh,{id:`ptCallable`,ariaLabel:`Callable`,value:a,placeholder:l?`选择公开函数`:`请先检查文件`,disabled:!l,options:(l?.callables||[]).map(e=>({value:e.name,label:`${e.async?`async `:``}${e.name}(${e.parameters.join(`, `)})`,description:e.description||void 0})),onValueChange:e=>{n.setValue(`callableName`,e,{shouldDirty:!0,shouldValidate:!0});let t=l?.callables?.find(t=>t.name===e);t?.description&&n.setValue(`description`,t.description)}}):(0,K.jsx)(`input`,{id:`ptCallable`,className:`mono`,...n.register(`callableName`)})})]}),(0,K.jsx)(X,{label:`说明`,requirement:`optional`,htmlFor:`ptDesc`,error:n.formState.errors.description?.message,children:(0,K.jsx)(`textarea`,{id:`ptDesc`,rows:3,...n.register(`description`)})}),d&&(0,K.jsx)(OD,{kind:`error`,title:`Tool 添加失败`,message:d})]})})}function wz(e){let t=e?e():new Uint8Array(4);if(!e&&globalThis.crypto?.getRandomValues)globalThis.crypto.getRandomValues(t);else if(!e)for(let e=0;ee.toString(16).padStart(2,`0`)).join(``)}`}function Tz({value:e,onChange:t,error:n,generate:r=wz,id:i=`agent-slug`,label:a=`本地标识`}){return(0,K.jsx)(X,{htmlFor:i,label:a,requirement:`generated`,hint:`默认生成唯一的本地 ID;可手动修改,云端 AgentId 由部署服务另行映射。`,error:n,children:(0,K.jsxs)(`div`,{className:`generated-id-control`,children:[(0,K.jsx)(`input`,{id:i,value:e,onChange:e=>t(e.target.value),pattern:`[a-z][a-z0-9-]{2,62}`,maxLength:63,spellCheck:!1,autoComplete:`off`}),(0,K.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`重新生成本地标识`,title:`重新生成`,onClick:()=>t(r()),children:(0,K.jsx)(Je,{size:15})})]})})}var Ez={resolving_model:{text:`正在理解你的需求…`,tip:`分析对话内容,确定 Agent 的框架与能力`},generating:{text:`正在理解你的需求…`,tip:`分析对话内容,确定 Agent 的框架与能力`},codex_writing:{text:`Codex 正在编写 Agent 配置…`,tip:`AI 编程助手正在沙箱中编写 agentkit.yaml,通常需要 1-3 分钟,质量优先`},validating:{text:`正在校验配置…`,tip:`检查配置完整性:名称、模型、运行时与提示词`},correcting:{text:`正在修正配置…`,tip:`发现少量问题,正在按校验意见修正后重新生成`},done:{text:`方案生成完成`,tip:``},failed:{text:`生成失败`,tip:``}};function Dz(e){return e&&Ez[e]?.text||Ez.resolving_model.text}function Oz(e){return e&&Ez[e]?.tip||Ez.resolving_model.tip}function kz(e){if(e<60)return`${e}s`;let t=Math.floor(e/60),n=e%60;return n?`${t}m${n}s`:`${t}m`}function Az({stage:e,startedAt:t,testId:n=`authoring-stage-shimmer`}){let[r,i]=(0,s.useState)(()=>Date.now());(0,s.useEffect)(()=>{if(!t||e===`done`||e===`failed`)return;let n=window.setInterval(()=>i(Date.now()),1e3);return()=>window.clearInterval(n)},[t,e]);let a=Oz(e),o=t?kz(Math.max(0,Math.floor((r-t)/1e3))):null,c=e===`done`||e===`failed`;return(0,K.jsxs)(`span`,{className:`authoring-stage`,"data-testid":n,"data-stage":e||`unknown`,children:[(0,K.jsx)(`span`,{className:`text-shimmer`,children:Dz(e)}),o&&!c&&(0,K.jsxs)(`span`,{className:`authoring-stage-elapsed`,children:[`已等待 `,o]}),a&&!c&&(0,K.jsx)(`span`,{className:`authoring-stage-tip`,children:a})]})}var jz=`agentkit.studio.agentDraft.v1`;function Mz(e){return e?.requiredSecretRefs?.[0]||e?.contract?.credentialRef||e?.contract?.credential_ref||e?.contract?.requiredSecretRefs?.[0]||e?.contract?.required_secret_refs?.[0]||``}var Nz={loose:{title:`宽松权限策略`,description:`本地 Tool 全部自动允许,外部操作仍需审批。`},strict:{title:`严格权限策略`,description:`只读 Tool 自动允许,外部或写入操作需要审批。`},custom:{title:`自定义权限策略`,description:`沿用每个 Tool Contract 中配置的审批策略。`}},Pz=[{value:`codex`,label:`Codex · ManagedRuntime`},{value:`adk`,label:`Google ADK · Python source`},{value:`langgraph`,label:`LangGraph · Python graph`}],Fz=[[`定义 Agent`,`模板与系统提示词`],[`绑定能力`,`Model · Tool · MCP · Skill`],[`Prompt 与策略`,`检查并调整`],[`检查并创建`,`构建与打开会话`]],Iz=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`]),Lz=[`deepseek`,`glm`,`kimi`,`minimax`,`qwen`];function Rz(e){let t=String(e.contract?.model||e.name||``).toLowerCase(),n=t.includes(`/`)?t.split(`/`,2)[1]:t,r=n.replaceAll(`.`,`-`),i=Lz.findIndex(e=>r===e||r.startsWith(e===`qwen`?e:`${e}-`)),a=(n.match(/\d+/g)||[]).slice(0,8).map(e=>-Number(e));for(;a.length<8;)a.push(0);return[i<0?Lz.length:i,a,n]}function zz(e,t){let[n,r,i]=Rz(e),[a,o,s]=Rz(t);if(n!==a)return n-a;for(let e=0;enull);if(!t.ok)throw Error(n?.error?.message||`构建状态获取失败(${t.status})`);if(Iz.has(n?.status)){if(n.status!==`SUCCEEDED`)throw Error(n.error?.message||`构建未完成`);return n}await new Promise(e=>window.setTimeout(e,200))}throw Error(`构建等待超时`)}function Wz({editingAgentId:e,viewportMode:t,onCreated:n,onAgentsChanged:r}){let[i,a]=(0,s.useState)(`quick`),[o,c]=(0,s.useState)(!1),[l,u]=(0,s.useState)(`尚未保存`),[d,f]=(0,s.useState)([]),[p,m]=(0,s.useState)({}),[h,_]=(0,s.useState)(1),[v,y]=(0,s.useState)(1),b=p_({resolver:C_(mD),defaultValues:{name:`New Agent`,slug:wz(),runtimeType:`codex`,template:`blank`,prompt:``,description:``,audience:`产品与技术负责人`,language:`zh-CN`,depth:`deep`,format:`report`,systemPrompt:``,taskPrompt:``,buildAfterCreate:!0}}),{name:x,slug:S,runtimeType:C,template:w,description:T,prompt:E,audience:D,language:O,depth:k,format:M,systemPrompt:P,taskPrompt:F,buildAfterCreate:I}=b.watch(),[L,R]=(0,s.useState)([]),[B,V]=(0,s.useState)([]),[H,ee]=(0,s.useState)([]),[te,W]=(0,s.useState)([]),[ne,re]=(0,s.useState)(`strict`),[G,ie]=(0,s.useState)(`auto`),[ae,oe]=(0,s.useState)(`shadow`),[se,ce]=(0,s.useState)(!1),[le,ue]=(0,s.useState)(`shadow`),de=(0,s.useMemo)(()=>{let e={value:`auto`,label:`自动(推荐)`,description:`根据 Runtime 能力选择安全模式`};return C===`codex`?[e,{value:`native`,label:`原生 Runtime 管理`,description:`由 Codex 等原生 Runtime 管理最终上下文`}]:C===`langgraph`?[e,{value:`framework`,label:`框架管理`,description:`保留 LangGraph 原有行为`},{value:`ksadk`,label:`KsADK 管理`,description:`统一编译 Prompt 并规划上下文`}]:[e,{value:`framework`,label:`框架管理`,description:`保留 ADK 原有行为`}]},[C]),[pe,me]=(0,s.useState)(`idle`),[he,ge]=(0,s.useState)(`compose`),[_e,ve]=(0,s.useState)(``),[ye,be]=(0,s.useState)(!1),[xe,Ce]=(0,s.useState)(!1),[we,Te]=(0,s.useState)(null),[Ee,De]=(0,s.useState)(!1),Oe=(0,s.useRef)(null),ke=(0,s.useRef)(null),Ae=(0,s.useRef)(0),je=(0,s.useRef)(!1);(0,s.useEffect)(()=>{de.some(e=>e.value===G)||ie(`auto`)},[G,de]);let[Me,Pe]=(0,s.useState)([]),[Fe,Ie]=(0,s.useState)(``),[Re,Be]=(0,s.useState)(``),[Ve,Ue]=(0,s.useState)([]),[We,Ge]=(0,s.useState)([]),[Ke,Ze]=(0,s.useState)([]),[Qe,$e]=(0,s.useState)([]),[tt,rt]=(0,s.useState)(null),it=p_({resolver:C_(gD),defaultValues:{name:``,slug:wz(),runtimeType:`codex`,prompt:``,description:``,modelProfileId:void 0}}),[at,ot]=(0,s.useState)(!1),[st,ct]=(0,s.useState)(``),[lt,ut]=(0,s.useState)(``),[ft,mt]=(0,s.useState)(null),[gt,_t]=(0,s.useState)(null),[vt,yt]=(0,s.useState)(!1),bt=(0,s.useRef)(null);(0,s.useEffect)(()=>()=>bt.current?.abort(),[]);let[q,xt]=(0,s.useState)(null),[St,Ct]=(0,s.useState)(null),wt=p_({resolver:C_(_D),defaultValues:{name:``,slug:wz()}}),[Tt,Et]=(0,s.useState)(null),Dt=p_({resolver:C_(vD),defaultValues:{name:``,slug:wz(),path:`.`}}),Ot=Dt.watch(`path`),[kt,At]=(0,s.useState)(!1),[jt,Mt]=(0,s.useState)(``),Nt=(0,s.useCallback)(async()=>{try{let[e,t]=await Promise.all([g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()),g(`/api/v1/catalog/models`).then(e=>e.json()).catch(()=>null)]),n=e.items||[],r=n.filter(e=>e.kind===`model`&&(e.source===`local`||e.source===`market`)),i=t?.items?.length?[...r,...t.items]:n.filter(e=>e.kind===`model`);f([...i,...n.filter(e=>e.kind!==`model`)]);let a=[...new Set(i.map(Mz).filter(e=>e.startsWith(`env://`)))],o=await Promise.all(a.map(async e=>{let t=e.slice(6);try{let n=await g(`/api/v1/credentials/${encodeURIComponent(t)}`);return[e,n.ok?await n.json():{configured:!1}]}catch{return[e,{configured:!1}]}}));m(Object.fromEntries(o))}catch{}},[]);(0,s.useEffect)(()=>{Nt()},[Nt]);let Pt=(0,s.useMemo)(()=>d.filter(e=>e.kind===`model`&&[`ready`,`missing-secret`].includes(e.status)).sort(zz),[d]),Ft=(0,s.useMemo)(()=>d.filter(e=>e.kind===`tool`&&e.status===`ready`),[d]),It=(0,s.useMemo)(()=>d.filter(e=>e.kind===`mcp`),[d]),Lt=(0,s.useMemo)(()=>d.filter(e=>e.kind===`skill`&&e.status===`ready`),[d]),Rt=(0,s.useCallback)(e=>d.find(t=>t.resourceId===e),[d]),zt=(0,s.useCallback)(e=>{let t=Mz(e);return t?p[t]:void 0},[p]),Bt=(0,s.useCallback)(e=>e?zt(e)?.configured??e.status===`ready`:!1,[zt]),Vt=it.watch(`runtimeType`),Ht=(0,s.useMemo)(()=>Pt.map(e=>({value:e.resourceId,label:e.displayName,description:`${e.contract?.model||e.name} · ${Bt(e)?`凭证已配置`:`需配置凭证`}`})),[Bt,Pt]),Ut=(0,s.useMemo)(()=>Pt.find(e=>String(e.contract?.model||e.name).toLowerCase()===`deepseek-v4-flash`)?.resourceId||Pt[0]?.resourceId||``,[Pt]);(0,s.useEffect)(()=>{if(i!==`conversation`){je.current=!1;return}je.current||!Ut||(je.current=!0,Re||Be(Ut),Ve.length||Ue([Ut]))},[Ve.length,Re,i,Ut]);function Wt(e){let t=new Set(e),n=Pt.map(e=>e.resourceId).filter(e=>t.has(e));Ue(n),it.setValue(`modelProfileId`,n[0]||``,{shouldDirty:!0,shouldValidate:!0})}function Gt(){return`${jz}:local-workspace`}function Kt(){try{window.localStorage.setItem(Gt(),JSON.stringify({version:1,savedAt:new Date().toISOString(),mode:i,wizard:{step:h,maxStep:v,template:w,runtime:C,depth:k,selectedTools:B,selectedSkills:te,selectedMcp:H,selectedModels:L,policy:ne,contextOwnership:G,contextEngineRollout:ae,memoryEnabled:se,memoryWriteRollout:le},fields:{name:x,slug:S,description:T,prompt:E,audience:D,language:O,format:M,systemPrompt:P,taskPrompt:F,buildAfterCreate:I}})),u(`已保存 ${new Intl.DateTimeFormat(`zh-CN`,{hour:`2-digit`,minute:`2-digit`}).format(new Date)}`)}catch{}}function qt(){u(`有未保存更改`)}let Jt=(0,s.useCallback)(()=>({prompt:``,goal:E,description:T,taskPrompt:F,audience:D,language:O,depth:k,outputFormat:M,modelProfileId:L[0]||null,modelProfileIds:L,toolResourceIds:B,skillResourceIds:te,mcpResourceIds:H,policyTemplate:ne,executionStrategy:w===`research`?`plan-act-observe`:`direct`,maxSteps:w===`research`?28:12,timeoutSeconds:w===`research`?900:120}),[E,T,F,w,D,O,k,M,L,B,te,H,ne]),Yt=(0,s.useCallback)(async({preservePrompt:e=!0}={})=>{let t=++Ae.current;ge(`compose`),me(`composing`);try{let n=await g(`/api/v1/agent-templates/${w}:compose`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(Jt())}),r=await n.json();if(!n.ok)throw Error(r?.error?.message||`生成 Agent 配置失败(${n.status})`);if(t!==Ae.current)return;Oe.current=r;let i=r.spec?.bindings||{};V(C===`codex`?[]:(i.tools||[]).map(e=>e.resourceId)),W((i.skills||[]).map(e=>e.resourceId)),ee((i.mcpServers||[]).map(e=>e.resourceId));let a=i.modelProfileIds?.length?i.modelProfileIds:i.modelProfileId?[i.modelProfileId]:[];a.length&&R(a),(!e||!P.trim())&&b.setValue(`systemPrompt`,r.spec?.instructions?.system||E.trim(),{shouldDirty:!0}),(!e||!F.trim())&&b.setValue(`taskPrompt`,r.spec?.instructions?.task||``,{shouldDirty:!0}),me(`done`)}catch(e){t===Ae.current&&(me(`idle`),ve(e.message||`生成 Agent 配置失败`))}},[w,Jt,C,P,F,b]),Xt=(0,s.useCallback)(async()=>{let e=L[0];if(!e){ve(`请先选择用于优化 Prompt 的模型。`);return}let t=++Ae.current;ve(``),ge(`optimize`),me(`composing`);try{let n=[`请在不改变业务目标、Runtime 和已选能力的前提下,重写并增强这个 Agent 的角色与任务契约。`,`system 必须明确角色、目标、事实边界、失败处理和回答原则;task 必须明确每次请求的执行步骤、约束和交付结构。`,`不要返回解释,只生成可审查的 Agent Draft Patch。`,`Agent 名称:${x.trim()||`未命名 Agent`}`,`业务描述:${T.trim()||`未填写`}`,`原始目标:${E.trim()}`,`当前角色与系统提示词:${P.trim()||`未生成`}`,`当前任务契约:${F.trim()||`未生成`}`].join(` - -`),r=`quick-optimize-${Date.now()}-${Math.random().toString(36).slice(2,10)}`,i=await g(`/api/v1/authoring/conversations:compose`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messages:[{role:`user`,content:n}],modelProfileId:e,runtimeType:C,agentModelProfileIds:L,agentDefaultModelProfileId:e,toolResourceIds:C===`codex`?[]:B,mcpResourceIds:H,skillResourceIds:te,requestId:r})}),a=await i.json().catch(()=>null);if(!i.ok)throw Error(a?.error?.message||`优化 Prompt 失败(${i.status})`);if(t!==Ae.current)return;if(a?.fallback?.active)throw Error(`生成模型暂时不可用,已保留当前角色与任务契约,请稍后重试。`);let o=a?.proposal?.spec||{},s=String(o.instructions?.system||a?.proposal?.instructions?.system||``).trim(),c=String(o.instructions?.task||a?.proposal?.instructions?.task||``).trim();if(!s||!c)throw Error(`生成模型没有同时返回角色提示词与任务契约,已保留当前内容。`);b.setValue(`systemPrompt`,s,{shouldDirty:!0,shouldValidate:!0}),b.setValue(`taskPrompt`,c,{shouldDirty:!0,shouldValidate:!0}),Oe.current?.spec&&(Oe.current={...Oe.current,spec:{...Oe.current.spec,instructions:{system:s,task:c}}}),qt(),me(`done`)}catch(e){t===Ae.current&&(me(`done`),ve(e.message||`优化 Prompt 失败,已保留当前内容。`))}},[T,x,E,b,C,H,L,te,B,P,F]);async function Zt(e){if(!(e<1||e>4)){if(e>h){if(h===1&&!await b.trigger([`name`,`slug`,`runtimeType`,`prompt`,`audience`],{shouldFocus:!0})){ve(`请修正标记字段后继续。`);return}if(h===2&&!L.length){ve(`请至少选择一个模型后继续。`);return}}ve(``),e===3&&pe===`idle`&&Yt({preservePrompt:!0}),_(e),y(t=>Math.max(t,e)),qt()}}async function Qt(e){ve(``),be(!0);try{if(Oe.current||await Yt({preservePrompt:!1}),!Oe.current)throw Error(`未能生成 Agent 配置,请检查模板和能力绑定后重试。`);let t=JSON.parse(JSON.stringify(Oe.current?.spec||{}));t.instructions={system:e.systemPrompt.trim(),task:e.taskPrompt.trim()},t.description=e.description.trim()||t.description,t.context={...t.context||{},ownership:G,promptOwnership:G===`ksadk`?`ksadk`:G===`framework`?`framework`:t.context?.promptOwnership||`framework`,rollout:{...t.context?.rollout||{},contextEngine:ae,memoryWrite:se?le:`off`}},t.memory={...t.memory||{},enabled:se,recall:{...t.memory?.recall||{},enabled:se}};let r=await g(`/api/v1/authoring/quick`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e.name.trim(),slug:e.slug.trim(),runtimeType:e.runtimeType,description:t.description,template:e.template,spec:t})}),i=await r.json().catch(()=>null);if(!r.ok){if(Db(i,b.setError)){_(1);return}throw Error(i?.error?.message||`创建失败(${r.status})`)}let a=String(i?.metadata?.id||``);if(!a)throw Error(`创建响应未返回 Agent 标识`);if(e.buildAfterCreate){let e=Number(i?.metadata?.revision||1),t=await g(`/api/v1/agents/${encodeURIComponent(a)}/builds`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":`build-${a}-r${e}-${Date.now()}`},body:JSON.stringify({revision:e,runEvaluation:!1})}),n=await t.json().catch(()=>null);if(!t.ok)throw Error(n?.error?.message||`构建提交失败(${t.status})`);let r=String(n?.id||``);if(!r)throw Error(`构建响应未返回操作标识`);await Uz(r)}try{window.localStorage.removeItem(Gt())}catch{}n(a,e.buildAfterCreate)}catch(e){ve(e.message||`创建失败`)}finally{be(!1)}}async function $t(){let e=Fe.trim();if(!e||!Re||!Ve.length){ct(`请输入需求并选择用于构建的模型。`);return}if(at)return;ct(``),ut(``);let t=[...Me,{role:`user`,content:e}];Pe(t),Ie(``),ot(!0),_t(Date.now());let n=`conv-${Date.now()}-${Math.random().toString(36).slice(2,10)}`;mt(`resolving_model`),en(n);try{let e=await g(`/api/v1/authoring/conversations:compose`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messages:t,modelProfileId:Re,runtimeType:Vt,agentModelProfileIds:Ve,agentDefaultModelProfileId:Ve[0]||null,toolResourceIds:Vt===`codex`?[]:We,mcpResourceIds:Ke,skillResourceIds:Qe,requestId:n})}),r=await e.json();if(!e.ok)throw Error(r?.error?.message||`生成失败(${e.status})`);mt(`done`),r?.fallback?.active&&ut(`所选生成模型暂时未能返回可用草稿。Studio 已按当前对话和你选定的 Runtime、模型与能力资源生成可编辑的本地兜底草稿;确认创建前请检查并补全。`),rt(r.proposal),yt(!1);let i=r.proposal.spec||{description:r.proposal.description||``,instructions:r.proposal.instructions||{}};it.reset({name:r.proposal.name||``,slug:wz(),runtimeType:Vt,prompt:i.instructions?.system||``,description:i.description||r.proposal.description||``,modelProfileId:i.bindings?.modelProfileId||Ve[0]}),Pe([...t,{role:`assistant`,content:JSON.stringify(Vz(r.proposal))}])}catch(e){mt(`failed`),ct(e.message||`对话构建失败`)}finally{bt.current?.abort(),bt.current=null,ot(!1)}}function en(e){let t=new AbortController;return bt.current?.abort(),bt.current=t,(async()=>{for(;!t.signal.aborted;){if(await new Promise(e=>window.setTimeout(e,800)),t.signal.aborted)return;try{let n=await g(`/api/v1/authoring/conversations:status/${encodeURIComponent(e)}`,{signal:t.signal});if(!n.ok)continue;let r=await n.json();r?.stage&&mt(String(r.stage))}catch{return}}})(),t}async function tn(e){if(tt){ot(!0),ct(``);try{let t=tt.spec||{description:tt.description||``,instructions:tt.instructions||{}},r=Ve[0]||e.modelProfileId||null,i=Ve.length?Ve:r?[r]:[],a=e.runtimeType===`codex`?[]:We,o=Hz(t,{description:e.description?.trim()||t.description||tt.description||``,runtime:null,model:null,instructions:{system:e.prompt.trim(),task:t.instructions?.task||``},bindings:{modelProfileId:r,modelProfileIds:i,modelParameters:null,policyTemplate:`strict`,tools:a.map(e=>({resourceId:e})),mcpServers:Ke.map(e=>({resourceId:e})),skills:Qe.map(e=>({resourceId:e}))}}),s=await g(`/api/v1/authoring/quick`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e.name.trim(),slug:e.slug.trim(),runtimeType:e.runtimeType,description:o.description,spec:o})}),c=await s.json().catch(()=>null);if(!s.ok){if(Db(c,it.setError))return;throw Error(c?.error?.message||`创建失败(${s.status})`)}n(c?.metadata?.id)}catch(e){ct(e.message||`创建失败`)}finally{ot(!1)}}}async function nn(){if(q){At(!0),Mt(``);try{let e=new FormData;e.append(`file`,q);let t=await g(`/api/v1/authoring/imports:inspect`,{method:`POST`,body:e}),n=await t.json();if(!t.ok)throw Error(n?.error?.message||`检查失败(${t.status})`);Ct(n),wt.reset({name:n.displayName||``,slug:wz()})}catch(e){Mt(e.message)}finally{At(!1)}}}async function rn(e){if(St){At(!0),Mt(``);try{let t=await g(`/api/v1/authoring/imports/${encodeURIComponent(St.inspectionToken)}:commit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e.name.trim(),slug:e.slug.trim()||void 0})}),r=await t.json();if(!t.ok){if(Db(r,wt.setError))return;throw Error(r?.error?.message||`导入失败(${t.status})`)}n(r?.metadata?.id)}catch(e){Mt(e.message)}finally{At(!1)}}}async function an(){if(await Dt.trigger(`path`)){At(!0),Mt(``);try{let e=await g(`/api/v1/authoring/projects:inspect`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:Ot.trim()})}),t=await e.json();if(!e.ok)throw Error(t?.error?.message||`检测失败(${e.status})`);Et(t),Dt.reset({name:t.name||`Detected Agent`,slug:wz(),path:Ot})}catch(e){Mt(e.message)}finally{At(!1)}}}async function on(e){if(Tt){At(!0),Mt(``);try{let t=await g(`/api/v1/authoring/projects/${encodeURIComponent(Tt.inspectionToken)}:commit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e.name.trim(),slug:e.slug.trim()||void 0,modelProfileId:Pt[0]?.resourceId||null})}),r=await t.json();if(!t.ok){if(Db(r,Dt.setError))return;throw Error(r?.error?.message||`创建失败(${t.status})`)}n(r?.metadata?.id)}catch(e){Mt(e.message)}finally{At(!1)}}}let sn=w===`research`?`深度调研`:`空白 Agent`,cn={codex:`Codex`,adk:`ADK`,langgraph:`LangGraph`}[C]||C,ln=Nz[ne],un=L.map(e=>Rt(e)?.displayName||e).join(`、`)||`待选择`,dn=L.map(Rt).filter(e=>!!e),fn=dn.length===0?`未选择模型;Agent 可以先构建,但运行前需要配置。`:dn.every(Bt)?`已选 ${dn.length} 个模型 · 凭证已配置`:`部分模型凭证未配置;Agent 可以先构建,但运行前需要配置 API Key。`,pn=dn.some(e=>!Bt(e)),mn=C===`codex`,hn=mn?[...Fz.slice(0,3),[`检查并创建`,`校验声明与打开会话`]]:Fz,gn=(0,s.useCallback)((e=!1)=>{c(!1),e&&requestAnimationFrame(()=>ke.current?.focus())},[]);(0,s.useEffect)(()=>{t!==`compact`&&gn()},[gn,t]);function _n(e){a(e),t===`compact`&&gn(!0)}let vn=[{id:`quick`,icon:ht,label:`快速创建`,sub:`配置 YAML Revision`},{id:`conversation`,icon:Ne,label:`对话构建`,sub:`多轮生成 Draft Patch`},{id:`import`,icon:dt,label:`导入`,sub:`YAML / Agent ZIP`},{id:`project`,icon:Se,label:`项目识别`,sub:`检测 ADK / LangGraph`}],yn=!e&&i===`conversation`?`workbench`:`document`,bn=t=>(0,K.jsxs)(`div`,{className:`create-rail-panel`,children:[t&&(0,K.jsx)(`div`,{className:`create-rail-label`,children:`创建方式`}),!e&&(0,K.jsx)(`nav`,{className:`authoring-mode-tabs`,"aria-label":`创建方式`,role:`tablist`,children:vn.map(e=>{let t=e.icon;return(0,K.jsxs)(`button`,{id:`authoring-tab-${e.id}`,className:i===e.id?`active`:``,type:`button`,role:`tab`,"aria-selected":i===e.id,"aria-controls":`authoring-panel-${e.id}`,title:`${e.label}:${e.sub}`,onClick:()=>_n(e.id),children:[(0,K.jsx)(t,{size:16}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:e.label}),(0,K.jsx)(`small`,{children:e.sub})]})]},e.id)})}),(e||i===`quick`)&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`create-rail-divider`}),(0,K.jsx)(`div`,{className:`create-rail-label wizard-step-label`,children:`配置步骤`}),(0,K.jsx)(`nav`,{className:`wizard-steps`,"aria-label":`创建步骤`,children:hn.map((t,n)=>{let r=n+1,i=!e&&rv,onClick:()=>Zt(r),children:[(0,K.jsx)(`span`,{className:`step-number`,children:i?(0,K.jsx)(z,{size:13,strokeWidth:3}):r}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:t[0]}),(0,K.jsx)(`small`,{children:t[1]})]})]},r)})})]})]});return(0,K.jsxs)(`div`,{className:`create-shell page-container`,"data-layout":yn,"data-authoring-mode":i,"data-editing":e?`true`:`false`,children:[(0,K.jsxs)(gd,{children:[!e&&t===`compact`&&(0,K.jsx)(`button`,{ref:ke,className:`icon-button compact-create-rail-trigger`,type:`button`,"aria-label":`查看创建入口与配置步骤`,title:`查看创建入口与配置步骤`,"aria-expanded":o,"aria-controls":`createRail`,onClick:()=>c(e=>!e),children:(0,K.jsx)(He,{size:16})}),!e&&i===`quick`&&(0,K.jsx)(`span`,{className:`tag`,children:l})]}),(0,K.jsxs)(`div`,{className:`create-workbench`,children:[!e&&t!==`compact`&&(0,K.jsx)(`aside`,{id:`createRail`,className:`create-rail`,"aria-label":`创建方式与步骤`,children:bn(!0)}),!e&&t===`compact`&&o&&(0,K.jsx)(Sa,{open:!0,compact:!0,title:`创建方式`,subtitle:`切换创建入口,或查看当前配置步骤。`,onOpenChange:e=>{e||gn(!0)},children:(0,K.jsx)(`div`,{id:`createRail`,children:bn(!1)})}),(0,K.jsxs)(`div`,{className:`create-stage`,children:[e&&(0,K.jsx)(ED,{agentId:e,catalog:d,onSaved:(e,t)=>n(e,t),onAppearanceSaved:r}),!e&&i===`conversation`&&(0,K.jsxs)(`section`,{id:`authoring-panel-conversation`,className:`authoring-mode-panel`,role:`tabpanel`,"aria-labelledby":`authoring-tab-conversation`,children:[(0,K.jsxs)(`div`,{className:`authoring-panel-heading conversation-panel-heading`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`eyebrow`,children:`Conversation authoring`}),(0,K.jsx)(`h2`,{children:`对话创建 Agent`}),(0,K.jsx)(`p`,{children:`描述目标,逐轮完善;准备好后再检查并确认草稿。`})]}),(0,K.jsx)(`span`,{className:`tag`,children:`不会自动创建`})]}),(0,K.jsxs)(`div`,{className:`conversation-authoring-layout`,"data-draft-state":tt?vt?`review`:`summary`:`empty`,children:[(0,K.jsxs)(`section`,{className:`conversation-chat`,"aria-label":`对话创建`,children:[(0,K.jsxs)(`div`,{className:`conversation-chat-header`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`从需求开始`}),(0,K.jsx)(`p`,{children:`像对话一样说明要做什么;后续可以继续补充边界和能力。`})]}),(0,K.jsx)(`span`,{className:`conversation-context-state`,children:Me.length?`${Math.ceil(Me.length/2)} 轮上下文`:`持续保留上下文`})]}),(0,K.jsxs)(`div`,{className:`conversation-transcript`,"aria-live":`polite`,children:[Me.length===0&&(0,K.jsxs)(`div`,{className:`conversation-empty-state`,children:[(0,K.jsx)(nt,{size:18,"aria-hidden":`true`}),(0,K.jsx)(`strong`,{children:`从一句需求开始`}),(0,K.jsx)(`p`,{children:`例如:帮我做一个销售日报 Agent,能汇总群聊记录并标出待跟进事项。`})]}),Me.map((e,t)=>{let n=e.role===`user`?null:Bz(e.content);return(0,K.jsx)(`div`,{className:`conversation-message ${e.role===`user`?`user`:`assistant`}`,children:e.role===`user`?(0,K.jsx)(`p`,{children:e.content}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`strong`,{children:n?.title}),(0,K.jsx)(`p`,{children:n?.body})]})},t)}),at&&(0,K.jsxs)(`div`,{className:`conversation-thinking`,role:`status`,children:[(0,K.jsxs)(`span`,{className:`conversation-thinking-orb`,"aria-hidden":`true`,children:[(0,K.jsx)(`i`,{}),(0,K.jsx)(`i`,{}),(0,K.jsx)(`i`,{})]}),(0,K.jsx)(Az,{stage:ft,startedAt:gt})]})]}),st&&(0,K.jsxs)(`div`,{className:`inline-alert error`,children:[(0,K.jsx)(U,{size:16}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`对话构建失败`}),(0,K.jsx)(`p`,{children:st})]})]}),lt&&(0,K.jsxs)(`div`,{className:`inline-alert warning`,role:`status`,children:[(0,K.jsx)(U,{size:16}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`已生成本地兜底草稿`}),(0,K.jsx)(`p`,{children:lt})]})]}),(0,K.jsxs)(`form`,{className:`conversation-composer`,onSubmit:e=>{e.preventDefault(),$t()},children:[(0,K.jsx)(`textarea`,{rows:3,placeholder:`描述你想创建或调整的 Agent…`,value:Fe,onChange:e=>Ie(e.target.value),onKeyDown:e=>{let t=e.nativeEvent;e.key===`Enter`&&!e.shiftKey&&!t.isComposing&&t.keyCode!==229&&(e.preventDefault(),$t())}}),(0,K.jsxs)(`div`,{className:`conversation-composer-footer`,children:[(0,K.jsxs)(`span`,{children:[`Enter 发送 `,(0,K.jsx)(`b`,{children:`·`}),` Shift + Enter 换行`]}),(0,K.jsx)(`button`,{className:`conversation-send-button`,type:`submit`,disabled:at||!Fe.trim(),"aria-label":at?`正在生成`:`生成方案`,title:at?`正在生成`:`生成方案`,children:(0,K.jsx)(Xe,{size:16,"aria-hidden":`true`})})]})]}),(0,K.jsxs)(`details`,{className:`conversation-settings`,children:[(0,K.jsxs)(`summary`,{children:[(0,K.jsx)(`span`,{children:`部署配置`}),(0,K.jsxs)(`small`,{children:[Pz.find(e=>e.value===Vt)?.label.split(` · `)[0]||`Runtime`,` · `,Ve.length||0,` 个模型 · `,Qe.length+Ke.length+(Vt===`codex`?0:We.length),` 项能力`]})]}),(0,K.jsxs)(`div`,{className:`conversation-settings-body`,children:[(0,K.jsx)(X,{label:`生成模型 Profile`,className:`authoring-model-field`,footer:(0,K.jsx)(`span`,{children:`只决定本次如何生成草稿;默认 DeepSeek V4 Flash。`}),children:(0,K.jsx)(kh,{ariaLabel:`选择用于生成草稿的模型`,value:Re,options:Ht,onValueChange:Be})}),(0,K.jsx)(X,{label:`Runtime`,requirement:`required`,htmlFor:`conversationRuntime`,error:it.formState.errors.runtimeType?.message,children:(0,K.jsx)(kh,{id:`conversationRuntime`,ariaLabel:`Runtime`,value:Vt,options:Pz,onValueChange:e=>it.setValue(`runtimeType`,e,{shouldDirty:!0,shouldValidate:!0})})}),(0,K.jsx)(X,{label:`Agent 可用模型`,className:`authoring-model-field`,footer:(0,K.jsx)(`span`,{children:`可多选;按目录中最新的模型作为运行默认值。`}),children:(0,K.jsx)(yb,{ariaLabel:`选择对话 Agent 模型`,items:Pt,selectedIds:Ve,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.contract?.model||e.name} · ${Bt(e)?`凭证已配置`:`需配置凭证`}`,onChange:Wt,searchPlaceholder:`搜索 Agent 模型`,emptyMessage:`没有可用模型`})}),(0,K.jsx)(X,{label:`Skill`,className:`authoring-model-field`,children:(0,K.jsx)(yb,{ariaLabel:`选择对话 Agent Skill`,items:Lt,selectedIds:Qe,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.version} · ${e.description||`版本化 Skill`}`,onChange:$e,searchPlaceholder:`搜索 Skill`,emptyMessage:`没有已安装的 Skill`})}),(0,K.jsx)(X,{label:`MCP Server`,className:`authoring-model-field`,children:(0,K.jsx)(yb,{ariaLabel:`选择对话 Agent MCP Server`,items:It,selectedIds:Ke,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.description||`MCP Server`} · ${e.health?.toolCount||0} Tool`,onChange:Ze,searchPlaceholder:`搜索 MCP Server`,emptyMessage:`没有已连接的 MCP Server`})}),Vt===`codex`?(0,K.jsx)(`p`,{className:`helper conversation-runtime-note`,children:`Codex 使用原生工具、MCP 和 Skill;KsADK Tool 仅绑定到 ADK / LangGraph 通用 Agent。`}):(0,K.jsx)(X,{label:`KsADK Tool`,className:`authoring-model-field`,children:(0,K.jsx)(yb,{ariaLabel:`选择对话 Agent Tool`,items:Ft,selectedIds:We,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.version} · ${e.description||`本地 Tool`}`,onChange:Ge,searchPlaceholder:`搜索 Tool`,emptyMessage:`没有可用 Tool`})})]})]})]}),(0,K.jsx)(Fg,{...it,children:(0,K.jsxs)(`aside`,{className:`conversation-draft-rail${tt?vt?` is-reviewing`:``:` is-empty`}`,"aria-label":`Draft Patch`,children:[(0,K.jsxs)(`div`,{className:`conversation-draft-rail-heading`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`Draft Patch`}),(0,K.jsx)(`p`,{children:tt?`草稿已随对话更新`:`对话后生成,可随时检查`})]}),(0,K.jsx)(`span`,{className:`badge`,"data-state":tt?`ready`:`pending`,children:tt?`已更新`:`待生成`})]}),tt?vt?(0,K.jsxs)(`form`,{className:`conversation-review-form`,onSubmit:it.handleSubmit(tn),noValidate:!0,children:[(0,K.jsxs)(`div`,{className:`conversation-review-heading`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`检查并确认`}),(0,K.jsx)(`p`,{children:`编辑名称、提示词或打开左侧部署配置;确认后才会创建 Revision。`})]}),(0,K.jsx)(`button`,{type:`button`,className:`button secondary`,onClick:()=>yt(!1),children:`收起`})]}),(0,K.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,K.jsx)(X,{label:`显示名称`,requirement:`required`,htmlFor:`conversationName`,error:it.formState.errors.name?.message,children:(0,K.jsx)(`input`,{id:`conversationName`,...it.register(`name`)})}),(0,K.jsx)(Tz,{id:`conversationSlug`,value:it.watch(`slug`),onChange:e=>it.setValue(`slug`,e,{shouldDirty:!0,shouldValidate:!0}),error:it.formState.errors.slug?.message})]}),(0,K.jsx)(X,{label:`系统提示词`,requirement:`required`,htmlFor:`conversationPrompt`,error:it.formState.errors.prompt?.message,children:(0,K.jsx)(`textarea`,{id:`conversationPrompt`,rows:8,...it.register(`prompt`)})}),(0,K.jsx)(`div`,{className:`authoring-card-actions`,children:(0,K.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:at,children:[(0,K.jsx)(z,{size:16}),(0,K.jsx)(`span`,{children:`确认并创建 Revision`})]})})]}):(0,K.jsxs)(`div`,{className:`conversation-draft-summary`,children:[(0,K.jsxs)(`div`,{className:`conversation-draft-title`,children:[(0,K.jsx)(N,{size:18,"aria-hidden":`true`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:it.watch(`name`)||tt.name}),(0,K.jsx)(`p`,{children:it.watch(`description`)||tt.description||`已生成可编辑的 Agent 草稿`})]})]}),(0,K.jsxs)(`div`,{className:`conversation-preview-section`,children:[(0,K.jsx)(`span`,{children:`角色与系统提示词`}),(0,K.jsx)(`p`,{children:it.watch(`prompt`)||tt?.spec?.instructions?.system||`尚未生成`})]}),(0,K.jsxs)(`div`,{className:`conversation-preview-section`,children:[(0,K.jsx)(`span`,{children:`任务契约`}),(0,K.jsx)(`p`,{children:tt?.spec?.instructions?.task||`根据对话目标完成任务。`})]}),(0,K.jsxs)(`div`,{className:`conversation-draft-tags`,children:[(0,K.jsx)(`span`,{children:Pz.find(e=>e.value===Vt)?.label.split(` · `)[0]||`Runtime`}),(0,K.jsxs)(`span`,{children:[Ve.length,` 个模型`]}),Qe.length+Ke.length+(Vt===`codex`?0:We.length)>0&&(0,K.jsxs)(`span`,{children:[Qe.length+Ke.length+(Vt===`codex`?0:We.length),` 项能力`]})]}),(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>yt(!0),children:[(0,K.jsx)(He,{size:16}),(0,K.jsx)(`span`,{children:`编辑并创建`})]})]}):(0,K.jsxs)(`div`,{className:`conversation-draft-empty`,children:[(0,K.jsx)(N,{size:20,"aria-hidden":`true`}),(0,K.jsx)(`strong`,{children:`从对话开始`}),(0,K.jsx)(`p`,{children:`先描述目标。草稿会在这里显示摘要,不会自动创建 Agent。`})]})]})})]})]}),!e&&i===`import`&&(0,K.jsxs)(`section`,{id:`authoring-panel-import`,className:`authoring-mode-panel`,role:`tabpanel`,"aria-labelledby":`authoring-tab-import`,children:[(0,K.jsxs)(`div`,{className:`authoring-panel-heading`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`eyebrow`,children:`Agent import`}),(0,K.jsx)(`h2`,{children:`检查并导入 Agent`}),(0,K.jsx)(`p`,{children:`先解析格式、Runtime、文件清单和 SHA-256,确认后再写入。`})]}),(0,K.jsx)(`span`,{className:`tag`,children:`YAML / ZIP`})]}),(0,K.jsxs)(`div`,{className:`authoring-inspect-grid`,children:[(0,K.jsxs)(`form`,{className:`authoring-input-card`,onSubmit:e=>{e.preventDefault(),nn()},children:[(0,K.jsxs)(`div`,{className:`authoring-section-heading`,children:[(0,K.jsx)(`span`,{className:`authoring-section-index`,children:`01`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`选择 Agent 文件`}),(0,K.jsx)(`p`,{children:`支持 YAML 或 ZIP;检查过程不会写入 Catalog。`})]})]}),(0,K.jsx)(X,{label:`Agent 文件`,requirement:`required`,hint:`拖放 Agent YAML / ZIP,或点击选择`,children:(0,K.jsx)(`div`,{children:(0,K.jsx)(VR,{ariaLabel:`选择 Agent YAML 或 ZIP`,accept:{"application/zip":[`.zip`],"application/yaml":[`.yaml`,`.yml`],"text/yaml":[`.yaml`,`.yml`]},maxSize:104857600,file:q,onFile:e=>{xt(e),Ct(null)},onError:Mt})})}),(0,K.jsx)(`div`,{className:`authoring-card-actions`,children:(0,K.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:kt,children:[(0,K.jsx)(Ye,{size:16}),(0,K.jsx)(`span`,{children:kt?`检查中`:`只读检查`})]})})]}),(0,K.jsx)(Fg,{...wt,children:(0,K.jsxs)(`form`,{className:`authoring-inspection-card`,onSubmit:wt.handleSubmit(rn),noValidate:!0,children:[(0,K.jsxs)(`div`,{className:`authoring-section-heading`,children:[(0,K.jsx)(`span`,{className:`authoring-section-index`,children:`02`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`检查并确认`}),(0,K.jsx)(`p`,{children:`核对解析结果、警告与 RuntimeRef,再执行导入。`})]}),(0,K.jsx)(`span`,{className:`badge`,"data-state":St?`ready`:`pending`,"aria-live":`polite`,children:St?`检查完成`:`等待检查`})]}),(0,K.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,K.jsx)(X,{label:`显示名称`,requirement:`required`,htmlFor:`importName`,error:wt.formState.errors.name?.message,children:(0,K.jsx)(`input`,{id:`importName`,...wt.register(`name`)})}),(0,K.jsx)(Tz,{id:`importSlug`,value:wt.watch(`slug`),onChange:e=>wt.setValue(`slug`,e,{shouldDirty:!0,shouldValidate:!0}),error:wt.formState.errors.slug?.message})]}),(0,K.jsx)(xb,{code:St?JSON.stringify(St,null,2):`选择文件并检查后显示解析结果、警告和 RuntimeRef。`,language:St?`json`:`text`,filename:`agent-import-inspection.json`,showLineNumbers:!!St,wrap:!St}),(0,K.jsx)(`div`,{className:`authoring-card-actions`,children:(0,K.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:!St||kt,children:[(0,K.jsx)(z,{size:16}),(0,K.jsx)(`span`,{children:`确认导入`})]})})]})})]}),jt&&(0,K.jsxs)(`div`,{className:`inline-alert error`,children:[(0,K.jsx)(U,{size:16}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`操作失败`}),(0,K.jsx)(`p`,{children:jt})]})]})]}),!e&&i===`project`&&(0,K.jsxs)(`section`,{id:`authoring-panel-project`,className:`authoring-mode-panel`,role:`tabpanel`,"aria-labelledby":`authoring-tab-project`,children:[(0,K.jsxs)(`div`,{className:`authoring-panel-heading`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`eyebrow`,children:`Project detection`}),(0,K.jsx)(`h2`,{children:`识别现有项目`}),(0,K.jsx)(`p`,{children:`复用 FrameworkDetector 展示证据和置信度;确认前不修改源码。`})]}),(0,K.jsx)(`span`,{className:`tag`,children:`Workspace only`})]}),(0,K.jsx)(Fg,{...Dt,children:(0,K.jsxs)(`div`,{className:`authoring-inspect-grid`,children:[(0,K.jsxs)(`form`,{className:`authoring-input-card`,onSubmit:e=>{e.preventDefault(),an()},children:[(0,K.jsxs)(`div`,{className:`authoring-section-heading`,children:[(0,K.jsx)(`span`,{className:`authoring-section-index`,children:`01`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`指定项目路径`}),(0,K.jsx)(`p`,{children:`仅识别当前工作区内的目录,不会修改项目源码。`})]})]}),(0,K.jsx)(X,{label:`工作区相对路径`,requirement:`required`,htmlFor:`projectPath`,hint:`仅检查当前工作区内的目录,不会修改项目源码。`,error:Dt.formState.errors.path?.message,children:(0,K.jsx)(`input`,{id:`projectPath`,...Dt.register(`path`)})}),(0,K.jsx)(`div`,{className:`authoring-card-actions`,children:(0,K.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:kt,children:[(0,K.jsx)(Ye,{size:16}),(0,K.jsx)(`span`,{children:kt?`检测中`:`检测项目`})]})})]}),(0,K.jsxs)(`form`,{className:`authoring-inspection-card`,onSubmit:Dt.handleSubmit(on),noValidate:!0,children:[(0,K.jsxs)(`div`,{className:`authoring-section-heading`,children:[(0,K.jsx)(`span`,{className:`authoring-section-index`,children:`02`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`检查并确认`}),(0,K.jsx)(`p`,{children:`核对 FrameworkDetector 证据与置信度,再创建 Revision。`})]}),(0,K.jsx)(`span`,{className:`badge`,"data-state":Tt?`ready`:`pending`,"aria-live":`polite`,children:Tt?`检测完成`:`等待检测`})]}),(0,K.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,K.jsx)(X,{label:`显示名称`,requirement:`required`,htmlFor:`projectName`,error:Dt.formState.errors.name?.message,children:(0,K.jsx)(`input`,{id:`projectName`,...Dt.register(`name`)})}),(0,K.jsx)(Tz,{id:`projectSlug`,value:Dt.watch(`slug`),onChange:e=>Dt.setValue(`slug`,e,{shouldDirty:!0,shouldValidate:!0}),error:Dt.formState.errors.slug?.message})]}),(0,K.jsx)(xb,{code:Tt?JSON.stringify(Tt,null,2):`输入本地项目路径后显示 FrameworkDetector 证据。`,language:Tt?`json`:`text`,filename:`project-inspection.json`,showLineNumbers:!!Tt,wrap:!Tt}),(0,K.jsx)(`div`,{className:`authoring-card-actions`,children:(0,K.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:!Tt||kt,children:[(0,K.jsx)(z,{size:16}),(0,K.jsx)(`span`,{children:`确认创建 Revision`})]})})]})]})}),jt&&(0,K.jsxs)(`div`,{className:`inline-alert error`,children:[(0,K.jsx)(U,{size:16}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`操作失败`}),(0,K.jsx)(`p`,{children:jt})]})]})]}),!e&&i===`quick`&&(0,K.jsxs)(`div`,{id:`authoring-panel-quick`,className:`wizard-layout`,role:`tabpanel`,"aria-labelledby":`authoring-tab-quick`,children:[(0,K.jsx)(Fg,{...b,children:(0,K.jsxs)(`form`,{id:`quickAgentForm`,className:`wizard-content`,onSubmit:b.handleSubmit(Qt),noValidate:!0,children:[(0,K.jsxs)(`section`,{className:`wizard-panel${h===1?` active`:``}`,hidden:h!==1,children:[(0,K.jsxs)(`div`,{className:`panel-heading`,children:[(0,K.jsx)(`span`,{className:`panel-index`,children:`01`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h2`,{children:`定义 Agent 的角色`}),(0,K.jsx)(`p`,{children:`选择起点,并说明 Agent 的职责、边界和期望行为。`})]})]}),(0,K.jsxs)(`div`,{className:`field`,children:[(0,K.jsx)(`label`,{children:`创建方式`}),(0,K.jsxs)(`div`,{className:`template-grid`,children:[(0,K.jsxs)(`button`,{className:`template-card${w===`blank`?` selected`:``}`,type:`button`,onClick:()=>{b.setValue(`template`,`blank`,{shouldDirty:!0}),qt()},children:[(0,K.jsx)(`span`,{className:`template-icon`,children:(0,K.jsx)(N,{size:18})}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:`空白 Agent`}),(0,K.jsx)(`small`,{children:`输入系统提示词,自主选择能力和执行策略`})]}),(0,K.jsx)(`span`,{className:`choice-check`,children:(0,K.jsx)(z,{size:14})})]}),(0,K.jsxs)(`button`,{className:`template-card${w===`research`?` selected`:``}`,type:`button`,onClick:()=>{b.setValue(`template`,`research`,{shouldDirty:!0}),qt()},children:[(0,K.jsx)(`span`,{className:`template-icon`,children:(0,K.jsx)(Ye,{size:18})}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:`深度调研`}),(0,K.jsx)(`small`,{children:`预置问题拆解、来源验证和引用报告方法`})]}),(0,K.jsx)(`span`,{className:`choice-check`,children:(0,K.jsx)(z,{size:14})})]})]})]}),(0,K.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,K.jsx)(X,{label:`Agent 名称`,requirement:`required`,htmlFor:`quickAgentName`,error:b.formState.errors.name?.message,children:(0,K.jsx)(`input`,{id:`quickAgentName`,maxLength:128,placeholder:`例如:技术支持助手`,...b.register(`name`,{onChange:qt})})}),(0,K.jsx)(Tz,{value:S,onChange:e=>{b.setValue(`slug`,e,{shouldDirty:!0,shouldValidate:!0}),qt()},error:b.formState.errors.slug?.message})]}),(0,K.jsx)(X,{label:`Runtime`,requirement:`required`,htmlFor:`quickRuntime`,hint:`由所选 RuntimeAdapter 运行;Codex 支持 OpenAI Responses 与兼容代理。`,error:b.formState.errors.runtimeType?.message,children:(0,K.jsx)(kh,{id:`quickRuntime`,ariaLabel:`Runtime`,value:C,options:Pz,onValueChange:e=>{b.setValue(`runtimeType`,e,{shouldDirty:!0,shouldValidate:!0}),qt()}})}),(0,K.jsx)(X,{label:`描述`,requirement:`optional`,htmlFor:`quickDescription`,error:b.formState.errors.description?.message,children:(0,K.jsx)(`input`,{id:`quickDescription`,maxLength:1024,placeholder:`简要说明这个 Agent 解决什么问题`,...b.register(`description`,{onChange:qt})})}),(0,K.jsx)(X,{label:`Agent 目标与要求`,requirement:`required`,htmlFor:`quickPrompt`,hint:`写清角色、目标、工作边界和回答方式。`,error:b.formState.errors.prompt?.message,footer:(0,K.jsxs)(`div`,{className:`field-footer`,children:[(0,K.jsx)(`span`,{children:`角色 · 目标 · 边界 · 回答方式`}),(0,K.jsxs)(`span`,{children:[E.length,` / 32768`]})]}),children:(0,K.jsx)(`textarea`,{id:`quickPrompt`,rows:7,maxLength:32768,placeholder:`例如:你是一名企业技术支持助手。先识别问题类型,再结合知识库给出准确、可执行的处理步骤;信息不足时先提问,不要编造事实。`,...b.register(`prompt`,{onChange:qt})})}),w===`research`&&(0,K.jsxs)(`div`,{className:`template-specific`,children:[(0,K.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,K.jsx)(X,{label:`目标读者`,requirement:`required`,htmlFor:`researchAudience`,error:b.formState.errors.audience?.message,children:(0,K.jsx)(`input`,{id:`researchAudience`,maxLength:256,...b.register(`audience`)})}),(0,K.jsx)(X,{label:`输出语言`,requirement:`required`,htmlFor:`researchLanguage`,children:(0,K.jsx)(kh,{id:`researchLanguage`,ariaLabel:`输出语言`,value:O,options:[{value:`zh-CN`,label:`简体中文`},{value:`en-US`,label:`English`}],onValueChange:e=>b.setValue(`language`,e,{shouldDirty:!0,shouldValidate:!0})})})]}),(0,K.jsxs)(`div`,{className:`field`,children:[(0,K.jsx)(`label`,{children:`调研深度`}),(0,K.jsx)(`div`,{className:`choice-grid`,children:[{value:`focused`,label:`聚焦`,desc:`8 个步骤,适合快速事实核验`,time:`约 3 分钟`},{value:`standard`,label:`标准`,desc:`16 个步骤,兼顾范围和深度`,time:`约 8 分钟`},{value:`deep`,label:`深度`,desc:`28 个步骤,多来源交叉验证`,time:`约 15 分钟`}].map(e=>(0,K.jsxs)(`button`,{className:`choice-card${k===e.value?` selected`:``}`,type:`button`,onClick:()=>b.setValue(`depth`,e.value,{shouldDirty:!0}),children:[(0,K.jsx)(`span`,{className:`choice-check`,children:(0,K.jsx)(z,{size:14})}),(0,K.jsx)(`strong`,{children:e.label}),(0,K.jsx)(`span`,{children:e.desc}),(0,K.jsx)(`small`,{children:e.time})]},e.value))})]}),(0,K.jsx)(X,{label:`默认输出`,requirement:`required`,htmlFor:`researchFormat`,children:(0,K.jsx)(kh,{id:`researchFormat`,ariaLabel:`默认输出`,value:M,options:[{value:`report`,label:`结构化研究报告`},{value:`brief`,label:`决策简报`},{value:`evidence-table`,label:`证据矩阵与结论`}],onValueChange:e=>b.setValue(`format`,e,{shouldDirty:!0,shouldValidate:!0})})})]})]}),(0,K.jsxs)(`section`,{className:`wizard-panel${h===2?` active`:``}`,hidden:h!==2,children:[(0,K.jsxs)(`div`,{className:`panel-heading`,children:[(0,K.jsx)(`span`,{className:`panel-index`,children:`02`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h2`,{children:`选择 Agent 可以使用的能力`}),(0,K.jsx)(`p`,{children:`所有依赖都会在构建时锁定版本和摘要,并由权限策略控制调用。`})]})]}),C===`codex`&&(0,K.jsxs)(`div`,{className:`inline-alert warning codex-capability-notice`,children:[(0,K.jsx)(U,{size:16}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`ManagedRuntime 不绑定 ksadk Tool`}),(0,K.jsx)(`p`,{children:`codex CLI 自身提供工具能力,ksadk Tool 不会绑定到 codex Agent。MCP(streamable-http)与 Skill 可绑定:MCP 经 codex config_overrides 注入,Skill 以原生 SkillInput 注入。模型仍需选择并配置凭证。`})]})]}),(0,K.jsxs)(`div`,{className:`capability-section`,children:[(0,K.jsxs)(`div`,{className:`capability-heading`,children:[(0,K.jsx)(`span`,{className:`capability-icon`,children:(0,K.jsx)(fe,{size:15})}),(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`h3`,{children:[`模型 `,(0,K.jsx)(`span`,{className:`studio-field-requirement required`,"aria-hidden":`true`,children:`*`}),(0,K.jsx)(`span`,{className:`sr-only`,children:`必填`})]}),(0,K.jsx)(`p`,{children:`至少选择一个;支持多选`})]})]}),pn&&(0,K.jsx)(`div`,{className:`model-profile-control`,children:(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:()=>Te(dn[0]||null),children:`配置凭证`})}),(0,K.jsx)(yb,{ariaLabel:`选择模型`,items:Pt,selectedIds:L,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.contract?.model||e.name} · ${Bt(e)?`凭证已配置`:`需配置凭证`}`,onChange:e=>{R(e),qt()},searchPlaceholder:`搜索模型`,emptyMessage:`没有可用模型`}),(0,K.jsx)(`span`,{className:`helper`,children:fn})]}),C!==`codex`&&(0,K.jsxs)(`div`,{className:`capability-section`,children:[(0,K.jsxs)(`div`,{className:`capability-heading`,children:[(0,K.jsx)(`span`,{className:`capability-icon`,children:(0,K.jsx)(pt,{size:15})}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h3`,{children:`Tool 与权限`}),(0,K.jsx)(`p`,{children:`选择本地 Tool,并设置默认审批级别`})]})]}),(0,K.jsx)(`div`,{className:`segmented-control`,"aria-label":`Tool 权限模板`,children:[`loose`,`strict`,`custom`].map(e=>(0,K.jsx)(`button`,{className:ne===e?`selected`:``,type:`button`,onClick:()=>{re(e),qt()},children:{loose:`宽松`,strict:`严格`,custom:`自定义`}[e]},e))}),(0,K.jsx)(`p`,{className:`policy-description`,children:ln.description}),(0,K.jsx)(yb,{ariaLabel:`选择 Tool`,items:Ft,selectedIds:B,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.version} · ${e.description||`本地 Tool`}`,onChange:e=>{V(e),qt()},searchPlaceholder:`搜索 Tool`,emptyMessage:`没有可用 Tool`})]}),(0,K.jsxs)(`div`,{className:`capability-section`,children:[(0,K.jsxs)(`div`,{className:`capability-heading`,children:[(0,K.jsx)(`span`,{className:`capability-icon`,children:(0,K.jsx)(Le,{size:15})}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h3`,{children:`MCP Server`}),(0,K.jsx)(`p`,{children:`连接外部服务并提供可发现的 Tool;codex 经 config_overrides 注入 streamable-http MCP`})]}),(0,K.jsxs)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>De(!0),children:[(0,K.jsx)(qe,{size:14}),(0,K.jsx)(`span`,{children:`连接 MCP`})]})]}),(0,K.jsx)(yb,{ariaLabel:`选择 MCP Server`,items:It,selectedIds:H,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.description||`MCP Server`} · ${e.health?.toolCount||0} Tool · ${e.status===`ready`?`Ready`:e.status}`,onChange:e=>{ee(e),qt()},searchPlaceholder:`搜索 MCP Server`,emptyMessage:`没有已连接的 MCP Server`})]}),(0,K.jsxs)(`div`,{className:`capability-section`,children:[(0,K.jsxs)(`div`,{className:`capability-heading`,children:[(0,K.jsx)(`span`,{className:`capability-icon`,children:(0,K.jsx)(nt,{size:15})}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h3`,{children:`Skill`}),(0,K.jsx)(`p`,{children:`按需注入可复用的方法、知识和任务约束`})]})]}),(0,K.jsx)(yb,{ariaLabel:`选择 Skill`,items:Lt,selectedIds:te,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.version} · ${e.description||`版本化 Skill`}`,onChange:e=>{W(e),qt()},searchPlaceholder:`搜索 Skill`,emptyMessage:`没有已安装的 Skill`})]})]}),(0,K.jsxs)(`section`,{className:`wizard-panel${h===3?` active`:``}`,hidden:h!==3,children:[(0,K.jsxs)(`div`,{className:`panel-heading`,children:[(0,K.jsx)(`span`,{className:`panel-index`,children:`03`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h2`,{children:`检查系统提示词与任务契约`}),(0,K.jsx)(`p`,{children:`保存前可以继续编辑,创建时会完整写入 Agent Draft。`})]}),(0,K.jsxs)(`button`,{className:`button secondary small`,type:`button`,disabled:pe===`composing`,onClick:Xt,children:[(0,K.jsx)(Je,{size:14}),(0,K.jsx)(`span`,{children:pe===`composing`?he===`optimize`?`正在优化`:`正在生成`:`一键优化 Prompt`})]})]}),(0,K.jsxs)(`div`,{className:`prompt-status`,children:[(0,K.jsx)(`span`,{className:`status-dot ${pe===`done`?`success`:`info`}`}),(0,K.jsx)(`span`,{children:pe===`composing`?he===`optimize`?`正在使用生成模型优化角色与任务契约`:`正在根据模板与能力生成角色与任务契约`:pe===`done`?`角色与任务契约已根据当前选择生成`:`进入此步骤后生成 Prompt`})]}),(0,K.jsx)(X,{label:`角色与系统提示词`,requirement:`required`,htmlFor:`composedSystemPrompt`,hint:`定义角色、目标、工作边界和回答原则`,error:b.formState.errors.systemPrompt?.message,children:(0,K.jsx)(`textarea`,{id:`composedSystemPrompt`,className:`prompt-editor`,rows:16,...b.register(`systemPrompt`,{onChange:qt})})}),(0,K.jsx)(X,{label:`任务契约`,requirement:`optional`,htmlFor:`composedTaskPrompt`,hint:`约束每次请求的执行步骤、工具使用和交付结构`,error:b.formState.errors.taskPrompt?.message,children:(0,K.jsx)(`textarea`,{id:`composedTaskPrompt`,className:`prompt-editor`,rows:10,...b.register(`taskPrompt`,{onChange:qt})})}),(0,K.jsxs)(`details`,{className:`pcm-policy-card`,children:[(0,K.jsx)(`summary`,{children:(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:`上下文与记忆策略`}),(0,K.jsx)(`small`,{children:`按 Runtime 能力控制 Prompt 归属、上下文优化和长期记忆`})]})}),(0,K.jsxs)(`div`,{className:`pcm-policy-body form-grid two-columns`,children:[(0,K.jsx)(X,{label:`上下文责任边界`,requirement:`optional`,htmlFor:`contextOwnership`,hint:`决定由平台、框架或原生 Runtime 负责最终输入。`,children:(0,K.jsx)(kh,{id:`contextOwnership`,ariaLabel:`上下文责任边界`,value:G,options:de,onValueChange:e=>{ie(e),qt()}})}),(0,K.jsx)(X,{label:`上下文优化`,requirement:`optional`,htmlFor:`contextEngineRollout`,hint:`控制预算规划、压缩和降载能力的启用阶段。`,children:(0,K.jsx)(kh,{id:`contextEngineRollout`,ariaLabel:`上下文优化`,value:ae,options:[{value:`off`,label:`Runtime 默认`,description:`不启用平台上下文优化`},{value:`shadow`,label:`仅观察`,description:`记录规划证据但不接管输入`},{value:`enabled`,label:`正式启用`,description:`按预算规划并组装上下文`}],onValueChange:e=>{oe(e),qt()}})}),(0,K.jsxs)(`label`,{className:`post-create-option`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:se,onChange:e=>{ce(e.target.checked),qt()}}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:`启用长期记忆`}),(0,K.jsx)(`small`,{children:`按 Agent 和用户作用域召回相关事实;凭证不会写入 Agent 配置。`})]})]}),(0,K.jsx)(X,{label:`记忆写入`,requirement:`optional`,htmlFor:`memoryWriteRollout`,hint:`关闭记忆时固定为不写入。`,children:(0,K.jsx)(kh,{id:`memoryWriteRollout`,ariaLabel:`记忆写入`,value:se?le:`off`,disabled:!se,options:[{value:`off`,label:`不写入`},{value:`shadow`,label:`仅生成候选`},{value:`enabled`,label:`允许写入`}],onValueChange:e=>{ue(e),qt()}})})]})]})]}),(0,K.jsxs)(`section`,{className:`wizard-panel${h===4?` active`:``}`,hidden:h!==4,children:[(0,K.jsxs)(`div`,{className:`panel-heading`,children:[(0,K.jsx)(`span`,{className:`panel-index`,children:`04`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h2`,{children:`检查配置并创建`}),(0,K.jsx)(`p`,{children:`确认 Agent 身份、能力依赖和创建后的动作。`})]})]}),(0,K.jsxs)(`div`,{className:`review-block`,children:[(0,K.jsxs)(`div`,{className:`review-title`,children:[(0,K.jsx)(`span`,{children:`Agent`}),(0,K.jsx)(`button`,{className:`text-button`,type:`button`,onClick:()=>Zt(1),children:`编辑`})]}),(0,K.jsxs)(`div`,{className:`review-agent`,children:[(0,K.jsx)(`span`,{className:`agent-avatar`,children:w===`research`?(0,K.jsx)(Ye,{size:16}):(0,K.jsx)(N,{size:16})}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:x}),(0,K.jsxs)(`span`,{children:[S,` · `,C,` · `,sn]}),(0,K.jsx)(`p`,{children:E||`等待填写系统提示词`})]})]})]}),(0,K.jsxs)(`div`,{className:`review-block`,children:[(0,K.jsxs)(`div`,{className:`review-title`,children:[(0,K.jsx)(`span`,{children:`能力绑定`}),(0,K.jsx)(`button`,{className:`text-button`,type:`button`,onClick:()=>Zt(2),children:`编辑`})]}),(0,K.jsxs)(`div`,{className:`review-capabilities`,children:[(0,K.jsxs)(`div`,{className:`review-capability`,children:[(0,K.jsx)(fe,{size:16}),(0,K.jsx)(`div`,{children:(0,K.jsx)(`strong`,{children:dn[0]?.displayName||`模型`})})]}),(0,K.jsxs)(`div`,{className:`review-capability`,children:[(0,K.jsx)(pt,{size:16}),(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`strong`,{children:[B.length,` 个 Tool`]}),(0,K.jsx)(`span`,{children:ln.title})]})]}),(0,K.jsxs)(`div`,{className:`review-capability`,children:[(0,K.jsx)(Le,{size:16}),(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`strong`,{children:[H.length,` 个 MCP`]}),(0,K.jsx)(`span`,{children:H.length?`已连接外部服务`:`未绑定`})]})]}),(0,K.jsxs)(`div`,{className:`review-capability`,children:[(0,K.jsx)(nt,{size:16}),(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`strong`,{children:[te.length,` 个 Skill`]}),(0,K.jsx)(`span`,{children:te.length?`已注入版本化能力`:`未绑定`})]})]})]})]}),(0,K.jsxs)(`div`,{className:`review-block`,children:[(0,K.jsxs)(`div`,{className:`review-title`,children:[(0,K.jsx)(`span`,{children:`Prompt`}),(0,K.jsx)(`button`,{className:`text-button`,type:`button`,onClick:()=>Zt(3),children:`编辑`})]}),(0,K.jsx)(`div`,{className:`prompt-preview`,children:P||E||`等待生成`})]}),(0,K.jsxs)(`label`,{className:`post-create-option`,children:[(0,K.jsx)(`input`,{type:`checkbox`,...b.register(`buildAfterCreate`)}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:mn?`创建后立即校验 YAML 声明并打开会话`:`创建后立即构建并打开会话`}),(0,K.jsx)(`small`,{children:mn?`只冻结 YAML 和 runtime 摘要;部署时不会上传代码包。`:`生成不可变 AgentBundle,完成后进入 Chat 工作台`})]})]})]}),_e&&(0,K.jsxs)(`div`,{className:`inline-alert error wizard-error-summary`,role:`alert`,children:[(0,K.jsx)(U,{size:16}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`需要处理一项配置`}),(0,K.jsx)(`p`,{children:_e})]})]}),(0,K.jsxs)(`footer`,{className:`wizard-actions`,children:[(0,K.jsxs)(`button`,{className:`button secondary`,type:`button`,disabled:h===1,onClick:()=>Zt(h-1),children:[(0,K.jsx)(A,{size:16}),(0,K.jsx)(`span`,{children:`上一步`})]}),(0,K.jsxs)(`span`,{className:`wizard-progress`,children:[`第 `,h,` 步,共 4 步`]}),(0,K.jsxs)(`dl`,{className:`summary-chips`,"aria-label":`配置摘要`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`模板`}),(0,K.jsx)(`dd`,{children:sn})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Runtime`}),(0,K.jsx)(`dd`,{children:cn})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`模型`}),(0,K.jsx)(`dd`,{children:un})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Tool`}),(0,K.jsx)(`dd`,{children:B.length})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`MCP`}),(0,K.jsx)(`dd`,{children:H.length})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Skill`}),(0,K.jsx)(`dd`,{children:te.length})]})]}),(0,K.jsxs)(`button`,{className:`button tertiary summary-toggle`,type:`button`,"aria-expanded":xe,onClick:()=>Ce(e=>!e),children:[(0,K.jsx)(He,{size:16}),(0,K.jsx)(`span`,{children:`完整摘要`})]}),(0,K.jsxs)(`div`,{className:`wizard-flow-actions`,children:[(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:Kt,children:`保存草稿`}),h<4?(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>Zt(h+1),children:[(0,K.jsx)(`span`,{children:`继续`}),(0,K.jsx)(j,{size:16})]}):(0,K.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:ye,children:[(0,K.jsx)(qe,{size:16}),(0,K.jsx)(`span`,{children:ye?`正在创建`:`创建 Agent`})]})]})]})]})}),(0,K.jsx)(Sa,{open:xe,compact:!0,title:`配置摘要`,subtitle:`检查本轮创建使用的 Runtime、模型、能力与权限策略。`,onOpenChange:Ce,children:(0,K.jsxs)(`div`,{className:`wizard-summary-content`,children:[(0,K.jsxs)(`dl`,{children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`模板`}),(0,K.jsx)(`dd`,{children:sn})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Runtime`}),(0,K.jsx)(`dd`,{children:cn})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`模型`}),(0,K.jsx)(`dd`,{children:un})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Skill`}),(0,K.jsx)(`dd`,{children:te.length})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`MCP`}),(0,K.jsx)(`dd`,{children:H.length})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Tool`}),(0,K.jsx)(`dd`,{children:B.length})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`策略`}),(0,K.jsx)(`dd`,{children:w===`research`?`Plan-Act-Observe`:`Direct`})]})]}),(0,K.jsx)(`div`,{className:`summary-divider`}),(0,K.jsxs)(`div`,{className:`summary-note`,children:[(0,K.jsx)(et,{size:16}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:ln.title}),(0,K.jsx)(`p`,{children:ln.description})]})]}),(0,K.jsxs)(`div`,{className:`summary-note`,children:[(0,K.jsx)(ze,{size:16}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:mn?`声明校验`:`不可变构建`}),(0,K.jsx)(`p`,{children:mn?`冻结 YAML 与 runtime 摘要;云端部署不使用代码包。`:`Skill、MCP 和 Tool 将锁定版本与摘要。`})]})]})]})})]})]})]}),we&&(0,K.jsx)(_z,{model:we,onClose:()=>Te(null),onChanged:Nt}),Ee&&(0,K.jsx)(yz,{onClose:()=>De(!1),onConnected:()=>{De(!1),Nt()}})]})}function Gz(e,t){let n=new URLSearchParams({buildId:e});return t&&n.set(`agentId`,t),`#/deployments/new?${n.toString()}`}function Kz(e){return`#/deployments/${encodeURIComponent(e)}`}function qz(e){if(window.location.hash===e){window.dispatchEvent(new HashChangeEvent(`hashchange`));return}window.location.hash=e}function Jz(e,t=28){return e.length>t?`${e.slice(0,t)}…`:e}function Yz({detail:e,catalog:t,buildId:n,onClose:r}){let[i,a]=(0,s.useState)(`curl`),o=e.draft,c=o.metadata.labels||{},l=o.spec.bindings?.modelProfileId||o.spec.bindings?.modelProfileIds?.[0]||``,u=t.find(e=>e.resourceId===l),d=c[`agentkit.ksyun.com/template`]||`blank`,f={model:u?.contract?.model||u?.name||c[`agentkit.ksyun.com/model`]||`glm-5.1`,input:[{role:`user`,content:[{type:`input_text`,text:d===`research`?`调研 Agent 工程平台的核心能力`:`请根据你的职责处理这个请求`}]}],metadata:{agent_id:o.metadata.id},stream:!0},p=i===`curl`?[`curl -X POST "${window.location.origin}/v1/responses" \\`,` -H "Content-Type: application/json" \\`,` -H "Authorization: Bearer " \\`,` -d '${JSON.stringify(f,null,2)}'`].join(` -`):[`const response = await fetch("${window.location.origin}/v1/responses", {`,` method: "POST",`,` headers: {`,` "Content-Type": "application/json",`,' "Authorization": `Bearer ${runtimeApiKey}`',` },`,` body: JSON.stringify(${JSON.stringify(f,null,2)})`,`});`].join(` -`);return(0,K.jsxs)(DD,{title:`调用 Agent`,subtitle:`使用统一 Runtime 的 OpenAI Responses API;本地与云端请求体一致。`,onClose:r,children:[(0,K.jsxs)(`div`,{className:`callout`,children:[(0,K.jsx)(et,{size:16}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`标准接入协议`}),(0,K.jsx)(`p`,{children:`本地 Studio 仅监听 loopback;部署后由云端网关校验 Runtime API Key,不暴露 Studio Session 或 CSRF Token。`})]})]}),(0,K.jsxs)(`div`,{className:`code-tabs`,children:[(0,K.jsx)(`button`,{className:i===`curl`?`active`:``,type:`button`,onClick:()=>a(`curl`),children:`cURL`}),(0,K.jsx)(`button`,{className:i===`javascript`?`active`:``,type:`button`,onClick:()=>a(`javascript`),children:`JavaScript`})]}),(0,K.jsx)(xb,{code:p,language:i===`curl`?`bash`:`javascript`,filename:i===`curl`?`invoke-agent.sh`:`invoke-agent.js`,wrap:!0}),(0,K.jsxs)(`div`,{className:`api-contract`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Endpoint`}),(0,K.jsx)(`code`,{children:`POST /v1/responses`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`本地 Build`}),(0,K.jsx)(`code`,{children:n||`尚未构建`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Conversation`}),(0,K.jsx)(`code`,{children:`首次调用可省略`})]})]})]})}function Xz({agentId:e,onBack:t,onChat:n,onBuild:r,onEdit:i,onChanged:a}){let[o,c]=(0,s.useState)(null),[l,u]=(0,s.useState)([]),[d,f]=(0,s.useState)([]),[p,m]=(0,s.useState)(!1),[h,_]=(0,s.useState)(!1),[v,y]=(0,s.useState)(!1),[b,x]=(0,s.useState)(``);(0,s.useEffect)(()=>{g(`/api/v1/agents/${encodeURIComponent(e)}`).then(e=>e.json()).then(c).catch(()=>c(null)),g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()).then(e=>u(e.items||[])).catch(()=>{}),g(`/api/v1/deployments`).then(e=>e.json()).then(e=>f(e.items||[])).catch(()=>{})},[e]);async function S(){y(!0),x(``);try{let n=await g(`/api/v1/agents/${encodeURIComponent(e)}`,{method:`DELETE`});if(!n.ok){let e=await n.json().catch(()=>null);throw Error(e?.error?.message||`删除失败(${n.status})`)}m(!1),a(),t()}catch(e){x(e.message)}finally{y(!1)}}if(!o)return(0,K.jsx)(`div`,{className:`page-container`,"data-layout":`document`,children:(0,K.jsx)(`p`,{style:{color:`var(--text-tertiary)`},children:`正在加载 Agent 配置…`})});let C=o.draft,w=C.spec.bindings||{},T=C.metadata.labels||{},E=String(T[`agentkit.ksyun.com/models`]||``).split(`,`).map(e=>e.trim()).filter(Boolean),D=w.modelProfileIds?.length?w.modelProfileIds:w.modelProfileId?[w.modelProfileId]:E.length?E:T[`agentkit.ksyun.com/model`]?[T[`agentkit.ksyun.com/model`]]:[],O=(o.builds||[]).find(e=>e.status===`SUCCEEDED`),k=O?d.find(e=>e.buildId===O.id):void 0,A=k?.status===`READY`,j=e=>l.find(t=>t.resourceId===e)?.displayName||Jz(e),M=(w.tools||[]).map(e=>typeof e==`string`?e:e.resourceId),N=[[`Model`,D],[`Skill`,(w.skills||[]).map(e=>e.resourceId)],[`MCP`,(w.mcpServers||[]).map(e=>e.resourceId)],[`Tool`,M]].filter(([,e])=>e.length>0);function P(){O&&qz(k?Kz(k.id):Gz(O.id,C.metadata.id))}return(0,K.jsxs)(`div`,{className:`page-container`,"data-layout":`document`,children:[(0,K.jsxs)(gd,{children:[(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>n(e),children:[(0,K.jsx)(Ne,{size:15}),(0,K.jsx)(`span`,{children:`打开会话`})]}),(0,K.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:()=>i(e),children:[(0,K.jsx)(rt,{size:15}),(0,K.jsx)(`span`,{children:`编辑`})]}),(0,K.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:r,children:[(0,K.jsx)(ze,{size:15}),(0,K.jsx)(`span`,{children:`校验并构建`})]}),(0,K.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:P,disabled:!O,children:[(0,K.jsx)(oe,{size:15}),(0,K.jsx)(`span`,{children:k?`查看云端部署`:`部署到云端`})]}),(0,K.jsx)(pd,{label:`${C.metadata.name} 的更多操作`,items:[{label:`编辑`,onSelect:()=>i(e)},{label:`校验并构建`,onSelect:r},{label:k?`查看云端部署`:`部署到云端`,onSelect:P,disabled:!O},{label:`调用方式`,onSelect:()=>_(!0)},{label:`删除 Agent`,danger:!0,onSelect:()=>m(!0)}]})]}),b&&(0,K.jsx)(`div`,{className:`form-error`,style:{marginBottom:16},children:b}),(0,K.jsxs)(`div`,{className:`detail-layout`,children:[(0,K.jsxs)(`div`,{className:`detail-main`,children:[(0,K.jsxs)(`section`,{className:`detail-section block`,children:[(0,K.jsx)(`div`,{className:`section-heading`,children:(0,K.jsx)(`h2`,{children:`角色与任务`})}),(0,K.jsxs)(`div`,{className:`readonly-field`,children:[(0,K.jsx)(`span`,{children:`系统提示词`}),(0,K.jsx)(`pre`,{children:C.spec.instructions?.system||``})]}),(0,K.jsxs)(`div`,{className:`readonly-field`,children:[(0,K.jsx)(`span`,{children:`任务契约`}),(0,K.jsx)(`pre`,{children:C.spec.instructions?.task||`未配置任务契约`})]})]}),(0,K.jsxs)(`section`,{className:`detail-section block`,children:[(0,K.jsx)(`div`,{className:`section-heading`,children:(0,K.jsx)(`h2`,{children:`能力绑定`})}),N.length?(0,K.jsx)(`div`,{className:`binding-groups`,children:N.map(([e,t])=>(0,K.jsxs)(`div`,{className:`binding-group`,children:[(0,K.jsx)(`span`,{children:e}),(0,K.jsx)(`div`,{className:`binding-items`,children:t.map(e=>(0,K.jsxs)(`span`,{className:`compact-resource`,children:[(0,K.jsx)(z,{size:13}),j(e)]},e))})]},e))}):(0,K.jsxs)(`div`,{className:`capability-empty-state`,children:[(0,K.jsx)(`span`,{children:`当前 Agent 尚未绑定模型、Tool、MCP 或 Skill。`}),(0,K.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>i(e),children:`绑定能力`})]})]})]}),(0,K.jsxs)(`aside`,{className:`detail-aside block`,children:[(0,K.jsx)(`div`,{className:`aside-title`,children:`运行摘要`}),(0,K.jsxs)(`dl`,{children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Revision`}),(0,K.jsxs)(`dd`,{children:[`r`,C.metadata.revision]})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Runtime`}),(0,K.jsx)(`dd`,{children:C.spec.runtime?.type||T[`agentkit.ksyun.com/framework`]||`adk`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`策略`}),(0,K.jsx)(`dd`,{children:C.spec.execution?.strategy||`-`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`最大步骤`}),(0,K.jsx)(`dd`,{children:C.spec.execution?.maxSteps??`-`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`超时`}),(0,K.jsx)(`dd`,{children:C.spec.execution?.timeoutSeconds?`${C.spec.execution.timeoutSeconds}s`:`-`})]})]}),(0,K.jsx)(`div`,{className:`aside-divider`}),(0,K.jsx)(`div`,{className:`build-state notice`,"data-state":O?`ready`:`idle`,children:O?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`status-dot success`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`部署声明已就绪`}),(0,K.jsx)(`span`,{children:Jz(O.bundleDigest||O.id)})]})]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`status-dot neutral`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`尚未构建`}),(0,K.jsx)(`span`,{children:`校验 YAML 声明后即可部署或本地对话`})]})]})}),k&&(0,K.jsxs)(`div`,{className:`build-state notice`,"data-state":A?`ready`:`idle`,children:[(0,K.jsx)(`span`,{className:`status-dot ${A?`success`:`neutral`}`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:A?`云端实例运行中`:`云端部署:${k.status}`}),(0,K.jsx)(`span`,{children:k.agentId||k.instanceId||k.id})]})]})]})]}),p&&(0,K.jsx)(Ca,{title:`确认删除 Agent「${C.metadata.name}」?`,description:`Agent ID:${C.metadata.id}。删除后其配置与 Revision 将移除,此操作不可撤销。`,confirmText:`确认删除`,busy:v,onConfirm:S,onCancel:()=>m(!1)}),h&&(0,K.jsx)(Yz,{detail:o,catalog:l,buildId:O?.id,onClose:()=>_(!1)})]})}var Zz=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`]);function Qz(e){return e===`SUCCEEDED`?`ready`:[`FAILED`,`CANCELLED`,`TIMED_OUT`].includes(e)?`failed`:e===`IDLE`?`idle`:`pending`}function $z(e){return{IDLE:`尚未构建`,QUEUED:`排队中`,RUNNING:`构建中`,SUCCEEDED:`构建完成`,FAILED:`构建失败`,CANCELLED:`已取消`,TIMED_OUT:`已超时`}[e]||e}function eB(e,t=42){return e.length>t?`${e.slice(0,t)}…`:e}function tB(e){return e.split(/\r?\n\r?\n/).filter(Boolean).map(e=>{let t=e.split(/\r?\n/),n=Number(t.find(e=>e.startsWith(`id:`))?.slice(3).trim()),r=t.find(e=>e.startsWith(`event:`))?.slice(6).trim()||``,i=t.filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trimStart()).join(` -`);if(!Number.isFinite(n)||n<=0||!r||!i)return null;try{let e=JSON.parse(i);return{id:n,type:r,data:e&&typeof e==`object`?e:{}}}catch{return null}}).filter(e=>e!==null)}async function nB(e){let t=await g(`/api/v1${e}`);return t.ok?tB(await t.text()):[]}function rB({currentAgentId:e,agents:t,onSelectAgent:n,onCreate:r}){let[i,a]=(0,s.useState)(null),[o,c]=(0,s.useState)(`IDLE`),[l,u]=(0,s.useState)(`选择 Agent 后开始本地构建。 -`),[d,f]=(0,s.useState)(``),[p,m]=(0,s.useState)(!1),h=(0,s.useRef)(null),_=(0,s.useRef)(0),v=(0,s.useCallback)(async()=>{if(!e){a(null);return}try{let t=await g(`/api/v1/agents/${encodeURIComponent(e)}`);if(!t.ok)throw Error(`Agent detail is unavailable`);a(await t.json())}catch{a(null)}},[e]);(0,s.useEffect)(()=>{v()},[v]);let y=i?.draft,b=i?.builds||[],x=b.find(e=>e.status===`SUCCEEDED`)||b[0],S=x?.status===`SUCCEEDED`&&!p,C=t.find(t=>t.metadata.id===e),w=y?.metadata?.labels?.[`agentkit.ksyun.com/artifact-type`],T=w===`ManagedRuntime`||!w&&y?.spec?.runtime?.type===`codex`,E=e=>T?{IDLE:`尚未校验`,QUEUED:`校验排队中`,RUNNING:`正在校验`,SUCCEEDED:`声明已校验`,FAILED:`校验失败`,CANCELLED:`已取消`,TIMED_OUT:`校验超时`}[e]||e:$z(e);(0,s.useEffect)(()=>{p||(c(x?.status||`IDLE`),f(``),u(x?[`${T?`Declaration`:`Build`} ${x.id}`,`Revision ${x.sourceRevision??y?.metadata?.revision??`-`}`,`${T?`YAML digest`:`Bundle`} ${x.bundleDigest||`-`}`,`Resolved ${x.resolvedDigest||`-`}`,`Status ${x.status}`].join(` -`):T?`选择 YAML Agent 后校验声明。 -`:`选择 Agent 后开始本地构建。 -`))},[p,y?.metadata?.revision,T,x]);function D(e){u(t=>`${t}${e}`),requestAnimationFrame(()=>{h.current&&(h.current.scrollTop=h.current.scrollHeight)})}function O(){!e||!S||(n(e),qz(Gz(x.id,e)))}async function k(){if(!y||p)return;let e=++_.current;m(!0),c(`QUEUED`),f(`提交中`),u(T?`提交 YAML 声明校验… -`:`提交本地构建… -`);try{let t=await g(`/api/v1/agents/${encodeURIComponent(y.metadata.id)}/builds`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":`build-${y.metadata.id}-r${y.metadata.revision}-${Date.now()}`},body:JSON.stringify({revision:y.metadata.revision,runEvaluation:!1})});if(!t.ok)throw Error(`构建提交失败(${t.status})`);let n=await t.json();f(n.id);let r=0,i=null;for(let t=0;t<1200;t+=1){if(_.current!==e)return;let t=await nB(`/operations/${encodeURIComponent(n.id)}/events?after=${r}`);t.length&&(r=Math.max(r,...t.map(e=>Number(e.id)||0)),D(t.map(e=>`${String(e.id).padStart(2,`0`)} ${e.type}`).join(` -`)+` -`));let a=await g(`/api/v1/operations/${encodeURIComponent(n.id)}`).then(e=>e.json());if(c(a.status||`QUEUED`),Zz.has(a.status)){i=a;break}await new Promise(e=>setTimeout(e,200))}if(!i)throw Error(`构建操作等待超时`);if(i.status!==`SUCCEEDED`)throw Error(i.error?.message||`构建未完成`);await v(),Y(T?`YAML 声明已校验`:`不可变 Bundle 已构建`,i.resourceId||`构建完成`)}catch(t){_.current===e&&(c(`FAILED`),D(`${t?.message||`构建失败`}\n`),Y(`构建失败`,t?.message||`未知错误`,`error`))}finally{_.current===e&&m(!1)}}let A=Qz(o),j=x?.runtimeName?`${x.runtimeName} ${x.runtimeVersion||``}`.trim():y?.spec?.runtime?.type||`未选择`;return(0,K.jsxs)(`div`,{className:`delivery-page`,"data-layout":`document`,children:[(0,K.jsx)(gd,{children:(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:k,disabled:!y||p,children:[(0,K.jsx)(ze,{size:15}),(0,K.jsx)(`span`,{children:p?T?`校验中`:`构建中`:T?`校验 YAML 声明`:`构建当前 Agent`})]})}),(0,K.jsxs)(`div`,{className:`delivery-intro`,children:[(0,K.jsx)(`h2`,{children:T?`ManagedRuntime 声明`:`Code Bundle`}),(0,K.jsx)(`span`,{className:`delivery-status-badge`,"data-state":A,children:E(o)})]}),t.length===0?(0,K.jsxs)(`div`,{className:`delivery-empty-state`,children:[(0,K.jsx)(ze,{size:24}),(0,K.jsx)(`h2`,{children:`还没有可构建的 Agent`}),(0,K.jsx)(`p`,{children:`先创建 Agent,再生成可部署到云端的交付记录。`}),(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:r,children:[(0,K.jsx)(qe,{size:15}),(0,K.jsx)(`span`,{children:`创建 Agent`})]})]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`section`,{className:`delivery-stat-strip compact-delivery-summary`,"aria-label":`构建摘要`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`Agent`}),(0,K.jsx)(`strong`,{title:e||``,children:C?.metadata.name||y?.metadata?.name||`未选择`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`Revision`}),(0,K.jsx)(`strong`,{children:y?`r${y.metadata.revision}`:`-`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`Runtime`}),(0,K.jsx)(`strong`,{children:j})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`stat-label`,children:T?`YAML 摘要`:`Bundle`}),(0,K.jsx)(`strong`,{className:`mono`,children:eB(x?.bundleDigest||`-`)})]})]}),(0,K.jsxs)(`section`,{className:`delivery-next-step`,"data-state":S?`ready`:A,"aria-label":`构建下一步`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`下一步`}),(0,K.jsx)(`strong`,{children:S?`构建完成,下一步可部署到云端`:`等待构建完成`})]}),S&&(0,K.jsxs)(`button`,{className:`button secondary compact`,type:`button`,onClick:O,children:[(0,K.jsx)(oe,{size:15}),`部署到云端`]})]}),(0,K.jsxs)(`details`,{className:`delivery-block delivery-detail-disclosure`,children:[(0,K.jsx)(`summary`,{children:T?`声明详情`:`构建详情`}),(0,K.jsx)(`p`,{children:T?`校验 YAML 声明并锁定 Runtime、模型与能力摘要,生成可追溯的托管运行时制品。`:`查看不可变 Bundle、输入 Revision 与交付记录。`}),(0,K.jsxs)(`div`,{className:`delivery-fact-chain`,children:[(0,K.jsxs)(`div`,{className:`delivery-fact-step`,"data-state":y?`ready`:`idle`,children:[(0,K.jsx)(`span`,{children:T?`输入 YAML Revision`:`输入 Revision`}),(0,K.jsx)(`strong`,{children:y?`r${y.metadata.revision}`:`未选择`}),(0,K.jsx)(`code`,{children:y?.metadata?.id||`-`})]}),(0,K.jsxs)(`div`,{className:`delivery-fact-step`,"data-state":A,children:[(0,K.jsx)(`span`,{children:T?`声明摘要`:`不可变 Bundle`}),(0,K.jsx)(`strong`,{children:x?.status===`SUCCEEDED`?T?`已校验`:`已生成`:E(o)}),(0,K.jsx)(`code`,{children:x?.bundleDigest||`尚无 digest`})]})]})]}),(0,K.jsxs)(`details`,{className:`delivery-block`,open:p,children:[(0,K.jsxs)(`summary`,{children:[T?`声明校验日志`:`构建技术日志`,` `,d?`· ${eB(d,28)}`:``]}),(0,K.jsx)(`pre`,{ref:h,children:l})]})]})]})}var iB=new Set([`hermes`,`openclaw`]);function aB(e){if(!e)return!1;let t=e.sessionEventChat??e.SessionEventChat??e.session_event_chat;if(t===!0)return!0;if(!t||typeof t!=`object`)return!1;let n=t;return n.enabled===!0||n.Enabled===!0||n.supported===!0||n.Supported===!0}function oB(e){if(e.chatTransport)return{kind:e.chatTransport,reason:e.chatRoutingReason||(e.chatTransport===`official-dashboard`?`native-runtime-without-session-event-chat-capability`:`studio-compatible-framework`)};if(aB(e.capabilities))return{kind:`studio-session-events`,reason:`declared-session-event-chat-capability`};let t=String(e.runtimeType||e.framework||``).trim().toLowerCase();return iB.has(t)?{kind:`official-dashboard`,reason:`native-runtime-without-session-event-chat-capability`}:{kind:`studio-session-events`,reason:`studio-compatible-framework`}}var sB={READY:5,DEPLOYING:4,ADMITTING:3,FAILED:2,ROLLED_BACK:1};function cB(e,t=new Map){let n=new Map;for(let r of e){let e=r.agentId?.trim();if(!e)continue;let i=n.get(e),a=t.get(e)?.trim(),o=!!(a&&r.versionId===a),s=!!(a&&i?.versionId===a),c=sB[r.status||``]||0,l=sB[i?.status||``]||0;(!i||o&&!s||o===s&&c>l)&&n.set(e,r)}return[...n.values()]}function lB(e,t){let n=new Map;for(let e of t){let t=e.agentId?.trim();t&&!n.has(t)&&n.set(t,e)}let r=cB(e,new Map([...n.entries()].flatMap(([e,t])=>t.versionId?.trim()?[[e,t.versionId.trim()]]:[]))).map(e=>{let t=n.get(e.agentId?.trim()||``);return{...e,agentName:t?.name||e.agentName,status:t?.status||e.status,endpoint:t?.endpoint||e.endpoint,framework:t?.framework||e.framework,runtimeType:t?.runtimeType||e.runtimeType,capabilities:t?.capabilities||e.capabilities,chatTransport:t?.chatTransport||e.chatTransport,chatRoutingReason:t?.chatRoutingReason||e.chatRoutingReason,versionId:t?.versionId||e.versionId,updatedAt:t?.updatedAt||e.updatedAt,creatorName:t?.creatorName||e.creatorName,source:`receipt`}}),i=new Set(r.map(e=>e.agentId)),a=[...n.values()].flatMap(e=>{let t=e.agentId?.trim();return!t||i.has(t)?[]:[{id:`account:${t}`,agentId:t,agentName:e.name||t,status:e.status,endpoint:e.endpoint,framework:e.framework,runtimeType:e.runtimeType,capabilities:e.capabilities,chatTransport:e.chatTransport,chatRoutingReason:e.chatRoutingReason,versionId:e.versionId,updatedAt:e.updatedAt,creatorName:e.creatorName,source:`account`}]});return[...r,...a]}var uB=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`,`INTERRUPTED`]),dB=`agentkit-studio:deployment-operation-attempts:v2`,fB=500,pB=new Set([403,404,410]),mB=new Map,hB={},gB=class extends Error{status;constructor(e,t){super(e),this.status=t,this.name=`OperationStatusError`}};function _B(){try{return typeof document>`u`?void 0:document.defaultView?.localStorage}catch{return}}function vB(e,t){return t?g(e,{signal:t}):g(e)}function yB(e,t){return t?{...e,status:String(t.status||e.status).toUpperCase(),agentName:t.name||e.agentName,endpoint:t.endpoint||e.endpoint,framework:t.framework||e.framework,runtimeType:t.runtimeType||e.runtimeType,capabilities:t.capabilities||e.capabilities,chatTransport:t.chatTransport||e.chatTransport,chatRoutingReason:t.chatRoutingReason||e.chatRoutingReason,versionId:t.versionId||e.versionId,updatedAt:t.updatedAt||e.updatedAt,creatorName:t.creatorName||e.creatorName}:e}function bB(e){try{let t=_B();if(!t)return{...hB[e]||{}};let n=JSON.parse(t.getItem(e)||`{}`);return n&&typeof n==`object`?n:{}}catch{return{...hB[e]||{}}}}function xB(e,t){hB={...hB,[e]:{...t}};try{_B()?.setItem(e,JSON.stringify(t))}catch{}}function SB(e){return`studio-${e}-${globalThis.crypto?.randomUUID?.()||`${Math.random().toString(36).slice(2)}-${Date.now().toString(36)}`}`}function CB(e,t,n){let r=bB(e),i=r[t];if(i?.idempotencyKey)return i;let a={actionKey:t,idempotencyKey:SB(n),operationId:``};return r[t]=a,xB(e,r),a}function wB(e,t,n){let r={...t,operationId:n},i=bB(e);return i[t.actionKey]=r,xB(e,i),r}function TB(e,t){let n=bB(e),r=n[t.actionKey];!r||r.idempotencyKey!==t.idempotencyKey||(delete n[t.actionKey],xB(e,n))}function EB(e){return e instanceof DOMException&&e.name===`AbortError`}function DB(e){if(e.aborted)throw new DOMException(`Operation aborted`,`AbortError`)}async function OB(e,t){DB(t),await new Promise((n,r)=>{let i=window.setTimeout(()=>{t.removeEventListener(`abort`,a),n()},e),a=()=>{window.clearTimeout(i),r(new DOMException(`Operation aborted`,`AbortError`))};t.addEventListener(`abort`,a,{once:!0})})}async function kB(e,t){let n=mB.get(e)||Promise.resolve(),r,i=new Promise(e=>{r=e}),a=n.then(()=>i);mB.set(e,a),await n;try{return await t()}finally{r(),mB.get(e)===a&&mB.delete(e)}}async function AB(e,t,n){DB(t);let r=navigator.locks;return r?r.request(e,{mode:`exclusive`,signal:t},async()=>n()):kB(e,async()=>(DB(t),n()))}async function jB(e){let t=await g(`/api/v1/system/bootstrap`,{signal:e});if(!t.ok)throw Error(`读取部署操作作用域失败(${t.status})`);let n=(await t.json())?.operationScope,r=String(n?.workspace||``).trim(),i=String(n?.cloudCredential||``).trim();if(!r||!i)throw Error(`部署操作作用域不可用,请刷新 Studio`);return`${dB}:${encodeURIComponent(r)}:${encodeURIComponent(i)}`}async function MB(e,t,n){for(;;){await OB(fB,n);let r=await g(`/api/v1/operations/${encodeURIComponent(e)}`,{signal:n});if(!r.ok)throw new gB(`${t}状态读取失败(${r.status})`,r.status);let i=await r.json();if(uB.has(i.status))return i}}async function NB(e,t,n,r,i,a){let o=`${e}:${t}`,s=await AB(o,i,async()=>{let o=CB(e,t,n);if(!o.operationId){let t=await a(o.idempotencyKey,i);if(!t.ok)throw t.status<500&&TB(e,o),Error(`${r}提交失败(${t.status})`);let n=await t.json(),s=String(n?.id||``).trim();if(!s)throw TB(e,o),Error(`${r}提交结果缺少 operation_id`);o=wB(e,o,s)}return o}),c;try{c=await MB(s.operationId,r,i)}catch(t){throw t instanceof gB&&pB.has(t.status)&&await AB(o,i,async()=>{TB(e,s)}),t}return await AB(o,i,async()=>{TB(e,s)}),c}function PB(e){return[`READY`,`RUNNING`].includes(e)?`ready`:[`FAILED`,`ROLLED_BACK`,`ERROR`,`TERMINATED`].includes(e)?`failed`:[`ADMITTING`,`DEPLOYING`,`CREATING`,`UPDATING`].includes(e)?`pending`:`idle`}function FB(e){return{ADMITTING:`准入中`,DEPLOYING:`部署中`,READY:`已就绪`,FAILED:`部署失败`,ROLLED_BACK:`已回滚`,RUNNING:`运行中`,CREATING:`创建中`,UPDATING:`更新中`,ERROR:`异常`,TERMINATED:`已终止`}[e]||`状态未知`}function IB(e,t=28){return e.length>t?`${e.slice(0,t)}…`:e}function LB(){let e=window.location.hash.match(/^#\/deployments\/([^/?]+)(?:\?.*)?$/),t=e?decodeURIComponent(e[1]):``;return t===`new`?``:t}function RB(){let e=window.location.hash.match(/^#\/deployments\/new(?:\?(.*))?$/);if(!e)return null;let t=new URLSearchParams(e[1]||``);return{buildId:t.get(`buildId`)?.trim()||``,agentId:t.get(`agentId`)?.trim()||``}}function zB(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(`zh-CN`,{hour12:!1})}function BB({onCreate:e,onOpenChat:t,onSelectBuild:n}){let[r,i]=(0,s.useState)([]),[a,o]=(0,s.useState)(!0),[c,l]=(0,s.useState)(``),[u,d]=(0,s.useState)(new Set),[f,p]=(0,s.useState)(``),[m,h]=(0,s.useState)(!1),[_,v]=(0,s.useState)(!1),[y,b]=(0,s.useState)(null),[x,S]=(0,s.useState)(!1),[C,w]=(0,s.useState)(null),[T,E]=(0,s.useState)(!1),[D,O]=(0,s.useState)(()=>RB()),[k,j]=(0,s.useState)([]),[M,N]=(0,s.useState)(()=>RB()?.buildId||``),[P,F]=(0,s.useState)(``),[I,L]=(0,s.useState)(!1),[R,z]=(0,s.useState)(!1),[B,V]=(0,s.useState)(``),H=(0,s.useRef)(new Set);(0,s.useEffect)(()=>()=>{for(let e of H.current)e.abort();H.current.clear()},[]);function ee(){let e=new AbortController;return H.current.add(e),e}function U(e){H.current.delete(e)}let te=(0,s.useCallback)(async e=>{o(!0),l(``);try{let[t,n]=await Promise.all([vB(`/api/v1/deployments`,e),vB(`/api/v1/cloud-agents?size=100`,e)]);if(!t.ok)throw Error(`读取部署记录失败(${t.status})`);let r=await t.json(),a=n.ok?await n.json():{items:[]},o=Array.isArray(r.items)?r.items:[],s=[...new Set(o.flatMap(e=>e.agentId?.trim()?[e.agentId.trim()]:[]))],c=await Promise.all(s.map(t=>Promise.resolve().then(()=>vB(`/api/v1/cloud-agents/${encodeURIComponent(t)}`,e)).then(async e=>e.ok?await e.json():null).catch(e=>{if(EB(e))throw e;return null}))),l=Array.isArray(a.items)?a.items:[],u=new Map(l.flatMap(e=>e.agentId?[[e.agentId,e]]:[]));for(let e of c)e?.agentId&&u.set(e.agentId,{...u.get(e.agentId),...e});let d=[...u.values()],f=new Map(o.map(e=>[e.id,e])),p=lB(o,d).map(e=>{if(e.source===`receipt`)return{...f.get(e.id),...e,id:e.id,source:`receipt`};let t=d.find(t=>t.agentId===e.agentId);return{id:e.id,buildId:``,bundleDigest:``,versionId:String(e.versionId||t?.versionId||``),status:String(e.status||t?.status||`UNKNOWN`).toUpperCase(),target:{region:String(t?.region||``),environment:`cloud`},agentId:e.agentId,agentName:e.agentName,endpoint:e.endpoint,framework:String(e.framework||t?.framework||``),runtimeType:String(e.runtimeType||t?.runtimeType||``),capabilities:e.capabilities||t?.capabilities,chatTransport:e.chatTransport||t?.chatTransport,chatRoutingReason:e.chatRoutingReason||t?.chatRoutingReason,updatedAt:String(e.updatedAt||t?.updatedAt||``),creatorName:e.creatorName||t?.creatorName,source:`account`}});e?.aborted||i(p)}catch(t){!EB(t)&&!e?.aborted&&l(t?.message||`部署记录不可用`)}finally{e?.aborted||o(!1)}},[]);(0,s.useEffect)(()=>{let e=new AbortController;return te(e.signal),()=>e.abort()},[te]),(0,s.useEffect)(()=>{let e=()=>{let e=RB();if(O(e),e){N(e.buildId),b(null);return}let t=LB();if(!t){b(null);return}let n=r.find(e=>e.id===t);n&&y?.deployment.id!==t&&ae(n,!1)};return e(),window.addEventListener(`popstate`,e),window.addEventListener(`hashchange`,e),()=>{window.removeEventListener(`popstate`,e),window.removeEventListener(`hashchange`,e)}},[r,y?.deployment.id]),(0,s.useEffect)(()=>{if(!D)return;let e=!1;return L(!0),V(``),(async()=>{try{let[t,n]=await Promise.all([g(`/api/v1/agents?limit=100`),g(`/api/v1/system/settings`)]);if(!t.ok)throw Error(`读取可部署 Build 失败(${t.status})`);let r=await t.json(),i=n.ok?await n.json():{},a=Array.isArray(r.items)?r.items:[],o=(await Promise.all(a.map(async e=>{let t=String(e?.metadata?.id||``).trim();if(!t)return null;let n=await g(`/api/v1/agents/${encodeURIComponent(t)}`);return n.ok?n.json():null}))).flatMap(e=>{if(!e)return[];let t=String(e?.draft?.metadata?.id||``).trim(),n=String(e?.draft?.metadata?.name||t||`未命名 Agent`),r=String(e?.draft?.spec?.runtime?.type||``),i=String(e?.draft?.metadata?.labels?.[`agentkit.ksyun.com/artifact-type`]||(r===`codex`?`ManagedRuntime`:`Code`));return(Array.isArray(e.builds)?e.builds:[]).filter(e=>e.status===`SUCCEEDED`).map(e=>({...e,agentId:t,agentName:n,runtimeName:e.runtimeName||r,artifactType:i}))}).sort((e,t)=>String(t.createdAt||``).localeCompare(String(e.createdAt||``)));if(D.buildId&&!o.some(e=>e.id===D.buildId)){let e=await g(`/api/v1/builds/${encodeURIComponent(D.buildId)}`);if(e.ok){let t=await e.json(),n=String(t.agentId||D.agentId||``).trim(),r=n?await g(`/api/v1/agents/${encodeURIComponent(n)}`):null,i=r?.ok?await r.json():null;if(String(t.status||``)===`SUCCEEDED`&&n){let e=String(i?.draft?.spec?.runtime?.type||t.runtimeName||``);o=[{...t,agentId:n,agentName:String(i?.draft?.metadata?.name||n),runtimeName:t.runtimeName||e,artifactType:String(i?.draft?.metadata?.labels?.[`agentkit.ksyun.com/artifact-type`]||(e===`codex`?`ManagedRuntime`:`Code`))},...o]}}}if(e)return;if(F(String(i.cloudRegion||``).trim()),j(o),D.buildId){if(!o.some(e=>e.id===D.buildId))throw Error(`Build ${D.buildId} 不存在或尚未成功`);N(D.buildId)}else N(e=>o.some(t=>t.id===e)?e:``)}catch(t){e||V(t?.message||`可部署 Build 不可用`)}finally{e||L(!1)}})(),()=>{e=!0}},[D?.agentId,D?.buildId]);let W=(0,s.useMemo)(()=>({ready:r.filter(e=>PB(e.status)===`ready`).length,pending:r.filter(e=>PB(e.status)===`pending`).length,failed:r.filter(e=>PB(e.status)===`failed`).length}),[r]);async function ne(e){d(t=>new Set(t).add(e.id));try{let t=e.source===`account`?await g(`/api/v1/cloud-agents/${encodeURIComponent(e.agentId||``)}`):await g(`/api/v1/deployments/${encodeURIComponent(e.id)}`);if(!t.ok)throw Error(`状态刷新失败(${t.status})`);let n=await t.json(),r=e.source===`account`?yB(e,n):{...e,...n,source:`receipt`};if(e.source===`receipt`&&r.agentId){let e=await g(`/api/v1/cloud-agents/${encodeURIComponent(r.agentId)}`).catch(()=>null);e?.ok&&(r=yB(r,await e.json()))}i(t=>t.map(t=>t.id===e.id?r:t))}catch(t){l(`${e.instanceId||e.id}:${t?.message||`状态未知`}`)}finally{d(t=>{let n=new Set(t);return n.delete(e.id),n})}}async function re(){await Promise.all(r.map(e=>ne(e)))}async function G(e){l(``);try{let t=await g(oB(e).kind===`official-dashboard`||e.source===`account`?`/api/v1/cloud-agents/${encodeURIComponent(e.agentId||``)}:dashboard`:`/api/v1/deployments/${encodeURIComponent(e.id)}:dashboard`,{method:`POST`});if(!t.ok)throw Error(`创建云端 UI 访问链接失败(${t.status})`);let n=await t.json(),r=String(n?.accessUrl||n?.access_url||``).trim();if(!r)throw Error(`云端未返回 Agent UI 地址`);window.open(r,`_blank`,`noopener,noreferrer`)}catch(t){l(`${e.instanceId||e.id}:${t?.message||`无法打开云端 UI`}`)}}async function ie(e,t){let n=await vB(`/api/v1/cloud-agents/${encodeURIComponent(e)}/versions?page=1&size=100`,t);if(!n.ok)throw Error(`读取云端版本失败(${n.status})`);let r=await n.json(),i=r.items||r.versions||r.Versions||[];return{items:(Array.isArray(i)?i:[]).map(e=>({versionId:String(e.versionId||e.version_id||e.VersionId||``),versionName:String(e.versionName||e.version_name||e.VersionName||``),tag:String(e.tag||e.Tag||``),status:String(e.status||e.Status||``),trafficPercentage:Number(e.trafficPercentage??e.traffic_percentage??e.TrafficPercentage??0),createdAt:e.createdAt||e.created_at||e.CreatedAt,createdBy:e.createdBy||e.created_by||e.CreatedBy,canRollback:!!(e.canRollback??e.can_rollback??e.CanRollback),rollbackDisabledReason:String(e.rollbackDisabledReason||e.rollback_disabled_reason||e.RollbackDisabledReason||``)})).filter(e=>e.versionId),currentVersionId:String(r.currentVersionId||r.current_version_id||r.CurrentVersionId||``)}}async function ae(e,t=!0,n){if(n?.aborted)return;t&&window.history.pushState(null,``,`#/deployments/${encodeURIComponent(e.id)}`),b({deployment:e,sourceAgentId:``,sourceAgentName:``,builds:[],versions:[],currentVersionId:``,loading:!0,error:``}),p(``),h(!1);let r=e.agentId?ie(e.agentId,n):Promise.resolve({items:[],currentVersionId:``});try{if(e.source===`account`){let t=await vB(`/api/v1/cloud-agents/${encodeURIComponent(e.agentId||``)}`,n);if(!t.ok)throw Error(`刷新云端 Agent 状态失败(${t.status})`);let a=await t.json(),o={...e,agentName:String(a.name||e.agentName||e.agentId||`云端 Agent`),status:String(a.status||e.status).toUpperCase(),endpoint:a.endpoint||e.endpoint,framework:a.framework||e.framework,runtimeType:a.runtimeType||e.runtimeType,capabilities:a.capabilities||e.capabilities,chatTransport:a.chatTransport||e.chatTransport,chatRoutingReason:a.chatRoutingReason||e.chatRoutingReason,versionId:a.versionId||e.versionId,updatedAt:a.updatedAt||e.updatedAt,creatorName:a.creatorName||e.creatorName},s=await r;if(n?.aborted)return;i(t=>t.map(t=>t.id===e.id?o:t)),b({deployment:o,sourceAgentId:``,sourceAgentName:o.agentName||o.agentId||`账号云端 Agent`,builds:[],versions:s.items,currentVersionId:s.currentVersionId,loading:!1,error:``});return}let t=await vB(`/api/v1/deployments/${encodeURIComponent(e.id)}`,n);if(!t.ok)throw Error(`刷新云端 Agent 状态失败(${t.status})`);let a={...e,...await t.json(),source:`receipt`},o=a;if(a.agentId){let e=await vB(`/api/v1/cloud-agents/${encodeURIComponent(a.agentId)}`,n).catch(e=>{if(EB(e))throw e;return null});e?.ok&&(o=yB(a,await e.json()))}if(n?.aborted)return;i(t=>t.map(t=>t.id===e.id?o:t));let s=await vB(`/api/v1/builds/${encodeURIComponent(o.buildId)}`,n);if(!s.ok)throw Error(`读取当前 Build 失败(${s.status})`);let c=await s.json(),l=String(c.agentId||``).trim();if(!l)throw Error(`当前部署缺少本地 Agent 关联`);let u=await vB(`/api/v1/agents/${encodeURIComponent(l)}`,n);if(!u.ok)throw Error(`读取本地 Build 历史失败(${u.status})`);let d=await u.json(),f=(Array.isArray(d.builds)?d.builds:[]).filter(e=>e.status===`SUCCEEDED`).sort((e,t)=>String(t.createdAt||``).localeCompare(String(e.createdAt||``))),p=await r;if(n?.aborted)return;b({deployment:o,sourceAgentId:l,sourceAgentName:String(d?.draft?.metadata?.name||l),builds:f,versions:p.items,currentVersionId:p.currentVersionId,loading:!1,error:``})}catch(e){if(EB(e)||n?.aborted)return;let t=await r.catch(()=>({items:[],currentVersionId:``}));b(n=>n?{...n,versions:t.items,currentVersionId:t.currentVersionId,loading:!1,error:e?.message||`云端 Agent 详情不可用`}:null)}}async function se(){if(!M||R)return;let e=k.find(e=>e.id===M);if(!e){V(`请选择一个已成功的 Build`);return}if(!P){V(`请先在 Studio 设置中配置云端 Region`);return}z(!0),V(``);let t=`deploy:${M}:${P}`,n=ee();try{let r=await NB(await jB(n.signal),t,`deploy`,`部署`,n.signal,(e,t)=>g(`/api/v1/builds/${encodeURIComponent(M)}/deployments`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":e},body:JSON.stringify({target:{region:P,environment:`cloud`},releasePolicy:{strategy:`rolling`,approval:`none`}}),signal:t}));if(r.status!==`SUCCEEDED`)throw Error(r.error?.message||`部署未完成`);DB(n.signal),await te(n.signal),DB(n.signal);let i=String(r.resourceId||``).trim();qz(i?Kz(i):`#/deployments`),Y(`已提交云端部署`,`${e.agentName||e.agentId} · ${e.id}`)}catch(e){!EB(e)&&!n.signal.aborted&&V(e?.message||`部署失败`)}finally{U(n),n.signal.aborted||z(!1)}}function ce(){b(null),p(``),h(!1),window.history.pushState(null,``,`#/deployments`)}async function le(e,t){if(!t||x)return;S(!0),l(``);let n=`update:${e.agentId||e.id}:${t}`,r=ee();try{let i=await NB(await jB(r.signal),n,`update`,`更新`,r.signal,(n,r)=>g(`/api/v1/builds/${encodeURIComponent(t)}/deployments`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":n},body:JSON.stringify({target:e.target,releasePolicy:{strategy:`rolling`,approval:`none`}}),signal:r}));if(i.status!==`SUCCEEDED`)throw Error(i.error?.message||`更新未完成`);DB(r.signal),b(null),await te(r.signal),DB(r.signal),Y(`已提交云端更新`,`Build ${t}`)}catch(e){!EB(e)&&!r.signal.aborted&&l(e?.message||`更新失败`)}finally{U(r),r.signal.aborted||S(!1)}}async function ue(){if(!C||T)return;let e=C;E(!0),l(``);try{let t=await g(e.source===`account`?`/api/v1/cloud-agents/${encodeURIComponent(e.agentId||``)}`:`/api/v1/deployments/${encodeURIComponent(e.id)}`,{method:`DELETE`});if(!t.ok)throw Error(`删除云端 Agent 失败(${t.status})`);let n=await t.json();w(null),b(null),await te(),Y(`云端 Agent 已删除`,String(n.agentId||e.agentId||``))}catch(e){l(e?.message||`删除云端 Agent 失败`)}finally{E(!1)}}async function de(){if(!y||!f||_)return;let e=y.deployment,t=String(e.agentId||``).trim(),n=f,r=y.versions.find(e=>e.versionId===n),i=n===y.currentVersionId||r?.status.toLowerCase()===`current`;if(!t||!r?.canRollback||i)return;v(!0),b(e=>e&&{...e,error:``});let a=`rollback:${t}:${n}`,o=ee();try{let r=await NB(await jB(o.signal),a,`rollback`,`回滚`,o.signal,(e,r)=>g(`/api/v1/cloud-agents/${encodeURIComponent(t)}:rollback-version`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":e},body:JSON.stringify({versionId:n}),signal:r}));if(r.status!==`SUCCEEDED`)throw Error(r.error?.message||`回滚未完成`);DB(o.signal),h(!1),p(``),await te(o.signal),await ae(e,!1,o.signal),DB(o.signal),Y(`已提交版本回滚`,`云端版本 ${n}`)}catch(e){!EB(e)&&!o.signal.aborted&&(h(!1),b(t=>t&&{...t,error:e?.message||`回滚失败`}))}finally{U(o),o.signal.aborted||v(!1)}}if(D){let e=k.find(e=>e.id===M);return(0,K.jsxs)(`div`,{className:`delivery-page deployment-create-page`,"data-layout":`document`,children:[(0,K.jsxs)(gd,{children:[(0,K.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:()=>qz(`#/deployments`),children:[(0,K.jsx)(A,{size:15}),(0,K.jsx)(`span`,{children:`返回云端 Agent`})]}),(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>void se(),disabled:!e||R||I,children:[(0,K.jsx)(oe,{size:15}),(0,K.jsx)(`span`,{children:R?`部署中…`:`部署到云端`})]})]}),(0,K.jsx)(`div`,{className:`delivery-intro`,children:(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h2`,{children:`部署到云端`}),(0,K.jsx)(`p`,{children:`选择一个已成功的 Build,由 Studio 提交统一云端部署操作。`})]})}),B&&(0,K.jsx)(`div`,{className:`form-error`,role:`alert`,children:B}),(0,K.jsxs)(`section`,{className:`delivery-block`,"aria-label":`选择部署 Build`,children:[(0,K.jsx)(`h2`,{children:`选择 Build`}),(0,K.jsx)(`p`,{children:`ManagedRuntime 使用已校验声明;ADK、LangGraph 等代码 Agent 使用不可变 Code Bundle。`}),I?(0,K.jsx)(`p`,{children:`正在读取可部署 Build…`}):k.length?(0,K.jsx)(`div`,{className:`deployment-version-list`,role:`radiogroup`,"aria-label":`可部署 Build`,children:k.map(e=>(0,K.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":e.id===M,"aria-label":`${e.agentName||e.agentId||`Agent`} ${e.id}`,className:`deployment-version-option`,"data-selected":e.id===M,onClick:()=>N(e.id),children:[(0,K.jsx)(`strong`,{className:`deployment-version-name`,children:e.agentName||e.agentId||`未命名 Agent`}),(0,K.jsx)(`span`,{className:`deployment-version-state`,"data-state":`available`,children:e.artifactType===`ManagedRuntime`?`托管声明`:`代码 Bundle`}),(0,K.jsx)(`code`,{title:e.id,children:IB(e.id,24)}),(0,K.jsx)(`time`,{className:`deployment-version-time`,dateTime:e.createdAt||void 0,children:zB(e.createdAt)})]},e.id))}):(0,K.jsxs)(`div`,{className:`delivery-empty-state`,children:[(0,K.jsx)(ze,{size:24}),(0,K.jsx)(`h2`,{children:`没有可部署的 Build`}),(0,K.jsx)(`p`,{children:`请先完成 Agent 构建或 ManagedRuntime 声明校验。`}),(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:n,children:`前往构建`})]}),e&&(0,K.jsxs)(`div`,{className:`api-contract`,"aria-label":`部署提交摘要`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Agent`}),(0,K.jsx)(`strong`,{children:e.agentName||e.agentId})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Build`}),(0,K.jsx)(`code`,{children:e.id})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`制品`}),(0,K.jsx)(`strong`,{children:e.artifactType===`ManagedRuntime`?`ManagedRuntime 声明`:`Code Bundle`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`目标`}),(0,K.jsx)(`strong`,{children:`云端`})]})]})]})]})}if(y){let e=y.builds[0],n=y.versions.find(e=>e.versionId===f&&e.canRollback&&e.versionId!==y.currentVersionId&&e.status.toLowerCase()!==`current`),r=y.versions.find(e=>e.versionId===y.currentVersionId||e.status.toLowerCase()===`current`),i=y.deployment.source===`receipt`,a=i&&y.deployment.artifactId===`managed-runtime`&&!!e&&e.id!==y.deployment.buildId,o=oB(y.deployment);return(0,K.jsxs)(`div`,{className:`delivery-page deployment-detail-page`,"data-layout":`document`,children:[(0,K.jsxs)(gd,{children:[(0,K.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:ce,children:[(0,K.jsx)(A,{size:15}),(0,K.jsx)(`span`,{children:`返回云端 Agent`})]}),!!y.deployment.agentId&&(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:()=>h(!0),disabled:!n?.canRollback||x||_,children:_?`回滚中…`:n?`回滚到所选版本`:`选择版本回滚`}),a&&(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:()=>void le(y.deployment,e.id),disabled:x,children:x?`更新中…`:`部署最新 Build`}),PB(y.deployment.status)===`ready`&&(0,K.jsx)(`button`,{className:`button accent`,type:`button`,onClick:()=>o.kind===`official-dashboard`?void G(y.deployment):t(y.deployment),disabled:x,children:o.kind===`official-dashboard`?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(he,{size:15}),`链接`]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Ne,{size:15}),`进入会话`]})})]}),(0,K.jsxs)(`div`,{className:`delivery-intro deployment-detail-heading`,children:[(0,K.jsx)(`button`,{className:`button tertiary compact`,type:`button`,onClick:ce,"aria-label":`返回云端 Agent`,children:(0,K.jsx)(A,{size:16})}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h2`,{children:y.deployment.agentName||y.sourceAgentName||`云端 Agent`}),(0,K.jsx)(`p`,{children:y.deployment.agentId||y.deployment.id})]})]}),y.error&&(0,K.jsx)(`div`,{className:`form-error`,role:`alert`,children:y.error}),(0,K.jsxs)(`section`,{className:`delivery-block`,"aria-label":`云端 Agent 详情`,children:[(0,K.jsxs)(`div`,{className:`api-contract`,"aria-label":`云端部署事实`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`名称`}),(0,K.jsx)(`strong`,{children:y.deployment.agentName||y.sourceAgentName})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`来源`}),(0,K.jsx)(`strong`,{children:i?`Studio 部署记录`:`账号云端 Agent`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`创建子账号`}),(0,K.jsx)(`strong`,{children:y.deployment.creatorName||`-`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`状态`}),(0,K.jsx)(`strong`,{children:FB(y.deployment.status)})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`云端 Agent`}),(0,K.jsx)(`code`,{children:y.deployment.agentId||`尚未返回`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`类型`}),(0,K.jsx)(`code`,{children:y.deployment.framework||y.deployment.artifactId||`尚未返回`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Endpoint`}),(0,K.jsx)(`code`,{children:y.deployment.endpoint||`尚未返回`})]}),y.deployment.instanceId&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`实例`}),(0,K.jsx)(`code`,{children:y.deployment.instanceId})]}),i&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`当前 Build`}),(0,K.jsx)(`code`,{children:y.deployment.buildId})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`当前版本`}),(0,K.jsx)(`code`,{title:r?.versionId||y.deployment.versionId||void 0,children:r?.versionName||r?.tag||y.deployment.versionId||`尚未返回`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`更新时间`}),(0,K.jsx)(`code`,{children:zB(y.deployment.updatedAt)})]}),i&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Bundle`}),(0,K.jsx)(`code`,{title:y.deployment.bundleDigest,children:y.deployment.bundleDigest})]})]}),y.deployment.agentId?(0,K.jsxs)(`section`,{className:`deployment-version-history`,"aria-label":`云端版本历史`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h3`,{children:`云端版本历史`}),(0,K.jsx)(`p`,{children:`版本状态与可回滚性来自云端 Server`})]}),y.loading?(0,K.jsx)(`p`,{children:`正在读取版本…`}):(0,K.jsxs)(`div`,{className:`deployment-version-list`,role:`radiogroup`,"aria-label":`选择回滚版本`,children:[(0,K.jsxs)(`div`,{className:`deployment-version-header`,"aria-hidden":`true`,children:[(0,K.jsx)(`span`,{children:`版本`}),(0,K.jsx)(`span`,{children:`状态`}),(0,K.jsx)(`span`,{children:`流量`}),(0,K.jsx)(`span`,{children:`创建时间`})]}),y.versions.length?y.versions.map(e=>{let t=e.versionId===y.currentVersionId||e.status.toLowerCase()===`current`,n=t?`当前`:e.canRollback?`可回滚`:`不可回滚`;return(0,K.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":e.versionId===f,"aria-label":`${t?`当前版本`:e.canRollback?`可回滚版本`:`不可回滚版本`} ${e.versionName||e.tag||`未命名`}`,className:`deployment-version-option`,"data-current":t,"data-selected":e.versionId===f,disabled:t||!e.canRollback||x||_,onClick:()=>p(e.versionId),children:[(0,K.jsx)(`strong`,{className:`deployment-version-name`,children:e.versionName||e.tag||`未命名版本`}),(0,K.jsx)(`span`,{className:`deployment-version-state`,"data-state":t?`current`:e.canRollback?`available`:`disabled`,children:n}),(0,K.jsxs)(`span`,{className:`deployment-version-traffic`,children:[e.trafficPercentage,`%`]}),(0,K.jsx)(`time`,{className:`deployment-version-time`,dateTime:e.createdAt||void 0,children:zB(e.createdAt)})]},e.versionId)}):(0,K.jsx)(`p`,{className:`deployment-version-empty`,children:`云端暂未返回版本记录。`})]})]}):(0,K.jsx)(`div`,{className:`callout`,children:(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`缺少云端 Agent ID`}),(0,K.jsx)(`p`,{children:`当前记录无法查询 Server 版本历史,因此不开放版本回滚。`})]})})]}),m&&n&&(0,K.jsx)(Ca,{title:`确认回滚云端 Agent?`,description:`当前云端版本 ${r?.versionName||y.deployment.versionId||`未知`}(${r?.versionId||y.deployment.versionId||`未知`})将回滚到 ${n.versionName||n.tag||`目标版本`}(${n.versionId})。系统将调用 Server RollbackVersion,并在提交后重新读取 Agent 与版本列表。`,confirmText:`确认回滚`,danger:!1,busy:_,onConfirm:()=>void de(),onCancel:()=>h(!1)})]})}return(0,K.jsxs)(`div`,{className:`delivery-page`,"data-layout":`document`,children:[(0,K.jsxs)(gd,{children:[(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>qz(`#/deployments/new`),children:[(0,K.jsx)(oe,{size:15}),(0,K.jsx)(`span`,{children:`部署 Agent`})]}),(0,K.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:()=>void re(),disabled:!r.length||u.size>0,children:[(0,K.jsx)(Je,{size:15}),(0,K.jsx)(`span`,{children:`刷新全部状态`})]})]}),c&&(0,K.jsx)(`div`,{className:`form-error`,role:`alert`,children:c}),(0,K.jsxs)(`section`,{className:`delivery-stat-strip compact-delivery-summary`,"aria-label":`部署摘要`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`stat-label`,title:`同一 Agent 的多次部署按 Agent 聚合`,children:`云端 Agent`}),(0,K.jsx)(`strong`,{children:r.length})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`运行中`}),(0,K.jsx)(`strong`,{children:W.ready})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`部署中`}),(0,K.jsx)(`strong`,{children:W.pending})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`异常`}),(0,K.jsx)(`strong`,{children:W.failed})]})]}),a?(0,K.jsx)(`div`,{className:`delivery-empty-state`,children:(0,K.jsx)(`p`,{children:`正在读取云端 Agent…`})}):r.length?(0,K.jsxs)(`section`,{className:`delivery-block`,"aria-label":`云端 Agent 列表`,children:[(0,K.jsxs)(`div`,{className:`delivery-section-heading`,children:[(0,K.jsx)(`h2`,{children:`Agent 列表`}),(0,K.jsxs)(`span`,{children:[r.length,` 个`]})]}),(0,K.jsx)(`div`,{className:`delivery-table-scroll`,children:(0,K.jsxs)(`table`,{className:`delivery-table`,children:[(0,K.jsx)(`thead`,{children:(0,K.jsxs)(`tr`,{children:[(0,K.jsx)(`th`,{children:`Agent`}),(0,K.jsx)(`th`,{children:`状态`}),(0,K.jsx)(`th`,{children:`类型`}),(0,K.jsx)(`th`,{children:`创建子账号`}),(0,K.jsx)(`th`,{children:`版本`}),(0,K.jsx)(`th`,{children:`更新时间`}),(0,K.jsx)(`th`,{children:(0,K.jsx)(`span`,{className:`sr-only`,children:`操作`})})]})}),(0,K.jsx)(`tbody`,{children:r.map(e=>{let n=u.has(e.id),r=oB(e);return(0,K.jsxs)(`tr`,{children:[(0,K.jsx)(`td`,{children:(0,K.jsxs)(`button`,{className:`delivery-agent-identity`,type:`button`,"aria-label":`查看 ${e.agentName||e.agentId||`云端 Agent`} 详情`,onClick:()=>void ae(e),children:[(0,K.jsx)(`strong`,{children:e.agentName||e.agentId||`云端 Agent`}),(0,K.jsx)(`code`,{title:e.agentId||e.id,children:IB(e.agentId||e.id,24)})]})}),(0,K.jsx)(`td`,{children:(0,K.jsx)(`span`,{className:`delivery-status-badge`,"data-state":PB(e.status),children:FB(e.status)})}),(0,K.jsxs)(`td`,{children:[(0,K.jsx)(`strong`,{children:e.framework||(e.artifactId===`managed-runtime`?`YAML Agent`:`高代码 Agent`)}),e.source===`receipt`&&(0,K.jsx)(`small`,{children:`Studio 部署记录`})]}),(0,K.jsx)(`td`,{children:e.creatorName||`-`}),(0,K.jsx)(`td`,{children:(0,K.jsx)(`code`,{title:e.versionId||``,children:IB(e.versionId||`—`,20)})}),(0,K.jsx)(`td`,{children:(0,K.jsx)(`span`,{className:`delivery-updated-at`,children:zB(e.updatedAt)})}),(0,K.jsxs)(`td`,{className:`delivery-row-actions`,children:[PB(e.status)===`ready`&&e.agentId&&(0,K.jsx)(`button`,{className:`button secondary compact`,type:`button`,"aria-label":r.kind===`official-dashboard`?`打开官方 Dashboard`:`打开云端 Agent 会话`,onClick:()=>r.kind===`official-dashboard`?void G(e):t(e),children:r.kind===`official-dashboard`?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(he,{size:15}),(0,K.jsx)(`span`,{children:`链接`})]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Ne,{size:15}),(0,K.jsx)(`span`,{children:`会话`})]})}),(0,K.jsx)(pd,{label:`${e.agentName||e.agentId||e.id} 的更多操作`,items:[{label:n?`正在刷新状态`:`刷新状态`,disabled:n,onSelect:()=>void ne(e)},...PB(e.status)===`ready`&&e.agentId?[{label:`在 Hosted UI 中打开`,onSelect:()=>void G(e)}]:[],...e.source===`receipt`?[{label:`版本管理`,onSelect:()=>void ae(e)}]:[],...e.agentId?[{label:`删除云端 Agent`,danger:!0,onSelect:()=>w(e)}]:[]]})]})]},e.id)})})]})})]}):(0,K.jsxs)(`div`,{className:`delivery-empty-state`,children:[(0,K.jsx)(oe,{size:24}),(0,K.jsx)(`h2`,{children:`还没有云端 Agent`}),(0,K.jsx)(`p`,{children:`可以从 Agent 详情构建并部署到云端。`}),(0,K.jsxs)(`div`,{className:`delivery-empty-actions`,children:[(0,K.jsx)(`button`,{className:`button accent`,type:`button`,onClick:()=>qz(`#/deployments/new`),children:`部署 Agent`}),(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:e,children:`创建 Agent`})]})]}),C&&(0,K.jsx)(Ca,{title:`删除云端 Agent?`,description:`将删除 ${C.agentId||C.id} 的云端实例和本地部署记录。此操作不会删除本地 Agent 与 Build。`,confirmText:`删除云端 Agent`,busy:T,onConfirm:()=>void ue(),onCancel:()=>w(null)})]})}var VB=e=>typeof e==`boolean`||e instanceof Boolean,HB=e=>typeof e==`number`||e instanceof Number,UB=e=>typeof e==`bigint`||e instanceof BigInt,WB=e=>!!e&&e instanceof Date,GB=e=>typeof e==`string`||e instanceof String,KB=e=>Array.isArray(e),qB=e=>typeof e==`object`&&!!e,JB=e=>!!e&&e instanceof Object&&typeof e==`function`;function YB(e,t){return t===void 0&&(t=!1),!e||t?`"${e}"`:e}function XB(e,t,n){return n?JSON.stringify(e):t?`"${e}"`:e}function ZB(e){let{field:t,value:n,data:r,lastElement:i,openBracket:a,closeBracket:o,level:c,style:l,shouldExpandNode:u,clickToExpandNode:d,outerRef:f,beforeExpandChange:p}=e,m=(0,s.useRef)(!1),[h,g]=(0,s.useState)(()=>u(c,n,t)),_=(0,s.useRef)(null);(0,s.useEffect)(()=>{m.current?g(u(c,n,t)):m.current=!0},[u]);let v=(0,s.useId)();if(r.length===0)return QB({field:t,openBracket:a,closeBracket:o,lastElement:i,style:l});let y=h?l.collapseIcon:l.expandIcon,b=h?l.ariaLables.collapseJson:l.ariaLables.expandJson,x=c+1,S=r.length-1,C=e=>{h!==e&&(!p||p({level:c,value:n,field:t,newExpandValue:e}))&&g(e)},w=e=>{if(e.key===`ArrowRight`||e.key===`ArrowLeft`)e.preventDefault(),C(e.key===`ArrowRight`);else if(e.key===`ArrowUp`||e.key===`ArrowDown`){e.preventDefault();let t=e.key===`ArrowUp`?-1:1;if(!f.current)return;let n=f.current.querySelectorAll(`[role=button]`),r=-1;for(let e=0;e{C(!h);let e=_.current;if(!e)return;let t=f.current?.querySelector(`[role=button][tabindex="0"]`);t&&(t.tabIndex=-1),e.tabIndex=0,e.focus()};return(0,s.createElement)(`div`,{className:l.basicChildStyle,role:`treeitem`,"aria-expanded":h,"aria-selected":void 0},(0,s.createElement)(`span`,{className:y,onClick:T,onKeyDown:w,role:`button`,"aria-label":b,"aria-expanded":h,"aria-controls":h?v:void 0,ref:_,tabIndex:c===0?0:-1}),(t||t===``)&&(d?(0,s.createElement)(`span`,{className:l.clickableLabel,onClick:T,onKeyDown:w},YB(t,l.quotesForFieldNames),`:`):(0,s.createElement)(`span`,{className:l.label},YB(t,l.quotesForFieldNames),`:`)),(0,s.createElement)(`span`,{className:l.punctuation},a),h?(0,s.createElement)(`ul`,{id:v,role:`group`,className:l.childFieldsContainer},r.map((e,t)=>(0,s.createElement)(nV,{key:e[0]||t,field:e[0],value:e[1],style:l,lastElement:t===S,level:x,shouldExpandNode:u,clickToExpandNode:d,beforeExpandChange:p,outerRef:f}))):(0,s.createElement)(`span`,{className:l.collapsedContent,onClick:T,onKeyDown:w}),(0,s.createElement)(`span`,{className:l.punctuation},o),!i&&(0,s.createElement)(`span`,{className:l.punctuation},`,`))}function QB(e){let{field:t,openBracket:n,closeBracket:r,lastElement:i,style:a}=e;return(0,s.createElement)(`div`,{className:a.basicChildStyle,role:`treeitem`,"aria-selected":void 0},(t||t===``)&&(0,s.createElement)(`span`,{className:a.label},YB(t,a.quotesForFieldNames),`:`),(0,s.createElement)(`span`,{className:a.punctuation},n),(0,s.createElement)(`span`,{className:a.punctuation},r),!i&&(0,s.createElement)(`span`,{className:a.punctuation},`,`))}function $B(e){let{field:t,value:n,style:r,lastElement:i,shouldExpandNode:a,clickToExpandNode:o,level:s,outerRef:c,beforeExpandChange:l}=e;return ZB({field:t,value:n,lastElement:i||!1,level:s,openBracket:`{`,closeBracket:`}`,style:r,shouldExpandNode:a,clickToExpandNode:o,data:Object.keys(n).map(e=>[e,n[e]]),outerRef:c,beforeExpandChange:l})}function eV(e){let{field:t,value:n,style:r,lastElement:i,level:a,shouldExpandNode:o,clickToExpandNode:s,outerRef:c,beforeExpandChange:l}=e;return ZB({field:t,value:n,lastElement:i||!1,level:a,openBracket:`[`,closeBracket:`]`,style:r,shouldExpandNode:o,clickToExpandNode:s,data:n.map(e=>[void 0,e]),outerRef:c,beforeExpandChange:l})}function tV(e){let{field:t,value:n,style:r,lastElement:i}=e,a,o=r.otherValue;return n===null?(a=`null`,o=r.nullValue):n===void 0?(a=`undefined`,o=r.undefinedValue):GB(n)?(a=XB(n,!r.noQuotesForStringValues,r.stringifyStringValues),o=r.stringValue):VB(n)?(a=n?`true`:`false`,o=r.booleanValue):HB(n)?(a=n.toString(),o=r.numberValue):UB(n)?(a=`${n.toString()}n`,o=r.numberValue):a=WB(n)?n.toISOString():JB(n)?`function() { }`:n.toString(),(0,s.createElement)(`div`,{className:r.basicChildStyle,role:`treeitem`,"aria-selected":void 0},(t||t===``)&&(0,s.createElement)(`span`,{className:r.label},YB(t,r.quotesForFieldNames),`:`),(0,s.createElement)(`span`,{className:o},a),!i&&(0,s.createElement)(`span`,{className:r.punctuation},`,`))}function nV(e){let t=e.value;return KB(t)?(0,s.createElement)(eV,Object.assign({},e)):qB(t)&&!WB(t)&&!JB(t)?(0,s.createElement)($B,Object.assign({},e)):(0,s.createElement)(tV,Object.assign({},e))}var rV={"container-base":`_GzYRV`,"punctuation-base":`_3eOF8`,pointer:`_1MFti`,"expander-base":`_f10Tu _1MFti`,"expand-icon":`_1UmXx`,"collapse-icon":`_1LId0`,"collapsed-content-base":`_1pNG9 _1MFti`,"container-light":`_2IvMF _GzYRV`,"basic-element-style":`_2bkNM`,"child-fields-container":`_1BXBN`,"label-light":`_1MGIk`,"clickable-label-light":`_2YKJg _1MGIk _1MFti`,"punctuation-light":`_3uHL6 _3eOF8`,"value-null-light":`_2T6PJ`,"value-undefined-light":`_1Gho6`,"value-string-light":`_vGjyY`,"value-number-light":`_1bQdo`,"value-boolean-light":`_3zQKs`,"value-other-light":`_1xvuR`,"collapse-icon-light":`_oLqym _f10Tu _1MFti _1LId0`,"expand-icon-light":`_2AXVT _f10Tu _1MFti _1UmXx`,"collapsed-content-light":`_2KJWg _1pNG9 _1MFti`,"container-dark":`_11RoI _GzYRV`,"expand-icon-dark":`_17H2C _f10Tu _1MFti _1UmXx`,"collapse-icon-dark":`_3QHg2 _f10Tu _1MFti _1LId0`,"collapsed-content-dark":`_3fDAz _1pNG9 _1MFti`,"label-dark":`_2bSDX`,"clickable-label-dark":`_1RQEj _2bSDX _1MFti`,"punctuation-dark":`_gsbQL _3eOF8`,"value-null-dark":`_LaAZe`,"value-undefined-dark":`_GTKgm`,"value-string-dark":`_Chy1W`,"value-number-dark":`_2bveF`,"value-boolean-dark":`_2vRm-`,"value-other-dark":`_1prJR`},iV={container:rV[`container-light`],basicChildStyle:rV[`basic-element-style`],childFieldsContainer:rV[`child-fields-container`],label:rV[`label-light`],clickableLabel:rV[`clickable-label-light`],nullValue:rV[`value-null-light`],undefinedValue:rV[`value-undefined-light`],stringValue:rV[`value-string-light`],booleanValue:rV[`value-boolean-light`],numberValue:rV[`value-number-light`],otherValue:rV[`value-other-light`],punctuation:rV[`punctuation-light`],collapseIcon:rV[`collapse-icon-light`],expandIcon:rV[`expand-icon-light`],collapsedContent:rV[`collapsed-content-light`],noQuotesForStringValues:!1,quotesForFieldNames:!1,ariaLables:{collapseJson:`collapse JSON`,expandJson:`expand JSON`},stringifyStringValues:!1};rV[`container-dark`],rV[`basic-element-style`],rV[`child-fields-container`],rV[`label-dark`],rV[`clickable-label-dark`],rV[`value-null-dark`],rV[`value-undefined-dark`],rV[`value-string-dark`],rV[`value-boolean-dark`],rV[`value-number-dark`],rV[`value-other-dark`],rV[`punctuation-dark`],rV[`collapse-icon-dark`],rV[`expand-icon-dark`],rV[`collapsed-content-dark`];var aV=()=>!0,oV=e=>e<1,sV=e=>{let{data:t,style:n=iV,shouldExpandNode:r=aV,clickToExpandNode:i=!1,beforeExpandChange:a,compactTopLevel:o,...c}=e,l=(0,s.useRef)(null);return(0,s.createElement)(`div`,Object.assign({"aria-label":`JSON view`},c,{className:n.container,ref:l,role:`tree`}),o&&qB(t)?Object.entries(t).map(e=>{let[t,o]=e;return(0,s.createElement)(nV,{key:t,field:t,value:o,style:{...iV,...n},lastElement:!0,level:1,shouldExpandNode:r,clickToExpandNode:i,beforeExpandChange:a,outerRef:l})}):(0,s.createElement)(nV,{value:t,style:{...iV,...n},lastElement:!0,level:0,shouldExpandNode:r,clickToExpandNode:i,outerRef:l,beforeExpandChange:a}))};function cV(e){return e===`failed`||e===`canceled`||e===`cancelled`||e===`interrupted`?3:e===`completed`?2:+(e===`running`)}function lV(e,t){let n=[...e?.sourceEvents||[],t].sort((e,t)=>e.seqId-t.seqId),r=n[0],i=n[n.length-1],a={...e?.details||{},...t.details},o=t.details.text,s=t.type.startsWith(`reasoning.`),c=t.type.startsWith(`text.`),l=t.category===`assistant`;if((s||c)&&typeof o==`string`){let n=s?`reasoning`:`output`,r=e?.details[n];a[n]=t.type.endsWith(`.delta`)&&t.details.replace!==!0&&typeof r==`string`?r+o:o,a.text=a[n]}t.type===`usage.reported`&&(a.usage={...t.details});let u=cV(t.status)>=cV(e?.status||null)?t.status??e?.status??null:e?.status??null,d=!!(u&&cV(u)>=2)||/\.(end|completed|resolved)$/.test(t.type),f=r.timestamp,p=d?i.timestamp:e?.endedAt??null,m=p!==null&&n.length>1&&p>f?(p-f)*1e3:null;return{...e||t,...t,type:l?`assistant.message`:t.type,summary:l?`Message`:t.summary,status:u,durationMs:t.durationMs??e?.durationMs??m,details:a,sourceEvents:n,firstSeqId:r.seqId,lastSeqId:i.seqId,startedAt:f,endedAt:p}}function uV(e,t){let n=e.byRecordId.get(t.recordId);if(n===void 0){e.byRecordId.set(t.recordId,e.items.length),e.items.push(lV(void 0,t));return}e.items[n]=lV(e.items[n],t)}function dV(e){return{...e,items:[...e.items],bySeq:new Map(e.bySeq),byRecordId:new Map(e.byRecordId)}}function fV(e=[],t=!1){let n={items:[],bySeq:new Map,byRecordId:new Map,lastSeqId:0,gap:null,hasMore:t,followTail:!0};for(let t of[...e].sort((e,t)=>e.seqId-t.seqId))n.bySeq.has(t.seqId)||(n.bySeq.set(t.seqId,t),uV(n,t),n.lastSeqId=t.seqId);return n}function pV(e,t,n=!0){if(e.bySeq.has(t.seqId))return e;let r=dV(e);if(r.bySeq.set(t.seqId,t),t.seqId<=r.lastSeqId)return r;if(!n)return uV(r,t),r.lastSeqId=t.seqId,r.gap=null,r;if(t.seqId>r.lastSeqId+1)return r.gap={afterSeqId:r.lastSeqId,beforeSeqId:t.seqId},r;let i=t;for(;i;)uV(r,i),r.lastSeqId=i.seqId,i=r.bySeq.get(r.lastSeqId+1);let a=[...r.bySeq.keys()].filter(e=>e>r.lastSeqId).sort((e,t)=>e-t)[0];return r.gap=a===void 0?null:{afterSeqId:r.lastSeqId,beforeSeqId:a},r}function mV(e,t,n){let r=new Map(e.bySeq);for(let e of t)r.has(e.seqId)||r.set(e.seqId,e);let i=fV([...r.values()],n);return i.followTail=e.followTail,i}function hV(e){return e===null||Number.isNaN(e)?`不可用`:e<1e3?`${Math.round(e)} ms`:`${(e/1e3).toFixed(e<1e4?2:1)} s`}function gV(e){return e===`tool`?(0,K.jsx)(pt,{size:15}):e===`assistant`?(0,K.jsx)(N,{size:15}):e===`context`?(0,K.jsx)(F,{size:15}):e===`user`?(0,K.jsx)(Me,{size:15}):e===`approval`?(0,K.jsx)(et,{size:15}):e===`artifact`?(0,K.jsx)(_e,{size:15}):(0,K.jsx)(ne,{size:15})}function _V(e){return[yV(e),e.status||`未上报`,hV(e.durationMs)].join(` · `)}function vV(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}function yV(e){let t=e.details.name??e.details.model;return typeof t==`string`&&t?t:e.summary}function bV(e,t){let n=vV(e.details.usage)[t];return typeof n==`number`?String(n):`-`}function xV(e){return{user:`User`,context:`Context`,assistant:`Assistant`,tool:`Tool`,approval:`Approval`,artifact:`Artifact`,system:`System`}[e]}function SV(e){return e.category===`user`||e.category===`context`?`input`:e.category===`assistant`?`model`:e.category===`tool`?`tools`:null}function CV(e,t){let n=new URLSearchParams({limit:`100`});return t&&n.set(`invocationId`,t),`/api/v1/sessions/${encodeURIComponent(e)}/events?${n}`}function wV({record:e}){let[t,n]=(0,s.useState)(e.category===`system`?`source`:`summary`);return(0,K.jsxs)(`div`,{className:`trajectory-detail`,children:[(0,K.jsxs)(`header`,{className:`trajectory-detail-heading`,children:[(0,K.jsx)(`strong`,{children:yV(e)}),(0,K.jsxs)(`span`,{children:[xV(e.category),` · `,e.status||`未上报`]})]}),(0,K.jsx)(`div`,{className:`trajectory-detail-tabs`,role:`tablist`,"aria-label":`节点详情`,children:[`summary`,`preview`,`raw`,`source`].map(e=>(0,K.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":t===e,onClick:()=>n(e),children:e===`summary`?`Summary`:e===`preview`?`Preview`:e===`raw`?`Raw Events`:`Source`},e))}),t===`summary`&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`section`,{children:[(0,K.jsx)(`h3`,{children:`Timing`}),(0,K.jsx)(`pre`,{children:JSON.stringify({status:e.status,durationMs:e.durationMs,ttftMs:e.details.ttft_ms??null,startedAt:e.startedAt,endedAt:e.endedAt},null,2)})]}),e.details.usage!==void 0&&(0,K.jsxs)(`section`,{children:[(0,K.jsx)(`h3`,{children:`Usage`}),(0,K.jsx)(`pre`,{children:JSON.stringify(e.details.usage,null,2)})]})]}),t===`preview`&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`section`,{children:[(0,K.jsx)(`h3`,{children:`Input`}),(0,K.jsx)(`pre`,{children:JSON.stringify(e.details.args??e.details.input??(e.category===`user`?e.details.text:null),null,2)})]}),(0,K.jsxs)(`section`,{children:[(0,K.jsx)(`h3`,{children:`Output`}),(0,K.jsx)(`pre`,{children:JSON.stringify(e.details.result??e.details.output??null,null,2)})]}),(0,K.jsxs)(`section`,{children:[(0,K.jsx)(`h3`,{children:`Reasoning`}),(0,K.jsx)(`pre`,{children:JSON.stringify(e.details.reasoning??null,null,2)})]})]}),t===`raw`&&(0,K.jsxs)(`section`,{children:[(0,K.jsx)(`h3`,{children:`Raw Events`}),(0,K.jsx)(`pre`,{children:JSON.stringify(e.sourceEvents.map(e=>e.source??e),null,2)})]}),t===`source`&&(0,K.jsxs)(`section`,{children:[(0,K.jsx)(`h3`,{children:`Source`}),(0,K.jsx)(`pre`,{children:JSON.stringify({recordId:e.recordId,eventIds:e.sourceEvents.map(e=>e.eventId),seqIds:e.sourceEvents.map(e=>e.seqId),turnId:e.turnId,stepId:e.stepId},null,2)})]})]})}function TV({sessionId:e,invocationId:t,onSelectionChange:n}){let[r,i]=(0,s.useState)(()=>fV()),[a,o]=(0,s.useState)(!0),[c,l]=(0,s.useState)(!0),[u,d]=(0,s.useState)(!0),[f,p]=(0,s.useState)(!1),[m,h]=(0,s.useState)(null),[_,v]=(0,s.useState)(!0),[y,b]=(0,s.useState)(``),x=(0,s.useRef)(null);(0,s.useEffect)(()=>{let n=!1,r=null;return v(!0),b(``),i(fV()),h(null),g(CV(e,t)).then(async e=>{if(!e.ok)throw Error(`轨迹加载失败(${e.status})`);return e.json()}).then(a=>{if(n)return;let o=fV(a.items||[],!!a.page?.hasMore);i(o),v(!1);let s=new URLSearchParams({afterSeqId:String(o.lastSeqId)});t&&s.set(`invocationId`,t),r=new EventSource(`/api/v1/sessions/${encodeURIComponent(e)}/events/stream?${s}`),r.addEventListener(`runtime_event`,e=>{try{let n=JSON.parse(e.data);i(e=>pV(e,n,!t))}catch{b(`实时轨迹包含无法解析的事件`)}})}).catch(e=>{n||(v(!1),b(e instanceof Error?e.message:`轨迹加载失败`))}),()=>{n=!0,r?.close()}},[t,e]),(0,s.useEffect)(()=>{if(!r.gap)return;let n=!1,a=r.gap,o=new URLSearchParams({limit:`500`,beforeSeqId:String(a.beforeSeqId)});return t&&o.set(`invocationId`,t),g(`/api/v1/sessions/${encodeURIComponent(e)}/events?${o}`).then(e=>{if(!e.ok)throw Error(`轨迹补拉失败(${e.status})`);return e.json()}).then(e=>{if(n)return;let t=(e.items||[]).filter(e=>e.seqId>a.afterSeqId).sort((e,t)=>e.seqId-t.seqId);i(e=>t.reduce((e,t)=>pV(e,t),e))}).catch(()=>{n||b(`实时轨迹存在序号缺口,补拉失败`)}),()=>{n=!0}},[t,e,r.gap]),(0,s.useEffect)(()=>{let e=x.current;e&&r.followTail&&(e.scrollTop=e.scrollHeight)},[r.followTail,r.items]);let S=(0,s.useCallback)(async()=>{let n=Math.min(...r.bySeq.keys());if(!Number.isFinite(n))return;let a=new URLSearchParams({limit:`100`,beforeSeqId:String(n)});t&&a.set(`invocationId`,t);let o=await g(`/api/v1/sessions/${encodeURIComponent(e)}/events?${a}`);if(!o.ok){b(`更早轨迹加载失败`);return}let s=await o.json();i(e=>mV(e,s.items||[],s.page.hasMore))},[t,e,r.bySeq]),C=(0,s.useMemo)(()=>{let e=new Map,t=new Map;for(let n of r.items){if(n.recordId.startsWith(`turn:`)&&n.turnId){let t=n.details.turn_index;e.set(n.turnId,typeof t==`number`?`Turn ${t}`:n.summary)}if(n.recordId.startsWith(`step:`)&&n.stepId){let e=n.details.step_index;t.set(n.stepId,typeof e==`number`?`Step ${e}`:n.summary)}}let n=r.items.filter(e=>e.category!==`system`),i=u?n:n.filter(e=>e.category!==`tool`),a=new Map;for(let t of i){let n=t.turnId||`run`,r=t.turnId?e.get(t.turnId)||`Turn`:`Run`,i=a.get(n)||{id:n,label:r,items:[]};i.items.push(t),a.set(n,i)}let o=Math.max(0,...r.items.map(e=>e.durationMs||0));return{groups:[...a.values()],semanticItems:n,systemItems:r.items.filter(e=>e.category===`system`),steps:t,turns:e.size,hasUsage:n.some(e=>Object.keys(vV(e.details.usage)).length>0),duration:o,calls:n.filter(e=>e.category===`tool`).length}},[u,r.items]),w=m&&r.items.find(e=>e.recordId===m)||null;(0,s.useEffect)(()=>{n?.(w)},[n,w]);let T=(0,s.useMemo)(()=>{let e=C.semanticItems.filter(e=>SV(e)&&(u||e.category!==`tool`)),t=Math.min(...e.map(e=>e.startedAt)),n=Math.max(...e.map(e=>e.endedAt??e.startedAt));return{items:e,start:t,span:Math.max(n-t,.001)}},[u,C.semanticItems]);return(0,K.jsxs)(`section`,{className:`trajectory-view`,"aria-label":`实时轨迹`,children:[(0,K.jsxs)(`header`,{className:`trajectory-toolbar`,children:[(0,K.jsxs)(`div`,{className:`segmented-control`,"aria-label":`轨迹显示控制`,children:[(0,K.jsx)(`button`,{type:`button`,className:a?`selected`:``,"aria-pressed":a,disabled:T.items.length<=1,onClick:()=>o(e=>!e),children:`Duration`}),(0,K.jsx)(`button`,{type:`button`,className:c?`selected`:``,"aria-pressed":c,onClick:()=>l(e=>!e),children:`Turns`}),(0,K.jsx)(`button`,{type:`button`,className:u?`selected`:``,"aria-pressed":u,disabled:C.calls===0,onClick:()=>d(e=>!e),children:`Calls`})]}),(0,K.jsxs)(`strong`,{className:`trajectory-summary-value`,children:[C.turns,` Turn · `,C.calls,` Call · `,hV(C.duration)]}),r.hasMore&&(0,K.jsxs)(`button`,{className:`button tertiary small`,type:`button`,onClick:()=>void S(),children:[(0,K.jsx)(ee,{size:14}),(0,K.jsx)(`span`,{children:`加载更早`})]})]}),y&&(0,K.jsx)(`div`,{className:`trajectory-status error`,children:y}),_&&(0,K.jsx)(`div`,{className:`trajectory-status`,children:`正在读取轨迹...`}),!_&&!C.semanticItems.length&&!C.systemItems.length&&(0,K.jsx)(`div`,{className:`trajectory-status`,children:`当前 Session 没有轨迹事件。`}),!!T.items.length&&(0,K.jsx)(`div`,{className:`trajectory-timeline`,"aria-label":`轨迹时间带`,"data-mode":a?`duration`:`equal`,children:[`input`,`model`,`tools`].map(e=>(0,K.jsxs)(`div`,{className:`trajectory-lane`,children:[(0,K.jsx)(`span`,{children:e===`input`?`Input`:e===`model`?`Model`:`Tools`}),(0,K.jsx)(`div`,{children:T.items.filter(t=>SV(t)===e).map((e,t,n)=>{let r=a?(e.startedAt-T.start)/T.span*100:t/Math.max(n.length,1)*100,i=a?Math.max(2,((e.endedAt??e.startedAt)-e.startedAt)/T.span*100):100/Math.max(n.length,1);return(0,K.jsx)(`i`,{"data-category":e.category,title:yV(e),style:{left:`${r}%`,width:`${Math.min(i,100-r)}%`}},e.recordId)})})]},e))}),(0,K.jsxs)(`div`,{ref:x,className:`trajectory-ledger`,role:`log`,"aria-label":`轨迹事件`,onScroll:e=>{let t=e.currentTarget,n=t.scrollHeight-t.scrollTop-t.clientHeight<48;i(e=>e.followTail===n?e:{...e,followTail:n})},children:[!!C.semanticItems.length&&(0,K.jsxs)(`div`,{className:`trajectory-column-header`,"data-usage":C.hasUsage,"aria-hidden":`true`,children:[(0,K.jsx)(`span`,{children:`Event`}),C.hasUsage&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{children:`Input Tokens`}),(0,K.jsx)(`span`,{children:`Output Tokens`}),(0,K.jsx)(`span`,{children:`Think`})]}),(0,K.jsx)(`span`,{children:`Time`})]}),C.groups.map(e=>(0,K.jsxs)(s.Fragment,{children:[(0,K.jsxs)(`div`,{className:`trajectory-turn-header`,children:[(0,K.jsx)(`strong`,{children:e.label}),(0,K.jsxs)(`span`,{children:[e.items.length,` nodes`]})]}),c&&e.items.map((t,n)=>{let r=t.stepId?C.steps.get(t.stepId)||`Step`:``,i=n>0?e.items[n-1]:null,a=i?.stepId?C.steps.get(i.stepId)||`Step`:``;return(0,K.jsxs)(s.Fragment,{children:[r&&r!==a&&(0,K.jsxs)(`div`,{className:`trajectory-group-label`,children:[e.label,` · `,r]}),(0,K.jsxs)(`button`,{type:`button`,className:`trajectory-row`,"data-usage":C.hasUsage,"data-category":t.category,"data-status":t.status||`unknown`,"aria-pressed":t.recordId===m,"aria-label":_V(t),onClick:()=>h(t.recordId),children:[(0,K.jsx)(`span`,{className:`trajectory-row-icon`,children:gV(t.category)}),(0,K.jsxs)(`span`,{className:`trajectory-row-copy`,children:[(0,K.jsx)(`strong`,{children:yV(t)}),(0,K.jsxs)(`small`,{children:[xV(t.category),` · `,t.status||`未上报`]})]}),C.hasUsage&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`trajectory-row-metric`,children:bV(t,`input_tokens`)}),(0,K.jsx)(`span`,{className:`trajectory-row-metric`,children:bV(t,`output_tokens`)}),(0,K.jsx)(`span`,{className:`trajectory-row-metric`,children:bV(t,`reasoning_tokens`)})]}),(0,K.jsx)(`span`,{className:`trajectory-row-duration`,children:hV(t.durationMs)})]})]},t.recordId)})]},e.id)),!!C.systemItems.length&&(0,K.jsxs)(`div`,{className:`trajectory-system-events`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>p(e=>!e),"aria-expanded":f,children:[(0,K.jsx)(k,{size:14}),`System Events (`,C.systemItems.length,`)`]}),f&&C.systemItems.map(e=>(0,K.jsxs)(`button`,{type:`button`,className:`trajectory-system-row`,"aria-pressed":e.recordId===m,onClick:()=>h(e.recordId),children:[e.type,` · #`,e.lastSeqId]},e.recordId))]})]}),!r.followTail&&(0,K.jsx)(`button`,{className:`button secondary small trajectory-latest`,type:`button`,onClick:()=>{let e=x.current;e&&(e.scrollTop=e.scrollHeight),i(e=>({...e,followTail:!0}))},children:`回到最新`})]})}function EV(e,t=18){let n=String(e||``);return n.length>t?`${n.slice(0,t)}…`:n}function DV(e,t=`-`){return e==null||e===``?t:String(e)}function OV(e){let t=String(e||``).toUpperCase();return t===`COMPLETED`||t===`SUCCEEDED`||t===`OK`?`成功`:t===`RUNNING`?`运行中`:t===`PAUSED`?`已暂停`:t===`FAILED`||t===`ERROR`||t===`INTERNAL`?`失败`:t===`CANCELLED`?`已取消`:t||`未知`}function kV(e){if(e==null||Number.isNaN(Number(e)))return`未上报`;let t=Number(e);return t<1?`${t.toFixed(3)} ms`:t<1e3?`${Math.round(t)} ms`:`${(t/1e3).toFixed(t<1e4?2:1)} s`}function AV(e){return e==null?`未上报`:new Intl.NumberFormat(`zh-CN`).format(Number(e))}function jV(e){if(e==null||typeof e==`boolean`)return null;let t=Number(e);return Number.isFinite(t)&&t>=0?t:null}function MV(e){let t=jV(e.totalTokens);if(t!==null&&e.usageCompleteness?.totalTokens!==!1)return t;let n=jV(e.inputTokens),r=jV(e.outputTokens);return n!==null&&r!==null&&e.usageCompleteness?.inputTokens!==!1&&e.usageCompleteness?.outputTokens!==!1?n+r:null}function NV(e){return[e.inputTokens,e.outputTokens,e.totalTokens].some(e=>jV(e)!==null)}function PV(e){let t=MV(e);return t===null?NV(e)?`部分上报`:`未上报`:AV(t)}function FV(e){let t=jV(e.inputTokens),n=jV(e.outputTokens);return`${t===null?`—`:`${e.usageCompleteness?.inputTokens===!1?`≥`:``}${AV(t)}`} 输入 · ${n===null?`—`:`${e.usageCompleteness?.outputTokens===!1?`≥`:``}${AV(n)}`} 输出`}function IV(e){let t=MV(e);if(t!==null)return AV(t);if(jV(e.totalTokens)!==null)return`部分上报`;let n=jV(e.inputTokens),r=jV(e.outputTokens);return n!==null&&r!==null||n!==null&&e.usageCompleteness?.inputTokens===!1||r!==null&&e.usageCompleteness?.outputTokens===!1?`部分上报`:n===null?r===null?`未上报`:`${AV(r)} 输出`:`${AV(n)} 输入`}function LV(e){try{let t=Number(BigInt(String(e||`0`))/1000000n);return t?new Date(t).toISOString():`-`}catch{return`-`}}function RV(e){if(!e)return`刚刚`;let t=new Date(e);return Number.isNaN(t.getTime())?`未知时间`:new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(t)}function zV(e){try{return JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t,2)}catch{return String(e)}}function BV(e){return e==null?`-`:typeof e==`object`?zV(e):String(e)}var VV={container:`otlp-json`,childFieldsContainer:`otlp-json-children`,basicChildStyle:`otlp-json-row`,collapseIcon:`otlp-json-toggle otlp-json-collapse`,expandIcon:`otlp-json-toggle otlp-json-expand`,collapsedContent:`otlp-json-collapsed`,label:`otlp-json-key`,clickableLabel:`otlp-json-key otlp-json-key-clickable`,nullValue:`otlp-json-null`,undefinedValue:`otlp-json-null`,numberValue:`otlp-json-number`,stringValue:`otlp-json-string`,booleanValue:`otlp-json-boolean`,otherValue:`otlp-json-other`,punctuation:`otlp-json-punctuation`,quotesForFieldNames:!0,stringifyStringValues:!0,ariaLables:{collapseJson:`收起 JSON 节点`,expandJson:`展开 JSON 节点`}},HV=[`agentkit.event.text`,`agentkit.event.delta`,`agentkit.event.content`,`agentkit.event.output`,`agentkit.event.args`,`agentkit.event.command`,`agentkit.event.input`,`agentkit.event.prompt`];function UV(e){if(!e)return``;for(let t of HV){let n=e[t];if(typeof n==`string`&&n.trim())return n;if(typeof n==`number`||typeof n==`boolean`)return String(n)}return``}function WV(e){let t=[],n=``,r=null,i=0,a=(e=!1)=>{r&&n.trim()&&t.push({kind:r,text:n,segments:i,final:e}),n=``,i=0},o={};for(let t of e||[]){let e=UV(t.attributes);if(t.name===`thinking.delta`||t.name===`message.delta`){let o=t.name===`thinking.delta`?`thinking`:`message`;r!==o&&(a(),r=o),n+=e,i+=1}else if(t.name===`thinking.completed`||t.name===`message.completed`){let n=t.name===`thinking.completed`?`thinking`:`message`;e&&(o[n]=e)}}a();for(let e of[`thinking`,`message`]){let n=o[e];if(!n)continue;let r=t.findIndex(t=>t.kind===e);r>=0?t[r]={kind:e,text:n,segments:t[r].segments,final:!0}:t.push({kind:e,text:n,segments:1,final:!0})}return t}async function GV(e){try{await navigator.clipboard.writeText(e);return}catch{}let t=document.createElement(`textarea`);t.value=e,document.body.appendChild(t),t.select();try{document.execCommand(`copy`)}catch{}t.remove()}function KV({text:e,className:t}){let[n,r]=(0,s.useState)(!1);return(0,K.jsx)(`button`,{type:`button`,className:`copy-btn ${t||``}`,title:`复制`,onClick:t=>{t.stopPropagation(),GV(e),r(!0),setTimeout(()=>r(!1),1500)},children:n?(0,K.jsx)(z,{size:12,style:{color:`var(--success)`}}):(0,K.jsx)(ue,{size:12})})}function qV({label:e,text:t,tone:n,icon:r,meta:i}){let[a,o]=(0,s.useState)(!1),c=t.length>600,l=a||!c?t:`${t.slice(0,600)}…`;return(0,K.jsxs)(`div`,{className:`io-block io-${n}`,children:[(0,K.jsxs)(`div`,{className:`io-head`,children:[(0,K.jsxs)(`span`,{className:`io-label`,children:[r,e]}),i&&(0,K.jsx)(`span`,{className:`io-meta`,children:i}),(0,K.jsx)(`span`,{style:{flex:1}}),(0,K.jsx)(KV,{text:t,className:`copy-visible`})]}),(0,K.jsx)(`div`,{className:`io-text`,children:l}),c&&(0,K.jsx)(`button`,{type:`button`,className:`io-expand`,onClick:()=>o(!a),children:a?`收起`:`展开全文(${t.length} 字符)`})]})}function JV({span:e}){let t=e.attributes||{},n=t[`agentkit.tool.input`],r=t[`agentkit.tool.output`],i=WV(e.events||[]);return n!=null&&n!==``||r!=null&&r!==``||i.length>0?(0,K.jsxs)(`div`,{className:`io-stack`,children:[n!=null&&n!==``&&(0,K.jsx)(qV,{label:`工具输入`,text:BV(n),tone:`tool`}),r!=null&&r!==``&&(0,K.jsx)(qV,{label:`工具输出`,text:BV(r),tone:`tool`}),i.map((e,t)=>(0,K.jsx)(qV,{label:e.kind===`message`?`模型输出`:`思考过程`,text:e.text,tone:e.kind,icon:e.kind===`message`?(0,K.jsx)(Me,{size:12}):(0,K.jsx)(L,{size:12}),meta:e.final?`完整`:`${e.segments} 段增量`},t))]}):(0,K.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,K.jsx)(`p`,{children:`该 Span 没有捕获内容(可在 设置 → 可观测 开启 Trace 内容记录)。`})})}function YV({values:e}){let t=Object.entries(e||{}).sort(([e],[t])=>e.localeCompare(t));return t.length?(0,K.jsx)(`dl`,{className:`trace-kv-list`,children:t.map(([e,t])=>(0,K.jsxs)(`div`,{className:`trace-kv-row`,children:[(0,K.jsx)(`dt`,{className:`trace-kv-key`,children:e}),(0,K.jsx)(`dd`,{className:`trace-kv-value`,children:BV(t)}),(0,K.jsx)(KV,{text:BV(t),className:`trace-kv-copy`})]},e))}):(0,K.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,K.jsx)(`p`,{children:`没有可展示的字段。`})})}var XV=[{id:`spans`,label:`Spans`},{id:`trajectory`,label:`轨迹`},{id:`attributes`,label:`Attributes`},{id:`events`,label:`Events`},{id:`resource`,label:`Resource`},{id:`raw`,label:`Raw OTLP`}],ZV=50;function QV({refreshTick:e}){let[t,n]=(0,s.useState)([]),[r,i]=(0,s.useState)([]),[a,o]=(0,s.useState)(``),[c,l]=(0,s.useState)(``),[u,d]=(0,s.useState)(``),[f,p]=(0,s.useState)(`24h`),[m,h]=(0,s.useState)(null),[_,v]=(0,s.useState)(null),[y,b]=(0,s.useState)(null),[x,S]=(0,s.useState)(`spans`),[C,w]=(0,s.useState)(null),[T,E]=(0,s.useState)(null),[D,j]=(0,s.useState)(!1),[M,N]=(0,s.useState)(!0),[P,F]=(0,s.useState)(!1),[I,L]=(0,s.useState)(!1),[R,z]=(0,s.useState)(0),[V,H]=(0,s.useState)([null]),[U,te]=(0,s.useState)(null),[W,ne]=(0,s.useState)(0),[re,G]=(0,s.useState)(!0),[ie,ae]=(0,s.useState)(``),oe=(0,s.useRef)(0),se=(0,s.useRef)(0);(0,s.useEffect)(()=>{g(`/api/v1/agents?limit=100`).then(e=>e.json()).then(e=>{i((e.items||[]).map(e=>({id:e.metadata.id,name:e.metadata.name,appearance:e.metadata.appearance})))}).catch(()=>{})},[e]);let ce=(0,s.useCallback)(async e=>{let t=++oe.current;try{let n=await g(`/api/v1/traces/${encodeURIComponent(e)}`).then(e=>e.json());if(oe.current!==t)return;v(n),b(n.rootSpanId||n.spans?.[0]?.spanId||null),S(`spans`),w(null),E(null),N(!0),F(!1),L(!1)}catch{}},[]),le=(0,s.useCallback)(async e=>{let t=++se.current,r=new URLSearchParams({limit:String(ZV),sort:`startedAt:desc`});c&&r.set(`agentId`,c),u&&r.set(`status`,u),a.trim()&&r.set(`query`,a.trim()),e&&r.set(`cursor`,e),G(!0),ae(``);try{let e=await g(`/api/v1/traces?${r}`);if(!e.ok)throw Error(`Trace 列表加载失败(${e.status})`);let i=await e.json();if(se.current!==t)return;let a=i.items||[];n(a),te(i.nextCursor||null),ne(Number(i.total)||0)}catch(e){if(se.current!==t)return;n([]),te(null),ne(0),ae(e instanceof Error?e.message:`Trace 列表加载失败`)}finally{se.current===t&&G(!1)}},[c,a,u]);(0,s.useEffect)(()=>{H([null]),z(0),le(null)},[le,e]),(0,s.useEffect)(()=>{let e=new URLSearchParams({range:f});c&&e.set(`agentId`,c),u&&e.set(`status`,u),g(`/api/v1/traces/overview?${e}`).then(e=>e.ok?e.json():Promise.reject(Error())).then(h).catch(()=>h(null))},[c,f,e,u]),(0,s.useEffect)(()=>{if(x!==`raw`||!_||T)return;let e=_.traceId;j(!0),g(`/api/v1/traces/${encodeURIComponent(e)}/otlp`).then(e=>e.json()).then(e=>{E(e),j(!1)}).catch(()=>j(!1))},[x,_,T]);let de=_?.spans?.find(e=>e.spanId===y)||null,fe=(0,s.useMemo)(()=>{let e=_?.spans||[],t=new Map;e.forEach(e=>{let n=e.parentSpanId||``;t.has(n)||t.set(n,[]),t.get(n).push(e)}),t.forEach(e=>e.sort((e,t)=>{try{return Number(BigInt(e.startTimeUnixNano||`0`)-BigInt(t.startTimeUnixNano||`0`))}catch{return 0}}));let n=[],r=new Set,i=(e,a)=>{!e||r.has(e.spanId)||(r.add(e.spanId),n.push({span:e,depth:a}),(t.get(e.spanId)||[]).forEach(e=>i(e,a+1)))};return i(e.find(e=>e.spanId===_?.rootSpanId)||e.find(e=>!e.parentSpanId),0),e.forEach(e=>i(e,+!!e.parentSpanId)),n},[_]),pe=fe.find(e=>e.span.spanId===_?.rootSpanId)?.span||fe[0]?.span,me=(0,s.useMemo)(()=>{if(!pe)return{start:0n,duration:1};try{let e=BigInt(pe.startTimeUnixNano||`0`),t=BigInt(pe.endTimeUnixNano||pe.startTimeUnixNano||`0`);return{start:e,duration:Number(t>e?t-e:1n)}}catch{return{start:0n,duration:1}}},[pe]),he=_?.metrics||{durationMs:_?.durationMs,inputTokens:_?.inputTokens,outputTokens:_?.outputTokens,totalTokens:_?.totalTokens,usageReported:_?.usageReported},ge=r.find(e=>e.id===_?.agentId),_e=(0,s.useMemo)(()=>[{id:`status`,header:`状态`,width:130,cell:e=>(0,K.jsxs)(`span`,{className:`trace-table-status ${e.status}`,title:e.status,children:[(0,K.jsx)(`span`,{className:`trace-list-status ${e.status}`}),OV(e.status)]})},{id:`identity`,header:`Agent / Run`,minWidth:270,cell:e=>{let t=r.find(t=>t.id===e.agentId),n=t?.name||e.agentId||`unknown-agent`;return(0,K.jsxs)(`button`,{type:`button`,className:`trace-table-open trace-table-agent`,onClick:()=>ce(e.traceId),children:[(0,K.jsx)(_t,{name:n,appearance:t?.appearance,size:`xs`}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:n}),(0,K.jsx)(`small`,{children:EV(e.runId||e.traceId,32)})]})]})}},{id:`startedAt`,header:`开始时间`,minWidth:140,cell:e=>RV(e.startedAt)},{id:`duration`,header:`耗时`,width:110,cell:e=>kV(e.durationMs)},{id:`model`,header:`模型`,minWidth:140,cell:e=>e.model||`-`},{id:`tokens`,header:`Token`,width:110,cell:e=>IV(e)},{id:`spans`,header:`Span`,width:80,cell:e=>e.spanCount||0},{id:`actions`,header:(0,K.jsx)(`span`,{className:`sr-only`,children:`操作`}),width:110,className:`actions-column`,headerClassName:`actions-column`,cell:e=>(0,K.jsx)(`button`,{type:`button`,className:`button tertiary small`,onClick:()=>ce(e.traceId),children:`查看详情`})}],[r,ce]),ve=(0,s.useCallback)(()=>{if(_?.traceId){ce(_.traceId);return}le(V[R]||null)},[_?.traceId,V,R,le,ce]),ye=(0,s.useCallback)(()=>{if(R<=0)return;let e=R-1;z(e),le(V[e]||null)},[V,R,le]),be=(0,s.useCallback)(()=>{if(!U)return;let e=R+1;H(t=>{let n=t.slice(0,e);return n[e]=U,n}),z(e),le(U)},[R,le,U]);async function xe(){!_?.traceId||!_.rootSpanId||(await GV(`00-${_.traceId}-${_.rootSpanId}-01`),Y(`traceparent 已复制`,EV(_.traceId,24)))}async function Se(){if(!_)return;let e=T;e||(e=await g(`/api/v1/traces/${encodeURIComponent(_.traceId)}/otlp`).then(e=>e.json()).catch(()=>null),e&&E(e)),e&&(await GV(JSON.stringify(e,null,2)),Y(`Raw OTLP 已复制`,EV(_.traceId,24)))}async function Ce(){if(!_?.sessionId)return;let e=window.showSaveFilePicker;if(!e){Y(`浏览器不支持导出`,`请使用支持文件保存的 Chromium 浏览器。`,`error`);return}let t;try{t=await e({suggestedName:`${_.sessionId}-${_.runId||`session`}-session-log.jsonl`,types:[{description:`Session Log`,accept:{"application/x-ndjson":[`.jsonl`]}}]})}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)return;Y(`Session Log 导出失败`,e instanceof Error?e.message:`无法选择保存位置`,`error`);return}try{let e=await g(`/api/v1/sessions/${encodeURIComponent(_.sessionId)}:export`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filename:t.name,invocationId:_.runId||void 0,download:!0})});if(!e.ok)throw Error(`导出失败(${e.status})`);let n=await t.createWritable();await n.write(await e.blob()),await n.close();let r=e.headers.get(`X-Session-Event-Count`)||`0`;Y(`Session Log 已导出`,`${t.name} · ${r} 条事件`)}catch(e){Y(`Session Log 导出失败`,e instanceof Error?e.message:`未知错误`,`error`)}}return(0,K.jsxs)(`div`,{className:`page-container observability-page`,id:`traceExplorer`,"data-layout":`workbench`,children:[(0,K.jsxs)(hd,{children:[(0,K.jsxs)(`div`,{className:`search-field header-search-field`,children:[(0,K.jsx)(Ye,{size:14}),(0,K.jsx)(`input`,{type:`search`,"aria-label":`搜索 Trace、Run 或 Session`,placeholder:`搜索 Trace、Run 或 Session`,value:a,onChange:e=>o(e.target.value)})]}),(0,K.jsxs)(`div`,{className:`segmented-control compact`,"aria-label":`可观测时间范围`,children:[(0,K.jsx)(`button`,{type:`button`,className:f===`24h`?`selected`:``,onClick:()=>p(`24h`),children:`24 小时`}),(0,K.jsx)(`button`,{type:`button`,className:f===`7d`?`selected`:``,onClick:()=>p(`7d`),children:`7 天`})]})]}),_&&(0,K.jsxs)(gd,{children:[(0,K.jsxs)(`button`,{className:`button tertiary`,type:`button`,onClick:()=>void Ce(),children:[(0,K.jsx)(k,{size:15}),(0,K.jsx)(`span`,{children:`导出 Session Log`})]}),(0,K.jsxs)(`button`,{className:`button tertiary`,type:`button`,onClick:()=>{oe.current+=1,v(null),b(null),F(!1),L(!1)},children:[(0,K.jsx)(A,{size:15}),(0,K.jsx)(`span`,{children:`返回 Trace 列表`})]})]}),(0,K.jsxs)(`div`,{className:`data-page-body observability-body`,children:[(0,K.jsx)($V,{overview:m,range:f}),!_&&(0,K.jsxs)(`div`,{className:`trace-toolbar`,"aria-label":`Trace 筛选`,children:[(0,K.jsx)(kh,{className:`compact-select`,ariaLabel:`按 Agent 筛选`,value:c||`__all__`,options:[{value:`__all__`,label:`全部 Agent`},...r.map(e=>({value:e.id,label:e.name}))],onValueChange:e=>l(e===`__all__`?``:e)}),(0,K.jsx)(kh,{className:`compact-select`,ariaLabel:`按状态筛选`,value:u||`__all__`,options:[{value:`__all__`,label:`全部状态`},{value:`COMPLETED`,label:`成功`},{value:`FAILED`,label:`失败`},{value:`CANCELLED`,label:`已取消`}],onValueChange:e=>d(e===`__all__`?``:e)})]}),_&&(0,K.jsxs)(`section`,{className:`stat-strip`,"aria-label":`Trace 指标`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Trace 状态`}),(0,K.jsx)(`strong`,{children:_?OV(_.status):`未选择`}),(0,K.jsx)(`small`,{children:_?`${_.spans?.length||0} Span · ${_.target?.name||`本地工作区`}`:`选择一条 Trace 查看`})]}),(0,K.jsxs)(`div`,{className:`emphasis`,"data-state":_?.status===`FAILED`?`failed`:_?.status===`COMPLETED`?`ready`:`running`,children:[(0,K.jsx)(`span`,{children:`总耗时`}),(0,K.jsx)(`strong`,{children:_?kV(he.durationMs):`未上报`}),(0,K.jsx)(`small`,{children:_?he.durationMs===null||he.durationMs===void 0?`Runtime 未上报`:he.durationSource===`runtime`?`Runtime 精确上报`:`Studio 时钟回退`:`等待 Runtime 上报`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Token`}),(0,K.jsx)(`strong`,{children:_?PV(he):`未上报`}),(0,K.jsx)(`small`,{children:_&&NV(he)?FV(he):`输入 / 输出`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`模型`}),(0,K.jsx)(`strong`,{children:_?.model||`-`}),(0,K.jsx)(`small`,{children:_?`${_.runtimeType||`unknown`} · ${he.usageSource||`Usage 未上报`}`:`Runtime`})]})]}),!_&&(0,K.jsxs)(`section`,{className:`trace-list-page`,"aria-label":`Trace 列表`,children:[(0,K.jsx)(`header`,{className:`trace-list-page-header`,children:(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`Trace`}),(0,K.jsxs)(`span`,{children:[W,` 条`]})]})}),(0,K.jsx)(dm,{columns:_e,data:t,getRowId:e=>e.traceId,caption:`Trace 列表`,minWidth:1060,loading:re,error:ie,onRetry:ve,onRowActivate:e=>ce(e.traceId),rowAriaLabel:e=>`${e.agentId||`Agent`} ${e.runId||e.traceId}`,empty:{icon:(0,K.jsx)(O,{size:20}),title:`还没有 Trace`,description:`运行一次 Agent 后在这里查看调用链,或调整筛选条件。`},pagination:{pageIndex:R,pageSize:ZV,total:W,hasNextPage:!!U,onPreviousPage:ye,onNextPage:be}})]}),_&&(0,K.jsxs)(`div`,{className:`trace-workbench detail-route${P?` detail-expanded`:``}${I?` detail-collapsed`:``}`,children:[(0,K.jsxs)(`aside`,{className:`trace-run-panel`,"aria-label":`本页 Trace`,children:[(0,K.jsx)(`div`,{className:`trace-panel-header`,children:(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`Traces`}),(0,K.jsxs)(`span`,{children:[W,` 条结果`]})]})}),(0,K.jsx)(`div`,{className:`trace-run-list`,children:t.map(e=>{let t=r.find(t=>t.id===e.agentId);return(0,K.jsxs)(`button`,{type:`button`,className:e.traceId===_.traceId?`active`:``,onClick:()=>ce(e.traceId),children:[(0,K.jsxs)(`span`,{className:`trace-run-identity`,children:[(0,K.jsx)(_t,{name:t?.name||e.agentId||`Agent`,appearance:t?.appearance,size:`xs`}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:t?.name||e.agentId||`Agent`}),(0,K.jsx)(`small`,{children:EV(e.runId||e.traceId,22)})]})]}),(0,K.jsxs)(`span`,{className:`trace-run-meta`,children:[(0,K.jsx)(`span`,{className:`mono`,children:kV(e.durationMs)}),(0,K.jsx)(`span`,{className:`badge`,"data-state":e.status===`FAILED`?`failed`:e.status===`COMPLETED`?`ready`:`running`,title:e.status,children:OV(e.status)})]})]},e.traceId)})})]}),(0,K.jsxs)(`section`,{className:`trace-span-panel`,"aria-label":`Span 时间瀑布`,children:[(0,K.jsxs)(`div`,{className:`trace-panel-header trace-span-header`,children:[(0,K.jsx)(_t,{name:ge?.name||_.agentId||`Agent`,appearance:ge?.appearance,size:`sm`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:_?`${ge?.name||_.agentId||`Agent`} · ${_.runId||`Run`}`:`选择一条 Trace`}),(0,K.jsx)(`span`,{className:`mono`,children:_?.traceId||`-`})]}),(0,K.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:!_,onClick:xe,children:[(0,K.jsx)(ue,{size:14}),(0,K.jsx)(`span`,{children:`复制 traceparent`})]}),I&&(0,K.jsxs)(`button`,{className:`button secondary small trace-detail-reopen`,type:`button`,onClick:()=>L(!1),children:[(0,K.jsx)(ee,{size:14}),(0,K.jsx)(`span`,{children:`展开右侧详情`})]})]}),(0,K.jsxs)(`div`,{className:`trace-axis`,"aria-hidden":`true`,children:[(0,K.jsx)(`span`,{children:`Span`}),(0,K.jsx)(`span`,{children:`0%`}),(0,K.jsx)(`span`,{children:`50%`}),(0,K.jsx)(`span`,{children:`100%`}),(0,K.jsx)(`span`,{children:`耗时`})]}),(0,K.jsx)(`div`,{className:`trace-span-tree`,children:fe.length===0?(0,K.jsxs)(`div`,{className:`trace-stage-empty`,children:[(0,K.jsx)(Le,{size:20}),(0,K.jsx)(`p`,{children:_?`该 OTLP Trace 没有 Span。`:`选择左侧 Trace,查看 Agent、模型和 Tool 的父子关系与耗时。`})]}):fe.map(({span:e,depth:t})=>{let n=0,r=0;try{let t=BigInt(e.startTimeUnixNano||`0`),i=BigInt(e.endTimeUnixNano||e.startTimeUnixNano||`0`);n=Math.max(0,Math.min(100,Number(t-me.start)/me.duration*100)),r=Math.max(0,Math.min(100-n,Number(i-t)/me.duration*100))}catch{}return(0,K.jsxs)(`button`,{type:`button`,className:`trace-span-row${e.spanId===y?` active`:``}`,"data-kind":e.kind,"data-status":e.status,onClick:()=>{b(e.spanId),S(`spans`)},children:[(0,K.jsxs)(`span`,{className:`trace-span-name`,children:[(0,K.jsx)(`span`,{className:`trace-span-guides`,children:Array.from({length:t},(e,t)=>(0,K.jsx)(`span`,{className:`trace-span-guide`},t))}),(0,K.jsx)(`span`,{className:`trace-span-status ${e.status}`}),(0,K.jsxs)(`span`,{className:`trace-span-name-copy`,children:[(0,K.jsx)(`strong`,{children:e.name}),(0,K.jsxs)(`span`,{children:[e.kind,` · `,EV(e.spanId,16)]})]})]}),(0,K.jsx)(`span`,{className:`trace-waterfall-track`,children:(0,K.jsx)(`span`,{className:`trace-waterfall-bar`,style:{"--span-left":`${n.toFixed(3)}%`,"--span-width":`${r.toFixed(3)}%`}})}),(0,K.jsx)(`span`,{className:`trace-span-duration`,children:kV(e.durationMs)})]},e.spanId)})})]}),(0,K.jsxs)(`aside`,{className:`trace-detail-panel${I?` is-collapsed`:``}`,"aria-label":`Span 详情`,children:[(0,K.jsxs)(`div`,{className:`trace-panel-header`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:de?DV(de.name):`Span 详情`}),(0,K.jsx)(`span`,{children:de?`${DV(de.kind)} · ${OV(de.status)}`:`尚未选择 Span`})]}),(0,K.jsxs)(`div`,{className:`trace-detail-actions`,children:[!I&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:!_,onClick:Se,children:[(0,K.jsx)(ue,{size:14}),(0,K.jsx)(`span`,{children:`复制 Raw OTLP`})]}),(0,K.jsxs)(`button`,{className:`button tertiary small trace-detail-expand`,type:`button`,"aria-pressed":P,title:P?`退出放大详情`:`放大详情`,onClick:()=>F(!P),children:[P?(0,K.jsx)(Pe,{size:14}):(0,K.jsx)(Ae,{size:14}),(0,K.jsx)(`span`,{children:P?`退出放大`:`放大详情`})]})]}),(0,K.jsxs)(`button`,{className:`button tertiary small trace-detail-collapse`,type:`button`,"aria-expanded":!I,title:I?`展开 Trace 详情`:`收起 Trace 详情`,onClick:()=>{L(e=>!e),I||F(!1)},children:[I?(0,K.jsx)(ee,{size:14}):(0,K.jsx)(B,{size:14}),(0,K.jsx)(`span`,{children:I?`展开详情`:`收起详情`})]})]})]}),!I&&(0,K.jsx)(`div`,{className:`trace-tabs`,role:`tablist`,"aria-label":`Trace 详情分类`,children:XV.map(e=>(0,K.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":x===e.id,className:x===e.id?`active`:``,onClick:()=>S(e.id),children:e.label},e.id))}),!I&&(0,K.jsxs)(`div`,{className:`trace-detail-body${x===`raw`?` raw-active`:``}`,children:[x===`trajectory`&&(0,K.jsxs)(`div`,{className:`trace-trajectory-layout`,children:[(0,K.jsx)(TV,{sessionId:_.sessionId,invocationId:_.runId||void 0,onSelectionChange:w}),(0,K.jsx)(`aside`,{className:`trajectory-selection`,"aria-label":`轨迹详情`,children:C?(0,K.jsx)(wV,{record:C}):(0,K.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,K.jsx)(`p`,{children:`选择一条轨迹事件查看详情。`})})})]}),x!==`raw`&&x!==`trajectory`&&(0,K.jsxs)(`div`,{children:[!de&&(0,K.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,K.jsx)(`p`,{children:`选择一个 Span 查看标准属性。`})}),de&&x===`spans`&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(JV,{span:de}),(0,K.jsxs)(`dl`,{className:`trace-detail-grid`,style:{marginTop:14},children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Trace ID`}),(0,K.jsx)(`dd`,{children:_?.traceId})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Span ID`}),(0,K.jsx)(`dd`,{children:de.spanId})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Parent`}),(0,K.jsx)(`dd`,{children:de.parentSpanId||`Root`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Kind`}),(0,K.jsx)(`dd`,{children:de.kind})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`状态`}),(0,K.jsx)(`dd`,{title:de.status,children:OV(de.status)})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`开始`}),(0,K.jsx)(`dd`,{children:LV(de.startTimeUnixNano)})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`耗时`}),(0,K.jsx)(`dd`,{children:kV(de.durationMs)})]})]})]}),de&&x===`attributes`&&(0,K.jsx)(YV,{values:de.attributes||{}}),de&&x===`events`&&(0,K.jsx)(nH,{events:de.events||[]}),de&&x===`resource`&&(0,K.jsx)(YV,{values:{..._?.resource||{},"otel.scope.name":_?.scope?.name,"otel.scope.version":_?.scope?.version}})]}),(0,K.jsxs)(`div`,{className:`trace-raw`,hidden:x!==`raw`,children:[x===`raw`&&!D&&T&&(0,K.jsxs)(`div`,{className:`trace-raw-toolbar`,children:[(0,K.jsx)(`span`,{children:`JSON Tree`}),(0,K.jsxs)(`div`,{role:`group`,"aria-label":`JSON 展开控制`,children:[(0,K.jsx)(`button`,{type:`button`,className:M?``:`active`,onClick:()=>N(!1),children:`全部收起`}),(0,K.jsx)(`button`,{type:`button`,className:M?`active`:``,onClick:()=>N(!0),children:`全部展开`})]})]}),x===`raw`&&D&&(0,K.jsx)(`div`,{className:`trace-raw-loading`,children:`正在读取 OTLP JSON…`}),x===`raw`&&!D&&T&&(0,K.jsx)(`div`,{className:`trace-raw-tree`,children:(0,K.jsx)(sV,{"aria-label":`Raw OTLP JSON`,data:T,style:VV,shouldExpandNode:M?aV:oV,clickToExpandNode:!0})}),x===`raw`&&!D&&!T&&(0,K.jsx)(`div`,{className:`trace-raw-loading`,children:`没有可显示的 OTLP JSON。`})]})]})]})]})]})]})}function $V({overview:e,range:t}){let n=e?.total||0,r=e?.completed||0,i=e?.successRate==null?`—`:`${Math.round(e.successRate*100)}%`,a=e?.averageDurationMs==null?`—`:kV(e.averageDurationMs),o=e?.totalTokens||0,s=e?.inputTokens||0,c=e?.outputTokens||0,l=e?.buckets||[],u=l.some(e=>e.runs>0);return(0,K.jsxs)(`section`,{className:`observability-overview${u?` has-trend`:``}`,"aria-label":`运行概览`,children:[(0,K.jsxs)(`div`,{className:`overview-metric-grid`,children:[(0,K.jsx)(eH,{icon:(0,K.jsx)(O,{size:15}),label:t===`7d`?`近 7 天运行`:`近 24 小时运行`,value:String(n)}),(0,K.jsx)(eH,{icon:(0,K.jsx)(te,{size:15}),label:`成功率`,value:i,note:n?`${r} / ${n}`:void 0,tone:`success`}),(0,K.jsx)(eH,{icon:(0,K.jsx)(ae,{size:15}),label:`平均耗时`,value:a,note:r?`${r} 个完成运行`:void 0}),(0,K.jsx)(eH,{icon:(0,K.jsx)(le,{size:15}),label:`Token`,value:n?o?AV(o):`未上报`:`—`,note:o?`${AV(s)} 输入 · ${AV(c)} 输出`:void 0})]}),u&&(0,K.jsxs)(`div`,{className:`overview-chart-card`,children:[(0,K.jsx)(`div`,{className:`overview-chart-header`,children:(0,K.jsx)(`strong`,{children:`运行趋势`})}),(0,K.jsx)(tH,{buckets:l,range:t}),(0,K.jsxs)(`div`,{className:`overview-chart-legend`,children:[(0,K.jsx)(`span`,{className:`legend-runs`}),`运行数`,(0,K.jsx)(`span`,{className:`legend-success`}),`成功数`]})]})]})}function eH({icon:e,label:t,value:n,note:r,tone:i=`neutral`}){return(0,K.jsxs)(`article`,{className:`overview-metric-card ${i}`,children:[(0,K.jsxs)(`div`,{className:`overview-metric-label`,children:[(0,K.jsx)(`span`,{children:e}),(0,K.jsx)(`small`,{children:t})]}),(0,K.jsx)(`strong`,{children:n}),r&&(0,K.jsx)(`p`,{children:r})]})}function tH({buckets:e,range:t}){let n=e.map(e=>{let n=new Date(e.startedAt),r=t===`7d`?`${n.getMonth()+1}/${n.getDate()}`:`${String(n.getHours()).padStart(2,`0`)}:00`;return{...e,label:r,success:e.completed}});if(!n.length||!n.some(e=>e.runs>0))return(0,K.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,K.jsx)(`p`,{children:`暂无运行数据`})});let r=Math.max(1,...n.map(e=>e.runs)),i={l:30,r:10,t:10,b:22},a=800-i.l-i.r,o=118-i.t-i.b,s=a/Math.max(1,n.length-1),c=e=>i.t+o-e/r*o,l=n.map((e,t)=>`${i.l+t*s},${c(e.runs)}`).join(` `),u=n.map((e,t)=>`${i.l+t*s},${c(e.success)}`).join(` `),d=`M ${i.l},${i.t+o} L ${l.split(` `).join(` L `)} L ${i.l+(n.length-1)*s},${i.t+o} Z`,f=Math.ceil(n.length/6);return(0,K.jsxs)(`svg`,{className:`overview-chart`,viewBox:`0 0 800 118`,preserveAspectRatio:`none`,"aria-label":`运行趋势曲线`,children:[[0,.25,.5,.75,1].map(e=>{let t=i.t+o-e*o;return(0,K.jsx)(`line`,{x1:i.l,y1:t,x2:800-i.r,y2:t,stroke:`var(--border)`,strokeWidth:`1`,strokeDasharray:e===0?`0`:`3 3`},e)}),(0,K.jsx)(`path`,{d,fill:`var(--accent-soft)`,opacity:`0.6`}),(0,K.jsx)(`polyline`,{points:l,fill:`none`,stroke:`var(--accent)`,strokeWidth:`2`,strokeLinejoin:`round`,strokeLinecap:`round`}),(0,K.jsx)(`polyline`,{points:u,fill:`none`,stroke:`var(--success)`,strokeWidth:`2`,strokeLinejoin:`round`,strokeLinecap:`round`,strokeDasharray:`4 3`}),n.map((e,t)=>(0,K.jsx)(`circle`,{cx:i.l+t*s,cy:c(e.runs),r:`2.5`,fill:`var(--accent)`,children:(0,K.jsx)(`title`,{children:`${e.label}:${e.runs} 次运行,${e.success} 次成功`})},e.startedAt)),n.map((e,t)=>(t%f===0||t===n.length-1)&&(0,K.jsx)(`text`,{x:i.l+t*s,y:110,textAnchor:`middle`,fill:`var(--text-tertiary)`,fontSize:`11`,children:e.label},`label-${e.startedAt}`))]})}function nH({events:e}){let t=(0,s.useMemo)(()=>{let t=[],n=``,r=null,i=0,a=()=>{r&&n.trim()&&t.push({type:`card`,card:{kind:r,text:n,segments:i,final:!1}}),n=``,i=0,r=null};for(let o of e)if(o.name===`thinking.delta`||o.name===`message.delta`){let e=o.name===`thinking.delta`?`thinking`:`message`;r!==e&&a(),r=e,n+=UV(o.attributes),i+=1}else o.name===`thinking.completed`||o.name===`message.completed`||(a(),t.push({type:`event`,event:o}));return a(),t},[e]);return e.length?(0,K.jsx)(`div`,{className:`io-stack`,children:t.map((e,t)=>e.type===`card`?(0,K.jsx)(qV,{label:e.card.kind===`message`?`模型输出流`:`思考流`,text:e.card.text,tone:e.card.kind,icon:e.card.kind===`message`?(0,K.jsx)(Me,{size:12}):(0,K.jsx)(L,{size:12}),meta:`${e.card.segments} 段增量`},t):(0,K.jsxs)(`article`,{className:`trace-event-card`,children:[(0,K.jsx)(`strong`,{children:e.event.name}),(0,K.jsx)(`span`,{children:LV(e.event.timeUnixNano)}),(0,K.jsx)(YV,{values:e.event.attributes||{}})]},t))}):(0,K.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,K.jsx)(`p`,{children:`该 Span 没有 Events。`})})}var rH=[{kind:`model`,label:`模型`,icon:fe},{kind:`tool`,label:`Tool`,icon:pt},{kind:`mcp`,label:`MCP Server`,icon:Le},{kind:`skill`,label:`Skill`,icon:nt}];function iH(e){return e===`ready`?`可用`:e===`missing-secret`?`缺少凭证`:e===`unhealthy`||e===`failed`?`异常`:e===`unresolved`?`未解析`:e||`未知`}function aH(e){return e.requiredSecretRefs?.[0]||e.contract?.credentialRef||``}function oH({refreshTick:e,onOpenResources:t}){let[n,r]=(0,s.useState)([]),[i,a]=(0,s.useState)({}),[o,c]=(0,s.useState)(0),[l,u]=(0,s.useState)(``),[d,f]=(0,s.useState)(null),[p,m]=(0,s.useState)(`24h`),[h,_]=(0,s.useState)(null),[v,y]=(0,s.useState)([]),[b,x]=(0,s.useState)(``),S=(0,s.useCallback)(async()=>{let[e,t,n,i,o,s]=await Promise.all([g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()).catch(()=>({items:[]})),g(`/api/v1/catalog/models`).then(e=>e.json()).catch(()=>null),g(`/api/v1/runs?limit=200`).then(e=>e.json()).catch(()=>({items:[]})),g(`/api/v1/system/bootstrap`).then(e=>e.json()).catch(()=>null),g(`/api/v1/traces/overview?range=${p}`).then(e=>e.ok?e.json():null).catch(()=>null),g(`/api/v1/deployments`).then(e=>e.ok?e.json():{items:[]}).catch(()=>({items:[]}))]),l=e.items||[];t?.items?.length&&(l=[...l.filter(e=>e.kind!==`model`||e.source===`local`||e.source===`market`),...t.items]),r(l),c((n.items||[]).length),u(i?.workspace?.path||``),f(!!i?.workspace),_(o),y(Array.isArray(s?.items)?s.items:[]);let d=[...new Set(l.filter(e=>e.kind===`model`).map(aH).filter(Boolean))],m=await Promise.all(d.map(async e=>{try{return[e,await(await g(`/api/v1/credentials/${encodeURIComponent(e.replace(/^env:\/\//,``))}`)).json()]}catch{return[e,{configured:!1}]}}));a(Object.fromEntries(m))},[p]);(0,s.useEffect)(()=>{S()},[S,e]);let C=e=>e.kind===`model`?i[aH(e)]?.configured?`ready`:`missing-secret`:e.status,w=n.filter(e=>e.kind===`model`).filter(e=>C(e)===`ready`),T=n.filter(e=>[`tool`,`mcp`,`skill`].includes(e.kind)).filter(e=>C(e)===`ready`),E=d==null?`pending`:d?`ready`:`failed`,D=d==null?`检查中`:d?`运行正常`:`连接失败`,O=h?.buckets||[],k=O.length>1&&O.some(e=>e.runs>0),A=Math.max(1,...O.map(e=>e.runs)),M=k?O.find(e=>e.runs===A):void 0,N=b.trim().toLocaleLowerCase(),P=(0,s.useMemo)(()=>n.filter(e=>C(e)!==`ready`).length,[i,n]),F=v.filter(e=>e.status===`READY`).length,I=v.filter(e=>[`ADMITTING`,`DEPLOYING`].includes(String(e.status))).length,L=F?`ready`:I?`pending`:`idle`,R=F?`${F} 已就绪`:I?`${I} 部署中`:`尚未部署`;return(0,K.jsxs)(`div`,{className:`page-container runtime-resource-page`,"data-layout":`document`,children:[(0,K.jsx)(hd,{children:(0,K.jsxs)(`div`,{className:`segmented-control compact`,role:`tablist`,"aria-label":`运行趋势时间范围`,children:[(0,K.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":p===`24h`,onClick:()=>m(`24h`),children:`24 小时`}),(0,K.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":p===`7d`,onClick:()=>m(`7d`),children:`7 天`})]})}),(0,K.jsxs)(`div`,{className:`data-page-body`,children:[(0,K.jsxs)(`section`,{className:`runtime-status-summary`,"aria-label":`运行状态`,children:[(0,K.jsxs)(`div`,{title:l||`本地工作区`,"data-state":E,children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`本地 Runtime`}),(0,K.jsxs)(`strong`,{className:`stat-value`,children:[(0,K.jsx)(`span`,{className:`summary-status-dot`}),D]}),E===`failed`&&(0,K.jsxs)(`button`,{className:`text-button`,type:`button`,onClick:()=>void S(),children:[(0,K.jsx)(Je,{size:13}),`重新检查`]})]}),(0,K.jsxs)(`div`,{"data-state":L,children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`云端部署`}),(0,K.jsx)(`strong`,{className:`stat-value`,children:R})]})]}),(0,K.jsxs)(`div`,{className:`stat-strip compact-summary runtime-metric-summary`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`可用模型`}),(0,K.jsx)(`strong`,{className:`stat-value`,children:w.length})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`能力资源`}),(0,K.jsx)(`strong`,{className:`stat-value`,children:T.length})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`stat-label`,children:p===`24h`?`近 24 小时运行`:`近 7 天运行`}),(0,K.jsx)(`strong`,{className:`stat-value`,children:h?.total??o})]})]}),(0,K.jsxs)(`section`,{className:`runtime-trend block${k?``:` is-empty`}`,children:[(0,K.jsxs)(`div`,{className:`block-head`,children:[(0,K.jsx)(`strong`,{children:`运行量趋势`}),M&&(0,K.jsx)(`span`,{className:`head-actions`,children:(0,K.jsxs)(`span`,{className:`tag`,children:[`峰值 `,A]})})]}),k?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`runtime-trend-bars`,"aria-label":`运行量趋势`,children:O.map((e,t)=>(0,K.jsx)(`span`,{className:`runtime-trend-bar`,"data-peak":e.runs===A||void 0,style:{height:`${Math.max(4,Math.round(e.runs/A*100))}%`},title:`${e.startedAt} · ${e.runs} 次运行`},`${e.startedAt}-${t}`))}),(0,K.jsxs)(`div`,{className:`chart-axis`,children:[(0,K.jsx)(`span`,{children:`开始`}),(0,K.jsx)(`span`,{children:p===`24h`?`12:00`:`中段`}),(0,K.jsx)(`span`,{children:`现在`})]})]}):(0,K.jsx)(`div`,{className:`runtime-trend-empty`,children:(0,K.jsx)(`strong`,{children:O.length===1?`继续运行后即可形成趋势`:`运行 Agent 后即可查看趋势`})})]}),(0,K.jsxs)(`section`,{className:`runtime-resource-section block`,children:[(0,K.jsxs)(`div`,{className:`section-heading`,children:[(0,K.jsx)(`h2`,{title:`优先展示异常资源,每类最多展示 5 项`,children:`本地能力概览`}),(0,K.jsx)(`span`,{className:`badge`,"data-state":P?`warning`:`ready`,children:P?`${P} 项需处理`:`全部可用`})]}),(0,K.jsx)(`div`,{className:`section-toolbar runtime-resource-toolbar`,children:(0,K.jsxs)(`div`,{className:`search-field`,children:[(0,K.jsx)(Ye,{size:14}),(0,K.jsx)(`input`,{type:`search`,"aria-label":`搜索运行资源`,placeholder:`搜索资源`,value:b,onChange:e=>x(e.target.value)})]})}),(0,K.jsx)(`div`,{className:`runtime-resource-groups`,children:rH.map(e=>{let r=n.filter(t=>t.kind===e.kind),i=r.filter(e=>!N||`${e.displayName} ${e.name}`.toLocaleLowerCase().includes(N)).sort((e,t)=>Number(C(e)===`ready`)-Number(C(t)===`ready`)).slice(0,5),a=e.icon;return(0,K.jsxs)(`article`,{className:`runtime-resource-group block`,children:[(0,K.jsxs)(`header`,{children:[(0,K.jsx)(`span`,{className:`runtime-group-icon`,children:(0,K.jsx)(a,{size:15})}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:e.label}),(0,K.jsx)(`small`,{children:r.length})]}),r.length>0&&(0,K.jsxs)(`button`,{className:`text-button`,type:`button`,onClick:()=>t(e.kind),children:[`查看全部 `,(0,K.jsx)(j,{size:13})]})]}),(0,K.jsx)(`div`,{className:`runtime-resource-list`,children:i.length===0?(0,K.jsx)(`div`,{className:`runtime-resource-empty`,children:`暂无资源`}):i.map(e=>{let t=C(e);return(0,K.jsxs)(`div`,{className:`runtime-resource-row`,children:[(0,K.jsx)(`span`,{className:`resource-state ${t===`ready`?`ready`:`warning`}`}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:e.displayName}),(0,K.jsx)(`small`,{children:e.version||e.source||e.name})]}),(0,K.jsx)(`span`,{className:`badge`,"data-state":t===`ready`?`ready`:`pending`,children:iH(t)})]},e.resourceId)})})]},e.kind)})})]})]})]})}function sH(e){if(typeof e==`string`||typeof e==`number`)return``+e;let t=``;if(Array.isArray(e))for(let n=0,r;n{}};function lH(){for(var e=0,t=arguments.length,n={},r;e=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw Error(`unknown type: `+e);return{type:e,name:n}})}uH.prototype=lH.prototype={constructor:uH,on:function(e,t){var n=this._,r=dH(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a0)for(var n=Array(i),r=0,i,a;r=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),mH.hasOwnProperty(t)?{space:mH[t],local:e}:e}function gH(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===`http://www.w3.org/1999/xhtml`&&t.documentElement.namespaceURI===`http://www.w3.org/1999/xhtml`?t.createElement(e):t.createElementNS(n,e)}}function _H(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function vH(e){var t=hH(e);return(t.local?_H:gH)(t)}function yH(){}function bH(e){return e==null?yH:function(){return this.querySelector(e)}}function xH(e){typeof e!=`function`&&(e=bH(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i=v&&(v=_+1);!(b=g[v])&&++v=0;)(o=r[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function ZH(e){e||=QH;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,i=Array(r),a=0;at?1:e>=t?0:NaN}function $H(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function eU(){return Array.from(this)}function tU(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?pU:typeof t==`function`?hU:mU)(e,t,n??``)):_U(this.node(),e)}function _U(e,t){return e.style.getPropertyValue(t)||fU(e).getComputedStyle(e,null).getPropertyValue(t)}function vU(e){return function(){delete this[e]}}function yU(e,t){return function(){this[e]=t}}function bU(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function xU(e,t){return arguments.length>1?this.each((t==null?vU:typeof t==`function`?bU:yU)(e,t)):this.node()[e]}function SU(e){return e.trim().split(/^|\s+/)}function CU(e){return e.classList||new wU(e)}function wU(e){this._node=e,this._names=SU(e.getAttribute(`class`)||``)}wU.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(`class`,this._names.join(` `)))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(`class`,this._names.join(` `)))},contains:function(e){return this._names.indexOf(e)>=0}};function TU(e,t){for(var n=CU(e),r=-1,i=t.length;++r=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function eW(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n()=>e;function SW(e,{sourceEvent:t,subject:n,target:r,identifier:i,active:a,x:o,y:s,dx:c,dy:l,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:u}})}SW.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function CW(e){return!e.ctrlKey&&!e.button}function wW(){return this.parentNode}function TW(e,t){return t??{x:e.x,y:e.y}}function EW(){return navigator.maxTouchPoints||`ontouchstart`in this}function DW(){var e=CW,t=wW,n=TW,r=EW,i={},a=lH(`start`,`drag`,`end`),o=0,s,c,l,u,d=0;function f(e){e.on(`mousedown.drag`,p).filter(r).on(`touchstart.drag`,g).on(`touchmove.drag`,_,hW).on(`touchend.drag touchcancel.drag`,v).style(`touch-action`,`none`).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}function p(n,r){if(!(u||!e.call(this,n,r))){var i=y(this,t.call(this,n,r),n,r,`mouse`);i&&(fW(n.view).on(`mousemove.drag`,m,gW).on(`mouseup.drag`,h,gW),yW(n.view),_W(n),l=!1,s=n.clientX,c=n.clientY,i(`start`,n))}}function m(e){if(vW(e),!l){var t=e.clientX-s,n=e.clientY-c;l=t*t+n*n>d}i.mouse(`drag`,e)}function h(e){fW(e.view).on(`mousemove.drag mouseup.drag`,null),bW(e.view,l),vW(e),i.mouse(`end`,e)}function g(n,r){if(e.call(this,n,r)){var i=n.changedTouches,a=t.call(this,n,r),o=i.length,s,c;for(s=0;s>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?XW(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?XW(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=LW.exec(e))?new $W(t[1],t[2],t[3],1):(t=RW.exec(e))?new $W(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=zW.exec(e))?XW(t[1],t[2],t[3],t[4]):(t=BW.exec(e))?XW(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=VW.exec(e))?oG(t[1],t[2]/100,t[3]/100,1):(t=HW.exec(e))?oG(t[1],t[2]/100,t[3]/100,t[4]):UW.hasOwnProperty(e)?YW(UW[e]):e===`transparent`?new $W(NaN,NaN,NaN,0):null}function YW(e){return new $W(e>>16&255,e>>8&255,e&255,1)}function XW(e,t,n,r){return r<=0&&(e=t=n=NaN),new $W(e,t,n,r)}function ZW(e){return e instanceof AW||(e=JW(e)),e?(e=e.rgb(),new $W(e.r,e.g,e.b,e.opacity)):new $W}function QW(e,t,n,r){return arguments.length===1?ZW(e):new $W(e,t,n,r??1)}function $W(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}OW($W,QW,kW(AW,{brighter(e){return e=e==null?MW:MW**+e,new $W(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?jW:jW**+e,new $W(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new $W(iG(this.r),iG(this.g),iG(this.b),rG(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:eG,formatHex:eG,formatHex8:tG,formatRgb:nG,toString:nG}));function eG(){return`#${aG(this.r)}${aG(this.g)}${aG(this.b)}`}function tG(){return`#${aG(this.r)}${aG(this.g)}${aG(this.b)}${aG((isNaN(this.opacity)?1:this.opacity)*255)}`}function nG(){let e=rG(this.opacity);return`${e===1?`rgb(`:`rgba(`}${iG(this.r)}, ${iG(this.g)}, ${iG(this.b)}${e===1?`)`:`, ${e})`}`}function rG(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function iG(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function aG(e){return e=iG(e),(e<16?`0`:``)+e.toString(16)}function oG(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new lG(e,t,n,r)}function sG(e){if(e instanceof lG)return new lG(e.h,e.s,e.l,e.opacity);if(e instanceof AW||(e=JW(e)),!e)return new lG;if(e instanceof lG)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n0&&c<1?0:o,new lG(o,s,c,e.opacity)}function cG(e,t,n,r){return arguments.length===1?sG(e):new lG(e,t,n,r??1)}function lG(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}OW(lG,cG,kW(AW,{brighter(e){return e=e==null?MW:MW**+e,new lG(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?jW:jW**+e,new lG(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new $W(fG(e>=240?e-240:e+120,i,r),fG(e,i,r),fG(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new lG(uG(this.h),dG(this.s),dG(this.l),rG(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=rG(this.opacity);return`${e===1?`hsl(`:`hsla(`}${uG(this.h)}, ${dG(this.s)*100}%, ${dG(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function uG(e){return e=(e||0)%360,e<0?e+360:e}function dG(e){return Math.max(0,Math.min(1,e||0))}function fG(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var pG=e=>()=>e;function mG(e,t){return function(n){return e+n*t}}function hG(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function gG(e){return(e=+e)==1?_G:function(t,n){return n-t?hG(t,n,e):pG(isNaN(t)?n:t)}}function _G(e,t){var n=t-e;return n?mG(e,n):pG(isNaN(e)?t:e)}var vG=(function e(t){var n=gG(t);function r(e,t){var r=n((e=QW(e)).r,(t=QW(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=_G(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function yG(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;in&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:CG(r,i)})),n=EG.lastIndex;return n180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:CG(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:CG(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:CG(e,n)},{i:s-2,x:CG(t,r)})}else(n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t=0&&e._call.call(void 0,t),e=e._next;--GG}function sK(){QG=(ZG=eK.now())+$G,GG=KG=0;try{oK()}finally{GG=0,lK(),QG=0}}function cK(){var e=eK.now(),t=e-ZG;t>JG&&($G-=t,ZG=e)}function lK(){for(var e,t=YG,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:YG=n);XG=e,uK(r)}function uK(e){GG||(KG&&=clearTimeout(KG),e-QG>24?(e<1/0&&(KG=setTimeout(sK,e-eK.now()-$G)),qG&&=clearInterval(qG)):(qG||=(ZG=eK.now(),setInterval(cK,JG)),GG=1,tK(sK)))}function dK(e,t,n){var r=new iK;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var fK=lH(`start`,`end`,`cancel`,`interrupt`),pK=[];function mK(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;vK(e,n,{name:t,index:r,group:i,on:fK,tween:pK,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function hK(e,t){var n=_K(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function gK(e,t){var n=_K(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function _K(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function vK(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=aK(a,0,n.time);function a(e){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=e&&o(e-n.delay)}function o(a){var l,u,d,f;if(n.state!==1)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===3)return dK(o);f.state===4?(f.state=6,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]}a&&delete e.__transition}}function bK(e){return this.each(function(){yK(this,e)})}function xK(e,t){var n,r;return function(){var i=gK(this,e),a=i.tween;if(a!==n){r=n=a;for(var o=0,s=r.length;o=0&&(e=e.slice(0,t)),!e||e===`start`})}function ZK(e,t,n){var r,i,a=XK(t)?hK:gK;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function QK(e,t){var n=this._id;return arguments.length<2?_K(this.node(),n).on.on(e):this.each(ZK(n,e,t))}function $K(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function eq(){return this.on(`end.remove`,$K(this._id))}function tq(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=bH(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o()=>e;function jq(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function Mq(e,t,n){this.k=e,this.x=t,this.y=n}Mq.prototype={constructor:Mq,scale:function(e){return e===1?this:new Mq(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Mq(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return`translate(`+this.x+`,`+this.y+`) scale(`+this.k+`)`}};var Nq=new Mq(1,0,0);Pq.prototype=Mq.prototype;function Pq(e){for(;!e.__zoom;)if(!(e=e.parentNode))return Nq;return e.__zoom}function Fq(e){e.stopImmediatePropagation()}function Iq(e){e.preventDefault(),e.stopImmediatePropagation()}function Lq(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function Rq(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute(`viewBox`)?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function zq(){return this.__zoom||Nq}function Bq(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Vq(){return navigator.maxTouchPoints||`ontouchstart`in this}function Hq(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],a=e.invertY(t[0][1])-n[0][1],o=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function Uq(){var e=Lq,t=Rq,n=Hq,r=Bq,i=Vq,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=WG,l=lH(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,zq).on(`wheel.zoom`,w,{passive:!1}).on(`mousedown.zoom`,T).on(`dblclick.zoom`,E).filter(i).on(`touchstart.zoom`,D).on(`touchmove.zoom`,O).on(`touchend.zoom touchcancel.zoom`,k).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}_.transform=function(e,t,n,r){var i=e.selection?e.selection():e;i.property(`__zoom`,zq),e===i?i.interrupt().each(function(){S(this,arguments).event(r).start().zoom(null,typeof t==`function`?t.apply(this,arguments):t).end()}):x(e,t,n,r)},_.scaleBy=function(e,t,n,r){_.scaleTo(e,function(){return this.__zoom.k*(typeof t==`function`?t.apply(this,arguments):t)},n,r)},_.scaleTo=function(e,r,i,a){_.transform(e,function(){var e=t.apply(this,arguments),a=this.__zoom,s=i==null?b(e):typeof i==`function`?i.apply(this,arguments):i,c=a.invert(s),l=typeof r==`function`?r.apply(this,arguments):r;return n(y(v(a,l),s,c),e,o)},i,a)},_.translateBy=function(e,r,i,a){_.transform(e,function(){return n(this.__zoom.translate(typeof r==`function`?r.apply(this,arguments):r,typeof i==`function`?i.apply(this,arguments):i),t.apply(this,arguments),o)},null,a)},_.translateTo=function(e,r,i,a,s){_.transform(e,function(){var e=t.apply(this,arguments),s=this.__zoom,c=a==null?b(e):typeof a==`function`?a.apply(this,arguments):a;return n(Nq.translate(c[0],c[1]).scale(s.k).translate(typeof r==`function`?-r.apply(this,arguments):-r,typeof i==`function`?-i.apply(this,arguments):-i),e,o)},a,s)};function v(e,t){return t=Math.max(a[0],Math.min(a[1],t)),t===e.k?e:new Mq(t,e.x,e.y)}function y(e,t,n){var r=t[0]-n[0]*e.k,i=t[1]-n[1]*e.k;return r===e.x&&i===e.y?e:new Mq(e.k,r,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function x(e,n,r,i){e.on(`start.zoom`,function(){S(this,arguments).event(i).start()}).on(`interrupt.zoom end.zoom`,function(){S(this,arguments).event(i).end()}).tween(`zoom`,function(){var e=this,a=arguments,o=S(e,a).event(i),s=t.apply(e,a),l=r==null?b(s):typeof r==`function`?r.apply(e,a):r,u=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),d=e.__zoom,f=typeof n==`function`?n.apply(e,a):n,p=c(d.invert(l).concat(u/d.k),f.invert(l).concat(u/f.k));return function(e){if(e===1)e=f;else{var t=p(e),n=u/t[2];e=new Mq(n,l[0]-t[0]*n,l[1]-t[1]*n)}o.zoom(null,e)}})}function S(e,t,n){return!n&&e.__zooming||new C(e,t)}function C(e,n){this.that=e,this.args=n,this.active=0,this.sourceEvent=null,this.extent=t.apply(e,n),this.taps=0}C.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit(`start`)),this},zoom:function(e,t){return this.mouse&&e!==`mouse`&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&e!==`touch`&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&e!==`touch`&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit(`zoom`),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit(`end`)),this},emit:function(e){var t=fW(this.that).datum();l.call(e,this.that,new jq(e,{sourceEvent:this.sourceEvent,target:_,type:e,transform:this.that.__zoom,dispatch:l}),t)}};function w(t,...i){if(!e.apply(this,arguments))return;var s=S(this,i).event(t),c=this.__zoom,l=Math.max(a[0],Math.min(a[1],c.k*2**r.apply(this,arguments))),u=mW(t);if(s.wheel)(s.mouse[0][0]!==u[0]||s.mouse[0][1]!==u[1])&&(s.mouse[1]=c.invert(s.mouse[0]=u)),clearTimeout(s.wheel);else if(c.k===l)return;else s.mouse=[u,c.invert(u)],yK(this),s.start();Iq(t),s.wheel=setTimeout(d,m),s.zoom(`mouse`,n(y(v(c,l),s.mouse[0],s.mouse[1]),s.extent,o));function d(){s.wheel=null,s.end()}}function T(t,...r){if(f||!e.apply(this,arguments))return;var i=t.currentTarget,a=S(this,r,!0).event(t),s=fW(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=mW(t,i),l=t.clientX,u=t.clientY;yW(t.view),Fq(t),a.mouse=[c,this.__zoom.invert(c)],yK(this),a.start();function d(e){if(Iq(e),!a.moved){var t=e.clientX-l,r=e.clientY-u;a.moved=t*t+r*r>h}a.event(e).zoom(`mouse`,n(y(a.that.__zoom,a.mouse[0]=mW(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),bW(e.view,a.moved),Iq(e),a.event(e).end()}}function E(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=mW(r.changedTouches?r.changedTouches[0]:r,this),l=a.invert(c),u=a.k*(r.shiftKey?.5:2),d=n(y(v(a,u),c,l),t.apply(this,i),o);Iq(r),s>0?fW(this).transition().duration(s).call(x,d,c,r):fW(this).call(_.transform,d,c,r)}}function D(t,...n){if(e.apply(this,arguments)){var r=t.touches,i=r.length,a=S(this,n,t.changedTouches.length===i).event(t),o,s,c,l;for(Fq(t),s=0;s`Seems like you have not used ${e===`svelte`?`SvelteFlowProvider`:`ReactFlowProvider`} as an ancestor. Help: https://${e}flow.dev/error#001`,error002:()=>`It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.`,error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>`The parent container needs a width and a height to render the graph.`,error005:()=>`Only child nodes can use a parent extent.`,error006:()=>`Can't create edge. An edge needs a source and a target.`,error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:t,sourceHandle:n,targetHandle:r})=>`Couldn't create edge for ${e} handle id: "${e===`source`?n:r}", edge id: ${t}.`,error010:()=>`Handle: No node id found. Make sure to only use a Handle inside a custom Node.`,error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e=`react`)=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>`useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.`,error015:()=>`It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs.`,error016:e=>`Edge with id "${e}" does not exist, it may have been removed. This can happen when an edge is deleted before the "onEdgeClick" handler is called.`},Gq=[[-1/0,-1/0],[1/0,1/0]],Kq=[`Enter`,` `,`Escape`],qq={"node.a11yDescription.default":`Press enter or space to select a node. Press delete to remove it and escape to cancel.`,"node.a11yDescription.keyboardDisabled":`Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.`,"node.a11yDescription.ariaLiveMessage":({direction:e,x:t,y:n})=>`Moved selected node ${e}. New position, x: ${t}, y: ${n}`,"edge.a11yDescription.default":`Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.`,"controls.ariaLabel":`Control Panel`,"controls.zoomIn.ariaLabel":`Zoom In`,"controls.zoomOut.ariaLabel":`Zoom Out`,"controls.fitView.ariaLabel":`Fit View`,"controls.interactive.ariaLabel":`Toggle Interactivity`,"minimap.ariaLabel":`Mini Map`,"handle.ariaLabel":`Handle`},Jq;(function(e){e.Strict=`strict`,e.Loose=`loose`})(Jq||={});var Yq;(function(e){e.Free=`free`,e.Vertical=`vertical`,e.Horizontal=`horizontal`})(Yq||={});var Xq;(function(e){e.Partial=`partial`,e.Full=`full`})(Xq||={});var Zq={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null},Qq;(function(e){e.Bezier=`default`,e.Straight=`straight`,e.Step=`step`,e.SmoothStep=`smoothstep`,e.SimpleBezier=`simplebezier`})(Qq||={});var $q;(function(e){e.Arrow=`arrow`,e.ArrowClosed=`arrowclosed`})($q||={});var $;(function(e){e.Left=`left`,e.Top=`top`,e.Right=`right`,e.Bottom=`bottom`})($||={});var eJ={[$.Left]:$.Right,[$.Right]:$.Left,[$.Top]:$.Bottom,[$.Bottom]:$.Top};function tJ(e){return e===null?null:e?`valid`:`invalid`}var nJ=e=>!!e&&typeof e==`object`&&`id`in e&&`source`in e&&`target`in e,rJ=e=>!!e&&typeof e==`object`&&`id`in e&&`position`in e&&!(`source`in e)&&!(`target`in e),iJ=e=>!!e&&typeof e==`object`&&`id`in e&&`internals`in e&&!(`source`in e)&&!(`target`in e),aJ=(e,t=[0,0])=>{let{width:n,height:r}=zJ(e),i=e.origin??t,a=n*i[0],o=r*i[1];return{x:e.position.x-a,y:e.position.y-o}},oJ=(e,t={nodeOrigin:[0,0]})=>e.length===0?{x:0,y:0,width:0,height:0}:xJ(e.reduce((e,n)=>{let r=typeof n==`string`,i=!t.nodeLookup&&!r?n:void 0;return t.nodeLookup&&(i=r?t.nodeLookup.get(n):iJ(n)?n:t.nodeLookup.get(n.id)),yJ(e,i?CJ(i,t.nodeOrigin):{x:0,y:0,x2:0,y2:0})},{x:1/0,y:1/0,x2:-1/0,y2:-1/0})),sJ=(e,t={})=>{let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0},r=!1;return e.forEach(e=>{(t.filter===void 0||t.filter(e))&&(n=yJ(n,CJ(e)),r=!0)}),r?xJ(n):{x:0,y:0,width:0,height:0}},cJ=(e,t,[n,r,i]=[0,0,1],a=!1,o=!1)=>{let s=(t.x-n)/i,c=(t.y-r)/i,l=t.width/i,u=t.height/i,d=[];for(let t of e.values()){let{measured:e,selectable:n=!0,hidden:r=!1}=t;if(o&&!n||r)continue;let i=e.width??t.width??t.initialWidth??0,f=e.height??t.height??t.initialHeight??0,{x:p,y:m}=t.internals.positionAbsolute,h=TJ(s,c,l,u,p,m,i,f),g=i*f,_=a&&h>0;(!t.internals.handleBounds||_||h>=g||t.dragging)&&d.push(t)}return d},lJ=(e,t)=>{let n=new Set;return e.forEach(e=>{n.add(e.id)}),t.filter(e=>n.has(e.source)||n.has(e.target))};function uJ(e,t){let n=new Map,r=t?.nodes?new Set(t.nodes.map(e=>e.id)):null;return e.forEach(e=>{let i;if(t?.includeHiddenNodes){let{width:t,height:n}=zJ(e);i=t>0&&n>0}else i=!!(e.measured.width&&e.measured.height&&!e.hidden);i&&(!r||r.has(e.id))&&n.set(e.id,e)}),n}async function dJ({nodes:e,width:t,height:n,panZoom:r,minZoom:i,maxZoom:a},o){if(e.size===0)return!0;let s=IJ(sJ(uJ(e,o)),t,n,o?.minZoom??i,o?.maxZoom??a,o?.padding??.1);return await r.setViewport(s,{duration:o?.duration,ease:o?.ease,interpolate:o?.interpolate}),!0}function fJ({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:r=[0,0],nodeExtent:i,onError:a}){let o=n.get(e),s=o.parentId?n.get(o.parentId):void 0,{x:c,y:l}=s?s.internals.positionAbsolute:{x:0,y:0},u=o.origin??r,d=o.extent||i;if(o.extent===`parent`&&!o.expandParent){if(!s)a?.(`005`,Wq.error005());else{let e=s.measured.width,t=s.measured.height;e&&t&&(d=[[c,l],[c+e,l+t]])}}else s&&RJ(o.extent)&&(d=[[o.extent[0][0]+c,o.extent[0][1]+l],[o.extent[1][0]+c,o.extent[1][1]+l]]);let f=RJ(d)?hJ(t,d,o.measured):t;return(o.measured.width===void 0||o.measured.height===void 0)&&a?.(`015`,Wq.error015()),{position:{x:f.x-c+(o.measured.width??0)*u[0],y:f.y-l+(o.measured.height??0)*u[1]},positionAbsolute:f}}async function pJ({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:r,onBeforeDelete:i}){let a=new Set(e.map(e=>e.id)),o=[];for(let e of n){if(e.deletable===!1)continue;let t=a.has(e.id),n=!t&&e.parentId&&o.find(t=>t.id===e.parentId);(t||n)&&o.push(e)}let s=new Set(t.map(e=>e.id)),c=r.filter(e=>e.deletable!==!1),l=lJ(o,c);for(let e of c)s.has(e.id)&&!l.find(t=>t.id===e.id)&&l.push(e);if(!i)return{edges:l,nodes:o};let u=await i({nodes:o,edges:l});return typeof u==`boolean`?u?{edges:l,nodes:o}:{edges:[],nodes:[]}:u}var mJ=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),hJ=(e={x:0,y:0},t,n)=>({x:mJ(e.x,t[0][0],t[1][0]-(n?.width??0)),y:mJ(e.y,t[0][1],t[1][1]-(n?.height??0))});function gJ(e,t,n){let{width:r,height:i}=zJ(n),{x:a,y:o}=n.internals.positionAbsolute;return hJ(e,[[a,o],[a+r,o+i]],t)}var _J=(e,t,n)=>en?-mJ(Math.abs(e-n),1,t)/t:0,vJ=(e,t,n=15,r=40)=>[_J(e.x,r,t.width-r)*n,_J(e.y,r,t.height-r)*n],yJ=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),bJ=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),xJ=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),SJ=(e,t=[0,0])=>{let{x:n,y:r}=iJ(e)?e.internals.positionAbsolute:aJ(e,t);return{x:n,y:r,width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}},CJ=(e,t=[0,0])=>{let{x:n,y:r}=iJ(e)?e.internals.positionAbsolute:aJ(e,t);return{x:n,y:r,x2:n+(e.measured?.width??e.width??e.initialWidth??0),y2:r+(e.measured?.height??e.height??e.initialHeight??0)}},wJ=(e,t)=>xJ(yJ(bJ(e),bJ(t))),TJ=(e,t,n,r,i,a,o,s)=>{let c=Math.max(0,Math.min(e+n,i+o)-Math.max(e,i)),l=Math.max(0,Math.min(t+r,a+s)-Math.max(t,a));return Math.ceil(c*l)},EJ=(e,t)=>TJ(e.x,e.y,e.width,e.height,t.x,t.y,t.width,t.height),DJ=e=>OJ(e.width)&&OJ(e.height)&&OJ(e.x)&&OJ(e.y),OJ=e=>!isNaN(e)&&isFinite(e),kJ=(e,t)=>(e,t)=>{},AJ=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),jJ=({x:e,y:t},[n,r,i],a=!1,o=[1,1])=>{let s={x:(e-n)/i,y:(t-r)/i};return a?AJ(s,o):s},MJ=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r});function NJ(e,t){if(typeof e==`number`)return Math.floor((t-t/(1+e))*.5);if(typeof e==`string`&&e.endsWith(`px`)){let t=parseFloat(e);if(!Number.isNaN(t))return Math.floor(t)}if(typeof e==`string`&&e.endsWith(`%`)){let n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(t*n*.01)}return console.error(`The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function PJ(e,t,n){if(typeof e==`string`||typeof e==`number`){let r=NJ(e,n),i=NJ(e,t);return{top:r,right:i,bottom:r,left:i,x:i*2,y:r*2}}if(typeof e==`object`){let r=NJ(e.top??e.y??0,n),i=NJ(e.bottom??e.y??0,n),a=NJ(e.left??e.x??0,t),o=NJ(e.right??e.x??0,t);return{top:r,right:o,bottom:i,left:a,x:a+o,y:r+i}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function FJ(e,t,n,r,i,a){let{x:o,y:s}=MJ(e,[t,n,r]),{x:c,y:l}=MJ({x:e.x+e.width,y:e.y+e.height},[t,n,r]),u=i-c,d=a-l;return{left:Math.floor(o),top:Math.floor(s),right:Math.floor(u),bottom:Math.floor(d)}}var IJ=(e,t,n,r,i,a)=>{let o=PJ(a,t,n),s=(t-o.x)/e.width,c=(n-o.y)/e.height,l=mJ(Math.min(s,c),r,i),u=e.x+e.width/2,d=e.y+e.height/2,f=t/2-u*l,p=n/2-d*l,m=FJ(e,f,p,l,t,n),h={left:Math.min(m.left-o.left,0),top:Math.min(m.top-o.top,0),right:Math.min(m.right-o.right,0),bottom:Math.min(m.bottom-o.bottom,0)};return{x:f-h.left+h.right,y:p-h.top+h.bottom,zoom:l}},LJ=()=>typeof navigator<`u`&&navigator?.userAgent?.indexOf(`Mac`)>=0;function RJ(e){return e!=null&&e!==`parent`}function zJ(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function BJ(e){return(e.measured?.width??e.width??e.initialWidth)!==void 0&&(e.measured?.height??e.height??e.initialHeight)!==void 0}function VJ(e,t={width:0,height:0},n,r,i){let a={...e},o=r.get(n);if(o){let e=o.origin||i;a.x+=o.internals.positionAbsolute.x-(t.width??0)*e[0],a.y+=o.internals.positionAbsolute.y-(t.height??0)*e[1]}return a}function HJ(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function UJ(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function WJ(e){return{...qq,...e||{}}}function GJ(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:i}){let{x:a,y:o}=ZJ(e),s=jJ({x:a-(i?.left??0),y:o-(i?.top??0)},r),{x:c,y:l}=n?AJ(s,t):s;return{xSnapped:c,ySnapped:l,...s}}var KJ=e=>({width:e.offsetWidth,height:e.offsetHeight}),qJ=e=>e?.getRootNode?.()||window?.document,JJ=[`INPUT`,`SELECT`,`TEXTAREA`];function YJ(e){let t=e.composedPath?.()?.[0]||e.target;return t?.nodeType===1?JJ.includes(t.nodeName)||t.hasAttribute(`contenteditable`)||!!t.closest(`.nokey`):!1}var XJ=e=>`clientX`in e,ZJ=(e,t)=>{let n=XJ(e),r=n?e.clientX:e.touches?.[0].clientX,i=n?e.clientY:e.touches?.[0].clientY;return{x:r-(t?.left??0),y:i-(t?.top??0)}},QJ=(e,t,n,r,i)=>{let a=t.querySelectorAll(`.${e}`);return!a||!a.length?null:Array.from(a).map(t=>{let a=t.getBoundingClientRect();return{id:t.getAttribute(`data-handleid`),type:e,nodeId:i,position:t.getAttribute(`data-handlepos`),x:(a.left-n.left)/r,y:(a.top-n.top)/r,...KJ(t)}})};function $J({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:i,sourceControlY:a,targetControlX:o,targetControlY:s}){let c=e*.125+i*.375+o*.375+n*.125,l=t*.125+a*.375+s*.375+r*.125;return[c,l,Math.abs(c-e),Math.abs(l-t)]}function eY(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function tY({pos:e,x1:t,y1:n,x2:r,y2:i,c:a}){switch(e){case $.Left:return[t-eY(t-r,a),n];case $.Right:return[t+eY(r-t,a),n];case $.Top:return[t,n-eY(n-i,a)];case $.Bottom:return[t,n+eY(i-n,a)]}}function nY({sourceX:e,sourceY:t,sourcePosition:n=$.Bottom,targetX:r,targetY:i,targetPosition:a=$.Top,curvature:o=.25}){let[s,c]=tY({pos:n,x1:e,y1:t,x2:r,y2:i,c:o}),[l,u]=tY({pos:a,x1:r,y1:i,x2:e,y2:t,c:o}),[d,f,p,m]=$J({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:s,sourceControlY:c,targetControlX:l,targetControlY:u});return[`M${e},${t} C${s},${c} ${l},${u} ${r},${i}`,d,f,p,m]}function rY({sourceX:e,sourceY:t,targetX:n,targetY:r}){let i=Math.abs(n-e)/2,a=n0}var oY=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||``}-${n}${r||``}`,sY=(e,t)=>t.some(t=>t.source===e.source&&t.target===e.target&&(t.sourceHandle===e.sourceHandle||!t.sourceHandle&&!e.sourceHandle)&&(t.targetHandle===e.targetHandle||!t.targetHandle&&!e.targetHandle)),cY=(e,t,n={})=>{if(!e.source||!e.target)return n.onError?.(`006`,Wq.error006()),t;let r=n.getEdgeId||oY,i;return i=nJ(e)?{...e}:{...e,id:r(e)},sY(i,t)?t:(i.sourceHandle===null&&delete i.sourceHandle,i.targetHandle===null&&delete i.targetHandle,t.concat(i))};function lY({sourceX:e,sourceY:t,targetX:n,targetY:r}){let[i,a,o,s]=rY({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,a,o,s]}var uY={[$.Left]:{x:-1,y:0},[$.Right]:{x:1,y:0},[$.Top]:{x:0,y:-1},[$.Bottom]:{x:0,y:1}},dY=({source:e,sourcePosition:t=$.Bottom,target:n})=>t===$.Left||t===$.Right?e.xMath.sqrt((t.x-e.x)**2+(t.y-e.y)**2);function pY({source:e,sourcePosition:t=$.Bottom,target:n,targetPosition:r=$.Top,center:i,offset:a,stepPosition:o}){let s=uY[t],c=uY[r],l={x:e.x+s.x*a,y:e.y+s.y*a},u={x:n.x+c.x*a,y:n.y+c.y*a},d=dY({source:l,sourcePosition:t,target:u}),f=d.x===0?`y`:`x`,p=d[f],m=[],h,g,_={x:0,y:0},v={x:0,y:0},[,,y,b]=rY({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[f]*c[f]===-1){f===`x`?(h=i.x??l.x+(u.x-l.x)*o,g=i.y??(l.y+u.y)/2):(h=i.x??(l.x+u.x)/2,g=i.y??l.y+(u.y-l.y)*o);let e=[{x:h,y:l.y},{x:h,y:u.y}],t=[{x:l.x,y:g},{x:u.x,y:g}];m=s[f]===p?f===`x`?e:t:f===`x`?t:e}else{let i=[{x:l.x,y:u.y}],o=[{x:u.x,y:l.y}];if(m=f===`x`?s.x===p?o:i:s.y===p?i:o,t===r){let t=Math.abs(e[f]-n[f]);if(t<=a){let r=Math.min(a-1,a-t);s[f]===p?_[f]=(l[f]>e[f]?-1:1)*r:v[f]=(u[f]>n[f]?-1:1)*r}}if(t!==r){let e=f===`x`?`y`:`x`,t=s[f]===c[e],n=l[e]>u[e],r=l[e]=Math.max(Math.abs(d.y-m[0].y),Math.abs(y.y-m[0].y))?(h=(d.x+y.x)/2,g=m[0].y):(h=m[0].x,g=(d.y+y.y)/2)}let x={x:l.x+_.x,y:l.y+_.y},S={x:u.x+v.x,y:u.y+v.y};return[[e,...x.x!==m[0].x||x.y!==m[0].y?[x]:[],...m,...S.x!==m[m.length-1].x||S.y!==m[m.length-1].y?[S]:[],n],h,g,y,b]}function mY(e,t,n,r){let i=Math.min(fY(e,t)/2,fY(t,n)/2,r),{x:a,y:o}=t;if(e.x===a&&a===n.x||e.y===o&&o===n.y)return`L${a} ${o}`;if(e.y===o){let t=e.xe.id===t):e[0])||null}function xY(e,t){return e?typeof e==`string`?e:`${t?`${t}__`:``}${Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(`&`)}`:``}function SY(e,{id:t,defaultColor:n,defaultMarkerStart:r,defaultMarkerEnd:i}){let a=new Set;return e.reduce((e,o)=>([o.markerStart||r,o.markerEnd||i].forEach(r=>{if(r&&typeof r==`object`){let i=xY(r,t);a.has(i)||(e.push({id:i,color:r.color||n,...r}),a.add(i))}}),e),[]).sort((e,t)=>e.id.localeCompare(t.id))}var CY=1e3,wY=10,TY={nodeOrigin:[0,0],nodeExtent:Gq,elevateNodesOnSelect:!0,zIndexMode:`basic`,defaults:{}},EY={...TY,checkEquality:!0};function DY(e,t){let n={...e};for(let e in t)t[e]!==void 0&&(n[e]=t[e]);return n}function OY(e,t,n){let r=DY(TY,n);for(let n of e.values())if(n.parentId)NY(n,e,t,r);else{let e=hJ(aJ(n,r.nodeOrigin),RJ(n.extent)?n.extent:r.nodeExtent,zJ(n));n.internals.positionAbsolute=e}}function kY(e,t){if(!e.handles)return e.measured?t?.internals.handleBounds:void 0;let n=[],r=[];for(let t of e.handles){let i={id:t.id,width:t.width??1,height:t.height??1,nodeId:e.id,x:t.x,y:t.y,position:t.position,type:t.type};t.type===`source`?n.push(i):t.type===`target`&&r.push(i)}return{source:n,target:r}}function AY(e){return e===`manual`}function jY(e,t,n,r={}){let i=DY(EY,r),a={i:0},o=new Map(t),s=i?.elevateNodesOnSelect&&!AY(i.zIndexMode)?CY:0,c=e.length>0,l=!1;t.clear(),n.clear();for(let u of e){let e=o.get(u.id);if(i.checkEquality&&u===e?.internals.userNode)t.set(u.id,e);else{let n=hJ(aJ(u,i.nodeOrigin),RJ(u.extent)?u.extent:i.nodeExtent,zJ(u));e={...i.defaults,...u,measured:{width:u.measured?.width,height:u.measured?.height},internals:{positionAbsolute:n,handleBounds:kY(u,e),z:PY(u,s,i.zIndexMode),userNode:u}},t.set(u.id,e)}(e.measured===void 0||e.measured.width===void 0||e.measured.height===void 0)&&!e.hidden&&(c=!1),u.parentId&&NY(e,t,n,r,a),l||=u.selected??!1}return{nodesInitialized:c,hasSelectedNodes:l}}function MY(e,t){if(!e.parentId)return;let n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}function NY(e,t,n,r,i){let{elevateNodesOnSelect:a,nodeOrigin:o,nodeExtent:s,zIndexMode:c}=DY(TY,r),l=e.parentId,u=t.get(l);if(!u){console.warn(`Parent node ${l} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}MY(e,n),i&&!u.parentId&&u.internals.rootParentIndex===void 0&&c===`auto`&&(u.internals.rootParentIndex=++i.i,u.internals.z=u.internals.z+i.i*wY),i&&u.internals.rootParentIndex!==void 0&&(i.i=u.internals.rootParentIndex);let{x:d,y:f,z:p}=FY(e,u,o,s,a&&!AY(c)?CY:0,c),{positionAbsolute:m}=e.internals,h=d!==m.x||f!==m.y;(h||p!==e.internals.z)&&t.set(e.id,{...e,internals:{...e.internals,positionAbsolute:h?{x:d,y:f}:m,z:p}})}function PY(e,t,n){let r=OJ(e.zIndex)?e.zIndex:0;return AY(n)?r:r+(e.selected?t:0)}function FY(e,t,n,r,i,a){let{x:o,y:s}=t.internals.positionAbsolute,c=zJ(e),l=aJ(e,n),u=RJ(e.extent)?hJ(l,e.extent,c):l,d=hJ({x:o+u.x,y:s+u.y},r,c);e.extent===`parent`&&(d=gJ(d,c,t));let f=PY(e,i,a),p=t.internals.z??0;return{x:d.x,y:d.y,z:p>=f?p+1:f}}function IY(e,t,n,r=[0,0]){let i=[],a=new Map;for(let n of e){let e=t.get(n.parentId);if(!e)continue;let r=wJ(a.get(n.parentId)?.expandedRect??SJ(e),n.rect);a.set(n.parentId,{expandedRect:r,parent:e})}return a.size>0&&a.forEach(({expandedRect:t,parent:a},o)=>{let s=a.internals.positionAbsolute,c=zJ(a),l=a.origin??r,u=t.x0||d>0||m||h)&&(i.push({id:o,type:`position`,position:{x:a.position.x-u+m,y:a.position.y-d+h}}),n.get(o)?.forEach(t=>{e.some(e=>e.id===t.id)||i.push({id:t.id,type:`position`,position:{x:t.position.x+u,y:t.position.y+d}})})),(c.width0){let e=IY(f,t,n,i);l.push(...e)}return{changes:l,updatedInternals:c}}async function RY({delta:e,panZoom:t,transform:n,translateExtent:r,width:i,height:a}){if(!t||!e.x&&!e.y)return!1;let o=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[i,a]],r);return!!o&&(o.x!==n[0]||o.y!==n[1]||o.k!==n[2])}function zY(e,t,n,r,i,a){let o=i,s=r.get(o)||new Map;r.set(o,s.set(n,t)),o=`${i}-${e}`;let c=r.get(o)||new Map;if(r.set(o,c.set(n,t)),a){o=`${i}-${e}-${a}`;let s=r.get(o)||new Map;r.set(o,s.set(n,t))}}function BY(e,t,n){e.clear(),t.clear();for(let r of n){let{source:n,target:i,sourceHandle:a=null,targetHandle:o=null}=r,s={edgeId:r.id,source:n,target:i,sourceHandle:a,targetHandle:o},c=`${n}-${a}--${i}-${o}`;zY(`source`,s,`${i}-${o}--${n}-${a}`,e,n,a),zY(`target`,s,c,e,i,o),t.set(r.id,r)}}function VY(e,t){if(!e.parentId)return!1;let n=t.get(e.parentId);return n?n.selected?!0:VY(n,t):!1}function HY(e,t,n){let r=e;do{if(r?.matches?.(t))return!0;if(r===n)return!1;r=r?.parentElement}while(r);return!1}function UY(e,t,n,r){let i=new Map;for(let[a,o]of e)if((o.selected||o.id===r)&&(!o.parentId||!VY(o,e))&&(o.draggable||t&&o.draggable===void 0)){let t=e.get(a);t&&i.set(a,{id:a,position:t.position||{x:0,y:0},distance:{x:n.x-t.internals.positionAbsolute.x,y:n.y-t.internals.positionAbsolute.y},extent:t.extent,parentId:t.parentId,origin:t.origin,expandParent:t.expandParent,internals:{positionAbsolute:t.internals.positionAbsolute||{x:0,y:0}},measured:{width:t.measured.width??0,height:t.measured.height??0}})}return i}function WY({nodeId:e,dragItems:t,nodeLookup:n,dragging:r=!0}){let i=[];for(let[e,a]of t){let t=n.get(e)?.internals.userNode;t&&i.push({...t,position:a.position,dragging:r})}if(!e)return[i[0],i];let a=n.get(e)?.internals.userNode;return[a?{...a,position:t.get(e)?.position||a.position,dragging:r}:i[0],i]}function GY({dragItems:e,snapGrid:t,x:n,y:r}){let i=e.values().next().value;if(!i)return null;let a={x:n-i.distance.x,y:r-i.distance.y},o=AJ(a,t);return{x:o.x-a.x,y:o.y-a.y}}function KY({onNodeMouseDown:e,getStoreItems:t,onDragStart:n,onDrag:r,onDragStop:i}){let a={x:null,y:null},o=0,s=new Map,c=!1,l={x:0,y:0},u=null,d=!1,f=null,p=!1,m=!1,h=null;function g({noDragClassName:g,handleSelector:_,domNode:v,isSelectable:y,nodeId:b,nodeClickDistance:x=0}){f=fW(v);function S({x:e,y:n}){let{nodeLookup:i,nodeExtent:o,snapGrid:c,snapToGrid:l,nodeOrigin:u,onNodeDrag:d,onSelectionDrag:f,onError:p,updateNodePositions:g}=t();a={x:e,y:n};let _=!1,v=s.size>1,y=v&&o?bJ(sJ(s)):null,x=v&&l?GY({dragItems:s,snapGrid:c,x:e,y:n}):null;for(let[t,r]of s){if(!i.has(t))continue;let a={x:e-r.distance.x,y:n-r.distance.y};l&&(a=x?{x:Math.round(a.x+x.x),y:Math.round(a.y+x.y)}:AJ(a,c));let s=null;if(v&&o&&!r.extent&&y){let{positionAbsolute:e}=r.internals,t=e.x-y.x+o[0][0],n=e.x+r.measured.width-y.x2+o[1][0],i=e.y-y.y+o[0][1],a=e.y+r.measured.height-y.y2+o[1][1];s=[[t,i],[n,a]]}let{position:d,positionAbsolute:f}=fJ({nodeId:t,nextPosition:a,nodeLookup:i,nodeExtent:s||o,nodeOrigin:u,onError:p});_=_||r.position.x!==d.x||r.position.y!==d.y,r.position=d,r.internals.positionAbsolute=f}if(m||=_,_&&(g(s,!0),h&&(r||d||!b&&f))){let[e,t]=WY({nodeId:b,dragItems:s,nodeLookup:i});r?.(h,s,e,t),d?.(h,e,t),b||f?.(h,t)}}async function C(){if(!u)return;let{transform:e,panBy:n,autoPanSpeed:r,autoPanOnNodeDrag:i}=t();if(!i){c=!1,cancelAnimationFrame(o);return}let[s,d]=vJ(l,u,r);(s!==0||d!==0)&&(a.x=(a.x??0)-s/e[2],a.y=(a.y??0)-d/e[2],await n({x:s,y:d})&&S(a)),o=requestAnimationFrame(C)}function w(r){let{nodeLookup:i,multiSelectionActive:o,nodesDraggable:c,transform:l,snapGrid:f,snapToGrid:p,selectNodesOnDrag:m,onNodeDragStart:h,onSelectionDragStart:g,unselectNodesAndEdges:_}=t();d=!0,(!m||!y)&&!o&&b&&(i.get(b)?.selected||_()),y&&m&&b&&e?.(b);let v=GJ(r.sourceEvent,{transform:l,snapGrid:f,snapToGrid:p,containerBounds:u});if(a=v,s=UY(i,c,v,b),s.size>0&&(n||h||!b&&g)){let[e,t]=WY({nodeId:b,dragItems:s,nodeLookup:i});n?.(r.sourceEvent,s,e,t),h?.(r.sourceEvent,e,t),b||g?.(r.sourceEvent,t)}}let T=DW().clickDistance(x).on(`start`,e=>{let{domNode:n,nodeDragThreshold:r,transform:i,snapGrid:o,snapToGrid:s}=t();u=n?.getBoundingClientRect()||null,p=!1,m=!1,h=e.sourceEvent,r===0&&w(e),a=GJ(e.sourceEvent,{transform:i,snapGrid:o,snapToGrid:s,containerBounds:u}),l=ZJ(e.sourceEvent,u)}).on(`drag`,e=>{let{autoPanOnNodeDrag:n,transform:r,snapGrid:i,snapToGrid:o,nodeDragThreshold:f,nodeLookup:m}=t(),g=GJ(e.sourceEvent,{transform:r,snapGrid:i,snapToGrid:o,containerBounds:u});if(h=e.sourceEvent,(e.sourceEvent.type===`touchmove`&&e.sourceEvent.touches.length>1||b&&!m.has(b))&&(p=!0),!p){if(!c&&n&&d&&(c=!0,C()),!d){let t=ZJ(e.sourceEvent,u),n=t.x-l.x,r=t.y-l.y;Math.sqrt(n*n+r*r)>f&&w(e)}(a.x!==g.xSnapped||a.y!==g.ySnapped)&&s&&d&&(l=ZJ(e.sourceEvent,u),S(g))}}).on(`end`,e=>{if(!d||p){p&&s.size>0&&t().updateNodePositions(s,!1);return}if(c=!1,d=!1,cancelAnimationFrame(o),s.size>0){let{nodeLookup:n,updateNodePositions:r,onNodeDragStop:a,onSelectionDragStop:o}=t();if(m&&=(r(s,!1),!1),i||a||!b&&o){let[t,r]=WY({nodeId:b,dragItems:s,nodeLookup:n,dragging:!1});i?.(e.sourceEvent,s,t,r),a?.(e.sourceEvent,t,r),b||o?.(e.sourceEvent,r)}}}).filter(e=>{let t=e.target;return!e.button&&(!g||!HY(t,`.${g}`,v))&&(!_||HY(t,_,v))});f.call(T)}function _(){f?.on(`.drag`,null)}return{update:g,destroy:_}}function qY(e,t,n){let r=[],i={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(let e of t.values())EJ(i,SJ(e))>0&&r.push(e);return r}var JY=250;function YY(e,t,n,r){let i=[],a=1/0,o=qY(e,n,t+JY);for(let n of o){let o=[...n.internals.handleBounds?.source??[],...n.internals.handleBounds?.target??[]];for(let s of o){if(r.nodeId===s.nodeId&&r.type===s.type&&r.id===s.id)continue;let{x:o,y:c}=yY(n,s,s.position,!0),l=Math.sqrt((o-e.x)**2+(c-e.y)**2);l>t||(l1){let e=r.type===`source`?`target`:`source`;return i.find(t=>t.type===e)??i[0]}return i[0]}function XY(e,t,n,r,i,a=!1){let o=r.get(e);if(!o)return null;let s=i===`strict`?o.internals.handleBounds?.[t]:[...o.internals.handleBounds?.source??[],...o.internals.handleBounds?.target??[]],c=(n?s?.find(e=>e.id===n):s?.[0])??null;return c&&a?{...c,...yY(o,c,c.position,!0)}:c}function ZY(e,t){return e||(t?.classList.contains(`target`)?`target`:t?.classList.contains(`source`)?`source`:null)}function QY(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}var $Y=()=>!0;function eX(e,{connectionMode:t,connectionRadius:n,handleId:r,nodeId:i,edgeUpdaterType:a,isTarget:o,domNode:s,nodeLookup:c,lib:l,autoPanOnConnect:u,flowId:d,panBy:f,cancelConnection:p,onConnectStart:m,onConnect:h,onConnectEnd:g,isValidConnection:_=$Y,onReconnectEnd:v,updateConnection:y,getTransform:b,getFromHandle:x,autoPanSpeed:S,dragThreshold:C=1,handleDomNode:w}){let T=qJ(e.target),E=0,D,{x:O,y:k}=ZJ(e),A=ZY(a,w),j=s?.getBoundingClientRect(),M=!1;if(!j||!A)return;let N=XY(i,A,r,c,t);if(!N)return;let P=ZJ(e,j),F=!1,I=null,L=!1,R=null;function z(){if(!u||!j)return;let[e,t]=vJ(P,j,S);f({x:e,y:t}),E=requestAnimationFrame(z)}let B={...N,nodeId:i,type:A,position:N.position},V=c.get(i),H={inProgress:!0,isValid:null,from:yY(V,B,$.Left,!0),fromHandle:B,fromPosition:B.position,fromNode:V,to:P,toHandle:null,toPosition:eJ[B.position],toNode:null,pointer:P};function ee(){M=!0,y(H),m?.(e,{nodeId:i,handleId:r,handleType:A})}C===0&&ee();function U(e){if(!M){let{x:t,y:n}=ZJ(e),r=t-O,i=n-k;if(!(r*r+i*i>C*C))return;ee()}if(!x()||!B){te(e);return}let a=b();P=ZJ(e,j),D=YY(jJ(P,a,!1,[1,1]),n,c,B),F||=(z(),!0);let s=tX(e,{handle:D,connectionMode:t,fromNodeId:i,fromHandleId:r,fromType:o?`target`:`source`,isValidConnection:_,doc:T,lib:l,flowId:d,nodeLookup:c});R=s.handleDomNode,I=s.connection,L=QY(!!D,s.isValid);let u=c.get(i),f=u?yY(u,B,$.Left,!0):H.from,p={...H,from:f,isValid:L,to:s.toHandle&&L?MJ({x:s.toHandle.x,y:s.toHandle.y},a):P,toHandle:s.toHandle,toPosition:L&&s.toHandle?s.toHandle.position:eJ[B.position],toNode:s.toHandle?c.get(s.toHandle.nodeId):null,pointer:P};y(p),H=p}function te(e){if(!(`touches`in e&&e.touches.length>0)){if(M){(D||R)&&I&&L&&h?.(I);let{inProgress:t,...n}=H,r={...n,toPosition:H.toHandle?H.toPosition:null};g?.(e,r),a&&v?.(e,r)}p(),cancelAnimationFrame(E),F=!1,L=!1,I=null,R=null,T.removeEventListener(`mousemove`,U),T.removeEventListener(`mouseup`,te),T.removeEventListener(`touchmove`,U),T.removeEventListener(`touchend`,te)}}T.addEventListener(`mousemove`,U),T.addEventListener(`mouseup`,te),T.addEventListener(`touchmove`,U),T.addEventListener(`touchend`,te)}function tX(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:i,fromType:a,doc:o,lib:s,flowId:c,isValidConnection:l=$Y,nodeLookup:u}){let d=a===`target`,f=t?o.querySelector(`.${s}-flow__handle[data-id="${c}-${t?.nodeId}-${t?.id}-${t?.type}"]`):null,{x:p,y:m}=ZJ(e),h=o.elementFromPoint(p,m),g=h?.classList.contains(`${s}-flow__handle`)?h:f,_={handleDomNode:g,isValid:!1,connection:null,toHandle:null};if(g){let e=ZY(void 0,g),t=g.getAttribute(`data-nodeid`),a=g.getAttribute(`data-handleid`),o=g.classList.contains(`connectable`),s=g.classList.contains(`connectableend`);if(!t||!e)return _;let c={source:d?t:r,sourceHandle:d?a:i,target:d?r:t,targetHandle:d?i:a};_.connection=c,_.isValid=o&&s&&(n===Jq.Strict?d&&e===`source`||!d&&e===`target`:t!==r||a!==i)&&l(c),_.toHandle=XY(t,e,a,u,n,!0)}return _}var nX={onPointerDown:eX,isValid:tX};function rX({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){let i=fW(e);function a({translateExtent:e,width:a,height:o,zoomStep:s=1,pannable:c=!0,zoomable:l=!0,inversePan:u=!1}){let d=e=>{if(e.sourceEvent.type!==`wheel`||!t)return;let r=n(),i=e.sourceEvent.ctrlKey&&LJ()?10:1,a=-e.sourceEvent.deltaY*(e.sourceEvent.deltaMode===1?.05:e.sourceEvent.deltaMode?1:.002)*s,o=r[2]*2**(a*i);t.scaleTo(o)},f=[0,0],p=Uq().on(`start`,e=>{(e.sourceEvent.type===`mousedown`||e.sourceEvent.type===`touchstart`)&&(f=[e.sourceEvent.clientX??e.sourceEvent.touches[0].clientX,e.sourceEvent.clientY??e.sourceEvent.touches[0].clientY])}).on(`zoom`,c?i=>{let s=n();if(i.sourceEvent.type!==`mousemove`&&i.sourceEvent.type!==`touchmove`||!t)return;let c=[i.sourceEvent.clientX??i.sourceEvent.touches[0].clientX,i.sourceEvent.clientY??i.sourceEvent.touches[0].clientY],l=[c[0]-f[0],c[1]-f[1]];f=c;let d=r()*Math.max(s[2],Math.log(s[2]))*(u?-1:1),p={x:s[0]-l[0]*d,y:s[1]-l[1]*d},m=[[0,0],[a,o]];t.setViewportConstrained({x:p.x,y:p.y,zoom:s[2]},m,e)}:null).on(`zoom.wheel`,l?d:null);i.call(p,{})}function o(){i.on(`zoom`,null)}return{update:a,destroy:o,pointer:mW}}var iX=e=>({x:e.x,y:e.y,zoom:e.k}),aX=({x:e,y:t,zoom:n})=>Nq.translate(e,t).scale(n),oX=(e,t)=>e.target.closest(`.${t}`),sX=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),cX=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,lX=(e,t=0,n=cX,r=()=>{})=>{let i=typeof t==`number`&&t>0;return i||r(),i?e.transition().duration(t).ease(n).on(`end`,r):e},uX=e=>{let t=e.ctrlKey&&LJ()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function dX({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:i,panOnScrollSpeed:a,zoomOnPinch:o,onPanZoomStart:s,onPanZoom:c,onPanZoomEnd:l}){return u=>{if(oX(u,t))return u.ctrlKey&&u.preventDefault(),!1;u.preventDefault(),u.stopImmediatePropagation();let d=n.property(`__zoom`).k||1;if(u.ctrlKey&&o){let e=mW(u),t=d*2**uX(u);r.scaleTo(n,t,e,u);return}let f=u.deltaMode===1?20:1,p=i===Yq.Vertical?0:u.deltaX*f,m=i===Yq.Horizontal?0:u.deltaY*f;!LJ()&&u.shiftKey&&i!==Yq.Vertical&&(p=u.deltaY*f,m=0),r.translateBy(n,-(p/d)*a,-(m/d)*a,{internal:!0});let h=iX(n.property(`__zoom`));clearTimeout(e.panScrollTimeout),e.isPanScrolling?c?.(u,h):(e.isPanScrolling=!0,s?.(u,h)),e.panScrollTimeout=setTimeout(()=>{l?.(u,h),e.isPanScrolling=!1},150)}}function fX({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,i){let a=r.type===`wheel`,o=!t&&a&&!r.ctrlKey,s=oX(r,e);if(r.ctrlKey&&a&&s&&r.preventDefault(),o||s)return null;r.preventDefault(),n.call(this,r,i)}}function pX({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{if(r.sourceEvent?.internal)return;let i=iX(r.transform);e.mouseButton=r.sourceEvent?.button||0,e.isZoomingOrPanning=!0,e.prevViewport=i,r.sourceEvent?.type===`mousedown`&&t(!0),n&&n?.(r.sourceEvent,i)}}function mX({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:i}){return a=>{e.usedRightMouseButton=!!(n&&sX(t,e.mouseButton??0)),a.sourceEvent?.sync||r([a.transform.x,a.transform.y,a.transform.k]),i&&!a.sourceEvent?.internal&&i?.(a.sourceEvent,iX(a.transform))}}function hX({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:i,onPaneContextMenu:a}){return o=>{if(!o.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,a&&sX(t,e.mouseButton??0)&&!e.usedRightMouseButton&&o.sourceEvent&&a(o.sourceEvent),e.usedRightMouseButton=!1,r(!1),i)){let t=iX(o.transform);e.prevViewport=t,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{i?.(o.sourceEvent,t)},n?150:0)}}}function gX({zoomActivationKeyPressed:e,zoomOnScroll:t,zoomOnPinch:n,panOnDrag:r,panOnScroll:i,zoomOnDoubleClick:a,userSelectionActive:o,noWheelClassName:s,noPanClassName:c,lib:l,connectionInProgress:u}){return d=>{let f=e||t,p=n&&d.ctrlKey,m=d.type===`wheel`;if(d.button===1&&d.type===`mousedown`&&(oX(d,`${l}-flow__node`)||oX(d,`${l}-flow__edge`)))return!0;if(!r&&!f&&!i&&!a&&!n||o||u&&!m||oX(d,s)&&m||oX(d,c)&&(!m||i&&m&&!e)||!n&&d.ctrlKey&&m)return!1;if(!n&&d.type===`touchstart`&&d.touches?.length>1)return d.preventDefault(),!1;if(!f&&!i&&!p&&m||!r&&(d.type===`mousedown`||d.type===`touchstart`)||Array.isArray(r)&&!r.includes(d.button)&&d.type===`mousedown`)return!1;let h=Array.isArray(r)&&r.includes(d.button)||!d.button||d.button<=1;return(!d.ctrlKey||m)&&h}}function _X({domNode:e,minZoom:t,maxZoom:n,translateExtent:r,viewport:i,onPanZoom:a,onPanZoomStart:o,onPanZoomEnd:s,onDraggingChange:c}){let l={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},u=e.getBoundingClientRect(),d=[[0,0],[u.width,u.height]];(typeof ResizeObserver<`u`?new ResizeObserver(e=>{let t=e[0];t&&(d=[[0,0],[t.contentRect.width,t.contentRect.height]])}):null)?.observe(e);let f=Uq().extent(()=>d).scaleExtent([t,n]).translateExtent(r),p=fW(e).call(f);y({x:i.x,y:i.y,zoom:mJ(i.zoom,t,n)},[[0,0],[u.width,u.height]],r);let m=p.on(`wheel.zoom`),h=p.on(`dblclick.zoom`);f.wheelDelta(uX);async function g(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?AG:WG).transform(lX(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}function _({noWheelClassName:e,noPanClassName:t,onPaneContextMenu:n,userSelectionActive:r,panOnScroll:i,panOnDrag:u,panOnScrollMode:d,panOnScrollSpeed:g,preventScrolling:_,zoomOnPinch:y,zoomOnScroll:b,zoomOnDoubleClick:x,zoomActivationKeyPressed:S,lib:C,onTransformChange:w,connectionInProgress:T,paneClickDistance:E,selectionOnDrag:D}){r&&!l.isZoomingOrPanning&&v();let O=i&&!S&&!r;f.clickDistance(D?1/0:!OJ(E)||E<0?0:E);let k=O?dX({zoomPanValues:l,noWheelClassName:e,d3Selection:p,d3Zoom:f,panOnScrollMode:d,panOnScrollSpeed:g,zoomOnPinch:y,onPanZoomStart:o,onPanZoom:a,onPanZoomEnd:s}):fX({noWheelClassName:e,preventScrolling:_,d3ZoomHandler:m});p.on(`wheel.zoom`,k,{passive:!1});let A=pX({zoomPanValues:l,onDraggingChange:c,onPanZoomStart:o});f.on(`start`,A);let j=mX({zoomPanValues:l,panOnDrag:u,onPaneContextMenu:!!n,onPanZoom:a,onTransformChange:w});f.on(`zoom`,j);let M=hX({zoomPanValues:l,panOnDrag:u,panOnScroll:i,onPaneContextMenu:n,onPanZoomEnd:s,onDraggingChange:c});f.on(`end`,M);let N=gX({zoomActivationKeyPressed:S,panOnDrag:u,zoomOnScroll:b,panOnScroll:i,zoomOnDoubleClick:x,zoomOnPinch:y,userSelectionActive:r,noPanClassName:t,noWheelClassName:e,lib:C,connectionInProgress:T});f.filter(N),x?p.on(`dblclick.zoom`,h):p.on(`dblclick.zoom`,null)}function v(){f.on(`zoom`,null)}async function y(e,t,n){let r=aX(e),i=f?.constrain()(r,t,n);return i&&await g(i),i}async function b(e,t){let n=aX(e);return await g(n,t),n}function x(e){if(p){let t=aX(e),n=p.property(`__zoom`);(n.k!==e.zoom||n.x!==e.x||n.y!==e.y)&&f?.transform(p,t,null,{sync:!0})}}function S(){let e=p?Pq(p.node()):{x:0,y:0,k:1};return{x:e.x,y:e.y,zoom:e.k}}async function C(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?AG:WG).scaleTo(lX(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}async function w(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?AG:WG).scaleBy(lX(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}function T(e){f?.scaleExtent(e)}function E(e){f?.translateExtent(e)}function D(e){let t=!OJ(e)||e<0?0:e;f?.clickDistance(t)}return{update:_,destroy:v,setViewport:b,setViewportConstrained:y,getViewport:S,scaleTo:C,scaleBy:w,setScaleExtent:T,setTranslateExtent:E,syncViewport:x,setClickDistance:D}}var vX;(function(e){e.Line=`line`,e.Handle=`handle`})(vX||={});function yX({width:e,prevWidth:t,height:n,prevHeight:r,affectsX:i,affectsY:a}){let o=e-t,s=n-r,c=[o>0?1:o<0?-1:0,s>0?1:s<0?-1:0];return o&&i&&(c[0]*=-1),s&&a&&(c[1]*=-1),c}function bX(e){return{isHorizontal:e.includes(`right`)||e.includes(`left`),isVertical:e.includes(`bottom`)||e.includes(`top`),affectsX:e.includes(`left`),affectsY:e.includes(`top`)}}function xX(e,t){return Math.max(0,t-e)}function SX(e,t){return Math.max(0,e-t)}function CX(e,t,n){return Math.max(0,t-e,e-n)}function wX(e,t){return e?!t:t}function TX(e,t,n,r,i,a,o,s){let{affectsX:c,affectsY:l}=t,{isHorizontal:u,isVertical:d}=t,f=u&&d,{xSnapped:p,ySnapped:m}=n,{minWidth:h,maxWidth:g,minHeight:_,maxHeight:v}=r,{x:y,y:b,width:x,height:S,aspectRatio:C}=e,w=Math.floor(u?p-e.pointerX:0),T=Math.floor(d?m-e.pointerY:0),E=x+(c?-w:w),D=S+(l?-T:T),O=-a[0]*x,k=-a[1]*S,A=CX(E,h,g),j=CX(D,_,v);if(o){let e=0,t=0;c&&w<0?e=xX(y+w+O,o[0][0]):!c&&w>0&&(e=SX(y+E+O,o[1][0])),l&&T<0?t=xX(b+T+k,o[0][1]):!l&&T>0&&(t=SX(b+D+k,o[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(s){let e=0,t=0;c&&w>0?e=SX(y+w,s[0][0]):!c&&w<0&&(e=xX(y+E,s[1][0])),l&&T>0?t=SX(b+T,s[0][1]):!l&&T<0&&(t=xX(b+D,s[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(i){if(u){let e=CX(E/C,_,v)*C;if(A=Math.max(A,e),o){let e=0;e=!c&&!l||c&&!l&&f?SX(b+k+E/C,o[1][1])*C:xX(b+k+(c?w:-w)/C,o[0][1])*C,A=Math.max(A,e)}if(s){let e=0;e=!c&&!l||c&&!l&&f?xX(b+E/C,s[1][1])*C:SX(b+(c?w:-w)/C,s[0][1])*C,A=Math.max(A,e)}}if(d){let e=CX(D*C,h,g)/C;if(j=Math.max(j,e),o){let e=0;e=!c&&!l||l&&!c&&f?SX(y+D*C+O,o[1][0])/C:xX(y+(l?T:-T)*C+O,o[0][0])/C,j=Math.max(j,e)}if(s){let e=0;e=!c&&!l||l&&!c&&f?xX(y+D*C,s[1][0])/C:SX(y+(l?T:-T)*C,s[0][0])/C,j=Math.max(j,e)}}}T+=T<0?j:-j,w+=w<0?A:-A,i&&(f?E>D*C?T=(wX(c,l)?-w:w)/C:w=(wX(c,l)?-T:T)*C:u?(T=w/C,l=c):(w=T*C,c=l));let M=c?y+w:y,N=l?b+T:b;return{width:x+(c?-w:w),height:S+(l?-T:T),x:a[0]*w*(c?-1:1)+M,y:a[1]*T*(l?-1:1)+N}}var EX={width:0,height:0,x:0,y:0},DX={...EX,pointerX:0,pointerY:0,aspectRatio:1};function OX(e,t,n){let r=t.position.x+e.position.x,i=t.position.y+e.position.y,a=e.measured.width??0,o=e.measured.height??0,s=n[0]*a,c=n[1]*o;return[[r-s,i-c],[r+a-s,i+o-c]]}function kX({domNode:e,nodeId:t,getStoreItems:n,onChange:r,onEnd:i}){let a=fW(e),o={controlDirection:bX(`bottom-right`),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function s({controlPosition:e,boundaries:s,keepAspectRatio:c,resizeDirection:l,onResizeStart:u,onResize:d,onResizeEnd:f,shouldResize:p}){let m={...EX},h={...DX};o={boundaries:s,resizeDirection:l,keepAspectRatio:c,controlDirection:bX(e)};let g,_=null,v=[],y,b,x,S=!1,C=DW().on(`start`,e=>{let{nodeLookup:r,transform:i,snapGrid:a,snapToGrid:o,nodeOrigin:s,paneDomNode:c}=n();if(g=r.get(t),!g)return;_=c?.getBoundingClientRect()??null;let{xSnapped:l,ySnapped:d}=GJ(e.sourceEvent,{transform:i,snapGrid:a,snapToGrid:o,containerBounds:_});m={width:g.measured.width??0,height:g.measured.height??0,x:g.position.x??0,y:g.position.y??0},h={...m,pointerX:l,pointerY:d,aspectRatio:m.width/m.height},y=void 0,b=RJ(g.extent)?g.extent:void 0,g.parentId&&(g.extent===`parent`||g.expandParent)&&(y=r.get(g.parentId)),y&&g.extent===`parent`&&(b=[[0,0],[y.measured.width,y.measured.height]]),v=[],x=void 0;for(let[e,n]of r)if(n.parentId===t&&(v.push({id:e,position:{...n.position},extent:n.extent}),n.extent===`parent`||n.expandParent)){let e=OX(n,g,n.origin??s);x=x?[[Math.min(e[0][0],x[0][0]),Math.min(e[0][1],x[0][1])],[Math.max(e[1][0],x[1][0]),Math.max(e[1][1],x[1][1])]]:e}u?.(e,{...m})}).on(`drag`,e=>{let{transform:t,snapGrid:i,snapToGrid:a,nodeOrigin:s}=n(),c=GJ(e.sourceEvent,{transform:t,snapGrid:i,snapToGrid:a,containerBounds:_}),l=[];if(!g)return;let{x:u,y:f,width:C,height:w}=m,T={},E=g.origin??s,{width:D,height:O,x:k,y:A}=TX(h,o.controlDirection,c,o.boundaries,o.keepAspectRatio,E,b,x),j=D!==C,M=O!==w,N=k!==u&&j,P=A!==f&&M;if(!N&&!P&&!j&&!M)return;if((N||P||E[0]===1||E[1]===1)&&(T.x=N?k:m.x,T.y=P?A:m.y,m.x=T.x,m.y=T.y,v.length>0)){let e=k-u,t=A-f;for(let n of v)n.position={x:n.position.x-e+E[0]*(D-C),y:n.position.y-t+E[1]*(O-w)},l.push(n)}if((j||M)&&(T.width=j&&(!o.resizeDirection||o.resizeDirection===`horizontal`)?D:m.width,T.height=M&&(!o.resizeDirection||o.resizeDirection===`vertical`)?O:m.height,m.width=T.width,m.height=T.height),y&&g.expandParent){let e=E[0]*(T.width??0);T.x&&T.x{S&&=(f?.(e,{...m}),i?.({...m}),!1)});a.call(C)}function c(){a.on(`.drag`,null)}return{update:s,destroy:c}}var AX=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e)),destroy:()=>{n.clear()}},o=t=e(r,i,a);return a},jX=e=>e?AX(e):AX,{useDebugValue:MX}=s.default,{useSyncExternalStoreWithSelector:NX}=Gd.default,PX=e=>e;function FX(e,t=PX,n){let r=NX(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return MX(r),r}var IX=(e,t)=>{let n=jX(e),r=(e,r=t)=>FX(n,e,r);return Object.assign(r,n),r},LX=(e,t)=>e?IX(e,t):IX;function RX(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||!Object.is(e[r],t[r]))return!1;return!0}var zX=(0,s.createContext)(null),BX=zX.Provider,VX=Wq.error001(`react`);function HX(e,t){let n=(0,s.useContext)(zX);if(n===null)throw Error(VX);return FX(n,e,t)}function UX(){let e=(0,s.useContext)(zX);if(e===null)throw Error(VX);return(0,s.useMemo)(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}var WX={display:`none`},GX={position:`absolute`,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0px, 0px, 0px, 0px)`,clipPath:`inset(100%)`},KX=`react-flow__node-desc`,qX=`react-flow__edge-desc`,JX=`react-flow__aria-live`,YX=e=>e.ariaLiveMessage,XX=e=>e.ariaLabelConfig;function ZX({rfId:e}){let t=HX(YX);return(0,K.jsx)(`div`,{id:`${JX}-${e}`,"aria-live":`assertive`,"aria-atomic":`true`,style:GX,children:t})}function QX({rfId:e,disableKeyboardA11y:t}){let n=HX(XX);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{id:`${KX}-${e}`,style:WX,children:t?n[`node.a11yDescription.default`]:n[`node.a11yDescription.keyboardDisabled`]}),(0,K.jsx)(`div`,{id:`${qX}-${e}`,style:WX,children:n[`edge.a11yDescription.default`]}),!t&&(0,K.jsx)(ZX,{rfId:e})]})}var $X=(0,s.forwardRef)(({position:e=`top-left`,children:t,className:n,style:r,...i},a)=>{let o=`${e}`.split(`-`);return(0,K.jsx)(`div`,{className:sH([`react-flow__panel`,n,...o]),style:r,ref:a,...i,children:t})});$X.displayName=`Panel`;var eZ=`https://reactflow.dev?utm_source=attribution`;function tZ({proOptions:e,position:t=`bottom-right`}){return e?.hideAttribution?null:(0,K.jsx)($X,{position:t,className:`react-flow__attribution`,"data-message":`Please only hide this attribution when you are subscribed to React Flow Pro: ${eZ}`,children:(0,K.jsx)(`a`,{href:eZ,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`React Flow attribution`,children:`React Flow`})})}var nZ=e=>{let t=[],n=[];for(let[,n]of e.nodeLookup)n.selected&&t.push(n.internals.userNode);for(let[,t]of e.edgeLookup)t.selected&&n.push(t);return{selectedNodes:t,selectedEdges:n}},rZ=e=>e.id;function iZ(e,t){return RX(e.selectedNodes.map(rZ),t.selectedNodes.map(rZ))&&RX(e.selectedEdges.map(rZ),t.selectedEdges.map(rZ))}function aZ({onSelectionChange:e}){let t=UX(),{selectedNodes:n,selectedEdges:r}=HX(nZ,iZ);return(0,s.useEffect)(()=>{let i={nodes:n,edges:r};e?.(i),t.getState().onSelectionChangeHandlers.forEach(e=>e(i))},[n,r,e]),null}var oZ=e=>!!e.onSelectionChangeHandlers;function sZ({onSelectionChange:e}){let t=HX(oZ);return e||t?(0,K.jsx)(aZ,{onSelectionChange:e}):null}var cZ=[0,0],lZ={x:0,y:0,zoom:1},uZ=[...`nodes.edges.defaultNodes.defaultEdges.onConnect.onConnectStart.onConnectEnd.onClickConnectStart.onClickConnectEnd.nodesDraggable.autoPanOnNodeFocus.nodesConnectable.nodesFocusable.edgesFocusable.edgesReconnectable.elevateNodesOnSelect.elevateEdgesOnSelect.minZoom.maxZoom.nodeExtent.onNodesChange.onEdgesChange.elementsSelectable.connectionMode.snapGrid.snapToGrid.translateExtent.connectOnClick.defaultEdgeOptions.fitView.fitViewOptions.onNodesDelete.onEdgesDelete.onDelete.onNodeDrag.onNodeDragStart.onNodeDragStop.onSelectionDrag.onSelectionDragStart.onSelectionDragStop.onMoveStart.onMove.onMoveEnd.noPanClassName.nodeOrigin.autoPanOnConnect.autoPanOnNodeDrag.onError.connectionRadius.isValidConnection.selectNodesOnDrag.nodeDragThreshold.connectionDragThreshold.onBeforeDelete.debug.autoPanSpeed.ariaLabelConfig.zIndexMode`.split(`.`),`rfId`],dZ=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),fZ={translateExtent:Gq,nodeOrigin:cZ,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:`nopan`,rfId:`1`};function pZ(e){let{setNodes:t,setEdges:n,setMinZoom:r,setMaxZoom:i,setTranslateExtent:a,setNodeExtent:o,reset:c,setDefaultNodesAndEdges:l}=HX(dZ,RX),u=UX();(0,s.useEffect)(()=>(l(e.defaultNodes,e.defaultEdges),()=>{d.current=fZ,c()}),[]);let d=(0,s.useRef)(fZ);return(0,s.useEffect)(()=>{for(let s of uZ){let c=e[s];c!==d.current[s]&&e[s]!==void 0&&(s===`nodes`?t(c):s===`edges`?n(c):s===`minZoom`?r(c):s===`maxZoom`?i(c):s===`translateExtent`?a(c):s===`nodeExtent`?o(c):s===`ariaLabelConfig`?u.setState({ariaLabelConfig:WJ(c)}):s===`fitView`?u.setState({fitViewQueued:c}):s===`fitViewOptions`?u.setState({fitViewOptions:c}):u.setState({[s]:c}))}d.current=e},uZ.map(t=>e[t])),null}function mZ(){return typeof window>`u`||!window.matchMedia?null:window.matchMedia(`(prefers-color-scheme: dark)`)}function hZ(e){let[t,n]=(0,s.useState)(e===`system`?null:e);return(0,s.useEffect)(()=>{if(e!==`system`){n(e);return}let t=mZ(),r=()=>n(t?.matches?`dark`:`light`);return r(),t?.addEventListener(`change`,r),()=>{t?.removeEventListener(`change`,r)}},[e]),t===null?mZ()?.matches?`dark`:`light`:t}var gZ=typeof document<`u`?document:null;function _Z(e=null,t={target:gZ,actInsideInputWithModifier:!0}){let[n,r]=(0,s.useState)(!1),i=(0,s.useRef)(!1),a=(0,s.useRef)(new Set([])),[o,c]=(0,s.useMemo)(()=>{if(e!==null){let t=(Array.isArray(e)?e:[e]).filter(e=>typeof e==`string`).map(e=>e.replace(`+`,` -`).replace(` - -`,` -+`).split(` -`));return[t,t.reduce((e,t)=>e.concat(...t),[])]}return[[],[]]},[e]);return(0,s.useEffect)(()=>{let n=t?.target??gZ,s=t?.actInsideInputWithModifier??!0;if(e!==null){let e=e=>{if(i.current=e.ctrlKey||e.metaKey||e.shiftKey||e.altKey,(!i.current||i.current&&!s)&&YJ(e))return!1;let n=yZ(e.code,c);if(a.current.add(e[n]),vZ(o,a.current,!1)){let n=e.composedPath?.()?.[0]||e.target,a=n?.nodeName===`BUTTON`||n?.nodeName===`A`;t.preventDefault!==!1&&(i.current||!a)&&e.preventDefault(),r(!0)}},l=e=>{let t=yZ(e.code,c);vZ(o,a.current,!0)?(r(!1),a.current.clear()):a.current.delete(e[t]),e.key===`Meta`&&a.current.clear(),i.current=!1},u=()=>{a.current.clear(),r(!1)};return n?.addEventListener(`keydown`,e),n?.addEventListener(`keyup`,l),window.addEventListener(`blur`,u),window.addEventListener(`contextmenu`,u),()=>{n?.removeEventListener(`keydown`,e),n?.removeEventListener(`keyup`,l),window.removeEventListener(`blur`,u),window.removeEventListener(`contextmenu`,u)}}},[e,r]),n}function vZ(e,t,n){return e.filter(e=>n||e.length===t.size).some(e=>e.every(e=>t.has(e)))}function yZ(e,t){return t.includes(e)?`code`:`key`}var bZ=()=>{let e=UX();return(0,s.useMemo)(()=>({zoomIn:async t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1.2,t):!1},zoomOut:async t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,t):!1},zoomTo:async(t,n)=>{let{panZoom:r}=e.getState();return r?r.scaleTo(t,n):!1},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{let{transform:[r,i,a],panZoom:o}=e.getState();return o?(await o.setViewport({x:t.x??r,y:t.y??i,zoom:t.zoom??a},n),!0):!1},getViewport:()=>{let[t,n,r]=e.getState().transform;return{x:t,y:n,zoom:r}},setCenter:async(t,n,r)=>e.getState().setCenter(t,n,r),fitBounds:async(t,n)=>{let{width:r,height:i,minZoom:a,maxZoom:o,panZoom:s}=e.getState(),c=IJ(t,r,i,a,o,n?.padding??.1);return s?(await s.setViewport(c,{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0):!1},screenToFlowPosition:(t,n={})=>{let{transform:r,snapGrid:i,snapToGrid:a,domNode:o}=e.getState();if(!o)return t;let{x:s,y:c}=o.getBoundingClientRect(),l={x:t.x-s,y:t.y-c},u=n.snapGrid??i;return jJ(l,r,n.snapToGrid??a,u)},flowToScreenPosition:t=>{let{transform:n,domNode:r}=e.getState();if(!r)return t;let{x:i,y:a}=r.getBoundingClientRect(),o=MJ(t,n);return{x:o.x+i,y:o.y+a}}}),[])};function xZ(e,t){let n=[],r=new Map,i=[];for(let t of e)if(t.type===`add`){i.push(t);continue}else if(t.type===`remove`||t.type===`replace`)r.set(t.id,[t]);else{let e=r.get(t.id);e?e.push(t):r.set(t.id,[t])}for(let e of t){let t=r.get(e.id);if(!t){n.push(e);continue}if(t[0].type===`remove`)continue;if(t[0].type===`replace`){n.push({...t[0].item});continue}let i={...e};for(let e of t)SZ(e,i);n.push(i)}return i.length&&i.forEach(e=>{e.index===void 0?n.push({...e.item}):n.splice(e.index,0,{...e.item})}),n}function SZ(e,t){switch(e.type){case`select`:t.selected=e.selected;break;case`position`:e.position!==void 0&&(t.position=e.position),e.dragging!==void 0&&(t.dragging=e.dragging);break;case`dimensions`:e.dimensions!==void 0&&(t.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes===`width`)&&(t.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes===`height`)&&(t.height=e.dimensions.height))),typeof e.resizing==`boolean`&&(t.resizing=e.resizing)}}function CZ(e,t){return xZ(e,t)}function wZ(e,t){return xZ(e,t)}function TZ(e,t){return{id:e,type:`select`,selected:t}}function EZ(e,t=new Set,n=!1){let r=[];for(let[i,a]of e){let e=t.has(i);!(a.selected===void 0&&!e)&&a.selected!==e&&(n&&(a.selected=e),r.push(TZ(a.id,e)))}return r}function DZ({items:e=[],lookup:t}){let n=[],r=new Map(e.map(e=>[e.id,e]));for(let[r,i]of e.entries()){let e=t.get(i.id),a=e?.internals?.userNode??e;a!==void 0&&a!==i&&n.push({id:i.id,item:i,type:`replace`}),a===void 0&&n.push({item:i,type:`add`,index:r})}for(let[e]of t)r.get(e)===void 0&&n.push({id:e,type:`remove`});return n}function OZ(e){return{id:e.id,type:`remove`}}var kZ=kJ(`React Flow`,`https://reactflow.dev/`);function AZ(e,t,n={}){return cY(e,t,{...n,onError:n.onError??kZ})}var jZ=e=>rJ(e),MZ=e=>nJ(e);function NZ(e){return(0,s.forwardRef)(e)}var PZ=typeof window<`u`?s.useLayoutEffect:s.useEffect;function FZ(e){let[t,n]=(0,s.useState)(BigInt(0)),[r]=(0,s.useState)(()=>IZ(()=>n(e=>e+BigInt(1))));return PZ(()=>{let t=r.get();t.length&&(e(t),r.reset())},[t]),r}function IZ(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}var LZ=(0,s.createContext)(null);function RZ({children:e}){let t=UX(),n=FZ((0,s.useCallback)(e=>{let{nodes:n=[],setNodes:r,hasDefaultNodes:i,onNodesChange:a,nodeLookup:o,fitViewQueued:s,onNodesChangeMiddlewareMap:c}=t.getState(),l=n;for(let t of e)l=typeof t==`function`?t(l):t;let u=DZ({items:l,lookup:o});for(let e of c.values())u=e(u);i&&r(l),u.length>0?a?.(u):s&&window.requestAnimationFrame(()=>{let{fitViewQueued:e,nodes:n,setNodes:r}=t.getState();e&&r(n)})},[])),r=FZ((0,s.useCallback)(e=>{let{edges:n=[],setEdges:r,hasDefaultEdges:i,onEdgesChange:a,edgeLookup:o}=t.getState(),s=n;for(let t of e)s=typeof t==`function`?t(s):t;i?r(s):a&&a(DZ({items:s,lookup:o}))},[])),i=(0,s.useMemo)(()=>({nodeQueue:n,edgeQueue:r}),[]);return(0,K.jsx)(LZ.Provider,{value:i,children:e})}function zZ(){let e=(0,s.useContext)(LZ);if(!e)throw Error(`useBatchContext must be used within a BatchProvider`);return e}var BZ=e=>!!e.panZoom;function VZ(){let e=bZ(),t=UX(),n=zZ(),r=HX(BZ),i=(0,s.useMemo)(()=>{let e=e=>t.getState().nodeLookup.get(e),r=e=>{n.nodeQueue.push(e)},i=e=>{n.edgeQueue.push(e)},a=e=>{let{nodeLookup:n,nodeOrigin:r}=t.getState(),i=jZ(e)?e:n.get(e.id),a=i.parentId?VJ(i.position,i.measured,i.parentId,n,r):i.position;return SJ({...i,position:a,width:i.measured?.width??i.width,height:i.measured?.height??i.height})},o=(e,t,n={replace:!1})=>{r(r=>r.map(r=>{if(r.id===e){let e=typeof t==`function`?t(r):t;return n.replace&&jZ(e)?e:{...r,...e}}return r}))},s=(e,t,n={replace:!1})=>{i(r=>r.map(r=>{if(r.id===e){let e=typeof t==`function`?t(r):t;return n.replace&&MZ(e)?e:{...r,...e}}return r}))};return{getNodes:()=>t.getState().nodes.map(e=>({...e})),getNode:t=>e(t)?.internals.userNode,getInternalNode:e,getEdges:()=>{let{edges:e=[]}=t.getState();return e.map(e=>({...e}))},getEdge:e=>t.getState().edgeLookup.get(e),setNodes:r,setEdges:i,addNodes:e=>{let t=Array.isArray(e)?e:[e];n.nodeQueue.push(e=>[...e,...t])},addEdges:e=>{let t=Array.isArray(e)?e:[e];n.edgeQueue.push(e=>[...e,...t])},toObject:()=>{let{nodes:e=[],edges:n=[],transform:r}=t.getState(),[i,a,o]=r;return{nodes:e.map(e=>({...e})),edges:n.map(e=>({...e})),viewport:{x:i,y:a,zoom:o}}},deleteElements:async({nodes:e=[],edges:n=[]})=>{let{nodes:r,edges:i,onNodesDelete:a,onEdgesDelete:o,triggerNodeChanges:s,triggerEdgeChanges:c,onDelete:l,onBeforeDelete:u}=t.getState(),{nodes:d,edges:f}=await pJ({nodesToRemove:e,edgesToRemove:n,nodes:r,edges:i,onBeforeDelete:u}),p=f.length>0,m=d.length>0;if(p){let e=f.map(OZ);o?.(f),c(e)}if(m){let e=d.map(OZ);a?.(d),s(e)}return(m||p)&&l?.({nodes:d,edges:f}),{deletedNodes:d,deletedEdges:f}},getIntersectingNodes:(e,n=!0,r)=>{let i=DJ(e),o=i?e:a(e),s=r!==void 0;return o?(r||t.getState().nodes).filter(r=>{let a=t.getState().nodeLookup.get(r.id);if(a&&!i&&(r.id===e.id||!a.internals.positionAbsolute))return!1;let c=SJ(s?r:a),l=EJ(c,o);return n&&l>0||l>=c.width*c.height||l>=o.width*o.height}):[]},isNodeIntersecting:(e,t,n=!0)=>{let r=DJ(e)?e:a(e);if(!r)return!1;let i=EJ(r,t);return n&&i>0||i>=t.width*t.height||i>=r.width*r.height},updateNode:o,updateNodeData:(e,t,n={replace:!1})=>{o(e,e=>{let r=typeof t==`function`?t(e):t;return n.replace?{...e,data:r}:{...e,data:{...e.data,...r}}},n)},updateEdge:s,updateEdgeData:(e,t,n={replace:!1})=>{s(e,e=>{let r=typeof t==`function`?t(e):t;return n.replace?{...e,data:r}:{...e,data:{...e.data,...r}}},n)},getNodesBounds:e=>{let{nodeLookup:n,nodeOrigin:r}=t.getState();return oJ(e,{nodeLookup:n,nodeOrigin:r})},getHandleConnections:({type:e,id:n,nodeId:r})=>Array.from(t.getState().connectionLookup.get(`${r}-${e}${n?`-${n}`:``}`)?.values()??[]),getNodeConnections:({type:e,handleId:n,nodeId:r})=>Array.from(t.getState().connectionLookup.get(`${r}${e?n?`-${e}-${n}`:`-${e}`:``}`)?.values()??[]),fitView:async e=>{let r=t.getState().fitViewResolver??UJ();return t.setState({fitViewQueued:!0,fitViewOptions:e,fitViewResolver:r}),n.nodeQueue.push(e=>[...e]),r.promise}}},[]);return(0,s.useMemo)(()=>({...i,...e,viewportInitialized:r}),[r])}var HZ=e=>e.selected,UZ=typeof window<`u`?window:void 0;function WZ({deleteKeyCode:e,multiSelectionKeyCode:t}){let n=UX(),{deleteElements:r}=VZ(),i=_Z(e,{actInsideInputWithModifier:!1}),a=_Z(t,{target:UZ});(0,s.useEffect)(()=>{if(i){let{edges:e,nodes:t}=n.getState();r({nodes:t.filter(HZ),edges:e.filter(HZ)}),n.setState({nodesSelectionActive:!1})}},[i]),(0,s.useEffect)(()=>{n.setState({multiSelectionActive:a})},[a])}function GZ(e){let t=UX();(0,s.useEffect)(()=>{let n=()=>{if(!e.current||!(e.current.checkVisibility?.()??!0))return!1;let n=KJ(e.current);(n.height===0||n.width===0)&&t.getState().onError?.(`004`,Wq.error004()),t.setState({width:n.width||500,height:n.height||500})};if(e.current){n(),window.addEventListener(`resize`,n);let t=new ResizeObserver(()=>n());return t.observe(e.current),()=>{window.removeEventListener(`resize`,n),t&&e.current&&t.unobserve(e.current)}}},[])}var KZ={position:`absolute`,width:`100%`,height:`100%`,top:0,left:0},qZ=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function JZ({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:r=!1,panOnScrollSpeed:i=.5,panOnScrollMode:a=Yq.Free,zoomOnDoubleClick:o=!0,panOnDrag:c=!0,defaultViewport:l,translateExtent:u,minZoom:d,maxZoom:f,zoomActivationKeyCode:p,preventScrolling:m=!0,children:h,noWheelClassName:g,noPanClassName:_,onViewportChange:v,isControlledViewport:y,paneClickDistance:b,selectionOnDrag:x}){let S=UX(),C=(0,s.useRef)(null),{userSelectionActive:w,lib:T,connectionInProgress:E}=HX(qZ,RX),D=_Z(p),O=(0,s.useRef)();GZ(C);let k=(0,s.useCallback)(e=>{v?.({x:e[0],y:e[1],zoom:e[2]}),y||S.setState({transform:e})},[v,y]);return(0,s.useEffect)(()=>{if(C.current){O.current=_X({domNode:C.current,minZoom:d,maxZoom:f,translateExtent:u,viewport:l,onDraggingChange:e=>S.setState(t=>t.paneDragging===e?t:{paneDragging:e}),onPanZoomStart:(e,t)=>{let{onViewportChangeStart:n,onMoveStart:r}=S.getState();r?.(e,t),n?.(t)},onPanZoom:(e,t)=>{let{onViewportChange:n,onMove:r}=S.getState();r?.(e,t),n?.(t)},onPanZoomEnd:(e,t)=>{let{onViewportChangeEnd:n,onMoveEnd:r}=S.getState();r?.(e,t),n?.(t)}});let{x:e,y:t,zoom:n}=O.current.getViewport();return S.setState({panZoom:O.current,transform:[e,t,n],domNode:C.current.closest(`.react-flow`)}),()=>{O.current?.destroy()}}},[]),(0,s.useEffect)(()=>{O.current?.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:r,panOnScrollSpeed:i,panOnScrollMode:a,zoomOnDoubleClick:o,panOnDrag:c,zoomActivationKeyPressed:D,preventScrolling:m,noPanClassName:_,userSelectionActive:w,noWheelClassName:g,lib:T,onTransformChange:k,connectionInProgress:E,selectionOnDrag:x,paneClickDistance:b})},[e,t,n,r,i,a,o,c,D,m,_,w,g,T,k,E,x,b]),(0,K.jsx)(`div`,{className:`react-flow__renderer`,ref:C,style:KZ,children:h})}var YZ=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function XZ(){let{userSelectionActive:e,userSelectionRect:t}=HX(YZ,RX);return e&&t?(0,K.jsx)(`div`,{className:`react-flow__selection react-flow__container`,style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}var ZZ=(e,t)=>n=>{n.target===t.current&&e?.(n)},QZ=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging,panBy:e.panBy,autoPanSpeed:e.autoPanSpeed});function $Z({isSelecting:e,selectionKeyPressed:t,selectionMode:n=Xq.Full,panOnDrag:r,autoPanOnSelection:i,paneClickDistance:a,selectionOnDrag:o,onSelectionStart:c,onSelectionEnd:l,onPaneClick:u,onPaneContextMenu:d,onPaneScroll:f,onPaneMouseEnter:p,onPaneMouseMove:m,onPaneMouseLeave:h,children:g}){let _=(0,s.useRef)(0),v=UX(),{userSelectionActive:y,elementsSelectable:b,dragging:x,panBy:S,autoPanSpeed:C}=HX(QZ,RX),w=b&&(e||y),T=(0,s.useRef)(null),E=(0,s.useRef)(),D=(0,s.useRef)(new Set),O=(0,s.useRef)(new Set),k=(0,s.useRef)(!1),A=(0,s.useRef)(!1),j=(0,s.useRef)({x:0,y:0}),M=(0,s.useRef)(!1),N=e=>{if(A.current||k.current||v.getState().connection.inProgress){A.current=!1,k.current=!1;return}u?.(e),v.getState().resetSelectedElements(),v.setState({nodesSelectionActive:!1})},P=e=>{if(Array.isArray(r)&&r?.includes(2)){e.preventDefault();return}d?.(e)},F=f?e=>f(e):void 0,I=e=>{A.current&&=(e.stopPropagation(),!1)},L=n=>{let{domNode:r,transform:i}=v.getState();if(E.current=r?.getBoundingClientRect(),!E.current)return;let a=n.target===T.current;if(!a&&n.target.closest(`.nokey`)||!e||!(o&&a||t)||n.button!==0||!n.isPrimary)return;n.target?.setPointerCapture?.(n.pointerId),A.current=!1;let{x:s,y:c}=ZJ(n.nativeEvent,E.current),l=jJ({x:s,y:c},i);v.setState({userSelectionRect:{width:0,height:0,startX:l.x,startY:l.y,x:s,y:c}}),a||(n.stopPropagation(),n.preventDefault())};function R(e,t){let{userSelectionRect:r}=v.getState();if(!r)return;let{transform:i,nodeLookup:a,edgeLookup:o,connectionLookup:s,triggerNodeChanges:c,triggerEdgeChanges:l,defaultEdgeOptions:u}=v.getState(),d={x:r.startX,y:r.startY},{x:f,y:p}=MJ(d,i),m={startX:d.x,startY:d.y,x:ee.id)),O.current=new Set;let _=u?.selectable??!0;for(let e of D.current){let t=s.get(e);if(t)for(let{edgeId:e}of t.values()){let t=o.get(e);t&&(t.selectable??_)&&O.current.add(e)}}HJ(h,D.current)||c(EZ(a,D.current,!0)),HJ(g,O.current)||l(EZ(o,O.current)),v.setState({userSelectionRect:m,userSelectionActive:!0,nodesSelectionActive:!1})}function z(){if(!i||!E.current)return;let[e,t]=vJ(j.current,E.current,C);S({x:e,y:t}).then(e=>{if(!A.current||!e){_.current=requestAnimationFrame(z);return}let{x:t,y:n}=j.current;R(t,n),_.current=requestAnimationFrame(z)})}let B=()=>{cancelAnimationFrame(_.current),_.current=0,M.current=!1};(0,s.useEffect)(()=>()=>B(),[]);let V=e=>{let{userSelectionRect:n,transform:r,resetSelectedElements:i}=v.getState();if(!E.current||!n)return;let{x:o,y:s}=ZJ(e.nativeEvent,E.current);j.current={x:o,y:s};let l=MJ({x:n.startX,y:n.startY},r);if(!A.current){let n=t?0:a;if(Math.hypot(o-l.x,s-l.y)<=n)return;i(),c?.(e)}A.current=!0,M.current||=(z(),!0),R(o,s)},H=e=>{if(!w){e.target===T.current&&v.getState().connection.inProgress&&(k.current=!0);return}e.button===0&&(e.target?.releasePointerCapture?.(e.pointerId),!y&&e.target===T.current&&v.getState().userSelectionRect&&N?.(e),v.setState({userSelectionActive:!1,userSelectionRect:null}),A.current&&(l?.(e),v.setState({nodesSelectionActive:D.current.size>0})),B())},ee=e=>{e.target?.releasePointerCapture?.(e.pointerId),B()},U=r===!0||Array.isArray(r)&&r.includes(0);return(0,K.jsxs)(`div`,{className:sH([`react-flow__pane`,{draggable:U,dragging:x,selection:e}]),onClick:w?void 0:ZZ(N,T),onContextMenu:ZZ(P,T),onWheel:ZZ(F,T),onPointerEnter:w?void 0:p,onPointerMove:w?V:m,onPointerUp:H,onPointerCancel:w?ee:void 0,onPointerDownCapture:w?L:void 0,onClickCapture:w?I:void 0,onPointerLeave:h,ref:T,style:KZ,children:[g,(0,K.jsx)(XZ,{})]})}function eQ({id:e,store:t,unselect:n=!1,nodeRef:r}){let{addSelectedNodes:i,unselectNodesAndEdges:a,multiSelectionActive:o,nodeLookup:s,onError:c}=t.getState(),l=s.get(e);if(!l){c?.(`012`,Wq.error012(e));return}t.setState({nodesSelectionActive:!1}),l.selected?(n||l.selected&&o)&&(a({nodes:[l],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):i([e])}function tQ({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:i,isSelectable:a,nodeClickDistance:o}){let c=UX(),[l,u]=(0,s.useState)(!1),d=(0,s.useRef)();return(0,s.useEffect)(()=>{if(!t)return d.current=KY({getStoreItems:()=>c.getState(),onNodeMouseDown:t=>{eQ({id:t,store:c,nodeRef:e})},onDragStart:()=>{u(!0)},onDragStop:()=>{u(!1)}}),()=>{d.current?.destroy(),d.current=void 0}},[t,c,e]),(0,s.useEffect)(()=>{t||!e.current||!d.current||d.current.update({noDragClassName:n,handleSelector:r,domNode:e.current,isSelectable:a,nodeId:i,nodeClickDistance:o})},[n,r,t,a,e,i,o]),l}var nQ=e=>t=>t.selected&&(t.draggable||e&&t.draggable===void 0);function rQ(){let e=UX();return(0,s.useCallback)(t=>{let{nodeExtent:n,snapToGrid:r,snapGrid:i,nodesDraggable:a,onError:o,updateNodePositions:s,nodeLookup:c,nodeOrigin:l}=e.getState(),u=new Map,d=nQ(a),f=r?i[0]:5,p=r?i[1]:5,m=t.direction.x*f*t.factor,h=t.direction.y*p*t.factor;for(let[,e]of c){if(!d(e))continue;let t={x:e.internals.positionAbsolute.x+m,y:e.internals.positionAbsolute.y+h};r&&(t=AJ(t,i));let{position:a,positionAbsolute:s}=fJ({nodeId:e.id,nextPosition:t,nodeLookup:c,nodeExtent:n,nodeOrigin:l,onError:o});e.position=a,e.internals.positionAbsolute=s,u.set(e.id,e)}s(u)},[])}var iQ=(0,s.createContext)(null),aQ=iQ.Provider;iQ.Consumer;var oQ=()=>(0,s.useContext)(iQ),sQ=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),cQ=(0,s.createContext)(null);function lQ({children:e}){let t=HX(sQ,RX);return(0,K.jsx)(cQ.Provider,{value:t,children:e})}function uQ(){let e=(0,s.useContext)(cQ);if(!e)throw Error(`useHandleConfig must be used within a HandleConfigProvider`);return e}var dQ={connectingFrom:!1,connectingTo:!1,clickConnecting:!1,isPossibleEndHandle:!0,connectionInProcess:!1,clickConnectionInProcess:!1,valid:!1},fQ=(e,t,n)=>r=>{let{connectionClickStartHandle:i,connectionMode:a,connection:o}=r,{fromHandle:s,toHandle:c,isValid:l}=o;if(!s&&!i)return dQ;let u=c?.nodeId===e&&c?.id===t&&c?.type===n;return{connectingFrom:s?.nodeId===e&&s?.id===t&&s?.type===n,connectingTo:u,clickConnecting:i?.nodeId===e&&i?.id===t&&i?.type===n,isPossibleEndHandle:a===Jq.Strict?s?.type!==n:e!==s?.nodeId||t!==s?.id,connectionInProcess:!!s,clickConnectionInProcess:!!i,valid:u&&l}};function pQ({type:e=`source`,position:t=$.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:i=!0,isConnectableEnd:a=!0,id:o,onConnect:s,children:c,className:l,onMouseDown:u,onTouchStart:d,...f},p){let m=o||null,h=e===`target`,g=UX(),_=oQ(),{connectOnClick:v,noPanClassName:y,rfId:b}=uQ(),{connectingFrom:x,connectingTo:S,clickConnecting:C,isPossibleEndHandle:w,connectionInProcess:T,clickConnectionInProcess:E,valid:D}=HX(fQ(_,m,e),RX);_||g.getState().onError?.(`010`,Wq.error010());let O=e=>{let{defaultEdgeOptions:t,onConnect:n,hasDefaultEdges:r}=g.getState(),i={...t,...e};if(r){let{edges:e,setEdges:t,onError:n}=g.getState();t(AZ(i,e,{onError:n}))}n?.(i),s?.(i)},k=e=>{if(!_)return;let t=XJ(e.nativeEvent);if(i&&(t&&e.button===0||!t)){let t=g.getState();nX.onPointerDown(e.nativeEvent,{handleDomNode:e.currentTarget,autoPanOnConnect:t.autoPanOnConnect,connectionMode:t.connectionMode,connectionRadius:t.connectionRadius,domNode:t.domNode,nodeLookup:t.nodeLookup,lib:t.lib,isTarget:h,handleId:m,nodeId:_,flowId:t.rfId,panBy:t.panBy,cancelConnection:t.cancelConnection,onConnectStart:t.onConnectStart,onConnectEnd:(...e)=>g.getState().onConnectEnd?.(...e),updateConnection:t.updateConnection,onConnect:O,isValidConnection:n||((...e)=>g.getState().isValidConnection?.(...e)??!0),getTransform:()=>g.getState().transform,getFromHandle:()=>g.getState().connection.fromHandle,autoPanSpeed:t.autoPanSpeed,dragThreshold:t.connectionDragThreshold})}t?u?.(e):d?.(e)};return(0,K.jsx)(`div`,{"data-handleid":m,"data-nodeid":_,"data-handlepos":t,"data-id":`${b}-${_}-${m}-${e}`,className:sH([`react-flow__handle`,`react-flow__handle-${t}`,`nodrag`,y,l,{source:!h,target:h,connectable:r,connectablestart:i,connectableend:a,clickconnecting:C,connectingfrom:x,connectingto:S,valid:D,connectionindicator:r&&(!T||w)&&(T||E?a:i)}]),onMouseDown:k,onTouchStart:k,onClick:v?t=>{let{onClickConnectStart:r,onClickConnectEnd:a,connectionClickStartHandle:o,connectionMode:s,isValidConnection:c,lib:l,rfId:u,nodeLookup:d,connection:f}=g.getState();if(!_||!o&&!i)return;if(!o){r?.(t.nativeEvent,{nodeId:_,handleId:m,handleType:e}),g.setState({connectionClickStartHandle:{nodeId:_,type:e,id:m}});return}let p=qJ(t.target),h=n||c,{connection:v,isValid:y}=nX.isValid(t.nativeEvent,{handle:{nodeId:_,id:m,type:e},connectionMode:s,fromNodeId:o.nodeId,fromHandleId:o.id||null,fromType:o.type,isValidConnection:h,flowId:u,doc:p,lib:l,nodeLookup:d});y&&v&&O(v);let b=structuredClone(f);delete b.inProgress,b.toPosition=b.toHandle?b.toHandle.position:null,a?.(t,b),g.setState({connectionClickStartHandle:null})}:void 0,ref:p,...f,children:c})}var mQ=(0,s.memo)(NZ(pQ));function hQ({data:e,isConnectable:t,sourcePosition:n=$.Bottom}){return(0,K.jsxs)(K.Fragment,{children:[e?.label,(0,K.jsx)(mQ,{type:`source`,position:n,isConnectable:t})]})}function gQ({data:e,isConnectable:t,targetPosition:n=$.Top,sourcePosition:r=$.Bottom}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(mQ,{type:`target`,position:n,isConnectable:t}),e?.label,(0,K.jsx)(mQ,{type:`source`,position:r,isConnectable:t})]})}function _Q(){return null}function vQ({data:e,isConnectable:t,targetPosition:n=$.Top}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(mQ,{type:`target`,position:n,isConnectable:t}),e?.label]})}var yQ={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},bQ={input:hQ,default:gQ,output:vQ,group:_Q};function xQ(e){return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??e.style?.width,height:e.height??e.initialHeight??e.style?.height}:{width:e.width??e.style?.width,height:e.height??e.style?.height}}var SQ=e=>{let{width:t,height:n,x:r,y:i}=sJ(e.nodeLookup,{filter:e=>!!e.selected});return{width:OJ(t)?t:null,height:OJ(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${r}px,${i}px)`}};function CQ({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){let r=UX(),{width:i,height:a,transformString:o,userSelectionActive:c}=HX(SQ,RX),l=rQ(),u=(0,s.useRef)(null);(0,s.useEffect)(()=>{n||u.current?.focus({preventScroll:!0})},[n]);let d=!c&&i!==null&&a!==null;if(tQ({nodeRef:u,disabled:!d}),!d)return null;let f=e?t=>{e(t,r.getState().nodes.filter(e=>e.selected))}:void 0;return(0,K.jsx)(`div`,{className:sH([`react-flow__nodesselection`,`react-flow__container`,t]),style:{transform:o},children:(0,K.jsx)(`div`,{ref:u,className:`react-flow__nodesselection-rect`,onContextMenu:f,tabIndex:n?void 0:-1,onKeyDown:n?void 0:e=>{Object.prototype.hasOwnProperty.call(yQ,e.key)&&(e.preventDefault(),l({direction:yQ[e.key],factor:e.shiftKey?4:1}))},style:{width:i,height:a}})})}var wQ=typeof window<`u`?window:void 0,TQ=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function EQ({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:a,onPaneScroll:o,paneClickDistance:s,deleteKeyCode:c,selectionKeyCode:l,selectionOnDrag:u,selectionMode:d,onSelectionStart:f,onSelectionEnd:p,multiSelectionKeyCode:m,panActivationKeyCode:h,zoomActivationKeyCode:g,elementsSelectable:_,zoomOnScroll:v,zoomOnPinch:y,panOnScroll:b,panOnScrollSpeed:x,panOnScrollMode:S,zoomOnDoubleClick:C,panOnDrag:w,autoPanOnSelection:T,defaultViewport:E,translateExtent:D,minZoom:O,maxZoom:k,preventScrolling:A,onSelectionContextMenu:j,noWheelClassName:M,noPanClassName:N,disableKeyboardA11y:P,onViewportChange:F,isControlledViewport:I}){let{nodesSelectionActive:L,userSelectionActive:R}=HX(TQ,RX),z=_Z(l,{target:wQ}),B=_Z(h,{target:wQ}),V=B||w,H=B||b,ee=u&&V!==!0,U=z||R||ee;return WZ({deleteKeyCode:c,multiSelectionKeyCode:m}),(0,K.jsx)(JZ,{onPaneContextMenu:a,elementsSelectable:_,zoomOnScroll:v,zoomOnPinch:y,panOnScroll:H,panOnScrollSpeed:x,panOnScrollMode:S,zoomOnDoubleClick:C,panOnDrag:!z&&V,defaultViewport:E,translateExtent:D,minZoom:O,maxZoom:k,zoomActivationKeyCode:g,preventScrolling:A,noWheelClassName:M,noPanClassName:N,onViewportChange:F,isControlledViewport:I,paneClickDistance:s,selectionOnDrag:ee,children:(0,K.jsxs)($Z,{onSelectionStart:f,onSelectionEnd:p,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:a,onPaneScroll:o,panOnDrag:V,autoPanOnSelection:T,isSelecting:!!U,selectionMode:d,selectionKeyPressed:z,paneClickDistance:s,selectionOnDrag:ee,children:[e,L&&(0,K.jsx)(CQ,{onSelectionContextMenu:j,noPanClassName:N,disableKeyboardA11y:P})]})})}EQ.displayName=`FlowRenderer`;var DQ=(0,s.memo)(EQ),OQ=e=>t=>e?cJ(t.nodeLookup,{x:0,y:0,width:t.width,height:t.height},t.transform,!0).map(e=>e.id):Array.from(t.nodeLookup.keys());function kQ(e){return HX((0,s.useCallback)(OQ(e),[e]),RX)}var AQ=e=>e.updateNodeInternals;function jQ(){let e=HX(AQ),[t]=(0,s.useState)(()=>typeof ResizeObserver>`u`?null:new ResizeObserver(t=>{let n=new Map;t.forEach(e=>{let t=e.target.getAttribute(`data-id`);n.set(t,{id:t,nodeElement:e.target,force:!0})}),e(n)}));return(0,s.useEffect)(()=>()=>{t?.disconnect()},[t]),t}function MQ({node:e,nodeType:t,hasDimensions:n,resizeObserver:r}){let i=UX(),a=(0,s.useRef)(null),o=(0,s.useRef)(null),c=(0,s.useRef)(e.sourcePosition),l=(0,s.useRef)(e.targetPosition),u=(0,s.useRef)(t),d=n&&!!e.internals.handleBounds;return(0,s.useEffect)(()=>{a.current&&!e.hidden&&(!d||o.current!==a.current)&&(o.current&&r?.unobserve(o.current),r?.observe(a.current),o.current=a.current)},[d,e.hidden]),(0,s.useEffect)(()=>()=>{o.current&&=(r?.unobserve(o.current),null)},[]),(0,s.useEffect)(()=>{if(a.current){let n=u.current!==t,r=c.current!==e.sourcePosition,o=l.current!==e.targetPosition;(n||r||o)&&(u.current=t,c.current=e.sourcePosition,l.current=e.targetPosition,i.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:a.current,force:!0}]])))}},[e.id,t,e.sourcePosition,e.targetPosition]),a}function NQ({id:e,onClick:t,onMouseEnter:n,onMouseMove:r,onMouseLeave:i,onContextMenu:a,onDoubleClick:o,nodesDraggable:s,elementsSelectable:c,nodesConnectable:l,nodesFocusable:u,resizeObserver:d,noDragClassName:f,noPanClassName:p,disableKeyboardA11y:m,rfId:h,nodeTypes:g,nodeClickDistance:_,onError:v}){let{node:y,internals:b,isParent:x}=HX(t=>{let n=t.nodeLookup.get(e),r=t.parentLookup.has(e);return{node:n,internals:n.internals,isParent:r}},RX),S=y.type||`default`,C=g?.[S]||bQ[S];C===void 0&&(v?.(`003`,Wq.error003(S)),S=`default`,C=g?.default||bQ.default);let w=!!(y.draggable||s&&y.draggable===void 0),T=!!(y.selectable||c&&y.selectable===void 0),E=!!(y.connectable||l&&y.connectable===void 0),D=!!(y.focusable||u&&y.focusable===void 0),O=UX(),k=BJ(y),A=MQ({node:y,nodeType:S,hasDimensions:k,resizeObserver:d}),j=tQ({nodeRef:A,disabled:y.hidden||!w,noDragClassName:f,handleSelector:y.dragHandle,nodeId:e,isSelectable:T,nodeClickDistance:_}),M=rQ();if(y.hidden)return null;let N=zJ(y),P=xQ(y),F=T||w||t||n||r||i,I=n?e=>n(e,{...b.userNode}):void 0,L=r?e=>r(e,{...b.userNode}):void 0,R=i?e=>i(e,{...b.userNode}):void 0,z=a?e=>a(e,{...b.userNode}):void 0,B=o?e=>o(e,{...b.userNode}):void 0,V=n=>{let{selectNodesOnDrag:r,nodeDragThreshold:i}=O.getState();T&&(!r||!w||i>0)&&eQ({id:e,store:O,nodeRef:A}),t&&t(n,{...b.userNode})},H=t=>{if(!(YJ(t.nativeEvent)||m)){if(Kq.includes(t.key)&&T){let n=t.key===`Escape`;eQ({id:e,store:O,unselect:n,nodeRef:A})}else if(w&&y.selected&&Object.prototype.hasOwnProperty.call(yQ,t.key)){t.preventDefault();let{ariaLabelConfig:e}=O.getState();O.setState({ariaLiveMessage:e[`node.a11yDescription.ariaLiveMessage`]({direction:t.key.replace(`Arrow`,``).toLowerCase(),x:~~b.positionAbsolute.x,y:~~b.positionAbsolute.y})}),M({direction:yQ[t.key],factor:t.shiftKey?4:1})}}},ee=()=>{if(m||!A.current?.matches(`:focus-visible`))return;let{transform:t,width:n,height:r,autoPanOnNodeFocus:i,setCenter:a}=O.getState();i&&(cJ(new Map([[e,y]]),{x:0,y:0,width:n,height:r},t,!0).length>0||a(y.position.x+N.width/2,y.position.y+N.height/2,{zoom:t[2]}))};return(0,K.jsx)(`div`,{className:sH([`react-flow__node`,`react-flow__node-${S}`,{[p]:w},y.className,{selected:y.selected,selectable:T,parent:x,draggable:w,dragging:j}]),ref:A,style:{zIndex:b.z,transform:`translate(${b.positionAbsolute.x}px,${b.positionAbsolute.y}px)`,pointerEvents:F?`all`:`none`,visibility:k?`visible`:`hidden`,...y.style,...P},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:I,onMouseMove:L,onMouseLeave:R,onContextMenu:z,onClick:V,onDoubleClick:B,onKeyDown:D?H:void 0,tabIndex:D?0:void 0,onFocus:D?ee:void 0,role:y.ariaRole??(D?`group`:void 0),"aria-roledescription":`node`,"aria-describedby":m?void 0:`${KX}-${h}`,"aria-label":y.ariaLabel,...y.domAttributes,children:(0,K.jsx)(aQ,{value:e,children:(0,K.jsx)(C,{id:e,data:y.data,type:S,positionAbsoluteX:b.positionAbsolute.x,positionAbsoluteY:b.positionAbsolute.y,selected:y.selected??!1,selectable:T,draggable:w,deletable:y.deletable??!0,isConnectable:E,sourcePosition:y.sourcePosition,targetPosition:y.targetPosition,dragging:j,dragHandle:y.dragHandle,zIndex:b.z,parentId:y.parentId,...N})})})}var PQ=(0,s.memo)(NQ),FQ=e=>({nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function IQ(e){let{nodesConnectable:t,nodesFocusable:n,elementsSelectable:r,onError:i}=HX(FQ,RX),a=kQ(e.onlyRenderVisibleElements),o=jQ();return(0,K.jsx)(`div`,{className:`react-flow__nodes`,style:KZ,children:a.map(a=>(0,K.jsx)(PQ,{id:a,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:o,nodesDraggable:e.nodesDraggable??!0,nodesConnectable:t,nodesFocusable:n,elementsSelectable:r,nodeClickDistance:e.nodeClickDistance,onError:i},a))})}IQ.displayName=`NodeRenderer`;var LQ=(0,s.memo)(IQ);function RQ(e){return HX((0,s.useCallback)(t=>{if(!e)return t.edges.map(e=>e.id);let n=[];if(t.width&&t.height)for(let e of t.edges){let r=t.nodeLookup.get(e.source),i=t.nodeLookup.get(e.target);r&&i&&aY({sourceNode:r,targetNode:i,width:t.width,height:t.height,transform:t.transform})&&n.push(e.id)}return n},[e]),RX)}var zQ=({color:e=`none`,strokeWidth:t=1})=>{let n={strokeWidth:t,...e&&{stroke:e}};return(0,K.jsx)(`polyline`,{className:`arrow`,style:n,strokeLinecap:`round`,fill:`none`,strokeLinejoin:`round`,points:`-5,-4 0,0 -5,4`})},BQ=({color:e=`none`,strokeWidth:t=1})=>{let n={strokeWidth:t,...e&&{stroke:e,fill:e}};return(0,K.jsx)(`polyline`,{className:`arrowclosed`,style:n,strokeLinecap:`round`,strokeLinejoin:`round`,points:`-5,-4 0,0 -5,4 -5,-4`})},VQ={[$q.Arrow]:zQ,[$q.ArrowClosed]:BQ};function HQ(e){let t=UX();return(0,s.useMemo)(()=>Object.prototype.hasOwnProperty.call(VQ,e)?VQ[e]:(t.getState().onError?.(`009`,Wq.error009(e)),null),[e])}var UQ=({id:e,type:t,color:n,width:r=12.5,height:i=12.5,markerUnits:a=`strokeWidth`,strokeWidth:o,orient:s=`auto-start-reverse`})=>{let c=HQ(t);return c?(0,K.jsx)(`marker`,{className:`react-flow__arrowhead`,id:e,markerWidth:`${r}`,markerHeight:`${i}`,viewBox:`-10 -10 20 20`,markerUnits:a,orient:s,refX:`0`,refY:`0`,children:(0,K.jsx)(c,{color:n,strokeWidth:o})}):null},WQ=({defaultColor:e,rfId:t})=>{let n=HX(e=>e.edges),r=HX(e=>e.defaultEdgeOptions),i=(0,s.useMemo)(()=>SY(n,{id:t,defaultColor:e,defaultMarkerStart:r?.markerStart,defaultMarkerEnd:r?.markerEnd}),[n,r,t,e]);return i.length?(0,K.jsx)(`svg`,{className:`react-flow__marker`,"aria-hidden":`true`,children:(0,K.jsx)(`defs`,{children:i.map(e=>(0,K.jsx)(UQ,{id:e.id,type:e.type,color:e.color,width:e.width,height:e.height,markerUnits:e.markerUnits,strokeWidth:e.strokeWidth,orient:e.orient},e.id))})}):null};WQ.displayName=`MarkerDefinitions`;var GQ=(0,s.memo)(WQ);function KQ({x:e,y:t,label:n,labelStyle:r,labelShowBg:i=!0,labelBgStyle:a,labelBgPadding:o=[2,4],labelBgBorderRadius:c=2,children:l,className:u,...d}){let[f,p]=(0,s.useState)({x:1,y:0,width:0,height:0}),m=sH([`react-flow__edge-textwrapper`,u]),h=(0,s.useRef)(null);return(0,s.useEffect)(()=>{if(h.current){let e=h.current.getBBox();p({x:e.x,y:e.y,width:e.width,height:e.height})}},[n]),n?(0,K.jsxs)(`g`,{transform:`translate(${e-f.width/2} ${t-f.height/2})`,className:m,visibility:f.width?`visible`:`hidden`,...d,children:[i&&(0,K.jsx)(`rect`,{width:f.width+2*o[0],x:-o[0],y:-o[1],height:f.height+2*o[1],className:`react-flow__edge-textbg`,style:a,rx:c,ry:c}),(0,K.jsx)(`text`,{className:`react-flow__edge-text`,y:f.height/2,dy:`0.3em`,ref:h,style:r,children:n}),l]}):null}KQ.displayName=`EdgeText`;var qQ=(0,s.memo)(KQ);function JQ({path:e,labelX:t,labelY:n,label:r,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:s,labelBgBorderRadius:c,interactionWidth:l=20,...u}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{...u,d:e,fill:`none`,className:sH([`react-flow__edge-path`,u.className])}),l?(0,K.jsx)(`path`,{d:e,fill:`none`,strokeOpacity:0,strokeWidth:l,className:`react-flow__edge-interaction`}):null,r&&OJ(t)&&OJ(n)?(0,K.jsx)(qQ,{x:t,y:n,label:r,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:s,labelBgBorderRadius:c}):null]})}function YQ({pos:e,x1:t,y1:n,x2:r,y2:i}){return e===$.Left||e===$.Right?[.5*(t+r),n]:[t,.5*(n+i)]}function XQ({sourceX:e,sourceY:t,sourcePosition:n=$.Bottom,targetX:r,targetY:i,targetPosition:a=$.Top}){let[o,s]=YQ({pos:n,x1:e,y1:t,x2:r,y2:i}),[c,l]=YQ({pos:a,x1:r,y1:i,x2:e,y2:t}),[u,d,f,p]=$J({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:o,sourceControlY:s,targetControlX:c,targetControlY:l});return[`M${e},${t} C${o},${s} ${c},${l} ${r},${i}`,u,d,f,p]}function ZQ(e){return(0,s.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,sourcePosition:o,targetPosition:s,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:_})=>{let[v,y,b]=XQ({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s}),x=e.isInternal?void 0:t;return(0,K.jsx)(JQ,{id:x,path:v,labelX:y,labelY:b,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:_})})}var QQ=ZQ({isInternal:!1}),$Q=ZQ({isInternal:!0});QQ.displayName=`SimpleBezierEdge`,$Q.displayName=`SimpleBezierEdgeInternal`;function e$(e){return(0,s.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,sourcePosition:p=$.Bottom,targetPosition:m=$.Top,markerEnd:h,markerStart:g,pathOptions:_,interactionWidth:v})=>{let[y,b,x]=hY({sourceX:n,sourceY:r,sourcePosition:p,targetX:i,targetY:a,targetPosition:m,borderRadius:_?.borderRadius,offset:_?.offset,stepPosition:_?.stepPosition}),S=e.isInternal?void 0:t;return(0,K.jsx)(JQ,{id:S,path:y,labelX:b,labelY:x,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:g,interactionWidth:v})})}var t$=e$({isInternal:!1}),n$=e$({isInternal:!0});t$.displayName=`SmoothStepEdge`,n$.displayName=`SmoothStepEdgeInternal`;function r$(e){return(0,s.memo)(({id:t,...n})=>{let r=e.isInternal?void 0:t;return(0,K.jsx)(t$,{...n,id:r,pathOptions:(0,s.useMemo)(()=>({borderRadius:0,offset:n.pathOptions?.offset}),[n.pathOptions?.offset])})})}var i$=r$({isInternal:!1}),a$=r$({isInternal:!0});i$.displayName=`StepEdge`,a$.displayName=`StepEdgeInternal`;function o$(e){return(0,s.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:p,markerStart:m,interactionWidth:h})=>{let[g,_,v]=lY({sourceX:n,sourceY:r,targetX:i,targetY:a}),y=e.isInternal?void 0:t;return(0,K.jsx)(JQ,{id:y,path:g,labelX:_,labelY:v,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:p,markerStart:m,interactionWidth:h})})}var s$=o$({isInternal:!1}),c$=o$({isInternal:!0});s$.displayName=`StraightEdge`,c$.displayName=`StraightEdgeInternal`;function l$(e){return(0,s.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,sourcePosition:o=$.Bottom,targetPosition:s=$.Top,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,pathOptions:_,interactionWidth:v})=>{let[y,b,x]=nY({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s,curvature:_?.curvature}),S=e.isInternal?void 0:t;return(0,K.jsx)(JQ,{id:S,path:y,labelX:b,labelY:x,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:v})})}var u$=l$({isInternal:!1}),d$=l$({isInternal:!0});u$.displayName=`BezierEdge`,d$.displayName=`BezierEdgeInternal`;var f$={default:d$,straight:c$,step:a$,smoothstep:n$,simplebezier:$Q},p$={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null,zIndex:void 0},m$=(e,t,n)=>n===$.Left?e-t:n===$.Right?e+t:e,h$=(e,t,n)=>n===$.Top?e-t:n===$.Bottom?e+t:e,g$=`react-flow__edgeupdater`;function _$({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:i,onMouseEnter:a,onMouseOut:o,type:s}){return(0,K.jsx)(`circle`,{onMouseDown:i,onMouseEnter:a,onMouseOut:o,className:sH([g$,`${g$}-${s}`]),cx:m$(t,r,e),cy:h$(n,r,e),r,stroke:`transparent`,fill:`transparent`})}function v$({isReconnectable:e,reconnectRadius:t,edge:n,sourceX:r,sourceY:i,targetX:a,targetY:o,sourcePosition:s,targetPosition:c,onReconnect:l,onReconnectStart:u,onReconnectEnd:d,setReconnecting:f,setUpdateHover:p}){let m=UX(),h=(e,t)=>{if(e.button!==0)return;let{autoPanOnConnect:r,domNode:i,connectionMode:a,connectionRadius:o,lib:s,onConnectStart:c,cancelConnection:p,nodeLookup:h,rfId:g,panBy:_,updateConnection:v}=m.getState(),y=t.type===`target`;nX.onPointerDown(e.nativeEvent,{autoPanOnConnect:r,connectionMode:a,connectionRadius:o,domNode:i,handleId:t.id,nodeId:t.nodeId,nodeLookup:h,isTarget:y,edgeUpdaterType:t.type,lib:s,flowId:g,cancelConnection:p,panBy:_,isValidConnection:(...e)=>m.getState().isValidConnection?.(...e)??!0,onConnect:e=>l?.(n,e),onConnectStart:(r,i)=>{f(!0),u?.(e,n,t.type),c?.(r,i)},onConnectEnd:(...e)=>m.getState().onConnectEnd?.(...e),onReconnectEnd:(e,r)=>{f(!1),d?.(e,n,t.type,r)},updateConnection:v,getTransform:()=>m.getState().transform,getFromHandle:()=>m.getState().connection.fromHandle,dragThreshold:m.getState().connectionDragThreshold,handleDomNode:e.currentTarget})},g=e=>h(e,{nodeId:n.target,id:n.targetHandle??null,type:`target`}),_=e=>h(e,{nodeId:n.source,id:n.sourceHandle??null,type:`source`}),v=()=>p(!0),y=()=>p(!1);return(0,K.jsxs)(K.Fragment,{children:[(e===!0||e===`source`)&&(0,K.jsx)(_$,{position:s,centerX:r,centerY:i,radius:t,onMouseDown:g,onMouseEnter:v,onMouseOut:y,type:`source`}),(e===!0||e===`target`)&&(0,K.jsx)(_$,{position:c,centerX:a,centerY:o,radius:t,onMouseDown:_,onMouseEnter:v,onMouseOut:y,type:`target`})]})}function y$({id:e,edgesFocusable:t,edgesReconnectable:n,elementsSelectable:r,onClick:i,onDoubleClick:a,onContextMenu:o,onMouseEnter:c,onMouseMove:l,onMouseLeave:u,reconnectRadius:d,onReconnect:f,onReconnectStart:p,onReconnectEnd:m,rfId:h,edgeTypes:g,noPanClassName:_,onError:v,disableKeyboardA11y:y}){let b=HX(t=>t.edgeLookup.get(e)),x=HX(e=>e.defaultEdgeOptions);b=x?{...x,...b}:b;let S=b.type||`default`,C=g?.[S]||f$[S];C===void 0&&(v?.(`011`,Wq.error011(S)),S=`default`,C=g?.default||f$.default);let w=!!(b.focusable||t&&b.focusable===void 0),T=f!==void 0&&(b.reconnectable||n&&b.reconnectable===void 0),E=!!(b.selectable||r&&b.selectable===void 0),D=(0,s.useRef)(null),[O,k]=(0,s.useState)(!1),[A,j]=(0,s.useState)(!1),M=UX(),{zIndex:N=b.zIndex,sourceX:P,sourceY:F,targetX:I,targetY:L,sourcePosition:R,targetPosition:z}=HX((0,s.useCallback)(t=>{let n=t.nodeLookup.get(b.source),r=t.nodeLookup.get(b.target);if(!n||!r)return p$;let i=_Y({id:e,sourceNode:n,targetNode:r,sourceHandle:b.sourceHandle||null,targetHandle:b.targetHandle||null,connectionMode:t.connectionMode,onError:v}),a=iY({selected:b.selected,zIndex:b.zIndex,sourceNode:n,targetNode:r,elevateOnSelect:t.elevateEdgesOnSelect,zIndexMode:t.zIndexMode});return{...i||p$,zIndex:a}},[b.source,b.target,b.sourceHandle,b.targetHandle,b.selected,b.zIndex]),RX),B=(0,s.useMemo)(()=>b.markerStart?`url('#${xY(b.markerStart,h)}')`:void 0,[b.markerStart,h]),V=(0,s.useMemo)(()=>b.markerEnd?`url('#${xY(b.markerEnd,h)}')`:void 0,[b.markerEnd,h]);if(b.hidden||P===null||F===null||I===null||L===null)return null;let H=t=>{let{addSelectedEdges:n,unselectNodesAndEdges:r,multiSelectionActive:a}=M.getState();E&&(M.setState({nodesSelectionActive:!1}),b.selected&&a?(r({nodes:[],edges:[b]}),D.current?.blur()):n([e])),i&&i(t,b)},ee=a?e=>{a(e,{...b})}:void 0,U=o?e=>{o(e,{...b})}:void 0,te=c?e=>{c(e,{...b})}:void 0,W=l?e=>{l(e,{...b})}:void 0,ne=u?e=>{u(e,{...b})}:void 0;return(0,K.jsx)(`svg`,{style:{zIndex:N},children:(0,K.jsxs)(`g`,{className:sH([`react-flow__edge`,`react-flow__edge-${S}`,b.className,_,{selected:b.selected,animated:b.animated,inactive:!E&&!i,updating:O,selectable:E}]),onClick:H,onDoubleClick:ee,onContextMenu:U,onMouseEnter:te,onMouseMove:W,onMouseLeave:ne,onKeyDown:w?t=>{if(!y&&Kq.includes(t.key)&&E){let{unselectNodesAndEdges:n,addSelectedEdges:r}=M.getState();t.key===`Escape`?(D.current?.blur(),n({edges:[b]})):r([e])}}:void 0,tabIndex:w?0:void 0,role:b.ariaRole??(w?`group`:`img`),"aria-roledescription":`edge`,"data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":b.ariaLabel===null?void 0:b.ariaLabel||`Edge from ${b.source} to ${b.target}`,"aria-describedby":w?`${qX}-${h}`:void 0,ref:D,...b.domAttributes,children:[!A&&(0,K.jsx)(C,{id:e,source:b.source,target:b.target,type:b.type,selected:b.selected,animated:b.animated,selectable:E,deletable:b.deletable??!0,label:b.label,labelStyle:b.labelStyle,labelShowBg:b.labelShowBg,labelBgStyle:b.labelBgStyle,labelBgPadding:b.labelBgPadding,labelBgBorderRadius:b.labelBgBorderRadius,sourceX:P,sourceY:F,targetX:I,targetY:L,sourcePosition:R,targetPosition:z,data:b.data,style:b.style,sourceHandleId:b.sourceHandle,targetHandleId:b.targetHandle,markerStart:B,markerEnd:V,pathOptions:`pathOptions`in b?b.pathOptions:void 0,interactionWidth:b.interactionWidth}),T&&(0,K.jsx)(v$,{edge:b,isReconnectable:T,reconnectRadius:d,onReconnect:f,onReconnectStart:p,onReconnectEnd:m,sourceX:P,sourceY:F,targetX:I,targetY:L,sourcePosition:R,targetPosition:z,setUpdateHover:k,setReconnecting:j})]})})}var b$=(0,s.memo)(y$),x$=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function S$({defaultMarkerColor:e,onlyRenderVisibleElements:t,rfId:n,edgeTypes:r,noPanClassName:i,onReconnect:a,onEdgeContextMenu:o,onEdgeMouseEnter:s,onEdgeMouseMove:c,onEdgeMouseLeave:l,onEdgeClick:u,reconnectRadius:d,onEdgeDoubleClick:f,onReconnectStart:p,onReconnectEnd:m,disableKeyboardA11y:h}){let{edgesFocusable:g,edgesReconnectable:_,elementsSelectable:v,onError:y}=HX(x$,RX),b=RQ(t);return(0,K.jsxs)(`div`,{className:`react-flow__edges`,children:[(0,K.jsx)(GQ,{defaultColor:e,rfId:n}),b.map(e=>(0,K.jsx)(b$,{id:e,edgesFocusable:g,edgesReconnectable:_,elementsSelectable:v,noPanClassName:i,onReconnect:a,onContextMenu:o,onMouseEnter:s,onMouseMove:c,onMouseLeave:l,onClick:u,reconnectRadius:d,onDoubleClick:f,onReconnectStart:p,onReconnectEnd:m,rfId:n,onError:y,edgeTypes:r,disableKeyboardA11y:h},e))]})}S$.displayName=`EdgeRenderer`;var C$=(0,s.memo)(S$),w$=e=>`translate(${e[0]}px,${e[1]}px) scale(${e[2]})`;function T$({children:e}){let t=UX(),n=(0,s.useRef)(null),[r]=(0,s.useState)(()=>t.getState().transform);return PZ(()=>{let e=null,r=()=>{let r=t.getState().transform;e&&r[0]===e[0]&&r[1]===e[1]&&r[2]===e[2]||(e=r,n.current&&(n.current.style.transform=w$(r)))};return r(),t.subscribe(r)},[t]),(0,K.jsx)(`div`,{ref:n,className:`react-flow__viewport xyflow__viewport react-flow__container`,style:{transform:w$(r)},children:e})}function E$(e){let t=VZ(),n=(0,s.useRef)(!1);(0,s.useEffect)(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}var D$=e=>e.panZoom?.syncViewport;function O$(e){let t=HX(D$),n=UX();return(0,s.useEffect)(()=>{e&&(t?.(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t]),null}function k$(e){return e.connection.inProgress?{...e.connection,to:jJ(e.connection.to,e.transform)}:{...e.connection}}function A$(e){return e?t=>e(k$(t)):k$}function j$(e){return HX(A$(e),RX)}var M$=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function N$({containerStyle:e,style:t,type:n,component:r}){let{nodesConnectable:i,width:a,height:o,isValid:s,inProgress:c}=HX(M$,RX);return a&&i&&c?(0,K.jsx)(`svg`,{style:e,width:a,height:o,className:`react-flow__connectionline react-flow__container`,children:(0,K.jsx)(`g`,{className:sH([`react-flow__connection`,tJ(s)]),children:(0,K.jsx)(P$,{style:t,type:n,CustomComponent:r,isValid:s})})}):null}var P$=({style:e,type:t=Qq.Bezier,CustomComponent:n,isValid:r})=>{let{inProgress:i,from:a,fromNode:o,fromHandle:s,fromPosition:c,to:l,toNode:u,toHandle:d,toPosition:f,pointer:p}=j$();if(!i)return;if(n)return(0,K.jsx)(n,{connectionLineType:t,connectionLineStyle:e,fromNode:o,fromHandle:s,fromX:a.x,fromY:a.y,toX:l.x,toY:l.y,fromPosition:c,toPosition:f,connectionStatus:tJ(r),toNode:u,toHandle:d,pointer:p});let m=``,h={sourceX:a.x,sourceY:a.y,sourcePosition:c,targetX:l.x,targetY:l.y,targetPosition:f};switch(t){case Qq.Bezier:[m]=nY(h);break;case Qq.SimpleBezier:[m]=XQ(h);break;case Qq.Step:[m]=hY({...h,borderRadius:0});break;case Qq.SmoothStep:[m]=hY(h);break;default:[m]=lY(h)}return(0,K.jsx)(`path`,{d:m,fill:`none`,className:`react-flow__connection-path`,style:e})};P$.displayName=`ConnectionLine`;var F$={};function I$(e=F$){(0,s.useRef)(e),UX(),(0,s.useEffect)(()=>{},[e])}function L$(){UX(),(0,s.useRef)(!1),(0,s.useEffect)(()=>{},[])}function R$({nodeTypes:e,edgeTypes:t,onInit:n,onNodeClick:r,onEdgeClick:i,onNodeDoubleClick:a,onEdgeDoubleClick:o,onNodeMouseEnter:s,onNodeMouseMove:c,onNodeMouseLeave:l,onNodeContextMenu:u,onSelectionContextMenu:d,onSelectionStart:f,onSelectionEnd:p,connectionLineType:m,connectionLineStyle:h,connectionLineComponent:g,connectionLineContainerStyle:_,selectionKeyCode:v,selectionOnDrag:y,selectionMode:b,multiSelectionKeyCode:x,panActivationKeyCode:S,zoomActivationKeyCode:C,deleteKeyCode:w,onlyRenderVisibleElements:T,elementsSelectable:E,defaultViewport:D,translateExtent:O,minZoom:k,maxZoom:A,preventScrolling:j,defaultMarkerColor:M,zoomOnScroll:N,zoomOnPinch:P,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:L,zoomOnDoubleClick:R,panOnDrag:z,autoPanOnSelection:B,onPaneClick:V,onPaneMouseEnter:H,onPaneMouseMove:ee,onPaneMouseLeave:U,onPaneScroll:te,onPaneContextMenu:W,paneClickDistance:ne,nodeClickDistance:re,onEdgeContextMenu:G,onEdgeMouseEnter:ie,onEdgeMouseMove:ae,onEdgeMouseLeave:oe,reconnectRadius:se,onReconnect:ce,onReconnectStart:le,onReconnectEnd:ue,noDragClassName:de,noWheelClassName:fe,noPanClassName:pe,disableKeyboardA11y:me,nodeExtent:he,rfId:ge,viewport:_e,onViewportChange:ve,nodesDraggable:ye}){return I$(e),I$(t),L$(),E$(n),O$(_e),(0,K.jsx)(DQ,{onPaneClick:V,onPaneMouseEnter:H,onPaneMouseMove:ee,onPaneMouseLeave:U,onPaneContextMenu:W,onPaneScroll:te,paneClickDistance:ne,deleteKeyCode:w,selectionKeyCode:v,selectionOnDrag:y,selectionMode:b,onSelectionStart:f,onSelectionEnd:p,multiSelectionKeyCode:x,panActivationKeyCode:S,zoomActivationKeyCode:C,elementsSelectable:E,zoomOnScroll:N,zoomOnPinch:P,zoomOnDoubleClick:R,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:L,panOnDrag:z,autoPanOnSelection:B,defaultViewport:D,translateExtent:O,minZoom:k,maxZoom:A,onSelectionContextMenu:d,preventScrolling:j,noDragClassName:de,noWheelClassName:fe,noPanClassName:pe,disableKeyboardA11y:me,onViewportChange:ve,isControlledViewport:!!_e,children:(0,K.jsxs)(T$,{children:[(0,K.jsx)(C$,{edgeTypes:t,onEdgeClick:i,onEdgeDoubleClick:o,onReconnect:ce,onReconnectStart:le,onReconnectEnd:ue,onlyRenderVisibleElements:T,onEdgeContextMenu:G,onEdgeMouseEnter:ie,onEdgeMouseMove:ae,onEdgeMouseLeave:oe,reconnectRadius:se,defaultMarkerColor:M,noPanClassName:pe,disableKeyboardA11y:me,rfId:ge}),(0,K.jsx)(N$,{style:h,type:m,component:g,containerStyle:_}),(0,K.jsx)(`div`,{className:`react-flow__edgelabel-renderer`}),(0,K.jsx)(LQ,{nodeTypes:e,onNodeClick:r,onNodeDoubleClick:a,onNodeMouseEnter:s,onNodeMouseMove:c,onNodeMouseLeave:l,onNodeContextMenu:u,nodeClickDistance:re,onlyRenderVisibleElements:T,noPanClassName:pe,noDragClassName:de,disableKeyboardA11y:me,nodeExtent:he,rfId:ge,nodesDraggable:ye}),(0,K.jsx)(`div`,{className:`react-flow__viewport-portal`})]})})}R$.displayName=`GraphView`;var z$=(0,s.memo)(R$),B$=kJ(`React Flow`,`https://reactflow.dev/`),V$=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c=.5,maxZoom:l=2,nodeOrigin:u,nodeExtent:d,zIndexMode:f=`basic`}={})=>{let p=new Map,m=new Map,h=new Map,g=new Map,_=r??t??[],v=n??e??[],y=u??[0,0],b=d??Gq;BY(h,g,_);let{nodesInitialized:x}=jY(v,p,m,{nodeOrigin:y,nodeExtent:b,zIndexMode:f}),S=[0,0,1];if(o&&i&&a){let{x:e,y:t,zoom:n}=IJ(sJ(p,{filter:e=>!!((e.width||e.initialWidth)&&(e.height||e.initialHeight))}),i,a,c,l,s?.padding??.1);S=[e,t,n]}return{rfId:`1`,width:i??0,height:a??0,transform:S,nodes:v,nodesInitialized:x,nodeLookup:p,parentLookup:m,edges:_,edgeLookup:g,connectionLookup:h,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:n!==void 0,hasDefaultEdges:r!==void 0,panZoom:null,minZoom:c,maxZoom:l,translateExtent:Gq,nodeExtent:b,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:Jq.Strict,domNode:null,paneDragging:!1,noPanClassName:`nopan`,nodeOrigin:y,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:o??!1,fitViewOptions:s,fitViewResolver:null,connection:{...Zq},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:``,autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:B$,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:`react`,debug:!1,ariaLabelConfig:qq,zIndexMode:f,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},H$=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c,maxZoom:l,nodeOrigin:u,nodeExtent:d,zIndexMode:f})=>LX((p,m)=>{async function h(){let{nodeLookup:e,panZoom:t,fitViewOptions:n,fitViewResolver:r,width:i,height:a,minZoom:o,maxZoom:s}=m();t&&(await dJ({nodes:e,width:i,height:a,panZoom:t,minZoom:o,maxZoom:s},n),r?.resolve(!0),p({fitViewResolver:null}))}return{...V$({nodes:e,edges:t,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c,maxZoom:l,nodeOrigin:u,nodeExtent:d,defaultNodes:n,defaultEdges:r,zIndexMode:f}),setNodes:e=>{let{nodeLookup:t,parentLookup:n,nodeOrigin:r,elevateNodesOnSelect:i,fitViewQueued:a,zIndexMode:o,nodesSelectionActive:s}=m(),{nodesInitialized:c,hasSelectedNodes:l}=jY(e,t,n,{nodeOrigin:r,nodeExtent:d,elevateNodesOnSelect:i,checkEquality:!0,zIndexMode:o}),u=s&&l;a&&c?(h(),p({nodes:e,nodesInitialized:c,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:u})):p({nodes:e,nodesInitialized:c,nodesSelectionActive:u})},setEdges:e=>{let{connectionLookup:t,edgeLookup:n}=m();BY(t,n,e),p({edges:e})},setDefaultNodesAndEdges:(e,t)=>{if(e){let{setNodes:t}=m();t(e),p({hasDefaultNodes:!0})}if(t){let{setEdges:e}=m();e(t),p({hasDefaultEdges:!0})}},updateNodeInternals:e=>{let{triggerNodeChanges:t,nodeLookup:n,parentLookup:r,domNode:i,nodeOrigin:a,nodeExtent:o,debug:s,fitViewQueued:c,zIndexMode:l}=m(),{changes:u,updatedInternals:d}=LY(e,n,r,i,a,o,l);d&&(OY(n,r,{nodeOrigin:a,nodeExtent:o,zIndexMode:l}),c?(h(),p({fitViewQueued:!1,fitViewOptions:void 0})):p({}),u?.length>0&&(s&&console.log(`React Flow: trigger node changes`,u),t?.(u)))},updateNodePositions:(e,t=!1)=>{let n=[],r=[],{nodeLookup:i,triggerNodeChanges:a,connection:o,updateConnection:s,onNodesChangeMiddlewareMap:c}=m();for(let[a,c]of e){let e=i.get(a),l=!!(e?.expandParent&&e?.parentId&&c?.position),u={id:a,type:`position`,position:l?{x:Math.max(0,c.position.x),y:Math.max(0,c.position.y)}:c.position,dragging:t};if(e&&o.inProgress&&o.fromNode.id===e.id){let t=yY(e,o.fromHandle,$.Left,!0);s({...o,from:t})}l&&e.parentId&&n.push({id:a,parentId:e.parentId,rect:{...c.internals.positionAbsolute,width:c.measured.width??0,height:c.measured.height??0}}),r.push(u)}if(n.length>0){let{parentLookup:e,nodeOrigin:t}=m(),a=IY(n,i,e,t);r.push(...a)}for(let e of c.values())r=e(r);a(r)},triggerNodeChanges:e=>{let{onNodesChange:t,setNodes:n,nodes:r,hasDefaultNodes:i,debug:a}=m();e?.length&&(i&&n(CZ(e,r)),a&&console.log(`React Flow: trigger node changes`,e),t?.(e))},triggerEdgeChanges:e=>{let{onEdgesChange:t,setEdges:n,edges:r,hasDefaultEdges:i,debug:a}=m();e?.length&&(i&&n(wZ(e,r)),a&&console.log(`React Flow: trigger edge changes`,e),t?.(e))},addSelectedNodes:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=m();if(t){i(e.map(e=>TZ(e,!0)));return}i(EZ(r,new Set([...e]),!0)),a(EZ(n))},addSelectedEdges:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=m();if(t){a(e.map(e=>TZ(e,!0)));return}a(EZ(n,new Set([...e]))),i(EZ(r,new Set,!0))},unselectNodesAndEdges:({nodes:e,edges:t}={})=>{let{edges:n,nodes:r,nodeLookup:i,triggerNodeChanges:a,triggerEdgeChanges:o}=m(),s=e||r,c=t||n,l=[];for(let e of s){if(!e.selected)continue;let t=i.get(e.id);t&&(t.selected=!1),l.push(TZ(e.id,!1))}let u=[];for(let e of c)e.selected&&u.push(TZ(e.id,!1));a(l),o(u)},setMinZoom:e=>{let{panZoom:t,maxZoom:n}=m();t?.setScaleExtent([e,n]),p({minZoom:e})},setMaxZoom:e=>{let{panZoom:t,minZoom:n}=m();t?.setScaleExtent([n,e]),p({maxZoom:e})},setTranslateExtent:e=>{m().panZoom?.setTranslateExtent(e),p({translateExtent:e})},resetSelectedElements:()=>{let{edges:e,nodes:t,triggerNodeChanges:n,triggerEdgeChanges:r,elementsSelectable:i}=m();if(!i)return;let a=t.reduce((e,t)=>t.selected?[...e,TZ(t.id,!1)]:e,[]),o=e.reduce((e,t)=>t.selected?[...e,TZ(t.id,!1)]:e,[]);n(a),r(o)},setNodeExtent:e=>{let{nodes:t,nodeLookup:n,parentLookup:r,nodeOrigin:i,elevateNodesOnSelect:a,nodeExtent:o,zIndexMode:s}=m();(e[0][0]!==o[0][0]||e[0][1]!==o[0][1]||e[1][0]!==o[1][0]||e[1][1]!==o[1][1])&&(jY(t,n,r,{nodeOrigin:i,nodeExtent:e,elevateNodesOnSelect:a,checkEquality:!1,zIndexMode:s}),p({nodeExtent:e}))},panBy:e=>{let{transform:t,width:n,height:r,panZoom:i,translateExtent:a}=m();return RY({delta:e,panZoom:i,transform:t,translateExtent:a,width:n,height:r})},setCenter:async(e,t,n)=>{let{width:r,height:i,maxZoom:a,panZoom:o}=m();if(!o)return!1;let s=n?.zoom===void 0?a:n.zoom;return await o.setViewport({x:r/2-e*s,y:i/2-t*s,zoom:s},{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0},cancelConnection:()=>{p({connection:{...Zq}})},updateConnection:e=>{p({connection:e})},reset:()=>p({...V$()})}},Object.is);function U$({initialNodes:e,initialEdges:t,defaultNodes:n,defaultEdges:r,initialWidth:i,initialHeight:a,initialMinZoom:o,initialMaxZoom:c,initialFitViewOptions:l,fitView:u,nodeOrigin:d,nodeExtent:f,zIndexMode:p,children:m}){let[h]=(0,s.useState)(()=>H$({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:u,minZoom:o,maxZoom:c,fitViewOptions:l,nodeOrigin:d,nodeExtent:f,zIndexMode:p}));return(0,K.jsx)(BX,{value:h,children:(0,K.jsx)(RZ,{children:(0,K.jsx)(lQ,{children:m})})})}function W$({children:e,nodes:t,edges:n,defaultNodes:r,defaultEdges:i,width:a,height:o,fitView:c,fitViewOptions:l,minZoom:u,maxZoom:d,nodeOrigin:f,nodeExtent:p,zIndexMode:m}){return(0,s.useContext)(zX)?(0,K.jsx)(K.Fragment,{children:e}):(0,K.jsx)(U$,{initialNodes:t,initialEdges:n,defaultNodes:r,defaultEdges:i,initialWidth:a,initialHeight:o,fitView:c,initialFitViewOptions:l,initialMinZoom:u,initialMaxZoom:d,nodeOrigin:f,nodeExtent:p,zIndexMode:m,children:e})}var G$={width:`100%`,height:`100%`,overflow:`hidden`,position:`relative`,zIndex:0};function K$({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:i,nodeTypes:a,edgeTypes:o,onNodeClick:c,onEdgeClick:l,onInit:u,onMove:d,onMoveStart:f,onMoveEnd:p,onConnect:m,onConnectStart:h,onConnectEnd:g,onClickConnectStart:_,onClickConnectEnd:v,onNodeMouseEnter:y,onNodeMouseMove:b,onNodeMouseLeave:x,onNodeContextMenu:S,onNodeDoubleClick:C,onNodeDragStart:w,onNodeDrag:T,onNodeDragStop:E,onNodesDelete:D,onEdgesDelete:O,onDelete:k,onSelectionChange:A,onSelectionDragStart:j,onSelectionDrag:M,onSelectionDragStop:N,onSelectionContextMenu:P,onSelectionStart:F,onSelectionEnd:I,onBeforeDelete:L,connectionMode:R,connectionLineType:z=Qq.Bezier,connectionLineStyle:B,connectionLineComponent:V,connectionLineContainerStyle:H,deleteKeyCode:ee=`Backspace`,selectionKeyCode:U=`Shift`,selectionOnDrag:te=!1,selectionMode:W=Xq.Full,panActivationKeyCode:ne=`Space`,multiSelectionKeyCode:re=LJ()?`Meta`:`Control`,zoomActivationKeyCode:G=LJ()?`Meta`:`Control`,snapToGrid:ie,snapGrid:ae,onlyRenderVisibleElements:oe=!1,selectNodesOnDrag:se,nodesDraggable:ce,autoPanOnNodeFocus:le,nodesConnectable:ue,nodesFocusable:de,nodeOrigin:fe=cZ,edgesFocusable:pe,edgesReconnectable:me,elementsSelectable:he=!0,defaultViewport:ge=lZ,minZoom:_e=.5,maxZoom:ve=2,translateExtent:ye=Gq,preventScrolling:be=!0,nodeExtent:xe,defaultMarkerColor:Se=`#b1b1b7`,zoomOnScroll:Ce=!0,zoomOnPinch:we=!0,panOnScroll:Te=!1,panOnScrollSpeed:Ee=.5,panOnScrollMode:De=Yq.Free,zoomOnDoubleClick:Oe=!0,panOnDrag:ke=!0,onPaneClick:Ae,onPaneMouseEnter:je,onPaneMouseMove:Me,onPaneMouseLeave:Ne,onPaneScroll:Pe,onPaneContextMenu:Fe,paneClickDistance:Ie=1,nodeClickDistance:Le=0,children:Re,onReconnect:ze,onReconnectStart:Be,onReconnectEnd:Ve,onEdgeContextMenu:He,onEdgeDoubleClick:Ue,onEdgeMouseEnter:We,onEdgeMouseMove:Ge,onEdgeMouseLeave:Ke,reconnectRadius:qe=10,onNodesChange:Je,onEdgesChange:Ye,noDragClassName:Xe=`nodrag`,noWheelClassName:Ze=`nowheel`,noPanClassName:Qe=`nopan`,fitView:$e,fitViewOptions:et,connectOnClick:tt,attributionPosition:nt,proOptions:rt,defaultEdgeOptions:it,elevateNodesOnSelect:at=!0,elevateEdgesOnSelect:ot=!1,disableKeyboardA11y:st=!1,autoPanOnConnect:ct,autoPanOnNodeDrag:lt,autoPanOnSelection:ut=!0,autoPanSpeed:dt,connectionRadius:ft,isValidConnection:pt,onError:mt,style:ht,id:gt,nodeDragThreshold:_t,connectionDragThreshold:vt,viewport:yt,onViewportChange:bt,width:q,height:xt,colorMode:St=`light`,debug:Ct,onScroll:wt,ariaLabelConfig:Tt,zIndexMode:Et=`basic`,...Dt},Ot){let kt=gt||`1`,At=hZ(St),jt=(0,s.useCallback)(e=>{e.currentTarget.scrollTo({top:0,left:0,behavior:`instant`}),wt?.(e)},[wt]);return(0,K.jsx)(`div`,{"data-testid":`rf__wrapper`,...Dt,onScroll:jt,style:{...ht,...G$},ref:Ot,className:sH([`react-flow`,i,At]),id:gt,role:`application`,children:(0,K.jsxs)(W$,{nodes:e,edges:t,width:q,height:xt,fitView:$e,fitViewOptions:et,minZoom:_e,maxZoom:ve,nodeOrigin:fe,nodeExtent:xe,zIndexMode:Et,children:[(0,K.jsx)(pZ,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:m,onConnectStart:h,onConnectEnd:g,onClickConnectStart:_,onClickConnectEnd:v,nodesDraggable:ce,autoPanOnNodeFocus:le,nodesConnectable:ue,nodesFocusable:de,edgesFocusable:pe,edgesReconnectable:me,elementsSelectable:he,elevateNodesOnSelect:at,elevateEdgesOnSelect:ot,minZoom:_e,maxZoom:ve,nodeExtent:xe,onNodesChange:Je,onEdgesChange:Ye,snapToGrid:ie,snapGrid:ae,connectionMode:R,translateExtent:ye,connectOnClick:tt,defaultEdgeOptions:it,fitView:$e,fitViewOptions:et,onNodesDelete:D,onEdgesDelete:O,onDelete:k,onNodeDragStart:w,onNodeDrag:T,onNodeDragStop:E,onSelectionDrag:M,onSelectionDragStart:j,onSelectionDragStop:N,onMove:d,onMoveStart:f,onMoveEnd:p,noPanClassName:Qe,nodeOrigin:fe,rfId:kt,autoPanOnConnect:ct,autoPanOnNodeDrag:lt,autoPanSpeed:dt,onError:mt,connectionRadius:ft,isValidConnection:pt,selectNodesOnDrag:se,nodeDragThreshold:_t,connectionDragThreshold:vt,onBeforeDelete:L,debug:Ct,ariaLabelConfig:Tt,zIndexMode:Et}),(0,K.jsx)(z$,{onInit:u,onNodeClick:c,onEdgeClick:l,onNodeMouseEnter:y,onNodeMouseMove:b,onNodeMouseLeave:x,onNodeContextMenu:S,onNodeDoubleClick:C,nodeTypes:a,edgeTypes:o,connectionLineType:z,connectionLineStyle:B,connectionLineComponent:V,connectionLineContainerStyle:H,selectionKeyCode:U,selectionOnDrag:te,selectionMode:W,deleteKeyCode:ee,multiSelectionKeyCode:re,panActivationKeyCode:ne,zoomActivationKeyCode:G,onlyRenderVisibleElements:oe,defaultViewport:ge,translateExtent:ye,minZoom:_e,maxZoom:ve,preventScrolling:be,zoomOnScroll:Ce,zoomOnPinch:we,zoomOnDoubleClick:Oe,panOnScroll:Te,panOnScrollSpeed:Ee,panOnScrollMode:De,panOnDrag:ke,autoPanOnSelection:ut,onPaneClick:Ae,onPaneMouseEnter:je,onPaneMouseMove:Me,onPaneMouseLeave:Ne,onPaneScroll:Pe,onPaneContextMenu:Fe,paneClickDistance:Ie,nodeClickDistance:Le,onSelectionContextMenu:P,onSelectionStart:F,onSelectionEnd:I,onReconnect:ze,onReconnectStart:Be,onReconnectEnd:Ve,onEdgeContextMenu:He,onEdgeDoubleClick:Ue,onEdgeMouseEnter:We,onEdgeMouseMove:Ge,onEdgeMouseLeave:Ke,reconnectRadius:qe,defaultMarkerColor:Se,noDragClassName:Xe,noWheelClassName:Ze,noPanClassName:Qe,rfId:kt,disableKeyboardA11y:st,nodeExtent:xe,viewport:yt,onViewportChange:bt,nodesDraggable:ce}),(0,K.jsx)(sZ,{onSelectionChange:A}),Re,(0,K.jsx)(tZ,{proOptions:rt,position:nt}),(0,K.jsx)(QX,{rfId:kt,disableKeyboardA11y:st})]})})}var q$=NZ(K$);Wq.error014();function J$({dimensions:e,lineWidth:t,variant:n,className:r}){return(0,K.jsx)(`path`,{strokeWidth:t,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:sH([`react-flow__background-pattern`,n,r])})}function Y$({radius:e,className:t}){return(0,K.jsx)(`circle`,{cx:e,cy:e,r:e,className:sH([`react-flow__background-pattern`,`dots`,t])})}var X$;(function(e){e.Lines=`lines`,e.Dots=`dots`,e.Cross=`cross`})(X$||={});var Z$={[X$.Dots]:1,[X$.Lines]:1,[X$.Cross]:6},Q$=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function $$({id:e,variant:t=X$.Dots,gap:n=20,size:r,lineWidth:i=1,offset:a=0,color:o,bgColor:c,style:l,className:u,patternClassName:d}){let f=(0,s.useRef)(null),{transform:p,patternId:m}=HX(Q$,RX),h=r||Z$[t],g=t===X$.Dots,_=t===X$.Cross,v=Array.isArray(n)?n:[n,n],y=[v[0]*p[2]||1,v[1]*p[2]||1],b=h*p[2],x=Array.isArray(a)?a:[a,a],S=_?[b,b]:y,C=[x[0]*p[2]||1+S[0]/2,x[1]*p[2]||1+S[1]/2],w=`${m}${e||``}`;return(0,K.jsxs)(`svg`,{className:sH([`react-flow__background`,u]),style:{...l,...KZ,"--xy-background-color-props":c,"--xy-background-pattern-color-props":o},ref:f,"data-testid":`rf__background`,children:[(0,K.jsx)(`pattern`,{id:w,x:p[0]%y[0],y:p[1]%y[1],width:y[0],height:y[1],patternUnits:`userSpaceOnUse`,patternTransform:`translate(-${C[0]},-${C[1]})`,children:g?(0,K.jsx)(Y$,{radius:b/2,className:d}):(0,K.jsx)(J$,{dimensions:S,lineWidth:i,variant:t,className:d})}),(0,K.jsx)(`rect`,{x:`0`,y:`0`,width:`100%`,height:`100%`,fill:`url(#${w})`})]})}$$.displayName=`Background`,(0,s.memo)($$);function e1(){return(0,K.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 32`,children:(0,K.jsx)(`path`,{d:`M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z`})})}function t1(){return(0,K.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 5`,children:(0,K.jsx)(`path`,{d:`M0 0h32v4.2H0z`})})}function n1(){return(0,K.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 30`,children:(0,K.jsx)(`path`,{d:`M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z`})})}function r1(){return(0,K.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 25 32`,children:(0,K.jsx)(`path`,{d:`M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z`})})}function i1(){return(0,K.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 25 32`,children:(0,K.jsx)(`path`,{d:`M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z`})})}function a1({children:e,className:t,...n}){return(0,K.jsx)(`button`,{type:`button`,className:sH([`react-flow__controls-button`,t]),...n,children:e})}var o1=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function s1({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:i,onZoomIn:a,onZoomOut:o,onFitView:s,onInteractiveChange:c,className:l,children:u,position:d=`bottom-left`,orientation:f=`vertical`,"aria-label":p}){let m=UX(),{isInteractive:h,minZoomReached:g,maxZoomReached:_,ariaLabelConfig:v}=HX(o1,RX),{zoomIn:y,zoomOut:b,fitView:x}=VZ();return(0,K.jsxs)($X,{className:sH([`react-flow__controls`,f===`horizontal`?`horizontal`:`vertical`,l]),position:d,style:e,"data-testid":`rf__controls`,"aria-label":p??v[`controls.ariaLabel`],children:[t&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(a1,{onClick:()=>{y(),a?.()},className:`react-flow__controls-zoomin`,title:v[`controls.zoomIn.ariaLabel`],"aria-label":v[`controls.zoomIn.ariaLabel`],disabled:_,children:(0,K.jsx)(e1,{})}),(0,K.jsx)(a1,{onClick:()=>{b(),o?.()},className:`react-flow__controls-zoomout`,title:v[`controls.zoomOut.ariaLabel`],"aria-label":v[`controls.zoomOut.ariaLabel`],disabled:g,children:(0,K.jsx)(t1,{})})]}),n&&(0,K.jsx)(a1,{className:`react-flow__controls-fitview`,onClick:()=>{x(i),s?.()},title:v[`controls.fitView.ariaLabel`],"aria-label":v[`controls.fitView.ariaLabel`],children:(0,K.jsx)(n1,{})}),r&&(0,K.jsx)(a1,{className:`react-flow__controls-interactive`,onClick:()=>{m.setState({nodesDraggable:!h,nodesConnectable:!h,elementsSelectable:!h}),c?.(!h)},title:v[`controls.interactive.ariaLabel`],"aria-label":v[`controls.interactive.ariaLabel`],children:h?(0,K.jsx)(i1,{}):(0,K.jsx)(r1,{})}),u]})}s1.displayName=`Controls`;var c1=(0,s.memo)(s1);function l1({id:e,x:t,y:n,width:r,height:i,style:a,color:o,strokeColor:s,strokeWidth:c,className:l,borderRadius:u,shapeRendering:d,selected:f,onClick:p}){let{background:m,backgroundColor:h}=a||{},g=o||m||h;return(0,K.jsx)(`rect`,{className:sH([`react-flow__minimap-node`,{selected:f},l]),x:t,y:n,rx:u,ry:u,width:r,height:i,style:{fill:g,stroke:s,strokeWidth:c},shapeRendering:d,onClick:p?t=>p(t,e):void 0})}var u1=(0,s.memo)(l1),d1=e=>e.nodes.map(e=>e.id),f1=e=>e instanceof Function?e:()=>e;function p1({nodeStrokeColor:e,nodeColor:t,nodeClassName:n=``,nodeBorderRadius:r=5,nodeStrokeWidth:i,nodeComponent:a=u1,onClick:o}){let s=HX(d1,RX),c=f1(t),l=f1(e),u=f1(n),d=typeof window>`u`||window.chrome?`crispEdges`:`geometricPrecision`;return(0,K.jsx)(K.Fragment,{children:s.map(e=>(0,K.jsx)(h1,{id:e,nodeColorFunc:c,nodeStrokeColorFunc:l,nodeClassNameFunc:u,nodeBorderRadius:r,nodeStrokeWidth:i,NodeComponent:a,onClick:o,shapeRendering:d},e))})}function m1({id:e,nodeColorFunc:t,nodeStrokeColorFunc:n,nodeClassNameFunc:r,nodeBorderRadius:i,nodeStrokeWidth:a,shapeRendering:o,NodeComponent:s,onClick:c}){let{node:l,x:u,y:d,width:f,height:p}=HX(t=>{let n=t.nodeLookup.get(e);if(!n)return{node:void 0,x:0,y:0,width:0,height:0};let r=n.internals.userNode,{x:i,y:a}=n.internals.positionAbsolute,{width:o,height:s}=zJ(r);return{node:r,x:i,y:a,width:o,height:s}},RX);return!l||l.hidden||!BJ(l)?null:(0,K.jsx)(s,{x:u,y:d,width:f,height:p,style:l.style,selected:!!l.selected,className:r(l),color:t(l),borderRadius:i,strokeColor:n(l),strokeWidth:a,shapeRendering:o,onClick:c,id:l.id})}var h1=(0,s.memo)(m1),g1=(0,s.memo)(p1),_1=200,v1=150,y1=e=>!e.hidden,b1=e=>{let t={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:t,boundingRect:e.nodeLookup.size>0?wJ(sJ(e.nodeLookup,{filter:y1}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},x1=(e,t)=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,S1=(e,t)=>x1(e.viewBB,t.viewBB)&&x1(e.boundingRect,t.boundingRect)&&e.rfId===t.rfId&&e.panZoom===t.panZoom&&e.translateExtent===t.translateExtent&&e.flowWidth===t.flowWidth&&e.flowHeight===t.flowHeight&&e.ariaLabelConfig===t.ariaLabelConfig,C1=`react-flow__minimap-desc`;function w1({style:e,className:t,nodeStrokeColor:n,nodeColor:r,nodeClassName:i=``,nodeBorderRadius:a=5,nodeStrokeWidth:o,nodeComponent:c,bgColor:l,maskColor:u,maskStrokeColor:d,maskStrokeWidth:f,position:p=`bottom-right`,onClick:m,onNodeClick:h,pannable:g=!1,zoomable:_=!1,ariaLabel:v,inversePan:y,zoomStep:b=1,offsetScale:x=5}){let S=UX(),C=(0,s.useRef)(null),{boundingRect:w,viewBB:T,rfId:E,panZoom:D,translateExtent:O,flowWidth:k,flowHeight:A,ariaLabelConfig:j}=HX(b1,S1),M=e?.width??_1,N=e?.height??v1,P=w.width/M,F=w.height/N,I=Math.max(P,F),L=I*M,R=I*N,z=x*I,B=w.x-(L-w.width)/2-z,V=w.y-(R-w.height)/2-z,H=L+z*2,ee=R+z*2,U=`${C1}-${E}`,te=(0,s.useRef)(0),W=(0,s.useRef)();te.current=I,(0,s.useEffect)(()=>{if(C.current&&D)return W.current=rX({domNode:C.current,panZoom:D,getTransform:()=>S.getState().transform,getViewScale:()=>te.current}),()=>{W.current?.destroy()}},[D]),(0,s.useEffect)(()=>{W.current?.update({translateExtent:O,width:k,height:A,inversePan:y,pannable:g,zoomStep:b,zoomable:_})},[g,_,y,b,O,k,A]);let ne=m?e=>{let[t,n]=W.current?.pointer(e)||[0,0];m(e,{x:t,y:n})}:void 0,re=h?(0,s.useCallback)((e,t)=>{let n=S.getState().nodeLookup.get(t).internals.userNode;h(e,n)},[]):void 0,G=v??j[`minimap.ariaLabel`];return(0,K.jsx)($X,{position:p,style:{...e,"--xy-minimap-background-color-props":typeof l==`string`?l:void 0,"--xy-minimap-mask-background-color-props":typeof u==`string`?u:void 0,"--xy-minimap-mask-stroke-color-props":typeof d==`string`?d:void 0,"--xy-minimap-mask-stroke-width-props":typeof f==`number`?f*I:void 0,"--xy-minimap-node-background-color-props":typeof r==`string`?r:void 0,"--xy-minimap-node-stroke-color-props":typeof n==`string`?n:void 0,"--xy-minimap-node-stroke-width-props":typeof o==`number`?o:void 0},className:sH([`react-flow__minimap`,t]),"data-testid":`rf__minimap`,children:(0,K.jsxs)(`svg`,{width:M,height:N,viewBox:`${B} ${V} ${H} ${ee}`,className:`react-flow__minimap-svg`,role:`img`,"aria-labelledby":U,ref:C,onClick:ne,children:[G&&(0,K.jsx)(`title`,{id:U,children:G}),(0,K.jsx)(g1,{onClick:re,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:a,nodeClassName:i,nodeStrokeWidth:o,nodeComponent:c}),(0,K.jsx)(`path`,{className:`react-flow__minimap-mask`,d:`M${B-z},${V-z}h${H+z*2}v${ee+z*2}h${-H-z*2}z - M${T.x},${T.y}h${T.width}v${T.height}h${-T.width}z`,fillRule:`evenodd`,pointerEvents:`none`})]})})}w1.displayName=`MiniMap`,(0,s.memo)(w1);var T1=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,E1={[vX.Line]:`right`,[vX.Handle]:`bottom-right`};function D1({nodeId:e,position:t,variant:n=vX.Handle,className:r,style:i=void 0,children:a,color:o,minWidth:c=10,minHeight:l=10,maxWidth:u=Number.MAX_VALUE,maxHeight:d=Number.MAX_VALUE,keepAspectRatio:f=!1,resizeDirection:p,autoScale:m=!0,shouldResize:h,onResizeStart:g,onResize:_,onResizeEnd:v}){let y=oQ(),b=typeof e==`string`?e:y,x=UX(),S=(0,s.useRef)(null),C=n===vX.Handle,w=HX((0,s.useCallback)(T1(C&&m),[C,m]),RX),T=(0,s.useRef)(null),E=t??E1[n];(0,s.useEffect)(()=>{if(!(!S.current||!b))return T.current||=kX({domNode:S.current,nodeId:b,getStoreItems:()=>{let{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:r,nodeOrigin:i,domNode:a}=x.getState();return{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:r,nodeOrigin:i,paneDomNode:a}},onChange:(e,t)=>{let{triggerNodeChanges:n,nodeLookup:r,parentLookup:i,nodeOrigin:a}=x.getState(),o=[],s={x:e.x,y:e.y},c=r.get(b);if(c&&c.expandParent&&c.parentId){let t=c.origin??a,n=e.width??c.measured.width??0,l=e.height??c.measured.height??0,u=IY([{id:c.id,parentId:c.parentId,rect:{width:n,height:l,...VJ({x:e.x??c.position.x,y:e.y??c.position.y},{width:n,height:l},c.parentId,r,t)}}],r,i,a);o.push(...u),s.x=e.x?Math.max(t[0]*n,e.x):void 0,s.y=e.y?Math.max(t[1]*l,e.y):void 0}if(s.x!==void 0&&s.y!==void 0){let e={id:b,type:`position`,position:{...s}};o.push(e)}if(e.width!==void 0&&e.height!==void 0){let t={id:b,type:`dimensions`,resizing:!0,setAttributes:p?p===`horizontal`?`width`:`height`:!0,dimensions:{width:e.width,height:e.height}};o.push(t)}for(let e of t){let t={...e,type:`position`};o.push(t)}n(o)},onEnd:({width:e,height:t})=>{let n={id:b,type:`dimensions`,resizing:!1,dimensions:{width:e,height:t}};x.getState().triggerNodeChanges([n])}}),T.current.update({controlPosition:E,boundaries:{minWidth:c,minHeight:l,maxWidth:u,maxHeight:d},keepAspectRatio:f,resizeDirection:p,onResizeStart:g,onResize:_,onResizeEnd:v,shouldResize:h}),()=>{T.current?.destroy()}},[E,c,l,u,d,f,g,_,v,h]);let D=E.split(`-`);return(0,K.jsx)(`div`,{className:sH([`react-flow__resize-control`,`nodrag`,...D,n,r]),ref:S,style:{...i,scale:w,...o&&{[C?`backgroundColor`:`borderColor`]:o}},children:a})}(0,s.memo)(D1);var O1=204,k1=96,A1=84,j1={input:Ne,runtime:se,model:fe,capabilities:Le,output:W};function M1(e,t=34){return e?e.length<=t?e:`${e.slice(0,t)}…`:`-`}function N1(e){if(!e)return`未绑定模型`;let t=e.split(`:`);return(t[0]===`model`&&t.length>=4?t.slice(2,-1).join(`:`):e).replace(/-(\d+)$/,`.$1`).replace(/^glm/i,`GLM`).replace(/^gpt/i,`GPT`).replace(/^qwen/i,`Qwen`).replace(/^deepseek/i,`DeepSeek`)}function P1(e){if(!e)return`刚刚`;let t=new Date(e);return Number.isNaN(t.getTime())?`未知时间`:new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(t)}function F1(e){return e===`COMPLETED`||e===`SUCCEEDED`?`成功`:e===`RUNNING`?`运行中`:e===`FAILED`?`失败`:e===`PAUSED`?`已暂停`:e||`未知`}function I1({data:e}){let t=j1[e.icon];return(0,K.jsxs)(`div`,{className:`pipeline-node-card`,title:e.fullTitle||e.title,children:[(0,K.jsx)(mQ,{id:`top`,type:`target`,position:$.Top}),(0,K.jsx)(mQ,{id:`top-out`,type:`source`,position:$.Top}),(0,K.jsx)(mQ,{id:`right`,type:`source`,position:$.Right}),(0,K.jsx)(mQ,{id:`right-in`,type:`target`,position:$.Right}),(0,K.jsx)(mQ,{id:`bottom`,type:`source`,position:$.Bottom}),(0,K.jsx)(mQ,{id:`bottom-in`,type:`target`,position:$.Bottom}),(0,K.jsx)(mQ,{id:`left`,type:`target`,position:$.Left}),(0,K.jsx)(mQ,{id:`left-out`,type:`source`,position:$.Left}),(0,K.jsx)(`span`,{className:`pipeline-node-icon`,children:(0,K.jsx)(t,{size:15})}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:e.title}),(0,K.jsx)(`small`,{children:e.subtitle})]})]})}var L1={pipeline:I1};function R1(e,t){let n=Math.max(560,t-96),r=Math.max(1,Math.min(n>=1120||n>=720?3:2,e.length)),i=r*O1+(r-1)*A1,a=Math.max(48,(Math.max(t,560)-i)/2),o=e.map((e,t)=>{let n=Math.floor(t/r),i=t%r,o=n%2==0?i:r-1-i;return{row:n,column:o,x:a+o*288,y:56+n*172}});return{nodes:e.map((e,t)=>({id:e.id,type:`pipeline`,position:{x:o[t].x,y:o[t].y},data:{title:e.title,subtitle:e.subtitle,icon:e.icon,fullTitle:e.fullTitle||e.title},style:{width:O1,height:k1}})),edges:e.slice(1).map((t,n)=>{let r=o[n],i=o[n+1],a=r.row!==i.row,s=i.column>r.column;return{id:`edge-${e[n].id}-${t.id}`,source:e[n].id,target:t.id,sourceHandle:a?`bottom`:s?`right`:`left-out`,targetHandle:a?`top`:s?`left`:`right-in`,type:`smoothstep`,label:t.incomingLabel,markerEnd:{type:$q.ArrowClosed,width:14,height:14}}})}}function z1(){let e=(0,s.useRef)(null),[t,n]=(0,s.useState)(960);return(0,s.useLayoutEffect)(()=>{let t=e.current;if(!t)return;let r=e=>{e>0&&n(e)};r(t.getBoundingClientRect().width);let i=new ResizeObserver(e=>{r(e[0]?.contentRect.width||0)});return i.observe(t),()=>i.disconnect()},[]),{containerRef:e,width:t}}function B1({steps:e}){let{containerRef:t,width:n}=z1(),[r,i]=(0,s.useState)(null),a=(0,s.useMemo)(()=>R1(e,n),[e,n]);return(0,s.useEffect)(()=>{r&&requestAnimationFrame(()=>r.fitView({padding:.16,duration:260}))},[a,r]),(0,K.jsx)(`div`,{ref:t,className:`orchestration-graph`,role:`application`,"aria-label":`执行链路画布`,"data-layout":`adaptive-serpentine`,"data-background":`plain`,children:(0,K.jsx)(q$,{nodes:a.nodes,edges:a.edges,nodeTypes:L1,onInit:i,fitView:!0,fitViewOptions:{padding:.16},minZoom:.55,maxZoom:1.35,nodesConnectable:!1,elementsSelectable:!0,panOnScroll:!0,selectionOnDrag:!1,proOptions:{hideAttribution:!0},children:(0,K.jsx)(c1,{showFitView:!1,position:`bottom-right`,children:(0,K.jsx)(a1,{"aria-label":`适应画布`,title:`适应画布`,onClick:()=>r?.fitView({padding:.16,duration:260}),children:(0,K.jsx)(Ae,{size:14})})})})})}function V1({currentAgentId:e,agents:t,onSelectAgent:n,onCreate:r}){let[i,a]=(0,s.useState)(null),[o,c]=(0,s.useState)([]),[l,u]=(0,s.useState)([]);(0,s.useEffect)(()=>{Promise.all([g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()),g(`/api/v1/catalog/models`).then(e=>e.json()).catch(()=>null)]).then(([e,t])=>{let n=e.items||[],r=t?.items||[];u([...n.filter(e=>e.kind!==`model`||e.source===`local`||e.source===`market`),...r])}).catch(()=>{})},[]),(0,s.useEffect)(()=>{if(!e){a(null),c([]);return}let t=!1;return Promise.all([g(`/api/v1/agents/${encodeURIComponent(e)}`).then(e=>e.json()),g(`/api/v1/runs?limit=200`).then(e=>e.json()).catch(()=>({items:[]}))]).then(([n,r])=>{t||(a(n.draft||null),c((r.items||[]).filter(t=>t.agentId===e)))}).catch(()=>{t||(a(null),c([]))}),()=>{t=!0}},[e]);let d=i?.spec?.bindings||{},f=i?.spec?.runtime?.type||i?.metadata?.labels?.[`agentkit.ksyun.com/framework`]||`runtime`,p=i?.spec?.execution?.strategy||`direct`,m=l.find(e=>e.resourceId===d.modelProfileId),h=(d.tools?.length||0)+(d.mcpServers?.length||0)+(d.skills?.length||0),_=o.slice(-5).reverse(),v=(0,s.useMemo)(()=>{let e=f===`codex`?`Codex Runtime`:f===`adk`?`ADK Runtime`:f===`langgraph`?`LangGraph Runtime`:`${f} Runtime`,t=m?.displayName||m?.name||N1(d.modelProfileId),n=[{id:`input`,icon:`input`,title:`任务输入`,subtitle:`用户消息与会话上下文`},{id:`runtime`,icon:`runtime`,title:e,fullTitle:`${f} RuntimeAdapter`,subtitle:`${p} · 本地执行`,incomingLabel:`调度`},{id:`model`,icon:`model`,title:M1(t,24),fullTitle:d.modelProfileId?`${t} · ${d.modelProfileId}`:t,subtitle:`模型配置`,incomingLabel:`调用模型`}];return h>0&&n.push({id:`capabilities`,icon:`capabilities`,title:`${h} 个能力绑定`,subtitle:`${d.tools?.length||0} Tool · ${d.mcpServers?.length||0} MCP · ${d.skills?.length||0} Skill`,incomingLabel:`加载能力`}),n.push({id:`output`,icon:`output`,title:`结构化输出`,subtitle:`返回会话并写入 Trace`,incomingLabel:`写回结果`}),n},[d,h,m?.displayName,f,p]);return(0,K.jsxs)(`div`,{className:`page-container orchestration-page`,"data-layout":`document`,children:[!i&&(0,K.jsx)(gd,{children:(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:r,children:[(0,K.jsx)(qe,{size:15}),(0,K.jsx)(`span`,{children:`创建 Agent`})]})}),i?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`section`,{className:`stat-strip compact-summary`,"aria-label":`编排概览`,children:[(0,K.jsxs)(`div`,{title:i.metadata?.id,children:[(0,K.jsx)(`span`,{children:`Revision`}),(0,K.jsxs)(`strong`,{children:[`r`,i.metadata?.revision||1]})]}),(0,K.jsxs)(`div`,{title:`${p} · Edge`,children:[(0,K.jsx)(`span`,{children:`Runtime`}),(0,K.jsx)(`strong`,{children:f})]}),(0,K.jsxs)(`div`,{title:`${d.tools?.length||0} Tool · ${d.mcpServers?.length||0} MCP · ${d.skills?.length||0} Skill`,children:[(0,K.jsx)(`span`,{children:`能力绑定`}),(0,K.jsx)(`strong`,{children:h})]}),(0,K.jsxs)(`div`,{className:`emphasis`,children:[(0,K.jsx)(`span`,{children:`最近调度`}),(0,K.jsx)(`strong`,{children:_[0]?F1(_[0].status):`暂无`})]})]}),(0,K.jsxs)(`div`,{className:`orchestration-workbench`,children:[(0,K.jsxs)(`section`,{className:`orchestration-canvas block`,children:[(0,K.jsxs)(`div`,{className:`section-heading`,children:[(0,K.jsx)(_t,{name:i.metadata?.name||`Agent`,appearance:i.metadata?.appearance,size:`md`}),(0,K.jsx)(`div`,{className:`section-heading-copy`,children:(0,K.jsx)(`h2`,{title:i.metadata?.id,children:i.metadata?.name})})]}),(0,K.jsx)(B1,{steps:v})]}),(0,K.jsxs)(`aside`,{className:`orchestration-aside block`,children:[(0,K.jsxs)(`section`,{className:`orchestration-aside-section`,children:[(0,K.jsx)(`div`,{className:`aside-title`,children:`路由与约束`}),(0,K.jsxs)(`dl`,{children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Revision`}),(0,K.jsxs)(`dd`,{children:[`r`,i.metadata?.revision]})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`执行位置`}),(0,K.jsx)(`dd`,{children:`Edge · Local`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Runtime`}),(0,K.jsx)(`dd`,{children:f})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`策略`}),(0,K.jsx)(`dd`,{children:p})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`最大步骤`}),(0,K.jsx)(`dd`,{children:i.spec?.execution?.maxSteps||`-`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`云端`}),(0,K.jsx)(`dd`,{children:`未连接`})]})]})]}),(0,K.jsx)(`div`,{className:`aside-divider`}),(0,K.jsxs)(`section`,{className:`orchestration-aside-section`,children:[(0,K.jsx)(`div`,{className:`aside-title`,children:`最近调度`}),(0,K.jsx)(`div`,{className:`dispatch-log`,children:_.length===0?(0,K.jsx)(`div`,{className:`dispatch-log-empty`,children:`当前 Agent 还没有运行记录`}):_.map(e=>(0,K.jsxs)(`div`,{className:`dispatch-log-row`,children:[(0,K.jsx)(`span`,{className:`dispatch-status ${String(e.status).toLowerCase()}`}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:M1(e.input||`运行`)}),(0,K.jsxs)(`small`,{children:[P1(e.startedAt),` · `,F1(e.status)]})]})]},e.id))})]})]})]})]}):(0,K.jsxs)(`div`,{className:`orchestration-empty empty-state block`,children:[(0,K.jsx)(`span`,{className:`empty-icon`,children:(0,K.jsx)(Le,{size:24})}),(0,K.jsx)(`h2`,{children:`先选择或创建一个 Agent`}),(0,K.jsx)(`p`,{children:`编排视图会读取 Agent Revision、RuntimeRef 和能力绑定生成真实执行链路。`})]})]})}var H1=new Set([`QUEUED`,`RUNNING`]);function U1(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(t)}function W1(e){return e==null?`-`:e<1e3?`${e} ms`:`${(e/1e3).toFixed(2)} s`}function G1(e){if(!e.completedAt)return H1.has(e.status)?`进行中`:`-`;let t=new Date(e.completedAt).getTime()-new Date(e.createdAt).getTime();return Number.isFinite(t)&&t>=0?W1(t):`-`}function K1(e){return e===`PASSED`||e===`SUCCEEDED`?`success`:H1.has(e)?`info`:e===`CANCELLED`||e===`INTERRUPTED`?`warning`:`danger`}function q1(e){return[`ERROR`,`CANCELLED`,`UNAVAILABLE`].includes(e.targetRun.status)?e.targetRun.status:e.metrics.every(e=>!e.required||e.status===`PASS`)?`PASSED`:`FAILED`}async function J1(e,t){try{let n=await e.json();return n?.error?.message||n?.detail?.message||t}catch{return t}}var Y1=[{id:`response_contract@v1`,label:`响应契约`},{id:`runtime_budget@v1`,label:`运行预算`},{id:`tool_trajectory@v1`,label:`工具轨迹`},{id:`reference_match@v1`,label:`参考答案匹配`}],X1=Y1.slice(0,3).map(e=>e.id);function Z1({refreshTick:e,onOpenRun:t=e=>window.history.pushState(null,``,`#/evaluations/${encodeURIComponent(e)}`)}){let n=(0,s.useRef)(null),r=(0,s.useRef)(0),[i,a]=(0,s.useState)([]),[o,c]=(0,s.useState)({builds:[]}),[l,u]=(0,s.useState)([]),[d,f]=(0,s.useState)(!0),[p,m]=(0,s.useState)(``),[h,_]=(0,s.useState)(!1),[v,y]=(0,s.useState)(!1),[b,x]=(0,s.useState)(``),[S,C]=(0,s.useState)(``),[w,T]=(0,s.useState)(!1),[E,D]=(0,s.useState)(``),[k,A]=(0,s.useState)(`a2a`),[j,M]=(0,s.useState)(``),[N,P]=(0,s.useState)(``),[F,I]=(0,s.useState)(120),[L,R]=(0,s.useState)(!1),[z,B]=(0,s.useState)(()=>[...X1]),V=(0,s.useCallback)(async()=>{let e=++r.current;n.current?.abort();let t=new AbortController;n.current=t;try{let n=await g(`/api/v1/evaluation-runs`,{signal:t.signal});if(!n.ok)throw Error(await J1(n,`评测任务加载失败`));let i=await n.json();e===r.current&&(a(i.items||[]),m(``))}catch(n){if(t.signal.aborted)return;e===r.current&&m(n instanceof Error?n.message:`评测任务加载失败`)}finally{e===r.current&&f(!1)}},[]),H=(0,s.useCallback)(async()=>{try{let[e,t]=await Promise.all([g(`/api/v1/evaluation-targets`),g(`/api/v1/agents`)]);if(!e.ok)return;let[n,r]=await Promise.all([e.json(),t.ok?t.json():Promise.resolve({items:[]})]);c({builds:n.builds||[]}),u(r.items||[])}catch{}},[]);(0,s.useEffect)(()=>{f(!0),V(),H()},[H,V,e]),(0,s.useEffect)(()=>{if(!i.some(e=>H1.has(e.status)))return;let e=()=>{document.visibilityState===`visible`&&V()},t=window.setInterval(e,1e3);return document.addEventListener(`visibilitychange`,e),()=>{window.clearInterval(t),document.removeEventListener(`visibilitychange`,e)}},[V,i]),(0,s.useEffect)(()=>()=>n.current?.abort(),[]);function ee(e){if(A(e),e!==`studio_build`){P(``);return}let t=l.find(e=>o.builds.some(t=>t.agentId===e.metadata.id))?.metadata.id||o.builds[0]?.agentId||``;M(t),P(o.builds.find(e=>e.agentId===t)?.id||``)}let U=(0,s.useMemo)(()=>o.builds.filter(e=>e.agentId===j),[o.builds,j]);(0,s.useEffect)(()=>{k===`studio_build`&&M(e=>e&&o.builds.some(t=>t.agentId===e)?e:l.find(e=>o.builds.some(t=>t.agentId===e.metadata.id))?.metadata.id||o.builds[0]?.agentId||``)},[l,o.builds,k]),(0,s.useEffect)(()=>{k===`studio_build`&&P(e=>U.some(t=>t.id===e)?e:U[0]?.id||``)},[U,k]);async function te(e){e.preventDefault(),y(!0),x(``);try{let e=await g(`/api/v1/evaluations`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":`evaluation-${Date.now()}`},body:JSON.stringify({evalsetFile:S.trim(),target:{kind:k,locator:N.trim()},config:{timeoutSeconds:F,failFast:L,dataPolicy:`local_only`,evaluators:z}})});if(!e.ok)throw Error(await J1(e,`评测任务创建失败`));_(!1),x(`评测任务已创建`),Y(`评测任务已创建`,S.trim()),await V()}catch(e){Y(`评测任务创建失败`,e instanceof Error?e.message:`请稍后重试`,`error`)}finally{y(!1)}}async function W(e){T(!0),D(``);let t=new FormData;t.append(`file`,e);try{let e=await g(`/api/v1/evaluation-files`,{method:`POST`,body:t});if(!e.ok)throw Error(await J1(e,`EvalSet 文件导入失败`));let n=await e.json();C(n.path||``)}catch(e){D(e instanceof Error?e.message:`EvalSet 文件导入失败`)}finally{T(!1)}}let ne=(0,s.useMemo)(()=>[{id:`evalset`,header:`EvalSet / Run`,minWidth:260,cell:e=>(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`strong`,{children:e.evalset.name||`未命名 EvalSet`}),(0,K.jsx)(`span`,{className:`resource-origin mono`,children:e.id})]})},{id:`target`,header:`Target`,minWidth:180,cell:e=>(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{children:e.target.label||e.target.kind||`-`}),(0,K.jsx)(`span`,{className:`resource-origin mono`,children:e.target.kind||`-`})]})},{id:`status`,header:`状态`,width:120,cell:e=>(0,K.jsx)(`span`,{className:`status-badge ${K1(e.status)}`,children:e.status})},{id:`progress`,header:`进度 / Case`,minWidth:150,cell:e=>e.summary?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`strong`,{children:[e.summary.passedCases,` / `,e.summary.totalCases]}),(0,K.jsx)(`span`,{className:`resource-origin`,children:`通过`})]}):e.progress?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`strong`,{children:[e.progress.current,` / `,e.progress.total]}),(0,K.jsx)(`span`,{className:`resource-origin`,children:e.progress.caseId||`执行中`})]}):(0,K.jsx)(`span`,{children:`等待开始`})},{id:`createdAt`,header:`创建时间`,minWidth:150,cell:e=>U1(e.createdAt)},{id:`duration`,header:`耗时`,width:100,cell:G1}],[]),re=i.filter(e=>H1.has(e.status)).length,G=i.filter(e=>e.hasReport).filter(e=>e.status===`PASSED`).length,ie=i.filter(e=>[`FAILED`,`ERROR`,`INTERRUPTED`].includes(e.status)).length,ae=k===`a2a`?`Agent 地址`:k===`local_source`?`Agent 源码目录`:`Build`;return(0,K.jsxs)(`div`,{className:`page-container evaluation-page`,"data-layout":`data`,"data-scroll-mode":`data`,children:[(0,K.jsx)(gd,{children:(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>_(!0),children:[(0,K.jsx)(Ke,{size:15}),(0,K.jsx)(`span`,{children:`新建评测`})]})}),b&&(0,K.jsx)(`p`,{className:`sr-only`,role:`status`,children:b}),(0,K.jsxs)(`section`,{className:`evaluation-page__metrics`,"aria-label":`评测汇总`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`全部`}),(0,K.jsx)(`strong`,{children:i.length})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`运行中`}),(0,K.jsx)(`strong`,{children:re})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`已通过`}),(0,K.jsx)(`strong`,{children:G})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`异常`}),(0,K.jsx)(`strong`,{children:ie})]})]}),(0,K.jsxs)(`section`,{className:`evaluation-page__run-list`,"aria-label":`评测运行`,children:[(0,K.jsx)(`div`,{className:`evaluation-page__panel-header`,children:(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`评测运行`}),(0,K.jsxs)(`span`,{children:[i.length,` 个任务`]})]})}),(0,K.jsx)(dm,{columns:ne,data:i,getRowId:e=>e.id,caption:`评测运行列表`,minWidth:980,loading:d,error:p,onRetry:()=>void V(),onRowActivate:e=>t(e.id),rowAriaLabel:e=>`打开评测 ${e.evalset.name||e.id}`,empty:{icon:(0,K.jsx)(O,{size:22}),title:`还没有评测任务`,description:`创建评测后即可在这里查看结果。`}})]}),h&&(0,K.jsx)(DD,{title:`新建评测`,subtitle:`选择 EvalSet、Target 和评估器。任务创建后将在后台执行。`,wide:!0,closeDisabled:v,onClose:()=>_(!1),footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`drawer-footer-spacer`}),(0,K.jsx)(`button`,{className:`button tertiary`,type:`button`,onClick:()=>_(!1),disabled:v,children:`取消`}),(0,K.jsx)(`button`,{className:`button accent`,type:`submit`,form:`evaluation-create-form`,disabled:v||w||!S.trim()||!N.trim()||!z.length,children:v?`正在创建`:`开始评测`})]}),children:(0,K.jsxs)(`form`,{id:`evaluation-create-form`,className:`evaluation-page__create form-grid two-columns`,onSubmit:te,children:[(0,K.jsxs)(X,{className:`evaluation-page__field--wide`,label:`EvalSet 文件`,htmlFor:`evaluation-evalset`,requirement:`required`,children:[(0,K.jsxs)(`div`,{className:`evaluation-page__evalset-picker`,children:[(0,K.jsx)(`input`,{id:`evaluation-evalset`,className:`sr-only`,type:`file`,accept:`.yaml,.yml,.json,application/json,application/yaml,text/yaml`,"aria-label":`选择 EvalSet 文件`,disabled:w,onChange:e=>{let t=e.target.files?.[0];e.target.value=``,t&&W(t)}}),(0,K.jsxs)(`label`,{className:`button secondary`,htmlFor:`evaluation-evalset`,children:[(0,K.jsx)(be,{size:15}),(0,K.jsx)(`span`,{children:w?`正在导入`:`选择文件`})]}),(0,K.jsx)(`span`,{className:`evaluation-page__evalset-path`,title:S,children:S||`尚未选择 EvalSet`})]}),E&&(0,K.jsx)(`p`,{className:`studio-field-error`,role:`alert`,children:E})]}),(0,K.jsx)(X,{label:`Target 类型`,requirement:`required`,children:(0,K.jsx)(kh,{ariaLabel:`Target 类型`,value:k,options:[{value:`a2a`,label:`A2A Agent`},{value:`local_source`,label:`本地源码`},{value:`studio_build`,label:`Studio Build`}],onValueChange:e=>ee(e)})}),k===`studio_build`&&(0,K.jsx)(X,{label:`Agent`,htmlFor:`evaluation-agent`,requirement:`required`,children:(0,K.jsx)(kh,{id:`evaluation-agent`,ariaLabel:`Studio Agent`,value:j,placeholder:`请选择 Agent`,options:l.map(e=>({value:e.metadata.id,label:e.metadata.name,description:o.builds.some(t=>t.agentId===e.metadata.id)?e.metadata.id:`${e.metadata.id} · 需先构建`,disabled:!o.builds.some(t=>t.agentId===e.metadata.id)})),disabled:!l.some(e=>o.builds.some(t=>t.agentId===e.metadata.id)),onValueChange:M})}),(0,K.jsx)(X,{label:ae,htmlFor:`evaluation-locator`,requirement:`required`,children:k===`studio_build`?(0,K.jsx)(kh,{id:`evaluation-locator`,ariaLabel:`Studio Build`,value:N,placeholder:`暂无成功 Build`,options:U.map(e=>({value:e.id,label:e.id,description:e.runtime})),disabled:!U.length,onValueChange:P}):(0,K.jsx)(`input`,{id:`evaluation-locator`,value:N,onChange:e=>P(e.target.value),required:!0,placeholder:k===`a2a`?`https://agent.example.test/a2a`:`.`})}),(0,K.jsx)(X,{label:`超时(秒)`,htmlFor:`evaluation-timeout`,requirement:`required`,children:(0,K.jsx)(`input`,{id:`evaluation-timeout`,type:`number`,min:1,max:3600,value:F,onChange:e=>I(Number(e.target.value)),required:!0})}),(0,K.jsx)(X,{label:`运行策略`,children:(0,K.jsxs)(`label`,{className:`checkbox-row evaluation-page__fail-fast`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:L,onChange:e=>R(e.target.checked)}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:`Fail fast`}),(0,K.jsx)(`small`,{children:`首个失败 Case 后停止`})]})]})}),(0,K.jsxs)(X,{className:`evaluation-page__field--wide`,label:`评估器`,requirement:`required`,children:[(0,K.jsx)(`div`,{className:`evaluation-page__evaluator-options`,role:`group`,"aria-label":`评估器`,children:Y1.map(e=>(0,K.jsxs)(`label`,{className:`checkbox-row`,children:[(0,K.jsx)(`input`,{type:`checkbox`,"aria-label":e.label,checked:z.includes(e.id),onChange:t=>B(n=>t.target.checked?[...n,e.id]:n.filter(t=>t!==e.id))}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:e.label}),(0,K.jsx)(`small`,{children:e.id})]})]},e.id))}),!z.length&&(0,K.jsx)(`p`,{className:`studio-field-error`,role:`alert`,children:`至少选择一个评估器`})]})]})})]})}function Q1(e){return typeof e==`string`?e:e==null?`-`:JSON.stringify(e,null,2)}function $1(e,t,n,r){let i=n.slice(0,t).filter(t=>t.type===e.type).length;return r.filter(t=>t.evidence?.assertion===e.type)[i]}function e0({runId:e,onBack:t}){let n=(0,s.useRef)(null),[r,i]=(0,s.useState)(null),[a,o]=(0,s.useState)(``),[c,l]=(0,s.useState)(!0),[u,d]=(0,s.useState)(``),[f,p]=(0,s.useState)(!1),m=(0,s.useCallback)(async()=>{n.current?.abort();let t=new AbortController;n.current=t;try{let n=await g(`/api/v1/evaluation-runs/${encodeURIComponent(e)}`,{signal:t.signal});if(!n.ok)throw Error(await J1(n,`评测详情加载失败`));let r=await n.json();i(r),o(e=>r.report?.caseRuns.some(t=>t.caseId===e)?e:r.report?.caseRuns[0]?.caseId||``),d(``)}catch(e){if(t.signal.aborted)return;d(e instanceof Error?e.message:`评测详情加载失败`)}finally{t.signal.aborted||l(!1)}},[e]);(0,s.useEffect)(()=>(l(!0),m(),()=>n.current?.abort()),[m]),(0,s.useEffect)(()=>{if(!r||!H1.has(r.status))return;let e=()=>{document.visibilityState===`visible`&&m()},t=window.setInterval(e,1e3);return document.addEventListener(`visibilitychange`,e),()=>{window.clearInterval(t),document.removeEventListener(`visibilitychange`,e)}},[m,r]);let h=(0,s.useMemo)(()=>r?.report?.caseRuns.find(e=>e.caseId===a)||null,[a,r]),_=(0,s.useMemo)(()=>new Map((r?.report?.spec.evalset.cases||[]).map(e=>[e.id,e])),[r]),v=h?_.get(h.caseId):void 0;async function y(){if(!(!r||!H1.has(r.status)||f)){p(!0);try{let e=await g(`/api/v1/operations/${encodeURIComponent(r.operationId)}:cancel`,{method:`POST`});if(!e.ok)throw Error(await J1(e,`取消评测失败`));Y(`已提交取消请求`,r.evalset.name||r.id),await m()}catch(e){Y(`取消评测失败`,e instanceof Error?e.message:`请稍后重试`,`error`)}finally{p(!1)}}}return(0,K.jsxs)(`div`,{className:`page-container evaluation-page evaluation-detail-page`,"data-layout":`data`,"data-scroll-mode":`workbench`,children:[(0,K.jsxs)(`header`,{className:`page-header`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h1`,{children:r?.evalset.name||`评测详情`}),(0,K.jsx)(`p`,{className:`mono`,children:e})]}),(0,K.jsxs)(`div`,{className:`header-actions`,children:[(0,K.jsxs)(`button`,{className:`button tertiary`,type:`button`,onClick:t,children:[(0,K.jsx)(A,{size:15}),(0,K.jsx)(`span`,{children:`返回评测列表`})]}),(0,K.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:()=>void m(),children:[(0,K.jsx)(Je,{size:15}),(0,K.jsx)(`span`,{children:`刷新`})]}),r&&H1.has(r.status)&&(0,K.jsxs)(`button`,{className:`button danger`,type:`button`,onClick:()=>void y(),disabled:f,children:[(0,K.jsx)(it,{size:14}),(0,K.jsx)(`span`,{children:f?`正在取消`:`取消评测`})]})]})]}),c&&!r?(0,K.jsxs)(`div`,{className:`evaluation-page__detail-empty`,children:[(0,K.jsx)(O,{size:22}),(0,K.jsx)(`strong`,{children:`正在加载评测详情`})]}):u&&!r?(0,K.jsxs)(`div`,{className:`evaluation-page__detail-empty`,role:`alert`,children:[(0,K.jsx)(`strong`,{children:`评测详情加载失败`}),(0,K.jsx)(`span`,{children:u}),(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:()=>void m(),children:`重试`})]}):r?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`section`,{className:`evaluation-detail-page__overview`,"aria-label":`评测运行概览`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`状态`}),(0,K.jsx)(`strong`,{children:(0,K.jsx)(`span`,{className:`status-badge ${K1(r.status)}`,children:r.status})}),(0,K.jsx)(`small`,{children:r.error?.message||`任务状态`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`进度`}),(0,K.jsx)(`strong`,{children:r.progress?`${r.progress.current} / ${r.progress.total}`:r.summary?`${r.summary.passedCases} / ${r.summary.totalCases}`:`等待开始`}),(0,K.jsx)(`small`,{children:r.progress?.caseId||(r.hasReport?`通过 Case`:`尚未执行 Case`)})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Target`}),(0,K.jsx)(`strong`,{children:r.target.label||r.target.kind||`-`}),(0,K.jsx)(`small`,{children:r.target.kind||`-`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`耗时`}),(0,K.jsx)(`strong`,{children:G1(r)}),(0,K.jsx)(`small`,{children:U1(r.createdAt)})]})]}),!r.report&&(0,K.jsxs)(`section`,{className:`evaluation-detail-page__pending`,children:[(0,K.jsx)(O,{size:20}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:H1.has(r.status)?`评测正在后台执行`:`该任务没有可用报告`}),(0,K.jsx)(`span`,{children:r.progress?.caseId?`当前 Case:${r.progress.caseId}`:r.error?.message||`等待运行状态更新。`})]})]}),r.report&&(0,K.jsxs)(`section`,{className:`evaluation-detail-page__report`,children:[(0,K.jsxs)(`div`,{className:`evaluation-page__panel-header`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`评测报告`}),(0,K.jsxs)(`span`,{children:[r.report.caseRuns.length,` 个 Case`]})]}),(0,K.jsx)(`span`,{className:`status-badge ${K1(r.report.status)}`,children:r.report.status})]}),(0,K.jsxs)(`dl`,{className:`evaluation-page__snapshot`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Target`}),(0,K.jsx)(`dd`,{children:r.report.spec.target.kind})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Runtime`}),(0,K.jsx)(`dd`,{children:r.report.spec.target.runtime||`-`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Revision Digest`}),(0,K.jsx)(`dd`,{className:`mono`,children:r.report.spec.target.revisionDigest})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Entrypoint`}),(0,K.jsx)(`dd`,{className:`mono`,children:r.report.spec.target.entrypoint})]})]}),(0,K.jsxs)(`section`,{className:`evaluation-page__dataset`,"aria-labelledby":`evaluation-dataset-heading`,children:[(0,K.jsxs)(`div`,{className:`evaluation-page__dataset-heading`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h2`,{id:`evaluation-dataset-heading`,children:`数据集快照`}),typeof r.report.spec.evalset.metadata?.description==`string`&&(0,K.jsx)(`p`,{children:r.report.spec.evalset.metadata.description})]}),(0,K.jsx)(`span`,{children:r.report.spec.evalset.schemaVersion||`ksadk.eval/v1`})]}),(0,K.jsxs)(`dl`,{className:`evaluation-page__dataset-summary`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`名称`}),(0,K.jsx)(`dd`,{children:r.report.spec.evalset.name})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Case`}),(0,K.jsx)(`dd`,{children:r.report.spec.evalset.cases?.length??r.report.caseRuns.length})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`来源格式`}),(0,K.jsx)(`dd`,{children:r.report.spec.evalset.sourceFormat||`-`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:`Content Digest`}),(0,K.jsx)(`dd`,{className:`mono`,children:r.report.spec.evalset.contentDigest||`-`})]})]})]}),(0,K.jsxs)(`div`,{className:`evaluation-page__case-layout`,children:[(0,K.jsx)(`div`,{className:`evaluation-page__case-list`,"aria-label":`Case 列表`,children:r.report.caseRuns.map(e=>{let t=q1(e),n=_.get(e.caseId)?.turns.at(-1)?.input;return(0,K.jsxs)(`button`,{type:`button`,className:e.caseId===a?`active`:``,onClick:()=>o(e.caseId),children:[(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:e.caseId}),(0,K.jsx)(`small`,{className:`evaluation-page__case-preview`,children:n||`Attempt ${e.attempt}`})]}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`span`,{className:`status-badge ${K1(t)}`,children:t}),(0,K.jsx)(`small`,{children:W1(e.targetRun.durationMs)})]})]},e.caseId)})}),(0,K.jsx)(`div`,{className:`evaluation-page__case-detail`,children:h?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`section`,{children:[(0,K.jsx)(`h3`,{children:`输入与预期`}),v?(0,K.jsx)(`div`,{className:`evaluation-page__turns`,children:v.turns.map((e,t)=>(0,K.jsxs)(`article`,{children:[(0,K.jsxs)(`strong`,{children:[`Turn `,t+1]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`输入`}),(0,K.jsx)(`pre`,{children:e.input})]}),e.expectedOutput!==void 0&&e.expectedOutput!==null&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`期望输出`}),(0,K.jsx)(`pre`,{children:e.expectedOutput})]}),!!e.expectedTools?.length&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`期望工具`}),(0,K.jsx)(`div`,{className:`evaluation-page__expected-tools`,children:e.expectedTools.map((e,n)=>(0,K.jsx)(`code`,{children:String(e.name||Q1(e))},`${t}-${n}`))})]})]},`${v.id}-turn-${t}`))}):(0,K.jsx)(`p`,{className:`evaluation-page__muted`,children:`该报告没有保存 Case 输入快照。`})]}),!!v?.assertions?.length&&(0,K.jsxs)(`section`,{children:[(0,K.jsx)(`h3`,{children:`断言与评估结果`}),(0,K.jsx)(`div`,{className:`evaluation-page__assertions`,children:v.assertions.map((e,t,n)=>{let r=$1(e,t,n,h.metrics);return(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:e.type}),(0,K.jsx)(`small`,{children:e.required===!1?`可选`:`必需`})]}),(0,K.jsx)(`code`,{children:Q1(e.value)}),(0,K.jsx)(`span`,{className:`status-badge ${K1(r?.status===`PASS`?`PASSED`:r?.status||`UNAVAILABLE`)}`,children:r?.status||`-`})]},`${e.type}-${t}`)})})]}),(0,K.jsxs)(`section`,{children:[(0,K.jsxs)(`div`,{className:`evaluation-page__section-title`,children:[(0,K.jsx)(`h3`,{children:`Agent 输出`}),(0,K.jsxs)(`span`,{children:[W1(h.targetRun.durationMs),` · `,h.targetRun.usage?.reported?`${h.targetRun.usage.totalTokens||0} Tokens`:`Token 未上报`]})]}),(0,K.jsx)(`pre`,{children:h.targetRun.output||h.targetRun.errorMessage||`无输出`})]}),(0,K.jsxs)(`section`,{children:[(0,K.jsx)(`h3`,{children:`评估指标`}),(0,K.jsx)(`div`,{className:`evaluation-page__evidence`,children:h.metrics.map(e=>(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`strong`,{children:[e.name,`@`,e.version||`v1`]}),(0,K.jsx)(`span`,{className:`status-badge ${K1(e.status===`PASS`?`PASSED`:e.status)}`,children:e.status}),(0,K.jsx)(`span`,{children:e.score??`-`})]},`${e.name}-${e.version||`v1`}-${e.status}`))})]}),(0,K.jsx)(`section`,{className:`evaluation-page__case-evidence`,children:(0,K.jsxs)(`details`,{children:[(0,K.jsx)(`summary`,{children:`执行证据`}),(0,K.jsx)(`h4`,{children:`TraceRef`}),(0,K.jsx)(`pre`,{children:h.targetRun.traceRef?JSON.stringify(h.targetRun.traceRef,null,2):`未上报 TraceRef`}),!!v&&Object.keys(v.metadata||{}).length>0&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`h4`,{children:`Case Metadata`}),(0,K.jsx)(`pre`,{children:JSON.stringify(v.metadata,null,2)})]})]})})]}):(0,K.jsx)(`div`,{className:`evaluation-page__detail-empty`,children:(0,K.jsx)(`span`,{children:`选择一个 Case 查看详情。`})})})]})]})]}):null]})}var t0=[{value:`system`,label:`跟随系统`,description:`随 macOS 或浏览器切换`,icon:Fe},{value:`light`,label:`浅色`,description:`始终使用明亮界面`,icon:at},{value:`dark`,label:`深色`,description:`始终使用暗色界面`,icon:Ie}],n0=[{id:`general`,label:`通用`},{id:`credentials`,label:`模型与凭证`},{id:`cloud`,label:`云端连接`},{id:`runtime`,label:`运行与沙箱`},{id:`about`,label:`关于`}];function r0(e){return e===`workspace`||e===`session`?`工作区`:e===`environment`?`启动环境`:e===`missing`?`未配置`:e}function i0(e){let t=(e||`read-only`).replaceAll(`_`,`-`);return t===`workspace-write`||t===`workspace-write-auto`||t===`full-access`?t:`read-only`}function a0({themePreference:e,onThemePreferenceChange:t,initialSection:n=`general`,onClose:r}){let[i,a]=(0,s.useState)(null),o=p_({resolver:C_(ez),defaultValues:{sandbox:`read-only`,buildAfterCreate:!0,codexProxy:`auto`,cloudRegion:``,cloudBucket:``,cloudAccessKey:``,cloudSecretKey:``,cloudAccountId:``}}),[c,l]=(0,s.useState)([]),[u,d]=(0,s.useState)([]),[f,p]=(0,s.useState)(!1),[m,h]=(0,s.useState)(null),[_,v]=(0,s.useState)(n),y=(0,s.useCallback)(e=>{v(e),document.getElementById(`settings-${e}`)?.scrollIntoView({behavior:`smooth`,block:`start`})},[]);(0,s.useEffect)(()=>{let e=requestAnimationFrame(()=>y(n));return()=>cancelAnimationFrame(e)},[n,y]);let b=(0,s.useCallback)(async()=>{try{let[e,t]=await Promise.all([g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()),g(`/api/v1/catalog/models`).then(e=>e.json()).catch(()=>null)]),n=(e.items||[]).filter(e=>e.kind===`model`);t?.items?.length&&(n=[...n.filter(e=>e.source===`local`||e.source===`market`),...t.items]);let r=[],i=new Set;for(let e of n){let t=e.requiredSecretRefs?.[0]||e.contract?.credentialRef||``;if(!t||i.has(t))continue;i.add(t);let n=t.replace(/^env:\/\//,``),a={configured:!1,source:`missing`};try{a=await g(`/api/v1/credentials/${encodeURIComponent(n)}`).then(e=>e.json())}catch{}r.push({ref:t,name:n,configured:!!a?.configured,source:a?.source||`missing`,model:e})}l(r)}catch{l([])}},[]);(0,s.useEffect)(()=>{(async()=>{try{let e=await g(`/api/v1/system/settings`).then(e=>e.json());a(e),o.reset({sandbox:i0(e.sandbox),buildAfterCreate:e.buildAfterCreate!==!1,codexProxy:e.codexProxy||`auto`,cloudRegion:e.cloudRegion||``,cloudBucket:e.cloudBucket||``})}catch{a({})}await b();try{let e=await g(`/api/v1/system/bootstrap`).then(e=>e.json());d([[`工作区`,e?.workspace?.name||`-`],[`路径`,e?.workspace?.path||`-`],[`API 版本`,e?.apiVersion||`-`]])}catch{d([])}})()},[b,o]);async function x(e){p(!0);try{let t={sandbox:e.sandbox,buildAfterCreate:e.buildAfterCreate,codexProxy:e.codexProxy};e.cloudRegion.trim()&&(t.cloudRegion=e.cloudRegion.trim()),e.cloudBucket.trim()&&(t.cloudBucket=e.cloudBucket.trim()),e.cloudAccessKey.trim()&&(t.cloudAccessKey=e.cloudAccessKey.trim()),e.cloudSecretKey.trim()&&(t.cloudSecretKey=e.cloudSecretKey.trim()),e.cloudAccountId.trim()&&(t.cloudAccountId=e.cloudAccountId.trim());let n=await g(`/api/v1/system/settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>null);if(Db(e,o.setError)){p(!1);return}throw Error(e?.error?.message||`保存失败(${n.status})`)}r(),Y(`设置已保存`,`工作区级配置已写入 .agentkit/settings.yaml。`)}catch(e){Y(`保存失败`,e.message,`error`)}p(!1)}return(0,K.jsx)(Fg,{...o,children:(0,K.jsxs)(DD,{title:`设置`,subtitle:`工作区级配置,保存到 .agentkit/settings.yaml,重启后仍生效。`,wide:!0,onClose:r,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:r,children:`取消`}),(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:o.handleSubmit(x),disabled:f||i==null,children:[(0,K.jsx)(z,{size:15}),(0,K.jsx)(`span`,{children:f?`保存中`:`保存`})]})]}),children:[(0,K.jsxs)(`div`,{className:`settings-layout`,children:[(0,K.jsx)(`nav`,{className:`settings-section-nav`,"aria-label":`设置分类`,children:n0.map(e=>(0,K.jsx)(`button`,{className:_===e.id?`active`:``,type:`button`,onClick:()=>y(e.id),children:e.label},e.id))}),(0,K.jsxs)(`div`,{className:`settings-sections`,children:[(0,K.jsxs)(`section`,{id:`settings-general`,className:`settings-group`,tabIndex:-1,children:[(0,K.jsx)(`h3`,{children:`外观`}),(0,K.jsx)(`div`,{className:`appearance-options`,role:`radiogroup`,"aria-label":`颜色模式`,children:t0.map(n=>{let r=n.icon;return(0,K.jsxs)(`label`,{className:`appearance-option${e===n.value?` selected`:``}`,children:[(0,K.jsx)(r,{"aria-hidden":`true`}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:n.label}),(0,K.jsx)(`small`,{children:n.description})]}),(0,K.jsx)(`input`,{type:`radio`,name:`studio-theme`,value:n.value,checked:e===n.value,onChange:()=>t(n.value)})]},n.value)})}),(0,K.jsx)(`p`,{className:`appearance-note`,children:`外观仅保存到当前浏览器,并会立即应用到 Studio 与会话工作台。`})]}),(0,K.jsxs)(`section`,{id:`settings-runtime`,className:`settings-group`,tabIndex:-1,children:[(0,K.jsx)(`h3`,{children:`执行与沙箱`}),(0,K.jsx)(X,{label:`默认执行权限(Codex)`,requirement:`required`,htmlFor:`settingSandbox`,hint:`新 Agent 默认值;会话页可单次覆盖,下一轮对话生效。`,error:o.formState.errors.sandbox?.message,children:(0,K.jsx)(kh,{id:`settingSandbox`,ariaLabel:`默认执行权限`,value:o.watch(`sandbox`),options:[{value:`read-only`,label:`只读沙箱(不可写)`},{value:`workspace-write`,label:`请求批准(写工作区,每次询问)`},{value:`workspace-write-auto`,label:`替我审批(写工作区,仅风险询问)`},{value:`full-access`,label:`完全访问(不受限读写)`}],onValueChange:e=>o.setValue(`sandbox`,e,{shouldDirty:!0,shouldValidate:!0})})}),(0,K.jsx)(`div`,{className:`studio-form-field`,children:(0,K.jsxs)(`label`,{className:`checkbox-row`,children:[(0,K.jsx)(`input`,{type:`checkbox`,...o.register(`buildAfterCreate`)}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:`创建后立即构建`}),(0,K.jsx)(`small`,{children:`新建 Agent 保存后自动构建并进入会话`})]})]})})]}),(0,K.jsxs)(`section`,{id:`settings-credentials`,className:`settings-group`,tabIndex:-1,children:[(0,K.jsx)(`h3`,{children:`凭证`}),c.length===0?(0,K.jsx)(`div`,{className:`settings-empty`,children:`暂无凭证`}):c.map(e=>(0,K.jsxs)(`div`,{className:`settings-credential`,children:[(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:e.name}),(0,K.jsx)(`small`,{children:e.configured?`已配置 · ${r0(e.source)}`:`未配置`})]}),(0,K.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>h(e.model),children:`配置`})]},e.ref))]}),(0,K.jsxs)(`section`,{id:`settings-runtime-proxy`,className:`settings-group`,tabIndex:-1,children:[(0,K.jsx)(`h3`,{children:`运行时`}),(0,K.jsx)(X,{label:`Codex Responses→Chat 代理`,requirement:`required`,htmlFor:`settingCodexProxy`,hint:`非原生 Responses 上游可启用兼容代理。`,error:o.formState.errors.codexProxy?.message,children:(0,K.jsx)(kh,{id:`settingCodexProxy`,ariaLabel:`Codex Responses 代理`,value:o.watch(`codexProxy`),options:[{value:`auto`,label:`自动(探测)`},{value:`forced`,label:`强制启用`},{value:`direct`,label:`强制直连`}],onValueChange:e=>o.setValue(`codexProxy`,e,{shouldDirty:!0,shouldValidate:!0})})})]}),(0,K.jsxs)(`section`,{id:`settings-cloud`,className:`settings-group`,tabIndex:-1,children:[(0,K.jsx)(`h3`,{children:`云端部署`}),(0,K.jsx)(`p`,{className:`helper`,children:`配置云端部署使用的区域和制品存储。`}),(0,K.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,K.jsx)(X,{label:`Region`,requirement:`optional`,htmlFor:`settingCloudRegion`,error:o.formState.errors.cloudRegion?.message,children:(0,K.jsx)(`input`,{id:`settingCloudRegion`,placeholder:`cn-beijing-6`,...o.register(`cloudRegion`)})}),(0,K.jsx)(X,{label:`KS3 Bucket`,requirement:`optional`,htmlFor:`settingCloudBucket`,hint:`留空时复用启动环境或 SDK 默认 Bucket。`,error:o.formState.errors.cloudBucket?.message,children:(0,K.jsx)(`input`,{id:`settingCloudBucket`,placeholder:`agentengine--cn-beijing-6`,...o.register(`cloudBucket`)})})]}),(0,K.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,K.jsx)(X,{label:`Access Key`,requirement:`optional`,htmlFor:`settingCloudAccessKey`,hint:`金山云账号 AK,用于云端请求签名;留空保留已保存值。`,error:o.formState.errors.cloudAccessKey?.message,children:(0,K.jsx)(`input`,{id:`settingCloudAccessKey`,type:`password`,autoComplete:`off`,placeholder:i?.cloudAccountConfigured?`已配置(留空保持不变)`:`AKLT...`,...o.register(`cloudAccessKey`)})}),(0,K.jsx)(X,{label:`Secret Key`,requirement:`optional`,htmlFor:`settingCloudSecretKey`,hint:`金山云账号 SK;留空保留已保存值。`,error:o.formState.errors.cloudSecretKey?.message,children:(0,K.jsx)(`input`,{id:`settingCloudSecretKey`,type:`password`,autoComplete:`off`,placeholder:i?.cloudAccountConfigured?`已配置(留空保持不变)`:``,...o.register(`cloudSecretKey`)})})]}),(0,K.jsx)(X,{label:`Account ID`,requirement:`optional`,htmlFor:`settingCloudAccountId`,hint:`主账号 ID(X-Ksc-Account-Id);可从金山云控制台获取。`,error:o.formState.errors.cloudAccountId?.message,children:(0,K.jsx)(`input`,{id:`settingCloudAccountId`,placeholder:`10203040...`,...o.register(`cloudAccountId`)})}),(0,K.jsxs)(`p`,{className:`helper`,children:[`云端账号:`,i?.cloudAccountConfigured?`已就绪`:`尚未配置`,`;云端部署:`,i?.cloudSignedAccountConfigured?`已就绪`:`尚未配置`]})]}),(0,K.jsxs)(`section`,{id:`settings-about`,className:`settings-group`,tabIndex:-1,children:[(0,K.jsx)(`h3`,{children:`关于`}),(0,K.jsx)(`dl`,{className:`trace-detail-grid`,children:u.map(([e,t])=>(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{children:e}),(0,K.jsx)(`dd`,{children:t})]},e))})]})]})]}),m&&(0,K.jsx)(_z,{model:m,onClose:()=>h(null),onChanged:b})]})})}function o0(e,t){let n=Math.max(0,Number(t)||0),r=Number.isFinite(e)&&Number(e)>=0&&n>0,i=r?Math.max(0,Number(e)):0;return{known:r,usedTokens:i,limitTokens:n,percent:r?Math.max(0,Math.min(100,Math.round(i/n*100))):0}}function s0(e){return{title:`上下文窗口`,value:e.known?`${e.percent}% 已用`:`用量未上报`,detail:e.known?`已用 ${e.usedTokens.toLocaleString(`en-US`)} tokens,共 ${e.limitTokens.toLocaleString(`en-US`)}`:e.limitTokens>0?`上限 ${e.limitTokens.toLocaleString(`en-US`)} tokens`:`当前模型未提供上下文上限`}}function c0(e){return[...e].reverse().find(e=>e.usage?.reported===!0&&Number.isFinite(e.usage.inputTokens))?.usage?.inputTokens}var l0=new Set([`RUNNING`,`PAUSED`,`WAITING_INPUT`]);function u0(e){return[...e].filter(e=>l0.has(String(e.status||``))).sort((e,t)=>Date.parse(e.startedAt||`1970-01-01`)-Date.parse(t.startedAt||`1970-01-01`)).at(-1)}function d0(e,t){return t?e.filter(e=>e.id!==t):e}function f0(e){let t=e.completedAt||e.startedAt||``,n=Date.parse(t);return Number.isFinite(n)?n:0}function p0(e,t){let n=new Map;for(let r of e){if(r.agentId!==t||!r.sessionId)continue;let e=n.get(r.sessionId)||[];e.push(r),n.set(r.sessionId,e)}return[...n.entries()].map(([e,t])=>{let n=[...t].sort((e,t)=>f0(e)-f0(t)),r=n[0],i=n.at(-1),a=[...n].reverse().find(e=>l0.has(String(e.status||``)));return{id:e,title:r?.input?.trim()||`新会话`,updatedAt:i.completedAt||i.startedAt||``,running:!!a,activeStatus:a?.status,runs:n}}).sort((e,t)=>Date.parse(t.updatedAt||`1970-01-01`)-Date.parse(e.updatedAt||`1970-01-01`))}function m0(e,t){return{localId:e,responseId:e,sessionId:t,runId:``,reasoning:``,output:``,status:`streaming`,error:``,activities:[],surfaces:[]}}function h0(e){return e&&typeof e==`object`?e:{}}function g0(e,t){let n=String(t.type||``);if(n===`response.created`||n===`response.in_progress`){let n=h0(t.response);return{...e,responseId:String(n.id||e.responseId)}}if(n===`response.reasoning_summary_text.delta`)return{...e,reasoning:e.reasoning+String(t.delta||``)};if(n===`response.output_text.delta`)return{...e,output:e.output+String(t.delta||``)};if(n===`response.output_item.added`||n===`response.output_item.done`){let r=E0(h0(t.item),n.endsWith(`.done`));if(!r)return e;let i=e.activities.findIndex(e=>e.id===r.id),a=[...e.activities];return i<0?a.push(r):a[i]={...a[i],...r},{...e,activities:a}}if(n.startsWith(`a2ui.`))return b0(e,t);if(n===`response.paused`)return{...e,runId:String(t.runId||t.run_id||e.runId),status:`paused`};if(n===`response.resumed`)return{...e,runId:String(t.runId||t.run_id||e.runId),status:`streaming`};if(/^response\.(?:web_search_call|file_search_call|mcp_call)\./.test(n)){let r=String(t.item_id||t.itemId||t.call_id||t.callId||n.split(`.`)[1]),i=n.includes(`web_search`)?`网页搜索`:n.includes(`file_search`)?`文件搜索`:`MCP 调用`,a=n.endsWith(`.failed`)?`failed`:n.endsWith(`.completed`)?`completed`:`running`,o={id:`tool:${r}`,kind:`tool`,title:i,status:a,detail:``,data:h0(t)},s=e.activities.findIndex(e=>e.id===o.id),c=[...e.activities];return s<0?c.push(o):c[s]={...c[s],...o},{...e,activities:c}}if(n===`response.completed`){let n=h0(t.response),r=h0(n.metadata);return{...e,responseId:String(n.id||e.responseId),runId:String(r.runtime_run_id||r.runtimeRunId||e.runId),usage:h0(n.usage),status:`completed`}}if(n===`response.cancelled`||n===`response.canceled`)return{...e,status:`cancelled`};if(n===`response.failed`||n===`error`){let n=h0(t.response),r=h0(t.error||n.error);return{...e,status:`failed`,error:String(r.message||t.message||`Agent 运行失败`)}}return e}function _0(e){return{id:e,catalogId:``,components:{},roots:[],dataModel:{}}}function v0(e){let t=e.a2uiOperations??e.a2ui_operations??e.operations;return Array.isArray(t)?t.map(h0):[]}function y0(e,t){for(let n of t){let t=h0(n.createSurface);if(Object.keys(t).length){let n=String(t.surfaceId||t.surface_id||``);if(!n)continue;let r=e.get(n)||_0(n);e.set(n,{...r,catalogId:String(t.catalogId||t.catalog_id||r.catalogId)});continue}let r=h0(n.updateComponents);if(Object.keys(r).length){let t=String(r.surfaceId||r.surface_id||``);if(!t)continue;let n=e.get(t)||_0(t),i={...n.components},a=Array.isArray(r.components)?r.components.map(h0):[];for(let e of a){let t=String(e.id||e.componentId||e.component_id||``),n=String(e.component||e.type||``);t&&n&&(i[t]={...e,id:t,component:n})}let o=new Set;for(let e of Object.values(i)){let t=Array.isArray(e.children)?e.children:[];for(let e of t)typeof e==`string`&&o.add(e);typeof e.child==`string`&&o.add(e.child)}let s=Object.keys(i).filter(e=>!o.has(e));e.set(t,{...n,components:i,roots:s});continue}let i=h0(n.updateDataModel);if(Object.keys(i).length){let t=String(i.surfaceId||i.surface_id||``);if(!t)continue;let n=e.get(t)||_0(t),r=h0(i.value);e.set(t,{...n,dataModel:String(i.path||`/`)===`/`?r:{...n.dataModel,...r}});continue}let a=h0(n.deleteSurface);if(Object.keys(a).length){let t=String(a.surfaceId||a.surface_id||``);t&&e.delete(t)}}}function b0(e,t){let n=new Map(e.surfaces.map(e=>[e.id,{...e,components:{...e.components},dataModel:{...e.dataModel}}]));y0(n,v0(t));let r=String(t.type||``),i=String(t.surfaceId||t.surface_id||``);if(r===`a2ui.interaction`&&i){let e=n.get(i)||_0(i);n.set(i,{...e,interaction:{id:String(t.interactionId||t.interaction_id||``),kind:String(t.kind||`form`),status:`pending`,inputSchema:h0(t.inputSchema||t.input_schema)}})}if(r===`a2ui.action`&&i){let e=n.get(i);e?.interaction&&n.set(i,{...e,interaction:{...e.interaction,status:`resolved`}})}return{...e,runId:String(t.runId||t.run_id||e.runId),surfaces:[...n.values()],status:r===`a2ui.interaction`?`waiting_input`:r===`a2ui.action`?`streaming`:e.status}}function x0(e){let t=m0(`persisted`,`persisted`);for(let n of e)n.type.startsWith(`a2ui.`)&&(t=b0(t,{type:n.type,...n.data||{}}));return t.surfaces}function S0(e){let t=``,n=(e=!1)=>{t=t.replaceAll(`\r -`,` -`);let n=t.indexOf(` - -`);for(;n>=0;)r(t.slice(0,n)),t=t.slice(n+2),n=t.indexOf(` - -`);e&&t.trim()&&(r(t),t=``)},r=t=>{let n=`message`,r=[];for(let e of t.split(` -`))!e||e.startsWith(`:`)||(e.startsWith(`event:`)&&(n=e.slice(6).trim()),e.startsWith(`data:`)&&r.push(e.slice(5).trimStart()));if(!r.length)return;let i=r.join(` -`);if(i!==`[DONE]`)try{let t=JSON.parse(i);e({...t,type:String(t.type||n)})}catch{e({type:n,message:i})}};return{push(e){t+=e,n()},finish(){n(!0)}}}function C0(e,t){return String(e.callId||e.call_id||e.toolCallId||e.tool_call_id||t)}function w0(e,t){return String(e===`command`?t.command||t.name||`执行命令`:e===`tool`?t.name||t.tool||`调用工具`:t.kind||t.action||`等待批准`)}function T0(e){let t=e.output??e.result??e.message??e.error??``;return typeof t==`string`?t:t&&typeof t==`object`?JSON.stringify(t,null,2):t===``?``:String(t)}function E0(e,t){let n=String(e.type||``);if(![`function_call`,`mcp_call`,`shell_call`,`local_shell_call`,`file_search_call`,`web_search_call`,`approval_request`].includes(n))return null;let r=String(e.call_id||e.callId||e.id||`tool`),i=n===`shell_call`||n===`local_shell_call`,a=n===`approval_request`,o=a?`approval`:i?`command`:`tool`,s=h0(e.action),c=Array.isArray(s.commands)?s.commands.filter(e=>typeof e==`string`).join(` && `):``,l=a?String(s.title||s.kind||`等待批准`):i?c||String(e.name||`执行命令`):n===`web_search_call`?`网页搜索`:n===`file_search_call`?`文件搜索`:String(e.name||e.server_label||`调用工具`),u=String(e.status||``),d=u===`failed`||u===`error`||Number(e.exit_code??e.exitCode??0)!==0?`failed`:a&&!t?`waiting`:t?`completed`:`running`;return{id:`${o}:${r}`,kind:o,title:l,status:d,detail:T0(e),data:e}}function D0(e){return[String(e.runId||``),String(e.scopeId||``),String(e.itemId||``),String(e.partId||``)].join(`/`)}function O0(e){let t=h0(e.data?.runtimeEvent),n=t.output_refs??t.outputRefs;return Array.isArray(n)?n.map(h0):[]}function k0(e){let t=[],n=new Map,r=[],i=new Map,a=null;for(let o of e){let e=o.data||{},s=o.type===`thinking.delta`||o.type===`thinking.completed`,c=o.type===`message.delta`||o.type===`message.completed`;if(s||c){let r=s?`thinking`:`message`,i=o.type.endsWith(`.completed`),a=i?`complete`:String(e.operation||`append`),c=String(e.text||e.delta||``),l=`${r}:${D0(e)}`,u=n.get(l),d=h0(e.runtimeEvent),f=String(e.phase||d.phase||``);if(u===void 0)n.set(l,t.length),t.push({runId:String(e.runId||``),scopeId:String(e.scopeId||``),itemId:String(e.itemId||``),partId:String(e.partId||``),phase:f,kind:r,text:c,completed:i});else{let e=t[u],n=a===`append`?e.text+c:c||e.text;t[u]={...e,phase:e.phase||f,text:n,completed:i||e.completed}}continue}if([`run.completed`,`run.failed`,`run.interrupted`,`run.cancelled`,`run.canceled`].includes(o.type)){let e=O0(o);e.length&&(a=e);continue}let l=null;if(o.type.startsWith(`command.`)?l=`command`:o.type.startsWith(`tool.`)?l=`tool`:o.type===`approval.requested`&&(l=`approval`),!l)continue;let u=C0(e,`${l}-${o.id}`),d=i.get(`${l}:${u}`),f=o.type.endsWith(`.completed`),p=o.type.endsWith(`.failed`)||!!e.error||Number(e.exitCode??e.exit_code??0)!==0,m=l===`approval`?`waiting`:p?`failed`:f?`completed`:`running`,h={id:`${l}:${u}`,kind:l,title:w0(l,e),status:m,detail:T0(e),data:e};if(d===void 0)i.set(h.id,r.length),r.push(h);else{let e=r[d];r[d]={...e,...h,title:h.title===w0(l,{})?e.title:h.title,detail:h.detail||e.detail}}}let o=t.filter(e=>e.kind===`message`),s=t.filter(e=>e.kind===`thinking`).map(e=>e.text).join(``),c;if(a&&a.length){let e=new Map;for(let t of o)e.set(`${t.scopeId}/${t.itemId}`,t);c=a.map(t=>e.get(`${String(t.scope_id??t.scopeId??``)}/${String(t.item_id??t.itemId??``)}`)).filter(e=>!!e).map(e=>e.text).join(` - -`)}else{let e=o.filter(e=>e.completed);c=(e.length?e:o).map(e=>e.text).join(``)}return{reasoning:s,output:c,textItems:t,activities:r}}function A0(e){let t=Number(e.totalTokens??e.total_tokens??0);return`${Number.isFinite(t)?t.toLocaleString(`en-US`):`0`} tokens`}function j0(e){let t=Number(e.durationMs??e.duration_ms);return!Number.isFinite(t)||t<0?``:t<1e3?`${Math.round(t)}ms`:`${(t/1e3).toFixed(1)}s`}function M0(e){let t=[],n=new Map,r=e.some(e=>e.type===`run.started`),i=(e,r)=>{let i=n.get(e);if(i===void 0){n.set(e,t.length),t.push(r);return}t[i]={...t[i],...r}};for(let a of e){let e=a.data||{},o=a.type||``;if(o===`run.created`){if(r)continue;t.push({id:`run:${a.id}`,kind:`run`,title:`Run 创建`,summary:String(e.model||e.runtimeType||``),detail:``,status:`running`,createdAt:a.createdAt,data:e});continue}if(o===`run.started`){let n=h0(e.runtimeEvent);t.push({id:`run:${a.id}`,kind:`run`,title:`Run 启动`,summary:String(e.runtimeType||n.runtimeType||n.model||`Local Runtime`),detail:``,status:`running`,createdAt:a.createdAt,data:e});continue}if([`run.completed`,`run.failed`,`run.interrupted`,`run.cancelled`,`run.canceled`].includes(o)){let n=o===`run.failed`||o===`run.interrupted`,r=o===`run.cancelled`||o===`run.canceled`;t.push({id:`run:${a.id}`,kind:`run`,title:n?o===`run.interrupted`?`Run 中断`:`Run 失败`:r?`Run 取消`:`Run 完成`,summary:j0(e),detail:n?String(e.error||e.message||``):``,status:n?`failed`:`completed`,createdAt:a.createdAt,data:e});continue}if(o.startsWith(`thinking.`)||o.startsWith(`message.`)){let r=o.startsWith(`thinking.`)?`thinking`:`message`,s=`stream:${r}`,c=n.get(s),l=c===void 0?null:t[c],u=String(e.text||e.delta||``),d=o.endsWith(`.completed`),f=d&&u?u:`${l?.detail||``}${u}`;i(s,{id:s,kind:r,title:r===`thinking`?`思考过程`:`模型回复`,summary:f?`${f.length} 字`:``,detail:f,status:d?`completed`:`running`,createdAt:a.createdAt||l?.createdAt,data:e});continue}let s=null;if(o.startsWith(`command.`)?s=`command`:o.startsWith(`tool.`)?s=`tool`:o.startsWith(`approval.`)&&(s=`approval`),s){let r=`${s}:${C0(e,String(a.id))}`,c=n.get(r),l=c===void 0?null:t[c],u=o.endsWith(`.failed`)||!!e.error||Number(e.exitCode??e.exit_code??0)!==0,d=o.endsWith(`.completed`)||o.endsWith(`.resolved`),f=T0(e)||l?.detail||``,p=w0(s,e),m=w0(s,{});i(r,{id:r,kind:s,title:p===m&&l?.title?l.title:p,summary:j0(e),detail:f,status:u?`failed`:d?`completed`:s===`approval`?`waiting`:`running`,createdAt:a.createdAt||l?.createdAt,data:e});continue}o===`usage.reported`&&t.push({id:`usage:${a.id}`,kind:`usage`,title:`用量上报`,summary:A0(e),detail:``,status:`completed`,createdAt:a.createdAt,data:e})}if([...e].reverse().find(e=>[`run.completed`,`run.failed`,`run.interrupted`,`run.cancelled`,`run.canceled`].includes(e.type)))for(let e of t)e.status===`running`&&(e.kind===`thinking`||e.kind===`message`)&&(e.status=`completed`);return t}function N0(e,t){let n=e.filter(e=>e.type.startsWith(`memory.recall.`)),r=[...n].reverse().find(e=>e.type===`memory.recall.projected`);if(r){let e=Number(r.data?.candidate_count??r.data?.count??0);return{status:`used`,title:`已提供长期记忆`,description:e>0?`${e} 条相关记忆已交付本次运行`:`相关记忆已交付本次运行`}}let i=[...n].reverse().find(e=>e.type===`memory.recall.completed`);if(i){let e=Number(i.data?.candidate_count??i.data?.count??0);return{status:`recalled`,title:`已召回长期记忆`,description:e>0?`已找到 ${e} 条,但未确认交付 Runner`:`已找到相关记忆,但未确认交付 Runner`}}return n.some(e=>e.type===`memory.recall.failed`)?{status:`failed`,title:`长期记忆召回失败`,description:`本次未能读取长期记忆,可在 Trace 中查看原因`}:n.some(e=>e.type===`memory.recall.empty`)?{status:`empty`,title:`未使用长期记忆`,description:`未找到与当前问题相关的记忆`}:Number(t||0)>0?{status:`used`,title:`已纳入长期记忆`,description:`相关记忆已纳入本次上下文`}:{status:`unused`,title:`未使用长期记忆`,description:`本次回答未选入长期记忆`}}function P0(e){return!Number.isFinite(e)||Number(e)<0?`未上报`:Number(e)<1e3?`${Math.round(Number(e))}ms`:`${(Number(e)/1e3).toFixed(2)}s`}function F0(e){return Number.isFinite(e)?Number(e).toLocaleString():`未上报`}function I0(e){return{platform_safety:`平台安全规则`,agent_identity:`角色定义`,agent_policy:`任务规则`,runtime_capabilities:`运行时能力说明`,resource_manifest:`工具与 Skill 说明`,request_instructions:`本次请求指令`}[e]||e}function L0(e){return{platform_safety:`平台策略`,agent_identity:`Agent Revision`,agent_policy:`Agent Revision`,runtime_capabilities:`Runtime Adapter`,resource_manifest:`构建资源清单`,request_instructions:`本次请求`}[e]||`Prompt Compiler`}function R0(e){return e.length>20?`${e.slice(0,17)}…`:e}function z0(e){return e===`RUNNING`||e===`CREATED`?`运行中`:e===`COMPLETED`?`已完成`:e===`CANCELLED`?`已取消`:e===`INTERRUPTED`?`已中断`:e===`TIMED_OUT`?`已超时`:`失败`}function B0(e){try{return BigInt(String(e.startTimeUnixNano||`0`))}catch{return 0n}}function V0(e){if(!e.length)return[];let t=[...e].sort((e,t)=>B0(e){let n=B0(t);return!e||nNumber(B0(e)-n)/1e6),i=Math.max(1,...t.map((e,t)=>r[t]+Math.max(0,Number(e.durationMs)||0))),a=new Map(t.map(e=>[e.spanId,e])),o=e=>{let t=0,n=e.parentSpanId,r=new Set;for(;n&&a.has(n)&&!r.has(n)&&t<3;)r.add(n),t+=1,n=a.get(n)?.parentSpanId;return t};return t.slice(0,8).map((e,t)=>({...e,left:Math.min(96,Math.max(0,r[t]/i*100)),width:Math.max(3,Math.min(100,Math.max(0,Number(e.durationMs)||0)/i*100)),depth:o(e)}))}function H0(e){return e.kind===`thinking`?(0,K.jsx)(I,{size:13}):e.kind===`message`?(0,K.jsx)(Me,{size:13}):e.kind===`command`?(0,K.jsx)(st,{size:13}):e.kind===`tool`?(0,K.jsx)(pt,{size:13}):e.kind===`approval`?(0,K.jsx)(et,{size:13}):e.kind===`usage`?(0,K.jsx)(Ce,{size:13}):(0,K.jsx)(Ke,{size:13})}async function U0(e){let t=await g(`/api/v1/runs/${encodeURIComponent(e)}/events`);if(!t.ok)return[];let n=[],r=S0(e=>{let{type:t,...r}=e;n.push({id:n.length+1,type:t,data:r})});return r.push(await t.text()),r.finish(),n}function W0({agentId:e,onOpenTrace:t,onClose:n}){let[r,i]=(0,s.useState)(null),[a,o]=(0,s.useState)([]),[c,l]=(0,s.useState)([]),[u,d]=(0,s.useState)(null),[f,p]=(0,s.useState)(null),[m,h]=(0,s.useState)(null),[_,v]=(0,s.useState)(!1),[y,b]=(0,s.useState)(!0),[x,S]=(0,s.useState)(0);(0,s.useEffect)(()=>{let t=!1,n=null,r=0;async function a(){let s=++r;try{let n=((await g(`/api/v1/runs`).then(e=>e.json())).items||[]).filter(t=>!e||t.agentId===e).at(-1)||null;if(t||s!==r)return;if(i(n),!n){o([]),l([]),d(null),p(null);return}let[a,c,u,f]=await Promise.all([U0(n.id),g(`/api/v1/traces/${encodeURIComponent(n.traceId)}`).then(e=>e.ok?e.json():null).catch(()=>null),g(`/api/v1/runs/${encodeURIComponent(n.id)}/context`).then(e=>e.ok?e.json():null).catch(()=>null),g(`/api/v1/runs/${encodeURIComponent(n.id)}/prompt`).then(e=>e.ok?e.json():null).catch(()=>null)]);!t&&s===r&&(o(a),l(c?.spans||[]),d(u),p(f))}catch{}finally{!t&&s===r&&b(!1),t||(n=window.setTimeout(a,2500))}}return b(!0),a(),()=>{t=!0,r+=1,n!==null&&window.clearTimeout(n)}},[e,x]),(0,s.useEffect)(()=>{h(null),v(!1)},[r?.id]);async function C(e){if(!(m||_)){v(!0);try{let t=await g(`/api/v1/runs/${encodeURIComponent(e)}/prompt?include_content=true`),n=t.ok?await t.json():null;h(n?.reveal||{available:!1,reason:`Prompt 详情读取失败。`})}catch{h({available:!1,reason:`Prompt 详情读取失败。`})}finally{v(!1)}}}let w=r?.status===`RUNNING`||r?.status===`CREATED`,T=r?/fail|error|interrupt|timed/i.test(r.status):!1,E=(0,s.useMemo)(()=>M0(a),[a]),D=(0,s.useMemo)(()=>V0(c),[c]),k=r?.usage?.reported===!0,A=u?.decisions||[],M=!!(u||f||k),N=A.some(e=>e.decision===`dropped`)?`部分内容已舍弃`:A.some(e=>e.decision===`compressed`)?`已自动压缩`:A.some(e=>e.decision===`replaced`)?`部分内容已替换`:M?`正常`:`等待证据`,P=Object.keys(f?.tokensBySection||{}).map(I0),F=u?.tokensByKind?.recalled_memory,L=(0,s.useMemo)(()=>N0(a,F),[a,F]),R=Number.isFinite(u?.plannedInputTokens)&&Number.isFinite(u?.projectedInputTokens)&&Number(u?.plannedInputTokens)!==Number(u?.projectedInputTokens);return(0,K.jsxs)(`aside`,{className:`chat-run-panel`,"aria-label":`运行检查器`,children:[(0,K.jsxs)(`div`,{className:`chat-run-head`,children:[(0,K.jsxs)(`span`,{className:`chat-run-title`,children:[(0,K.jsx)(O,{size:15}),` 运行检查器`]}),(0,K.jsx)(`span`,{className:`chat-run-head-spacer`}),(0,K.jsx)(`button`,{className:`icon-btn`,onClick:()=>S(e=>e+1),title:`刷新`,children:(0,K.jsx)(Je,{size:14})}),(0,K.jsx)(`button`,{className:`icon-btn`,onClick:n,title:`收起`,children:(0,K.jsx)(mt,{size:14})})]}),y&&!r?(0,K.jsxs)(`div`,{className:`chat-run-empty`,children:[(0,K.jsx)(ke,{size:16,className:`animate-spin`}),` 正在读取最近运行…`]}):r?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`chat-run-scroll`,children:[(0,K.jsxs)(`section`,{className:`chat-run-overview`,children:[(0,K.jsxs)(`div`,{className:`chat-run-status-row`,children:[(0,K.jsx)(`span`,{className:`chat-run-state-icon ${w?`running`:T?`failed`:`completed`}`,children:w?(0,K.jsx)(ke,{size:15,className:`animate-spin`}):T?(0,K.jsx)(G,{size:15}):(0,K.jsx)(W,{size:15})}),(0,K.jsxs)(`div`,{className:`chat-run-identity`,children:[(0,K.jsx)(`strong`,{children:z0(r.status)}),(0,K.jsx)(`span`,{title:r.id,children:R0(r.id)})]}),(0,K.jsx)(`span`,{className:`chat-run-state ${w?`running`:T?`failed`:`completed`}`,children:r.status})]}),r.error?.message&&(0,K.jsxs)(`div`,{className:`chat-run-error`,role:`alert`,children:[(0,K.jsx)(G,{size:15}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:r.error.code||`运行失败`}),(0,K.jsx)(`span`,{children:r.error.message})]})]}),(0,K.jsxs)(`div`,{className:`chat-run-route`,children:[(0,K.jsx)(fe,{size:13}),(0,K.jsx)(`span`,{children:`Edge · Local`}),(0,K.jsx)(`i`,{}),(0,K.jsxs)(`span`,{children:[r.runtimeType||`codex`,` Runtime`]}),(0,K.jsx)(`i`,{}),(0,K.jsx)(`span`,{children:r.model||`未指定模型`})]})]}),(0,K.jsxs)(`section`,{className:`chat-run-section`,children:[(0,K.jsxs)(`div`,{className:`chat-run-section-title`,children:[(0,K.jsx)(`span`,{children:`本次运行`}),(0,K.jsx)(`small`,{children:r.startedAt?new Date(r.startedAt).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}):``})]}),(0,K.jsxs)(`div`,{className:`chat-run-metrics`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(ae,{size:13}),(0,K.jsx)(`span`,{children:`耗时`}),(0,K.jsx)(`strong`,{children:P0(r.durationMs)})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(le,{size:13}),(0,K.jsx)(`span`,{children:`总 Token`}),(0,K.jsx)(`strong`,{children:k?F0(r.usage?.totalTokens):`未上报`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(Me,{size:13}),(0,K.jsx)(`span`,{children:`输入 / 输出`}),(0,K.jsx)(`strong`,{children:k?`${F0(r.usage?.inputTokens)} / ${F0(r.usage?.outputTokens)}`:`未上报`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(we,{size:13}),(0,K.jsx)(`span`,{children:`Span`}),(0,K.jsx)(`strong`,{children:c.length||`—`})]})]})]}),(0,K.jsxs)(`section`,{className:`chat-run-section pcm-run-summary`,children:[(0,K.jsxs)(`div`,{className:`chat-run-section-title`,children:[(0,K.jsx)(`span`,{children:`运行解释`}),(0,K.jsx)(`small`,{children:N})]}),(0,K.jsxs)(`div`,{className:`pcm-run-health ${N===`正常`?`healthy`:N===`等待证据`?`pending`:`adjusted`}`,children:[N===`正常`?(0,K.jsx)(W,{size:16}):(0,K.jsx)(Ce,{size:16}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:N===`正常`?`本次运行依据已正常准备`:N}),(0,K.jsx)(`span`,{children:u?`规则、相关记忆和当前问题已按策略处理`:f&&k?`规则证据与模型用量已记录;Runner 内部上下文由框架管理`:`正在收集本次运行依据`})]})]}),(0,K.jsxs)(`div`,{className:`pcm-run-signal-list`,children:[(0,K.jsxs)(`details`,{className:`pcm-run-signal`,onToggle:e=>{e.currentTarget.open&&C(r.id)},children:[(0,K.jsxs)(`summary`,{children:[(0,K.jsx)(W,{size:14}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`规则已应用`}),(0,K.jsx)(`span`,{children:P.length?P.join(` · `):f?.sectionCount?`${f.sectionCount} 个规则来源`:`本次未提供规则来源证据`})]}),(0,K.jsx)(B,{className:`pcm-run-signal-chevron`,size:14})]}),(0,K.jsx)(`div`,{className:`pcm-run-signal-details`,children:_?(0,K.jsx)(`p`,{children:`正在按本次不可变 Build 校验并读取 Prompt…`}):m?.available&&m.sections?.length?m.sections.map(e=>(0,K.jsxs)(`div`,{className:`pcm-run-prompt-section`,children:[(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:I0(e.id)}),(0,K.jsxs)(`small`,{children:[`来源:`,L0(e.id)]})]}),(0,K.jsx)(`pre`,{children:e.content})]},e.id)):(0,K.jsx)(`p`,{children:m?.reason||`展开后按需读取 Prompt 正文;正文不会写入 Trace。`})})]}),(0,K.jsxs)(`div`,{className:`pcm-run-signal-static ${L.status===`failed`?`attention`:``}`,children:[(0,K.jsx)(I,{size:14}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:L.title}),(0,K.jsx)(`span`,{children:L.description})]})]}),(0,K.jsxs)(`div`,{className:`pcm-run-signal-static ${N!==`正常`&&N!==`等待证据`?`attention`:``}`,children:[(0,K.jsx)(Ce,{size:14}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:R?`上下文已按预算调整`:A.some(e=>e.decision===`compressed`||e.decision===`dropped`||e.decision===`replaced`)?N:`上下文无需压缩`}),(0,K.jsx)(`span`,{children:R?`关键规则与当前问题已优先保留`:`未检测到压缩、替换或舍弃`})]})]})]})]}),(0,K.jsxs)(`section`,{className:`chat-run-section`,children:[(0,K.jsxs)(`div`,{className:`chat-run-section-title`,children:[(0,K.jsx)(`span`,{children:`Trace 瀑布`}),(0,K.jsx)(`small`,{children:D.length?`${D.length} 个节点`:`等待 Span`})]}),D.length?(0,K.jsx)(`div`,{className:`chat-run-waterfall`,children:D.map(e=>{let t=/fail|error/i.test(e.status);return(0,K.jsxs)(`div`,{className:`chat-run-waterfall-row`,children:[(0,K.jsx)(`span`,{className:`chat-run-waterfall-label`,style:{paddingLeft:e.depth*8},title:e.name,children:e.name}),(0,K.jsx)(`span`,{className:`chat-run-waterfall-track`,children:(0,K.jsx)(`i`,{className:t?`failed`:``,style:{left:`${e.left}%`,width:`${e.width}%`}})}),(0,K.jsx)(`small`,{children:P0(e.durationMs)})]},e.spanId)})}):(0,K.jsx)(`div`,{className:`chat-run-inline-empty`,children:`运行开始后显示 Span 时序`})]}),(0,K.jsxs)(`section`,{className:`chat-run-section chat-run-events-section`,children:[(0,K.jsxs)(`div`,{className:`chat-run-section-title`,children:[(0,K.jsx)(`span`,{children:`执行事件`}),(0,K.jsx)(`small`,{children:E.length})]}),(0,K.jsx)(`div`,{className:`chat-run-timeline`,children:E.length?E.map(e=>(0,K.jsxs)(`div`,{className:`chat-run-event ${e.kind} ${e.status}`,children:[(0,K.jsx)(`span`,{className:`chat-run-event-icon`,children:H0(e)}),(0,K.jsxs)(`div`,{className:`chat-run-event-copy`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:e.title}),(0,K.jsx)(`small`,{children:e.summary})]}),e.detail&&(0,K.jsxs)(`details`,{children:[(0,K.jsx)(`summary`,{children:`查看详情`}),(0,K.jsx)(`pre`,{children:e.detail})]})]})]},e.id)):(0,K.jsx)(`div`,{className:`chat-run-inline-empty`,children:`正在建立 Runtime 连接…`})})]})]}),(0,K.jsx)(`div`,{className:`chat-run-footer`,children:(0,K.jsxs)(`button`,{className:`btn soft`,onClick:t,children:[`打开完整 Trace `,(0,K.jsx)(j,{size:14})]})})]}):(0,K.jsx)(`div`,{className:`chat-run-empty`,children:`发送一条消息后,这里会显示执行位置、用量与事件时间线。`})]})}var G0=[{value:`ask`,label:`请求批准`,compactLabel:`请求批准`,description:`文件修改与外部写入会逐次请求确认`},{value:`risk`,label:`帮我批准`,compactLabel:`帮我批准`,description:`仅在检测到风险操作时请求确认`},{value:`full`,label:`完全访问权限`,compactLabel:`完全访问`,description:`不受限制地访问互联网和工作区文件`}];function K0(e){return e===`ask`||e===`risk`||e===`full`?e:`risk`}function q0(e){return`agentkit-studio:approval:${e}`}function J0(e){return G0.find(t=>t.value===e)||G0[1]}function Y0(e){return Array.isArray(e)?e.map(e=>{if(typeof e==`string`)return{label:e,value:e,description:``};let t=e&&typeof e==`object`?e:{},n=String(t.value??t.id??t.label??``);return{label:String(t.label??t.title??n),value:n,description:String(t.description??t.help??``)}}).filter(e=>e.value):[]}function X0(e){return(Array.isArray(e.children)?e.children:typeof e.child==`string`?[e.child]:[]).filter(e=>typeof e==`string`)}function Z0({surface:e,busy:t=!1,onSubmit:n}){let[r,i]=(0,s.useState)(()=>({...e.dataModel})),[a,o]=(0,s.useState)({}),c=(0,s.useRef)(new Set),l=e.interaction?.status===`pending`,u=t||!l,d=e.roots.length?e.roots:Object.keys(e.components).slice(0,1);(0,s.useEffect)(()=>{i(t=>{let n={...t};for(let[t,r]of Object.entries(e.dataModel))c.current.has(t)||(n[t]=r);return n})},[e.dataModel]);let f=(e,t)=>{c.current.add(e),i(n=>({...n,[e]:t}))},p=(t,i={})=>{if(!e.interaction||u)return;let o={...r};for(let[e,t]of Object.entries(a)){let n=t.trim();if(!n)continue;let r=o[e];o[e]=Array.isArray(r)?[...r.filter(e=>String(e)!==n),n]:n}n(e.interaction.id,t,{...o,...i})},m=(t,n)=>{let s=String(t.name||t.id),l=Y0(t.options),d=Array.isArray(r[s])?r[s]:[],p=String(r[s]??t.value??``),m=!!(t.allow_other??t.allowOther??t.is_other??t.isOther),h=a[s]??``;return(0,K.jsxs)(`fieldset`,{className:`a2ui-field a2ui-options`,children:[(0,K.jsx)(`legend`,{children:String(t.label||t.title||`请选择`)}),!!t.description&&(0,K.jsx)(`p`,{className:`a2ui-field-description`,children:String(t.description)}),(0,K.jsxs)(`div`,{className:`a2ui-choice-list`,role:n?`group`:`radiogroup`,children:[l.map((t,r)=>{let i=n?d.includes(t.value):p===t.value;return(0,K.jsxs)(`label`,{className:`a2ui-choice${i?` selected`:``}`,children:[(0,K.jsx)(`input`,{type:n?`checkbox`:`radio`,"aria-label":t.label,name:n?void 0:`${e.id}-${s}`,checked:i,disabled:u,onChange:e=>{n?f(s,e.target.checked?[...d,t.value]:d.filter(e=>e!==t.value)):(o(e=>({...e,[s]:``})),f(s,t.value))}}),(0,K.jsx)(`span`,{className:`a2ui-choice-index`,children:r+1}),(0,K.jsxs)(`span`,{className:`a2ui-choice-copy`,children:[(0,K.jsx)(`strong`,{children:t.label}),t.description&&(0,K.jsx)(`small`,{children:t.description})]})]},t.value)}),m&&(0,K.jsxs)(`label`,{className:`a2ui-other${h?` active`:``}`,children:[(0,K.jsx)(`span`,{className:`a2ui-other-icon`,children:(0,K.jsx)(Ge,{size:14})}),(0,K.jsx)(`input`,{type:t.secret?`password`:`text`,"aria-label":`${String(t.label||t.title||s)}自定义输入`,value:h,placeholder:String(t.other_placeholder||t.otherPlaceholder||`其他,请输入…`),disabled:u,onChange:e=>{let t=e.target.value;c.current.add(s),o(e=>({...e,[s]:t})),n||i(e=>({...e,[s]:``}))}})]})]})]})},h=t=>{let n=e.components[t];if(!n)return null;let i=n.component,a=X0(n).map(e=>(0,K.jsx)(`div`,{children:h(e)},e));if(i===`Card`)return(0,K.jsxs)(`section`,{className:`a2ui-card`,children:[!!n.title&&(0,K.jsx)(`h3`,{children:String(n.title)}),!!n.body&&(0,K.jsx)(`p`,{children:String(n.body)}),a.length>0&&(0,K.jsx)(`div`,{className:`a2ui-card-content`,children:a})]});if([`Column`,`Row`].includes(i))return(0,K.jsx)(`div`,{className:`a2ui-layout ${i.toLowerCase()}`,children:a});if(i===`Text`)return(0,K.jsx)(`p`,{className:`a2ui-text ${String(n.variant||`body`)}`,children:String(n.text||``)});if([`TextField`,`Input`].includes(i)){let e=String(n.name||n.id);return(0,K.jsxs)(`label`,{className:`a2ui-field`,children:[(0,K.jsx)(`span`,{children:String(n.label||n.title||e)}),(0,K.jsx)(`input`,{value:String(r[e]??n.value??``),placeholder:String(n.placeholder||``),disabled:u,onChange:t=>f(e,t.target.value)})]})}if([`Select`,`RadioGroup`,`MultipleChoice`].includes(i)){let e=String(n.name||n.id),t=Y0(n.options),a=i===`MultipleChoice`&&!!n.multiple;return i===`RadioGroup`||i===`MultipleChoice`?m(n,a):(0,K.jsxs)(`div`,{className:`a2ui-field`,children:[(0,K.jsx)(`span`,{children:String(n.label||n.title||`请选择`)}),(0,K.jsx)(kh,{ariaLabel:String(n.label||n.title||`请选择`),value:String(r[e]??n.value??``),options:t,disabled:u,onValueChange:t=>f(e,t)})]})}if(i===`CheckboxGroup`)return m(n,!0);if(i===`ApprovalBar`)return(0,K.jsxs)(`div`,{className:`a2ui-approval`,role:`group`,"aria-label":`批准操作`,children:[(0,K.jsxs)(`span`,{className:`a2ui-approval-summary`,children:[(0,K.jsx)(tt,{size:15}),String(n.summary||n.tool_name||`请确认此操作`)]}),(0,K.jsxs)(`span`,{className:`a2ui-actions`,children:[(0,K.jsxs)(`button`,{type:`button`,className:`secondary`,disabled:u,onClick:()=>p(`deny`),children:[(0,K.jsx)(mt,{size:14}),String(n.deny_label||`拒绝`)]}),(0,K.jsxs)(`button`,{type:`button`,disabled:u,onClick:()=>p(`approve`),children:[(0,K.jsx)(z,{size:14}),String(n.approve_label||`批准`)]})]})]});if(i===`Form`)return(0,K.jsxs)(`form`,{className:`a2ui-form`,onSubmit:e=>{e.preventDefault(),p(`submit`)},children:[!!n.title&&(0,K.jsx)(`strong`,{children:String(n.title)}),a,(0,K.jsx)(`div`,{className:`a2ui-form-actions`,children:(0,K.jsxs)(`button`,{type:`submit`,disabled:u,children:[String(n.submit_label||`提交`),(0,K.jsx)(de,{size:14})]})})]});if(i===`Button`){let e=String(n.action||n.name||n.id||`submit`);return(0,K.jsx)(`button`,{type:`button`,disabled:u,onClick:()=>p(e),children:String(n.label||n.text||`提交`)})}return(0,K.jsxs)(`div`,{className:`a2ui-unsupported`,children:[`此卡片包含暂不支持的组件:`,i||`unknown`]})},g=d.map(e=>(0,K.jsx)(`div`,{children:h(e)},e));return(0,K.jsxs)(`div`,{className:`a2ui-surface${l?` pending`:` resolved`}`,"data-surface-id":e.id,children:[g,e.interaction&&!l&&(0,K.jsxs)(`div`,{className:`a2ui-resolved`,children:[(0,K.jsx)(z,{size:14}),`已提交`]})]})}var Q0=[{id:`plan`,slash:`/plan`,label:`计划模式`,description:`下一轮只分析并形成可执行计划`},{id:`goal`,slash:`/goal`,label:`设定长期目标`,description:`启动可暂停、可持续的 Codex Goal`},{id:`default`,slash:`/default`,label:`默认模式`,description:`返回直接执行模式`}];function $0(e){if(!e.startsWith(`/`)||/\s/.test(e))return[];let t=e.toLocaleLowerCase();return Q0.filter(e=>e.slash.startsWith(t))}function e2(e){let t=e.trim();return t===`/plan`?{kind:`toggle-plan`}:t===`/default`?{kind:`set-default`}:t===`/goal`||t.startsWith(`/goal `)?{kind:`goal`,objective:t.slice(5).trim()}:{kind:`message`,text:t}}function t2(e,t){let n=[];e.trim()&&n.push({type:`input_text`,text:e.trim()});for(let e of t)e.kind===`image`&&e.dataUrl?n.push({type:`input_image`,image_url:e.dataUrl,filename:e.name}):e.kind===`text`&&n.push({type:`input_text`,text:`\n\n\n${e.text||``}\n`});return[{role:`user`,content:n}]}var n2=new Set([`txt`,`md`,`json`,`yaml`,`yml`,`csv`,`ts`,`tsx`,`js`,`jsx`,`py`,`go`,`rs`,`java`,`sh`,`css`,`html`,`xml`,`toml`,`ini`,`log`]),r2=[`image/*`,`.txt`,`.md`,`.json`,`.yaml`,`.yml`,`.csv`,`.ts`,`.tsx`,`.js`,`.jsx`,`.py`,`.go`,`.rs`,`.java`,`.sh`,`.css`,`.html`,`.xml`,`.toml`,`.ini`,`.log`].join(`,`);function i2(e){return new TextEncoder().encode(JSON.stringify(t2(``,e))).byteLength}function a2(e){return e.split(`.`).at(-1)?.toLocaleLowerCase()||``}function o2(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(Error(`无法读取附件 ${e.name}`)),r.onload=()=>t(String(r.result||``)),r.readAsDataURL(e)})}function s2(e){return typeof e.text==`function`?e.text():new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(Error(`无法读取附件 ${e.name}`)),r.onload=()=>t(String(r.result||``)),r.readAsText(e)})}async function c2(e){let t={id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,name:e.name,mimeType:e.type||`application/octet-stream`,size:e.size};if(e.type.startsWith(`image/`))return{...t,kind:`image`,dataUrl:await o2(e)};if(e.type.startsWith(`text/`)||n2.has(a2(e.name)))return{...t,kind:`text`,text:await s2(e)};throw Error(`暂不支持 ${e.name};请添加图片或 UTF-8 文本/代码文件`)}function l2(e){return e<1024?`${e} B`:`${Math.max(.1,e/1024).toFixed(1)} KiB`}function u2({id:e}){return e===`goal`?(0,K.jsx)(ot,{size:16}):e==="default"?(0,K.jsx)(ut,{size:16}):(0,K.jsx)(Oe,{size:16})}function d2({disabled:e,onTogglePlan:t,onStartGoal:n,onFiles:r,active:i=!0,attachmentAccept:a=r2,attachmentLimit:o=4}){let c=(0,s.useRef)(null),[l,u]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{i||u(!1)},[i]),(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`input`,{ref:c,className:`composer-file-input`,type:`file`,tabIndex:-1,"aria-label":`选择本轮附件`,multiple:!0,accept:a||void 0,onChange:e=>{let t=[...e.target.files||[]];e.target.value=``,t.length&&r(t)}}),(0,K.jsxs)(ed,{open:l,onOpenChange:u,children:[(0,K.jsx)(td,{asChild:!0,children:(0,K.jsx)(`button`,{className:`chat-plus-trigger`,type:`button`,disabled:e,"aria-label":`添加附件或运行控制`,title:`添加附件或运行控制`,children:(0,K.jsx)(qe,{size:17})})}),(0,K.jsx)(nd,{children:(0,K.jsxs)(rd,{className:`composer-action-menu`,side:`top`,align:`start`,sideOffset:10,collisionPadding:12,children:[(0,K.jsx)(id,{className:`composer-action-heading`,children:`添加到本轮`}),(0,K.jsxs)(ad,{className:`composer-action-item`,onSelect:()=>c.current?.click(),children:[(0,K.jsx)(Ue,{size:16}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:`添加附件`}),(0,K.jsxs)(`small`,{children:[`本轮最多 `,o,` 个`]})]})]}),(0,K.jsx)(ld,{className:`composer-action-separator`}),(0,K.jsx)(id,{className:`composer-action-heading`,children:`运行方式`}),(0,K.jsxs)(ad,{className:`composer-action-item`,onSelect:t,children:[(0,K.jsx)(Oe,{size:16}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:`计划模式`}),(0,K.jsx)(`small`,{children:`下一轮使用 Codex Plan`})]})]}),(0,K.jsxs)(ad,{className:`composer-action-item`,onSelect:n,children:[(0,K.jsx)(ot,{size:16}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:`设定长期目标`}),(0,K.jsx)(`small`,{children:`朝可验证的停止条件持续推进`})]})]})]})})]})]})}function f2({input:e,activeIndex:t,onSelect:n}){let r=$0(e);return r.length?(0,K.jsx)(sb,{className:`composer-command-menu`,shouldFilter:!1,"aria-label":`斜杠命令`,children:(0,K.jsx)(sb.List,{children:r.map((e,r)=>(0,K.jsxs)(sb.Item,{value:e.id,"data-active":r===t?`true`:`false`,onSelect:()=>n(e.id),children:[(0,K.jsx)(u2,{id:e.id}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:e.label}),(0,K.jsx)(`small`,{children:e.description})]}),(0,K.jsx)(`kbd`,{children:e.slash})]},e.id))})}):null}var p2=[{value:``,label:`自动`,description:`使用模型或 Agent 的默认推理强度`},{value:`low`,label:`低`,description:`优先缩短响应时间`},{value:`medium`,label:`中`,description:`平衡速度与推理深度`},{value:`high`,label:`高`,description:`优先更充分的推理`}];function m2({value:e,onChange:t,active:n}){let[r,i]=(0,s.useState)(!1);(0,s.useEffect)(()=>{n||i(!1)},[n]);let a=J0(e),o=e===`ask`?(0,K.jsx)(Te,{size:15}):e===`full`?(0,K.jsx)($e,{size:15}):(0,K.jsx)(et,{size:15});return(0,K.jsxs)(ed,{open:r,onOpenChange:i,children:[(0,K.jsx)(td,{asChild:!0,children:(0,K.jsxs)(`button`,{className:`chat-approval-trigger ${e}`,type:`button`,"aria-label":`批准模式:${a.label}`,title:`${a.label};下一轮生效`,children:[o,(0,K.jsx)(`span`,{children:a.compactLabel}),(0,K.jsx)(B,{size:13})]})}),(0,K.jsx)(nd,{children:(0,K.jsxs)(rd,{className:`chat-approval-menu`,side:`top`,sideOffset:9,align:`start`,collisionPadding:12,children:[(0,K.jsxs)(`div`,{className:`chat-approval-menu-heading`,children:[(0,K.jsx)(`strong`,{children:`如何批准 Agent 操作?`}),(0,K.jsx)(`span`,{children:`下一轮生效`})]}),(0,K.jsx)(od,{value:e,onValueChange:e=>t(K0(e)),children:G0.map(e=>(0,K.jsxs)(sd,{value:e.value,className:`chat-approval-option ${e.value}`,children:[(0,K.jsx)(`span`,{className:`chat-approval-option-icon`,children:e.value===`ask`?(0,K.jsx)(Te,{size:17}):e.value===`full`?(0,K.jsx)($e,{size:17}):(0,K.jsx)(et,{size:17})}),(0,K.jsxs)(`span`,{className:`chat-approval-option-copy`,children:[(0,K.jsx)(`strong`,{children:e.label}),(0,K.jsx)(`small`,{children:e.description})]}),(0,K.jsx)(cd,{className:`chat-approval-indicator`,children:(0,K.jsx)(z,{size:16})})]},e.value))})]})})]})}function h2({models:e,model:t,reasoningEffort:n,disabled:r,active:i,onModelChange:a,onReasoningEffortChange:o,onConfigure:c}){let[l,u]=(0,s.useState)(!1);(0,s.useEffect)(()=>{i||u(!1)},[i]);let d=e.find(e=>e.id===t),f=d?.label||t||`未绑定模型`,p=d?.reasoningEfforts||[],m=p.length>0,h=p2.find(e=>e.value===n)?.label||`自动`;return e.length===0?(0,K.jsxs)(`button`,{className:`chat-model-trigger missing`,type:`button`,"aria-label":`当前 Agent 未绑定模型,前往配置`,title:`当前 Agent 未绑定模型`,onClick:c,children:[(0,K.jsx)(I,{size:14}),(0,K.jsx)(`span`,{children:`未绑定模型`})]}):(0,K.jsxs)(ed,{open:l,onOpenChange:u,children:[(0,K.jsx)(td,{asChild:!0,children:(0,K.jsxs)(`button`,{className:`chat-model-trigger chat-model-summary-trigger`,type:`button`,disabled:r,"aria-label":m?`模型 ${f},推理强度 ${h}`:`模型 ${f}`,title:`选择模型与推理强度;下一轮生效`,children:[(0,K.jsx)(`span`,{children:f}),m&&(0,K.jsx)(`b`,{children:h}),(0,K.jsx)(B,{size:13})]})}),(0,K.jsx)(nd,{children:(0,K.jsxs)(rd,{className:`chat-model-menu chat-model-reasoning-menu`,side:`top`,sideOffset:9,align:`end`,collisionPadding:12,children:[(0,K.jsxs)(ud,{children:[(0,K.jsxs)(dd,{className:`chat-model-settings-row`,children:[(0,K.jsx)(`strong`,{children:`模型`}),(0,K.jsx)(`span`,{children:f}),(0,K.jsx)(H,{size:16})]}),(0,K.jsx)(nd,{children:(0,K.jsx)(fd,{className:`chat-model-menu chat-model-submenu`,sideOffset:8,alignOffset:-6,collisionPadding:12,children:(0,K.jsx)(od,{value:t,onValueChange:a,children:e.map(e=>(0,K.jsxs)(sd,{value:e.id,className:`chat-model-option`,children:[(0,K.jsx)(`span`,{children:e.label}),(0,K.jsx)(cd,{children:(0,K.jsx)(z,{size:15})})]},e.id))})})})]}),m&&(0,K.jsxs)(ud,{children:[(0,K.jsxs)(dd,{className:`chat-model-settings-row`,children:[(0,K.jsx)(`strong`,{children:`推理强度`}),(0,K.jsx)(`span`,{children:h}),(0,K.jsx)(H,{size:16})]}),(0,K.jsx)(nd,{children:(0,K.jsx)(fd,{className:`chat-model-menu chat-model-submenu chat-reasoning-submenu`,sideOffset:8,alignOffset:-6,collisionPadding:12,children:(0,K.jsx)(od,{value:n,onValueChange:e=>o(e),children:p2.filter(e=>e.value===``||p.includes(e.value)).map(e=>(0,K.jsxs)(sd,{value:e.value,className:`chat-reasoning-option`,children:[(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:e.label}),(0,K.jsx)(`small`,{children:e.description})]}),(0,K.jsx)(cd,{children:(0,K.jsx)(z,{size:15})})]},e.value||`auto`))})})})]})]})})]})}function g2({input:e,placeholder:t,disabled:n,active:r,attachments:i,mode:a,approvalMode:o,models:c,model:l,reasoningEffort:u,commandIndex:d=0,contextControl:f,sendControl:p,canSend:m,textareaRef:h,onInputChange:g,onFiles:_,onRemoveAttachment:v,onSetMode:y,onStartGoal:b,onApprovalModeChange:x,onModelChange:S,onReasoningEffortChange:C,onConfigureModel:w,onCommandSelect:T,onCommandIndexChange:E,onSend:D,attachmentAccept:O,attachmentLimit:k=4}){let A=(0,s.useRef)(null),j=h||A,M=$0(e);function N(e){if(M.length&&[`ArrowDown`,`ArrowUp`].includes(e.key)){e.preventDefault();let t=e.key===`ArrowDown`?1:-1;E?.((d+t+M.length)%M.length);return}if(M.length&&e.key===`Escape`){e.preventDefault(),g(``);return}if(e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing){if(e.preventDefault(),M.length){T(M[Math.min(d,M.length-1)].id);return}D()}}return(0,K.jsxs)(`div`,{className:`chat-composer`,"data-ui":`sender`,children:[(0,K.jsx)(f2,{input:e,activeIndex:d,onSelect:T}),i.length>0&&(0,K.jsx)(`div`,{className:`chat-attachment-list`,"aria-label":`本轮附件`,role:`list`,children:i.map(e=>(0,K.jsxs)(`article`,{className:`chat-attachment-chip ${e.kind}`,role:`listitem`,children:[e.kind===`image`&&e.previewUrl?(0,K.jsx)(`img`,{src:e.previewUrl,alt:`${e.name} 预览`}):(0,K.jsx)(`span`,{className:`chat-attachment-icon`,children:(0,K.jsx)(ye,{size:15})}),(0,K.jsxs)(`span`,{className:`chat-attachment-copy`,children:[(0,K.jsx)(`strong`,{children:e.name}),(0,K.jsxs)(`small`,{children:[e.kind===`image`?`图片`:e.kind===`text`?`文本`:`文件`,` · `,l2(e.size),` · 已就绪`]})]}),(0,K.jsx)(`button`,{type:`button`,"aria-label":`移除附件 ${e.name}`,onClick:()=>v(e.id),children:(0,K.jsx)(mt,{size:13})})]},e.id))}),(0,K.jsx)(`textarea`,{ref:j,rows:1,value:e,onChange:e=>g(e.target.value),onKeyDown:N,placeholder:t,"aria-label":`消息`,disabled:n}),(0,K.jsxs)(`div`,{className:`chat-composer-footer`,children:[(0,K.jsx)(d2,{disabled:n,active:r,onTogglePlan:()=>y(a===`plan`?`default`:`plan`),onStartGoal:b,onFiles:_,attachmentAccept:O,attachmentLimit:k}),a===`plan`&&(0,K.jsxs)(`button`,{className:`chat-mode-chip`,type:`button`,title:`点击返回默认模式`,onClick:()=>y(`default`),children:[(0,K.jsx)(Oe,{size:14}),(0,K.jsx)(`span`,{children:`计划`})]}),(0,K.jsx)(m2,{value:o,onChange:x,active:r}),(0,K.jsx)(`span`,{className:`chat-composer-spacer`}),f,(0,K.jsx)(h2,{models:c,model:l,reasoningEffort:u,disabled:n,active:r,onModelChange:S,onReasoningEffortChange:C,onConfigure:w}),p||(0,K.jsx)(`button`,{className:`chat-send-button`,type:`button`,"aria-label":`发送消息`,title:`发送消息`,onClick:D,disabled:!m||n,children:(0,K.jsx)(Xe,{size:15})})]})]})}function _2(e){let t=Math.max(0,Math.floor(e/1e3)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n?`${n}时 ${r}分`:r?`${r}分 ${i}秒`:`${i}秒`}function v2(e){if(!e)return`刚刚启动`;let t=new Date(e);return Number.isNaN(t.getTime())?`刚刚启动`:`${new Intl.DateTimeFormat(`zh-CN`,{hour:`2-digit`,minute:`2-digit`,hour12:!1}).format(t)} 启动`}function y2({mode:e,status:t,objective:n,startedAt:r,elapsedMs:i,now:a,onPause:o,onResume:c,onStop:l}){let[u,d]=(0,s.useState)(a??Date.now()),f=(0,s.useMemo)(()=>r?Date.parse(r):NaN,[r]),p=t===`running`,m=t===`waiting`,h=t===`paused`,g=e===`goal`?ot:Oe,_=m?e===`goal`?`目标等待输入`:`计划等待输入`:h?e===`goal`?`目标已暂停`:`计划已暂停`:e===`goal`?`目标执行中`:`正在规划`,v=i??(Number.isFinite(f)?Math.max(0,u-f):0);return(0,s.useEffect)(()=>{if(!p||a!=null)return;let e=window.setInterval(()=>d(Date.now()),1e3);return()=>window.clearInterval(e)},[a,p]),(0,K.jsxs)(`div`,{className:`runtime-mode-bar ${e} ${t}`,"data-testid":`runtime-mode-bar`,children:[(0,K.jsx)(`span`,{className:`runtime-mode-icon`,children:(0,K.jsx)(g,{size:15})}),(0,K.jsxs)(`div`,{className:`runtime-mode-copy`,children:[(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:_}),(0,K.jsx)(`span`,{children:n})]}),(0,K.jsxs)(`small`,{children:[(0,K.jsx)(ae,{size:12}),` `,v2(r),` · `,_2(v)]})]}),(0,K.jsxs)(`div`,{className:`runtime-mode-actions`,children:[p&&o&&(0,K.jsx)(`button`,{type:`button`,onClick:o,"aria-label":`暂停${e===`goal`?`目标`:`计划`}`,title:`暂停`,children:(0,K.jsx)(We,{size:14,fill:`currentColor`})}),h&&c&&(0,K.jsx)(`button`,{type:`button`,onClick:c,"aria-label":`继续${e===`goal`?`目标`:`计划`}`,title:`继续`,children:(0,K.jsx)(Ke,{size:14,fill:`currentColor`})}),(0,K.jsx)(`button`,{type:`button`,onClick:l,"aria-label":`结束${e===`goal`?`目标`:`计划`}`,title:`结束`,children:(0,K.jsx)(it,{size:13,fill:`currentColor`})})]})]})}function b2(e){return e.replace(/(api[_ -]?key|authorization|bearer)(\s*[:=]\s*)[^\s,;]+/gi,`$1$2***`).replace(/\bsk-[A-Za-z0-9_-]{6,}\b/g,`sk-***`).replace(/\b[A-Za-z0-9_-]{24,}\.{0,3}\b/g,e=>e.startsWith(`run_`)||e.startsWith(`resp_`)?e:`***`)}function x2(e){let t=e.toLocaleLowerCase();return/api.?key|credential|auth|unauthorized|401|403|凭证/.test(t)?{title:`模型凭证无效或已过期`,message:`请更新模型 API Key,验证连接后重新运行本轮消息。`,recoverable:`credential`}:/must configure model|model.*not configured|未配置模型|未绑定模型/.test(t)?{title:`当前 Agent 尚未绑定模型`,message:`先在 Agent 配置中绑定一个可用模型,再重新运行本轮消息。`,recoverable:`model`}:{title:`Agent 运行失败`,message:`本轮没有生成结果。可以重新运行;若问题持续,请展开技术详情定位原因。`,recoverable:`retry`}}function S2(e){let t=e?.capabilities?.reasoning_efforts;return Array.isArray(t)?t.filter(e=>e===`low`||e===`medium`||e===`high`):[]}function C2({usedTokens:e,limitTokens:t,known:n,percent:r}){let i=(0,s.useId)(),a=s0({usedTokens:e,limitTokens:t,known:n,percent:r}),o=`${a.title}:${a.value},${a.detail}`;return(0,K.jsxs)(`span`,{className:`chat-context-ring${n?``:` unknown`}`,role:`img`,"aria-label":o,"aria-describedby":i,tabIndex:0,children:[(0,K.jsxs)(`svg`,{viewBox:`0 0 24 24`,"aria-hidden":`true`,children:[(0,K.jsx)(`circle`,{className:`chat-context-track`,cx:`12`,cy:`12`,r:`8.5`,pathLength:`100`}),(0,K.jsx)(`circle`,{className:`chat-context-value`,cx:`12`,cy:`12`,r:`8.5`,pathLength:`100`,strokeDasharray:`${n?r:12} ${n?100-r:88}`})]}),(0,K.jsxs)(`span`,{id:i,role:`tooltip`,className:`chat-context-tooltip`,children:[(0,K.jsx)(`span`,{children:a.title}),(0,K.jsx)(`strong`,{children:a.value}),(0,K.jsx)(`small`,{children:a.detail})]})]})}function w2(e){return`${e}_${typeof crypto.randomUUID==`function`?crypto.randomUUID().replaceAll(`-`,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`}`}function T2(e){if(!e)return`刚刚`;let t=new Date(e);if(Number.isNaN(t.getTime()))return``;let n=new Date;return t.toDateString()===n.toDateString()?new Intl.DateTimeFormat(`zh-CN`,{hour:`2-digit`,minute:`2-digit`}).format(t):new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`}).format(t)}function E2(e){if(!e)return`刚刚`;let t=new Date(e);return Number.isNaN(t.getTime())?``:new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(t)}function D2(e,t=34){let n=e.replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t)}…`:n}function O2(e){if(!Number.isFinite(e)||Number(e)<0)return``;let t=Number(e)/1e3;return t<10?`${t.toFixed(1)} 秒`:`${Math.round(t)} 秒`}async function k2(e){let t=await e.clone().json().catch(()=>null);return t?.error?.message||t?.Message||t?.message||`请求失败(HTTP ${e.status})`}function A2({error:e,onConfigure:t,onOpenSettings:n,onRetry:r}){let i=x2(e),a=i.recoverable===`credential`?n:t;return(0,K.jsxs)(`div`,{className:`chat-run-error`,role:`alert`,children:[(0,K.jsx)(`span`,{className:`chat-run-error-icon`,children:(0,K.jsx)($e,{size:17})}),(0,K.jsxs)(`div`,{className:`chat-run-error-copy`,children:[(0,K.jsx)(`strong`,{children:i.title}),(0,K.jsx)(`p`,{children:i.message}),(0,K.jsxs)(`div`,{className:`chat-run-error-actions`,children:[i.recoverable!==`retry`&&a&&(0,K.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:a,children:i.recoverable===`credential`?`配置凭证`:`配置 Agent`}),r&&(0,K.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:r,children:`重新运行`})]}),(0,K.jsxs)(`details`,{className:`chat-run-error-detail`,children:[(0,K.jsx)(`summary`,{children:`技术详情`}),(0,K.jsx)(`pre`,{children:b2(e)})]})]})]})}function j2(e){return e===`command`?(0,K.jsx)(st,{size:14}):e===`approval`?(0,K.jsx)($e,{size:14}):(0,K.jsx)(pt,{size:14})}function M2(e){return e.kind===`command`?`命令`:e.kind===`approval`?`人工确认`:`工具`}function N2(e){let t=e.replace(/```[\s\S]*?```/g,` `).replace(/[`#>*_[\]()-]+/g,` `).replace(/\s+/g,` `).trim();return t?D2(t.split(/[。!?!?]+|\.(?=\s|$)/).map(e=>e.trim()).filter(Boolean).at(-1)||t,72):``}function P2({reasoning:e,activities:t,streaming:n=!1,durationMs:r}){if(!e&&t.length===0)return null;let i=t.find(e=>e.status===`running`||e.status===`waiting`),a=O2(r),o=n?i?`${i.status===`waiting`?`等待确认`:`正在处理`} · ${i.title}`:N2(e)?`正在思考 · ${N2(e)}`:`正在思考`:a?`已思考(用时 ${a})`:t.length>0?`已完成思考 · ${t.length} 项操作`:`查看思考过程`;return(0,K.jsxs)(`details`,{className:`chat-processing-group`,open:n,"data-ui":`think`,children:[(0,K.jsxs)(`summary`,{children:[(0,K.jsx)(I,{size:15,className:`chat-processing-icon`}),(0,K.jsx)(`span`,{children:o}),n&&(0,K.jsx)(ke,{size:13,className:`animate-spin`}),(0,K.jsx)(B,{size:14,className:`details-chevron`})]}),(0,K.jsxs)(`div`,{className:`chat-processing-content`,children:[e&&(0,K.jsx)(`div`,{className:`chat-reasoning-content`,children:e}),t.map(e=>(0,K.jsx)(F2,{activity:e},e.id))]})]})}function F2({activity:e}){let t=!!e.detail||Object.keys(e.data).length>2,n=(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`chat-activity-icon`,children:j2(e.kind)}),(0,K.jsxs)(`span`,{className:`chat-activity-copy`,children:[(0,K.jsx)(`small`,{children:M2(e)}),(0,K.jsx)(`strong`,{children:e.title})]}),(0,K.jsx)(`span`,{className:`chat-activity-status ${e.status}`,children:e.status===`completed`?`已完成`:e.status===`failed`?`失败`:e.status===`waiting`?`等待确认`:`运行中`})]});return t?(0,K.jsxs)(`details`,{className:`chat-activity-card ${e.kind}`,children:[(0,K.jsxs)(`summary`,{children:[n,(0,K.jsx)(B,{size:14,className:`details-chevron`})]}),(0,K.jsx)(`pre`,{children:e.detail||JSON.stringify(e.data,null,2)})]}):(0,K.jsx)(`div`,{className:`chat-activity-card ${e.kind}`,children:(0,K.jsx)(`div`,{className:`chat-activity-row`,children:n})})}function I2({surfaces:e,onInteraction:t}){let n=e.filter(e=>e.interaction?.status===`pending`);return n.length?(0,K.jsxs)(`div`,{className:`chat-pending-interactions`,"aria-label":`待处理确认`,"data-ui":`interaction-tray`,children:[(0,K.jsxs)(`div`,{className:`chat-pending-interactions-heading`,children:[(0,K.jsx)($e,{size:16}),(0,K.jsx)(`strong`,{children:`等待你的确认`}),(0,K.jsx)(`span`,{children:`处理后将继续当前对话`})]}),n.map(e=>(0,K.jsx)(Z0,{surface:e,onSubmit:t},e.id))]}):null}function L2({runId:e,status:t,onInteraction:n}){let[r,i]=(0,s.useState)([]);return(0,s.useEffect)(()=>{let n=!1;async function r(){try{let t=await g(`/api/v1/runs/${encodeURIComponent(e)}/events`);if(!t.ok)return;let r=[],a=S0(e=>{let{type:t,...n}=e;r.push({id:r.length+1,type:t,data:n})});a.push(await t.text()),a.finish(),n||i(r)}catch{}}r();let a=t===`WAITING_INPUT`?window.setInterval(r,500):null;return()=>{n=!0,a!==null&&window.clearInterval(a)}},[e,t]),(0,K.jsx)(I2,{surfaces:x0(r),onInteraction:(t,r,i)=>n(e,t,r,i)})}function R2({runId:e,status:t,durationMs:n,showOutput:r=!1,onInteraction:i}){let[a,o]=(0,s.useState)([]),[c,l]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let n=!1;async function r(){try{let t=await g(`/api/v1/runs/${encodeURIComponent(e)}/events`);if(!t.ok)throw Error(await k2(t));let r=[],i=S0(e=>{let{type:t,...n}=e;r.push({id:r.length+1,type:t,data:n})});i.push(await t.text()),i.finish(),n||o(r)}catch{}finally{n||l(!0)}}r();let i=[`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(String(t))?window.setInterval(r,500):null;return()=>{n=!0,i!==null&&window.clearInterval(i)}},[e,t]);let u=(0,s.useMemo)(()=>k0(a),[a]),d=(0,s.useMemo)(()=>x0(a),[a]),f=d.filter(e=>e.interaction?.status!==`pending`);return!c&&[`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(String(t))?(0,K.jsxs)(`div`,{className:`chat-activity-loading`,children:[(0,K.jsx)(ke,{size:13,className:`animate-spin`}),` 正在读取运行事件`]}):!u.reasoning&&!u.output&&u.activities.length===0&&d.length===0?t===`RUNNING`?(0,K.jsxs)(`span`,{className:`message-loading`,"aria-label":`正在生成`,children:[(0,K.jsx)(`i`,{}),(0,K.jsx)(`i`,{}),(0,K.jsx)(`i`,{})]}):null:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(P2,{reasoning:u.reasoning,activities:u.activities,streaming:t===`RUNNING`,durationMs:n}),f.map(t=>(0,K.jsx)(Z0,{surface:t,onSubmit:(t,n,r)=>i(e,t,n,r)},t.id)),r&&u.output&&(0,K.jsx)(B2,{children:u.output})]})}function z2({children:e}){let[t,n]=(0,s.useState)(!1),r=s.Children.toArray(e)[0]??null,i=(0,s.isValidElement)(r)?r.props:{},a=i.className?.replace(/^language-/,``)||`代码`,o=String(i.children??``).replace(/\n$/,``);async function c(){if(!(!navigator.clipboard||!o))try{await navigator.clipboard.writeText(o),n(!0),window.setTimeout(()=>n(!1),1600)}catch{n(!1)}}return(0,K.jsxs)(`div`,{className:`chat-code-block`,children:[(0,K.jsxs)(`div`,{className:`chat-code-header`,children:[(0,K.jsx)(`span`,{children:a}),(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{c()},"aria-label":t?`已复制代码`:`复制代码`,children:[t?(0,K.jsx)(z,{size:13}):(0,K.jsx)(ue,{size:13}),(0,K.jsx)(`span`,{children:t?`已复制`:`复制`})]})]}),(0,K.jsx)(`pre`,{children:e})]})}function B2({children:e,streaming:t=!1}){return(0,K.jsx)(`div`,{className:`chat-markdown${t?` streaming`:``}`,children:(0,K.jsx)(uP,{remarkPlugins:[mL],components:{a:({href:e,children:t})=>(0,K.jsx)(`a`,{href:e,target:`_blank`,rel:`noreferrer`,children:t}),code:({className:e,children:t})=>(0,K.jsx)(`code`,{className:e,children:t}),pre:({children:e})=>(0,K.jsx)(z2,{children:e})},children:e})})}function V2({run:e,agentName:t,agentAppearance:n,onInteraction:r,onConfigure:i,onOpenSettings:a,onRetry:o}){let s=e.status&&![`COMPLETED`,`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(e.status),c=e.output||e.error?.message||(s?`运行状态:${e.status}`:``);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`article`,{className:`message user`,"data-ui":`bubble`,"data-role":`user`,children:[(0,K.jsxs)(`div`,{className:`message-meta`,children:[(0,K.jsx)(`strong`,{children:`你`}),(0,K.jsx)(`span`,{children:E2(e.startedAt)})]}),(0,K.jsx)(`div`,{className:`message-content`,children:(0,K.jsx)(`span`,{className:`plain-message`,children:e.input})})]}),(0,K.jsxs)(`article`,{className:`message assistant${s?` error`:``}`,"data-ui":`bubble`,"data-role":`assistant`,children:[(0,K.jsxs)(`div`,{className:`message-meta`,children:[(0,K.jsx)(_t,{name:t,appearance:n,size:`xs`}),(0,K.jsx)(`strong`,{children:t}),(0,K.jsx)(`span`,{children:E2(e.completedAt||e.startedAt)}),e.model&&(0,K.jsx)(`span`,{className:`message-model`,children:e.model})]}),(0,K.jsxs)(`div`,{className:`message-content`,children:[(0,K.jsx)(R2,{runId:e.id,status:e.status,durationMs:e.durationMs,showOutput:[`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(String(e.status)),onInteraction:r}),[`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(String(e.status))?null:s?(0,K.jsx)(A2,{error:c,onConfigure:i,onOpenSettings:a,onRetry:()=>o(e.input)}):c?(0,K.jsx)(B2,{children:c}):null]})]})]})}function H2({prompt:e,stream:t,agentName:n,agentAppearance:r,onInteraction:i,onConfigure:a,onOpenSettings:o,onRetry:s}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`article`,{className:`message user`,"data-ui":`bubble`,"data-role":`user`,children:[(0,K.jsxs)(`div`,{className:`message-meta`,children:[(0,K.jsx)(`strong`,{children:`你`}),(0,K.jsx)(`span`,{children:`刚刚`})]}),(0,K.jsx)(`div`,{className:`message-content`,children:(0,K.jsx)(`span`,{className:`plain-message`,children:e})})]}),(0,K.jsxs)(`article`,{className:`message assistant streaming-turn${t.status===`failed`?` error`:``}`,"data-ui":`bubble`,"data-role":`assistant`,children:[(0,K.jsxs)(`div`,{className:`message-meta`,children:[(0,K.jsx)(_t,{name:n,appearance:r,size:`xs`}),(0,K.jsx)(`strong`,{children:n}),(0,K.jsx)(`span`,{children:t.status===`streaming`?`正在生成`:`刚刚`})]}),(0,K.jsxs)(`div`,{className:`message-content`,children:[(0,K.jsx)(P2,{reasoning:t.reasoning,activities:t.activities,streaming:t.status===`streaming`}),t.surfaces.filter(e=>e.interaction?.status!==`pending`).map(e=>(0,K.jsx)(Z0,{surface:e,onSubmit:(e,n,r)=>i(t.runId,e,n,r)},e.id)),t.output?(0,K.jsx)(B2,{streaming:t.status===`streaming`,children:t.output}):t.error?(0,K.jsx)(A2,{error:t.error,onConfigure:a,onOpenSettings:o,onRetry:()=>s(e)}):t.status===`cancelled`?(0,K.jsx)(`span`,{className:`plain-message`,children:`运行已停止`}):(0,K.jsxs)(`span`,{className:`message-loading`,children:[(0,K.jsx)(`i`,{}),(0,K.jsx)(`i`,{}),(0,K.jsx)(`i`,{})]})]})]})]})}function U2({agentId:e,agentName:t,agentAppearance:n,active:r=!0,refreshTick:i=0,onRunChanged:a,onConfigureAgent:o,onOpenSettings:c}){let[l,u]=(0,s.useState)([]),[d,f]=(0,s.useState)([]),[p,m]=(0,s.useState)(``),[h,_]=(0,s.useState)(``),[v,y]=(0,s.useState)(``),[b,x]=(0,s.useState)(``),[S,C]=(0,s.useState)(`risk`),[w,T]=(0,s.useState)(`default`),[E,D]=(0,s.useState)(``),[O,k]=(0,s.useState)([]),[A,j]=(0,s.useState)(0),[M,P]=(0,s.useState)(null),[F,I]=(0,s.useState)(``),[L,R]=(0,s.useState)(!0),[z,B]=(0,s.useState)(``),[V,H]=(0,s.useState)(!1),[ee,U]=(0,s.useState)(!1),te=(0,s.useRef)(null),W=(0,s.useRef)(null),ne=(0,s.useRef)(null),re=(0,s.useRef)(!0),G=(0,s.useRef)(new Map),ie=(0,s.useMemo)(()=>p0(l,e),[l,e]),ae=(0,s.useMemo)(()=>{let e=v.trim().toLocaleLowerCase();return e?ie.filter(t=>t.title.toLocaleLowerCase().includes(e)):ie},[v,ie]),oe=ie.find(e=>e.id===h)?.runs||[],se=u0(oe),ce=M?.status||String(se?.status||``).toLowerCase(),le=[`streaming`,`paused`,`waiting_input`].includes(ce)||!!se,ue=d0(oe,M&&F&&M.sessionId===h?se?.id:void 0),de=ce===`paused`?`PAUSED`:ce===`waiting_input`?`WAITING`:`RUNNING`,fe=M?.goalObjective||se?.goalObjective?`goal`:(M?.collaborationMode||se?.collaborationMode)===`plan`?`plan`:null,pe=ce===`paused`?`paused`:ce===`waiting_input`?`waiting`:`running`,me=M?.goalObjective||se?.goalObjective||F||se?.input||``,he=M?.startedAt||se?.startedAt,ge=ce===`paused`?se?.durationMs:void 0,_e=M?[]:ue.filter(e=>String(e.status)===`WAITING_INPUT`),ve=d.find(e=>e.id===p),ye=M?.usage,be=o0(ye?.input_tokens??ye?.inputTokens??c0(oe),ve?.context_window_tokens??ve?.contextWindowTokens),xe=d.map(e=>({id:e.id,label:e.display_name||e.displayName||e.id,reasoningEfforts:S2(e)})),Se=S2(ve).includes(E)?E:``;(0,s.useEffect)(()=>{E&&!S2(ve).includes(E)&&D(``)},[E,ve]);let Ce=(0,s.useCallback)(async()=>{let t=await g(`/api/v1/runs`);if(!t.ok)throw Error(await k2(t));let n=(await t.json()).items||[],r=p0(n,e);u(n),_(e=>e&&r.some(t=>t.id===e)?e:r[0]?.id||``)},[e]);(0,s.useEffect)(()=>{U(!1)},[e]);let we=(0,s.useCallback)(async()=>{let[,t]=await Promise.all([Ce(),g(`/api/v1/agents/${encodeURIComponent(e)}/models`)]);if(!t.ok)throw Error(await k2(t));let n=await t.json(),r=n.Models||[];f(r),m(e=>r.some(t=>t.id===e)?e:String(n.Current||r[0]?.id||``))},[e,Ce]);(0,s.useEffect)(()=>{let e=!1;return R(!0),u([]),_(``),we().catch(t=>{e||Y(`会话加载失败`,t.message,`error`)}).finally(()=>{e||R(!1)}),()=>{e=!0,ne.current?.abort()}},[e,we,i]),(0,s.useEffect)(()=>{C(K0(localStorage.getItem(q0(e))));let t=localStorage.getItem(`agentkit:chat:collaboration:${e}`);T(t===`plan`?`plan`:`default`),D(``),k([])},[e]),(0,s.useEffect)(()=>{j(0)},[b]),(0,s.useEffect)(()=>{if(!l.some(e=>[`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(String(e.status))))return;let e=window.setInterval(()=>{Ce().catch(()=>{})},800);return()=>window.clearInterval(e)},[l,Ce]),(0,s.useEffect)(()=>{let e=te.current;!e||!re.current||(e.scrollTop=e.scrollHeight)},[oe.length,M?.output,M?.reasoning,M?.status,M?.activities]),(0,s.useEffect)(()=>{let e=te.current;if(!e)return;let t=h?G.current.get(h):void 0;requestAnimationFrame(()=>{e.scrollTop=t??e.scrollHeight,re.current=t===void 0||e.scrollHeight-e.scrollTop-e.clientHeight<48})},[h]),(0,s.useEffect)(()=>{let e=W.current;e&&(e.style.height=`42px`,e.style.height=`${Math.min(Math.max(e.scrollHeight,42),160)}px`)},[b]);function Te(){le||(_(``),I(``),P(null),x(``),k([]),U(!1),re.current=!0,requestAnimationFrame(()=>W.current?.focus()))}function Ee(e){let t=te.current;t&&h&&G.current.set(h,t.scrollTop),_(e),U(!1),re.current=!G.current.has(e)}function De(t){T(t),localStorage.setItem(`agentkit:chat:collaboration:${e}`,t)}function Oe(){let e=w===`plan`?`default`:`plan`;De(e),x(``),Y(e===`plan`?`计划模式已开启`:`已返回默认模式`,`下一轮对话生效`,`success`),requestAnimationFrame(()=>W.current?.focus())}function Ae(e){if(e===`goal`){x(`/goal `),requestAnimationFrame(()=>W.current?.focus());return}if(e==="default"){De(`default`),x(``),Y(`已返回默认模式`,`下一轮对话生效`,`success`);return}Oe()}async function Me(e){if(le)return;let t=Math.max(0,4-O.length);if(!t){Y(`附件数量已达上限`,`每轮最多 4 个`,`error`);return}let n=e.slice(0,t);if(O.reduce((e,t)=>e+t.size,0)+n.reduce((e,t)=>e+t.size,0)>15e5){Y(`附件体积过大`,`每轮附件总计不能超过 1.5 MiB`,`error`);return}let r=[];for(let e of n)try{r.push(await c2(e))}catch(e){Y(`无法添加附件`,e instanceof Error?e.message:String(e),`error`)}if(!r.length)return;let i=[...O,...r];if(i2(i)>15e5){Y(`附件编码后体积过大`,`每轮编码后的附件总计不能超过 1.5 MiB`,`error`);return}k(i)}async function Ne(t){let n=typeof t==`string`,r=n?t:b,i=n?[]:O,s=e2(r);if(le)return;if(!p){Y(`当前 Agent 尚未绑定模型`,`请先完成模型绑定和凭证配置。`,`error`),o?.();return}if(s.kind===`toggle-plan`){Oe();return}if(s.kind===`set-default`){De(`default`),x(``),Y(`已返回默认模式`,`下一轮对话生效`,`success`);return}if(s.kind===`goal`&&!s.objective){Y(`请补充目标`,`在 /goal 后输入需要持续完成的目标`,`error`),requestAnimationFrame(()=>W.current?.focus());return}let c=s.kind===`goal`?s.objective:``,l=s.kind===`message`?s.text||(i.length?`请分析这些附件。`:``):c;if(!l&&!i.length)return;let u=h||w2(`ses`),d=w2(`resp`),f=S,m=new AbortController;ne.current=m;let v={...m0(d,u),collaborationMode:w,goalObjective:c,startedAt:new Date().toISOString()};_(u),I(l),P(v),n||x(``);let y=i;n||k([]);try{let t=await g(`/v1/responses`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`same-origin`,signal:m.signal,body:JSON.stringify({model:p,...Se?{reasoning:{effort:Se}}:{},input:t2(l,y),stream:!0,metadata:{agent_id:e,session_id:u,invocation_id:d,approval_mode:f,collaboration_mode:w,goal_objective:c||void 0}})});if(!t.ok||!t.body)throw Error(await k2(t));let n=new TextDecoder,r=S0(e=>{v=g0(v,e),P(v)}),i=t.body.getReader();for(;;){let{value:e,done:t}=await i.read();if(e&&r.push(n.decode(e,{stream:!t})),t)break}if(r.finish(),v.status===`failed`)throw Error(v.error||`Agent 运行失败`);await Ce(),P(null),I(``),a?.()}catch(e){if(m.signal.aborted)v={...v,status:`cancelled`},P(v);else{let t=e instanceof Error?e.message:String(e);v={...v,status:`failed`,error:t},P(v),Y(`运行失败`,t,`error`)}}finally{ne.current=null,requestAnimationFrame(()=>W.current?.focus())}}function Pe(t){C(t),localStorage.setItem(q0(e),t)}async function Fe(){if(le)try{let e=M?.status===`streaming`?await g(`/v1/responses/${encodeURIComponent(M.responseId)}:pause`,{method:`POST`,credentials:`same-origin`}):await g(`/api/v1/runs/${encodeURIComponent(se.id)}:pause`,{method:`POST`});if(!e.ok)throw Error(await k2(e));P(e=>e&&{...e,status:`paused`}),window.setTimeout(()=>{Ce().catch(()=>{})},200)}catch(e){Y(`暂停运行失败`,e instanceof Error?e.message:String(e),`error`)}}async function Ie(){try{let e=M?.status===`paused`?await g(`/v1/responses/${encodeURIComponent(M.responseId)}:resume`,{method:`POST`,credentials:`same-origin`}):await g(`/api/v1/runs/${encodeURIComponent(se.id)}:resume`,{method:`POST`});if(!e.ok)throw Error(await k2(e));P(e=>e&&{...e,status:`streaming`}),window.setTimeout(()=>{Ce().catch(()=>{})},200)}catch(e){Y(`继续运行失败`,e instanceof Error?e.message:String(e),`error`)}}async function Le(){if(le)try{let e=M?await g(`/v1/responses/${encodeURIComponent(M.responseId)}/cancel`,{method:`POST`,credentials:`same-origin`}):await g(`/api/v1/runs/${encodeURIComponent(se.id)}:cancel`,{method:`POST`});if(!e.ok)throw Error(await k2(e));ne.current?.abort(),P(e=>e&&{...e,status:`cancelled`}),window.setTimeout(()=>{Ce().catch(()=>{})},200)}catch(e){Y(`结束运行失败`,e instanceof Error?e.message:String(e),`error`)}}async function Re(e,t,n,r){if(!e)throw Error(`运行尚未创建,请稍后重试`);let i=await g(`/api/v1/runs/${encodeURIComponent(e)}/interactions/${encodeURIComponent(t)}:submit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:n,data:r})});if(!i.ok){let e=await k2(i);throw Y(`提交交互失败`,e,`error`),Error(e)}P(e=>e&&{...e,status:`streaming`,surfaces:e.surfaces.map(e=>e.interaction?.id===t?{...e,interaction:{...e.interaction,status:`resolved`}}:e)}),await Ce()}async function ze(){if(z){H(!0);try{let e=await g(`/api/v1/sessions/${encodeURIComponent(z)}`,{method:`DELETE`});if(!e.ok)throw Error(await k2(e));h===z&&_(``),B(``),await Ce(),Y(`会话已删除`,`相关运行与 Trace 已从本地工作区移除。`)}catch(e){Y(`删除失败`,e instanceof Error?e.message:String(e),`error`)}finally{H(!1)}}}return(0,K.jsxs)(`div`,{className:`studio-chat-shell${ee?` sessions-open`:``}`,"data-testid":`studio-chat-workbench`,children:[(0,K.jsxs)(`aside`,{className:`chat-session-sidebar`,"aria-label":`会话历史`,children:[(0,K.jsxs)(`header`,{className:`chat-session-header`,children:[(0,K.jsx)(`h2`,{children:`会话`}),(0,K.jsxs)(`div`,{className:`chat-session-header-actions`,children:[(0,K.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`新对话`,title:`新对话`,onClick:Te,disabled:le,children:(0,K.jsx)(je,{size:16})}),(0,K.jsx)(`button`,{className:`icon-button tertiary chat-session-mobile-close`,type:`button`,"aria-label":`关闭会话历史`,title:`关闭会话历史`,onClick:()=>U(!1),children:(0,K.jsx)(mt,{size:17})})]})]}),(0,K.jsxs)(`label`,{className:`chat-session-search`,children:[(0,K.jsx)(`span`,{className:`sr-only`,children:`搜索会话`}),(0,K.jsx)(`input`,{type:`search`,value:v,onChange:e=>y(e.target.value),placeholder:`搜索会话`})]}),(0,K.jsx)(`div`,{className:`chat-session-list`,children:L?(0,K.jsxs)(`div`,{className:`chat-session-skeleton`,"aria-label":`正在加载会话`,role:`status`,children:[(0,K.jsx)(`i`,{}),(0,K.jsx)(`i`,{}),(0,K.jsx)(`i`,{})]}):ae.length===0?(0,K.jsx)(`div`,{className:`session-empty`,children:v?`没有匹配的会话`:`还没有会话`}):ae.map(e=>(0,K.jsxs)(`div`,{className:`chat-session-item${h===e.id?` active`:``}${e.running?` running`:``}`,children:[(0,K.jsxs)(`button`,{className:`chat-session-main`,type:`button`,"aria-current":h===e.id?`true`:void 0,onClick:()=>Ee(e.id),title:`${e.title} · ${T2(e.updatedAt)}`,children:[(0,K.jsx)(`strong`,{children:D2(e.title)}),e.running&&(0,K.jsx)(`span`,{className:`session-status ${String(e.activeStatus||`RUNNING`).toLowerCase()}`,"aria-label":e.activeStatus===`PAUSED`?`已暂停`:e.activeStatus===`WAITING_INPUT`?`等待输入`:`运行中`})]}),(0,K.jsx)(`button`,{className:`chat-session-delete`,type:`button`,"aria-label":`删除会话:${D2(e.title)}`,title:e.running||M?.status===`streaming`&&M.sessionId===e.id?`运行中不可删除`:`删除会话`,disabled:e.running||M?.status===`streaming`&&M.sessionId===e.id,onClick:()=>B(e.id),children:(0,K.jsx)(lt,{size:14})})]},e.id))})]}),(0,K.jsx)(`button`,{className:`chat-session-backdrop`,type:`button`,"aria-label":`关闭会话历史`,onClick:()=>U(!1)}),(0,K.jsxs)(`section`,{className:`chat-conversation`,"aria-label":`与 ${t} 对话`,children:[(0,K.jsxs)(`header`,{className:`chat-conversation-header`,children:[(0,K.jsx)(`button`,{className:`icon-button tertiary chat-session-mobile-trigger`,type:`button`,"aria-label":`打开会话历史`,title:`会话历史`,"aria-expanded":ee,onClick:()=>U(!0),children:(0,K.jsx)(Ve,{size:17})}),(0,K.jsx)(_t,{name:t,appearance:n,size:`sm`}),(0,K.jsx)(`h1`,{children:t}),le&&(0,K.jsx)(`span`,{className:`badge`,"data-state":ce===`streaming`?`running`:`pending`,children:de})]}),(0,K.jsx)(`div`,{ref:te,className:`chat-message-list`,role:`log`,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-busy":le,onScroll:e=>{let t=e.currentTarget;re.current=t.scrollHeight-t.scrollTop-t.clientHeight<48,h&&G.current.set(h,t.scrollTop)},children:oe.length===0&&!M?(0,K.jsxs)(`div`,{className:`chat-empty`,children:[(0,K.jsx)(`span`,{className:`chat-empty-icon`,children:(0,K.jsx)(N,{size:22})}),(0,K.jsxs)(`h2`,{children:[`开始与 `,t,` 对话`]}),(0,K.jsx)(`p`,{children:`消息通过统一的 Responses API 发送;思考、工具调用和结果会在同一条时间线中呈现。`}),(0,K.jsx)(`div`,{className:`suggestion-list`,children:[`先介绍你的职责、能力和工作边界。`,`根据当前上下文给出一个清晰的执行计划。`,`列出完成任务还需要我提供的信息。`].map(e=>(0,K.jsx)(`button`,{type:`button`,onClick:()=>{x(e),W.current?.focus()},children:e},e))})]}):(0,K.jsxs)(K.Fragment,{children:[ue.map(e=>(0,K.jsx)(V2,{run:e,agentName:t,agentAppearance:n,onInteraction:Re,onConfigure:o,onOpenSettings:c,onRetry:e=>{Ne(e)}},e.id)),M&&M.sessionId===h&&F&&(0,K.jsx)(H2,{prompt:F,stream:M,agentName:t,agentAppearance:n,onInteraction:Re,onConfigure:o,onOpenSettings:c,onRetry:e=>{Ne(e)}})]})}),(0,K.jsxs)(`footer`,{className:`chat-composer-wrap`,children:[M&&M.sessionId===h?(0,K.jsx)(I2,{surfaces:M.surfaces,onInteraction:(e,t,n)=>Re(M.runId,e,t,n)}):_e.map(e=>(0,K.jsx)(L2,{runId:e.id,status:e.status,onInteraction:Re},e.id)),le&&fe&&(0,K.jsx)(y2,{mode:fe,status:pe,objective:me,startedAt:he,elapsedMs:ge,onPause:pe===`running`?Fe:void 0,onResume:pe===`paused`?Ie:void 0,onStop:Le}),(0,K.jsx)(g2,{input:b,placeholder:w===`plan`?`描述需要规划的任务…`:`输入消息,或输入 / 使用命令…`,disabled:le,active:r,attachments:O.map(e=>({id:e.id,name:e.name,kind:e.kind,size:e.size,previewUrl:e.dataUrl})),mode:w,approvalMode:S,models:xe,model:p,reasoningEffort:E,commandIndex:A,contextControl:(0,K.jsx)(C2,{...be}),sendControl:ce===`paused`?(0,K.jsx)(`button`,{className:`chat-send-button resume`,type:`button`,"aria-label":`继续生成`,title:`继续生成`,onClick:Ie,children:(0,K.jsx)(Ke,{size:15,fill:`currentColor`})}):ce===`waiting_input`?(0,K.jsx)(`button`,{className:`chat-send-button pause`,type:`button`,"aria-label":`等待交互输入`,title:`请先处理上方交互卡片`,disabled:!0,children:(0,K.jsx)(ke,{size:15,className:`animate-spin`})}):le?(0,K.jsx)(`button`,{className:`chat-send-button pause`,type:`button`,"aria-label":`暂停生成`,title:`暂停生成`,onClick:Fe,children:(0,K.jsx)(We,{size:15,fill:`currentColor`})}):(0,K.jsx)(`button`,{className:`chat-send-button`,type:`button`,"aria-label":`发送消息`,title:`发送消息`,onClick:()=>{Ne()},disabled:!b.trim()&&!O.length,children:(0,K.jsx)(Xe,{size:15})}),canSend:!!(b.trim()||O.length),textareaRef:W,onInputChange:x,onFiles:Me,onRemoveAttachment:e=>k(t=>t.filter(t=>t.id!==e)),onSetMode:e=>{e!==w&&Oe()},onStartGoal:()=>Ae(`goal`),onApprovalModeChange:Pe,onModelChange:m,onReasoningEffortChange:D,onConfigureModel:o,onCommandSelect:Ae,onCommandIndexChange:j,onSend:()=>{Ne()}}),(0,K.jsx)(`p`,{className:`chat-composer-disclaimer`,children:`AI 生成内容可能不准确,请核对关键结论与工具操作。`})]})]}),z&&(0,K.jsx)(Ca,{title:`删除这个会话?`,description:`相关 Run 与 Trace 会从当前本地工作区移除。`,confirmText:`删除会话`,busy:V,onConfirm:ze,onCancel:()=>B(``)})]})}function W2(e){_P(e,[/\r?\n|\r/g,G2])}function G2(){return{type:`break`}}function K2(){return function(e){W2(e)}}function q2(e){let t=e?.capabilities?.reasoning_efforts;return Array.isArray(t)?t.filter(e=>e===`low`||e===`medium`||e===`high`):[]}function J2(e){if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(e=>{if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e;return J2(t.text??t.content??t.value??``)}return``}).filter(Boolean).join(` -`);if(e&&typeof e==`object`){let t=e;return J2(t.text??t.content??t.value??``)}return``}function Y2(e){return typeof e==`string`||typeof e==`number`?String(e):``}function X2(...e){for(let t of e){if(typeof t==`string`&&t.trim())return t.trim();if(!t||typeof t!=`object`)continue;let e=t,n=X2(e.message,e.detail,e.reason,e.error,e.text);if(n)return n}return``}function Z2(e){return e&&typeof e==`object`?e:{}}function Q2(e){if(!e||typeof e!=`object`)return null;let t=e,n=Object.keys(Z2(t.payload)).length?Z2(t.payload):t,r=Z2(n.content),i=Object.keys(Z2(r.runtime_event)).length?Z2(r.runtime_event):Z2(n.runtime_event),a=Object.keys(i).length?i:n,o=Y2(t.event_type??t.eventType??n.event_type??n.eventType).toLowerCase();return{event:a,eventType:Y2(a.event_type??a.eventType??a.type).toLowerCase()||o,runId:Y2(a.run_id??a.runId??n.run_id??n.runId??t.run_id??t.runId),invocationId:Y2(a.invocation_id??a.invocationId??n.invocation_id??n.invocationId??t.invocation_id??t.invocationId),seq:Number(a.seq??a.seq_id??a.source_session_seq??n.seq??n.seq_id??n.source_session_seq??t.seq??t.seq_id??t.source_session_seq??0)||0}}function $2(e){return e.reduce((e,t)=>{let n=Q2(t);return Math.max(e,n?.seq||0)},0)}function e4(e){let t=Z2(e);return(Array.isArray(t.parts)?t.parts.map(Z2):[])[0]||t}function t4(e){if(typeof e==`string`)return e;if(e==null)return``;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function n4(e){let t=Q2(e);if(!t)return null;let n=t.event;if([`message.delta`,`response.output_text.delta`,`output_text.delta`].includes(t.eventType)){let e=Z2(n.content),r=Z2(n.update),i=J2(r.delta??r.text??n.delta??e.delta??n.text);if(!i)return null;let a=Y2(n.item_id??n.itemId??n.output_index)||`legacy`;return{id:`${t.invocationId||t.runId}//message:${a}`,kind:`message`,title:`回复`,text:i,detail:i,status:`running`,operation:n.replace===!0||Y2(n.op).toLowerCase()===`replace`?`replace`:`append`}}if(![`item.started`,`item.updated`,`item.completed`,`item.failed`].includes(t.eventType))return null;let r=Y2(n.item_kind??n.itemKind).toLowerCase(),i=[`message`,`assistant`,`assistant_message`].includes(r)?`message`:r===`reasoning`?`reasoning`:r===`approval`?`approval`:[`tool`,`tool_call`,`tool_result`,`command`,`command_execution`].includes(r)?`tool`:null;if(!i)return null;let a=t.eventType===`item.started`?n.initial:t.eventType===`item.completed`||t.eventType===`item.failed`?n.snapshot:n.update,o=Z2(a),s=e4(a),c=J2(s.text??s.delta??s.content??o.parts??n.text),l=J2(s.name??n.name??n.tool_name??n.title)||(i===`reasoning`?`思考过程`:i===`approval`?`等待确认`:i===`tool`?`工具调用`:`回复`),u=c||t4(s.result??s.output??s.arguments??s.error??``),d=Y2(n.item_id??n.itemId??s.call_id??s.callId)||`${i}:${l}`;return{id:[t.invocationId||t.runId,Y2(n.scope_id??n.scopeId),d].join(`/`),kind:i,title:l,text:c,detail:u,status:t.eventType===`item.failed`?`failed`:i===`approval`&&t.eventType!==`item.completed`?`waiting`:t.eventType===`item.completed`?`completed`:`running`,operation:Y2(n.op).toLowerCase()===`append`?`append`:`replace`}}function r4(e){let t=n4(e);if(t)return[t];let n=Q2(e);if(!n)return[];let r=n.event,i=n.eventType,a=Y2(r.id??r.response_id??r.responseId)||n.invocationId||n.runId||`direct`,o=[];if((Array.isArray(r.choices)?r.choices.map(Z2):[]).forEach((e,t)=>{let n=Z2(e.delta),r=J2(n.reasoning_content??n.reasoning??n.thinking);r&&o.push({id:`${a}//reasoning:${Y2(e.index)||t}`,kind:`reasoning`,title:`思考过程`,text:r,detail:r,status:`running`,operation:`append`});let i=J2(n.content);i&&o.push({id:`${a}//message:${Y2(e.index)||t}`,kind:`message`,title:`回复`,text:i,detail:i,status:`running`,operation:`append`}),(Array.isArray(n.tool_calls)?n.tool_calls.map(Z2):[]).forEach((n,r)=>{let i=Z2(n.function),s=J2(i.name??n.name)||`工具调用`,c=J2(i.arguments??n.arguments);o.push({id:`${a}//tool:${Y2(e.index)||t}:${Y2(n.index)||r}`,kind:`tool`,title:s,text:``,detail:c,status:`running`,operation:`append`})})}),i.includes(`reasoning`)&&i.endsWith(`.delta`)){let e=J2(r.delta??r.text??Z2(r.part).text);e&&o.push({id:`${a}//reasoning:${Y2(r.item_id??r.itemId)||`summary`}`,kind:`reasoning`,title:`思考过程`,text:e,detail:e,status:`running`,operation:r.replace===!0||Y2(r.op).toLowerCase()===`replace`?`replace`:`append`})}if([`response.output_item.added`,`response.output_item.done`].includes(i)){let e=Z2(r.item),t=Y2(e.type).toLowerCase();[`mcp_approval_request`,`approval_request`].includes(t)&&o.push({id:`${a}//approval:${Y2(e.id??e.approval_request_id??e.call_id)||`request`}`,kind:`approval`,title:J2(e.title??e.name??e.server_label)||`等待确认`,text:``,detail:J2(e.message)||t4(e.arguments??e.request??``),status:`waiting`,operation:`replace`}),[`function_call`,`tool_call`,`computer_call`,`mcp_call`].includes(t)&&o.push({id:`${a}//tool:${Y2(e.id??e.call_id??r.output_index)||`output`}`,kind:`tool`,title:J2(e.name)||`工具调用`,text:``,detail:J2(e.arguments??e.output)||t4(e.arguments??e.output??``),status:i.endsWith(`.done`)?`completed`:`running`,operation:`replace`})}if([`response.function_call_arguments.delta`,`response.mcp_call_arguments.delta`].includes(i)){let e=J2(r.delta);o.push({id:`${a}//tool:${Y2(r.item_id??r.itemId??r.call_id)||`output`}`,kind:`tool`,title:J2(r.name)||`工具调用`,text:``,detail:e,status:`running`,operation:`append`})}return i===`response.approval_request`&&o.push({id:`${a}//approval:${Y2(r.interaction_id??r.approval_request_id??r.item_id)||`request`}`,kind:`approval`,title:J2(r.title??r.message??Z2(r.request).title)||`等待确认`,text:``,detail:J2(r.message)||t4(r.request??``),status:`waiting`,operation:`replace`}),o}function i4(e){let t=Q2(e);if(!t)return null;let n=t.event,r=t.eventType;return[`stream.done`,`response.completed`,`response.done`,`done`].includes(r)?{status:`completed`,error:``}:n.error||[`error`,`stream.error`,`response.failed`,`response.error`].includes(r)?{status:`failed`,error:X2(n.error,n.response,n.message,n.detail)||`云端流式响应失败`}:null}function a4(e,t){let n=e.findIndex(e=>e.id===t.id);if(n<0)return[...e,t];let r=e[n],i=[...e];return i[n]={...r,...t,title:t.title===`回复`||t.title===`思考过程`||t.title===`工具调用`?r.title:t.title,text:t.operation===`append`?`${r.text}${t.text}`:t.text||r.text,detail:t.kind===`tool`&&t.operation===`append`?`${r.detail}${t.detail}`:t.detail||r.detail},i}function o4(e){if(!e||typeof e!=`object`)return null;let t=e,n=String(t.session_id??t.sessionId??t.id??``).trim();return n?{id:n,title:J2(t.title??t.summary??t.first_prompt??``)||`新会话`,updatedAt:Y2(t.updated_at??t.updatedAt??t.created_at),state:Y2(t.active_run_status??t.state),error:X2(t.active_run_error,t.activeRunError,t.last_error,t.lastError,t.error)}:null}function s4(e){let t=e.trim().toLowerCase();return[`running`,`streaming`,`queued`,`pending`,`accepted`].includes(t)?`running`:[`paused`,`waiting`,`waiting_input`,`requires_action`].includes(t)?`waiting_input`:[`failed`,`error`,`cancelled`,`canceled`,`expired`,`aborted`].includes(t)?`failed`:null}function c4(e){if(!e||typeof e!=`object`)return null;let t=e,n=String(t.role??`assistant`).toLowerCase(),r=n===`user`||n===`system`?n:`assistant`;return{id:String(t.message_id??t.messageId??t.seq_id??crypto.randomUUID()),role:r,content:J2(t.content),timestamp:String(t.timestamp??``)}}function l4(e){let t=new Map;for(let n of e){let e=Q2(n);if(!e)continue;let r=e.event,i=n,a=e.eventType,o=r.Metadata&&typeof r.Metadata==`object`?r.Metadata:r.metadata&&typeof r.metadata==`object`?r.metadata:i.Metadata&&typeof i.Metadata==`object`?i.Metadata:i.metadata&&typeof i.metadata==`object`?i.metadata:{},s=o.interrupt_info&&typeof o.interrupt_info==`object`?o.interrupt_info:{},c=o.resume_input&&typeof o.resume_input==`object`?o.resume_input:{},l=String(r.interaction_id??r.interactionId??s.approval_request_id??c.approval_request_id??``).trim();if(l){if([`interaction.requested`,`approval_request`,`response.approval_request`].includes(a)){let n=r.request&&typeof r.request==`object`?r.request:{};t.set(l,{id:l,runId:String(r.run_id??r.runId??e.invocationId??e.runId??i.run_id??i.runId??i.InvocationId??i.invocation_id??``),revision:Number(r.revision??1)||1,kind:String(r.interaction_kind??r.interactionKind??r.kind??n.kind??([`approval_request`,`response.approval_request`].includes(a)?`approval`:`input`)),title:J2(n.title??n.message??n.prompt??s.approval_message??s.tool_name??n.kind??`需要你的确认`)||`需要你的确认`})}else[`interaction.resolved`,`interaction.cancelled`,`interaction.expired`,`approval_response`].includes(a)&&t.delete(l)}}return[...t.values()]}function u4(e,t,n,r){if(!t&&!n&&r<=0)return null;for(let i of e){let e=Q2(i);if(!e)continue;let a=e.event,o=e.runId||e.invocationId,s=e.seq;if(!(o&&[t,n].filter(Boolean).includes(o))&&!(r>0&&s>r))continue;let c=e.eventType,l=a.content&&typeof a.content==`object`?a.content:{},u=X2(a.error,a.message,l.error,l.message,l.detail);if([`run.completed`,`run.complete`,`run.succeeded`].includes(c))return{status:`completed`,error:``};if([`run.interrupted`,`run.paused`,`run.waiting_input`,`run.requires_action`].includes(c))return{status:`interrupted`,error:``};if([`run.failed`,`run.cancelled`,`run.expired`,`run.error`].includes(c))return{status:`failed`,error:u};if([`run_status`,`run.status`].includes(c)){let e=a.state_delta&&typeof a.state_delta==`object`?a.state_delta:{},t=e.active_run&&typeof e.active_run==`object`?e.active_run:{},n=String(a.status??l.status??t.status??``).toLowerCase();if([`completed`,`complete`,`succeeded`,`success`].includes(n))return{status:`completed`,error:``};if([`interrupted`,`paused`,`waiting`,`waiting_input`,`requires_action`].includes(n))return{status:`interrupted`,error:``};if([`failed`,`cancelled`,`canceled`,`expired`,`error`,`aborted`].includes(n))return{status:`failed`,error:u||X2(t.error,t.message,t.reason)}}}return null}async function d4(e,t,n){if(!e.ok)throw Error(await f4(e));if(!e.body)throw Error(`云端事件流为空`);let r=e.body.getReader(),i=new TextDecoder,a=``,o=()=>{r.cancel().catch(()=>{})},s=e=>{let n=e.split(/\r?\n/),r=n.find(e=>e.startsWith(`event:`))?.slice(6).trim()||``,i=n.filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trimStart()).join(` -`);if(i){if(i===`[DONE]`){t({event_type:`stream.done`});return}try{let e=JSON.parse(i);if(r&&e&&typeof e==`object`){let n=e;t(n.event_type||n.eventType||n.type?n:{...n,event_type:r})}else t(e)}catch{}}};n.addEventListener(`abort`,o,{once:!0});try{for(;!n.aborted;){let{done:e,value:t}=await r.read();a+=i.decode(t,{stream:!e});let n=a.split(/\r?\n\r?\n/);if(a=n.pop()||``,n.forEach(s),e){a.trim()&&s(a);break}}}finally{n.removeEventListener(`abort`,o),r.releaseLock()}}async function f4(e){try{let t=await e.json();return String(t?.error?.message||t?.message||t?.detail||`请求失败 (${e.status})`)}catch{return`请求失败 (${e.status})`}}async function p4(e){if(e.size>10485760)throw Error(`${e.name} 超过 10 MB 限制`);return await new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result||``)),r.onerror=()=>n(Error(`${e.name} 读取失败`)),r.readAsDataURL(e)})}function m4({items:e,streaming:t}){let n=e.filter(e=>e.kind===`reasoning`).map(e=>e.text).join(``),r=e.filter(e=>e.kind===`tool`||e.kind===`approval`);if(!n&&!r.length)return null;let i=r.find(e=>e.status===`running`||e.status===`waiting`),a=i?`${i.status===`waiting`?`等待确认`:`正在处理`} · ${i.title}`:n?t?`正在思考`:`已思考`:`已处理 ${r.length} 次工具调用`;return(0,K.jsxs)(`details`,{className:`chat-processing-group`,open:t,"data-ui":`think`,children:[(0,K.jsxs)(`summary`,{children:[(0,K.jsx)(I,{size:15,className:`chat-processing-icon`}),(0,K.jsx)(`span`,{children:a}),t&&(0,K.jsx)(ke,{size:13,className:`animate-spin`})]}),(0,K.jsxs)(`div`,{className:`chat-processing-content`,children:[n&&(0,K.jsx)(`div`,{className:`chat-reasoning-content`,children:n}),r.map(e=>(0,K.jsxs)(`div`,{className:`chat-activity-card ${e.kind}`,children:[(0,K.jsxs)(`div`,{className:`chat-activity-row`,children:[(0,K.jsx)(`span`,{className:`chat-activity-icon`,children:e.kind===`approval`?(0,K.jsx)($e,{size:15}):(0,K.jsx)(pt,{size:15})}),(0,K.jsxs)(`span`,{className:`chat-activity-copy`,children:[(0,K.jsx)(`small`,{children:e.kind===`approval`?`批准`:`工具`}),(0,K.jsx)(`strong`,{children:e.title})]}),(0,K.jsx)(`span`,{className:`chat-activity-status ${e.status}`,children:e.status===`completed`?`已完成`:e.status===`failed`?`失败`:e.status===`waiting`?`等待确认`:`运行中`})]}),e.detail&&(0,K.jsx)(`pre`,{children:e.detail})]},e.id))]})]})}function h4({deploymentId:e,agentId:t,agentName:n,active:r=!0,refreshTick:i=0}){let[a,o]=(0,s.useState)([]),[c,l]=(0,s.useState)(``),[u,d]=(0,s.useState)([]),[f,p]=(0,s.useState)([]),[m,h]=(0,s.useState)([]),[_,v]=(0,s.useState)(``),[y,b]=(0,s.useState)([]),[x,S]=(0,s.useState)([]),[C,w]=(0,s.useState)(``),[T,E]=(0,s.useState)(`risk`),[D,O]=(0,s.useState)(`default`),[k,A]=(0,s.useState)(``),[j,M]=(0,s.useState)(0),[P,F]=(0,s.useState)(!0),[I,L]=(0,s.useState)(!1),[R,z]=(0,s.useState)(!1),[B,V]=(0,s.useState)(``),[H,ee]=(0,s.useState)(``),[U,te]=(0,s.useState)(``),[W,ne]=(0,s.useState)(!1),re=(0,s.useRef)(null),G=(0,s.useRef)(``),ie=(0,s.useRef)(!1),ae=(0,s.useRef)(new Set),oe=(0,s.useRef)(``),se=(0,s.useRef)(``),ce=(0,s.useRef)(0),le=(0,s.useRef)(new Map),ue=(0,s.useRef)(!1),de=(0,s.useRef)(null),fe=(0,s.useRef)([]),pe=(0,s.useRef)(!1),me=(0,s.useRef)(new Set),he=(0,s.useMemo)(()=>`/api/v1/deployments/${encodeURIComponent(e)}/cloud-chat`,[e]),ge=(0,s.useCallback)((e=``,t=`云端运行未完成`)=>{let n=ie.current;ie.current=!1,pe.current=!1,z(!1),oe.current=``,se.current=``,ce.current=0,ae.current=new Set,d(e=>e.map(e=>e.pending?{...e,pending:!1}:e)),de.current?.abort(),de.current=null,e&&(V(e),n&&Y(t,e,`error`))},[]),_e=(0,s.useCallback)(async(e=!0)=>{let t=await g(`${he}/sessions`);if(!t.ok)throw Error(await f4(t));let n=await t.json(),r=(n.sessions||n.items||[]).map(o4).filter(e=>!!e);o(r);let i=r.find(e=>e.id===G.current);i&&s4(i.state)===`failed`&&ge(i.error||`这次云端运行未完成;可新建会话后重试。若持续失败,请到可观测页面按会话查看记录。`),l(t=>{let n=r.some(e=>e.id===t)?t:e&&r[0]?.id||``;return G.current=n,n})},[he,ge]),ve=(0,s.useCallback)(async e=>{if(!e){d([]);return}let t=await g(`${he}/sessions/${encodeURIComponent(e)}/messages`);if(!t.ok)throw Error(await f4(t));let n=((await t.json()).messages||[]).map(c4).filter(e=>!!e);d(n);let r=n.some(e=>e.role===`assistant`&&!ae.current.has(e.id));r&&(p(e=>e.filter(e=>e.kind!==`message`)),pe.current||(fe.current=[])),ie.current&&r&&!pe.current&&(V(``),ge())},[he,ge]),ye=(0,s.useCallback)(async e=>{if(!e){h([]);return}let t=await g(`${he}/sessions/${encodeURIComponent(e)}/events?limit=1000`);if(!t.ok)throw Error(await f4(t));let n=await t.json(),r=Array.isArray(n.events)?n.events:[];le.current.set(e,Math.max(le.current.get(e)||0,$2(r)));let i=u4(r,oe.current,se.current,ce.current);i&&(!pe.current||i.status!==`completed`)&&ge(i.status===`failed`?i.error||`本次请求已结束,未得到回复。可新建会话后重试;若持续失败,请到可观测页面按会话查看记录。`:``);let a=[...fe.current,...r].slice(-500);if(fe.current=a,h(l4(a)),!pe.current){let e=r.reduce((e,t)=>{let n=n4(t);return n&&n.kind!==`message`?a4(e,n):e},[]);p(t=>e.length?[...t.filter(e=>e.kind===`message`),...e]:t)}},[he,ge]);(0,s.useEffect)(()=>{let e=!1;return F(!0),o([]),l(``),G.current=``,d([]),p([]),fe.current=[],h([]),V(``),ie.current=!1,pe.current=!1,me.current=new Set,z(!1),oe.current=``,se.current=``,ce.current=0,le.current.clear(),_e().catch(t=>{e||Y(`云端会话加载失败`,t.message,`error`)}).finally(()=>{e||F(!1)}),()=>{e=!0}},[_e,i]),(0,s.useEffect)(()=>()=>{de.current?.abort(),de.current=null},[]),(0,s.useEffect)(()=>{let e=!1;return g(`${he}/models`).then(async e=>{if(!e.ok)throw Error(await f4(e));return await e.json()}).then(t=>{if(e)return;let n=(Array.isArray(t.models)?t.models:Array.isArray(t.items)?t.items:[]).map(e=>{if(typeof e==`string`)return{id:e,label:e};if(!e||typeof e!=`object`)return null;let t=e,n=String(t.id??t.model??t.name??``).trim(),r=t.capabilities&&typeof t.capabilities==`object`?t.capabilities:void 0;return n?{id:n,label:String(t.display_name??t.displayName??t.label??n),capabilities:r}:null}).filter(e=>!!e),r=String(t.current??t.configured_model??t.configuredModel??``).trim();S(n),w(e=>e||(n.some(e=>e.id===r)?r:n[0]?.id||r))}).catch(()=>{}),()=>{e=!0}},[he]),(0,s.useEffect)(()=>{E(K0(localStorage.getItem(q0(t)))),O(localStorage.getItem(`agentkit:chat:collaboration:${t}`)===`plan`?`plan`:`default`),A(``)},[t]),(0,s.useEffect)(()=>{M(0)},[_]);let be=x.find(e=>e.id===C),xe=q2(be).includes(k)?k:``;(0,s.useEffect)(()=>{k&&!q2(be).includes(k)&&A(``)},[k,be]),(0,s.useEffect)(()=>{ve(c).catch(e=>{Y(`云端消息加载失败`,e.message,`error`)}),ye(c).catch(e=>{Y(`云端交互加载失败`,e.message,`error`)})},[c,ye,ve]),(0,s.useEffect)(()=>{if(!r||!c)return;let e=window.setInterval(()=>{ve(c).catch(()=>{}),ye(c).catch(()=>{}),_e().catch(()=>{})},I||R?1200:4e3);return()=>window.clearInterval(e)},[r,c,ye,ve,_e,I,R]),(0,s.useEffect)(()=>{let e=re.current;e&&(e.scrollTop=e.scrollHeight)},[u,I,f,R]);async function Se(){let e=await g(`${he}/sessions`,{method:`POST`});if(!e.ok)throw Error(await f4(e));let t=await e.json(),n=o4(t.session??t.Session??t);if(!n)throw Error(`云端未返回有效会话标识`);return o(e=>[n,...e.filter(e=>e.id!==n.id)]),G.current=n.id,l(n.id),d([]),p([]),fe.current=[],h([]),V(``),ae.current=new Set,le.current.set(n.id,0),n.id}async function Ce(){if(!(I||R))try{await Se(),ne(!1)}catch(e){Y(`新建云端会话失败`,e instanceof Error?e.message:String(e),`error`)}}async function we(){let e=e2(_);if(e.kind===`toggle-plan`){Ee(`plan`);return}if(e.kind===`set-default`){Ee(`default`);return}if(e.kind===`goal`&&!e.objective){Y(`请补充目标`,`在 /goal 后输入需要持续完成的目标`,`error`);return}let t=e.kind===`goal`?e.objective:``,n=e.kind===`message`?e.text:t;if(!(!n&&y.length===0||I||R||ue.current)){v(``),ue.current=!0,L(!0),ie.current=!0,z(!0),p([]),fe.current=[],V(``);try{let e=[];n&&e.push({type:`input_text`,text:n});for(let t of y){let n=await p4(t);e.push(t.type.startsWith(`image/`)?{type:`input_image`,image_url:n}:{type:`input_file`,filename:t.name,file_data:n})}let r=G.current||await Se();ae.current=new Set(u.filter(e=>!e.pending&&e.role===`assistant`).map(e=>e.id)),oe.current=``,se.current=``,ce.current=le.current.get(r)||0;let i={id:`local-${crypto.randomUUID()}`,role:`user`,content:n||`已上传 ${y.length} 个附件`,timestamp:new Date().toISOString(),pending:!0};d(e=>[...e,i]),de.current?.abort();let a=new AbortController;de.current=a,pe.current=!0,me.current=new Set;let o=(e,t)=>{if(t===`session`){if(e.kind===`message`||me.current.has(e.kind))return;p(t=>a4(t,e));return}let n=!me.current.has(e.kind);me.current.add(e.kind),p(t=>a4(n?t.filter(t=>t.kind!==e.kind):t,e))};g(`${he}/sessions/${encodeURIComponent(r)}/events/stream?afterSeqId=${ce.current}`,{headers:{Accept:`text/event-stream`},signal:a.signal}).then(e=>d4(e,e=>{let t=Q2(e);if(!t)return;t.seq&&le.current.set(r,Math.max(le.current.get(r)||0,t.seq));let n=[t.runId,t.invocationId].filter(Boolean),i=[oe.current,se.current].filter(Boolean);if(i.length&&(!n.length||!n.some(e=>i.includes(e)))||ce.current&&t.seq&&t.seq<=ce.current)return;i.length||(t.runId&&(oe.current=t.runId),t.invocationId&&(se.current=t.invocationId)),fe.current=[...fe.current,e].slice(-500),h(l4(fe.current));let a=n4(e);a&&o(a,`session`);let s=u4([e],oe.current,se.current,ce.current);s&&s.status!==`completed`&&(ge(s.status===`failed`?s.error||`本次请求已结束,未得到回复。`:``),ve(r).catch(()=>{}),ye(r).catch(()=>{}),_e().catch(()=>{}))},a.signal)).catch(()=>{}),await d4(await g(`${he}/sessions/${encodeURIComponent(r)}/messages/stream`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`},signal:a.signal,body:JSON.stringify({content:e,model:C||void 0,modelOptions:xe?{reasoning:{effort:xe}}:{},toolApprovalMode:T,collaborationMode:D,goalObjective:t||void 0})}),e=>{fe.current=[...fe.current,e].slice(-500),h(l4(fe.current)),r4(e).forEach(e=>o(e,`direct`));let t=i4(e);t&&ge(t.status===`failed`?t.error:``,`云端流式响应失败`)},a.signal),ie.current&&ge(),b([]),_e().catch(()=>{}),ve(r).catch(()=>{}),ye(r).catch(()=>{})}catch(e){let t=e instanceof Error?e.message:String(e);ie.current&&ge(t,`云端消息发送失败`)}finally{L(!1),ue.current=!1}}}function Te(e){O(e),localStorage.setItem(`agentkit:chat:collaboration:${t}`,e),v(``),Y(e===`plan`?`计划模式已开启`:`已返回默认模式`,`下一轮云端对话生效`,`success`)}function Ee(e){if(e===`goal`){v(`/goal `);return}Te(e===`plan`?D===`plan`?`default`:`plan`:`default`)}function De(){let e=[...u].reverse().find(e=>e.role===`user`);e&&(v(e.content),V(``))}async function Oe(e){if(!(H||!window.confirm(`确定删除这个云端会话吗?`))){ee(e);try{let t=await g(`${he}/sessions/${encodeURIComponent(e)}`,{method:`DELETE`});if(!t.ok)throw Error(await f4(t));o(t=>t.filter(t=>t.id!==e));let n=G.current===e;n&&(de.current?.abort(),de.current=null,G.current=``,l(``),d([]),p([]),fe.current=[],h([]),V(``)),le.current.delete(e),await _e(!n)}catch(e){Y(`删除云端会话失败`,e instanceof Error?e.message:String(e),`error`)}finally{ee(``)}}}async function Ae(e,t){if(!(!c||U)){if(!e.runId){Y(`交互缺少运行标识`,`请刷新会话后重试。`,`error`);return}te(e.id);try{let n=await g(`${he}/sessions/${encodeURIComponent(c)}/interactions`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({runId:e.runId,interactionId:e.id,expectedRevision:e.revision,action:t,response:t===`approve`?{decision:`approve`}:t===`reject`?{decision:`reject`}:{},idempotencyKey:`studio-cloud-${e.id}-${e.revision}-${t}`})});if(!n.ok)throw Error(await f4(n));await Promise.all([ye(c),ve(c)]),Y(`已提交确认`,`云端 Agent 将继续当前对话。`,`success`)}catch(e){Y(`提交确认失败`,e instanceof Error?e.message:String(e),`error`)}finally{te(``)}}}let Me=f.filter(e=>e.kind===`message`).map(e=>e.text).join(``);return(0,K.jsxs)(`section`,{className:`studio-chat-shell cloud-chat-shell${W?` sessions-open`:``}`,"aria-label":`云端会话`,children:[(0,K.jsxs)(`aside`,{className:`chat-session-sidebar`,"aria-label":`云端会话历史`,children:[(0,K.jsxs)(`header`,{className:`chat-session-header`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h2`,{children:`云端会话`}),(0,K.jsx)(`span`,{children:n})]}),(0,K.jsxs)(`div`,{className:`chat-session-header-actions`,children:[(0,K.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,onClick:Ce,disabled:I||R,"aria-label":`新建云端会话`,title:`新建云端会话`,children:(0,K.jsx)(je,{size:17})}),(0,K.jsx)(`button`,{className:`icon-button tertiary chat-session-mobile-close`,type:`button`,"aria-label":`关闭云端会话历史`,title:`关闭云端会话历史`,onClick:()=>ne(!1),children:(0,K.jsx)(mt,{size:17})})]})]}),(0,K.jsxs)(`div`,{className:`chat-session-list`,role:`list`,children:[P&&(0,K.jsxs)(`div`,{className:`chat-session-skeleton`,role:`status`,"aria-label":`正在同步云端会话`,children:[(0,K.jsx)(`i`,{}),(0,K.jsx)(`i`,{}),(0,K.jsx)(`i`,{})]}),!P&&!a.length&&(0,K.jsx)(`p`,{className:`chat-sidebar-empty`,children:`还没有云端会话`}),a.map(e=>{let t=s4(e.state);return(0,K.jsxs)(`div`,{className:`chat-session-item${e.id===c?` active`:``}${t===`running`?` running`:``}`,role:`listitem`,children:[(0,K.jsxs)(`button`,{className:`chat-session-main`,type:`button`,onClick:()=>{G.current=e.id,l(e.id),V(e.error),ne(!1)},children:[(0,K.jsx)(`strong`,{children:e.title}),t&&(0,K.jsx)(`span`,{className:`session-status ${t}`,"aria-label":t===`running`?`运行中`:t===`waiting_input`?`等待输入`:`运行失败`})]}),(0,K.jsx)(`button`,{className:`chat-session-delete`,type:`button`,"aria-label":`删除会话 ${e.title}`,title:`删除会话`,disabled:H===e.id,onClick:()=>Oe(e.id),children:(0,K.jsx)(lt,{size:15})})]},e.id)})]})]}),(0,K.jsx)(`button`,{className:`chat-session-backdrop`,type:`button`,"aria-label":`关闭云端会话历史`,onClick:()=>ne(!1)}),(0,K.jsxs)(`div`,{className:`chat-conversation`,children:[(0,K.jsxs)(`header`,{className:`chat-conversation-header`,children:[(0,K.jsx)(`button`,{className:`icon-button tertiary chat-session-mobile-trigger`,type:`button`,"aria-label":`打开云端会话历史`,title:`云端会话历史`,"aria-expanded":W,onClick:()=>ne(!0),children:(0,K.jsx)(Ve,{size:17})}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h1`,{children:n}),(0,K.jsxs)(`span`,{children:[`云端 Agent · `,t]})]})]}),(0,K.jsxs)(`div`,{ref:re,className:`chat-message-list`,role:`log`,"aria-live":`polite`,"aria-busy":I||R,children:[!c&&!P&&(0,K.jsxs)(`div`,{className:`chat-empty`,children:[(0,K.jsx)(`span`,{className:`chat-empty-icon`,children:(0,K.jsx)(N,{})}),(0,K.jsx)(`h2`,{children:`开始一段云端会话`})]}),(B||s4(a.find(e=>e.id===c)?.state||``)===`failed`)&&(0,K.jsxs)(`div`,{className:`cloud-chat-run-warning`,children:[(0,K.jsx)($e,{size:15}),(0,K.jsx)(`span`,{children:B||a.find(e=>e.id===c)?.error||`这次云端运行未完成;可新建会话后重试。若持续失败,请到可观测页面按会话查看记录。`}),B&&(0,K.jsx)(`button`,{className:`text-button`,type:`button`,"aria-label":`重试这条消息`,onClick:De,children:`重试`})]}),u.map(e=>(0,K.jsxs)(`article`,{className:`message ${e.role}${e.pending?` pending`:``}${e.streaming?` streaming`:``}`,children:[(0,K.jsx)(`div`,{className:`message-meta`,children:e.role===`user`?`你`:n}),(0,K.jsx)(`div`,{className:`message-content`,children:(0,K.jsx)(uP,{remarkPlugins:[mL,K2],children:e.content||`…`})})]},e.id)),(0,K.jsx)(m4,{items:f,streaming:R}),Me&&(0,K.jsxs)(`article`,{className:`message assistant streaming`,"aria-label":`云端流式回复`,children:[(0,K.jsx)(`div`,{className:`message-meta`,children:n}),(0,K.jsx)(`div`,{className:`message-content`,children:(0,K.jsx)(uP,{remarkPlugins:[mL,K2],children:Me})})]}),(I||R)&&(0,K.jsxs)(`div`,{className:`cloud-chat-pending`,children:[(0,K.jsx)(ke,{size:15,className:`animate-spin`}),` 正在等待云端响应…`]})]}),(0,K.jsxs)(`div`,{className:`chat-composer-wrap`,children:[m.length>0&&(0,K.jsxs)(`div`,{className:`chat-pending-interactions`,role:`region`,"aria-label":`待处理确认`,"data-ui":`interaction-tray`,children:[(0,K.jsxs)(`div`,{className:`chat-pending-interactions-heading`,children:[(0,K.jsx)($e,{size:16}),(0,K.jsx)(`strong`,{children:`等待你的确认`}),(0,K.jsx)(`span`,{children:`处理后将继续当前云端对话`})]}),m.map(e=>(0,K.jsxs)(`div`,{className:`cloud-interaction-card`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:e.kind===`approval`?`工具操作需要批准`:e.title}),(0,K.jsx)(`span`,{children:e.title})]}),(0,K.jsxs)(`div`,{className:`cloud-interaction-actions`,children:[e.kind===`approval`&&(0,K.jsxs)(`button`,{className:`secondary-button`,type:`button`,disabled:!!U,onClick:()=>Ae(e,`reject`),children:[(0,K.jsx)(mt,{size:15}),`拒绝`]}),(0,K.jsxs)(`button`,{className:`primary-button`,type:`button`,disabled:!!U,onClick:()=>Ae(e,e.kind===`approval`?`approve`:`submit`),children:[(0,K.jsx)(et,{size:15}),e.kind===`approval`?`允许执行`:`提交`]})]})]},e.id))]}),(0,K.jsx)(g2,{input:_,placeholder:D===`plan`?`描述需要云端 Agent 规划的任务…`:`发送到云端 Agent`,disabled:!r||I||R,active:r,attachments:y.map((e,t)=>({id:`${t}:${e.name}:${e.size}`,name:e.name,kind:e.type.startsWith(`image/`)?`image`:e.type.startsWith(`text/`)?`text`:`file`,size:e.size})),mode:D,approvalMode:T,models:x.map(e=>({id:e.id,label:e.label,reasoningEfforts:q2(e)})),model:C,reasoningEffort:k,commandIndex:j,canSend:!!(_.trim()||y.length),attachmentAccept:``,attachmentLimit:8,onInputChange:v,onFiles:e=>{let t=e.find(e=>e.size>10485760);t&&Y(`附件过大`,`${t.name} 超过 10 MB 限制`,`error`),b(t=>{let n=e.filter(e=>e.size<=10485760);return t.length+n.length>8&&Y(`附件过多`,`每轮最多上传 8 个附件`,`error`),[...t,...n].slice(0,8)})},onRemoveAttachment:e=>{let t=Number(e.split(`:`,1)[0]);b(e=>e.filter((e,n)=>n!==t))},onSetMode:Te,onStartGoal:()=>Ee(`goal`),onApprovalModeChange:e=>{E(e),localStorage.setItem(q0(t),e)},onModelChange:w,onReasoningEffortChange:A,onCommandSelect:Ee,onCommandIndexChange:M,onSend:()=>{we()}}),(0,K.jsx)(`p`,{className:`chat-composer-disclaimer`,children:`AI 生成内容可能不准确,请核对关键结论与工具操作。`})]})]})]})}function g4(e){return e<=1023?`compact`:e<=1439?`laptop`:e<=1919?`desktop`:`wide`}function _4(){let[e,t]=(0,s.useState)(()=>g4(window.innerWidth));return(0,s.useEffect)(()=>{let e=()=>t(g4(window.innerWidth));return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),e}var v4=`agentkit-studio-theme`,y4=`(prefers-color-scheme: dark)`;function b4(e){return e===`light`||e===`dark`||e===`system`?e:`light`}function x4(e,t){return e===`system`?t?`dark`:`light`:e}function S4(){try{return b4(window.localStorage.getItem(v4))}catch{return`light`}}function C4(){return typeof window<`u`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches}function w4(e){let t=document.documentElement;t.classList.toggle(`dark`,e===`dark`),t.dataset.theme=e,t.style.colorScheme=e}function T4(){let e=S4();return w4(x4(e,C4())),e}function E4(){let[e,t]=(0,s.useState)(S4),[n,r]=(0,s.useState)(C4),i=x4(e,n);return(0,s.useEffect)(()=>{let e=window.matchMedia(y4),t=()=>r(e.matches);return t(),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]),(0,s.useLayoutEffect)(()=>{w4(i)},[i]),{preference:e,resolvedTheme:i,setPreference:(0,s.useCallback)(e=>{t(e);try{window.localStorage.setItem(v4,e)}catch{}},[])}}var D4=`agentkit.studio.rail-expanded`,O4=[{group:`创作`,items:[{id:`agents`,label:`Agent`,icon:N},{id:`conversations`,label:`会话`,icon:Ne}]},{group:`资源`,items:[{id:`resources`,label:`工程资源`,icon:P},{id:`runtime-resources`,label:`运行资源`,icon:Ze}]},{group:`交付与运行`,items:[{id:`builds`,label:`构建`,icon:Re},{id:`deployments`,label:`部署`,icon:oe},{id:`orchestration`,label:`任务编排`,icon:ft},{id:`observability`,label:`可观测`,icon:R},{id:`evaluations`,label:`评测`,icon:ie}]}];function k4(){try{let e=window.localStorage.getItem(D4);return e===null?null:e===`true`}catch{return null}}function A4(e){try{window.localStorage.setItem(D4,String(e))}catch{}}function j4(e,t,n){return t===e.id&&(e.id!==`resources`||e.kind==null||e.kind===n)||(t===`agent-detail`||t===`create`)&&e.id===`agents`}function M4({label:e,children:t}){return(0,K.jsxs)(Wv,{children:[(0,K.jsx)(Gv,{asChild:!0,children:t}),(0,K.jsx)(Kv,{children:(0,K.jsxs)(qv,{className:`studio-tooltip`,side:`right`,sideOffset:8,children:[e,(0,K.jsx)(Jv,{className:`studio-tooltip-arrow`})]})})]})}function N4({view:e,resourceKind:t,expanded:n,workspaceName:r,workspacePath:i,runtimeReady:a,onNavigate:o,onOpenSettings:s}){return(0,K.jsx)(Uv,{delayDuration:320,skipDelayDuration:120,children:(0,K.jsxs)(`aside`,{className:`sidebar navigation-rail`,"data-state":n?`expanded`:`compact`,children:[(0,K.jsxs)(`div`,{className:`product`,children:[(0,K.jsx)(`span`,{className:`product-mark`,"aria-hidden":`true`,children:`K`}),(0,K.jsxs)(`span`,{className:`product-copy`,children:[(0,K.jsx)(`strong`,{children:`AgentKit`}),(0,K.jsx)(`span`,{children:`Studio`})]})]}),(0,K.jsx)(M4,{label:i,children:(0,K.jsxs)(`button`,{className:`workspace-switcher`,type:`button`,"aria-label":`${r} 工作区`,"aria-disabled":!a,children:[(0,K.jsx)(`span`,{className:`workspace-mark`,children:(0,K.jsx)(Se,{size:16})}),(0,K.jsx)(`span`,{className:`workspace-copy`,children:(0,K.jsx)(`strong`,{children:r})})]})}),(0,K.jsx)(`nav`,{className:`primary-nav`,"aria-label":`产品导航`,children:O4.map(r=>(0,K.jsxs)(`div`,{className:`nav-group`,children:[(0,K.jsx)(`div`,{className:`nav-label`,children:r.group}),r.items.map(r=>{let i=r.icon,a=j4(r,e,t),s=(0,K.jsxs)(`button`,{className:`nav-item${a?` active`:``}`,type:`button`,"aria-label":r.label,"aria-current":a?`page`:void 0,onClick:()=>o(r.id,r.id===`resources`?r.kind||t:r.kind),children:[(0,K.jsx)(i,{size:18}),(0,K.jsx)(`span`,{children:r.label})]},`${r.id}-${r.label}`);return n?s:(0,K.jsx)(M4,{label:r.label,children:s},`${r.id}-${r.label}`)})]},r.group))}),(0,K.jsxs)(`div`,{className:`sidebar-footer`,children:[(0,K.jsx)(M4,{label:`本地用户`,children:(0,K.jsx)(`span`,{className:`user-avatar`,"aria-label":`本地用户`,children:`A`})}),(0,K.jsx)(M4,{label:`设置`,children:(0,K.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`设置`,onClick:s,children:(0,K.jsx)(Qe,{size:16})})})]})]})})}var P4={agents:`Agent`,create:`创建 Agent`,"agent-detail":`Agent 配置`,conversations:`会话`,resources:`工程资源`,builds:`构建`,deployments:`部署`,observability:`可观测`,evaluations:`评测`,"runtime-resources":`运行资源`,orchestration:`任务编排`},F4=Object.keys(P4),I4=[`model`,`tool`,`mcp`,`skill`],L4=new Set([`conversations`,`builds`,`observability`,`orchestration`]),R4=`agentkit-studio:chat-target:v1`;function z4(){try{return H4(window.localStorage.getItem(R4)||``)}catch{return{kind:``,id:``}}}function B4(e){try{window.localStorage.setItem(R4,e)}catch{}}function V4(e){let t=e.replace(/^#\/?/,``).split(`/`).filter(Boolean),n=t[0]===`agents`&&t[1]&&t[2]===`edit`?decodeURIComponent(t[1]):``,r=t[0]===`agents`&&t[1]&&!t[2]?decodeURIComponent(t[1]):``,i=t[0]===`evaluations`&&t[1]?decodeURIComponent(t[1]):``,a=t[0],o=n?`create`:r?`agent-detail`:F4.includes(a)?a:`agents`;return{view:o,resourceKind:o===`resources`&&I4.includes(t[1])?t[1]:`model`,editingAgentId:n,detailAgentId:r,evaluationRunId:i}}function H4(e){let t=e.indexOf(`:`);if(t<=0)return{kind:``,id:``};let n=e.slice(0,t);return n!==`cloud`&&n!==`local`?{kind:``,id:``}:{kind:n,id:e.slice(t+1)}}function U4(){let e=_4(),t=E4(),n=V4(window.location.hash),[r,i]=(0,s.useState)(n.view),[a,o]=(0,s.useState)(n.evaluationRunId),[c,l]=(0,s.useState)(n.resourceKind),[u,d]=(0,s.useState)([]),[f,p]=(0,s.useState)(!1),[m,h]=(0,s.useState)(n.detailAgentId||n.editingAgentId||``),[_,v]=(0,s.useState)(n.detailAgentId),[y,b]=(0,s.useState)(n.editingAgentId),[x,S]=(0,s.useState)(null),[C,w]=(0,s.useState)(!1),[T,E]=(0,s.useState)(!1),[D,O]=(0,s.useState)(!1),[k,A]=(0,s.useState)(`general`),[j,M]=(0,s.useState)(r===`conversations`),[P,F]=(0,s.useState)([]),[I,L]=(0,s.useState)(!1),[R,z]=(0,s.useState)(()=>{let e=z4();return e.kind===`cloud`?e.id:``}),[B,V]=(0,s.useState)(!1),[H,ee]=(0,s.useState)(0),[U,te]=(0,s.useState)(k4);(0,s.useEffect)(()=>(document.body.classList.toggle(`create-mode`,r===`create`),()=>document.body.classList.remove(`create-mode`)),[r]),(0,s.useEffect)(()=>{let e=()=>{let e=V4(window.location.hash);i(e.view),l(e.resourceKind),b(e.editingAgentId),v(e.detailAgentId),o(e.evaluationRunId),(e.editingAgentId||e.detailAgentId)&&h(e.editingAgentId||e.detailAgentId),e.view===`conversations`&&M(!0)};return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[]);function W(e){i(e),e===`conversations`&&M(!0),e!==`create`&&b(``),o(``);let t=e===`resources`?`#/resources/${c}`:`#/${e}`;window.location.hash!==t&&window.history.pushState(null,``,t)}function ne(e){i(`evaluations`),o(e),window.history.pushState(null,``,`#/evaluations/${encodeURIComponent(e)}`)}function re(){o(``),window.history.pushState(null,``,`#/evaluations`)}let G=(0,s.useCallback)(async()=>{try{let e=(await g(`/api/v1/agents?limit=100`).then(e=>e.json())).items||[],t=await Promise.all(e.map(e=>g(`/api/v1/agents/${encodeURIComponent(e.metadata.id)}`).then(e=>e.ok?e.json():null).catch(()=>null))),n=e.map((e,n)=>({...e,builds:t[n]?.builds||[]}));d(n),h(e=>n.some(t=>t.metadata.id===e)?e:n[0]?.metadata.id||``)}catch{}finally{p(!0)}},[]);(0,s.useEffect)(()=>{G()},[G,H]);let ie=(0,s.useCallback)(async()=>{try{let[e,t]=await Promise.all([g(`/api/v1/deployments`),g(`/api/v1/cloud-agents?size=100`)]);if(!e.ok)return;let n=await e.json(),r=t.ok?await t.json():{items:[]},i=n.items||[],a=r.items||[],o=[...new Set(i.flatMap(e=>e.agentId?.trim()?[e.agentId.trim()]:[]))],s=await Promise.all(o.map(e=>Promise.resolve().then(()=>g(`/api/v1/cloud-agents/${encodeURIComponent(e)}`)).then(async e=>e.ok?await e.json():null).catch(()=>null))),c=new Map(a.map(e=>[e.agentId,e]));for(let e of s)e?.agentId&&c.set(e.agentId,{...c.get(e.agentId),...e});let l=lB(i,[...c.values()]);F(l),z(e=>l.some(t=>t.id===e&&oB(t).kind===`studio-session-events`)?e:``)}catch{}finally{L(!0)}},[]);(0,s.useEffect)(()=>{ie()},[ie,H]),(0,s.useEffect)(()=>{g(`/api/v1/system/bootstrap`).then(e=>e.json()).then(e=>{S(e.workspace||null),w(!!e.workspace)}).catch(()=>w(!1)).finally(()=>E(!0))},[H]);let ae=u.find(e=>e.metadata.id===m),oe=T?C?`ready`:`failed`:`pending`,se=T?C?`运行正常`:`连接失败`:`检查中`;function ce(e){e&&(h(e),r===`conversations`&&M(!0))}let le=P.filter(e=>oB(e).kind===`studio-session-events`),ue=le.find(e=>e.id===R),de=r===`conversations`&&!!ue;(0,s.useEffect)(()=>{r!==`conversations`||!f||!I||(ue?B4(`cloud:${ue.id}`):ae&&B4(`local:${ae.metadata.id}`))},[f,I,ae,ue,r]),(0,s.useEffect)(()=>{if(r!==`conversations`||!j||!f||!I||ae||ue)return;let e=le[0];e&&(z(e.id),V(!1))},[f,j,I,ae,ue,le,r]);let fe=[...u.map(e=>({value:`local:${e.metadata.id}`,label:`本地 · ${e.metadata.name}`})),...le.map(e=>({value:`cloud:${e.id}`,label:`云端 · ${e.agentName||e.agentId}`}))],pe=ue?`cloud:${ue.id}`:m?`local:${m}`:``;function me(e){let{kind:t,id:n}=H4(e);if(t===`cloud`&&n){if(!le.some(e=>e.id===n))return;z(n),V(!1),M(!0);return}t===`local`&&n&&(z(``),ce(n))}function he(e){let t=ae||u[0],n=ue||le[0];e?(z(``),h(e)):!e&&ue?h(``):t?(z(``),h(t.metadata.id)):n?(h(``),z(n.id),V(!1)):(h(``),z(``)),M(!0),W(`conversations`)}function ge(e){oB(e).kind===`studio-session-events`&&(F(t=>t.some(t=>t.id===e.id)?t:[...t,e]),z(e.id),V(!1),M(!0),W(`conversations`))}function _e(e){b(``),v(e),h(e),i(`agent-detail`);let t=`#/agents/${encodeURIComponent(e)}`;window.location.hash!==t&&window.history.pushState(null,``,t)}function ve(){b(``),W(`create`)}function ye(e){b(e),h(e),i(`create`);let t=`#/agents/${encodeURIComponent(e)}/edit`;window.location.hash!==t&&window.history.pushState(null,``,t)}function be(e){l(e),i(`resources`);let t=`#/resources/${e}`;window.location.hash!==t&&window.history.pushState(null,``,t)}let xe=r===`create`||r===`agent-detail`?`Agent`:null,Se=r===`create`&&y?`编辑 Agent`:P4[r],Ce=x?.name||`Workspace`,we=x?.path||(C?`本地工作区`:`正在连接本地工作区`),Te=r===`create`||r===`conversations`||r===`observability`,Ee=e!==`compact`,De=Ee&&(U??!0);function Oe(){if(!Ee)return;let e=!De;te(e),A4(e)}function ke(e,t){e===`conversations`?he():e===`resources`?be(t||`model`):W(e)}return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`a`,{className:`skip-link`,href:`#mainContent`,children:`跳到主要内容`}),(0,K.jsxs)(`div`,{className:`app-shell`,"data-view":r,"data-viewport":e,"data-focused":Te,"data-rail":De?`expanded`:`compact`,children:[(0,K.jsx)(N4,{view:r,resourceKind:c,expanded:De,workspaceName:Ce,workspacePath:we,runtimeReady:C,onNavigate:ke,onOpenSettings:()=>{A(`general`),O(!0)}}),(0,K.jsxs)(`div`,{className:`app-main`,children:[(0,K.jsxs)(`header`,{className:`global-header${xe?` nested`:``}`,"aria-label":`当前页面`,children:[Ee&&(0,K.jsx)(`button`,{className:`icon-button tertiary rail-toggle`,type:`button`,"aria-label":De?`收起导航`:`展开导航`,title:De?`收起导航`:`展开导航`,onClick:Oe,children:De?(0,K.jsx)(Be,{size:16}):(0,K.jsx)(Ve,{size:16})}),xe&&(0,K.jsxs)(`div`,{className:`header-identity-inline`,"aria-label":`当前位置`,children:[(0,K.jsx)(`button`,{className:`crumb`,type:`button`,onClick:()=>W(`agents`),children:xe}),(0,K.jsx)(`span`,{className:`crumb-sep`,children:`/`}),r===`agent-detail`&&ae&&(0,K.jsx)(_t,{name:ae.metadata.name,appearance:ae.metadata.appearance,template:ae.metadata.labels?.[`agentkit.ksyun.com/template`],size:`sm`}),(0,K.jsx)(`h1`,{children:r===`agent-detail`&&ae?ae.metadata.name:Se}),r===`agent-detail`&&ae&&(0,K.jsxs)(`span`,{className:`mono`,children:[ae.metadata.id,` · r`,ae.metadata.revision||1]})]}),!xe&&(0,K.jsxs)(`div`,{className:`header-identity`,children:[(0,K.jsxs)(`span`,{children:[`工作区 · `,Ce]}),r===`conversations`?(0,K.jsx)(`strong`,{children:Se}):(0,K.jsx)(`h1`,{children:Se})]}),(0,K.jsxs)(`div`,{className:`header-actions`,children:[(0,K.jsx)(`div`,{id:`pageHeaderTools`,className:`page-header-tools`,"data-testid":`page-header-tools`}),r===`conversations`?(0,K.jsx)(kh,{className:`header-agent-selector conversation-target-selector`,ariaLabel:`切换会话目标`,value:pe,placeholder:`选择会话目标`,options:fe,onValueChange:me}):L4.has(r)&&(0,K.jsx)(kh,{className:`header-agent-selector`,ariaLabel:`切换当前 Agent`,value:m,placeholder:`未选择`,options:u.map(e=>({value:e.metadata.id,label:e.metadata.name})),onValueChange:ce}),r!==`conversations`&&(0,K.jsx)(`span`,{className:`tag`,children:de?`云端部署`:`本地`}),(0,K.jsx)(`span`,{className:`badge`,"data-state":oe,children:se}),(0,K.jsx)(`button`,{className:`icon-button tertiary global-refresh-button`,type:`button`,"aria-label":`刷新`,title:`刷新`,onClick:()=>ee(e=>e+1),children:(0,K.jsx)(Je,{size:16})}),r===`conversations`&&j&&m&&!de&&(0,K.jsx)(`button`,{className:`icon-button tertiary conversation-run-detail`,type:`button`,"aria-label":`运行详情`,title:`运行详情`,onClick:()=>V(e=>!e),children:(0,K.jsx)(He,{size:16})}),(0,K.jsx)(`div`,{id:`pageHeaderActions`,className:`page-header-page-actions`,"data-testid":`page-header-actions`})]})]}),(0,K.jsxs)(`main`,{id:`mainContent`,children:[(0,K.jsxs)(`div`,{className:`chat-wrap`,"data-layout":`workbench`,style:{display:r===`conversations`?`flex`:`none`},children:[(0,K.jsxs)(`div`,{className:`chat-host`,children:[j&&de&&ue&&(0,K.jsx)(h4,{deploymentId:ue.id,agentId:ue.agentId||`Agent`,agentName:ue.agentName||ue.agentId||`云端 Agent`,active:r===`conversations`,refreshTick:H},ue.id),j&&!de&&m&&(0,K.jsx)(U2,{agentId:m,agentName:ae?.metadata.name||`Agent`,agentAppearance:ae?.metadata.appearance,active:r===`conversations`,refreshTick:H,onConfigureAgent:()=>ye(m),onOpenSettings:()=>{A(`credentials`),O(!0)}},m),j&&!de&&!m&&(0,K.jsxs)(`div`,{className:`empty-state chat-agent-empty`,role:`status`,children:[(0,K.jsx)(`span`,{className:`empty-icon`,children:(0,K.jsx)(N,{})}),(0,K.jsx)(`h2`,{children:f&&I?`还没有可用的会话目标`:`正在载入会话目标`}),(0,K.jsx)(`p`,{children:f&&I?`可以创建本地 Agent,或在云端 Agent 页面选择受支持的 Agent。`:`正在同步本地工作区与账号云端 Agent…`}),f&&I&&(0,K.jsxs)(`div`,{className:`empty-actions`,children:[(0,K.jsx)(`button`,{className:`primary-button`,type:`button`,onClick:ve,children:`创建本地 Agent`}),(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:()=>W(`deployments`),children:`查看云端 Agent`})]})]})]}),B&&j&&m&&!de&&(0,K.jsx)(W0,{agentId:m,onClose:()=>V(!1),onOpenTrace:()=>W(`observability`)})]}),(0,K.jsxs)(`div`,{style:{display:r===`conversations`?`none`:void 0},children:[r===`agents`&&(0,K.jsx)(jh,{agents:u,runtimeReady:C,runtimeChecked:T,workspaceName:x?.name||``,onCreate:ve,onDetail:_e,onChat:he,onBuild:()=>W(`builds`),onChanged:G}),r===`create`&&(0,K.jsx)(Wz,{editingAgentId:y||void 0,viewportMode:e,onAgentsChanged:G,onBack:()=>y?_e(y):W(`agents`),onCreated:(e,t)=>{b(``),G(),e&&t?he(e):e?_e(e):W(`agents`)}}),r===`agent-detail`&&_&&(0,K.jsx)(Xz,{agentId:_,onBack:()=>W(`agents`),onChat:he,onBuild:()=>W(`builds`),onEdit:ye,onChanged:G}),r===`resources`&&(0,K.jsx)(dz,{kind:c,onKindChange:be,refreshTick:H}),r===`builds`&&(0,K.jsx)(rB,{currentAgentId:m,agents:u,onSelectAgent:h,onCreate:ve}),r===`deployments`&&(0,K.jsx)(BB,{onCreate:ve,onOpenChat:ge,onSelectBuild:()=>W(`builds`)}),r===`observability`&&(0,K.jsx)(QV,{refreshTick:H}),r===`evaluations`&&!a&&(0,K.jsx)(Z1,{refreshTick:H,onOpenRun:ne}),r===`evaluations`&&a&&(0,K.jsx)(e0,{runId:a,onBack:re}),r===`runtime-resources`&&(0,K.jsx)(oH,{refreshTick:H,onOpenResources:be}),r===`orchestration`&&(0,K.jsx)(V1,{currentAgentId:m,agents:u,onSelectAgent:h,onCreate:ve})]})]})]}),D&&(0,K.jsx)(a0,{themePreference:t.preference,onThemePreferenceChange:t.setPreference,initialSection:k,onClose:()=>O(!1)}),(0,K.jsx)(O_,{})]})]})}async function W4(){T4();try{await _()}catch{}(0,c.createRoot)(document.getElementById(`root`)).render((0,K.jsx)(s.StrictMode,{children:(0,K.jsx)(U4,{})}))}W4(); \ No newline at end of file diff --git a/ksadk/studio/static/assets/index-DXs1Eq4M.css b/ksadk/studio/static/assets/index-DXs1Eq4M.css new file mode 100644 index 00000000..2b240380 --- /dev/null +++ b/ksadk/studio/static/assets/index-DXs1Eq4M.css @@ -0,0 +1 @@ +.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 .5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#555;--xy-background-pattern-lines-color-default:#333;--xy-background-pattern-cross-color-default:#333;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 .5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;color:var(--xy-node-color,var(--xy-node-color-default));text-align:center;border:var(--xy-node-border,var(--xy-node-border-default));background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));padding:10px;font-size:12px}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var(--xy-controls-button-background-color-hover-props,var(--xy-controls-button-background-color-hover,var(--xy-controls-button-background-color-hover-default)));color:var(--xy-controls-button-color-hover-props,var(--xy-controls-button-color-hover,var(--xy-controls-button-color-hover-default)))}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)))}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}.evaluation-page__create{align-items:start}.evaluation-page__create>.studio-form-field{min-width:0}.evaluation-page__field--wide{grid-column:1/-1}.evaluation-page__fail-fast{box-sizing:border-box;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);align-items:center;min-height:42px;padding:8px 10px}.evaluation-page__fail-fast input{margin-top:0}.evaluation-page__evaluator-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.evaluation-page__evaluator-options .checkbox-row{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);min-width:0;padding:8px 10px}.evaluation-page__evaluator-options small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.evaluation-page__evalset-picker{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;min-height:36px;display:grid}.evaluation-page__evalset-picker>.button{cursor:pointer;min-height:36px}.evaluation-page__evalset-path{min-width:0;color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--font-size-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.evaluation-page__metrics{border-block:1px solid var(--border);grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:16px;display:grid}.evaluation-page__metrics>div{border-right:1px solid var(--border);min-height:72px;padding:12px 18px}.evaluation-page__metrics>div:last-child{border-right:0}.evaluation-page__metrics span,.evaluation-page__metrics small{color:var(--text-tertiary);font-size:var(--font-size-meta);display:block}.evaluation-page__metrics strong{font-size:var(--font-size-subtitle);font-weight:var(--font-weight-semibold);margin-top:3px;display:block}.evaluation-page__run-list,.evaluation-detail-page__report{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);overflow:hidden}.evaluation-page__run-list>.studio-data-table{border:0;border-radius:0}.evaluation-detail-page__overview{border-block:1px solid var(--border);grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:20px;display:grid}.evaluation-detail-page__overview>div{border-right:1px solid var(--border);min-width:0;min-height:88px;padding:16px 20px}.evaluation-detail-page__overview>div:last-child{border-right:0}.evaluation-detail-page__overview span,.evaluation-detail-page__overview small{color:var(--text-tertiary);font-size:var(--font-size-meta);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.evaluation-detail-page__overview strong{font-size:var(--font-size-subtitle);margin:6px 0;display:block}.evaluation-detail-page__pending{border-block:1px solid var(--border);min-height:72px;color:var(--text-secondary);align-items:center;gap:12px;padding:16px;display:flex}.evaluation-detail-page__pending strong,.evaluation-detail-page__pending span{display:block}.evaluation-detail-page__pending span{color:var(--text-tertiary);font-size:var(--font-size-meta);margin-top:3px}.evaluation-page__panel-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;min-height:58px;padding:10px 16px;display:flex}.evaluation-page__panel-header strong,.evaluation-page__panel-header span{display:block}.evaluation-page__panel-header>div>span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.evaluation-page__detail-empty{min-height:300px;color:var(--text-tertiary);text-align:center;align-content:center;place-items:center;gap:8px;padding:32px;display:grid}.evaluation-page__detail-empty strong{color:var(--text-primary)}.evaluation-page__snapshot{border-bottom:1px solid var(--border);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;display:grid}.evaluation-page__snapshot>div{border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-width:0;padding:12px 16px}.evaluation-page__snapshot dt{color:var(--text-tertiary);font-size:var(--font-size-caption)}.evaluation-page__snapshot dd{text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-meta);margin:3px 0 0;overflow:hidden}.evaluation-page__dataset{border-bottom:1px solid var(--border)}.evaluation-page__dataset-heading{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;min-height:62px;padding:12px 16px;display:flex}.evaluation-page__dataset-heading h2,.evaluation-page__dataset-heading p{margin:0}.evaluation-page__dataset-heading h2{font-size:var(--font-size-control)}.evaluation-page__dataset-heading p,.evaluation-page__dataset-heading>span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:3px}.evaluation-page__dataset-summary{grid-template-columns:minmax(150px,.8fr) 90px 110px minmax(220px,1.4fr);margin:0;display:grid}.evaluation-page__dataset-summary>div{border-right:1px solid var(--border);min-width:0;padding:11px 16px}.evaluation-page__dataset-summary>div:last-child{border-right:0}.evaluation-page__dataset-summary dt{color:var(--text-tertiary);font-size:var(--font-size-caption)}.evaluation-page__dataset-summary dd{font-size:var(--font-size-meta);text-overflow:ellipsis;white-space:nowrap;margin:3px 0 0;overflow:hidden}.evaluation-page__case-layout{grid-template-columns:minmax(230px,.65fr) minmax(280px,1fr);min-height:380px;display:grid}.evaluation-page__case-list{border-right:1px solid var(--border);overflow:auto}.evaluation-page__case-list>button{border:0;border-bottom:1px solid var(--border);width:100%;min-height:64px;color:var(--text-primary);text-align:left;cursor:pointer;background:0 0;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;display:flex}.evaluation-page__case-list>button:hover,.evaluation-page__case-list>button.active{background:var(--hover)}.evaluation-page__case-list span,.evaluation-page__case-list strong,.evaluation-page__case-list small{display:block}.evaluation-page__case-list .evaluation-page__case-preview{text-overflow:ellipsis;white-space:nowrap;max-width:210px;overflow:hidden}.evaluation-page__case-list small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:3px}.evaluation-page__case-list>button>span:last-child{text-align:right}.evaluation-page__case-detail{min-width:0;overflow:auto}.evaluation-page__case-detail section+section{border-top:1px solid var(--border)}.evaluation-page__case-detail>section{padding:16px}.evaluation-page__case-detail h3{font-size:var(--font-size-control);margin:0 0 8px}.evaluation-page__case-detail pre{border-radius:var(--radius-control);max-height:190px;color:var(--code-text);background:var(--code-bg);font-family:var(--font-mono);font-size:var(--font-size-caption);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:10px;overflow:auto}.evaluation-page__turns{gap:18px;display:grid}.evaluation-page__turns article{border-left:2px solid var(--border-strong);gap:9px;padding-left:12px;display:grid}.evaluation-page__turns article>strong{font-family:var(--font-mono);font-size:var(--font-size-caption)}.evaluation-page__turns article>div>span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-bottom:5px;display:block}.evaluation-page__expected-tools{flex-wrap:wrap;gap:6px;display:flex}.evaluation-page__expected-tools code{border:1px solid var(--border);border-radius:var(--radius-control);color:var(--text-secondary);background:var(--surface-subtle);font-size:var(--font-size-caption);padding:3px 7px}.evaluation-page__assertions{border-block:1px solid var(--border)}.evaluation-page__assertions>div{border-bottom:1px solid var(--border);grid-template-columns:minmax(135px,.8fr) minmax(120px,1.2fr) auto;align-items:center;gap:12px;min-height:48px;padding:8px 0;display:grid}.evaluation-page__assertions>div:last-child{border-bottom:0}.evaluation-page__assertions strong,.evaluation-page__assertions small{display:block}.evaluation-page__assertions small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.evaluation-page__assertions code{max-height:88px;color:var(--text-secondary);font-size:var(--font-size-caption);white-space:pre-wrap;overflow-wrap:anywhere;overflow:auto}.evaluation-page__section-title{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.evaluation-page__section-title>span,.evaluation-page__muted{color:var(--text-tertiary);font-size:var(--font-size-caption)}.evaluation-page__case-evidence details>summary{color:var(--text-secondary);font-size:var(--font-size-meta);font-weight:var(--font-weight-medium);cursor:pointer}.evaluation-page__case-evidence h4{color:var(--text-tertiary);font-size:var(--font-size-caption);margin:14px 0 7px}.evaluation-page__evidence{gap:7px;display:grid}.evaluation-page__evidence>div{font-size:var(--font-size-meta);grid-template-columns:minmax(110px,1fr) auto 50px;align-items:center;gap:8px;display:grid}@media (width<=1180px){.evaluation-detail-page__overview,.evaluation-page__dataset-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.evaluation-page__dataset-summary>div:nth-child(2){border-right:0}.evaluation-page__dataset-summary>div:nth-child(-n+2){border-bottom:1px solid var(--border)}}@media (width<=760px){.evaluation-detail-page>.page-header{flex-direction:column;gap:12px}.evaluation-detail-page>.page-header>div:first-child,.evaluation-detail-page>.page-header>.header-actions{width:100%}.evaluation-detail-page>.page-header>.header-actions{flex-wrap:wrap;margin-left:0}.evaluation-detail-page>.page-header p{overflow-wrap:anywhere}.evaluation-page__metrics,.evaluation-detail-page__overview,.evaluation-page__snapshot,.evaluation-page__case-layout{grid-template-columns:1fr}.evaluation-page__metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.evaluation-page__dataset-summary,.evaluation-page__assertions>div{grid-template-columns:1fr}.evaluation-page__dataset-summary>div{border-right:0;border-bottom:1px solid var(--border)}.evaluation-page__dataset-summary>div:last-child{border-bottom:0}.evaluation-detail-page__overview>div,.evaluation-page__snapshot>div,.evaluation-page__case-list{border-right:0;border-bottom:1px solid var(--border)}.evaluation-page__metrics>div{border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.evaluation-page__metrics>div:nth-child(2n){border-right:0}.evaluation-page__metrics>div:nth-child(n+3){border-bottom:0}.evaluation-page__evaluator-options{grid-template-columns:1fr}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--font-sans:"PingFang SC", "Noto Sans CJK SC", "Microsoft YaHei UI", "Microsoft YaHei", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", "SFMono-Regular", Consolas, monospace;--font-size-nano:9px;--font-size-micro:10px;--font-size-fine:11px;--font-size-caption:12px;--font-size-meta:13px;--font-size-control:14px;--font-size-body:15px;--font-size-subtitle:16px;--font-size-card-metric:18px;--font-size-section-title:20px;--font-size-page-title:26px;--font-size-metric:28px;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--line-height-none:1;--line-height-code-compact:1.55;--line-height-caption:1.5;--line-height-control:1.55;--line-height-body:1.6;--line-height-tight:1.35;--line-height-editor:1.72;--line-height-title:1.4;--canvas:#f8fafc;--sidebar:#fff;--surface:#fff;--surface-subtle:#f1f5f9;--surface-raised:#fff;--surface-sunken:#f5f7fa;--surface-hover:#eef2f7;--hover:#eef2f7;--selected:#e0edff;--text:#1e293b;--text-primary:#1e293b;--text-label:#334155;--text-secondary:#475569;--text-tertiary:#64748b;--text-faint:#94a3b8;--text-disabled:#94a3b8;--border:#e2e8f0;--border-card:#dce3ec;--border-strong:#cad4e0;--accent:#2167d5;--accent-strong:#1857b4;--accent-soft:#eaf3ff;--accent-hover:#def;--accent-active:#cfe4fc;--accent-border:#bfd7f3;--button-primary-bg:#4d8fe8;--button-primary-bg-hover:#5d9ef1;--button-primary-bg-active:#3e7fd3;--button-primary-text:#fff;--success:#28745a;--success-soft:#ecf7f1;--info:#3e6f9f;--info-soft:#eef4fa;--warning:#8a641f;--warning-text:#765314;--warning-soft:#fbf5e8;--edge:#28745a;--edge-soft:#ecf7f1;--edge-border:#bfe2d2;--cloud:#2167d5;--cloud-soft:#eaf3ff;--cloud-border:#bfd7f3;--route:#8a641f;--route-soft:#fbf5e8;--danger:#b5473c;--danger-soft:#fff1ef;--code-bg:#f6f8fb;--code-text:#263548;--code-token-comment:#7a8798;--code-token-punctuation:#596579;--code-token-property:#356b8c;--code-token-number:#9a5b1c;--code-token-string:#24745b;--code-token-operator:#5b6677;--code-token-keyword:#81529b;--code-token-function:#1d609b;--code-token-class:#9b4e73;--code-token-variable:#8a6120;--radius-control:6px;--radius-surface:8px;--radius-small:4px;--radius-badge:4px;--radius-indicator:2px;--radius-circle:50%;--radius-pill:999px;--radius-message:12px 12px 2px 12px;--control-height:42px;--button-height:40px;--button-height-small:34px;--status-height:24px;--shadow-overlay:0 20px 48px #0f172a24;--shadow-focus:0 0 0 3px #2563eb24;--shadow-focus-subtle:0 0 0 3px #2563eb1a;--shadow-control:0 1px 2px #0f172a0f, 0 1px 3px #0f172a0d;--shadow-toast:0 12px 32px #0f172a1f;--motion-fast:.12s;--motion-base:.18s;--ease:cubic-bezier(.2, 0, 0, 1)}*{box-sizing:border-box}html{background:var(--canvas);scroll-behavior:smooth;min-height:100%}body{min-height:100%;color:var(--text);background:var(--canvas);font-family:var(--font-sans);font-size:var(--font-size-body);font-weight:var(--font-weight-regular);line-height:var(--line-height-body);letter-spacing:0;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}button,input,select,textarea{color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;letter-spacing:0}button{-webkit-tap-highlight-color:transparent}h1,h2,h3,p{text-wrap:pretty}svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.75px;flex:none}[hidden]{display:none!important}.skip-link{z-index:200;border-radius:var(--radius-control);color:var(--accent);background:var(--surface);box-shadow:var(--shadow-overlay);padding:8px 12px;position:fixed;top:8px;left:8px;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}:focus-visible{outline-offset:2px;outline:2px solid #4e6f9e59}.app-shell{min-height:100dvh}.sidebar{z-index:40;border-right:1px solid var(--border);background:var(--sidebar);flex-direction:column;width:248px;display:flex;position:fixed;inset:0 auto 0 0}.product{border-bottom:1px solid var(--border);align-items:center;gap:10px;height:64px;padding:0 18px;display:flex}.product-mark{border:1px solid var(--border-strong);border-radius:var(--radius-surface);width:32px;height:32px;color:var(--accent);background:var(--surface);font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);place-items:center;display:grid}.product-copy{min-width:0;line-height:var(--line-height-none);align-items:baseline;gap:4px;display:flex}.product-copy strong{font-size:var(--font-size-subtitle);font-weight:var(--font-weight-semibold)}.product-copy span{color:var(--text-secondary);font-size:var(--font-size-control)}.preview-label{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-left:auto}.workspace-switcher{border-radius:var(--radius-surface);cursor:pointer;text-align:left;width:auto;min-height:60px;transition:border-color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);background:0 0;border:1px solid #0000;align-items:center;gap:10px;margin:10px 8px 6px;padding:9px 10px;display:flex}.workspace-switcher:hover{background:var(--hover);border-color:#0000}.workspace-mark{border-radius:var(--radius-control);width:30px;height:30px;color:var(--accent);background:var(--accent-soft);place-items:center;display:grid}.workspace-mark svg{width:16px;height:16px}.workspace-copy{flex:1;min-width:0}.workspace-copy strong,.workspace-copy span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.workspace-copy strong{font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.workspace-copy span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption);margin-top:2px}.workspace-chevron{width:14px;color:var(--text-tertiary)}.primary-nav{flex:1;padding:8px 10px 14px;overflow-y:auto}.nav-group+.nav-group{margin-top:20px}.nav-label{color:var(--text-tertiary);font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);margin:0 10px 7px}.nav-item{width:100%;min-height:var(--button-height);border-radius:var(--radius-control);color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-control);text-align:left;transition:color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);background:0 0;border:0;align-items:center;gap:10px;padding:8px 11px;display:flex;position:relative}.nav-item:hover{color:var(--text);background:var(--hover)}.nav-item.active{color:var(--accent);background:var(--accent-soft);font-weight:var(--font-weight-semibold)}.nav-item.active:before{content:"";border-radius:var(--radius-indicator);background:var(--accent);width:2px;height:20px;position:absolute;left:0}.nav-item svg{width:17px;height:17px;color:var(--text-secondary)}.nav-item.active svg{color:var(--accent)}.nav-beta-badge{border-radius:var(--radius-badge);color:var(--accent);background:var(--accent-soft);font-size:var(--font-size-nano);font-weight:var(--font-weight-semibold);line-height:var(--line-height-none);letter-spacing:.4px;text-transform:uppercase;margin-left:auto;padding:1px 6px}.sidebar-footer{border-top:1px solid var(--border);background:#fffffff5;align-items:center;gap:10px;height:68px;padding:9px 14px;display:flex}.user-avatar{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);width:34px;height:34px;font-size:var(--font-size-meta);font-weight:var(--font-weight-semibold);place-items:center;display:grid}.studio-tooltip{z-index:90;border:1px solid var(--border-strong);border-radius:var(--radius-control);max-width:min(360px,100vw - 24px);color:var(--text);background:var(--surface);box-shadow:var(--shadow-overlay);font-size:var(--font-size-caption);line-height:var(--line-height-caption);overflow-wrap:anywhere;padding:7px 9px}.user-copy{flex:1;min-width:0}.user-copy strong,.user-copy span{display:block}.user-copy strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.user-copy span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.app-main{min-height:100dvh;margin-left:248px}.global-header{z-index:30;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff0;align-items:center;gap:10px;height:64px;padding:0 28px;display:flex;position:sticky;top:0}.breadcrumb{font-size:var(--font-size-control);font-weight:var(--font-weight-medium);align-items:center;gap:8px;display:flex}.breadcrumb .muted{color:var(--text-tertiary);font-weight:var(--font-weight-regular)}.breadcrumb svg{width:13px;color:var(--text-tertiary)}.header-spacer,.toolbar-spacer{flex:1}.global-context{align-items:center;gap:8px;min-width:0;display:flex}.context-field{color:var(--text-tertiary);font-size:var(--font-size-meta);align-items:center;gap:6px;display:inline-flex}.context-field .studio-select-trigger{width:auto;min-width:132px;max-width:220px;min-height:34px}.runtime-badge{min-width:0;max-width:180px;color:var(--text-secondary);font-size:var(--font-size-meta);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.runtime-indicator{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);cursor:pointer;min-height:36px;font-size:var(--font-size-meta);align-items:center;gap:7px;padding:6px 11px;display:inline-flex}.runtime-indicator:hover{background:var(--surface-subtle)}.runtime-indicator svg{width:13px;color:var(--text-tertiary)}.runtime-state{color:var(--text-tertiary)}.status-dot{border-radius:var(--radius-circle);background:var(--text-tertiary);flex:none;width:7px;height:7px;display:inline-block}.status-dot.success{background:var(--success)}.status-dot.info{background:var(--info)}.status-dot.warning{background:var(--warning)}.status-dot.danger{background:var(--danger)}.status-dot.neutral{background:var(--text-tertiary)}.mobile-menu{display:none!important}.view{min-height:calc(100dvh - 64px);display:none}.view.active{display:block}.page-container{width:min(1520px,100%);margin:0 auto;padding:40px 48px 64px}.page-header{align-items:flex-start;gap:24px;min-height:76px;margin-bottom:30px;display:flex}.page-header>div:first-child{min-width:0}.page-header h1{font-size:var(--font-size-page-title);font-weight:var(--font-weight-semibold);line-height:var(--line-height-title);margin:0}.page-header p{max-width:68ch;color:var(--text-secondary);font-size:var(--font-size-body);line-height:var(--line-height-body);margin:6px 0 0}.page-header>.button,.page-header>.header-actions{margin-left:auto}.header-actions{align-items:center;gap:8px;display:flex}.button,.icon-button{min-height:var(--button-height);border-radius:var(--radius-control);cursor:pointer;font-size:var(--font-size-control);font-weight:var(--font-weight-medium);white-space:nowrap;transition:color var(--motion-fast) var(--ease), border-color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease), transform var(--motion-fast) var(--ease);border:1px solid #0000;justify-content:center;align-items:center;gap:7px;padding:7px 15px;display:inline-flex}.button svg,.icon-button svg{width:16px;height:16px}.button:hover,.icon-button:hover{text-decoration:none}.button:active,.icon-button:active{transform:translateY(1px)}.button:disabled,.icon-button:disabled{color:var(--text-disabled);border-color:var(--border);background:var(--surface-subtle);cursor:not-allowed;transform:none}.button.accent{border-color:var(--accent-border);color:var(--accent);background:var(--accent-soft)}.button.accent:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent)}.button.accent:active:not(:disabled){background:var(--accent-active)}.button.secondary,.icon-button.secondary{border-color:var(--border-strong);color:var(--text);background:var(--surface)}.button.secondary:hover:not(:disabled),.icon-button.secondary:hover:not(:disabled){background:var(--hover)}.button.tertiary,.icon-button.tertiary{color:var(--text-secondary);background:0 0}.button.tertiary:hover:not(:disabled),.icon-button.tertiary:hover:not(:disabled){color:var(--text);background:var(--hover)}.button.danger{color:var(--danger);background:var(--danger-soft);border-color:#f1d6d2}.button.danger:hover:not(:disabled){border-color:var(--danger);background:#fecaca}.button.small{min-height:var(--button-height-small);font-size:var(--font-size-meta);padding:5px 11px}.button.compact{min-height:var(--button-height-small);padding:4px 8px}.icon-button{width:40px;padding:0}.text-button{color:var(--accent);cursor:pointer;font-size:var(--font-size-meta);background:0 0;border:0;padding:2px}.text-button:hover{text-underline-offset:3px;text-decoration:underline}.overview-strip{border-block:1px solid var(--border);grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:30px;display:grid}.overview-item{flex-direction:column;justify-content:center;min-height:116px;padding:18px 22px;display:flex;position:relative}.overview-item+.overview-item:before{content:"";background:var(--border);width:1px;position:absolute;inset:22px auto 22px 0}.overview-item>span{color:var(--text-secondary);font-size:var(--font-size-control)}.overview-item strong{min-height:30px;font-size:var(--font-size-metric);font-weight:var(--font-weight-medium);font-variant-numeric:tabular-nums;align-items:center;gap:8px;margin-top:4px;display:flex}.overview-item small{color:var(--text-tertiary);font-size:var(--font-size-meta)}.environment-overview strong{font-size:var(--font-size-subtitle)}.content-section{min-width:0}.section-toolbar{align-items:center;gap:10px;min-height:46px;margin-bottom:12px;display:flex}.search-field{width:min(360px,100%);position:relative}.search-field svg{width:16px;height:16px;color:var(--text-tertiary);pointer-events:none;position:absolute;top:12px;left:12px}.search-field input{padding-left:38px}.sync-state{color:var(--text-tertiary);font-size:var(--font-size-meta)}input,textarea,select{border:1px solid var(--border-strong);border-radius:var(--radius-control);width:100%;color:var(--text);background:var(--surface);transition:border-color var(--motion-fast) var(--ease), box-shadow var(--motion-fast) var(--ease)}input,select{height:var(--control-height);font-size:var(--font-size-body);padding:0 12px}textarea{min-height:104px;font-size:var(--font-size-body);line-height:var(--line-height-body);resize:vertical;padding:12px 13px}input::placeholder,textarea::placeholder{color:var(--text-tertiary)}input:hover,textarea:hover,select:hover{border-color:#c1c9d4}input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:var(--shadow-focus);outline:0}input:disabled,textarea:disabled,select:disabled{color:var(--text-secondary);background:var(--surface-subtle)}.compact-select{width:156px}.table-surface{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);position:relative;overflow:hidden}.studio-data-table{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);min-width:0;overflow:hidden}.studio-data-table-scroll{min-width:0;overflow:auto}.studio-data-table table{table-layout:auto}.studio-data-table th{z-index:1;white-space:nowrap;position:sticky;top:0}.studio-data-table td{min-width:0}.studio-data-table tbody tr.is-interactive{cursor:pointer}.studio-data-table tbody tr.is-interactive:focus-visible{z-index:1;outline:2px solid var(--accent);outline-offset:-2px;position:relative}.studio-data-table-state{min-height:248px;color:var(--text-secondary);text-align:center;align-content:center;place-items:center;gap:7px;padding:32px;display:grid}.studio-data-table-state strong{color:var(--text-primary);font-size:var(--font-size-section-title)}.studio-data-table-state>span:not(.empty-icon){max-width:52ch;color:var(--text-tertiary);font-size:var(--font-size-caption)}.studio-data-table-state.is-error>svg{color:var(--danger)}.studio-data-table-state .button{margin-top:8px}.studio-data-table-pagination{border-top:1px solid var(--border);min-height:50px;color:var(--text-tertiary);background:var(--surface-subtle);font-size:var(--font-size-caption);justify-content:space-between;align-items:center;gap:16px;padding:9px 14px;display:flex}.studio-data-table-pagination>div{gap:6px;display:flex}table{border-collapse:collapse;table-layout:fixed;width:100%}th,td{border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}th{height:46px;color:var(--text-secondary);background:var(--surface-subtle);font-size:var(--font-size-meta);font-weight:var(--font-weight-medium);padding:0 16px}td{min-height:62px;font-size:var(--font-size-control);padding:15px 16px}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fbfcfd}.actions-column{text-align:right;width:268px}td.actions-column{white-space:nowrap}.agent-cell{align-items:center;gap:10px;min-width:0;display:flex}.agent-avatar{--agent-avatar-color:#426ea8;border:1px solid color-mix(in srgb, var(--agent-avatar-color) 26%, var(--border));border-radius:var(--radius-surface);width:40px;height:40px;color:var(--agent-avatar-color);background:color-mix(in srgb, var(--agent-avatar-color) 12%, var(--surface));flex:none;place-items:center;display:grid;overflow:hidden}.agent-avatar svg{width:18px;height:18px}.agent-avatar img{object-fit:cover;width:100%;height:100%;display:block}.agent-avatar-xs{border-radius:7px;width:22px;height:22px}.agent-avatar-sm{border-radius:9px;width:30px;height:30px}.agent-avatar-lg{border-radius:13px;width:46px;height:46px}.agent-avatar-xs svg{width:12px;height:12px}.agent-avatar-sm svg,.agent-avatar-md svg{width:16px;height:16px}.agent-avatar-lg svg{width:22px;height:22px}.agent-appearance-editor{border-block:1px solid var(--border);grid-template-columns:minmax(210px,.8fr) minmax(280px,1.2fr) auto;align-items:center;gap:18px;padding:16px 0;display:grid}.agent-appearance-preview{align-items:center;gap:12px;min-width:0;display:flex}.agent-appearance-preview>div{min-width:0}.agent-appearance-preview strong,.agent-appearance-preview span{display:block}.agent-appearance-preview strong{font-size:var(--font-size-control)}.agent-appearance-preview span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.agent-appearance-controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;min-width:0;display:grid}.appearance-choice-group>span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-bottom:6px;display:block}.appearance-choice-group>div{flex-wrap:wrap;gap:6px;display:flex}.appearance-choice-group button{border:1px solid var(--border);width:30px;height:30px;color:var(--text-secondary);background:var(--surface);border-radius:9px;place-items:center;padding:0;display:grid}.appearance-choice-group button:hover,.appearance-choice-group button.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.appearance-choice-group.color button:before{border:2px solid var(--surface);border-radius:var(--radius-circle);background:var(--appearance-swatch);width:16px;height:16px;box-shadow:0 0 0 1px color-mix(in srgb, var(--appearance-swatch) 40%, var(--border));content:""}.appearance-choice-group.color button.active:before{box-shadow:0 0 0 2px var(--surface), 0 0 0 3px var(--appearance-swatch)}.agent-appearance-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.agent-appearance-editor>.studio-field-error{grid-column:1/-1;margin:-8px 0 0}.avatar-crop-dialog{width:min(560px,100vw - 40px)}.avatar-crop-stage{border-radius:var(--radius-surface);background:var(--surface-inverse);height:min(420px,52vh);min-height:300px;position:relative;overflow:hidden}.avatar-zoom-control{color:var(--text-secondary);font-size:var(--font-size-meta);grid-template-columns:auto minmax(0,1fr);align-items:center;gap:14px;margin-top:16px;display:grid}.agent-cell-copy{min-width:0}.agent-cell-copy strong,.agent-cell-copy span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.agent-cell-copy strong{font-weight:var(--font-weight-medium)}.agent-cell-copy span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption);margin-top:2px}.resource-counts{color:var(--text-secondary);font-size:var(--font-size-meta);flex-wrap:wrap;gap:5px;display:flex}.resource-counts span{border-radius:var(--radius-badge);background:var(--surface-subtle);padding:2px 6px}.resource-origin{color:var(--text-tertiary);font-size:var(--font-size-caption);line-height:var(--line-height-caption);margin-top:3px;display:block}.mono{font-family:var(--font-mono);font-size:var(--font-size-meta)}.truncate{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.status-badge{min-height:var(--status-height);border-radius:var(--radius-pill);font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);white-space:nowrap;align-items:center;gap:5px;padding:2px 7px;display:inline-flex}.studio-select-trigger{width:100%;min-width:0;min-height:var(--control-height);border:1px solid var(--border-strong);border-radius:var(--radius-control);color:var(--text);background:var(--surface);font:inherit;text-align:left;cursor:pointer;transition:border-color var(--motion-fast) var(--ease), box-shadow var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);justify-content:space-between;align-items:center;gap:10px;padding:0 11px;display:inline-flex}.studio-select-trigger.compact-select{flex:0 0 156px;width:156px}.studio-select-trigger:hover:not(:disabled){border-color:var(--accent-border);background:var(--hover)}.studio-select-trigger:focus-visible,.studio-select-trigger[data-state=open]{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.studio-select-trigger:disabled{color:var(--text-tertiary);background:var(--surface-subtle);cursor:not-allowed}.studio-select-chevron{color:var(--text-tertiary);flex:none;display:inline-flex}.studio-select-content{z-index:1800;width:var(--radix-select-trigger-width);max-height:min(360px, var(--radix-select-content-available-height));border:1px solid var(--border-strong);border-radius:var(--radius-surface);background:var(--surface-raised);box-shadow:var(--shadow-overlay);overflow:hidden}.studio-select-viewport{padding:5px}.studio-select-item{border-radius:var(--radius-badge);min-height:38px;color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;align-items:center;gap:10px;padding:7px 34px 7px 10px;display:flex;position:relative}.studio-select-item[data-highlighted]{color:var(--text);background:var(--hover)}.studio-select-item[data-state=checked]{color:var(--accent);background:var(--accent-soft)}.studio-select-item[data-disabled]{opacity:.45;cursor:not-allowed}.studio-select-item-copy,.studio-select-item-copy>span,.studio-select-item-copy small{min-width:0;display:block}.studio-select-item-copy>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.studio-select-item-copy small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.studio-select-check{display:inline-flex;position:absolute;right:10px}.studio-select-scroll{height:24px;color:var(--text-tertiary);background:var(--surface);place-items:center;display:grid}.status-badge.neutral{color:var(--text-secondary);background:var(--hover)}.status-badge.success,.status-badge.SUCCEEDED,.status-badge.COMPLETED,.status-badge.READY{color:var(--success);background:var(--success-soft)}.status-badge.info,.status-badge.RUNNING,.status-badge.QUEUED{color:var(--info);background:var(--info-soft)}.status-badge.warning,.status-badge.WAITING,.status-badge.PAUSED,.status-badge.INTERRUPTED{color:var(--warning);background:var(--warning-soft)}.status-badge.danger,.status-badge.FAILED,.status-badge.CANCELLED,.status-badge.TIMED_OUT{color:var(--danger);background:var(--danger-soft)}.table-empty,.empty-page-state{text-align:center;align-content:center;place-items:center;min-height:310px;padding:36px;display:grid}.empty-icon{border:1px solid var(--border);border-radius:var(--radius-surface);width:44px;height:44px;color:var(--accent);background:var(--surface-subtle);place-items:center;margin-bottom:14px;display:grid}.empty-icon svg{width:20px;height:20px}.table-empty h2,.empty-page-state h2,.chat-empty h2{font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold);margin:0}.table-empty p,.empty-page-state p,.chat-empty p{max-width:50ch;color:var(--text-secondary);font-size:var(--font-size-body);line-height:var(--line-height-body);margin:6px 0 18px}.capability-cell{max-width:360px}.cell-clamp{-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;max-width:100%;color:var(--text-secondary);font-size:var(--font-size-meta);line-height:var(--line-height-caption);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.create-shell{min-height:calc(100dvh - 64px)}.create-header{border-bottom:1px solid var(--border);background:var(--surface);grid-template-columns:200px minmax(0,1fr) 200px;align-items:start;gap:32px;min-height:124px;padding:26px max(40px,50% - 720px) 24px;display:grid}.create-heading{text-align:left}.create-heading .eyebrow{color:var(--accent);font-size:var(--font-size-meta);font-weight:var(--font-weight-semibold)}.create-heading h1{font-size:var(--font-size-page-title);font-weight:var(--font-weight-semibold);line-height:var(--line-height-title);margin:5px 0 0}.create-heading p{color:var(--text-secondary);font-size:var(--font-size-control);line-height:var(--line-height-control);margin:6px 0 0}.draft-state{color:var(--text-secondary);font-size:var(--font-size-meta);justify-self:end;align-items:center;gap:7px;padding-top:6px;display:flex}.wizard-layout{grid-template-columns:220px minmax(720px,1fr) 290px;gap:32px;width:min(1520px,100%);min-height:calc(100dvh - 188px);margin:0 auto;padding:34px 40px 64px;display:grid}.quick-create{grid-template-columns:minmax(620px,1fr) 360px;align-items:start;gap:22px;width:min(1180px,100% - 80px);margin:32px auto 64px;display:grid}.quick-create-form,.manifest-preview{border:1px solid var(--border);background:var(--surface);border-radius:10px;box-shadow:0 1px 2px #1f2a370a}.quick-create-form{padding:24px}.agent-edit-section{gap:20px;display:grid}.agent-edit-section[hidden]{display:none}.agent-edit-section-heading{border-bottom:1px solid var(--border);align-items:flex-start;gap:12px;padding-bottom:14px;display:flex}.agent-edit-section-heading h3,.agent-edit-section-heading p{margin:0}.agent-edit-section-heading p{color:var(--text-tertiary);font-size:var(--font-size-meta);margin-top:4px}.quick-runtime-strip{border:1px solid var(--border);background:var(--surface-subtle);border-radius:8px;align-items:center;gap:11px;min-height:54px;margin:-8px -8px 24px;padding:9px 10px;display:flex}.runtime-logo{border:1px solid var(--accent-border);width:34px;height:34px;color:var(--accent);background:var(--accent-soft);border-radius:8px;flex:none;place-items:center;display:grid}.runtime-logo svg{width:17px;height:17px}.quick-runtime-strip>div{flex:1;min-width:0}.quick-runtime-strip strong,.quick-runtime-strip span{display:block}.quick-runtime-strip strong{font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.quick-runtime-strip div span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption);margin-top:1px}.quick-create-heading{margin-bottom:22px}.quick-create-heading .eyebrow{color:var(--accent);font-size:var(--font-size-caption);font-weight:var(--font-weight-semibold);letter-spacing:.04em;text-transform:uppercase}.quick-create-heading h2{font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold);margin:5px 0 0}.quick-create-heading p{color:var(--text-secondary);font-size:var(--font-size-meta);margin:5px 0 0}.quick-create-form .field{margin-bottom:18px}.quick-create-form textarea{resize:vertical;font-size:var(--font-size-control);line-height:var(--line-height-editor)}.quick-model-binding-field .field-heading{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.quick-model-bindings{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;display:grid}.quick-model-option{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);cursor:pointer;grid-template-columns:16px minmax(0,1fr);gap:8px;min-width:0;padding:10px 11px;display:grid}.quick-model-option:has(input:checked){border-color:var(--accent-border);background:var(--accent-soft)}.quick-model-option input{width:15px;height:15px;accent-color:var(--accent);margin:2px 0 0;padding:0}.quick-model-option strong,.quick-model-option small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.quick-model-option strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.quick-model-option small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.quick-create-actions{border-top:1px solid var(--border);align-items:center;gap:20px;margin-top:6px;padding-top:18px;display:flex}.checkbox-row{cursor:pointer;flex:1;align-items:flex-start;gap:9px;min-width:0;display:flex}.checkbox-row input{width:16px;height:16px;accent-color:var(--accent);flex:none;margin-top:4px;padding:0}.checkbox-row strong,.checkbox-row small{display:block}.checkbox-row strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.checkbox-row small{color:var(--text-tertiary);font-size:var(--font-size-caption)}.manifest-preview{position:sticky;top:88px;overflow:hidden}.manifest-preview>.code-viewer{border:0;border-bottom:1px solid var(--border);border-radius:0;min-height:430px;max-height:590px}.manifest-contract{border-top:1px solid var(--border);gap:7px;padding:13px 14px;display:grid}.manifest-contract span{color:var(--text-secondary);font-size:var(--font-size-caption);align-items:center;gap:7px;display:flex}.manifest-contract svg{color:var(--success)}.quick-capability-bindings{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}@media (width<=1100px){.quick-capability-bindings{grid-template-columns:minmax(0,1fr)}}.wizard-steps{flex-direction:column;align-self:start;gap:6px;display:flex}.wizard-step{border-radius:var(--radius-control);width:100%;min-height:68px;color:var(--text-secondary);cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:12px;padding:10px 12px;display:flex}.wizard-step:hover{background:var(--hover)}.wizard-step.active{color:var(--text);background:var(--selected)}.wizard-step.completed .step-number{border-color:var(--success);color:var(--success);background:var(--success-soft)}.step-number{border:1px solid var(--border-strong);border-radius:var(--radius-circle);background:var(--surface);width:30px;height:30px;font-size:var(--font-size-meta);font-variant-numeric:tabular-nums;flex:none;place-items:center;display:grid}.wizard-step.active .step-number{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.wizard-step strong,.wizard-step small{display:block}.wizard-step strong{font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.wizard-step small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:3px}.wizard-content{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);align-self:start;min-width:0}.wizard-panel{padding:28px 36px 16px;display:none}.wizard-panel.active{display:block}.panel-heading{align-items:flex-start;gap:12px;margin-bottom:22px;display:flex}.panel-index{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-meta);margin-top:3px}.panel-heading>div{min-width:0}.panel-heading h2{font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold);line-height:var(--line-height-title);margin:0}.panel-heading p{color:var(--text-secondary);font-size:var(--font-size-control);line-height:var(--line-height-control);margin:5px 0 0}.panel-heading>.button{margin-left:auto}.field{min-width:0;margin-bottom:24px}.field label{font-size:var(--font-size-control);font-weight:var(--font-weight-medium);align-items:center;gap:7px;margin-bottom:8px;display:flex}.required-mark{border-radius:var(--radius-badge);color:var(--danger);background:var(--danger-soft);font-size:var(--font-size-caption);font-weight:var(--font-weight-regular);padding:1px 5px}.field-footer{color:var(--text-tertiary);font-size:var(--font-size-meta);justify-content:space-between;gap:12px;margin-top:8px;display:flex}.helper{color:var(--text-tertiary);font-size:var(--font-size-meta);margin-top:7px;display:block}.form-grid{gap:0 20px;display:grid}.form-grid.two-columns{grid-template-columns:repeat(2,minmax(0,1fr))}.template-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.template-card{border:1px solid var(--border);border-radius:var(--radius-surface);min-height:94px;color:var(--text);background:var(--surface);cursor:pointer;text-align:left;transition:border-color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease), transform var(--motion-fast) var(--ease);grid-template-columns:38px minmax(0,1fr);align-items:center;gap:12px;padding:16px 42px 16px 16px;display:grid;position:relative}.template-card:hover{border-color:var(--accent-border);background:var(--surface-subtle)}.template-card:active{transform:translateY(1px)}.template-card.selected{border-color:var(--accent);background:var(--accent-soft)}.template-card>span:not(.template-icon,.choice-check){min-width:0}.template-card strong,.template-card small{display:block}.template-card strong{font-size:var(--font-size-body);font-weight:var(--font-weight-semibold)}.template-card small{color:var(--text-secondary);font-size:var(--font-size-meta);line-height:var(--line-height-control);margin-top:3px}.template-card .choice-check{display:none}.template-card.selected .choice-check{display:grid}.template-icon{border:1px solid var(--border);border-radius:var(--radius-control);width:38px;height:38px;color:var(--accent);background:var(--surface);place-items:center;display:grid}.template-icon svg{width:16px;height:16px}.template-specific{border-top:1px solid var(--border);padding-top:24px}.choice-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.choice-card{border:1px solid var(--border);border-radius:var(--radius-surface);min-height:136px;color:var(--text);background:var(--surface);cursor:pointer;text-align:left;transition:border-color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);flex-direction:column;align-items:flex-start;padding:16px;display:flex;position:relative}.choice-card:hover{border-color:var(--accent-border);background:var(--surface-subtle)}.choice-card strong{font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);margin-top:4px}.choice-card>span:not(.choice-check){color:var(--text-secondary);font-size:var(--font-size-meta);line-height:var(--line-height-control);margin-top:7px}.choice-card small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:auto}.choice-check{border-radius:var(--radius-circle);width:20px;height:20px;color:var(--accent);background:var(--surface);place-items:center;display:none;position:absolute;top:10px;right:10px}.choice-card.selected .choice-check{display:grid}.choice-check svg{width:11px;height:11px}.capability-section{border-top:1px solid var(--border);padding:16px 0}.capability-section:first-of-type{border-top:0;padding-top:0}.capability-heading{align-items:center;gap:10px;margin-bottom:14px;display:flex}.capability-icon{border:1px solid var(--border);border-radius:var(--radius-control);width:36px;height:36px;color:var(--accent);background:var(--surface-subtle);place-items:center;display:grid}.capability-icon svg{width:15px;height:15px}.capability-heading>div{flex:1;min-width:0}.capability-heading h3,.capability-heading p{margin:0}.capability-heading h3{font-size:var(--font-size-body);font-weight:var(--font-weight-semibold)}.capability-heading p{color:var(--text-tertiary);font-size:var(--font-size-meta);margin-top:2px}.model-profile-control{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.model-profile-control+.helper{margin-top:8px;display:block}.required-badge,.recommended-badge{border-radius:var(--radius-badge);font-size:var(--font-size-caption);padding:3px 7px}.required-badge{color:var(--danger);background:var(--danger-soft)}.recommended-badge{color:var(--accent);background:var(--accent-soft)}.segmented-control{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-subtle);grid-template-columns:repeat(3,minmax(86px,1fr));width:max-content;padding:3px;display:inline-grid}.segmented-control button{min-height:var(--button-height-small);border-radius:var(--radius-badge);color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-meta);font-weight:var(--font-weight-medium);transition:color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);background:0 0;border:0;padding:5px 14px}.segmented-control button:hover{color:var(--text)}.segmented-control button.selected{color:var(--accent);background:var(--surface);box-shadow:var(--shadow-control)}.policy-description{color:var(--text-tertiary);font-size:var(--font-size-meta);margin:8px 0 14px}.resource-detail-list{border-top:1px solid var(--border);margin-top:8px;display:grid}.resource-detail-item{border-bottom:1px solid var(--border);align-items:center;gap:10px;min-height:56px;padding:10px 4px;display:flex}.resource-detail-item-copy,.skill-candidate-copy{flex:1;min-width:0}.resource-detail-item-copy strong,.resource-detail-item-copy span,.skill-candidate-copy strong,.skill-candidate-copy span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.resource-detail-item-copy strong,.skill-candidate-copy strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.resource-detail-item-copy span,.skill-candidate-copy span{color:var(--text-tertiary);font-size:var(--font-size-caption);white-space:normal;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;max-height:2.6em;margin-top:2px;display:-webkit-box}.resource-source{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption)}.compact-resource-list{flex-wrap:wrap;gap:6px;display:flex}.compact-resource{border:1px solid var(--border);border-radius:var(--radius-control);min-height:32px;color:var(--text-secondary);background:var(--surface-subtle);font-size:var(--font-size-meta);align-items:center;gap:6px;padding:5px 9px;display:inline-flex}.compact-resource svg{width:13px;height:13px}.inline-alert{border-radius:var(--radius-control);font-size:var(--font-size-control);border:1px solid;align-items:flex-start;gap:10px;margin:10px 0;padding:13px 14px;display:flex}.inline-alert>svg{width:16px;height:16px;margin-top:1px}.inline-alert strong,.inline-alert p{margin:0;display:block}.inline-alert p{font-size:var(--font-size-meta);line-height:var(--line-height-control);margin-top:2px}.inline-alert.warning{color:var(--warning);background:var(--warning-soft);border-color:#eee2c9}.inline-alert.error{color:var(--danger);background:var(--danger-soft);border-color:#f1d6d2}.prompt-status{color:var(--text-tertiary);font-size:var(--font-size-meta);align-items:center;gap:7px;margin:-12px 0 18px 30px;display:flex}.prompt-editor{font-size:var(--font-size-control);line-height:var(--line-height-editor)}.review-block{border-top:1px solid var(--border);padding:18px 0}.review-block:first-of-type{border-top:0;padding-top:0}.review-title{color:var(--text-secondary);font-size:var(--font-size-meta);justify-content:space-between;margin-bottom:12px;display:flex}.review-agent{align-items:flex-start;gap:12px;display:flex}.review-agent>div{min-width:0}.review-agent strong,.review-agent span{display:block}.review-agent strong{font-size:var(--font-size-subtitle);font-weight:var(--font-weight-semibold)}.review-agent span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption);margin-top:2px}.review-agent p{max-width:64ch;color:var(--text-secondary);font-size:var(--font-size-control);line-height:var(--line-height-control);margin:8px 0 0}.review-capabilities{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.review-capability{border-radius:var(--radius-control);background:var(--surface-subtle);align-items:center;gap:10px;min-height:62px;padding:11px 12px;display:flex}.review-capability>svg{width:15px;height:15px;color:var(--accent)}.review-capability strong,.review-capability span{display:block}.review-capability strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.review-capability span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.prompt-preview{border-left:2px solid var(--accent-border);max-height:144px;color:var(--text-secondary);background:var(--surface-subtle);font-size:var(--font-size-meta);line-height:var(--line-height-control);white-space:pre-wrap;padding:14px;overflow:hidden}.post-create-option{border:1px solid var(--accent-border);border-radius:var(--radius-control);background:var(--accent-soft);cursor:pointer;align-items:flex-start;gap:10px;min-height:70px;margin:16px 0 4px;padding:14px;display:flex}.post-create-option input{width:16px;height:16px;accent-color:var(--accent);margin-top:2px}.post-create-option strong,.post-create-option small{display:block}.post-create-option strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.post-create-option small{color:var(--text-secondary);font-size:var(--font-size-caption);margin-top:2px}.wizard-actions{border-top:1px solid var(--border);background:#fffffff5;align-items:center;gap:10px;min-height:72px;padding:0 30px;display:flex}.wizard-progress{color:var(--text-tertiary);font-size:var(--font-size-meta);text-align:center;flex:1}.wizard-summary-content dl,.detail-aside dl{margin:0}.wizard-summary-content dl>div,.detail-aside dl>div{min-height:var(--button-height);border-bottom:1px solid var(--border);font-size:var(--font-size-meta);justify-content:space-between;align-items:center;gap:12px;display:flex}.wizard-summary-content dt,.detail-aside dt{color:var(--text-secondary)}.wizard-summary-content dd,.detail-aside dd{font-weight:var(--font-weight-medium);text-align:right;text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.summary-divider,.aside-divider{background:var(--border);height:1px;margin:18px 0}.summary-note{align-items:flex-start;gap:10px;padding:10px 0;display:flex}.summary-note>svg{width:15px;height:15px;color:var(--accent);margin-top:1px}.summary-note strong,.summary-note p{margin:0}.summary-note strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-medium);display:block}.summary-note p{color:var(--text-tertiary);font-size:var(--font-size-caption);line-height:var(--line-height-caption);margin-top:2px}.codex-capability-notice{margin-bottom:20px}.codex-disabled-capabilities.codex-disabled{opacity:.55;pointer-events:none;filter:grayscale(.4)}.authoring-mode-tabs{border:1px solid var(--border);background:var(--surface-subtle);border-radius:14px;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 40px 22px;padding:6px;display:grid}.authoring-mode-tabs button{min-width:0;color:var(--text-secondary);text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:10px;align-items:center;gap:10px;padding:12px 14px;display:flex}.authoring-mode-tabs button:hover,.authoring-mode-tabs button.active{color:var(--text);border-color:var(--border);background:var(--surface);box-shadow:var(--shadow-control)}.authoring-mode-tabs svg{width:20px;height:20px;color:var(--accent);flex:none}.authoring-mode-tabs span{gap:2px;min-width:0;display:grid}.authoring-mode-tabs strong,.authoring-mode-tabs small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.authoring-mode-tabs small{color:var(--text-tertiary);font-size:var(--font-size-caption)}.authoring-mode-panel{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-control);border-radius:16px;margin:0 40px 40px;padding:28px}.authoring-panel-heading{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:24px;display:flex}.authoring-panel-heading h2{font-size:var(--font-size-section-title);margin:5px 0 6px}.authoring-panel-heading p{color:var(--text-secondary);margin:0}.conversation-authoring-layout,.authoring-inspect-grid{grid-template-columns:minmax(0,1.1fr) minmax(380px,.9fr);align-items:stretch;gap:16px;display:grid}.authoring-chat-column,.authoring-input-card,.authoring-inspection-card{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);gap:14px;min-width:0;padding:18px;display:grid}.authoring-chat-column{grid-template-rows:minmax(180px,1fr) auto auto auto}.authoring-composer-actions{justify-content:flex-end;display:flex}.authoring-transcript{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-subtle);flex-direction:column;gap:8px;min-height:0;max-height:none;padding:14px;display:flex;overflow:auto}.authoring-message{border-radius:var(--radius-control);background:var(--surface);border:1px solid var(--border);max-width:92%;padding:10px 13px}.authoring-message span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.authoring-message p{white-space:pre-wrap;font-size:var(--font-size-control);margin:4px 0 0}.authoring-composer{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px;display:grid}.authoring-composer textarea{resize:vertical;min-height:64px;max-height:200px}.authoring-inspection-card{grid-template-rows:auto auto auto 1fr auto}.authoring-preview-heading{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-sunken);align-items:center;gap:10px;min-height:48px;padding:9px 11px;display:flex}.authoring-preview-heading>div{flex:1;min-width:0}.authoring-preview-heading strong,.authoring-preview-heading span{display:block}.authoring-preview-heading strong{color:var(--text-primary);font-family:var(--font-mono);font-size:var(--font-size-meta)}.authoring-preview-heading div span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.authoring-inspection-card .code-viewer{min-height:160px}.skill-discovery-list{gap:10px;min-height:160px;display:grid}.skill-candidate{border:1px solid var(--border);cursor:default;border-radius:10px;grid-template-columns:auto auto minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:13px;display:grid}.skill-candidate:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.skill-candidate.invalid{opacity:.65}.skill-candidate small{color:var(--text-tertiary)}.skill-preview-button{white-space:nowrap}.skill-preview-layout{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);grid-template-columns:minmax(210px,.72fr) minmax(0,1.6fr);min-height:520px;display:grid;overflow:hidden}.skill-preview-sidebar{border-right:1px solid var(--border);background:var(--surface-subtle);min-width:0;min-height:0;padding:8px;overflow:auto}.skill-file-tree{gap:2px;display:grid}.skill-tree-row{width:100%;min-width:0;min-height:32px;padding:5px 8px 5px calc(8px + var(--skill-depth,0) * 14px);border-radius:var(--radius-control);color:var(--text-secondary);text-align:left;background:0 0;border:0;grid-template-columns:16px 16px minmax(0,1fr);align-items:center;gap:6px;display:grid}.skill-tree-row:hover{color:var(--text-primary);background:var(--surface-hover)}.skill-tree-row.active{color:var(--accent-strong);background:var(--accent-soft)}.skill-tree-row span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.skill-tree-spacer{width:16px}.skill-preview-pane{background:var(--surface);flex-direction:column;min-width:0;min-height:0;display:flex}.skill-preview-header{border-bottom:1px solid var(--border);background:var(--surface-subtle);justify-content:space-between;align-items:center;gap:12px;min-height:48px;padding:9px 14px;display:flex}.skill-preview-header strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.skill-preview-header span{color:var(--text-tertiary);font-size:var(--font-size-caption);flex:none}.skill-preview-content{background:var(--surface-raised);flex:1;min-height:0;overflow:auto}.skill-file-state{min-height:160px;color:var(--text-tertiary);font-size:var(--font-size-meta);text-align:center;place-items:center;padding:24px;display:grid}.skill-preview-content>.code-viewer{border:0;border-radius:0;min-height:100%}.code-viewer{border:1px solid var(--border);border-radius:var(--radius-surface);min-width:0;color:var(--code-text);background:var(--code-bg);flex-direction:column;display:flex;overflow:hidden}.code-viewer-toolbar{border-bottom:1px solid var(--border);min-height:42px;color:var(--text-secondary);background:var(--surface-sunken);font-size:var(--font-size-caption);justify-content:space-between;align-items:center;gap:12px;padding:6px 8px 6px 13px;display:flex}.code-viewer-toolbar>div:first-child{align-items:baseline;gap:8px;min-width:0;display:flex}.code-viewer-toolbar strong{min-width:0;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.code-viewer-toolbar span{color:var(--text-tertiary);text-transform:lowercase;flex:none}.code-viewer-actions{flex:none;gap:2px;display:flex}.code-viewer-actions .icon-button{width:28px;height:28px;min-height:28px}.code-viewer-scroll{background:var(--code-bg);scrollbar-gutter:stable;flex:1;min-width:0;min-height:0;overflow:auto}.code-viewer-pre,.code-viewer-fallback{width:max-content;min-width:100%;color:var(--code-text);font-family:var(--font-mono);font-size:var(--font-size-caption);line-height:var(--line-height-code-compact);tab-size:2;margin:0;padding:12px 0;background:0 0!important}.code-viewer-fallback{padding-inline:14px}.code-viewer-line{grid-template-columns:auto minmax(max-content,1fr);min-height:22px;display:grid}.code-viewer-line:hover{background:color-mix(in srgb, var(--accent-soft) 46%, transparent)}.code-viewer-line-number{z-index:1;width:52px;color:var(--text-faint);background:var(--code-bg);text-align:right;-webkit-user-select:none;user-select:none;padding:0 12px 0 8px;position:sticky;left:0}.code-viewer-line-content{white-space:pre;min-width:0;padding-right:18px}.code-viewer[data-wrap=true] .code-viewer-pre,.code-viewer[data-wrap=true] .code-viewer-fallback{white-space:pre-wrap;width:100%;min-width:0}.code-viewer[data-wrap=true] .code-viewer-line{grid-template-columns:auto minmax(0,1fr)}.code-viewer[data-wrap=true] .code-viewer-line-content{white-space:pre-wrap;overflow-wrap:anywhere}.markdown-preview-shell{min-height:100%;padding:0 24px 32px}.markdown-frontmatter{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-sunken);max-width:820px;margin:18px auto 0;overflow:hidden}.markdown-frontmatter summary{color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);padding:9px 12px}.markdown-frontmatter[open] summary{border-bottom:1px solid var(--border)}.markdown-frontmatter .code-viewer{border:0;border-radius:0;max-height:260px}.markdown-frontmatter .code-viewer-toolbar{display:none}.markdown-preview{max-width:820px;color:var(--text-primary);font-size:var(--font-size-body);line-height:var(--line-height-editor);overflow-wrap:anywhere;margin:0 auto;padding-top:24px}.markdown-preview h1,.markdown-preview h2,.markdown-preview h3,.markdown-preview h4{color:var(--text-primary);line-height:var(--line-height-tight);margin:1.45em 0 .55em}.markdown-preview h1{border-bottom:1px solid var(--border);font-size:var(--font-size-page-title);padding-bottom:.35em}.markdown-preview h2{font-size:var(--font-size-section-title)}.markdown-preview h3{font-size:var(--font-size-subtitle)}.markdown-preview h1:first-child,.markdown-preview h2:first-child,.markdown-preview h3:first-child{margin-top:0}.markdown-preview p,.markdown-preview ul,.markdown-preview ol,.markdown-preview blockquote{margin:.72em 0}.markdown-preview a{color:var(--accent-strong);text-underline-offset:3px;text-decoration-thickness:1px}.markdown-preview :not(pre)>code{border:1px solid var(--border);border-radius:var(--radius-small);color:var(--text-primary);background:var(--surface-sunken);font-family:var(--font-mono);font-size:var(--font-size-meta);padding:.15em .36em}.markdown-preview .code-viewer{margin:1em 0}.markdown-preview blockquote{border-left:3px solid var(--accent-border);color:var(--text-secondary);padding:.15em 0 .15em 1em}.markdown-preview hr{border:0;border-top:1px solid var(--border);margin:1.5em 0}.markdown-table-scroll{border:1px solid var(--border);border-radius:var(--radius-control);max-width:100%;margin:1em 0;overflow:auto}.markdown-preview table{border-collapse:collapse;width:100%}.markdown-preview th,.markdown-preview td{border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;padding:8px 10px}.markdown-preview th{background:var(--surface-sunken);font-weight:var(--font-weight-semibold)}.markdown-preview tr:last-child td{border-bottom:0}.skill-preview-truncated{border-top:1px solid var(--border);color:var(--warning-text);background:var(--warning-soft);font-size:var(--font-size-caption);padding:8px 14px}@media (width<=1100px){.authoring-mode-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.conversation-authoring-layout,.authoring-inspect-grid{grid-template-columns:minmax(0,1fr)}}@media (width<=720px){.authoring-mode-tabs,.authoring-mode-panel{margin-inline:16px}.authoring-mode-tabs{grid-template-columns:minmax(0,1fr)}.authoring-mode-panel{padding:18px}}.authoring-credential-banner{border:1px solid var(--danger);border-radius:var(--radius-control);background:var(--danger-soft);color:var(--danger);align-items:center;gap:10px;margin:10px 0 4px;padding:10px 12px;display:flex}.authoring-credential-banner svg{flex:none;width:18px;height:18px}.authoring-credential-banner-copy{flex-direction:column;flex:auto;gap:2px;min-width:0;display:flex}.authoring-credential-banner-copy strong{font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.authoring-credential-banner-copy span{font-size:var(--font-size-caption);color:var(--text-secondary)}.authoring-credential-banner .button{flex:none}.automation-page{max-width:1480px}.automation-page-embedded{max-width:none}.agent-detail-tabs{margin-bottom:22px}.automation-intro,.automation-detail-heading,.automation-detail-actions,.automation-form-actions{justify-content:space-between;align-items:center;gap:16px;display:flex}.automation-intro{margin-bottom:20px}.automation-intro h2,.automation-intro p,.automation-detail-heading h2,.automation-detail-heading p{margin:0}.automation-intro p,.automation-detail-heading p{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:4px}.automation-availability,.automation-state{border-radius:var(--radius-badge);min-height:24px;color:var(--text-secondary);background:var(--surface-subtle);font-size:var(--font-size-caption);white-space:nowrap;align-items:center;padding:0 8px;display:inline-flex}.automation-availability[data-state=ready],.automation-state[data-state=ready]{color:var(--success);background:var(--success-soft)}.automation-state[data-state=failed]{color:var(--danger);background:var(--danger-soft)}.automation-state[data-state=pending]{color:var(--accent-strong);background:var(--accent-soft)}.automation-runtime-boundary{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--border);grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;margin-bottom:16px;display:grid;overflow:hidden}.automation-runtime-boundary>div{background:var(--surface-subtle);gap:4px;min-width:0;padding:10px 12px;display:grid}.automation-runtime-boundary span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.automation-runtime-boundary strong{color:var(--text-secondary);font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.automation-toolbar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.automation-toolbar>label{color:var(--text-tertiary);font-size:var(--font-size-caption);align-items:center;gap:8px;display:flex}.automation-toolbar select{width:180px}.automation-tabs{border-radius:var(--radius-control);background:var(--surface-subtle);gap:3px;padding:3px;display:inline-flex}.automation-tabs button{border-radius:calc(var(--radius-control) - 3px);min-height:30px;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;padding:0 12px}.automation-tabs button.active{color:var(--text-primary);background:var(--surface);box-shadow:var(--shadow-subtle)}.automation-layout{grid-template-columns:minmax(0,1fr) minmax(340px,420px);align-items:start;gap:22px;display:grid}.automation-list{min-width:0}.automation-inspector{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);gap:14px;min-height:280px;padding:20px;display:grid}.automation-inspector .section-heading{margin:0}.automation-inspector.is-editor>label,.automation-inspector.is-editor .form-grid>label{color:var(--text-secondary);font-size:var(--font-size-meta);gap:7px;display:grid}.automation-inspector.is-editor textarea{resize:vertical;min-height:92px}.automation-checkbox{color:var(--text-secondary);align-items:center;gap:8px!important;display:flex!important}.automation-checkbox input{width:auto}.automation-form-actions{justify-content:flex-end;padding-top:4px}.automation-task-cell{gap:3px;min-width:0;display:grid}.automation-task-cell strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.automation-task-cell span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.automation-history{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);margin-top:0;padding:22px}.automation-detail-heading{align-items:flex-start}.automation-detail-actions{flex-wrap:wrap;justify-content:flex-end}.automation-detail-grid{grid-template-columns:1fr 1fr;gap:10px;margin:4px 0;display:grid}.automation-detail-grid>div{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-subtle);padding:14px}.automation-detail-grid span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.automation-detail-grid p{color:var(--text-secondary);font-size:var(--font-size-caption);white-space:pre-wrap;margin:6px 0 0}.automation-inspector-history{border-top:1px solid var(--border);gap:10px;padding-top:4px;display:grid}.automation-inspector-history h3{font-size:var(--font-size-body);align-items:center;gap:7px;margin:10px 0 0;display:flex}.automation-inspector-history .automation-occurrence-card{padding:10px}.automation-inspector-empty{min-height:240px;color:var(--text-tertiary);text-align:center;align-content:center;place-items:center;padding:24px;display:grid}.automation-inspector-empty strong{color:var(--text-secondary);margin-top:10px}.automation-inspector-empty p{font-size:var(--font-size-caption);margin:5px 0 16px}.automation-delete-link{color:var(--danger);font:inherit;font-size:var(--font-size-caption);cursor:pointer;background:0 0;border:0;justify-self:start;align-items:center;gap:6px;margin-top:2px;padding:0;display:inline-flex}.automation-occurrences{gap:10px;display:grid}.automation-occurrence-card{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-subtle);font-size:var(--font-size-caption);gap:10px;padding:14px;display:grid}.automation-occurrence-summary{grid-template-columns:82px minmax(160px,1fr) 90px 120px;align-items:center;gap:10px;display:grid}.automation-occurrence-summary>span:not(.automation-state){color:var(--text-secondary)}.automation-occurrence-facts{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 16px;margin:0;display:grid}.automation-occurrence-facts div{min-width:0}.automation-occurrence-facts dt{color:var(--text-tertiary)}.automation-occurrence-facts dd{color:var(--text-secondary);font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;margin:2px 0 0;overflow:hidden}.automation-timeline{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.automation-timeline li{border:1px solid var(--border);border-radius:var(--radius-badge);background:var(--surface);align-items:center;gap:6px;min-height:26px;padding:0 8px;display:inline-flex}.automation-timeline li+li:before{content:"→";color:var(--text-tertiary);margin-left:-16px;transform:translate(-5px)}.automation-diagnosis{border-radius:var(--radius-control);color:var(--danger);background:var(--danger-soft);gap:8px;padding:9px 10px;display:flex}.automation-occurrences time,.automation-occurrences small{color:var(--text-tertiary)}.automation-empty{color:var(--text-tertiary);font-size:var(--font-size-caption);margin:0}@media (width<=1100px){.automation-layout{grid-template-columns:1fr}.automation-inspector{max-width:none}.automation-runtime-boundary{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=680px){.automation-intro,.automation-detail-heading{flex-direction:column;align-items:flex-start}.automation-toolbar{flex-direction:column;align-items:stretch}.automation-runtime-boundary{grid-template-columns:repeat(2,minmax(0,1fr))}.automation-detail-grid{grid-template-columns:1fr}.automation-occurrence-summary{grid-template-columns:78px minmax(0,1fr)}.automation-occurrence-facts{grid-template-columns:1fr}}.detail-header .button.compact{margin:-6px 0 12px}.detail-title-row{align-items:center;gap:12px;display:flex}.detail-layout{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:36px;display:grid}.detail-main{min-width:0}.detail-section{border-top:1px solid var(--border);padding:24px 0}.detail-section:first-child{border-top:0;padding-top:0}.section-heading{align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.section-heading h2,.section-heading p{margin:0}.section-heading-copy{min-width:0}.section-heading h2{font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold)}.section-heading p{color:var(--text-tertiary);font-size:var(--font-size-meta);margin-top:3px}.readonly-field+.readonly-field{margin-top:14px}.readonly-field>span{color:var(--text-secondary);font-size:var(--font-size-meta);margin-bottom:6px;display:block}.readonly-field pre{border:1px solid var(--border);border-radius:var(--radius-control);max-height:260px;color:var(--text-secondary);background:var(--surface-subtle);font-family:var(--font-sans);font-size:var(--font-size-control);line-height:var(--line-height-editor);white-space:pre-wrap;margin:0;padding:14px;overflow:auto}.binding-groups{gap:12px;display:grid}.binding-group{border-bottom:1px solid var(--border);grid-template-columns:90px minmax(0,1fr);gap:12px;padding:12px 0;display:grid}.binding-group>span{color:var(--text-secondary);font-size:var(--font-size-meta)}.binding-items{flex-wrap:wrap;gap:6px;display:flex}.detail-aside{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);padding:20px;position:sticky;top:80px}.aside-title{font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);margin-bottom:10px}.build-state{align-items:flex-start;gap:9px;display:flex}.build-state .status-dot{margin-top:6px}.build-state strong,.build-state span{display:block}.build-state strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.build-state span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.session-status{background:var(--border-strong);border-radius:50%;flex:none;width:5px;height:5px}.session-status.running{background:var(--success);box-shadow:0 0 0 3px var(--success-soft)}.message{min-width:0;max-width:100%}.chat-empty{text-align:center;align-content:center;place-items:center;min-height:100%;padding:30px;display:grid}.suggestion-list{gap:7px;width:min(620px,100%);display:grid}.suggestion-list button{border:1px solid var(--border);border-radius:var(--radius-control);min-height:44px;color:var(--text-secondary);background:var(--surface);cursor:pointer;font-size:var(--font-size-control);text-align:left;padding:10px 14px}.suggestion-list button:hover{border-color:var(--accent-border);color:var(--text);background:var(--accent-soft)}.message{width:100%;max-width:790px;margin:0 auto 22px}.message-meta{color:var(--text-tertiary);font-size:var(--font-size-caption);align-items:center;gap:8px;margin-bottom:7px;display:flex}.message-meta strong{color:var(--text-secondary);font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.message-content{min-width:0;max-width:100%;color:var(--text);font-size:var(--font-size-body);line-height:var(--line-height-editor);overflow-wrap:anywhere}.plain-message{white-space:pre-wrap}ksadk-message{min-width:0;max-width:100%;display:block}.message.user .message-content{border:1px solid var(--accent-border);border-radius:var(--radius-message);background:var(--accent-soft);width:fit-content;max-width:86%;margin-left:auto;padding:10px 12px}.message.user .message-meta{justify-content:flex-end}.message.assistant .message-content{padding-left:0}.message.error .message-content{border-radius:var(--radius-control);color:var(--danger);background:var(--danger-soft);border:1px solid #f1d6d2;padding:10px 12px}.message.status .message-content{border-left:2px solid var(--border-strong);color:var(--text-secondary);background:var(--surface-subtle);padding:8px 11px}.message-actions{align-items:center;gap:8px;margin-top:10px;display:flex}.message-actions .button{color:var(--text);background:var(--surface)}.message-loading{gap:5px;padding:8px 0;display:inline-flex}.message-loading i{border-radius:var(--radius-circle);background:var(--accent);opacity:.35;width:6px;height:6px;animation:typing 1.2s infinite var(--ease)}.message-loading i:nth-child(2){animation-delay:.14s}.message-loading i:nth-child(3){animation-delay:.28s}@keyframes typing{0%,60%,to{opacity:.25;transform:translateY(0)}30%{opacity:.8;transform:translateY(-2px)}}.message-model{color:var(--text-tertiary);background:var(--surface-subtle);font-family:var(--font-mono);font-size:var(--font-size-caption);border-radius:999px;padding:1px 6px}.inspector-title{color:var(--text-secondary);font-size:var(--font-size-meta);font-weight:var(--font-weight-medium);margin-bottom:8px}.observability-page{width:100%;max-width:none;padding-bottom:28px}.trace-page-header{min-height:60px;margin-bottom:16px}.trace-target,.trace-standard-label{min-height:var(--button-height-small);border:1px solid var(--border);border-radius:var(--radius-control);color:var(--text-secondary);background:var(--surface);font-size:var(--font-size-meta);white-space:nowrap;align-items:center;gap:7px;padding:5px 10px;display:inline-flex}.trace-toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;display:flex}.trace-search-field{flex:260px;width:min(380px,100%);min-width:220px;max-width:380px}.trace-standard-label{font-family:var(--font-mono);font-size:var(--font-size-caption);background:0 0;border-color:#0000;margin-left:auto}.trace-metrics{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:14px;display:grid}.trace-metrics>div{flex-direction:column;justify-content:center;min-width:0;min-height:82px;padding:13px 18px;display:flex;position:relative}.trace-metrics>div+div:before{content:"";background:var(--border);width:1px;position:absolute;inset:15px auto 15px 0}.trace-metrics span,.trace-metrics small{color:var(--text-tertiary);font-size:var(--font-size-caption)}.trace-metrics strong{min-width:0;font-family:var(--font-mono);font-size:var(--font-size-subtitle);font-weight:var(--font-weight-semibold);text-overflow:ellipsis;white-space:nowrap;margin:2px 0;overflow:hidden}.trace-workbench{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);grid-template-columns:minmax(220px,260px) minmax(340px,1fr) minmax(300px,360px);min-width:0;height:max(520px,100dvh - 350px);min-height:0;display:grid;overflow:hidden;box-shadow:0 10px 32px #0f172a0d}.trace-workbench.detail-expanded{grid-template-columns:minmax(360px,1fr) minmax(440px,1.15fr)}.trace-workbench.detail-route{grid-template-columns:minmax(420px,1.22fr) minmax(340px,.78fr)}.trace-workbench.detail-route.detail-expanded{grid-template-columns:minmax(0,1fr)}.trace-workbench.detail-route.detail-expanded .trace-span-panel{display:none}.trace-workbench.detail-route.detail-collapsed{grid-template-columns:minmax(0,1fr)}.trace-panel-header>.trace-view-tabs{flex:none;grid-template-columns:repeat(2,minmax(64px,1fr));min-width:max-content}.trace-workbench.detail-route.detail-collapsed .trace-detail-panel{display:none}.trace-list-panel,.trace-span-panel,.trace-detail-panel{background:var(--surface);flex-direction:column;min-width:0;min-height:0;display:flex}.trace-detail-panel.is-collapsed{display:none}.trace-detail-panel.is-collapsed .trace-panel-header{border-bottom:0}.trace-list-panel,.trace-span-panel{border-right:1px solid var(--border)}.trace-panel-header{border-bottom:1px solid var(--border);background:var(--surface-subtle);align-items:center;gap:10px;min-height:58px;padding:9px 13px;display:flex}.trace-panel-header>div{flex:1;min-width:0}.trace-panel-header strong,.trace-panel-header span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.trace-panel-header strong{font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.trace-panel-header span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:1px}.trace-panel-header .trace-detail-actions{flex:none;justify-content:flex-end;align-items:center;gap:4px;min-width:max-content;display:flex}.trace-span-header>.button{flex:none}.trace-detail-reopen{white-space:nowrap}.trace-list-page{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);min-width:0;overflow:hidden;box-shadow:0 10px 32px #0f172a0d}.trace-list-page>.studio-data-table{border:0;border-radius:0}.trace-list-page-header,.trace-list-pagination{min-height:54px;color:var(--text-secondary);background:var(--surface-subtle);justify-content:space-between;align-items:center;gap:16px;padding:10px 16px;display:flex}.trace-list-page-header{border-bottom:1px solid var(--border)}.trace-list-page-header>div{gap:2px;min-width:0;display:grid}.trace-list-page-header strong{color:var(--text-primary);font-size:var(--font-size-control)}.trace-list-page-header span,.trace-list-pagination>span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.trace-table-status{align-items:center;gap:7px;display:inline-flex}.trace-table-open{max-width:340px;color:var(--text-primary);text-align:left;background:0 0;border:0;gap:2px;padding:0;display:grid}.trace-table-open strong,.trace-table-open span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.trace-table-open span{color:var(--text-tertiary);font-family:var(--font-mono)}.trace-table-open:hover strong{color:var(--accent-strong)}.trace-table-agent{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:9px}.trace-table-agent>span{min-width:0;color:inherit;gap:2px;font-family:inherit;display:grid}.trace-table-agent small{color:var(--text-tertiary);font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.trace-list-pagination{border-top:0}.trace-list-pagination>div{gap:6px;display:flex}.trace-detail-actions .button span{margin-top:0}.trace-list{flex:1;min-height:0;padding:7px;overflow-y:auto}.trace-list-item{border-radius:var(--radius-control);width:100%;min-width:0;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;grid-template-columns:8px minmax(0,1fr);gap:9px;padding:10px 9px;display:grid}.trace-list-item:hover{background:var(--hover)}.trace-list-item.active{background:var(--selected)}.trace-list-status{border-radius:var(--radius-circle);background:var(--text-tertiary);width:7px;height:7px;margin-top:7px}.trace-list-status.COMPLETED{background:var(--success)}.trace-list-status.FAILED,.trace-list-status.CANCELLED{background:var(--danger)}.trace-list-copy,.trace-list-copy>span{min-width:0}.trace-list-copy strong,.trace-list-copy span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.trace-list-copy strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.trace-list-copy>span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption);margin-top:1px}.trace-list-meta{color:var(--text-secondary);font-family:var(--font-sans);font-size:var(--font-size-caption);justify-content:space-between;gap:8px;margin-top:5px;display:flex}.trace-empty,.trace-stage-empty{min-height:100%;color:var(--text-tertiary);text-align:center;align-content:center;place-items:center;gap:8px;padding:24px;display:grid}.trace-empty svg,.trace-stage-empty svg{width:28px;height:28px}.trace-empty strong{color:var(--text-secondary);font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.trace-empty span,.trace-stage-empty p{max-width:40ch;font-size:var(--font-size-meta);margin:0}.trace-stage-empty.compact{min-height:160px}.trace-axis{border-bottom:1px solid var(--border);min-height:34px;color:var(--text-tertiary);background:var(--surface);font-family:var(--font-mono);font-size:var(--font-size-caption);grid-template-columns:minmax(230px,.8fr) repeat(3,minmax(40px,.4fr)) 76px;align-items:center;padding:0 11px;display:grid}.trace-axis span:nth-child(n+2){text-align:right}.trace-span-tree{background-image:linear-gradient(to right, transparent 49.8%, var(--border) 50%, transparent 50.2%);background-position:230px 0;background-repeat:no-repeat;background-size:calc(100% - 306px) 100%;flex:1;min-width:0;min-height:0;overflow:auto}.trace-span-row{border:0;border-bottom:1px solid var(--border);width:100%;min-width:620px;min-height:46px;color:inherit;cursor:pointer;text-align:left;background:0 0;grid-template-columns:minmax(230px,.8fr) minmax(240px,1.2fr) 76px;align-items:center;gap:10px;padding:4px 11px;display:grid}.trace-span-row:hover{background:var(--hover)}.trace-span-row.active{background:var(--selected)}.trace-span-name{align-items:center;gap:7px;min-width:0;display:flex}.trace-span-guides{align-self:stretch;gap:6px;display:inline-flex}.trace-span-guide{border-right:1px solid var(--border-strong);width:8px}.trace-span-name-copy{min-width:0}.trace-span-name-copy strong,.trace-span-name-copy span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.trace-span-name-copy strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.trace-span-name-copy span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption)}.trace-span-status{border-radius:var(--radius-circle);background:var(--text-tertiary);flex:none;width:7px;height:7px}.trace-span-status.OK{background:var(--success)}.trace-span-status.ERROR{background:var(--danger)}.trace-waterfall-track{border-inline:1px solid var(--border);background:repeating-linear-gradient(to right, transparent 0 24.8%, var(--border) 25%);height:18px;position:relative}.trace-waterfall-bar{top:4px;left:var(--span-left);width:max(3px, var(--span-width));border:1px solid var(--accent-border);border-radius:var(--radius-indicator);background:var(--accent-soft);height:10px;position:absolute}.trace-span-row[data-kind=CLIENT] .trace-waterfall-bar{background:var(--warning-soft);border-color:#d9c78c}.trace-span-row[data-status=ERROR] .trace-waterfall-bar{background:var(--danger-soft);border-color:#f1d6d2}.trace-span-duration{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--font-size-caption);text-align:right;white-space:nowrap}.trace-tabs{border-bottom:1px solid var(--border);gap:3px;padding:7px;display:flex;overflow-x:auto}.trace-tabs button{border-radius:var(--radius-control);min-height:30px;color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-caption);white-space:nowrap;background:0 0;border:0;padding:4px 7px}.trace-tabs button:hover{color:var(--text);background:var(--hover)}.trace-tabs button.active{color:var(--accent);background:var(--accent-soft);font-weight:var(--font-weight-medium)}.trace-detail-body{flex:1;min-height:0;overflow:auto}.trace-detail-body.raw-active{overflow:hidden}.trace-trajectory-layout{grid-template-columns:minmax(0,1fr) minmax(240px,32%);min-height:420px;display:grid}.trajectory-selection{border-left:1px solid var(--border);background:var(--surface-subtle);min-width:0;overflow:auto}@media (width<=1040px){.trace-trajectory-layout{grid-template-columns:1fr}.trajectory-selection{border-top:1px solid var(--border);border-left:0;min-height:180px}}.trajectory-view{background:var(--surface);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.trajectory-toolbar{border-bottom:1px solid var(--border);background:var(--surface-subtle);align-items:center;gap:10px;min-height:52px;padding:8px 12px;display:flex}.trajectory-summary-value{min-width:0;font-family:var(--font-mono);font-size:var(--font-size-meta);text-overflow:ellipsis;white-space:nowrap;margin-right:auto;overflow:hidden}.trajectory-status{color:var(--text-tertiary);font-size:var(--font-size-meta);padding:14px}.trajectory-status.error{color:var(--danger)}.trajectory-ledger{flex:1;min-height:0;overflow:auto}.trajectory-timeline{border-bottom:1px solid var(--border);background:var(--surface-subtle);gap:6px;padding:10px 12px;display:grid}.trajectory-lane{grid-template-columns:44px minmax(0,1fr);align-items:center;gap:8px;min-width:0;display:grid}.trajectory-lane>span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.trajectory-lane>div{background:var(--surface-sunken);border-radius:3px;height:10px;position:relative;overflow:hidden}.trajectory-lane i{background:var(--text-faint);border-radius:2px;min-width:3px;position:absolute;top:1px;bottom:1px}.trajectory-lane i[data-category=assistant]{background:var(--accent)}.trajectory-lane i[data-category=tool]{background:var(--warning)}.trajectory-lane i[data-category=user]{background:var(--success)}.trajectory-column-header,.trajectory-row{grid-template-columns:26px minmax(180px,1fr) minmax(76px,88px)}.trajectory-column-header[data-usage=true],.trajectory-row[data-usage=true]{grid-template-columns:26px minmax(180px,1fr) repeat(3,minmax(54px,72px)) minmax(76px,88px)}.trajectory-column-header{border-bottom:1px solid var(--border);min-width:520px;color:var(--text-tertiary);background:var(--surface-subtle);font-size:var(--font-size-caption);gap:9px;padding:7px 12px;display:grid}.trajectory-column-header span:first-child{grid-column:1/3}.trajectory-column-header span:not(:first-child){text-align:right}.trajectory-group-label{border-bottom:1px solid var(--border-subtle);min-width:520px;color:var(--text-secondary);background:var(--surface);font-size:var(--font-size-caption);font-weight:var(--font-weight-semibold);padding:9px 12px 6px}.trajectory-turn-header{border-bottom:1px solid var(--border);background:var(--surface-subtle);justify-content:space-between;align-items:center;min-width:520px;padding:10px 12px;display:flex}.trajectory-turn-header strong{font-size:var(--font-size-meta)}.trajectory-turn-header span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.trajectory-row{border:0;border-bottom:1px solid var(--border-subtle);width:100%;min-width:520px;min-height:54px;color:var(--text);cursor:pointer;text-align:left;background:0 0;align-items:center;gap:9px;padding:8px 12px;display:grid}.trajectory-row:hover,.trajectory-row:focus-visible,.trajectory-row[aria-pressed=true],.trajectory-system-row[aria-pressed=true]{background:var(--hover);outline:none}.trajectory-row[aria-pressed=true],.trajectory-system-row[aria-pressed=true]{background:var(--accent-soft)}.trajectory-row-icon{border-radius:var(--radius-control);width:24px;height:24px;color:var(--text-secondary);background:var(--surface-subtle);justify-content:center;align-items:center;display:inline-flex}.trajectory-row[data-category=tool] .trajectory-row-icon{color:var(--warning)}.trajectory-row[data-category=assistant] .trajectory-row-icon{color:var(--accent)}.trajectory-row[data-category=user] .trajectory-row-icon{color:var(--success)}.trajectory-row[data-category=approval] .trajectory-row-icon{color:var(--warning)}.trajectory-row-copy{flex-direction:column;min-width:0;display:flex}.trajectory-row-copy strong,.trajectory-row-copy small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.trajectory-row-copy strong{font-size:var(--font-size-meta)}.trajectory-row-copy small,.trajectory-row-metric,.trajectory-row-duration{color:var(--text-tertiary);font-size:var(--font-size-caption)}.trajectory-row-metric,.trajectory-row-duration{font-family:var(--font-mono);text-align:right}.trajectory-latest{box-shadow:var(--shadow-medium);position:absolute;bottom:16px;right:16px}.trajectory-system-events{border-top:1px solid var(--border);display:grid}.trajectory-system-events>button{border:0;border-bottom:1px solid var(--border-subtle);min-height:36px;color:var(--text-tertiary);font-size:var(--font-size-caption);text-align:left;background:0 0;align-items:center;gap:7px;padding:7px 12px;display:flex}.trajectory-system-events>button:hover{background:var(--hover)}.trajectory-system-row{font-family:var(--font-mono);padding-left:34px!important}.trajectory-detail{flex:1;align-content:start;min-height:0;display:grid;overflow:auto}.trajectory-detail-tabs{z-index:1;border-bottom:1px solid var(--border);background:var(--surface);gap:2px;display:flex;position:sticky;top:0;overflow-x:auto}.trajectory-detail-heading{border-bottom:1px solid var(--border);background:var(--surface);gap:3px;padding:12px;display:grid}.trajectory-detail-heading strong{color:var(--text);font-size:var(--font-size-meta)}.trajectory-detail-heading span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.trajectory-detail-tabs button{color:var(--text-tertiary);font-size:var(--font-size-caption);white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;padding:8px 10px}.trajectory-detail-tabs button[aria-selected=true]{border-bottom-color:var(--accent);color:var(--text)}.trajectory-detail h3{font-size:var(--font-size-meta);margin:0 0 6px}.trajectory-detail>section{border-bottom:1px solid var(--border-subtle);padding:12px}.trajectory-detail p,.trajectory-detail pre{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--font-size-caption);white-space:pre-wrap;word-break:break-word;margin:0;overflow:auto}.trace-detail-grid,.trace-kv-list{margin:0;padding:12px}.trace-detail-grid>div{border-bottom:1px solid var(--border);grid-template-columns:108px minmax(0,1fr);gap:10px;min-width:0;padding:8px 0;display:grid}.trace-kv-row{border-bottom:1px solid var(--border);grid-template-columns:minmax(130px,.7fr) minmax(0,1.3fr);gap:14px;min-width:0;padding:8px 0;display:grid}.trace-detail-grid dt{color:var(--text-tertiary);font-size:var(--font-size-caption)}.trace-kv-key{min-width:0;color:var(--text-tertiary);font-size:var(--font-size-caption);overflow-wrap:anywhere}.trace-detail-grid dd,.trace-kv-value{overflow-wrap:anywhere;min-width:0;font-family:var(--font-mono);font-size:var(--font-size-caption);margin:0}.trace-event-list{gap:9px;padding:12px;display:grid}.trace-event-card{border-left:2px solid var(--accent-border);background:var(--surface-subtle);padding:9px 10px}.trace-event-card strong,.trace-event-card span{display:block}.trace-event-card strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.trace-event-card span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption);margin-top:2px}.trace-raw{min-height:100%;color:var(--text);background:var(--surface);font-family:var(--font-mono);font-size:var(--font-size-caption);line-height:var(--line-height-code-compact);flex-direction:column;padding:0;display:flex;overflow:hidden}.trace-detail-body.raw-active .trace-raw{box-sizing:border-box;overscroll-behavior:contain;scrollbar-gutter:stable both-edges;width:100%;height:100%;min-height:0;max-height:100%;overflow:auto}.trace-raw-toolbar{border-bottom:1px solid var(--border);min-height:42px;color:var(--text-tertiary);background:var(--surface-subtle);font-family:var(--font-sans);font-size:var(--font-size-caption);flex:none;justify-content:space-between;align-items:center;gap:12px;padding:6px 10px 6px 14px;display:flex}.trace-raw-toolbar>div{gap:3px;display:flex}.trace-raw-toolbar button{border-radius:var(--radius-control);min-height:28px;color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-caption);background:0 0;border:0;padding:3px 8px}.trace-raw-toolbar button:hover,.trace-raw-toolbar button.active{color:var(--accent);background:var(--accent-soft)}.trace-raw-tree{scrollbar-gutter:stable;flex:1;min-height:0;padding:10px 8px 24px;overflow:auto}.trace-raw-loading{min-height:220px;color:var(--text-tertiary);font-family:var(--font-sans);place-items:center;display:grid}.otlp-json{min-width:max-content;color:var(--text);background:var(--surface);white-space:pre-wrap;overflow-wrap:anywhere;padding:2px 8px 18px}.otlp-json-children{border-left:1px solid var(--border);margin:0;padding:0 0 0 18px;list-style:none}.otlp-json-row{min-height:24px;padding:2px 0}.otlp-json-toggle{border-radius:var(--radius-control);width:18px;height:18px;color:var(--text-tertiary);cursor:pointer;font-size:var(--font-size-caption);line-height:var(--line-height-none);-webkit-user-select:none;user-select:none;vertical-align:-1px;background:0 0;border:0;place-items:center;margin:0 3px 0 -2px;padding:0;display:inline-grid}.otlp-json-toggle:hover,.otlp-json-toggle:focus-visible{color:var(--accent);background:var(--accent-soft);outline:none}.otlp-json-expand:after{content:"›"}.otlp-json-collapse:after{content:"⌄";transform:translateY(-1px)}.otlp-json-collapsed{color:var(--text-disabled);margin-left:5px}.otlp-json-collapsed:after{content:"…"}.otlp-json-key{color:var(--accent);font-weight:var(--font-weight-medium);margin-right:5px}.otlp-json-key-clickable{cursor:pointer}.otlp-json-string{color:var(--success)}.otlp-json-number{color:var(--warning)}.otlp-json-boolean{color:var(--danger)}.otlp-json-null{color:var(--text-disabled);font-style:italic}.otlp-json-other,.otlp-json-punctuation{color:var(--text-secondary)}.observability-overview{border:1px solid var(--border);background:var(--surface);border-radius:12px;grid-template-columns:minmax(560px,.95fr) minmax(420px,1.05fr);gap:0;margin-bottom:12px;display:grid;overflow:hidden}.overview-metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:0;padding:10px 8px;display:grid}.overview-metric-card{min-width:0;box-shadow:none;background:0 0;border:0;border-radius:0;flex-direction:column;justify-content:center;gap:1px;padding:7px 13px;display:flex;position:relative}.overview-metric-card+.overview-metric-card{border-left:1px solid color-mix(in srgb, var(--border) 78%, transparent)}.overview-metric-label{color:var(--text-tertiary);align-items:center;gap:6px;display:flex}.overview-metric-label>span{width:20px;height:20px;color:var(--accent);background:var(--accent-soft);border-radius:6px;place-items:center;display:grid}.overview-metric-label small{font-size:var(--font-size-fine)}.overview-metric-card strong{font-size:var(--font-size-card-metric);font-weight:var(--font-weight-semibold);color:var(--text);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;margin-top:3px;overflow:hidden}.overview-metric-card.success strong{color:var(--success)}.overview-metric-card.success .overview-metric-label>span{color:var(--success);background:var(--success-soft)}.overview-metric-card p{font-size:var(--font-size-fine);color:var(--text-tertiary);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.overview-chart-card{border:0;border-left:1px solid var(--border);background:color-mix(in srgb, var(--surface-subtle) 34%, var(--surface));min-width:0;box-shadow:none;border-radius:0;padding:9px 14px 7px}.overview-chart-header{justify-content:space-between;align-items:baseline;margin-bottom:2px;display:flex}.overview-chart-header strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-semibold)}.overview-chart-header small{font-size:var(--font-size-caption);color:var(--text-tertiary)}.overview-chart{width:100%;height:82px;display:block}.overview-chart-legend{font-size:var(--font-size-fine);color:var(--text-secondary);justify-content:flex-end;align-items:center;gap:16px;margin-top:0;display:flex}.overview-chart-legend span{vertical-align:middle;border-radius:2px;width:14px;height:3px;margin-right:5px;display:inline-block}.legend-runs{background:var(--accent)}.legend-success{background:var(--success)}@media (width<=1100px){.observability-overview{grid-template-columns:minmax(0,1fr)}.overview-chart-card{border-top:1px solid var(--border);border-left:0}}.overview-range-tabs{border-radius:var(--radius-control);background:var(--surface-subtle);border:0;gap:2px;padding:1px;display:inline-flex}.overview-range-tabs button{color:var(--text-secondary);font-size:var(--font-size-caption);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:2px 8px}.overview-range-tabs button.active{background:var(--surface);color:var(--text);font-weight:var(--font-weight-medium);box-shadow:var(--shadow-control)}.build-workspace{grid-template-columns:280px minmax(0,1fr);gap:24px;display:grid}.build-summary{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);align-self:start;padding:18px}.build-summary>div{border-bottom:1px solid var(--border);min-height:56px;padding:8px 0}.build-summary>div:last-child{border-bottom:0}.build-summary span,.build-summary strong{display:block}.build-summary>div>span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.build-summary>div>strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium);margin-top:4px}.build-log{border-radius:var(--radius-surface);background:var(--code-bg);border:1px solid #2f3744;overflow:hidden}.log-header{color:#adb8c6;min-height:48px;font-size:var(--font-size-meta);border-bottom:1px solid #394250;justify-content:space-between;align-items:center;gap:12px;padding:0 14px;display:flex}.log-header span:last-child{font-family:var(--font-mono);font-size:var(--font-size-caption)}.build-log pre{min-height:340px;max-height:560px;color:var(--code-text);font-family:var(--font-mono);font-size:var(--font-size-meta);line-height:var(--line-height-editor);white-space:pre-wrap;margin:0;padding:14px;overflow:auto}.empty-state{text-align:center;border:1px dashed var(--border-strong);border-radius:var(--radius-surface);background:var(--surface-subtle);flex-direction:column;align-items:center;gap:12px;max-width:420px;margin:24px auto;padding:48px 24px;display:flex}.empty-state .empty-icon{border-radius:var(--radius-circle);background:var(--accent-soft);width:48px;height:48px;color:var(--accent);place-items:center;display:grid}.empty-state .empty-icon svg{width:24px;height:24px}.empty-state h2{font-size:var(--font-size-section-title);margin:0}.empty-state p{color:var(--text-secondary);font-size:var(--font-size-control);margin:0}.studio-form-field{gap:7px;min-width:0;display:grid}.studio-field-label{color:var(--text-primary);font-size:var(--font-size-control);font-weight:var(--font-weight-semibold);align-items:baseline;gap:8px;display:flex}.studio-field-requirement{color:var(--text-tertiary);font-size:var(--font-size-meta);font-weight:var(--font-weight-regular)}.studio-field-requirement.generated{border-radius:var(--radius-pill);background:var(--surface-subtle);padding:1px 6px}.studio-field-control{min-width:0}.studio-field-hint,.studio-field-error{font-size:var(--font-size-meta);line-height:var(--line-height-body);margin:0}.studio-field-hint{color:var(--text-tertiary)}.studio-field-error{color:var(--danger)}.studio-form-field.has-error :is(input,textarea,button[role=combobox]){border-color:var(--danger)}.generated-id-control{grid-template-columns:minmax(0,1fr) 36px;align-items:center;gap:6px;display:grid}.generated-id-control input{min-width:0;font-family:var(--font-mono);background:var(--surface-subtle)}.studio-multi-select{gap:8px;min-width:0;display:grid}.studio-multi-select-summary{min-height:22px;color:var(--text-secondary);font-size:var(--font-size-meta);justify-content:space-between;align-items:center;gap:12px;display:flex}.studio-multi-select-selection{flex-wrap:wrap;gap:6px;min-width:0;display:flex}.studio-selection-chip{border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface-subtle);max-width:100%;min-height:27px;color:var(--text-primary);font-size:var(--font-size-meta);align-items:center;gap:5px;padding:3px 5px 3px 9px;display:inline-flex}.studio-selection-chip>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.studio-selection-chip button{border-radius:var(--radius-circle);width:20px;height:20px;color:var(--text-tertiary);background:0 0;border:0;flex:none;place-items:center;padding:0;display:grid}.studio-selection-chip button:hover{background:var(--surface-hover);color:var(--text-primary)}.studio-multi-select-trigger{width:100%;min-height:var(--control-height);border:1px solid var(--border-strong);border-radius:var(--radius-control);background:var(--surface);color:var(--text-secondary);font-family:inherit;font-size:var(--font-size-control);justify-content:space-between;align-items:center;gap:12px;padding:0 12px;display:flex}.studio-multi-select-trigger:hover,.studio-multi-select-trigger[aria-expanded=true]{border-color:var(--accent);color:var(--text-primary)}.studio-multi-select-popover{z-index:150;border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface-raised);width:min(430px,100vw - 24px);box-shadow:var(--shadow-overlay);overflow:hidden}.studio-command-search{border-bottom:1px solid var(--border);min-height:44px;color:var(--text-tertiary);align-items:center;gap:8px;padding:0 12px;display:flex}.studio-command-search input{min-width:0;color:var(--text-primary);background:0 0;border:0;outline:0;flex:1;padding:0}.studio-multi-select-tools{border-bottom:1px solid var(--border);min-height:36px;color:var(--text-tertiary);font-size:var(--font-size-meta);justify-content:space-between;align-items:center;padding:0 10px;display:flex}.studio-multi-select-tools button{border-radius:var(--radius-control);color:var(--text-secondary);background:0 0;border:0;padding:3px 7px}.studio-multi-select-tools button.selected{background:var(--accent-soft);color:var(--accent-strong)}.studio-command-list{max-height:min(340px,100dvh - 180px);padding:6px;overflow-y:auto}.studio-command-list [cmdk-empty]{color:var(--text-tertiary);text-align:center;font-size:var(--font-size-meta);padding:28px 16px}.studio-command-list [cmdk-item]{border-radius:var(--radius-control);min-height:52px;color:var(--text-primary);cursor:pointer;align-items:center;gap:10px;padding:7px 9px;display:flex}.studio-command-list [cmdk-item][data-selected=true]{background:var(--surface-hover)}.studio-command-list [cmdk-item][data-disabled=true]{opacity:.46;cursor:not-allowed}.studio-option-check{border:1px solid var(--border-strong);width:18px;height:18px;color:var(--surface);border-radius:5px;flex:none;place-items:center;display:grid}.studio-option-check[aria-checked=true]{border-color:var(--accent);background:var(--accent)}.studio-option-copy{gap:2px;min-width:0;display:grid}.studio-option-copy :is(strong,small){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.studio-option-copy strong{font-size:var(--font-size-control)}.studio-option-copy small{color:var(--text-tertiary);font-size:var(--font-size-meta)}.studio-file-dropzone{border:1px dashed var(--border-strong);border-radius:var(--radius-surface);background:var(--surface-subtle);min-height:104px;color:var(--text-secondary);cursor:pointer;transition:border-color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:12px;padding:16px;display:grid}.studio-file-dropzone:hover,.studio-file-dropzone.dragging{border-color:var(--accent);background:var(--accent-soft)}.studio-file-dropzone.rejected{border-color:var(--danger);background:var(--danger-soft)}.studio-file-dropzone.has-file{cursor:default;border-style:solid}.studio-file-icon{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);width:42px;height:42px;color:var(--accent-strong);place-items:center;display:grid}.studio-file-copy{gap:4px;min-width:0;display:grid}.studio-file-copy strong,.studio-file-copy small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.studio-file-copy strong{color:var(--text-primary);font-size:var(--font-size-control)}.studio-file-copy small{color:var(--text-tertiary);font-size:var(--font-size-meta)}.studio-file-actions{gap:4px;display:flex}.python-tool-source-mode{margin-bottom:10px}.python-tool-example{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-subtle);margin-bottom:18px;overflow:hidden}.python-tool-example-trigger{width:100%;min-height:54px;color:var(--text-secondary);cursor:pointer;text-align:left;background:0 0;border:0;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 12px;display:grid}.python-tool-example-trigger:hover{color:var(--text-primary);background:var(--surface-hover)}.python-tool-example-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.python-tool-example-trigger>span{min-width:0}.python-tool-example-trigger strong,.python-tool-example-trigger small{display:block}.python-tool-example-trigger strong{color:var(--text-primary);font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.python-tool-example-trigger small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.python-tool-example-chevron{transition:transform var(--duration-fast) var(--ease-standard)}.python-tool-example-trigger[aria-expanded=true] .python-tool-example-chevron{transform:rotate(180deg)}.python-tool-example-panel{border-top:1px solid var(--border);padding:0 10px 11px}.python-tool-example-panel .code-viewer{max-height:320px;margin-top:10px}.python-tool-example-rules{color:var(--text-secondary);font-size:var(--font-size-caption);line-height:var(--line-height-body);gap:5px;margin:10px 2px 0;padding-left:18px;display:grid}.python-tool-inspection-summary{border:1px solid var(--success);border-radius:var(--radius-control);background:var(--success-soft);min-height:36px;color:var(--success);font-size:var(--font-size-meta);align-items:center;gap:8px;padding:8px 10px;display:flex}.studio-scroll-area{min-width:0;min-height:0;position:relative;overflow:hidden}.studio-scroll-viewport{width:100%;height:100%}.studio-scrollbar{touch-action:none;-webkit-user-select:none;user-select:none;background:0 0;width:10px;padding:2px}.studio-scrollbar.horizontal{width:auto;height:10px}.studio-scroll-thumb{border-radius:var(--radius-pill);background:var(--border-strong);flex:1;position:relative}.studio-scroll-corner{background:var(--surface-subtle)}.overlay{z-index:100;position:fixed;inset:0}.overlay-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#1f2a3752;position:absolute;inset:0}.drawer{background:var(--surface);width:min(620px,100%);box-shadow:var(--shadow-overlay);animation:drawer-in var(--motion-base) var(--ease);grid-template-rows:auto minmax(0,1fr) auto;display:grid;position:fixed;inset:0 0 0 auto}.drawer.compact{width:min(380px,100%)}.drawer.compact .drawer-body{padding:14px}.create-rail-panel{min-width:0}.studio-dialog{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);width:min(520px,100vw - 40px);max-height:min(760px,100dvh - 40px);box-shadow:var(--shadow-overlay);grid-template-rows:auto minmax(0,1fr) auto;display:grid;position:fixed;inset:50% auto auto 50%;overflow:hidden;transform:translate(-50%,-50%)}.studio-dialog-header,.studio-dialog-footer{align-items:flex-start;gap:12px;padding:18px 20px;display:flex}.studio-dialog-header{border-bottom:1px solid var(--border)}.studio-dialog-header>div{flex:1;min-width:0}.studio-dialog-header h2,.studio-dialog-header p{margin:0}.studio-dialog-header h2{font-size:var(--font-size-section-title)}.studio-dialog-header p{color:var(--text-secondary);font-size:var(--font-size-meta);margin-top:5px}.studio-dialog-body{min-height:0;padding:20px;overflow:auto}.studio-dialog-footer{border-top:1px solid var(--border);justify-content:flex-end;align-items:center}@keyframes drawer-in{0%{opacity:0;transform:translate(16px)}}.drawer-header{border-bottom:1px solid var(--border);align-items:flex-start;gap:12px;min-height:82px;padding:20px 24px;display:flex}.drawer-header>div{flex:1;min-width:0}.drawer-header h2,.drawer-header p{margin:0}.drawer-header h2{font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold)}.drawer-header p{color:var(--text-secondary);font-size:var(--font-size-meta);margin-top:4px}.drawer-body{min-height:0;padding:24px;overflow-y:auto}.drawer-footer{border-top:1px solid var(--border);justify-content:flex-end;align-items:center;gap:8px;min-height:72px;padding:0 24px;display:flex}.drawer-footer-spacer{flex:1}.confirm-dialog{border-radius:10px;grid-template-rows:auto auto;grid-template-columns:38px minmax(0,1fr);gap:14px;width:min(440px,100% - 40px);padding:22px;overflow:visible}.confirm-dialog .studio-dialog-icon{grid-area:1/1}.confirm-dialog .studio-dialog-header{border:0;grid-area:1/2;padding:0}.confirm-dialog .studio-dialog-footer{border:0;grid-area:2/1/auto/-1;padding:0}.confirm-icon{border-radius:50%;place-items:center;width:36px;height:36px;display:grid}.confirm-icon.danger{color:var(--danger);background:var(--danger-soft)}.confirm-icon svg{width:18px;height:18px}.confirm-dialog h2,.confirm-dialog p{margin:0}.confirm-dialog h2{font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold)}.confirm-dialog p{color:var(--text-secondary);font-size:var(--font-size-meta);line-height:var(--line-height-body);margin-top:5px}.confirm-dialog .studio-dialog-footer{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}.credential-profile{border-top:1px solid var(--border);margin-bottom:20px}.credential-profile>div{border-bottom:1px solid var(--border);grid-template-columns:104px minmax(0,1fr);align-items:center;gap:16px;min-height:48px;display:grid}.credential-profile span{color:var(--text-secondary);font-size:var(--font-size-meta)}.credential-profile strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.credential-profile code{min-width:0;font-family:var(--font-mono);font-size:var(--font-size-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.credential-status{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-subtle);align-items:flex-start;gap:10px;margin-bottom:22px;padding:14px;display:flex}.credential-status .status-dot{margin-top:7px}.credential-status strong,.credential-status p{margin:0;display:block}.credential-status strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.credential-status p{color:var(--text-secondary);font-size:var(--font-size-meta);margin-top:2px}.credential-status.configured{background:var(--success-soft);border-color:#d5e9df}.credential-status.missing{background:var(--warning-soft);border-color:#eee2c9}.callout{border-radius:var(--radius-control);color:var(--accent);background:var(--accent-soft);align-items:flex-start;gap:10px;padding:14px;display:flex}.callout>svg{width:16px;height:16px;margin-top:2px}.callout strong,.callout p{margin:0}.callout strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium);display:block}.callout p{color:var(--text-secondary);font-size:var(--font-size-caption);margin-top:2px}.code-tabs{border-bottom:1px solid var(--border);gap:18px;margin-top:22px;display:flex}.code-tabs button{min-height:var(--button-height-small);color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-meta);background:0 0;border:0;border-bottom:2px solid #0000;padding:0 2px}.code-tabs button.active{border-color:var(--accent);color:var(--text);font-weight:var(--font-weight-medium)}.api-contract{border-top:1px solid var(--border);margin-top:18px}.api-contract>div{border-bottom:1px solid var(--border);grid-template-columns:82px minmax(0,1fr);align-items:center;gap:12px;min-height:46px;display:grid}.api-contract span{color:var(--text-secondary);font-size:var(--font-size-meta)}.api-contract code{font-family:var(--font-mono);font-size:var(--font-size-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.toast-region{z-index:120;gap:8px;width:min(380px,100% - 36px);display:grid;position:fixed;bottom:18px;right:18px}.toast{border:1px solid var(--border);border-radius:var(--radius-surface);color:var(--text);background:var(--surface);box-shadow:var(--shadow-toast);animation:toast-in var(--motion-base) var(--ease);align-items:flex-start;gap:9px;padding:13px 14px;display:flex}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}}.toast>svg{width:15px;height:15px;margin-top:2px}.toast.success>svg{color:var(--success)}.toast.error>svg{color:var(--danger)}.toast strong,.toast p{margin:0}.toast strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-medium);display:block}.toast p{color:var(--text-secondary);font-size:var(--font-size-caption);margin-top:2px}@media (width>=1280px) and (width<=1599px){.page-container{padding-inline:32px}.create-header{grid-template-columns:180px minmax(0,1fr) 180px;padding-inline:32px}.wizard-layout{grid-template-columns:200px minmax(680px,1fr);padding-inline:32px}}@media (width<=1279px){.sidebar{width:220px}.app-main{margin-left:220px}.global-header{padding-inline:20px}.page-container{padding-inline:24px}.create-header{grid-template-columns:auto minmax(0,1fr);gap:18px;padding:22px 24px}.create-header .draft-state{display:none}.quick-create{grid-template-columns:minmax(0,1fr);width:calc(100% - 48px);margin-top:24px}.manifest-preview{position:static}.manifest-preview>.code-viewer{min-height:280px;max-height:420px}.wizard-layout{grid-template-columns:minmax(0,1fr);padding-inline:24px}.wizard-steps{display:none}.trace-workbench{grid-template-columns:250px minmax(0,1fr);height:auto;min-height:620px;overflow:visible}.trace-span-panel{border-right:0}.trace-detail-panel{border-top:1px solid var(--border);grid-column:1/-1;min-height:360px}}body.create-mode{background:var(--surface);overflow-x:hidden}body.create-mode .global-context{display:none}.create-shell{background:var(--surface)}.create-header{grid-template-columns:212px minmax(0,1fr) auto;align-items:center;gap:28px;min-height:104px;padding:18px max(28px,50% - 680px)}.create-header>.button{justify-self:start}.create-heading h1{margin-top:3px}.create-heading p{margin-top:4px}.create-workbench{background:var(--surface);grid-template-columns:212px minmax(0,1fr);width:min(1360px,100%);min-height:calc(100dvh - 168px);margin:0 auto;display:grid}.create-rail{border-right:1px solid var(--border);background:var(--surface-subtle);align-self:start;min-height:calc(100dvh - 64px);padding:24px 14px;position:sticky;top:64px}.create-rail-label{color:var(--text-tertiary);font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);margin:0 10px 8px}.create-rail-divider{background:var(--border);height:1px;margin:18px 10px}.authoring-mode-tabs{background:0 0;border:0;border-radius:0;grid-template-columns:minmax(0,1fr);gap:4px;margin:0;padding:0;display:grid}.authoring-mode-tabs button{border-radius:var(--radius-control);border:0;gap:10px;min-height:54px;padding:9px 10px}.authoring-mode-tabs button:hover,.authoring-mode-tabs button.active{background:var(--selected);box-shadow:none;border-color:#0000}.authoring-mode-tabs svg{width:17px;height:17px}.authoring-mode-tabs strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.wizard-step-label[hidden],.wizard-steps[hidden]{display:none!important}.wizard-steps{gap:3px}.wizard-step{gap:10px;min-height:62px;padding:9px 10px}.step-number{width:28px;height:28px}.wizard-step.completed .step-number{color:#0000;position:relative}.wizard-step.completed .step-number:before{content:"✓";color:var(--success);font-size:var(--font-size-meta);position:absolute}.create-stage{background:var(--surface);min-width:0}.wizard-layout{width:100%;min-height:calc(100dvh - 168px);padding:0;display:block}.wizard-content{background:var(--surface);border:0;border-radius:0;width:min(100%,1040px);min-height:calc(100dvh - 168px)}.wizard-panel{min-height:calc(100dvh - 240px);padding:34px 48px 96px}.panel-heading{margin-bottom:28px}.wizard-actions{z-index:18;border-top-color:var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);min-height:68px;padding:0 36px;position:sticky;bottom:0;box-shadow:0 -8px 20px #1f2a370a}.wizard-error-summary{z-index:19;margin:0 36px;position:sticky;bottom:68px}.summary-count{border-radius:var(--radius-badge);min-width:20px;height:20px;color:var(--accent);background:var(--accent-soft);font-size:var(--font-size-caption);place-items:center;display:inline-grid}.resource-detail-item .capability-icon,.capability-heading .capability-icon{background:0 0;border:0;width:26px;height:26px}.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:var(--danger);box-shadow:0 0 0 3px #b5473c14}.route-inspector-section{background:var(--surface-subtle)}.runtime-resource-page,.orchestration-page{max-width:var(--studio-page-max,1760px)}.runtime-overview-grid{border-block:1px solid var(--border);grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:34px;display:grid}.runtime-metric{border-right:1px solid var(--border);flex-direction:column;justify-content:center;min-width:0;min-height:124px;padding:20px 22px;display:flex}.runtime-metric:last-child{border-right:0}.runtime-metric>span,.runtime-metric small{color:var(--text-tertiary);font-size:var(--font-size-meta)}.runtime-metric strong{color:var(--text);font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold);text-overflow:ellipsis;white-space:nowrap;margin:6px 0 2px;overflow:hidden}.runtime-metric.edge strong{color:var(--edge)}.runtime-metric.cloud strong{color:var(--cloud)}.runtime-resource-section{padding-bottom:56px}.runtime-resource-groups{border-top:1px solid var(--border);grid-template-columns:repeat(2,minmax(0,1fr));gap:0 32px;display:grid}.runtime-resource-group{border-bottom:1px solid var(--border);min-width:0;padding:22px 0}.runtime-resource-group>header{align-items:center;gap:10px;min-height:42px;margin-bottom:8px;display:flex}.runtime-group-icon{border-radius:var(--radius-control);width:32px;height:32px;color:var(--accent);background:var(--accent-soft);place-items:center;display:grid}.runtime-resource-group header strong,.runtime-resource-group header small{display:block}.runtime-resource-group header strong{font-size:var(--font-size-body);font-weight:var(--font-weight-semibold)}.runtime-resource-group header small{color:var(--text-tertiary);font-size:var(--font-size-caption)}.runtime-resource-list{border-top:1px solid var(--border)}.runtime-resource-row{border-bottom:1px solid var(--border);grid-template-columns:8px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:58px;display:grid}.resource-state{border-radius:var(--radius-circle);background:var(--text-disabled);width:7px;height:7px}.resource-state.ready{background:var(--edge)}.resource-state.warning{background:var(--route)}.runtime-resource-row>span:nth-child(2){min-width:0}.runtime-resource-row strong,.runtime-resource-row small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.runtime-resource-row strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.runtime-resource-row small,.runtime-resource-empty{color:var(--text-tertiary);font-size:var(--font-size-caption)}.runtime-resource-empty{padding:16px 0}.orchestration-workbench{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:36px;padding-bottom:64px;display:grid}.orchestration-canvas{min-width:0}.orchestration-graph{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);width:100%;height:clamp(380px,48dvh,500px);position:relative;overflow:hidden}.orchestration-graph .react-flow__renderer{cursor:grab}.orchestration-graph .react-flow__renderer:active{cursor:grabbing}.pipeline-node-card{border:1px solid var(--border-strong);border-radius:var(--radius-surface);background:var(--surface);width:100%;height:100%;box-shadow:var(--shadow-control);transition:border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-standard);flex-direction:row;justify-content:center;align-items:center;gap:10px;padding:13px;display:flex}.pipeline-node-icon{border-radius:var(--radius-control);width:32px;height:32px;color:var(--accent);background:var(--accent-soft);flex:0 0 32px;place-items:center;display:grid}.pipeline-node-card>span:nth-of-type(2){min-width:0}.pipeline-node-card strong,.pipeline-node-card small{display:block}.pipeline-node-card strong{max-width:100%;font-size:var(--font-size-control);font-weight:var(--font-weight-semibold);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pipeline-node-card small{color:var(--text-secondary);font-size:var(--font-size-caption);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;overflow:hidden}.pipeline-node-card .react-flow__handle{border:2px solid var(--surface);background:var(--accent);opacity:0;width:7px;height:7px;transition:opacity var(--duration-fast) var(--ease-standard)}.react-flow__node.selected .pipeline-node-card .react-flow__handle,.pipeline-node-card:hover .react-flow__handle{opacity:1}.orchestration-graph .react-flow__edge-text{fill:var(--text-tertiary);stroke:none;font-family:var(--font-mono);font-size:var(--font-size-caption);font-weight:var(--font-weight-medium)}.orchestration-graph .react-flow__edge-textbg{fill:var(--surface);fill-opacity:.94;stroke:var(--border);stroke-width:.7px;rx:5px;ry:5px}.orchestration-graph .react-flow__controls{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);box-shadow:var(--shadow-control);overflow:hidden}.orchestration-graph .react-flow__controls-button{border-color:var(--border);width:30px;height:30px;color:var(--text-secondary);background:var(--surface)}.orchestration-graph .react-flow__controls-button:hover{color:var(--text);background:var(--surface-subtle)}.orchestration-aside{border-block:1px solid var(--border);padding:20px 0}.orchestration-aside-section{min-width:0}.orchestration-aside dl{margin:8px 0 0}.orchestration-aside dl>div{border-bottom:1px solid var(--border);min-height:42px;font-size:var(--font-size-meta);justify-content:space-between;align-items:center;gap:12px;display:flex}.orchestration-aside dt{color:var(--text-secondary)}.orchestration-aside dd{max-width:170px;font-weight:var(--font-weight-medium);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.dispatch-log{margin-top:8px}.dispatch-log-row{border-bottom:1px solid var(--border);grid-template-columns:8px minmax(0,1fr);align-items:center;gap:10px;min-height:54px;display:grid}.dispatch-status{border-radius:var(--radius-circle);background:var(--text-disabled);width:7px;height:7px}.dispatch-status.completed,.dispatch-status.succeeded{background:var(--edge)}.dispatch-status.running{background:var(--route)}.dispatch-status.failed{background:var(--danger)}.dispatch-log-row strong,.dispatch-log-row small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.dispatch-log-row strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.dispatch-log-row small,.dispatch-log-empty{color:var(--text-tertiary);font-size:var(--font-size-caption)}.dispatch-log-empty{padding:16px 0}.orchestration-empty{text-align:center;align-content:center;place-items:center;min-height:420px;display:grid}.orchestration-empty h2,.orchestration-empty p{margin:0}.orchestration-empty h2{font-size:var(--font-size-section-title);margin-top:12px}.orchestration-empty p{max-width:52ch;color:var(--text-secondary);font-size:var(--font-size-control);margin:6px 0 18px}.authoring-mode-panel{width:min(100%,1040px);box-shadow:none;border:0;border-radius:0;margin:0;padding:34px 48px 64px}.quick-create{width:min(100%,1040px);margin:0;padding:34px 48px 64px}@media (width<=1279px){.create-workbench{grid-template-columns:212px minmax(0,1fr)}.create-header{grid-template-columns:212px minmax(0,1fr) auto;gap:20px;padding:18px 24px}.create-header .draft-state,.wizard-steps{display:flex}.wizard-panel{padding-inline:36px}.quick-create{width:100%;padding-inline:36px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}.settings-group{border-bottom:1px solid var(--border);margin-bottom:24px;padding-bottom:20px}.settings-group:last-child{border-bottom:0}.settings-group h3{font-size:var(--font-size-control);font-weight:var(--font-weight-semibold);margin:0 0 12px}.settings-credential{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;padding:10px 12px;display:flex}.settings-credential span{flex-direction:column;gap:2px;min-width:0;display:flex}.settings-credential small{color:var(--text-tertiary);font-size:var(--font-size-caption)}.settings-empty{color:var(--text-tertiary);font-size:var(--font-size-meta)}.inspector-title-spaced{margin-top:12px}.a2ui-surface{border:1px solid var(--border-card);border-radius:calc(var(--radius-surface) + 2px);background:var(--surface);margin:12px 0;overflow:hidden;box-shadow:0 1px 2px #1f2a3708}.a2ui-surface.pending{border-color:var(--border-strong)}.a2ui-card{padding:14px}.a2ui-card h3,.a2ui-card p,.a2ui-text,.a2ui-form strong{margin:0}.a2ui-card h3{color:var(--text-primary);font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.a2ui-card p,.a2ui-text{color:var(--text-secondary);font-size:var(--font-size-meta);line-height:var(--line-height-body);margin-top:6px}.a2ui-card-content,.a2ui-layout.column{gap:10px;margin-top:12px;display:grid}.a2ui-form{gap:10px;padding:14px;display:grid}.a2ui-card-content .a2ui-form{padding:0}.a2ui-layout.row,.a2ui-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.a2ui-field{color:var(--text-label);font-size:var(--font-size-meta);gap:5px;display:grid}.a2ui-field>legend{color:var(--text-primary);font-size:var(--font-size-control);font-weight:var(--font-weight-medium);padding:0}.a2ui-field-description{color:var(--text-tertiary);font-size:var(--font-size-meta);line-height:var(--line-height-body);margin:0}.a2ui-field input,.a2ui-field select{border:1px solid var(--border);border-radius:var(--radius-control);min-height:38px;color:var(--text-primary);background:var(--surface);padding:8px 10px}.a2ui-options{border:0;margin:0;padding:0}.a2ui-choice-list{gap:3px;margin-top:2px;display:grid}.a2ui-choice{min-height:36px;color:var(--text-primary);cursor:pointer;transition:background var(--motion-fast) var(--ease);border-radius:10px;align-items:flex-start;gap:10px;padding:6px 8px;display:flex;position:relative}.a2ui-choice:hover,.a2ui-choice.selected{background:var(--surface-subtle)}.a2ui-choice>input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.a2ui-choice-index,.a2ui-other-icon{border-radius:var(--radius-circle);width:24px;height:24px;color:var(--text-tertiary);background:var(--surface-subtle);font-size:var(--font-size-caption);font-weight:var(--font-weight-semibold);flex:none;place-items:center;display:grid}.a2ui-choice.selected .a2ui-choice-index{color:var(--surface);background:var(--text-primary)}.a2ui-choice-copy{min-width:0;line-height:var(--line-height-control);flex:1;padding-top:1px}.a2ui-choice-copy strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.a2ui-choice-copy small{color:var(--text-tertiary);font-size:var(--font-size-meta);line-height:inherit;margin-left:8px}.a2ui-other{background:color-mix(in srgb, var(--surface-subtle) 72%, transparent);border-radius:10px;align-items:center;gap:10px;min-height:36px;padding:5px 8px;display:flex}.a2ui-other.active{background:var(--surface-subtle)}.a2ui-other-icon{border:1px solid var(--border);background:var(--surface)}.a2ui-other input{min-width:0;min-height:26px;box-shadow:none;font-size:var(--font-size-meta);background:0 0;border:0;flex:1;padding:0}.a2ui-other input:focus{box-shadow:none;border:0}.a2ui-approval{border-top:1px solid color-mix(in srgb, var(--border) 72%, transparent);background:color-mix(in srgb, var(--surface-subtle) 48%, transparent);justify-content:space-between;align-items:center;gap:16px;padding:10px 14px;display:flex}.a2ui-approval-summary,.a2ui-resolved{color:var(--text-secondary);font-size:var(--font-size-meta);align-items:center;gap:7px;display:flex}.a2ui-approval-summary svg{color:var(--text-tertiary)}.a2ui-form-actions{justify-content:flex-end;gap:8px;margin-top:2px;display:flex}.a2ui-actions button,.a2ui-form button,.a2ui-layout button{border:1px solid var(--text-primary);min-height:32px;color:var(--surface);background:var(--text-primary);cursor:pointer;font-size:var(--font-size-meta);font-weight:var(--font-weight-medium);border-radius:9px;justify-content:center;align-items:center;gap:6px;padding:6px 12px;display:inline-flex}.a2ui-actions button.secondary{border-color:var(--border);color:var(--text-secondary);background:0 0}.a2ui-actions button:disabled,.a2ui-form button:disabled,.a2ui-layout button:disabled{opacity:.55;cursor:not-allowed}.a2ui-resolved,.a2ui-unsupported{border-top:1px solid var(--border);color:var(--text-tertiary);font-size:var(--font-size-caption);padding:10px 16px}.pcm-policy-card{border:1px solid var(--border);background:var(--surface-subtle);border-radius:12px;margin-top:18px}.pcm-policy-card>summary{cursor:pointer;align-items:center;min-height:56px;padding:10px 14px;list-style:none;display:flex}.pcm-policy-card>summary::-webkit-details-marker{display:none}.pcm-policy-card>summary span,.pcm-policy-card>summary strong,.pcm-policy-card>summary small{display:block}.pcm-policy-card>summary small{color:var(--text-tertiary);margin-top:3px}.pcm-policy-body{padding:0 14px 14px}.generated-prompt-card{background:var(--surface);margin-top:0}.generated-prompt-card>summary{justify-content:space-between;gap:18px;min-height:72px}.generated-prompt-card>summary span{min-width:0}.generated-prompt-card>summary small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.generated-prompt-card>summary em{color:var(--primary);font-size:var(--font-size-meta);flex:none;font-style:normal}.generated-prompt-card>summary em:after{content:"展开编辑"}.generated-prompt-card[open]>summary em:after{content:"收起编辑"}.generated-prompt-body{border-top:1px solid var(--border);padding-top:14px}.behavior-design-review{border:1px solid var(--border-card);background:var(--surface);border-radius:12px;gap:12px;padding:16px;display:grid}.behavior-design-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.behavior-design-heading strong,.behavior-design-heading p{margin:0;display:block}.behavior-design-heading p{color:var(--text-tertiary);font-size:var(--font-size-meta);margin-top:4px}.behavior-summary-main{background:var(--primary-soft);border-radius:10px;padding:14px}.behavior-summary-main>span{color:var(--text-tertiary);font-size:var(--font-size-caption);font-weight:var(--font-weight-semibold);margin-bottom:6px;display:block}.behavior-summary-main strong{color:var(--text-primary);line-height:var(--line-height-code-compact);margin:0;display:block}.behavior-boundary-summary{border:1px solid var(--border);background:var(--surface-subtle);border-radius:10px;align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.behavior-boundary-summary>svg{color:var(--success);flex:none;margin-top:2px}.behavior-boundary-summary strong,.behavior-boundary-summary p{margin:0;display:block}.behavior-boundary-summary p,.behavior-boundary-summary ul{color:var(--text-secondary);font-size:var(--font-size-meta);line-height:var(--line-height-caption);margin-top:4px}.behavior-boundary-summary ul{gap:4px;margin-bottom:0;padding-left:18px;display:grid}.pcm-memory-toggle{border:1px solid var(--border-card);background:var(--surface);border-radius:10px;align-items:flex-start;gap:10px;margin:14px 0;padding:12px;display:flex}.pcm-memory-toggle input{margin-top:3px}.pcm-memory-toggle span,.pcm-memory-toggle strong,.pcm-memory-toggle small{display:block}.pcm-memory-toggle small{color:var(--text-tertiary);line-height:var(--line-height-caption);margin-top:3px}.agent-policy-editor{border:1px solid var(--border-card);background:var(--surface-subtle);border-radius:12px;gap:16px;min-width:0;margin:0;padding:16px;display:grid}.agent-policy-editor>legend{color:var(--text-primary);font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);padding:0 6px}.agent-policy-editor .pcm-memory-toggle{margin:0}.agent-policy-fields{gap:16px;min-width:0;display:grid}.source-provenance{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;min-width:0;display:grid}.source-provenance>span{border:1px solid var(--border);background:var(--surface);border-radius:9px;gap:4px;min-width:0;padding:10px 12px;display:grid}.source-provenance strong{color:var(--text-tertiary);font-size:var(--font-size-caption)}.source-provenance code{color:var(--text-secondary);font-size:var(--font-size-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.agent-policy-note{color:var(--text-tertiary);font-size:var(--font-size-meta);line-height:var(--line-height-caption);margin:-4px 0 0}.inline-checkbox-control{border:1px solid var(--border);background:var(--surface);border-radius:8px;align-items:center;gap:9px;min-height:40px;padding:0 12px;display:flex}.inline-checkbox-control input{flex:none}.inline-checkbox-control span{min-width:0;color:var(--text-secondary);font-size:var(--font-size-meta)}@media (width<=840px){.source-provenance{grid-template-columns:1fr}}.pcm-review-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.pcm-review-summary span{color:var(--text-tertiary);background:var(--surface-subtle);border-radius:9px;padding:10px 12px}.pcm-review-summary strong{color:var(--text-primary);margin-top:4px;display:block}@keyframes text-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.text-shimmer{background:linear-gradient(90deg, var(--text-tertiary) 0%, var(--text-tertiary) 35%, var(--text-primary) 50%, var(--text-tertiary) 65%, var(--text-tertiary) 100%);color:#0000;background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:2.4s linear infinite text-shimmer;display:inline-block}@media (prefers-reduced-motion:reduce){.text-shimmer{color:var(--text-tertiary);background:0 0;-webkit-background-clip:unset;background-clip:unset;animation:none}}.authoring-stage-hint{font-size:var(--font-size-caption);line-height:var(--line-height-caption);margin:4px 0 0}.authoring-stage{align-items:baseline;gap:var(--spacing-2,8px);flex-wrap:wrap;display:flex}.authoring-stage-elapsed{color:var(--text-tertiary);font-size:var(--font-size-caption,12px);font-variant-numeric:tabular-nums}.authoring-stage-tip{color:var(--text-tertiary);font-size:var(--font-size-caption,12px);line-height:var(--line-height-caption,1.5);flex-basis:100%}.plugins-page{max-width:1480px}.plugins-intro,.plugins-hosts,.plugin-discovery-grid,.plugin-discovery-source,.plugin-marketplace-row{display:flex}.plugins-intro{justify-content:space-between;align-items:flex-start;gap:20px;margin:4px 0 20px}.plugins-intro h2,.plugins-intro p{margin:0}.plugins-intro h2{color:var(--text-primary);font-size:var(--font-size-title)}.plugins-intro p{max-width:680px;color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:5px}.plugins-hosts{flex-wrap:wrap;flex:none;justify-content:flex-end;gap:7px}.plugin-install-panel{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);grid-template-columns:minmax(260px,.7fr) minmax(360px,1.3fr);align-items:center;gap:18px 28px;padding:18px 20px;display:grid}.plugin-install-copy,.plugin-source-form,.plugin-validation-title,.plugin-validation-result,.plugin-status-note,.plugin-detail-header,.plugin-detail-actions,.plugin-state,.plugin-bound-count{align-items:center;display:flex}.plugin-install-copy{gap:12px;min-width:0}.plugin-section-icon,.plugin-mark{border:1px solid color-mix(in srgb, var(--accent) 24%, var(--border));width:32px;height:32px;color:var(--accent-strong);background:var(--accent-soft);border-radius:9px;flex:none;justify-content:center;align-items:center;display:inline-flex}.plugin-mark.large{border-radius:10px;width:38px;height:38px}.plugin-avatar{color:#315fcd;background:linear-gradient(145deg,#eaf1ff,#dfeafe);border-radius:11px;flex:none;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.plugin-avatar[data-ecosystem=codex]{color:#6d49b8;background:linear-gradient(145deg,#f2edff,#e7ddff)}.plugin-avatar.large{border-radius:13px;width:42px;height:42px}.plugin-install-copy h2,.plugin-install-copy p,.plugin-detail-header h2,.plugin-detail-header p{margin:0}.plugin-install-copy h2,.plugin-detail-header h2{color:var(--text-primary);font-size:var(--font-size-body);line-height:var(--line-height-body)}.plugin-install-copy p,.plugin-detail-header p{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:3px}.plugin-source-form{gap:10px;min-width:0}.plugin-source-form input{min-width:0;font-family:var(--font-mono)}.plugin-source-form .button{flex:none}.plugin-validation-result{border:1px solid color-mix(in srgb, var(--success) 28%, var(--border));border-radius:var(--radius-control);background:color-mix(in srgb, var(--success-soft) 60%, var(--surface));grid-column:1/-1;gap:14px;min-width:0;padding:12px 14px}.plugin-validation-title{color:var(--success);flex:none;gap:7px}.plugin-validation-title strong{color:var(--text-primary)}.plugin-validation-title span,.plugin-validation-facts{color:var(--text-tertiary);font-size:var(--font-size-caption)}.plugin-validation-facts{flex-wrap:wrap;flex:auto;gap:5px 14px;min-width:0;display:flex}.plugin-validation-result>.button{flex:none}.plugin-status-note{color:var(--text-tertiary);font-size:var(--font-size-caption);gap:8px;margin:14px 2px}.plugin-status-note svg{color:var(--accent-strong);flex:none}.plugin-status-note strong{color:var(--text-secondary)}.codex-plugin-catalog{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);gap:12px;margin-top:14px;padding:16px 18px;display:grid}.plugin-discovery{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);gap:16px;margin-top:22px;padding:20px;display:grid}.plugin-discovery>.section-heading{margin:0}.plugin-discovery-grid{align-items:stretch;gap:16px}.plugin-discovery-source{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-subtle);flex-direction:column;flex:1 1 0;gap:12px;min-width:0;padding:16px}.plugin-discovery-source>div:first-child{gap:3px;display:grid}.plugin-discovery-source strong{color:var(--text-primary);font-size:var(--font-size-body)}.plugin-discovery-source span,.plugin-discovery-empty{color:var(--text-tertiary);font-size:var(--font-size-caption)}.plugin-discovery-empty{margin:2px 0}.plugin-marketplace-list{gap:6px;display:grid}.plugin-marketplace-row{border:1px solid var(--border);background:var(--surface);border-radius:8px;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px;display:grid}.plugin-marketplace-row>span:nth-child(2){gap:2px;min-width:0;display:grid}.plugin-marketplace-row small{color:var(--text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-caption);overflow:hidden}.plugin-marketplace-row em{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-caption);font-style:normal;overflow:hidden}.codex-plugin-catalog>.section-heading{margin:0}.plugin-bridge-badge{color:var(--text-tertiary);background:var(--surface-subtle);font-size:var(--font-size-caption);border-radius:999px;align-self:start;padding:4px 8px}.plugin-bridge-badge[data-state=available]{color:var(--success);background:var(--success-soft)}.codex-risk-confirmation{border:1px solid color-mix(in srgb, var(--warning) 48%, var(--border));border-radius:var(--radius-control);color:var(--text-secondary);background:color-mix(in srgb, var(--warning-soft) 68%, var(--surface));font-size:var(--font-size-caption);cursor:pointer;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px 14px;display:grid}.codex-risk-confirmation input{width:17px;height:17px;accent-color:var(--accent)}.codex-risk-confirmation>svg{color:var(--warning)}.codex-risk-confirmation>span{gap:2px;display:grid}.codex-risk-confirmation strong{color:var(--text-primary);font-size:var(--font-size-meta)}.codex-risk-confirmation small{color:var(--text-secondary);font-size:var(--font-size-caption)}.codex-risk-confirmation em{color:var(--warning);background:var(--surface);font-style:normal;font-weight:var(--font-weight-semibold);white-space:nowrap;border-radius:999px;padding:4px 8px}.codex-risk-confirmation.accepted{border-color:color-mix(in srgb, var(--success) 48%, var(--border));background:color-mix(in srgb, var(--success-soft) 68%, var(--surface))}.codex-risk-confirmation.accepted>svg,.codex-risk-confirmation.accepted em{color:var(--success)}.codex-plugin-catalog-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.codex-plugin-catalog-item{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-subtle);grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;padding:10px 12px;display:grid}button.codex-plugin-catalog-item{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer}button.codex-plugin-catalog-item:hover{border-color:var(--border-strong);background:var(--surface-hover)}.plugin-risk-disclosure{border:1px solid color-mix(in srgb, var(--warning) 30%, var(--border));border-radius:var(--radius-control);color:var(--text-secondary);background:color-mix(in srgb, var(--warning-soft) 45%, var(--surface));font-size:var(--font-size-caption);gap:3px;padding:10px 12px;display:grid}.plugins-workspace{grid-template-columns:minmax(420px,.95fr) minmax(360px,1.05fr);align-items:start;gap:20px;display:grid}.plugin-list-panel,.plugin-detail-panel{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);min-width:0}.plugin-list-panel{overflow:hidden}.plugin-list-panel>.section-heading{border-bottom:1px solid var(--border);margin:0;padding:17px 18px 13px}.plugin-list{display:grid}.plugin-list-item{border:0;border-bottom:1px solid var(--border);width:100%;min-height:74px;color:var(--text-secondary);text-align:left;cursor:pointer;background:0 0;border-radius:0;grid-template-columns:36px minmax(0,1fr) auto;align-items:start;gap:11px;padding:13px 14px;transition:background .14s,box-shadow .14s;display:grid}.plugin-list-item.selected{background:var(--accent-soft)}.plugin-list-empty{min-height:190px;color:var(--text-tertiary);font-size:var(--font-size-caption);place-items:center;gap:8px;display:grid}.plugin-list-item .plugin-state{align-self:center}.plugin-list-item:last-child{border-bottom:0}.plugin-list-item:hover{background:var(--surface-hover)}.plugin-list-item[aria-current=true]{background:color-mix(in srgb, var(--accent-soft) 44%, var(--surface));box-shadow:inset 2px 0 0 var(--accent)}.plugin-list-item:focus-visible{z-index:1;outline:2px solid var(--focus-ring);outline-offset:-2px;position:relative}.plugin-list-identity{gap:3px;min-width:0;display:grid}.plugin-list-identity strong,.plugin-list-identity small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.plugin-list-identity strong{color:var(--text-primary);font-size:var(--font-size-meta)}.plugin-list-identity small{color:var(--text-tertiary);font-size:var(--font-size-caption)}.plugin-list-identity em{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-caption);font-style:normal;overflow:hidden}.plugin-detail-summary{color:var(--text-secondary);line-height:var(--line-height-control);margin:0}.plugin-technical-details{border-top:1px solid var(--border);margin-top:auto;padding-top:14px}.plugin-technical-details summary{color:var(--text-tertiary);font-size:var(--font-size-caption);cursor:pointer}.plugin-technical-details dl{gap:7px;margin:10px 0 0;display:grid}.plugin-technical-details dl>div{grid-template-columns:86px minmax(0,1fr);gap:10px;display:grid}.plugin-technical-details dt{color:var(--text-tertiary);font-size:var(--font-size-caption)}.plugin-technical-details dd{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono);font-size:var(--font-size-caption);margin:0;overflow:hidden}.plugin-state{min-height:24px;font-size:var(--font-size-caption);white-space:nowrap;border-radius:999px;gap:5px;padding:3px 8px}.plugin-state[data-state=enabled]{color:var(--success);background:var(--success-soft)}.plugin-state[data-state=disabled]{color:var(--text-tertiary);background:var(--surface-subtle)}.plugin-bound-count{color:var(--text-tertiary);font-size:var(--font-size-caption);font-variant-numeric:tabular-nums;justify-content:flex-end;gap:4px}.plugin-list-empty,.plugin-detail-empty{min-height:220px;color:var(--text-tertiary);text-align:center;font-size:var(--font-size-caption);flex-direction:column;justify-content:center;align-items:center;gap:7px;padding:28px;display:flex}.plugin-list-empty strong,.plugin-detail-empty strong{color:var(--text-secondary);font-size:var(--font-size-meta)}.plugin-detail-panel{padding:20px}.plugin-detail-header{gap:12px}.plugin-detail-header>div{min-width:0}.plugin-detail-header>.plugin-state{margin-left:auto}.plugin-detail-header h2,.plugin-detail-header p{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.plugin-detail-actions{border-bottom:1px solid var(--border);justify-content:flex-end;gap:8px;margin-top:18px;padding-bottom:18px}.plugin-update-panel{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-subtle);gap:11px;margin-top:16px;padding:14px;display:grid}.plugin-update-heading h3,.plugin-update-heading p{margin:0}.plugin-update-heading h3{color:var(--text-primary);font-size:var(--font-size-meta)}.plugin-update-heading p{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:3px}.plugin-update-preview{border-top:1px solid var(--border);gap:10px;padding-top:10px;display:grid}.plugin-update-version{color:var(--text-tertiary);font-size:var(--font-size-caption);align-items:center;gap:8px;display:flex}.plugin-update-version strong{color:var(--text-secondary);font-family:var(--font-mono)}.plugin-permission-approval{border:1px solid color-mix(in srgb, var(--warning) 30%, var(--border));background:color-mix(in srgb, var(--warning-soft) 45%, var(--surface));border-radius:8px;gap:7px;margin:0;padding:10px 12px;display:grid}.plugin-permission-approval legend{color:var(--text-secondary);font-size:var(--font-size-caption);padding:0 4px}.plugin-permission-approval label{color:var(--text-secondary);font-size:var(--font-size-caption);align-items:flex-start;gap:8px;display:flex}.plugin-permission-approval input{width:15px;height:15px;margin-top:1px}.plugin-update-preview>.button{justify-self:end}.button.subtle-danger{border-color:color-mix(in srgb, var(--danger) 22%, var(--border))}.plugin-fact-grid{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--border);grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;margin:18px 0 0;display:grid;overflow:hidden}.plugin-fact-grid>div{background:var(--surface-subtle);min-width:0;padding:11px 12px}.plugin-fact-grid dt,.plugin-compatibility-list dt{color:var(--text-tertiary);font-size:var(--font-size-caption)}.plugin-fact-grid dd,.plugin-compatibility-list dd{overflow-wrap:anywhere;color:var(--text-secondary);font-size:var(--font-size-meta);margin:4px 0 0}.plugin-fact-grid dd[data-state=running]{color:var(--success)}.plugin-fact-grid dd[data-state=failed]{color:var(--danger)}.plugin-detail-section{padding-top:18px}.plugin-detail-section h3{color:var(--text-primary);font-size:var(--font-size-meta);margin:0 0 9px}.plugin-chip-list{flex-wrap:wrap;gap:6px;display:flex}.plugin-chip{border:1px solid var(--border);max-width:100%;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;background:var(--surface-subtle);font-family:var(--font-mono);font-size:var(--font-size-caption);border-radius:999px;padding:4px 8px;overflow:hidden}.plugin-compatibility-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px;margin:0;display:grid}.plugin-compatibility-list>div{background:var(--surface-subtle);border-radius:8px;min-width:0;padding:9px 10px}.plugin-binding-list{gap:5px;margin:0;padding:0;list-style:none;display:grid}.plugin-binding-list li{border:1px solid var(--border);color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono);font-size:var(--font-size-caption);border-radius:7px;padding:7px 9px;overflow:hidden}.plugin-detail-muted{color:var(--text-tertiary);font-size:var(--font-size-caption);margin:0}.plugin-marketplace{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);gap:18px;margin-top:22px;padding:22px;display:grid}.plugin-marketplace-heading{justify-content:space-between;align-items:flex-end;gap:24px;display:flex}.plugin-marketplace-heading h2,.plugin-marketplace-heading p,.plugin-category h3,.plugin-source-install strong,.plugin-source-install span,.plugin-source-install small{margin:0}.plugin-marketplace-heading h2{color:var(--text-primary);font-size:var(--font-size-title)}.plugin-marketplace-heading p{color:var(--text-tertiary);font-size:var(--font-size-caption);gap:2px;margin-top:4px;display:grid}.plugin-marketplace-heading p small{color:var(--text-tertiary);font-size:inherit}.plugin-search{border:1px solid var(--border);min-width:260px;height:38px;color:var(--text-tertiary);background:var(--surface-subtle);border-radius:999px;flex:0 420px;align-items:center;gap:8px;padding:0 12px;display:flex}.plugin-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--focus-ring-soft);background:var(--surface)}.plugin-search input{min-width:0;height:auto;box-shadow:none;background:0 0;border:0;outline:0;padding:0}.plugin-marketplace-tabs{background:var(--surface-subtle);border-radius:10px;gap:4px;width:fit-content;padding:3px;display:flex}.plugin-marketplace-tabs button{min-height:32px;color:var(--text-tertiary);font:inherit;font-size:var(--font-size-caption);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:0 13px}.plugin-marketplace-tabs button[aria-selected=true]{color:var(--text-primary);background:var(--surface);box-shadow:0 1px 3px #0f172a14}.plugin-dsh-market{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-subtle);gap:16px;max-width:920px;padding:20px;display:grid}.plugin-dsh-market-copy{align-items:center;gap:12px;display:flex}.plugin-dsh-market-copy strong,.plugin-dsh-market-copy p{margin:0}.plugin-dsh-market-copy strong{color:var(--text-primary);font-size:var(--font-size-meta)}.plugin-dsh-market-copy p{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:3px}.plugin-marketplace-loading{min-height:180px;color:var(--text-tertiary);font-size:var(--font-size-caption);justify-content:center;align-items:center;gap:9px;display:flex}.plugin-category-list{gap:26px;display:grid}.plugin-category{gap:10px;display:grid}.plugin-category h3{border-bottom:1px solid var(--border);color:var(--text-secondary);font-size:var(--font-size-meta);padding-bottom:8px}.plugin-category .plugin-marketplace-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 24px}.plugin-category .plugin-marketplace-row{border:0;border-bottom:1px solid color-mix(in srgb, var(--border) 72%, transparent);border-radius:0;min-height:62px;padding:9px 4px}.plugin-category .plugin-marketplace-row:hover{background:var(--surface-hover)}.plugin-source-install{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);grid-template-columns:minmax(260px,.72fr) minmax(420px,1.28fr);align-items:center;gap:24px;margin-top:18px;padding:18px 20px;display:grid}.plugin-source-install>div:first-child,.plugin-source-controls{gap:5px;min-width:0;display:grid}.plugin-source-install strong{color:var(--text-primary);font-size:var(--font-size-meta)}.plugin-source-install span,.plugin-source-install small,.plugin-source-confirmation{color:var(--text-tertiary);font-size:var(--font-size-caption)}.plugin-source-confirmation{align-items:center;gap:7px;display:flex}.plugin-source-confirmation input{width:15px;height:15px}@media (width<=1120px){.plugin-install-panel,.plugins-workspace,.plugin-source-install{grid-template-columns:1fr}.plugin-detail-panel{min-height:0}.codex-plugin-catalog-list{grid-template-columns:1fr}.plugin-discovery-grid{flex-direction:column}.plugin-category .plugin-marketplace-list{grid-template-columns:1fr}}@media (width<=720px){.plugins-intro{flex-direction:column;align-items:flex-start}.plugin-marketplace-heading{flex-direction:column;align-items:stretch}.plugin-search{flex-basis:auto;width:100%;min-width:0}.plugin-marketplace{padding:16px}.plugins-hosts{justify-content:flex-start}.plugin-install-panel{padding:16px}.plugin-source-form,.plugin-validation-result{flex-direction:column;align-items:stretch}.plugin-validation-title{flex-wrap:wrap}.plugin-list-item{grid-template-columns:32px minmax(0,1fr) auto}.plugin-bound-count{display:none}.plugin-detail-panel{padding:16px}.plugin-fact-grid,.plugin-compatibility-list{grid-template-columns:repeat(2,minmax(0,1fr))}}:root.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--canvas:#141922;--sidebar:#171d28;--surface:#1d2532;--surface-subtle:#242e3d;--surface-raised:#222c3a;--surface-sunken:#151c27;--surface-hover:#2a3648;--hover:#2a3648;--selected:#253d5e;--text:#edf3fa;--text-primary:#edf3fa;--text-label:#dce6f1;--text-secondary:#bcc8d6;--text-tertiary:#91a2b6;--text-faint:#718398;--text-disabled:#687b91;--border:#323e50;--border-card:#39475a;--border-strong:#46566c;--accent:#78aaf2;--accent-strong:#a5c9fb;--accent-soft:#233b5b;--accent-hover:#2a4a70;--accent-active:#325983;--accent-border:#4773a5;--button-primary-bg:#5d9ef1;--button-primary-bg-hover:#70acf5;--button-primary-bg-active:#4a89df;--button-primary-text:#fff;--success:#78c7a8;--success-soft:#203a33;--info:#8eb9e5;--info-soft:#23394f;--warning:#e4bf76;--warning-text:#f0cb82;--warning-soft:#413722;--edge:#78c7a8;--edge-soft:#203a33;--edge-border:#326b58;--cloud:#78aaf2;--cloud-soft:#233b5b;--cloud-border:#3b6798;--route:#e4bf76;--route-soft:#413722;--danger:#f09a90;--danger-soft:#4a2b29;--code-bg:#17202c;--code-text:#d8e2ee;--code-token-comment:#8393a8;--code-token-punctuation:#aebac8;--code-token-property:#8fc1d8;--code-token-number:#e1b46d;--code-token-string:#84c8a6;--code-token-operator:#b7c3cf;--code-token-keyword:#c89bdc;--code-token-function:#86b9ed;--code-token-class:#e39db9;--code-token-variable:#dfbd7a;--shadow-overlay:0 24px 56px #00000061;--shadow-focus:0 0 0 3px #78aaf23d;--shadow-focus-subtle:0 0 0 3px #78aaf22e;--shadow-control:0 1px 2px #0000004d, 0 1px 3px #00000038;--shadow-toast:0 16px 38px #00000057}:root.dark .sidebar-footer,:root.dark .global-header,:root.dark .wizard-actions{background:#171d28f0}:root.dark tbody tr:hover{background:var(--hover)}:root.dark input:hover,:root.dark textarea:hover,:root.dark select:hover{border-color:var(--border-strong)}:root.dark .quick-create-form,:root.dark .manifest-preview{box-shadow:0 1px 2px #0000003d}.appearance-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.appearance-option{border:1px solid var(--border);border-radius:var(--radius-surface);background:var(--surface);cursor:pointer;min-width:0;min-height:76px;transition:border-color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px;display:grid}.appearance-option:hover{border-color:var(--border-strong);background:var(--hover)}.appearance-option.selected{border-color:var(--accent-border);background:var(--accent-soft)}.appearance-option>svg{width:18px;height:18px;color:var(--accent)}.appearance-option>span{min-width:0}.appearance-option strong,.appearance-option small{display:block}.appearance-option strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.appearance-option small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.appearance-option input{width:16px;height:16px;accent-color:var(--accent);margin:0}.appearance-note{color:var(--text-tertiary);font-size:var(--font-size-caption);margin:10px 0 0}@media (width<=1023px){.appearance-options{grid-template-columns:minmax(0,1fr)}.appearance-option{min-height:58px}}html,body{width:100%;min-width:0;max-width:100%}body{overflow-x:hidden}.app-shell{--studio-app-rail:60px;--studio-content-gutter:40px;--studio-page-max:1760px;--studio-workbench-max:1360px;width:100%;min-width:0}.app-shell .sidebar{width:var(--studio-app-rail)}.app-shell main,.app-shell .page-container{min-width:0}.app-shell .page-container{width:min(100%, var(--studio-page-max));padding-inline:var(--studio-content-gutter);margin-inline:auto}.app-shell .page-container[data-layout=document],.app-shell .page-container[data-layout=workbench],.app-shell .page-container[data-layout=data]{max-width:var(--studio-page-max)}.app-shell .resources-page .actions-column,.app-shell .agents-page .actions-column{width:108px}@media (width<=1180px){.app-shell .resources-page .resource-source-column,.app-shell .resources-page .resource-detail-column,.app-shell .agents-page .agent-capabilities-column,.app-shell .agents-page .agent-revision-column{display:none}.app-shell .resources-page .studio-data-table table,.app-shell .agents-page .studio-data-table table{table-layout:fixed;width:100%;min-width:0!important}.app-shell .resources-page .resource-name-column{width:31%}.app-shell .resources-page .resource-capability-column{width:43%}.app-shell .resources-page .resource-status-column{width:15%}.app-shell .agents-page .agent-name-column{width:46%}.app-shell .agents-page .agent-runtime-column,.app-shell .agents-page .agent-build-column{width:20%}.app-shell .resources-page .studio-data-table td,.app-shell .resources-page .studio-data-table th,.app-shell .agents-page .studio-data-table td,.app-shell .agents-page .studio-data-table th{padding-inline:10px}}.app-shell .data-scroll-region{overscroll-behavior-inline:contain;min-width:0;max-width:100%;overflow-x:auto}.app-shell .data-scroll-region>table{min-width:720px}.app-shell .runtime-overview-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.app-shell[data-rail=compact] .product-copy,.app-shell[data-rail=compact] .preview-label,.app-shell[data-rail=compact] .workspace-copy,.app-shell[data-rail=compact] .workspace-chevron,.app-shell[data-rail=compact] .nav-label,.app-shell[data-rail=compact] .nav-item>span,.app-shell[data-rail=compact] .user-copy{display:none}.app-shell[data-rail=compact] .product{justify-content:center;padding-inline:0}.app-shell[data-rail=compact] .workspace-switcher,.app-shell[data-rail=compact] .nav-item{justify-content:center;width:44px;margin-inline:8px;padding-inline:0}.app-shell[data-rail=compact] .sidebar-footer{flex-direction:column;justify-content:center;padding-inline:8px}.compact-create-rail-trigger{display:none}.app-shell[data-view=conversations]{height:100dvh;min-height:0;overflow:hidden}.app-shell[data-view=conversations] .app-main{grid-template-rows:64px minmax(0,1fr);height:100%;min-height:0;display:grid}.app-shell[data-view=conversations] #mainContent,.app-shell[data-view=conversations] .chat-wrap{height:100%}.app-shell[data-view=conversations] main,.app-shell[data-view=conversations] .chat-wrap,.app-shell[data-view=conversations] .chat-host{min-height:0;overflow:hidden}.create-shell[data-scroll-mode=workbench]{height:calc(100dvh - 64px);min-height:0;overflow:hidden}.create-shell[data-scroll-mode=workbench] .create-header{height:104px;min-height:0}.create-shell[data-scroll-mode=workbench] .create-workbench{height:calc(100% - 104px);min-height:0}.create-shell[data-scroll-mode=workbench] .create-rail,.create-shell[data-scroll-mode=workbench] .create-stage,.create-shell[data-scroll-mode=workbench] .authoring-mode-panel,.create-shell[data-scroll-mode=workbench] .conversation-authoring-layout,.create-shell[data-scroll-mode=workbench] .authoring-chat-column,.create-shell[data-scroll-mode=workbench] .authoring-inspection-card{min-height:0}.create-shell[data-scroll-mode=workbench] .create-rail{height:100%;position:relative;top:auto;overflow-y:auto}.create-shell[data-scroll-mode=workbench] .create-stage{height:100%;overflow:hidden}.create-shell[data-scroll-mode=workbench] .authoring-mode-panel{flex-direction:column;height:100%;display:flex;overflow:hidden}.create-shell[data-scroll-mode=workbench] .authoring-panel-heading{flex:none}.create-shell[data-scroll-mode=workbench] .conversation-authoring-layout{flex:1;overflow:hidden}.create-shell[data-scroll-mode=workbench] .authoring-chat-column{grid-template-rows:minmax(0,1fr) auto auto auto;overflow:hidden}.create-shell[data-scroll-mode=workbench] .authoring-transcript,.create-shell[data-scroll-mode=workbench] .authoring-inspection-card{overflow-y:auto}.create-shell[data-scroll-mode=workbench] .authoring-inspection-card>.button:last-child{box-shadow:0 -8px 16px var(--surface);position:sticky;bottom:0}.create-shell[data-scroll-mode=document]{min-height:calc(100dvh - 64px);overflow:visible}.app-shell .page-container[data-layout=data][data-scroll-mode=data]{flex-direction:column;height:calc(100dvh - 64px);min-height:0;display:flex;overflow:hidden}.app-shell .page-container[data-layout=data]>.page-header{flex:none}.app-shell .data-page-body{overscroll-behavior-block:contain;scrollbar-gutter:stable;flex:1;min-height:0;overflow-y:auto}.app-shell .data-page-body.table-data-body{flex-direction:column;display:flex;overflow:hidden}.app-shell .table-data-body>.overview-strip,.app-shell .table-data-body>.section-toolbar{flex:none}.app-shell .table-data-body>.content-section{flex-direction:column;flex:1;min-height:0;display:flex}.app-shell .table-data-body .content-section>.section-toolbar{flex:none}.app-shell .table-data-body .studio-data-table{flex-direction:column;flex:1;min-height:0;display:flex}.app-shell .table-data-body .studio-data-table-scroll{flex:1;min-height:0}.app-shell .table-data-body .data-scroll-region{overscroll-behavior:contain;flex:1;min-height:0;overflow:auto}.app-shell .table-data-body .data-scroll-region thead th{z-index:4;box-shadow:inset 0 -1px var(--border);position:sticky;top:0}.app-shell .data-page-body .section-toolbar,.app-shell .data-page-body .trace-toolbar{z-index:12;background:var(--surface-subtle);position:sticky;top:0}.app-shell .observability-page[data-scroll-mode=workbench]{flex-direction:column;height:calc(100dvh - 64px);min-height:0;padding-block:24px;display:flex;overflow:hidden}.app-shell .observability-page[data-scroll-mode=workbench] .observability-overview{flex:none;display:grid}.app-shell .observability-page[data-scroll-mode=workbench] .observability-body{scrollbar-gutter:stable;flex:1;min-height:0;display:block;overflow-y:auto}.app-shell .observability-page[data-scroll-mode=workbench] .trace-workbench{height:clamp(620px,100dvh - 180px,760px);min-height:620px;overflow:hidden}.app-shell .trace-workbench.detail-route{grid-template-columns:minmax(420px,1.22fr) minmax(340px,.78fr)}.app-shell .trace-workbench.detail-route.detail-collapsed,.app-shell .trace-workbench.detail-route.detail-expanded{grid-template-columns:minmax(0,1fr)}.app-shell .observability-page[data-scroll-mode=workbench] .trace-list,.app-shell .observability-page[data-scroll-mode=workbench] .trace-span-tree,.app-shell .observability-page[data-scroll-mode=workbench] .trace-detail-body{min-height:0;overflow:auto}.overlay .drawer{border-radius:var(--radius-surface);width:min(560px,100vw - 32px);max-height:calc(100dvh - 32px);inset:16px 16px 16px auto;overflow:hidden}.overlay .drawer.wide{width:min(840px,100vw - 32px)}.overlay .drawer.compact{width:min(380px,100vw - 32px)}.overlay .drawer-header,.overlay .drawer-footer{flex:none}.overlay .drawer-body{min-height:0;overflow-y:auto}@media (width<=1023px){.app-shell{--studio-app-rail:60px;--studio-content-gutter:16px}.app-shell .product-copy,.app-shell .preview-label,.app-shell .workspace-copy,.app-shell .workspace-chevron,.app-shell .nav-label,.app-shell .nav-item>span,.app-shell .user-copy,.app-shell .global-context,.app-shell .runtime-state{display:none}.app-shell .product{justify-content:center;padding-inline:0}.app-shell .workspace-switcher,.app-shell .nav-item{justify-content:center;width:44px;margin-inline:8px;padding-inline:0}.app-shell .primary-nav{padding-inline:0}.app-shell .sidebar-footer{flex-direction:column;justify-content:center;padding-inline:8px}.app-shell .global-header{padding-inline:16px}.app-shell .breadcrumb{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.app-shell .page-container{padding-inline:var(--studio-content-gutter)}.app-shell .overview-strip,.app-shell .observability-overview,.app-shell .orchestration-workbench,.app-shell .runtime-resource-groups{grid-template-columns:minmax(0,1fr)}.app-shell .create-header{min-height:104px;padding:16px var(--studio-content-gutter);grid-template-columns:minmax(0,1fr) auto;gap:16px}.app-shell .create-header>.button:first-child,.app-shell .create-header .draft-state{display:none}.app-shell .compact-create-rail-trigger{display:inline-flex}.app-shell .create-workbench{width:100%;min-width:0;display:block}.app-shell .create-stage,.app-shell .authoring-mode-panel,.app-shell .quick-create{width:100%;max-width:none}.app-shell .trace-workbench.detail-route{grid-template-columns:minmax(0,1fr);height:auto;min-height:620px;overflow:visible}.app-shell .trace-workbench.detail-route .trace-span-panel,.app-shell .trace-workbench.detail-route .trace-detail-panel{grid-column:1/-1}.app-shell .trace-workbench.detail-route .trace-detail-panel{border-top:1px solid var(--border);min-height:480px}.skill-preview-layout{grid-template-columns:minmax(0,1fr)}.skill-preview-sidebar{border-right:0;border-bottom:1px solid var(--border);max-height:220px}.markdown-preview-shell{padding-inline:16px}}@media (width>=1024px) and (width<=1439px){.app-shell{--studio-app-rail:60px;--studio-content-gutter:24px}.app-shell .product-copy,.app-shell .preview-label,.app-shell .workspace-copy,.app-shell .workspace-chevron,.app-shell .nav-label,.app-shell .nav-item>span,.app-shell .user-copy,.app-shell .global-context{display:none}.app-shell .product{justify-content:center;padding-inline:0}.app-shell .workspace-switcher,.app-shell .nav-item{justify-content:center;width:44px;margin-inline:8px;padding-inline:0}.app-shell .primary-nav{padding-inline:0}.app-shell .sidebar-footer{flex-direction:column;justify-content:center;padding-inline:8px}.app-shell .overview-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.app-shell .orchestration-workbench{grid-template-columns:minmax(0,1fr)}.app-shell[data-view=create] .create-workbench{grid-template-columns:196px minmax(0,1fr)}.app-shell[data-view=create] .create-header{grid-template-columns:196px minmax(0,1fr) auto}.app-shell[data-view=create] .conversation-authoring-layout,.app-shell[data-view=create] .authoring-inspect-grid{grid-template-columns:minmax(0,1fr)}.app-shell[data-view=create] .create-shell[data-scroll-mode=workbench] .conversation-authoring-layout{grid-template-rows:repeat(2,minmax(0,1fr))}}@media (width>=768px) and (width<=1439px){.app-shell .orchestration-aside{grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr);gap:28px;display:grid}.app-shell .orchestration-aside>.aside-divider{display:none}}@media (width<=1439px){.app-shell .trace-detail-expand{display:inline-flex}.app-shell .trace-workbench.detail-expanded{grid-template-columns:minmax(0,1fr)}.app-shell .trace-workbench.detail-expanded .trace-list-panel,.app-shell .trace-workbench.detail-expanded .trace-span-panel{display:none}.app-shell .trace-workbench.detail-expanded .trace-detail-panel{border-top:0;grid-column:1/-1;min-height:620px;display:flex}.app-shell .orchestration-aside{width:auto;position:static}.app-shell .chat-run-panel{z-index:48;width:min(420px, calc(100vw - var(--studio-app-rail)));height:auto;box-shadow:var(--shadow-overlay);position:fixed;top:64px;bottom:0;right:0}}@media (width>=1024px){.app-shell[data-rail=expanded]{--studio-app-rail:216px}.app-shell[data-rail=expanded] .product-copy,.app-shell[data-rail=expanded] .workspace-copy{display:flex}.app-shell[data-rail=expanded] .nav-label,.app-shell[data-rail=expanded] .nav-item>span{display:inline}.app-shell[data-rail=expanded] .product{justify-content:flex-start;padding-inline:18px}.app-shell[data-rail=expanded] .workspace-switcher,.app-shell[data-rail=expanded] .nav-item{justify-content:flex-start;width:auto;margin-inline:0;padding-inline:13px}.app-shell[data-rail=expanded] .primary-nav{padding-inline:10px}.app-shell[data-rail=expanded] .sidebar-footer{flex-direction:row;justify-content:space-between;padding-inline:12px}}@media (prefers-reduced-motion:reduce){.app-shell .create-rail{transition-duration:0s!important}.overlay .drawer{animation:none!important}}:root{--studio-outline-surface:var(--border-card);--studio-outline-inset:var(--border)}.app-shell{--studio-app-rail:80px;--studio-content-gutter:28px;background:var(--canvas);min-height:100dvh}.navigation-rail{width:var(--studio-app-rail);background:var(--canvas);padding:12px 10px;overflow:hidden}.app-shell[data-rail=expanded]{--studio-app-rail:216px}.navigation-rail .product-mark{background:var(--accent);color:#fff;border-radius:var(--radius-rail);flex:0 0 36px;width:36px;height:36px}.navigation-rail .workspace-mark{flex:0 0 36px;width:36px;height:36px}.navigation-rail .workspace-switcher,.navigation-rail .nav-item,.navigation-rail .icon-button,.navigation-rail .user-avatar{border-radius:var(--radius-rail)}.navigation-rail .workspace-switcher,.navigation-rail .nav-item,.navigation-rail .icon-button{background:0 0}.navigation-rail .nav-item{min-height:48px}.navigation-rail .nav-item svg{flex:0 0 20px;width:20px;height:20px}.navigation-rail .icon-button{width:40px;min-width:40px;height:40px}.navigation-rail .nav-item:hover,.navigation-rail .workspace-switcher:hover,.navigation-rail .icon-button:hover{background:var(--surface)}.navigation-rail .nav-item.active{background:var(--accent-soft);color:var(--accent)}.navigation-rail .nav-label{color:var(--text-faint)}.app-shell[data-rail=compact] .product,.app-shell[data-rail=compact] .workspace-switcher,.app-shell[data-rail=compact] .nav-item{justify-content:center;width:48px;margin-inline:auto;padding-inline:0}.app-shell[data-rail=compact] .nav-item{height:44px;min-height:44px}.app-shell[data-rail=compact] .nav-group+.nav-group{margin-top:6px}.app-shell[data-rail=compact] .primary-nav{padding-inline:0}.app-shell[data-rail=compact] .sidebar-footer{flex-direction:column;gap:6px;height:auto;padding:8px 0 12px}.global-header{background:var(--canvas);min-height:70px;padding:0 28px}.header-identity,.header-identity-inline{min-width:0}.header-identity{gap:1px;line-height:1.2;display:grid}.header-identity-inline{align-items:center;gap:8px;display:flex}.header-identity strong,.header-identity h1,.header-identity-inline strong,.header-identity-inline h1{color:var(--text);font-size:var(--font-size-card-metric);font-weight:600;line-height:inherit;margin:0}.header-identity span,.header-identity-inline span{color:var(--text-tertiary)}.header-actions,#pageHeaderTools,#pageHeaderActions{align-items:center;gap:8px;display:flex}.header-actions{min-width:0;margin-left:auto}.page-header-page-actions{white-space:nowrap;flex:none;min-width:max-content}.page-header-page-actions>*{flex:none}.page-header-page-actions>.tag,.page-header-page-actions>.badge{white-space:nowrap;width:max-content;min-width:max-content}.page-header-tools{flex:440px;min-width:0;max-width:440px}.page-header-tools .header-search-field{flex:220px;width:220px;min-width:140px}.page-header-tools .segmented-control.compact{flex:0 0 176px;grid-template-columns:repeat(2,minmax(0,1fr));width:176px;min-width:176px}.header-agent-selector{flex:0 240px;width:240px;min-width:180px}.header-agent-selector.conversation-target-selector{border-radius:var(--radius-pill);flex:0 248px;width:248px;min-width:220px;max-width:260px;min-height:36px;padding-inline:14px 11px}.header-agent-selector>span:first-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.header-actions>.tag,.header-actions>.badge,.header-actions>.global-refresh-button{white-space:nowrap;flex:none;width:max-content;min-width:max-content}.header-actions>.global-refresh-button{width:34px;min-width:34px}.button:disabled,.icon-button:disabled{cursor:not-allowed;opacity:.48}.app-main,.app-shell main{background:var(--canvas)}.page-container{width:100%;min-width:0;margin:0 auto;padding:10px 28px 28px}.page-container[data-layout=document]{max-width:var(--studio-page-max,1760px);overflow:visible}.page-container[data-layout=workbench]{max-width:var(--studio-page-max,1760px);height:calc(100dvh - 70px);min-height:0;overflow:hidden}.block,.table-section,.trace-list-page,.authoring-mode-panel,.wizard-content,.agent-editor,.empty-state{border-radius:var(--radius-block);background:var(--surface)}:where(.block:not(.runtime-resource-group),.table-section,.trace-list-page,.wizard-content,.agent-editor,.authoring-mode-panel,.studio-data-table,.stat-strip>*,.page-tabs,.chat-session-sidebar,.chat-conversation,.chat-run-panel,.trace-run-panel,.trace-span-panel,.trace-detail-panel,.studio-dialog,.drawer,.data-page-body>.empty-state){outline:1px solid var(--studio-outline-surface);outline-offset:-1px}:where(.authoring-chat-column,.authoring-input-card,.authoring-inspection-card,.pipeline-node-card,.capability-empty-state,.code-viewer,.a2ui-surface,.appearance-option,.orchestration-graph .react-flow__controls,.more-actions-menu,.studio-select-content,.studio-multi-select-popover,.composer-action-menu,.composer-command-menu,.studio-tooltip){outline:1px solid var(--studio-outline-inset);outline-offset:-1px}.trace-list-page>.studio-data-table,.agents-catalog-section>.studio-data-table,.runtime-resource-group,.skill-preview-content>.code-viewer{outline:0}.block-head,.section-heading,.authoring-panel-heading,.trace-panel-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.panel-heading{justify-content:flex-start;align-items:flex-start;gap:12px;display:flex}.button,.icon-button,button,input,textarea,select{border-radius:var(--radius-control)}.button,.icon-button{min-height:34px}.button:not(.accent),.icon-button,.segmented-control,.search-field{background:var(--surface)}:where(.button:not(.accent):not(.tertiary),.icon-button.secondary,.global-header .icon-button,.block>.icon-button,.segmented-control){outline:1px solid var(--studio-outline-inset);outline-offset:-1px}.navigation-rail .icon-button{outline:0}:where(.button:not(.accent):not(.tertiary),.icon-button.secondary,.global-header .icon-button,.block>.icon-button,.segmented-control button):focus-visible{outline:2px solid color-mix(in oklab, var(--accent) 55%, transparent);outline-offset:2px}:where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),textarea,select),:is(.studio-select-trigger,.studio-multi-select-trigger){background:var(--surface-sunken);outline:1px solid color-mix(in srgb, var(--border-strong) 72%, transparent);outline-offset:-1px;transition:color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease), outline-color var(--motion-fast) var(--ease)}:where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),textarea,select):hover:not(:disabled),:is(.studio-select-trigger,.studio-multi-select-trigger):hover:not(:disabled){background:var(--surface-hover)}:is(input,textarea,select):focus,.studio-select-trigger:focus-visible,.studio-select-trigger[data-state=open],.studio-multi-select-trigger:focus-visible,.studio-multi-select-trigger[aria-expanded=true]{outline:2px solid color-mix(in srgb, var(--accent) 62%, transparent);outline-offset:-2px;background:var(--surface)}.search-field{background:var(--surface-sunken);outline:1px solid color-mix(in srgb, var(--border-strong) 72%, transparent);outline-offset:-1px;transition:background var(--motion-fast) var(--ease), outline-color var(--motion-fast) var(--ease)}.search-field:hover{background:var(--surface-hover)}.search-field:focus-within{background:var(--surface);outline:2px solid color-mix(in srgb, var(--accent) 62%, transparent);outline-offset:-2px}.search-field input,.search-field input:hover,.search-field input:focus{background:0 0;outline:0}.studio-form-field.has-error :is(input,textarea,button[role=combobox],.studio-multi-select-trigger){outline:1px solid var(--danger);outline-offset:-1px}.studio-form-field+.studio-form-field,.studio-form-field+.form-grid,.form-grid+.studio-form-field,.field+.field{margin-top:22px}.block .button:not(.accent),.block .icon-button,.table-section .button:not(.accent),.table-section .icon-button{background:var(--surface-subtle)}.button.accent{background:var(--button-primary-bg);color:var(--button-primary-text)}.button.accent:hover:not(:disabled){background:var(--button-primary-bg-hover);color:var(--button-primary-text)}.button.accent:active:not(:disabled){background:var(--button-primary-bg-active);color:var(--button-primary-text)}.button.danger,.danger{color:var(--danger)}.tag,.badge{border-radius:var(--radius-chip);background:var(--surface-subtle);min-height:24px;color:var(--text-secondary);font-size:var(--font-size-caption);align-items:center;gap:6px;padding:3px 9px;font-weight:500;display:inline-flex}.badge[data-state=ready],.badge[data-state=success]{background:var(--success-soft);color:var(--success-deep)}.badge[data-state=pending],.badge[data-state=running],.badge[data-state=warning]{background:var(--warning-soft);color:var(--warning-deep)}.badge[data-state=failed],.badge[data-state=error]{background:var(--danger-soft);color:var(--danger-deep)}.stat-strip{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px;display:grid}.stat-strip>*{border-radius:var(--radius-card);background:var(--surface);min-width:0;padding:16px 18px}.stat-strip>.emphasis{background:var(--accent-soft)}.stat-strip span,.stat-strip small,.stat-strip strong{display:block}.stat-strip span,.stat-strip small{color:var(--text-tertiary);font-size:var(--font-size-caption)}.stat-strip strong{color:var(--text);margin:4px 0;font-size:24px;line-height:1.2}.stat-strip .emphasis strong{color:var(--accent)}.stat-strip [data-state=ready] strong,.stat-strip [data-state=ready]{color:var(--success-deep)}.stat-strip [data-state=running] strong,.stat-strip [data-state=pending] strong{color:var(--warning-deep)}.stat-strip [data-state=failed] strong,.stat-strip [data-state=failed]{color:var(--danger-deep)}.stat-strip.compact-summary{border-block:1px solid var(--border);background:var(--surface);grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-bottom:16px;overflow:hidden}.stat-strip.compact-summary>*{background:0 0;border:0;border-radius:0;min-height:72px;padding:12px 16px 13px}.stat-strip.compact-summary>*+*{border-left:1px solid var(--border)}.stat-strip.compact-summary strong{margin:3px 0 0;font-size:20px}.stat-strip.compact-summary .runtime-summary strong,.runtime-status-summary strong{align-items:center;gap:8px;display:inline-flex}.stat-strip.compact-summary .summary-status-dot,.runtime-status-summary .summary-status-dot{background:var(--text-disabled);border-radius:50%;flex:none;width:7px;height:7px;display:inline-block}.runtime-summary[data-state=ready] .summary-status-dot,.runtime-status-summary [data-state=ready] .summary-status-dot{background:var(--success)}.runtime-summary[data-state=pending] .summary-status-dot,.runtime-status-summary [data-state=pending] .summary-status-dot{background:var(--warning)}.runtime-summary[data-state=failed] .summary-status-dot,.runtime-status-summary [data-state=failed] .summary-status-dot{background:var(--danger)}.compact-status-alert{border-left:3px solid var(--danger);border-radius:var(--radius-control);color:var(--danger-deep);background:var(--danger-soft);font-size:var(--font-size-caption);align-items:center;gap:10px;margin-top:-4px;padding:10px 14px;display:flex}.compact-status-alert span{color:var(--text-secondary)}.agents-page .table-data-body{gap:24px;display:grid}.agents-section-heading,.agents-catalog-header{justify-content:space-between;align-items:flex-end;gap:16px;min-width:0;display:flex}.agents-section-heading{margin-bottom:12px;padding-inline:2px}.agents-section-heading h2,.agents-section-heading p,.agents-catalog-header h2,.agents-catalog-header p{margin:0}.agents-section-heading h2,.agents-catalog-header h2{color:var(--text);font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold)}.agents-section-heading p,.agents-catalog-header p{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:3px}.agents-page .stat-strip{margin-bottom:0}.agents-catalog-section{padding:0;overflow:hidden}.agents-catalog-header{min-height:76px;padding:16px 18px 14px}.agents-catalog-meta{color:var(--text-secondary);font-size:var(--font-size-caption);white-space:nowrap;align-items:center;gap:12px;display:flex}.agents-catalog-meta .sync-state{padding-left:12px;position:relative}.agents-catalog-meta .sync-state:before{content:"";border-radius:var(--radius-circle);background:var(--success);width:6px;height:6px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.agents-catalog-section .section-toolbar{background:var(--surface-subtle);min-height:58px;margin:0;padding:9px 18px}.agents-catalog-section .section-toolbar .search-field{flex:420px;width:min(520px,100%)}.agents-catalog-section>.studio-data-table{border-radius:0}.page-tabs{border-radius:var(--radius-inset);background:var(--surface);gap:6px;margin-bottom:16px;padding:4px;display:flex}.page-tabs button,.segmented-control button{min-height:32px;color:var(--text-secondary);background:0 0;padding:0 12px}.page-tabs button.active,.page-tabs button[aria-selected=true],.segmented-control button.selected{background:var(--accent-soft);color:var(--accent)}.studio-data-table{border-collapse:separate;border-spacing:0;background:var(--surface);width:100%}.studio-data-table thead th{z-index:1;border-bottom:1px solid var(--border);background:var(--surface);height:42px;color:var(--text-tertiary);font-size:var(--font-size-caption);font-weight:500;position:sticky;top:0}.studio-data-table tbody tr:hover{background:var(--surface-subtle)}.studio-data-table td,.studio-data-table th{padding-inline:14px}.row-actions{justify-content:flex-end;gap:6px;display:flex}.more-actions-menu,.studio-select-content,.studio-tooltip,[role=dialog]{z-index:120;border-radius:var(--radius-inset);background:var(--surface);padding:6px}.more-actions-item{border-radius:var(--radius-chip);min-width:150px;color:var(--text-secondary);cursor:pointer;outline:none;padding:8px 10px}.empty-state{text-align:center;align-content:center;place-items:center;gap:8px;min-height:280px;padding:36px;display:grid}.empty-state.inline{min-height:180px}.empty-state h2,.empty-state p{margin:0}.empty-state p{max-width:520px;color:var(--text-tertiary)}.create-shell .create-workbench{width:100%;max-width:79rem;min-height:calc(100dvh - var(--header-height));grid-template-columns:212px minmax(0,1fr);align-items:stretch;margin-inline:auto;display:grid}.create-shell .create-rail{top:var(--header-height);width:212px;min-height:calc(100dvh - var(--header-height));background:var(--surface-subtle);border-radius:0;align-self:start;padding:24px 14px;position:sticky}.create-shell .create-rail-panel{gap:8px;min-height:0;display:grid}.create-shell .authoring-mode-tabs,.create-shell .wizard-steps{background:0 0;border-radius:0;grid-template-columns:minmax(0,1fr);align-items:stretch;gap:4px;min-height:0;padding:0;display:grid}.create-shell .authoring-mode-tabs button,.create-shell .wizard-step{border-radius:var(--radius-control);min-width:0;transition:color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease), transform var(--motion-fast) var(--ease);background:0 0;padding:10px 12px}.create-shell .authoring-mode-tabs button{color:var(--text-secondary)}.create-shell .authoring-mode-tabs button:hover:not(.active),.create-shell .wizard-step:hover:not(:disabled):not(.active){color:var(--text);background:var(--surface)}.create-shell .authoring-mode-tabs button:active,.create-shell .wizard-step:active:not(:disabled){transform:translateY(1px)}.create-shell .wizard-step{gap:6px;min-height:54px;padding-inline:8px}.create-shell .wizard-step .step-number{flex:0 0 24px;width:24px;height:24px}.create-shell .wizard-step>span:last-child,.create-shell .wizard-step strong,.create-shell .wizard-step small,.create-shell .authoring-mode-tabs strong,.create-shell .authoring-mode-tabs small{text-overflow:clip;white-space:normal;min-width:0;overflow:visible}.create-shell .authoring-mode-tabs button.active,.create-shell .wizard-step.active{background:var(--accent-soft);color:var(--accent)}.create-shell .authoring-mode-tabs button.active:hover,.create-shell .wizard-step.active:hover:not(:disabled){background:var(--accent-hover);color:var(--accent)}.create-shell .create-stage{border-radius:var(--radius-block);background:var(--surface);min-width:0}.create-shell .wizard-step{align-items:flex-start;padding-block:0;position:relative}.create-shell .wizard-step:not(:last-child):after{content:"";background:var(--border);width:1.5px;position:absolute;top:28px;bottom:-8px;left:20px}.create-shell .wizard-step.completed:not(:last-child):after{background:var(--accent)}.create-shell .wizard-step.active .step-number,.create-shell .wizard-step.completed .step-number{background:var(--accent);color:var(--surface)}.create-shell .wizard-actions{gap:14px}.create-shell .wizard-progress{flex:none}.create-shell .wizard-flow-actions{flex:none;align-items:center;gap:8px;display:flex}.create-shell .summary-chips{flex:auto;align-items:baseline;gap:14px;min-width:0;margin:0;display:flex;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 30px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 30px),#0000)}.create-shell .summary-chips>div{font-size:var(--font-size-caption);flex:none;align-items:baseline;gap:6px;display:flex}.create-shell .summary-chips dt{color:var(--text-faint)}.create-shell .summary-chips dd{max-width:12ch;color:var(--text);font-weight:var(--font-weight-semibold);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.create-shell .template-card .template-icon,.create-shell .capability-heading .capability-icon{display:none}.create-shell .template-card{grid-template-columns:minmax(0,1fr)}.create-shell .wizard-layout,.create-shell .wizard-content,.create-shell .authoring-mode-panel{width:100%;max-width:none;margin:0}.create-shell[data-layout=document] .create-stage,.create-shell[data-layout=document] .wizard-content,.create-shell[data-layout=document] .authoring-mode-panel{min-height:calc(100dvh - 12rem)}.create-shell .authoring-mode-panel{padding:clamp(24px,3vw,48px)}.create-shell .authoring-panel-heading{align-items:flex-start;margin-bottom:28px}.conversation-authoring-layout,.authoring-inspect-grid{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:18px}.authoring-chat-column,.authoring-input-card,.authoring-inspection-card{border-radius:var(--radius-inset);background:var(--surface-subtle);flex-direction:column;align-items:stretch;gap:18px;min-width:0;padding:20px;display:flex}.authoring-section-heading{grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:11px;display:grid}.authoring-section-index{border-radius:var(--radius-chip);width:28px;height:28px;color:var(--accent);background:var(--accent-soft);font-family:var(--font-mono);font-size:var(--font-size-caption);font-variant-numeric:tabular-nums;place-items:center;display:grid}.authoring-section-heading>div{min-width:0}.authoring-section-heading strong,.authoring-section-heading p{margin:0;display:block}.authoring-section-heading strong{color:var(--text);font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.authoring-section-heading p{color:var(--text-tertiary);font-size:var(--font-size-caption);line-height:var(--line-height-caption);margin-top:2px}.authoring-section-heading>.badge{place-self:start}.authoring-input-card .field,.authoring-inspection-card .field,.authoring-chat-column .field{margin-bottom:0}.authoring-transcript{background:var(--surface);flex:1;min-height:240px}.authoring-inspection-card .code-viewer{flex:1;min-height:192px}.authoring-card-actions{justify-content:flex-end;align-items:center;gap:8px;margin-top:auto;padding-top:2px;display:flex}.authoring-card-actions .button{min-width:132px}.create-shell[data-layout=workbench] .create-workbench{grid-template-rows:minmax(0,1fr);grid-template-columns:212px minmax(0,1fr);gap:0;height:100%;min-height:0;display:grid;overflow:hidden}.create-shell[data-layout=workbench] .create-rail{grid-area:1/1}.create-shell[data-layout=workbench] .create-stage{grid-area:1/2}.create-shell[data-layout=workbench] .create-stage,.create-shell[data-layout=workbench] .authoring-mode-panel,.create-shell[data-layout=workbench] .conversation-authoring-layout,.create-shell[data-layout=workbench] .authoring-chat-column,.create-shell[data-layout=workbench] .authoring-inspection-card{min-height:0}.create-shell[data-layout=workbench] .create-stage,.create-shell[data-layout=workbench] .authoring-mode-panel{height:100%;overflow:hidden}.create-shell[data-layout=workbench] .authoring-mode-panel{grid-template-rows:auto minmax(0,1fr);padding:20px 24px;display:grid}.create-shell[data-layout=workbench] .authoring-panel-heading{margin-bottom:16px}.create-shell[data-layout=workbench] .conversation-authoring-layout{contain:layout paint;height:100%;overflow:hidden}.create-shell[data-layout=workbench] .authoring-inspection-card{height:100%;overflow-y:auto}.create-shell[data-layout=workbench] .authoring-chat-column{height:100%;overflow:hidden}.create-shell[data-layout=workbench] .authoring-transcript{flex:auto;height:auto;min-height:0;max-height:none;overflow-y:auto}.create-shell[data-authoring-mode=conversation] .authoring-inspection-card .code-viewer{flex:none;min-height:156px}.create-shell[data-authoring-mode=conversation] .conversation-authoring-layout{grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);gap:16px}.conversation-chat,.conversation-draft-rail{border:1px solid var(--border);border-radius:var(--radius-inset);background:var(--surface);min-width:0;min-height:0}.conversation-chat{grid-template-rows:auto minmax(160px,1fr) auto auto;gap:12px;padding:18px;display:grid}.conversation-chat-header,.conversation-draft-rail-heading,.conversation-review-heading,.conversation-draft-title{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.conversation-chat-header strong,.conversation-draft-rail-heading strong,.conversation-review-heading strong,.conversation-draft-title strong{color:var(--text);font-size:var(--font-size-control);font-weight:var(--font-weight-semibold);display:block}.conversation-chat-header p,.conversation-draft-rail-heading p,.conversation-review-heading p,.conversation-draft-title p,.conversation-empty-state p,.conversation-draft-empty p,.conversation-message p{color:var(--text-secondary);font-size:var(--font-size-control);margin:3px 0 0;line-height:1.55}.conversation-context-state{border-radius:var(--radius-chip);color:var(--text-tertiary);background:var(--surface-subtle);font-size:var(--font-size-caption);white-space:nowrap;flex:none;padding:4px 8px}.conversation-transcript{scrollbar-gutter:stable both-edges;flex-direction:column;gap:10px;min-height:0;padding:8px 2px;display:flex;overflow-y:auto}.conversation-empty-state,.conversation-draft-empty{min-height:100%;color:var(--text-tertiary);text-align:center;align-content:center;place-items:center;padding:28px;display:grid}.conversation-empty-state svg,.conversation-draft-empty svg{color:var(--accent);margin-bottom:9px}.conversation-empty-state strong,.conversation-draft-empty strong{color:var(--text);font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.conversation-empty-state p,.conversation-draft-empty p{max-width:360px}.conversation-message{border:1px solid var(--border);background:var(--surface-subtle);border-radius:14px;width:fit-content;max-width:min(88%,640px);padding:10px 13px}.conversation-message.user{border-color:color-mix(in srgb, var(--accent) 24%, var(--border));background:var(--accent-soft);border-bottom-right-radius:4px;align-self:flex-end}.conversation-message.assistant{border-bottom-left-radius:4px;align-self:flex-start}.conversation-message.assistant strong{color:var(--text);font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.conversation-message p{white-space:pre-wrap}.conversation-thinking{border-radius:var(--radius-control);min-width:0;color:var(--text-secondary);background:var(--surface-subtle);align-self:flex-start;align-items:center;gap:8px;padding:7px 10px;display:inline-flex}.conversation-thinking .authoring-stage{gap:6px;min-width:0}.conversation-thinking-orb{align-items:center;gap:3px;height:18px;padding:0 2px;display:inline-flex}.conversation-thinking-orb i{background:var(--accent);border-radius:999px;width:4px;height:4px;animation:1.15s ease-in-out infinite conversation-thinking-pulse}.conversation-thinking-orb i:nth-child(2){animation-delay:.14s}.conversation-thinking-orb i:nth-child(3){animation-delay:.28s}@keyframes conversation-thinking-pulse{0%,65%,to{opacity:.35;transform:translateY(0)}32%{opacity:1;transform:translateY(-4px)}}.conversation-composer{border:1px solid var(--border-strong,var(--border));background:var(--surface);box-shadow:0 8px 22px color-mix(in srgb, var(--ink) 7%, transparent);border-radius:16px;padding:10px 12px 8px}.conversation-composer:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft), 0 8px 22px color-mix(in srgb, var(--ink) 7%, transparent)}.conversation-composer textarea{resize:vertical;width:100%;min-height:66px;max-height:180px;color:var(--text);font:inherit;font-size:var(--font-size-control);background:0 0;border:0;outline:0;padding:2px 0;line-height:1.55;display:block}.conversation-composer textarea::placeholder{color:var(--text-tertiary)}.conversation-composer-footer{justify-content:space-between;align-items:center;gap:12px;margin-top:5px;display:flex}.conversation-composer-footer>span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.conversation-composer-footer b{color:var(--border)}.conversation-send-button{width:32px;height:32px;color:var(--accent-foreground,#fff);background:var(--accent);cursor:pointer;border:0;border-radius:10px;flex:none;place-items:center;transition:transform .14s,opacity .14s;display:grid}.conversation-send-button:not(:disabled):hover{transform:translateY(-1px)}.conversation-send-button:disabled{cursor:default;opacity:.42}.conversation-settings{border-top:1px solid var(--border)}.conversation-settings summary{color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-caption);justify-content:space-between;align-items:center;gap:12px;padding:10px 2px 0;list-style:none;display:flex}.conversation-settings summary::-webkit-details-marker{display:none}.conversation-settings summary span{color:var(--text);font-weight:var(--font-weight-semibold)}.conversation-settings summary small{color:var(--text-tertiary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.conversation-settings summary:after{content:"⌄";color:var(--text-tertiary);font-size:15px}.conversation-settings[open] summary:after{transform:rotate(180deg)}.conversation-settings-body{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding-top:14px;display:grid}.conversation-settings-body>.field,.conversation-settings-body>.form-field,.conversation-settings-body>.conversation-runtime-note{margin:0}.conversation-settings-body .conversation-runtime-note{align-self:center}.conversation-draft-rail{flex-direction:column;gap:16px;padding:18px;display:flex;overflow-y:auto}.conversation-draft-rail-heading{border-bottom:1px solid var(--border);padding-bottom:13px}.conversation-draft-rail-heading .badge{flex:none}.conversation-draft-summary{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface-subtle);gap:14px;padding:14px;display:grid}.conversation-draft-title{justify-content:flex-start}.conversation-draft-title svg{color:var(--accent);flex:none;margin-top:2px}.conversation-draft-title>div{min-width:0}.conversation-draft-title p{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.conversation-preview-section{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);gap:6px;padding:11px 12px;display:grid}.conversation-preview-section span{color:var(--text-tertiary);font-size:var(--font-size-caption);font-weight:var(--font-weight-semibold)}.conversation-preview-section p{-webkit-line-clamp:6;color:var(--text-secondary);font-size:var(--font-size-control);white-space:pre-wrap;-webkit-box-orient:vertical;margin:0;line-height:1.58;display:-webkit-box;overflow:hidden}.conversation-draft-tags{flex-wrap:wrap;gap:6px;display:flex}.conversation-draft-tags span{border-radius:var(--radius-chip);color:var(--text-secondary);background:var(--surface);font-size:var(--font-size-caption);padding:3px 7px}.conversation-draft-summary .button{justify-content:center;width:100%}.conversation-review-form{gap:16px;min-width:0;display:grid}.conversation-review-heading{align-items:center}.conversation-review-heading .button{flex:none}.create-shell[data-layout=workbench] .conversation-chat,.create-shell[data-layout=workbench] .conversation-draft-rail{height:100%;min-height:0}@media (width<=1180px){.create-shell[data-authoring-mode=conversation] .conversation-authoring-layout{grid-template-columns:minmax(0,1fr)}.create-shell[data-layout=workbench] .conversation-chat,.create-shell[data-layout=workbench] .conversation-draft-rail{height:auto}}@media (width<=720px){.conversation-context-state{display:none}.conversation-settings-body{grid-template-columns:minmax(0,1fr)}.conversation-composer-footer>span{display:none}}@media (prefers-reduced-motion:reduce){.conversation-thinking-orb i{animation:none}.conversation-send-button{transition:none}}.runtime-trend-bars{align-items:end;gap:5px;height:150px;padding-top:14px;display:flex}.runtime-trend-bar{min-width:4px;height:max(4px, var(--bar-height));border-radius:var(--radius-chip) var(--radius-chip) 0 0;background:var(--accent-soft);flex:1}.runtime-trend-bar[data-peak=true]{background:var(--accent)}.chart-axis{color:var(--text-tertiary);font-size:var(--font-size-caption);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;padding-top:7px;display:flex}.observability-page .observability-body{grid-template-rows:auto auto minmax(0,1fr);gap:12px;height:100%;min-height:0;display:grid;overflow:hidden}.observability-page .stat-strip{margin-bottom:0}.trace-list-page,.trace-workbench{min-height:0;overflow:hidden}.observability-page .trace-list-page{align-self:start}.trace-workbench{background:0 0;grid-template-columns:minmax(220px,.7fr) minmax(420px,1.65fr) minmax(320px,1fr);gap:12px;display:grid}.trace-run-panel,.trace-span-panel,.trace-detail-panel{border-radius:var(--radius-block);background:var(--surface);min-width:0;min-height:0;overflow:hidden}.trace-run-list,.trace-span-tree,.trace-detail-body{min-height:0;overflow:auto}.trace-workbench.detail-expanded .trace-run-panel,.trace-workbench.detail-expanded .trace-span-panel{display:none}.trace-workbench.detail-expanded .trace-detail-panel{grid-column:1/-1}.trace-run-list>button{text-align:left;background:0 0;gap:6px;width:100%;padding:12px;display:grid}.trace-run-list>button:hover,.trace-run-list>button.active{background:var(--surface-subtle)}.trace-run-identity,.trace-run-meta{justify-content:space-between;align-items:center;gap:8px;display:flex}.trace-run-identity>span,.trace-run-identity strong,.trace-run-identity small{min-width:0;display:block}.trace-run-identity small,.trace-run-meta{color:var(--text-tertiary);font-size:var(--font-size-caption)}@media (width<=1180px){.trace-workbench{grid-template-columns:minmax(190px,.65fr) minmax(360px,1.4fr) minmax(280px,1fr)}.conversation-authoring-layout,.authoring-inspect-grid{grid-template-columns:minmax(0,1fr)}.header-search-field{width:190px}.create-shell[data-layout=workbench] .authoring-mode-panel{grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden}.create-shell[data-layout=workbench] .conversation-authoring-layout{align-content:start;height:100%;overflow:hidden auto}.create-shell[data-layout=workbench] .authoring-chat-column,.create-shell[data-layout=workbench] .authoring-inspection-card{height:auto;overflow:visible}}@media (width<=900px){.app-shell,.app-shell[data-rail=expanded]{--studio-app-rail:72px;--studio-content-gutter:16px}.page-container,.global-header{padding-inline:16px}.trace-workbench{grid-template-columns:190px minmax(360px,1fr)}.trace-detail-panel{z-index:80;position:fixed;inset:86px 16px 16px 76px}.create-shell .authoring-mode-tabs button small,.create-shell .wizard-step small{display:none}}@media (width<=640px){.stat-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.page-tabs{overflow-x:auto}.create-shell .authoring-mode-panel{padding:20px}.authoring-chat-column,.authoring-input-card,.authoring-inspection-card{padding:16px}.authoring-section-heading{grid-template-columns:auto minmax(0,1fr)}.authoring-section-heading>.badge{grid-column:2}.authoring-card-actions .button{width:100%}.app-shell[data-rail=compact] .nav-group+.nav-group{margin-top:0}.header-search-field,#pageHeaderTools .segmented-control,.create-shell .create-rail{display:none}.compact-create-rail-trigger{display:inline-grid}.trace-workbench{grid-template-columns:1fr}.observability-page .observability-body{flex-direction:column;display:flex;overflow-y:auto}.observability-page .trace-list-page{flex:none;min-height:300px}.trace-run-panel{display:none}.trace-detail-panel{inset:78px 8px 8px}}.studio-field-label-row{align-items:center;gap:6px;min-width:0;display:flex}.field-help-trigger{width:24px;min-width:24px;height:24px;color:var(--text-tertiary);background:0 0;place-items:center;padding:0;display:inline-grid}.field-help-trigger:hover{color:var(--accent);background:var(--accent-soft)}.field-help-tooltip{max-width:320px;line-height:1.55}.studio-field-requirement.required{color:var(--text-tertiary);font-size:var(--font-size-control);font-weight:var(--font-weight-semibold)}.studio-field-footer,.studio-field-footer .field-footer{color:var(--text-tertiary);font-size:var(--font-size-caption);justify-content:space-between;align-items:center;gap:12px;display:flex}.create-shell[data-editing=true] .create-workbench{grid-template-columns:minmax(0,1fr);max-width:1080px}.create-shell[data-editing=true] .create-stage{grid-column:1}.create-shell[data-editing=true] .quick-create{max-width:980px;margin-inline:auto}.chat-run-error{border-radius:var(--radius-inset);background:var(--danger-soft);max-width:760px;color:var(--text);grid-template-columns:28px minmax(0,1fr);gap:10px;padding:14px;display:grid}.chat-run-error-icon{border-radius:var(--radius-chip);width:28px;height:28px;color:var(--danger);background:var(--surface);place-items:center;display:grid}.chat-run-error-icon svg{width:17px;height:17px}.chat-run-error-copy,.chat-run-error-copy>strong,.chat-run-error-copy>p{min-width:0;margin:0}.chat-run-error-copy>p{color:var(--text-secondary);margin-top:4px}.chat-run-error-actions{gap:8px;margin-top:12px;display:flex}.chat-run-error-detail{color:var(--text-tertiary);margin-top:10px}.chat-run-error-detail summary{cursor:pointer;width:fit-content;font-size:var(--font-size-caption)}.chat-run-error-detail pre{border-radius:var(--radius-control);background:var(--code-bg);max-height:180px;color:var(--code-text);white-space:pre-wrap;word-break:break-word;margin:8px 0 0;padding:10px;overflow:auto}.chat-model-trigger.missing{color:var(--warning-deep);background:var(--warning-soft)}.settings-layout{grid-template-columns:128px minmax(0,1fr);align-items:start;gap:24px;display:grid}.settings-section-nav{gap:4px;display:grid;position:sticky;top:0}.settings-section-nav button{min-height:36px;color:var(--text-secondary);text-align:left;background:0 0;padding:0 10px}.settings-section-nav button:hover,.settings-section-nav button.active{background:var(--accent-soft);color:var(--accent)}.settings-sections,.settings-group{min-width:0}.settings-group{scroll-margin-top:8px}.runtime-trend-empty{min-height:92px;color:var(--text-tertiary);text-align:center;place-content:center;gap:4px;display:grid}.runtime-trend-empty strong{color:var(--text);font-size:var(--font-size-control)}.runtime-status-summary{border-block:1px solid var(--border);background:var(--surface);grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:12px;display:grid;overflow:hidden}.runtime-status-summary>div{min-width:0;min-height:68px;padding:11px 16px 12px;position:relative}.runtime-status-summary>div+div{border-left:1px solid var(--border)}.runtime-status-summary .stat-label{color:var(--text-tertiary);font-size:var(--font-size-caption);display:block}.runtime-status-summary .stat-value{color:var(--text);margin-top:4px;font-size:20px}.runtime-status-summary [data-state=failed]{background:var(--danger-soft)}.runtime-status-summary [data-state=failed] .stat-value{color:var(--danger-deep)}.runtime-status-summary .text-button{position:absolute;bottom:12px;right:14px}.runtime-metric-summary{grid-template-columns:repeat(3,minmax(0,1fr))!important}.runtime-trend.is-empty{padding-bottom:10px}.runtime-trend.is-empty .runtime-trend-empty{min-height:58px}.runtime-resource-toolbar{margin-block:14px 10px}.table-data-body .section-toolbar{flex-wrap:wrap}.table-data-body .section-toolbar .search-field{flex:280px;min-width:240px}.runtime-resource-group>header .text-button{white-space:nowrap;align-items:center;gap:3px;margin-left:auto;display:inline-flex}.runtime-resource-group{background:0 0;border-radius:0;position:relative}.runtime-resource-group:before{content:"";background:var(--border);height:1px;position:absolute;inset:0 0 auto}@media (width>=1680px){.app-shell .page-container.runtime-resource-page{max-width:var(--studio-page-max,1760px)}.app-shell .create-shell[data-layout=document],.app-shell .create-shell[data-layout=workbench][data-authoring-mode=conversation]{max-width:1480px}.create-shell .create-workbench,.create-shell[data-layout=workbench] .create-workbench{max-width:88rem}}.capability-empty-state{border-radius:var(--radius-inset);background:var(--surface-subtle);min-height:104px;color:var(--text-secondary);justify-content:space-between;align-items:center;gap:16px;padding:16px;display:flex}.build-progress,.build-artifact,.build-log{margin-top:12px}.build-workspace{grid-template-columns:minmax(0,1fr);gap:0}.stat-strip.build-summary{background:0 0;grid-template-columns:repeat(5,minmax(0,1fr));width:100%;padding:0}.stat-strip.build-summary>div{border-radius:var(--radius-card);background:var(--surface);padding:16px 18px}.build-stage-list{grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin:20px 0 0;padding:0;list-style:none;display:grid}.build-stage-list li{grid-template-columns:30px minmax(0,1fr);gap:8px;min-width:0;padding-right:14px;display:grid;position:relative}.build-stage-list li:not(:last-child):after{content:"";background:var(--border);height:1px;position:absolute;top:14px;left:28px;right:0}.build-stage-icon{z-index:1;border-radius:var(--radius-chip);width:28px;height:28px;color:var(--text-tertiary);background:var(--surface-subtle);place-items:center;display:grid;position:relative}.build-stage-list li[data-state=completed] .build-stage-icon{color:var(--success-deep);background:var(--success-soft)}.build-stage-list li[data-state=active] .build-stage-icon{color:var(--accent);background:var(--accent-soft)}.build-stage-list li[data-state=failed] .build-stage-icon{color:var(--danger);background:var(--danger-soft)}.build-stage-list strong,.build-stage-list small{display:block}.build-stage-list strong{color:var(--text);font-size:var(--font-size-control)}.build-stage-list small{color:var(--text-tertiary);margin-top:3px;line-height:1.45}.build-artifact-grid{gap:2px;margin:16px 0 0;display:grid}.build-artifact-grid>div{border-radius:var(--radius-control);grid-template-columns:150px minmax(0,1fr);align-items:center;min-width:0;min-height:44px;padding:0 10px;display:grid}.build-artifact-grid>div:hover{background:var(--surface-subtle)}.build-artifact-grid dt{color:var(--text-tertiary)}.build-artifact-grid dd{justify-content:space-between;align-items:center;gap:8px;min-width:0;margin:0;display:flex}.build-artifact-grid code{min-width:0;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}details.build-log{padding:0;overflow:hidden}details.build-log>summary{cursor:pointer;min-height:48px;color:var(--text-secondary);justify-content:space-between;align-items:center;gap:12px;padding:0 16px;display:flex}details.build-log>summary small{color:var(--text-tertiary)}details.build-log>pre{min-height:220px;max-height:420px}.pipeline-node-card>span:last-child,.pipeline-node-card strong,.pipeline-node-card small{min-width:0}.pipeline-node-card strong,.pipeline-node-card small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (width<=1023px){.create-shell .create-workbench,.create-shell[data-layout=workbench] .create-workbench{grid-template-columns:minmax(0,1fr);max-width:none}.create-shell .create-stage,.create-shell[data-layout=workbench] .create-stage{grid-column:1}.global-header{min-height:70px;padding-inline:16px}.header-actions{scrollbar-width:none;max-width:calc(100% - 210px);overflow-x:auto}.header-actions::-webkit-scrollbar{display:none}.header-identity,.header-identity-inline{max-width:200px}.header-search-field{width:176px}.header-agent-selector,.header-identity-inline .mono{display:none}.build-stage-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 0}.stat-strip.build-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.build-stage-list li:nth-child(2):after{display:none}}@media (width<=760px){.settings-layout{grid-template-columns:minmax(0,1fr)}.settings-section-nav{grid-template-columns:repeat(5,max-content);position:static;overflow-x:auto}.settings-section-nav button{text-align:center}.capability-empty-state{flex-direction:column;align-items:flex-start}}.create-shell[data-editing=true] .quick-create{grid-template-columns:minmax(0,1fr) 340px;gap:20px;width:100%;max-width:1080px;padding:28px 32px 56px}.create-shell[data-editing=true] .quick-create>*,.create-shell[data-editing=true] .quick-create-form,.create-shell[data-editing=true] .manifest-preview{min-width:0}.agent-appearance-editor{grid-template-columns:minmax(190px,.8fr) minmax(0,1.2fr);align-items:start}.agent-appearance-preview span{overflow-wrap:anywhere}.agent-appearance-actions{grid-column:1/-1;justify-content:flex-start}.stat-strip .stat-foot{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}@media (width<=1500px){.create-shell[data-editing=true] .quick-create{grid-template-columns:minmax(0,1fr);max-width:920px}.create-shell[data-editing=true] .manifest-preview{position:static}.create-shell[data-editing=true] .manifest-preview>.code-viewer{min-height:280px;max-height:420px}}@media (width<=1180px){.stat-strip,.stat-strip.build-summary,.observability-page .stat-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.two-columns,.agent-appearance-editor{grid-template-columns:minmax(0,1fr)}.agent-appearance-actions{grid-column:1}}:root{--radius-block:16px;--radius-card:14px;--radius-inset:12px;--radius-chip:8px;--studio-outline-surface:var(--border-card);--studio-outline-inset:var(--border)}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 58%, transparent);outline-offset:2px}.page-header-actions,.page-header-tools{align-items:center;gap:8px;display:flex}.page-header-actions{margin-left:8px}.delivery-page{width:min(100%, var(--studio-page-max,1760px));max-width:var(--studio-page-max,1760px);min-width:0;margin:0 auto;padding:24px 28px 32px}.delivery-page[data-layout=document]{overflow:visible}.delivery-intro{justify-content:space-between;align-items:end;gap:20px;margin:0 0 18px;display:flex}.delivery-intro h1,.delivery-intro h2,.delivery-block h2{color:var(--text);font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);margin:0}.delivery-intro p,.delivery-block p{color:var(--text-tertiary);font-size:var(--font-size-meta);margin:6px 0 0}.delivery-block,.delivery-empty-state{border-radius:var(--radius-block);background:var(--surface);outline:1px solid var(--studio-outline-surface);outline-offset:-1px}.delivery-block{padding:20px}.delivery-block+.delivery-block{margin-top:16px}.delivery-stat-strip{border-radius:var(--radius-card);background:var(--surface);outline:1px solid var(--studio-outline-surface);outline-offset:-1px;grid-template-columns:repeat(4,minmax(0,1fr));display:grid;overflow:hidden}.delivery-stat-strip>div{min-width:0;padding:16px}.delivery-stat-strip>div+div{outline:1px solid var(--studio-outline-inset);outline-offset:-1px}.delivery-stat-strip .stat-label,.delivery-stat-strip small{color:var(--text-tertiary);font-size:var(--font-size-caption);display:block}.delivery-stat-strip strong{color:var(--text);font-size:var(--font-size-card-metric);text-overflow:ellipsis;white-space:nowrap;margin-top:6px;display:block;overflow:hidden}.delivery-stat-strip.compact-delivery-summary>div{min-height:72px;padding:12px 16px 13px}.delivery-stat-strip.compact-delivery-summary strong{margin-top:3px;font-size:20px}.delivery-next-step{border-left:3px solid var(--border-strong);border-radius:var(--radius-control);background:var(--surface-subtle);justify-content:space-between;align-items:center;gap:20px;margin-top:16px;padding:14px 16px;display:flex}.delivery-next-step[data-state=ready]{border-left-color:var(--success);background:var(--success-soft)}.delivery-next-step[data-state=failed]{border-left-color:var(--danger);background:var(--danger-soft)}.delivery-next-step span,.delivery-next-step strong{display:block}.delivery-next-step span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.delivery-next-step strong{color:var(--text);font-size:var(--font-size-body);margin-top:3px}.delivery-detail-disclosure{margin-top:16px}.delivery-detail-disclosure>summary{cursor:pointer;color:var(--text-secondary);font-size:var(--font-size-body);font-weight:var(--font-weight-medium)}.delivery-detail-disclosure .delivery-fact-chain{grid-template-columns:repeat(2,minmax(0,1fr))}.delivery-section-heading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;display:flex}.delivery-section-heading>span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.delivery-fact-chain{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;display:grid}.delivery-fact-step{border-radius:var(--radius-inset);background:var(--surface-subtle);outline:1px solid var(--studio-outline-inset);outline-offset:-1px;min-width:0;padding:14px}.delivery-fact-step[data-state=ready]{background:var(--success-soft)}.delivery-fact-step[data-state=failed]{background:var(--danger-soft)}.delivery-fact-step[data-state=pending]{background:var(--warning-soft)}.delivery-fact-step span,.delivery-fact-step code{color:var(--text-tertiary);font-size:var(--font-size-caption);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.delivery-fact-step strong{color:var(--text);font-size:var(--font-size-body);margin:4px 0;display:block}.delivery-status-badge{border-radius:var(--radius-chip);background:var(--surface-subtle);min-height:24px;color:var(--text-secondary);font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);align-items:center;padding:2px 8px;display:inline-flex}.delivery-status-badge[data-state=ready]{background:var(--success-soft);color:var(--success)}.delivery-status-badge[data-state=failed]{background:var(--danger-soft);color:var(--danger)}.delivery-status-badge[data-state=pending]{background:var(--warning-soft);color:var(--warning-text)}.delivery-empty-state{justify-items:start;gap:8px;padding:28px;display:grid}.delivery-empty-state h2{color:var(--text);font-size:var(--font-size-card-metric);margin:0}.delivery-empty-state p{color:var(--text-tertiary);margin:0}.delivery-empty-actions{flex-wrap:wrap;gap:8px;margin-top:4px;display:flex}.delivery-table-scroll{border-radius:var(--radius-inset);outline:1px solid var(--studio-outline-inset);outline-offset:-1px;margin-top:16px;overflow-x:auto}.delivery-table{table-layout:fixed;border-collapse:collapse;background:var(--surface);width:100%;min-width:820px;font-size:var(--font-size-meta)}.delivery-table th,.delivery-table td{border-bottom:1px solid var(--studio-outline-inset);color:var(--text-secondary);text-align:left;vertical-align:middle;padding:12px 14px}.delivery-table th{color:var(--text-tertiary);font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);letter-spacing:.02em}.delivery-table tbody tr:last-child td{border-bottom:0}.delivery-table td code{color:var(--text);font-size:var(--font-size-caption)}.delivery-table td small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:3px;display:block}.delivery-row-actions{white-space:nowrap;justify-content:flex-end;gap:6px;display:flex}.delivery-table th:first-child{width:25%}.delivery-table th:nth-child(2){width:11%}.delivery-table th:nth-child(3){width:16%}.delivery-table th:nth-child(4){width:15%}.delivery-table th:nth-child(5){width:19%}.delivery-table th:last-child{width:14%}.delivery-updated-at{color:var(--text-tertiary);font-size:var(--font-size-caption);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.delivery-agent-identity{min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;gap:3px;padding:0;display:grid}.delivery-agent-identity:hover strong{color:var(--accent)}.delivery-agent-identity:focus-visible{border-radius:var(--radius-control);outline:2px solid var(--accent);outline-offset:3px}.delivery-agent-identity strong,.delivery-agent-identity code{text-overflow:ellipsis;white-space:nowrap;max-width:280px;overflow:hidden}.delivery-agent-identity strong{color:var(--text)}.deployment-detail-heading{align-items:center;gap:10px;display:flex}.deployment-version-history{gap:12px;margin-top:22px;display:grid}.deployment-version-history h3,.deployment-version-history p{margin:0}.deployment-version-history p{color:var(--text-tertiary);font-size:var(--font-size-meta)}.deployment-version-list{border:1px solid var(--border);border-radius:var(--radius-inset);background:var(--surface);width:100%;min-width:0;max-width:100%;max-height:430px;display:grid;overflow:hidden auto}.deployment-version-header,.deployment-version-option{text-align:left;grid-template-columns:minmax(96px,1fr) 88px 64px minmax(136px,auto);align-items:center;column-gap:16px;width:100%;min-width:0;padding:8px 12px;display:grid}.deployment-version-header{z-index:1;border-bottom:1px solid var(--border);min-height:34px;color:var(--text-tertiary);background:var(--surface-subtle);font-size:var(--font-size-caption);position:sticky;top:0}.deployment-version-option{border:0;border-bottom:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:0;outline:0;min-height:44px}.deployment-version-option:last-child{border-bottom:0}.deployment-version-option:hover:not(:disabled){background:var(--surface-hover)}.deployment-version-option[data-selected=true]{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.deployment-version-option[data-current=true]{cursor:default;background:var(--surface-subtle)}.deployment-version-option:disabled{opacity:1}.deployment-version-name{min-width:0;color:var(--text);font-size:var(--font-size-meta);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.deployment-version-state,.deployment-version-traffic,.deployment-version-time{min-width:0;color:var(--text-tertiary);font-size:var(--font-size-caption);white-space:nowrap}.deployment-version-state[data-state=current]{color:var(--success-deep)}.deployment-version-state[data-state=available]{color:var(--accent-strong)}.deployment-version-time{text-overflow:ellipsis;overflow:hidden}.deployment-version-empty{padding:14px 12px}.more-actions-menu{border-radius:var(--radius-inset);background:var(--surface);outline:1px solid var(--studio-outline-surface);outline-offset:-1px;min-width:176px;padding:4px}.more-actions-item{border-radius:var(--radius-chip);min-height:34px;color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-meta);outline:none;align-items:center;padding:0 10px;display:flex}.more-actions-item[data-highlighted]{background:var(--surface-subtle);color:var(--text)}.more-actions-item.danger{color:var(--danger)}.more-actions-item[data-disabled]{cursor:not-allowed;opacity:.45}.more-actions-separator{background:var(--border);height:1px;margin:4px 2px}@media (width<=900px){.delivery-page{padding:20px}.delivery-stat-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.delivery-fact-chain{grid-template-columns:1fr}}@media (width<=1180px){.stat-strip.compact-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-strip.compact-summary>:nth-child(odd){border-left:0}.stat-strip.compact-summary>:nth-child(n+3){border-top:1px solid var(--border)}.stat-strip.compact-summary.runtime-metric-summary{grid-template-columns:repeat(3,minmax(0,1fr))!important}.stat-strip.compact-summary.runtime-metric-summary>*{border-top:0}.stat-strip.compact-summary.runtime-metric-summary>:not(:first-child){border-left:1px solid var(--border)}}@media (width<=620px){.delivery-page{padding:16px}.delivery-intro{flex-direction:column;align-items:start}.delivery-stat-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.delivery-next-step{flex-direction:column;align-items:flex-start}.page-header-actions{max-width:100%;overflow-x:auto}.runtime-status-summary{grid-template-columns:1fr}.runtime-status-summary>div+div{border-top:1px solid var(--border);border-left:0}.stat-strip.compact-summary,.stat-strip.compact-summary.runtime-metric-summary{grid-template-columns:repeat(2,minmax(0,1fr))!important}.stat-strip.compact-summary.runtime-metric-summary>:last-child{border-top:1px solid var(--border);border-left:0;grid-column:1/-1}.compact-status-alert{flex-direction:column;align-items:flex-start;gap:3px}.table-data-body .section-toolbar{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.table-data-body .section-toolbar .search-field{grid-column:1/-1;width:100%;min-width:0}.table-data-body .section-toolbar .compact-select{width:100%;min-width:0}}.observability-overview:not(.has-trend){grid-template-columns:minmax(0,1fr)}@media (width<=620px){.overview-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));padding:0}.overview-metric-card{min-height:68px;padding:10px 12px}.overview-metric-card:nth-child(odd){border-left:0}.overview-metric-card:nth-child(n+3){border-top:1px solid var(--border)}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.chat-wrap{flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.chat-host{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.chat-host>*{min-width:0;min-height:0}.chat-agent-empty{margin:auto}.studio-chat-shell{background:var(--surface);grid-template-columns:232px minmax(0,1fr);width:100%;min-width:0;height:100%;min-height:0;display:grid;overflow:hidden}.chat-session-sidebar{border-right:1px solid color-mix(in srgb, var(--border) 66%, transparent);background:var(--surface);grid-template-rows:48px auto minmax(0,1fr);min-width:0;min-height:0;display:grid;overflow:hidden}.chat-session-header,.chat-conversation-header{border-bottom:1px solid color-mix(in srgb, var(--border) 62%, transparent);align-items:center;gap:8px;min-width:0;height:48px;padding:0 12px;display:flex}.chat-session-header{border-bottom-color:#0000}.chat-session-header>div,.chat-conversation-header>div{flex:1;min-width:0}.chat-session-header strong,.chat-session-header span,.chat-conversation-header strong,.chat-conversation-header span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.chat-session-header strong,.chat-conversation-header strong{color:var(--text);font-size:var(--font-size-body);font-weight:var(--font-weight-medium)}.chat-session-header span,.chat-conversation-header span{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.chat-session-search{padding:2px 8px 5px}.chat-session-search input{border-radius:var(--radius-control);background:color-mix(in srgb, var(--surface-subtle) 72%, var(--surface));width:100%;height:30px;font-size:var(--font-size-meta);border-color:#0000;padding:0 9px}.chat-session-search input:focus{border-color:var(--accent-border);background:var(--surface)}.chat-session-list{overscroll-behavior:contain;min-height:0;padding:2px 7px 14px;overflow-y:auto}.chat-session-item{min-width:0;min-height:34px;color:var(--text-secondary);transition:color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);border-radius:7px;margin-bottom:1px;display:block;position:relative}.chat-session-item:hover,.chat-session-item:focus-within{color:var(--text);background:var(--hover)}.chat-session-item.active{color:var(--text);background:color-mix(in srgb, var(--text) 6%, var(--surface))}.chat-session-item.running:not(.active){background:color-mix(in srgb, var(--accent) 4%, var(--surface))}.chat-session-main{width:100%;min-width:0;min-height:34px;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:0 9px;display:grid}.chat-session-main strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--font-size-meta);font-weight:var(--font-weight-regular);display:block;overflow:hidden}.chat-session-main .session-status{border:1px solid color-mix(in srgb, var(--text-tertiary) 72%, transparent);width:6px;height:6px;transition:opacity var(--motion-fast) var(--ease);background:0 0;border-radius:50%;margin:0}.chat-session-main .session-status.running{border-color:var(--accent);background:0 0;border-top-color:#0000;animation:.8s linear infinite chat-running-ring}.chat-session-main .session-status.failed{border-color:var(--danger);background:var(--danger)}.chat-session-main .session-status.paused{border-color:var(--warning);background:0 0}.chat-session-main .session-status.waiting_input{border-color:var(--warning);background:var(--warning)}.chat-session-delete{width:26px;height:26px;color:var(--text-tertiary);cursor:pointer;opacity:0;transition:opacity var(--motion-fast) var(--ease), transform var(--motion-fast) var(--ease);background:0 0;border:0;border-radius:7px;place-items:center;padding:0;display:grid;position:absolute;top:50%;right:7px;transform:translateY(-50%)scale(.92)}.chat-session-item:hover .chat-session-delete,.chat-session-item:focus-within .chat-session-delete{opacity:1;transform:translateY(-50%)scale(1)}.chat-session-delete:hover{color:var(--danger);background:var(--danger-soft)}.chat-session-delete:disabled{display:none}.chat-list-loading,.chat-sidebar-empty{color:var(--text-tertiary);font-size:var(--font-size-meta);align-items:center;gap:8px;margin:16px;display:flex}.chat-sidebar-empty{line-height:1.55;display:block}.cloud-chat-shell .message-content>:first-child{margin-top:0}.cloud-chat-shell .message-content>:last-child{margin-bottom:0}.cloud-chat-shell .message.pending{opacity:.72}.cloud-chat-pending{color:var(--text-secondary);font-size:var(--font-size-meta);align-items:center;gap:8px;padding:8px 12px;display:flex}.chat-list-loading svg{animation:1.2s ease-in-out infinite chat-running-pulse}@keyframes agentkit-spin{to{transform:rotate(360deg)}}.animate-spin{transform-origin:50%;animation:.8s linear infinite agentkit-spin!important}.cloud-chat-run-warning{border:1px solid color-mix(in srgb, var(--warning) 44%, var(--border));border-radius:var(--radius-md);max-width:800px;color:var(--warning-deep);background:var(--warning-soft);font-size:var(--font-size-meta);align-items:center;gap:7px;margin:0 auto 12px;padding:9px 11px;display:flex}.cloud-chat-run-warning svg{flex:none}.cloud-interaction-card{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);justify-content:space-between;align-items:center;gap:16px;margin-top:10px;padding:12px 14px;display:flex}.cloud-interaction-card>div:first-child{gap:3px;min-width:0;display:grid}.cloud-interaction-card strong{font-size:var(--font-size-meta)}.cloud-interaction-card span{color:var(--text-secondary);font-size:var(--font-size-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cloud-interaction-actions{flex:none;gap:8px;display:flex}.cloud-interaction-actions button{align-items:center;gap:5px;display:inline-flex}.chat-conversation{background:var(--surface);grid-template-rows:48px minmax(0,1fr) auto;min-width:0;min-height:0;display:grid;overflow:hidden}.chat-conversation-header{background:var(--surface);padding:0 20px}.agent-avatar.small{flex:none;width:30px;height:30px}.chat-message-list{overscroll-behavior:contain;min-width:0;min-height:0;padding:26px max(24px,50% - 384px) 18px;scroll-padding-bottom:24px;overflow:hidden auto}.chat-message-list .message{width:100%;max-width:768px;margin:0 auto 26px}.chat-message-list .message-meta{margin-bottom:6px}.chat-message-list .message.user .message-meta{justify-content:flex-end}.chat-message-list .message.user .message-content{width:fit-content;max-width:min(78%,600px);color:var(--text);background:var(--surface-subtle);border:0;border-radius:16px 16px 5px;margin-left:auto;padding:9px 13px}.chat-message-list .message.assistant .message-content{color:var(--text);padding:0}.chat-message-list .message.assistant.error .message-content{border:1px solid color-mix(in srgb, var(--danger) 35%, transparent);border-radius:var(--radius-control);color:var(--danger);background:var(--danger-soft);padding:10px 12px}.chat-empty{width:min(620px,100%);min-height:100%;color:var(--text-secondary);text-align:center;align-content:center;place-items:center;gap:10px;margin:0 auto;display:grid}.chat-empty-icon{width:40px;height:40px;color:var(--text-secondary);background:var(--surface-subtle);border-radius:12px;place-items:center;display:grid}.chat-empty h2{color:var(--text);font-size:var(--font-size-section-title);font-weight:var(--font-weight-medium);margin:0}.chat-empty p{max-width:520px;color:var(--text-tertiary);font-size:var(--font-size-meta);line-height:var(--line-height-body);margin:0 0 12px}.chat-empty .suggestion-list button{background:var(--surface-subtle);border-color:#0000}.chat-empty .suggestion-list button:hover{border-color:var(--border);color:var(--text);background:var(--hover)}.chat-markdown{min-width:0;color:var(--text);font-size:var(--font-size-body);line-height:var(--line-height-editor);overflow-wrap:anywhere}.chat-markdown>:first-child{margin-top:0}.chat-markdown>:last-child{margin-bottom:0}.chat-markdown p,.chat-markdown ul,.chat-markdown ol,.chat-markdown blockquote,.chat-markdown pre,.chat-markdown table{margin:0 0 12px}.chat-markdown ul,.chat-markdown ol{padding-left:22px}.chat-markdown li+li{margin-top:4px}.chat-markdown h1,.chat-markdown h2,.chat-markdown h3{color:var(--text);font-weight:var(--font-weight-semibold);line-height:var(--line-height-title);margin:20px 0 8px}.chat-markdown h1{font-size:var(--font-size-section-title)}.chat-markdown h2,.chat-markdown h3{font-size:var(--font-size-subtitle)}.chat-markdown a{color:var(--accent);text-underline-offset:2px}.chat-markdown code{color:var(--code-text);background:var(--code-bg);font-family:var(--font-mono);font-size:var(--font-size-meta);border-radius:4px;padding:1px 4px}.chat-markdown pre{background:var(--code-bg);border-radius:10px;max-width:100%;padding:12px 14px;overflow:auto}.chat-markdown pre code{background:0 0;padding:0}.chat-markdown table{border-collapse:collapse;max-width:100%;display:block;overflow-x:auto}.chat-markdown th,.chat-markdown td{border:1px solid var(--border);text-align:left;padding:6px 9px}.chat-markdown blockquote{border-left:2px solid var(--border-strong);color:var(--text-secondary);padding-left:12px}.chat-markdown.streaming>:last-child:after{content:"";vertical-align:-.12em;background:var(--accent);border-radius:2px;width:2px;height:1em;margin-left:3px;animation:.9s steps(2,end) infinite chat-stream-caret;display:inline-block}.streaming-turn{animation:chat-message-enter .18s var(--ease)}.chat-processing-group{color:var(--text-tertiary);font-size:var(--font-size-meta);margin:0 0 10px}.chat-processing-group>summary{cursor:pointer;border-radius:6px;align-items:center;gap:6px;width:fit-content;max-width:100%;min-height:28px;padding:2px 4px;list-style:none;display:flex}.chat-processing-group>summary::-webkit-details-marker{display:none}.chat-activity-card>summary::-webkit-details-marker{display:none}.chat-processing-group>summary:hover{color:var(--text-secondary);background:var(--hover)}.chat-processing-group>summary>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.chat-processing-icon{flex:none}.details-chevron{transition:transform var(--motion-fast) var(--ease);flex:none}details[open]>summary .details-chevron{transform:rotate(180deg)}.chat-processing-content{border-left:1px solid var(--border);max-width:720px;margin:4px 0 2px 10px;padding-left:12px}.chat-reasoning-content{color:var(--text-secondary);font-size:var(--font-size-meta);line-height:var(--line-height-body);white-space:pre-wrap;padding:5px 0 9px}.chat-activity-card{color:var(--text-secondary);font-size:var(--font-size-meta)}.chat-activity-card>summary,.chat-activity-row{cursor:pointer;border-radius:6px;align-items:center;gap:7px;min-height:30px;padding:3px 4px;list-style:none;display:flex}.chat-activity-row{cursor:default}.chat-activity-icon{flex:none;place-items:center;width:18px;display:grid}.chat-activity-copy{flex:1;align-items:baseline;gap:6px;min-width:0;display:flex}.chat-activity-copy small{color:var(--text-tertiary);font-size:var(--font-size-caption)}.chat-activity-copy strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:var(--font-weight-regular);overflow:hidden}.chat-activity-status{color:var(--text-tertiary);font-size:var(--font-size-caption);flex:none}.chat-activity-status.failed{color:var(--danger)}.chat-activity-status.waiting{color:var(--warning)}.chat-activity-card pre{max-height:220px;color:var(--code-text);background:var(--code-bg);font-family:var(--font-mono);font-size:var(--font-size-caption);line-height:var(--line-height-control);white-space:pre-wrap;border-radius:8px;margin:4px 4px 8px 29px;padding:9px 10px;overflow:auto}.chat-activity-loading{color:var(--text-tertiary);font-size:var(--font-size-caption);align-items:center;gap:6px;margin-bottom:8px;display:inline-flex}.chat-composer-wrap{background:var(--surface);border-top:0;padding:10px max(24px,50% - 400px) 8px}.chat-pending-interactions{border:1px solid color-mix(in srgb, var(--accent-border) 62%, var(--border));background:color-mix(in srgb, var(--accent-soft) 42%, var(--surface));border-radius:12px;max-width:800px;margin:0 auto 10px;padding:10px;box-shadow:0 8px 24px #18589b14}.chat-pending-interactions-heading{color:var(--text);align-items:center;gap:7px;margin:0 2px 8px;display:flex}.chat-pending-interactions-heading svg{color:var(--accent)}.chat-pending-interactions-heading span{color:var(--text-secondary);font-size:var(--font-size-caption)}.runtime-mode-bar{border:1px solid var(--border);width:min(800px,100%);min-height:42px;color:var(--text-secondary);background:color-mix(in srgb, var(--surface) 96%, transparent);border-radius:14px;align-items:center;gap:9px;margin:0 auto 7px;padding:6px 7px 6px 11px;display:flex;box-shadow:0 2px 7px #0000000a}.runtime-mode-bar.goal{border-color:color-mix(in srgb, var(--accent) 24%, var(--border))}.runtime-mode-bar.paused{background:var(--surface-subtle)}.runtime-mode-icon{width:25px;height:25px;color:var(--accent-strong);background:var(--accent-soft);border-radius:8px;flex:none;place-items:center;display:grid}.runtime-mode-copy{flex:1;min-width:0}.runtime-mode-copy>span{align-items:baseline;gap:6px;min-width:0;display:flex}.runtime-mode-copy strong{color:var(--text);font-size:var(--font-size-meta);font-weight:var(--font-weight-medium);flex:none}.runtime-mode-copy span span{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--font-size-meta);overflow:hidden}.runtime-mode-copy small{color:var(--text-tertiary);font-size:var(--font-size-caption);align-items:center;gap:3px;margin-top:1px;display:flex}.runtime-mode-actions{align-items:center;gap:2px;display:flex}.runtime-mode-actions button{width:29px;height:29px;color:var(--text-secondary);background:0 0;border:0;border-radius:9px;place-items:center;padding:0;display:grid}.runtime-mode-actions button:hover{color:var(--text);background:var(--surface-hover)}.runtime-mode-actions button:focus-visible{box-shadow:var(--shadow-focus-subtle);outline:none}.chat-composer{border:1px solid var(--border);background:color-mix(in srgb, var(--surface) 94%, transparent);max-width:800px;transition:border-color var(--motion-fast) var(--ease), box-shadow var(--motion-fast) var(--ease);border-radius:16px;margin:0 auto;position:relative;overflow:visible;box-shadow:0 2px 7px #0000000f}.composer-file-input{opacity:0;pointer-events:none;width:1px;height:1px;position:fixed}.chat-attachment-list{gap:7px;padding:9px 10px 2px;display:flex;overflow-x:auto}.chat-attachment-chip{border:1px solid var(--border);background:var(--surface-subtle);border-radius:10px;grid-template-columns:34px minmax(0,1fr) 22px;align-items:center;gap:7px;min-width:0;max-width:210px;padding:5px 5px 5px 6px;display:grid;position:relative}.chat-attachment-chip img,.chat-attachment-icon{width:34px;height:34px;color:var(--text-secondary);background:var(--surface);object-fit:cover;border-radius:7px;place-items:center;display:grid}.chat-attachment-copy{min-width:0}.chat-attachment-copy strong,.chat-attachment-copy small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.chat-attachment-copy strong{color:var(--text);font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.chat-attachment-copy small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:1px}.chat-attachment-chip>button{width:22px;height:22px;color:var(--text-tertiary);background:0 0;border:0;border-radius:6px;place-items:center;padding:0;display:grid}.chat-attachment-chip>button:hover{color:var(--text);background:var(--surface-hover)}.chat-composer textarea{width:100%;min-height:42px;max-height:160px;color:var(--text);box-shadow:none;resize:none;background:0 0;border:0;border-radius:0;padding:11px 13px 4px;overflow-y:auto}.chat-composer textarea:hover,.chat-composer textarea:focus{box-shadow:none;border:0}.chat-composer-footer{align-items:center;gap:7px;min-height:34px;padding:1px 6px 6px 10px;display:flex}.chat-plus-trigger,.chat-mode-chip{height:28px;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;display:inline-flex}.chat-plus-trigger{border-radius:9px;width:28px;padding:0}.chat-mode-chip{color:var(--accent-strong);background:var(--accent-soft);font-size:var(--font-size-meta);border-radius:9px;gap:5px;padding:0 8px}.chat-plus-trigger:hover,.chat-plus-trigger[data-state=open]{color:var(--text);background:var(--surface-subtle)}.chat-plus-trigger:focus-visible,.chat-mode-chip:focus-visible{box-shadow:var(--shadow-focus-subtle);outline:none}.composer-action-menu{z-index:1250;border:1px solid var(--border-strong);width:min(310px,100vw - 24px);color:var(--text);background:var(--surface);box-shadow:var(--shadow-overlay);transform-origin:var(--radix-dropdown-menu-content-transform-origin);animation:chat-approval-menu-enter .15s var(--ease);border-radius:14px;padding:7px}.composer-action-heading{color:var(--text-tertiary);font-size:var(--font-size-caption);padding:5px 9px;display:block}.composer-action-item{cursor:pointer;border-radius:9px;outline:none;grid-template-columns:22px minmax(0,1fr) 18px;align-items:center;gap:9px;min-height:48px;padding:6px 9px;display:grid}.composer-action-item[data-highlighted]{background:var(--surface-subtle)}.composer-action-item>span{min-width:0}.composer-action-item strong,.composer-action-item small{display:block}.composer-action-item strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.composer-action-item small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.composer-action-check{color:var(--accent)}.composer-action-separator{background:var(--border);height:1px;margin:5px 7px}.composer-command-menu{z-index:100;border:1px solid var(--border-strong);width:min(520px,100%);color:var(--text);background:var(--surface);box-shadow:var(--shadow-overlay);animation:chat-approval-menu-enter .14s var(--ease);border-radius:14px;padding:7px;position:absolute;bottom:calc(100% + 9px);left:0}.composer-command-menu [cmdk-list]{gap:2px;display:grid}.composer-command-menu [cmdk-item]{cursor:pointer;border-radius:9px;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:50px;padding:6px 9px;display:grid}.composer-command-menu [cmdk-item][data-active=true],.composer-command-menu [cmdk-item][data-selected=true]{background:var(--surface-subtle)}.composer-command-menu [cmdk-item]>span{min-width:0}.composer-command-menu strong,.composer-command-menu small{display:block}.composer-command-menu strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.composer-command-menu small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.composer-command-menu kbd{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-caption)}.chat-approval-trigger{height:28px;color:var(--text-secondary);font-size:var(--font-size-meta);cursor:pointer;transition:color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);background:0 0;border:0;border-radius:9px;flex:none;align-items:center;gap:6px;padding:0 8px;display:inline-flex}.chat-approval-trigger:hover,.chat-approval-trigger[data-state=open]{color:var(--text);background:var(--surface-subtle)}.chat-approval-trigger:focus-visible{box-shadow:var(--shadow-focus-subtle);outline:none}.chat-approval-trigger.full{color:var(--danger)}.chat-composer-spacer{flex:1;min-width:8px}.chat-model-trigger{min-width:0;max-width:200px;height:28px;color:var(--text-secondary);font-size:var(--font-size-meta);cursor:pointer;background:0 0;border:0;border-radius:9px;align-items:center;gap:5px;padding:0 7px;display:inline-flex}.chat-model-trigger span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.chat-model-trigger:hover,.chat-model-trigger[data-state=open]{color:var(--text);background:color-mix(in srgb, var(--text) 5%, transparent)}.chat-model-trigger:disabled{opacity:.72;cursor:default}.chat-context-ring{border-radius:var(--radius-circle);width:25px;height:25px;color:var(--text-secondary);cursor:help;outline:none;flex:none;place-items:center;display:grid;position:relative}.chat-context-ring:focus-visible{box-shadow:var(--shadow-focus-subtle)}.chat-context-ring svg{width:23px;height:23px;transform:rotate(-90deg)}.chat-context-track,.chat-context-value{fill:none;stroke-width:2.25px}.chat-context-track{stroke:color-mix(in srgb, var(--text-tertiary) 24%, transparent)}.chat-context-value{stroke:currentColor}.chat-context-ring.unknown .chat-context-value{opacity:.55}.chat-context-tooltip{z-index:1300;border:1px solid var(--border-card);width:max-content;min-width:190px;max-width:min(270px,100vw - 32px);color:var(--text);background:var(--surface);box-shadow:var(--shadow-overlay);opacity:0;visibility:hidden;pointer-events:none;transform-origin:bottom;transition:opacity var(--motion-fast) var(--ease), transform var(--motion-fast) var(--ease), visibility var(--motion-fast) var(--ease);border-radius:12px;gap:3px;padding:11px 13px;display:grid;position:absolute;bottom:calc(100% + 10px);right:-54px;transform:translateY(4px)scale(.98)}.chat-context-tooltip:after{content:"";border-right:1px solid var(--border-card);border-bottom:1px solid var(--border-card);background:var(--surface);width:9px;height:9px;position:absolute;bottom:-5px;right:61px;transform:rotate(45deg)}.chat-context-tooltip>span{color:var(--text-tertiary);font-size:var(--font-size-caption)}.chat-context-tooltip>strong{font-size:var(--font-size-subtitle);font-weight:var(--font-weight-semibold)}.chat-context-tooltip>small{color:var(--text-secondary);font-size:var(--font-size-meta);white-space:nowrap}.chat-context-ring:hover .chat-context-tooltip,.chat-context-ring:focus .chat-context-tooltip,.chat-context-ring:focus-within .chat-context-tooltip{opacity:1;visibility:visible;transform:translateY(0)scale(1)}.chat-model-menu{z-index:1200;border:1px solid var(--border);min-width:230px;max-width:min(360px,100vw - 24px);color:var(--text);background:color-mix(in srgb, var(--surface) 98%, transparent);box-shadow:var(--shadow-overlay);transform-origin:var(--radix-dropdown-menu-content-transform-origin);animation:chat-approval-menu-enter .15s var(--ease);border-radius:14px;padding:7px}.chat-model-menu-heading{color:var(--text-tertiary);font-size:var(--font-size-caption);padding:5px 9px 7px}.chat-model-option{cursor:pointer;min-height:36px;font-size:var(--font-size-control);border-radius:8px;outline:none;grid-template-columns:minmax(0,1fr) 18px;align-items:center;gap:12px;padding:0 9px;display:grid}.chat-model-option>span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chat-model-option[data-highlighted]{background:color-mix(in srgb, var(--text) 6%, transparent)}.chat-model-option[data-state=checked]{font-weight:var(--font-weight-medium)}.chat-model-option [data-radix-collection-item]{color:var(--text)}.chat-send-button{width:32px;height:32px;color:var(--surface);background:var(--text);cursor:pointer;transition:opacity var(--motion-fast) var(--ease), transform var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease);border:0;border-radius:50%;flex:none;place-items:center;padding:0;display:grid}.chat-send-button:hover{opacity:.84;transform:scale(1.04)}.chat-send-button:disabled{opacity:.35;cursor:not-allowed}.chat-send-button.pause{color:var(--surface);background:var(--text);animation:chat-control-enter .16s var(--ease)}.chat-approval-menu{z-index:1200;border:1px solid var(--border-strong);width:min(420px,100vw - 24px);color:var(--text);background:color-mix(in srgb, var(--surface) 98%, transparent);box-shadow:var(--shadow-overlay);transform-origin:var(--radix-dropdown-menu-content-transform-origin);animation:chat-approval-menu-enter .15s var(--ease);border-radius:16px;padding:8px}.chat-approval-menu-heading{min-height:36px;color:var(--text-tertiary);font-size:var(--font-size-caption);justify-content:space-between;align-items:baseline;gap:16px;padding:4px 10px 8px;display:flex}.chat-approval-menu-heading strong{color:var(--text-secondary);font-size:var(--font-size-meta);font-weight:var(--font-weight-medium)}.chat-approval-option{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:11px;outline:none;grid-template-columns:28px minmax(0,1fr) 22px;align-items:center;gap:8px;min-height:64px;padding:8px 10px;display:grid}.chat-approval-option[data-highlighted]{background:var(--surface-subtle)}.chat-approval-option[data-state=checked]{background:color-mix(in srgb, var(--accent-soft) 58%, var(--surface))}.chat-approval-option.full[data-state=checked]{background:color-mix(in srgb, var(--danger-soft) 64%, var(--surface))}.chat-approval-option-icon{color:var(--text-tertiary);align-self:start;place-items:center;padding-top:2px;display:grid}.chat-approval-option.full .chat-approval-option-icon,.chat-approval-option.full .chat-approval-option-copy strong,.chat-approval-option.full .chat-approval-indicator{color:var(--danger)}.chat-approval-option-copy{min-width:0}.chat-approval-option-copy strong,.chat-approval-option-copy small{display:block}.chat-approval-option-copy strong{color:var(--text);font-size:var(--font-size-control);font-weight:var(--font-weight-medium);margin-bottom:3px}.chat-approval-option-copy small{color:var(--text-tertiary);font-size:var(--font-size-caption);line-height:var(--line-height-body)}.chat-approval-indicator{color:var(--accent);place-items:center;display:grid}@keyframes chat-message-enter{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@keyframes chat-control-enter{0%{opacity:.55;transform:scale(.84)}to{opacity:1;transform:scale(1)}}@keyframes chat-stream-caret{0%,42%{opacity:1}43%,to{opacity:.2}}@keyframes chat-running-ring{to{transform:rotate(360deg)}}@keyframes chat-approval-menu-enter{0%{opacity:0;transform:translateY(4px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@media (width<=1023px){.studio-chat-shell{grid-template-columns:204px minmax(0,1fr)}.chat-session-header{padding:0 8px}.chat-message-list,.chat-composer-wrap{padding-left:18px;padding-right:18px}.chat-message-list .message.user .message-content{max-width:88%}}@media (width>=1920px){.studio-chat-shell{grid-template-columns:248px minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){.streaming-turn,.chat-send-button.pause,.chat-markdown.streaming>:last-child:after,.chat-session-main .session-status.running,.chat-approval-menu,.chat-model-menu{animation:none}}.inline-alert.success{border-color:var(--edge-border);background:var(--success-soft);color:var(--success)}.skill-selection-toolbar{color:var(--text-secondary);font-size:var(--font-size-meta);justify-content:space-between;align-items:center;gap:12px;margin-top:14px;display:flex}.skill-selection-actions{gap:6px;display:inline-flex}.skill-import-state{font-weight:var(--font-weight-medium);display:block}.skill-import-state.succeeded{color:var(--success)}.skill-import-state.failed{color:var(--danger)}.skill-import-state.pending{color:var(--accent-strong)}.chat-loading{color:var(--text-tertiary);font-size:var(--font-size-control);flex:1;justify-content:center;align-items:center;display:flex}.chat-run-panel{border-left:1px solid var(--border-card);background:var(--surface);flex-direction:column;flex-shrink:0;width:360px;height:100%;min-height:0;display:flex;overflow:hidden}.chat-run-head{border-bottom:1px solid var(--border-card);align-items:center;gap:6px;min-height:48px;padding:7px 12px 7px 16px;display:flex}.chat-run-title{font-size:var(--font-size-meta);font-weight:var(--font-weight-semibold);color:var(--text);align-items:center;gap:6px;display:inline-flex}.chat-run-head-spacer{flex:1}.chat-run-empty{font-size:var(--font-size-meta);color:var(--text-tertiary);line-height:var(--line-height-body);text-align:center;flex:1;justify-content:center;align-items:center;gap:8px;padding:32px 28px;display:flex}.chat-run-scroll{scrollbar-gutter:stable;flex:1;min-width:0;min-height:0;overflow-y:auto}.chat-run-overview{border-bottom:1px solid var(--border-card);background:linear-gradient(180deg, var(--surface-subtle), var(--surface));padding:16px}.chat-run-status-row{align-items:center;gap:10px;display:flex}.chat-run-state-icon{background:var(--surface);width:30px;height:30px;color:var(--text-tertiary);box-shadow:inset 0 0 0 1px var(--border-card);border-radius:9px;flex:none;place-items:center;display:grid}.chat-run-state-icon.running{color:var(--info)}.chat-run-state-icon.completed{color:var(--success)}.chat-run-state-icon.failed{color:var(--danger)}.chat-run-identity{flex:1;min-width:0}.chat-run-identity strong,.chat-run-identity span{display:block}.chat-run-identity strong{font-size:var(--font-size-meta);font-weight:var(--font-weight-semibold);color:var(--text)}.chat-run-identity span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-micro);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;overflow:hidden}.chat-run-state{border-radius:var(--radius-pill);background:var(--surface);color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-nano);font-weight:var(--font-weight-semibold);letter-spacing:.03em;box-shadow:inset 0 0 0 1px var(--border-card);padding:3px 7px}.chat-run-state.running{color:var(--info);background:var(--info-soft)}.chat-run-state.completed{color:var(--success);background:var(--success-soft)}.chat-run-state.failed{color:var(--danger);background:var(--danger-soft)}.chat-run-error{border:1px solid color-mix(in srgb, var(--danger) 32%, transparent);background:var(--danger-soft);color:var(--danger);border-radius:9px;align-items:flex-start;gap:8px;margin-top:12px;padding:10px;display:flex}.chat-run-error>svg{flex:none;margin-top:1px}.chat-run-error strong,.chat-run-error span{display:block}.chat-run-error strong{font-size:var(--font-size-caption)}.chat-run-error span{color:var(--text-secondary);font-size:var(--font-size-fine);line-height:var(--line-height-caption);overflow-wrap:anywhere;margin-top:2px}.chat-run-route{min-width:0;color:var(--text-tertiary);font-size:var(--font-size-micro);white-space:nowrap;align-items:center;gap:7px;margin-top:14px;display:flex;overflow:hidden}.chat-run-route svg{color:var(--text-secondary);flex:none}.chat-run-route span{text-overflow:ellipsis;overflow:hidden}.chat-run-route i{background:var(--border-strong);flex:none;width:13px;height:1px}.chat-run-section{border-bottom:1px solid var(--border-card);padding:14px 16px}.chat-run-section-title{font-size:var(--font-size-caption);font-weight:var(--font-weight-semibold);color:var(--text-secondary);justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.chat-run-section-title small{color:var(--text-faint);font-size:var(--font-size-micro);font-weight:var(--font-weight-regular)}.chat-run-metrics{border:1px solid var(--border-card);border-radius:10px;grid-template-columns:repeat(2,minmax(0,1fr));display:grid;overflow:hidden}.chat-run-metrics>div{background:var(--surface-subtle);grid-template-columns:14px minmax(0,1fr);gap:2px 6px;min-width:0;padding:10px;display:grid}.chat-run-metrics>div:nth-child(odd){border-right:1px solid var(--border-card)}.chat-run-metrics>div:nth-child(-n+2){border-bottom:1px solid var(--border-card)}.chat-run-metrics svg{color:var(--text-faint);grid-row:1/span 2;margin-top:1px}.chat-run-metrics span{color:var(--text-tertiary);font-size:var(--font-size-micro)}.chat-run-metrics strong{color:var(--text);font-family:var(--font-mono);font-size:var(--font-size-fine);font-weight:var(--font-weight-medium);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pcm-run-health{border:1px solid var(--border-card);background:var(--surface-subtle);border-radius:10px;align-items:flex-start;gap:9px;padding:10px;display:flex}.pcm-run-health>svg{flex:none;margin-top:1px}.pcm-run-health.healthy>svg{color:var(--success)}.pcm-run-health.adjusted>svg{color:var(--warning)}.pcm-run-health.pending>svg{color:var(--text-faint)}.pcm-run-health div{min-width:0}.pcm-run-health strong,.pcm-run-health span{display:block}.pcm-run-health strong{color:var(--text);font-size:var(--font-size-fine)}.pcm-run-health span{color:var(--text-tertiary);font-size:var(--font-size-micro);margin-top:3px}.pcm-run-signal-list{flex-direction:column;gap:5px;margin-top:8px;display:flex}.pcm-run-signal{background:color-mix(in srgb, var(--surface-subtle) 72%, transparent);border-radius:8px;overflow:hidden}.pcm-run-signal>summary{cursor:pointer;grid-template-columns:14px minmax(0,1fr) 14px;align-items:flex-start;gap:8px;padding:8px;list-style:none;display:grid}.pcm-run-signal>summary::-webkit-details-marker{display:none}.pcm-run-signal>summary:hover{background:color-mix(in srgb, var(--surface-hover) 64%, transparent)}.pcm-run-signal>summary:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}.pcm-run-signal>summary>svg:first-child{color:var(--accent-strong);margin-top:1px}.pcm-run-signal>summary>div{min-width:0}.pcm-run-signal>summary strong,.pcm-run-signal>summary span{display:block}.pcm-run-signal>summary strong{color:var(--text-secondary);font-size:var(--font-size-micro);font-weight:var(--font-weight-semibold)}.pcm-run-signal>summary span{color:var(--text-faint);font-size:var(--font-size-micro);margin-top:2px;line-height:1.45}.pcm-run-signal-chevron{color:var(--text-faint);margin-top:1px;transition:transform .16s}.pcm-run-signal[open] .pcm-run-signal-chevron{transform:rotate(180deg)}.pcm-run-signal-static{background:color-mix(in srgb, var(--surface-subtle) 72%, transparent);border-radius:8px;grid-template-columns:14px minmax(0,1fr);align-items:flex-start;gap:8px;padding:8px;display:grid}.pcm-run-signal-static>svg{color:var(--accent-strong);margin-top:1px}.pcm-run-signal-static.attention>svg{color:var(--warning)}.pcm-run-signal-static strong,.pcm-run-signal-static span{display:block}.pcm-run-signal-static strong{color:var(--text-secondary);font-size:var(--font-size-micro);font-weight:var(--font-weight-semibold)}.pcm-run-signal-static span{color:var(--text-faint);font-size:var(--font-size-micro);margin-top:2px;line-height:1.45}.pcm-run-signal-details{border-top:1px solid var(--border-card);padding:4px 8px 8px 30px}.pcm-run-signal-details>div{border-bottom:1px solid color-mix(in srgb, var(--border-card) 65%, transparent);grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:7px 0;display:grid}.pcm-run-signal-details>div:last-of-type{border-bottom:0}.pcm-run-signal-details span,.pcm-run-signal-details strong,.pcm-run-signal-details small{display:block}.pcm-run-signal-details strong{color:var(--text-secondary);font-size:var(--font-size-micro)}.pcm-run-signal-details small{color:var(--text-faint);font-size:var(--font-size-micro);margin-top:2px}.pcm-run-signal-details em{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-micro);font-style:normal}.pcm-run-signal-details p{color:var(--text-faint);font-size:var(--font-size-micro);margin:6px 0 0;line-height:1.5}.pcm-run-signal-details>.pcm-run-prompt-section{display:block}.pcm-run-prompt-section pre{border:1px solid var(--border-card);background:var(--surface-raised);max-height:180px;color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--font-size-micro);white-space:pre-wrap;word-break:break-word;border-radius:6px;margin:7px 0 0;padding:8px;line-height:1.5;overflow:auto}.trace-pcm-evidence{gap:10px;padding:2px;display:grid}.trace-pcm-evidence>section{border:1px solid var(--border-card);background:color-mix(in srgb, var(--surface-subtle) 72%, transparent);border-radius:9px;padding:12px}.trace-pcm-evidence h3{color:var(--text);font-size:var(--font-size-fine);margin:0}.trace-pcm-evidence p{color:var(--text-tertiary);font-size:var(--font-size-micro);margin:5px 0 9px;line-height:1.5}.trace-pcm-evidence dl{margin:0}.trace-pcm-evidence dl>div{border-bottom:1px solid color-mix(in srgb, var(--border-card) 64%, transparent);grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:6px 0;display:grid}.trace-pcm-evidence dl>div:last-child{border-bottom:0}.trace-pcm-evidence dt{color:var(--text-secondary);font-size:var(--font-size-micro)}.trace-pcm-evidence dd{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--font-size-micro);margin:0}.trace-pcm-evidence small{color:var(--text-faint);font-size:var(--font-size-micro);overflow-wrap:anywhere;margin-top:8px;display:block}.chat-run-waterfall{flex-direction:column;gap:7px;display:flex}.chat-run-waterfall-row{grid-template-columns:minmax(76px,.8fr) minmax(82px,1fr) 42px;align-items:center;gap:7px;min-width:0;display:grid}.chat-run-waterfall-label{color:var(--text-secondary);font-size:var(--font-size-micro);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chat-run-waterfall-track{border-radius:var(--radius-pill);background:var(--surface-sunken);height:5px;position:relative;overflow:hidden}.chat-run-waterfall-track i{border-radius:var(--radius-pill);background:var(--accent);opacity:.72;min-width:3px;position:absolute;top:0;bottom:0}.chat-run-waterfall-track i.failed{background:var(--danger)}.chat-run-waterfall-row small{color:var(--text-faint);font-family:var(--font-mono);font-size:var(--font-size-nano);text-align:right}.chat-run-inline-empty{color:var(--text-faint);font-size:var(--font-size-fine);padding:8px 0}.chat-run-events-section{border-bottom:0}.chat-run-timeline{overscroll-behavior:contain;flex-direction:column;gap:0;display:flex;overflow-y:auto}.chat-run-event{grid-template-columns:24px minmax(0,1fr);gap:8px;padding:6px 0 10px;display:grid;position:relative}.chat-run-event:not(:last-child):before{content:"";background:var(--border-card);width:1px;position:absolute;top:27px;bottom:-1px;left:11px}.chat-run-event-icon{z-index:1;background:var(--surface-subtle);width:24px;height:24px;color:var(--text-tertiary);box-shadow:inset 0 0 0 1px var(--border-card);border-radius:7px;place-items:center;display:grid;position:relative}.chat-run-event.failed .chat-run-event-icon{color:var(--danger);background:var(--danger-soft)}.chat-run-event.running .chat-run-event-icon{color:var(--info)}.chat-run-event.usage .chat-run-event-icon{color:var(--success)}.chat-run-event-copy{min-width:0;padding-top:2px}.chat-run-event-copy>div{justify-content:space-between;align-items:baseline;gap:8px;min-width:0;display:flex}.chat-run-event-copy strong{min-width:0;font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);color:var(--text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chat-run-event-copy small{font-size:var(--font-size-nano);color:var(--text-tertiary);font-family:var(--font-mono);flex:none}.chat-run-event-copy details{margin-top:3px}.chat-run-event-copy summary{width:max-content;color:var(--text-faint);font-size:var(--font-size-micro);cursor:pointer;list-style:none}.chat-run-event-copy summary::-webkit-details-marker{display:none}.chat-run-event-copy details[open] summary{color:var(--accent-strong)}.chat-run-event-copy pre{border:1px solid var(--border-card);background:var(--surface-subtle);max-height:180px;color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--font-size-micro);line-height:var(--line-height-code-compact);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px;margin:7px 0 0;padding:8px 9px;overflow:auto}.chat-run-footer{border-top:1px solid var(--border-card);background:color-mix(in srgb, var(--surface) 94%, transparent);flex:none;padding:10px 12px}.chat-run-footer .btn{justify-content:center;width:100%;min-height:34px}.chat-workbench-host{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.copy-btn{width:20px;height:20px;color:var(--text-faint);cursor:pointer;transition:all var(--motion-fast) var(--ease);background:0 0;border:0;border-radius:5px;flex-shrink:0;place-items:center;display:inline-grid}.copy-btn:hover{background:var(--accent-soft);color:var(--accent-strong)}.copy-btn.copy-visible{opacity:1}.trace-kv-row{padding-right:26px;position:relative}.trace-kv-copy{opacity:0;position:absolute;top:6px;right:0}.trace-kv-row:hover .trace-kv-copy{opacity:1}.io-stack{flex-direction:column;gap:10px;display:flex}.io-block{border:1px solid var(--border-card);border-left:3px solid var(--text-faint);border-radius:var(--radius-control);background:var(--surface);padding:9px 12px}.io-block.io-message{border-left-color:var(--accent)}.io-block.io-thinking{border-left-color:#a1a1aa}.io-block.io-tool{border-left-color:#71717a}.io-head{font-size:var(--font-size-meta);font-weight:var(--font-weight-semibold);color:var(--text);align-items:center;gap:8px;display:flex}.io-label{align-items:center;gap:5px;display:inline-flex}.io-meta{font-size:var(--font-size-caption);font-weight:var(--font-weight-regular);color:var(--text-faint)}.io-text{font-size:var(--font-size-meta);line-height:var(--line-height-editor);color:var(--text-label);white-space:pre-wrap;word-break:break-word;-webkit-user-select:text;user-select:text;max-height:260px;margin-top:6px;overflow-y:auto}.io-expand{font-size:var(--font-size-meta);color:var(--accent-strong);cursor:pointer;background:0 0;border:0;margin-top:6px;padding:0}.io-expand:hover{text-decoration:underline}:root:not(.dark){--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--kc-accent-border:#ccecff;--kc-accent-fill:#f0f9ff;--kc-accent-fill-strong:#f3faff;--kc-user-bubble:#ecf4ff;--kc-user-bubble-border:#cce2fb;--kc-think-border:#d8e8f2;--kc-think-fill:#f7fbfe;--kc-think-hover:#edf8ff;--kc-think-divider:#e1edf4;--kc-code-fill:#f6f8fa;--kc-composer-border:#b9c6cf;--kc-graph-fill:#fbfcfd;--kc-graph-dot:#dce5eb;--kc-node-border:#bdc8cf;--kc-edge:#7f919d;--kc-rail-fill:#f8fafc}:root.dark{--kc-accent-border:color-mix(in srgb, var(--accent) 36%, var(--border));--kc-accent-fill:color-mix(in srgb, var(--accent-soft) 72%, var(--surface));--kc-accent-fill-strong:color-mix(in srgb, var(--accent-soft) 54%, var(--surface));--kc-user-bubble:color-mix(in srgb, var(--accent-soft) 80%, var(--surface));--kc-user-bubble-border:color-mix(in srgb, var(--accent) 35%, var(--border));--kc-think-border:color-mix(in srgb, var(--accent) 30%, var(--border));--kc-think-fill:color-mix(in srgb, var(--accent-soft) 32%, var(--surface));--kc-think-hover:color-mix(in srgb, var(--accent-soft) 54%, var(--surface));--kc-think-divider:color-mix(in srgb, var(--accent) 20%, var(--border));--kc-code-fill:var(--code-bg);--kc-composer-border:var(--border-strong);--kc-graph-fill:color-mix(in srgb, var(--surface) 86%, var(--canvas));--kc-graph-dot:color-mix(in srgb, var(--border-strong) 72%, transparent);--kc-node-border:var(--border-strong);--kc-edge:var(--text-tertiary);--kc-rail-fill:var(--surface-subtle)}html,body{background:var(--canvas);min-width:0}body{font-size:14px;overflow-x:auto}*{scrollbar-color:var(--border-strong) transparent;scrollbar-width:thin}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);background-clip:padding-box;border:2px solid #0000;border-radius:3px;min-height:40px;transition:background-color .16s}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary);background-clip:padding-box}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline-offset:2px;outline:2px solid #0091ea94}.app-shell{--studio-app-rail:216px;background:var(--canvas);min-width:0}.app-shell[data-rail=compact]{--studio-app-rail:80px}.app-shell .sidebar,.navigation-rail{width:var(--studio-app-rail);border-right:1px solid var(--rail-divider);background:var(--sidebar)}.app-shell .app-main{min-width:0;margin-left:var(--studio-app-rail)}.global-header{border-bottom:1px solid var(--rail-divider);background:var(--surface);min-height:64px}.global-header .crumb{border:1px solid var(--border);background:var(--surface);min-height:28px;color:var(--text-secondary);border-radius:4px;outline:none;padding:0 8px}.global-header .crumb:hover{border-color:var(--border-strong);background:var(--surface-subtle);color:var(--text)}@media (width<=1440px){.global-header{padding-inline:16px}.header-actions>.tag,.header-actions>.badge{display:none}}.page-container{max-width:var(--studio-page-max,1760px);padding:24px}.page-container[data-layout=document]{max-width:var(--studio-page-max,1760px)}.page-container[data-layout=workbench]{height:calc(100dvh - 64px)}.navigation-rail{padding:12px 10px}.navigation-rail .product{height:48px;padding:0 8px}.navigation-rail .product-mark{background:var(--accent);border-radius:6px;width:32px;height:32px}.navigation-rail .workspace-switcher{border:1px solid var(--border);background:var(--surface);border-radius:4px;min-height:48px;margin:8px 0}.navigation-rail .workspace-switcher:hover{border-color:var(--accent-border);background:var(--accent-soft)}.navigation-rail .primary-nav{padding:6px 0 12px}.navigation-rail .nav-group+.nav-group{margin-top:10px}.navigation-rail .nav-label{color:var(--text-faint);margin:0 0 3px;padding:0 10px;font-size:12px;font-weight:500;line-height:22px;display:block}.navigation-rail .nav-item{box-sizing:border-box;width:100%;min-height:34px;color:var(--text-secondary);border:1px solid #0000;border-radius:4px;margin:0;padding:0 10px}.app-shell[data-rail=expanded] .navigation-rail .nav-item{min-width:100%}.navigation-rail .nav-item svg{flex-basis:18px;width:18px;height:18px}.navigation-rail .nav-item:hover{background:var(--surface-hover);color:var(--text)}.navigation-rail .nav-item.active{background:var(--accent-soft);color:var(--accent-strong);border-color:#0000;position:relative}.navigation-rail .nav-item.active:before{content:"";background:var(--accent);border-radius:0 2px 2px 0;width:3px;height:18px;position:absolute;left:-1px}.navigation-rail .sidebar-footer{border-top:1px solid var(--rail-divider)}.app-shell[data-rail=compact] .navigation-rail .workspace-switcher,.app-shell[data-rail=compact] .navigation-rail .nav-item{width:44px;min-width:44px;height:36px;min-height:36px}:where(.block:not(.runtime-resource-group),.table-section,.trace-list-page,.wizard-content,.agent-editor,.authoring-mode-panel,.studio-data-table,.stat-strip>*,.page-tabs,.chat-session-sidebar,.chat-conversation,.chat-run-panel,.trace-run-panel,.trace-span-panel,.trace-detail-panel,.data-page-body>.empty-state,.orchestration-canvas,.orchestration-aside){border:1px solid var(--border-card);background:var(--surface);border-radius:6px;outline:none}:where(.authoring-chat-column,.authoring-input-card,.authoring-inspection-card,.pipeline-node-card,.capability-empty-state,.code-viewer,.a2ui-surface,.appearance-option,.more-actions-menu,.studio-select-content,.studio-multi-select-popover,.composer-action-menu,.composer-command-menu,.studio-tooltip){border:1px solid var(--border);border-radius:4px;outline:none}.block{padding:20px 24px}.section-heading,.block-head,.agents-catalog-header,.runtime-resource-group>header{gap:12px}.section-heading h2,.agents-catalog-header h2,.agents-section-heading h2{letter-spacing:0;font-size:16px;line-height:24px}.section-heading p,.agents-catalog-header p,.agents-section-heading p{color:var(--text-tertiary);font-size:12px;line-height:18px}.stat-strip{gap:16px;margin-bottom:16px}.stat-strip>*{min-height:112px;padding:18px 20px}.stat-strip>.emphasis{border-color:var(--kc-accent-border);background:var(--kc-accent-fill)}.stat-strip strong{font-size:24px}.button,.icon-button,button,input,textarea,select,.studio-select-trigger,.studio-multi-select-trigger,.search-field{border-radius:4px}button{appearance:none;color:inherit;cursor:pointer;background:0 0;border:0;outline:none;margin:0;padding:0}button:disabled{cursor:not-allowed}.button,.icon-button{border:1px solid #0000;outline:none;min-height:36px;box-shadow:none!important}.button:not(.accent):not(.tertiary),.button.secondary,.icon-button.secondary,.global-header .icon-button,.segmented-control,.page-tabs{border:1px solid var(--border-strong);background:var(--surface)}.segmented-control,.page-tabs{border-color:var(--border)}.page-tabs button,.segmented-control button{border:1px solid #0000;border-radius:3px}.page-tabs button:hover:not(:disabled),.segmented-control button:hover:not(:disabled){background:var(--surface-subtle);color:var(--text)}.page-tabs button.active,.page-tabs button[aria-selected=true],.segmented-control button.selected,.segmented-control button[aria-selected=true]{border-color:var(--kc-accent-border);background:var(--kc-accent-fill);color:var(--accent-strong)}.button:not(.accent):not(.tertiary):hover:not(:disabled),.button.secondary:hover:not(:disabled),.icon-button.secondary:hover:not(:disabled),.global-header .icon-button:hover:not(:disabled){border-color:var(--accent-border);background:var(--accent-soft);color:var(--accent-strong)}.button.accent,.primary-button{border:1px solid var(--button-primary-bg);background:var(--button-primary-bg);color:var(--button-primary-text);border-radius:4px}.button.accent:hover:not(:disabled),.primary-button:hover:not(:disabled){border-color:var(--button-primary-bg-hover);background:var(--button-primary-bg-hover)}.button.tertiary,.icon-button.tertiary,.text-button{background:0 0;border:1px solid #0000}.button.tertiary:hover:not(:disabled),.icon-button.tertiary:hover:not(:disabled),.text-button:hover:not(:disabled){background:var(--surface-hover);color:var(--accent-strong)}:where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),textarea,select,.studio-select-trigger,.studio-multi-select-trigger){border:1px solid var(--border-strong);background:var(--surface);outline:none;box-shadow:none!important}:where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),textarea,select,.studio-select-trigger,.studio-multi-select-trigger):hover:not(:disabled){border-color:color-mix(in srgb, var(--border-strong) 74%, var(--text-tertiary));background:var(--surface)}:where(input,textarea,select):focus,.studio-select-trigger:focus-visible,.studio-select-trigger[data-state=open],.studio-multi-select-trigger:focus-visible,.studio-multi-select-trigger[aria-expanded=true]{border-color:var(--accent);outline-offset:0;background:var(--surface);outline:2px solid #0091ea29}.search-field{border:1px solid var(--border-strong);background:var(--surface);outline:none;min-height:36px}.search-field:focus-within{border-color:var(--accent);outline-offset:0;background:var(--surface);outline:2px solid #0091ea29}.choice-card,.suggestion-list button{border:1px solid var(--border);box-shadow:none}.choice-card:hover,.suggestion-list button:hover{border-color:var(--border-strong)}.choice-card.selected{border-color:var(--kc-accent-border);background:var(--kc-accent-fill)}.chat-session-main{border:1px solid #0000}.search-field input,.search-field input:hover,.search-field input:focus{background:0 0;border:0;outline:0}.studio-field-label-row{align-items:center;gap:5px;min-height:24px}.studio-field-label{min-height:24px;color:var(--text-label);align-items:center;font-size:14px;font-weight:500}.studio-field-requirement.required{color:var(--danger)}.field-help-trigger{width:16px;height:16px;color:var(--text-tertiary);background:0 0;border:0;padding:0}.field-help-trigger:hover{color:var(--accent)}.form-grid.two-columns>.studio-form-field>.studio-field-control{align-self:start}.form-grid.two-columns>.studio-form-field,.form-grid.two-columns>.studio-form-field+.studio-form-field{align-self:start;margin-top:0}.form-grid.two-columns>.studio-form-field>.studio-field-control>:is(input:not([type=checkbox]):not([type=radio]),.studio-select-trigger,.studio-multi-select-trigger){min-height:40px}.conversation-settings-body>.studio-form-field{grid-template-rows:24px minmax(40px,auto) auto;align-content:start;align-self:start;gap:6px;min-width:0;display:grid}.conversation-settings-body>.studio-form-field>.studio-field-label-row,.conversation-review-form .studio-field-label-row{min-height:24px}.conversation-settings-body>.studio-form-field>.studio-field-control,.conversation-settings-body>.studio-form-field>.studio-field-control>:is(.studio-select-trigger,.studio-multi-select,.studio-multi-select-trigger){width:100%;min-width:0}.conversation-settings-body>.studio-form-field>.studio-field-footer{align-items:flex-start;min-height:18px}.conversation-settings-body .conversation-runtime-note{background:var(--surface-subtle);border-radius:4px;grid-column:1/-1;margin:0;padding:10px 12px}.conversation-chat:has(.conversation-settings[open]){grid-template-rows:auto minmax(96px,220px) auto auto;overflow-y:auto}.conversation-draft-rail.is-empty{align-self:start;overflow:hidden;height:fit-content!important}.conversation-draft-rail.is-empty .conversation-draft-empty{min-height:136px;padding:20px}.conversation-review-form .form-grid.two-columns{align-items:start}@media (width>=1181px){.conversation-authoring-layout[data-draft-state=empty]{grid-template-columns:minmax(0,1fr) minmax(248px,.42fr)}.conversation-authoring-layout[data-draft-state=review]{grid-template-columns:minmax(480px,1fr) minmax(480px,.92fr)}}.quick-runtime-strip .runtime-logo,.agent-appearance-preview .agent-avatar,.appearance-choice-group button{place-items:center;line-height:0;display:inline-grid}.runtime-logo>svg,.agent-avatar>svg,.appearance-choice-group button>svg{margin:auto;display:block}.agent-edit-nav{border:1px solid var(--border);background:var(--surface-subtle);border-radius:6px;gap:4px;margin-bottom:14px;padding:3px;display:flex}.agent-edit-nav button{min-height:32px;color:var(--text-secondary);font-size:var(--font-size-meta);border:1px solid #0000;border-radius:4px;flex:1;padding:0 12px}.agent-edit-nav button:hover:not(.active){background:var(--surface-hover);color:var(--text)}.agent-edit-nav button.active{border-color:var(--kc-accent-border);background:var(--surface);color:var(--accent-strong)}.agent-version-boundary{margin-bottom:18px}.studio-tooltip{color:#fff;background:#27313a;max-width:280px;padding:8px 10px;font-size:12px;line-height:18px;box-shadow:0 4px 14px #202d3833!important}.studio-tooltip-arrow{fill:#27313a}.tag,.badge{border:1px solid #0000;border-radius:4px;min-height:22px;padding:2px 7px;font-size:12px;line-height:16px}.badge[data-state=ready],.badge[data-state=success]{border-color:color-mix(in srgb, var(--success) 38%, var(--border));background:var(--success-soft);color:var(--success-deep)}.badge[data-state=pending],.badge[data-state=running],.badge[data-state=warning]{border-color:color-mix(in srgb, var(--warning) 38%, var(--border));background:var(--warning-soft);color:var(--warning-deep)}.badge[data-state=failed],.badge[data-state=error]{border-color:color-mix(in srgb, var(--danger) 38%, var(--border));background:var(--danger-soft);color:var(--danger-deep)}.studio-data-table{overflow:hidden}.studio-data-table-scroll{overflow:auto}.studio-data-table table{border-collapse:separate;border-spacing:0}.studio-data-table thead th{border-bottom:1px solid var(--border-card);background:var(--surface-subtle);height:40px;color:var(--text-tertiary);font-size:12px;font-weight:500}.studio-data-table tbody tr{height:56px}.studio-data-table tbody td{border-bottom:1px solid var(--border)}.studio-data-table tbody tr:last-child td{border-bottom:0}.studio-data-table tbody tr:hover,.studio-data-table tbody tr:focus-visible{background:color-mix(in srgb, var(--accent-soft) 48%, var(--surface))}.studio-data-table-pagination{border-top:1px solid var(--border);background:var(--surface);min-height:48px;padding:8px 16px}.studio-data-table-state{min-height:180px}.studio-data-table-state.is-loading{place-items:stretch stretch;gap:10px;padding:16px;display:grid}.studio-table-skeleton{gap:12px;display:grid}.studio-table-skeleton-row{border-bottom:1px solid var(--border);grid-template-columns:1.2fr .8fr .7fr .6fr;align-items:center;gap:20px;min-height:44px;padding:0 8px;display:grid}.studio-table-skeleton-row i{background:linear-gradient(90deg, var(--surface-subtle) 20%, var(--surface) 40%, var(--surface-subtle) 60%);background-size:220% 100%;border-radius:2px;height:12px;animation:1.3s ease-in-out infinite studio-skeleton-wave}.studio-table-loading-copy{color:var(--text-tertiary);justify-content:center;align-items:center;gap:6px;font-size:12px;display:inline-flex}.empty-state{border-color:var(--border-card);background:var(--surface)}.empty-state .empty-icon{border:1px solid var(--kc-accent-border);color:var(--accent);background:var(--accent-soft);border-radius:6px}.studio-select-content,.studio-multi-select-popover,.more-actions-menu,.composer-action-menu,.composer-command-menu,.chat-model-menu,.chat-approval-menu{border-color:var(--border-strong);background:var(--surface);box-shadow:var(--shadow-overlay)!important}.overlay-backdrop{background:#1e2a3461}.studio-dialog,.drawer{border:1px solid var(--border-card);border-radius:6px;box-shadow:0 14px 40px #202d3833!important}.studio-dialog-header,.drawer-header,.studio-dialog-footer,.drawer-footer{border-color:var(--border)}.studio-chat-shell{border:1px solid var(--border-card);background:var(--surface);border-radius:6px}.chat-session-sidebar{border:0;border-right:1px solid var(--border-card);background:var(--surface);border-radius:0}.chat-session-header,.chat-conversation-header{border-bottom:1px solid var(--border);height:56px}.chat-session-header h2,.chat-conversation-header h1{min-width:0;color:var(--text);font-size:14px;font-weight:var(--font-weight-semibold);text-overflow:ellipsis;white-space:nowrap;margin:0;line-height:1.5;overflow:hidden}.chat-session-header>h2,.chat-conversation-header h1{flex:1}.chat-session-mobile-trigger,.chat-session-mobile-close,.chat-session-backdrop{display:none}.chat-session-header-actions{flex:none;align-items:center;gap:4px;display:flex}.chat-session-search{border-bottom:1px solid var(--border);padding:8px 12px}.chat-session-search input{height:32px}.chat-session-item{border:1px solid #0000;border-radius:4px}.chat-session-item:hover,.chat-session-item:focus-within{background:var(--surface-hover)}.chat-session-item.active{border-color:var(--kc-accent-border);background:var(--accent-soft)}.chat-session-item.running:not(.active){background:color-mix(in srgb, var(--accent) 4%, var(--surface));border-color:#0000}.chat-session-skeleton{gap:8px;padding:4px 1px;display:grid}.chat-session-skeleton i{background:linear-gradient(90deg, var(--surface-subtle) 20%, var(--surface-hover) 50%, var(--surface-subtle) 80%);background-size:220% 100%;border-radius:4px;height:36px;animation:1.25s ease-in-out infinite studio-skeleton-wave}.chat-message-list{background:var(--surface);padding:28px max(32px,50% - 410px) 20px}.chat-message-list .message{max-width:820px;margin-bottom:28px}.chat-message-list .message-meta{color:var(--text-tertiary);font-size:12px}.chat-message-list .message.user .message-content{border:1px solid var(--kc-user-bubble-border);background:var(--kc-user-bubble);border-radius:8px 8px 2px;max-width:min(72%,560px);padding:12px}.chat-message-list .message.assistant .message-content{max-width:760px;padding:0}.chat-message-list .message.assistant.error .message-content{background:0 0;border:0;max-width:760px;padding:0}.chat-markdown{color:var(--text);font-size:14px;line-height:1.75}.chat-markdown h1,.chat-markdown h2,.chat-markdown h3{letter-spacing:0}.chat-markdown code{border:1px solid var(--border);background:var(--kc-code-fill);border-radius:3px}.chat-markdown pre{border:1px solid var(--border);border-radius:4px}.chat-code-block{border:1px solid var(--border);background:var(--kc-code-fill);border-radius:6px;margin:0 0 12px;overflow:hidden}.chat-code-header{border-bottom:1px solid var(--border);min-height:34px;color:var(--text-tertiary);background:var(--surface-subtle);font-family:var(--font-mono);text-transform:lowercase;justify-content:space-between;align-items:center;gap:12px;padding:0 10px 0 12px;font-size:12px;display:flex}.chat-code-header button{min-height:28px;color:var(--text-secondary);font-family:var(--font-sans);background:0 0;border-radius:4px;align-items:center;gap:5px;padding:0 7px;font-size:12px;display:inline-flex}.chat-code-header button:hover{color:var(--text);background:var(--surface-hover)}.chat-code-block pre,.chat-markdown .chat-code-block pre{border:0;border-radius:0;margin:0}.chat-markdown blockquote{border-left:3px solid var(--kc-accent-border)}.chat-processing-group{background:0 0;border:0;max-width:640px;margin-bottom:12px}.chat-processing-group>summary{width:fit-content;min-height:28px;color:var(--text-tertiary);border-radius:4px;padding:3px 4px}.chat-processing-group>summary:hover{background:var(--kc-think-hover);color:var(--accent-strong)}.chat-processing-icon{color:var(--accent)}.chat-processing-content{border-top:0;border-left:1px solid var(--kc-think-divider);max-width:none;margin:4px 0 0 7px;padding:0 0 2px 16px}.chat-reasoning-content{color:var(--text-secondary);border-left:0;padding:4px 0 10px;font-size:13px;line-height:1.65}.chat-activity-card>summary,.chat-activity-row{border-bottom:0;border-radius:4px;min-height:30px;padding:3px 4px}.chat-activity-card:last-child>summary,.chat-activity-card:last-child .chat-activity-row{border-bottom:0}.chat-activity-card>summary:hover{color:var(--accent-strong);background:0 0}.chat-composer-wrap{border-top:1px solid var(--border);background:var(--surface);padding:12px max(32px,50% - 426px) 16px}.chat-composer{border:1px solid var(--kc-composer-border);background:var(--surface);border-radius:12px;max-width:820px;box-shadow:0 2px 8px #202d3812!important}.chat-composer:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #0091ea21!important}.chat-composer textarea,.chat-composer textarea:hover,.chat-composer textarea:focus{background:0 0;border-radius:12px 12px 0 0;min-height:64px;padding:13px 14px 5px;font-size:14px;line-height:1.55;box-shadow:none!important;border:0!important;outline:0!important}.chat-composer-footer{border-top:0;min-height:36px;padding:2px 8px 8px 10px}.cloud-chat-composer-footer{justify-content:space-between;padding-top:7px}.cloud-chat-composer-tools{align-items:center;gap:6px;min-width:0;display:flex}.cloud-chat-composer-tools label.icon-button{cursor:pointer;flex:none;display:inline-grid}.cloud-chat-composer-tools select{max-width:180px;height:30px;color:var(--text-secondary);font-size:var(--font-size-meta);background-color:#0000;border:0;border-radius:7px;padding:0 26px 0 9px}.cloud-chat-composer-tools select:hover,.cloud-chat-composer-tools select:focus{color:var(--text);background-color:var(--surface-hover);outline:0}.cloud-chat-attachments{flex-wrap:wrap;gap:6px;padding:4px 10px 8px;display:flex}.cloud-chat-attachments>span{border:1px solid var(--border);max-width:240px;color:var(--text-secondary);background:var(--surface-subtle);font-size:var(--font-size-caption);text-overflow:ellipsis;white-space:nowrap;border-radius:7px;align-items:center;gap:5px;padding:5px 7px;display:inline-flex;overflow:hidden}.cloud-chat-attachments button{color:var(--text-tertiary);background:0 0;border:0;place-items:center;padding:0;display:grid}.chat-composer-footer,.cloud-chat-composer-footer{border-top:0;justify-content:flex-start;gap:5px;min-width:0;min-height:36px;padding:2px 8px 8px 10px}.chat-composer .chat-plus-trigger{border-radius:6px;width:32px;height:32px}.chat-composer .chat-mode-chip,.chat-composer .chat-approval-trigger,.chat-composer .chat-model-trigger{border-radius:6px;height:32px}.chat-approval-trigger{max-width:164px;padding-inline:9px}.chat-model-summary-trigger{background:var(--surface-subtle);gap:7px;max-width:min(300px,42vw);padding-inline:10px}.chat-model-summary-trigger b{color:var(--text-tertiary);font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);flex:none}.chat-model-reasoning-menu{width:min(270px,100vw - 24px);padding:6px}.chat-model-settings-row{cursor:pointer;border-radius:10px;outline:0;grid-template-columns:minmax(0,1fr) minmax(0,auto) 18px;align-items:center;gap:10px;min-height:42px;padding:7px 9px;display:grid}.chat-model-settings-row[data-highlighted],.chat-model-settings-row[data-state=open]{background:var(--surface-subtle)}.chat-model-settings-row strong{font-weight:var(--font-weight-semibold)}.chat-model-settings-row>span{color:var(--text-tertiary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chat-model-settings-row>svg{color:var(--text-tertiary)}.chat-model-submenu{width:min(280px,100vw - 24px);max-height:min(520px,100vh - 40px);overflow-y:auto}.chat-reasoning-submenu{width:min(320px,100vw - 24px)}.chat-reasoning-option{cursor:pointer;border-radius:8px;outline:0;grid-template-columns:minmax(0,1fr) 18px;align-items:center;gap:10px;min-height:48px;padding:7px 9px;display:grid}.chat-reasoning-option[data-highlighted]{background:var(--surface-subtle)}.chat-reasoning-option>span:first-child,.chat-reasoning-option strong,.chat-reasoning-option small{min-width:0;display:block}.chat-reasoning-option strong{font-size:var(--font-size-control);font-weight:var(--font-weight-medium)}.chat-reasoning-option small{color:var(--text-tertiary);font-size:var(--font-size-caption);margin-top:2px}.chat-composer .chat-send-button{width:34px;height:34px;color:var(--button-primary-text);background:var(--button-primary-bg);border:0;border-radius:6px;margin-left:1px}.chat-composer .chat-send-button:hover:not(:disabled){color:var(--button-primary-text);background:var(--button-primary-bg-hover)}@media (width<=720px){html,body,.app-shell{overflow-x:clip}.chat-composer-wrap{padding-inline:10px}.chat-approval-trigger span{text-overflow:ellipsis;white-space:nowrap;max-width:80px;overflow:hidden}.chat-model-summary-trigger{max-width:38vw}}.chat-composer-disclaimer{max-width:820px;color:var(--text-tertiary);text-align:center;margin:7px auto 0;font-size:12px;line-height:1.5}.chat-run-error{border:1px solid color-mix(in srgb, var(--danger) 32%, var(--border));border-radius:8px;max-width:760px;margin-top:0}.a2ui-surface{background:var(--surface);margin:12px 0;padding:16px}.a2ui-card,.a2ui-form{border:1px solid var(--border);background:var(--surface);border-radius:4px;padding:16px}.a2ui-card-content .a2ui-form{border:0;padding:0}.a2ui-choice,.a2ui-other{background:var(--surface);border:1px solid #0000;border-radius:4px}.a2ui-choice:hover,.a2ui-choice.selected,.a2ui-other.active{border-color:var(--kc-accent-border);background:var(--kc-accent-fill-strong)}.a2ui-choice-index,.a2ui-other-icon{border:1px solid var(--border-strong);background:var(--surface);border-radius:50%;width:22px;height:22px}.a2ui-choice.selected .a2ui-choice-index{border-color:var(--accent);background:var(--accent);color:#fff}.a2ui-approval{border:1px solid var(--kc-accent-border);background:var(--kc-accent-fill-strong);border-radius:4px}.a2ui-actions button,.a2ui-form button,.a2ui-layout button{border:1px solid var(--accent);background:var(--accent);border-radius:4px}.a2ui-actions button.secondary{border-color:var(--border-strong);background:var(--surface)}.a2ui-actions button.secondary:hover:not(:disabled){border-color:var(--accent-border);background:var(--accent-soft);color:var(--accent-strong)}.orchestration-workbench{gap:16px}.orchestration-graph{border:1px solid var(--border);background-color:var(--kc-graph-fill);background-image:radial-gradient(var(--kc-graph-dot) .8px, transparent .8px);background-size:16px 16px;border-radius:4px}.orchestration-graph .react-flow__node-pipeline{border-radius:4px}.pipeline-node-card{border-color:var(--kc-node-border);background:var(--surface);border-radius:4px;gap:8px;padding:10px;box-shadow:0 1px 2px #202d380d!important}.react-flow__node.selected .pipeline-node-card,.pipeline-node-card:hover{border-color:var(--accent);box-shadow:0 0 0 2px #0091ea21!important}.pipeline-node-icon{width:30px;height:30px;color:var(--accent-strong);background:var(--accent-soft);border-radius:4px;flex-basis:30px}.orchestration-graph .react-flow__edge-path{stroke:var(--kc-edge);stroke-width:1.25px}.orchestration-graph .react-flow__edge-textbg{fill:var(--surface);stroke:var(--border);stroke-width:1px;rx:3px;ry:3px}.orchestration-graph .react-flow__controls{border:1px solid var(--border-strong);border-radius:4px;box-shadow:0 2px 8px #202d381a!important}.orchestration-graph .react-flow__controls-button{border-bottom:1px solid var(--border)}.orchestration-graph .react-flow__controls-button:last-child{border-bottom:0}.orchestration-aside{padding:18px}.runtime-resource-section{background:0 0;border:0;padding:0}.runtime-resource-groups{gap:16px}.runtime-resource-group{border:1px solid var(--border-card);background:var(--surface);border-radius:6px;padding:20px}.runtime-resource-group:before{display:none}.delivery-table-scroll{contain:inline-size paint;overscroll-behavior-inline:contain;max-width:100%}.settings-credential,.build-artifact-grid>div,details.build-log,.build-progress,.build-artifact,.deployment-card,.resource-detail-card,.trace-run-list>button,.trace-span-tree>button{border:1px solid var(--border);background:var(--surface);border-radius:4px}.settings-credential:hover,.build-artifact-grid>div:hover,.trace-run-list>button:hover,.trace-run-list>button.active,.trace-span-tree>button:hover,.trace-span-tree>button.active{border-color:var(--kc-accent-border);background:var(--kc-accent-fill-strong)}.build-stage-list li:not(:last-child):after{background:var(--border-strong);height:1px}.create-shell .create-stage{border:1px solid var(--border-card);border-radius:6px}.create-shell .create-rail{border-right:1px solid var(--border);background:var(--kc-rail-fill)}.create-shell .authoring-mode-tabs button,.create-shell .wizard-step{box-shadow:none;border:1px solid #0000}.create-shell .authoring-mode-tabs button:hover:not(.active),.create-shell .wizard-step:hover:not(.active){border-color:var(--border);background:var(--surface)}.create-shell .authoring-mode-tabs button.active,.create-shell .wizard-step.active{border-color:var(--kc-accent-border);background:var(--kc-accent-fill);color:var(--accent-strong)}.create-shell .wizard-step .step-number{border:1px solid var(--border-strong);border-radius:50%}.create-shell .wizard-step.active .step-number,.create-shell .wizard-step.completed .step-number{border-color:var(--accent);background:var(--accent);color:#fff}.create-shell .template-card{border:1px solid var(--border);background:var(--surface);box-shadow:none;border-radius:6px;outline:none}.create-shell .template-card:hover:not(.selected){border-color:var(--border-strong);background:var(--surface)}.create-shell .template-card.selected{border-color:var(--kc-accent-border);background:var(--kc-accent-fill)}.create-shell .template-card:focus-visible,.create-shell .authoring-mode-tabs button:focus-visible,.create-shell .wizard-step:focus-visible{outline-offset:2px;outline:2px solid #0091ea5c}.manifest-preview,.code-viewer{border-color:var(--border-card)}@keyframes studio-skeleton-wave{0%{background-position:100% 0}to{background-position:-100% 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width>=1024px) and (width<=1100px){.create-shell .wizard-actions{padding-inline:16px}}@media (width<=1023px){#pageHeaderActions>.tag{display:none}.app-shell,.app-shell[data-rail=expanded],.app-shell[data-rail=compact]{--studio-app-rail:216px}.app-shell[data-rail=compact]{--studio-app-rail:80px}.app-shell .sidebar{width:var(--studio-app-rail);flex-direction:column;height:auto;position:fixed;inset:0 auto 0 0;overflow:hidden}.app-shell .app-main{margin-left:var(--studio-app-rail);padding-bottom:0}.app-shell .sidebar .product,.app-shell .sidebar .workspace-switcher,.app-shell .sidebar .nav-label,.app-shell .sidebar .sidebar-footer{display:flex}.app-shell[data-rail=compact] .sidebar .product-copy,.app-shell[data-rail=compact] .sidebar .workspace-copy,.app-shell[data-rail=compact] .sidebar .nav-label,.app-shell[data-rail=compact] .sidebar .nav-item>span{display:none}.app-shell .global-header{min-height:64px}.app-shell .header-agent-selector,.app-shell .header-identity-inline .mono{display:inline-flex}.create-shell .create-workbench,.create-shell[data-layout=workbench] .create-workbench,.agent-detail-layout,.detail-layout,.orchestration-workbench,.conversation-authoring-layout,.authoring-inspect-grid{grid-template-columns:minmax(0,1fr)!important}}@media (width<=720px){.app-shell,.app-shell[data-rail=expanded],.app-shell[data-rail=compact]{--studio-app-rail:56px}.app-shell .sidebar{width:56px;padding:8px 6px}.app-shell .app-main{margin-left:56px}.app-shell .sidebar .product{width:44px;height:48px;margin-inline:0}.app-shell .sidebar .product-mark,.app-shell .sidebar .workspace-mark{flex-basis:34px;width:34px;height:34px}.app-shell .sidebar .workspace-switcher,.app-shell .sidebar .nav-item{width:44px;min-height:44px;margin-inline:0}.app-shell .sidebar .nav-item{height:44px}.app-shell .sidebar .sidebar-footer{width:44px;margin-inline:0;padding-inline:2px}.app-shell .global-header{min-height:56px;padding-inline:12px}.app-shell[data-view=agent-detail] .header-identity-inline{flex:auto;gap:6px;min-width:0;max-width:none}.app-shell[data-view=agent-detail] .header-identity-inline .mono,.app-shell[data-view=agent-detail] .header-identity-inline .agent-avatar{display:none}.app-shell[data-view=agent-detail] .header-identity-inline h1{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.app-shell[data-view=conversations] .global-header{height:56px}.app-shell[data-view=conversations] .global-header .header-identity span,.app-shell[data-view=conversations] .global-refresh-button,.app-shell[data-view=conversations] .conversation-run-detail,.app-shell[data-view=conversations] .global-header .badge{display:none}.app-shell[data-view=conversations] .global-header .header-actions{max-width:calc(100% - 64px);overflow:visible}.app-shell[data-view=conversations] .conversation-target-selector{width:min(180px,54vw);display:inline-flex}.app-shell[data-view=conversations] main,.app-shell[data-view=conversations] .chat-wrap,.app-shell[data-view=conversations] .chat-host{height:calc(100dvh - 56px)}.studio-chat-shell,.cloud-chat-shell{border-left:0;border-right:0;border-radius:0;display:block;position:relative}.studio-chat-shell .chat-session-sidebar{z-index:42;border-right:1px solid var(--border-card);width:min(304px,100% - 28px);box-shadow:var(--shadow-overlay);transition:transform var(--motion-base) var(--ease);position:absolute;inset:0 auto 0 0;transform:translate(-104%)}.studio-chat-shell.sessions-open .chat-session-sidebar{transform:translate(0)}.chat-session-backdrop{z-index:41;opacity:0;visibility:hidden;pointer-events:none;width:100%;height:100%;transition:opacity var(--motion-base) var(--ease), visibility var(--motion-base) var(--ease);background:#090e167a;padding:0;display:block;position:absolute;inset:0}.studio-chat-shell.sessions-open .chat-session-backdrop{opacity:1;visibility:visible;pointer-events:auto}.chat-conversation{grid-template-rows:52px minmax(0,1fr) auto;width:100%;height:100%}.chat-conversation-header{height:52px;padding-inline:10px 12px}.chat-session-mobile-trigger,.chat-session-mobile-close{width:40px;min-width:40px;height:40px;display:inline-grid}.chat-session-main{min-height:44px;padding-right:42px}.chat-session-delete{opacity:1;width:32px;height:32px;transform:translateY(-50%)}.chat-message-list{width:100%;padding:20px 12px 12px}.chat-message-list .message{max-width:100%;margin-bottom:22px}.chat-message-list .message.user .message-content{max-width:88%}.chat-message-list .message.assistant .message-content,.chat-run-error{max-width:100%}.chat-composer-wrap{padding:8px 8px 10px}.chat-composer,.chat-composer-disclaimer{max-width:100%}.chat-composer-footer,.cloud-chat-composer-footer{gap:4px;padding-inline:7px}.chat-composer .chat-approval-trigger{width:36px;padding-inline:0}.chat-composer .chat-plus-trigger,.chat-composer .chat-mode-chip,.chat-composer .chat-approval-trigger,.chat-composer .chat-model-trigger,.chat-composer .chat-send-button{min-height:36px}.chat-composer .chat-plus-trigger,.chat-composer .chat-send-button{width:36px}.chat-attachment-chip{grid-template-columns:34px minmax(0,1fr) 28px}.chat-attachment-chip>button{width:28px;height:28px}.chat-composer .chat-approval-trigger>span,.chat-composer .chat-approval-trigger>.lucide-chevron-down{display:none}.chat-model-summary-trigger{max-width:min(116px,31vw)}.chat-model-summary-trigger b{display:none}.chat-context-tooltip{right:-88px}.chat-context-tooltip:after{right:95px}.chat-composer-disclaimer{text-align:left;padding-inline:8px}.chat-run-error{grid-template-columns:minmax(0,1fr)}.chat-run-error-icon{display:none}.chat-run-error-actions{flex-wrap:wrap}.app-shell[data-view=create] .header-identity-inline{flex:auto;max-width:156px}.app-shell[data-view=create] .header-actions{flex:none;gap:4px;max-width:none;overflow:visible}.app-shell[data-view=create] #pageHeaderActions{gap:4px}.app-shell[data-view=create] #pageHeaderActions>.tag,.app-shell[data-view=create] #pageHeaderActions>.button.secondary{display:none}.app-shell[data-view=create] #pageHeaderActions>.button,.app-shell[data-view=create] #pageHeaderActions>.compact-create-rail-trigger,#pageHeaderActions .button{justify-content:center;width:40px;min-width:40px;height:40px;padding:0}#pageHeaderActions .button>span{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-shell[data-view=deployments] #pageHeaderActions>.button.secondary,.app-shell[data-view=agent-detail] #pageHeaderActions>.button.secondary{display:none}.create-shell,.create-shell .create-workbench,.create-shell .create-stage,.create-shell .wizard-layout,.create-shell .wizard-content{max-width:100%;overflow-x:clip}.create-shell .wizard-panel{padding:24px 16px 80px}.create-shell .panel-heading{margin-bottom:22px}.create-shell .template-grid,.create-shell .choice-grid,.create-shell .form-grid.two-columns,.create-shell .review-capabilities{grid-template-columns:minmax(0,1fr)}.create-shell .template-card{grid-template-columns:auto minmax(0,1fr);min-height:88px}.create-shell .wizard-actions{gap:8px;min-height:60px;padding:0 10px}.create-shell .wizard-actions .summary-chips{display:none}.create-shell .wizard-actions .summary-toggle{width:40px;min-width:40px;height:40px;padding:0}.create-shell .wizard-actions .summary-toggle>span,.create-shell .wizard-actions .wizard-progress{display:none}.create-shell .wizard-actions>.button:first-child{width:40px;min-width:40px;height:40px;padding:0}.create-shell .wizard-actions>.button:first-child>span{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.create-shell .wizard-flow-actions{gap:6px;margin-left:auto}} diff --git a/ksadk/studio/static/index.html b/ksadk/studio/static/index.html index 676876b4..33d32689 100644 --- a/ksadk/studio/static/index.html +++ b/ksadk/studio/static/index.html @@ -4,10 +4,10 @@ AgentKit Studio - + - +
diff --git a/ksadk/studio/validator.py b/ksadk/studio/validator.py index 9c1962fb..f781210a 100644 --- a/ksadk/studio/validator.py +++ b/ksadk/studio/validator.py @@ -32,7 +32,7 @@ def validate( ) -> ValidationResult: diagnostics: list[Diagnostic] = [] spec = draft.spec - if not spec.instructions.system.strip(): + if not spec.instructions.system.strip() and spec.soul is None: diagnostics.append( self._error( "AGENT_SYSTEM_INSTRUCTION_REQUIRED", diff --git a/ksadk/studio/workspace.py b/ksadk/studio/workspace.py index cba7e5df..a3990b61 100644 --- a/ksadk/studio/workspace.py +++ b/ksadk/studio/workspace.py @@ -32,6 +32,7 @@ def initialize(self) -> None: ".agentkit/runs", ".agentkit/traces", ".agentkit/assets/agent-avatars", + ".agentkit/assets/conversation-attachments", ".agentkit/cache", ".agentkit/trash", "dist", diff --git a/ksadk/version.py b/ksadk/version.py index c059cdc4..0d469d81 100644 --- a/ksadk/version.py +++ b/ksadk/version.py @@ -1,4 +1,4 @@ """KsADK 版本信息""" -VERSION = "0.8.2" +VERSION = "0.8.3" __version__ = VERSION diff --git a/ksadk_runtime_common/workspace_files/path_utils.py b/ksadk_runtime_common/workspace_files/path_utils.py index 81d100f3..2ed0ac56 100644 --- a/ksadk_runtime_common/workspace_files/path_utils.py +++ b/ksadk_runtime_common/workspace_files/path_utils.py @@ -50,6 +50,40 @@ def _resolve_workspace_root(root_getter: Callable[[], Path]) -> Path: return root +def _symlink_allowlist(root: Path) -> tuple[Path, ...]: + """Load allowed symlink target prefixes from ``/.symlink-allowlist``. + + One absolute path prefix per line (``#`` comments and blank lines ignored). + The file lives inside the workspace root itself, so whoever can write the + workspace decides which outside targets its symlinks may point at — the + escape check stays authoritative for everything else. + """ + entries: list[Path] = [] + allow_file = root / ".symlink-allowlist" + try: + for line in allow_file.read_text(encoding="utf-8").splitlines(): + line = line.strip() + if not line or line.startswith("#"): + continue + candidate = Path(line) + if candidate.is_absolute(): + # Normalize the allowlist prefix the same way targets are + # resolved, so symlinked parent dirs (e.g. /var on macOS) + # cannot break prefix matching. + entries.append(candidate.resolve(strict=False)) + except OSError: + return () + return tuple(entries) + + +def _target_in_allowlist(resolved_target: Path, allowlist: tuple[Path, ...]) -> bool: + return any( + resolved_target == allowed + or resolved_target.is_relative_to(allowed) + for allowed in allowlist + ) + + def _resolve_workspace_target( root: Path, raw_path: str | None, *, allow_root: bool ) -> tuple[str, Path]: @@ -67,5 +101,12 @@ def _resolve_workspace_target( target = root.joinpath(*segments) resolved_target = target.resolve(strict=False) if resolved_target != root and root not in resolved_target.parents: + # Symlinks legitimately point outside the workspace (e.g. workspace + # convenience links to the profile's config.yaml/.env). Allow them only + # when the link target is registered in the workspace's own allowlist. + if target.is_symlink() and _target_in_allowlist( + resolved_target, _symlink_allowlist(root) + ): + return normalized, resolved_target raise HTTPException(status_code=400, detail=WORKSPACE_PATH_ESCAPE_DETAIL) return normalized, resolved_target diff --git a/pyproject.toml b/pyproject.toml index e7c04e91..a4f6029e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "ksadk" -version = "0.8.2" +version = "0.8.3" description = "KsADK Agent Runtime Platform - unified runtime, debugging, deployment and observability for AI agents" readme = "README.md" requires-python = ">=3.10" @@ -31,6 +31,7 @@ dependencies = [ # 配置 "pyyaml>=6.0.0", "packaging>=23.0", + "tomli>=2.0.0; python_version < '3.11'", "python-dotenv>=1.0.0", "pydantic>=2.0.0,<3.0.0", "jsonschema>=4.0.0,<5.0.0", @@ -77,6 +78,9 @@ dependencies = [ "rapidocr-onnxruntime>=1.2.0", "pillow>=11.0.0,<13.0.0", # ========= 核心框架依赖 (默认安装) ========= + # Studio 是基础产品入口;即使只使用 Codex/DSH Provider,启动时也会 + # 枚举已有 ADK Agent。因此 google-adk 不能再只存在于可选 extra。 + "google-adk>=1.34.0,<3.0.0", # LangChain "langchain>=1.3.14,<2.0.0", "langchain-core>=1.5.0,<2.0.0", @@ -91,9 +95,8 @@ dependencies = [ ] [project.optional-dependencies] -# Google ADK 支持 (goal-00: 1.34.x 为最低锚点,<3.0 上界;1.x/2.x 差异经 ksadk.compat.adk_compat 收口) +# Google ADK 扩展 (基础安装已包含 google-adk;本 extra 增加生成/修复依赖) adk = [ - "google-adk>=1.34.0,<3.0.0", "litellm>=1.0.0; platform_system != 'Windows' or python_version < '3.13'", "json_repair>=0.25.0", # 用于修复大模型输出的非法 JSON ] @@ -198,7 +201,7 @@ include = ["ksadk*", "ksadk_runtime_common*"] exclude = ["ksadk.server.web-ui*", "ksadk.studio.react-ui*"] [tool.setuptools.package-data] -ksadk = ["server/static/**/*", "studio/static/**/*", "kernel/sql/*.sql"] +ksadk = ["_build_provenance.json", "server/static/**/*", "studio/static/**/*", "kernel/sql/*.sql", "plugins/providers/bundles/**/*"] ksadk_runtime_common = ["schemas/*.json"] [tool.black] diff --git a/scripts/check_approval_record.py b/scripts/check_approval_record.py index 6dd832e0..93c35910 100644 --- a/scripts/check_approval_record.py +++ b/scripts/check_approval_record.py @@ -119,14 +119,16 @@ def _current_commit() -> str: def _source_ref_is_filled(value: str) -> bool: normalized = value.strip().lower() - return bool(normalized) and normalized not in { + if not normalized or normalized in { "tbd", "todo", "no", "none", "n/a", "", - } + }: + return False + return not any(marker in normalized for marker in ("tbd", "todo", "pending", "awaiting")) def validate_approval_record( @@ -202,12 +204,20 @@ def validate_approval_record( signoffs = _signoff_rows(text) for role in REQUIRED_SIGNOFF_ROLES: cells = signoffs.get(role, []) - filled = len(cells) >= 4 and all(cell.strip() for cell in cells[1:4]) + name = cells[1].strip() if len(cells) >= 2 else "" + decision = cells[2].strip() if len(cells) >= 3 else "" + date = cells[3].strip() if len(cells) >= 4 else "" + filled = bool( + name + and name.lower() not in {"pending", "tbd", "todo"} + and decision.lower() == "approved" + and re.fullmatch(r"\d{4}-\d{2}-\d{2}", date) + ) checks.append( ApprovalCheck( name=f"signoff:{role}", ok=filled, - detail="name, decision, and date must be filled", + detail="name, the exact decision Approved, and an ISO date are required", ) ) diff --git a/scripts/open_source_audit.py b/scripts/open_source_audit.py index 22986e36..569d061c 100644 --- a/scripts/open_source_audit.py +++ b/scripts/open_source_audit.py @@ -241,6 +241,17 @@ def to_dict(self) -> dict[str, object]: CONTENT_AUDIT_TARGETS = {"public-repo", "ksadk-web-candidate", "sdist", "wheel"} +PUBLIC_EXPORT_MANIFEST_KEYS = { + "schemaVersion", + "generatedAt", + "sourceCommit", + "sourceTree", + "targetRepository", + "documentation", + "exportPathCount", + "exportPolicy", +} + CONTENT_RULES = ( ContentRule( name="public-doc-internal-endpoint", @@ -635,6 +646,145 @@ def audit_ksadk_web_candidate_metadata(root: Path, paths: Iterable[str]) -> Audi ) +def audit_public_export_manifest(root: Path, paths: Iterable[str]) -> AuditResult: + """Require a minimal provenance attestation without publishing internal inventory.""" + path_set = {normalize_path(path) for path in paths} + violations: list[Violation] = [] + manifest_path = root / "export-manifest.json" + + if "export-manifest.json" not in path_set or not manifest_path.is_file(): + violations.append( + Violation( + path="export-manifest.json", + rule="missing-public-export-manifest", + description="public repository export must include its provenance manifest", + ) + ) + else: + try: + manifest = json.loads(manifest_path.read_text(encoding="utf-8")) + except json.JSONDecodeError: + violations.append( + Violation( + path="export-manifest.json", + rule="invalid-json", + description="export manifest must be valid JSON", + ) + ) + else: + if not isinstance(manifest, dict): + violations.append( + Violation( + path="export-manifest.json", + rule="invalid-public-export-manifest", + description="export manifest root must be a JSON object", + ) + ) + else: + unexpected_keys = sorted(set(manifest).difference(PUBLIC_EXPORT_MANIFEST_KEYS)) + missing_keys = sorted(PUBLIC_EXPORT_MANIFEST_KEYS.difference(manifest)) + if unexpected_keys: + violations.append( + Violation( + path="export-manifest.json", + rule="public-export-inventory-disclosure", + description=( + "export manifest must not publish internal path inventories or " + f"release notes; unexpected keys: {', '.join(unexpected_keys)}" + ), + ) + ) + if missing_keys: + violations.append( + Violation( + path="export-manifest.json", + rule="incomplete-public-export-manifest", + description=( + "export manifest is missing required provenance fields: " + + ", ".join(missing_keys) + ), + ) + ) + if manifest.get("schemaVersion") != 1: + violations.append( + Violation( + path="export-manifest.json", + rule="unsupported-public-export-manifest-schema", + description="export manifest schemaVersion must be 1", + ) + ) + if manifest.get("targetRepository") != ( + "https://github.com/kingsoftcloud/ksadk-python" + ): + violations.append( + Violation( + path="export-manifest.json", + rule="wrong-public-export-target-repository", + description="export manifest must point to the public KsADK repository", + ) + ) + if manifest.get("documentation") != ( + "https://kingsoftcloud.github.io/ksadk-python/" + ): + violations.append( + Violation( + path="export-manifest.json", + rule="wrong-public-export-documentation", + description="export manifest must point to the public documentation site", + ) + ) + if not re.fullmatch(r"[0-9a-f]{40}", str(manifest.get("sourceCommit", ""))): + violations.append( + Violation( + path="export-manifest.json", + rule="invalid-public-export-source-commit", + description="sourceCommit must be a full lowercase Git commit ID", + ) + ) + if manifest.get("sourceTree") != "clean": + violations.append( + Violation( + path="export-manifest.json", + rule="dirty-public-export-source", + description="public export must be generated from a clean source tree", + ) + ) + export_policy = manifest.get("exportPolicy") + if not isinstance(export_policy, dict) or set(export_policy) != { + "mode", + "schemaVersion", + "sha256", + }: + violations.append( + Violation( + path="export-manifest.json", + rule="invalid-public-export-policy", + description=( + "exportPolicy must contain only mode, schemaVersion, and sha256" + ), + ) + ) + elif ( + export_policy.get("mode") != "allowlist" + or export_policy.get("schemaVersion") != 1 + or not re.fullmatch(r"[0-9a-f]{64}", str(export_policy.get("sha256", ""))) + ): + violations.append( + Violation( + path="export-manifest.json", + rule="invalid-public-export-policy", + description="exportPolicy must be a versioned allowlist SHA-256 attestation", + ) + ) + + return AuditResult( + target="public-export-manifest", + ok=not violations, + counts={"checked": 1, "violations": len(violations)}, + violations=violations, + ) + + def merge_results(target: str, results: Sequence[AuditResult]) -> AuditResult: violations = [violation for result in results for violation in result.violations] return AuditResult( @@ -760,6 +910,11 @@ def main(argv: Sequence[str] | None = None) -> int: if args.target == "ksadk-web-candidate" else [] ), + *( + [audit_public_export_manifest(args.root, paths)] + if args.target == "public-repo" + else [] + ), ], ) if args.json: diff --git a/scripts/phase2_release_candidate_gate.py b/scripts/phase2_release_candidate_gate.py new file mode 100644 index 00000000..35b8559b --- /dev/null +++ b/scripts/phase2_release_candidate_gate.py @@ -0,0 +1,294 @@ +#!/usr/bin/env python3 +"""Bind Phase 2 local, registry, deployment and pre-production evidence. + +The local preflight deliberately cannot claim release completion. This gate is +the second half of the release contract: it accepts independently collected +evidence only when every artifact and deployed consumer points at the same +final source commit and the same published Web package. +""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import re +import sys +from pathlib import Path +from typing import Any, Mapping, Sequence + +if __package__: + from scripts.phase2_release_preflight import ( + PHASE2_E2E_STATUS_KEYS, + PHASE2_EVIDENCE_SCHEMA_VERSION, + ) +else: + from phase2_release_preflight import ( # type: ignore[no-redef] + PHASE2_E2E_STATUS_KEYS, + PHASE2_EVIDENCE_SCHEMA_VERSION, + ) + +SCHEMA_VERSION = 1 +WEB_PACKAGE_NAME = "@kingsoftcloud/ksadk-web" +WEB_PACKAGE_VERSION = "0.3.3" +REQUIRED_SCENARIOS = ("studioCreatedAgent", "historical082Agent") +REQUIRED_SURFACES = {"studio", "hosted-ui"} + +_COMMIT = re.compile(r"^[0-9a-f]{40}$") +_SHA256 = re.compile(r"^sha256:[0-9a-f]{64}$") +_NPM_INTEGRITY = re.compile(r"^sha512-[A-Za-z0-9+/]+={0,2}$") +_IMAGE_DIGEST = re.compile(r"^[^\s@]+@sha256:[0-9a-f]{64}$") +_SECRET_KEY = re.compile( + r"(?:password|secret|token|authorization|access[_-]?key|private[_-]?key|dsn)", + re.IGNORECASE, +) +_SECRET_VALUE = re.compile( + r"(?:bearer\s+[A-Za-z0-9._~+/=-]+|postgres(?:ql)?://[^\s/@:]+:[^\s/@]+@)", + re.IGNORECASE, +) + + +class ReleaseCandidateGateError(RuntimeError): + """The supplied evidence cannot support a release claim.""" + + +def _load_object(path: Path) -> dict[str, Any]: + try: + payload = json.loads(path.read_text(encoding="utf-8")) + except (OSError, json.JSONDecodeError) as error: + raise ReleaseCandidateGateError(f"invalid evidence file: {path}") from error + if not isinstance(payload, dict): + raise ReleaseCandidateGateError(f"evidence must be a JSON object: {path}") + _reject_secret_shaped_content(payload, path.name) + return payload + + +def _reject_secret_shaped_content(value: Any, location: str) -> None: + if isinstance(value, Mapping): + for key, item in value.items(): + child = f"{location}.{key}" + if _SECRET_KEY.search(str(key)): + raise ReleaseCandidateGateError(f"secret-shaped evidence key: {child}") + _reject_secret_shaped_content(item, child) + elif isinstance(value, list): + for index, item in enumerate(value): + _reject_secret_shaped_content(item, f"{location}[{index}]") + elif isinstance(value, str) and _SECRET_VALUE.search(value): + raise ReleaseCandidateGateError(f"secret-shaped evidence value: {location}") + + +def _sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for chunk in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(chunk) + return f"sha256:{digest.hexdigest()}" + + +def _require_web_identity(payload: Mapping[str, Any], *, location: str) -> tuple[str, str]: + package = payload.get("package") + version = payload.get("version") + integrity = payload.get("npmIntegrity") + if package != WEB_PACKAGE_NAME or version != WEB_PACKAGE_VERSION: + raise ReleaseCandidateGateError(f"{location} Web package identity is invalid") + if not isinstance(integrity, str) or not _NPM_INTEGRITY.fullmatch(integrity): + raise ReleaseCandidateGateError(f"{location} npm integrity is invalid") + return str(version), integrity + + +def _validate_local(payload: Mapping[str, Any], expected_commit: str) -> None: + if ( + payload.get("schemaVersion") != PHASE2_EVIDENCE_SCHEMA_VERSION + or payload.get("phase") != "phase2" + or payload.get("scope") != "local-source-and-package" + ): + raise ReleaseCandidateGateError("local Phase 2 evidence schema is invalid") + if payload.get("sourceCommit") != expected_commit: + raise ReleaseCandidateGateError("local evidence is not bound to the final commit") + if payload.get("localStatus") != "passed": + raise ReleaseCandidateGateError("local Phase 2 preflight has not passed") + if ( + payload.get("overallStatus") != "incomplete" + or payload.get("releaseStatus") != "not_evaluated" + ): + raise ReleaseCandidateGateError("local evidence makes an invalid release claim") + statuses = payload.get("e2e") + if not isinstance(statuses, Mapping) or set(statuses) != set(PHASE2_E2E_STATUS_KEYS): + raise ReleaseCandidateGateError("local Phase 2 E2E evidence is incomplete") + if any(status != "passed" for status in statuses.values()): + raise ReleaseCandidateGateError("a local Phase 2 E2E gate did not pass") + artifacts = payload.get("artifacts") + if not isinstance(artifacts, Mapping) or set(artifacts) != {"wheel", "sdist"}: + raise ReleaseCandidateGateError("local release artifact evidence is incomplete") + if not all( + isinstance(item, Mapping) and _SHA256.fullmatch(str(item.get("sha256") or "")) + for item in artifacts.values() + ): + raise ReleaseCandidateGateError("local release artifact digest is invalid") + + +def _validate_web(payload: Mapping[str, Any]) -> str: + if payload.get("schemaVersion") != 1 or payload.get("status") != "published": + raise ReleaseCandidateGateError("Web registry evidence is not published") + _version, integrity = _require_web_identity(payload, location="registry") + source_commit = str(payload.get("sourceCommit") or "") + if not _COMMIT.fullmatch(source_commit): + raise ReleaseCandidateGateError("Web registry source commit is invalid") + if payload.get("registry") != "https://registry.npmjs.org": + raise ReleaseCandidateGateError("Web package was not verified against the public registry") + return integrity + + +def _validate_deployment(payload: Mapping[str, Any], expected_integrity: str) -> str: + if payload.get("schemaVersion") != 1 or payload.get("environment") != "preproduction": + raise ReleaseCandidateGateError("Hosted UI deployment evidence is invalid") + image = str(payload.get("hostedUiImage") or "") + if not _IMAGE_DIGEST.fullmatch(image): + raise ReleaseCandidateGateError("Hosted UI image is not digest-pinned") + if not isinstance(payload.get("helmRevision"), int) or int(payload["helmRevision"]) < 1: + raise ReleaseCandidateGateError("Hosted UI Helm revision is invalid") + web = payload.get("webPackage") + if not isinstance(web, Mapping): + raise ReleaseCandidateGateError("Hosted UI Web package evidence is missing") + _version, integrity = _require_web_identity(web, location="deployment") + if integrity != expected_integrity: + raise ReleaseCandidateGateError("Hosted UI does not consume the published Web artifact") + return image + + +def _validate_scenario(name: str, payload: Mapping[str, Any]) -> None: + if payload.get("status") != "passed": + raise ReleaseCandidateGateError(f"pre-production scenario did not pass: {name}") + for field in ("agentId", "sessionId"): + if not isinstance(payload.get(field), str) or not str(payload[field]).strip(): + raise ReleaseCandidateGateError(f"pre-production scenario {name} lacks {field}") + if not isinstance(payload.get("turns"), int) or int(payload["turns"]) < 2: + raise ReleaseCandidateGateError(f"pre-production scenario {name} is not multi-turn") + if not isinstance(payload.get("streamChunks"), int) or int(payload["streamChunks"]) < 2: + raise ReleaseCandidateGateError(f"pre-production scenario {name} did not prove streaming") + if payload.get("duplicateItems") != 0: + raise ReleaseCandidateGateError(f"pre-production scenario {name} observed duplicates") + surfaces = payload.get("surfaces") + if not isinstance(surfaces, list) or not REQUIRED_SURFACES.issubset(set(surfaces)): + raise ReleaseCandidateGateError(f"pre-production scenario {name} lacks a UI surface") + expected_cleanup = "deleted" if name == "studioCreatedAgent" else "preserved" + if payload.get("cleanupStatus") != expected_cleanup: + raise ReleaseCandidateGateError(f"pre-production scenario {name} cleanup is invalid") + + +def _validate_preprod( + payload: Mapping[str, Any], + *, + expected_commit: str, + expected_integrity: str, + expected_image: str, +) -> None: + if payload.get("schemaVersion") != 1 or payload.get("environment") != "preproduction": + raise ReleaseCandidateGateError("pre-production evidence schema is invalid") + if payload.get("sourceCommit") != expected_commit: + raise ReleaseCandidateGateError("pre-production evidence is not bound to the final commit") + if payload.get("hostedUiImage") != expected_image: + raise ReleaseCandidateGateError("pre-production image differs from deployed Hosted UI") + web = payload.get("webPackage") + if not isinstance(web, Mapping): + raise ReleaseCandidateGateError("pre-production Web package evidence is missing") + _version, integrity = _require_web_identity(web, location="pre-production") + if integrity != expected_integrity: + raise ReleaseCandidateGateError("pre-production did not use the published Web artifact") + scenarios = payload.get("scenarios") + if not isinstance(scenarios, Mapping) or set(scenarios) != set(REQUIRED_SCENARIOS): + raise ReleaseCandidateGateError("pre-production scenario matrix is incomplete") + for name in REQUIRED_SCENARIOS: + scenario = scenarios[name] + if not isinstance(scenario, Mapping): + raise ReleaseCandidateGateError(f"pre-production scenario is invalid: {name}") + _validate_scenario(name, scenario) + + +def build_release_candidate_report( + *, + expected_commit: str, + local_path: Path, + web_path: Path, + deployment_path: Path, + preprod_path: Path, +) -> dict[str, Any]: + expected_commit = expected_commit.lower() + if not _COMMIT.fullmatch(expected_commit): + raise ReleaseCandidateGateError("final source commit must be a full Git SHA") + local = _load_object(local_path) + web = _load_object(web_path) + deployment = _load_object(deployment_path) + preprod = _load_object(preprod_path) + _validate_local(local, expected_commit) + integrity = _validate_web(web) + image = _validate_deployment(deployment, integrity) + _validate_preprod( + preprod, + expected_commit=expected_commit, + expected_integrity=integrity, + expected_image=image, + ) + return { + "schemaVersion": SCHEMA_VERSION, + "phase": "phase2", + "scope": "final-release-candidate", + "overallStatus": "passed", + "sourceCommit": expected_commit, + "contractDigest": local["contractDigest"], + "artifacts": local["artifacts"], + "webPackage": { + "package": WEB_PACKAGE_NAME, + "version": WEB_PACKAGE_VERSION, + "npmIntegrity": integrity, + "sourceCommit": web["sourceCommit"], + }, + "hostedUi": { + "image": image, + "helmRevision": deployment["helmRevision"], + }, + "scenarios": {name: "passed" for name in REQUIRED_SCENARIOS}, + "inputs": { + "local": _sha256(local_path), + "webRegistry": _sha256(web_path), + "deployment": _sha256(deployment_path), + "preproduction": _sha256(preprod_path), + }, + } + + +def parse_args(argv: Sequence[str]) -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--expected-commit", required=True) + parser.add_argument("--local", required=True, type=Path) + parser.add_argument("--web-registry", required=True, type=Path) + parser.add_argument("--deployment", required=True, type=Path) + parser.add_argument("--preprod", required=True, type=Path) + parser.add_argument("--output", required=True, type=Path) + return parser.parse_args(argv) + + +def main(argv: Sequence[str] | None = None) -> int: + args = parse_args(sys.argv[1:] if argv is None else argv) + try: + report = build_release_candidate_report( + expected_commit=args.expected_commit, + local_path=args.local, + web_path=args.web_registry, + deployment_path=args.deployment, + preprod_path=args.preprod, + ) + except ReleaseCandidateGateError as error: + print(f"Phase 2 release candidate gate failed: {error}", file=sys.stderr) + return 1 + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text( + json.dumps(report, ensure_ascii=False, indent=2, sort_keys=True) + "\n", + encoding="utf-8", + ) + print(f"Phase 2 release candidate gate passed: {args.output}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/phase2_release_preflight.py b/scripts/phase2_release_preflight.py new file mode 100644 index 00000000..baa36ea8 --- /dev/null +++ b/scripts/phase2_release_preflight.py @@ -0,0 +1,795 @@ +#!/usr/bin/env python3 +"""Run the minimum local Phase 2 compatibility and package preflight. + +This is intentionally a local/source-and-artifact gate. It does not deploy a +Runtime and must not be used as evidence of cloud or pre-production acceptance. +""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import os +import re +import subprocess +import sys +import tarfile +import tempfile +import zipfile +from pathlib import Path +from typing import Callable, Iterable, Mapping, Sequence + +from ksadk.version import VERSION + +ROOT = Path(__file__).resolve().parents[1] + +REQUIRED_STATIC_FILES = ( + "ksadk/server/static/index.html", + "ksadk/studio/static/index.html", +) +REQUIRED_STATIC_PREFIXES = ( + "ksadk/server/static/assets/", + "ksadk/studio/static/assets/", +) +BUILD_PROVENANCE_PATH = "ksadk/_build_provenance.json" +BUILD_PROVENANCE_SCHEMA_VERSION = 1 +_COMMIT_PATTERN = re.compile(r"^[0-9a-f]{40}$") +_DIGEST_PATTERN = re.compile(r"^sha256:[0-9a-f]{64}$") +FORBIDDEN_FRONTEND_SOURCE_PREFIXES = ( + "ksadk/server/web-ui/", + "ksadk/studio/react-ui/", +) +PHASE2_CONTRACT_MANIFESTS = ( + "contracts/plugin/v1/manifest.json", + "contracts/conversation/v1/manifest.json", + "contracts/scheduler/v1/manifest.json", +) +COMPATIBILITY_TESTS = ( + "tests/compat/test_release_082_asset_compat.py", + "tests/compat/test_phase2_legacy_compat.py", + "tests/studio/test_framework_bundle_integrity.py", + "tests/packaging/test_phase2_release_preflight.py", +) +CREDENTIAL_FREE_NATIVE_TESTS = ( + "tests/e2e/test_codex_plugin_bridge_e2e.py", + "tests/e2e/test_codex_provider_app_server_e2e.py", + "tests/e2e/test_codex_subagent_provider_e2e.py", +) +MANAGED_DSH_TOOLCHAIN_TESTS = ( + "tests/e2e/test_dsh_managed_toolchain_e2e.py", + "tests/plugins/test_dsh_node_provider_e2e.py", +) +BROWSER_GATES = ( + "tests/studio/e2e/dsh_client_bundle_browser_e2e.py", + "tests/studio/e2e/scheduler_browser_e2e.py", + "tests/studio/e2e/scheduler_harness_browser_e2e.py", + "tests/studio/e2e/scheduler_fault_matrix_browser_e2e.py", + "tests/studio/e2e/conversation_reconnect_browser_e2e.py", + "tests/studio/e2e/conversation_items_browser_e2e.py", +) +SOURCE_E2E_STATUS_KEYS = ( + "compatibilityRegression", + "codexNative", + "managedDshToolchain", + "studioBrowser", +) +PHASE2_E2E_STATUS_KEYS = ( + *SOURCE_E2E_STATUS_KEYS, + "cleanWheelInstall", + "cleanSdistInstall", +) +PHASE2_EVIDENCE_SCHEMA_VERSION = 2 + +CLEAN_INSTALL_SMOKE = """ +from pathlib import Path + +import ksadk +from ksadk.cli import main +from ksadk.cli.cmd_plugin import plugin +from ksadk.cli.cmd_studio import studio + +assert callable(main) +assert plugin.name == "plugin" +assert callable(studio) + +package_root = Path(ksadk.__file__).resolve().parent +required_files = ( + package_root / "server" / "static" / "index.html", + package_root / "studio" / "static" / "index.html", +) +required_asset_dirs = ( + package_root / "server" / "static" / "assets", + package_root / "studio" / "static" / "assets", +) +for path in required_files: + assert path.is_file(), f"missing installed static file: {path}" +for path in required_asset_dirs: + assert path.is_dir() and any(item.is_file() for item in path.rglob("*")), ( + f"missing installed static asset tree: {path}" + ) +for path in ( + package_root / "server" / "web-ui", + package_root / "studio" / "react-ui", +): + assert not path.exists(), f"frontend source leaked into install: {path}" +assert not any(package_root.rglob("node_modules")), "node_modules leaked into install" +assert not any(package_root.rglob("*.tsx")), "React TSX source leaked into install" +assert not any(package_root.rglob("*.jsx")), "React JSX source leaked into install" +""" + +CommandRunner = Callable[..., None] + + +class Phase2PreflightError(RuntimeError): + """One stable local preflight rejection.""" + + +def _is_forbidden_release_member(name: str) -> bool: + parts = tuple(part for part in name.split("/") if part) + return ( + any(name.startswith(prefix) for prefix in FORBIDDEN_FRONTEND_SOURCE_PREFIXES) + or "node_modules" in parts + or name.endswith((".tsx", ".jsx")) + ) + + +def _normalized_archive_names(path: Path) -> set[str]: + if path.suffix == ".whl": + with zipfile.ZipFile(path) as archive: + return set(archive.namelist()) + if path.name.endswith(".tar.gz"): + with tarfile.open(path) as archive: + names = archive.getnames() + normalized: set[str] = set() + for name in names: + parts = name.split("/", 1) + normalized.add(parts[1] if len(parts) == 2 else name) + return normalized + raise Phase2PreflightError(f"unsupported distribution artifact: {path}") + + +def _archive_bytes(path: Path, member: str) -> bytes: + if path.suffix == ".whl": + with zipfile.ZipFile(path) as archive: + return archive.read(member) + if path.name.endswith(".tar.gz"): + with tarfile.open(path) as archive: + matches = [ + item for item in archive.getmembers() if item.name.split("/", 1)[-1] == member + ] + if len(matches) != 1: + raise KeyError(member) + extracted = archive.extractfile(matches[0]) + if extracted is None: + raise KeyError(member) + return extracted.read() + raise Phase2PreflightError(f"unsupported distribution artifact: {path}") + + +def _current_source_commit(root: Path = ROOT) -> str: + try: + completed = subprocess.run( + ["git", "rev-parse", "HEAD"], + cwd=root, + check=True, + capture_output=True, + text=True, + ) + return completed.stdout.strip().lower() + except subprocess.CalledProcessError: + manifest_path = root / "export-manifest.json" + try: + payload = json.loads(manifest_path.read_text(encoding="utf-8")) + except (OSError, json.JSONDecodeError) as error: + raise Phase2PreflightError( + "Git metadata is unavailable and this directory has no valid clean export manifest" + ) from error + commit = str(payload.get("sourceCommit") or "").lower() + if payload.get("sourceTree") != "clean" or not _COMMIT_PATTERN.fullmatch(commit): + raise Phase2PreflightError( + "clean export manifest must carry a clean 40-character sourceCommit" + ) + return commit + + +def _validate_build_provenance( + artifact: Path, + *, + expected_source_commit: str, +) -> dict[str, object]: + try: + payload = json.loads(_archive_bytes(artifact, BUILD_PROVENANCE_PATH)) + except (KeyError, json.JSONDecodeError, UnicodeDecodeError) as error: + raise Phase2PreflightError( + f"{artifact}: missing or invalid {BUILD_PROVENANCE_PATH}" + ) from error + if not isinstance(payload, dict): + raise Phase2PreflightError(f"{artifact}: build provenance must be a JSON object") + commit = str(payload.get("sourceCommit") or "").lower() + if ( + payload.get("schemaVersion") != BUILD_PROVENANCE_SCHEMA_VERSION + or payload.get("version") != VERSION + or not _COMMIT_PATTERN.fullmatch(commit) + ): + raise Phase2PreflightError( + f"{artifact}: build provenance schema, version, or commit is invalid" + ) + if commit != expected_source_commit.lower(): + raise Phase2PreflightError( + f"{artifact}: build source commit {commit} does not match " + f"checked-out commit {expected_source_commit.lower()}" + ) + if payload.get("sourceTree") != "clean": + raise Phase2PreflightError( + f"{artifact}: release artifact was built from a dirty source tree" + ) + return payload + + +def validate_distribution_archives( + dist_dir: Path, + *, + expected_source_commit: str | None = None, +) -> tuple[Path, ...]: + wheels = sorted(dist_dir.glob("*.whl")) + sdists = sorted(dist_dir.glob("*.tar.gz")) + if len(wheels) != 1 or len(sdists) != 1: + raise Phase2PreflightError( + f"{dist_dir} must be clean and contain exactly one wheel and one sdist" + ) + + expected_wheel_prefix = f"ksadk-{VERSION}-" + expected_sdist_name = f"ksadk-{VERSION}.tar.gz" + if not wheels[0].name.startswith(expected_wheel_prefix): + raise Phase2PreflightError(f"stale distribution artifact for KsADK {VERSION}: {wheels[0]}") + if sdists[0].name != expected_sdist_name: + raise Phase2PreflightError(f"stale distribution artifact for KsADK {VERSION}: {sdists[0]}") + + artifacts = tuple([*wheels, *sdists]) + expected_commit = expected_source_commit or _current_source_commit() + if not _COMMIT_PATTERN.fullmatch(expected_commit.lower()): + raise Phase2PreflightError("checked-out source commit is not a full Git SHA") + provenance_payloads: list[dict[str, object]] = [] + for artifact in artifacts: + names = _normalized_archive_names(artifact) + missing_files = [ + name for name in (*REQUIRED_STATIC_FILES, BUILD_PROVENANCE_PATH) if name not in names + ] + missing_prefixes = [ + prefix + for prefix in REQUIRED_STATIC_PREFIXES + if not any(name.startswith(prefix) for name in names) + ] + leaked = sorted( + name + for name in names + if _is_forbidden_release_member(name) + ) + if missing_files or missing_prefixes or leaked: + details = [] + if missing_files: + details.append(f"missing static files: {', '.join(missing_files)}") + if missing_prefixes: + details.append(f"missing static asset trees: {', '.join(missing_prefixes)}") + if leaked: + details.append(f"frontend source leaked: {', '.join(leaked[:5])}") + raise Phase2PreflightError(f"{artifact}: {'; '.join(details)}") + provenance_payloads.append( + _validate_build_provenance( + artifact, + expected_source_commit=expected_commit, + ) + ) + if provenance_payloads[0] != provenance_payloads[1]: + raise Phase2PreflightError("wheel and sdist do not carry identical build provenance") + return artifacts + + +def validate_generated_static_tracking_policy( + root: Path = ROOT, + *, + public_export: bool, +) -> None: + try: + completed = subprocess.run( + ["git", "ls-files", "ksadk/server/static", "ksadk/studio/static"], + cwd=root, + check=True, + capture_output=True, + text=True, + ) + except subprocess.CalledProcessError: + if (root / "export-manifest.json").is_file(): + return + raise Phase2PreflightError( + "cannot verify generated static tracking without Git metadata" + ) + tracked = [line for line in completed.stdout.splitlines() if line.strip()] + if public_export: + tracked_set = set(tracked) + required_files = { + "ksadk/server/static/index.html", + "ksadk/studio/static/index.html", + } + missing_files = sorted(required_files - tracked_set) + missing_asset_trees = [ + prefix + for prefix in ("ksadk/server/static/assets/", "ksadk/studio/static/assets/") + if not any(path.startswith(prefix) for path in tracked) + ] + leaked_sources = sorted( + path + for path in tracked + if path.endswith((".map", ".ts", ".tsx")) + ) + if missing_files or missing_asset_trees or leaked_sources: + details = [] + if missing_files: + details.append("missing tracked static files: " + ", ".join(missing_files)) + if missing_asset_trees: + details.append("missing tracked static trees: " + ", ".join(missing_asset_trees)) + if leaked_sources: + details.append("tracked frontend source leaked: " + ", ".join(leaked_sources[:5])) + raise Phase2PreflightError("invalid public static export: " + "; ".join(details)) + return + if tracked: + raise Phase2PreflightError( + "generated frontend static files must remain untracked: " + ", ".join(tracked[:5]) + ) + + +def _run( + command: Iterable[str], + *, + environment: dict[str, str] | None = None, + cwd: Path = ROOT, +) -> None: + subprocess.run( + list(command), + cwd=cwd, + check=True, + env={**os.environ, **(environment or {})}, + ) + + +def _sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for chunk in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def _canonical_json_bytes(path: Path) -> bytes: + try: + payload = json.loads(path.read_text(encoding="utf-8")) + except (OSError, json.JSONDecodeError, UnicodeDecodeError) as error: + raise Phase2PreflightError(f"invalid Phase 2 contract JSON: {path}") from error + return json.dumps( + payload, + sort_keys=True, + separators=(",", ":"), + ensure_ascii=False, + ).encode("utf-8") + + +def _validated_contract_set_digest(manifest_path: Path) -> tuple[str, str]: + try: + manifest = json.loads(manifest_path.read_text(encoding="utf-8")) + except (OSError, json.JSONDecodeError, UnicodeDecodeError) as error: + raise Phase2PreflightError(f"invalid Phase 2 contract manifest: {manifest_path}") from error + if not isinstance(manifest, dict): + raise Phase2PreflightError(f"Phase 2 contract manifest must be an object: {manifest_path}") + + contract_set = manifest.get("contract_set") + recorded_digest = manifest.get("aggregate_digest") + if ( + not isinstance(contract_set, str) + or manifest.get("digest_algorithm") != "sha256" + or not isinstance(recorded_digest, str) + or not re.fullmatch(r"[0-9a-f]{64}", recorded_digest) + ): + raise Phase2PreflightError(f"invalid Phase 2 contract digest metadata: {manifest_path}") + + contract_dir = manifest_path.parent + aggregate = hashlib.sha256() + current_files: list[dict[str, object]] = [] + for path in sorted( + item for item in contract_dir.rglob("*") if item.is_file() and item.name != "manifest.json" + ): + canonical = _canonical_json_bytes(path) + relative = path.relative_to(contract_dir).as_posix() + current_files.append( + { + "path": relative, + "sha256": hashlib.sha256(canonical).hexdigest(), + "bytes": len(canonical), + } + ) + aggregate.update(relative.encode("utf-8") + b"\0" + canonical) + + if manifest.get("files") != current_files or aggregate.hexdigest() != recorded_digest: + raise Phase2PreflightError(f"stale Phase 2 contract manifest: {manifest_path}") + return contract_set, recorded_digest + + +def phase2_contract_digest(root: Path = ROOT) -> str: + """Return one digest over the three frozen Phase 2 contract sets.""" + + aggregate = hashlib.sha256() + seen_sets: set[str] = set() + for relative_path in PHASE2_CONTRACT_MANIFESTS: + contract_set, digest = _validated_contract_set_digest(root / relative_path) + if contract_set in seen_sets: + raise Phase2PreflightError(f"duplicate Phase 2 contract set: {contract_set}") + seen_sets.add(contract_set) + aggregate.update(contract_set.encode("utf-8") + b"\0" + bytes.fromhex(digest)) + return f"sha256:{aggregate.hexdigest()}" + + +def _venv_executable(venv_dir: Path, name: str) -> Path: + if os.name == "nt": + suffix = ".exe" if name in {"python", "agentengine"} else "" + return venv_dir / "Scripts" / f"{name}{suffix}" + return venv_dir / "bin" / name + + +def _run_clean_install_smoke( + runner: CommandRunner, + *, + venv_dir: Path, + cwd: Path, + environment: dict[str, str], +) -> None: + python = _venv_executable(venv_dir, "python") + agentengine = _venv_executable(venv_dir, "agentengine") + runner([str(python), "-c", CLEAN_INSTALL_SMOKE], cwd=cwd, environment=environment) + runner([str(agentengine), "plugin", "--help"], cwd=cwd, environment=environment) + runner( + [str(agentengine), "plugin", "toolchain", "--help"], + cwd=cwd, + environment=environment, + ) + + +def _create_clean_venv( + runner: CommandRunner, + *, + root: Path, + environment: dict[str, str], +) -> Path: + venv_dir = root / "venv" + runner( + [sys.executable, "-m", "venv", str(venv_dir)], + cwd=root, + environment=environment, + ) + return venv_dir + + +def validate_clean_artifact_installations( + artifacts: Sequence[Path], + *, + runner: CommandRunner | None = None, +) -> dict[str, str]: + """Install the wheel and a wheel rebuilt from sdist into separate clean venvs.""" + + wheel_candidates = [path.resolve() for path in artifacts if path.suffix == ".whl"] + sdist_candidates = [path.resolve() for path in artifacts if path.name.endswith(".tar.gz")] + if len(wheel_candidates) != 1 or len(sdist_candidates) != 1: + raise Phase2PreflightError("clean install gate requires exactly one wheel and one sdist") + wheel = wheel_candidates[0] + sdist = sdist_candidates[0] + run = runner or _run + clean_environment = { + "PYTHONNOUSERSITE": "1", + "PYTHONPATH": "", + } + + with tempfile.TemporaryDirectory(prefix="ksadk-phase2-wheel-") as raw_root: + root = Path(raw_root) + venv_dir = _create_clean_venv(run, root=root, environment=clean_environment) + python = _venv_executable(venv_dir, "python") + run( + [ + str(python), + "-m", + "pip", + "install", + "--disable-pip-version-check", + str(wheel), + ], + cwd=root, + environment=clean_environment, + ) + _run_clean_install_smoke( + run, + venv_dir=venv_dir, + cwd=root, + environment=clean_environment, + ) + + with tempfile.TemporaryDirectory(prefix="ksadk-phase2-sdist-") as raw_root: + root = Path(raw_root) + venv_dir = _create_clean_venv(run, root=root, environment=clean_environment) + python = _venv_executable(venv_dir, "python") + wheel_dir = root / "rebuilt-wheel" + run( + [ + str(python), + "-m", + "pip", + "wheel", + "--disable-pip-version-check", + "--no-deps", + "--wheel-dir", + str(wheel_dir), + str(sdist), + ], + cwd=root, + environment=clean_environment, + ) + rebuilt_wheels = sorted(wheel_dir.glob("ksadk-*.whl")) + if len(rebuilt_wheels) != 1: + raise Phase2PreflightError( + f"sdist must build exactly one KsADK wheel, found {len(rebuilt_wheels)}" + ) + run( + [ + str(python), + "-m", + "pip", + "install", + "--disable-pip-version-check", + str(rebuilt_wheels[0]), + ], + cwd=root, + environment=clean_environment, + ) + _run_clean_install_smoke( + run, + venv_dir=venv_dir, + cwd=root, + environment=clean_environment, + ) + + return { + "cleanWheelInstall": "passed", + "cleanSdistInstall": "passed", + } + + +def _artifact_kind(path: Path) -> str: + if path.suffix == ".whl": + return "wheel" + if path.name.endswith(".tar.gz"): + return "sdist" + raise Phase2PreflightError(f"unsupported evidence artifact: {path}") + + +def build_phase2_evidence_report( + artifacts: Sequence[Path], + *, + source_commit: str, + contract_digest: str, + e2e_statuses: Mapping[str, str], +) -> dict[str, object]: + normalized_commit = source_commit.lower() + if not _COMMIT_PATTERN.fullmatch(normalized_commit): + raise Phase2PreflightError("evidence source commit must be a full Git SHA") + if not _DIGEST_PATTERN.fullmatch(contract_digest): + raise Phase2PreflightError("evidence contract digest must be sha256") + if set(e2e_statuses) != set(PHASE2_E2E_STATUS_KEYS): + raise Phase2PreflightError("evidence E2E statuses are incomplete") + if any(value not in {"passed", "failed", "not_run"} for value in e2e_statuses.values()): + raise Phase2PreflightError("evidence E2E status is invalid") + + artifact_evidence: dict[str, dict[str, str]] = {} + for artifact in artifacts: + kind = _artifact_kind(artifact) + if kind in artifact_evidence: + raise Phase2PreflightError(f"duplicate evidence artifact kind: {kind}") + artifact_evidence[kind] = { + "file": artifact.name, + "sha256": f"sha256:{_sha256(artifact)}", + } + if set(artifact_evidence) != {"wheel", "sdist"}: + raise Phase2PreflightError("evidence requires one wheel and one sdist") + + ordered_statuses = {name: e2e_statuses[name] for name in PHASE2_E2E_STATUS_KEYS} + local_complete = all(value == "passed" for value in ordered_statuses.values()) + return { + "schemaVersion": PHASE2_EVIDENCE_SCHEMA_VERSION, + "phase": "phase2", + "scope": "local-source-and-package", + # This local preflight deliberately cannot claim release completion: + # registry publication, consumer images and deployed targets are + # separate evidence inputs bound by the final release-candidate gate. + "overallStatus": "incomplete", + "localStatus": "passed" if local_complete else "incomplete", + "releaseStatus": "not_evaluated", + "sourceCommit": normalized_commit, + "contractDigest": contract_digest, + "artifacts": artifact_evidence, + "e2e": ordered_statuses, + } + + +def validate_phase2_evidence_report( + report: Mapping[str, object], + *, + artifacts: Sequence[Path], + source_commit: str, + contract_digest: str, + require_complete: bool, +) -> None: + if ( + report.get("schemaVersion") != PHASE2_EVIDENCE_SCHEMA_VERSION + or report.get("phase") != "phase2" + ): + raise Phase2PreflightError("evidence schema is invalid") + if report.get("sourceCommit") != source_commit.lower(): + raise Phase2PreflightError("evidence source commit does not match current source") + if report.get("contractDigest") != contract_digest: + raise Phase2PreflightError("evidence contract digest does not match current contracts") + + raw_statuses = report.get("e2e") + if not isinstance(raw_statuses, dict) or set(raw_statuses) != set(PHASE2_E2E_STATUS_KEYS): + raise Phase2PreflightError("evidence E2E statuses are incomplete") + if any(value not in {"passed", "failed", "not_run"} for value in raw_statuses.values()): + raise Phase2PreflightError("evidence E2E status is invalid") + expected_local = ( + "passed" if all(value == "passed" for value in raw_statuses.values()) else "incomplete" + ) + if report.get("scope") != "local-source-and-package": + raise Phase2PreflightError("evidence scope is invalid") + if report.get("localStatus") != expected_local: + raise Phase2PreflightError("evidence local status is inconsistent") + if report.get("overallStatus") != "incomplete": + raise Phase2PreflightError("local evidence must not claim overall release completion") + if report.get("releaseStatus") != "not_evaluated": + raise Phase2PreflightError("local evidence release status is invalid") + if require_complete and expected_local != "passed": + raise Phase2PreflightError("evidence local status is incomplete") + + raw_artifacts = report.get("artifacts") + if not isinstance(raw_artifacts, dict) or set(raw_artifacts) != {"wheel", "sdist"}: + raise Phase2PreflightError("evidence artifact set is invalid") + for artifact in artifacts: + kind = _artifact_kind(artifact) + item = raw_artifacts.get(kind) + if not isinstance(item, dict) or item.get("file") != artifact.name: + raise Phase2PreflightError(f"evidence {kind} artifact identity does not match") + expected_digest = f"sha256:{_sha256(artifact)}" + if item.get("sha256") != expected_digest: + raise Phase2PreflightError(f"evidence {kind} artifact digest does not match") + + +def write_phase2_evidence_report(path: Path, report: Mapping[str, object]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text( + json.dumps(report, ensure_ascii=False, indent=2, sort_keys=True) + "\n", + encoding="utf-8", + ) + + +def run_release_test_gates() -> dict[str, str]: + """Run every source-level release gate with its required host enabled.""" + + _run([sys.executable, "-m", "pytest", "-q", *COMPATIBILITY_TESTS]) + _run( + [sys.executable, "-m", "pytest", "-q", *CREDENTIAL_FREE_NATIVE_TESTS], + environment={ + "KSADK_CODEX_PLUGIN_E2E": "1", + "KSADK_CODEX_PROVIDER_E2E": "1", + "KSADK_CODEX_SUBAGENT_E2E": "1", + }, + ) + _run( + [sys.executable, "-m", "pytest", "-q", *MANAGED_DSH_TOOLCHAIN_TESTS], + environment={"KSADK_DSH_TOOLCHAIN_E2E": "1"}, + ) + for browser_gate in BROWSER_GATES: + python_path = os.pathsep.join( + value for value in (str(ROOT), os.environ.get("PYTHONPATH", "")) if value + ) + _run( + [sys.executable, browser_gate], + environment={"PYTHONPATH": python_path}, + ) + return {name: "passed" for name in SOURCE_E2E_STATUS_KEYS} + + +def parse_args(argv: Sequence[str]) -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + "--dist-dir", + type=Path, + default=ROOT / "dist", + help="directory containing the already-built wheel and sdist", + ) + parser.add_argument( + "--skip-tests", + action="store_true", + help="skip source E2E gates; evidence is generated as incomplete", + ) + parser.add_argument( + "--evidence-output", + type=Path, + default=None, + help="Phase 2 evidence report path (default: DIST_DIR/phase2-evidence.json)", + ) + return parser.parse_args(argv) + + +def main(argv: Sequence[str] | None = None) -> int: + args = parse_args(sys.argv[1:] if argv is None else argv) + dist_dir = args.dist_dir.resolve() + + source_gate_statuses = {name: "not_run" for name in SOURCE_E2E_STATUS_KEYS} + if not args.skip_tests: + source_gate_statuses = run_release_test_gates() + public_export = ( + (ROOT / "export-manifest.json").is_file() + and not (ROOT / "ksadk/studio/react-ui/package.json").is_file() + ) + validate_generated_static_tracking_policy(ROOT, public_export=public_export) + source_commit = _current_source_commit() + artifacts = validate_distribution_archives( + dist_dir, + expected_source_commit=source_commit, + ) + install_statuses = validate_clean_artifact_installations(artifacts) + + # Reuse the established release artifact audit for path and content scans, + # including local absolute paths, internal endpoints, and secret patterns. + _run([sys.executable, "scripts/audit_release_artifacts.py", str(dist_dir)]) + _run([sys.executable, "-m", "twine", "check", *(str(path) for path in artifacts)]) + # Do not run the public-repository source audit against the internal + # development checkout: it intentionally contains internal design/evidence + # documents that are removed by the clean-export workflow. The artifact + # audit above extracts both distributions and applies the same content rules + # to the exact files users would receive. + + if _current_source_commit() != source_commit: + raise Phase2PreflightError("source commit changed while release preflight was running") + contract_digest = phase2_contract_digest() + report = build_phase2_evidence_report( + artifacts, + source_commit=source_commit, + contract_digest=contract_digest, + e2e_statuses={**source_gate_statuses, **install_statuses}, + ) + validate_phase2_evidence_report( + report, + artifacts=artifacts, + source_commit=source_commit, + contract_digest=contract_digest, + require_complete=not args.skip_tests, + ) + evidence_output = ( + args.evidence_output.resolve() + if args.evidence_output is not None + else dist_dir / "phase2-evidence.json" + ) + write_phase2_evidence_report(evidence_output, report) + + if report["localStatus"] == "passed": + print("Phase 2 local compatibility/package preflight passed") + else: + print("Phase 2 package preflight passed; release evidence is incomplete") + for artifact in artifacts: + print(f"- {artifact} sha256:{_sha256(artifact)}") + print(f"- evidence: {evidence_output}") + print(f"- contract digest: {contract_digest}") + print("Cloud/pre-production validation: not run") + return 0 + + +if __name__ == "__main__": + try: + raise SystemExit(main()) + except (Phase2PreflightError, subprocess.CalledProcessError) as error: + print(f"Phase 2 preflight failed: {error}", file=sys.stderr) + raise SystemExit(1) from error diff --git a/scripts/prepare_ksadk_python_export.py b/scripts/prepare_ksadk_python_export.py index ef4b324a..e74b0fe5 100644 --- a/scripts/prepare_ksadk_python_export.py +++ b/scripts/prepare_ksadk_python_export.py @@ -11,6 +11,7 @@ from __future__ import annotations import argparse +import hashlib import json import shutil import subprocess @@ -64,6 +65,7 @@ } EXPORT_PREFIXES = ( + "contracts/", "docs-site/", "ksadk/", "ksadk_runtime_common/", @@ -107,15 +109,48 @@ "scripts/check_release_version.py", "scripts/generate_public_assets.py", "scripts/open_source_audit.py", + "scripts/phase2_release_candidate_gate.py", + "scripts/phase2_release_preflight.py", "scripts/prepare_ksadk_python_export.py", "scripts/prepare_ksadk_web_export.py", "scripts/public_secret_audit.py", "scripts/verify_ksadk_web_static.py", + "scripts/write_build_provenance.py", } PUBLIC_TEST_FILES = { + "tests/__init__.py", "tests/conftest.py", "tests/events/fixtures/runtime_projection_golden.json", + "tests/compat/fixtures/v0.8.2-agent-bundle.provenance.json", + "tests/compat/fixtures/v0.8.2-agent-bundle.zip.b64", + "tests/compat/fixtures/v0.8.2-managed-runtime-agentengine.provenance.json", + "tests/compat/fixtures/v0.8.2-managed-runtime-agentengine.yaml", + "tests/compat/test_phase2_legacy_compat.py", + "tests/compat/test_release_082_asset_compat.py", + "tests/e2e/test_codex_plugin_bridge_e2e.py", + "tests/e2e/test_codex_provider_app_server_e2e.py", + "tests/e2e/test_codex_subagent_provider_e2e.py", + "tests/e2e/fixtures/codex-marketplace/.agents/plugins/marketplace.json", + "tests/e2e/fixtures/codex-marketplace/plugins/ksadk-bridge-e2e/.codex-plugin/plugin.json", + "tests/e2e/fixtures/codex-marketplace/plugins/ksadk-bridge-e2e/skills/bridge-check/SKILL.md", + "tests/e2e/test_dsh_managed_toolchain_e2e.py", + "tests/e2e/chat_completions_stub.py", + "tests/e2e/codex_app_server_fixture.py", + "tests/fixtures/dsh-node-agent-provider/cordis.patch.yml", + "tests/fixtures/dsh-node-agent-provider/index.mjs", + "tests/fixtures/dsh-node-agent-provider/package.json", + "tests/fixtures/dsh-node-agent-provider/provider-host.mjs", + "tests/e2e/codex_responses_stub.py", + "tests/harness/__init__.py", + "tests/harness/fixtures/__init__.py", + "tests/harness/fixtures/mcp_server.py", + "tests/packaging/test_phase2_release_candidate_gate.py", + "tests/packaging/test_phase2_release_preflight.py", + "tests/packaging/test_write_build_provenance.py", + "tests/plugins/__init__.py", + "tests/plugins/test_dsh_node_provider_e2e.py", + "tests/plugins/test_codex_provider_vertical.py", "tests/test_check_approval_record.py", "tests/test_check_publication_state.py", "tests/test_config_env_registry.py", @@ -124,6 +159,15 @@ "tests/test_public_release_positioning.py", "tests/test_runtime_common_packaging.py", "tests/studio/test_style_system.py", + "tests/studio/__init__.py", + "tests/studio/test_framework_bundle_integrity.py", + "tests/studio/runtime_adapter_fixtures.py", + "tests/studio/e2e/conversation_items_browser_e2e.py", + "tests/studio/e2e/conversation_reconnect_browser_e2e.py", + "tests/studio/e2e/dsh_client_bundle_browser_e2e.py", + "tests/studio/e2e/scheduler_browser_e2e.py", + "tests/studio/e2e/scheduler_fault_matrix_browser_e2e.py", + "tests/studio/e2e/scheduler_harness_browser_e2e.py", "tests/studio/e2e/studio_browser_smoke.py", "tests/studio/e2e/studio_e2e_support.py", "tests/studio/e2e/studio_responsive_smoke.py", @@ -222,6 +266,26 @@ def git_files(root: Path) -> list[str]: ) +def git_source_provenance(root: Path) -> tuple[str, str]: + """Return the reviewed source identity carried by a clean export.""" + + commit = subprocess.run( + ["git", "rev-parse", "HEAD"], + cwd=root, + check=True, + text=True, + stdout=subprocess.PIPE, + ).stdout.strip().lower() + status = subprocess.run( + ["git", "status", "--porcelain", "--untracked-files=all"], + cwd=root, + check=True, + text=True, + stdout=subprocess.PIPE, + ).stdout.strip() + return commit, "dirty" if status else "clean" + + def filesystem_files(root: Path) -> list[str]: paths: list[str] = [] for path in sorted(root.rglob("*")): @@ -328,6 +392,7 @@ def build_export_plan(repo_root: Path) -> ExportPlan: def copy_export(plan: ExportPlan, output_dir: Path) -> None: repo_root = Path(plan.repo_root) + source_commit, source_tree = git_source_provenance(repo_root) if output_dir.exists(): shutil.rmtree(output_dir) output_dir.mkdir(parents=True) @@ -340,27 +405,35 @@ def copy_export(plan: ExportPlan, output_dir: Path) -> None: target.parent.mkdir(parents=True, exist_ok=True) shutil.copy2(source, target) + policy_payload = { + "rootFiles": sorted(ROOT_EXPORT_FILES), + "prefixes": list(EXPORT_PREFIXES), + "curatedDocs": sorted(CURATED_DOCS), + "curatedReferenceDocs": sorted(CURATED_REFERENCE_DOCS), + "scripts": sorted(SCRIPT_EXPORT_FILES), + "tests": sorted(PUBLIC_TEST_FILES), + } + policy_digest = hashlib.sha256( + json.dumps( + policy_payload, + ensure_ascii=False, + sort_keys=True, + separators=(",", ":"), + ).encode("utf-8") + ).hexdigest() manifest = { + "schemaVersion": 1, "generatedAt": datetime.now(timezone.utc).isoformat(), + "sourceCommit": source_commit, + "sourceTree": source_tree, "targetRepository": TARGET_REPOSITORY, "documentation": DOCUMENTATION_URL, "exportPathCount": len(plan.export_paths), - "excludedPathCount": len(plan.excluded_paths), - "excludedPaths": plan.excluded_paths, - "includePolicy": { - "rootFiles": sorted(ROOT_EXPORT_FILES), - "prefixes": list(EXPORT_PREFIXES), - "curatedDocs": sorted(CURATED_DOCS), - "curatedReferenceDocs": sorted(CURATED_REFERENCE_DOCS), - "scripts": sorted(SCRIPT_EXPORT_FILES), - "tests": sorted(PUBLIC_TEST_FILES), + "exportPolicy": { + "mode": "allowlist", + "schemaVersion": 1, + "sha256": policy_digest, }, - "notes": [ - "Local-only clean export candidate.", - "Clean export uses an allowlist policy for the first public GitHub snapshot.", - "Run public-repo audit before importing to GitHub.", - "Do not include PyPI/TestPyPI credentials, .pypirc files, or CI secrets.", - ], } (output_dir / "export-manifest.json").write_text( json.dumps(manifest, indent=2, ensure_ascii=False) + "\n", diff --git a/scripts/write_build_provenance.py b/scripts/write_build_provenance.py new file mode 100644 index 00000000..9eab2b08 --- /dev/null +++ b/scripts/write_build_provenance.py @@ -0,0 +1,105 @@ +#!/usr/bin/env python3 +"""Write deterministic source provenance for the next wheel and sdist build. + +The generated file is intentionally ignored by Git. It is package payload, +not source: every build overwrites it from the current checkout, and the +release preflight rejects dirty or stale provenance in either archive. +""" + +from __future__ import annotations + +import argparse +import json +import re +import subprocess +from pathlib import Path +from typing import Sequence + +from ksadk.version import VERSION + +ROOT = Path(__file__).resolve().parents[1] +DEFAULT_OUTPUT = ROOT / "ksadk" / "_build_provenance.json" +EXPORT_MANIFEST = "export-manifest.json" +_COMMIT_PATTERN = re.compile(r"^[0-9a-f]{40}$") + + +def _git(root: Path, *args: str) -> str: + completed = subprocess.run( + ["git", *args], + cwd=root, + check=True, + capture_output=True, + text=True, + ) + return completed.stdout.strip() + + +def _clean_export_provenance(root: Path) -> tuple[str, str]: + """Read the identity recorded while preparing a Git-free public export.""" + + manifest_path = root / EXPORT_MANIFEST + try: + payload = json.loads(manifest_path.read_text(encoding="utf-8")) + except (OSError, json.JSONDecodeError) as error: + raise RuntimeError( + "Git metadata is unavailable and this directory has no valid clean export manifest" + ) from error + commit = str(payload.get("sourceCommit") or "").lower() + source_tree = str(payload.get("sourceTree") or "") + if not _COMMIT_PATTERN.fullmatch(commit) or source_tree != "clean": + raise RuntimeError( + "clean export manifest must carry a clean 40-character sourceCommit" + ) + return commit, source_tree + + +def build_provenance(root: Path = ROOT) -> dict[str, object]: + try: + commit = _git(root, "rev-parse", "HEAD") + status = _git(root, "status", "--porcelain", "--untracked-files=all") + source_tree = "dirty" if status else "clean" + except subprocess.CalledProcessError: + commit, source_tree = _clean_export_provenance(root) + return { + "schemaVersion": 1, + "version": VERSION, + "sourceCommit": commit, + "sourceTree": source_tree, + } + + +def write_build_provenance( + output: Path = DEFAULT_OUTPUT, + *, + root: Path = ROOT, +) -> dict[str, object]: + payload = build_provenance(root) + output.parent.mkdir(parents=True, exist_ok=True) + output.write_text( + json.dumps(payload, ensure_ascii=False, sort_keys=True, separators=(",", ":")) + "\n", + encoding="utf-8", + ) + return payload + + +def parse_args(argv: Sequence[str]) -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--output", type=Path, default=DEFAULT_OUTPUT) + return parser.parse_args(argv) + + +def main(argv: Sequence[str] | None = None) -> int: + args = parse_args([] if argv is None else argv) + payload = write_build_provenance(args.output.resolve()) + print( + "Prepared KsADK build provenance: " + f"version={payload['version']}, commit={payload['sourceCommit']}, " + f"tree={payload['sourceTree']}" + ) + return 0 + + +if __name__ == "__main__": + import sys + + raise SystemExit(main(sys.argv[1:])) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 00000000..df7a7f27 --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1 @@ +"""Local test package; prevents collision with third-party ``tests`` packages.""" diff --git a/tests/compat/fixtures/v0.8.2-agent-bundle.provenance.json b/tests/compat/fixtures/v0.8.2-agent-bundle.provenance.json new file mode 100644 index 00000000..13e4af99 --- /dev/null +++ b/tests/compat/fixtures/v0.8.2-agent-bundle.provenance.json @@ -0,0 +1,50 @@ +{ + "schemaVersion": 1, + "sourceTag": "v0.8.2", + "sourceCommit": "c8c9be629f4cb054ec4d8818cf0596ef42377671", + "builderPath": "ksadk/studio/builder.py", + "builderSha256": "7b8f31e51991c1408eee4207fde3f35617261303dea11c115a86621acbe3e937", + "contractsPath": "ksadk/studio/contracts.py", + "contractsSha256": "c348abd3d252972024196b7e0be9fcb6d0ef8d547edf59d7f6cc0fe53fb3698d", + "archiveSha256": "2c54768787899d4cde31e85f1ea71c00956d1654a0bf244b85d5a89c18387eae", + "generation": "git archive v0.8.2, import AgentBundleBuilder from that tree, build the declared LangGraph Agent below", + "sourceAgent": { + "id": "release-082-code-agent", + "runtimeType": "langgraph", + "entryPoint": "agent.py", + "agentVariable": "graph", + "model": { + "model": "model-example", + "endpointUrl": "https://model.example.com/v1/chat/completions", + "credentialRef": "env://MODEL_API_KEY" + }, + "allowedHosts": ["model.example.com"], + "system": "Preserve the 0.8.2 role.", + "task": "Answer without plugins.", + "sourceFiles": { + "agent.py": "from langgraph.graph import END, START, StateGraph\n\ndef answer(_state):\n return {'output': 'hello from release 0.8.2'}\n\nbuilder = StateGraph(dict)\nbuilder.add_node('answer', answer)\nbuilder.add_edge(START, 'answer')\nbuilder.add_edge('answer', END)\ngraph = builder.compile()\n" + } + }, + "buildRecord": { + "id": "build_9e5a9657774d1ad84afc", + "agentId": "release-082-code-agent", + "sourceRevision": 1, + "status": "SUCCEEDED", + "resolvedDigest": "sha256:9e5a9657774d1ad84afc92a22dad94f2f73bd2b8eecddde1521f28e3954a5d2e", + "runtimeType": "langgraph", + "sourceDigest": "sha256:3835cfd1db2023d5b82ce0caff91786864fa9ff947edd511c30b36799a002ab8", + "runtimeLock": { + "type": "langgraph", + "projectPath": "agents/release-082-code-agent/source", + "entryPoint": "agent.py", + "agentVariable": "graph", + "detection": "declared", + "sourceDigest": "sha256:3835cfd1db2023d5b82ce0caff91786864fa9ff947edd511c30b36799a002ab8", + "definitionDigest": "sha256:d0af206350f95daf4497f76b5e57f14fc2a76c3e9e8d215b505352f993602835", + "model": "model-example", + "models": ["model-example"] + }, + "bundleDigest": "sha256:72124cf95c60f873407afd7eaf91dc8dea3d486f17839de19112b30f1d23e6b6", + "artifactPath": "dist/release-082-code-agent/build_9e5a9657774d1ad84afc/agent-bundle.zip" + } +} diff --git a/tests/compat/fixtures/v0.8.2-agent-bundle.zip.b64 b/tests/compat/fixtures/v0.8.2-agent-bundle.zip.b64 new file mode 100644 index 00000000..001fb44c --- /dev/null +++ b/tests/compat/fixtures/v0.8.2-agent-bundle.zip.b64 @@ -0,0 +1 @@ +UEsDBBQAAAAIAAAAIQAbjfeeagEAAAsCAAANAAAAYWdlbnRraXQubG9ja11QTWvcMBC992foHK9t2bIt3wJJIP2gZUsLpZQw1oyyYmXLSIpbWPLfO7sbeuhJ0pv3MXonAc+05EcUo4jkCRIV1SALE5CKy0jcCCTrFpddWO7cM6XM3HQAqboRK7Cy6hpVWa0QbNvq3vbdpEj1tm6tkdB3piFNA8paTapSjZJW66ar5NAoNvfBHL9TTOzOvpfIo8u7M1xuNRNms36luDFFjD9/8ZtX82I8CRMJme3A78mylpZtLMtPn+/uPz7dfnl8+nD/g+W04Brckr9FFolDzmti1sVkR39gXj3tTJg5qzQHyCXfGTp/Nol/YdezeOMzvkKEmfJlqZMA78Pv9ykse0orC+khxBm4pxxf6JXZMWwOKbJRWGkBV5xTILuJzXgeKQW/Ef5fryYFulN937dYAw4tWKMlSImAurXS9s2EchqIDCJSrWRt5UCNVi0olOdF09F5/9ZcCi/R0J42d227vhE5hOv09d1fUEsDBBQAAAAIAAAAIQCbyye/QwIAALUDAAANAAAAY2hlY2tzdW1zLnR4dF2TXXIbOQyE332KuYAV4pfkcUgQyGotjbwaObW+faA4VbuVp5liDbuBr3tImyFMgo5hpZfw6Dgwal/xfDRcWB0GMQC3KV7FxywlOumI1rdtfPf98XZ+nC43e3spIR6zVOEhqLBa9xa9T1DFRRiFRa01K9yGBbsAVlk0F9vQtNu2v27Hw9frm993v7ze/Z+P892v6XGc/j5u+0uYAHevo/YmjQlm1BlAMtQWysJoxTyHzxFUwbvVgcxTaynTrW7beT8e9w97nG/78e34TLvr6bpegvOul5lS0YQlcIBLRRQtqy7H3tZcMKWURmEVvY+84j4jD4b8IfwYx9tTFtNV0MLJHKpG7g4+C646OpDVYrxmNALT1aE3xAygyRTqDlZ9294vH9/P++uT7xcCoKlzdaTpTigos406m8+M0piSOSFEJlatyHgmm5FO76Vi6RqckvfbD9/Hbv5bUcyVe2hiM1icMXN+bYQ6i7UKAzoNAiX1yspCw5/GxcrUIWvb7n7cLj8yuF99eD3e3b6k10DAUVpvY4YFBk4z4DlJgRnZuDBFi8az8qjQkhRNEgrE4jxS+mN/nK/+PwCUyVNZAjBWvioh0arT1QZLq9L7sIGJoaXXpCdRd55Z4eKB+p/mt1/Tnt4/XxiGF/QGvaO4ZsGyXqsz8OLc+Xm9cl+8NA8kotYKT5bdEryF/CHpe0bmp89xvbyUDBzUNMpa3Et23oo35RGqKwFU713ydymkJQvrQktWzu/ZWiTNxh7zdj0d7+vfr/V/AlBLAwQUAAAACAAAACEAxxhgWxwBAADPAQAAHwAAAGhvc3RlZC1rZXJuZWwtcmVxdWlyZW1lbnRzLmpzb25dUTtvwyAQ3vszmPMAjI3J2rVDpUrdDzhsFBunGEeyov73QpImajf0ve6740L0EuyAb7BOSyIHAh2GdPRpd8P3Z042xE1xhD9sP80J7faIMeCwjfi1+IhjJuf9mWXHjXidQopgsvNCrO9wLhlCIqO0QlpZJUGjBl5xYwoATGhltHGy1YxR1UpqjOUGK8kclZVuOCvpMz7K3CuUqd8bEpeQ/Ihl3pX9hOhBDxkgXYRTn70Zjev75MMjYndaMz7AEkyfGzvfZeaetL8qMHQ+4G6Fcfin/OiB103Wz9fHQTBAyrFlSvEaG4VStbVVggkrGpSIQkuhrLBNBmrnpJRMNU7krVs0rs7xaT2VvgOE7tb5udfzns+f+C1aDvDyA1BLAwQUAAAACAAAACEANKugVBsAAAAZAAAAFgAAAGluc3RydWN0aW9ucy9zeXN0ZW0ubWQLKEotTi0qS1UoyUhVMNCz0DNSKMrPSdXjAgBQSwMEFAAAAAgAAAAhAMw1LgEaAAAAGAAAABQAAABpbnN0cnVjdGlvbnMvdGFzay5tZHPMKy5PLVIozyzJyC8tUSjIKU3PzCvW4wIAUEsDBBQAAAAIAAAAIQDvOtZhOQQAAHUIAAANAAAAbWFuaWZlc3QuanNvbn1VTW8bVwy892foHCkk37dvRYsCRXsKcmrRAx/JZ6vWV7WyETfIfy/XbiQnsQMsoNXuE4cazgw/LvjadqdfdXG1ONrGeLIlVFrKXm35+GrxZtHvdrqxn9fXNp383HTDlPJVIaQooyXJMGoJEQoPLcajoUpV46Cx5oGlhqaGDZF6gIFKwXLP58K/7I9bngs/4t2uT6un52/vyc/I0fhk+uN8AFuBJaBf7wGuHq8//MhYb2xaXP35cXHg083zQpu93PqBp44vrYdchbAHbDQEGgwbjZhGaTrmj0pKxZBDRIy1JyvJuAOMFjKP2uaS639tcZUofHpzhpUbk9vpbjutTh9OL8Ca15IAfgH2TOj1CngrKeXRonGtONg0V8ISqagEbV3Ub4s/5XiGbbE9g73ZT07Q8taOO9ssj/bP3fpoW2dgWv097XcvNAIj2ehQUuREGbU2q6O1jjmTBhoQU5ZaBWJlGdESUkkaukbh7PScG4n5+f9f76bT8U5O6/1uejs9eFfb1VZfwB+SMDYrXFpNNQbso/SBIXEWpaQ0Koj5KLzBnNGaFKYYey4A3aSc8Sm9Bn/i6fYV8Oj1DbrDjZpiGsRoqZC/Ay1q1Kp2xZ4AahhSyBr7T8z68AecLuDxGfhhc3e93i1nwb3GOnnviWRYEMOSh/OL1oG0cMMgBSRqHzWgZG3YKpGLsqaeQjOUYhfVfQF83N/bjndir+Fi6Llro9DNAiVKvXLp1bp7QGLw4QfC4VIvAolnS7gXujUoBC2Pi+wKPKf7aNN+c+/Ce3TbcjqYvNpBEsuxjezfBDW6nzwtSALlDlILMrbAAXPIVmKOKbDNjYJAz5z03AFmyM9buNud1lv7LuvKnlMMtVXuQwYN6iIYew8ZY/QEixDDqKPGXiIXrD6f0EMKgwgs8hk7lPot9NvHP786PLyUMq7tAJoQWf02BwpBS7csHFMtqTUWJmffU0F6mKdtFrtHDtigfEF2/7+GbDtXna0eeLt5oYOIbEBWsTVKlt1x7jdtEaNGZ3pGK7Fp1OwP0hilFJwn3sTlIeMidSR61sHU99vVdNAPr+aLCxuz5AGqsYHnh4DVHHnkrE55sdaSRw8EnyeapaBJnQtzj1PIF3/X+umvN/8H3G+P+fbuEm9fLySrrXd24lhL8uzklMyNM7J7uYiruxAXdmn7hHX4gkrgoVrQRQ8YJTjqk4t/dzl9XTxWQ89nj+ukqRdM3YOROftyE9AQvVBkgKLoUZ1LRj8RB3rKDglxzOb9bJivSzdz1+Xk5EedpeI0ybyOSNln5YotnrzkEzFR9UWa3K1ULbQ5vj2Y5tJPmvhpvzsdWb7YpZ/lco+Xc+8fDk7uYsO76+sjH25mvvd3R/lmx4cakgxF7QTkQ+qVxEB4+I4vNftIBzf/En1BzUL31ea+Kq5sAOJez4Xf2f168mB2KX364T9QSwMEFAAAAAgAAAAhALtsT7oxAAAANgAAABAAAABwbHVnaW4tbG9jay5qc29uq1bKyU/Odssvyk0sUbJSSkxPzSvJzizRK8gpTc/M0wVJ6pcZKukoQQSKlayiY2u5AFBLAwQUAAAACAAAACEAUvsJHZ4BAADBAgAADwAAAHByb3ZlbmFuY2UuanNvbl2SP3PbMAzF934MzXVKgAQpem2XXpdee9cdBMBYiS2lkuwll+9e+s/50qwP4MMPD3zt+NHG9bt22262vfFiG9fjRia1zaXUfe5kOrwMe5v/2LwM09haoalqdRiHtQnfhkdb1iYvO0aKW3Vc0UVPrmZSriHkVFMsZJQqhCrIKYq3bL0iUCFHnrDm7KPD3lMzr9N84LPlheF5WB9e5ulkI49iX07n8btpWU1/2Dzavtu+NshxnVnWO0xIBs55c15z4mKF0aPIWWAIJUuRmvoC4HKfnIiimE9QXfIlIsBl8avnb7ujbJ4vE68Ms/09DrMdmv4xA+tzaRMjsyYSr0xkBlIjFEoCSVILgRlLNa+1VyMXOSRwxA6C+P/dl5+87pr5dekbw+Z9w8PT0i7zdn61TPuT6UegbMQ5UkopKLD2gatkZERlzaFibWsrlt5MVNWAECr25jMFJkU7Ax3HdTjY11sq769zK11jWabjLPYRAEjAavZBIIrkGg0lkBiDtGyyVK/UEwQKscSmpoAtwhooZgvB4934l52G6z+Et0//AFBLAwQUAAAACAAAACEAosILNHEDAABGBgAAGAAAAHJlc29sdmVkLWFnZW50LXNwZWMuanNvbnVU247jNgx971cEes7Njp3EeZt2p+h0u50g2XZRLIoFLdGxEFkyJDmXBvn3Ur7MTDvtUxyKPOLhOdSNwQG1fxJswywqBIeT+TqecCNw0h6xMeNQQy6V9BId29xYxes92hNa+vf1zzFzR6lU/+2N6T7vVGeqWiq0v1OmNJquiAKa0R4vPgCFBOC+Pbsx1JArpE68bXDMCtW48hNWxl6/x8JY/OFNdpdSghWfS4uuNErsgI7YZj5dp2NWUzC0+MXYo9SHvQePQ5UzhX9fRUX+PdS969fKvPEm8L1RpILLk64b/9kcUVNsEc/n8zEzZ01ES1kTUaB04lobJfn1lX/PfXKKw6ElQv75TVVhocIztUynPYHnxr+5KZlnSzoySpmmn2AL+KgPUhNB5koQ5kzlVTu4L1b6N+F70IeQ5F9ohyYphidQDQwyVFLLqqm24NyunVo0JXKuIaQdFoO2eEHevJTAZe+xprMoDp17ew3hHPjRFMUeqUvheiDKffAeiTlFYkJy3tI1B6pgQlrkwXFeVkgMXyvjOWVKTblN64DWh+7qCIjqtv2wRr7EEak2jUc0I5wGJHBHynjQ7ox2dJa+JNxRrRoamJsG9t2k/mHAApTDVqCTFGiJNkEow0FNBBbQKN8KRP/VfxiXGA56RctgDJronpOBg6OS4DNTf2Sb4C3HTR126isLqjuyNxLysHcNkWK0U+dOxVu3Ev+3DBWtbLAYaCFFEO5+74Jtj9yiIFQJqmOD+rSZzT49f3j85dvD9unbx8c/6EbUojZS+98sFbHS+9pRVgsyxQtUNQ2VlnZ2ima8BD8LC6ywE+Tlsu530ucHo0PwtW/fixujoZnzz87oHbqaCvFHYyvwHY3769QJiIajQU7aZ8JLmnHQi7Q26oTigzyg852543S5yTCFbJmuVqtERCDWCRQ8iyGOBYgsKeJitchFnK8RuRACozSOiniNiyxNIBVxaNTxEit4XddWiKP00+FOIh7SyPokyfWFDYot2ko61zkzvIMafbvIQ8rWyhOJ8usQ7i3Wl/9knG9t8G7UQf9eWWqCHiLuyWn37qHdts9LWBzU10l+fXFnsJZpLMd/DylKeYRFtkh4tOQ8K5YY8yTlCBFPU8x4sRDpOo2SNFnmS4qukjjL8yJJlxkmySI8Wx3wDk+ym1J0/+5vUEsDBBQAAAAIAAAAIQC4jmNR/QAAAHoBAAARAAAAcnVudGltZS1sb2NrLmpzb25dkLtuxCAQRft8BvU6y8O8XOcDtkoTpRhg8BJ5bQuIFCvKvwd7k2Yr4Iw4c2e+CYw411fICdyEZCBjhvVKTiRgTHOqaZlf0oiltlK5ApdqCBQip0pIGq0MEPve6qiVkyh1ZH30HLTyAi2awJl0kkohebRWKMqNkIe8ot/dzRrQT5AxNNyS5O2ypHnvdgR7XrfGb0vAqaHj7PALbmvL+scLGd4eKu8nsublo7W4QL3+u8o544RQsKOGd7796A5+Lstn9rvvfnmcV7TMPgYWHKdcBOkM90g9xGiZNsqoPoJtj15jCJIxL6gTSlsLlHJwponrtu67nWAe7/v9efoFUEsDBBQAAAAIAAAAIQAahoL7rgAAABUBAAAQAAAAcnVudGltZS9hZ2VudC5weW2PMQvCMBCF9/yK25JACeIkhQ6C4uag3Utsrm0gTUKa4CD+d1vbooI33MG9j/fumuB6MNK2bZC+E+8OuvcuRDieDxlcy/2lHEeUEU+TSojCBqQd7hhYNUx7nhMYK2BMwcKDuhR9ijQH2qExDpopJKBBOSBsxE5s6ZOQW9JGYYDiy5wpXUe+SkIqVVmnkNE5j2ZL8C+CqkW2HLqSf4iPyfgZJ/OvBaxc7XqvDTJOXlBLAwQUAAAACAAAACEATEPYf2AAAAB6AAAAGAAAAHJ1bnRpbWUvYWdlbnRlbmdpbmUueWFtbDXLwQ5AMBAE0LvP2LM24iR+plmsEtU2S4iIfzeRuE3ezNzEXuLuDtaZuyDUklfOE5UE1svlNMcd+s1svlCMyqucSRdw4Oj/QwSDVILwJqZqatOnQcx3RZ+5X5AxsfQUL1BLAwQUAAAACAAAACEAFoUpd1IAAABYAAAADgAAAHNib20uc3BkeC5qc29uq1ZKzs8tyM9LzSspVrKKjtVRykvMTVWyUipKzUlNLE7VNbAw0k3OT0nVTUwHqoGSSaV5KTmpSjpKxQUpFWGpRcWZ+XlAPcEBLhG6RnrGSrVcAFBLAQIUAxQAAAAIAAAAIQAbjfeeagEAAAsCAAANAAAAAAAAAAAAAACkgQAAAABhZ2VudGtpdC5sb2NrUEsBAhQDFAAAAAgAAAAhAJvLJ79DAgAAtQMAAA0AAAAAAAAAAAAAAKSBlQEAAGNoZWNrc3Vtcy50eHRQSwECFAMUAAAACAAAACEAxxhgWxwBAADPAQAAHwAAAAAAAAAAAAAApIEDBAAAaG9zdGVkLWtlcm5lbC1yZXF1aXJlbWVudHMuanNvblBLAQIUAxQAAAAIAAAAIQA0q6BUGwAAABkAAAAWAAAAAAAAAAAAAACkgVwFAABpbnN0cnVjdGlvbnMvc3lzdGVtLm1kUEsBAhQDFAAAAAgAAAAhAMw1LgEaAAAAGAAAABQAAAAAAAAAAAAAAKSBqwUAAGluc3RydWN0aW9ucy90YXNrLm1kUEsBAhQDFAAAAAgAAAAhAO861mE5BAAAdQgAAA0AAAAAAAAAAAAAAKSB9wUAAG1hbmlmZXN0Lmpzb25QSwECFAMUAAAACAAAACEAu2xPujEAAAA2AAAAEAAAAAAAAAAAAAAApIFbCgAAcGx1Z2luLWxvY2suanNvblBLAQIUAxQAAAAIAAAAIQBS+wkdngEAAMECAAAPAAAAAAAAAAAAAACkgboKAABwcm92ZW5hbmNlLmpzb25QSwECFAMUAAAACAAAACEAosILNHEDAABGBgAAGAAAAAAAAAAAAAAApIGFDAAAcmVzb2x2ZWQtYWdlbnQtc3BlYy5qc29uUEsBAhQDFAAAAAgAAAAhALiOY1H9AAAAegEAABEAAAAAAAAAAAAAAKSBLBAAAHJ1bnRpbWUtbG9jay5qc29uUEsBAhQDFAAAAAgAAAAhABqGgvuuAAAAFQEAABAAAAAAAAAAAAAAAKSBWBEAAHJ1bnRpbWUvYWdlbnQucHlQSwECFAMUAAAACAAAACEATEPYf2AAAAB6AAAAGAAAAAAAAAAAAAAApIE0EgAAcnVudGltZS9hZ2VudGVuZ2luZS55YW1sUEsBAhQDFAAAAAgAAAAhABaFKXdSAAAAWAAAAA4AAAAAAAAAAAAAAKSByhIAAHNib20uc3BkeC5qc29uUEsFBgAAAAANAA0ARAMAAEgTAAAAAA== diff --git a/tests/compat/fixtures/v0.8.2-managed-runtime-agentengine.provenance.json b/tests/compat/fixtures/v0.8.2-managed-runtime-agentengine.provenance.json new file mode 100644 index 00000000..e0012a64 --- /dev/null +++ b/tests/compat/fixtures/v0.8.2-managed-runtime-agentengine.provenance.json @@ -0,0 +1,9 @@ +{ + "fixtureSha256": "a520f4517a015f367fd197a38a38f9dee2e1de1bc7505aa282c245360be3584f", + "generationProcedure": "CodexAgentManifest fields valid at v0.8.2 serialized with serialize_managed_runtime_manifest from the pinned tag", + "openaiCodexVersion": "0.147.0", + "sourceCommit": "c8c9be629f4cb054ec4d8818cf0596ef42377671", + "sourceSchemaPath": "ksadk/studio/codex_manifest.py", + "sourceSerializerPath": "ksadk/builders/managed_runtime_builder.py", + "sourceTag": "v0.8.2" +} diff --git a/tests/compat/fixtures/v0.8.2-managed-runtime-agentengine.yaml b/tests/compat/fixtures/v0.8.2-managed-runtime-agentengine.yaml new file mode 100644 index 00000000..664301a3 --- /dev/null +++ b/tests/compat/fixtures/v0.8.2-managed-runtime-agentengine.yaml @@ -0,0 +1,9 @@ +artifact_type: ManagedRuntime +framework: codex +model: fixture-codex-model +name: release-082-managed +prompt: Preserve the release 0.8.2 ManagedRuntime role. +runtime: + name: codex + version: 0.147.0 +version: 1.0.0 diff --git a/tests/compat/test_phase2_legacy_compat.py b/tests/compat/test_phase2_legacy_compat.py new file mode 100644 index 00000000..12eb7261 --- /dev/null +++ b/tests/compat/test_phase2_legacy_compat.py @@ -0,0 +1,199 @@ +"""Phase 2 compatibility gate for pre-plugin local Agents. + +These tests exercise the established Studio/runtime paths. They deliberately +do not construct a PluginHost or a PostgreSQL service: a historical 0.8.2 +Bundle and a local Runtime must remain usable without either dependency. +""" + +from __future__ import annotations + +import hashlib +import json +from pathlib import Path + +from fastapi.testclient import TestClient + +from ksadk.kernel import ingress +from ksadk.kernel.bootstrap import clear_agent_kernel_runtime +from ksadk.server.composition import configure_runtime_app +from ksadk.server.factory import RuntimeAppConfig, create_runtime_app +from ksadk.sessions.local_service import LocalSessionService +from ksadk.studio.capabilities import compute_bundle_digest +from ksadk.studio.contracts import ( + AgentSpec, + BundleManifest, + Instructions, + ModelSpec, + NetworkPolicy, + RuntimeRef, + SecuritySpec, +) +from ksadk.studio.service import StudioService + + +def _build_langgraph_bundle(workspace: Path): + studio = StudioService(workspace) + draft = studio.create_studio_agent( + agent_id="legacy-082-agent", + name="Legacy 0.8.2 Agent", + spec=AgentSpec( + runtime=RuntimeRef( + type="langgraph", + project_path="agents/legacy-082-agent/source", + entry_point="agent.py", + agent_variable="graph", + ), + model=ModelSpec( + model="model-example", + endpoint_url="https://model.example.com/v1/chat/completions", + credential_ref="env://MODEL_API_KEY", + ), + instructions=Instructions(system="Keep the historical role."), + security=SecuritySpec( + network=NetworkPolicy(allowed_hosts=["model.example.com"]) + ), + ), + ) + build = studio.builder.build(draft) + archive = studio.workspace.resolve(build.artifact_path, must_exist=True) + return studio, build, archive.parent / "agent-bundle" + + +def _rewrite_as_historical_v1(studio: StudioService, build, bundle_root: Path) -> None: + # Construct the historical shape from its stable v1 members instead of + # naming today's v2-only sidecars. If Phase 2 grows another sidecar later, + # this fixture cannot accidentally start accepting it as part of v1. + legacy_files = { + "agentkit.lock", + "checksums.txt", + "manifest.json", + "resolved-agent-spec.json", + "runtime-lock.json", + "sbom.spdx.json", + } + legacy_prefixes = ("instructions/", "runtime/") + for path in sorted(bundle_root.rglob("*"), reverse=True): + if not path.is_file(): + continue + relative = path.relative_to(bundle_root).as_posix() + if relative in legacy_files or relative.startswith(legacy_prefixes): + continue + path.unlink() + + checksum_path = bundle_root / "checksums.txt" + checksums: list[str] = [] + for path in sorted(bundle_root.rglob("*")): + if not path.is_file(): + continue + relative = path.relative_to(bundle_root).as_posix() + if relative in {"manifest.json", "checksums.txt"}: + continue + checksums.append(f"{hashlib.sha256(path.read_bytes()).hexdigest()} {relative}") + checksum_path.write_text("\n".join(checksums) + "\n", encoding="utf-8") + + files: list[dict[str, object]] = [] + for path in sorted(bundle_root.rglob("*")): + if not path.is_file(): + continue + relative = path.relative_to(bundle_root).as_posix() + if relative == "manifest.json": + continue + content = path.read_bytes() + files.append( + { + "path": relative, + "sha256": f"sha256:{hashlib.sha256(content).hexdigest()}", + "size": len(content), + } + ) + + manifest = BundleManifest( + bundle_format="agentkit.bundle/v1", + agent_id=build.agent_id, + source_revision=build.source_revision, + resolved_digest=build.resolved_digest, + files=files, + ) + manifest.bundle_digest = compute_bundle_digest(manifest) + wire = manifest.model_dump(by_alias=True, exclude_none=True, mode="json") + for field in ( + "runtimeType", + "sourceDigest", + "runtimeContract", + "pluginLockDigest", + "compositionProfileDigest", + "hostedKernelRequirementDigest", + ): + wire.pop(field, None) + (bundle_root / "manifest.json").write_text( + json.dumps(wire, ensure_ascii=False, sort_keys=True), encoding="utf-8" + ) + build.bundle_digest = manifest.bundle_digest + studio.builds.save(build) + + +def test_082_bundle_without_plugin_manifest_uses_legacy_studio_path(tmp_path: Path) -> None: + studio, build, bundle_root = _build_langgraph_bundle(tmp_path) + _rewrite_as_historical_v1(studio, build, bundle_root) + + assert not (bundle_root / "ksadk-plugin.yaml").exists() + assert not (bundle_root / "plugin-lock.json").exists() + assert not any("plugin" in path.name.lower() for path in bundle_root.rglob("*")) + + # Management views must still find the historical Build. + managed = studio.build_view(build.id) + assert managed.id == build.id + assert any(item["id"] == build.id for item in studio.evaluation_catalog()["builds"]) + + # Runtime selection must remain on the established framework resolver; + # PluginHost is only an admission requirement for composed Bundle v2. + run_spec = studio.resolve_run_spec(build.id) + assert run_spec.launch_context.runtime_type == "langgraph" + assert run_spec.request_config["agent_system"] == "Keep the historical role." + + +def test_local_runtime_starts_and_manages_sessions_without_kernel_or_postgres( + monkeypatch, tmp_path: Path +) -> None: + for name in ( + "AGENT_KERNEL_ENABLED", + "KSADK_AGENT_KERNEL", + "AGENT_KERNEL_STORE_DSN", + "KSADK_SESSION_DSN", + "KSADK_STM_URL", + "KSADK_STM_DB_URL", + "AGENTENGINE_SESSION_BACKEND", + "KSADK_STM_BACKEND", + ): + monkeypatch.delenv(name, raising=False) + monkeypatch.setenv("KSADK_SESSION_BACKEND", "local") + monkeypatch.setenv("KSADK_SESSION_PATH", str(tmp_path / "sessions.sqlite")) + + clear_agent_kernel_runtime() + ingress.clear_agent_kernel() + app = create_runtime_app(RuntimeAppConfig(), configure_runtime_app) + try: + with TestClient(app) as client: + assert client.get("/health").status_code == 200 + assert app.state.agent_kernel_runtime is None + assert isinstance(app.state.runtime.resolve_session_service(), LocalSessionService) + assert app.state.runtime.describe_session_backend()["Backend"] == "local" + + created = client.post( + "/agentengine/api/v1/CreateSession", + json={ + "AgentId": "legacy-082-agent", + "UserId": "local-user", + "SessionId": "legacy-session", + }, + ) + assert created.status_code == 200 + listed = client.post( + "/agentengine/api/v1/ListSessions", + json={"AgentId": "legacy-082-agent", "UserId": "local-user"}, + ) + assert listed.status_code == 200 + assert listed.json()["Data"]["Total"] == 1 + finally: + clear_agent_kernel_runtime() + ingress.clear_agent_kernel() diff --git a/tests/compat/test_release_082_asset_compat.py b/tests/compat/test_release_082_asset_compat.py new file mode 100644 index 00000000..d664cd00 --- /dev/null +++ b/tests/compat/test_release_082_asset_compat.py @@ -0,0 +1,359 @@ +"""Compatibility gate backed by an AgentBundle built by the v0.8.2 release. + +Unlike the synthetic v1 downgrade fixture, this asset is byte-for-byte output +from ``AgentBundleBuilder`` at the annotated public ``v0.8.2`` tag. Its +adjacent provenance file pins the tag commit, historical builder hashes, input +Agent, BuildRecord, archive hash, and generation procedure. + +This is a local compatibility proof. It does not replace deployment or cloud +management E2E against a released image and Server/Operator build. +""" + +from __future__ import annotations + +import base64 +import hashlib +import io +import json +import os +import socket +import subprocess +import sys +import time +import urllib.error +import urllib.request +import zipfile +from importlib.metadata import version +from pathlib import Path + +import pytest + +from ksadk.kernel import ingress +from ksadk.kernel.bootstrap import clear_agent_kernel_runtime +from ksadk.studio.cloud import DirectAgentEngineCloudDeploymentGateway, InMemoryCloudGateway +from ksadk.studio.contracts import ( + BuildRecord, + DeploymentRecord, + DeploymentTarget, + RunStatus, +) +from ksadk.studio.repository import BuildRepository +from ksadk.studio.service import StudioService +from ksadk.studio.workspace import Workspace +from tests.e2e.codex_responses_stub import DeterministicResponsesStub + +_FIXTURE_ROOT = Path(__file__).parent / "fixtures" +_ARCHIVE_B64 = _FIXTURE_ROOT / "v0.8.2-agent-bundle.zip.b64" +_PROVENANCE = _FIXTURE_ROOT / "v0.8.2-agent-bundle.provenance.json" +_MANAGED_RUNTIME = _FIXTURE_ROOT / "v0.8.2-managed-runtime-agentengine.yaml" +_MANAGED_RUNTIME_PROVENANCE = ( + _FIXTURE_ROOT / "v0.8.2-managed-runtime-agentengine.provenance.json" +) + + +def _fixture() -> tuple[bytes, dict]: + provenance = json.loads(_PROVENANCE.read_text(encoding="utf-8")) + archive = base64.b64decode(_ARCHIVE_B64.read_text(encoding="ascii").strip(), validate=True) + assert hashlib.sha256(archive).hexdigest() == provenance["archiveSha256"] + assert provenance["sourceTag"] == "v0.8.2" + assert provenance["sourceCommit"] == "c8c9be629f4cb054ec4d8818cf0596ef42377671" + return archive, provenance + + +def _install_release_build(tmp_path: Path) -> tuple[StudioService, BuildRecord, bytes]: + archive, provenance = _fixture() + workspace = Workspace(tmp_path) + workspace.initialize() + build = BuildRecord.model_validate(provenance["buildRecord"]) + artifact = workspace.resolve(build.artifact_path or "") + artifact.parent.mkdir(parents=True, exist_ok=False) + artifact.write_bytes(archive) + bundle_root = artifact.parent / "agent-bundle" + bundle_root.mkdir() + with zipfile.ZipFile(io.BytesIO(archive)) as bundle: + for member in bundle.infolist(): + path = Path(member.filename) + assert not path.is_absolute() and ".." not in path.parts + bundle.extractall(bundle_root) + BuildRepository(workspace).save(build) + return StudioService(tmp_path), build, archive + + +def test_release_082_asset_is_traceable_and_has_no_plugin_manifest() -> None: + archive, provenance = _fixture() + with zipfile.ZipFile(io.BytesIO(archive)) as bundle: + names = set(bundle.namelist()) + manifest = json.loads(bundle.read("manifest.json")) + plugin_lock = json.loads(bundle.read("plugin-lock.json")) + source = bundle.read("runtime/agent.py").decode("utf-8") + + # v0.8.2 already emitted Bundle v2. The retained synthetic v1 fixture + # therefore covers still older builds; it must not be presented as a + # byte-for-byte 0.8.2 artifact. + assert manifest["bundleFormat"] == "agentkit.bundle/v2" + assert manifest["bundleDigest"] == provenance["buildRecord"]["bundleDigest"] + assert plugin_lock == {"lockFormat": "agentkit.plugin-lock/v1", "plugins": []} + assert "ksadk-plugin.yaml" not in names + assert "plugin-manifest.json" not in names + assert not any(name.endswith("/_bundle_identity.py") for name in names) + assert source == provenance["sourceAgent"]["sourceFiles"]["agent.py"] + + +@pytest.mark.asyncio +async def test_current_runtime_opens_and_runs_release_082_code_bundle_without_kernel_or_pg( + monkeypatch: pytest.MonkeyPatch, + tmp_path: Path, +) -> None: + for name in ( + "AGENT_KERNEL_ENABLED", + "KSADK_AGENT_KERNEL", + "AGENT_KERNEL_STORE_DSN", + "KSADK_SESSION_DSN", + "KSADK_STM_URL", + "KSADK_STM_DB_URL", + "AGENTENGINE_SESSION_BACKEND", + "KSADK_STM_BACKEND", + ): + monkeypatch.delenv(name, raising=False) + monkeypatch.setenv("KSADK_SESSION_BACKEND", "local") + monkeypatch.setenv("KSADK_SESSION_PATH", str(tmp_path / "sessions.sqlite")) + clear_agent_kernel_runtime() + ingress.clear_agent_kernel() + + try: + studio, build, _archive = _install_release_build(tmp_path) + assert studio.build_view(build.id).bundle_digest == build.bundle_digest + assert any(item["id"] == build.id for item in studio.evaluation_catalog()["builds"]) + + run_spec = studio.resolve_run_spec(build.id) + assert run_spec.launch_context.runtime_type == "langgraph" + assert run_spec.plugin_bundle_root is None + assert run_spec.request_config["agent_system"] == "Preserve the 0.8.2 role." + + completed = await studio.run_service.run( + run_spec, + "hello", + session_id="release-082-compat-session", + ) + assert completed.status == RunStatus.COMPLETED + assert completed.output == "hello from release 0.8.2" + assert ingress.get_agent_kernel() is None + finally: + clear_agent_kernel_runtime() + ingress.clear_agent_kernel() + + +@pytest.mark.asyncio +async def test_legacy_management_routes_remain_open() -> None: + code = DirectAgentEngineCloudDeploymentGateway._account_agent_view( + { + "agent_id": "ar-existing-code", + "framework": "langgraph", + "capabilities": {"session_event_chat": {"enabled": True}}, + } + ) + native = DirectAgentEngineCloudDeploymentGateway._account_agent_view( + { + "agent_id": "ar-existing-native", + "runtime_kind": "openclaw", + } + ) + assert code["chatTransport"] == "studio-session-events" + assert native["chatTransport"] == "official-dashboard" + + # Old receipts omit Phase 2 fields. Their defaults must keep management + # and the native/ManagedRuntime Dashboard path usable without admission. + managed = DeploymentRecord( + id="dep-existing-managed", + build_id="build-existing-managed", + bundle_digest="sha256:" + "a" * 64, + version_id="managed-aaaaaaaaaaaaaaaa", + status="READY", + target=DeploymentTarget(region="test-region", environment="test"), + agent_id="ar-existing-managed", + artifact_id="managed-runtime", + ) + assert managed.requires_kernel is False + access = await InMemoryCloudGateway().get_deployment_dashboard_access(managed) + assert access["access_url"] == "memory://dashboard/ar-existing-managed" + + +def _unused_local_port() -> int: + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: + sock.bind(("127.0.0.1", 0)) + return int(sock.getsockname()[1]) + + +def _wait_for_json(url: str, process: subprocess.Popen[str]) -> dict: + deadline = time.monotonic() + 30 + while time.monotonic() < deadline: + if process.poll() is not None: + output = process.stdout.read().strip() if process.stdout is not None else "" + pytest.fail( + "historical ManagedRuntime exited before health check " + f"(code={process.returncode}): {output or '(no output)'}" + ) + try: + with urllib.request.urlopen(url, timeout=1) as response: # noqa: S310 + payload = json.loads(response.read()) + assert isinstance(payload, dict) + return payload + except (OSError, urllib.error.URLError, json.JSONDecodeError): + time.sleep(0.2) + pytest.fail("historical ManagedRuntime did not become healthy within 30 seconds") + + +def _post_json(url: str, payload: dict) -> dict: + request = urllib.request.Request( # noqa: S310 + url, + data=json.dumps(payload).encode("utf-8"), + headers={"Content-Type": "application/json"}, + method="POST", + ) + try: + with urllib.request.urlopen(request, timeout=15) as response: # noqa: S310 + result = json.loads(response.read()) + except urllib.error.HTTPError as error: + body = error.read().decode("utf-8", errors="replace") + raise AssertionError(f"HTTP {error.code} from {url}: {body}") from error + assert isinstance(result, dict) + return result + + +def _response_text(payload: dict) -> str: + texts: list[str] = [] + for item in payload.get("output", []): + if not isinstance(item, dict): + continue + for part in item.get("content", []): + if isinstance(part, dict) and isinstance(part.get("text"), str): + texts.append(part["text"]) + return "".join(texts) + + +def test_release_082_managed_runtime_runs_real_codex_binary_without_pluginhost( + tmp_path: Path, +) -> None: + """Run the frozen pre-Phase-2 YAML through the current native binary.""" + + pytest.importorskip( + "codex_cli_bin", + reason="install the codex extra to run native ManagedRuntime compatibility", + ) + provenance = json.loads(_MANAGED_RUNTIME_PROVENANCE.read_text(encoding="utf-8")) + manifest = _MANAGED_RUNTIME.read_bytes() + assert hashlib.sha256(manifest).hexdigest() == provenance["fixtureSha256"] + assert provenance["sourceTag"] == "v0.8.2" + assert provenance["sourceCommit"] == "c8c9be629f4cb054ec4d8818cf0596ef42377671" + assert version("openai-codex") == provenance["openaiCodexVersion"] + + (tmp_path / "agentengine.yaml").write_bytes(manifest) + codex_home = tmp_path / "codex-home" + codex_home.mkdir() + port = _unused_local_port() + env = dict(os.environ) + env.update( + { + "AGENT_KERNEL_ENABLED": "0", + "KSADK_CODEX_HOME": str(codex_home), + "KSADK_CODEX_ISOLATE_HOME": "1", + "KSADK_SESSION_BACKEND": "local", + "KSADK_SESSION_PATH": str(tmp_path / "sessions.sqlite"), + "PYTHONUTF8": "1", + } + ) + + with DeterministicResponsesStub() as responses: + env.update( + { + "KSADK_CODEX_USE_PROXY": "0", + "OPENAI_API_BASE": responses.base_url, + "OPENAI_API_KEY": "release-082-local-stub", + "OPENAI_BASE_URL": responses.base_url, + "OPENAI_MODEL_NAME": "fixture-codex-model", + } + ) + (codex_home / "config.toml").write_text( + f'''model_provider = "release_082_stub" +approval_policy = "never" +sandbox_mode = "read-only" + +[model_providers.release_082_stub] +name = "Release 0.8.2 deterministic compatibility" +base_url = "{responses.base_url}" +wire_api = "responses" +request_max_retries = 0 +stream_max_retries = 0 +requires_openai_auth = false +''', + encoding="utf-8", + ) + process = subprocess.Popen( + [ + sys.executable, + "-m", + "ksadk.cli", + "web", + str(tmp_path), + "--port", + str(port), + "--no-open", + ], + env=env, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + text=True, + ) + failure: Exception | None = None + try: + health = _wait_for_json(f"http://127.0.0.1:{port}/health", process) + assert health["status"] == "ok" + assert health["framework"] == "codex" + first = _post_json( + f"http://127.0.0.1:{port}/v1/responses", + { + "model": "fixture-codex-model", + "input": "first historical native turn", + "conversation": "release-082-native-session", + }, + ) + second = _post_json( + f"http://127.0.0.1:{port}/v1/responses", + { + "model": "fixture-codex-model", + "input": "second historical native turn", + "conversation": "release-082-native-session", + }, + ) + assert _response_text(first) == "bridge skill received" + assert _response_text(second) == "bridge skill received" + except Exception as error: + failure = error + finally: + if process.poll() is None: + process.terminate() + try: + process.wait(timeout=10) + except subprocess.TimeoutExpired: + process.kill() + process.wait(timeout=10) + output = process.stdout.read().strip() if process.stdout is not None else "" + if failure is not None: + raise AssertionError( + f"historical ManagedRuntime request failed: {failure}\n{output}" + ) from failure + + requests = responses.requests() + assert len(requests) == 2 + assert all( + "Preserve the release 0.8.2 ManagedRuntime role." + in str(request.payload.get("instructions") or "") + for request in requests + ) + assert ( + requests[0].payload["client_metadata"]["thread_id"] + == requests[1].payload["client_metadata"]["thread_id"] + ) + assert "bridge skill received" in requests[1].input_texts("assistant") + assert process.returncode is not None + assert not any(path.name == "plugin-lock.json" for path in tmp_path.rglob("*")) diff --git a/tests/e2e/chat_completions_stub.py b/tests/e2e/chat_completions_stub.py new file mode 100644 index 00000000..01b33263 --- /dev/null +++ b/tests/e2e/chat_completions_stub.py @@ -0,0 +1,111 @@ +"""Deterministic local Chat Completions endpoint for real runtime vertical tests.""" + +from __future__ import annotations + +import json +import threading +import time +from dataclasses import dataclass +from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer +from typing import Any + + +@dataclass(frozen=True) +class CapturedChatRequest: + path: str + authorization: str + payload: dict[str, Any] + + +class DeterministicChatCompletionsStub: + def __init__(self) -> None: + self._requests: list[CapturedChatRequest] = [] + self._lock = threading.Lock() + self._server = _ChatServer(("127.0.0.1", 0), _ChatHandler, self) + self._thread = threading.Thread( + target=self._server.serve_forever, + name="harness-chat-completions-stub", + daemon=True, + ) + + def __enter__(self) -> "DeterministicChatCompletionsStub": + self._thread.start() + return self + + def __exit__(self, _exc_type: object, _exc: object, _tb: object) -> None: + self._server.shutdown() + self._server.server_close() + self._thread.join(timeout=2) + + @property + def endpoint_url(self) -> str: + host, port = self._server.server_address + return f"http://{host}:{port}/v1/chat/completions" + + def requests(self) -> list[CapturedChatRequest]: + with self._lock: + return list(self._requests) + + def _respond(self, path: str, authorization: str, payload: dict[str, Any]) -> dict[str, Any]: + with self._lock: + self._requests.append( + CapturedChatRequest( + path=path, + authorization=authorization, + payload=payload, + ) + ) + index = len(self._requests) + return { + "id": f"chatcmpl-harness-{index}", + "object": "chat.completion", + "created": int(time.time()), + "model": str(payload.get("model") or "fixture-model"), + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": f"scheduled harness result {index}", + }, + "finish_reason": "stop", + } + ], + "usage": { + "prompt_tokens": 1, + "completion_tokens": 1, + "total_tokens": 2, + }, + } + + +class _ChatServer(ThreadingHTTPServer): + def __init__(self, address: tuple[str, int], handler: type[BaseHTTPRequestHandler], owner): + super().__init__(address, handler) + self.owner = owner + + +class _ChatHandler(BaseHTTPRequestHandler): + server: _ChatServer + + def do_POST(self) -> None: # noqa: N802 - BaseHTTPRequestHandler contract + length = int(self.headers.get("Content-Length") or "0") + try: + payload = json.loads(self.rfile.read(length) or b"{}") + except json.JSONDecodeError: + self.send_error(400) + return + response = self.server.owner._respond( + self.path, + self.headers.get("Authorization") or "", + payload, + ) + body = json.dumps(response, separators=(",", ":")).encode("utf-8") + self.send_response(200) + self.send_header("Content-Type", "application/json") + self.send_header("Content-Length", str(len(body))) + self.end_headers() + self.wfile.write(body) + + def log_message(self, _format: str, *_args: object) -> None: + return diff --git a/tests/e2e/codex_app_server_fixture.py b/tests/e2e/codex_app_server_fixture.py new file mode 100644 index 00000000..50f32568 --- /dev/null +++ b/tests/e2e/codex_app_server_fixture.py @@ -0,0 +1,58 @@ +"""Shared launcher for credential-free tests that exercise the real Codex App Server.""" + +from __future__ import annotations + +import dataclasses +from pathlib import Path +from typing import Any + +from ksadk.codex.client import AsyncCodexClient + + +class RealCodexFactory: + """Launch a real App Server against a deterministic local Responses endpoint.""" + + def __init__(self, *, responses_url: str) -> None: + self._responses_url = responses_url + self.processes: list[Any] = [] + + def __call__(self, config: Any = None) -> AsyncCodexClient: + assert config is not None + environment = dict(getattr(config, "env", None) or {}) + codex_home = Path(environment["CODEX_HOME"]) + codex_home.mkdir(parents=True, exist_ok=True) + (codex_home / "config.toml").write_text( + f'''model_provider = "ksadk_provider_stub" +approval_policy = "never" +sandbox_mode = "read-only" + +[model_providers.ksadk_provider_stub] +name = "KsADK provider deterministic E2E" +base_url = "{self._responses_url}" +wire_api = "responses" +request_max_retries = 0 +stream_max_retries = 0 +requires_openai_auth = false +''', + encoding="utf-8", + ) + environment.update( + { + "CODEX_APP_SERVER_DISABLE_MANAGED_CONFIG": "1", + "RUST_LOG": "warn", + } + ) + client = AsyncCodexClient(dataclasses.replace(config, env=environment)) + transport = client._codex._client._sync + original_close = transport.close + + def recording_close() -> None: + process = transport._proc + try: + original_close() + finally: + if process is not None: + self.processes.append(process) + + transport.close = recording_close + return client diff --git a/tests/e2e/codex_responses_stub.py b/tests/e2e/codex_responses_stub.py new file mode 100644 index 00000000..8d85fbc5 --- /dev/null +++ b/tests/e2e/codex_responses_stub.py @@ -0,0 +1,282 @@ +"""Deterministic local Responses endpoint for real Codex App Server E2E tests.""" + +from __future__ import annotations + +import json +import threading +from dataclasses import dataclass +from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer +from typing import Any + + +@dataclass(frozen=True) +class CapturedResponsesRequest: + """One model request observed at the local stub boundary.""" + + path: str + payload: dict[str, Any] + + def input_texts(self, role: str) -> list[str]: + texts: list[str] = [] + for item in self.payload.get("input", []): + if not isinstance(item, dict) or item.get("role") != role: + continue + content = item.get("content") + if isinstance(content, str): + texts.append(content) + continue + if not isinstance(content, list): + continue + texts.extend( + str(part["text"]) + for part in content + if isinstance(part, dict) + and part.get("type") in {"input_text", "output_text"} + and isinstance(part.get("text"), str) + ) + return texts + + +class DeterministicResponsesStub: + """Return fixed text, or deterministically drive one native MCP round-trip.""" + + def __init__(self, *, mcp_namespace: str | None = None) -> None: + self._requests: list[CapturedResponsesRequest] = [] + self._lock = threading.Lock() + self._mcp_namespace = mcp_namespace + self._next_call = 1 + self._pending_values: dict[str, str] = {} + self._server = _StubServer(("127.0.0.1", 0), _StubHandler, self) + self._thread = threading.Thread( + target=self._server.serve_forever, + name="codex-plugin-responses-stub", + daemon=True, + ) + + def __enter__(self) -> "DeterministicResponsesStub": + self._thread.start() + return self + + def __exit__(self, _exc_type: object, _exc: object, _tb: object) -> None: + self._server.shutdown() + self._server.server_close() + self._thread.join(timeout=2) + + @property + def base_url(self) -> str: + host, port = self._server.server_address + return f"http://{host}:{port}/v1" + + def single_request(self) -> CapturedResponsesRequest: + requests = self.requests() + if len(requests) != 1: + raise AssertionError(f"expected one Responses request, got {len(requests)}") + return requests[0] + + def requests(self) -> list[CapturedResponsesRequest]: + """Return a stable snapshot of every request observed so far.""" + + with self._lock: + return list(self._requests) + + def _record(self, path: str, payload: dict[str, Any]) -> None: + with self._lock: + self._requests.append(CapturedResponsesRequest(path=path, payload=payload)) + + def _events(self, payload: dict[str, Any]) -> tuple[dict[str, Any], ...]: + if self._mcp_namespace is None: + return _message_events("bridge skill received", suffix="plugin-skill") + + with self._lock: + pending_call_ids = frozenset(self._pending_values) + tool_output = _function_call_output(payload, pending_call_ids) + if tool_output is not None: + call_id = str(tool_output.get("call_id") or "") + with self._lock: + self._pending_values.pop(call_id, None) + value = _mcp_result_text(tool_output) + return _message_events( + f"MCP weather observation: {value}", + suffix=f"mcp-final-{call_id}", + ) + + value = _latest_plain_user_text(payload) + with self._lock: + call_id = f"call-mcp-{self._next_call}" + self._next_call += 1 + self._pending_values[call_id] = value + item_id = f"fc-mcp-{call_id}" + arguments = json.dumps({"value": value}, separators=(",", ":")) + item = { + "type": "function_call", + "id": item_id, + "call_id": call_id, + "name": "lookup", + "namespace": self._mcp_namespace, + "arguments": arguments, + } + return ( + { + "type": "response.created", + "response": {"id": f"resp-{call_id}"}, + }, + { + "type": "response.output_item.added", + "output_index": 0, + "item": {**item, "arguments": ""}, + }, + { + "type": "response.function_call_arguments.done", + "item_id": item_id, + "arguments": arguments, + }, + { + "type": "response.output_item.done", + "output_index": 0, + "item": item, + }, + _completed_event(f"resp-{call_id}", [item]), + ) + + +def _function_call_output( + payload: dict[str, Any], pending_call_ids: frozenset[str] +) -> dict[str, Any] | None: + for item in reversed(payload.get("input") or []): + if ( + isinstance(item, dict) + and item.get("type") == "function_call_output" + and item.get("call_id") in pending_call_ids + ): + return item + return None + + +def _latest_plain_user_text(payload: dict[str, Any]) -> str: + for item in reversed(payload.get("input") or []): + if not isinstance(item, dict) or item.get("role") != "user": + continue + content = item.get("content") + if not isinstance(content, list): + continue + for part in reversed(content): + if not isinstance(part, dict) or part.get("type") != "input_text": + continue + text = str(part.get("text") or "") + if not text.startswith(""): + return text + raise AssertionError("deterministic MCP response requires a plain user input") + + +def _mcp_result_text(tool_output: dict[str, Any]) -> str: + output = str(tool_output.get("output") or "") + marker = "Output:\n" + encoded = output.rsplit(marker, 1)[-1].strip() + try: + result = json.loads(encoded) + except json.JSONDecodeError as error: + raise AssertionError(f"MCP output is not deterministic JSON: {output!r}") from error + value = result.get("result") if isinstance(result, dict) else None + if not isinstance(value, str) or not value: + raise AssertionError(f"MCP output has no string result: {result!r}") + return value + + +def _completed_event(response_id: str, output: list[dict[str, Any]]) -> dict[str, Any]: + return { + "type": "response.completed", + "response": { + "id": response_id, + "output": output, + "usage": { + "input_tokens": 1, + "input_tokens_details": None, + "output_tokens": 1, + "output_tokens_details": None, + "total_tokens": 2, + }, + }, + } + + +def _message_events(text: str, *, suffix: str) -> tuple[dict[str, Any], ...]: + response_id = f"resp-{suffix}" + item = { + "type": "message", + "role": "assistant", + "id": f"msg-{suffix}", + "content": [{"type": "output_text", "text": text}], + } + return ( + {"type": "response.created", "response": {"id": response_id}}, + {"type": "response.output_item.done", "item": item}, + _completed_event(response_id, [item]), + ) + + +class _StubServer(ThreadingHTTPServer): + def __init__( + self, + address: tuple[str, int], + handler: type[BaseHTTPRequestHandler], + stub: DeterministicResponsesStub, + ) -> None: + super().__init__(address, handler) + self.stub = stub + + +class _StubHandler(BaseHTTPRequestHandler): + server: _StubServer + + def log_message(self, _format: str, *_args: object) -> None: + return None + + def do_GET(self) -> None: + if self.path.endswith("/models"): + self._send_json( + { + "object": "list", + "data": [ + { + "id": "ksadk-codex-plugin-stub", + "object": "model", + "created": 0, + "owned_by": "test", + } + ], + } + ) + return + self.send_error(404) + + def do_POST(self) -> None: + if not self.path.endswith("/responses"): + self.send_error(404) + return + length = int(self.headers.get("content-length", "0")) + raw = self.rfile.read(length) + payload = json.loads(raw.decode("utf-8")) + if not isinstance(payload, dict): + self.send_error(400) + return + self.server.stub._record(self.path, payload) + events = self.server.stub._events(payload) + body = "".join( + f"event: {event['type']}\ndata: {json.dumps(event)}\n\n" for event in events + ).encode("utf-8") + self.send_response(200) + self.send_header("content-type", "text/event-stream") + self.send_header("content-length", str(len(body))) + self.end_headers() + self.wfile.write(body) + + def _send_json(self, payload: dict[str, Any]) -> None: + body = json.dumps(payload).encode("utf-8") + self.send_response(200) + self.send_header("content-type", "application/json") + self.send_header("content-length", str(len(body))) + self.end_headers() + self.wfile.write(body) + + +__all__ = ["CapturedResponsesRequest", "DeterministicResponsesStub"] diff --git a/tests/e2e/fixtures/codex-marketplace/plugins/ksadk-bridge-e2e/skills/bridge-check/SKILL.md b/tests/e2e/fixtures/codex-marketplace/plugins/ksadk-bridge-e2e/skills/bridge-check/SKILL.md new file mode 100644 index 00000000..88a04ce9 --- /dev/null +++ b/tests/e2e/fixtures/codex-marketplace/plugins/ksadk-bridge-e2e/skills/bridge-check/SKILL.md @@ -0,0 +1,8 @@ +--- +name: bridge-check +description: Verify that the Codex host discovered this local E2E plugin. +--- + +# Bridge check + +Report that the KsADK Codex bridge fixture is available. Do not mutate files. diff --git a/tests/e2e/test_codex_plugin_bridge_e2e.py b/tests/e2e/test_codex_plugin_bridge_e2e.py new file mode 100644 index 00000000..5a4946f2 --- /dev/null +++ b/tests/e2e/test_codex_plugin_bridge_e2e.py @@ -0,0 +1,216 @@ +from __future__ import annotations + +import asyncio +import os +from pathlib import Path + +import pytest + +from ksadk.plugins.bridges.codex import CodexAppServerPluginBridge, CodexBridgeError +from tests.e2e.codex_responses_stub import DeterministicResponsesStub + + +class _LoseFirstInstallReceipt: + """Forward to a real App Server, then lose its first install response.""" + + def __init__(self, delegate) -> None: # noqa: ANN001 + self._delegate = delegate + self.failed = False + + async def start(self) -> None: + await self._delegate.start() + + async def close(self) -> None: + await self._delegate.close() + + async def initialize(self): # noqa: ANN201 + return await self._delegate.initialize() + + async def request(self, method, params, *, response_model): # noqa: ANN001, ANN201 + response = await self._delegate.request( + method, + params, + response_model=response_model, + ) + if method == "plugin/install" and not self.failed: + self.failed = True + raise RuntimeError("injected loss after real App Server install") + return response + + +@pytest.mark.asyncio +@pytest.mark.skipif( + os.getenv("KSADK_CODEX_PLUGIN_E2E") != "1", + reason="set KSADK_CODEX_PLUGIN_E2E=1 to exercise the real Codex App Server", +) +async def test_real_codex_app_server_turn_uses_installed_plugin_skill( + tmp_path: Path, +) -> None: + """Prove install, model-visible skill injection, and uninstall in one host.""" + + from openai_codex.async_client import AsyncCodexClient + from openai_codex.client import CodexConfig + from openai_codex.generated.v2_all import TurnStatus + + marketplace = str(Path(__file__).parent / "fixtures" / "codex-marketplace") + plugin_name = "ksadk-bridge-e2e" + codex_home = tmp_path / "codex-home" + workspace = tmp_path / "workspace" + codex_home.mkdir() + workspace.mkdir() + + with DeterministicResponsesStub() as responses: + (codex_home / "config.toml").write_text( + f'''model = "ksadk-codex-plugin-stub" +model_provider = "ksadk_plugin_stub" +approval_policy = "never" +sandbox_mode = "read-only" + +[model_providers.ksadk_plugin_stub] +name = "KsADK deterministic plugin E2E" +base_url = "{responses.base_url}" +wire_api = "responses" +request_max_retries = 0 +stream_max_retries = 0 +requires_openai_auth = false +''', + encoding="utf-8", + ) + client = AsyncCodexClient( + CodexConfig( + codex_bin=os.getenv("KSADK_CODEX_PLUGIN_E2E_BIN"), + cwd=str(workspace), + env={ + "CODEX_HOME": str(codex_home), + "CODEX_APP_SERVER_DISABLE_MANAGED_CONFIG": "1", + "RUST_LOG": "warn", + }, + ) + ) + async with CodexAppServerPluginBridge(transport=client) as bridge: + marketplace_name = await bridge.add_marketplace(marketplace) + before = await bridge.read_plugin(plugin_name, marketplace_name=marketplace_name) + assert before.inventory.installed is False + + installed = await bridge.install_plugin( + plugin_name, + marketplace_name=marketplace_name, + accept_undeclared_permissions=True, + install_attempt_id="ksadk-codex-plugin-e2e", + ) + assert installed.inventory.installed is True + assert installed.inventory.enabled is True + + installed_detail = await bridge.read_plugin( + plugin_name, + marketplace_name=marketplace_name, + ) + assert installed_detail.skills == ("ksadk-bridge-e2e:bridge-check",) + skill_name = installed_detail.skills[0] + installed_skill_paths = tuple( + codex_home.glob( + "plugins/cache/*/*/*/skills/bridge-check/SKILL.md" + ) + ) + assert len(installed_skill_paths) == 1 + skill_path = str(installed_skill_paths[0].resolve()) + + thread = await client.thread_start( + { + "cwd": str(workspace), + "model": "ksadk-codex-plugin-stub", + "approvalPolicy": "never", + "sandbox": "read-only", + "ephemeral": True, + } + ) + turn = await client.turn_start( + thread.thread.id, + [ + { + "type": "text", + "text": f"${skill_name} Verify the installed bridge fixture.", + }, + { + "type": "skill", + "name": skill_name, + "path": skill_path, + }, + ], + ) + completed = await asyncio.wait_for( + client.wait_for_turn_completed(turn.turn.id), + timeout=10, + ) + assert completed.turn.status is TurnStatus.completed + + model_request = responses.single_request() + skill_blocks = [ + text + for text in model_request.input_texts("user") + if text.startswith("") + ] + assert len(skill_blocks) == 1 + assert f"{skill_name}" in skill_blocks[0] + assert f"{skill_path}" in skill_blocks[0] + assert "Report that the KsADK Codex bridge fixture is available." in skill_blocks[0] + + removed = await bridge.uninstall_plugin(installed.inventory.plugin_id) + assert removed.installed is False + after = await bridge.read_plugin(plugin_name, marketplace_name=marketplace_name) + assert after.inventory.installed is False + assert not installed_skill_paths[0].exists() + + +@pytest.mark.asyncio +@pytest.mark.skipif( + os.getenv("KSADK_CODEX_PLUGIN_E2E") != "1", + reason="set KSADK_CODEX_PLUGIN_E2E=1 to exercise the real Codex App Server", +) +async def test_real_app_server_failed_install_restores_previous_inventory( + tmp_path: Path, +) -> None: + """A real install may commit before its response is lost; compensate it.""" + + from openai_codex.async_client import AsyncCodexClient + from openai_codex.client import CodexConfig + + marketplace = str(Path(__file__).parent / "fixtures" / "codex-marketplace") + codex_home = tmp_path / "codex-home" + workspace = tmp_path / "workspace" + codex_home.mkdir() + workspace.mkdir() + client = AsyncCodexClient( + CodexConfig( + codex_bin=os.getenv("KSADK_CODEX_PLUGIN_E2E_BIN"), + cwd=str(workspace), + env={ + "CODEX_HOME": str(codex_home), + "CODEX_APP_SERVER_DISABLE_MANAGED_CONFIG": "1", + "RUST_LOG": "warn", + }, + ) + ) + transport = _LoseFirstInstallReceipt(client) + async with CodexAppServerPluginBridge(transport=transport) as bridge: + marketplace_name = await bridge.add_marketplace(marketplace) + before = await bridge.read_plugin( + "ksadk-bridge-e2e", + marketplace_name=marketplace_name, + ) + + with pytest.raises(CodexBridgeError, match="previous inventory was restored"): + await bridge.install_plugin( + "ksadk-bridge-e2e", + marketplace_name=marketplace_name, + accept_undeclared_permissions=True, + install_attempt_id="real-lost-receipt", + ) + + after = await bridge.read_plugin( + "ksadk-bridge-e2e", + marketplace_name=marketplace_name, + ) + assert transport.failed is True + assert after.inventory == before.inventory + assert not tuple(codex_home.glob("plugins/cache/*/*/*/skills/bridge-check/SKILL.md")) diff --git a/tests/e2e/test_codex_provider_app_server_e2e.py b/tests/e2e/test_codex_provider_app_server_e2e.py new file mode 100644 index 00000000..272c8207 --- /dev/null +++ b/tests/e2e/test_codex_provider_app_server_e2e.py @@ -0,0 +1,159 @@ +"""Credential-free Bundle -> PluginHost -> real Codex App Server evidence.""" + +from __future__ import annotations + +import os +from pathlib import Path +from typing import Any + +import pytest + +from ksadk.events.canonical import ContinuationCreated, ItemCompleted +from ksadk.events.content import TextContent, ToolCallContent, ToolResultContent +from ksadk.events.store import RuntimeEventStore +from ksadk.plugins.host import PluginHost +from ksadk.plugins.providers.codex import CodexAgentProviderFactory +from ksadk.plugins.resolver import PluginRegistry +from ksadk.sessions.in_memory import InMemorySessionService +from tests.e2e.codex_app_server_fixture import RealCodexFactory +from tests.e2e.codex_responses_stub import DeterministicResponsesStub +from tests.harness.fixtures.mcp_server import run_fixture_mcp_server +from tests.plugins.test_codex_provider_vertical import ( + _profile, + _provider_manifest, + _write_bundle, +) + +pytestmark = pytest.mark.skipif( + os.getenv("KSADK_CODEX_PROVIDER_E2E") != "1", + reason="set KSADK_CODEX_PROVIDER_E2E=1 to exercise the real Codex App Server", +) + + +def _request_texts(request: Any) -> str: + texts = [ + *request.input_texts("system"), + *request.input_texts("developer"), + *request.input_texts("user"), + *request.input_texts("assistant"), + ] + instructions = request.payload.get("instructions") + if isinstance(instructions, str): + texts.insert(0, instructions) + return "\n".join(texts) + + +@pytest.mark.asyncio +async def test_real_app_server_calls_bundle_mcp_twice_and_resumes_native_thread( + tmp_path: Path, +) -> None: + registry = PluginRegistry([_provider_manifest()]) + profile = _profile() + session_service = InMemorySessionService() + + with ( + run_fixture_mcp_server(label="sunny", required_token="") as mcp, + DeterministicResponsesStub(mcp_namespace="mcp__weather") as responses, + ): + bundle = _write_bundle( + tmp_path / "bundle", + registry, + profile, + approval_mode="full", + mcp_servers=[ + { + "name": "weather", + "transport": "http", + "endpointUrl": mcp.url, + "envRefs": {}, + } + ], + ) + client_factory = RealCodexFactory(responses_url=responses.base_url) + provider = CodexAgentProviderFactory( + session_service=session_service, + codex_client_factory=client_factory, + ) + host = PluginHost(registry, {"io.ksadk.codex-provider": provider}) + await host.apply(profile) + try: + first = await host.execute( + bundle, + {"user_id": "provider-e2e", "input": "first provider turn"}, + ) + second = await host.execute( + bundle, + { + "user_id": "provider-e2e", + "session_id": first.session_id, + "input": "second provider turn", + }, + ) + finally: + await host.dispose() + + assert first.session_id == second.session_id + assert first.output_text == "MCP weather observation: sunny:first provider turn" + assert second.output_text == "MCP weather observation: sunny:second provider turn" + assert first.inventory.skills == ("report-style",) + assert first.inventory.mcp_servers == ("weather",) + requests = responses.requests() + assert mcp.log.calls == [ + ("lookup", "first provider turn"), + ("lookup", "second provider turn"), + ] + + assert len(requests) == 4 + first_text = _request_texts(requests[0]) + second_text = _request_texts(requests[2]) + assert "You are a report assistant." in first_text + assert "report-style" in first_text + assert "report-style" in first_text + assert "Use concise reports." in first_text + assert "first provider turn" in first_text + assert "second provider turn" in second_text + assert "MCP weather observation: sunny:first provider turn" in second_text + assert all(request.payload["model"] == "fixture-codex-model" for request in requests) + native_tools = requests[0].payload["tools"] + weather = next(tool for tool in native_tools if tool.get("name") == "mcp__weather") + assert weather["type"] == "namespace" + assert [tool["name"] for tool in weather["tools"]] == ["forbidden", "lookup"] + thread_ids = { + request.payload["client_metadata"]["thread_id"] for request in requests + } + assert len(thread_ids) == 1 + + events = await RuntimeEventStore(session_service).list(first.session_id) + continuations = [event for event in events if isinstance(event, ContinuationCreated)] + assert len(continuations) == 1 + assert continuations[0].ref["thread_id"] == requests[0].payload["client_metadata"]["thread_id"] + assert [event.event_type for event in events].count("run.completed") == 2 + completed_messages = [ + "".join( + part.text for part in event.snapshot.parts if isinstance(part, TextContent) + ) + for event in events + if isinstance(event, ItemCompleted) and event.item_kind == "message" + ] + assert completed_messages == [first.output_text, second.output_text] + completed_tools = [ + event + for event in events + if isinstance(event, ItemCompleted) and event.item_kind == "tool_call" + ] + assert len(completed_tools) == 2 + for event, value in zip( + completed_tools, + ("first provider turn", "second provider turn"), + strict=True, + ): + call = next(part for part in event.snapshot.parts if isinstance(part, ToolCallContent)) + result = next(part for part in event.snapshot.parts if isinstance(part, ToolResultContent)) + assert call.name == "mcp.weather.lookup" + assert call.arguments == {"value": value} + assert result.call_id == call.call_id + assert result.is_error is False + assert str(result.result).find(f"sunny:{value}") >= 0 + + assert len(client_factory.processes) == 2 + assert all(process.poll() is not None for process in client_factory.processes) diff --git a/tests/e2e/test_codex_subagent_provider_e2e.py b/tests/e2e/test_codex_subagent_provider_e2e.py new file mode 100644 index 00000000..2db2807e --- /dev/null +++ b/tests/e2e/test_codex_subagent_provider_e2e.py @@ -0,0 +1,184 @@ +"""Real App Server conformance for isolated one-shot Codex children.""" + +from __future__ import annotations + +import asyncio +import os +import threading +from pathlib import Path +from typing import Any + +import openai_codex +import pytest + +from ksadk.codex.client import AsyncCodexClient +from ksadk.plugins.subagent_providers.codex import ( + DEFAULT_CODEX_CHILD_PROVIDER_REF, + CodexOneShotSubagentProvider, +) +from ksadk.plugins.subagents import SpawnSubagentRequest, SubagentPolicy +from tests.e2e.codex_responses_stub import DeterministicResponsesStub + +pytestmark = pytest.mark.skipif( + os.getenv("KSADK_CODEX_SUBAGENT_E2E") != "1", + reason="set KSADK_CODEX_SUBAGENT_E2E=1 to exercise the real Codex App Server", +) + + +def _request(run_id: str) -> SpawnSubagentRequest: + return SpawnSubagentRequest( + provider_ref=DEFAULT_CODEX_CHILD_PROVIDER_REF, + parent_session_id="parent-session", + parent_run_id=run_id, + task=f"Return the deterministic result for {run_id}.", + policy=SubagentPolicy(timeout_seconds=10), + ) + + +class _ObservedClient: + def __init__(self, delegate: AsyncCodexClient) -> None: + self.delegate = delegate + self.interrupt_results: list[bool] = [] + + async def start_thread(self, config: dict[str, Any]) -> str: + return await self.delegate.start_thread(config) + + def run_turn(self, thread_id: str, prompt: str, *, config: dict[str, Any]): # noqa: ANN201 + return self.delegate.run_turn(thread_id, prompt, config=config) + + async def interrupt_active_turn(self, thread_id: str) -> bool: + result = await self.delegate.interrupt_active_turn(thread_id) + self.interrupt_results.append(result) + return result + + async def close(self) -> None: + await self.delegate.close() + + +class _RealFactory: + def __init__(self, *, responses_url: str) -> None: + self.responses_url = responses_url + self.homes: list[Path] = [] + self.clients: list[_ObservedClient] = [] + self.processes: list[Any] = [] + + def __call__(self, home: Path) -> _ObservedClient: + self.homes.append(home) + (home / "config.toml").write_text( + f"""model = "ksadk-codex-plugin-stub" +model_provider = "ksadk_provider_stub" +approval_policy = "never" +sandbox_mode = "read-only" + +[model_providers.ksadk_provider_stub] +name = "KsADK subagent deterministic E2E" +base_url = "{self.responses_url}" +wire_api = "responses" +request_max_retries = 0 +stream_max_retries = 0 +requires_openai_auth = false +""", + encoding="utf-8", + ) + delegate = AsyncCodexClient( + openai_codex.CodexConfig( + env={ + "CODEX_HOME": str(home), + "CODEX_APP_SERVER_DISABLE_MANAGED_CONFIG": "1", + "RUST_LOG": "warn", + } + ) + ) + transport = delegate._codex._client._sync + original_close = transport.close + + def recording_close() -> None: + process = transport._proc + try: + original_close() + finally: + if process is not None: + self.processes.append(process) + + transport.close = recording_close + client = _ObservedClient(delegate) + self.clients.append(client) + return client + + +@pytest.mark.asyncio +async def test_real_children_use_distinct_app_servers_threads_and_cleanup( + tmp_path: Path, +) -> None: + with DeterministicResponsesStub() as responses: + factory = _RealFactory(responses_url=responses.base_url) + provider = CodexOneShotSubagentProvider( + project_dir=tmp_path, + model="ksadk-codex-plugin-stub", + client_factory=factory, + ) + first = await provider.spawn(_request("run-1")) + second = await provider.spawn(_request("run-2")) + first_result, second_result = await asyncio.gather( + provider.result(first), provider.result(second) + ) + + assert first_result.state == second_result.state == "succeeded" + assert first_result.output == second_result.output == "bridge skill received" + assert first.child_session_id != second.child_session_id + requests = responses.requests() + assert len(requests) == 2 + assert {request.payload["client_metadata"]["thread_id"] for request in requests} == { + first.child_session_id, + second.child_session_id, + } + assert len(set(factory.homes)) == 2 + + await provider.dispose(first) + await provider.dispose(second) + + assert all(not home.exists() for home in factory.homes) + assert len(factory.processes) == 2 + assert len({process.pid for process in factory.processes}) == 2 + assert all(process.poll() is not None for process in factory.processes) + + +@pytest.mark.asyncio +async def test_real_active_turn_is_interrupted_before_cancel_and_dispose( + tmp_path: Path, +) -> None: + entered = threading.Event() + release = threading.Event() + with DeterministicResponsesStub() as responses: + original_events = responses._events + + def blocking_events(payload: dict[str, Any]): # noqa: ANN202 + entered.set() + if not release.wait(timeout=10): + raise TimeoutError("test did not release blocking model response") + return original_events(payload) + + responses._events = blocking_events # type: ignore[method-assign] + factory = _RealFactory(responses_url=responses.base_url) + provider = CodexOneShotSubagentProvider( + project_dir=tmp_path, + model="ksadk-codex-plugin-stub", + client_factory=factory, + ) + handle = await provider.spawn(_request("run-cancel")) + assert await asyncio.to_thread(entered.wait, 5) + + cancel_task = asyncio.create_task(provider.cancel(handle)) + await asyncio.sleep(0.05) + release.set() + await asyncio.wait_for(cancel_task, timeout=5) + + result = await provider.result(handle) + assert result.state == "cancelled" + assert factory.clients[0].interrupt_results == [True] + home = factory.homes[0] + await provider.dispose(handle) + + assert not home.exists() + assert len(factory.processes) == 1 + assert factory.processes[0].poll() is not None diff --git a/tests/e2e/test_dsh_managed_toolchain_e2e.py b/tests/e2e/test_dsh_managed_toolchain_e2e.py new file mode 100644 index 00000000..5c689cbe --- /dev/null +++ b/tests/e2e/test_dsh_managed_toolchain_e2e.py @@ -0,0 +1,45 @@ +"""Opt-in npm E2E for the managed DSH plugin developer toolchain.""" + +from __future__ import annotations + +import os +from pathlib import Path + +import pytest + +from ksadk.plugins.dsh_toolchain import ( + DSH_PACKAGE_SPEC, + DSH_VERSION, + DshPluginDeveloper, + DshToolchainManager, +) + +pytestmark = pytest.mark.skipif( + os.environ.get("KSADK_DSH_TOOLCHAIN_E2E") != "1", + reason="set KSADK_DSH_TOOLCHAIN_E2E=1 to install the pinned public npm toolchain", +) + + +def test_public_npm_toolchain_validates_generated_tgz_and_official_plugin( + tmp_path: Path, +) -> None: + manager = DshToolchainManager(base_dir=tmp_path / "toolchains") + state = manager.install() + assert state.usable is True + assert state.actual_version == DSH_VERSION + + developer = DshPluginDeveloper(toolchain=manager) + source = tmp_path / "example-plugin" + created = developer.create(source, package_name="dsh-agentengine-example") + assert created.package_name == "dsh-agentengine-example" + + source_validation = developer.validate(source) + assert source_validation.host_version == DSH_VERSION + packed = developer.pack(source) + archive_validation = developer.validate(Path(packed.artifact)) + assert archive_validation.package_name == created.package_name + + official = developer.validate("@deepseek-ai/dsh-subagent-codex@0.1.1-rc.2") + assert official.package_name == "@deepseek-ai/dsh-subagent-codex" + assert official.package_version == DSH_VERSION + assert DSH_PACKAGE_SPEC == "@deepseek-ai/dsh@0.1.1-rc.2" diff --git a/tests/fixtures/dsh-node-agent-provider/cordis.patch.yml b/tests/fixtures/dsh-node-agent-provider/cordis.patch.yml new file mode 100644 index 00000000..5753fdd5 --- /dev/null +++ b/tests/fixtures/dsh-node-agent-provider/cordis.patch.yml @@ -0,0 +1,3 @@ +- insert: + - id: ksadk-test-agent-provider + name: '@ksadk-test/dsh-node-agent-provider' diff --git a/tests/fixtures/dsh-node-agent-provider/index.mjs b/tests/fixtures/dsh-node-agent-provider/index.mjs new file mode 100644 index 00000000..d08ff031 --- /dev/null +++ b/tests/fixtures/dsh-node-agent-provider/index.mjs @@ -0,0 +1,201 @@ +import { appendFileSync } from 'node:fs' +import { createHash } from 'node:crypto' + +const PACKAGE_NAME = '@ksadk-test/dsh-node-agent-provider' +const METHODS = [ + 'activate', + 'cancel', + 'describe', + 'dispose', + 'drain', + 'execute', + 'handshake', + 'health', + 'inventory', + 'preflight', +] + +function record(event) { + const target = process.env.KSADK_DSH_EVENT_LOG + if (target) appendFileSync(target, `${event}\n`, 'utf8') +} + +function canonical(value) { + if (Array.isArray(value)) return `[${value.map(canonical).join(',')}]` + if (value && typeof value === 'object') { + return `{${Object.keys(value).sort().map(key => `${JSON.stringify(key)}:${canonical(value[key])}`).join(',')}}` + } + return JSON.stringify(value) +} + +function digest(value) { + return `sha256:${createHash('sha256').update(canonical(value)).digest('hex')}` +} + +function assertDigest(actual, expected, label) { + if (actual !== expected) throw new Error(`${label} crossed its immutable digest fence`) +} + +function createProvider() { + let profile + let descriptor + let descriptorDigest + let providerState = 'ready' + let nextActivation = 0 + const activations = new Map() + + function requireProfile() { + if (!profile || !descriptor || !descriptorDigest) throw new Error('profile handshake is incomplete') + } + + function requireActivation(activationId) { + const activation = activations.get(activationId) + if (!activation) throw new Error('activation is unavailable') + return activation + } + + return { + handshake(projection) { + if (!projection.bundles.includes(PACKAGE_NAME)) { + throw new Error('provider Bundle is not active in the selected DSH Profile') + } + if (profile && profile.configDigest !== projection.configDigest) { + throw new Error('host cannot cross a DSH Profile digest fence') + } + profile = projection + descriptor = { + descriptorFormat: 'dsh.agent-provider-descriptor/v1', + ecosystem: 'dsh', + providerId: 'io.ksadk.test.dsh-node-provider', + providerVersion: '1.0.0', + displayName: 'DSH Cordis Node provider', + pluginName: PACKAGE_NAME, + profile: profile.profile, + profileDigest: profile.configDigest, + definition: 'agent.provider/v1', + slot: 'agent.execution', + runtimeProtocols: ['agentkit.runtime/v1'], + } + descriptorDigest = digest(descriptor) + record(`cordis:profile:${profile.configDigest}`) + return { + protocolVersion: 'ksadk.dsh-agent-provider-host/v1', + methods: METHODS, + hostVersion: '1.0.0', + } + }, + + describe(projection) { + requireProfile() + assertDigest(projection.configDigest, profile.configDigest, 'profile') + return descriptor + }, + + preflight(params) { + requireProfile() + assertDigest(params.profileDigest, profile.configDigest, 'profile') + assertDigest(params.descriptorDigest, descriptorDigest, 'descriptor') + return { + ready: providerState === 'ready', + descriptorDigest, + profileDigest: profile.configDigest, + } + }, + + activate(params) { + requireProfile() + assertDigest(params.descriptorDigest, descriptorDigest, 'descriptor') + const activationId = `cordis-node-${++nextActivation}` + activations.set(activationId, { + agentId: params.bundle.manifest.agentId, + turns: [], + cancelled: false, + drained: false, + }) + record(`cordis:activate:${activationId}`) + return { activationId } + }, + + inventory(params) { + requireProfile() + assertDigest(params.descriptorDigest, descriptorDigest, 'descriptor') + return { + providerId: descriptor.providerId, + providerVersion: descriptor.providerVersion, + profile: profile.profile, + profileDigest: profile.configDigest, + descriptorDigest, + state: providerState, + activationCount: activations.size, + } + }, + + health(params) { + if (params.activationId) { + const activation = activations.get(params.activationId) + return { healthy: Boolean(activation && !activation.drained) } + } + return { healthy: providerState === 'ready' } + }, + + execute(params) { + const activation = requireActivation(params.activationId) + if (activation.drained) throw new Error('activation is draining') + activation.turns.push(params.request) + record(`cordis:execute:${params.activationId}:${activation.turns.length}`) + const latestMessage = params.request?.messages?.at(-1)?.content ?? params.request?.message ?? 'turn' + return { + provider: 'dsh-cordis-node', + agentId: activation.agentId, + turn: activation.turns.length, + history: [...activation.turns], + cancelled: activation.cancelled, + outputText: `${latestMessage}:turn-${activation.turns.length}`, + } + }, + + cancel(params) { + const activation = requireActivation(params.activationId) + activation.cancelled = true + record(`cordis:cancel:${params.activationId}`) + return { ok: true } + }, + + drain(params) { + if (params.scope === 'activation') { + requireActivation(params.activationId).drained = true + } else { + providerState = 'draining' + } + record(`cordis:drain:${params.scope}`) + return { ok: true } + }, + + dispose(params) { + if (params.scope === 'activation') { + activations.delete(params.activationId) + record(`cordis:dispose:${params.activationId}`) + } + return { ok: true } + }, + + disposeAll() { + providerState = 'disposed' + activations.clear() + }, + } +} + +export const name = 'ksadk-test-dsh-agent-provider' + +export function apply(ctx) { + const provider = createProvider() + ctx.provide('ksadkAgentProvider', provider) + ctx.effect(() => { + record('cordis:effect:active') + return () => { + provider.disposeAll() + record('cordis:effect:disposed') + } + }) +} diff --git a/tests/fixtures/dsh-node-agent-provider/package.json b/tests/fixtures/dsh-node-agent-provider/package.json new file mode 100644 index 00000000..1e1eab44 --- /dev/null +++ b/tests/fixtures/dsh-node-agent-provider/package.json @@ -0,0 +1,24 @@ +{ + "name": "@ksadk-test/dsh-node-agent-provider", + "version": "1.0.0", + "private": true, + "type": "module", + "exports": { + ".": "./index.mjs", + "./provider-host": "./provider-host.mjs", + "./cordis.patch.yml": "./cordis.patch.yml" + }, + "files": [ + "index.mjs", + "provider-host.mjs", + "cordis.patch.yml" + ], + "peerDependencies": { + "@deepseek-ai/cordis": "^4.0.1" + }, + "dsh": { + "bundle": { + "patch": "./cordis.patch.yml" + } + } +} diff --git a/tests/fixtures/dsh-node-agent-provider/provider-host.mjs b/tests/fixtures/dsh-node-agent-provider/provider-host.mjs new file mode 100644 index 00000000..1c287b9c --- /dev/null +++ b/tests/fixtures/dsh-node-agent-provider/provider-host.mjs @@ -0,0 +1,67 @@ +import { createInterface } from 'node:readline' +import { pathToFileURL } from 'node:url' + +// The host injects the exact Cordis entry resolved from its pinned, published +// DSH toolchain. This remains reproducible without a DSH source checkout and +// cannot accidentally bind to an ambient global package. +const cordisPath = process.env.KSADK_DSH_CORDIS_MODULE +if (!cordisPath) throw new Error('KSADK_DSH_CORDIS_MODULE is required') +const { Context } = await import(pathToFileURL(cordisPath).href) +const providerPlugin = await import('./index.mjs') +const ctx = new Context() +const fiber = await ctx.plugin(providerPlugin) +const provider = ctx.get('ksadkAgentProvider') +if (!provider) throw new Error('Cordis provider service did not become active') +let disposed = false + +async function disposeCordis() { + if (disposed) return + disposed = true + await fiber.dispose() + await ctx.fiber.dispose() +} + +for (const signal of ['SIGINT', 'SIGTERM']) { + process.once(signal, () => { + void disposeCordis().finally(() => process.exit(0)) + }) +} + +const handlers = { + handshake: params => provider.handshake(params.profile), + describe: params => provider.describe(params.profile), + preflight: params => provider.preflight(params), + activate: params => provider.activate(params), + inventory: params => provider.inventory(params), + health: params => provider.health(params), + execute: params => provider.execute(params), + cancel: params => provider.cancel(params), + drain: params => provider.drain(params), + dispose: params => provider.dispose(params), +} + +function respond(id, result) { + process.stdout.write(`${JSON.stringify({ id, result })}\n`) +} + +function reject(id, error) { + process.stdout.write(`${JSON.stringify({ id, error: { code: 'provider_rejected', message: error.message } })}\n`) +} + +const input = createInterface({ input: process.stdin, crlfDelay: Infinity }) +for await (const line of input) { + let request + try { + request = JSON.parse(line) + const handler = handlers[request.method] + if (!handler) throw new Error('method is unavailable') + const result = await handler(request.params ?? {}) + if (request.method === 'dispose' && request.params?.scope === 'host') { + await disposeCordis() + } + respond(request.id, result) + if (request.method === 'dispose' && request.params?.scope === 'host') break + } catch (error) { + reject(request?.id ?? 'unknown', error) + } +} diff --git a/tests/harness/__init__.py b/tests/harness/__init__.py new file mode 100644 index 00000000..883804cb --- /dev/null +++ b/tests/harness/__init__.py @@ -0,0 +1 @@ +"""Harness behavior and integration tests.""" diff --git a/tests/harness/fixtures/__init__.py b/tests/harness/fixtures/__init__.py new file mode 100644 index 00000000..0a798df3 --- /dev/null +++ b/tests/harness/fixtures/__init__.py @@ -0,0 +1 @@ +"""Fixtures used by Harness integration tests.""" diff --git a/tests/harness/fixtures/mcp_server.py b/tests/harness/fixtures/mcp_server.py new file mode 100644 index 00000000..bcab08a8 --- /dev/null +++ b/tests/harness/fixtures/mcp_server.py @@ -0,0 +1,90 @@ +from __future__ import annotations + +import socket +import threading +import time +from collections.abc import Iterator +from contextlib import contextmanager +from dataclasses import dataclass, field + +import uvicorn +from fastmcp import FastMCP +from sse_starlette.sse import AppStatus +from starlette.middleware.base import BaseHTTPMiddleware + + +@dataclass +class MCPRequestLog: + authorization: list[str] = field(default_factory=list) + calls: list[tuple[str, str]] = field(default_factory=list) + + +@dataclass +class RunningMCPServer: + url: str + log: MCPRequestLog + + +@contextmanager +def run_http_app(app) -> Iterator[str]: + sock = socket.socket() + sock.bind(("127.0.0.1", 0)) + host, port = sock.getsockname() + sock.close() + config = uvicorn.Config(app, host=host, port=port, log_level="warning") + uvicorn_server = uvicorn.Server(config) + thread = threading.Thread(target=uvicorn_server.run, daemon=True) + thread.start() + deadline = time.monotonic() + 5 + while not uvicorn_server.started and time.monotonic() < deadline: + time.sleep(0.02) + if not uvicorn_server.started: + raise RuntimeError("Harness HTTP app failed to start") + try: + yield f"http://{host}:{port}" + finally: + uvicorn_server.should_exit = True + thread.join(timeout=5) + + +@contextmanager +def run_fixture_mcp_server( + *, + label: str = "fixture", + required_token: str = "harness-secret", +) -> Iterator[RunningMCPServer]: + log = MCPRequestLog() + server = FastMCP(f"harness-{label}") + + @server.tool + def lookup(value: str) -> str: + log.calls.append(("lookup", value)) + return f"{label}:{value}" + + @server.tool + def forbidden(value: str) -> str: + log.calls.append(("forbidden", value)) + return f"forbidden:{value}" + + app = server.http_app(path="/mcp", transport="streamable-http") + + class _CaptureAuthorization(BaseHTTPMiddleware): + async def dispatch(self, request, call_next): + authorization = request.headers.get("authorization", "") + log.authorization.append(authorization) + if required_token and authorization != f"Bearer {required_token}": + from starlette.responses import JSONResponse + + return JSONResponse({"detail": "unauthorized"}, status_code=401) + return await call_next(request) + + app.add_middleware(_CaptureAuthorization) + AppStatus.should_exit = False + AppStatus.should_exit_event = None + + with run_http_app(app) as base_url: + try: + yield RunningMCPServer(url=f"{base_url}/mcp", log=log) + finally: + AppStatus.should_exit = False + AppStatus.should_exit_event = None diff --git a/tests/packaging/test_phase2_release_candidate_gate.py b/tests/packaging/test_phase2_release_candidate_gate.py new file mode 100644 index 00000000..2ffc0aff --- /dev/null +++ b/tests/packaging/test_phase2_release_candidate_gate.py @@ -0,0 +1,160 @@ +from __future__ import annotations + +import json +from pathlib import Path + +import pytest + +from scripts.phase2_release_candidate_gate import ( + ReleaseCandidateGateError, + build_release_candidate_report, +) +from scripts.phase2_release_preflight import PHASE2_E2E_STATUS_KEYS + +COMMIT = "a" * 40 +WEB_COMMIT = "b" * 40 +INTEGRITY = "sha512-" + ("A" * 86) + "==" +IMAGE = "hub.example.invalid/agentengine-hosted-ui@sha256:" + ("c" * 64) + + +def _write(path: Path, payload: dict) -> Path: + path.write_text(json.dumps(payload), encoding="utf-8") + return path + + +def _evidence(tmp_path: Path) -> tuple[Path, Path, Path, Path]: + local = { + "schemaVersion": 2, + "phase": "phase2", + "scope": "local-source-and-package", + "overallStatus": "incomplete", + "localStatus": "passed", + "releaseStatus": "not_evaluated", + "sourceCommit": COMMIT, + "contractDigest": "sha256:" + ("d" * 64), + "artifacts": { + "wheel": {"file": "ksadk-0.8.3-py3-none-any.whl", "sha256": "sha256:" + ("e" * 64)}, + "sdist": {"file": "ksadk-0.8.3.tar.gz", "sha256": "sha256:" + ("f" * 64)}, + }, + "e2e": {name: "passed" for name in PHASE2_E2E_STATUS_KEYS}, + } + web = { + "schemaVersion": 1, + "status": "published", + "registry": "https://registry.npmjs.org", + "package": "@kingsoftcloud/ksadk-web", + "version": "0.3.3", + "npmIntegrity": INTEGRITY, + "sourceCommit": WEB_COMMIT, + } + deployment = { + "schemaVersion": 1, + "environment": "preproduction", + "hostedUiImage": IMAGE, + "helmRevision": 60, + "webPackage": { + "package": "@kingsoftcloud/ksadk-web", + "version": "0.3.3", + "npmIntegrity": INTEGRITY, + }, + } + scenario = { + "status": "passed", + "agentId": "ar-example", + "sessionId": "session-example", + "turns": 2, + "streamChunks": 3, + "duplicateItems": 0, + "surfaces": ["studio", "hosted-ui"], + } + preprod = { + "schemaVersion": 1, + "environment": "preproduction", + "sourceCommit": COMMIT, + "hostedUiImage": IMAGE, + "webPackage": { + "package": "@kingsoftcloud/ksadk-web", + "version": "0.3.3", + "npmIntegrity": INTEGRITY, + }, + "scenarios": { + "studioCreatedAgent": {**scenario, "cleanupStatus": "deleted"}, + "historical082Agent": { + **scenario, + "agentId": "ar-historical", + "sessionId": "session-historical", + "cleanupStatus": "preserved", + }, + }, + } + return ( + _write(tmp_path / "local.json", local), + _write(tmp_path / "web.json", web), + _write(tmp_path / "deployment.json", deployment), + _write(tmp_path / "preprod.json", preprod), + ) + + +def _build(paths: tuple[Path, Path, Path, Path], *, commit: str = COMMIT) -> dict: + return build_release_candidate_report( + expected_commit=commit, + local_path=paths[0], + web_path=paths[1], + deployment_path=paths[2], + preprod_path=paths[3], + ) + + +def test_final_gate_binds_every_release_surface(tmp_path: Path) -> None: + paths = _evidence(tmp_path) + report = _build(paths) + + assert report["overallStatus"] == "passed" + assert report["sourceCommit"] == COMMIT + assert report["webPackage"]["npmIntegrity"] == INTEGRITY + assert report["hostedUi"]["image"] == IMAGE + assert report["scenarios"] == { + "studioCreatedAgent": "passed", + "historical082Agent": "passed", + } + assert all(value.startswith("sha256:") for value in report["inputs"].values()) + + +@pytest.mark.parametrize( + ("index", "path", "value", "message"), + [ + (0, ("sourceCommit",), "c" * 40, "final commit"), + (1, ("status",), "not_published", "not published"), + (2, ("hostedUiImage",), "latest", "digest-pinned"), + (3, ("sourceCommit",), "c" * 40, "final commit"), + (3, ("scenarios", "studioCreatedAgent", "streamChunks"), 1, "streaming"), + (3, ("scenarios", "historical082Agent", "duplicateItems"), 1, "duplicates"), + ], +) +def test_final_gate_rejects_unbound_or_weak_evidence( + tmp_path: Path, + index: int, + path: tuple[str, ...], + value: object, + message: str, +) -> None: + paths = _evidence(tmp_path) + payload = json.loads(paths[index].read_text(encoding="utf-8")) + target = payload + for key in path[:-1]: + target = target[key] + target[path[-1]] = value + _write(paths[index], payload) + + with pytest.raises(ReleaseCandidateGateError, match=message): + _build(paths) + + +def test_final_gate_rejects_secret_shaped_evidence(tmp_path: Path) -> None: + paths = _evidence(tmp_path) + payload = json.loads(paths[3].read_text(encoding="utf-8")) + payload["accessToken"] = "must-not-appear" + _write(paths[3], payload) + + with pytest.raises(ReleaseCandidateGateError, match="secret-shaped evidence key"): + _build(paths) diff --git a/tests/packaging/test_phase2_release_preflight.py b/tests/packaging/test_phase2_release_preflight.py new file mode 100644 index 00000000..d331ee2e --- /dev/null +++ b/tests/packaging/test_phase2_release_preflight.py @@ -0,0 +1,504 @@ +from __future__ import annotations + +import io +import json +import subprocess +import sys +import tarfile +import zipfile +from pathlib import Path + +import pytest + +from ksadk.version import VERSION +from scripts.phase2_release_preflight import ( + BROWSER_GATES, + COMPATIBILITY_TESTS, + CREDENTIAL_FREE_NATIVE_TESTS, + MANAGED_DSH_TOOLCHAIN_TESTS, + PHASE2_E2E_STATUS_KEYS, + ROOT, + Phase2PreflightError, + build_phase2_evidence_report, + phase2_contract_digest, + run_release_test_gates, + validate_clean_artifact_installations, + validate_distribution_archives, + validate_generated_static_tracking_policy, + validate_phase2_evidence_report, + write_phase2_evidence_report, +) + +SOURCE_COMMIT = "a" * 40 + + +def test_preflight_executes_phase2_release_journeys() -> None: + assert "tests/compat/test_release_082_asset_compat.py" in COMPATIBILITY_TESTS + assert "tests/compat/test_phase2_legacy_compat.py" in COMPATIBILITY_TESTS + assert "tests/e2e/test_codex_plugin_bridge_e2e.py" in CREDENTIAL_FREE_NATIVE_TESTS + assert "tests/e2e/test_codex_provider_app_server_e2e.py" in CREDENTIAL_FREE_NATIVE_TESTS + assert "tests/e2e/test_codex_subagent_provider_e2e.py" in CREDENTIAL_FREE_NATIVE_TESTS + assert MANAGED_DSH_TOOLCHAIN_TESTS == ( + "tests/e2e/test_dsh_managed_toolchain_e2e.py", + "tests/plugins/test_dsh_node_provider_e2e.py", + ) + assert "tests/studio/e2e/dsh_client_bundle_browser_e2e.py" in BROWSER_GATES + assert "tests/studio/e2e/scheduler_browser_e2e.py" in BROWSER_GATES + assert "tests/studio/e2e/scheduler_harness_browser_e2e.py" in BROWSER_GATES + assert "tests/studio/e2e/scheduler_fault_matrix_browser_e2e.py" in BROWSER_GATES + assert "tests/studio/e2e/conversation_reconnect_browser_e2e.py" in BROWSER_GATES + assert "tests/studio/e2e/conversation_items_browser_e2e.py" in BROWSER_GATES + + +def test_preflight_references_only_existing_tests() -> None: + for path in ( + *COMPATIBILITY_TESTS, + *CREDENTIAL_FREE_NATIVE_TESTS, + *MANAGED_DSH_TOOLCHAIN_TESTS, + *BROWSER_GATES, + ): + assert (Path(__file__).resolve().parents[2] / path).is_file(), path + + +def test_preflight_enables_real_managed_dsh_toolchain_gate(monkeypatch) -> None: + calls: list[tuple[tuple[str, ...], dict[str, str] | None]] = [] + + def record(command, *, environment=None) -> None: + calls.append((tuple(command), environment)) + + monkeypatch.setattr("scripts.phase2_release_preflight._run", record) + statuses = run_release_test_gates() + + toolchain_calls = [ + (command, environment) + for command, environment in calls + if any(path in command for path in MANAGED_DSH_TOOLCHAIN_TESTS) + ] + assert toolchain_calls == [ + ( + ( + sys.executable, + "-m", + "pytest", + "-q", + "tests/e2e/test_dsh_managed_toolchain_e2e.py", + "tests/plugins/test_dsh_node_provider_e2e.py", + ), + {"KSADK_DSH_TOOLCHAIN_E2E": "1"}, + ) + ] + assert statuses == { + "compatibilityRegression": "passed", + "codexNative": "passed", + "managedDshToolchain": "passed", + "studioBrowser": "passed", + } + + +def test_release_check_builds_provenance_bound_pair_before_phase2_gate() -> None: + root = Path(__file__).resolve().parents[2] + workflow = (root / ".github/workflows/release-check.yml").read_text(encoding="utf-8") + + assert "uv sync --extra all" in workflow + assert "playwright install --with-deps chromium" in workflow + assert 'test -z "$(git status --porcelain --untracked-files=all)"' in workflow + assert "rm -rf dist" in workflow + provenance = workflow.index("scripts/write_build_provenance.py") + build = workflow.index("uv build --out-dir dist") + preflight = workflow.index("scripts/phase2_release_preflight.py --dist-dir dist") + assert provenance < build < preflight + + +def _provenance( + *, + commit: str = SOURCE_COMMIT, + tree: str = "clean", +) -> bytes: + return json.dumps( + { + "schemaVersion": 1, + "version": VERSION, + "sourceCommit": commit, + "sourceTree": tree, + }, + sort_keys=True, + separators=(",", ":"), + ).encode() + + +STATIC_FILES = { + "ksadk/_build_provenance.json": _provenance(), + "ksadk/server/static/index.html": b"Web", + "ksadk/server/static/assets/app.js": b"web", + "ksadk/studio/static/index.html": b'
', + "ksadk/studio/static/assets/app.js": b"studio", +} + + +def _write_wheel(path: Path, files: dict[str, bytes]) -> None: + with zipfile.ZipFile(path, "w") as archive: + for name, content in files.items(): + archive.writestr(name, content) + + +def _write_sdist(path: Path, files: dict[str, bytes]) -> None: + with tarfile.open(path, "w:gz") as archive: + for name, content in files.items(): + payload = io.BytesIO(content) + info = tarfile.TarInfo(f"ksadk-{VERSION}/{name}") + info.size = len(content) + archive.addfile(info, payload) + + +def _write_pair(dist_dir: Path, files: dict[str, bytes]) -> None: + dist_dir.mkdir() + _write_wheel(dist_dir / f"ksadk-{VERSION}-py3-none-any.whl", files) + _write_sdist(dist_dir / f"ksadk-{VERSION}.tar.gz", files) + + +def test_artifact_gate_requires_static_in_wheel_and_sdist(tmp_path: Path) -> None: + dist_dir = tmp_path / "dist" + _write_pair(dist_dir, STATIC_FILES) + + artifacts = validate_distribution_archives( + dist_dir, + expected_source_commit=SOURCE_COMMIT, + ) + + assert len(artifacts) == 2 + + +def test_artifact_gate_rejects_missing_studio_static(tmp_path: Path) -> None: + dist_dir = tmp_path / "dist" + files = { + name: content + for name, content in STATIC_FILES.items() + if not name.startswith("ksadk/studio/static/") + } + _write_pair(dist_dir, files) + + with pytest.raises(Phase2PreflightError, match="missing static"): + validate_distribution_archives(dist_dir, expected_source_commit=SOURCE_COMMIT) + + +def test_artifact_gate_rejects_editable_frontend_sources(tmp_path: Path) -> None: + dist_dir = tmp_path / "dist" + files = { + **STATIC_FILES, + "ksadk/studio/react-ui/src/main.tsx": b"export default null", + } + _write_pair(dist_dir, files) + + with pytest.raises(Phase2PreflightError, match="frontend source leaked"): + validate_distribution_archives(dist_dir, expected_source_commit=SOURCE_COMMIT) + + +def test_artifact_gate_rejects_vendored_node_modules(tmp_path: Path) -> None: + dist_dir = tmp_path / "dist" + files = { + **STATIC_FILES, + "ksadk/studio/static/node_modules/react/index.js": b"module.exports = {}", + } + _write_pair(dist_dir, files) + + with pytest.raises(Phase2PreflightError, match="frontend source leaked"): + validate_distribution_archives(dist_dir, expected_source_commit=SOURCE_COMMIT) + + +def test_artifact_gate_rejects_stale_dist_residue(tmp_path: Path) -> None: + dist_dir = tmp_path / "dist" + _write_pair(dist_dir, STATIC_FILES) + _write_wheel(dist_dir / "ksadk-0.8.1-py3-none-any.whl", STATIC_FILES) + + with pytest.raises(Phase2PreflightError, match="must be clean"): + validate_distribution_archives(dist_dir, expected_source_commit=SOURCE_COMMIT) + + +def test_artifact_gate_does_not_accept_a_version_prefix_collision(tmp_path: Path) -> None: + dist_dir = tmp_path / "dist" + dist_dir.mkdir() + _write_wheel(dist_dir / "ksadk-0.8.20-py3-none-any.whl", STATIC_FILES) + _write_sdist(dist_dir / "ksadk-0.8.20.tar.gz", STATIC_FILES) + + with pytest.raises(Phase2PreflightError, match="stale distribution artifact"): + validate_distribution_archives(dist_dir, expected_source_commit=SOURCE_COMMIT) + + +def test_artifact_gate_rejects_a_dirty_source_build(tmp_path: Path) -> None: + dist_dir = tmp_path / "dist" + _write_pair( + dist_dir, + {**STATIC_FILES, "ksadk/_build_provenance.json": _provenance(tree="dirty")}, + ) + + with pytest.raises(Phase2PreflightError, match="dirty source tree"): + validate_distribution_archives(dist_dir, expected_source_commit=SOURCE_COMMIT) + + +def test_artifact_gate_rejects_a_stale_source_commit(tmp_path: Path) -> None: + dist_dir = tmp_path / "dist" + _write_pair( + dist_dir, + { + **STATIC_FILES, + "ksadk/_build_provenance.json": _provenance(commit="b" * 40), + }, + ) + + with pytest.raises(Phase2PreflightError, match="does not match checked-out commit"): + validate_distribution_archives(dist_dir, expected_source_commit=SOURCE_COMMIT) + + +def test_artifact_gate_rejects_mismatched_wheel_and_sdist_provenance( + tmp_path: Path, +) -> None: + dist_dir = tmp_path / "dist" + dist_dir.mkdir() + _write_wheel(dist_dir / f"ksadk-{VERSION}-py3-none-any.whl", STATIC_FILES) + _write_sdist( + dist_dir / f"ksadk-{VERSION}.tar.gz", + { + **STATIC_FILES, + "ksadk/_build_provenance.json": json.dumps( + { + "sourceCommit": SOURCE_COMMIT, + "sourceTree": "clean", + "schemaVersion": 1, + "version": VERSION, + "extra": "not-identical", + }, + sort_keys=True, + separators=(",", ":"), + ).encode(), + }, + ) + + with pytest.raises(Phase2PreflightError, match="identical build provenance"): + validate_distribution_archives(dist_dir, expected_source_commit=SOURCE_COMMIT) + + +def test_generated_static_payload_is_not_tracked() -> None: + validate_generated_static_tracking_policy( + public_export=(ROOT / "export-manifest.json").is_file() + ) + + +def test_clean_public_export_requires_tracked_compiled_static(monkeypatch, tmp_path: Path) -> None: + (tmp_path / "export-manifest.json").write_text( + json.dumps({"sourceCommit": SOURCE_COMMIT, "sourceTree": "clean"}), + encoding="utf-8", + ) + tracked = "\n".join( + ( + "ksadk/server/static/index.html", + "ksadk/server/static/assets/server.js", + "ksadk/studio/static/index.html", + "ksadk/studio/static/assets/studio.js", + ) + ) + + monkeypatch.setattr( + "scripts.phase2_release_preflight.subprocess.run", + lambda *args, **kwargs: subprocess.CompletedProcess( + args=args[0], returncode=0, stdout=tracked, stderr="" + ), + ) + + validate_generated_static_tracking_policy(tmp_path, public_export=True) + + +def test_git_free_clean_export_uses_attested_source_identity(tmp_path: Path) -> None: + (tmp_path / "export-manifest.json").write_text( + json.dumps({"sourceCommit": SOURCE_COMMIT, "sourceTree": "clean"}), + encoding="utf-8", + ) + + from scripts.phase2_release_preflight import _current_source_commit + + assert _current_source_commit(tmp_path) == SOURCE_COMMIT + validate_generated_static_tracking_policy(tmp_path, public_export=True) + + +def test_clean_install_gate_installs_wheel_and_rebuilt_sdist_wheel_separately( + tmp_path: Path, +) -> None: + dist_dir = tmp_path / "dist" + _write_pair(dist_dir, STATIC_FILES) + artifacts = validate_distribution_archives( + dist_dir, + expected_source_commit=SOURCE_COMMIT, + ) + calls: list[tuple[tuple[str, ...], Path]] = [] + + def record(command, *, environment=None, cwd=None) -> None: + del environment + normalized = tuple(str(item) for item in command) + calls.append((normalized, Path(cwd))) + if "wheel" in normalized and "--wheel-dir" in normalized: + wheel_dir = Path(normalized[normalized.index("--wheel-dir") + 1]) + wheel_dir.mkdir(parents=True, exist_ok=True) + (wheel_dir / f"ksadk-{VERSION}-py3-none-any.whl").write_bytes(b"rebuilt") + + statuses = validate_clean_artifact_installations(artifacts, runner=record) + + assert statuses == { + "cleanWheelInstall": "passed", + "cleanSdistInstall": "passed", + } + commands = [command for command, _cwd in calls] + venv_calls = [command for command in commands if command[1:3] == ("-m", "venv")] + assert len(venv_calls) == 2 + sdist = str(dist_dir / f"ksadk-{VERSION}.tar.gz") + sdist_build = next( + index + for index, command in enumerate(commands) + if "wheel" in command and sdist in command + ) + rebuilt_install = next( + index + for index, command in enumerate(commands) + if "install" in command + and any(item.endswith(".whl") and item != str(artifacts[0]) for item in command) + ) + assert sdist_build < rebuilt_install + assert sum(command[-3:] == ("plugin", "toolchain", "--help") for command in commands) == 2 + smoke_calls = [command for command in commands if "-c" in command] + assert len(smoke_calls) == 2 + assert len({cwd for _command, cwd in calls if cwd is not None}) >= 2 + + +def _passed_e2e_statuses() -> dict[str, str]: + return {name: "passed" for name in PHASE2_E2E_STATUS_KEYS} + + +def test_phase2_evidence_report_binds_contract_commit_artifacts_and_e2e( + tmp_path: Path, +) -> None: + dist_dir = tmp_path / "dist" + _write_pair(dist_dir, STATIC_FILES) + artifacts = validate_distribution_archives( + dist_dir, + expected_source_commit=SOURCE_COMMIT, + ) + contract_digest = phase2_contract_digest() + report = build_phase2_evidence_report( + artifacts, + source_commit=SOURCE_COMMIT, + contract_digest=contract_digest, + e2e_statuses=_passed_e2e_statuses(), + ) + + validate_phase2_evidence_report( + report, + artifacts=artifacts, + source_commit=SOURCE_COMMIT, + contract_digest=contract_digest, + require_complete=True, + ) + assert report["overallStatus"] == "incomplete" + assert report["localStatus"] == "passed" + assert report["releaseStatus"] == "not_evaluated" + assert report["contractDigest"] == contract_digest + assert report["sourceCommit"] == SOURCE_COMMIT + assert set(report["artifacts"]) == {"wheel", "sdist"} + assert all(item["sha256"].startswith("sha256:") for item in report["artifacts"].values()) + + output = tmp_path / "phase2-evidence.json" + write_phase2_evidence_report(output, report) + assert json.loads(output.read_text(encoding="utf-8")) == report + + +def test_phase2_evidence_report_rejects_artifact_tampering(tmp_path: Path) -> None: + dist_dir = tmp_path / "dist" + _write_pair(dist_dir, STATIC_FILES) + artifacts = validate_distribution_archives( + dist_dir, + expected_source_commit=SOURCE_COMMIT, + ) + contract_digest = phase2_contract_digest() + report = build_phase2_evidence_report( + artifacts, + source_commit=SOURCE_COMMIT, + contract_digest=contract_digest, + e2e_statuses=_passed_e2e_statuses(), + ) + artifacts[0].write_bytes(artifacts[0].read_bytes() + b"tampered") + + with pytest.raises(Phase2PreflightError, match="artifact digest"): + validate_phase2_evidence_report( + report, + artifacts=artifacts, + source_commit=SOURCE_COMMIT, + contract_digest=contract_digest, + require_complete=True, + ) + + +def test_phase2_evidence_report_cannot_be_complete_when_a_key_e2e_was_not_run( + tmp_path: Path, +) -> None: + dist_dir = tmp_path / "dist" + _write_pair(dist_dir, STATIC_FILES) + artifacts = validate_distribution_archives( + dist_dir, + expected_source_commit=SOURCE_COMMIT, + ) + contract_digest = phase2_contract_digest() + statuses = _passed_e2e_statuses() + statuses["studioBrowser"] = "not_run" + report = build_phase2_evidence_report( + artifacts, + source_commit=SOURCE_COMMIT, + contract_digest=contract_digest, + e2e_statuses=statuses, + ) + + assert report["localStatus"] == "incomplete" + with pytest.raises(Phase2PreflightError, match="local status is incomplete"): + validate_phase2_evidence_report( + report, + artifacts=artifacts, + source_commit=SOURCE_COMMIT, + contract_digest=contract_digest, + require_complete=True, + ) + + +@pytest.mark.parametrize( + ("field", "value", "message"), + [ + ("sourceCommit", "b" * 40, "source commit"), + ("contractDigest", f"sha256:{'b' * 64}", "contract digest"), + ("localStatus", "incomplete", "local status"), + ("overallStatus", "passed", "overall release completion"), + ], +) +def test_phase2_evidence_report_rejects_unbound_or_incomplete_claims( + tmp_path: Path, + field: str, + value: str, + message: str, +) -> None: + dist_dir = tmp_path / "dist" + _write_pair(dist_dir, STATIC_FILES) + artifacts = validate_distribution_archives( + dist_dir, + expected_source_commit=SOURCE_COMMIT, + ) + contract_digest = phase2_contract_digest() + report = build_phase2_evidence_report( + artifacts, + source_commit=SOURCE_COMMIT, + contract_digest=contract_digest, + e2e_statuses=_passed_e2e_statuses(), + ) + report[field] = value + + with pytest.raises(Phase2PreflightError, match=message): + validate_phase2_evidence_report( + report, + artifacts=artifacts, + source_commit=SOURCE_COMMIT, + contract_digest=contract_digest, + require_complete=True, + ) diff --git a/tests/packaging/test_write_build_provenance.py b/tests/packaging/test_write_build_provenance.py new file mode 100644 index 00000000..ee79c3f3 --- /dev/null +++ b/tests/packaging/test_write_build_provenance.py @@ -0,0 +1,43 @@ +"""Build provenance must stay usable in a Git-free clean public export.""" + +from __future__ import annotations + +import json + +import pytest + +from scripts.write_build_provenance import build_provenance + + +def test_build_provenance_uses_clean_export_manifest_without_git(tmp_path) -> None: + (tmp_path / "export-manifest.json").write_text( + json.dumps( + { + "sourceCommit": "a" * 40, + "sourceTree": "clean", + } + ), + encoding="utf-8", + ) + + provenance = build_provenance(tmp_path) + + assert provenance["sourceCommit"] == "a" * 40 + assert provenance["sourceTree"] == "clean" + + +@pytest.mark.parametrize( + "manifest", + [ + {}, + {"sourceCommit": "not-a-commit", "sourceTree": "clean"}, + {"sourceCommit": "a" * 40, "sourceTree": "dirty"}, + ], +) +def test_build_provenance_rejects_untrusted_export_manifest(tmp_path, manifest) -> None: + (tmp_path / "export-manifest.json").write_text( + json.dumps(manifest), encoding="utf-8" + ) + + with pytest.raises(RuntimeError, match="clean export manifest"): + build_provenance(tmp_path) diff --git a/tests/plugins/__init__.py b/tests/plugins/__init__.py new file mode 100644 index 00000000..9a028cd8 --- /dev/null +++ b/tests/plugins/__init__.py @@ -0,0 +1 @@ +"""Plugin contract and host test package.""" diff --git a/tests/plugins/test_codex_provider_vertical.py b/tests/plugins/test_codex_provider_vertical.py new file mode 100644 index 00000000..0efcaaef --- /dev/null +++ b/tests/plugins/test_codex_provider_vertical.py @@ -0,0 +1,584 @@ +"""Bundle -> PluginHost -> native Codex RuntimeAdapter vertical.""" + +from __future__ import annotations + +import hashlib +import json +from pathlib import Path +from typing import Any, AsyncIterator + +import pytest + +from ksadk.codex.client import CodexClient +from ksadk.events.store import RuntimeEventStore +from ksadk.plugins.bundle import PluginBundleResolver +from ksadk.plugins.contracts import CompositionProfile, PluginManifest +from ksadk.plugins.host import PluginHost, PluginHostError +from ksadk.plugins.providers.codex import CodexAgentProviderFactory +from ksadk.plugins.resolver import PluginRegistry +from ksadk.sessions.in_memory import InMemorySessionService +from ksadk.studio.contracts import BundleManifest, FileEntry + +pytest.importorskip("openai_codex") + + +def _sha256(content: bytes) -> str: + return f"sha256:{hashlib.sha256(content).hexdigest()}" + + +def _json_bytes(payload: Any) -> bytes: + return json.dumps( + payload, + ensure_ascii=False, + sort_keys=True, + separators=(",", ":"), + ).encode() + + +def _provider_manifest() -> PluginManifest: + return PluginManifest.model_validate( + { + "metadata": {"id": "io.ksadk.codex-provider", "version": "1.0.0"}, + "spec": { + "domain": "runtime-native", + "runtime": "native", + "provides": [ + { + "definition": "agent.provider/v1", + "slot": "agent.execution", + "mode": "unique", + } + ], + "isolation": "native", + "compatibility": { + "kernelApi": ">=1,<2", + "runtimeProtocols": ["AgentControlChannel/v1"], + }, + "healthContract": "plugin.health/v1", + "provenance": { + "source": "runtime-native", + "digest": "sha256:" + "1" * 64, + }, + }, + } + ) + + +def _profile(*, provider_config: dict[str, Any] | None = None) -> CompositionProfile: + return CompositionProfile.model_validate( + { + "agentProvider": { + "ref": "plugin://io.ksadk.codex-provider@1.0.0", + "config": provider_config or {}, + } + } + ) + + +def _write_bundle( + root: Path, + registry: PluginRegistry, + profile: CompositionProfile, + *, + execution_strategy: str = "direct", + approval_mode: str = "risk", + mcp_servers: list[dict[str, Any]] | None = None, + models: list[str] | None = None, +): + root.mkdir() + skill = ( + b"---\nname: report-style\ndescription: Use concise reports.\n---\n\n" + b"# Report style\n\nUse concise reports.\n" + ) + composition = registry.resolve(profile) + payloads: dict[str, bytes] = { + "composition-profile.json": _json_bytes( + profile.model_dump(by_alias=True, exclude_none=True, mode="json") + ), + "plugin-lock.json": _json_bytes( + composition.plugin_lock.model_dump( + by_alias=True, exclude_none=True, mode="json" + ) + ), + "resolved-agent-spec.json": _json_bytes( + { + "schemaVersion": "agentkit.resolved/v1", + "agentId": "codex-report-agent", + "model": {"model": "fixture-codex-model"}, + "instructions": { + "system": "You are a report assistant.", + "task": "Use the locked Bundle capabilities.", + }, + "capabilities": { + "tools": [], + "mcpServers": ( + [ + { + "name": "weather", + "transport": "http", + "endpointUrl": "https://mcp.invalid.example/rpc", + "envRefs": {}, + } + ] + if mcp_servers is None + else mcp_servers + ), + "skills": [ + { + "name": "report-style", + "bundlePath": "capabilities/skills/report-style", + } + ], + }, + "execution": { + "strategy": execution_strategy, + "timeoutSeconds": 30, + "sandbox": "read_only", + "approvalMode": approval_mode, + }, + } + ), + "capabilities/skills/report-style/SKILL.md": skill, + } + if models is not None: + payloads["runtime-lock.json"] = _json_bytes( + { + "type": "codex", + "model": "fixture-codex-model", + "models": models, + } + ) + files: list[FileEntry] = [] + for relative, content in payloads.items(): + path = root / relative + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(content) + files.append(FileEntry(path=relative, sha256=_sha256(content), size=len(content))) + manifest = BundleManifest( + bundle_format="agentkit.bundle/v2", + agent_id="codex-report-agent", + source_revision=1, + resolved_digest="sha256:" + "a" * 64, + plugin_lock_digest=composition.plugin_lock_digest, + composition_profile_digest=composition.profile_digest, + files=files, + ) + unsigned = manifest.model_dump( + by_alias=True, + exclude={"bundle_digest"}, + exclude_none=True, + mode="json", + ) + manifest.bundle_digest = _sha256(_json_bytes(unsigned)) + (root / "manifest.json").write_bytes( + _json_bytes(manifest.model_dump(by_alias=True, exclude_none=True, mode="json")) + ) + return PluginBundleResolver(registry).resolve(root) + + +class _StrictCodexBackend: + def __init__(self) -> None: + self.thread_count = 0 + self.turn_count = 0 + self.threads: set[str] = set() + self.calls: list[tuple[str, str]] = [] + self.prompts: list[tuple[str, Any]] = [] + self.turn_configs: list[dict[str, Any]] = [] + self.goal_calls: list[tuple[str, str, dict[str, Any]]] = [] + self.configs: list[Any] = [] + self.closed = 0 + + def client(self, config=None): # noqa: ANN001 + self.configs.append(config) + return _StrictCodexClient(self) + + +class _StrictCodexClient(CodexClient): + """Strict dynamic App Server client; not a real Codex binary fixture.""" + + def __init__(self, backend: _StrictCodexBackend) -> None: + self.backend = backend + self.attached: set[str] = set() + + async def start_thread(self, config=None) -> str: # noqa: ANN001 + self.backend.thread_count += 1 + thread_id = f"thread-{self.backend.thread_count}" + self.backend.threads.add(thread_id) + self.backend.calls.append(("thread/start", thread_id)) + self.attached.add(thread_id) + return thread_id + + async def resume_thread(self, thread_id: str, config=None) -> str: # noqa: ANN001 + if thread_id not in self.backend.threads: + raise RuntimeError(f"unknown thread {thread_id}") + self.backend.calls.append(("thread/resume", thread_id)) + self.attached.add(thread_id) + return thread_id + + def run_turn( + self, + thread_id: str, + prompt: Any, + *, + config=None, # noqa: ANN001 + ) -> AsyncIterator[dict[str, Any]]: + self.backend.turn_configs.append(dict(config or {})) + + async def events() -> AsyncIterator[dict[str, Any]]: + if thread_id not in self.attached: + await self.resume_thread(thread_id) + self.backend.turn_count += 1 + turn_id = f"turn-{self.backend.turn_count}" + item_id = f"answer-{self.backend.turn_count}" + answer = f"answer from {thread_id} turn {self.backend.turn_count}" + self.backend.calls.append(("turn/start", thread_id)) + self.backend.prompts.append((thread_id, prompt)) + turn = { + "id": turn_id, + "status": "inProgress", + "items": [], + "error": None, + } + item = { + "id": item_id, + "memoryCitation": None, + "phase": "final_answer", + "text": "", + "type": "agentMessage", + } + yield {"method": "turn/started", "params": {"threadId": thread_id, "turn": turn}} + yield { + "method": "item/started", + "params": {"threadId": thread_id, "turnId": turn_id, "item": item}, + } + yield { + "method": "item/agentMessage/delta", + "params": { + "threadId": thread_id, + "turnId": turn_id, + "itemId": item_id, + "delta": answer, + }, + } + yield { + "method": "item/completed", + "params": { + "threadId": thread_id, + "turnId": turn_id, + "item": {**item, "text": answer}, + }, + } + yield { + "method": "turn/completed", + "params": { + "threadId": thread_id, + "turn": {**turn, "status": "completed"}, + }, + } + + return events() + + def run_goal( + self, + thread_id: str, + objective: str, + *, + config=None, # noqa: ANN001 + ) -> AsyncIterator[dict[str, Any]]: + self.backend.goal_calls.append((thread_id, objective, dict(config or {}))) + + async def events() -> AsyncIterator[dict[str, Any]]: + if thread_id not in self.attached: + await self.resume_thread(thread_id) + self.backend.turn_count += 1 + turn_id = f"goal-turn-{self.backend.turn_count}" + item_id = f"goal-answer-{self.backend.turn_count}" + answer = f"goal from {thread_id}: {objective}" + self.backend.calls.append(("goal/start", thread_id)) + turn = { + "id": turn_id, + "status": "inProgress", + "items": [], + "error": None, + } + item = { + "id": item_id, + "memoryCitation": None, + "phase": "final_answer", + "text": "", + "type": "agentMessage", + } + yield {"method": "turn/started", "params": {"threadId": thread_id, "turn": turn}} + yield { + "method": "item/started", + "params": {"threadId": thread_id, "turnId": turn_id, "item": item}, + } + yield { + "method": "item/agentMessage/delta", + "params": { + "threadId": thread_id, + "turnId": turn_id, + "itemId": item_id, + "delta": answer, + }, + } + yield { + "method": "item/completed", + "params": { + "threadId": thread_id, + "turnId": turn_id, + "item": {**item, "text": answer}, + }, + } + yield { + "method": "turn/completed", + "params": { + "threadId": thread_id, + "turn": {**turn, "status": "completed"}, + }, + } + + return events() + + async def interrupt_active_turn(self, thread_id: str) -> bool: + del thread_id + return False + + async def close(self) -> None: + self.backend.closed += 1 + self.attached.clear() + + +def _setup( + *, + provider_config: dict[str, Any] | None = None, +) -> tuple[ + PluginRegistry, + CompositionProfile, + PluginHost, + CodexAgentProviderFactory, + _StrictCodexBackend, + InMemorySessionService, +]: + registry = PluginRegistry([_provider_manifest()]) + profile = _profile(provider_config=provider_config) + backend = _StrictCodexBackend() + service = InMemorySessionService() + provider = CodexAgentProviderFactory( + session_service=service, + codex_client_factory=backend.client, + ) + host = PluginHost( + registry, + {"io.ksadk.codex-provider": provider}, + ) + return registry, profile, host, provider, backend, service + + +@pytest.mark.asyncio +async def test_codex_provider_reuses_native_thread_and_isolates_other_session( + tmp_path: Path, +) -> None: + registry, profile, host, provider, backend, service = _setup() + bundle = _write_bundle(tmp_path / "bundle", registry, profile) + await host.apply(profile) + + first = await host.execute(bundle, {"user_id": "u1", "input": "first"}) + first_activation = provider.runtime.last_activation if provider.runtime else None + second = await host.execute( + bundle, + {"user_id": "u1", "session_id": first.session_id, "input": "second"}, + ) + third = await host.execute(bundle, {"user_id": "u1", "input": "isolated"}) + + assert first.output_text == "answer from thread-1 turn 1" + assert second.output_text == "answer from thread-1 turn 2" + assert third.output_text == "answer from thread-2 turn 3" + assert first.session_id == second.session_id + assert third.session_id != first.session_id + assert backend.calls == [ + ("thread/start", "thread-1"), + ("turn/start", "thread-1"), + ("thread/resume", "thread-1"), + ("turn/start", "thread-1"), + ("thread/start", "thread-2"), + ("turn/start", "thread-2"), + ] + assert first.inventory.model == "fixture-codex-model" + assert first.inventory.mcp_servers == ("weather",) + assert first.inventory.skills == ("report-style",) + assert first_activation is not None and first_activation.disposed is True + assert provider.runtime is not None and provider.runtime.disposed is False + assert backend.closed == 3 + + canonical = await RuntimeEventStore(service).list(first.session_id) + assert [event.event_type for event in canonical].count("continuation.created") == 1 + assert [event.event_type for event in canonical].count("run.completed") == 2 + + # Factory receives Bundle MCP config, while the native turn input receives + # a real openai_codex SkillInput rather than prompt text pasted by PluginHost. + overrides = tuple(getattr(backend.configs[0], "config_overrides", ()) or ()) + assert "mcp_servers.weather.url=https://mcp.invalid.example/rpc" in overrides + prompt_items = backend.prompts[0][1] + assert isinstance(prompt_items, list) + bound_skill_inputs = [ + item + for item in prompt_items + if type(item).__name__ == "SkillInput" + and getattr(item, "name", None) == "report-style" + ] + assert len(bound_skill_inputs) == 1 + bound_skill_path = Path(str(getattr(bound_skill_inputs[0], "path", ""))) + assert ( + bound_skill_path.name == "SKILL.md" + and bound_skill_path.parent.name.endswith("-report-style") + and bound_skill_path.is_file() + ) + + await host.dispose() + assert provider.runtime.disposed is True + + +@pytest.mark.asyncio +async def test_codex_provider_rejects_unsupported_execution_strategy( + tmp_path: Path, +) -> None: + registry, profile, host, _provider, backend, _service = _setup( + provider_config={} + ) + bundle = _write_bundle( + tmp_path / "bundle", registry, profile, execution_strategy="plan-act-observe" + ) + await host.apply(profile) + + with pytest.raises(PluginHostError) as raised: + await host.execute(bundle, {"user_id": "u1", "input": "must reject"}) + + assert raised.value.code == "codex_external_execution_unsupported" + assert backend.calls == [] + await host.dispose() + + +@pytest.mark.asyncio +async def test_codex_provider_rejects_undeclared_input_before_starting_app_server( + tmp_path: Path, +) -> None: + registry, profile, host, _provider, backend, _service = _setup() + bundle = _write_bundle(tmp_path / "bundle", registry, profile) + await host.apply(profile) + + with pytest.raises(PluginHostError) as raised: + await host.execute( + bundle, + { + "user_id": "u1", + "input": "must reject", + "web_search": True, + }, + ) + + assert raised.value.code == "codex_input_unsupported" + assert backend.calls == [] + assert backend.configs == [] + await host.dispose() + + +@pytest.mark.asyncio +async def test_codex_provider_projects_native_plan_and_goal_without_prompt_commands( + tmp_path: Path, +) -> None: + registry, profile, host, _provider, backend, _service = _setup() + bundle = _write_bundle(tmp_path / "bundle", registry, profile) + await host.apply(profile) + + planned = await host.execute( + bundle, + { + "user_id": "u1", + "input": "plan this", + "collaboration_mode": "plan", + "invocation_id": "invocation-plan", + }, + ) + goal = await host.execute( + bundle, + { + "user_id": "u1", + "input": "this text must not emulate a /goal command", + "collaboration_mode": "plan", + "goal_objective": "finish the provider closure", + "invocation_id": "invocation-goal", + }, + ) + + assert planned.output_text == "answer from thread-1 turn 1" + assert backend.turn_configs[0]["collaboration_mode"] == "plan" + assert goal.output_text == "goal from thread-2: finish the provider closure" + assert len(backend.goal_calls) == 1 + goal_thread, objective, goal_config = backend.goal_calls[0] + assert goal_thread == "thread-2" + assert objective == "finish the provider closure" + assert goal_config["collaboration_mode"] == "plan" + assert goal_config["sandbox_read_only"] is False + assert goal_config["sandbox"] == "workspace-write" + await host.dispose() + + +@pytest.mark.asyncio +async def test_codex_provider_only_accepts_models_locked_into_bundle( + tmp_path: Path, +) -> None: + registry, profile, host, _provider, backend, _service = _setup() + bundle = _write_bundle( + tmp_path / "bundle", + registry, + profile, + models=["fixture-codex-model", "fixture-codex-model-next"], + ) + await host.apply(profile) + + selected = await host.execute( + bundle, + { + "user_id": "u1", + "input": "use the selected model", + "model": "fixture-codex-model-next", + }, + ) + assert selected.inventory.model == "fixture-codex-model-next" + assert backend.turn_configs[0]["model"] == "fixture-codex-model-next" + + with pytest.raises(PluginHostError) as raised: + await host.execute( + bundle, + { + "user_id": "u1", + "input": "must fail before a second App Server starts", + "model": "undeclared-model", + }, + ) + assert raised.value.code == "codex_model_unsupported" + assert len(backend.configs) == 1 + await host.dispose() + + +@pytest.mark.asyncio +async def test_codex_activation_exposes_and_disposes_kernel_runtime_adapter( + tmp_path: Path, +) -> None: + registry, profile, host, provider, backend, _service = _setup() + bundle = _write_bundle(tmp_path / "bundle", registry, profile) + await host.apply(profile) + session = await host.open_activation(bundle, activation_key="session-kernel") + activation = provider.runtime.last_activation if provider.runtime else None + + assert activation is not None + adapter = activation.runtime_adapter() + assert adapter.capabilities().goal.supported is True + assert adapter.capabilities().plan.supported is True + assert backend.closed == 0 + + await session.close() + assert activation.disposed is True + assert backend.closed == 1 + await host.dispose() diff --git a/tests/plugins/test_dsh_node_provider_e2e.py b/tests/plugins/test_dsh_node_provider_e2e.py new file mode 100644 index 00000000..69a0a435 --- /dev/null +++ b/tests/plugins/test_dsh_node_provider_e2e.py @@ -0,0 +1,543 @@ +"""Real DSH install -> Cordis service -> Node provider host -> PluginHost E2E.""" + +from __future__ import annotations + +import json +import os +import shutil +import time +from pathlib import Path +from types import MappingProxyType + +import pytest +from fastapi.testclient import TestClient + +from ksadk.plugins.bridges.dsh import DshPluginMutationError, DshProfilePluginBridge +from ksadk.plugins.bundle import ResolvedPluginBundle +from ksadk.plugins.contracts import CompositionProfile +from ksadk.plugins.dsh_toolchain import DshToolchainManager +from ksadk.plugins.host import PluginExecutionContext, PluginHost, PluginHostError +from ksadk.plugins.providers.dsh import ( + DSH_HOST_USER_PERMISSION, + DshAgentProviderFactory, + DshAgentProviderHost, +) +from ksadk.plugins.resolver import PluginRegistry +from ksadk.studio.api import create_studio_app +from ksadk.studio.contracts import BundleManifest +from ksadk.studio.service import StudioService + +PLUGIN_NAME = "@ksadk-test/dsh-node-agent-provider" +PROVIDER_REF = "plugin://io.ksadk.test.dsh-node-provider@1.0.0" + +pytestmark = pytest.mark.skipif( + os.environ.get("KSADK_DSH_TOOLCHAIN_E2E") != "1", + reason="set KSADK_DSH_TOOLCHAIN_E2E=1 to install the pinned public npm toolchain", +) + + +def _fixture_bundle() -> Path: + return Path(__file__).parents[1] / "fixtures" / "dsh-node-agent-provider" + + +def _resolved_bundle( + tmp_path: Path, + registry: PluginRegistry, + profile: CompositionProfile, +) -> ResolvedPluginBundle: + composition = registry.resolve(profile) + return ResolvedPluginBundle( + root=tmp_path, + manifest=BundleManifest( + bundle_format="agentkit.bundle/v2", + agent_id="dsh-cordis-node-agent", + source_revision=1, + resolved_digest="sha256:" + "1" * 64, + runtime_type="dsh", + plugin_lock_digest=composition.plugin_lock_digest, + composition_profile_digest=composition.profile_digest, + files=[], + bundle_digest="sha256:" + "2" * 64, + ), + resolved_agent_spec=MappingProxyType( + { + "instructions": MappingProxyType( + {"system": "Keep the DSH Cordis activation alive across turns."} + ), + "execution": MappingProxyType({"strategy": "direct"}), + } + ), + composition=composition, + ) + + +def _wait(client: TestClient, operation_id: str) -> dict: + for _ in range(500): + payload = client.get(f"/api/v1/operations/{operation_id}").json() + if payload["status"] in {"SUCCEEDED", "FAILED", "CANCELLED", "INTERRUPTED"}: + return payload + time.sleep(0.01) + raise AssertionError(f"operation {operation_id} did not finish") + + +def _studio_provider_spec() -> dict: + return { + "description": "Outside-repository DSH Node AgentProvider", + "runtime": {"type": "plugin", "providerRef": PROVIDER_REF}, + "instructions": {"system": "Keep state across turns."}, + "model": { + "provider": "openai-compatible", + "model": "fixture-model", + "endpointUrl": "https://model.example.test/v1/chat/completions", + "credentialRef": "env://MODEL_API_KEY", + }, + "security": { + "allowedPermissions": ["process:host-user"], + "network": { + "mode": "restricted", + "allowedHosts": ["model.example.test"], + "allowPrivateNetwork": False, + }, + }, + } + + +def test_normal_studio_discovers_runs_and_releases_external_node_provider( + tmp_path: Path, + monkeypatch: pytest.MonkeyPatch, +) -> None: + toolchain = DshToolchainManager(base_dir=tmp_path / "toolchains") + toolchain.install() + dsh_home = tmp_path / "dsh-home" + profile_name = "studio-node-e2e" + with DshProfilePluginBridge( + dsh_home=dsh_home, + profile=profile_name, + dsh_command=toolchain.require_command(), + cwd=toolchain.root, + ) as bridge: + installed = bridge.install_plugin( + str(_fixture_bundle()), + accept_host_permissions=True, + ) + assert installed.installed is True + assert installed.enabled is False + assert PLUGIN_NAME not in bridge.project_profile().bundles + enabled = bridge.set_enabled(PLUGIN_NAME, enabled=True) + assert enabled.enabled is True + + monkeypatch.setenv("AGENTENGINE_PLUGIN_TOOLCHAIN_HOME", str(tmp_path / "toolchains")) + monkeypatch.setenv("KSADK_DSH_HOME", str(dsh_home)) + monkeypatch.setenv("KSADK_DSH_PROFILE", profile_name) + monkeypatch.setenv("KSADK_DSH_BIN", toolchain.require_command()[0]) + + workspace = tmp_path / "studio-workspace" + studio = StudioService(workspace) + app = create_studio_app(workspace, service=studio, security_enabled=False) + with TestClient(app) as client: + catalog = client.get("/api/v1/agent-providers") + assert catalog.status_code == 200, catalog.text + assert catalog.json()["items"] == [ + { + "providerRef": PROVIDER_REF, + "pluginId": PLUGIN_NAME, + "resolvedVersion": "1.0.0", + "displayName": "DSH Cordis Node provider", + "state": "enabled", + "compatible": True, + "selectable": True, + "reason": None, + "permissions": ["process:host-user"], + "isolation": "sidecar", + "configSchemaDeclared": False, + "secretFields": [], + } + ] + manager = studio._dsh_provider_registration_manager + assert manager is not None + assert manager.inventory.state == "bound" + assert manager.inventory.packages[0].state == "bound" + assert manager.host_pids + plugin_inventory = client.get("/api/v1/plugin-ecosystems/dsh/plugins").json() + assert plugin_inventory["items"][0]["runtimeState"] == { + "state": "bound", + "providerRef": PROVIDER_REF, + "errorCode": None, + } + + created = client.post( + "/api/v1/agents", + json={ + "id": "outside-node-provider", + "name": "Outside Node Provider", + "template": "blank", + "spec": _studio_provider_spec(), + }, + ) + assert created.status_code == 201, created.text + build_operation = client.post( + "/api/v1/agents/outside-node-provider/builds", + headers={"Idempotency-Key": "outside-node-build"}, + json={"revision": 1}, + ) + build_done = _wait(client, build_operation.json()["id"]) + assert build_done["status"] == "SUCCEEDED", build_done + build_id = build_done["resourceId"] + + first_operation = client.post( + f"/api/v1/builds/{build_id}/runs", + headers={"Idempotency-Key": "outside-node-run-one"}, + json={"input": {"role": "user", "content": "first"}}, + ) + first_done = _wait(client, first_operation.json()["id"]) + assert first_done["status"] == "SUCCEEDED", first_done + first = client.get(f"/api/v1/runs/{first_done['resourceId']}").json() + assert first["status"] == "COMPLETED", first + assert first["output"] == "first:turn-1" + + second_operation = client.post( + f"/api/v1/builds/{build_id}/runs", + headers={"Idempotency-Key": "outside-node-run-two"}, + json={ + "sessionId": first["sessionId"], + "input": {"role": "user", "content": "second"}, + }, + ) + second_done = _wait(client, second_operation.json()["id"]) + assert second_done["status"] == "SUCCEEDED", second_done + second = client.get(f"/api/v1/runs/{second_done['resourceId']}").json() + assert second["status"] == "COMPLETED", second + assert second["sessionId"] == first["sessionId"] + assert second["output"] == "second:turn-2" + assert studio.plugin_runs.active_activation_count == 1 + + disabled = client.post( + f"/api/v1/plugin-ecosystems/dsh/plugins/{PLUGIN_NAME}:disable" + ) + assert disabled.status_code == 200, disabled.text + assert disabled.json()["item"]["state"] == "disabled" + assert disabled.json()["item"]["runtimeState"] == { + "state": "installed", + "providerRef": None, + "errorCode": None, + } + assert client.get("/api/v1/agent-providers").json()["items"] == [] + assert studio.plugin_runs.active_activation_count == 0 + assert manager.host_pids == () + assert manager.inventory.packages[0].state == "installed" + + rejected_operation = client.post( + f"/api/v1/builds/{build_id}/runs", + headers={"Idempotency-Key": "outside-node-run-disabled"}, + json={"input": {"role": "user", "content": "must fail"}}, + ) + rejected = _wait(client, rejected_operation.json()["id"]) + assert rejected["status"] == "FAILED" + + removed = client.delete( + f"/api/v1/plugin-ecosystems/dsh/plugins/{PLUGIN_NAME}" + ) + assert removed.status_code == 204, removed.text + assert manager.inventory.packages == () + assert client.get("/api/v1/plugin-ecosystems/dsh/plugins").json()["items"] == [] + + +@pytest.mark.asyncio +async def test_real_dsh_bundle_drives_stateful_node_provider_and_uninstalls( + tmp_path: Path, +) -> None: + toolchain = DshToolchainManager(base_dir=tmp_path / "toolchains") + toolchain.install() + dsh_home = tmp_path / "dsh-home" + bridge = DshProfilePluginBridge( + dsh_home=dsh_home, + profile="ksadk-node-e2e", + dsh_command=toolchain.require_command(), + cwd=toolchain.root, + ) + host: DshAgentProviderHost | None = None + plugin_host: PluginHost | None = None + session = None + try: + dsh_version = bridge.start().version + assert dsh_version + installed = bridge.install_plugin( + str(_fixture_bundle()), + accept_host_permissions=True, + ) + assert installed.name == PLUGIN_NAME + assert installed.enabled is False + assert installed.version == "1.0.0" + assert installed.source_kind == "directory" + assert installed.source_digest is not None + + inactive_projection = bridge.project_profile() + assert PLUGIN_NAME not in inactive_projection.bundles + enabled = bridge.set_enabled(PLUGIN_NAME, enabled=True) + assert enabled.enabled is True + projection = bridge.project_profile() + assert PLUGIN_NAME in projection.bundles + profile_root = dsh_home / "profiles" / "ksadk-node-e2e" + installed_host = ( + profile_root + / "node_modules" + / "@ksadk-test" + / "dsh-node-agent-provider" + / "provider-host.mjs" + ) + assert installed_host.is_file() + + event_log = tmp_path / "cordis-events.log" + host = DshAgentProviderHost( + (os.environ.get("NODE", "node"), str(installed_host)), + projection=projection, + cwd=profile_root, + environment={ + "KSADK_DSH_CORDIS_MODULE": str( + toolchain.resolve_module_entry("@deepseek-ai/cordis") + ), + "KSADK_DSH_EVENT_LOG": str(event_log), + }, + ) + descriptor = await host.describe() + assert descriptor.plugin_name == PLUGIN_NAME + assert descriptor.profile_digest == projection.config_digest + + # The Cordis service, not the Python bridge, owns both immutable fences. + with pytest.raises(PluginHostError) as profile_fence: + await host._request( # noqa: SLF001 - adversarial protocol E2E + "preflight", + { + "profileDigest": "sha256:" + "0" * 64, + "descriptorDigest": descriptor.descriptor_digest, + }, + ) + assert profile_fence.value.code == "dsh_provider_remote_error" + with pytest.raises(PluginHostError) as descriptor_fence: + await host._request( # noqa: SLF001 - adversarial protocol E2E + "inventory", + {"descriptorDigest": "sha256:" + "f" * 64}, + ) + assert descriptor_fence.value.code == "dsh_provider_remote_error" + + registration = await host.registration() + registry = PluginRegistry([registration.manifest]) + profile = CompositionProfile.model_validate( + { + "agentProvider": { + "ref": ( + f"plugin://{descriptor.provider_id}@{descriptor.provider_version}" + ) + } + } + ) + factory = DshAgentProviderFactory(host, registration) + plugin_host = PluginHost( + registry, + {descriptor.provider_id: factory}, + allowed_permissions=frozenset({DSH_HOST_USER_PERMISSION}), + ) + await plugin_host.apply(profile) + bundle = _resolved_bundle(tmp_path, registry, profile) + session = await plugin_host.open_activation( + bundle, + activation_key="persistent-session", + ) + + first = await session.execute({"message": "first turn"}) + second = await session.execute({"message": "second turn"}) + assert first["turn"] == 1 + assert second == { + "provider": "dsh-cordis-node", + "agentId": "dsh-cordis-node-agent", + "turn": 2, + "history": [ + {"message": "first turn"}, + {"message": "second turn"}, + ], + "cancelled": False, + "outputText": "second turn:turn-2", + } + assert (await host.inventory()).activation_count == 1 + + assert factory.runtime is not None + cancellable = await factory.runtime.prepare( + bundle, + capabilities=PluginExecutionContext( + profile_digest=bundle.composition.profile_digest, + plugin_lock_digest=bundle.composition.plugin_lock_digest, + bindings=(), + ), + ) + await cancellable.start() + await cancellable.cancel() + cancelled = await cancellable.execute({"message": "after cancel"}) + assert cancelled["cancelled"] is True + await cancellable.drain() + await cancellable.dispose() + + await session.close() + assert (await host.inventory()).activation_count == 0 + await plugin_host.dispose() + plugin_host = None + assert host.pid is None + + # Disable is a real Profile boundary. Once the admitted host is + # disposed, the same installed Provider cannot create another host + # while its Bundle is absent from the projected Profile. + disabled = bridge.set_enabled(PLUGIN_NAME, enabled=False) + assert disabled.enabled is False + assert disabled.source_digest == installed.source_digest + disabled_projection = bridge.project_profile() + assert PLUGIN_NAME not in disabled_projection.bundles + disabled_host = DshAgentProviderHost( + (os.environ.get("NODE", "node"), str(installed_host)), + projection=disabled_projection, + cwd=profile_root, + environment={ + "KSADK_DSH_CORDIS_MODULE": str( + toolchain.resolve_module_entry("@deepseek-ai/cordis") + ), + "KSADK_DSH_EVENT_LOG": str(event_log), + }, + ) + with pytest.raises(PluginHostError) as disabled_provider: + await disabled_host.registration() + assert disabled_provider.value.code == "dsh_provider_remote_error" + assert disabled_host.pid is None + + # DSH has no atomic local-source upgrade API. The bridge packs a new + # immutable tgz and delegates add. This broken candidate changes npm + # identity, so it cannot be the exact replacement requested by name; + # manifest/lock/state/node_modules must all return to the old Provider. + broken = tmp_path / "broken-node-provider-v2" + shutil.copytree(_fixture_bundle(), broken) + package_path = broken / "package.json" + package = json.loads(package_path.read_text(encoding="utf-8")) + package["version"] = "2.0.0" + package["name"] = "@ksadk-test/dsh-node-agent-provider-broken" + package_path.write_text(json.dumps(package), encoding="utf-8") + before_manifest = (profile_root / "package.json").read_bytes() + before_lock = (profile_root / "pnpm-lock.yaml").read_bytes() + before_state = (profile_root / ".ksadk-dsh-plugins.json").read_bytes() + with pytest.raises(DshPluginMutationError): + bridge.update_plugin( + PLUGIN_NAME, + source=str(broken), + accept_host_permissions=True, + ) + assert (profile_root / "package.json").read_bytes() == before_manifest + assert (profile_root / "pnpm-lock.yaml").read_bytes() == before_lock + assert (profile_root / ".ksadk-dsh-plugins.json").read_bytes() == before_state + rolled_back = bridge.get_plugin(PLUGIN_NAME) + assert rolled_back.version == "1.0.0" + assert rolled_back.enabled is False + assert rolled_back.source_digest == installed.source_digest + + reenabled = bridge.set_enabled(PLUGIN_NAME, enabled=True) + assert reenabled.enabled is True + assert reenabled.version == "1.0.0" + assert reenabled.source_digest == installed.source_digest + restored_projection = bridge.project_profile() + assert PLUGIN_NAME in restored_projection.bundles + + host = DshAgentProviderHost( + (os.environ.get("NODE", "node"), str(installed_host)), + projection=restored_projection, + cwd=profile_root, + environment={ + "KSADK_DSH_CORDIS_MODULE": str( + toolchain.resolve_module_entry("@deepseek-ai/cordis") + ), + "KSADK_DSH_EVENT_LOG": str(event_log), + }, + ) + restored_registration = await host.registration() + assert restored_registration.descriptor.provider_version == "1.0.0" + restored_registry = PluginRegistry([restored_registration.manifest]) + restored_profile = CompositionProfile.model_validate( + { + "agentProvider": { + "ref": ( + "plugin://" + f"{restored_registration.descriptor.provider_id}" + f"@{restored_registration.descriptor.provider_version}" + ) + } + } + ) + restored_factory = DshAgentProviderFactory(host, restored_registration) + plugin_host = PluginHost( + restored_registry, + { + restored_registration.descriptor.provider_id: restored_factory, + }, + allowed_permissions=frozenset({DSH_HOST_USER_PERMISSION}), + ) + await plugin_host.apply(restored_profile) + restored_bundle = _resolved_bundle(tmp_path, restored_registry, restored_profile) + session = await plugin_host.open_activation( + restored_bundle, + activation_key="persistent-session", + ) + after_rollback = await session.execute({"message": "after rollback"}) + assert after_rollback == { + "provider": "dsh-cordis-node", + "agentId": "dsh-cordis-node-agent", + # Provider process state is intentionally not durable across a + # disable/dispose boundary. A new admitted activation starts at 1. + "turn": 1, + "history": [{"message": "after rollback"}], + "cancelled": False, + "outputText": "after rollback:turn-1", + } + await session.close() + await plugin_host.dispose() + plugin_host = None + assert host.pid is None + + bridge.uninstall_plugin(PLUGIN_NAME) + assert bridge.list_plugins() == () + removed_projection = bridge.project_profile() + assert PLUGIN_NAME not in removed_projection.bundles + with pytest.raises(PluginHostError) as unavailable: + await session.execute({"message": "must not run after uninstall"}) + assert unavailable.value.code == "agent_activation_closed" + + # pnpm may retain content-addressed bytes, but the current DSH Profile is + # authoritative: even a stale executable cannot re-enter the selector. + removed_host = DshAgentProviderHost( + (os.environ.get("NODE", "node"), str(installed_host)), + projection=removed_projection, + cwd=profile_root, + environment={ + "KSADK_DSH_CORDIS_MODULE": str( + toolchain.resolve_module_entry("@deepseek-ai/cordis") + ), + "KSADK_DSH_EVENT_LOG": str(event_log), + }, + ) + with pytest.raises(PluginHostError) as removed_bundle: + await removed_host.describe() + assert removed_bundle.value.code in { + # pnpm may remove the executable completely... + "dsh_provider_protocol_invalid", + # ...or retain store-backed bytes that reject the inactive Profile. + "dsh_provider_remote_error", + } + assert removed_host.pid is None + + events = event_log.read_text(encoding="utf-8").splitlines() + assert "cordis:effect:active" in events + assert "cordis:execute:cordis-node-1:1" in events + assert "cordis:execute:cordis-node-1:2" in events + assert "cordis:cancel:cordis-node-2" in events + assert events[-1] == "cordis:effect:disposed" + finally: + if session is not None and not session.closed: + await session.close() + if plugin_host is not None: + await plugin_host.dispose() + elif host is not None and host.pid is not None: + await host.dispose() + bridge.close() diff --git a/tests/studio/__init__.py b/tests/studio/__init__.py new file mode 100644 index 00000000..ded93536 --- /dev/null +++ b/tests/studio/__init__.py @@ -0,0 +1 @@ +"""Studio test package.""" diff --git a/tests/studio/e2e/conversation_items_browser_e2e.py b/tests/studio/e2e/conversation_items_browser_e2e.py new file mode 100644 index 00000000..73879cf2 --- /dev/null +++ b/tests/studio/e2e/conversation_items_browser_e2e.py @@ -0,0 +1,559 @@ +"""Browser acceptance for canonical ConversationItem presentation surfaces.""" + +from __future__ import annotations + +import asyncio +import json +from collections.abc import AsyncIterator +from pathlib import Path +from tempfile import TemporaryDirectory +from urllib.request import urlopen + +from playwright.sync_api import Page, Response, expect, sync_playwright +from studio_e2e_support import studio_server + +from ksadk.events.canonical import ( + ApprovalRequest, + ApprovalResponse, + ContentSnapshot, + InteractionRequested, + InteractionResolved, + ItemCompleted, + ItemStarted, + ItemUpdated, + OutputRef, + RunCompleted, + RunInterrupted, + RunStarted, + RuntimeEvent, + SourceRef, + StructuredInputRequest, + StructuredInputResponse, + UsageReported, +) +from ksadk.events.content import ( + DataContent, + TextContent, + ToolCallContent, + ToolResultContent, +) +from ksadk.runtime import RunHandle, StartRequest +from ksadk.studio.contracts import ( + AgentSpec, + Instructions, + ModelSpec, + NetworkPolicy, + RuntimeRef, + SecuritySpec, +) +from ksadk.studio.service import StudioService +from tests.studio.runtime_adapter_fixtures import RuntimeFixture + +AGENT_ID = "conversation-items-agent" +AGENT_NAME = "Conversation Items Agent" +REASONING = "核对运行条件" +TOOL_OUTPUT = "tool-result-ok" +SAME_BODY = "相同正文" + + +def _runtime_inspector(_runtime: object) -> tuple[str, str, str]: + return "0.8.2", "0.147.0", "codex-cli 0.147.0" + + +def _seed_agent(service: StudioService) -> None: + draft = service.create_studio_agent( + agent_id=AGENT_ID, + name=AGENT_NAME, + spec=AgentSpec( + runtime=RuntimeRef(type="codex", version="0.147.0"), + model=ModelSpec( + model="model-example", + endpoint_url="https://model.example.com/v1/chat/completions", + credential_ref="env://MODEL_API_KEY", + ), + instructions=Instructions(system="Render every canonical item by identity."), + security=SecuritySpec(network=NetworkPolicy(allowed_hosts=["model.example.com"])), + ), + ) + service.builder.build(draft) + + +def _json(base_url: str, path: str) -> dict: + with urlopen(f"{base_url}{path}") as response: + return json.loads(response.read()) + + +def _sse_events(base_url: str, path: str) -> list[dict]: + with urlopen(f"{base_url}{path}") as response: + body = response.read().decode("utf-8") + events: list[dict] = [] + for block in body.replace("\r\n", "\n").split("\n\n"): + lines = block.splitlines() + event_name = next( + (line[6:].strip() for line in lines if line.startswith("event:")), + "message", + ) + data = [line[5:].lstrip() for line in lines if line.startswith("data:")] + if data and "\n".join(data) != "[DONE]": + payload = json.loads("\n".join(data)) + payload.setdefault("type", event_name) + events.append(payload) + return events + + +class CanonicalConversationEvents: + """Three stream phases separated by real approval and form resumes.""" + + def __init__(self) -> None: + self.phases: dict[str, int] = {} + + async def __call__( + self, + _request: StartRequest, + handle: RunHandle, + ) -> AsyncIterator[RuntimeEvent]: + phase = self.phases.get(handle.run_id, 0) + self.phases[handle.run_id] = phase + 1 + common = { + "schema_version": 2, + "timestamp": float(phase + 1), + "run_id": handle.run_id, + "scope_id": f"scope-{handle.run_id}", + } + + def event_id(seq: int) -> str: + return f"{handle.run_id}:e{seq}" + + codex = SourceRef(framework="codex") + if phase == 0: + yield RunStarted( + event_id=event_id(1), + seq=1, + status="running", + source=codex, + **common, + ) + yield ItemUpdated( + event_id=event_id(2), + seq=2, + item_id="reasoning-1", + item_kind="reasoning", + op="append", + update=TextContent(part_id="reasoning-text", text=REASONING), + source=codex, + **common, + ) + tool_args = {"command": "echo safe", "cwd": "/workspace"} + yield ItemStarted( + event_id=event_id(3), + seq=3, + item_id="tool-1", + item_kind="tool_call", + initial=ContentSnapshot( + parts=( + ToolCallContent( + part_id="tool-call", + call_id="call-1", + name="codex.command", + arguments=tool_args, + ), + ) + ), + source=codex, + **common, + ) + yield ItemCompleted( + event_id=event_id(4), + seq=4, + item_id="tool-1", + item_kind="tool_call", + snapshot=ContentSnapshot( + parts=( + ToolCallContent( + part_id="tool-call", + call_id="call-1", + name="codex.command", + arguments=tool_args, + ), + ToolResultContent( + part_id="tool-result", + call_id="call-1", + result={ + "status": "completed", + "exit_code": 0, + "output": TOOL_OUTPUT, + }, + ), + ) + ), + source=codex, + **common, + ) + yield InteractionRequested( + event_id=event_id(5), + seq=5, + interaction_id="approval-1", + interaction_kind="approval", + request=ApprovalRequest( + call_id="call-1", + kind="command", + detail={"command": "echo safe"}, + ), + source=codex, + **common, + ) + yield RunInterrupted( + event_id=event_id(6), + seq=6, + status="interrupted", + reason="approval", + interaction_id="approval-1", + source=codex, + **common, + ) + return + + if phase == 1: + yield InteractionResolved( + event_id=event_id(7), + seq=7, + interaction_id="approval-1", + interaction_kind="approval", + response=ApprovalResponse(decision="approved"), + source=codex, + **common, + ) + surface_id = "profile-form" + a2ui = SourceRef( + framework="codex", + protocol="a2ui", + metadata={"surface_id": surface_id}, + ) + operations = [ + { + "version": "v0.9", + "createSurface": { + "surfaceId": surface_id, + "catalogId": "https://a2ui.org/specification/v0_9/basic_catalog.json", + }, + }, + { + "version": "v0.9", + "updateComponents": { + "surfaceId": surface_id, + "components": [ + { + "id": "profile", + "component": "Form", + "title": "补充资料", + "children": ["name"], + "submit_label": "提交资料", + }, + { + "id": "name", + "component": "TextField", + "name": "name", + "label": "姓名", + }, + ], + }, + }, + { + "version": "v0.9", + "updateDataModel": { + "surfaceId": surface_id, + "path": "/", + "value": {"name": ""}, + }, + }, + ] + yield ItemStarted( + event_id=event_id(8), + seq=8, + item_id="a2ui-profile", + item_kind="data", + initial=ContentSnapshot(parts=(DataContent(part_id="a2ui-data", data=operations),)), + source=a2ui, + **common, + ) + yield InteractionRequested( + event_id=event_id(9), + seq=9, + interaction_id="form-1", + interaction_kind="structured_input", + request=StructuredInputRequest( + prompt="请补充姓名", + schema={ + "type": "object", + "properties": {"name": {"type": "string"}}, + "required": ["name"], + }, + ), + source=a2ui, + **common, + ) + yield RunInterrupted( + event_id=event_id(10), + seq=10, + status="interrupted", + reason="structured_input", + interaction_id="form-1", + source=codex, + **common, + ) + return + + if phase == 2: + a2ui = SourceRef( + framework="codex", + protocol="a2ui", + metadata={"surface_id": "profile-form"}, + ) + yield InteractionResolved( + event_id=event_id(11), + seq=11, + interaction_id="form-1", + interaction_kind="structured_input", + response=StructuredInputResponse(data={"name": "Alice"}), + source=a2ui, + **common, + ) + yield UsageReported( + event_id=event_id(12), + seq=12, + input_tokens=5, + output_tokens=3, + total_tokens=8, + source=codex, + **common, + ) + for offset, item_id in enumerate(("same-1", "same-2"), start=0): + start_seq = 13 + (offset * 3) + yield ItemStarted( + event_id=event_id(start_seq), + seq=start_seq, + item_id=item_id, + item_kind="message", + phase="final_answer", + initial=ContentSnapshot(parts=()), + source=codex, + **common, + ) + yield ItemUpdated( + event_id=event_id(start_seq + 1), + seq=start_seq + 1, + item_id=item_id, + item_kind="message", + op="append", + update=TextContent( + part_id=f"{item_id}-text", + text=f"{SAME_BODY}\n\n", + ), + source=codex, + **common, + ) + yield ItemCompleted( + event_id=event_id(start_seq + 2), + seq=start_seq + 2, + item_id=item_id, + item_kind="message", + snapshot=ContentSnapshot( + parts=( + TextContent( + part_id=f"{item_id}-text", + text=f"{SAME_BODY}\n\n", + ), + ) + ), + source=codex, + **common, + ) + # Keep both identity-distinct items visible in the live production + # surface long enough for the browser assertion before terminal + # persistence replaces the streaming turn. + await asyncio.sleep(1.0) + yield RunCompleted( + event_id=event_id(19), + seq=19, + status="completed", + output_refs=( + OutputRef( + scope_id=common["scope_id"], + item_id="same-1", + part_id="same-1-text", + ), + OutputRef( + scope_id=common["scope_id"], + item_id="same-2", + part_id="same-2-text", + ), + ), + source=SourceRef( + framework="codex", + metadata={"duration_ms": 25}, + ), + **common, + ) + return + + raise AssertionError(f"unexpected fourth runtime stream phase for {handle.run_id}") + + +def _exercise_conversation_items(page: Page, second_page: Page, base_url: str) -> None: + interaction_responses: list[tuple[str, int]] = [] + interaction_payloads: list[dict] = [] + + def record_response(response: Response) -> None: + if "/interactions/" in response.url and response.url.endswith(":submit"): + interaction_responses.append((response.url, response.status)) + interaction_payloads.append(response.request.post_data_json) + + page.on("response", record_response) + second_page.on("response", record_response) + # Studio owns long-lived/polling surfaces, so browser readiness is the + # rendered conversation contract rather than a global network-idle gap. + page.goto(f"{base_url}/#/conversations", wait_until="domcontentloaded") + expect(page.get_by_role("combobox", name="切换会话目标")).to_contain_text(AGENT_NAME) + composer = page.get_by_role("textbox", name="消息") + expect(composer).to_be_enabled() + composer.fill("展示 canonical 会话项目") + page.get_by_role("button", name="发送消息").click() + + thinking = page.locator('details[data-ui="think"]') + expect(thinking).to_contain_text(REASONING, timeout=15_000) + # Typed ConversationItems keep their stream order: the tool is its own + # card after the reasoning block rather than being folded into thinking. + tool_card = page.locator(".chat-activity-card.tool") + expect(tool_card).to_contain_text("codex.command") + expect(tool_card).to_contain_text(TOOL_OUTPUT) + + approval_tray = page.locator('[data-ui="interaction-tray"]') + expect(approval_tray).to_contain_text("echo safe") + second_page.goto(f"{base_url}/#/conversations", wait_until="domcontentloaded") + second_approval_tray = second_page.locator('[data-ui="interaction-tray"]') + expect(second_approval_tray).to_contain_text("echo safe", timeout=15_000) + # Two Studio windows submit the same authoritative revision. Both receive + # the persisted receipt while the provider observes exactly one resume. + approval_tray.get_by_role("button", name="允许").evaluate("element => element.click()") + active_run_id = _json(base_url, "/api/v1/runs")["items"][0]["id"] + second_page.evaluate( + """({ runId }) => { + window.__interactionReplayStatus = undefined; + void fetch(`/api/v1/runs/${encodeURIComponent(runId)}/interactions/approval-1:submit`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + name: "approve", + data: {}, + expectedRevision: 1, + idempotencyKey: "interaction:approval-1:revision-1", + }), + }).then(response => { window.__interactionReplayStatus = response.status; }); + }""", + {"runId": active_run_id}, + ) + second_page.wait_for_function("window.__interactionReplayStatus !== undefined") + assert second_page.evaluate("window.__interactionReplayStatus") == 200 + + form_tray = page.locator('[data-ui="interaction-tray"]') + name_input = form_tray.get_by_role("textbox", name="姓名") + expect(name_input).to_be_visible(timeout=15_000) + name_input.fill("Alice") + form_tray.get_by_role("button", name="提交资料").click() + + # Unhandled/additive provider items must degrade silently: no + # "unsupported content" fallback card may ever appear in the chat + # surface. Unknown kinds stay observable via the raw RuntimeEvent + # stream (and are pinned hidden in tests/conversations). + fallback = page.locator('[data-ui="conversation-fallback"]') + expect(fallback).to_have_count(0) + + # Equal text from two canonical Items must remain two rendered blocks. + # Text-based deduplication would incorrectly collapse this to one. + equal_paragraphs = page.locator('article[data-role="assistant"] .chat-markdown p').filter( + has_text=SAME_BODY + ) + expect(equal_paragraphs).to_have_count(2, timeout=15_000) + + # A terminal canonical Run must replace the optimistic streaming turn. + expect(page.locator(".streaming-turn")).to_have_count(0, timeout=10_000) + # Terminal persistence must preserve both identity-distinct outputs instead + # of replacing them with the last completed message snapshot. + expect(equal_paragraphs).to_have_count(2) + assert len(interaction_responses) == 3 + assert all(status == 200 for _url, status in interaction_responses) + assert all(payload["expectedRevision"] == 1 for payload in interaction_payloads) + assert {payload["idempotencyKey"] for payload in interaction_payloads} == { + "interaction:approval-1:revision-1", + "interaction:form-1:revision-1", + } + + runs = _json(base_url, "/api/v1/runs")["items"] + assert len(runs) == 1 + events = _sse_events(base_url, f"/api/v1/runs/{runs[0]['id']}/events") + runtime_events = [ + event["runtimeEvent"] for event in events if isinstance(event.get("runtimeEvent"), dict) + ] + assert {event["event_type"] for event in runtime_events} >= { + "item.updated", + "item.started", + "item.completed", + "interaction.requested", + "interaction.resolved", + "usage.reported", + "run.completed", + } + same_items = [ + event + for event in runtime_events + if event.get("event_type") == "item.completed" + and event.get("item_id") in {"same-1", "same-2"} + ] + assert {event["item_id"] for event in same_items} == {"same-1", "same-2"} + assert {event["snapshot"]["parts"][0]["text"] for event in same_items} == {f"{SAME_BODY}\n\n"} + assert {event["event_type"] for event in runtime_events}.issuperset( + {"interaction.requested", "interaction.resolved"} + ) + assert sum(event["event_type"] == "interaction.requested" for event in runtime_events) == 2 + assert sum(event["event_type"] == "interaction.resolved" for event in runtime_events) == 2 + actions = [event for event in events if event.get("type") == "a2ui.action"] + # Runtime InteractionResolved also projects an additive a2ui.action + # without the Studio submit receipt's action name. + assert {"approve", "submit"}.issubset({event.get("name") for event in actions}), actions + assert any(event.get("data") == {"name": "Alice"} for event in actions) + + +def main() -> None: + event_stream = CanonicalConversationEvents() + fixture = RuntimeFixture(event_stream) + with TemporaryDirectory(prefix="ksadk-conversation-items-") as temp_dir: + workspace = Path(temp_dir) + service = StudioService( + workspace, + codex_runtime_inspector=_runtime_inspector, + runtime_executor=fixture.executor, + ) + _seed_agent(service) + with ( + studio_server(workspace, service=service) as base_url, + sync_playwright() as playwright, + ): + browser = playwright.chromium.launch(headless=True) + try: + context = browser.new_context(viewport={"width": 1440, "height": 960}) + page = context.new_page() + second_page = context.new_page() + page_errors: list[str] = [] + page.on("pageerror", lambda error: page_errors.append(str(error))) + second_page.on("pageerror", lambda error: page_errors.append(str(error))) + _exercise_conversation_items(page, second_page, base_url) + assert page_errors == [], f"Uncaught React page errors: {page_errors}" + finally: + browser.close() + + assert len(fixture.start_requests) == 1 + assert list(event_stream.phases.values()) == [3] + + +if __name__ == "__main__": + main() diff --git a/tests/studio/e2e/conversation_reconnect_browser_e2e.py b/tests/studio/e2e/conversation_reconnect_browser_e2e.py new file mode 100644 index 00000000..d5cc3bb3 --- /dev/null +++ b/tests/studio/e2e/conversation_reconnect_browser_e2e.py @@ -0,0 +1,145 @@ +"""Browser acceptance for typed Conversation replay without duplicate turns.""" + +from __future__ import annotations + +import json +from pathlib import Path +from tempfile import TemporaryDirectory +from urllib.request import urlopen + +from playwright.sync_api import Page, Route, expect, sync_playwright + +from ksadk.studio.contracts import ( + AgentSpec, + Instructions, + ModelSpec, + NetworkPolicy, + RuntimeRef, + SecuritySpec, +) +from ksadk.studio.service import StudioService +from tests.studio.e2e.studio_e2e_support import studio_server +from tests.studio.runtime_adapter_fixtures import RuntimeFixture, standard_codex_events + +AGENT_ID = "conversation-reconnect-agent" +AGENT_NAME = "Conversation Reconnect Agent" +FINAL_ANSWER = "发现除零风险。请先检查空列表。" + + +def _runtime_inspector(_runtime: object) -> tuple[str, str, str]: + return "0.8.2", "0.147.0", "codex-cli 0.147.0" + + +def _seed_agent(service: StudioService) -> None: + draft = service.create_studio_agent( + agent_id=AGENT_ID, + name=AGENT_NAME, + spec=AgentSpec( + runtime=RuntimeRef(type="codex", version="0.147.0"), + model=ModelSpec( + model="model-example", + endpoint_url="https://model.example.com/v1/chat/completions", + credential_ref="env://MODEL_API_KEY", + ), + instructions=Instructions(system="Keep every turn identity distinct."), + security=SecuritySpec( + network=NetworkPolicy(allowed_hosts=["model.example.com"]) + ), + ), + ) + service.builder.build(draft) + + +def _json(base_url: str, path: str) -> dict: + with urlopen(f"{base_url}{path}") as response: + return json.loads(response.read()) + + +def _first_canonical_item_prefix(body: str) -> str: + blocks = [block for block in body.replace("\r\n", "\n").split("\n\n") if block] + for index, block in enumerate(blocks): + if '"conversationItem"' in block: + return "\n\n".join(blocks[: index + 1]) + "\n\n" + raise AssertionError("initial stream did not contain a canonical ConversationItem") + + +def _exercise_reconnect(page: Page, base_url: str) -> None: + initial_posts = 0 + replay_requests: list[str] = [] + + def cut_first_stream(route: Route) -> None: + nonlocal initial_posts + initial_posts += 1 + if initial_posts > 1: + route.continue_() + return + response = route.fetch() + partial = _first_canonical_item_prefix(response.body().decode("utf-8")) + route.fulfill(response=response, body=partial) + + page.route("**/api/v1/builds/*/conversation:stream", cut_first_stream) + page.on( + "request", + lambda request: replay_requests.append(request.url) + if "/api/v1/runs/" in request.url and "/events?after=" in request.url + else None, + ) + + # Studio can keep background plugin/session requests open; readiness is the + # rendered conversation surface, not a process-wide network-idle window. + page.goto(f"{base_url}/#/conversations", wait_until="domcontentloaded") + expect(page.get_by_role("combobox", name="切换会话目标")).to_contain_text( + AGENT_NAME + ) + composer = page.get_by_role("textbox", name="消息") + expect(composer).to_be_enabled() + + composer.fill("检查一次") + page.get_by_role("button", name="发送消息").click() + answer = page.locator('article[data-role="assistant"] .chat-markdown').filter( + has_text=FINAL_ANSWER + ) + expect(answer).to_have_count(1, timeout=15_000) + expect(composer).to_have_value("") + assert initial_posts == 1 + assert replay_requests, "typed stream EOF must resume from the durable event cursor" + assert any("after=" in url and not url.endswith("after=0") for url in replay_requests) + + # A second turn uses the same Session but creates one new Run. Identical + # answer text must remain visible twice because item identity, not text, + # controls reduction. + composer.fill("再检查一次") + page.get_by_role("button", name="发送消息").click() + expect(answer).to_have_count(2, timeout=15_000) + assert initial_posts == 2 + + runs = _json(base_url, "/api/v1/runs")["items"] + assert len(runs) == 2 + assert len({run["id"] for run in runs}) == 2 + assert len({run["sessionId"] for run in runs}) == 1 + + +def main() -> None: + with TemporaryDirectory(prefix="ksadk-conversation-reconnect-") as temp_dir: + workspace = Path(temp_dir) + service = StudioService( + workspace, + codex_runtime_inspector=_runtime_inspector, + runtime_executor=RuntimeFixture(standard_codex_events).executor, + ) + _seed_agent(service) + with studio_server(workspace, service=service) as base_url, sync_playwright() as playwright: + browser = playwright.chromium.launch(headless=True) + try: + page = browser.new_page(viewport={"width": 1440, "height": 960}) + page_errors: list[str] = [] + page.on("pageerror", lambda error: page_errors.append(str(error))) + _exercise_reconnect(page, base_url) + assert page_errors == [], f"Uncaught React page errors: {page_errors}" + page.unroute_all(behavior="wait") + finally: + browser.close() + + +if __name__ == "__main__": + main() diff --git a/tests/studio/e2e/dsh_client_bundle_browser_e2e.py b/tests/studio/e2e/dsh_client_bundle_browser_e2e.py new file mode 100644 index 00000000..28e0e135 --- /dev/null +++ b/tests/studio/e2e/dsh_client_bundle_browser_e2e.py @@ -0,0 +1,121 @@ +"""Browser acceptance for installed DSH client bundle activation and disposal.""" + +from __future__ import annotations + +import json +from pathlib import Path +from tempfile import TemporaryDirectory +from unittest.mock import patch + +from playwright.sync_api import expect, sync_playwright +from studio_e2e_support import studio_server + +PLUGIN = "@example/studio-workspace" + + +def _write_profile(root: Path) -> tuple[Path, Path]: + home = root / "dsh-home" + profile = home / "profiles" / "studio" + package = profile / "node_modules" / "@example" / "studio-workspace" + package.mkdir(parents=True) + (profile / "package.json").write_text( + json.dumps( + { + "dependencies": {PLUGIN: "1.0.0"}, + "dsh": {"profile": {"bundles": [PLUGIN]}}, + } + ), + encoding="utf-8", + ) + (package / "package.json").write_text( + json.dumps( + { + "name": PLUGIN, + "version": "1.0.0", + "exports": {"./client": "./lib/client.js"}, + "dsh": { + "bundle": {"patch": "./cordis.patch.yml"}, + "client": {"platform": "web", "external": ["react"]}, + }, + } + ), + encoding="utf-8", + ) + (package / "cordis.patch.yml").write_text("[]\n", encoding="utf-8") + client = package / "lib" / "client.js" + client.parent.mkdir() + client.write_text( + """window.__ModuleLoader__.load({ +id:'@example/studio-workspace', +factory:(require)=>{ + const React=require('react'); + const Workspace=(props)=>React.createElement( + 'section', {'data-testid':'installed-dsh-workspace'}, `Agent ${props.currentAgentId||'none'}` + ); + return {inject:['studio'],apply(ctx){ + ctx.studio.ui.register(ctx,'studio.sidebar.navigation',{ + id:'fixture.navigation',label:'DSH 扩展',path:'/extensions/dsh-fixture',order:30 + }); + ctx.studio.ui.register(ctx,'studio.route',{ + id:'fixture.route',path:'/extensions/dsh-fixture',title:'DSH 扩展', + workspaceTabId:'fixture.tab' + }); + ctx.studio.ui.register(ctx,'studio.workspace.tab',{ + id:'fixture.tab',label:'DSH 扩展',component:Workspace + }); + }}; +}});\n""", + encoding="utf-8", + ) + executable = root / "dsh-fixture" + executable.write_text( + "#!/bin/sh\n" + 'case "$*" in\n' + " *--version*) echo 0.1.2-alpha.1;;\n" + " *--dump-config*) echo 'graph: fixture';;\n" + "esac\n", + encoding="utf-8", + ) + executable.chmod(0o700) + return home, executable + + +def main() -> None: + with TemporaryDirectory(prefix="ksadk-dsh-client-e2e-") as temp: + root = Path(temp) + workspace = root / "workspace" + workspace.mkdir() + home, executable = _write_profile(root) + environment = { + "KSADK_DSH_HOME": str(home), + "KSADK_DSH_BIN": str(executable), + } + with ( + patch.dict("os.environ", environment), + studio_server(workspace) as base_url, + sync_playwright() as playwright, + ): + browser = playwright.chromium.launch(headless=True) + try: + page = browser.new_page(viewport={"width": 1440, "height": 960}) + page_errors: list[str] = [] + page.on("pageerror", lambda error: page_errors.append(str(error))) + page.goto(base_url, wait_until="networkidle") + + extension = page.get_by_role("button", name="DSH 扩展", exact=True) + expect(extension).to_be_visible() + extension.click() + expect(page.get_by_test_id("installed-dsh-workspace")).to_be_visible() + + page.get_by_role("button", name="插件", exact=True).click() + expect(page.get_by_role("button", name="停用", exact=True)).to_be_visible() + page.get_by_role("button", name="停用", exact=True).click() + expect(extension).to_be_hidden() + expect(page.get_by_test_id("installed-dsh-workspace")).to_be_hidden() + assert page_errors == [], page_errors + finally: + browser.close() + + +if __name__ == "__main__": + main() diff --git a/tests/studio/e2e/scheduler_browser_e2e.py b/tests/studio/e2e/scheduler_browser_e2e.py new file mode 100644 index 00000000..ff5b944d --- /dev/null +++ b/tests/studio/e2e/scheduler_browser_e2e.py @@ -0,0 +1,435 @@ +"""Browser acceptance for Scheduler Lite inside one Agent detail page. + +The browser talks to the production FastAPI routes and React bundle. Task +definitions and occurrence history use the real SQLite store; run-now crosses +the real AgentControl ingress, AgentKernel worker, Codex RuntimeAdapter and +Codex App Server. Only the external model endpoint is replaced by a local +deterministic Responses server; it does not write Scheduler state or manufacture +a terminal occurrence. +""" + +from __future__ import annotations + +import asyncio +import hashlib +import json +import time +from pathlib import Path +from tempfile import TemporaryDirectory +from urllib.parse import urlsplit +from urllib.request import Request, urlopen + +from openai_codex import CodexConfig +from playwright.sync_api import Page, expect, sync_playwright +from studio_e2e_support import studio_server + +from ksadk.codex.runtime import CodexRuntimeAdapter +from ksadk.events.canonical_store import RuntimeEventStore +from ksadk.runtime import RuntimeExecutor, RuntimeRegistry +from ksadk.studio.contracts import AgentSpec +from ksadk.studio.service import StudioService +from tests.e2e.codex_app_server_fixture import RealCodexFactory +from tests.e2e.codex_responses_stub import DeterministicResponsesStub + +AGENT_ID = "scheduler-browser-agent" +AGENT_NAME = "Scheduler Browser Agent" +TASK_NAME = "工作日销售摘要" +TASK_PROMPT = "生成昨日销售摘要并列出异常" +TASK_NAME_EDITED = "工作日销售复盘" +TASK_PROMPT_EDITED = "生成昨日销售复盘并标注异常负责人" +CONTINUE_TASK_NAME = "持续销售跟进" +CONTINUE_SESSION_ID = "scheduler-codex-continuation" + + +def _runtime_inspector(_runtime: object) -> tuple[str, str, str]: + return "0.8.2", "0.144.4", "codex-cli 0.144.4" + + +def _json( + base_url: str, + path: str, + *, + method: str = "GET", + body: dict | None = None, +) -> dict: + request = Request( + f"{base_url}{path}", + data=None if body is None else json.dumps(body).encode("utf-8"), + headers={"Content-Type": "application/json"}, + method=method, + ) + with urlopen(request) as response: + raw = response.read() + assert response.status < 300, raw.decode("utf-8") + return json.loads(raw) if raw else {} + + +def _agent_spec() -> AgentSpec: + return AgentSpec.model_validate( + { + "description": "Scheduler browser fixture", + "runtime": {"type": "codex", "version": "0.144.4"}, + "instructions": { + "system": "You are a deterministic scheduler fixture.", + "task": "Acknowledge scheduled work.", + }, + "model": { + "provider": "openai-compatible", + "model": "fixture-model", + "endpointUrl": "https://model.example.com/v1/chat/completions", + "credentialRef": "env://MODEL_API_KEY", + "parameters": {"temperature": 0.2, "maxTokens": 128}, + }, + "capabilities": {"skills": [], "mcpServers": [], "tools": []}, + "execution": { + "strategy": "direct", + "maxSteps": 4, + "timeoutSeconds": 30, + "retry": {"maxAttempts": 1, "backoffSeconds": 0}, + }, + "context": { + "maxInputTokens": 4096, + "reserveOutputTokens": 512, + "compaction": {"enabled": True, "thresholdRatio": 0.8}, + }, + "security": { + "toolPolicy": "deny-by-default", + "allowedPermissions": [], + "network": { + "mode": "restricted", + "allowedHosts": ["model.example.com"], + "allowPrivateNetwork": False, + }, + }, + } + ) + + +def _prepare_agent(service: StudioService) -> str: + spec = _agent_spec() + service.create_studio_agent( + agent_id=AGENT_ID, + name=AGENT_NAME, + description="Scheduler browser fixture", + spec=spec, + runtime=spec.runtime, + ) + build = asyncio.run(service.ensure_current_build(AGENT_ID)) + return build.id + + +def _scheduled_instance_id(build_id: str) -> str: + digest = hashlib.sha256(build_id.encode("utf-8")).hexdigest()[:24] + return f"studio-schedule-{digest}" + + +def _start_browser_sse(page: Page, session_id: str, after_seq: int) -> None: + page.evaluate( + """ + ({sessionId, afterSeq}) => { + window.__schedulerSseResult = (async () => { + const controller = new AbortController(); + const timer = setTimeout(() => controller.abort(), 8000); + try { + const response = await fetch( + `/api/v1/sessions/${encodeURIComponent(sessionId)}/events/stream?afterSeqId=${afterSeq}`, + { signal: controller.signal, headers: { Accept: "text/event-stream" } }, + ); + if (!response.ok || !response.body) throw new Error(`SSE ${response.status}`); + const reader = response.body.getReader(); + const decoder = new TextDecoder(); + let text = ""; + while (true) { + const { value, done } = await reader.read(); + if (done) break; + text += decoder.decode(value, { stream: true }); + if (text.includes('"type":"run.completed"')) { + controller.abort(); + return { contentType: response.headers.get("content-type") || "", text }; + } + } + throw new Error("SSE ended without run.completed"); + } finally { + clearTimeout(timer); + } + })(); + } + """, + {"sessionId": session_id, "afterSeq": after_seq}, + ) + + +def _assert_scheduler_lifecycle( + page: Page, + base_url: str, + *, + build_id: str, +) -> tuple[str, str]: + api_calls: list[tuple[str, str, int]] = [] + + def record_schedule_response(response) -> None: + path = urlsplit(response.url).path + if "/schedules" in path: + api_calls.append((response.request.method, path, response.status)) + + page.on("response", record_schedule_response) + # Create and edit from the global Scheduler product surface first. This is + # intentionally a browser route, not repository setup hidden in the test. + page.goto(f"{base_url}/#/automations", wait_until="domcontentloaded") + expect(page.get_by_role("heading", name="自动化 / 定时任务")).to_be_visible() + expect(page.get_by_text("本地调度运行中", exact=True)).to_be_visible() + + page.get_by_role("button", name="新建定时任务", exact=True).click() + form = page.locator(".automation-form") + expect(form).to_be_visible() + form.locator("label", has_text="Agent").locator("select").select_option(AGENT_ID) + form.get_by_placeholder("例如:工作日销售日报").fill(TASK_NAME) + form.get_by_placeholder("例如:生成昨日销售摘要并列出异常").fill(TASK_PROMPT) + form.locator("label", has_text="触发方式").locator("select").select_option("interval") + form.locator("label", has_text="间隔(秒)").locator("input").fill("3600") + form.get_by_role("button", name="创建任务", exact=True).click() + + row = page.get_by_role("row", name=f"查看定时任务 {TASK_NAME} 的详情") + expect(row).to_be_visible() + task_payload = _json(base_url, "/api/v1/schedules") + assert len(task_payload["items"]) == 1 + task = task_payload["items"][0] + task_id = task["taskId"] + assert task["target"]["agentId"] == AGENT_ID + assert task["target"]["agentInstanceId"] == _scheduled_instance_id(build_id) + assert task["target"]["agentVersionRef"] == build_id + + # The global detail owns real edit, not a disabled or decorative action. + row.click() + page.locator(".automation-detail").get_by_role("button", name="编辑", exact=True).click() + form.get_by_placeholder("例如:工作日销售日报").fill(TASK_NAME_EDITED) + form.get_by_placeholder("例如:生成昨日销售摘要并列出异常").fill(TASK_PROMPT_EDITED) + form.get_by_role("button", name="保存变更", exact=True).click() + row = page.get_by_role("row", name=f"查看定时任务 {TASK_NAME_EDITED} 的详情") + expect(row).to_be_visible() + edited = _json(base_url, "/api/v1/schedules")["items"][0] + assert edited["displayName"] == TASK_NAME_EDITED + assert edited["command"]["payload"]["content"] == TASK_PROMPT_EDITED + + # A browser refresh reconstructs the global route and durable SQLite task + # rather than depending on React component state. + page.reload(wait_until="domcontentloaded") + row = page.get_by_role("row", name=f"查看定时任务 {TASK_NAME_EDITED} 的详情") + expect(row).to_be_visible() + + # The same durable task is managed in place from the Agent detail tab. + page.goto(f"{base_url}/#/agents/{AGENT_ID}", wait_until="domcontentloaded") + expect(page.get_by_role("banner", name="当前页面")).to_contain_text(AGENT_NAME) + page.get_by_role("tab", name="自动化", exact=True).click() + expect(page.get_by_role("heading", name="该 Agent 的自动化")).to_be_visible() + row = page.get_by_role("row", name=f"查看定时任务 {TASK_NAME_EDITED} 的详情") + expect(row).to_be_visible() + + # Activating the real table row opens task details and occurrence history. + row.click() + expect( + page.locator(".automation-detail").get_by_role("heading", name=TASK_NAME_EDITED) + ).to_be_visible() + expect(page.locator(".automation-detail")).to_contain_text("目标 Build") + expect(page.get_by_text("还没有执行记录。", exact=True)).to_be_visible() + + # Enabled state is durable and both transitions use the agent-scoped PUT. + page.get_by_role("button", name="停用", exact=True).click() + expect( + page.locator(".automation-detail").get_by_role("button", name="启用", exact=True) + ).to_be_visible() + assert _json(base_url, "/api/v1/schedules")["items"][0]["enabled"] is False + page.locator(".automation-detail").get_by_role("button", name="启用", exact=True).click() + expect( + page.locator(".automation-detail").get_by_role("button", name="停用", exact=True) + ).to_be_visible() + assert _json(base_url, "/api/v1/schedules")["items"][0]["enabled"] is True + + # Manual execution is accepted by AgentControl first. The real Kernel + # worker and Codex RuntimeAdapter emit the correlated canonical terminal; + # accepted alone is never treated as success. + page.get_by_role("button", name="立即运行", exact=True).click() + expect(page.get_by_text("已提交到本地 Agent Kernel", exact=True)).to_be_visible() + + terminal = None + for _ in range(100): + values = _json( + base_url, + f"/api/v1/agents/{AGENT_ID}/schedules/{task_id}/occurrences", + )["items"] + if values and values[0]["state"] in {"succeeded", "failed", "cancelled", "skipped"}: + terminal = values[0] + break + time.sleep(0.05) + assert terminal is not None, "real AgentKernel execution never produced a terminal occurrence" + assert terminal["state"] == "succeeded", terminal + # The product surface keeps polling active occurrences until the same + # accepted row reaches a correlated terminal; users do not need a refresh. + expect(page.locator(".automation-occurrences")).to_contain_text("成功", timeout=5000) + + # Refresh after execution proves that terminal history is persisted and + # reloaded from HTTP, not retained in the component tree. + page.reload(wait_until="domcontentloaded") + page.get_by_role("tab", name="自动化", exact=True).click() + row = page.get_by_role("row", name=f"查看定时任务 {TASK_NAME_EDITED} 的详情") + row.click() + occurrence_list = page.locator(".automation-occurrences") + expect(occurrence_list).to_be_visible() + expect(occurrence_list).to_contain_text("成功") + expect(occurrence_list).to_contain_text("手动触发") + + occurrences = _json( + base_url, + f"/api/v1/agents/{AGENT_ID}/schedules/{task_id}/occurrences", + )["items"] + assert len(occurrences) == 1 + assert occurrences[0]["state"] == "succeeded" + assert occurrences[0]["trigger"] == "manual" + assert occurrences[0]["runId"], occurrences[0] + + page.get_by_role("button", name="删除", exact=True).click() + dialog = page.get_by_role("alertdialog", name=f"删除定时任务「{TASK_NAME_EDITED}」?") + expect(dialog).to_be_visible() + dialog.get_by_role("button", name="删除任务", exact=True).click() + expect(page.get_by_text("该 Agent 还没有定时任务", exact=True)).to_be_visible() + assert _json(base_url, "/api/v1/schedules")["items"] == [] + # Deleting a definition does not erase its audit history. + retained = _json(base_url, f"/api/v1/schedules/{task_id}/occurrences")["items"] + assert [item["state"] for item in retained] == ["succeeded"] + + # Codex follow-up is also a browser path. The second occurrence must resume + # the native thread and its terminal must cross the real SessionEvent SSE. + page.get_by_role("button", name="新建任务", exact=True).click() + form = page.locator(".automation-form") + expect(form).to_be_visible() + form.locator("label", has_text="Agent").locator("select").select_option(AGENT_ID) + form.get_by_placeholder("例如:工作日销售日报").fill(CONTINUE_TASK_NAME) + form.get_by_placeholder("例如:生成昨日销售摘要并列出异常").fill("继续生成销售跟进摘要") + form.locator("label", has_text="触发方式").locator("select").select_option("interval") + form.locator("label", has_text="间隔(秒)").locator("input").fill("3600") + form.locator("label", has_text="会话").locator("select").select_option("continue_session") + form.get_by_placeholder("选择或粘贴可恢复的本地 Session").fill(CONTINUE_SESSION_ID) + form.get_by_role("button", name="创建任务", exact=True).click() + continue_row = page.get_by_role("row", name=f"查看定时任务 {CONTINUE_TASK_NAME} 的详情") + expect(continue_row).to_be_visible() + continue_task = _json(base_url, "/api/v1/schedules")["items"][0] + continue_task_id = continue_task["taskId"] + continue_row.click() + + page.locator(".automation-detail").get_by_role("button", name="立即运行", exact=True).click() + first_followup = None + for _ in range(100): + values = _json( + base_url, + f"/api/v1/schedules/{continue_task_id}/occurrences", + )["items"] + if len(values) == 1 and values[0]["state"] in { + "succeeded", + "failed", + "cancelled", + "skipped", + }: + first_followup = values[0] + break + time.sleep(0.05) + assert first_followup is not None + assert first_followup["state"] == "succeeded", first_followup + + replay = _json( + base_url, + f"/api/v1/sessions/{CONTINUE_SESSION_ID}/events?limit=500", + ) + after_seq = replay["page"]["latestSeqId"] + page.reload(wait_until="domcontentloaded") + page.get_by_role("tab", name="自动化", exact=True).click() + page.get_by_role("row", name=f"查看定时任务 {CONTINUE_TASK_NAME} 的详情").click() + _start_browser_sse(page, CONTINUE_SESSION_ID, after_seq) + page.locator(".automation-detail").get_by_role("button", name="立即运行", exact=True).click() + + continued = None + for _ in range(100): + values = _json( + base_url, + f"/api/v1/schedules/{continue_task_id}/occurrences", + )["items"] + if len(values) == 2 and all( + item["state"] in {"succeeded", "failed", "cancelled", "skipped"} for item in values + ): + continued = values + break + time.sleep(0.05) + assert continued is not None + assert [item["state"] for item in continued] == ["succeeded", "succeeded"] + assert {item["sessionId"] for item in continued} == {CONTINUE_SESSION_ID} + assert len({item["runId"] for item in continued}) == 2 + sse = page.evaluate("() => window.__schedulerSseResult") + assert sse["contentType"].startswith("text/event-stream"), sse + assert '"type":"run.completed"' in sse["text"], sse + + assert api_calls.count(("POST", f"/api/v1/agents/{AGENT_ID}/schedules", 201)) == 2 + assert api_calls.count(("PUT", f"/api/v1/agents/{AGENT_ID}/schedules/{task_id}", 200)) == 3 + assert ("POST", f"/api/v1/agents/{AGENT_ID}/schedules/{task_id}:run", 202) in api_calls + assert ("DELETE", f"/api/v1/agents/{AGENT_ID}/schedules/{task_id}", 204) in api_calls + assert ( + api_calls.count( + ("POST", f"/api/v1/agents/{AGENT_ID}/schedules/{continue_task_id}:run", 202) + ) + == 2 + ) + return CONTINUE_SESSION_ID, continued[0]["runId"] + + +def main() -> None: + with TemporaryDirectory(prefix="ksadk-scheduler-browser-") as temp_dir: + workspace = Path(temp_dir) + with DeterministicResponsesStub() as responses: + client_factory = RealCodexFactory(responses_url=responses.base_url) + codex_config = CodexConfig(env={"CODEX_HOME": str(workspace / "codex-home")}) + registry = RuntimeRegistry() + registry.register( + "codex", + lambda _context: CodexRuntimeAdapter(client_factory(codex_config)), + ) + service = StudioService( + workspace, + codex_runtime_inspector=_runtime_inspector, + runtime_executor=RuntimeExecutor(registry), + ) + build_id = _prepare_agent(service) + + with ( + studio_server(workspace, service=service) as base_url, + sync_playwright() as playwright, + ): + browser = playwright.chromium.launch(headless=True) + try: + page = browser.new_page(viewport={"width": 1440, "height": 960}) + page_errors: list[str] = [] + page.on("pageerror", lambda error: page_errors.append(str(error))) + session_id, run_id = _assert_scheduler_lifecycle( + page, + base_url, + build_id=build_id, + ) + assert page_errors == [], f"Uncaught React page errors: {page_errors}" + finally: + browser.close() + + requests = responses.requests() + assert len(requests) == 3, requests + native_thread_ids = [ + request.payload["client_metadata"]["thread_id"] for request in requests + ] + assert native_thread_ids[0] != native_thread_ids[1] + assert native_thread_ids[1] == native_thread_ids[2] + assert len(client_factory.processes) == 3 + assert all(process.poll() is not None for process in client_factory.processes) + + events = asyncio.run( + RuntimeEventStore(service.session_service).list(session_id, run_id=run_id) + ) + assert events[-1].event_type == "run.completed" + + +if __name__ == "__main__": + main() diff --git a/tests/studio/e2e/scheduler_fault_matrix_browser_e2e.py b/tests/studio/e2e/scheduler_fault_matrix_browser_e2e.py new file mode 100644 index 00000000..faf94fef --- /dev/null +++ b/tests/studio/e2e/scheduler_fault_matrix_browser_e2e.py @@ -0,0 +1,357 @@ +"""Browser RC gate for Scheduler Lite failure and recovery diagnostics. + +The fixture replaces only the external execution boundary. Production +``SchedulerEngine`` and ``SchedulerSQLiteStore`` create every occurrence. A +real Chromium page then proves failure, timeout, restart recovery, misfire and +concurrency facts are visible, and reloads them after both a page refresh and +a Studio process restart. +""" + +from __future__ import annotations + +import asyncio +import os +from datetime import datetime, timedelta, timezone +from pathlib import Path +from tempfile import TemporaryDirectory +from unittest.mock import patch +from uuid import uuid4 + +from playwright.sync_api import Page, expect, sync_playwright +from studio_e2e_support import studio_server + +from ksadk.kernel.contracts import SessionEventEnvelope +from ksadk.kernel.ingress import clear_agent_kernel +from ksadk.scheduler import SchedulerEngine, SchedulerSQLiteStore +from ksadk.scheduler.contracts import ( + ScheduleCommandTemplate, + ScheduledTask, + ScheduledTaskTarget, + ScheduleSpec, +) +from ksadk.scheduler.engine import SchedulerDispatchError, SchedulerDispatchReceipt +from ksadk.studio.service import StudioService + +AGENT_ID = "scheduler-fault-agent" + + +def _event( + occurrence, + *, + seq: int, + event_type: str, + run_id: str, + causation_id: str | None = None, + payload: dict | None = None, +) -> SessionEventEnvelope: + family = "control" if event_type.startswith("control.") else "runtime" + return SessionEventEnvelope( + event_id=uuid4(), + session_id=occurrence.session_id, + seq=seq, + timestamp=datetime.now(timezone.utc).isoformat(), + family=family, + family_version=1 if family == "control" else 2, + event_type=event_type, + run_id=run_id, + causation_id=causation_id, + payload=payload or {}, + ) + + +class _FaultMatrixDispatcher: + """Deterministic external boundary with canonical runtime event replay.""" + + def __init__(self, *, recover_restart: bool = False) -> None: + self.recover_restart = recover_restart + self.replayed: set[str] = set() + + async def dispatch(self, task: ScheduledTask, occurrence) -> SchedulerDispatchReceipt: + if task.task_id == "failure-case": + raise SchedulerDispatchError( + "PLUGIN_EXECUTION_FAILED", + "provider process exited with status 17", + ) + return SchedulerDispatchReceipt( + f"command-{task.task_id}-{occurrence.occurrence_id[-6:]}", + accepted_seq=10, + ) + + async def read_events(self, occurrence): + if occurrence.occurrence_id in self.replayed: + return () + if occurrence.task_id == "timeout-case": + run_id = "run-timeout" + terminal_type = "run.failed" + terminal_payload = { + "error": { + "code": "RUNTIME_TIMEOUT", + "message": "execution exceeded the 30 second deadline", + } + } + elif occurrence.task_id == "restart-case" and self.recover_restart: + run_id = "run-after-restart" + terminal_type = "run.completed" + terminal_payload = {} + else: + return () + self.replayed.add(occurrence.occurrence_id) + return ( + ( + 11, + _event( + occurrence, + seq=11, + event_type="control.run_transition", + run_id=run_id, + causation_id=occurrence.command_id, + payload={"state": "running", "run_id": run_id}, + ), + ), + ( + 12, + _event( + occurrence, + seq=12, + event_type=terminal_type, + run_id=run_id, + payload=terminal_payload, + ), + ), + ) + + +def _task( + task_id: str, + display_name: str, + *, + schedule: ScheduleSpec, + next_run_at: datetime, +) -> ScheduledTask: + return ScheduledTask( + task_id=task_id, + display_name=display_name, + target=ScheduledTaskTarget( + agent_id=AGENT_ID, + tenant_id="local", + agent_instance_id="scheduler-fault-instance", + agent_version_ref="build_scheduler_fault_matrix", + authorization_ref="credential://scheduler-local", + ), + schedule=schedule, + command=ScheduleCommandTemplate(payload={"content": f"execute {display_name}"}), + next_run_at=next_run_at, + created_at=next_run_at, + updated_at=next_run_at, + ) + + +async def _prepare_matrix(workspace: Path) -> None: + store = SchedulerSQLiteStore(workspace / ".agentkit/scheduler/scheduler.sqlite3") + base = datetime.now(timezone.utc) - timedelta(minutes=10) + dispatcher = _FaultMatrixDispatcher() + + failure_at = base + store.put_task( + _task( + "failure-case", + "故障矩阵 · 提交失败", + schedule=ScheduleSpec(kind="once", at=failure_at, misfire_policy="run_once"), + next_run_at=failure_at, + ) + ) + failure = await SchedulerEngine( + store, + dispatcher, + owner_id="fault-matrix", + clock=lambda: failure_at, + ).tick() + assert [(item.state, item.error_code) for item in failure] == [ + ("failed", "PLUGIN_EXECUTION_FAILED") + ] + + timeout_at = base + timedelta(seconds=1) + store.put_task( + _task( + "timeout-case", + "故障矩阵 · 执行超时", + schedule=ScheduleSpec(kind="once", at=timeout_at, misfire_policy="run_once"), + next_run_at=timeout_at, + ) + ) + timeout_engine = SchedulerEngine( + store, + dispatcher, + owner_id="fault-matrix", + clock=lambda: timeout_at, + ) + assert (await timeout_engine.tick())[0].state == "accepted" + timeout = await timeout_engine.reconcile() + timeout_facts = [(item.state, item.error_code) for item in timeout] + assert timeout_facts == [("failed", "RUNTIME_TIMEOUT")], timeout_facts + + restart_at = base + timedelta(seconds=2) + store.put_task( + _task( + "restart-case", + "故障矩阵 · 重启恢复", + schedule=ScheduleSpec(kind="once", at=restart_at, misfire_policy="run_once"), + next_run_at=restart_at, + ) + ) + first_process = SchedulerEngine( + store, + dispatcher, + owner_id="fault-matrix", + clock=lambda: restart_at, + ) + assert (await first_process.tick())[0].state == "accepted" + restarted = SchedulerEngine( + store, + _FaultMatrixDispatcher(recover_restart=True), + clock=lambda: restart_at + timedelta(seconds=1), + ) + recovered = await restarted.reconcile() + assert [(item.state, item.run_id) for item in recovered] == [ + ("succeeded", "run-after-restart") + ] + + concurrency_at = base + timedelta(seconds=3) + concurrency_task = _task( + "concurrency-case", + "故障矩阵 · 并发禁止", + schedule=ScheduleSpec( + kind="interval", + every_seconds=60, + anchor_at=concurrency_at, + misfire_policy="run_once", + ), + next_run_at=concurrency_at, + ) + store.put_task(concurrency_task) + concurrency_engine = SchedulerEngine( + store, + dispatcher, + owner_id="fault-matrix", + clock=lambda: concurrency_at, + ) + assert (await concurrency_engine.tick())[0].state == "accepted" + concurrency_engine.clock = lambda: concurrency_at + timedelta(seconds=60) + skipped = await concurrency_engine.tick() + assert [(item.state, item.detail) for item in skipped] == [ + ("skipped", "concurrency_forbid_active_occurrence") + ] + current, generation = store.get_task("concurrency-case") or (None, None) + assert current is not None and generation is not None + store.put_task(current.model_copy(update={"enabled": False}), generation=generation) + + misfire_at = base + timedelta(seconds=4) + store.put_task( + _task( + "misfire-case", + "故障矩阵 · 错过调度", + schedule=ScheduleSpec(kind="once", at=misfire_at, misfire_policy="skip"), + next_run_at=misfire_at, + ) + ) + misfire = await SchedulerEngine( + store, + dispatcher, + owner_id="fault-matrix", + clock=lambda: misfire_at + timedelta(hours=2), + ).tick() + assert [(item.state, item.detail) for item in misfire] == [ + ("skipped", "misfire_skipped") + ] + + +def _assert_fault_matrix(page: Page, base_url: str) -> None: + # Studio deliberately performs optional capability discovery during startup. + # A missing/slow plugin host must not make Scheduler readiness depend on the + # browser reaching a global network-idle state; the page's own heading and + # durable history are the product-level readiness signals. + page.goto(f"{base_url}/#/automations", wait_until="domcontentloaded") + expect(page.get_by_role("heading", name="自动化 / 定时任务")).to_be_visible() + page.get_by_role("tab", name="执行记录", exact=True).click() + + history = page.locator(".automation-history") + expect(history.locator(".automation-occurrence-card")).to_have_count(6) + + failure = history.locator(".automation-occurrence-card").filter( + has_text="故障矩阵 · 提交失败" + ) + expect(failure).to_contain_text("失败") + expect(failure).to_contain_text("插件执行失败 · PLUGIN_EXECUTION_FAILED") + expect(failure).to_contain_text("provider process exited with status 17") + + timeout = history.locator(".automation-occurrence-card").filter( + has_text="故障矩阵 · 执行超时" + ) + expect(timeout).to_contain_text("失败") + expect(timeout).to_contain_text("执行超时 · RUNTIME_TIMEOUT") + expect(timeout).to_contain_text("execution exceeded the 30 second deadline") + + recovery = history.locator(".automation-occurrence-card").filter( + has_text="故障矩阵 · 重启恢复" + ) + expect(recovery).to_contain_text("成功") + expect(recovery).to_contain_text("运行时已确认完成") + expect(recovery.locator(".automation-timeline li")).to_have_count(4) + expect(recovery.locator(".automation-timeline")).to_contain_text("已接收") + expect(recovery.locator(".automation-timeline")).to_contain_text("运行中") + + misfire = history.locator(".automation-occurrence-card").filter( + has_text="故障矩阵 · 错过调度" + ) + expect(misfire).to_contain_text("已跳过") + expect(misfire).to_contain_text("错过计划时间,已按策略跳过") + + concurrency = history.locator(".automation-occurrence-card").filter( + has_text="已有执行未结束,本次已跳过" + ) + expect(concurrency).to_have_count(1) + expect(concurrency).to_contain_text("故障矩阵 · 并发禁止") + expect(concurrency).to_contain_text("已跳过") + + # A normal page refresh must reconstruct all facts from HTTP + SQLite. + page.reload(wait_until="domcontentloaded") + page.get_by_role("tab", name="执行记录", exact=True).click() + expect(page.locator(".automation-occurrence-card")).to_have_count(6) + expect(page.get_by_text("执行超时 · RUNTIME_TIMEOUT", exact=True)).to_be_visible() + + +def main() -> None: + with TemporaryDirectory(prefix="ksadk-scheduler-fault-browser-") as temp_dir: + workspace = Path(temp_dir) + asyncio.run(_prepare_matrix(workspace)) + clear_agent_kernel() + + with ( + patch.dict( + os.environ, + {"KSADK_AGENT_KERNEL": "0", "AGENT_KERNEL_ENABLED": "0"}, + ), + sync_playwright() as playwright, + ): + browser = playwright.chromium.launch(headless=True) + try: + page = browser.new_page(viewport={"width": 1440, "height": 960}) + page_errors: list[str] = [] + page.on("pageerror", lambda error: page_errors.append(str(error))) + + with studio_server(workspace, service=StudioService(workspace)) as base_url: + _assert_fault_matrix(page, base_url) + + # Recreate the complete Studio service over the same workspace. + # The second browser pass is evidence of process-level replay, + # not retained React state or a fixture HTTP response. + with studio_server(workspace, service=StudioService(workspace)) as base_url: + _assert_fault_matrix(page, base_url) + + assert page_errors == [], f"Uncaught React page errors: {page_errors}" + finally: + browser.close() + + +if __name__ == "__main__": + main() diff --git a/tests/studio/e2e/scheduler_harness_browser_e2e.py b/tests/studio/e2e/scheduler_harness_browser_e2e.py new file mode 100644 index 00000000..9685cc7e --- /dev/null +++ b/tests/studio/e2e/scheduler_harness_browser_e2e.py @@ -0,0 +1,328 @@ +"""Real browser vertical for Scheduler Lite and the built-in KsADK Harness. + +The browser creates and runs both continuity modes through production Studio +HTTP routes. AgentControl, the Kernel worker, HarnessRuntimeAdapter and the +canonical SessionEvent store and production model client are real. Only the +external model endpoint is replaced by a deterministic local HTTP service, so +an ``accepted`` receipt can never manufacture the terminal occurrence asserted +below. +""" + +from __future__ import annotations + +import json +import os +import shutil +import time +from pathlib import Path +from tempfile import TemporaryDirectory +from unittest.mock import patch +from urllib.request import Request, urlopen + +from playwright.sync_api import Page, expect, sync_playwright +from studio_e2e_support import studio_server + +from ksadk.plugins.providers.harness_dsh import shipped_harness_dsh_bundle +from ksadk.studio.contracts import AgentSpec +from ksadk.studio.service import StudioService +from tests.e2e.chat_completions_stub import DeterministicChatCompletionsStub + +AGENT_ID = "scheduler-harness-agent" +AGENT_NAME = "Scheduler Harness Agent" +CONTINUE_SESSION_ID = "scheduler-harness-continuation" + + +def _managed_harness_profile(workspace: Path) -> dict[str, str]: + """Install the wheel-owned Bundle behind a deterministic DSH CLI seam.""" + + home = workspace / ".agentkit" / "dsh-home" + profile = home / "profiles" / "studio" + installed = profile / "node_modules" / "@kingsoftcloud" / "ksadk-harness-provider" + installed.parent.mkdir(parents=True) + shutil.copytree(shipped_harness_dsh_bundle().root, installed) + (profile / "package.json").write_text( + json.dumps( + { + "dependencies": {"@kingsoftcloud/ksadk-harness-provider": "1.0.0"}, + "dsh": { + "profile": { + "bundles": ["@kingsoftcloud/ksadk-harness-provider"] + } + }, + } + ), + encoding="utf-8", + ) + executable = workspace / ".agentkit" / "dsh-fixture" + executable.write_text( + "#!/bin/sh\n" + 'case "$*" in\n' + " *--version*) echo 0.1.1-rc.2;;\n" + " *--dump-config*) echo 'profile: studio; harness: 1.0.0';;\n" + " *) exit 2;;\n" + "esac\n", + encoding="utf-8", + ) + executable.chmod(0o700) + return { + "KSADK_DSH_HOME": str(home), + "KSADK_DSH_PROFILE": "studio", + "KSADK_DSH_BIN": str(executable), + } + + +def _json(base_url: str, path: str) -> dict: + request = Request(f"{base_url}{path}", headers={"Accept": "application/json"}) + with urlopen(request) as response: + raw = response.read() + assert response.status < 300, raw.decode("utf-8") + return json.loads(raw) if raw else {} + + +def _agent_spec(*, endpoint_url: str) -> AgentSpec: + return AgentSpec.model_validate( + { + "description": "Scheduler Harness browser fixture", + "runtime": {"type": "harness"}, + "instructions": { + "system": "You are the real built-in Harness scheduler fixture.", + "task": "Retain prior scheduled turns in one continued session.", + }, + "model": { + "provider": "openai-compatible", + "model": "fixture-model", + "endpointUrl": endpoint_url, + "credentialRef": "env://MODEL_API_KEY", + "parameters": {"temperature": 0.2, "maxTokens": 128}, + }, + "capabilities": {"skills": [], "mcpServers": [], "tools": []}, + "execution": { + "strategy": "direct", + "maxSteps": 4, + "timeoutSeconds": 30, + "retry": {"maxAttempts": 1, "backoffSeconds": 0}, + }, + "context": { + "maxInputTokens": 4096, + "reserveOutputTokens": 512, + "compaction": {"enabled": True, "thresholdRatio": 0.8}, + }, + "security": { + "toolPolicy": "deny-by-default", + "allowedPermissions": ["process:host-user"], + "network": { + "mode": "restricted", + "allowedHosts": ["127.0.0.1"], + "allowPrivateNetwork": True, + }, + }, + } + ) + + +def _create_task( + page: Page, + base_url: str, + *, + name: str, + continuity: str, + session_id: str = "", +) -> dict: + global_create = page.get_by_role("button", name="新建定时任务", exact=True) + if global_create.is_visible(): + global_create.click() + else: + page.get_by_role("button", name="新建任务", exact=True).click() + form = page.locator(".automation-form") + expect(form).to_be_visible() + form.locator("label", has_text="Agent").locator("select").select_option(AGENT_ID) + form.get_by_placeholder("例如:工作日销售日报").fill(name) + form.get_by_placeholder("例如:生成昨日销售摘要并列出异常").fill(f"执行 {name}") + form.locator("label", has_text="触发方式").locator("select").select_option("interval") + form.locator("label", has_text="间隔(秒)").locator("input").fill("3600") + form.locator("label", has_text="会话").locator("select").select_option(continuity) + if continuity == "continue_session": + form.get_by_placeholder("选择或粘贴可恢复的本地 Session").fill(session_id) + form.get_by_role("button", name="创建任务", exact=True).click() + row = page.get_by_role("row", name=f"查看定时任务 {name} 的详情") + expect(row).to_be_visible() + task = next( + item + for item in _json(base_url, "/api/v1/schedules")["items"] + if item["displayName"] == name + ) + row.click() + return task + + +def _wait_terminal(base_url: str, task_id: str, *, expected_count: int) -> list[dict]: + terminal = {"succeeded", "failed", "cancelled", "skipped"} + items: list[dict] = [] + for _ in range(150): + items = _json(base_url, f"/api/v1/schedules/{task_id}/occurrences")["items"] + if len(items) >= expected_count and all(item["state"] in terminal for item in items): + return items + time.sleep(0.05) + events = ( + _json(base_url, f"/api/v1/sessions/{items[0]['sessionId']}/events?limit=500") + if items + else {} + ) + raise AssertionError( + f"task {task_id} did not produce {expected_count} terminal occurrences: " + f"{items!r}; events={events!r}" + ) + + +def _start_browser_sse(page: Page, session_id: str, after_seq: int) -> None: + page.evaluate( + """ + ({sessionId, afterSeq}) => { + window.__schedulerSseResult = (async () => { + const controller = new AbortController(); + const timer = setTimeout(() => controller.abort(), 8000); + try { + const response = await fetch( + `/api/v1/sessions/${encodeURIComponent(sessionId)}/events/stream?afterSeqId=${afterSeq}`, + { signal: controller.signal, headers: { Accept: "text/event-stream" } }, + ); + if (!response.ok || !response.body) throw new Error(`SSE ${response.status}`); + const reader = response.body.getReader(); + const decoder = new TextDecoder(); + let text = ""; + while (true) { + const { value, done } = await reader.read(); + if (done) break; + text += decoder.decode(value, { stream: true }); + if (text.includes('"type":"run.completed"')) { + controller.abort(); + return { contentType: response.headers.get("content-type") || "", text }; + } + } + throw new Error("SSE ended without run.completed"); + } finally { + clearTimeout(timer); + } + })(); + } + """, + {"sessionId": session_id, "afterSeq": after_seq}, + ) + + +def _assert_harness_vertical( + page: Page, + base_url: str, + model: DeterministicChatCompletionsStub, +) -> None: + page.goto(f"{base_url}/#/automations", wait_until="networkidle") + expect(page.get_by_role("heading", name="自动化 / 定时任务")).to_be_visible() + expect(page.get_by_text("本地调度运行中", exact=True)).to_be_visible() + + new_task = _create_task( + page, + base_url, + name="Harness 新会话", + continuity="new_session", + ) + page.locator(".automation-detail").get_by_role("button", name="立即运行", exact=True).click() + new_occurrences = _wait_terminal(base_url, new_task["taskId"], expected_count=1) + assert new_occurrences[0]["state"] == "succeeded", new_occurrences[0] + assert new_occurrences[0]["sessionId"].startswith("sched-occ_") + assert new_occurrences[0]["runId"] + page.reload(wait_until="networkidle") + page.get_by_role("row", name="查看定时任务 Harness 新会话 的详情").click() + page.get_by_role("button", name="删除", exact=True).click() + page.get_by_role("alertdialog", name="删除定时任务「Harness 新会话」?").get_by_role( + "button", name="删除任务", exact=True + ).click() + expect(page.get_by_text("还没有定时任务", exact=True)).to_be_visible() + + continue_task = _create_task( + page, + base_url, + name="Harness 继续会话", + continuity="continue_session", + session_id=CONTINUE_SESSION_ID, + ) + page.locator(".automation-detail").get_by_role("button", name="立即运行", exact=True).click() + first_pair = _wait_terminal(base_url, continue_task["taskId"], expected_count=1) + assert first_pair[0]["state"] == "succeeded", first_pair[0] + first_run_id = first_pair[0]["runId"] + + replay = _json(base_url, f"/api/v1/sessions/{CONTINUE_SESSION_ID}/events?limit=500") + after_seq = replay["page"]["latestSeqId"] + assert after_seq > 0 + page.reload(wait_until="networkidle") + page.get_by_role("row", name="查看定时任务 Harness 继续会话 的详情").click() + _start_browser_sse(page, CONTINUE_SESSION_ID, after_seq) + page.locator(".automation-detail").get_by_role("button", name="立即运行", exact=True).click() + continued = _wait_terminal(base_url, continue_task["taskId"], expected_count=2) + assert [item["state"] for item in continued] == ["succeeded", "succeeded"] + assert {item["sessionId"] for item in continued} == {CONTINUE_SESSION_ID} + assert first_run_id != continued[0]["runId"] + + sse = page.evaluate("() => window.__schedulerSseResult") + assert sse["contentType"].startswith("text/event-stream"), sse + assert '"type":"run.completed"' in sse["text"], sse + + # New-session plus two turns in one continued Session reached the real + # production model client. The second continued turn receives durable history. + requests = model.requests() + assert len(requests) == 3 + assert all(item.path == "/v1/chat/completions" for item in requests) + assert all(item.authorization == "Bearer harness-fixture-key" for item in requests) + assert len(requests[0].payload["messages"]) == 2 + assert requests[2].payload["messages"] == [ + { + "role": "system", + "content": ( + "You are the real built-in Harness scheduler fixture.\n\n" + "Retain prior scheduled turns in one continued session." + ), + }, + {"role": "user", "content": "执行 Harness 继续会话"}, + {"role": "assistant", "content": "scheduled harness result 2"}, + {"role": "user", "content": "执行 Harness 继续会话"}, + ], requests + + +def main() -> None: + with TemporaryDirectory(prefix="ksadk-scheduler-harness-browser-") as temp_dir: + workspace = Path(temp_dir) + environment = _managed_harness_profile(workspace) + with DeterministicChatCompletionsStub() as model: + runtime_environment = { + **environment, + "KSADK_AGENT_KERNEL": "1", + "MODEL_API_KEY": "harness-fixture-key", + } + with patch.dict(os.environ, runtime_environment): + service = StudioService(workspace) + spec = _agent_spec(endpoint_url=model.endpoint_url) + service.create_studio_agent( + agent_id=AGENT_ID, + name=AGENT_NAME, + description="Scheduler Harness browser fixture", + spec=spec, + runtime=spec.runtime, + ) + + with ( + patch.dict(os.environ, runtime_environment), + studio_server(workspace, service=service) as base_url, + sync_playwright() as playwright, + ): + browser = playwright.chromium.launch(headless=True) + try: + page = browser.new_page(viewport={"width": 1440, "height": 960}) + page_errors: list[str] = [] + page.on("pageerror", lambda error: page_errors.append(str(error))) + _assert_harness_vertical(page, base_url, model) + assert page_errors == [], f"Uncaught React page errors: {page_errors}" + finally: + browser.close() + + +if __name__ == "__main__": + main() diff --git a/tests/studio/e2e/studio_browser_smoke.py b/tests/studio/e2e/studio_browser_smoke.py index 58e1f813..926ce4de 100644 --- a/tests/studio/e2e/studio_browser_smoke.py +++ b/tests/studio/e2e/studio_browser_smoke.py @@ -86,11 +86,12 @@ def _assert_core_navigation(page: Page) -> None: "部署", "可观测", "运行资源", - "任务编排", + "自动化", ): page.get_by_role("button", name=label, exact=True).click() - expect(page.get_by_role("banner", name="当前页面").get_by_text(label, exact=True)).to_be_visible() - page.wait_for_load_state("networkidle") + expect( + page.get_by_role("banner", name="当前页面").get_by_text(label, exact=True) + ).to_be_visible() def main() -> None: @@ -119,7 +120,8 @@ def proxy_studio_api(route) -> None: if frontend_url != base_url: page.route("**/api/v1/**", proxy_studio_api) page.route("**/agentengine/api/v1/**", proxy_studio_api) - page.goto(frontend_url, wait_until="networkidle") + page.goto(frontend_url, wait_until="domcontentloaded") + expect(page.get_by_role("banner", name="当前页面")).to_be_visible() _assert_multi_import_and_partial_failure(page, workspace) _assert_core_navigation(page) assert page_errors == [], f"Uncaught React page errors: {page_errors}" diff --git a/tests/studio/e2e/studio_e2e_support.py b/tests/studio/e2e/studio_e2e_support.py index 2feec965..4b6b15c0 100644 --- a/tests/studio/e2e/studio_e2e_support.py +++ b/tests/studio/e2e/studio_e2e_support.py @@ -11,6 +11,7 @@ import uvicorn from ksadk.studio.api import create_studio_app +from ksadk.studio.service import StudioService def write_skill(root: Path, name: str, body: str = "Follow the instructions.") -> Path: @@ -35,9 +36,13 @@ def free_port() -> int: @contextmanager -def studio_server(workspace: Path) -> Iterator[str]: +def studio_server( + workspace: Path, + *, + service: StudioService | None = None, +) -> Iterator[str]: port = free_port() - app = create_studio_app(workspace, security_enabled=False) + app = create_studio_app(workspace, service=service, security_enabled=False) server = uvicorn.Server(uvicorn.Config(app, host="127.0.0.1", port=port, log_level="warning")) thread = threading.Thread(target=server.run, daemon=True) thread.start() diff --git a/tests/studio/e2e/studio_responsive_smoke.py b/tests/studio/e2e/studio_responsive_smoke.py index 5fe7cb56..75c3da98 100644 --- a/tests/studio/e2e/studio_responsive_smoke.py +++ b/tests/studio/e2e/studio_responsive_smoke.py @@ -10,6 +10,8 @@ from playwright.sync_api import Page, expect, sync_playwright from studio_e2e_support import studio_server +from ksadk.studio.service import StudioService + VIEWPORTS = ( (768, 768), (1024, 768), @@ -28,6 +30,20 @@ def assert_no_root_overflow(page: Page) -> None: """() => ({ viewport: window.innerWidth, scrollWidth: document.documentElement.scrollWidth, + overflowing: [...document.querySelectorAll('*')] + .map(element => { + const rect = element.getBoundingClientRect(); + return { + tag: element.tagName, + className: typeof element.className === 'string' ? element.className : '', + left: Math.round(rect.left), + right: Math.round(rect.right), + width: Math.round(rect.width), + scrollWidth: element.scrollWidth, + }; + }) + .filter(item => item.right > innerWidth + 1 || item.scrollWidth > item.width + 1) + .slice(0, 12), })""" ) assert metrics["scrollWidth"] <= metrics["viewport"] + 1, metrics @@ -281,13 +297,17 @@ def assert_page_matrix(page: Page, width: int) -> None: ("工程资源", "工程资源", "data", "Skill"), ("可观测", "可观测", "workbench", None), ("运行资源", "运行资源", "document", None), - ("任务编排", "任务编排", "document", None), + ("自动化", "自动化", "document", None), ) for nav_label, page_title, layout, tab_label in pages: navigation.get_by_role("button", name=nav_label, exact=True).click() if tab_label is not None: page.get_by_role("tab").filter(has_text=tab_label).click() - expect(page.get_by_role("banner", name="当前页面").get_by_text(page_title, exact=True)).to_be_visible() + expect( + page.get_by_role("banner", name="当前页面").get_by_text( + page_title, exact=True + ) + ).to_be_visible() page_root = page.locator("#mainContent > div:not(.chat-wrap) > [data-layout]").first expect(page_root).to_have_attribute("data-layout", layout) try: @@ -318,7 +338,19 @@ def assert_page_matrix(page: Page, width: int) -> None: def main() -> None: with TemporaryDirectory(prefix="ksadk-responsive-studio-") as temp_dir: - with studio_server(Path(temp_dir)) as base_url, sync_playwright() as playwright: + workspace = Path(temp_dir) + service = StudioService( + workspace, + codex_runtime_inspector=lambda _runtime: ( + "0.8.2", + "0.147.0", + "codex-cli 0.147.0", + ), + ) + with ( + studio_server(workspace, service=service) as base_url, + sync_playwright() as playwright, + ): browser = playwright.chromium.launch(headless=True) try: context = browser.new_context( @@ -659,6 +691,7 @@ def main() -> None: expect(context_tooltip).to_be_visible() expect(context_tooltip).to_contain_text("上下文窗口") workbench_page.mouse.move(0, 0) + expect(context_tooltip).to_be_hidden() context_ring.focus() expect(context_tooltip).to_be_visible() diff --git a/tests/studio/runtime_adapter_fixtures.py b/tests/studio/runtime_adapter_fixtures.py new file mode 100644 index 00000000..4be03e5e --- /dev/null +++ b/tests/studio/runtime_adapter_fixtures.py @@ -0,0 +1,241 @@ +from __future__ import annotations + +from collections.abc import AsyncIterator, Callable +from typing import Any + +from ksadk.events.canonical import ( + ContentSnapshot, + ItemCompleted, + ItemStarted, + ItemUpdated, + OutputRef, + RunCompleted, + RunStarted, + RuntimeEvent, + SourceRef, +) +from ksadk.events.content import TextContent, ToolCallContent, ToolResultContent +from ksadk.runtime import ( + BaseRuntime, + CancelResult, + CheckpointCapability, + CheckpointDescriptor, + ResumePayload, + ResumeTarget, + RunHandle, + RuntimeAdapter, + RuntimeExecutor, + RuntimeRegistry, + StartRequest, +) + +EventStreamFactory = Callable[[StartRequest, RunHandle], AsyncIterator[RuntimeEvent]] + + +class _FixtureRuntime(BaseRuntime): + def __init__(self, runtime_type: str) -> None: + self.runtime_type = runtime_type + + def native_capabilities(self) -> dict[str, Any]: + return {"Framework": self.runtime_type, "cancel": "thread"} + + +class RecordingRuntimeAdapter(RuntimeAdapter): + def __init__(self, fixture: RuntimeFixture, runtime_type: str) -> None: + super().__init__(_FixtureRuntime(runtime_type)) + self.fixture = fixture + self.runtime_type = runtime_type + self.requests: dict[str, StartRequest] = {} + + async def start(self, request: StartRequest) -> RunHandle: + self.fixture.start_requests.append(request) + run_id = f"fixture-{self.runtime_type}-{len(self.fixture.start_requests)}" + self.requests[run_id] = request + return RunHandle( + run_id=run_id, + session_id=request.session_id, + runtime_type=self.runtime_type, + native_ref={"thread_id": run_id}, + ) + + def stream(self, handle: RunHandle) -> AsyncIterator[RuntimeEvent]: + return self.fixture.event_stream(self.requests[handle.run_id], handle) + + async def cancel(self, handle: RunHandle) -> CancelResult: + self.fixture.cancelled.append(handle) + return CancelResult.INTERRUPTED_ACTIVE_TURN + + async def resume( + self, + handle: RunHandle, + target: ResumeTarget, + payload: ResumePayload | None, + ) -> RunHandle: + return handle + + async def checkpoint(self, handle: RunHandle) -> CheckpointDescriptor: + return CheckpointDescriptor( + checkpoint_id=handle.run_id, + invocation_id=handle.run_id, + capability=CheckpointCapability( + supported=False, + granularity="none", + rollback_scope="none", + fork_supported=False, + durable=False, + shared_across_pods=False, + ), + ) + + async def close(self, handle: RunHandle) -> None: + self.fixture.closed.append(handle) + + +class RuntimeFixture: + def __init__( + self, + event_stream: EventStreamFactory, + *, + runtime_types: tuple[str, ...] = ("codex",), + ) -> None: + self.event_stream = event_stream + self.start_requests: list[StartRequest] = [] + self.cancelled: list[RunHandle] = [] + self.closed: list[RunHandle] = [] + self.adapters: list[RecordingRuntimeAdapter] = [] + registry = RuntimeRegistry() + for runtime_type in runtime_types: + registry.register( + runtime_type, + lambda _context, selected=runtime_type: self._create_adapter(selected), + ) + self.executor = RuntimeExecutor(registry) + + def _create_adapter(self, runtime_type: str) -> RuntimeAdapter: + adapter = RecordingRuntimeAdapter(self, runtime_type) + self.adapters.append(adapter) + return adapter + + +async def standard_codex_events( + request: StartRequest, + handle: RunHandle, +) -> AsyncIterator[RuntimeEvent]: + common = { + "schema_version": 2, + "timestamp": 1.0, + "run_id": handle.run_id, + "scope_id": f"scope-{handle.run_id}", + } + # Canonical RuntimeEvent identity is session-scoped. A fixture may be + # reused for several turns in the same session, so model the real adapters + # (whose stable ids include the execution scope) instead of reusing e1-e7. + def event_id(ordinal: int) -> str: + return f"{handle.run_id}:e{ordinal}" + codex_source = SourceRef(framework="codex") + yield RunStarted( + event_id=event_id(1), + seq=1, + status="running", + source=codex_source, + **common, + ) + yield ItemUpdated( + event_id=event_id(2), + seq=2, + item_id="reasoning-1", + item_kind="reasoning", + op="append", + update=TextContent(part_id="text-0", text="读取文件"), + source=codex_source, + **common, + ) + tool_args = { + "command": "sed -n '1,80p' src/demo.py", + "cwd": str(request.config.get("cwd") or ""), + "command_actions": [{"type": "read", "path": "src/demo.py"}], + } + yield ItemStarted( + event_id=event_id(3), + seq=3, + item_id="tool-cmd-1", + item_kind="tool_call", + initial=ContentSnapshot( + parts=( + ToolCallContent( + part_id="tool-0", + call_id="cmd-1", + name="codex.command", + arguments=tool_args, + ), + ) + ), + source=codex_source, + **common, + ) + yield ItemCompleted( + event_id=event_id(4), + seq=4, + item_id="tool-cmd-1", + item_kind="tool_call", + snapshot=ContentSnapshot( + parts=( + ToolCallContent( + part_id="tool-0", + call_id="cmd-1", + name="codex.command", + arguments=tool_args, + ), + ToolResultContent( + part_id="tool-0", + call_id="cmd-1", + result={"status": "completed", "exit_code": 0, "duration_ms": 10}, + ), + ) + ), + source=codex_source, + **common, + ) + yield ItemUpdated( + event_id=event_id(5), + seq=5, + item_id="msg-1", + item_kind="message", + op="append", + update=TextContent(part_id="text-0", text="发现除零风险。"), + source=codex_source, + **common, + ) + yield ItemCompleted( + event_id=event_id(6), + seq=6, + item_id="msg-1", + item_kind="message", + snapshot=ContentSnapshot( + parts=( + TextContent( + part_id="text-0", + text="发现除零风险。请先检查空列表。", + ), + ) + ), + source=codex_source, + **common, + ) + yield RunCompleted( + event_id=event_id(7), + seq=7, + status="completed", + output_refs=( + OutputRef( + scope_id=common["scope_id"], + item_id="msg-1", + part_id="text-0", + ), + ), + source=SourceRef(framework="codex", metadata={"duration_ms": 25}), + **common, + ) + + +__all__ = ["RuntimeFixture", "standard_codex_events"] diff --git a/tests/studio/test_framework_bundle_integrity.py b/tests/studio/test_framework_bundle_integrity.py new file mode 100644 index 00000000..4afdced2 --- /dev/null +++ b/tests/studio/test_framework_bundle_integrity.py @@ -0,0 +1,251 @@ +"""Bundle 完整性校验:FrameworkRunSpecResolver 加载前必须拦截被篡改的 bundle。 + +覆盖本地 phase1 的等价场景,但入口改为 -ksadk 的 FrameworkRunSpecResolver.resolve: +manifest 自身摘要、与 Build 记录的权威摘要一致、文件清单无增删、每文件 sha256/size 匹配。 +""" + +from __future__ import annotations + +import hashlib +import json +from pathlib import Path + +import pytest + +from ksadk.studio.capabilities import compute_bundle_digest +from ksadk.studio.contracts import ( + AgentSpec, + BundleManifest, + Instructions, + ModelSpec, + NetworkPolicy, + RuntimeRef, + SecuritySpec, +) +from ksadk.studio.errors import StudioError +from ksadk.studio.framework_run import FrameworkRunSpecResolver +from ksadk.studio.service import StudioService + + +def _build_langgraph_bundle(tmp_path: Path) -> tuple[StudioService, object, Path]: + studio = StudioService(tmp_path) + draft = studio.create_studio_agent( + agent_id="graph-helper", + name="Graph Helper", + spec=AgentSpec( + runtime=RuntimeRef( + type="langgraph", + project_path="agents/graph-helper/source", + entry_point="agent.py", + agent_variable="graph", + ), + model=ModelSpec( + model="glm-5.1", + endpoint_url="https://model.example.com/v1/chat/completions", + credential_ref="env://OPENAI_API_KEY", + ), + instructions=Instructions(system="Answer with evidence."), + security=SecuritySpec(network=NetworkPolicy(allowed_hosts=["model.example.com"])), + ), + ) + build = studio.builder.build(draft) + archive = studio.workspace.resolve(build.artifact_path, must_exist=True) + bundle_root = archive.parent / "agent-bundle" + return studio, build, bundle_root + + +def _resolve(studio: StudioService, build) -> None: + FrameworkRunSpecResolver( + studio.workspace, + build_repository=studio.builds, + ).resolve(build.id) + + +def _assert_rejected(studio: StudioService, build) -> None: + with pytest.raises(StudioError) as captured: + _resolve(studio, build) + assert captured.value.code == "BUILD_ARTIFACT_INVALID" + + +def test_legacy_bundle_manifest_without_phase2_fields_remains_readable() -> None: + manifest = BundleManifest.model_validate( + { + "bundleFormat": "agentkit.bundle/v1", + "agentId": "legacy-agent", + "sourceRevision": 1, + "resolvedDigest": "sha256:legacy", + "files": [], + } + ) + + assert manifest.bundle_format == "agentkit.bundle/v1" + assert manifest.plugin_lock_digest == "" + assert manifest.composition_profile_digest is None + + +def test_legacy_v1_bundle_runs_without_phase2_sidecars(tmp_path: Path) -> None: + """A deployed v1 Code bundle must not acquire a PluginHost requirement. + + The fixture starts from a verified runnable bundle, removes the files that + Phase 2 adds, and rewrites a valid v1 manifest. The established resolver + must still select its original ADK/LangGraph launch path rather than + requiring a PluginLock, Soul source, or hosted-kernel requirement. + """ + + studio, build, bundle_root = _build_langgraph_bundle(tmp_path) + for relative in ( + "plugin-lock.json", + "hosted-kernel-requirements.json", + "provenance.json", + ): + (bundle_root / relative).unlink() + + checksums = [] + files = [] + for path in sorted( + (candidate for candidate in bundle_root.rglob("*") if candidate.is_file()), + key=lambda candidate: candidate.relative_to(bundle_root).as_posix(), + ): + relative = path.relative_to(bundle_root).as_posix() + if relative == "manifest.json": + continue + content = path.read_bytes() + checksums.append(f"{hashlib.sha256(content).hexdigest()} {relative}") + files.append( + { + "path": relative, + "sha256": f"sha256:{hashlib.sha256(content).hexdigest()}", + "size": len(content), + } + ) + # The old checksums member is a normal declared file. Update it and then + # make the manifest list reflect the exact archive membership again. + checksum_path = bundle_root / "checksums.txt" + checksum_path.write_text("\n".join(checksums) + "\n", encoding="utf-8") + files = [] + for path in sorted( + (candidate for candidate in bundle_root.rglob("*") if candidate.is_file()), + key=lambda candidate: candidate.relative_to(bundle_root).as_posix(), + ): + relative = path.relative_to(bundle_root).as_posix() + if relative == "manifest.json": + continue + content = path.read_bytes() + files.append( + { + "path": relative, + "sha256": f"sha256:{hashlib.sha256(content).hexdigest()}", + "size": len(content), + } + ) + legacy = BundleManifest( + bundle_format="agentkit.bundle/v1", + agent_id=build.agent_id, + source_revision=build.source_revision, + resolved_digest=build.resolved_digest, + files=files, + ) + legacy.bundle_digest = compute_bundle_digest(legacy) + wire = legacy.model_dump(by_alias=True, exclude_none=True) + # These values were not present in historic manifests; model defaults are + # intentionally used only while reading them back. + for field in ( + "runtimeType", + "sourceDigest", + "runtimeContract", + "pluginLockDigest", + "hostedKernelRequirementDigest", + ): + wire.pop(field, None) + (bundle_root / "manifest.json").write_text(json.dumps(wire), encoding="utf-8") + build.bundle_digest = legacy.bundle_digest + studio.builds.save(build) + + run_spec = FrameworkRunSpecResolver( + studio.workspace, + build_repository=studio.builds, + ).resolve(build.id) + + assert run_spec.launch_context.runtime_type == "langgraph" + assert run_spec.request_config["agent_system"] == "Answer with evidence." + + +def test_resolve_rejects_tampered_resolved_spec(tmp_path: Path) -> None: + studio, build, bundle_root = _build_langgraph_bundle(tmp_path) + spec_path = bundle_root / "resolved-agent-spec.json" + payload = json.loads(spec_path.read_text(encoding="utf-8")) + payload["instructions"]["system"] = "You are malicious." + spec_path.write_text(json.dumps(payload), encoding="utf-8") + + _assert_rejected(studio, build) + + +def test_resolve_rejects_tampered_bundle_file(tmp_path: Path) -> None: + studio, build, bundle_root = _build_langgraph_bundle(tmp_path) + target = bundle_root / "instructions" / "system.md" + target.write_text("tampered prompt\n", encoding="utf-8") + + _assert_rejected(studio, build) + + +def test_resolve_rejects_tampered_manifest_digest(tmp_path: Path) -> None: + studio, build, bundle_root = _build_langgraph_bundle(tmp_path) + manifest_path = bundle_root / "manifest.json" + payload = json.loads(manifest_path.read_text(encoding="utf-8")) + payload["bundleDigest"] = "sha256:" + "0" * 64 + manifest_path.write_text(json.dumps(payload), encoding="utf-8") + + _assert_rejected(studio, build) + + +def test_resolve_rejects_unexpected_extra_file(tmp_path: Path) -> None: + studio, build, bundle_root = _build_langgraph_bundle(tmp_path) + (bundle_root / "evil.txt").write_text("pwn", encoding="utf-8") + + _assert_rejected(studio, build) + + +def test_resolve_rejects_missing_declared_file(tmp_path: Path) -> None: + studio, build, bundle_root = _build_langgraph_bundle(tmp_path) + (bundle_root / "instructions" / "system.md").unlink() + + _assert_rejected(studio, build) + + +def test_resolve_accepts_untampered_bundle(tmp_path: Path) -> None: + studio, build, _bundle_root = _build_langgraph_bundle(tmp_path) + + run_spec = FrameworkRunSpecResolver( + studio.workspace, + build_repository=studio.builds, + ).resolve(build.id) + + assert run_spec.launch_context.runtime_type == "langgraph" + assert run_spec.build_id == build.id + + +def test_resolve_rejects_rebuilt_manifest_against_authority(tmp_path: Path) -> None: + # 攻击者篡改文件后重算所有 sha + bundle_digest,使 manifest 自洽、 + # 文件摘要也匹配篡改内容;但 bundle_digest 与 Build 记录的权威值不符, + # 必须被权威比对拦截——这是仅靠 manifest 自洽无法防住的场景。 + studio, build, bundle_root = _build_langgraph_bundle(tmp_path) + spec_path = bundle_root / "resolved-agent-spec.json" + manifest_path = bundle_root / "manifest.json" + + payload = json.loads(spec_path.read_text(encoding="utf-8")) + payload["instructions"]["system"] = "You are malicious." + spec_path.write_text(json.dumps(payload), encoding="utf-8") + + manifest = json.loads(manifest_path.read_text(encoding="utf-8")) + new_bytes = spec_path.read_bytes() + new_sha = f"sha256:{hashlib.sha256(new_bytes).hexdigest()}" + for entry in manifest["files"]: + if entry["path"] == "resolved-agent-spec.json": + entry["sha256"] = new_sha + entry["size"] = len(new_bytes) + manifest["bundleDigest"] = compute_bundle_digest( + BundleManifest.model_validate(manifest) + ) + manifest_path.write_text(json.dumps(manifest), encoding="utf-8") + + _assert_rejected(studio, build) diff --git a/tests/studio/test_style_system.py b/tests/studio/test_style_system.py index 0581de9d..aa7d8b21 100644 --- a/tests/studio/test_style_system.py +++ b/tests/studio/test_style_system.py @@ -126,7 +126,8 @@ def test_shared_component_css_uses_semantic_typography_tokens() -> None: assert match is None, f"{name} must use a semantic token: {match.group(0)!r}" font_shorthands = re.findall(r"(? None: @@ -225,7 +226,7 @@ def test_react_chat_composer_has_one_focus_boundary() -> None: assert ".chat-composer:focus-within {" in stylesheet -def test_react_chat_is_owned_by_studio_and_uses_asymmetric_messages() -> None: +def test_react_chat_uses_shared_protocol_and_asymmetric_messages() -> None: stylesheet = REACT_STYLESHEET.read_text(encoding="utf-8") source = CHAT_SOURCE.read_text(encoding="utf-8") package = PACKAGE.read_text(encoding="utf-8") @@ -240,7 +241,7 @@ def test_react_chat_is_owned_by_studio_and_uses_asymmetric_messages() -> None: assert "padding: 0" in assistant assert "ChatWorkspace" in source assert 'apiFetch("/v1/responses"' in source - assert "@kingsoftcloud/ksadk-web" not in package + assert '"@kingsoftcloud/ksadk-web": "0.3.3"' in package assert "@kingsoftcloud/ksadk-web" not in vite_config # 没有本地 Agent 时仍可从账号目录选择云端 Agent,不再把会话入口 # 强制重定向到创建页。 diff --git a/tests/test_check_approval_record.py b/tests/test_check_approval_record.py index ea43f9dd..abffee2d 100644 --- a/tests/test_check_approval_record.py +++ b/tests/test_check_approval_record.py @@ -129,6 +129,47 @@ def test_filled_approval_record_passes(tmp_path): assert all(check.ok for check in checks) +def test_nonempty_pending_values_do_not_count_as_approval(tmp_path): + module = _load_module() + record = tmp_path / "approval-pending.md" + record.write_text( + _approved_record("Pending final reviewed source commit") + .replace( + "- `ksadk-web`: /tmp/ksadk-web-export-candidate", + "- `ksadk-web`: Pending Trusted Publishing", + ) + .replace( + "| Maintainer | Alice | Approved | 2026-05-28 |", + "| Maintainer | Pending | Pending | Pending |", + ), + encoding="utf-8", + ) + + checks = module.validate_approval_record(record, version="0.7.0", expected_current_commit="") + + failed = {check.name for check in checks if not check.ok} + assert "publication-strategy:ksadk-python-source" in failed + assert "publication-strategy:ksadk-web-source" in failed + assert "signoff:Maintainer" in failed + + +def test_qualified_approved_decision_does_not_count_as_final_approval(tmp_path): + module = _load_module() + record = tmp_path / "approval-qualified.md" + record.write_text( + _approved_record().replace( + "| Maintainer | Alice | Approved | 2026-05-28 |", + "| Maintainer | Alice | Approved pending publication | 2026-05-28 |", + ), + encoding="utf-8", + ) + + checks = module.validate_approval_record(record, version="0.7.0", expected_current_commit="") + + failed = {check.name for check in checks if not check.ok} + assert "signoff:Maintainer" in failed + + def test_filled_record_fails_when_source_references_do_not_match_current_commit(tmp_path): module = _load_module() record = tmp_path / "approval.md" diff --git a/tests/test_config_env_registry.py b/tests/test_config_env_registry.py index 1c92e2ba..cfad6ff7 100644 --- a/tests/test_config_env_registry.py +++ b/tests/test_config_env_registry.py @@ -25,7 +25,14 @@ def test_env_registry_has_unique_sorted_names(): def test_env_registry_covers_ksadk_env_vars_in_source(): registry_names = {item.name for item in ENV_VAR_REGISTRY} - assert _source_ksadk_env_names() <= registry_names + # These are protocol/provider identifiers, not environment-variable inputs. + # The broad source scan intentionally finds their constant names too, so keep + # the exception explicit rather than documenting fictional configuration. + non_environment_symbols = { + "KSADK_DSH_CORDIS_MODULE", + "KSADK_HARNESS_AGENT_PROVIDER_PLUGIN_ID", + } + assert _source_ksadk_env_names() - non_environment_symbols <= registry_names def test_env_registry_docs_cover_registered_names(): @@ -54,7 +61,7 @@ def test_internal_env_registry_items_do_not_expand_the_public_reference(): def test_env_registry_pins_ksadk_web_static_sync_to_a_published_npm_release(): specs = {item.name: item for item in ENV_VAR_REGISTRY} - assert specs["KSADK_WEB_VERSION"].default == "0.3.2" + assert specs["KSADK_WEB_VERSION"].default == "0.3.3" assert specs["KSADK_WEB_PACKAGE"].default == "@kingsoftcloud/ksadk-web" assert specs["KSADK_WEB_RELEASE_URL"].default == "" diff --git a/tests/test_open_source_audit.py b/tests/test_open_source_audit.py index 3d6779ee..30b8e3f3 100644 --- a/tests/test_open_source_audit.py +++ b/tests/test_open_source_audit.py @@ -132,6 +132,66 @@ def test_public_repo_audit_allows_curated_environment_reference_doc(): assert result.violations == [] +def test_public_export_manifest_rejects_internal_inventory(tmp_path): + audit = _load_audit_module() + manifest = { + "schemaVersion": 1, + "generatedAt": "2026-08-31T00:00:00+00:00", + "sourceCommit": "a" * 40, + "sourceTree": "clean", + "targetRepository": "https://github.com/kingsoftcloud/ksadk-python", + "documentation": "https://kingsoftcloud.github.io/ksadk-python/", + "exportPathCount": 100, + "exportPolicy": { + "mode": "allowlist", + "schemaVersion": 1, + "sha256": "b" * 64, + }, + "excludedPaths": ["docs/internal/private-plan.md"], + "includePolicy": {"tests": ["tests/internal/test_preprod.py"]}, + } + (tmp_path / "export-manifest.json").write_text( + json.dumps(manifest), encoding="utf-8" + ) + + result = audit.audit_public_export_manifest( + tmp_path, ["export-manifest.json"] + ) + + assert result.ok is False + assert [violation.rule for violation in result.violations] == [ + "public-export-inventory-disclosure" + ] + + +def test_public_export_manifest_accepts_minimal_provenance(tmp_path): + audit = _load_audit_module() + manifest = { + "schemaVersion": 1, + "generatedAt": "2026-08-31T00:00:00+00:00", + "sourceCommit": "a" * 40, + "sourceTree": "clean", + "targetRepository": "https://github.com/kingsoftcloud/ksadk-python", + "documentation": "https://kingsoftcloud.github.io/ksadk-python/", + "exportPathCount": 100, + "exportPolicy": { + "mode": "allowlist", + "schemaVersion": 1, + "sha256": "b" * 64, + }, + } + (tmp_path / "export-manifest.json").write_text( + json.dumps(manifest), encoding="utf-8" + ) + + result = audit.audit_public_export_manifest( + tmp_path, ["export-manifest.json"] + ) + + assert result.ok is True + assert result.violations == [] + + def test_wheel_audit_blocks_hosted_ui_bundle_and_zread_snapshot(): audit = _load_audit_module() diff --git a/tests/test_public_release_positioning.py b/tests/test_public_release_positioning.py index d42fc78d..971f6089 100644 --- a/tests/test_public_release_positioning.py +++ b/tests/test_public_release_positioning.py @@ -19,6 +19,7 @@ f"{DOCS_ROOT_URL}cn/docs/framework/guides/cloud-deployment/", f"{DOCS_ROOT_URL}cn/docs/framework/guides/hosted-ui-events/", f"{DOCS_ROOT_URL}cn/docs/framework/guides/agentkit-local-studio/", + f"{DOCS_ROOT_URL}cn/docs/framework/guides/plugins-and-automations/", f"{DOCS_ROOT_URL}cn/docs/references/environment-variables/", } EN_DOC_URLS = { @@ -30,6 +31,7 @@ f"{DOCS_ROOT_URL}en/docs/framework/guides/cloud-deployment/", f"{DOCS_ROOT_URL}en/docs/framework/guides/hosted-ui-events/", f"{DOCS_ROOT_URL}en/docs/framework/guides/agentkit-local-studio/", + f"{DOCS_ROOT_URL}en/docs/framework/guides/plugins-and-automations/", f"{DOCS_ROOT_URL}en/docs/references/environment-variables/", } @@ -225,9 +227,9 @@ def test_public_metadata_uses_runtime_platform_positioning(): version_text = _read("ksadk/version.py") changelog = _read("CHANGELOG.md") - assert pyproject["project"]["version"] == "0.8.2" - assert 'VERSION = "0.8.2"' in version_text - assert "## [0.8.2] - 2026-08-26" in changelog + assert pyproject["project"]["version"] == "0.8.3" + assert 'VERSION = "0.8.3"' in version_text + assert "## [0.8.3] - Unreleased" in changelog assert "## [0.8.1] - 2026-08-10" in changelog assert "`langchain-openai` 仅随" in changelog assert "Agent Runtime Platform" in pyproject["project"]["description"] @@ -298,10 +300,10 @@ def test_pypi_publish_workflow_uses_trusted_publishing_and_bundles_ksadk_web(): assert "workflow_dispatch:" in workflow assert "publish_target:" in workflow assert "alias-only" in workflow - assert 'default: "0.3.2"' in workflow + assert 'default: "0.3.3"' in workflow assert "approved_source_commit:" in workflow assert "Reviewed source commit SHA recorded in docs/maintainer-approval-record.md" in workflow - assert "KSADK_WEB_VERSION: ${{ github.event.inputs.ksadk_web_version || '0.3.2' }}" in workflow + assert "KSADK_WEB_VERSION: ${{ github.event.inputs.ksadk_web_version || '0.3.3' }}" in workflow assert ( "KSADK_APPROVED_SOURCE_COMMIT: " "${{ github.event.inputs.approved_source_commit || " @@ -319,9 +321,9 @@ def test_pypi_publish_workflow_uses_trusted_publishing_and_bundles_ksadk_web(): assert "make public-test" in ci_workflow assert "tests/test_conversation_runtime.py" not in ci_workflow assert "tests/test_server_session_app.py" not in ci_workflow - assert 'KSADK_WEB_VERSION: "0.3.2"' in ci_workflow + assert 'KSADK_WEB_VERSION: "0.3.3"' in ci_workflow assert "PUBLIC_KSADK_WEB_VERSION" not in ci_workflow - assert "KSADK_WEB_VERSION ?= 0.3.2" in makefile + assert "KSADK_WEB_VERSION ?= 0.3.3" in makefile assert ( "PUBLIC_TEST_TARGETS ?= tests/test_public_release_positioning.py " "tests/test_config_env_registry.py tests/test_managed_runtime_builder.py " @@ -340,13 +342,57 @@ def test_pypi_publish_workflow_uses_trusted_publishing_and_bundles_ksadk_web(): assert "verify-ksadk-web-wheel-static" in makefile assert ( "public-preflight: public-version-gate public-audit sync-ksadk-web-static " - "public-test docs-site-build public-build-check" in makefile + "public-test docs-site-build phase2-release-preflight" in makefile ) assert "NEXT_PUBLIC_BASE_PATH=/ksadk-python pnpm build:static" in makefile assert "PYPI_API_TOKEN" not in workflow assert "password:" not in workflow +def test_ksadk_web_npm_consumers_use_the_configured_registry(): + makefile = _read("Makefile") + registry = "https://registry.example.test/npm" + + assert 'KSADK_WEB_NPM := npm --registry="$(KSADK_WEB_REGISTRY)"' in makefile + assert ( + '$(KSADK_WEB_NPM) pack "$(KSADK_WEB_PACKAGE)@$(patsubst v%,%,$(KSADK_WEB_VERSION))"' + in makefile + ) + assert "$(KSADK_WEB_NPM) --prefix ksadk/studio/react-ui ci" in makefile + assert '$(KSADK_WEB_NPM) --prefix "$(STUDIO_REACT_DIR)" ci' in makefile + assert ( + "REGISTRY_JSON=$$(curl -fsSL " + '"$(KSADK_WEB_REGISTRY)/$(KSADK_WEB_PACKAGE)/$(KSADK_WEB_VERSION)")' in makefile + ) + assert 'npm pack "$(KSADK_WEB_PACKAGE)@$(patsubst v%,%,$(KSADK_WEB_VERSION))"' not in makefile + assert "KSADK_WEB_VERSION ?= 0.3.3" in makefile + + sync_dry_run = subprocess.run( + [ + "make", + "-n", + "sync-ksadk-web-static", + f"KSADK_WEB_REGISTRY={registry}", + "KSADK_WEB_CACHE_DIR=/tmp/ksadk-web-registry-contract", + ], + cwd=ROOT, + check=True, + text=True, + stdout=subprocess.PIPE, + ).stdout + assert f'npm --registry="{registry}" pack "@kingsoftcloud/ksadk-web@0.3.3"' in sync_dry_run + assert f'curl -fsSL "{registry}/@kingsoftcloud/ksadk-web/0.3.3"' in sync_dry_run + + studio_dry_run = subprocess.run( + ["make", "-n", "build-studio-static", f"KSADK_WEB_REGISTRY={registry}"], + cwd=ROOT, + check=True, + text=True, + stdout=subprocess.PIPE, + ).stdout + assert f'npm --registry="{registry}" --prefix "ksadk/studio/react-ui" ci' in studio_dry_run + + def test_public_ci_runs_gitleaks_and_documents_branch_protection(): secret_workflow = _read(".github/workflows/secret-patterns.yml") branch_protection = _read(".github/BRANCH_PROTECTION.md") @@ -368,8 +414,8 @@ def test_public_ci_runs_gitleaks_and_documents_branch_protection(): def test_public_release_candidate_tracks_current_version(): approval_record = _read("docs/maintainer-approval-record.md") - assert "| Python package version | 0.8.2 |" in approval_record - assert "make public-publish-check PUBLIC_PUBLISH_PHASE=pre-publish V=0.8.2" in approval_record + assert "| Python package version | 0.8.3 |" in approval_record + assert "make public-publish-check PUBLIC_PUBLISH_PHASE=pre-publish V=0.8.3" in approval_record def test_0_8_changelog_is_ready_for_authorized_release(): diff --git a/tests/test_runtime_common_packaging.py b/tests/test_runtime_common_packaging.py index 7539e9d2..e6b88976 100644 --- a/tests/test_runtime_common_packaging.py +++ b/tests/test_runtime_common_packaging.py @@ -195,7 +195,14 @@ def test_release_build_generates_ignored_react_studio_static_assets(): assert "STUDIO_REACT_DIR := ksadk/studio/react-ui" in makefile assert "STUDIO_STATIC_DIR := ksadk/studio/static" in makefile target = makefile.split("build-studio-static:\n", 1)[1].split("\n\n", 1)[0] - assert 'npm --prefix "$(STUDIO_REACT_DIR)" ci' in target + assert "set -eu" in target + assert '$(KSADK_WEB_NPM) --prefix "$(STUDIO_REACT_DIR)" ci' in target + assert 'WEB_TARBALL_PATH="$(KSADK_WEB_TARBALL)"' in target + assert ( + '$(KSADK_WEB_NPM) --prefix "$(STUDIO_REACT_DIR)" install ' + '--no-save --package-lock=false "$$WEB_TARBALL_PATH"' in target + ) + assert 'cat "$(KSADK_WEB_CACHE_DIR)/.tarball-name"' not in target assert 'npm --prefix "$(STUDIO_REACT_DIR)" run build' in target assert '$(STUDIO_STATIC_DIR)/index.html' in target build_target = makefile.split("build: check-build-deps", 1)[1].split("\n", 1)[0] @@ -275,6 +282,18 @@ def test_pyproject_declares_python_socks_for_openclaw_gateway_proxy_support(): assert "python-socks>=2.7.1,<3.0.0" in pyproject +def test_pyproject_declares_tomli_for_python310_plugin_package_parsing(): + project = tomllib.loads((REPO_ROOT / "pyproject.toml").read_text(encoding="utf-8"))[ + "project" + ] + requirements = [Requirement(item) for item in project["dependencies"]] + tomli = next(item for item in requirements if item.name == "tomli") + + assert str(tomli.specifier) == ">=2.0.0" + assert tomli.marker is not None + assert str(tomli.marker) == 'python_version < "3.11"' + + def test_pyproject_declares_kingsoftcloud_sdk_as_default_dependency(): pyproject = tomllib.loads((REPO_ROOT / "pyproject.toml").read_text(encoding="utf-8")) @@ -299,8 +318,9 @@ def test_pyproject_declares_validated_framework_dependency_windows(): optional_dependencies = pyproject["project"]["optional-dependencies"] assert "fastapi>=0.100.0,<1.0.0" in dependencies - # goal-00: ADK 窗口放宽为 1.34.x 至 <3.0(支持 1.x 与 2.x) - assert "google-adk>=1.34.0,<3.0.0" in optional_dependencies["adk"] + # Studio 是基础入口;ADK 本体必须随基础包安装,额外生成依赖仍保持在 [adk]。 + assert "google-adk>=1.34.0,<3.0.0" in dependencies + assert any(item.startswith("litellm>=") for item in optional_dependencies["adk"]) # LangChain 生态下限锚定本地已验证版本(不降级,<2.0 守 1.x 稳定线) assert "langchain>=1.3.14,<2.0.0" in dependencies assert "langchain-core>=1.5.0,<2.0.0" in dependencies @@ -332,7 +352,7 @@ def test_built_wheel_makes_langchain_openai_framework_optional(tmp_path: Path): ) metadata = BytesParser().parsebytes(archive.read(metadata_path)) - assert metadata["Version"] == "0.8.2" + assert metadata["Version"] == "0.8.3" requirements = [Requirement(raw) for raw in metadata.get_all("Requires-Dist", [])] assert all( requirement.name != "langchain-openai" or requirement.marker is not None diff --git a/uv.lock b/uv.lock index 172c5f4f..556e4421 100644 --- a/uv.lock +++ b/uv.lock @@ -2069,7 +2069,7 @@ wheels = [ [[package]] name = "ksadk" -version = "0.8.2" +version = "0.8.3" source = { editable = "." } dependencies = [ { name = "a2a-sdk", extra = ["fastapi"] }, @@ -2079,6 +2079,7 @@ dependencies = [ { name = "click" }, { name = "cryptography" }, { name = "fastapi" }, + { name = "google-adk" }, { name = "greenlet" }, { name = "httpcore" }, { name = "httpx" }, @@ -2109,6 +2110,7 @@ dependencies = [ { name = "requests-aws4auth" }, { name = "rich" }, { name = "sse-starlette" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "uvicorn" }, { name = "websockets" }, ] @@ -2123,7 +2125,6 @@ a2a-postgres = [ { name = "a2a-sdk", extra = ["postgresql"] }, ] adk = [ - { name = "google-adk" }, { name = "json-repair" }, { name = "litellm", marker = "python_full_version < '3.13' or sys_platform != 'win32'" }, ] @@ -2144,7 +2145,6 @@ all = [ { name = "deepeval" }, { name = "e2b" }, { name = "fastmcp" }, - { name = "google-adk" }, { name = "json-repair" }, { name = "langchain" }, { name = "langchain-core" }, @@ -2242,7 +2242,7 @@ requires-dist = [ { name = "e2b", marker = "extra == 'skills'", specifier = ">=2.15.3,<2.25.0" }, { name = "fastapi", specifier = ">=0.100.0,<1.0.0" }, { name = "fastmcp", marker = "extra == 'dev'", specifier = ">=2.0.0" }, - { name = "google-adk", marker = "extra == 'adk'", specifier = ">=1.34.0,<3.0.0" }, + { name = "google-adk", specifier = ">=1.34.0,<3.0.0" }, { name = "greenlet", specifier = ">=1.0.0" }, { name = "httpcore", specifier = ">=1.0.9,<1.1.0" }, { name = "httpx", specifier = ">=0.28.1,<0.29.0" }, @@ -2298,6 +2298,7 @@ requires-dist = [ { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.1.0" }, { name = "sqlalchemy", extras = ["asyncio"], marker = "extra == 'a2a'", specifier = ">=2.0.0,<3.0.0" }, { name = "sse-starlette", specifier = ">=2.1.0" }, + { name = "tomli", marker = "python_full_version < '3.11'", specifier = ">=2.0.0" }, { name = "twine", marker = "extra == 'dev'", specifier = ">=5.0.0" }, { name = "types-protobuf", marker = "extra == 'dev'", specifier = ">=6.32.0" }, { name = "types-python-dateutil", marker = "extra == 'dev'", specifier = ">=2.9.0" },